Project

General

Profile

Feature #2594 » MinovaXtype.js

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

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

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

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

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

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

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

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

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

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

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

    
9441
                        },
9442

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

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

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

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

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

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

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

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

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

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

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

    
9760
                    }
9761

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

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

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

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

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

    
9815
    print: function (pnl) {
9816

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

    
9821
        // instantiate hidden iframe
9822

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

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

    
9837
        var cw = printFrame.dom.contentWindow;
9838

    
9839
        // instantiate application stylesheets in the hidden iframe
9840

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

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

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

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

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

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

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

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

    
9876
    }
9877
});
9878

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

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

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

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

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

    
10001
                    }
10002
                    ],
10003

    
10004
                }
10005
                ],
10006

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

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

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

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

    
10072
                    }
10073
                    ],
10074

    
10075
                }
10076
                ],
10077

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

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

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

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

    
10140
                    }
10141
                    ],
10142

    
10143
                }
10144
                ],
10145

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

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

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

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

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

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

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

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

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

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

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

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

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

    
10500
            store: jsStoreGrid,
10501

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

    
10506
            ],
10507

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

    
10512
});
10513

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

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

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

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

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

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

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

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

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

    
10808
                                        });
10809
                                    });
10810

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

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

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

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

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

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

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

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

    
11277
                            break
11278

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

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

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

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

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

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

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

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

    
11422
        });
11423

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

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

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

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

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

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

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

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

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

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

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

    
11645
                                        });
11646
                                    });
11647

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

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

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

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

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

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

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

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

    
12049
                            break
12050

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

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

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

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

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

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

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

    
12183
        });
12184

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
12625

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

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

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

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

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

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

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

    
12724
                                            //    }
12725
                                            //});
12726

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

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

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

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

    
12777
                                        setTimeout(function () {
12778

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

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

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

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

    
12923
                                        }
12924

    
12925
                                    },
12926
                                }
12927
                                ]
12928

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

    
12956
                                    }
12957

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

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

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

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

    
13113
                            ]
13114
                        },
13115
                        ]
13116

    
13117
                    }
13118
                    ]
13119

    
13120
                }
13121
                ]
13122
            },
13123
            ]
13124

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

    
13130

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

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

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

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

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

    
13200
    },
13201
});
13202

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

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

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

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

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

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

    
13507
                        }
13508
                        ]
13509

    
13510
                    }
13511
                    ]
13512

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
13702
    }
13703

    
13704
});
13705

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

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

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

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

    
13834

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

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

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

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

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

    
13991
                    }
13992
                    ]
13993

    
13994
                }
13995
                ]
13996

    
13997
            }
13998
            ]
13999

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
14381
            var style2 = new Object();
14382
            style2[mxConstants.STYLE_SHAPE] = mxConstants.SHAPE_RHOMBUS;
14383
            style2[mxConstants.STYLE_PERIMETER] = mxPerimeter.RhombusPerimeter;
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('RHOMBUS', style2);
14393

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

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

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

    
14452
        }
14453
    }
14454
});
14455

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
14690
        if (hasil.length > 0) {
14691

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

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

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

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

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

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

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

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

    
15228
});
15229

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

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

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

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

    
15471
                                        });
15472
                                    });
15473

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

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

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

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

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

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

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

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

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

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

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

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

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

    
16014
        });
16015

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

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

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

    
16043
    },
16044
});
16045

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

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

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

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

    
16082
            }),
16083

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

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

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

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

    
16112
            }),
16113

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

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

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

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

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

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

    
16416
                                            });
16417
                                        });
16418

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

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

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

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

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

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

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

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

    
16876
        Ext.applyIf(me, {
16877

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

    
16907
        });
16908

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

    
17325
												'<div style="padding: 10px;  width: 15%; display: inline-block;">Location</div>'+
17326
												'<div style="padding: 5px;  width: 25%; display: inline-block;">: Jakarta</div>'+
17327
												'<div style="padding: 10px;  width: 15%; display: inline-block;">Divition</div>'+
17328
												'<div style="padding: 5px;  width: 25%; display: inline-block;">: Developer</div><br>'+	
17329
												
17330
												'<div style="padding: 10px;  width: 15%; display: inline-block;">Location</div>'+
17331
												'<div style="padding: 5px;  width: 25%; display: inline-block;">: Jakarta</div>'+
17332
												'<div style="padding: 10px;  width: 15%; display: inline-block;">Divition</div>'+
17333
												'<div style="padding: 5px;  width: 25%; display: inline-block;">: Developer</div>'+		
17334
												'</div>'+												
17335
											  '<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>'+	
17336
											  '</div>'
17337
									}).show();
17338

    
17339
								  const qrcode = document.getElementById("qrcode");
17340
								  const textInput = document.getElementById(ExternalID);
17341
								  
17342
								  const qr = new QRCode(qrcode);
17343
								  qr.makeCode(ExternalID);
17344
								  
17345
								}
17346
                            },{
17347
                                text: 'Create Barcode',
17348
                                name: 'editDISPLAY' + rec.TableName,
17349
                                iconCls: 'fa-edit',
17350
                                style: 'font-family: FontAwesome',
17351
                                handler: function () {
17352
									var myfrmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17353
									var asetid=myfrmForm.getValues().AssetID;
17354
									var asetdesc=myfrmForm.getValues().AssetName;
17355
									var ExternalID=myfrmForm.getValues().ExternalID;									
17356
									Ext.widget('window', {
17357
										width: 600,
17358
										height: 600,
17359
										padding: 5,
17360
										title: 'Barcode Perview',
17361
										html: '<div id="BarCodePrint" style="text-align: center;">'+
17362
										'<div id="BarCode" style="width:590px;align-items: center; justify-content: center;display: flex;">'+
17363
											  '<img id="barcode3" class="Center">'+
17364
											  '</img></div>'+
17365
												'<div style="padding: 10px;  width: 15%; display: inline-block;">Location</div>'+
17366
												'<div style="padding: 5px;  width: 25%; display: inline-block;">: Jakarta</div>'+
17367
												'<div style="padding: 10px;  width: 15%; display: inline-block;">Divition</div>'+
17368
												'<div style="padding: 5px;  width: 25%; display: inline-block;">: Developer</div><br>'+	
17369
												
17370
												'<div style="padding: 10px;  width: 15%; display: inline-block;">Location</div>'+
17371
												'<div style="padding: 5px;  width: 25%; display: inline-block;">: Jakarta</div>'+
17372
												'<div style="padding: 10px;  width: 15%; display: inline-block;">Divition</div>'+
17373
												'<div style="padding: 5px;  width: 25%; display: inline-block;">: Developer</div>'+		
17374
												'</div>'+												
17375
											  '<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>'+	
17376
											  '</div>'
17377
									}).show();
17378

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

    
17428
									 var headerDisplay =undefined;
17429
									if(rec.TableName=="PTRPRODUCTIONHEAD"){
17430
										headerDisplay=Ext.ComponentQuery.query('[name=MainHeaderDocument]')[0];
17431
										frmForm.getForm().findField("DocNo").setValue(headerDisplay.getForm().findField("DocNo").getValue());
17432
										frmForm.getForm().findField("DocType").setValue(headerDisplay.getForm().findField("DocType").getValue());
17433
										frmForm.getForm().findField("ProcessID").setValue(headerDisplay.getForm().findField("ProcessID").getValue());
17434
										frmForm.getForm().findField("DocDate").setValue(headerDisplay.getForm().findField("DocDate").getValue());
17435
										frmForm.getForm().findField("DocStatus").setValue(headerDisplay.getForm().findField("DocStatus").getValue());
17436
										frmForm.getForm().findField("OrderDate").setValue(headerDisplay.getForm().findField("OrderDate").getValue());
17437
										frmForm.getForm().findField("Description").setValue(headerDisplay.getForm().findField("Description").getValue());
17438
										frmForm.getForm().findField("FinishGoods").setValue(headerDisplay.getForm().findField("FinishGoods").getValue());											
17439
									}else{
17440
										headerDisplay=Ext.ComponentQuery.query('[name=MainHeaderMDLogistic]')[0];	
17441
									}
17442

    
17443
                                    var frm = frmForm.getForm();
17444
                                    if (frm.isValid()) {
17445
                                                
17446
										
17447
                                        var keyField = getParam("KeyID");
17448
                                        var table = rec.TableName;
17449
                                        var data = Ext.encode(frmForm.getValues());
17450
                                        var token = MinovaUtil.SESSIONS.Token;
17451
										var action=me.action;
17452
										if(action==undefined){action="0"}; console.log('save2');
17453
                                        var params = {
17454
                                            apiController: 'api/Devt',
17455
                                            methodName: 'SaveTableMaster',
17456
                                            parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
17457
                                        };
17458
                                        MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
17459
                                            var result = Ext.decode(xhr.responseText);
17460
                                            var r = Ext.decode(result.data);
17461
                                            if (r.success) {
17462
                                                headerDisplay.mask("Loading...");
17463
                                                var idNo = r.data;
17464
                                                frmForm.getForm().findField(keyField).setValue(idNo);
17465
												frmDisplay.getForm().setValues(frmForm.getValues());
17466
                                                headerDisplay.getForm().setValues(frmForm.getValues());
17467
                                                frmDisplay.setHidden(false);
17468
                                                frmForm.setHidden(true);
17469
                                                MinovaMessage('Not Null', '000006', '', 'S');
17470
                                                headerDisplay.unmask();
17471
                                            } else {
17472
                                                MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
17473
                                            }
17474
                                        });
17475
                                    }
17476
                                }
17477
                            }, {
17478
                                text: 'Delete',
17479
                                name: 'deleteDISPLAY' + rec.TableName,
17480
                                iconCls: 'fa-trash-o',
17481
                                style: 'font-family: FontAwesome',
17482
                                handler: function () {                                    
17483
                                    MinovaMessage(' Message ', ' 000007 ', ' ', 'C', function (respone) {
17484
                                        if (respone == "yes") {
17485
                                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17486
                                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17487
                                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17488
                                            var frm = frmForm.getForm();
17489
                                            if (frm.isValid()) {
17490
                                                var keyField = getParam("KeyID");
17491
                                                var table = rec.TableName;
17492
                                                var data = Ext.encode(frmForm.getValues());
17493
                                                var token = MinovaUtil.SESSIONS.Token;
17494
                                                action = "2";
17495
                                                var params = {
17496
                                                    apiController: 'api/Devt',
17497
                                                    methodName: 'SaveTableMaster',
17498
                                                    parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
17499
                                                };
17500
                                                MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
17501
                                                    var result = Ext.decode(xhr.responseText);
17502
                                                    var r = Ext.decode(result.data);
17503
                                                    if (r.success) {
17504
                                                        frmDisplay.setHidden(true);
17505
                                                        frmForm.setHidden(true);
17506
                                                        grdPanel.setHidden(false);
17507
                                                        grdPanel.getStore().reload();
17508
                                                        MinovaMessage('Not Null', '000006', '', 'S');
17509
                                                    } else {
17510
                                                        MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
17511
                                                    }
17512
                                                });
17513
                                            }
17514
                                        }
17515
                                    });
17516
                                }
17517
                            }, {
17518
                                text: 'Cancel',
17519
                                name: 'cancelDISPLAY' + rec.TableName,
17520
                                iconCls: 'fa-reply',
17521
                                style: 'font-family: FontAwesome',
17522
                                handler: function () {
17523
                                    MinovaMessage('Message', '000011', '', 'C', function (respone) {
17524
                                        if (respone == "yes") {
17525
                                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17526
                                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17527
                                            frmDisplay.setHidden(false);
17528
                                            frmForm.setHidden(true);
17529
                                        }
17530
                                    });
17531
                                }
17532
                            }
17533
                            ]
17534
                        }
17535
                        ]
17536
                    });					
17537
					}else{
17538
                    _items.push({
17539
                        xtype: 'panel',
17540
                        title: rec.LabelName,
17541
                        name: 'panelTab' + rec.TableName,
17542
                        tbl: rec.TableName,
17543
                        layoutType: rec.LayoutType,
17544
                        items: [{
17545
                            xtype: 'minovaform',
17546
                            name: 'DISPLAY' + rec.TableName,
17547
                            id: 'DISPLAY' + rec.TableName,
17548
                            itemId: 'DISPLAY' + rec.TableName,
17549
                            tableName: rec.TableName,
17550
                            isDisplay: true,
17551
                            hidden: false,
17552
                            buttons: [{
17553
                                text: 'Edit',
17554
                                name: 'editDISPLAY' + rec.TableName,
17555
                                iconCls: 'fa-edit',
17556
                                style: 'font-family: FontAwesome',
17557
                                handler: function () {
17558
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17559
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17560
                                    frmDisplay.setHidden(true);
17561
                                    frmForm.setHidden(false);
17562
                                    me.action = "1"; console.log('edit1');
17563
                                }
17564
                            }, {
17565
                                text: 'Back',
17566
                                name: 'cancelDISPLAY' + rec.TableName,
17567
                                iconCls: 'fa-reply',
17568
                                style: 'font-family: FontAwesome',
17569
								handler: function () {
17570
									window.history.back();
17571
								},
17572
								hidden: false
17573
                            }
17574
                            ]
17575
                        }, {
17576
                            xtype: 'minovaform',
17577
                            name: 'FORM' + rec.TableName,
17578
                            id: 'FORM' + rec.TableName,
17579
                            itemId: 'FORM' + rec.TableName,
17580
                            tableName: rec.TableName,
17581
                            isDisplay: false,
17582
                            hidden: true,
17583
                            buttons: [{
17584
                                text: 'Save',
17585
                                name: 'saveDISPLAY' + rec.TableName,
17586
                                iconCls: 'fa-save',
17587
                                style: 'font-family: FontAwesome',
17588
                                handler: function () {
17589
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17590
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17591
                                    console.log('save3');
17592
									 var headerDisplay =undefined;
17593
									if(rec.TableName=="PTRPRODUCTIONHEAD"){
17594
										headerDisplay=Ext.ComponentQuery.query('[name=MainHeaderDocument]')[0];
17595
										frmForm.getForm().findField("DocNo").setValue(headerDisplay.getForm().findField("DocNo").getValue());
17596
										frmForm.getForm().findField("DocType").setValue(headerDisplay.getForm().findField("DocType").getValue());
17597
										frmForm.getForm().findField("ProcessID").setValue(headerDisplay.getForm().findField("ProcessID").getValue());
17598
										frmForm.getForm().findField("DocDate").setValue(headerDisplay.getForm().findField("DocDate").getValue());
17599
										frmForm.getForm().findField("DocStatus").setValue(headerDisplay.getForm().findField("DocStatus").getValue());
17600
										frmForm.getForm().findField("OrderDate").setValue(headerDisplay.getForm().findField("OrderDate").getValue());
17601
										frmForm.getForm().findField("Description").setValue(headerDisplay.getForm().findField("Description").getValue());
17602
										frmForm.getForm().findField("FinishGoods").setValue(headerDisplay.getForm().findField("FinishGoods").getValue());											
17603
									}else{
17604
										headerDisplay=Ext.ComponentQuery.query('[name=MainHeaderMDLogistic]')[0];	
17605
									}									
17606
									
17607
                                    var frm = frmForm.getForm();
17608
                                    if (frm.isValid()) {
17609
                                        var keyField = getParam("KeyID");
17610
                                        var table = rec.TableName;
17611
                                        var data = Ext.encode(frmForm.getValues());
17612
										 var token = MinovaUtil.SESSIONS.Token; console.log(action);
17613
										//var action = me.action; // edit by Tri nwh 20231003
17614
										var meaction = me.action; console.log(meaction);
17615
										//if(action==undefined){action="0"}; // edit by Tri nwh 20231003
17616
										if(meaction!=undefined){action=meaction}; 
17617
										if (table == 'PMDMAT0001'){
17618
											var CheckMaterialID = frmForm.getForm().findField("MaterialID").getValue();
17619
											var inUpdate = '0';
17620
											if (CheckMaterialID == ''){
17621
												inUpdate = '1'
17622
											}
17623
											if (inUpdate == '1'){
17624
												var ExternalID = frmForm.getForm().findField("ExternalID").getValue();
17625
												Ext.Ajax.request({
17626
													async: false,
17627
													method: 'POST',
17628
													url: '/UserControl/GetStore',
17629
													params: {
17630
														tableName: 'PMDMAT0001',
17631
														param: 'ExternalID[=]' + ExternalID
17632
													},
17633
													success: function (response) {
17634
														var results = Ext.decode(response.responseText);
17635
														dt = results.data[0];
17636
														
17637
													if (dt != undefined) {
17638
														MinovaMessage('Not Null', 'FILOVAL001', '', 'E');
17639
													}
17640
													else
17641
													{
17642
														var params = {
17643
															apiController: 'api/Devt',
17644
															methodName: 'SaveTableMaster',
17645
															parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
17646
														};
17647
														MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
17648
															var result = Ext.decode(xhr.responseText);
17649
															var r = Ext.decode(result.data);
17650
															if (r.success) {
17651
																headerDisplay.mask("Loading...");
17652
																var idNo = r.data;
17653
																frmForm.getForm().findField(keyField).setValue(idNo);
17654
																frmDisplay.getForm().setValues(frmForm.getValues());
17655
																headerDisplay.getForm().setValues(frmForm.getValues());
17656
																frmDisplay.setHidden(false);
17657
																frmForm.setHidden(true);
17658
																MinovaMessage('Not Null', '000006', '', 'S');
17659
																headerDisplay.unmask();
17660
															} else {
17661
																MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
17662
															}
17663
														});
17664
													}
17665
													}
17666
												});
17667
											} else{
17668
												var params = {
17669
															apiController: 'api/Devt',
17670
															methodName: 'SaveTableMaster',
17671
															parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
17672
														};
17673
														MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
17674
															var result = Ext.decode(xhr.responseText);
17675
															var r = Ext.decode(result.data);
17676
															if (r.success) {
17677
																headerDisplay.mask("Loading...");
17678
																var idNo = r.data;
17679
																frmForm.getForm().findField(keyField).setValue(idNo);
17680
																frmDisplay.getForm().setValues(frmForm.getValues());
17681
																headerDisplay.getForm().setValues(frmForm.getValues());
17682
																frmDisplay.setHidden(false);
17683
																frmForm.setHidden(true);
17684
																MinovaMessage('Not Null', '000006', '', 'S');
17685
																headerDisplay.unmask();
17686
															} else {
17687
																MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
17688
															}
17689
														});
17690
											}
17691
										} else if (table == 'PMDVEN0001'){
17692
											var CheckVendorID = frmForm.getForm().findField("VendorID").getValue();
17693
											var inUpdate = '0';
17694
											if (CheckVendorID == '' || CheckVendorID == '0'){
17695
												inUpdate = '1'
17696
											}
17697
											if (inUpdate == '1'){
17698
												var ExternalIDVen = frmForm.getForm().findField("ExternalID").getValue();
17699
												Ext.Ajax.request({
17700
													async: false,
17701
													method: 'POST',
17702
													url: '/UserControl/GetStore',
17703
													params: {
17704
														tableName: 'PMDVEN0001',
17705
														param: 'ExternalID[=]' + ExternalIDVen
17706
													},
17707
													success: function (response) {
17708
														var results = Ext.decode(response.responseText);
17709
														dt = results.data[0];
17710
														
17711
													if (dt != undefined) {
17712
														MinovaMessage('Not Null', 'FILOVAL002', '', 'E');
17713
													}
17714
													else
17715
													{
17716
														var params = {
17717
															apiController: 'api/Devt',
17718
															methodName: 'SaveTableMaster',
17719
															parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
17720
														};
17721
														MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
17722
															var result = Ext.decode(xhr.responseText);
17723
															var r = Ext.decode(result.data);
17724
															if (r.success) {
17725
																headerDisplay.mask("Loading...");
17726
																var idNo = r.data;
17727
																frmForm.getForm().findField(keyField).setValue(idNo);
17728
																frmDisplay.getForm().setValues(frmForm.getValues());
17729
																headerDisplay.getForm().setValues(frmForm.getValues());
17730
																frmDisplay.setHidden(false);
17731
																frmForm.setHidden(true);
17732
																MinovaMessage('Not Null', '000006', '', 'S');
17733
																headerDisplay.unmask();
17734
															} else {
17735
																MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
17736
															}
17737
														});
17738
													}
17739
													}
17740
												});
17741
											} else{
17742
												var params = {
17743
															apiController: 'api/Devt',
17744
															methodName: 'SaveTableMaster',
17745
															parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
17746
														};
17747
														MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
17748
															var result = Ext.decode(xhr.responseText);
17749
															var r = Ext.decode(result.data);
17750
															if (r.success) {
17751
																headerDisplay.mask("Loading...");
17752
																var idNo = r.data;
17753
																frmForm.getForm().findField(keyField).setValue(idNo);
17754
																frmDisplay.getForm().setValues(frmForm.getValues());
17755
																headerDisplay.getForm().setValues(frmForm.getValues());
17756
																frmDisplay.setHidden(false);
17757
																frmForm.setHidden(true);
17758
																MinovaMessage('Not Null', '000006', '', 'S');
17759
																headerDisplay.unmask();
17760
															} else {
17761
																MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
17762
															}
17763
														});
17764
											}
17765
											
17766
										} else if (table == 'PMDCUS0001'){
17767
											var CheckCustomerID = frmForm.getForm().findField("CustomerID").getValue();
17768
											var inUpdate = '0';
17769
											if (CheckCustomerID == '' || CheckCustomerID == '0'){
17770
												inUpdate = '1'
17771
											}
17772
											if (inUpdate == '1'){
17773
												var ExternalIDCus = frmForm.getForm().findField("ExternalID").getValue();
17774
												Ext.Ajax.request({
17775
													async: false,
17776
													method: 'POST',
17777
													url: '/UserControl/GetStore',
17778
													params: {
17779
														tableName: 'PMDCUS0001',
17780
														param: 'ExternalID[=]' + ExternalIDCus
17781
													},
17782
													success: function (response) {
17783
														var results = Ext.decode(response.responseText);
17784
														dt = results.data[0];
17785
														
17786
													if (dt != undefined) {
17787
														MinovaMessage('Not Null', 'FILOVAL003', '', 'E');
17788
													}
17789
													else
17790
													{
17791
														var params = {
17792
															apiController: 'api/Devt',
17793
															methodName: 'SaveTableMaster',
17794
															parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
17795
														};
17796
														MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
17797
															var result = Ext.decode(xhr.responseText);
17798
															var r = Ext.decode(result.data);
17799
															if (r.success) {
17800
																headerDisplay.mask("Loading...");
17801
																var idNo = r.data;
17802
																frmForm.getForm().findField(keyField).setValue(idNo);
17803
																frmDisplay.getForm().setValues(frmForm.getValues());
17804
																headerDisplay.getForm().setValues(frmForm.getValues());
17805
																frmDisplay.setHidden(false);
17806
																frmForm.setHidden(true);
17807
																MinovaMessage('Not Null', '000006', '', 'S');
17808
																headerDisplay.unmask();
17809
															} else {
17810
																MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
17811
															}
17812
														});
17813
													}
17814
													}
17815
												});
17816
											} else{
17817
												var params = {
17818
															apiController: 'api/Devt',
17819
															methodName: 'SaveTableMaster',
17820
															parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
17821
														};
17822
														MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
17823
															var result = Ext.decode(xhr.responseText);
17824
															var r = Ext.decode(result.data);
17825
															if (r.success) {
17826
																headerDisplay.mask("Loading...");
17827
																var idNo = r.data;
17828
																frmForm.getForm().findField(keyField).setValue(idNo);
17829
																frmDisplay.getForm().setValues(frmForm.getValues());
17830
																headerDisplay.getForm().setValues(frmForm.getValues());
17831
																frmDisplay.setHidden(false);
17832
																frmForm.setHidden(true);
17833
																MinovaMessage('Not Null', '000006', '', 'S');
17834
																headerDisplay.unmask();
17835
															} else {
17836
																MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
17837
															}
17838
														});
17839
											}
17840
										} else {
17841
											var params = {
17842
															apiController: 'api/Devt',
17843
															methodName: 'SaveTableMaster',
17844
															parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
17845
														};
17846
														MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
17847
															var result = Ext.decode(xhr.responseText);
17848
															var r = Ext.decode(result.data);
17849
															if (r.success) {
17850
																headerDisplay.mask("Loading...");
17851
																var idNo = r.data;
17852
																frmForm.getForm().findField(keyField).setValue(idNo);
17853
																frmDisplay.getForm().setValues(frmForm.getValues());
17854
																headerDisplay.getForm().setValues(frmForm.getValues());
17855
																frmDisplay.setHidden(false);
17856
																frmForm.setHidden(true);
17857
																MinovaMessage('Not Null', '000006', '', 'S');
17858
																headerDisplay.unmask();
17859
															} else {
17860
																MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
17861
															}
17862
														});
17863
										}
17864
                                    }
17865
                                }
17866
                            }, {
17867
                                text: 'Delete',
17868
                                name: 'deleteDISPLAY' + rec.TableName,
17869
                                iconCls: 'fa-trash-o',
17870
                                style: 'font-family: FontAwesome',
17871
                                handler: function () {                                    
17872
                                    MinovaMessage(' Message ', ' 000007 ', ' ', 'C', function (respone) {
17873
                                        if (respone == "yes") {
17874
                                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17875
                                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17876
                                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17877
                                            var frm = frmForm.getForm();
17878
                                            if (frm.isValid()) {
17879
                                                var keyField = getParam("KeyID");
17880
                                                var table = rec.TableName;
17881
                                                var data = Ext.encode(frmForm.getValues());
17882
                                                var token = MinovaUtil.SESSIONS.Token;
17883
                                                action = "2";
17884
                                                var params = {
17885
                                                    apiController: 'api/Devt',
17886
                                                    methodName: 'SaveTableMaster',
17887
                                                    parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
17888
                                                };
17889
                                                MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
17890
                                                    var result = Ext.decode(xhr.responseText);
17891
                                                    var r = Ext.decode(result.data);
17892
                                                    if (r.success) {
17893
                                                        frmDisplay.setHidden(true);
17894
                                                        frmForm.setHidden(true);
17895
                                                        grdPanel.setHidden(false);
17896
                                                        grdPanel.getStore().reload();
17897
                                                        MinovaMessage('Not Null', '000006', '', 'S');
17898
                                                    } else {
17899
                                                        MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
17900
                                                    }
17901
                                                });
17902
                                            }
17903
                                        }
17904
                                    });
17905
                                }
17906
                            }, {
17907
                                text: 'Cancel',
17908
                                name: 'cancelDISPLAY' + rec.TableName,
17909
                                iconCls: 'fa-reply',
17910
                                style: 'font-family: FontAwesome',
17911
                                handler: function () {
17912
                                    MinovaMessage('Message', '000011', '', 'C', function (respone) {
17913
                                        if (respone == "yes") {
17914
                                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17915
                                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17916
                                            frmDisplay.setHidden(false);
17917
                                            frmForm.setHidden(true);
17918
                                        }
17919
                                    });
17920
                                }
17921
                            }
17922
                            ]
17923
                        }
17924
                        ]
17925
                    });
17926
				  }
17927
                }
17928
            });
17929
        }
17930
			//saswanto 25MEI2022 END
17931
        Ext.applyIf(me, {
17932
            items: _items
17933
        });
17934
        me.callParent(arguments);
17935
    }
17936
});
17937
/*Add by Taufan ( Tab List Doc Transaction For ERP )*/
17938
Ext.define('MinovaUtil.MinovaES.MinovaTabListDocTrans', {
17939
    extend: 'Ext.tab.Panel',
17940
    alias: ['widget.doctablist'],
17941
    transType: undefined,
17942
    docType: undefined,
17943
    docNo: undefined,
17944
    langId: undefined,
17945
    param: undefined,
17946
    layout: 'fit',
17947
    name: 'panelTab',
17948
    id: 'mainTab',
17949
    action: undefined,
17950
    initComponent: function () {
17951
        var me = this;
17952
        var documentType = me.docType;
17953
        var transactionType = me.transType;
17954
        var hasil = null;
17955
        var _items = [];
17956
		var formimage = undefined;
17957
        Ext.Ajax.request({
17958
            async: false,
17959
            method: 'POST',
17960
            url: '/UserControl/GetStore',
17961
            params: {
17962
                tableName: 'PCMBSTRANSLIST',
17963
                param: 'TransType[=]' + me.transType + ',' + 'DocType[=]' + me.docType		// add Tri nwh 20240220
17964
            },
17965
            success: function (response) {
17966
                var results = Ext.decode(response.responseText);
17967
                hasil = results.data;
17968
            }
17969
        });
17970
        hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
17971
        if (hasil.length > 0) {
17972
            Ext.each(hasil, function (rec) {
17973
				if(rec.TableName=="PTRPRODUCTIONHEAD"){
17974
					rec.LabelName=rec.Title;
17975
				}
17976
                if (rec.LayoutType == "L004") { // L004=Custom
17977
					if(rec.TableName =='PTRPRODUCTIONDETAIL'){					
17978
						var pnl = Ext.create(rec.CustomLayout, {
17979
							title: rec.Title,
17980
							name:  'panelTab' + rec.TableName,
17981
							tableName: rec.TableName,
17982
							docType: me.docType,
17983
							transType: me.transType,
17984
							autoScroll: true
17985
						});
17986
						_items.push(pnl)						
17987
					}else{
17988
						var pnl = Ext.create(rec.CustomLayout, {
17989
							title: rec.Title,
17990
							tableName: rec.TableName,
17991
							height: 200,
17992
							name: 'panelTab' + rec.TableName,
17993
							tbl: rec.TableName,
17994
							layoutType: rec.LayoutType
17995
						});
17996
						_items.push(pnl)						
17997
					}
17998

    
17999
                } else if (rec.LayoutType == "L002" || rec.LayoutType == "L003") {
18000
                    _items.push({
18001
                        xtype: 'panel',
18002
                        title: rec.Title,
18003
                        name: 'panelTab' + rec.TableName,
18004
                        tbl: rec.TableName,
18005
                        layoutType: rec.LayoutType,
18006
                        items: [{
18007
                            xtype: 'docgrid',
18008
                            height: 200,
18009
                            tableName: rec.TableName,
18010
                            docType: me.docType,
18011
                            transType: me.transType,
18012
                            storename: 'store' + rec.TableName,
18013
                            pagesize: 25,
18014
                            name: 'GRID' + rec.TableName,
18015
                            margin: '0 0 10 0',
18016
                            autoLoad: false,
18017
                            tbar: [{
18018
                                xtype: 'button',
18019
                                text: 'Action',
18020
                                name: 'actionGrid' + rec.TableName,
18021
                                menu: [{
18022
                                    text: 'Add',
18023
                                    name: 'add' + rec.TableName,
18024
                                    tbl: rec.TableName,
18025
                                    style: 'font-family: FontAwesome',
18026
                                    iconCls: 'fa-plus-circle',
18027
                                    handler: function () {
18028
                                        var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
18029
                                        var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
18030
                                        var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
18031
                                        frmDisplay.reset();
18032
                                        frmForm.reset();
18033
                                        frmDisplay.setHidden(true);
18034
                                        frmForm.setHidden(false);
18035
                                        grdPanel.setHidden(true);
18036
                                        action = "0";
18037
                                    }
18038
                                }, {
18039
                                    text: 'Delete',
18040
                                    name: 'delete' + rec.TableName,
18041
                                    tbl: rec.TableName,
18042
                                    iconCls: 'fa-trash-o',
18043
                                    style: 'font-family: FontAwesome',
18044
                                    handler: function () {
18045
                                        var me = this;
18046
                                        var store = Ext.StoreMgr.lookup('store' + rec.TableName);
18047
                                        var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
18048
                                        Ext.MessageBox.show({
18049
                                            title: 'Remove tab',
18050
                                            msg: "This will remove. Do you want to continue?",
18051
                                            buttons: Ext.MessageBox.YESNO,
18052
                                            fn: function (choice) {
18053
                                                console.log(choice);
18054
                                                if (choice === 'yes') {
18055
                                                    var selection = grdPanel.getView().getSelectionModel().getSelection()[0];
18056
                                                    if (selection) {
18057
                                                        store.remove(selection);
18058
                                                    }
18059
                                                }
18060
                                            }
18061
                                        });
18062
                                    }
18063
                                }
18064
                                ]
18065
                            }, {
18066
                                xtype: 'tbfill'
18067
                            }, {
18068
                                text: 'Clear Filters',
18069
                                tooltip: 'Clear all filters',
18070
                                name: 'clearbtn',
18071
                                handler: function () {}
18072
                            }
18073
                            ],
18074
                            dockedItems: [{
18075
                                xtype: 'pagingtoolbar',
18076
                                store: 'store' + rec.TableName,
18077
                                dock: 'bottom',
18078
                                pageSize: me.pagesize,
18079
                                displayInfo: true
18080
                            }
18081
                            ],
18082
                            listeners: {
18083
                                'itemdblclick': function (me, record, item, index, e, eOpts) {
18084
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
18085
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
18086
                                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
18087
                                    frmDisplay.reset();
18088
                                    frmForm.reset();
18089
                                    frmDisplay.getForm().setValues(record.data);
18090
                                    frmForm.getForm().setValues(record.data);
18091
                                    frmDisplay.setHidden(false);
18092
                                    frmForm.setHidden(true);
18093
                                    grdPanel.setHidden(true);
18094
                                    me.action = "1";
18095
                                }
18096
                            }
18097
                        }, {
18098
                            xtype: 'minovadocform',
18099
                            name: 'DISPLAY' + rec.TableName,
18100
                            id: 'DISPLAY' + rec.TableName,
18101
                            itemId: 'DISPLAY' + rec.TableName,
18102
                            tableName: rec.TableName,
18103
                            docType: me.docType,
18104
                            transType: me.transType,
18105
                            isDisplay: true,
18106
                            hidden: true,
18107
                            buttons: [{
18108
                                text: 'Edit',
18109
                                name: 'editDISPLAY' + rec.TableName,
18110
                                handler: function () {
18111
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
18112
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
18113
                                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
18114
                                    frmDisplay.setHidden(true);
18115
                                    frmForm.setHidden(false);
18116
                                    grdPanel.setHidden(true);
18117
                                }
18118
                            }, {
18119
                                text: 'Cancel',
18120
                                name: 'cancelDISPLAY' + rec.TableName,
18121
                                handler: function () {
18122
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
18123
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
18124
                                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
18125
                                    frmDisplay.setHidden(true);
18126
                                    frmForm.setHidden(true);
18127
                                    grdPanel.setHidden(false);
18128
                                    grdPanel.getStore().reload();
18129
                                }
18130
                            }
18131
                            ]
18132
                        }, {
18133
                            xtype: 'minovadocform',
18134
                            name: 'FORM' + rec.TableName,
18135
                            id: 'FORM' + rec.TableName,
18136
                            itemId: 'FORM' + rec.TableName,
18137
                            tableName: rec.TableName,
18138
                            docType: me.docType,
18139
                            transType: me.transType,
18140
                            isDisplay: false,
18141
                            hidden: true,
18142
                            buttons: [{
18143
                                text: 'Submit',
18144
                                name: 'submitFORM' + rec.TableName,
18145
                                handler: function () {
18146
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
18147
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
18148
                                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
18149
                                    var frm = frmForm.getForm();
18150
                                    if (frm.isValid()) {
18151
                                        var table = rec.TableName;
18152
                                        var data = frmForm.getValues();
18153
                                        var token = MinovaUtil.SESSIONS.Token;
18154
                                        var str = grdPanel.getStore();
18155
                                        var idx = str.getCount();
18156
                                        str.insert(idx, data);
18157
                                        frmDisplay.setHidden(true);
18158
                                        frmForm.setHidden(true);
18159
                                        grdPanel.setHidden(false);
18160
                                    }
18161
                                }
18162
                            }, {
18163
                                text: 'Cancel',
18164
                                name: 'cancelFORM' + rec.TableName,
18165
                                handler: function () {
18166
                                    MinovaMessage('Message', '000011', '', 'C', function (respone) {
18167
                                        if (respone == "yes") {
18168
                                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
18169
                                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
18170
                                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
18171
                                            frmDisplay.setHidden(true);
18172
                                            frmForm.setHidden(true);
18173
                                            grdPanel.setHidden(false);
18174
                                        }
18175
                                    });
18176
                                }
18177
                            }
18178
                            ]
18179
                        }
18180
                        ]
18181
                    });
18182
                } else if (rec.LayoutType == "L005") { // Grid View Only
18183
                    _items.push({
18184
                        xtype: 'panel',
18185
                        title: rec.Title,
18186
                        name: 'panelTab' + rec.TableName,
18187
                        tbl: rec.TableName,
18188
                        layoutType: rec.LayoutType,
18189
                        items: [{
18190
                            xtype: 'docgrid',
18191
                            height: 400,
18192
                            tableName: rec.TableName,
18193
                            docType: me.docType,
18194
                            transType: me.transType,
18195
                            storename: 'store' + rec.TableName,
18196
                            pagesize: 25,
18197
                            name: 'GRID' + rec.TableName,
18198
                            margin: '0 0 10 0',
18199
                            autoLoad: false,
18200
                            tbar: [{
18201
                                xtype: 'tbfill'
18202
                            }, {
18203
                                text: 'Clear Filters',
18204
                                tooltip: 'Clear all filters',
18205
                                name: 'clearbtn',
18206
                                handler: function () {}
18207
                            }
18208
                            ],
18209
                            dockedItems: [{
18210
                                xtype: 'pagingtoolbar',
18211
                                store: 'store' + rec.TableName,
18212
                                dock: 'bottom',
18213
                                pageSize: me.pagesize,
18214
                                displayInfo: true
18215
                            }
18216
                            ]
18217
                        }
18218
                        ]
18219
                    });
18220
                } else if (rec.LayoutType == "L006") {
18221
                    _items.push({
18222
                        xtype: 'panel',
18223
                        title: rec.Title,
18224
                        name: 'panelTab' + rec.TableName,
18225
                        tbl: rec.TableName,
18226
                        layoutType: rec.LayoutType,
18227
                        items: [{
18228
                            xtype: 'docgridcelledit',
18229
                            name: 'CELLGRID' + rec.TableName,
18230
                            tableName: rec.TableName,
18231
                            docType: me.docType,
18232
                            transType: me.transType,
18233
                            docNo: me.docNo,
18234
                            height: 400,
18235
                            hideButton: false,
18236
                            margin: '0 0 10 0'
18237
                        }
18238
                        ]
18239
                    });
18240
                } else if (rec.LayoutType == "L007"&& rec.TableName !='PTRPRODUCTIONITEM') {
18241
                    _items.push({
18242
                        xtype: 'panel',
18243
                        title: rec.Title,
18244
                        name: 'panelTab' + rec.TableName,
18245
                        tbl: rec.TableName,
18246
                        layoutType: rec.LayoutType,
18247
                        items: [{
18248
                            xtype: 'docgridcelleditsum',
18249
                            name: 'CELLGRID' + rec.TableName,
18250
                            tableName: rec.TableName,
18251
                            docType: me.docType,
18252
                            transType: me.transType,
18253
                            docNo: me.docNo,
18254
                            height: 400,
18255
                            hideButton: false,
18256
                            margin: '0 0 10 0'
18257
                        }, {
18258
                            xtype: 'summarydocform',
18259
                            name: 'SUM' + rec.TableName,
18260
                            id: 'SUM' + rec.TableName,
18261
                            itemId: 'SUM' + rec.TableName,
18262
                            tableName: rec.TableName,
18263
                            docType: me.docType,
18264
                            transType: me.transType,
18265
                        }
18266
                        ]
18267
                    });
18268
                }  else if (rec.LayoutType == "L007" && rec.TableName =='PTRPRODUCTIONITEM') {
18269
                    _items.push({
18270
                        xtype: 'panel',
18271
                        title: rec.Title,
18272
                        name: 'panelTab' + rec.TableName,
18273
                        tbl: rec.TableName,
18274
                        layoutType: rec.LayoutType,						
18275
                        items: [{
18276
                            xtype: 'docgridcelleditsum',
18277
                            name: 'CELLGRID' + rec.TableName,
18278
                            tableName: rec.TableName,
18279
                            docType: me.docType,
18280
                            transType: me.transType,
18281
                            docNo: me.docNo,
18282
                            height: 400,
18283
                            hideButton: false,
18284
                            margin: '0 0 10 0'
18285
                        }, {
18286
                            xtype: 'summarydocform',
18287
                            name: 'SUM' + rec.TableName,
18288
                            id: 'SUM' + rec.TableName,
18289
                            itemId: 'SUM' + rec.TableName,
18290
                            tableName: rec.TableName,
18291
                            docType: me.docType,
18292
                            transType: me.transType,
18293
                        }
18294
                        ]
18295
                    });
18296
                } else { // L001=Default Form Only
18297
                    _items.push({
18298
                        xtype: 'panel',
18299
                        title: rec.LabelName,
18300
                        name: 'panelTab' + rec.TableName,
18301
                        tbl: rec.TableName,
18302
                        layoutType: rec.LayoutType,
18303
                        items: [{
18304
                            xtype: 'minovadocform',
18305
                            name: 'DISPLAY' + rec.TableName,
18306
                            id: 'DISPLAY' + rec.TableName,
18307
                            itemId: 'DISPLAY' + rec.TableName,
18308
                            tableName: rec.TableName,
18309
                            docType: me.docType,
18310
                            transType: me.transType,
18311
                            isDisplay: true,
18312
                            hidden: false,
18313
                            buttons: [{
18314
                                text: 'Edit',
18315
                                name: 'editDISPLAY' + rec.TableName,
18316
                                iconCls: 'fa-edit',
18317
                                style: 'font-family: FontAwesome',
18318
                                handler: function () {
18319
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
18320
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
18321
                                    frmDisplay.setHidden(true);
18322
                                    frmForm.setHidden(false);
18323
									if(rec.TableName=='PTRPRODUCTIONHEAD'){
18324
										Ext.ComponentQuery.query('[name=deleteDISPLAYPTRPRODUCTIONHEAD]')[0].setHidden(true);
18325
									}			
18326
                                    me.action = "1";
18327
                                }
18328
                            }, {
18329
                                text: 'Back',
18330
                                name: 'backDISPLAY' + rec.TableName,
18331
                                iconCls: 'fa-reply',
18332
                                style: 'font-family: FontAwesome',
18333
								hidden: true,
18334
                                handler: function () {
18335
                                    MinovaMessage('Message', '000011', '', 'C', function (respone) {
18336
                                        if (respone == "yes") {
18337
											MinovaUtil.LockData('CheckUser','CheckUser',5,0,MinovaUtil.SESSIONS.EmployeeID,MinovaUtil.GetMenuID());
18338
											//me.afterrenderTab();
18339
											var pnlSelect = Ext.ComponentQuery.query('[name=DocSelectionJoil]')[0];
18340
											//var tes = Ext.ComponentQuery.query('[name=searchResultInfo]')[0];
18341
											var pnlTransaction = Ext.ComponentQuery.query('[name=DocTransaction]')[0];
18342
											var panelHead = Ext.ComponentQuery.query('[name=MainHeaderDocument]')[0];
18343
											var panelDisplayHead = Ext.ComponentQuery.query('[name=DisplayMainHeaderDocument]')[0];
18344
											var formHead = panelHead.getForm();
18345
											formHead.reset();
18346
											var formHeadDisplay = panelDisplayHead.getForm();
18347
											formHeadDisplay.reset();
18348
											var btnCreate = Ext.ComponentQuery.query('[name=CreateDoc]')[0];
18349
											var btnSave = Ext.ComponentQuery.query('[name=SaveDoc]')[0];
18350
											var btnEdit = Ext.ComponentQuery.query('[name=EditDoc]')[0];
18351
											var btnDelete = Ext.ComponentQuery.query('[name=DeleteDoc]')[0];
18352
											pnlSelect.setHidden(false);
18353
											//tes.setHidden(true);
18354
											pnlTransaction.setHidden(true);
18355
											panelHead.setHidden(false);
18356
											panelDisplayHead.setHidden(true);
18357
                                        }
18358
                                    });
18359
                                }
18360
                            }, {
18361
                                text: 'Cancel',
18362
                                name: 'cancelDISPLAY' + rec.TableName,
18363
                                iconCls: 'fa-reply',
18364
                                style: 'font-family: FontAwesome',
18365
                                hidden: true
18366
                            }
18367
                            ]
18368
                        }, {
18369
                            xtype: 'minovadocform',
18370
                            name: 'FORM' + rec.TableName,
18371
                            id: 'FORM' + rec.TableName,
18372
                            itemId: 'FORM' + rec.TableName,
18373
                            tableName: rec.TableName,
18374
                            docType: me.docType,
18375
                            transType: me.transType,
18376
                            isDisplay: false,
18377
                            hidden: true,
18378
                            buttons: [{
18379
                                text: 'Save',
18380
                                name: 'saveDISPLAY' + rec.TableName,
18381
                                iconCls: 'fa-save',
18382
                                style: 'font-family: FontAwesome',
18383
                                handler: function () {
18384
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
18385
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
18386
									
18387
									 var headerDisplay =undefined;
18388
									if(rec.TableName=="PTRPRODUCTIONHEAD"){
18389
										headerDisplay=Ext.ComponentQuery.query('[name=MainHeaderDocument]')[0];
18390
										frmForm.getForm().findField("DocNo").setValue(headerDisplay.getForm().findField("DocNo").getValue());
18391
										frmForm.getForm().findField("DocType").setValue(headerDisplay.getForm().findField("DocType").getValue());
18392
										frmForm.getForm().findField("ProcessID").setValue(headerDisplay.getForm().findField("ProcessID").getValue());
18393
										frmForm.getForm().findField("DocDate").setValue(headerDisplay.getForm().findField("DocDate").getValue());
18394
										frmForm.getForm().findField("DocStatus").setValue(headerDisplay.getForm().findField("DocStatus").getValue());
18395
										frmForm.getForm().findField("OrderDate").setValue(headerDisplay.getForm().findField("OrderDate").getValue());
18396
										frmForm.getForm().findField("Description").setValue(headerDisplay.getForm().findField("Description").getValue());	
18397
										frmForm.getForm().findField("FinishGoods").setValue(headerDisplay.getForm().findField("FinishGoods").getValue());										
18398
									}else{
18399
										headerDisplay=Ext.ComponentQuery.query('[name=MainHeaderMDLogistic]')[0];	
18400
									}
18401
                                   
18402
                                    var frm = frmForm.getForm();
18403
                                    if (frm.isValid()) {
18404

    
18405
										
18406
                                        var table = rec.TableName;
18407
                                        var data = Ext.encode(frmForm.getValues());
18408
                                        var token = MinovaUtil.SESSIONS.Token;
18409
										var action=me.action;
18410
										if(action==undefined){action="0"};
18411
                                        var params = {
18412
                                            apiController: 'api/Devt',
18413
                                            methodName: 'SaveTableMaster',
18414
                                            parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
18415
                                        };
18416
                                        MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
18417
                                            var result = Ext.decode(xhr.responseText);
18418
                                            var r = Ext.decode(result.data);
18419
                                            if (r.success) {
18420
                                                headerDisplay.mask("Loading...");
18421
                                                var idNo = r.data;
18422
                                                frmForm.getForm().findField("DocNo").setValue(idNo);
18423
												frmDisplay.getForm().setValues(frmForm.getValues());
18424
												headerDisplay.getForm().setValues(frmForm.getValues());													
18425
                                                frmDisplay.setHidden(false);
18426
                                                frmForm.setHidden(true);
18427
                                                MinovaMessage('Not Null', '000006', '', 'S');
18428
                                                headerDisplay.unmask();
18429
                                            } else {
18430
                                                MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
18431
                                            }
18432
                                        });
18433
                                    }
18434
                                }
18435
                            }, {
18436
                                text: 'Delete',
18437
                                name: 'deleteDISPLAY' + rec.TableName,
18438
                                iconCls: 'fa-trash-o',
18439
                                style: 'font-family: FontAwesome',
18440
                                handler: function () {}
18441
                            }, {
18442
                                text: 'Cancel',
18443
                                name: 'cancelDISPLAY' + rec.TableName,
18444
                                iconCls: 'fa-reply',
18445
                                style: 'font-family: FontAwesome',
18446
                                handler: function () {
18447
                                    MinovaMessage('Message', '000011', '', 'C', function (respone) {
18448
                                        if (respone == "yes") {
18449
                                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
18450
                                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
18451
                                            frmDisplay.setHidden(false);
18452
                                            frmForm.setHidden(true);
18453
                                        }
18454
                                    });
18455
                                }
18456
                            }
18457
                            ]
18458
                        }
18459
                        ]
18460
                    });
18461
                }
18462
            });
18463
        }
18464
        Ext.applyIf(me, {
18465
            items: _items
18466
        });
18467
        me.callParent(arguments);
18468
    }
18469
});
18470
/*Add by Taufan ( Generate Doc Transaction Form For ERP )*/
18471
Ext.define('MinovaUtil.MinovaES.MinovaDocForm', {
18472
    extend: 'Ext.form.Panel',
18473
    alias: ['widget.MinovaDocForm', 'widget.minovadocform', 'widget.docform'],
18474
    formname: this.name,
18475
    tableName: undefined,
18476
    docType: undefined,
18477
    transType: undefined,
18478
    resizable: true,
18479
    border: false,
18480
    autoScroll: true,
18481
    isDisplay: undefined,
18482
    isLookup: undefined,
18483
    layout: 'column',
18484
    defaults: {
18485
        layout: 'form',
18486
        xtype: 'container',
18487
        defaultType: 'textfield',
18488
        style: 'width: 50%',
18489
    },
18490
    initComponent: function () {
18491
        var me = this;
18492
        var col1 = [];
18493
        var col2 = [];
18494
        var LangID = localStorage.LangId;
18495
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',DocType='" + me.docType + "'";
18496
        var formname_ = me.name;
18497
        var nameTable_ = me.tableName;
18498
        Ext.Ajax.request({
18499
            async: false,
18500
            method: 'POST',
18501
            url: '/UserControl/GetStore',
18502
            params: {
18503
                tableName: 'PDSDOCFIELD',
18504
                param: parameter
18505
            },
18506
            success: function (response) {
18507
                var results = Ext.decode(response.responseText);
18508
                hasil = results.data;
18509
            }
18510
        });
18511

    
18512
        if (hasil.length > 0) {
18513
            Ext.each(hasil, function (rec) {
18514
                var isnull = null;
18515
                if (rec.IsPrimaryKey == '1') {
18516
                    isnull = false;
18517
                }
18518
                if (rec.IsRequired == '1') {
18519
                    isnull = false;
18520
                } else {
18521
                    isnull = true;
18522
                }
18523
                var formfield = MinovaUtil.FieldGenerator.Form(me.name, rec, isnull, me.isDisplay, me.tableName, me.isLookup);
18524
                var descField = undefined;
18525
		
18526
                if (rec.ColumnNo == 1) {
18527
                    col1.push(formfield);
18528
                    if (descField) {
18529
                        col1.push(descField)
18530
                    }
18531
                } else {
18532
                    col2.push(formfield);
18533
                    if (descField) {
18534
                        col2.push(descField)
18535
                    }
18536
                }
18537

    
18538
                if (rec.IsPrimaryKey == 1 && me.isLookup == undefined) {
18539
                    formfieldKey = new Ext.form.TextField({
18540
                        hidden: true,
18541
                        name: "Key_" + rec.FieldName,
18542
                    });
18543
                    col2.push(formfieldKey);
18544
                }			
18545
            });
18546
        }
18547
        Ext.applyIf(me, {
18548
            items: [{
18549
                style: 'width: 50%',
18550
                items: col1
18551
            }, {
18552
                style: 'width: 50%',
18553
                items: col2
18554
            }
18555
            ]
18556
        });
18557
        this.callParent();
18558
    }
18559
});
18560
/*Add by Taufan ( Generate Doc Transaction Grid For ERP )*/
18561
Ext.define('MinovaUtil.MinovaES.MinovaDocGrid', {
18562
    extend: 'Ext.grid.Panel',
18563
    requires: ['Ext.grid.RowNumberer'],
18564
    alias: 'widget.docgrid',
18565
    alternateClassName: 'Ext.grid.MinovaGrid',
18566
    tableName: undefined,
18567
    docType: undefined,
18568
    transType: undefined,
18569
    isLookup: undefined,
18570
    param: undefined,
18571
    pagesize: undefined,
18572
    storename: undefined,
18573
    layoutType: undefined,
18574
    enableLocking: true,
18575
    autoLoad: undefined,
18576
    multiSelect: undefined,
18577
    getTableName: function () {
18578
        return this.tableName;
18579
    },
18580
    initComponent: function () {
18581
        var me = this;
18582
        var cols_ = [];
18583
        var fieldeditor = {};
18584
        var hasil = null;
18585
        var autoLoad = true;
18586
        var LangID = localStorage.LangId;
18587
        var fielGrid = 'rec.GridView == 1';
18588
        var locking = true;
18589
        var checkSelection = '';
18590
        var widthLock = 250;
18591
        if (me.multiSelect) {
18592
            locking = false;
18593
            checkSelection = 'checkboxmodel';
18594
            widthLock = 40;
18595
        }
18596
        if (me.autoLoad == false) {
18597
            autoLoad = false;
18598
        }
18599
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',DocType='" + me.docType + "'";
18600
        Ext.Ajax.request({
18601
            async: false,
18602
            method: 'POST',
18603
            url: '/UserControl/GetStore',
18604
            params: {
18605
                tableName: 'PDSDOCFIELD',
18606
                param: parameter
18607
            },
18608
            success: function (response) {
18609
                var results = Ext.decode(response.responseText);
18610
                hasil = results.data;
18611
            }
18612
        });
18613
        if (hasil.length > 0) {
18614
            Ext.each(hasil, function (rec) {
18615
                var null_ = null;
18616
                if (rec.IsPrimaryKey == true) {
18617
                    null_ = false;
18618
                }
18619
                if (rec.IsRequired == true) {
18620
                    null_ = false;
18621
                } else {
18622
                    null_ = true;
18623
                }
18624
                if (rec.GridView == 1) {
18625
                    switch (rec.FormatRef) {
18626
                        case "action":
18627
                            cols_.push({
18628
                                text: rec.HeaderTitle,
18629
                                width: 100,
18630
                                xtype: 'actioncolumn',
18631
                                tooltip: 'View Data',
18632
                                name: rec.FieldName,
18633
                                itemId: me.tableName + rec.FieldName,
18634
                                align: 'center',
18635
                                iconCls: 'fa-edit',
18636
                                renderer: function (value, metadata, record) {
18637
                                    metadata.tdStyle = 'font-family: FontAwesome'
18638
                                },
18639
                                handler: function (grid, rowIndex, colIndex, actionItem, event, record, row) {
18640

    
18641
                                    this.fireEvent(me.tableName + rec.FieldName + "onActionClick", record);
18642
                                }
18643
                            });
18644
                            break
18645
                        case "file":
18646
                            cols_.push({
18647
                                xtype: 'minovapicturecolumn',
18648
                                text: rec.HeaderTitle,
18649
                                dataIndex: rec.FieldName,
18650
                                width: 100
18651
                            });
18652
                            break
18653
                        case "date":
18654
                            cols_.push({
18655
                                xtype: 'minovadatecolumn',
18656
                                text: rec.HeaderTitle,
18657
                                dataIndex: rec.FieldName,
18658
                                width: 100,
18659
                                filter: {
18660
                                    type: 'date',
18661
                                    itemDefaults: {
18662
                                        emptyText: 'Search for...'
18663
                                    }
18664
                                }
18665
                            });
18666
                            break
18667
                        case "amountencrypt":
18668
                            cols_.push({
18669
                                xtype: 'minovaamountcolumn',
18670
                                text: rec.HeaderTitle,
18671
                                dataIndex: rec.FieldName,
18672
                                align: 'right',
18673
                                width: 100,
18674
                                filter: {
18675
                                    type: 'string',
18676
                                    itemDefaults: {
18677
                                        emptyText: 'Search for...'
18678
                                    }
18679
                                }
18680
                            });
18681
                            break
18682
                        case "amount":
18683
                            cols_.push({
18684
                                xtype: 'minovacurrancycolumn',
18685
                                text: rec.HeaderTitle,
18686
                                dataIndex: rec.FieldName,
18687
                                align: 'right',
18688
                                width: 100,
18689
                                filter: {
18690
                                    type: 'number',
18691
                                    itemDefaults: {
18692
                                        emptyText: 'Search for...'
18693
                                    }
18694
                                }
18695
                            });
18696
                            break
18697
                        case "datetime":
18698
                            cols_.push({
18699
                                xtype: 'minovadatetimecolumn',
18700
                                text: rec.HeaderTitle,
18701
                                dataIndex: rec.FieldName,
18702
                                width: 140,
18703
                                filter: {
18704
                                    type: 'string',
18705
                                    itemDefaults: {
18706
                                        emptyText: 'Search for...'
18707
                                    }
18708
                                }
18709
                            });
18710
                            break
18711
                        default:
18712
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
18713
                                cols_.push({
18714
                                    text: rec.HeaderTitle,
18715
                                    dataIndex: rec.FieldName,
18716
                                    width: 100,
18717
                                    filter: {
18718
                                        type: 'string',
18719
                                        itemDefaults: {
18720
                                            emptyText: 'Search for...'
18721
                                        }
18722
                                    }
18723
                                });
18724
                            } else if (rec.TableRef != "") {
18725
                                if (rec.TableRef != null) {
18726
                                    var valueField = null;
18727
                                    var displayValue = null;
18728
                                    Ext.Ajax.request({
18729
                                        async: false,
18730
                                        method: 'POST',
18731
                                        url: '/UserControl/GetStore',
18732
                                        params: {
18733
                                            tableName: 'SDATATABLEFIELD',
18734
                                            param: 'TableName[equal]' + rec.TableRef
18735
                                        },
18736
                                        success: function (response) {
18737
                                            var results = Ext.decode(response.responseText);
18738
                                            data_ = results.data;
18739
                                            if (data_.length > 0) {
18740
                                                valueField_ = $.grep(data_, function (r) {
18741
                                                    return r.ValueField == '1'
18742
                                                });
18743
                                                valueField = valueField_[0].FieldName
18744
                                                displayValue_ = $.grep(data_, function (r) {
18745
                                                    return r.DisplayValue == '1'
18746
                                                });
18747
                                                displayValue = displayValue_[0].FieldName
18748
                                            } else {
18749
                                                MinovaMessage('Not Null', 'BSNULLCOMBO', rec.TableRef, 'E');
18750
                                            }
18751
                                        }
18752
                                    });
18753
                                    var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
18754
                                    var count_ = 0;
18755
                                    if (store_) {
18756
                                        count_ = store_.count();
18757
                                    }
18758
                                    if (count_ == 0) {
18759
                                        Ext.create('Ext.data.Store', {
18760
                                            storeId: 'store_' + rec.FieldName,
18761
                                            autoLoad: false,
18762
                                            proxy: {
18763
                                                method: 'POST',
18764
                                                type: 'ajax',
18765
                                                url: '/UserControl/GetStore',
18766
                                                extraParams: {
18767
                                                    tableName: rec.TableRef,
18768
                                                    param: rec.ParamCombo
18769
                                                },
18770
                                                reader: {
18771
                                                    type: 'json',
18772
                                                    root: 'data',
18773
                                                    totalProperty: 'data[0].TotalCount'
18774
                                                }
18775
                                            }
18776
                                        })
18777
                                    }
18778
                                    cols_.push({
18779
                                        xtype: 'minovacombocolumn',
18780
                                        text: rec.HeaderTitle,
18781
                                        dataIndex: rec.FieldName,
18782
                                        valueField: valueField,
18783
                                        displayField: displayValue,
18784
                                        store: 'store_' + rec.FieldName,
18785
                                        filter: {
18786
                                            type: 'list',
18787
                                            itemDefaults: {
18788
                                                emptyText: 'Search for...'
18789
                                            }
18790
                                        }
18791
                                    });
18792
                                }
18793
                            } else if (rec.FixedValue != "") {
18794
                                cols_.push({
18795
                                    xtype: 'minovacombocolumnfixvalue',
18796
                                    text: rec.HeaderTitle,
18797
                                    dataIndex: rec.FieldName,
18798
                                    fixedValue: rec.FixedValue,
18799
                                    filter: {
18800
                                        type: 'list',
18801
                                        itemDefaults: {
18802
                                            emptyText: 'Search for...'
18803
                                        }
18804
                                    }
18805
                                });
18806
                            } else {
18807
                                cols_.push({
18808
                                    text: rec.HeaderTitle,
18809
                                    dataIndex: rec.FieldName,
18810
                                    filter: {
18811
                                        itemDefaults: {
18812
                                            emptyText: 'Search for...'
18813
                                        }
18814
                                    }
18815
                                });
18816
                            }
18817
                            break
18818
                    }
18819
                } else {
18820
                    cols_.push({
18821
                        text: rec.HeaderTitle,
18822
                        dataIndex: rec.FieldName,
18823
                        hidden: true,
18824
                        filter: {
18825
                            itemDefaults: {
18826
                                emptyText: 'Search for...'
18827
                            }
18828
                        }
18829
                    });
18830
                }
18831

    
18832
            });
18833
        };
18834
        var param_ = me.param;
18835
        if (param_ == undefined) {
18836
            param_ = ''
18837
        }
18838
        var jsStoreGrid = new Ext.data.Store({
18839
            storeId: me.storename,
18840
            autoLoad: autoLoad,
18841
            pageSize: me.pagesize,
18842
            proxy: {
18843
                method: 'POST',
18844
                type: 'ajax',
18845
                url: '/UserControl/GetStorePagingAuth',
18846
                extraParams: {
18847
                    tableName: me.tableName,
18848
                    param: param_,
18849
                    menuId: MinovaUtil.GetMenuID()
18850
                },
18851
                reader: {
18852
                    type: 'json',
18853
                    root: 'data',
18854
                    totalProperty: 'totalRecords'
18855
                }
18856
            },
18857
        });
18858
        Ext.applyIf(me, {
18859
            autoScroll: true,
18860
            enableLocking: locking,
18861
            lockedGridConfig: {
18862
                header: false,
18863
                collapsible: true,
18864
                width: widthLock,
18865
                forceFit: locking,
18866
                listeners: {
18867
                    render: function (grid) {
18868
                        var pagingToolbar = grid.child('pagingtoolbar');
18869
                        if (pagingToolbar) {
18870
                            grid.remove(pagingToolbar, true);
18871
                        }
18872
                    }
18873
                }
18874
            },
18875
            listeners: {
18876
                viewready: function () {
18877
                    if (autoLoad == true) {
18878
                        this.getStore().loadPage(1);
18879
                    }
18880
                },
18881
                beforeedit: function () {
18882
                    return false;
18883
                }
18884
            },
18885
            lockedViewConfig: {
18886
                scroll: 'horizontal'
18887
            },
18888

    
18889
            //Add For Auto Size Coloum Mode
18890
            viewConfig: {
18891
                emptyText: 'No Data Display',
18892
                deferEmptyText: false,
18893
                listeners: {
18894
                    refresh: function (dataview) {
18895
                        Ext.each(dataview.panel.columns, function (column) {
18896
                            if (column.autoSizeColumn == false)
18897
                                column.autoSizeColumn = true;
18898
                                column.autoSize();
18899
                        })
18900
                    }
18901
                }
18902
            },
18903
            selModel: {},
18904
            selType: checkSelection,
18905
            columns: cols_,
18906
            store: jsStoreGrid,
18907
            plugins: [{
18908
                ptype: 'gridfilters'
18909
            }
18910
            ]
18911
        });
18912
        me.callParent(arguments);
18913
    }
18914
});
18915
/*Add by Taufan ( Generate Doc Transaction Cell Edit Grid  For ERP )*/
18916
Ext.define('MinovaUtil.MinovaES.MinovaDocGridCellEdit', {
18917
    extend: 'Ext.form.Panel',
18918
    alias: 'widget.docgridcelledit',
18919
    requires: [
18920
		'Ext.grid.plugin.CellEditing',
18921
		'Ext.grid.Panel'
18922
    ],
18923
    autoScroll: true,
18924
    anchor: '100%',
18925
    tableName: undefined,
18926
    docType: undefined,
18927
    transType: undefined,
18928
    docNo: undefined,
18929
    hideButton: undefined,
18930
    multiSelect: undefined,
18931
    initComponent: function () {
18932
        var me = this;
18933
        var isLookup = me.isLookup;
18934
        var hide_ = false;
18935
        var widthLock = 250;
18936
        var checkSelection = '';
18937
		var hideUploadDownload = false; // add by Tri nwh 20220829
18938
		var hideCheckStock = true; // add by Tri nwh 20220829
18939
		var hideGenBOMProd = true; // add by Tri nwh 20220829
18940
		
18941
		Ext.Ajax.request({ // add by Tri nwh 20220829
18942
			async: false,
18943
			method: 'POST',
18944
			url: '/UserControl/GetStore',
18945
			params: {
18946
				tableName: "PCMBSTRANSLIST",
18947
				param: 'TableName[=]' + me.tableName
18948
			},
18949
			success: function (response) {
18950
				var results = Ext.decode(response.responseText);
18951
				if (results.data[0].UploadDownloadEnable == '0') {
18952
					hideUploadDownload = true;
18953
				} else {
18954
					hideUploadDownload = false;
18955
				}
18956
			}
18957
		});
18958

    
18959
		if (me.tableName == "PTRALLOCATION") { // add by Tri nwh 20220829
18960
			hideCheckStock = false;
18961
		}
18962
		
18963
        if (me.hideButton == true) {
18964
            hide_ = true;
18965
        }
18966
        if (me.multiSelect) {
18967
            locking = false;
18968
            checkSelection = 'checkboxmodel';
18969
            widthLock = 40;
18970
        }
18971
        var tableName = me.tableName;
18972
        var cols = [];
18973
        var fieldStore = [];
18974
        var _url = 'GetAllField';
18975
        var hasil = null;
18976
        var height = me.height;
18977
        var storeID = 'store' + me.tableName;
18978
        var gridName = 'grid' + me.name;
18979
        if (me.storeName) {
18980
            storeID = me.storeName;
18981
        }
18982
        var LangID = MinovaUtil.GetLangID();
18983
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',DocType='" + me.docType + "'";
18984
        Ext.Ajax.request({
18985
            async: false,
18986
            method: 'POST',
18987
            url: '/UserControl/GetStore',
18988
            params: {
18989
                tableName: 'PDSDOCFIELD',
18990
                param: parameter
18991
            },
18992
            success: function (response) {
18993
                var results = Ext.decode(response.responseText);
18994
                hasil = results.data;
18995
            }
18996
        });
18997
        cols.push({
18998
            xtype: 'rownumberer'
18999
        });
19000
        var addData = '({';
19001
        if (hasil.length > 0) {
19002
            Ext.each(hasil, function (rec) {
19003
                fieldStore.push(rec.FieldName);
19004
                var defaultValue = rec.DefaultValue;
19005
                if (defaultValue.substring(0, 2).toLowerCase() == 'fn') {
19006
                    Ext.Ajax.request({
19007
                        async: false,
19008
                        method: 'POST',
19009
                        url: '/UserControl/GetStore',
19010
                        params: {
19011
                            tableName: 'PCMFUNC',
19012
                            param: 'FuncName[equal]' + rec.DefaultValue
19013
                        },
19014
                        success: function (response) {
19015
                            var results = Ext.decode(response.responseText);
19016
                            data_ = results.data;
19017
                            if (data_.length > 0) {
19018
                                defaultValue = eval(data_[0].FunctionCode);
19019
                            }
19020
                        }
19021
                    });
19022
                }
19023
                addData = addData + rec.FieldName + ":" + "'" + defaultValue + "',";
19024
                var null_ = null;
19025
                var ReadOnly_ = false;
19026
                if (rec.IsPrimaryKey == true) {
19027
                    null_ = false;
19028
                }
19029
                if (rec.IsRequired == true) {
19030
                    null_ = false;
19031
                } else {
19032
                    null_ = true;
19033
                }
19034
                var Hidden_ = false;
19035
                if (rec.ReadOnly == '1') {
19036
                    ReadOnly_ = true;
19037
                }
19038
                if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
19039
                    Hidden_ = true;
19040
                    null_ = true;
19041
                }
19042
                if (rec.GridView == 1) {
19043
                    switch (rec.FormatRef) {
19044
                        case "date":
19045
                            cols.push({
19046
                                xtype: 'minovadatecolumn',
19047
                                hidden: Hidden_,
19048
                                text: rec.HeaderTitle,
19049
                                dataIndex: rec.FieldName,
19050
                                filter: {
19051
                                    itemDefaults: {
19052
                                        emptyText: 'Search for...'
19053
                                    }
19054
                                },
19055
                                editor: {
19056
                                    allowBlank: null_,
19057
                                    xtype: 'datefield',
19058
                                    hideMode: 'visibility',
19059
                                    readOnly: ReadOnly_,
19060
                                    id: tableName + rec.FieldName,
19061
                                    value: defaultValue
19062
                                }
19063
                            });
19064
                            break
19065
                        case "amount":
19066
                            cols.push({
19067
                                //xtype : 'minovacurrancycolumn',
19068
                                xtype: 'numbercolumn',
19069
                                text: rec.HeaderTitle,
19070
                                align: 'right',
19071
                                dataIndex: rec.FieldName,
19072
                                hidden: Hidden_,
19073
								minWidth: 150,
19074
                                filter: {
19075
                                    itemDefaults: {
19076
                                        emptyText: 'Search for...'
19077
                                    }
19078
                                },
19079
                                editor: {
19080
                                    allowBlank: null_,
19081
                                    xtype: 'textfield',
19082
                                    readOnly: ReadOnly_,
19083
                                    id: tableName + rec.FieldName,
19084
                                    nameTable: rec.TableName,
19085
                                    fieldGrid: rec.FieldName,
19086
                                    fieldStyle: 'text-align:right;',
19087
                                    vtype: 'validateMinovaNumber',
19088
                                    value: '0',
19089
                                    listeners: {
19090
                                        change: function (val, recs) {
19091
                                            var fvalue = val.getValue();
19092
                                            var custumFunc = rec.SelectFunction;
19093
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19094
                                                Ext.Ajax.request({
19095
                                                    async: false,
19096
                                                    method: 'POST',
19097
                                                    url: '/UserControl/GetStore',
19098
                                                    params: {
19099
                                                        tableName: 'PCMFUNC',
19100
                                                        param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19101
                                                    },
19102
                                                    success: function (response) {
19103
                                                        var results = Ext.decode(response.responseText);
19104
                                                        var dt = results.data[0];
19105
                                                        if (dt != undefined) {
19106
                                                            custumFunc = dt.FunctionCode;
19107
                                                        }
19108
                                                    }
19109
                                                });
19110
                                            }
19111
                                            if (custumFunc) {
19112
                                                eval(custumFunc)
19113
                                            }
19114
                                        }
19115
                                    }
19116
                                }
19117
                            });
19118
                            break
19119
                        default:
19120
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
19121
                                cols.push({
19122
                                    text: rec.HeaderTitle,
19123
                                    dataIndex: rec.FieldName,
19124
                                    width: 100,
19125
									minWidth: 150,
19126
                                    filter: {
19127
                                        type: 'string',
19128
                                        itemDefaults: {
19129
                                            emptyText: 'Search for...'
19130
                                        }
19131
                                    }
19132
                                });
19133
                            } else if (rec.SearchType == '0') {
19134
                                var valueField = null;
19135
                                var displayValue = null;
19136
                                var TableRef = undefined;
19137
                                if (rec.TableRef != '') {
19138
                                    TableRef = rec.TableRef;
19139
                                    Ext.Ajax.request({
19140
                                        async: false,
19141
                                        method: 'POST',
19142
                                        url: '/UserControl/GetStore',
19143
                                        params: {
19144
                                            tableName: 'SDATATABLEFIELD',
19145
                                            param: 'TableName[equal]' + rec.TableRef
19146
                                        },
19147
                                        success: function (response) {
19148
                                            var results = Ext.decode(response.responseText);
19149
                                            data_ = results.data;
19150
                                            if (data_ != undefined) {
19151
                                                valueField_ = $.grep(data_, function (r) {
19152
                                                    return r.ValueField == '1'
19153
                                                });
19154
                                                valueField = valueField_[0].FieldName
19155
                                                displayValue_ = $.grep(data_, function (r) {
19156
                                                    return r.DisplayValue == '1'
19157
                                                });
19158
												if(displayValue_[0] !=undefined){
19159
													displayValue = displayValue_[0].FieldName
19160
												}
19161
                                                
19162
                                            }
19163
                                        }
19164
                                    });
19165
                                }
19166
                                Ext.create('Ext.data.Store', {
19167
                                    storeId: 'store_' + me.tableName + rec.FieldName,
19168
                                    autoLoad: true,
19169
                                    proxy: {
19170
                                        method: 'POST',
19171
                                        type: 'ajax',
19172
                                        url: '/UserControl/GetStoreAuth',
19173
                                        extraParams: {
19174
                                            tableName: TableRef,
19175
                                            param: rec.ParamCombo,
19176
                                            menuId: MinovaUtil.GetMenuID()
19177
                                        },
19178
                                        reader: {
19179
                                            type: 'json',
19180
                                            root: 'data',
19181
                                            totalProperty: 'data[0].TotalCount'
19182
                                        }
19183
                                    }
19184
                                });
19185
                                cols.push({
19186
                                    xtype: 'minovacombocolumn',
19187
                                    hidden: Hidden_,
19188
                                    text: rec.HeaderTitle,
19189
                                    dataIndex: rec.FieldName,
19190
                                    valueField: valueField,
19191
                                    displayField: displayValue,
19192
                                    store: 'store_' + me.tableName + rec.FieldName,
19193
									minWidth: 150,
19194
                                    editor: {
19195
                                        allowBlank: null_,
19196
                                        xtype: 'minovacombobox',
19197
                                        readOnly: ReadOnly_,
19198
                                        id: tableName + rec.FieldName,
19199
                                        valueField: valueField,
19200
                                        displayField: displayValue,
19201
                                        store: 'store_' + me.tableName + rec.FieldName,
19202
										forceSelection: false,
19203
									lazyRender: true,
19204
                                        listeners: {
19205
                                            change: function (val) {
19206
                                                var fvalue = val.getValue();
19207
                                                var custumFunc = rec.SelectFunction;
19208
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19209
                                                    Ext.Ajax.request({
19210
                                                        async: false,
19211
                                                        method: 'POST',
19212
                                                        url: '/UserControl/GetStore',
19213
                                                        params: {
19214
                                                            tableName: 'PCMFUNC',
19215
                                                            param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19216
                                                        },
19217
                                                        success: function (response) {
19218
                                                            var results = Ext.decode(response.responseText);
19219
                                                            var dt = results.data[0];
19220
                                                            if (dt != undefined) {
19221
                                                                custumFunc = dt.FunctionCode;
19222
                                                            }
19223
                                                        }
19224
                                                    });
19225
                                                }
19226
                                                if (custumFunc) {
19227
                                                    eval(custumFunc)
19228
                                                }
19229
                                            }
19230
                                        }
19231
                                    },
19232
                                    filter: {
19233
                                        type: 'list',
19234
                                        itemDefaults: {
19235
                                            emptyText: 'Search for...'
19236
                                        }
19237
                                    }
19238
                                });
19239
                            } else if (rec.SearchType == '5') {							
19240
                                var valueField = null;
19241
                                var displayValue = null;
19242
                                var AdditionaldisplayValue = null;
19243
                                var TableRef = undefined;
19244
                                if (rec.TableRef != '') {
19245
                                    TableRef = rec.TableRef;
19246
                                    Ext.Ajax.request({
19247
                                        async: false,
19248
                                        method: 'POST',
19249
                                        url: '/UserControl/GetStore',
19250
                                        params: {
19251
                                            tableName: 'SDATATABLEFIELD',
19252
                                            param: 'TableName[equal]' + rec.TableRef
19253
                                        },
19254
                                        success: function (response) {
19255
                                            var results = Ext.decode(response.responseText);
19256
                                            data_ = results.data;
19257
                                            if (data_ != undefined) {
19258
                                                valueField_ = $.grep(data_, function (r) {
19259
                                                    return r.ValueField == '1'
19260
                                                });
19261
                                                if (valueField_.length > 0) {
19262
                                                    valueField = valueField_[0].FieldName
19263
                                                }
19264

    
19265
                                                displayValue_ = $.grep(data_, function (r) {
19266
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
19267
                                                });
19268
                                                if (displayValue_.length > 0) {
19269
                                                    displayValue = displayValue_[0].FieldName;
19270
                                                }
19271
                                                if (displayValue_.length >= 2) {
19272
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
19273
                                                }
19274
                                            }
19275
                                        }
19276
                                    });
19277
                                }
19278
                                Ext.create('Ext.data.Store', {
19279
                                    storeId: 'store_' + me.tableName + rec.FieldName,
19280
                                    autoLoad: true,
19281
                                    proxy: {
19282
                                        method: 'POST',
19283
                                        type: 'ajax',
19284
                                        url: '/UserControl/GetStoreAuth',
19285
                                        extraParams: {
19286
                                            tableName: TableRef,
19287
                                            param: rec.ParamCombo,
19288
                                            menuId: MinovaUtil.GetMenuID()
19289
                                        },
19290
                                        reader: {
19291
                                            type: 'json',
19292
                                            root: 'data',
19293
                                            totalProperty: 'data[0].TotalCount'
19294
                                        }
19295
                                    }
19296
                                });
19297
                                cols.push({
19298
                                    xtype : 'minovacombocolumn',
19299
                                    hidden: Hidden_,
19300
                                    text: rec.HeaderTitle,
19301
                                    dataIndex: rec.FieldName,
19302
                                    valueField : valueField,
19303
                                    displayField : displayValue,
19304
                                    store : 'store_' + me.tableName + rec.FieldName,
19305
									minWidth: 150,
19306
                                    tpl: Ext.create('Ext.XTemplate',
19307
                                            '<ul class="x-list-plain"><tpl for=".">',
19308
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
19309
                                            '</tpl></ul>'),
19310
                                    displayTpl: Ext.create('Ext.XTemplate',
19311
                                        '<tpl for=".">',
19312
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
19313
                                        '</tpl>'),
19314
                                    editor: {
19315
                                        allowBlank: null_,
19316
                                        xtype: 'combobox',
19317
                                        readOnly: ReadOnly_,
19318
                                        id: rec.TableName + rec.FieldName,
19319
                                        nameTable: rec.TableName,
19320
                                        fieldGrid: rec.FieldName,
19321
                                        valueField: valueField,
19322
                                        displayField: displayValue,
19323
                                        store: 'store_' + me.tableName + rec.FieldName,
19324
                                        value: rec.DefaultValue,
19325
                                        tpl: Ext.create('Ext.XTemplate',
19326
                                            '<ul class="x-list-plain"><tpl for=".">',
19327
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
19328
                                            '</tpl></ul>'),
19329
                                        displayTpl: Ext.create('Ext.XTemplate',
19330
                                            '<tpl for=".">',
19331
                                            '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
19332
                                            '</tpl>')
19333
                                    },
19334
                                    renderer: function (value) {
19335
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
19336
                                        var index = store.find(valueField, value);
19337
                                        var val = "";
19338
                                        if (index != -1) {
19339
                                            var rc = store.getAt(index);
19340
                                            //val = rc.get(displayValue);
19341
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
19342
                                        } else {
19343
                                            val = value;
19344
                                        }
19345
                                        return val;
19346
                                    },
19347
                                    filter: {
19348
                                        type: 'list',
19349
                                        itemDefaults: {
19350
                                            emptyText: 'Search for...'
19351
                                        }
19352
                                    }
19353
                                });
19354
                            } else if (rec.SearchType == '2') {
19355
                                var triger = (rec.TriggerCombo).split('$');
19356
                                var targetField_ = triger[0];
19357
                                var fieldValue_ = triger[1];
19358
                                cols.push({
19359
                                    text: rec.HeaderTitle,
19360
                                    hidden: Hidden_,
19361
                                    dataIndex: rec.FieldName,
19362
                                    filter: {
19363
                                        itemDefaults: {
19364
                                            emptyText: 'Search for...'
19365
                                        }
19366
                                    },
19367
                                    editor: {
19368
                                        allowBlank: null_,
19369
                                        xtype: 'minovalookupgrid',
19370
                                        readOnly: ReadOnly_,
19371
                                        isGrid: true,
19372
                                        fieldTarget: targetField_,
19373
                                        fieldValue: fieldValue_,
19374
                                        isGrid: true,
19375
                                        id: tableName + rec.FieldName,
19376
                                        tableName: rec.TableRef,
19377
                                        triggerCls: 'x-form-search-trigger',
19378
                                        vtype: 'alphanum',
19379
                                        listeners: {
19380
                                            change: function (val) {
19381
                                                var custumFunc = rec.SelectFunction;
19382
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19383
                                                    Ext.Ajax.request({
19384
                                                        async: false,
19385
                                                        method: 'POST',
19386
                                                        url: '/UserControl/GetStore',
19387
                                                        params: {
19388
                                                            tableName: 'PCMFUNC',
19389
                                                            param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19390
                                                        },
19391
                                                        success: function (response) {
19392
                                                            var results = Ext.decode(response.responseText);
19393
                                                            data_ = results.data[0];
19394
                                                            if (data_ != undefined) {
19395
                                                                custumFunc = data_.FunctionCode;
19396
                                                            }
19397
                                                        }
19398
                                                    });
19399
                                                }
19400
                                                if (custumFunc) {
19401
                                                    eval(custumFunc)
19402
                                                }
19403
                                            }
19404
                                        }
19405
                                    }
19406
                                });
19407
                            } else if (rec.SearchType == '3') {
19408
                                cols.push({
19409
                                    text: rec.HeaderTitle,
19410
                                    hidden: Hidden_,
19411
                                    dataIndex: rec.FieldName,
19412
                                    filter: {
19413
                                        itemDefaults: {
19414
                                            emptyText: 'Search for...'
19415
                                        }
19416
                                    },
19417
                                    editor: {
19418
                                        allowBlank: null_,
19419
                                        xtype: 'MinovaLookupTree',
19420
                                        readOnly: ReadOnly_,
19421
                                        id: tableName + rec.FieldName,
19422
                                        tableName: rec.TableRef,
19423
                                        triggerCls: 'x-form-search-trigger',
19424
                                        vtype: 'alphanum',
19425
                                        treeSructure: rec.SearchFunction,
19426
                                        objClassValue: rec.ParamCombo,
19427
                                        listeners: {
19428
                                            change: function (val) {
19429
                                                var custumFunc = rec.SelectFunction;
19430
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19431
                                                    Ext.Ajax.request({
19432
                                                        async: false,
19433
                                                        method: 'POST',
19434
                                                        url: '/UserControl/GetStore',
19435
                                                        params: {
19436
                                                            tableName: 'PCMFUNC',
19437
                                                            param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19438
                                                        },
19439
                                                        success: function (response) {
19440
                                                            var results = Ext.decode(response.responseText);
19441
                                                            data_ = results.data[0];
19442
                                                            if (data_ != undefined) {
19443
                                                                custumFunc = data_.FunctionCode;
19444
                                                            }
19445
                                                        }
19446
                                                    });
19447
                                                }
19448
                                                if (custumFunc) {
19449
                                                    eval(custumFunc)
19450
                                                }
19451
                                            }
19452
                                        }
19453
                                    }
19454
                                });
19455
                            } 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) {
19456
                                var triger = (rec.TriggerCombo).split('&');
19457
                                var targetField_ = triger[0];
19458
                                var fieldValue_ = triger[0];
19459
                                cols.push({
19460
                                    text: rec.HeaderTitle,
19461
                                    hidden: Hidden_,
19462
                                    dataIndex: rec.FieldName,
19463
                                    filter: {
19464
                                        itemDefaults: {
19465
                                            emptyText: 'Search for...'
19466
                                        }
19467
                                    },
19468
                                    editor: {
19469
                                        allowBlank: null_,
19470
                                        xtype: 'lookupemployee',
19471
                                        readOnly: ReadOnly_,
19472
                                        isGrid: true,
19473
                                        fieldTarget: targetField_,
19474
                                        fieldValue: fieldValue_,
19475
                                        isGrid: true,
19476
                                        id: tableName + rec.FieldName,
19477
                                        tableName: rec.TableRef,
19478
                                        triggerCls: 'x-form-search-trigger',
19479
                                        vtype: 'alphanum',
19480
                                        listeners: {
19481
                                            change: function (val) {
19482
                                                var custumFunc = rec.SelectFunction;
19483
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19484
                                                    Ext.Ajax.request({
19485
                                                        async: false,
19486
                                                        method: 'POST',
19487
                                                        url: '/UserControl/GetStore',
19488
                                                        params: {
19489
                                                            tableName: 'PCMFUNC',
19490
                                                            param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19491
                                                        },
19492
                                                        success: function (response) {
19493
                                                            var results = Ext.decode(response.responseText);
19494
                                                            data_ = results.data[0];
19495
                                                            if (data_ != undefined) {
19496
                                                                custumFunc = data_.FunctionCode;
19497
                                                            }
19498
                                                        }
19499
                                                    });
19500
                                                }
19501
                                                if (custumFunc) {
19502
                                                    eval(custumFunc)
19503
                                                }
19504
                                            }
19505
                                        }
19506
                                    }
19507
                                });
19508
                            } else if (rec.SearchType == '4' && isLookup != true) {
19509
                                cols.push({
19510
                                    text: rec.HeaderTitle,
19511
                                    hidden: Hidden_,
19512
                                    dataIndex: rec.FieldName,
19513
                                    filter: {
19514
                                        itemDefaults: {
19515
                                            emptyText: 'Search for...'
19516
                                        }
19517
                                    },
19518
                                    editor: {
19519
                                        allowBlank: null_,
19520
                                        xtype: 'lookupemployee',
19521
                                        readOnly: ReadOnly_,
19522
                                        isGrid: true,
19523
                                        fieldTarget: targetField_,
19524
                                        fieldValue: fieldValue_,
19525
                                        isGrid: true,
19526
                                        id: tableName + rec.FieldName,
19527
                                        tableName: rec.TableRef,
19528
                                        triggerCls: 'x-form-search-trigger',
19529
                                        vtype: 'alphanum',
19530
                                        listeners: {
19531
                                            change: function (val) {
19532
                                                var custumFunc = rec.SelectFunction;
19533
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19534
                                                    Ext.Ajax.request({
19535
                                                        async: false,
19536
                                                        method: 'POST',
19537
                                                        url: '/UserControl/GetStore',
19538
                                                        params: {
19539
                                                            tableName: 'PCMFUNC',
19540
                                                            param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19541
                                                        },
19542
                                                        success: function (response) {
19543
                                                            var results = Ext.decode(response.responseText);
19544
                                                            data_ = results.data[0];
19545
                                                            if (data_ != undefined) {
19546
                                                                custumFunc = data_.FunctionCode;
19547
                                                            }
19548
                                                        }
19549
                                                    });
19550
                                                }
19551
                                                if (custumFunc) {
19552
                                                    eval(custumFunc)
19553
                                                }
19554
                                            }
19555
                                        }
19556
                                    }
19557
                                });
19558
                            } else if (rec.FixedValue != '') {
19559
                                cols.push({
19560
                                    text: rec.HeaderTitle,
19561
                                    hidden: Hidden_,
19562
                                    dataIndex: rec.FieldName,
19563
									
19564
                                    filter: {
19565
                                        itemDefaults: {
19566
                                            emptyText: 'Search for...'
19567
                                        }
19568
                                    },
19569
									autoSizeColumn: true,
19570
								width: 200,
19571
                                    editor: {
19572
                                        allowBlank: null_,
19573
                                        xtype: 'minovafixvalue',
19574
                                        readOnly: ReadOnly_,
19575
										forceSelection: false,
19576
                                        id: tableName + rec.FieldName,
19577
                                        nameTable: tableName,
19578
                                        fieldGrid: rec.FieldName,
19579
                                        fixedValue: rec.FixedValue,
19580
                                        valueField: 'code',
19581
                                        displayField: 'desc',
19582
                                        value: defaultValue,
19583
											/*Add by Midi 12 Juni 2019*/
19584
									listeners: {
19585
										change: function (val) {
19586
											var custumFunc = rec.SelectFunction;
19587
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19588
												Ext.Ajax.request({
19589
													async: false,
19590
													method: 'POST',
19591
													url: '/UserControl/GetStore',
19592
													params: {
19593
														tableName: 'PCMFUNC',
19594
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19595
													},
19596
													success: function (response) {
19597
														var results = Ext.decode(response.responseText);
19598
														var dt = results.data[0];
19599
														if (dt != undefined) {
19600
															custumFunc = dt.FunctionCode;
19601
														}
19602
													}
19603
												});
19604
											}
19605
											if (custumFunc) {
19606
												eval(custumFunc)
19607
											}
19608
										}
19609
									}
19610
									//
19611
                                    },
19612
                                    renderer: function (value) {
19613
                                        var val = "";
19614
                                        var storeData = [];
19615
                                        var str = rec.FixedValue;
19616
                                        var hasil = str.split('||');
19617
                                        hasil.forEach(function (h) {
19618
                                            store_ = h.split('=')
19619
                                            storeData.push({
19620
                                                code: store_[0],
19621
                                                desc: store_[1]
19622
                                            });
19623
                                        });
19624
                                        var item = storeData.find(x => x.code == value);
19625
                                        if (item != undefined) {
19626
                                            val = item.desc;
19627
                                        }
19628
                                        return val;
19629
                                    }
19630
                                });
19631
                            } else if (rec.FieldDataType == 3) {
19632
                                cols.push({
19633
                                    text: rec.HeaderTitle,
19634
                                    hidden: Hidden_,
19635
                                    dataIndex: rec.FieldName,
19636
									isSummary:isSum,
19637
                                    filter: {
19638
                                        itemDefaults: {
19639
                                            emptyText: 'Search for...'
19640
                                        }
19641
                                    },
19642
								autoSizeColumn: true,
19643
								width: 200,
19644
                                    editor: {
19645
                                        allowBlank: null_,
19646
                                        xtype: 'textfield',
19647
                                        readOnly: ReadOnly_,
19648
                                        id: tableName + rec.FieldName,
19649
                                        nameTable: rec.TableName,
19650
                                        fieldGrid: rec.FieldName,
19651
                                        vtype: 'validateDecimal',
19652
                                        maxLength: rec.Length,
19653
                                        precision: rec.Prec,
19654
                                        fieldStyle: 'text-align:right;',
19655
                                        value: defaultValue,
19656
                                        listeners: {
19657
                                            change: function (val) {
19658
                                                var custumFunc = rec.SelectFunction;
19659
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19660
                                                    Ext.Ajax.request({
19661
                                                        async: false,
19662
                                                        method: 'POST',
19663
                                                        url: '/UserControl/GetStore',
19664
                                                        params: {
19665
                                                            tableName: 'PCMFUNC',
19666
                                                            param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19667
                                                        },
19668
                                                        success: function (response) {
19669
                                                            var results = Ext.decode(response.responseText);
19670
                                                            var dt = results.data[0];
19671
                                                            if (dt != undefined) {
19672
                                                                custumFunc = dt.FunctionCode;
19673
                                                            }
19674
                                                        }
19675
                                                    });
19676
                                                }
19677
                                                if (custumFunc) {
19678
                                                    eval(custumFunc)
19679
                                                }
19680
                                            }
19681
                                        }
19682
                                    }
19683
                                });
19684
                            } else {
19685
                                cols.push({
19686
                                    text: rec.HeaderTitle,
19687
                                    hidden: Hidden_,
19688
                                    dataIndex: rec.FieldName,
19689
									// isSummary: isSum,
19690
                                    filter: {
19691
                                        itemDefaults: {
19692
                                            emptyText: 'Search for...'
19693
                                        }
19694
                                    },
19695
								autoSizeColumn: true,
19696
								width: 200,
19697
								minWidth: 150,
19698
                                    editor: {
19699
                                        allowBlank: null_,
19700
                                        xtype: 'textfield',
19701
                                        readOnly: ReadOnly_,
19702
                                        id: tableName + rec.FieldName,
19703
                                        value: defaultValue,
19704
                                        listeners: {
19705
                                            change: function (val) {
19706
                                                var custumFunc = rec.SelectFunction;
19707
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19708
                                                    Ext.Ajax.request({
19709
                                                        async: false,
19710
                                                        method: 'POST',
19711
                                                        url: '/UserControl/GetStore',
19712
                                                        params: {
19713
                                                            tableName: 'PCMFUNC',
19714
                                                            param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19715
                                                        },
19716
                                                        success: function (response) {
19717
                                                            var results = Ext.decode(response.responseText);
19718
                                                            data_ = results.data[0];
19719
                                                            if (data_ != undefined) {
19720
                                                                custumFunc = data_.FunctionCode;
19721
                                                            }
19722
                                                        }
19723
                                                    });
19724
                                                }
19725
                                                if (custumFunc) {
19726
                                                    eval(custumFunc)
19727
                                                }
19728
                                            }
19729
                                        }
19730
                                    }
19731
                                });
19732
                            }
19733
                            break
19734
                    }
19735
                } else {
19736
                    cols.push({
19737
                        text: rec.HeaderTitle,
19738
                        hidden: Hidden_,
19739
                        dataIndex: rec.FieldName,
19740
                        hidden: true,
19741
                        editor: {
19742
                            allowBlank: true,
19743
                            xtype: 'textfield',
19744
                            readOnly: ReadOnly_,
19745
                            id: tableName + rec.FieldName,
19746
                            value: defaultValue
19747
                        },
19748
                        filter: {
19749
                            itemDefaults: {
19750
                                emptyText: 'Search for...'
19751
                            }
19752
                        }
19753
                    });
19754
                }
19755
            });
19756
        };
19757
        addData = addData + "})";
19758
        this.cellEditing = new Ext.grid.plugin.CellEditing({
19759
            clicksToEdit: 1
19760
        });
19761
        Ext.applyIf(me, {
19762
            items: [{
19763
                xtype: 'grid',
19764
                autoScroll: true,
19765
                id: gridName,
19766
                name: gridName,
19767
                height: height,
19768
                store: Ext.create('Ext.data.Store', {
19769
                    storeId: storeID,
19770
                    fields: fieldStore,
19771
                    proxy: {
19772
                        method: 'POST',
19773
                        type: 'ajax',
19774
                        url: '',
19775
                        reader: {
19776
                            type: 'json',
19777
                            root: 'data'
19778
                        }
19779
                    }
19780
                }),
19781
                dockedItems: [{
19782
                    xtype: 'toolbar',
19783
                    items: [{
19784
                        text: 'Add',
19785
                        name: 'add' + tableName,
19786
                        iconCls: 'fa-plus-circle',
19787
                        style: 'font-family: FontAwesome',
19788
                        handler: function () {
19789
                            var store = Ext.StoreMgr.lookup(storeID);
19790
                            var data = eval(addData);
19791
                            if (me.transType == "FIN") {
19792
                                var fp = Ext.ComponentQuery.query("[name=FiscalPeriod]")[0].getValue();
19793
                                var fy = Ext.ComponentQuery.query("[name=FiscalYear]")[0].getValue();
19794
                                var cp = Ext.ComponentQuery.query("[name=CompanyID]")[0].getValue();
19795
                                var bu = Ext.ComponentQuery.query("[name=BusinessUnit]")[0].getValue();
19796
                                data["FiscalPeriod"] = fp;
19797
                                data["FiscalYear"] = fy;
19798
                                data["CompanyID"] = cp;
19799
                                data["BusinessUnit"] = bu;
19800
                            }
19801
                            idx = store.getCount();
19802
                            store.insert(idx, data);
19803
                        }
19804
                    }, {
19805
                        text: 'Delete',
19806
                        name: 'delete' + tableName,
19807
                        iconCls: 'fa-trash-o',
19808
                        style: 'font-family: FontAwesome',
19809
                        handler: function () {
19810
                            var me = this,
19811
                            store = Ext.StoreMgr.lookup(storeID);
19812
                            var grid = Ext.getCmp(gridName);
19813
                            Ext.MessageBox.show({
19814
                                title: 'Remove tab',
19815
                                msg: "This will remove. Do you want to continue?",
19816
                                buttons: Ext.MessageBox.YESNO,
19817
                                fn: function (choice) {
19818
                                    console.log(choice);
19819
                                    if (choice === 'yes') {
19820
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
19821
                                        if (selection) {
19822
                                            store.remove(selection);
19823
                                        }
19824
                                    }
19825
                                }
19826
                            });
19827
                        }
19828
                    }
19829
					,{ //// add by Tri nwh 20211119
19830
                        text: 'Check Stock',
19831
						hidden: hideCheckStock,
19832
                        name: 'checkStock' + tableName,
19833
                        //iconCls: 'fa-trash-o',
19834
                        style: 'font-family: FontAwesome',
19835
                        handler: function () { //add by Tri nwh 20220829
19836
							var getPnl = Ext.ComponentQuery.query('[name=panelTabPTRSALESITEMS]')[0];
19837
							var getTbl = getPnl.query('[name=gridCELLGRIDPTRSALESITEMS]')[0];
19838
							var recC = getTbl.store.getNewRecords(); console.log(recC);
19839
							var obj = [];
19840
							for (var i = 0; i < recC.length; i++) {
19841
								var temp = [];
19842
								temp.push(recC[i]);
19843
								Ext.each(temp, function (rec) {
19844
									var x = Ext.decode(Ext.encode(rec.data));
19845
									obj.push(x);
19846
								});
19847
							}
19848
							var __param = Ext.encode(obj);
19849
							store = Ext.StoreMgr.lookup(storeID);
19850
							var afterCheck = store.getNewRecords();
19851
							if (afterCheck.length != '0') {
19852
								store.remove(afterCheck);
19853
							}
19854
							idx = store.getCount();
19855
							var _data = '';
19856
							Ext.Ajax.request({
19857
								async: false,
19858
								method: 'POST',
19859
								url: '/UserControl/GetStore',
19860
								params: {
19861
									tableName: 'PDSTRALLOCATION',
19862
									param: __param
19863
								},
19864
								success: function (response) {
19865
									var results = Ext.decode(response.responseText);
19866
									_data = results.data;
19867
								}
19868
							});
19869
							store.insert(idx, _data);
19870
						}
19871
                    }
19872
                    ]
19873
                }
19874
                ],
19875
                columns: cols,
19876
                selModel: {
19877
                    type: 'cellmodel'
19878
                },
19879
                plugins: [this.cellEditing],
19880
                //For Auto Size Coloum Mode - Nana
19881
                viewConfig: {
19882
                    emptyText: 'No Data Display',
19883
                    deferEmptyText: false,
19884
                    listeners: {
19885
                        refresh: function (dataview) {
19886
                            Ext.each(dataview.panel.columns, function (column) {
19887
                                if (column.autoSizeColumn == false)
19888
                                    column.autoSizeColumn = true;
19889
                                column.autoSize();
19890
                            })
19891
                        }
19892
                    }
19893
                },listeners: {
19894
					'beforeedit': function (editor, e, eOpts) {
19895
						if (e.colIdx == 2 && tableName == 'PTRMATERIALITEM') {
19896
							var store = Ext.StoreMgr.lookup('store_' + tableName + 'MaterialID');
19897
							var itemType = e.record.get('ItemType');
19898
							console.log(itemType);
19899
							if (itemType == '0') {
19900
								store.proxy.extraParams = {
19901
									tableName: 'PDSTRANSITEMS',
19902
									param: "TableName[=]PMDMAT0001",
19903
									menuId: MinovaUtil.GetMenuID()
19904
								};
19905
							} else if (itemType == '1') {
19906
								store.proxy.extraParams = {
19907
									tableName: 'PDSTRANSITEMS',
19908
									param: "TableName[=]PMDSRV0001",
19909
									menuId: MinovaUtil.GetMenuID()
19910
								};
19911
							} else if (itemType == '2') {
19912
								store.proxy.extraParams = {
19913
									tableName: 'PDSTRANSITEMS',
19914
									param: "TableName[=]PMDAST0001",
19915
									menuId: MinovaUtil.GetMenuID()
19916
								};
19917
							} else if (itemType == 'Material') {
19918
								store.proxy.extraParams = {
19919
									tableName: 'PDSTRANSITEMS',
19920
									param: "TableName[=]PMDMAT0001",
19921
									menuId: MinovaUtil.GetMenuID()
19922
								};
19923
							} else {
19924
								store.proxy.extraParams = {
19925
									tableName: '',
19926
									param: "",
19927
									menuId: MinovaUtil.GetMenuID()
19928
								};
19929
							}
19930
							store.removeAll();
19931
							store.reload();
19932
						}
19933
					}
19934
					}
19935
            }
19936
            ]
19937
        });
19938
        me.callParent(arguments);
19939
    }
19940
});
19941
/*Add by Taufan ( Generate Doc Transaction Cell Edit Grid Sum For ERP )*/
19942
Ext.define('MinovaUtil.MinovaES.MinovaDocGridCellEditSum', {
19943
	extend: 'Ext.form.Panel',
19944
	alias: 'widget.docgridcelleditsum',
19945
	requires: [
19946
		'Ext.grid.plugin.CellEditing',
19947
		'Ext.grid.Panel',
19948
		'Ext.grid.RowNumberer'
19949
	],
19950
	autoScroll: true,
19951
	anchor: '100%',
19952
	tableName: undefined,
19953
	docType: undefined,
19954
	transType: undefined,
19955
	docNo: undefined,
19956
	hideButton: undefined,
19957
	multiSelect: undefined,
19958
	initComponent: function () {
19959
		var me = this;
19960
		var isLookup = me.isLookup;
19961
		var hide_ = false;
19962
		var hideUploadDownload = false;
19963
		var widthLock = 250;
19964
		var checkSelection = '';
19965
		
19966
		Ext.Ajax.request({
19967
			async: false,
19968
			method: 'POST',
19969
			url: '/UserControl/GetStore',
19970
			params: {
19971
				tableName: "PCMBSTRANSLIST",
19972
				param: 'TableName[=]' + me.tableName
19973
			},
19974
			success: function (response) {
19975
				var results = Ext.decode(response.responseText);
19976
				if (results.data[0].UploadDownloadEnable == '0') {
19977
					hideUploadDownload = true;
19978
				} else {
19979
					hideUploadDownload = false;
19980
				}
19981
			}
19982
		});
19983

    
19984
		if (me.hideButton == true) {
19985
			hide_ = true;
19986
		}
19987
		if (me.multiSelect) {
19988
			locking = false;
19989
			checkSelection = 'checkboxmodel';
19990
			widthLock = 40;
19991
		}
19992
		var tableName = me.tableName;
19993
		var cols = [];
19994
		var fieldStore = [];
19995
		var _url = 'GetAllField';
19996
		var hasil = null;
19997
		var height = me.height;
19998
		var storeID = 'store' + me.tableName;
19999
		var gridName = 'grid' + me.name;
20000
		if (me.storeName) {
20001
			storeID = me.storeName;
20002
		}
20003
		var LangID = MinovaUtil.GetLangID();
20004
		var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',DocType='" + me.docType + "'";
20005
		Ext.Ajax.request({
20006
			async: false,
20007
			method: 'POST',
20008
			url: '/UserControl/GetStore',
20009
			params: {
20010
				tableName: 'PDSDOCFIELD',
20011
				param: parameter
20012
			},
20013
			success: function (response) {
20014
				var results = Ext.decode(response.responseText);
20015
				hasil = results.data;
20016
			}
20017
		});
20018
		cols.push({
20019
			xtype: 'rownumberer'
20020
		});
20021
		var addData = '({';
20022
		if (hasil.length > 0) {
20023
			Ext.each(hasil, function (rec) {
20024
				fieldStore.push(rec.FieldName);
20025
				var defaultValue = rec.DefaultValue;
20026
				if (defaultValue.substring(0, 2).toLowerCase() == 'fn') {
20027
					Ext.Ajax.request({
20028
						async: false,
20029
						method: 'POST',
20030
						url: '/UserControl/GetStore',
20031
						params: {
20032
							tableName: 'PCMFUNC',
20033
							param: 'FuncName[equal]' + rec.DefaultValue
20034
						},
20035
						success: function (response) {
20036
							var results = Ext.decode(response.responseText);
20037
							data_ = results.data;
20038
							if (data_.length > 0) {
20039
								defaultValue = eval(data_[0].FunctionCode);
20040
							}
20041
						}
20042
					});
20043
				}
20044
				addData = addData + rec.FieldName + ":" + "'" + defaultValue + "',";
20045
				var null_ = null;
20046
				var ReadOnly_ = false;
20047
				if (rec.IsPrimaryKey == true) {
20048
					null_ = false;
20049
				}
20050
				if (rec.IsRequired == true) {
20051
					null_ = false;
20052
				} else {
20053
					null_ = true;
20054
				}
20055
				var Hidden_ = false;
20056
				if (rec.ReadOnly == '1') {
20057
					ReadOnly_ = true;
20058
				}
20059
				if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
20060
					Hidden_ = true;
20061
					null_ = true;
20062
				}
20063
				var isSum = rec.IsSummary;
20064
				if (rec.GridView == 1) {
20065
					switch (rec.FormatRef) {
20066
					case "date":
20067
						cols.push({
20068
							xtype: 'minovadatecolumn',
20069
							hidden: Hidden_,
20070
							text: rec.HeaderTitle,
20071
							dataIndex: rec.FieldName,
20072
							filter: {
20073
								itemDefaults: {
20074
									emptyText: 'Search for...'
20075
								}
20076
							},
20077
							isSummary: isSum,
20078
							editor: {
20079
								allowBlank: null_,
20080
								xtype: 'datefield',
20081
								hideMode: 'visibility',
20082
								readOnly: ReadOnly_,
20083
								id: tableName + rec.FieldName,
20084
								value: defaultValue
20085
							}
20086
						});
20087
						break
20088
					case "amount":
20089
						cols.push({
20090
							xtype: 'numbercolumn',
20091
							text: rec.HeaderTitle,
20092
							align: 'right',
20093
							dataIndex: rec.FieldName,
20094
							isSummary: isSum,
20095
							hidden: Hidden_,
20096
							filter: {
20097
								itemDefaults: {
20098
									emptyText: 'Search for...'
20099
								}
20100
							},						
20101
							autoSizeColumn: false,
20102
							width: 140,
20103
							editor: {
20104
								allowBlank: null_,
20105
								xtype: 'textfield',
20106
								readOnly: ReadOnly_,
20107
								id: tableName + rec.FieldName,
20108
								nameTable: rec.TableName,
20109
								fieldGrid: rec.FieldName,
20110
								fieldStyle: 'text-align:right;',
20111
								vtype: 'validateMinovaNumber',
20112
								value: '0',
20113
								listeners: {
20114
									change: function (val, recs) {
20115
										var fvalue = val.getValue();
20116
										var custumFunc = rec.SelectFunction;
20117
										if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
20118
											Ext.Ajax.request({
20119
												async: false,
20120
												method: 'POST',
20121
												url: '/UserControl/GetStore',
20122
												params: {
20123
													tableName: 'PCMFUNC',
20124
													param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
20125
												},
20126
												success: function (response) {
20127
													var results = Ext.decode(response.responseText);
20128
													var dt = results.data[0];
20129
													if (dt != undefined) {
20130
														custumFunc = dt.FunctionCode;
20131
													}
20132
												}
20133
											});
20134
										}
20135
										if (custumFunc) {
20136
											eval(custumFunc)
20137
										}
20138
									}
20139
								}
20140
							}
20141
						});
20142
						break
20143
					default:
20144
						if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
20145
							cols.push({
20146
								text: rec.HeaderTitle,
20147
								dataIndex: rec.FieldName,
20148
								width: 100,
20149
								isSummary: isSum,
20150
								filter: {
20151
									type: 'string',
20152
									itemDefaults: {
20153
										emptyText: 'Search for...'
20154
									}
20155
								}
20156
							});
20157
						} else if (rec.SearchType == '0') {
20158
							var valueField = null;
20159
							var displayValue = null;
20160
							var TableRef = undefined;
20161
							if (rec.TableRef != '') {
20162
								TableRef = rec.TableRef;
20163
								Ext.Ajax.request({
20164
									async: false,
20165
									method: 'POST',
20166
									url: '/UserControl/GetStore',
20167
									params: {
20168
										tableName: 'SDATATABLEFIELD',
20169
										param: 'TableName[equal]' + rec.TableRef
20170
									},
20171
									success: function (response) {
20172
										var results = Ext.decode(response.responseText);
20173
										data_ = results.data;
20174
										if (data_ != undefined) {
20175
											valueField_ = $.grep(data_, function (r) {
20176
													return r.ValueField == '1'
20177
												});
20178
											valueField = valueField_[0].FieldName
20179
												displayValue_ = $.grep(data_, function (r) {
20180
													return r.DisplayValue == '1'
20181
												});
20182
											displayValue = displayValue_[0].FieldName
20183
										}
20184
									}
20185
								});
20186
							}
20187
							Ext.create('Ext.data.Store', {
20188
								storeId: 'store_' + me.tableName + rec.FieldName,
20189
								autoLoad: true,
20190
								proxy: {
20191
									method: 'POST',
20192
									type: 'ajax',
20193
									url: '/UserControl/GetStoreAuth',
20194
									extraParams: {
20195
										tableName: TableRef,
20196
										param: rec.ParamCombo,
20197
										menuId: MinovaUtil.GetMenuID()
20198
									},
20199
									reader: {
20200
										type: 'json',
20201
										root: 'data',
20202
										totalProperty: 'data[0].TotalCount'
20203
									}
20204
								}
20205
							});
20206
							cols.push({
20207
								xtype: 'minovacombocolumn',
20208
								hidden: Hidden_,
20209
								text: rec.HeaderTitle,
20210
								dataIndex: rec.FieldName,
20211
								valueField: valueField,
20212
								displayField: displayValue,
20213
								store: 'store_' + me.tableName + rec.FieldName,
20214
								isSummary: isSum,
20215
								autoSizeColumn: true,
20216
								width: 200,
20217
								minWidth: 150,
20218
								editor: {
20219
									allowBlank: null_,
20220
									xtype: 'minovacombobox',
20221
									readOnly: ReadOnly_,
20222
									id: tableName + rec.FieldName,
20223
									valueField: valueField,
20224
									displayField: displayValue,
20225
									store: 'store_' + me.tableName + rec.FieldName,
20226
									forceSelection: false,
20227
									lazyRender: true,
20228
									listeners: {
20229
										change: function (val) {
20230
											var fvalue = val.getValue();
20231
											var custumFunc = rec.SelectFunction;
20232
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
20233
												Ext.Ajax.request({
20234
													async: false,
20235
													method: 'POST',
20236
													url: '/UserControl/GetStore',
20237
													params: {
20238
														tableName: 'PCMFUNC',
20239
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
20240
													},
20241
													success: function (response) {
20242
														var results = Ext.decode(response.responseText);
20243
														var dt = results.data[0];
20244
														if (dt != undefined) {
20245
															custumFunc = dt.FunctionCode;
20246
														}
20247
													}
20248
												});
20249
											}
20250
											if (custumFunc) {
20251
												eval(custumFunc)
20252
											}
20253
										}
20254
									}
20255
								},
20256
								filter: {
20257
									type: 'list',
20258
									itemDefaults: {
20259
										emptyText: 'Search for...'
20260
									}
20261
								}
20262
							});
20263
						} else if (rec.SearchType == '5') {
20264
							var valueField = null;
20265
							var displayValue = null;
20266
							var AdditionaldisplayValue = null;
20267
							var TableRef = undefined;
20268
							if (rec.TableRef != '') {
20269
								TableRef = rec.TableRef;
20270
								Ext.Ajax.request({
20271
									async: false,
20272
									method: 'POST',
20273
									url: '/UserControl/GetStore',
20274
									params: {
20275
										tableName: 'SDATATABLEFIELD',
20276
										param: 'TableName[equal]' + rec.TableRef
20277
									},
20278
									success: function (response) {
20279
										var results = Ext.decode(response.responseText);
20280
										data_ = results.data;
20281
										if (data_ != undefined) {
20282
											valueField_ = $.grep(data_, function (r) {
20283
													return r.ValueField == '1'
20284
												});
20285
											if (valueField_.length > 0) {
20286
												valueField = valueField_[0].FieldName
20287
											}
20288

    
20289
											displayValue_ = $.grep(data_, function (r) {
20290
													return r.DisplayValue == '1' || r.DisplayValue == '2'
20291
												});
20292
											if (displayValue_.length > 0) {
20293
												displayValue = displayValue_[0].FieldName;
20294
											}
20295
											if (displayValue_.length >= 2) {
20296
												AdditionaldisplayValue = displayValue_[1].FieldName
20297
											}
20298
										}
20299
									}
20300
								});
20301
							}
20302
							Ext.create('Ext.data.Store', {
20303
								storeId: 'store_' + me.tableName + rec.FieldName,
20304
								autoLoad: true,
20305
								proxy: {
20306
									method: 'POST',
20307
									type: 'ajax',
20308
									url: '/UserControl/GetStoreAuth',
20309
									extraParams: {
20310
										tableName: TableRef,
20311
										param: rec.ParamCombo,
20312
										menuId: MinovaUtil.GetMenuID()
20313
									},
20314
									reader: {
20315
										type: 'json',
20316
										root: 'data',
20317
										totalProperty: 'data[0].TotalCount'
20318
									}
20319
								}
20320
							});
20321
							cols.push({
20322
								xtype: 'minovacombocolumn',
20323
								hidden: Hidden_,
20324
								text: rec.HeaderTitle,
20325
								dataIndex: rec.FieldName,
20326
								valueField: valueField,
20327
								displayField: displayValue,
20328
								store: 'store_' + me.tableName + rec.FieldName,
20329
								tpl: Ext.create('Ext.XTemplate',
20330
									'<ul class="x-list-plain"><tpl for=".">',
20331
									'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
20332
									'</tpl></ul>'),
20333
								displayTpl: Ext.create('Ext.XTemplate',
20334
									'<tpl for=".">',
20335
									'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
20336
									'</tpl>'),
20337
								editor: {
20338
									allowBlank: null_,
20339
									xtype: 'combobox',
20340
									readOnly: ReadOnly_,
20341
									id: rec.TableName + rec.FieldName,
20342
									nameTable: rec.TableName,
20343
									fieldGrid: rec.FieldName,
20344
									valueField: valueField,
20345
									displayField: displayValue,
20346
									store: 'store_' + me.tableName + rec.FieldName,
20347
									value: rec.DefaultValue,
20348
									tpl: Ext.create('Ext.XTemplate',
20349
										'<ul class="x-list-plain"><tpl for=".">',
20350
										'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
20351
										'</tpl></ul>'),
20352
									displayTpl: Ext.create('Ext.XTemplate',
20353
										'<tpl for=".">',
20354
										'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
20355
										'</tpl>'),
20356
										listeners: {
20357
										change: function (val) {
20358
											var fvalue = val.getValue();
20359
											var custumFunc = rec.SelectFunction;
20360
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
20361
												Ext.Ajax.request({
20362
													async: false,
20363
													method: 'POST',
20364
													url: '/UserControl/GetStore',
20365
													params: {
20366
														tableName: 'PCMFUNC',
20367
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
20368
													},
20369
													success: function (response) {
20370
														var results = Ext.decode(response.responseText);
20371
														var dt = results.data[0];
20372
														if (dt != undefined) {
20373
															custumFunc = dt.FunctionCode;
20374
														}
20375
													}
20376
												});
20377
											}
20378
											if (custumFunc) {
20379
												eval(custumFunc)
20380
											}
20381
										}
20382
									}
20383

    
20384
								},
20385
								renderer: function (value) {
20386
									var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
20387
									console.log(store);
20388
									var index = store.find(valueField, value);
20389
									var val = "";
20390
									if (index != -1) {
20391
										var rc = store.getAt(index);
20392
										val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
20393
									} else {
20394
										val = value;
20395
									}
20396
									return val;
20397
								},
20398
								filter: {
20399
									type: 'list',
20400
									itemDefaults: {
20401
										emptyText: 'Search for...'
20402
									}
20403
								},
20404
								tpl: Ext.create('Ext.XTemplate',
20405
									'<ul class="x-list-plain"><tpl for=".">',
20406
									'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
20407
									'</tpl></ul>'),
20408
								displayTpl: Ext.create('Ext.XTemplate',
20409
									'<tpl for=".">',
20410
									'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
20411
									'</tpl>')
20412
							});
20413
						} else if (rec.SearchType == '2') {
20414
							var triger = (rec.TriggerCombo).split('$');
20415
							var targetField_ = triger[0];
20416
							var fieldValue_ = triger[1];
20417
							cols.push({
20418
								text: rec.HeaderTitle,
20419
								hidden: Hidden_,
20420
								dataIndex: rec.FieldName,
20421
								isSummary: isSum,
20422
								filter: {
20423
									itemDefaults: {
20424
										emptyText: 'Search for...'
20425
									}
20426
								},
20427
								autoSizeColumn: true,
20428
								width: 200,
20429
								editor: {
20430
									allowBlank: null_,
20431
									xtype: 'minovalookupgrid',
20432
									readOnly: ReadOnly_,
20433
									isGrid: true,
20434
									fieldTarget: targetField_,
20435
									fieldValue: fieldValue_,
20436
									isGrid: true,
20437
									id: tableName + rec.FieldName,
20438
									tableName: rec.TableRef,
20439
									triggerCls: 'x-form-search-trigger',
20440
									vtype: 'alphanum',
20441
									listeners: {
20442
										change: function (val) {
20443
											var custumFunc = rec.SelectFunction;
20444
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
20445
												Ext.Ajax.request({
20446
													async: false,
20447
													method: 'POST',
20448
													url: '/UserControl/GetStore',
20449
													params: {
20450
														tableName: 'PCMFUNC',
20451
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
20452
													},
20453
													success: function (response) {
20454
														var results = Ext.decode(response.responseText);
20455
														var dt = results.data[0];
20456
														if (dt != undefined) {
20457
															custumFunc = dt.FunctionCode;
20458
														}
20459
													}
20460
												});
20461
											}
20462
											if (custumFunc) {
20463
												eval(custumFunc)
20464
											}
20465
										}
20466
									}
20467
								}
20468
							});
20469
						} else if (rec.SearchType == '3') {
20470
							cols.push({
20471
								text: rec.HeaderTitle,
20472
								hidden: Hidden_,
20473
								dataIndex: rec.FieldName,
20474
								isSummary: isSum,
20475
								filter: {
20476
									itemDefaults: {
20477
										emptyText: 'Search for...'
20478
									}
20479
								},
20480
								autoSizeColumn: true,
20481
								width: 200,
20482
								editor: {
20483
									allowBlank: null_,
20484
									xtype: 'MinovaLookupTree',
20485
									readOnly: ReadOnly_,
20486
									id: tableName + rec.FieldName,
20487
									tableName: rec.TableRef,
20488
									triggerCls: 'x-form-search-trigger',
20489
									vtype: 'alphanum',
20490
									treeSructure: rec.SearchFunction,
20491
									objClassValue: rec.ParamCombo,
20492
									listeners: {
20493
										change: function (val) {
20494
											var custumFunc = rec.SelectFunction;
20495
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
20496
												Ext.Ajax.request({
20497
													async: false,
20498
													method: 'POST',
20499
													url: '/UserControl/GetStore',
20500
													params: {
20501
														tableName: 'PCMFUNC',
20502
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
20503
													},
20504
													success: function (response) {
20505
														var results = Ext.decode(response.responseText);
20506
														var dt = results.data[0];
20507
														if (dt != undefined) {
20508
															custumFunc = dt.FunctionCode;
20509
														}
20510
													}
20511
												});
20512
											}
20513
											if (custumFunc) {
20514
												eval(custumFunc)
20515
											}
20516
										}
20517
									}
20518
								}
20519
							});
20520
						} 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) {
20521
							var triger = (rec.TriggerCombo).split('&');
20522
							var targetField_ = triger[0];
20523
							var fieldValue_ = triger[0];
20524
							cols.push({
20525
								text: rec.HeaderTitle,
20526
								hidden: Hidden_,
20527
								dataIndex: rec.FieldName,
20528
								isSummary: isSum,
20529
								filter: {
20530
									itemDefaults: {
20531
										emptyText: 'Search for...'
20532
									}
20533
								},
20534
								autoSizeColumn: true,
20535
								width: 200,
20536
								editor: {
20537
									allowBlank: null_,
20538
									xtype: 'lookupemployee',
20539
									readOnly: ReadOnly_,
20540
									isGrid: true,
20541
									fieldTarget: targetField_,
20542
									fieldValue: fieldValue_,
20543
									isGrid: true,
20544
									id: tableName + rec.FieldName,
20545
									tableName: rec.TableRef,
20546
									triggerCls: 'x-form-search-trigger',
20547
									vtype: 'alphanum',
20548
									listeners: {
20549
										change: function (val) {
20550
											var custumFunc = rec.SelectFunction;
20551
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
20552
												Ext.Ajax.request({
20553
													async: false,
20554
													method: 'POST',
20555
													url: '/UserControl/GetStore',
20556
													params: {
20557
														tableName: 'PCMFUNC',
20558
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
20559
													},
20560
													success: function (response) {
20561
														var results = Ext.decode(response.responseText);
20562
														var dt = results.data[0];
20563
														if (dt != undefined) {
20564
															custumFunc = dt.FunctionCode;
20565
														}
20566
													}
20567
												});
20568
											}
20569
											if (custumFunc) {
20570
												eval(custumFunc)
20571
											}
20572
										}
20573
									}
20574
								}
20575
							});
20576
						} else if (rec.SearchType == '4' && isLookup != true) {
20577
							cols.push({
20578
								text: rec.HeaderTitle,
20579
								hidden: Hidden_,
20580
								dataIndex: rec.FieldName,
20581
								isSummary: isSum,
20582
								filter: {
20583
									itemDefaults: {
20584
										emptyText: 'Search for...'
20585
									}
20586
								},
20587
								autoSizeColumn: true,
20588
								width: 200,
20589
								editor: {
20590
									allowBlank: null_,
20591
									xtype: 'lookupemployee',
20592
									readOnly: ReadOnly_,
20593
									isGrid: true,
20594
									fieldTarget: targetField_,
20595
									fieldValue: fieldValue_,
20596
									isGrid: true,
20597
									id: tableName + rec.FieldName,
20598
									tableName: rec.TableRef,
20599
									triggerCls: 'x-form-search-trigger',
20600
									vtype: 'alphanum',
20601
									listeners: {
20602
										change: function (val) {
20603
											var custumFunc = rec.SelectFunction;
20604
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
20605
												Ext.Ajax.request({
20606
													async: false,
20607
													method: 'POST',
20608
													url: '/UserControl/GetStore',
20609
													params: {
20610
														tableName: 'PCMFUNC',
20611
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
20612
													},
20613
													success: function (response) {
20614
														var results = Ext.decode(response.responseText);
20615
														var dt = results.data[0];
20616
														if (dt != undefined) {
20617
															custumFunc = dt.FunctionCode;
20618
														}
20619
													}
20620
												});
20621
											}
20622
											if (custumFunc) {
20623
												eval(custumFunc)
20624
											}
20625
										}
20626
									}
20627
								}
20628
							});
20629
						} else if (rec.FixedValue != '') {
20630
							cols.push({
20631
								text: rec.HeaderTitle,
20632
								hidden: Hidden_,
20633
								dataIndex: rec.FieldName,
20634
								isSummary: isSum,
20635
								filter: {
20636
									itemDefaults: {
20637
										emptyText: 'Search for...'
20638
									}
20639
								},
20640
								autoSizeColumn: true,
20641
								width: 200,
20642
								editor: {
20643
									allowBlank: null_,
20644
									xtype: 'minovafixvalue',
20645
									readOnly: ReadOnly_,
20646
									forceSelection: false,
20647
									id: tableName + rec.FieldName,
20648
									nameTable: tableName,
20649
									fieldGrid: rec.FieldName,
20650
									fixedValue: rec.FixedValue,
20651
									valueField: 'code',
20652
									displayField: 'desc',
20653
									value: defaultValue,
20654
									/*Add by Midi 12 Juni 2019*/
20655
									listeners: {
20656
										change: function (val) {
20657
											var custumFunc = rec.SelectFunction;
20658
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
20659
												Ext.Ajax.request({
20660
													async: false,
20661
													method: 'POST',
20662
													url: '/UserControl/GetStore',
20663
													params: {
20664
														tableName: 'PCMFUNC',
20665
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
20666
													},
20667
													success: function (response) {
20668
														var results = Ext.decode(response.responseText);
20669
														var dt = results.data[0];
20670
														if (dt != undefined) {
20671
															custumFunc = dt.FunctionCode;
20672
														}
20673
													}
20674
												});
20675
											}
20676
											if (custumFunc) {
20677
												eval(custumFunc)
20678
											}
20679
										}
20680
									}
20681
									//
20682
								},
20683
								renderer: function (value) {
20684
									var val = "";
20685
									var storeData = [];
20686
									var str = rec.FixedValue;
20687
									var hasil = str.split('||');
20688
									hasil.forEach(function (h) {
20689
										store_ = h.split('=')
20690
											storeData.push({
20691
												code: store_[0],
20692
												desc: store_[1]
20693
											});
20694
									});
20695
									var item = storeData.find(x => x.code == value);
20696
									if (item != undefined) {
20697
										val = item.desc;
20698
									}
20699
									return val;
20700
								}
20701
							});
20702
						} else if (rec.FieldDataType == 3) {
20703
							cols.push({
20704
								text: rec.HeaderTitle,
20705
								hidden: Hidden_,
20706
								dataIndex: rec.FieldName,
20707
								isSummary: isSum,
20708
								filter: {
20709
									itemDefaults: {
20710
										emptyText: 'Search for...'
20711
									}
20712
								},
20713
								autoSizeColumn: true,
20714
								width: 200,
20715
								editor: {
20716
									allowBlank: null_,
20717
									xtype: 'textfield',
20718
									readOnly: ReadOnly_,
20719
									id: tableName + rec.FieldName,
20720
									nameTable: rec.TableName,
20721
									fieldGrid: rec.FieldName,
20722
									vtype: 'validateDecimal',
20723
									maxLength: rec.Length,
20724
									precision: rec.Prec,
20725
									fieldStyle: 'text-align:right;',
20726
									value: defaultValue,
20727
									listeners: {
20728
										change: function (val) {
20729
											var custumFunc = rec.SelectFunction;
20730
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
20731
												Ext.Ajax.request({
20732
													async: false,
20733
													method: 'POST',
20734
													url: '/UserControl/GetStore',
20735
													params: {
20736
														tableName: 'PCMFUNC',
20737
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
20738
													},
20739
													success: function (response) {
20740
														var results = Ext.decode(response.responseText);
20741
														var dt = results.data[0];
20742
														if (dt != undefined) {
20743
															custumFunc = dt.FunctionCode;
20744
														}
20745
													}
20746
												});
20747
											}
20748
											if (custumFunc) {
20749
												eval(custumFunc)
20750
											}
20751
										}
20752
									}
20753
								}
20754
							});
20755
						} else {
20756
							cols.push({
20757
								text: rec.HeaderTitle,
20758
								hidden: Hidden_,
20759
								dataIndex: rec.FieldName,
20760
								isSummary: isSum,
20761
								filter: {
20762
									itemDefaults: {
20763
										emptyText: 'Search for...'
20764
									}
20765
								},
20766
								autoSizeColumn: true,
20767
								width: 200,
20768
								editor: {
20769
									allowBlank: null_,
20770
									xtype: 'textfield',
20771
									readOnly: ReadOnly_,
20772
									id: tableName + rec.FieldName,
20773
									value: defaultValue,
20774
									vtype: 'validateMinovaXss', //// Tri 20210906
20775
									listeners: {
20776
										change: function (val) {
20777
											var custumFunc = rec.SelectFunction;
20778
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
20779
												Ext.Ajax.request({
20780
													async: false,
20781
													method: 'POST',
20782
													url: '/UserControl/GetStore',
20783
													params: {
20784
														tableName: 'PCMFUNC',
20785
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
20786
													},
20787
													success: function (response) {
20788
														var results = Ext.decode(response.responseText);
20789
														var dt = results.data[0];
20790
														if (dt != undefined) {
20791
															custumFunc = dt.FunctionCode;
20792
														}
20793
													}
20794
												});
20795
											}
20796
											if (custumFunc) {
20797
												eval(custumFunc)
20798
											}
20799
										}
20800
									}
20801
								}
20802
							});
20803
						}
20804
						break
20805
					}
20806
				} else {
20807
					cols.push({
20808
						text: rec.HeaderTitle,
20809
						hidden: Hidden_,
20810
						dataIndex: rec.FieldName,
20811
						isSummary: isSum,
20812
						hidden: true,
20813
						editor: {
20814
							allowBlank: true,
20815
							xtype: 'textfield',
20816
							readOnly: ReadOnly_,
20817
							id: tableName + rec.FieldName,
20818
							value: defaultValue,
20819
							vtype: 'validateMinovaXss' //// Tri 20210906
20820
						},
20821
						filter: {
20822
							itemDefaults: {
20823
								emptyText: 'Search for...'
20824
							}
20825
						}
20826
					});
20827
				}
20828
			});
20829
		};
20830
		addData = addData + "})";
20831
		Ext.applyIf(me, {
20832
			items: [{
20833
					xtype: 'grid',
20834
					autoScroll: true,
20835
					id: gridName,
20836
					name: gridName,
20837
					height: height,
20838
					store: Ext.create('Ext.data.Store', {
20839
						storeId: storeID,
20840
						fields: fieldStore,
20841
						proxy: {
20842
							method: 'POST',
20843
							type: 'ajax',
20844
							url: '',
20845
							reader: {
20846
								type: 'json',
20847
								root: 'data'
20848
							}
20849
						}
20850
					}),
20851
					dockedItems: [{
20852
							xtype: 'toolbar',
20853
							items: [{
20854
									text: 'Add',
20855
									hidden: hide_,
20856
									name: 'add' + tableName,
20857
									iconCls: 'fa-plus-circle',
20858
									style: 'font-family: FontAwesome',
20859
									handler: function () {
20860
										var store = Ext.StoreMgr.lookup(storeID);
20861
										var data = eval(addData);
20862
										if (me.transType == "FIN") {
20863
											var fp = Ext.ComponentQuery.query("[name=FiscalPeriod]")[0].getValue();
20864
											var fy = Ext.ComponentQuery.query("[name=FiscalYear]")[0].getValue();
20865
											var cp = Ext.ComponentQuery.query("[name=CompanyID]")[0].getValue();
20866
											var bu = Ext.ComponentQuery.query("[name=BusinessUnit]")[0].getValue();
20867
											var cc = Ext.ComponentQuery.query("[name=CostCenter]")[0].getValue();
20868
											// var desc = Ext.ComponentQuery.query("[name=Description]")[0].getValue();
20869
											data["FiscalPeriod"] = fp;
20870
											data["FiscalYear"] = fy;
20871
											data["CompanyID"] = cp;
20872
											data["BusinessUnit"] = bu;
20873
											// data["CostCenter"] = cc;
20874
											// data["Description"] = desc;
20875
										}
20876
										/*idx = store.getCount();
20877
										store.insert(idx, data);*/
20878
										
20879
										idx = store.getCount();
20880
										if(parseFloat(idx) <= 39) //// Tri 20210907
20881
										{
20882
											if(store.getCount() > 0 && me.transType == "FIN") //// Tri nwh 20211111, edit by Tri nwh 20220420
20883
											{	console.log('siwan'); 
20884
												var IsCostCenter = '';
20885
												var grid = Ext.getCmp(gridName);
20886
												var selection = grid.getView().getSelectionModel().getSelection()[0];
20887
												if( selection != undefined)   //// add by Tri nwh 20211124
20888
												{
20889
													var GLAccountID = selection.data.GLAccountID;
20890
													var CostCenter = selection.data.CostCenter;
20891
													MinovaUtil.ExecuteParamQuery({
20892
														ID: 'FINANCEITEMISCOSTCENTER',
20893
														GlAccountID: GLAccountID
20894
													}, function (s) {
20895
														var result = Ext.decode(s.responseText);
20896
														var dt = Ext.decode(Ext.decode(result.data));
20897
														IsCostCenter = dt[0].CostCenter;
20898
													});
20899
												}
20900
												
20901
												if(IsCostCenter == '1')
20902
												{	console.log('chani');
20903
													var panelHead = Ext.ComponentQuery.query('[name=MainHeaderDocument]')[0];
20904
													var formheader = panelHead.getForm();
20905
													console.log(formheader.findField("DocStatus").getValue());
20906
													if(formheader.findField("DocStatus").getValue() == '9')
20907
													{
20908
														if(CostCenter == '' || CostCenter.isnull == true)
20909
														{	console.log('1');
20910
															alert('please fill field cost center'); 
20911
														}
20912
														else
20913
														{	console.log('2');
20914
															store.insert(idx, data);
20915
														}
20916
													}
20917
													else
20918
													{	console.log('3');
20919
														store.insert(idx, data);
20920
													}
20921
												}
20922
												else
20923
												{	console.log('4');
20924
													store.insert(idx, data);
20925
												}
20926
											}
20927
											else
20928
											{	console.log('5');
20929
												store.insert(idx, data);
20930
											}
20931
											//alert('nwh');
20932
											
20933
										}
20934
										else if (parseFloat(idx) > 39)
20935
										{
20936
											var tb = Ext.ComponentQuery.query('[name=panelTab]')[0];
20937
											var activeTab = tb.activeTab;
20938
											var tbl = activeTab.tbl;
20939
											var btnadd = Ext.ComponentQuery.query('[name=add' + tbl + ']')[0].setDisabled(true);
20940
											//alert('Can not insert data, because row data has reached the maximum');
20941
											alert('Anda sudah melebihi batas maksimal penginputan');
20942
										}
20943
									}
20944
	
20945
								}, {
20946
									text: 'Delete',
20947
									hidden: hide_,
20948
									name: 'delete' + tableName,
20949
									iconCls: 'fa-trash-o',
20950
									style: 'font-family: FontAwesome',
20951
									handler: function () {
20952
										var me = this,
20953
										store = Ext.StoreMgr.lookup(storeID)
20954
											var grid = Ext.getCmp(gridName);
20955
										Ext.MessageBox.show({
20956
											title: 'Remove tab',
20957
											msg: "This will remove. Do you want to continue?",
20958
											buttons: Ext.MessageBox.YESNO,
20959
											fn: function (choice) {
20960
												if (choice === 'yes') {
20961
													var selection = grid.getView().getSelectionModel().getSelection()[0];
20962
													if (selection) {
20963
														store.remove(selection);
20964
														var amountdebet = selection.data.AmountDebetCompCurr;  ////// add by tri yooma
20965
														var amountcredit = selection.data.AmountCreditCompCurr;
20966
														var totdebetexist = Ext.ComponentQuery.query('[name=TotalDebet]')[0].getValue().toString();
20967
														var totdebet =  parseFloat(totdebetexist.toString().replace(',', '')) - parseFloat(amountdebet);
20968
														var totcredit = parseFloat(Ext.ComponentQuery.query('[name=TotalCredit]')[0].getValue().toString().replace(',', '')) - amountcredit;
20969
														Ext.ComponentQuery.query('[name=TotalDebet]')[0].setValue(totdebet);
20970
														Ext.ComponentQuery.query('[name=AmountDebet]')[0].setValue(Ext.util.Format.number(totdebet, '0,000.00'));	
20971
														Ext.ComponentQuery.query('[name=TotalCredit]')[0].setValue(totcredit);
20972
														Ext.ComponentQuery.query('[name=AmountCredit]')[0].setValue(Ext.util.Format.number(totcredit, '0,000.00'));
20973
														//alert('nwh');
20974
													}
20975
												}
20976
											}
20977
										});
20978
									}
20979
								}, {
20980
									xtype: 'filefield',
20981
									buttonOnly: true,
20982
									buttonConfig: {
20983
										width: 160,
20984
										text: 'Upload',
20985
										ui: 'default-toolbar',
20986
										iconCls: 'icon-arrow-up',
20987
										style: 'font-family: FontAwesome',
20988
										hidden: hideUploadDownload,
20989
										name: 'upload' + tableName,
20990
										html: "<input id='inputFile' type='file' name='uploaded'/>",
20991
									},
20992
									listeners: {
20993
										change: function (f, value) {
20994
											var store = Ext.StoreMgr.lookup(storeID);
20995
											var newValue = '';
20996
											var afterDot = '';
20997
											var files = event.target.files;
20998
											var fileName = files[0].name;
20999
											var fileType = fileName.substr(fileName.indexOf('.'));
21000
											if (!files || files.length == 0) {
21001
												MinovaMessageError("File Error", "FILOFILE", "");
21002
											} else {
21003
												if (fileType == '.xls' || fileType == '.xlsx') {
21004
													var reader = new FileReader();
21005

    
21006
													//For Browsers other than IE.
21007
													if (reader.readAsBinaryString) {
21008
														reader.onload = function (e) {
21009
															var data = e.target.result;
21010
															//Read the Excel File data.
21011
															var workbook = XLSX.read(data, {
21012
																	type: 'binary'
21013
																});
21014
															//Fetch the name of First Sheet.
21015
															var firstSheet = workbook.SheetNames[0];
21016

    
21017
															//Read all rows from First Sheet into an JSON array.
21018
															var excelRows = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[firstSheet]);
21019
															var data = eval(excelRows);
21020
															var dataLength = data.length;
21021
															idx = store.getCount();
21022
															var seq = idx + 1;
21023
															var dn = Ext.ComponentQuery.query("[name=DocNo]")[0].getValue();
21024
															for (var i = 0; i < dataLength; i++) {
21025
																data[i]["DocNo"] = dn;
21026
																data[i]["DocItemID"] = seq;
21027
																if (me.transType == "MTR" || me.transType == "PUR") {
21028
																	data[i].ARAPID = "";
21029
																	data[i].DocItemRef = "";
21030
																}
21031
																if (me.transType == "MTR") {
21032
																	data[i].Storage = "";
21033
																}
21034
																seq = seq + 1;
21035
															}
21036

    
21037
															var fields = store.model.getFields();
21038
															var gridFields = []
21039
															for (var i = 0; i < fields.length; i++) {
21040
																gridFields.push(fields[i].name);
21041
															}
21042

    
21043
															var index = [];
21044
															// build the index
21045
															for (var x in excelRows[0]) {
21046
																index.push(x);
21047
															}
21048
															var excelFields = []
21049
															for (var i = 0; i < index.length; i++) {
21050
																excelFields.push(index[i]);
21051
															}
21052

    
21053
															var template = [];
21054
															for (var i = 0; i < excelFields.length; i++) {
21055
																for (var j = 0; j < gridFields.length; j++) {
21056
																	if (excelFields[i] === gridFields[j]) {
21057
																		template.push(excelFields[i]);
21058
																	}
21059
																}
21060
															}
21061
															if (excelFields.length === template.length) {
21062
																store.insert(idx, data);
21063
															} else {
21064
																MinovaMessageError("Template Error", "FILOFILETEMPLATE", "");
21065
															}
21066
														};
21067
														reader.readAsBinaryString(files[0]);
21068

    
21069
													} else {
21070
														MinovaMessageError("FileReader Error", "FILOFILEREADER", "");
21071
													}
21072
												} else {
21073
													MinovaMessageError("File Type Error", "FILOUPLOAD", "");
21074
												}
21075
											}
21076
										}
21077
									}
21078
								}, {
21079
									text: 'Download',
21080
									hidden: hideUploadDownload,
21081
									name: 'download' + tableName,
21082
									iconCls: 'icon-arrow-down',
21083
									style: 'font-family: FontAwesome',
21084
									handler: function (b, e) {
21085
										b.up('grid').downloadExcelXml();
21086
									}
21087
								}
21088
							]
21089
						}
21090
					],
21091
					columns: cols,
21092
					selType: 'cellmodel',
21093
					plugins: [
21094
						Ext.create('Ext.grid.plugin.CellEditing', {
21095
							clicksToEdit: 1
21096
						})
21097
					],
21098
					//Add For Auto Size Coloum Mode - Nana
21099
					viewConfig: {
21100
						emptyText: 'No Data Display',
21101
						deferEmptyText: false,
21102
						listeners: {
21103
							refresh: function (dataview) {
21104
								Ext.each(dataview.panel.columns, function (column) {
21105
									if (column.autoSizeColumn == true)
21106
									column.autoSize();
21107
								})
21108
							}
21109
						}
21110
					},
21111
					listeners: {
21112
						'edit': function (editor, e, eOpts) {
21113
							/*Update By Midi 13 Juni 2019*/
21114
							var sumPanel = Ext.ComponentQuery.query('[name=SUM' + tableName + ']')[0];
21115
							var sumForm = sumPanel.getForm();
21116
							var grid = Ext.ComponentQuery.query('[name=' + gridName + ']')[0];
21117
							var sumFields = sumForm.getFields();
21118
							for (var i = 0; i < sumFields.length; i++) {
21119
								var fField = sumFields.items[i].name;
21120
								var fldValue = 0;
21121
								Ext.each(grid.store.getRange(), function (r) {
21122
									var fValue = r.data[fField];
21123
									fldValue = fldValue + parseFloat(fValue);
21124
								});
21125
								
21126
								fldValue = Ext.util.Format.number(fldValue, '0,000.00');
21127
								sumForm.findField(fField).setValue(fldValue);
21128
								if (fField.toLowerCase().includes("cred")) {
21129
                                    if (Ext.ComponentQuery.query('[name=TotalCredit]')[0] != undefined) {
21130
                                        Ext.ComponentQuery.query('[name=TotalCredit]')[0].setValue(fldValue);
21131
                                    }
21132
                                }
21133
                                if (fField.toLowerCase().includes("deb")) {
21134
                                    if (Ext.ComponentQuery.query('[name=TotalDebet]')[0] != undefined) {
21135
                                        Ext.ComponentQuery.query('[name=TotalDebet]')[0].setValue(fldValue);
21136
                                    }
21137
                                }
21138
							}							
21139
							// var grid = Ext.ComponentQuery.query('[name=' + gridName + ']')[0];
21140
							// var fField = e.field;
21141
							// if (e.column.isSummary == '1') {
21142
								// var fldValue = 0;
21143
								// Ext.each(grid.store.getRange(), function (r) {
21144
									// var fValue = r.data[fField];
21145
									// fldValue = fldValue + parseFloat(fValue);
21146
								// });
21147
								// var sumPanel = Ext.ComponentQuery.query('[name=SUM' + tableName + ']')[0];
21148
								// var sumForm = sumPanel.getForm();
21149
								// fldValue = Ext.util.Format.number(fldValue, '0,000.00');
21150
								// sumForm.findField(fField).setValue(fldValue);
21151
							// }
21152
						}
21153
						// ,
21154
						/*Add By Midi For Store Combobox With Param In Grid */
21155
						// 'beforeedit': function (editor, e, eOpts) {
21156
							// if (e.colIdx == 1 && tableName == 'PTRPURCHITEM') {
21157
								// var store = Ext.StoreMgr.lookup('store_' + tableName + 'Material');
21158
								// var itemType = e.record.get('ItemType');
21159
								// store.clearFilter();
21160
								// store.filter('MaterialType', itemType);
21161
							// }
21162
							// // if (e.colIdx == 1 && tableName == 'PTRFINANCEITEM') {
21163
								// // var store = Ext.StoreMgr.lookup('store_' + tableName + 'GLAccountID');
21164
								// // var itemType = e.record.get('CompanyID');
21165
								// // store.clearFilter();
21166
								// // store.filter('CompanyID', itemType);
21167
							// // }
21168
						// }
21169
					}
21170
				}
21171
			]
21172
		});
21173
		me.callParent(arguments);
21174
	}
21175
});
21176
Ext.define('MinovaUtil.MinovaES.LookupDoc', {
21177
	extend : 'Ext.window.Window',
21178
	alias : 'widget.lookupdocument',
21179
	requires : [],
21180
	//height : '87%',
21181
	height : '73%',//saswanto28jan2022
21182
	width : '41%',
21183
	minWidth : '50%',
21184
	maxWidth : '100%',
21185
	bodyPadding : 0,
21186
	formname : undefined,
21187
	name : 'LookupDocumentTrans',
21188
	test : undefined,
21189
	vtype : 'validateMinovaXss',
21190
	targetField : undefined,
21191
	valueField : undefined,
21192
	tableName : undefined,
21193
	LookupFunction : undefined,
21194
	isGrid : undefined,
21195
	listeners : {
21196
		afterrender : function (f) {
21197
			f.setTitle('Lookup - Document');
21198
		}
21199
	},
21200
	initComponent : function () {
21201
		var me = this;
21202
		var targetField_ = me.targetField;
21203
		var valueField_ = me.valueField;
21204
		var form = me.test;
21205
		var tableName_ = me.tableName;
21206
		var isGrid = me.isGrid_;
21207
		var LookupFunction = me.LookupFunction;
21208
		param_ = null;
21209
		var filterParam_ = me.filterParam;
21210
		var fieldLabel_ = 'Document No';
21211
		Ext.applyIf(me, {
21212
			items : [{
21213
					items : [{
21214
							xtype : 'tabpanel',
21215
							items : [{
21216
									xtype : 'form',
21217
									title : 'Quick Search',
21218
									height : '70%',
21219
									items : [{
21220
											xtype : 'form',
21221
											name : 'frmSearch',
21222
											width : '100%',
21223
											height : 'auto',
21224
											dockedItems : [{
21225
													xtype : 'toolbar',
21226
													dock : 'top',
21227
													layout : 'vbox',
21228
													bodyPadding : 10,
21229
													border : 0,
21230
													items : [{
21231
															xtype : 'fieldset',
21232
															layout : 'hbox',
21233
															width : '100%',
21234
															border : 0,
21235
															padding : 0,
21236
															items : [{
21237
																	xtype : 'textfield',
21238
																	name : 'DocSearch',
21239
																	fieldLabel : fieldLabel_,
21240
																	width : 470,
21241
																	labelWidth : 185,
21242
																	enableKeyEvents : true,
21243
																	filterParam : filterParam_,
21244
																	listeners : {
21245
																		specialkey : function (f, e) {
21246
																			if (e.getKey() == e.ENTER) {
21247
																				var doc = Ext.ComponentQuery.query('[name=DocSearch]')[0];
21248
																				var docNo = doc.getValue();
21249
																				var store = Ext.data.StoreManager.lookup('storeQC');
21250
																				param_ = 'DocNo[like]' + docNo
21251
																					if (this.filterParam) {
21252
																						param_ = param_ + ',' + this.filterParam_
21253
																					}
21254
																					store.proxy.extraParams = {
21255
																					tableName : tableName_,
21256
																					param : param_,
21257
																					menuId : MinovaUtil.GetMenuID()
21258
																				};
21259
																				store.removeAll();
21260
																				store.reload();
21261
																				store.loadPage(1);
21262
																			}
21263
																		}
21264
																	}
21265
																}, {
21266
																	xtype : 'tbspacer',
21267
																	width : 5
21268
																}, {
21269
																	xtype : 'button',
21270
																	name : 'Search',
21271
																	text : 'Search',
21272
																	filterParam : filterParam_,
21273
																	handler : function () {
21274
																		var doc = Ext.ComponentQuery.query('[name=DocSearch]')[0];
21275
																		var docNo = doc.getValue();
21276
																		var store = Ext.data.StoreManager.lookup('storeQC');
21277
																		param_ = 'DocNo[like]' + docNo
21278
																			if (this.filterParam) {
21279
																				param_ = param_ + ',' + this.filterParam
21280
																			}
21281
																			store.proxy.extraParams = {
21282
																			tableName : tableName_,
21283
																			param : param_,
21284
																			menuId : MinovaUtil.GetMenuID()
21285
																		};
21286
																		store.removeAll();
21287
																		store.reload();
21288
																		store.loadPage(1);
21289
																	}
21290
																}
21291
															]
21292
														}
21293
													]
21294
												}
21295
											]
21296
										}, {
21297
											items : [{
21298
													xtype : "minovagrid1",
21299
													name : "GridDocNo",
21300
													storename : 'storeQC',
21301
													tableName : tableName_,
21302
													param : this.filterParam,
21303
													isLookup : true,
21304
													pagesize : 25,
21305
													height : 398,
21306
													LookupFunction : LookupFunction,
21307
													valueField : valueField_,
21308
													targetField : targetField_,
21309
													isGrid : true,
21310
													listeners : {
21311
														beforeedit : function () {
21312
															return false;
21313
														},
21314
														itemdblclick : function () {
21315
															var grid = Ext.ComponentQuery.query('[name=GridDocNo]')[0];
21316
															var selection = grid.getView().getSelectionModel().getSelection()[0];
21317
															var documentno = selection.data.DocNo;
21318
															LookupFunction = this.LookupFunction;
21319
															eval(LookupFunction);
21320
															var target = Ext.ComponentQuery.query('[name=LookupDocumentTrans]')[0].targetField;
21321
															Ext.ComponentQuery.query('[name=' + target + ']')[0].setValue(documentno);
21322
															Ext.ComponentQuery.query('[name=LookupDocumentTrans]')[0].hide();
21323
														}
21324
													},
21325
												}, {
21326
													xtype : 'pagingtoolbar',
21327
													store : 'storeQC',
21328
													dock : 'bottom',
21329
													displayInfo : true
21330
												}
21331
											]
21332
										}
21333
									]
21334
								}, {
21335
									title : 'Advance Search',
21336
									items : [{
21337
											xtype : 'form',
21338
											name : 'formlookup',
21339
											items : [{
21340
													xtype : 'minovaform',
21341
													name : 'frmlookup',
21342
													tableName : tableName_,
21343
													param : filterParam_,
21344
													isLookup : true,
21345
													buttons : [{
21346
															text : 'Search',
21347
															filterParam : filterParam_,
21348
															listeners : {
21349
																click : function () {
21350
																	var store = Ext.data.StoreManager.lookup('storeadvance');
21351
																	var form = Ext.ComponentQuery.query('[name=formlookup]')[0].getForm();
21352
																	grid = Ext.ComponentQuery.query('[name=gridlookup]')[0];
21353
																	var values_ = form.getValues();
21354
																	var fields_ = form.getFields().items;
21355
																	var param_ = '';
21356
																	for (var i = 0; i < fields_.length; i++) {
21357
																		var val_ = form.getFields().items[i].getValue();
21358
																		var xtype_ = form.getFields().items[i].xtype;
21359
																		var oprator_ = '[like]';
21360
																		if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
21361
																			oprator_ = '[Equal]';
21362
																		}
21363
																		if (xtype_ == 'datefield') {
21364
																			if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
21365
																				oprator_ = '[LessThanEqual]';
21366
																			} else {
21367
																				oprator_ = '[GreaterThanEqual]';
21368
																			}
21369
																		}
21370
																		if (val_ != 'undefined' && val_ != "" && val_ != null) {
21371
																			param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
21372
																		}
21373
																	}
21374
																	if (this.filterParam_) {
21375
																		param_ = param_ + ',' + this.filterParam_
21376
																	}
21377
																	store.proxy.extraParams = {
21378
																		tableName : grid.tableName,
21379
																		param : param_,
21380
																		menuId : MinovaUtil.GetMenuID()
21381
																	};
21382
																	store.removeAll();
21383
																	store.reload();
21384
																	store.loadPage(1);
21385
																}
21386
															}
21387
														}
21388
													]
21389
												}, {
21390
													xtype : 'minovagrid1',
21391
													name : 'gridlookup',
21392
													minHeight : 312,
21393
													height : 290,
21394
													tableName : tableName_,
21395
													param : this.filterParam,
21396
													isLookup : true,
21397
													storename : 'storeadvance',
21398
													pagesize : 25,
21399
													valueField : valueField_,
21400
													targetField : targetField_,
21401
													hidebutton : 0,
21402
													isGrid : true,
21403
													listeners : {
21404
														beforeedit : function () {
21405
															return false;
21406
														},
21407
														itemdblclick : function () {
21408
															var grid = Ext.ComponentQuery.query('[name=gridlookup]')[0];
21409
															var selection = grid.getView().getSelectionModel().getSelection()[0];
21410
															var documentno = selection.data.DocNo;
21411
															LookupFunction = this.LookupFunction;
21412
															eval(LookupFunction);
21413
															var target = Ext.ComponentQuery.query('[name=LookupDocumentTrans]')[0].targetField;
21414
															Ext.ComponentQuery.query('[name=' + target + ']')[0].setValue(documentno);
21415
															Ext.ComponentQuery.query('[name=LookupDocumentTrans]')[0].hide();
21416
														}
21417
													},
21418
													dockedItems : [{
21419
															xtype : 'pagingtoolbar',
21420
															store : 'storeadvance',
21421
															dock : 'bottom',
21422
															displayInfo : true
21423
														}
21424
													]
21425
												}
21426
											]
21427
										}
21428
									]
21429
								}
21430
							]
21431
						}
21432
					]
21433
				}
21434
			]
21435
		});
21436
		me.callParent(arguments);
21437
	}
21438
});
21439
Ext.define('MinovaUtil.MinovaES.MinovaSummaryDocForm', {
21440
	extend : 'Ext.form.Panel',
21441
	alias : ['widget.summarydocform'],
21442
	formname : this.name,
21443
	tableName : undefined,
21444
	docType : undefined,
21445
	transType : undefined,
21446
	resizable : true,
21447
	border : false,
21448
	autoScroll : true,
21449
	layout : 'column',
21450
	defaults : {
21451
		layout : 'form',
21452
		xtype : 'container',
21453
		defaultType : 'textfield',
21454
		style : 'width: 50%',
21455
	},
21456
	initComponent : function () {
21457
		var me = this;
21458
		var col1 = [];
21459
		var col2 = [];
21460
		var LangID = localStorage.LangId;
21461
		var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',DocType='" + me.docType + "',IsSummary=1";
21462
		var formname_ = me.name;
21463
		var nameTable_ = me.tableName;
21464
		Ext.Ajax.request({
21465
			async : false,
21466
			method : 'POST',
21467
			url : '/UserControl/GetStore',
21468
			params : {
21469
				tableName : 'PDSDOCFIELD',
21470
				param : parameter
21471
			},
21472
			success : function (response) {
21473
				var results = Ext.decode(response.responseText);
21474
				hasil = results.data;
21475
			}
21476
		});
21477
		if (hasil.length > 0) {
21478
			Ext.each(hasil, function (rec) {
21479
				var formfield = MinovaUtil.FieldGenerator.Form(me.name, rec, false, true, me.tableName, false);
21480
				var descField = undefined;
21481
				if (rec.ColumnNo == 1) {
21482
					col1.push(formfield);
21483
					if (descField) {
21484
						col1.push(descField)
21485
					}
21486
				} else {
21487
					col2.push(formfield);
21488
					if (descField) {
21489
						col2.push(descField)
21490
					}
21491
				}
21492
			});
21493
		}
21494
		Ext.applyIf(me, {
21495
			items : [{
21496
					style : 'width: 50%',
21497
					items : col1
21498
				}, {
21499
					style : 'width: 50%',
21500
					items : col2
21501
				}
21502
			]
21503
		});
21504
		this.callParent();
21505
	}
21506
});
21507
Ext.define('MinovaUtil.MinovaES.LookupDocRef', {
21508
	extend : 'Ext.window.Window',
21509
	alias : 'widget.lookupdocumentref',
21510
	requires : [],
21511
	maxHeight : '52%',//saswanto28jan2022
21512
	minHeight: '30%',
21513
	width : '60%',
21514
	//minWidth : '50%',
21515
	//maxHeight : '75%',
21516
	bodyPadding : 0,
21517
	formname : undefined,
21518
	name : 'LookupDocRef',
21519
	test : undefined,
21520
	vtype : 'validateMinovaXss',
21521
	targetField : undefined,
21522
	valueField : undefined,
21523
	tableName : 'PDSDOCREF',
21524
	transType : undefined,
21525
	docType : undefined,
21526
	LookupFunction : undefined,
21527
	datarecord : undefined,
21528
	isGrid : undefined,
21529
	filterParam : undefined,
21530
	listeners : {
21531
		afterrender : function (f) {
21532
			f.setTitle('Lookup - Document');
21533
		}
21534
	},
21535
	initComponent : function () {
21536
		var me = this;
21537
		var targetField_ = me.targetField;
21538
		var valueField_ = me.valueField;
21539
		var form = me.test;
21540
		var tableName_ = me.tableName;
21541
		var transType_ = ""; ////---- add by Tri nwh 20220413 status look up doc ref
21542
		MinovaUtil.ExecuteParamQuery({		
21543
			ID: "FILOGetTransType",
21544
			MenuID: MinovaUtil.GetMenuID()
21545
			}, function (s) {
21546
				var result = Ext.decode(s.responseText);
21547
				var dt = Ext.decode(Ext.decode(result.data));
21548
				if (dt.length !== 0 || dt !== null) {
21549
					transType_ = dt[0].TransType;
21550
					if(transType_ == 'FIN') { tableName_ = 'PDSDOCREF'; }
21551
					else { tableName_ = 'PDSDOCREFLOG'; }
21552
				}
21553
		}, function (f) {});	////---- add by Tri nwh 20220413 status look up doc ref
21554
		var isGrid = me.isGrid_;
21555
		var LookupFunction = me.LookupFunction;
21556
		param_ = null;
21557
		var filterParam_ = me.filterParam;
21558
		var compselect = "";
21559
		var buselect = "";
21560
		Ext.applyIf(me, {
21561
			items : [{
21562
					xtype : 'form',
21563
					name : 'formlookup',
21564
					items : [{
21565
							xtype : 'minovaform',
21566
							bodyPadding:10,
21567
							name : 'frmlookup',
21568
							tableName : tableName_,
21569
							param : filterParam_,
21570
							isLookup : true,
21571
							buttons : [{
21572
									text : 'Search',
21573
									filterParam : filterParam_,
21574
									listeners : {
21575
										click : function () {
21576
											var store = Ext.data.StoreManager.lookup('storeadvance');
21577
											var form = Ext.ComponentQuery.query('[name=formlookup]')[0].getForm();
21578
											grid = Ext.ComponentQuery.query('[name=gridlookupdocref]')[0];
21579
											var values_ = form.getValues();
21580
											var fields_ = form.getFields().items;
21581
											var param_ = '';
21582
											for (var i = 0; i < fields_.length; i++) {
21583
												var val_ = form.getFields().items[i].getValue();
21584
												var xtype_ = form.getFields().items[i].xtype;
21585
												var oprator_ = '[like]';
21586
												if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
21587
													oprator_ = '[Equal]';
21588
												}
21589
												if (xtype_ == 'datefield') {
21590
													if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
21591
														oprator_ = '[LessThanEqual]';
21592
													} else {
21593
														oprator_ = '[GreaterThanEqual]';
21594
													}
21595
												}
21596
												if (val_ != 'undefined' && val_ != "" && val_ != null) {
21597
													param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
21598
												}
21599
											}
21600
											if (filterParam_) {
21601
												param_ = param_ + ',' + filterParam_
21602
											}
21603
											store.proxy.extraParams = {
21604
												tableName : grid.tableName,
21605
												param : param_,
21606
												menuId : MinovaUtil.GetMenuID()
21607
											};
21608
											store.removeAll();
21609
											store.reload();
21610
											store.loadPage(1);
21611
										}
21612
									}
21613
								}
21614
							]
21615
						}, {
21616
							xtype : 'minovagrid1',
21617
							name : 'gridlookupdocref',
21618
							//minHeight : 312,
21619
							//height : 290,
21620
							tableName : tableName_,
21621
							param : this.filterParam,
21622
							isLookup : true,
21623
							storename : 'storeadvance',
21624
							bodyPadding:10,
21625
							pagesize : 25,
21626
							maxHeight: 300,
21627
							valueField : valueField_,
21628
							targetField : targetField_,
21629
							multiSelect : true,
21630
							hidebutton : 0,
21631
							isGrid : true,
21632
							listeners : {
21633
								beforeedit : function () {
21634
									return false;
21635
								},
21636
								itemdblclick : function () {},
21637
								select : function (t, record, index, eOpts) {
21638
									if (compselect !== "") {
21639
										if (compselect !== record.data.CompanyID) {
21640
											// MinovaMessageError("", "FILO06", "");
21641
											return;
21642
										}
21643
									}
21644
									if (buselect !== "") {
21645
										if (buselect !== record.data.BusinessUnit) {
21646
											// MinovaMessageError("", "FILO07", "");
21647
											return;
21648
										}
21649
									}
21650
									compselect = record.data.CompanyID;
21651
									buselect = record.data.BusinessUnit;
21652
								}
21653
							},
21654
							dockedItems : [{
21655
									xtype : 'pagingtoolbar',
21656
									store : 'storeadvance',
21657
									dock : 'bottom',
21658
									displayInfo : true
21659
								}, {
21660
									xtype : 'button',
21661
									name : 'select',
21662
									text : 'Select',
21663
									dock : 'bottom'
21664
								}
21665
							]
21666
						}
21667
					]
21668
				}
21669
			]
21670
		});
21671
		me.callParent(arguments);
21672
	}
21673
});
21674
var Base64 = (function () {
21675
	// Private property
21676
	var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
21677

    
21678
	// Private method for UTF-8 encoding
21679

    
21680
	function utf8Encode(string) {
21681
		string = string.replace(/\r\n/g, "\n");
21682
		var utftext = "";
21683
		for (var n = 0; n < string.length; n++) {
21684
			var c = string.charCodeAt(n);
21685
			if (c < 128) {
21686
				utftext += String.fromCharCode(c);
21687
			} else if ((c > 127) && (c < 2048)) {
21688
				utftext += String.fromCharCode((c >> 6) | 192);
21689
				utftext += String.fromCharCode((c & 63) | 128);
21690
			} else {
21691
				utftext += String.fromCharCode((c >> 12) | 224);
21692
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
21693
				utftext += String.fromCharCode((c & 63) | 128);
21694
			}
21695
		}
21696
		return utftext;
21697
	}
21698

    
21699
	// Public method for encoding
21700
	return {
21701
		encode: (typeof btoa == 'function') ? function (input) {
21702
			return btoa(utf8Encode(input));
21703
		}
21704
		 : function (input) {
21705
			var output = "";
21706
			var chr1,
21707
			chr2,
21708
			chr3,
21709
			enc1,
21710
			enc2,
21711
			enc3,
21712
			enc4;
21713
			var i = 0;
21714
			input = utf8Encode(input);
21715
			while (i < input.length) {
21716
				chr1 = input.charCodeAt(i++);
21717
				chr2 = input.charCodeAt(i++);
21718
				chr3 = input.charCodeAt(i++);
21719
				enc1 = chr1 >> 2;
21720
				enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
21721
				enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
21722
				enc4 = chr3 & 63;
21723
				if (isNaN(chr2)) {
21724
					enc3 = enc4 = 64;
21725
				} else if (isNaN(chr3)) {
21726
					enc4 = 64;
21727
				}
21728
				output = output +
21729
					keyStr.charAt(enc1) + keyStr.charAt(enc2) +
21730
					keyStr.charAt(enc3) + keyStr.charAt(enc4);
21731
			}
21732
			return output;
21733
		}
21734
	};
21735
})();
21736
Ext.define('MyApp.view.override.Grid', {
21737
	override: 'Ext.grid.GridPanel',
21738
	requires: 'Ext.form.action.StandardSubmit',
21739

    
21740
	/*
21741
	Kick off process
21742
	 */
21743

    
21744
	downloadExcelXml: function (includeHidden, name) {
21745

    
21746
		if (!name)
21747
			title = this.name;
21748

    
21749
		var vExportContent = this.getExcelXml(includeHidden, title);
21750

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

    
21753
		/*
21754
		dynamically create and anchor tag to force download with suggested filename
21755
		note: download attribute is Google Chrome specific
21756
		 */
21757

    
21758
		if (Ext.isChrome) {
21759
			var gridEl = this.getEl();
21760

    
21761
			var el = Ext.DomHelper.append(gridEl, {
21762
					tag: "a",
21763
					download: title + "-" + Ext.Date.format(new Date(), 'Y-m-d Hi') + '.xls',
21764
					href: location
21765
				});
21766

    
21767
			el.click();
21768

    
21769
			Ext.fly(el).destroy();
21770

    
21771
		} else {
21772

    
21773
			var form = this.down('form#uploadForm');
21774
			if (form) {
21775
				form.destroy();
21776
			}
21777
			form = this.add({
21778
					xtype: 'form',
21779
					itemId: 'uploadForm',
21780
					hidden: true,
21781
					standardSubmit: true,
21782
					url: 'http://webapps.figleaf.com/dataservices/Excel.cfc?method=echo&mimetype=application/vnd.ms-excel&filename=' + escape(title + ".xls"),
21783
					items: [{
21784
							xtype: 'hiddenfield',
21785
							name: 'data',
21786
							value: vExportContent
21787
						}
21788
					]
21789
				});
21790

    
21791
			form.getForm().submit();
21792

    
21793
		}
21794
	},
21795

    
21796
	/*
21797

    
21798
	Welcome to XML Hell
21799
	See: http://msdn.microsoft.com/en-us/library/office/aa140066(v=office.10).aspx
21800
	for more details
21801

    
21802
	 */
21803
	getExcelXml: function (includeHidden, title) {
21804

    
21805
		var theTitle = title || this.title;
21806

    
21807
		var worksheet = this.createWorksheet(includeHidden, theTitle);
21808
		var totalWidth = this.columnManager.columns.length;
21809

    
21810
		return ''.concat(
21811
			'<?xml version="1.0"?>',
21812
			'<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">',
21813
			'<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"><Title>' + theTitle + '</Title></DocumentProperties>',
21814
			'<OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"><AllowPNG/></OfficeDocumentSettings>',
21815
			'<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">',
21816
			'<WindowHeight>' + worksheet.height + '</WindowHeight>',
21817
			'<WindowWidth>' + worksheet.width + '</WindowWidth>',
21818
			'<ProtectStructure>False</ProtectStructure>',
21819
			'<ProtectWindows>False</ProtectWindows>',
21820
			'</ExcelWorkbook>',
21821

    
21822
			'<Styles>',
21823

    
21824
			'<Style ss:ID="Default" ss:Name="Normal">',
21825
			'<Alignment ss:Vertical="Bottom"/>',
21826
			'<Borders/>',
21827
			'<Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="12" ss:Color="#000000"/>',
21828
			'<Interior/>',
21829
			'<NumberFormat/>',
21830
			'<Protection/>',
21831
			'</Style>',
21832

    
21833
			'<Style ss:ID="title">',
21834
			'<Borders />',
21835
			'<Font ss:Bold="1" ss:Size="18" />',
21836
			'<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1" />',
21837
			'<NumberFormat ss:Format="@" />',
21838
			'</Style>',
21839

    
21840
			'<Style ss:ID="headercell">',
21841
			'<Font ss:Bold="1" ss:Size="10" />',
21842
			'<Alignment ss:Horizontal="Center" ss:WrapText="1" />',
21843
			'<Interior ss:Color="#A3C9F1" ss:Pattern="Solid" />',
21844
			'</Style>',
21845

    
21846
			'<Style ss:ID="even">',
21847
			'<Interior ss:Color="#CCFFFF" ss:Pattern="Solid" />',
21848
			'</Style>',
21849

    
21850
			'<Style ss:ID="evendate" ss:Parent="even">',
21851
			'<NumberFormat ss:Format="yyyy-mm-dd" />',
21852
			'</Style>',
21853

    
21854
			'<Style ss:ID="evenint" ss:Parent="even">',
21855
			'<Numberformat ss:Format="0" />',
21856
			'</Style>',
21857

    
21858
			'<Style ss:ID="evenfloat" ss:Parent="even">',
21859
			'<Numberformat ss:Format="0.00" />',
21860
			'</Style>',
21861

    
21862
			'<Style ss:ID="odd">',
21863
			'<Interior ss:Color="#CCCCFF" ss:Pattern="Solid" />',
21864
			'</Style>',
21865

    
21866
			'<Style ss:ID="groupSeparator">',
21867
			'<Interior ss:Color="#D3D3D3" ss:Pattern="Solid" />',
21868
			'</Style>',
21869

    
21870
			'<Style ss:ID="odddate" ss:Parent="odd">',
21871
			'<NumberFormat ss:Format="yyyy-mm-dd" />',
21872
			'</Style>',
21873

    
21874
			'<Style ss:ID="oddint" ss:Parent="odd">',
21875
			'<NumberFormat Format="0" />',
21876
			'</Style>',
21877

    
21878
			'<Style ss:ID="oddfloat" ss:Parent="odd">',
21879
			'<NumberFormat Format="0.00" />',
21880
			'</Style>',
21881

    
21882
			'</Styles>',
21883
			worksheet.xml,
21884
			'</Workbook>');
21885
	},
21886

    
21887
	/*
21888

    
21889
	Support function to return field info from store based on fieldname
21890

    
21891
	 */
21892

    
21893
	getModelField: function (fieldName) {
21894

    
21895
		var fields = this.store.model.getFields();
21896
		for (var i = 0; i < fields.length; i++) {
21897
			if (fields[i].name === fieldName) {
21898
				return fields[i];
21899
			}
21900
		}
21901
	},
21902

    
21903
	/*
21904

    
21905
	Convert store into Excel Worksheet
21906

    
21907
	 */
21908
	generateEmptyGroupRow: function (dataIndex, value, cellTypes, includeHidden) {
21909

    
21910
		var cm = this.columnManager.columns;
21911
		var colCount = cm.length;
21912
		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>';
21913
		var visibleCols = 0;
21914

    
21915
		// rowXml += '<Cell ss:StyleID="groupSeparator">'
21916

    
21917
		for (var j = 0; j < colCount; j++) {
21918
			if (cm[j].xtype != 'actioncolumn' && (cm[j].dataIndex != '') && (includeHidden || !cm[j].hidden)) {
21919
				// rowXml += '<Cell ss:StyleID="groupSeparator"/>';
21920
				visibleCols++;
21921
			}
21922
		}
21923

    
21924
		// rowXml += "</Row>";
21925

    
21926
		return Ext.String.format(rowTpl, visibleCols - 1, value);
21927
	},
21928

    
21929
	createWorksheet: function (includeHidden, theTitle) {
21930
		// Calculate cell data types and extra class names which affect formatting
21931
		var cellType = [];
21932
		var cellTypeClass = [];
21933
		var cm = this.columnManager.columns;
21934

    
21935
		var totalWidthInPixels = 0;
21936
		var colXml = '';
21937
		var headerXml = '';
21938
		var visibleColumnCountReduction = 0;
21939
		var colCount = cm.length;
21940
		for (var i = 0; i < colCount; i++) {
21941
			if (cm[i].xtype != 'actioncolumn' && (cm[i].dataIndex != '') && (includeHidden || !cm[i].hidden)) {
21942
				var w = cm[i].getEl().getWidth();
21943
				totalWidthInPixels += w;
21944

    
21945
				if (cm[i].text === "") {
21946
					cellType.push("None");
21947
					cellTypeClass.push("");
21948
					++visibleColumnCountReduction;
21949
				} else {
21950
					colXml += '<Column ss:AutoFitWidth="1" ss:Width="' + w + '" />';
21951
					headerXml += '<Cell ss:StyleID="headercell">' +
21952
					'<Data ss:Type="String">' + cm[i].dataIndex + '</Data>' +
21953
					'<NamedCell ss:Name="Print_Titles"></NamedCell></Cell>';
21954

    
21955
					var fld = this.getModelField(cm[i].dataIndex);
21956
					switch (fld.type.type) {
21957
					case "int":
21958
						cellType.push("Number");
21959
						cellTypeClass.push("int");
21960
						break;
21961
					case "float":
21962
						cellType.push("Number");
21963
						cellTypeClass.push("float");
21964
						break;
21965

    
21966
					case "bool":
21967

    
21968
					case "boolean":
21969
						cellType.push("String");
21970
						cellTypeClass.push("");
21971
						break;
21972
					case "date":
21973
						cellType.push("DateTime");
21974
						cellTypeClass.push("date");
21975
						break;
21976
					default:
21977
						cellType.push("String");
21978
						cellTypeClass.push("");
21979
						break;
21980
					}
21981
				}
21982
			}
21983
		}
21984
		var visibleColumnCount = cellType.length - visibleColumnCountReduction;
21985

    
21986
		var result = {
21987
			height: 9000,
21988
			width: Math.floor(totalWidthInPixels * 30) + 50
21989
		};
21990

    
21991
		// Generate worksheet header details.
21992

    
21993
		// determine number of rows
21994
		var numGridRows = this.store.getCount() + 2;
21995
		if (!Ext.isEmpty(this.store.groupField)) {
21996
			numGridRows = numGridRows + this.store.getGroups().length;
21997
		}
21998

    
21999
		// create header for worksheet
22000
		var t = ''.concat(
22001
				'<Worksheet ss:Name="' + theTitle + '">',
22002

    
22003
				'<Names>',
22004
				'<NamedRange ss:Name="Print_Titles" ss:RefersTo="=\'' + theTitle + '\'!R1:R2">',
22005
				'</NamedRange></Names>',
22006

    
22007
				'<Table ss:ExpandedColumnCount="' + (visibleColumnCount + 2),
22008
				'" ss:ExpandedRowCount="' + numGridRows + '" x:FullColumns="1" x:FullRows="1" ss:DefaultColumnWidth="65" ss:DefaultRowHeight="15">',
22009
				colXml,
22010
				'<Row ss:AutoFitHeight="1">',
22011
				headerXml +
22012
				'</Row>');
22013

    
22014
		// Generate the data rows from the data in the Store
22015
		var groupVal = "";
22016
		var groupField = "";
22017

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

    
22020
			if (!Ext.isEmpty(groupField)) {
22021
				if (groupVal != this.store.getAt(i).get(groupField)) {
22022
					groupVal = this.store.getAt(i).get(groupField);
22023
					t += this.generateEmptyGroupRow(groupField, groupVal, cellType, includeHidden);
22024
				}
22025
			}
22026
			t += '<Row>';
22027
			var cellClass = (i & 1) ? 'odd' : 'even';
22028
			r = it[i].data;
22029
			var k = 0;
22030
			for (var j = 0; j < colCount; j++) {
22031
				if (cm[j].xtype != 'actioncolumn' && (cm[j].dataIndex != '') && (includeHidden || !cm[j].hidden)) {
22032
					var v = r[cm[j].dataIndex];
22033
					if (cellType[k] !== "None") {
22034
						t += '<Cell ss:StyleID="' + cellClass + cellTypeClass[k] + '"><Data ss:Type="' + cellType[k] + '">';
22035
						if (cellType[k] == 'DateTime') {
22036
							t += Ext.Date.format(v, 'Y-m-d');
22037
						} else {
22038
							t += v;
22039
						}
22040
						t += '</Data></Cell>';
22041
					}
22042
					k++;
22043
				}
22044
			}
22045
			t += '</Row>';
22046
		}
22047

    
22048
		result.xml = t.concat(
22049
				'</Table>',
22050
				'<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">',
22051
				'<PageLayoutZoom>0</PageLayoutZoom>',
22052
				'<Selected/>',
22053
				'<Panes>',
22054
				'<Pane>',
22055
				'<Number>3</Number>',
22056
				'<ActiveRow>2</ActiveRow>',
22057
				'</Pane>',
22058
				'</Panes>',
22059
				'<ProtectObjects>False</ProtectObjects>',
22060
				'<ProtectScenarios>False</ProtectScenarios>',
22061
				'</WorksheetOptions>',
22062
				'</Worksheet>');
22063
		return result;
22064
	}
22065
});
22066

    
22067
/*Add Midi For Grid Mass Posting Filo*/
22068
Ext.define('MinovaUtil.MinovaES.MinovaEditAbleGridList', {
22069
    extend: 'Ext.form.Panel',
22070
    alias: ['widget.MinovaEditAbleGridList', 'widget.Minovaeditablegridlist', 'widget.minovaeditablegridlist'],
22071
    requires: [
22072
		'Ext.grid.plugin.CellEditing',
22073
		'Ext.grid.RowNumberer',
22074
		'Ext.grid.Panel',
22075
    ],
22076

    
22077
    //renderTo: 'panel-extjs',
22078
    anchor: '100%',
22079
    tableName: undefined,
22080
    hideButton: undefined,
22081
    multiSelect: undefined,
22082
    initComponent: function () {
22083
        var me = this;
22084
        var isLookup = me.isLookup;
22085
        var hide_ = false;
22086
        var widthLock = 250;
22087
        var checkSelection = '';
22088

    
22089
        if (me.hideButton == true) {
22090
            hide_ = true;
22091
        }
22092
        if (me.multiSelect) {
22093
            locking = false;
22094
            checkSelection = 'checkboxmodel';
22095
            widthLock = 40;
22096
        }
22097
        var tableName = me.tableName;
22098
        var cols = [];
22099
        var fieldStore = [];
22100
        var _url = 'GetAllField';
22101
        var hasil = null;
22102
        var height = me.height;
22103
        var storeID = 'store' + me.tableName;
22104
        var gridName = 'grid' + me.name;
22105
        if (me.storeName) {
22106
            storeID = me.storeName;
22107
        }
22108
        var LangID = MinovaUtil.GetLangID();
22109
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
22110
        Ext.Ajax.request({
22111
            async: false,
22112
            method: 'POST',
22113
            url: '/UserControl/GetStore',
22114
            params: {
22115
                tableName: 'PDSBS0007',
22116
                param: parameter
22117
            },
22118
            success: function (response) {
22119
                var results = Ext.decode(response.responseText);
22120
                hasil = results.data;
22121
            }
22122
        });
22123
        cols.push({
22124
            xtype: 'rownumberer'
22125
        });
22126
        var addData = 'var data={';
22127
        if (hasil.length > 0) {
22128
            Ext.each(hasil, function (rec) {
22129
                fieldStore.push(rec.FieldName);
22130
                if (rec.FieldName != 'Sequence') {
22131
                    addData = addData + rec.FieldName + ":" + "'',";
22132
                }
22133

    
22134
                var null_ = null;
22135
                var ReadOnly_ = false;
22136
                if (rec.IsPrimaryKey == true) {
22137
                    null_ = false;
22138
                }
22139
                if (rec.IsRequired == true) {
22140
                    null_ = false;
22141
                } else {
22142
                    null_ = true;
22143
                }
22144
                if (rec.ReadOnly == '1') {
22145
                    ReadOnly_ = true;
22146
                }
22147
                var Hidden_ = false;
22148
                if (rec.ReadOnly == '1') {
22149
                    ReadOnly_ = true;
22150
                }
22151

    
22152
                if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
22153
                    Hidden_ = true;
22154
                    null_ = true;
22155
                }
22156

    
22157
                if (rec.GridView == 1) {
22158
                    switch (rec.FormatRef) {
22159
                        case "date":
22160
                            cols.push({
22161
                                xtype: 'minovadatecolumn',
22162
                                hidden: Hidden_,
22163
                                text: rec.HeaderTitle,
22164
                                dataIndex: rec.FieldName,
22165
                                filter: {
22166
                                    itemDefaults: {
22167
                                        emptyText: 'Search for...',
22168

    
22169
                                    }
22170
                                },
22171
                                editor: {
22172
                                    allowBlank: null_,
22173
                                    xtype: 'datefield',
22174
                                    hideMode: 'visibility',
22175
                                    readOnly: ReadOnly_,
22176
                                    id: tableName + rec.FieldName,
22177
                                    fieldGrid: rec.FieldName,
22178
                                    nameTable: rec.TableName,
22179
                                }
22180
                            });
22181
                            break
22182
                        case "amount":
22183
                            cols.push({
22184
                                xtype: 'minovacurrancycolumn',
22185
                                //renderer: Ext.util.Format.numberRenderer("0,0"),
22186
                                text: rec.HeaderTitle,
22187
                                align: 'right',
22188
                                dataIndex: rec.FieldName,
22189
                                hidden: Hidden_,
22190
                                filter: {
22191
                                    itemDefaults: {
22192
                                        emptyText: 'Search for...'
22193
                                    }
22194
                                },
22195
                                editor: {
22196
                                    allowBlank: null_,
22197
                                    xtype: 'minovacurrencyfield',
22198
                                    //renderer: Ext.util.Format.numberRenderer("0,0"),
22199
                                    //vtype: 'validateDecimal',
22200
                                    readOnly: ReadOnly_,
22201
                                    id: tableName + rec.FieldName,
22202
                                    nameTable: rec.TableName,
22203
                                    fieldGrid: rec.FieldName,
22204
                                    fieldStyle: 'text-align:right;',
22205
                                    value: '0',
22206

    
22207
                                }
22208
                            });
22209
                            break
22210
                        case "time":
22211
                            var DefaultValue = rec.DefaultValue;
22212
                            if (DefaultValue == '') {
22213
                                defaultValue = '00:00';
22214
                            }
22215
                            cols.push({
22216
                                //xtype: 'minovatimecolumn',
22217
                                xtype: 'timefield',
22218
                                format: 'H:i',
22219
                                submitFormat: 'Hi',
22220
                                text: rec.HeaderTitle,
22221
                                dataIndex: rec.FieldName,
22222
                                hidden: Hidden_,
22223
                                //renderer: Ext.util.Format.dateRenderer('G:i'),
22224
                                filter: {
22225
                                    itemDefaults: {
22226
                                        emptyText: 'Search for...'
22227
                                    }
22228
                                },
22229
                                editor: {
22230
                                    allowBlank: null_,
22231
                                    xtype: 'timefield',
22232
                                    readOnly: ReadOnly_,
22233
                                    id: tableName + rec.FieldName,
22234
                                    format: 'H:i',
22235
                                    submitFormat: 'Hi',
22236
                                    increment: 5,
22237
                                    value: DefaultValue,
22238
                                    anchor: '100%',
22239
                                    listeners: {}
22240
                                    //renderer: Ext.util.Format.dateRenderer('G:i'),
22241
                                }
22242
                            });
22243
                            break
22244
                            //case "datetime":
22245
                            //    if (rec.DataRef != 'CREATEDT' && rec.DataRef != 'CHANGEDT') {
22246
                            //        cols.push({
22247
                            //            xtype: 'minovadatetimecolumn',
22248
                            //            text: rec.HeaderTitle,
22249
                            //            dataIndex: rec.FieldName,
22250
                            //            filter: {
22251
                            //                itemDefaults: {
22252
                            //                    emptyText: 'Search for...'
22253
                            //                }
22254
                            //            },
22255
                            //            editor: {
22256
                            //                allowBlank: null_,
22257
                            //                xtype: 'textfield',
22258
                            //            }
22259
                            //        });
22260
                            //    }
22261
                            //    break
22262
                        default:
22263
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
22264
                                cols.push({
22265
                                    text: rec.HeaderTitle,
22266
                                    dataIndex: rec.FieldName,
22267
                                    width: 100,
22268
                                    filter: {
22269
                                        type: 'string',
22270
                                        itemDefaults: {
22271
                                            emptyText: 'Search for...'
22272
                                        }
22273
                                    }
22274
                                });
22275
                            } else if (rec.SearchType == '0') {
22276
                                var valueField = null;
22277
                                var displayValue = null;
22278
                                var TableRef = undefined;
22279
                                if (rec.TableRef != '') {
22280
                                    TableRef = rec.TableRef;
22281

    
22282
                                    Ext.Ajax.request({
22283
                                        async: false,
22284
                                        method: 'POST',
22285
                                        url: '/UserControl/GetStore',
22286
                                        params: {
22287
                                            tableName: 'SDATATABLEFIELD',
22288
                                            param: 'TableName[equal]' + rec.TableRef
22289
                                        },
22290
                                        success: function (response) {
22291
                                            var results = Ext.decode(response.responseText);
22292
                                            data_ = results.data;
22293
                                            if (data_ != undefined) {
22294
                                                valueField_ = $.grep(data_, function (r) {
22295
                                                    return r.ValueField == '1'
22296
                                                });
22297
                                                valueField = valueField_[0].FieldName
22298
                                                displayValue_ = $.grep(data_, function (r) {
22299
                                                    return r.DisplayValue == '1'
22300
                                                });
22301
                                                displayValue = displayValue_[0].FieldName
22302
                                            }
22303
                                        }
22304
                                    });
22305

    
22306
                                    //create Store
22307
                                    Ext.create('Ext.data.Store', {
22308
                                        storeId: 'store_' + me.tableName + rec.FieldName,
22309
                                        autoLoad: true,
22310
                                        proxy: {
22311
                                            method: 'POST',
22312
                                            type: 'ajax',
22313
                                            url: '/UserControl/GetStoreAuth',
22314
                                            extraParams: {
22315
                                                tableName: TableRef,
22316
                                                param: rec.ParamCombo,
22317
                                                menuId: MinovaUtil.GetMenuID()
22318
                                            },
22319
                                            reader: {
22320
                                                type: 'json',
22321
                                                root: 'data',
22322
                                                totalProperty: 'data[0].TotalCount'
22323
                                            }
22324
                                        }
22325
                                    });
22326
                                } else if (rec.FixedValue != '') {
22327
                                    var storeData = [];
22328
                                    var str = rec.FixedValue;
22329
                                    var hasil = str.split('||');
22330
                                    hasil.forEach(function (h) {
22331
                                        store_ = h.split('=')
22332
                                        storeData.push({
22333
                                            code: store_[0],
22334
                                            desc: store_[1],
22335

    
22336
                                        });
22337
                                    });
22338

    
22339
                                    valueField = 'code';
22340
                                    displayValue = 'desc';
22341

    
22342
                                    Ext.create('Ext.data.Store', {
22343
                                        storeId: 'store_' + me.tableName + rec.FieldName,
22344
                                        autoLoad: true,
22345
                                        data: storeData
22346
                                    })
22347
                                }
22348

    
22349
                                cols.push({
22350
                                    xtype: 'minovacombocolumn',
22351
                                    hidden: Hidden_,
22352
                                    text: rec.HeaderTitle,
22353
                                    dataIndex: rec.FieldName,
22354
                                    valueField: valueField,
22355
                                    displayField: displayValue,
22356
                                    store: 'store_' + me.tableName + rec.FieldName,
22357
                                    editor: {
22358
                                        allowBlank: null_,
22359
                                        xtype: 'combobox',
22360
                                        readOnly: ReadOnly_,
22361
                                        id: tableName + rec.FieldName,
22362
                                        nameTable: rec.TableName,
22363
                                        fieldGrid: rec.FieldName,
22364
                                        valueField: valueField,
22365
                                        displayField: displayValue,
22366
                                        vtype: 'validateCombobox',
22367
                                        store: 'store_' + me.tableName + rec.FieldName,
22368
                                    },
22369
                                    filter: {
22370
                                        type: 'list',
22371
                                        itemDefaults: {
22372
                                            emptyText: 'Search for...'
22373
                                        }
22374
                                    }
22375
                                });
22376

    
22377
                            } else if (rec.SearchType == '5') {							
22378
                                var valueField = null;
22379
                                var displayValue = null;
22380
                                var AdditionaldisplayValue = null;
22381
                                var TableRef = undefined;
22382
                                if (rec.TableRef != '') {
22383
                                    TableRef = rec.TableRef;
22384
                                    Ext.Ajax.request({
22385
                                        async: false,
22386
                                        method: 'POST',
22387
                                        url: '/UserControl/GetStore',
22388
                                        params: {
22389
                                            tableName: 'SDATATABLEFIELD',
22390
                                            param: 'TableName[equal]' + rec.TableRef
22391
                                        },
22392
                                        success: function (response) {
22393
                                            var results = Ext.decode(response.responseText);
22394
                                            data_ = results.data;
22395
                                            if (data_ != undefined) {
22396
                                                valueField_ = $.grep(data_, function (r) {
22397
                                                    return r.ValueField == '1'
22398
                                                });
22399
                                                if (valueField_.length > 0) {
22400
                                                    valueField = valueField_[0].FieldName
22401
                                                }
22402

    
22403
                                                displayValue_ = $.grep(data_, function (r) {
22404
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
22405
                                                });
22406
                                                if (displayValue_.length > 0) {
22407
                                                    displayValue = displayValue_[0].FieldName;
22408
                                                }
22409
                                                if (displayValue_.length >= 2) {
22410
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
22411
                                                }
22412
                                            }
22413
                                        }
22414
                                    });
22415
                                }
22416
                                Ext.create('Ext.data.Store', {
22417
                                    storeId: 'store_' + me.tableName + rec.FieldName,
22418
                                    autoLoad: true,
22419
                                    proxy: {
22420
                                        method: 'POST',
22421
                                        type: 'ajax',
22422
                                        url: '/UserControl/GetStoreAuth',
22423
                                        extraParams: {
22424
                                            tableName: TableRef,
22425
                                            param: rec.ParamCombo,
22426
                                            menuId: MinovaUtil.GetMenuID()
22427
                                        },
22428
                                        reader: {
22429
                                            type: 'json',
22430
                                            root: 'data',
22431
                                            totalProperty: 'data[0].TotalCount'
22432
                                        }
22433
                                    }
22434
                                });
22435
                                cols.push({
22436
                                    xtype : 'minovacombocolumn',
22437
                                    hidden: Hidden_,
22438
                                    text: rec.HeaderTitle,
22439
                                    dataIndex: rec.FieldName,
22440
                                    valueField : valueField,
22441
                                    displayField : displayValue,
22442
                                    store : 'store_' + me.tableName + rec.FieldName,
22443
                                    tpl: Ext.create('Ext.XTemplate',
22444
                                            '<ul class="x-list-plain"><tpl for=".">',
22445
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
22446
                                            '</tpl></ul>'),
22447
                                    displayTpl: Ext.create('Ext.XTemplate',
22448
                                        '<tpl for=".">',
22449
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
22450
                                        '</tpl>'),
22451
                                    editor: {
22452
                                        allowBlank: null_,
22453
                                        xtype: 'combobox',
22454
                                        readOnly: ReadOnly_,
22455
                                        id: rec.TableName + rec.FieldName,
22456
                                        nameTable: rec.TableName,
22457
                                        fieldGrid: rec.FieldName,
22458
                                        valueField: valueField,
22459
                                        displayField: displayValue,
22460
                                        store: 'store_' + me.tableName + rec.FieldName,
22461
                                        value: rec.DefaultValue,
22462
                                        tpl: Ext.create('Ext.XTemplate',
22463
                                            '<ul class="x-list-plain"><tpl for=".">',
22464
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
22465
                                            '</tpl></ul>'),
22466
                                        displayTpl: Ext.create('Ext.XTemplate',
22467
                                            '<tpl for=".">',
22468
                                            '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
22469
                                            '</tpl>')
22470
                                    },
22471
                                    renderer: function (value) {
22472
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
22473
                                        var index = store.find(valueField, value);
22474
                                        var val = "";
22475
                                        if (index != -1) {
22476
                                            var rc = store.getAt(index);
22477
                                            //val = rc.get(displayValue);
22478
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
22479
                                        } else {
22480
                                            val = value;
22481
                                        }
22482
                                        return val;
22483
                                    },
22484
                                    filter: {
22485
                                        type: 'list',
22486
                                        itemDefaults: {
22487
                                            emptyText: 'Search for...'
22488
                                        }
22489
                                    }
22490
                                });
22491
                            } else if (rec.SearchType == '2') {
22492
                                var triger = (rec.TriggerCombo).split('$');
22493
                                var targetField_ = triger[0];
22494
                                var fieldValue_ = triger[1];
22495
                                cols.push({
22496
                                    text: rec.HeaderTitle,
22497
                                    hidden: Hidden_,
22498
                                    dataIndex: rec.FieldName,
22499
                                    filter: {
22500
                                        itemDefaults: {
22501
                                            emptyText: 'Search for...'
22502
                                        }
22503
                                    },
22504
                                    editor: {
22505
                                        allowBlank: null_,
22506
                                        xtype: 'minovalookupgrid',
22507
                                        readOnly: ReadOnly_,
22508
                                        isGrid: true,
22509
                                        fieldTarget: targetField_,
22510
                                        fieldValue: fieldValue_,
22511
                                        isGrid: true,
22512
                                        id: tableName + rec.FieldName,
22513
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
22514
                                        triggerCls: 'x-form-search-trigger',
22515
                                        vtype: 'alphanum', // disable space
22516
                                        nameTable: rec.TableName,
22517
                                        fieldGrid: rec.FieldName,
22518
                                        LookupFunction: rec.LookupFunction,
22519
                                        listeners: {
22520
                                            change: function (val) {
22521
                                                var custumFunc = rec.SelectFunction;
22522
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
22523
                                                    Ext.Ajax.request({
22524
                                                        async: false,
22525
                                                        method: 'POST',
22526
                                                        url: '/UserControl/GetStore',
22527
                                                        params: {
22528
                                                            tableName: 'PCMFUNC',
22529
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
22530
                                                        },
22531
                                                        success: function (response) {
22532
                                                            var results = Ext.decode(response.responseText);
22533
                                                            data_ = results.data[0];
22534
                                                            if (data_ != undefined) {
22535
                                                                custumFunc = data_.FunctionCode;
22536
                                                            }
22537
                                                        }
22538
                                                    });
22539
                                                }
22540
                                                if (custumFunc) {
22541
                                                    eval(custumFunc)
22542
                                                }
22543
                                            }
22544
                                        }
22545
                                    }
22546
                                });
22547
                            } else if (rec.SearchType == '3') {
22548
                                cols.push({
22549
                                    text: rec.HeaderTitle,
22550
                                    hidden: Hidden_,
22551
                                    dataIndex: rec.FieldName,
22552
                                    filter: {
22553
                                        itemDefaults: {
22554
                                            emptyText: 'Search for...'
22555
                                        }
22556
                                    },
22557
                                    editor: {
22558
                                        allowBlank: null_,
22559
                                        // xtype: 'minovalookuptreePopup',
22560
                                        xtype: 'MinovaLookupTree',
22561
                                        readOnly: ReadOnly_,
22562
                                        id: tableName + rec.FieldName,
22563
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
22564
                                        triggerCls: 'x-form-search-trigger',
22565
                                        vtype: 'alphanum', // disable space
22566
                                        treeSructure: rec.SearchFunction, //'O-O-P',
22567
                                        objClassValue: rec.ParamCombo, //'O',
22568
                                        nameTable: rec.TableName,
22569
                                        fieldGrid: rec.FieldName,
22570
                                        listeners: {
22571
                                            change: function (val) {
22572
                                                var custumFunc = rec.SelectFunction;
22573
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
22574
                                                    Ext.Ajax.request({
22575
                                                        async: false,
22576
                                                        method: 'POST',
22577
                                                        url: '/UserControl/GetStore',
22578
                                                        params: {
22579
                                                            tableName: 'PCMFUNC',
22580
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
22581
                                                        },
22582
                                                        success: function (response) {
22583
                                                            var results = Ext.decode(response.responseText);
22584
                                                            data_ = results.data[0];
22585
                                                            if (data_ != undefined) {
22586
                                                                custumFunc = data_.FunctionCode;
22587
                                                            }
22588
                                                        }
22589
                                                    });
22590
                                                }
22591
                                                if (custumFunc) {
22592
                                                    eval(custumFunc)
22593
                                                }
22594
                                            }
22595
                                        }
22596
                                    }
22597
                                });
22598
                            } 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) {
22599
                                var triger = (rec.TriggerCombo).split('&');
22600
                                var targetField_ = triger[0];
22601
                                var fieldValue_ = triger[0];
22602
                                cols.push({
22603
                                    text: rec.HeaderTitle,
22604
                                    hidden: Hidden_,
22605
                                    dataIndex: rec.FieldName,
22606
                                    filter: {
22607
                                        itemDefaults: {
22608
                                            emptyText: 'Search for...'
22609
                                        }
22610
                                    },
22611
                                    editor: {
22612
                                        allowBlank: null_,
22613
                                        xtype: 'lookupemployee',
22614
                                        readOnly: ReadOnly_,
22615
                                        isGrid: true,
22616
                                        fieldTarget: targetField_,
22617
                                        fieldValue: fieldValue_,
22618
                                        isGrid: true,
22619
                                        id: tableName + rec.FieldName,
22620
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
22621
                                        triggerCls: 'x-form-search-trigger',
22622
                                        vtype: 'alphanum', // disable space
22623
                                        nameTable: rec.TableName,
22624
                                        fieldGrid: rec.FieldName,
22625
                                        listeners: {
22626
                                            change: function (val) {
22627
                                                var custumFunc = rec.SelectFunction;
22628
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
22629
                                                    Ext.Ajax.request({
22630
                                                        async: false,
22631
                                                        method: 'POST',
22632
                                                        url: '/UserControl/GetStore',
22633
                                                        params: {
22634
                                                            tableName: 'PCMFUNC',
22635
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
22636
                                                        },
22637
                                                        success: function (response) {
22638
                                                            var results = Ext.decode(response.responseText);
22639
                                                            data_ = results.data[0];
22640
                                                            if (data_ != undefined) {
22641
                                                                custumFunc = data_.FunctionCode;
22642
                                                            }
22643
                                                        }
22644
                                                    });
22645
                                                }
22646
                                                if (custumFunc) {
22647
                                                    eval(custumFunc)
22648
                                                }
22649
                                            }
22650
                                        }
22651
                                    }
22652
                                });
22653
                            } else if (rec.SearchType == '4' && isLookup != true) {
22654
                                cols.push({
22655

    
22656
                                    text: rec.HeaderTitle,
22657
                                    hidden: Hidden_,
22658
                                    dataIndex: rec.FieldName,
22659
                                    filter: {
22660
                                        itemDefaults: {
22661
                                            emptyText: 'Search for...'
22662
                                        }
22663
                                    },
22664
                                    editor: {
22665
                                        allowBlank: null_,
22666
                                        xtype: 'lookupemployee',
22667
                                        readOnly: ReadOnly_,
22668
                                        isGrid: true,
22669
                                        fieldTarget: targetField_,
22670
                                        fieldValue: fieldValue_,
22671
                                        isGrid: true,
22672
                                        id: tableName + rec.FieldName,
22673
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
22674
                                        triggerCls: 'x-form-search-trigger',
22675
                                        vtype: 'alphanum', // disable space
22676
                                        nameTable: rec.TableName,
22677
                                        fieldGrid: rec.FieldName,
22678
                                        listeners: {
22679
                                            change: function (val) {
22680
                                                var custumFunc = rec.SelectFunction;
22681
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
22682
                                                    Ext.Ajax.request({
22683
                                                        async: false,
22684
                                                        method: 'POST',
22685
                                                        url: '/UserControl/GetStore',
22686
                                                        params: {
22687
                                                            tableName: 'PCMFUNC',
22688
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
22689
                                                        },
22690
                                                        success: function (response) {
22691
                                                            var results = Ext.decode(response.responseText);
22692
                                                            data_ = results.data[0];
22693
                                                            if (data_ != undefined) {
22694
                                                                custumFunc = data_.FunctionCode;
22695
                                                            }
22696
                                                        }
22697
                                                    });
22698
                                                }
22699
                                                if (custumFunc) {
22700
                                                    eval(custumFunc)
22701
                                                }
22702
                                            }
22703
                                        }
22704
                                    }
22705
                                });
22706
                            } else {
22707
                                if (rec.FieldDataType == 3) { //add by taufan
22708
                                    cols.push({
22709
                                        text: rec.HeaderTitle,
22710
                                        hidden: Hidden_,
22711
                                        dataIndex: rec.FieldName,
22712
                                        filter: {
22713
                                            itemDefaults: {
22714
                                                emptyText: 'Search for...'
22715
                                            }
22716
                                        },
22717
                                        editor: {
22718
                                            allowBlank: null_,
22719
                                            xtype: 'textfield',
22720
                                            readOnly: ReadOnly_,
22721
                                            id: tableName + rec.FieldName,
22722
                                            nameTable: rec.TableName,
22723
                                            fieldGrid: rec.FieldName,
22724
                                            vtype: 'validateDecimal',
22725
                                            maxLength: rec.Length,
22726
                                            precision: rec.Prec,
22727
                                            fieldStyle: 'text-align:right;',
22728
                                            listeners: {
22729
                                                change: function (val) {
22730
                                                    var custumFunc = null;
22731
                                                    Ext.Ajax.request({
22732
                                                        async: false,
22733
                                                        method: 'POST',
22734
                                                        url: '/UserControl/GetStore',
22735
                                                        params: {
22736
                                                            tableName: 'SDATATABLEFIELD',
22737
                                                            param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
22738
                                                        },
22739
                                                        success: function (response) {
22740
                                                            var results = Ext.decode(response.responseText);
22741
                                                            data_ = results.data[0];
22742
                                                            if (data_ != undefined) {
22743
                                                                custumFunc = data_.SelectFunction;
22744
                                                                //console.log(data_)
22745
                                                            }
22746
                                                        }
22747
                                                    });
22748

    
22749
                                                    if (custumFunc) {
22750
                                                        eval(custumFunc)
22751
                                                    }
22752
                                                }
22753
                                            }
22754
                                        }
22755
                                    });
22756
                                } else {
22757
                                    cols.push({
22758
                                        text: rec.HeaderTitle,
22759
                                        hidden: Hidden_,
22760
                                        dataIndex: rec.FieldName,
22761
                                        filter: {
22762
                                            itemDefaults: {
22763
                                                emptyText: 'Search for...'
22764
                                            }
22765
                                        },
22766
                                        editor: {
22767
                                            allowBlank: null_,
22768
                                            xtype: 'textfield',
22769
                                            readOnly: ReadOnly_,
22770
                                            id: tableName + rec.FieldName,
22771
                                            nameTable: rec.TableName,
22772
                                            fieldGrid: rec.FieldName,
22773
                                            listeners: {
22774
                                                change: function (val) {
22775
                                                    var custumFunc = null;
22776
                                                    Ext.Ajax.request({
22777
                                                        async: false,
22778
                                                        method: 'POST',
22779
                                                        url: '/UserControl/GetStore',
22780
                                                        params: {
22781
                                                            tableName: 'SDATATABLEFIELD',
22782
                                                            param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
22783
                                                        },
22784
                                                        success: function (response) {
22785
                                                            var results = Ext.decode(response.responseText);
22786
                                                            data_ = results.data[0];
22787
                                                            if (data_ != undefined) {
22788
                                                                custumFunc = data_.SelectFunction;
22789
                                                                //console.log(data_)
22790
                                                            }
22791
                                                        }
22792
                                                    });
22793

    
22794
                                                    if (custumFunc) {
22795
                                                        eval(custumFunc)
22796
                                                    }
22797
                                                }
22798
                                            }
22799
                                        }
22800
                                    });
22801
                                }
22802
                            }
22803

    
22804
                            break
22805

    
22806
                    }
22807
                } else {
22808
                    cols.push({
22809
                        text: rec.HeaderTitle,
22810
                        hidden: Hidden_,
22811
                        dataIndex: rec.FieldName,
22812
                        hidden: true,
22813
                        editor: {
22814
                            allowBlank: true,
22815
                            xtype: 'textfield',
22816
                            readOnly: ReadOnly_,
22817
                            id: tableName + rec.FieldName,
22818
                            nameTable: rec.TableName,
22819
                            fieldGrid: rec.FieldName,
22820
                        },
22821
                        filter: {
22822
                            itemDefaults: {
22823
                                emptyText: 'Search for...'
22824
                            }
22825
                        }
22826
                    });
22827
                }
22828
            });
22829

    
22830
        };
22831
        addData = addData + "}";
22832
        Ext.applyIf(me, {
22833
            items: [{
22834
                xtype: 'grid',
22835
                id: gridName,
22836
                name: gridName,
22837
                height: height,
22838
                viewConfig: {
22839
                    emptyText: 'No Data Display',
22840
                    deferEmptyText: false,
22841
                    //Add Nana For Autosize Column Mode
22842
                    listeners: {
22843
                        refresh: function (dataview) {
22844
                            Ext.each(dataview.panel.columns, function (column) {
22845
                                //if (column.autoSizeColumn == false)
22846
                                //	column.autoSizeColumn = true;
22847
                                column.autoSize();
22848
                                //dataview.store.reload();
22849
                            })
22850
                        }
22851
                    },
22852
                    render: function (comp) {
22853
                        comp.getStore().reload();
22854
                        console.log(comp);
22855
                    }
22856
                },
22857
                //store: 'gridStore',
22858
                store: Ext.create('Ext.data.Store', {
22859
                    storeId: storeID,
22860
                    fields: fieldStore,
22861
                    proxy: {
22862
                        method: 'POST',
22863
                        type: 'ajax',
22864
                        url: '',
22865
                        reader: {
22866
                            type: 'json',
22867
                            root: 'data'
22868
                        }
22869
                    }
22870
                }),
22871
                dockedItems: [{
22872
                    xtype: 'toolbar',
22873
                    items: [{
22874
                        text: 'Add',
22875
                        hidden: hide_,
22876
                        name: tableName + 'Add',
22877
                        iconCls: 'fa-plus-circle',
22878
                        style: 'font-family: FontAwesome',
22879
                        handler: function () {
22880
                            var store = Ext.StoreMgr.lookup(storeID)
22881
                            idx = store.getCount();
22882
                            var action = getParam('action');
22883
                            var data = '';
22884
                            var Sequence = 0;
22885
                            if (idx == 0) {
22886
                                Sequence = 1;
22887
                            } else {
22888
                                Sequence = 1 + idx;
22889
                            }
22890
                            //data = {
22891
                            //    Sequence: Sequence
22892
                            //};
22893

    
22894
                            var seq = 'Sequence';
22895
                            var SequenceValue = Sequence;
22896
                            eval(addData);
22897
                            data[seq] = SequenceValue;
22898

    
22899
                            store.insert(idx, data);
22900
                        }
22901

    
22902
                    }, {
22903
                        text: 'Delete',
22904
                        hidden: hide_,
22905
                        name: tableName + 'DeleteText',
22906
                        iconCls: 'fa-trash-o',
22907
                        style: 'font-family: FontAwesome',
22908
                        //disabled: true
22909
                        handler: function () {
22910
                            var me = this,
22911
                            store = Ext.StoreMgr.lookup(storeID)
22912

    
22913
                            var grid = Ext.getCmp(gridName);
22914

    
22915
                            Ext.MessageBox.show({
22916
                                title: 'Remove tab',
22917
                                msg: "This will remove. Do you want to continue?",
22918
                                buttons: Ext.MessageBox.YESNO,
22919
                                fn: function (choice) {
22920
                                    console.log(choice);
22921
                                    if (choice === 'yes') {
22922
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
22923
                                        if (selection) {
22924
                                            store.remove(selection);
22925
                                        }
22926
                                    }
22927
                                    //delete panel.pendingClose;
22928
                                }
22929
                            });
22930
                        }
22931

    
22932
                    }
22933
                    ]
22934
                }
22935
                ],
22936
                columns: cols,
22937
                selType: checkSelection,
22938
                //selType: 'rowmodel',
22939
                plugins: {
22940
                    ptype: 'rowediting',
22941
                    pluginId: 'rowEditing',
22942
                    clicksToEdit: 1,
22943
                    listeners: {
22944
                        //edit: 'onGridEditorEdit'
22945
                    }
22946
                }
22947
            }, ]
22948

    
22949
        });
22950

    
22951
        me.callParent(arguments);
22952
    }
22953
});
22954

    
22955
/*Add by Midi ( Tab List Mass Posting ERP DocType AR)*/
22956
Ext.define('MinovaUtil.MinovaES.MinovaTabListDocTransAR', {
22957
	extend: 'Ext.tab.Panel',
22958
	alias: ['widget.doctablistAR'],
22959
	transType: undefined,
22960
	docType: undefined,
22961
	docNo: undefined,
22962
	langId: undefined,
22963
	param: undefined,
22964
	layout: 'fit',
22965
	name: 'panelTabAR',
22966
	id: 'mainTabAR',
22967
	action: undefined,
22968
	initComponent: function () {
22969
		var me = this;
22970
		var documentType = me.docType;
22971
		var transactionType = me.transType;
22972
		var hasil = null;
22973
		var _items = [];
22974
		Ext.Ajax.request({
22975
			async: false,
22976
			method: 'POST',
22977
			url: '/UserControl/GetStore',
22978
			params: {
22979
				tableName: 'PCMBSTRANSLIST',
22980
				param: 'TransType[=]' + me.transType
22981
			},
22982
			success: function (response) {
22983
				var results = Ext.decode(response.responseText);
22984
				hasil = results.data;
22985
			}
22986
		});
22987
		hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
22988
		if (hasil.length > 0) {
22989
			Ext.each(hasil, function (rec) {
22990
				if (rec.LayoutType == "L004") { // L004=Custom
22991
					var pnl = Ext.create(rec.CustomLayout, {
22992
							title: rec.Title,
22993
							tableName: rec.TableName,
22994
							//minHeight: 200,
22995
							name: 'panelTab' + rec.TableName,
22996
							tbl: rec.TableName,
22997
							layoutType: rec.LayoutType
22998
						});
22999
					_items.push(pnl)
23000
				} else if (rec.LayoutType == "L002" || rec.LayoutType == "L003") {
23001
					_items.push({
23002
						xtype: 'panel',
23003
						title: rec.Title,
23004
						name: 'panelTab' + rec.TableName,
23005
						tbl: rec.TableName,
23006
						layoutType: rec.LayoutType,
23007
						items: [{
23008
								xtype: 'docgrid',
23009
								//minHeight: 200,
23010
								tableName: rec.TableName,
23011
								docType: me.docType,
23012
								transType: me.transType,
23013
								storename: 'store' + rec.TableName,
23014
								pagesize: 25,
23015
								name: 'GRID' + rec.TableName,
23016
								margin: '0 0 10 0',
23017
								autoLoad: false,
23018
								tbar: [{
23019
										xtype: 'button',
23020
										text: 'Action',
23021
										name: 'actionGrid' + rec.TableName,
23022
										menu: [{
23023
												text: 'Add',
23024
												name: 'add' + rec.TableName,
23025
												tbl: rec.TableName,
23026
												style: 'font-family: FontAwesome',
23027
												iconCls: 'fa-plus-circle',
23028
												handler: function () {
23029
													var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23030
													var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23031
													var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23032
													frmDisplay.reset();
23033
													frmForm.reset();
23034
													frmDisplay.setHidden(true);
23035
													frmForm.setHidden(false);
23036
													grdPanel.setHidden(true);
23037
													action = "0";
23038
												}
23039
											}, {
23040
												text: 'Delete',
23041
												name: 'delete' + rec.TableName,
23042
												tbl: rec.TableName,
23043
												iconCls: 'fa-trash-o',
23044
												style: 'font-family: FontAwesome',
23045
												handler: function () {
23046
													var me = this;
23047
													var store = Ext.StoreMgr.lookup('store' + rec.TableName);
23048
													var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23049
													Ext.MessageBox.show({
23050
														title: 'Remove tab',
23051
														msg: "This will remove. Do you want to continue?",
23052
														buttons: Ext.MessageBox.YESNO,
23053
														fn: function (choice) {
23054
															console.log(choice);
23055
															if (choice === 'yes') {
23056
																var selection = grdPanel.getView().getSelectionModel().getSelection()[0];
23057
																if (selection) {
23058
																	store.remove(selection);
23059
																}
23060
															}
23061
														}
23062
													});
23063
												}
23064
											}
23065
										]
23066
									}, {
23067
										xtype: 'tbfill'
23068
									}, {
23069
										text: 'Clear Filters',
23070
										tooltip: 'Clear all filters',
23071
										name: 'clearbtn',
23072
										handler: function () {}
23073
									}
23074
								],
23075
								dockedItems: [{
23076
										xtype: 'pagingtoolbar',
23077
										store: 'store' + rec.TableName,
23078
										dock: 'bottom',
23079
										pageSize: me.pagesize,
23080
										displayInfo: true
23081
									}
23082
								],
23083
								listeners: {
23084
									'itemdblclick': function (me, record, item, index, e, eOpts) {
23085
										var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23086
										var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23087
										var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23088
										frmDisplay.reset();
23089
										frmForm.reset();
23090
										frmDisplay.getForm().setValues(record.data);
23091
										frmForm.getForm().setValues(record.data);
23092
										frmDisplay.setHidden(false);
23093
										frmForm.setHidden(true);
23094
										grdPanel.setHidden(true);
23095
										me.action = "1";
23096
									}
23097
								}
23098
							}, {
23099
								xtype: 'minovadocform',
23100
								name: 'DISPLAY' + rec.TableName,
23101
								id: 'DISPLAY' + rec.TableName,
23102
								itemId: 'DISPLAY' + rec.TableName,
23103
								tableName: rec.TableName,
23104
								docType: me.docType,
23105
								transType: me.transType,
23106
								isDisplay: true,
23107
								hidden: true,
23108
								buttons: [{
23109
										text: 'Edit',
23110
										name: 'editDISPLAY' + rec.TableName,
23111
										handler: function () {
23112
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23113
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23114
											var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23115
											frmDisplay.setHidden(true);
23116
											frmForm.setHidden(false);
23117
											grdPanel.setHidden(true);
23118
										}
23119
									}, {
23120
										text: 'Cancel',
23121
										name: 'cancelDISPLAY' + rec.TableName,
23122
										handler: function () {
23123
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23124
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23125
											var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23126
											frmDisplay.setHidden(true);
23127
											frmForm.setHidden(true);
23128
											grdPanel.setHidden(false);
23129
											grdPanel.getStore().reload();
23130
										}
23131
									}
23132
								]
23133
							}, {
23134
								xtype: 'minovadocform',
23135
								name: 'FORM' + rec.TableName,
23136
								id: 'FORM' + rec.TableName,
23137
								itemId: 'FORM' + rec.TableName,
23138
								tableName: rec.TableName,
23139
								docType: me.docType,
23140
								transType: me.transType,
23141
								isDisplay: false,
23142
								hidden: true,
23143
								buttons: [{
23144
										text: 'Submit',
23145
										name: 'submitFORM' + rec.TableName,
23146
										handler: function () {
23147
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23148
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23149
											var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23150
											var frm = frmForm.getForm();
23151
											if (frm.isValid()) {
23152
												var table = rec.TableName;
23153
												var data = frmForm.getValues();
23154
												var token = MinovaUtil.SESSIONS.Token;
23155
												var str = grdPanel.getStore();
23156
												var idx = str.getCount();
23157
												str.insert(idx, data);
23158
												frmDisplay.setHidden(true);
23159
												frmForm.setHidden(true);
23160
												grdPanel.setHidden(false);
23161
											}
23162
										}
23163
									}, {
23164
										text: 'Cancel',
23165
										name: 'cancelFORM' + rec.TableName,
23166
										handler: function () {
23167
											MinovaMessage('Message', '000011', '', 'C', function (respone) {
23168
												if (respone == "yes") {
23169
													var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23170
													var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23171
													var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23172
													frmDisplay.setHidden(true);
23173
													frmForm.setHidden(true);
23174
													grdPanel.setHidden(false);
23175
												}
23176
											});
23177
										}
23178
									}
23179
								]
23180
							}
23181
						]
23182
					});
23183
				} else if (rec.LayoutType == "L005") { // Grid View Only
23184
					_items.push({
23185
						xtype: 'panel',
23186
						title: rec.Title,
23187
						name: 'panelTab' + rec.TableName,
23188
						tbl: rec.TableName,
23189
						layoutType: rec.LayoutType,
23190
						items: [{
23191
								xtype: 'docgrid',
23192
								//minHeight: 200,
23193
								tableName: rec.TableName,
23194
								docType: me.docType,
23195
								transType: me.transType,
23196
								storename: 'store' + rec.TableName,
23197
								pagesize: 25,
23198
								name: 'GRID' + rec.TableName,
23199
								margin: '0 0 10 0',
23200
								autoLoad: false,
23201
								tbar: [{
23202
										xtype: 'tbfill'
23203
									}, {
23204
										text: 'Clear Filters',
23205
										tooltip: 'Clear all filters',
23206
										name: 'clearbtn',
23207
										handler: function () {}
23208
									}
23209
								],
23210
								dockedItems: [{
23211
										xtype: 'pagingtoolbar',
23212
										store: 'store' + rec.TableName,
23213
										dock: 'bottom',
23214
										pageSize: me.pagesize,
23215
										displayInfo: true
23216
									}
23217
								]
23218
							}
23219
						]
23220
					});
23221
				} else if (rec.LayoutType == "L006") {
23222
					_items.push({
23223
						xtype: 'panel',
23224
						title: rec.Title,
23225
						name: 'panelTab' + rec.TableName,
23226
						tbl: rec.TableName,
23227
						layoutType: rec.LayoutType,
23228
						items: [{
23229
								xtype: 'docgridcelledit',
23230
								name: 'CELLGRID' + rec.TableName,
23231
								tableName: rec.TableName,
23232
								docType: me.docType,
23233
								transType: me.transType,
23234
								docNo: me.docNo,
23235
								height: 400,
23236
								hideButton: false,
23237
								margin: '0 0 10 0'
23238
							}
23239
						]
23240
					});
23241
				} else if (rec.LayoutType == "L007") {
23242
					_items.push({
23243
						xtype: 'panel',
23244
						title: rec.Title,
23245
						name: 'panelTab' + rec.TableName,
23246
						tbl: rec.TableName,
23247
						layoutType: rec.LayoutType,
23248
						items: [{
23249
								xtype: 'docgridcelleditsum',
23250
								name: 'CELLGRID' + rec.TableName,
23251
								tableName: rec.TableName,
23252
								docType: me.docType,
23253
								transType: me.transType,
23254
								docNo: me.docNo,
23255
								height: 400,
23256
								hideButton: false,
23257
								margin: '0 0 10 0'
23258
							}, {
23259
								xtype: 'summarydocform',
23260
								name: 'SUM' + rec.TableName,
23261
								id: 'SUM' + rec.TableName,
23262
								itemId: 'SUM' + rec.TableName,
23263
								tableName: rec.TableName,
23264
								docType: me.docType,
23265
								transType: me.transType,
23266
							}
23267
						]
23268
					});
23269
				} else { // L001=Default Form Only
23270
					_items.push({
23271
						xtype: 'panel',
23272
						title: rec.LabelName,
23273
						name: 'panelTab' + rec.TableName,
23274
						tbl: rec.TableName,
23275
						layoutType: rec.LayoutType,
23276
						items: [{
23277
								xtype: 'minovadocform',
23278
								name: 'DISPLAY' + rec.TableName,
23279
								id: 'DISPLAY' + rec.TableName,
23280
								itemId: 'DISPLAY' + rec.TableName,
23281
								tableName: rec.TableName,
23282
								docType: me.docType,
23283
								transType: me.transType,
23284
								isDisplay: true,
23285
								hidden: false,
23286
								buttons: [{
23287
										text: 'Edit',
23288
										name: 'editDISPLAY' + rec.TableName,
23289
										iconCls: 'fa-edit',
23290
										style: 'font-family: FontAwesome',
23291
										handler: function () {
23292
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23293
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23294
											frmDisplay.setHidden(true);
23295
											frmForm.setHidden(false);
23296
											me.action = "1";
23297
										}
23298
									}, {
23299
										text: 'Cancel',
23300
										name: 'cancelDISPLAY' + rec.TableName,
23301
										iconCls: 'fa-reply',
23302
										style: 'font-family: FontAwesome',
23303
										hidden: true
23304
									}
23305
								]
23306
							}, {
23307
								xtype: 'minovadocform',
23308
								name: 'FORM' + rec.TableName,
23309
								id: 'FORM' + rec.TableName,
23310
								itemId: 'FORM' + rec.TableName,
23311
								tableName: rec.TableName,
23312
								docType: me.docType,
23313
								transType: me.transType,
23314
								isDisplay: false,
23315
								hidden: true,
23316
								buttons: [{
23317
										text: 'Save',
23318
										name: 'saveDISPLAY' + rec.TableName,
23319
										iconCls: 'fa-save',
23320
										style: 'font-family: FontAwesome',
23321
										handler: function () {
23322
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23323
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23324
											 var headerDisplay =undefined;
23325
											if(rec.TableName=="PTRPRODUCTIONHEAD"){
23326
												headerDisplay=Ext.ComponentQuery.query('[name=MainHeaderDocument]')[0];
23327
												frmForm.getForm().findField("DocNo").setValue(headerDisplay.getForm().findField("DocNo").getValue());
23328
										frmForm.getForm().findField("DocType").setValue(headerDisplay.getForm().findField("DocType").getValue());
23329
										frmForm.getForm().findField("ProcessID").setValue(headerDisplay.getForm().findField("ProcessID").getValue());
23330
										frmForm.getForm().findField("DocDate").setValue(headerDisplay.getForm().findField("DocDate").getValue());
23331
										frmForm.getForm().findField("DocStatus").setValue(headerDisplay.getForm().findField("DocStatus").getValue());
23332
										frmForm.getForm().findField("OrderDate").setValue(headerDisplay.getForm().findField("OrderDate").getValue());
23333
										frmForm.getForm().findField("Description").setValue(headerDisplay.getForm().findField("Description").getValue());	
23334
										frmForm.getForm().findField("FinishGoods").setValue(headerDisplay.getForm().findField("FinishGoods").getValue());	
23335
											}else{
23336
												headerDisplay=Ext.ComponentQuery.query('[name=MainHeaderMDLogistic]')[0];	
23337
											}
23338
											var frm = frmForm.getForm();
23339
											if (frm.isValid()) {
23340
												
23341
												
23342
												var table = rec.TableName;
23343
												var data = Ext.encode(frmForm.getValues());
23344
												var token = MinovaUtil.SESSIONS.Token;
23345
												var action=action;
23346
												if(action==undefined){action=0};
23347
												var params = {
23348
													apiController: 'api/Devt',
23349
													methodName: 'SaveTableMaster',
23350
													parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
23351
												};
23352
												MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
23353
													var result = Ext.decode(xhr.responseText);
23354
													var r = Ext.decode(result.data);
23355
													if (r.success) {
23356
														headerDisplay.mask("Loading...");
23357
														var idNo = r.data;
23358
														frmForm.getForm().findField("DocNo").setValue(idNo);
23359
														frmDisplay.getForm().setValues(frmForm.getValues());
23360
												headerDisplay.getForm().setValues(frmForm.getValues());
23361
														frmDisplay.setHidden(false);
23362
														frmForm.setHidden(true);
23363
														MinovaMessage('Not Null', '000006', '', 'S');
23364
														headerDisplay.unmask();
23365
													} else {
23366
														MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
23367
													}
23368
												});
23369
											}
23370
										}
23371
									}, {
23372
										text: 'Delete',
23373
										name: 'deleteDISPLAY' + rec.TableName,
23374
										iconCls: 'fa-trash-o',
23375
										style: 'font-family: FontAwesome',
23376
										handler: function () {}
23377
									}, {
23378
										text: 'Cancel',
23379
										name: 'cancelDISPLAY' + rec.TableName,
23380
										iconCls: 'fa-reply',
23381
										style: 'font-family: FontAwesome',
23382
										handler: function () {
23383
											MinovaMessage('Message', '000011', '', 'C', function (respone) {
23384
												if (respone == "yes") {
23385
													var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23386
													var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23387
													frmDisplay.setHidden(false);
23388
													frmForm.setHidden(true);
23389
												}
23390
											});
23391
										}
23392
									}
23393
								]
23394
							}
23395
						]
23396
					});
23397
				}
23398
			});
23399
		}
23400
		Ext.applyIf(me, {
23401
			items: _items
23402
		});
23403
		me.callParent(arguments);
23404
	}
23405
});
23406

    
23407
/*Add by YN ( Tab List for PA on Top)*/
23408
Ext.define('MinovaUtil.MinovaES.MinovaHeaderMDNew', {
23409
    extend: 'Ext.form.Panel',
23410
    alias: ['widget.MinovaHeadermdNew', 'widget.MinovaHeaderMDNew'],
23411
    allTableName: undefined,
23412
    param: undefined,
23413
    //frame: true,
23414
    resizable: true,
23415
    autoScroll: true,
23416
    minHeight: 20,
23417
    layout: 'column',
23418
    name: 'HeaderMD',
23419
    getAllTableName: function () {
23420
        return this.allTableName;
23421
    },
23422
    setAllTableName: function (value) {
23423
        var me = this;
23424
        me.allTableName = value;
23425
        return me;
23426
    },
23427
    listeners: {
23428
        afterrender: function (me) {
23429
            var nowDate = MinovaUtil.GetNowDate()
23430
            var allTbl = me.getAllTableName();
23431
            //alert(allTbl);
23432
            var splitTable = allTbl.split(',')
23433
            splitTable.forEach(function (tbl) {
23434
                // console.log(tbl);
23435
                //set values form
23436
                var nowDate = MinovaUtil.GetNowDate();
23437
                parameter = null;
23438
                if (me.isEmployee == true) {
23439
                    parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("EmployeeID")
23440
                } else {
23441
                    parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("ApplicantID")
23442
                }
23443
                Ext.Ajax.request({
23444
                    method: 'POST',
23445
                    //async: false,
23446
                    url: '/UserControl/GetStore',
23447
                    params: {
23448
                        tableName: tbl,
23449
                        param: parameter
23450
                    },
23451
                    success: function (response) {
23452
                        var results = Ext.decode(response.responseText);
23453
                        hasil = results.data;
23454
                        if (hasil.length > 0) {
23455
                            me.getForm().setValues(hasil[0]);
23456

    
23457
                            //console.log(me)
23458
                        }
23459

    
23460
                    }
23461
                });
23462
            });
23463

    
23464
            //setTimeout(function () {
23465
            //    // var me_ = Ext.ComponentQuery.query('[name=Header]')[0];
23466
            //    // me_.setTitle(me_.getTitle() + ' - ' + Ext.ComponentQuery.query('[name=FullName]')[0].getValue());
23467
            //}, 100);
23468

    
23469
        },
23470

    
23471
    },
23472

    
23473
    initComponent: function () {
23474
        var me = this;
23475
        var col1 = [];
23476
        var col2 = [];
23477
        var hasil = null;
23478
        //get moduletype
23479
        //var ModuleType = 'PA';
23480
        //var ModuleType = MinovaUtil.GetModuleType()
23481
        //get Lang
23482
        var LangId = localStorage.LangId;
23483
        var allTable = null;
23484
        var tbl = null;
23485
        var tblTemp = null;
23486
        var nowDate = MinovaUtil.GetNowDate();
23487
        //var Photo_ = 'nophoto.gif';
23488
        var Photo = 'nophoto.gif';
23489
        tableName = null;
23490
        parameter = null;
23491
        // get Photo
23492
        //hamid200916
23493
        if (me.isEmployee == true) {
23494
            tableName = 'PHRPA0001';
23495
            parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("EmployeeID");
23496
        } else {
23497
            tableName = 'PHRRC0001';
23498
            parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("ApplicantID")
23499
        }
23500
        Ext.Ajax.request({
23501
            method: 'POST',
23502
            async: false,
23503
            url: '/UserControl/GetStore',
23504
            params: {
23505
                tableName: tableName,
23506
                param: parameter
23507
            },
23508
            success: function (response) {
23509
                var results = Ext.decode(response.responseText);
23510
                hasil = results.data;
23511
                if (hasil.length > 0) {
23512
                    dataPhoto = hasil[0].Picture
23513
                    if (dataPhoto != "") {
23514
                        Photo = dataPhoto;
23515
                    }
23516
                }
23517

    
23518
            }
23519
        });
23520

    
23521
        var hasil = undefined;
23522
        Ext.Ajax.request({
23523
            async: false,
23524
            method: 'POST',
23525
            url: '/UserControl/GetStore',
23526
            params: {
23527
                tableName: 'PDSBS0009',
23528
                param: 'MenuID[=]' + MinovaUtil.GetMenuID() + ',LangId[=]' + LangId
23529
            },
23530
            success: function (response) {
23531
                hasil = Ext.decode(response.responseText).data;
23532

    
23533
            }
23534
        });
23535

    
23536
        //sorting results
23537
        hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
23538
        if (hasil.length > 0) {
23539
            Ext.each(hasil, function (rec) {
23540
                tblTemp = rec.TableName;
23541
                if (tbl != tblTemp) {
23542
                    tbl = tblTemp;
23543
                    if (allTable == null) {
23544
                        allTable = tbl
23545
                    } else {
23546
                        allTable = allTable + ',' + tbl
23547
                    }
23548

    
23549
                }
23550
                // build form
23551
                if (rec.TableRef != '') {
23552
                    valueField = null;
23553
                    displayValue = null;
23554
                    Ext.Ajax.request({
23555
                        async: false,
23556
                        method: 'POST',
23557
                        url: '/UserControl/GetStore',
23558
                        params: {
23559
                            tableName: 'SDATATABLEFIELD',
23560
                            param: 'TableName[equal]' + rec.TableRef
23561
                        },
23562
                        success: function (response) {
23563
                            var results = Ext.decode(response.responseText);
23564
                            data_ = results.data;
23565
                            if (data_ != undefined) {
23566
                                valueField_ = $.grep(data_, function (r) {
23567
                                    return r.ValueField == '1'
23568
                                });
23569
                                if (valueField_.length > 0) {
23570
                                    valueField = valueField_[0].FieldName
23571
                                }
23572

    
23573
                                displayValue_ = $.grep(data_, function (r) {
23574
                                    return r.DisplayValue == '1'
23575
                                });
23576
                                if (displayValue_.length > 0) {
23577
                                    displayValue = displayValue_[0].FieldName
23578
                                }
23579
                            }
23580
                        }
23581
                    });
23582

    
23583
                    formfield = new Ext.form.Display({
23584
                        fieldLabel: rec.ScreenCaption,
23585
                        name: rec.FieldName,
23586
                        //value: rec.DefaultValue,
23587
                        padding: 0,
23588
                        labelCls: 'label-minova',
23589
                        labelWidth: 150,
23590
                        anchor: '80%',
23591
                        store: Ext.create('Ext.data.Store', {
23592
                            storeId: 'storeDisplay' + rec.FieldName,
23593
                            //autoLoad: true,
23594
                            proxy: {
23595
                                method: 'POST',
23596
                                type: 'ajax',
23597
                                extraParams: {
23598
                                    tableName: rec.TableRef,
23599
                                    param: ''
23600
                                },
23601
                                reader: {
23602
                                    type: 'json',
23603
                                    root: 'data',
23604
                                    totalProperty: 'data[0].TotalCount'
23605
                                }
23606
                            }
23607
                        }),
23608
                        listeners: {
23609
                            afterrender: function (f) {
23610
                                var store = Ext.StoreMgr.lookup('storeDisplay' + rec.FieldName);
23611
                                var ParamCombo = rec.ParamCombo;
23612
                                var param = '';
23613
                                //if (ParamCombo != '') {
23614
                                if ((rec.TableRef).toLowerCase() == 'phrom0001') {
23615
                                    var splitParam = ParamCombo.split(']');
23616
                                    switch (rec.FieldName) {
23617
                                        case 'Position':
23618
                                            ParamCombo = 'P'
23619
                                            break;
23620
                                        case 'CostCenter':
23621
                                            ParamCombo = 'CC'
23622
                                            break;
23623
                                        case 'Organization':
23624
                                            ParamCombo = 'O'
23625
                                            break;
23626
                                        case 'Job':
23627
                                            ParamCombo = 'J'
23628
                                            break;
23629
                                    }
23630
                                    //if (splitParam.length == 1) {
23631
                                    param = 'StartDate[<=]' + MinovaUtil.GetNowDate() + 'EndDate[>=]' + MinovaUtil.GetNowDate() + ',ObjectClass[=]' + ParamCombo
23632
                                    //} else {
23633
                                    //    param = ParamCombo;
23634
                                    //}
23635
                                }
23636
                                //}
23637
                                Ext.Ajax.request({
23638
                                    method: 'POST',
23639
                                    async: false,
23640
                                    url: '/UserControl/GetStore',
23641
                                    params: {
23642
                                        tableName: rec.TableRef,
23643
                                        param: param
23644
                                    },
23645
                                    success: function (response) {
23646
                                        var results = Ext.decode(response.responseText);
23647

    
23648
                                        //dt = results.data;
23649
                                        store.loadData(results.data);
23650

    
23651
                                    }
23652
                                });
23653
                            },
23654
                            change: function (f) {
23655
                                //alert(this.valueField, value);
23656
                                var display = this.displayField;
23657
                                var value = this.getValue();
23658
                                var st = f.store
23659
                                var r = st.findRecord(f.valueField, f.value)
23660
                                if (r != null) {
23661
                                    f.setRawValue(r.get(f.displayField))
23662
                                } else {
23663
                                    f.setRawValue(f.value);
23664

    
23665
                                }
23666
                            }
23667
                        },
23668
                        queryMode: 'local',
23669
                        displayField: displayValue,
23670
                        valueField: valueField,
23671
                    });
23672
                }
23673
                else {
23674
                    formfield = new Ext.form.Display({
23675
                        fieldLabel: rec.ScreenCaption,
23676
                        name: rec.FieldName,
23677
                        labelCls: 'label-minova',
23678
                        labelWidth: 150,
23679
                        //value: rec.DefaultValue,
23680
                        padding: 0,
23681
                        anchor: '80%'
23682
                    });
23683
                }
23684
                if (isDesk) {
23685
                    if (rec.Column == 1) {
23686
                        col1.push(formfield);
23687
                    } else {
23688
                        col2.push(formfield);
23689
                    }
23690
                } else {
23691
                    col1.push(formfield);
23692
                }
23693

    
23694
            });
23695
            //set allTable
23696
            this.setAllTableName(allTable);
23697
        }
23698

    
23699
        Ext.applyIf(me, {
23700
            items: [
23701
                {
23702
                    width: 150,
23703
                    //margin: '10 5 3 30',
23704
                    margin: '5 0 0 30',
23705
                    height: 130,
23706
                    items: [
23707
                        {
23708
                            xtype: 'image',
23709
                            id: 'imageusermd',
23710
                            name: 'imageusermd',
23711
                            width: 120,
23712
                            height: 120,
23713
                            padding: 5,
23714
                            border: true,
23715
                            src: '/Devt/GetFileData?FileName=' + Photo + '&download=false',
23716
                        }
23717
                    ]
23718
                },
23719
                {
23720
                    bodyPadding: 0,
23721
                    width: 300,
23722
                    margin: '15 0 0 30', //margin: '10 5 3 30',
23723
                    items: col1
23724
                },
23725
                {
23726
                    bodyPadding: 0,
23727
                    //width: 350,
23728
                    margin: '15 0 0 30', //margin: '10 5 3 30',
23729
                    items: col2
23730
                }
23731
            ],
23732
        });
23733

    
23734
        me.callParent(arguments);
23735

    
23736
    }
23737
});
23738

    
23739
//panelTab->panelTab+TableName->GRID+TableName | DISPLAY+TableName | FORM+TableName 
23740
Ext.define('MinovaUtil.MinovaES.MinovaTabListMDNew', {
23741
    extend: 'Ext.tab.Panel',
23742
    alias: ['widget.MinovaTabListMDNew'],
23743
    mixins: [
23744
        'Ext.util.StoreHolder'
23745
    ],
23746
    config: {
23747
        titleField: 'title'
23748
    },
23749
    name: 'gridMenuMD',
23750
    id: 'mainTab',
23751
    moduleType: undefined,
23752
    tablenameheader: undefined,
23753
    langId: undefined,
23754
    param: undefined,
23755
    frame: true,
23756
    //style: {
23757
    //    background: '#ffc'
23758
    //},
23759
    //cls: 'modern-tabpanel',
23760
    //bodyStyle: {
23761
    //    background: '#ffc',
23762
    //    padding: '10px'
23763
    //},
23764
    defaults: {
23765
        scrollable: true,
23766
        iconAlign: 'top',
23767
        userSelectable: {
23768
            bodyElement: true
23769
        }
23770
    },
23771
    tabBar: {
23772
        layout: { pack: 'center' }
23773
    },
23774
    initComponent: function () {
23775
        var me = this;
23776
        var hasil = null;
23777
        var _items = [];
23778

    
23779
        // Ambil Daftar Master Data dari PCMEPMDLIST untuk ditampilkan di Tab
23780
        Ext.Ajax.request({
23781
            async: false,
23782
            method: 'POST',
23783
            url: '/UserControl/GetStore',
23784
            params: {
23785
                tableName: 'PCMEPMDLIST',
23786
                param: 'ModuleType[=]' + me.moduleType + ',Language[=]' + me.langId
23787
            },
23788
            success: function (response) {
23789
                var results = Ext.decode(response.responseText);
23790
                hasil = results.data;
23791
            }
23792
        });
23793
        hasil = hasil.sort(MinovaUtil.SortBySeq("Sequence"));
23794

    
23795
        // Jika Daftar Master ada, Load dari Table PA satu persatu ke setiap Tab
23796
        if (hasil.length > 0) {
23797
            Ext.each(hasil, function (rec) {
23798
                if ((rec.LayoutType == "L003") || (rec.LayoutType == "L004"))  { // L003=GRID, DISPLAY, FORM
23799
                    //panelTab+TableName
23800
                    _items.push({
23801
                        xtype: 'panel',
23802
                        iconCls: rec.IconCls, //"fa fa-address-book-o",
23803
                        title: rec.LabelName,
23804
                        name: 'panelTab' + rec.TableName,
23805
                        record: rec, //dipanggil di mainNew1Controller.js
23806
                        tbl: rec.TableName,
23807
                        //layout: 'center', //bikin layout kacau
23808
                        //cls: 'card',
23809
                        //items: [
23810
                        //    //GRID+TableName (minovagrid1)
23811
                        //    {
23812
                        //        xtype: 'minovagrid1new',
23813
                        //        height: 450,
23814
                        //        tableName: rec.TableName,
23815
                        //        storename: 'store' + rec.TableName,
23816
                        //        pagesize: 25,
23817
                        //        name: 'GRID' + rec.TableName,
23818
                        //        margin: '0 0 10 0',
23819
                        //        autoLoad: false,
23820
                        //        param: 'EmployeeID[=]' + getParam("EmployeeID"),
23821
                        //        //Top Toolbar
23822
                        //        tbar: [
23823
                        //            //tbfill
23824
                        //            {
23825
                        //                xtype: 'tbfill'
23826
                        //            },
23827
                        //            //Combo Action
23828
                        //            {
23829
                        //                xtype: 'button',
23830
                        //                text: 'Action',
23831
                        //                name: 'actionGrid' + rec.TableName,
23832
                        //                menu: [
23833
                        //                    //Add
23834
                        //                    {
23835
                        //                        text: 'Add',
23836
                        //                        name: 'add' + rec.TableName,
23837
                        //                        tbl: rec.TableName,
23838
                        //                        style: 'font-family: FontAwesome',
23839
                        //                        iconCls: 'fa-plus-circle',
23840
                        //                        handler: function () {
23841
                        //                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23842
                        //                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23843
                        //                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23844
                        //                            var keyField = getParam("KeyID");
23845
                        //                            var keyValue = getParam("KeyValue");
23846
                        //                            frmDisplay.reset();
23847
                        //                            frmForm.reset();
23848
                        //                            var idseq = 0;
23849
                        //                            var params = {
23850
                        //                                apiController: 'api/Devt',
23851
                        //                                methodName: 'GetLastSeqID',
23852
                        //                                parameter: 'tableName=' + rec.TableName + '&keyField=' + keyField + '&keyValue=' + keyValue
23853
                        //                            };
23854
                        //                            MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
23855
                        //                                var result = Ext.decode(xhr.responseText);
23856
                        //                                var r = Ext.decode(result.data);
23857
                        //                                idseq = r.data + 1;
23858
                        //                                frmForm.getForm().findField(keyField).setValue(keyValue);
23859
                        //                                frmForm.getForm().findField("SeqID").setValue(idseq);
23860
                        //                            });
23861
                        //                            frmDisplay.setHidden(true);
23862
                        //                            frmForm.setHidden(false);
23863
                        //                            grdPanel.setHidden(true);
23864
                        //                            action = "0";
23865
                        //                        }
23866
                        //                    },
23867
                        //                    //Copy
23868
                        //                    {
23869
                        //                        text: 'Copy',
23870
                        //                        name: 'copy' + rec.TableName,
23871
                        //                        tbl: rec.TableName,
23872
                        //                        iconCls: 'fa-copy',
23873
                        //                        style: 'font-family: FontAwesome',
23874
                        //                        handler: function () {
23875
                        //                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23876
                        //                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23877
                        //                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23878
                        //                            var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
23879
                        //                            var keyField = getParam("KeyID");
23880
                        //                            if (dtrec) {
23881
                        //                                frmDisplay.reset();
23882
                        //                                frmForm.reset();
23883
                        //                                frmForm.getForm().setValues(dtrec.data);
23884
                        //                                frmDisplay.setHidden(true);
23885
                        //                                frmForm.setHidden(false);
23886
                        //                                grdPanel.setHidden(true);
23887
                        //                                action = "0";
23888
                        //                                frmForm.getForm().findField(keyField).setValue("");
23889
                        //                            }
23890
                        //                        }
23891
                        //                    },
23892
                        //                    //Edit
23893
                        //                    {
23894
                        //                        text: 'Edit',
23895
                        //                        name: 'edit' + rec.TableName,
23896
                        //                        tbl: rec.TableName,
23897
                        //                        iconCls: 'fa-edit',
23898
                        //                        style: 'font-family: FontAwesome',
23899
                        //                        handler: function () {
23900
                        //                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23901
                        //                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23902
                        //                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23903
                        //                            var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
23904
                        //                            if (dtrec) {
23905
                        //                                frmDisplay.reset();
23906
                        //                                frmForm.reset();
23907
                        //                                frmForm.getForm().setValues(dtrec.data);
23908
                        //                                frmDisplay.setHidden(true);
23909
                        //                                frmForm.setHidden(false);
23910
                        //                                grdPanel.setHidden(true);
23911
                        //                                action = "1";
23912
                        //                            }
23913
                        //                        }
23914
                        //                    }
23915
                        //                ]
23916
                        //            },
23917
                        //            //Btn Clear Filter
23918
                        //            {
23919
                        //                text: 'Clear Filters',
23920
                        //                tooltip: 'Clear all filters',
23921
                        //                name: 'clearbtn',
23922
                        //                handler: function () { }
23923
                        //            }
23924
                        //        ],
23925
                        //        //Paging Toolbar
23926
                        //        dockedItems: [
23927
                        //            {
23928
                        //                xtype: 'pagingtoolbar',
23929
                        //                store: 'store' + rec.TableName,
23930
                        //                dock: 'bottom',
23931
                        //                pageSize: me.pagesize,
23932
                        //                displayInfo: true
23933
                        //            }
23934
                        //        ],
23935
                        //        //Event Event itemdblclick
23936
                        //        listeners: {
23937
                        //            'itemdblclick': function (me, record, item, index, e, eOpts) {
23938
                        //                var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23939
                        //                var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23940
                        //                var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23941
                        //                frmDisplay.reset();
23942
                        //                frmForm.reset();
23943
                        //                frmDisplay.getForm().setValues(record.data);
23944
                        //                frmForm.getForm().setValues(record.data);
23945
                        //                frmDisplay.setHidden(false);
23946
                        //                frmForm.setHidden(true);
23947
                        //                grdPanel.setHidden(true);
23948
                        //                action = "1";
23949
                        //            }
23950
                        //        }
23951
                        //    },
23952
                        //    //DISPLAY+TableName (minovaform)
23953
                        //    {
23954
                        //        xtype: 'minovaformnew',
23955
                        //        name: 'DISPLAY' + rec.TableName,
23956
                        //        id: 'DISPLAY' + rec.TableName,
23957
                        //        itemId: 'DISPLAY' + rec.TableName,
23958
                        //        tableName: rec.TableName,
23959
                        //        isDisplay: true,
23960
                        //        hidden: true,
23961
                        //        buttons: [
23962
                        //            {
23963
                        //                text: 'Edit',
23964
                        //                name: 'editDISPLAY' + rec.TableName,
23965
                        //                iconCls: 'fa-edit',
23966
                        //                style: 'font-family: FontAwesome',
23967
                        //                handler: function () {
23968
                        //                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23969
                        //                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23970
                        //                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23971
                        //                    frmDisplay.setHidden(true);
23972
                        //                    frmForm.setHidden(false);
23973
                        //                    grdPanel.setHidden(true);
23974
                        //                }
23975
                        //            },
23976
                        //            {
23977
                        //                text: 'Cancel',
23978
                        //                name: 'cancelDISPLAY' + rec.TableName,
23979
                        //                iconCls: 'fa-reply',
23980
                        //                style: 'font-family: FontAwesome',
23981
                        //                handler: function () {
23982
                        //                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23983
                        //                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23984
                        //                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23985
                        //                    frmDisplay.setHidden(true);
23986
                        //                    frmForm.setHidden(true);
23987
                        //                    grdPanel.setHidden(false);
23988
                        //                }
23989
                        //            }
23990
                        //        ]
23991
                        //    },
23992
                        //    //FORM+TableName (minovaform)
23993
                        //    {
23994
                        //        xtype: 'minovaformnew',
23995
                        //        name: 'FORM' + rec.TableName,
23996
                        //        id: 'FORM' + rec.TableName,
23997
                        //        itemId: 'FORM' + rec.TableName,
23998
                        //        tableName: rec.TableName,
23999
                        //        isDisplay: false,
24000
                        //        hidden: true,
24001
                        //        buttons: [
24002
                        //            {
24003
                        //                text: 'Save',
24004
                        //                name: 'saveFORM' + rec.TableName,
24005
                        //                iconCls: 'fa-save',
24006
                        //                style: 'font-family: FontAwesome',
24007
                        //                handler: function () {
24008
                        //                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
24009
                        //                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
24010
                        //                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
24011
                        //                    var frm = frmForm.getForm();
24012
                        //                    if (frm.isValid()) {
24013
                        //                        var keyField = getParam("KeyID");
24014
                        //                        var table = rec.TableName;
24015
                        //                        var data = Ext.encode(frmForm.getValues());
24016
                        //                        var token = MinovaUtil.SESSIONS.Token;
24017
                        //                        var params = {
24018
                        //                            apiController: 'api/Devt',
24019
                        //                            methodName: 'SaveTableMaster',
24020
                        //                            parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
24021
                        //                        };
24022
                        //                        MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
24023
                        //                            var result = Ext.decode(xhr.responseText);
24024
                        //                            var r = Ext.decode(result.data);
24025
                        //                            if (r.success) {
24026
                        //                                frmDisplay.setHidden(true);
24027
                        //                                frmForm.setHidden(true);
24028
                        //                                grdPanel.setHidden(false);
24029
                        //                                grdPanel.getStore().reload();
24030
                        //                                MinovaMessage('Not Null', '000006', '', 'S');
24031
                        //                            } else {
24032
                        //                                MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
24033
                        //                            }
24034
                        //                        });
24035
                        //                    }
24036
                        //                }
24037
                        //            },
24038
                        //            {
24039
                        //                text: 'Delete',
24040
                        //                name: 'deleteFORM' + rec.TableName,
24041
                        //                iconCls: 'fa-trash-o',
24042
                        //                style: 'font-family: FontAwesome ',
24043
                        //                handler: function () {
24044
                        //                    MinovaMessage(' Message ', ' 000007 ', ' ', 'C', function (respone) {
24045
                        //                        if (respone == "yes") {
24046
                        //                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
24047
                        //                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
24048
                        //                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
24049
                        //                            var frm = frmForm.getForm();
24050
                        //                            if (frm.isValid()) {
24051
                        //                                var keyField = getParam("KeyID");
24052
                        //                                var table = rec.TableName;
24053
                        //                                var data = Ext.encode(frmForm.getValues());
24054
                        //                                var token = MinovaUtil.SESSIONS.Token;
24055
                        //                                action = "2";
24056
                        //                                var params = {
24057
                        //                                    apiController: 'api/Devt',
24058
                        //                                    methodName: 'SaveTableMaster',
24059
                        //                                    parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
24060
                        //                                };
24061
                        //                                MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
24062
                        //                                    var result = Ext.decode(xhr.responseText);
24063
                        //                                    var r = Ext.decode(result.data);
24064
                        //                                    if (r.success) {
24065
                        //                                        frmDisplay.setHidden(true);
24066
                        //                                        frmForm.setHidden(true);
24067
                        //                                        grdPanel.setHidden(false);
24068
                        //                                        grdPanel.getStore().reload();
24069
                        //                                        MinovaMessage('Not Null', '000006', '', 'S');
24070
                        //                                    } else {
24071
                        //                                        MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
24072
                        //                                    }
24073
                        //                                });
24074
                        //                            }
24075
                        //                        }
24076
                        //                    });
24077
                        //                }
24078
                        //            },
24079
                        //            {
24080
                        //                text: 'Cancel',
24081
                        //                name: 'cancelFORM' + rec.TableName,
24082
                        //                iconCls: 'fa-reply',
24083
                        //                style: 'font-family: FontAwesome',
24084
                        //                handler: function () {
24085
                        //                    MinovaMessage('Message', '000011', '', 'C', function (respone) {
24086
                        //                        if (respone == "yes") {
24087
                        //                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
24088
                        //                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
24089
                        //                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
24090
                        //                            frmDisplay.setHidden(true);
24091
                        //                            frmForm.setHidden(true);
24092
                        //                            grdPanel.setHidden(false);
24093
                        //                            grdPanel.getStore().reload();
24094
                        //                        }
24095
                        //                    });
24096
                        //                }
24097
                        //            }
24098
                        //        ]
24099
                        //    }
24100
                        //]
24101
                        layoutType: rec.LayoutType //dikomen kalau mau test hilangkan items, bikin layout kacau                       
24102
                    })
24103
                }
24104
            })
24105
        }
24106
        Ext.applyIf(me, {
24107
            items: _items,
24108
            store: hasil
24109
        });
24110
        me.callParent(arguments);
24111
        this.bindStore(this.store, true);
24112
    },
24113

    
24114
    getStoreListeners: function () {
24115
        var me = this;
24116

    
24117
        return {
24118
            refresh: me.onDataRefresh,
24119
            /*replace: me.onReplace,
24120
            add: me.onAdd,
24121
            remove: me.onRemove,
24122
            update: me.onUpdate,
24123
            clear: me.onDataRefresh,
24124
            beginupdate: me.onBeginUpdate,
24125
            endupdate: me.onEndUpdate*/
24126
        };
24127
    },
24128

    
24129
    onBindStore: function (store) {
24130
        //this.onDataRefresh(store);
24131
    },
24132

    
24133
    onDataRefresh: function (store) {
24134
        var me = this,
24135
            titleField = me.getTitleField();
24136

    
24137
        store.each(function (record) {
24138
            var tab = me.getTabByRecord(record);
24139

    
24140
            if (!tab) {
24141
                me.add({
24142
                    title: record.get(titleField)
24143
                });
24144
            }
24145
        });
24146

    
24147
        if (!me.getActiveTab()) {
24148
            me.setActiveTab(0);
24149
        }
24150
    },
24151

    
24152
    getTabByRecord: function (record) {
24153
        var items = this.items,
24154
            tab;
24155

    
24156
        items.each(function (item) {
24157
            if (item.$record === record) {
24158
                tab = item;
24159

    
24160
                return false;
24161
            }
24162
        });
24163

    
24164
        return tab;
24165
    }
24166
});
24167

    
24168
Ext.define('MinovaUtil.MinovaES.MinovaTabListORMNew', {
24169
    extend: 'Ext.tab.Panel',
24170
    alias: ['widget.MinovaTabListORMNew'],
24171
    mixins: [
24172
        'Ext.util.StoreHolder'
24173
    ],
24174
    config: {
24175
        titleField: 'title'
24176
    },
24177
    id: 'mainTab',
24178
    //moduleType: undefined,
24179
    //tablenameheader: undefined,
24180
    //langId: undefined,
24181
    //param: undefined,
24182
    //frame: true,
24183
    //style: {
24184
    //    background: '#ffc'
24185
    //},
24186
    //cls: 'modern-tabpanel',
24187
    //bodyStyle: {
24188
    //    background: '#ffc',
24189
    //    padding: '10px'
24190
    //},
24191
    defaults: {
24192
        scrollable: true,
24193
        iconAlign: 'top',
24194
        userSelectable: {
24195
            bodyElement: true
24196
        }
24197
    },
24198
    tabBar: {
24199
        layout: { pack: 'center' }
24200
    },
24201
    initComponent: function () {
24202
        var me = this;
24203
        var hasil = null;
24204
        var _items = [];
24205
        Ext.applyIf(me, {
24206
            items: _items,
24207
            //store: hasil
24208
            store: Ext.create('Ext.data.Store', {
24209
                storeId: 'gridMenuMDOrm',
24210
                autoLoad: false,
24211
                proxy: {
24212
                    method: 'POST',
24213
                    type: 'ajax',
24214
                    //url: '../../extended/data/menu_md_orm.js',
24215
                    reader: {
24216
                        type: 'json',
24217
                        root: 'data'
24218
                    }
24219
                }
24220
            }),
24221
        });
24222
        me.callParent(arguments);
24223
        this.bindStore(this.store, true);
24224
    },
24225

    
24226
    //listeners: {
24227
    //    'viewready': function (grid) {
24228
    //        grid.getSelectionModel().select(0);
24229
    //        grid.fireEvent('rowClick', grid, 0);
24230
    //    }
24231
    //},
24232
    getStoreListeners: function () {
24233
        var me = this;
24234

    
24235
        return {
24236
            refresh: me.onDataRefresh,
24237
            /*replace: me.onReplace,
24238
            add: me.onAdd,
24239
            remove: me.onRemove,
24240
            update: me.onUpdate,
24241
            clear: me.onDataRefresh,
24242
            beginupdate: me.onBeginUpdate,
24243
            endupdate: me.onEndUpdate*/
24244
        };
24245
    },
24246

    
24247
    onBindStore: function (store) {
24248
        this.onDataRefresh(store);
24249
    },
24250

    
24251
    onDataRefresh: function (store) {
24252
        var me = this,
24253
            titleField = me.getTitleField();
24254
        me.removeAll();
24255
        store.each(function (record) {
24256
            var tab = me.getTabByRecord(record);
24257

    
24258
            if (!tab) {
24259
                me.add({
24260
                    iconCls: 'fa fa-address-book-o', //record.get('IconCls')
24261
                    title: record.get('LabelName'),
24262
                    name: 'panelTab' + record.get('TableName'),
24263
                    record: record, //dipanggil di mainNew1Controller.js
24264
                    tbl: record.get('TableName'),
24265
                    layoutType: record.get('LayoutType')
24266
                });
24267
            }
24268
        });
24269

    
24270
        if (!me.getActiveTab()) {
24271
            me.setActiveTab(0);
24272
        }
24273
    },
24274

    
24275
    getTabByRecord: function (record) {
24276
        var items = this.items,
24277
            tab;
24278

    
24279
        items.each(function (item) {
24280
            //if (item.$record === record) {
24281
            if (item.record === record) {
24282
                tab = item;
24283

    
24284
                return false;
24285
            }
24286
        });
24287

    
24288
        return tab;
24289
    }
24290
});
24291

    
24292
/* BEGIN YN 20211216 */
24293
/*NonEditableGrid ESS Generator YN 20211216 */
24294
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowNonEditableGrid', {
24295
    extend: 'Ext.form.Panel',
24296
    alias: ['widget.minovaworkflownoneditablegrid'],
24297
    requires: [
24298
        'Ext.grid.plugin.CellEditing',
24299
        'Ext.grid.RowNumberer',
24300
        'Ext.grid.Panel',
24301
    ],
24302
    cls: 'grid-ess',
24303
    anchor: '100%',
24304
    tableName: undefined,
24305
    tableNameT: undefined,
24306
    tableNameKey: undefined,
24307
    tableNameTKey: undefined,
24308
    hideButton: undefined,
24309
    multiSelect: undefined,
24310
    formname: this.name,
24311
    bizprocid: undefined,
24312
    bizflowid: undefined,
24313
    taskid: undefined,
24314
    features: undefined,
24315
    //height: 400,
24316
    minHeight: 20,
24317
    maxHeight: 500,
24318
    headerLayout: undefined,
24319
    summaryType: undefined,
24320
    labelText: undefined,
24321
    find: function (searchData, target, accum = []) {
24322
        target.forEach((f) => {
24323
            if (f.columns) {
24324
                //find(searchData, f.columns, accum)
24325
                //console.log(f.columns);
24326
                const newf = f.columns.map(o => {
24327
                    if (o.dataIndex == searchData.dataIndex) {
24328
                        searchData.menuDisabled = true;
24329
                        return searchData;
24330
                    } else {
24331
                        o.menuDisabled = true;
24332
                        return o
24333
                    }
24334
                });                
24335
                accum.push({
24336
                    header: f.header,
24337
                    //columns: {
24338
                    //    defaults: {
24339
                    //        menuDisabled: true
24340
                    //    },
24341
                    //    items: newf
24342
                    //}
24343
                    columns: newf
24344
                });
24345
            } else {
24346
                if (f.dataIndex.includes(searchData.dataIndex)) {
24347
                    accum.push(searchData);
24348
                }
24349
                else {
24350
                    accum.push(f);
24351
                }
24352
            }
24353
        })
24354
        return accum;
24355

    
24356
    },
24357
    initComponent: function () {
24358
        var me = this;
24359
        var isLookup = me.isLookup;
24360
        var hide_ = false;
24361
        var widthLock = 250;
24362
        var checkSelection = '';
24363
        if (me.hideButton == true) {
24364
            hide_ = true;
24365
        }
24366
        if (me.multiSelect) {
24367
            locking = false;
24368
            checkSelection = 'checkboxmodel';
24369
            widthLock = 40;
24370
        }
24371
        var tableName = me.tableName;
24372
        var features = me.features;
24373
        var cols = [];
24374
        var fieldStore = [];
24375
        var _url = 'GetAllField';
24376
        var hasil = null;
24377
        var height = me.height;
24378
        var storeID = 'store' + me.tableName;
24379
        var gridName = 'grid' + me.name;
24380
        if (me.storeName) {
24381
            storeID = me.storeName;
24382
        }
24383
        var LangID = MinovaUtil.GetLangID();
24384
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
24385
        Ext.Ajax.request({
24386
            async: false,
24387
            method: 'POST',
24388
            url: '/UserControl/GetStore',
24389
            params: {
24390
                tableName: 'PDSWFSTRUCTUREFIELD',
24391
                param: parameter
24392
            },
24393
            success: function (response) {
24394
                var results = Ext.decode(response.responseText);
24395
                hasil = results.data;
24396
            }
24397
        });
24398
        //cols.push({
24399
        //    xtype: 'rownumberer'
24400
        //});
24401
        var addData = 'var data={';
24402
        if (hasil.length > 0) {
24403
            Ext.each(hasil, function (rec) {
24404
                fieldStore.push(rec.FieldName);
24405
                if (rec.FieldName != 'Sequence') {
24406
                    addData = addData + rec.FieldName + ":" + "'',";
24407
                }
24408
                var null_ = null;
24409
                var ReadOnly_ = false;
24410
                if (rec.IsRequired == '1') {
24411
                    null_ = false;
24412
                } else {
24413
                    null_ = true;
24414
                }
24415
                var Hidden_ = false;
24416
                if (rec.IsReadOnly == '1') {
24417
                    ReadOnly_ = true;
24418
                }
24419
                if (rec.IsVisible == '1') {
24420
                    switch (rec.FormatRef) {
24421
                        case "date":
24422
                            cols.push({
24423
                                xtype: 'minovadatecolumn',
24424
                                hidden: Hidden_,
24425
                                text: rec.HeaderTitle,
24426
                                dataIndex: rec.FieldName,
24427
                                filter: {
24428
                                    itemDefaults: {
24429
                                        emptyText: 'Search for...',
24430
                                    }
24431
                                }
24432
                            });
24433
                            break
24434
                        case "amount":
24435
                            cols.push({
24436
                                xtype: 'minovacurrancycolumn',
24437
                                align: 'right',
24438
                                text: rec.HeaderTitle,
24439
                                dataIndex: rec.FieldName,
24440
                                hidden: Hidden_,
24441
                                filter: {
24442
                                    itemDefaults: {
24443
                                        emptyText: 'Search for...'
24444
                                    }
24445
                                }
24446
                            });
24447
                            break
24448
                        default:
24449
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
24450
                                cols.push({
24451
                                    text: rec.HeaderTitle,
24452
                                    dataIndex: rec.FieldName,
24453
                                    width: 100,
24454
                                    filter: {
24455
                                        type: 'string',
24456
                                        itemDefaults: {
24457
                                            emptyText: 'Search for...'
24458
                                        }
24459
                                    }
24460
                                });
24461
                            } else if (rec.SearchType == '0') {
24462
                                var valueField = null;
24463
                                var displayValue = null;
24464
                                var TableRef = undefined;
24465
                                if (rec.TableRef != '') {
24466
                                    TableRef = rec.TableRef;
24467
                                    Ext.Ajax.request({
24468
                                        async: false,
24469
                                        method: 'POST',
24470
                                        url: '/UserControl/GetStore',
24471
                                        params: {
24472
                                            tableName: 'SDATATABLEFIELD',
24473
                                            param: 'TableName[equal]' + rec.TableRef
24474
                                        },
24475
                                        success: function (response) {
24476
                                            var results = Ext.decode(response.responseText);
24477
                                            data_ = results.data;
24478
                                            if (data_ != undefined) {
24479
                                                valueField_ = $.grep(data_, function (r) {
24480
                                                    return r.ValueField == '1'
24481
                                                });
24482
                                                valueField = valueField_[0].FieldName
24483
                                                displayValue_ = $.grep(data_, function (r) {
24484
                                                    return r.DisplayValue == '1'
24485
                                                });
24486
                                                displayValue = displayValue_[0].FieldName
24487
                                            }
24488
                                        }
24489
                                    });
24490
                                }
24491
                                Ext.create('Ext.data.Store', {
24492
                                    storeId: 'store_' + me.tableName + rec.FieldName,
24493
                                    autoLoad: true,
24494
                                    proxy: {
24495
                                        method: 'POST',
24496
                                        type: 'ajax',
24497
                                        url: '/UserControl/GetStoreAuth',
24498
                                        extraParams: {
24499
                                            tableName: TableRef,
24500
                                            param: rec.ParamCombo,
24501
                                            menuId: MinovaUtil.GetMenuID()
24502
                                        },
24503
                                        reader: {
24504
                                            type: 'json',
24505
                                            root: 'data',
24506
                                            totalProperty: 'data[0].TotalCount'
24507
                                        }
24508
                                    }
24509
                                });
24510
                                cols.push({
24511
                                    //xtype : 'minovacombocolumn',
24512
                                    hidden: Hidden_,
24513
                                    text: rec.HeaderTitle,
24514
                                    dataIndex: rec.FieldName,
24515
                                    width: (rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
24516
                                    summaryType: function (records) {
24517
                                        var suma = 0;
24518
                                        if (me.summaryType == 'average') {
24519
                                            // Sumar en la columna solo las lineas que estan marcadas para ser sumadas a los totales
24520
                                            Ext.each(records, function (record, index) {
24521
                                                if (record.get(rec.FieldName)) {
24522
                                                    suma = suma + parseFloat(record.get(rec.FieldName).replace(",", "."));
24523
                                                }
24524
                                            });
24525
                                            (records.length == 0) ? suma = 0 : suma = suma / records.length;
24526
                                        }
24527
                                        else if (me.summaryType == 'sum') {
24528
                                            // Sumar en la columna solo las lineas que estan marcadas para ser sumadas a los totales
24529
                                            Ext.each(records, function (record, index) {
24530
                                                if (record.get(rec.FieldName)) {
24531
                                                    suma = suma + parseFloat(record.get(rec.FieldName).replace(",", "."));
24532
                                                }
24533
                                            });
24534
                                        }
24535
                                        
24536
                                        return suma;
24537
                                    },
24538
                                    //valueField : valueField,
24539
                                    //displayField : displayValue,
24540
                                    //store : 'store_' + me.tableName + rec.FieldName,
24541
                                    //renderer: function (value) {
24542
                                    //    var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
24543
                                    //    var index = store.find(valueField, value);
24544
                                    //    var val = "";
24545
                                    //    if (index != -1) {
24546
                                    //        var rc = store.getAt(index);
24547
                                    //        val = rc.get(displayValue);
24548
                                    //    } else {
24549
                                    //        val = value;
24550
                                    //    }
24551
                                    //    return val;
24552
                                    //},
24553
                                    //filter: {
24554
                                    //    type: 'list',
24555
                                    //    itemDefaults: {
24556
                                    //        emptyText: 'Search for...'
24557
                                    //    }
24558
                                    //}
24559
                                });
24560
                            } else if (rec.SearchType == '5') {
24561
                                var valueField = null;
24562
                                var displayValue = null;
24563
                                var AdditionaldisplayValue = null;
24564
                                var TableRef = undefined;
24565
                                if (rec.TableRef != '') {
24566
                                    TableRef = rec.TableRef;
24567
                                    Ext.Ajax.request({
24568
                                        async: false,
24569
                                        method: 'POST',
24570
                                        url: '/UserControl/GetStore',
24571
                                        params: {
24572
                                            tableName: 'SDATATABLEFIELD',
24573
                                            param: 'TableName[equal]' + rec.TableRef
24574
                                        },
24575
                                        success: function (response) {
24576
                                            var results = Ext.decode(response.responseText);
24577
                                            data_ = results.data;
24578
                                            if (data_ != undefined) {
24579
                                                valueField_ = $.grep(data_, function (r) {
24580
                                                    return r.ValueField == '1'
24581
                                                });
24582
                                                if (valueField_.length > 0) {
24583
                                                    valueField = valueField_[0].FieldName
24584
                                                }
24585

    
24586
                                                displayValue_ = $.grep(data_, function (r) {
24587
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
24588
                                                });
24589
                                                if (displayValue_.length > 0) {
24590
                                                    displayValue = displayValue_[0].FieldName;
24591
                                                }
24592
                                                if (displayValue_.length >= 2) {
24593
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
24594
                                                }
24595
                                            }
24596
                                        }
24597
                                    });
24598
                                }
24599
                                Ext.create('Ext.data.Store', {
24600
                                    storeId: 'store_' + me.tableName + rec.FieldName,
24601
                                    autoLoad: true,
24602
                                    proxy: {
24603
                                        method: 'POST',
24604
                                        type: 'ajax',
24605
                                        url: '/UserControl/GetStoreAuth',
24606
                                        extraParams: {
24607
                                            tableName: TableRef,
24608
                                            param: rec.ParamCombo,
24609
                                            menuId: MinovaUtil.GetMenuID()
24610
                                        },
24611
                                        reader: {
24612
                                            type: 'json',
24613
                                            root: 'data',
24614
                                            totalProperty: 'data[0].TotalCount'
24615
                                        }
24616
                                    }
24617
                                });
24618
                                cols.push({
24619
                                    //xtype : 'minovacombocolumn',
24620
                                    hidden: Hidden_,
24621
                                    text: rec.HeaderTitle,
24622
                                    dataIndex: rec.FieldName,
24623
                                    //valueField : valueField,
24624
                                    //displayField : displayValue,
24625
                                    //store : 'store_' + me.tableName + rec.FieldName,
24626
                                    tpl: Ext.create('Ext.XTemplate',
24627
                                        '<ul class="x-list-plain"><tpl for=".">',
24628
                                        '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
24629
                                        '</tpl></ul>'),
24630
                                    displayTpl: Ext.create('Ext.XTemplate',
24631
                                        '<tpl for=".">',
24632
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
24633
                                        '</tpl>'),
24634
                                    renderer: function (value) {
24635
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
24636
                                        var index = store.find(valueField, value);
24637
                                        var val = "";
24638
                                        if (index != -1) {
24639
                                            var rc = store.getAt(index);
24640
                                            //val = rc.get(displayValue);
24641
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
24642
                                        } else {
24643
                                            val = value;
24644
                                        }
24645
                                        return val;
24646
                                    },
24647
                                    filter: {
24648
                                        type: 'list',
24649
                                        itemDefaults: {
24650
                                            emptyText: 'Search for...'
24651
                                        }
24652
                                    }
24653
                                });
24654
                            } else if (rec.SearchType == '2') {
24655
                                var triger = (rec.TriggerCombo).split('$');
24656
                                var targetField_ = triger[0];
24657
                                var fieldValue_ = triger[1];
24658
                                cols.push({
24659
                                    text: rec.HeaderTitle,
24660
                                    hidden: Hidden_,
24661
                                    dataIndex: rec.FieldName,
24662
                                    filter: {
24663
                                        itemDefaults: {
24664
                                            emptyText: 'Search for...'
24665
                                        }
24666
                                    }
24667
                                });
24668
                            } else if (rec.SearchType == '3') {
24669
                                cols.push({
24670
                                    text: rec.HeaderTitle,
24671
                                    hidden: Hidden_,
24672
                                    dataIndex: rec.FieldName,
24673
                                    filter: {
24674
                                        itemDefaults: {
24675
                                            emptyText: 'Search for...'
24676
                                        }
24677
                                    }
24678
                                });
24679
                            } 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) {
24680
                                var triger = (rec.TriggerCombo).split('&');
24681
                                var targetField_ = triger[0];
24682
                                var fieldValue_ = triger[0];
24683
                                cols.push({
24684
                                    text: rec.HeaderTitle,
24685
                                    hidden: Hidden_,
24686
                                    dataIndex: rec.FieldName,
24687
                                    filter: {
24688
                                        itemDefaults: {
24689
                                            emptyText: 'Search for...'
24690
                                        }
24691
                                    }
24692
                                });
24693
                            } else if (rec.SearchType == '4' && isLookup != true) {
24694
                                cols.push({
24695
                                    text: rec.HeaderTitle,
24696
                                    hidden: Hidden_,
24697
                                    dataIndex: rec.FieldName,
24698
                                    filter: {
24699
                                        itemDefaults: {
24700
                                            emptyText: 'Search for...'
24701
                                        }
24702
                                    }
24703
                                });
24704
                            } else if (rec.FixedValue != '') { // add by taufan
24705
                                cols.push({
24706
                                    text: rec.HeaderTitle,
24707
                                    hidden: Hidden_,
24708
                                    dataIndex: rec.FieldName,
24709
                                    filter: {
24710
                                        itemDefaults: {
24711
                                            emptyText: 'Search for...'
24712
                                        }
24713
                                    },
24714
                                    renderer: function (value) {
24715
                                        var val = "";
24716
                                        var storeData = [];
24717
                                        var str = rec.FixedValue;
24718
                                        var hasil = str.split('||');
24719
                                        hasil.forEach(function (h) {
24720
                                            store_ = h.split('=')
24721
                                            storeData.push({
24722
                                                code: store_[0],
24723
                                                desc: store_[1]
24724
                                            });
24725
                                        });
24726
                                        var item = storeData.find(x => x.code == value);
24727
                                        if (item != undefined) {
24728
                                            val = item.desc;
24729
                                        }
24730
                                        return val;
24731
                                    }
24732
                                });
24733
                            } else {
24734
                                _xtype = 'textfield';
24735
                                if (rec.Length > 250) {
24736
                                    _xtype = 'textareafield';
24737
                                }
24738
                                var _custumFunc = null;
24739
                                Ext.Ajax.request({
24740
                                    async: false,
24741
                                    method: 'POST',
24742
                                    url: '/UserControl/GetStore',
24743
                                    params: {
24744
                                        tableName: 'SDATATABLEFIELD',
24745
                                        param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
24746
                                    },
24747
                                    success: function (response) {
24748
                                        var results = Ext.decode(response.responseText);
24749
                                        data_ = results.data[0];
24750
                                        if (data_ != undefined) {
24751
                                            _custumFunc = data_.SelectFunction;
24752
                                        }
24753
                                    }
24754
                                });
24755
                                cols.push({
24756
                                    text: rec.HeaderTitle,
24757
                                    xtype: 'gridcolumn',
24758
                                    hidden: Hidden_,
24759
                                    dataIndex: rec.FieldName,
24760
                                    filter: {
24761
                                        itemDefaults: {
24762
                                            emptyText: 'Search for...'
24763
                                        }
24764
                                    },
24765
                                    cellWrap: true,
24766
                                    //autoSizeColumn: true,
24767
                                    width: (rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
24768
                                    flex: (rec.Length == 'EISelfComent') ? 1 : 0,
24769
                                    renderer: function (v) {
24770
                                        result = v.replace(/\r\n\r\n/g, "</p><p>").replace(/\n\n/g, "</p><p>");
24771
                                        result = result.replace(/\r\n/g, "<br />").replace(/\n/g, "<br />");
24772
                                        return result
24773
                                    }
24774
                                });
24775
                            }
24776
                            break
24777
                    }
24778
                } else {
24779
                    cols.push({
24780
                        text: rec.HeaderTitle,
24781
                        hidden: Hidden_,
24782
                        dataIndex: rec.FieldName,
24783
                        hidden: true,
24784
                        filter: {
24785
                            itemDefaults: {
24786
                                emptyText: 'Search for...'
24787
                            }
24788
                        }
24789
                    });
24790
                }
24791
            });
24792

    
24793
        };
24794
        //Sesuaikan Header Layout
24795
        var col = me.headerLayout;
24796
        if (me.headerLayout != undefined) {
24797
            cols.forEach((f) => {
24798
                col = me.find(f, col);
24799
            })
24800
            cols = col;
24801
        }
24802
        addData = addData + "}";
24803
        Ext.applyIf(me, {            
24804
            items: [{
24805
                xtype: 'grid',
24806
                id: gridName,
24807
                name: gridName,
24808
                tableName: me.tableName,
24809
                tableNameT: me.tableNameT,
24810
                tableNameKey: me.tableNameKey,
24811
                tableNameTKey: me.tableNameTKey,
24812
                minHeight: me.minHeight,
24813
                maxHeight: me.maxHeight,
24814
                //height: me.height,                
24815
                //scrollable: true,
24816
                //flex: 1,
24817
                addFlag: true,
24818
                deleteFlag: true,
24819
                store: Ext.create('Ext.data.Store', {
24820
                    storeId: storeID,
24821
                    fields: fieldStore,
24822
                    //groupField: 'QuestionGroup',
24823
                    grouper: {
24824
                        sortProperty: 'SeqQuest',
24825
                        groupFn: function (record) {
24826
                            return record.get('QuestionGroup');
24827
                        }
24828
                    },
24829
                    proxy: {
24830
                        method: 'POST',
24831
                        type: 'ajax',
24832
                        url: '',
24833
                        reader: {
24834
                            type: 'json',
24835
                            root: 'data'
24836
                        }
24837
                    }
24838
                }),
24839
                dockedItems: [{
24840
                    xtype: 'toolbar',
24841
                    dock: 'bottom',
24842
                    items: [
24843
                        {
24844
                            xtype: 'label',
24845
                            html: me.labelText,
24846
                            margin: '0 0 10 0'
24847
                        },
24848
                        {
24849
                            text: 'Add',
24850
                            hidden: hide_,
24851
                            name: tableName + 'Add',
24852
                            iconCls: 'fa-plus-circle',
24853
                            style: 'font-family: FontAwesome',
24854
                            handler: function () {
24855
                                var grid = Ext.getCmp(gridName);
24856
                                if (grid.addFlag === true) {
24857
                                    var store = Ext.StoreMgr.lookup(storeID)
24858
                                    idx = store.getCount();
24859
                                    var action = getParam('action');
24860
                                    var data = '';
24861
                                    var Sequence = 0;
24862
                                    if (idx == 0) {
24863
                                        Sequence = 1;
24864
                                    } else {
24865
                                        Sequence = 1 + idx;
24866
                                    }
24867
                                    var seq = 'Sequence';
24868
                                    var SequenceValue = Sequence;
24869
                                    eval(addData);
24870
                                    data[seq] = SequenceValue;
24871
                                    store.insert(idx, data);
24872
                                }
24873
                            }
24874
                        },
24875
                        {
24876
                            text: 'Delete',
24877
                            hidden: hide_,
24878
                            name: tableName + 'DeleteText',
24879
                            iconCls: 'fa-trash-o',
24880
                            style: 'font-family: FontAwesome',
24881
                            handler: function () {
24882
                                var grid = Ext.getCmp(gridName);
24883
                                if (grid.deleteFlag === true) {
24884
                                    var me = this,
24885
                                        store = Ext.StoreMgr.lookup(storeID)
24886
                                    var grid = Ext.getCmp(gridName);
24887
                                    Ext.MessageBox.show({
24888
                                        title: 'Remove tab',
24889
                                        msg: "This will remove. Do you want to continue?",
24890
                                        buttons: Ext.MessageBox.YESNO,
24891
                                        fn: function (choice) {
24892
                                            console.log(choice);
24893
                                            if (choice === 'yes') {
24894
                                                var selection = grid.getView().getSelectionModel().getSelection()[0];
24895
                                                if (selection) {
24896
                                                    store.remove(selection);
24897
                                                }
24898
                                            }
24899
                                        }
24900
                                    });
24901
                                }
24902
                            }
24903
                        },
24904
                        {
24905
                            text: 'Edit',
24906
                            hidden: hide_,
24907
                            name: tableName + 'EditText',
24908
                            bizprocid: me.bizprocid,
24909
                            taskid: me.taskid,
24910
                            TableName: tableName,
24911
                            iconCls: 'fa-edit',
24912
                            style: 'font-family: FontAwesome',
24913
                            handler: function () {
24914
                                ////var frmDisplay = Ext.ComponentQuery.query('[name=display' + me.name + ']')[0];
24915
                                //var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.name + ']')[0];
24916
                                //var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
24917
                                //var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
24918
                                //if (frmForm == undefined) {
24919
                                //    frmForm = Ext.create('MinovaUtil.MinovaES.MinovaWorkflowFormGrid', {
24920
                                //        bizprocid: this.bizprocid,
24921
                                //        taskid: this.taskid,
24922
                                //        name: 'form' + this.TableName,
24923
                                //        tableName: this.TableName,
24924
                                //    });
24925
                                //}
24926
                                ////frmForm.reset();
24927
                                ////frmForm.down('form').getForm().loadRecord(dtrec.data);
24928
                                //frmForm.show();
24929

    
24930
                                var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.name + ']')[0];
24931
                                var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
24932
                                var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
24933
                                if (dtrec) {
24934
                                    //frmDisplay.reset();
24935
                                    frmForm.reset();
24936
                                    frmForm.getForm().setValues(dtrec.data);
24937
                                    //frmDisplay.setHidden(true);
24938
                                    frmForm.setHidden(false);
24939
                                    //grdPanel.setHidden(true);
24940
                                    me.action = "1";
24941
                                }
24942

    
24943
                                //var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.name + ']')[0];
24944
                                //var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
24945
                                //if (dtrec) {
24946
                                //    var pnlT = Ext.ComponentQuery.query('[name=panel' + me.tableNameT + ']')[0];
24947
                                //    var grdPanelT = Ext.ComponentQuery.query('[name=grid' + me.tableNameT + ']')[0];
24948
                                //    var dtrecT = grdPanelT.getStore().filter(me.tableNameTKey, dtrec.data[me.tableNameKey]);
24949
                                //    pnlT.setHidden(false);                                   
24950
                                //}
24951
                            }
24952
                        }
24953
                    ]
24954
                }
24955
                ],
24956
                columns: {
24957
                    defaults: {
24958
                        menuDisabled: true
24959
                    },
24960
                    items: cols
24961
                },
24962
                //selType: checkSelection,
24963
                //plugins: {
24964
                //    ptype: 'actionColumnRowEditing', //rowediting
24965
                //    pluginId: 'rowEditing',
24966
                //    hiddenColumnsOnEdit: ['startEditActionColumn'],
24967
                //    clicksToEdit: 2,
24968
                //    saveButtonIconCls: 'x-fa fa-floppy-o',
24969
                //    listeners: {}
24970
                //},
24971
                listeners: {
24972
                    //'beforeedit': function (editor) {
24973
                    //    editor.getEditor().floatingButtons.items.items[0].hide();
24974
                    //    editor.getEditor().floatingButtons.items.items[1].hide();
24975
                    //}
24976
                    'itemdblclick': function (this_, record, item, index, e, eOpts) {
24977
                        var me = this;
24978
                        var frmForm = Ext.ComponentQuery.query('[name=form' + me.tableName + ']')[0];
24979
                        var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.tableName + ']')[0];
24980
                        var dtrec = record;
24981
                        if (dtrec) {
24982
                            //frmDisplay.reset();
24983
                            //frmForm.reset();
24984
                            frmForm.getForm().setValues(dtrec.data);
24985
                            //grdPanel.setHeight(0);
24986
                            //frmDisplay.setHidden(true);
24987
                            frmForm.setHidden(false);
24988
                            //grdPanel.setHidden(true);
24989

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

    
24996
                            me.action = "1";
24997
                        }
24998
                    },
24999
                    'itemclickx': function (this_, record, item, index, e, eOpts) {
25000
                        var me = this;
25001
                        var frmForm = Ext.ComponentQuery.query('[name=form' + me.tableName + ']')[0];
25002
                        frmForm.setHidden(true);
25003
                        ////var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.tablename + ']')[0];
25004
                        //var dtrec = record;
25005
                        //if (dtrec) {
25006
                        //    //frmDisplay.reset();
25007
                        //    //frmForm.reset();
25008
                        //    frmForm.getForm().setValues(dtrec.data);
25009
                        //    //grdPanel.setHeight(0);
25010
                        //    //frmDisplay.setHidden(true);
25011
                        //    frmForm.setHidden(false);
25012
                        //    //grdPanel.setHidden(true);
25013
                        //    action = "1";
25014
                        //}
25015
                        var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.tableName + ']')[0];
25016
                        var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
25017
                        if (dtrec) {
25018
                            var pnlT = Ext.ComponentQuery.query('[name=panel' + me.tableNameT + ']')[0];
25019
                            var grdPanelT = Ext.ComponentQuery.query('[name=grid' + me.tableNameT + ']')[0];
25020
                            var dtrecT = grdPanelT.getStore().filter(me.tableNameTKey, dtrec.data[me.tableNameKey]);
25021
                            pnlT.setTitle('<div style=\"font-size:14px; font-weight: bold;\">Goal ' + dtrec.data[me.tableNameKey] + '-Tasks</div>');
25022
                            pnlT.setHidden(false);
25023
                        }
25024
                    }
25025
                },
25026
                features: features,
25027
                viewConfig: {
25028
                    listeners: {
25029
                        refresh: function (dataview) {
25030
                            Ext.each(dataview.panel.columns, function (column) {
25031
                                //column.autoSize();
25032
                            })
25033
                        }
25034
                    }
25035
                }
25036
            }
25037
            ]
25038
        });
25039
        me.callParent(arguments);  
25040
    },
25041
    listeners: {
25042
        boxready: function (dataview) {
25043
            var grd = Ext.ComponentQuery.query('[name=grid' + this.tableName + ']')[0];
25044
            grd.reconfigure(); //YN 20211217 - Solusi Layout rapih
25045
        }
25046
    }
25047
});
25048

    
25049
/*NonEditableGridT ESS Generator YN 20211216 */
25050
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowNonEditableGridT', {
25051
    extend: 'Ext.form.Panel',
25052
    alias: ['widget.minovaworkflownoneditablegridT'],
25053
    requires: [
25054
        'Ext.grid.plugin.CellEditing',
25055
        'Ext.grid.RowNumberer',
25056
        'Ext.grid.Panel',
25057
    ],
25058
    anchor: '100%',
25059
    tableName: undefined,
25060
    tableNameP: undefined,
25061
    tableNameKey: undefined,
25062
    tableNameFKey: undefined,
25063
    tableNamePKey: undefined,
25064
    parentKey: undefined,
25065
    hideButton: undefined,
25066
    multiSelect: undefined,
25067
    formname: this.name,
25068
    bizprocid: undefined,
25069
    bizflowid: undefined,
25070
    taskid: undefined,
25071
    features: undefined,
25072
    height: 400,
25073
    minHeight: 20,
25074
    maxHeight: 400,
25075
    initComponent: function () {
25076
        var me = this;
25077
        var isLookup = me.isLookup;
25078
        var hide_ = false;
25079
        var widthLock = 250;
25080
        var checkSelection = '';
25081
        if (me.hideButton == true) {
25082
            hide_ = true;
25083
        }
25084
        if (me.multiSelect) {
25085
            locking = false;
25086
            checkSelection = 'checkboxmodel';
25087
            widthLock = 40;
25088
        }
25089
        var tableName = me.tableName;
25090
        var features = me.features;
25091
        var cols = [];
25092
        var fieldStore = [];
25093
        var _url = 'GetAllField';
25094
        var hasil = null;
25095
        var height = me.height;
25096
        var storeID = 'store' + me.tableName + '_' + me.parentKey;
25097
        var gridName = 'grid' + me.name;
25098
        if (me.storeName) {
25099
            storeID = me.storeName;
25100
        }
25101
        var LangID = MinovaUtil.GetLangID();
25102
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
25103
        Ext.Ajax.request({
25104
            async: false,
25105
            method: 'POST',
25106
            url: '/UserControl/GetStore',
25107
            params: {
25108
                tableName: 'PDSWFSTRUCTUREFIELD',
25109
                param: parameter
25110
            },
25111
            success: function (response) {
25112
                var results = Ext.decode(response.responseText);
25113
                hasil = results.data;
25114
            }
25115
        });
25116
        //cols.push({
25117
        //    xtype: 'rownumberer'
25118
        //});
25119
        var addData = 'var data={';
25120
        if (hasil.length > 0) {
25121
            Ext.each(hasil, function (rec) {
25122
                fieldStore.push(rec.FieldName);
25123
                if (rec.FieldName != 'Sequence') {
25124
                    addData = addData + rec.FieldName + ":" + "'',";
25125
                }
25126
                var null_ = null;
25127
                var ReadOnly_ = false;
25128
                if (rec.IsRequired == '1') {
25129
                    null_ = false;
25130
                } else {
25131
                    null_ = true;
25132
                }
25133
                var Hidden_ = false;
25134
                if (rec.IsReadOnly == '1') {
25135
                    ReadOnly_ = true;
25136
                }
25137
                if (rec.IsVisible == '1') {
25138
                    switch (rec.FormatRef) {
25139
                        case "date":
25140
                            cols.push({
25141
                                xtype: 'minovadatecolumn',
25142
                                hidden: Hidden_,
25143
                                text: rec.HeaderTitle,
25144
                                dataIndex: rec.FieldName,
25145
                                filter: {
25146
                                    itemDefaults: {
25147
                                        emptyText: 'Search for...',
25148
                                    }
25149
                                }
25150
                            });
25151
                            break
25152
                        case "amount":
25153
                            cols.push({
25154
                                xtype: 'minovacurrancycolumn',
25155
                                align: 'right',
25156
                                text: rec.HeaderTitle,
25157
                                dataIndex: rec.FieldName,
25158
                                hidden: Hidden_,
25159
                                filter: {
25160
                                    itemDefaults: {
25161
                                        emptyText: 'Search for...'
25162
                                    }
25163
                                }
25164
                            });
25165
                            break
25166
                        default:
25167
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
25168
                                cols.push({
25169
                                    text: rec.HeaderTitle,
25170
                                    dataIndex: rec.FieldName,
25171
                                    width: 100,
25172
                                    filter: {
25173
                                        type: 'string',
25174
                                        itemDefaults: {
25175
                                            emptyText: 'Search for...'
25176
                                        }
25177
                                    }
25178
                                });
25179
                            } else if (rec.SearchType == '0') {
25180
                                var valueField = null;
25181
                                var displayValue = null;
25182
                                var TableRef = undefined;
25183
                                if (rec.TableRef != '') {
25184
                                    TableRef = rec.TableRef;
25185
                                    Ext.Ajax.request({
25186
                                        async: false,
25187
                                        method: 'POST',
25188
                                        url: '/UserControl/GetStore',
25189
                                        params: {
25190
                                            tableName: 'SDATATABLEFIELD',
25191
                                            param: 'TableName[equal]' + rec.TableRef
25192
                                        },
25193
                                        success: function (response) {
25194
                                            var results = Ext.decode(response.responseText);
25195
                                            data_ = results.data;
25196
                                            if (data_ != undefined) {
25197
                                                valueField_ = $.grep(data_, function (r) {
25198
                                                    return r.ValueField == '1'
25199
                                                });
25200
                                                valueField = valueField_[0].FieldName
25201
                                                displayValue_ = $.grep(data_, function (r) {
25202
                                                    return r.DisplayValue == '1'
25203
                                                });
25204
                                                displayValue = displayValue_[0].FieldName
25205
                                            }
25206
                                        }
25207
                                    });
25208
                                }
25209
                                Ext.create('Ext.data.Store', {
25210
                                    storeId: 'store_' + me.tableName + rec.FieldName,
25211
                                    autoLoad: true,
25212
                                    proxy: {
25213
                                        method: 'POST',
25214
                                        type: 'ajax',
25215
                                        url: '/UserControl/GetStoreAuth',
25216
                                        extraParams: {
25217
                                            tableName: TableRef,
25218
                                            param: rec.ParamCombo,
25219
                                            menuId: MinovaUtil.GetMenuID()
25220
                                        },
25221
                                        reader: {
25222
                                            type: 'json',
25223
                                            root: 'data',
25224
                                            totalProperty: 'data[0].TotalCount'
25225
                                        }
25226
                                    }
25227
                                });
25228
                                cols.push({
25229
                                    //xtype : 'minovacombocolumn',
25230
                                    hidden: Hidden_,
25231
                                    text: rec.HeaderTitle,
25232
                                    dataIndex: rec.FieldName,
25233
                                    width: (rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
25234
                                    //valueField : valueField,
25235
                                    //displayField : displayValue,
25236
                                    //store : 'store_' + me.tableName + rec.FieldName,
25237
                                    renderer: function (value) {
25238
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
25239
                                        var index = store.find(valueField, value);
25240
                                        var val = "";
25241
                                        if (index != -1) {
25242
                                            var rc = store.getAt(index);
25243
                                            val = rc.get(displayValue);
25244
                                        } else {
25245
                                            val = value;
25246
                                        }
25247
                                        return val;
25248
                                    },
25249
                                    filter: {
25250
                                        type: 'list',
25251
                                        itemDefaults: {
25252
                                            emptyText: 'Search for...'
25253
                                        }
25254
                                    }
25255
                                });
25256
                            } else if (rec.SearchType == '5') {
25257
                                var valueField = null;
25258
                                var displayValue = null;
25259
                                var AdditionaldisplayValue = null;
25260
                                var TableRef = undefined;
25261
                                if (rec.TableRef != '') {
25262
                                    TableRef = rec.TableRef;
25263
                                    Ext.Ajax.request({
25264
                                        async: false,
25265
                                        method: 'POST',
25266
                                        url: '/UserControl/GetStore',
25267
                                        params: {
25268
                                            tableName: 'SDATATABLEFIELD',
25269
                                            param: 'TableName[equal]' + rec.TableRef
25270
                                        },
25271
                                        success: function (response) {
25272
                                            var results = Ext.decode(response.responseText);
25273
                                            data_ = results.data;
25274
                                            if (data_ != undefined) {
25275
                                                valueField_ = $.grep(data_, function (r) {
25276
                                                    return r.ValueField == '1'
25277
                                                });
25278
                                                if (valueField_.length > 0) {
25279
                                                    valueField = valueField_[0].FieldName
25280
                                                }
25281

    
25282
                                                displayValue_ = $.grep(data_, function (r) {
25283
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
25284
                                                });
25285
                                                if (displayValue_.length > 0) {
25286
                                                    displayValue = displayValue_[0].FieldName;
25287
                                                }
25288
                                                if (displayValue_.length >= 2) {
25289
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
25290
                                                }
25291
                                            }
25292
                                        }
25293
                                    });
25294
                                }
25295
                                Ext.create('Ext.data.Store', {
25296
                                    storeId: 'store_' + me.tableName + rec.FieldName,
25297
                                    autoLoad: true,
25298
                                    proxy: {
25299
                                        method: 'POST',
25300
                                        type: 'ajax',
25301
                                        url: '/UserControl/GetStoreAuth',
25302
                                        extraParams: {
25303
                                            tableName: TableRef,
25304
                                            param: rec.ParamCombo,
25305
                                            menuId: MinovaUtil.GetMenuID()
25306
                                        },
25307
                                        reader: {
25308
                                            type: 'json',
25309
                                            root: 'data',
25310
                                            totalProperty: 'data[0].TotalCount'
25311
                                        }
25312
                                    }
25313
                                });
25314
                                cols.push({
25315
                                    //xtype : 'minovacombocolumn',
25316
                                    hidden: Hidden_,
25317
                                    text: rec.HeaderTitle,
25318
                                    dataIndex: rec.FieldName,
25319
                                    //valueField : valueField,
25320
                                    //displayField : displayValue,
25321
                                    //store : 'store_' + me.tableName + rec.FieldName,
25322
                                    tpl: Ext.create('Ext.XTemplate',
25323
                                        '<ul class="x-list-plain"><tpl for=".">',
25324
                                        '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
25325
                                        '</tpl></ul>'),
25326
                                    displayTpl: Ext.create('Ext.XTemplate',
25327
                                        '<tpl for=".">',
25328
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
25329
                                        '</tpl>'),
25330
                                    renderer: function (value) {
25331
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
25332
                                        var index = store.find(valueField, value);
25333
                                        var val = "";
25334
                                        if (index != -1) {
25335
                                            var rc = store.getAt(index);
25336
                                            //val = rc.get(displayValue);
25337
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
25338
                                        } else {
25339
                                            val = value;
25340
                                        }
25341
                                        return val;
25342
                                    },
25343
                                    filter: {
25344
                                        type: 'list',
25345
                                        itemDefaults: {
25346
                                            emptyText: 'Search for...'
25347
                                        }
25348
                                    }
25349
                                });
25350
                            } else if (rec.SearchType == '2') {
25351
                                var triger = (rec.TriggerCombo).split('$');
25352
                                var targetField_ = triger[0];
25353
                                var fieldValue_ = triger[1];
25354
                                cols.push({
25355
                                    text: rec.HeaderTitle,
25356
                                    hidden: Hidden_,
25357
                                    dataIndex: rec.FieldName,
25358
                                    filter: {
25359
                                        itemDefaults: {
25360
                                            emptyText: 'Search for...'
25361
                                        }
25362
                                    }
25363
                                });
25364
                            } else if (rec.SearchType == '3') {
25365
                                cols.push({
25366
                                    text: rec.HeaderTitle,
25367
                                    hidden: Hidden_,
25368
                                    dataIndex: rec.FieldName,
25369
                                    filter: {
25370
                                        itemDefaults: {
25371
                                            emptyText: 'Search for...'
25372
                                        }
25373
                                    }
25374
                                });
25375
                            } 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) {
25376
                                var triger = (rec.TriggerCombo).split('&');
25377
                                var targetField_ = triger[0];
25378
                                var fieldValue_ = triger[0];
25379
                                cols.push({
25380
                                    text: rec.HeaderTitle,
25381
                                    hidden: Hidden_,
25382
                                    dataIndex: rec.FieldName,
25383
                                    filter: {
25384
                                        itemDefaults: {
25385
                                            emptyText: 'Search for...'
25386
                                        }
25387
                                    }
25388
                                });
25389
                            } else if (rec.SearchType == '4' && isLookup != true) {
25390
                                cols.push({
25391
                                    text: rec.HeaderTitle,
25392
                                    hidden: Hidden_,
25393
                                    dataIndex: rec.FieldName,
25394
                                    filter: {
25395
                                        itemDefaults: {
25396
                                            emptyText: 'Search for...'
25397
                                        }
25398
                                    }
25399
                                });
25400
                            } else if (rec.FixedValue != '') { // add by taufan
25401
                                cols.push({
25402
                                    text: rec.HeaderTitle,
25403
                                    hidden: Hidden_,
25404
                                    dataIndex: rec.FieldName,
25405
                                    filter: {
25406
                                        itemDefaults: {
25407
                                            emptyText: 'Search for...'
25408
                                        }
25409
                                    },
25410
                                    renderer: function (value) {
25411
                                        var val = "";
25412
                                        var storeData = [];
25413
                                        var str = rec.FixedValue;
25414
                                        var hasil = str.split('||');
25415
                                        hasil.forEach(function (h) {
25416
                                            store_ = h.split('=')
25417
                                            storeData.push({
25418
                                                code: store_[0],
25419
                                                desc: store_[1]
25420
                                            });
25421
                                        });
25422
                                        var item = storeData.find(x => x.code == value);
25423
                                        if (item != undefined) {
25424
                                            val = item.desc;
25425
                                        }
25426
                                        return val;
25427
                                    }
25428
                                });
25429
                            } else {
25430
                                _xtype = 'textfield';
25431
                                if (rec.Length > 250) {
25432
                                    _xtype = 'textareafield';
25433
                                }
25434
                                var _custumFunc = null;
25435
                                Ext.Ajax.request({
25436
                                    async: false,
25437
                                    method: 'POST',
25438
                                    url: '/UserControl/GetStore',
25439
                                    params: {
25440
                                        tableName: 'SDATATABLEFIELD',
25441
                                        param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
25442
                                    },
25443
                                    success: function (response) {
25444
                                        var results = Ext.decode(response.responseText);
25445
                                        data_ = results.data[0];
25446
                                        if (data_ != undefined) {
25447
                                            _custumFunc = data_.SelectFunction;
25448
                                        }
25449
                                    }
25450
                                });
25451
                                cols.push({
25452
                                    text: rec.HeaderTitle,
25453
                                    xtype: 'gridcolumn',
25454
                                    hidden: Hidden_,
25455
                                    dataIndex: rec.FieldName,
25456
                                    filter: {
25457
                                        itemDefaults: {
25458
                                            emptyText: 'Search for...'
25459
                                        }
25460
                                    },
25461
                                    cellWrap: true,
25462
                                    width: (rec.Length * 8) > 400 ? 400 : rec.Length * 8,
25463
                                    renderer: function (v) {
25464
                                        result = v.replace(/\r\n\r\n/g, "</p><p>").replace(/\n\n/g, "</p><p>");
25465
                                        result = result.replace(/\r\n/g, "<br />").replace(/\n/g, "<br />");
25466
                                        return result
25467
                                    }
25468
                                });
25469
                            }
25470
                            break
25471
                    }
25472
                } else {
25473
                    cols.push({
25474
                        text: rec.HeaderTitle,
25475
                        hidden: Hidden_,
25476
                        dataIndex: rec.FieldName,
25477
                        hidden: true,
25478
                        filter: {
25479
                            itemDefaults: {
25480
                                emptyText: 'Search for...'
25481
                            }
25482
                        }
25483
                    });
25484
                }
25485
            });
25486

    
25487
        };
25488

    
25489
        addData = addData + "}";
25490
        Ext.applyIf(me, {
25491
            items: [{
25492
                xtype: 'grid',
25493
                id: gridName,
25494
                name: gridName,
25495
                tablename: me.tableName,
25496
                minHeight: me.minHeight,
25497
                maxHeight: me.maxHeight,
25498
                addFlag: true,
25499
                deleteFlag: true,
25500
                store: Ext.create('Ext.data.Store', {
25501
                    storeId: storeID,
25502
                    fields: fieldStore,
25503
                    //groupField: 'QuestionGroup',
25504
                    grouper: {
25505
                        sortProperty: 'SeqQuest',
25506
                        groupFn: function (record) {
25507
                            return record.get('QuestionGroup');
25508
                        }
25509
                    },
25510
                    proxy: {
25511
                        method: 'POST',
25512
                        type: 'ajax',
25513
                        url: '',
25514
                        reader: {
25515
                            type: 'json',
25516
                            root: 'data'
25517
                        }
25518
                    }
25519
                }),
25520
                dockedItems: [{
25521
                    xtype: 'toolbar',
25522
                    items: [
25523
                        {
25524
                            text: 'Add',
25525
                            hidden: hide_,
25526
                            name: tableName + 'Add',
25527
                            iconCls: 'fa-plus-circle',
25528
                            style: 'font-family: FontAwesome',
25529
                            handler: function () {
25530
                                var grid = Ext.getCmp(gridName);
25531
                                if (grid.addFlag === true) {
25532
                                    var store = Ext.StoreMgr.lookup(storeID)
25533
                                    idx = store.getCount();
25534
                                    var action = getParam('action');
25535
                                    var data = '';
25536
                                    var Sequence = 0;
25537
                                    if (idx == 0) {
25538
                                        Sequence = 1;
25539
                                    } else {
25540
                                        Sequence = 1 + idx;
25541
                                    }
25542
                                    var seq = 'Sequence';
25543
                                    var SequenceValue = Sequence;
25544
                                    eval(addData);
25545
                                    var grdParent = Ext.ComponentQuery.query('[name=grid' + me.tableNameP + ']')[0];
25546
                                    var dtParent = grdParent.getView().getSelectionModel().getSelection()[0];
25547
                                    if (dtParent == undefined) {
25548
                                        grdParent.getView().getSelectionModel().select(0);
25549
                                        dtParent = grdParent.getView().getSelectionModel().getSelection()[0];
25550
                                    }
25551
                                    data[seq] = SequenceValue;
25552
                                    data[me.tableNameFKey] = dtParent.data[me.tableNamePKey];
25553
                                    data[me.tableNameKey] = SequenceValue.toString();
25554
                                    store.insert(idx, data);
25555
                                    grid.getView().getSelectionModel().select(idx);
25556
                                    var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
25557
                                    frmForm.reset();
25558
                                    frmForm.getForm().setValues(data);
25559
                                    //frmDisplay.setHidden(true);
25560
                                    frmForm.setHidden(false);
25561
                                }
25562
                            }
25563
                        },
25564
                        {
25565
                            text: 'Delete',
25566
                            hidden: hide_,
25567
                            name: tableName + 'DeleteText',
25568
                            iconCls: 'fa-trash-o',
25569
                            style: 'font-family: FontAwesome',
25570
                            handler: function () {
25571
                                var grid = Ext.getCmp(gridName);
25572
                                if (grid.deleteFlag === true) {
25573
                                    //var me = this,
25574
                                    store = Ext.StoreMgr.lookup(storeID)
25575
                                    var grid = Ext.getCmp(gridName);
25576
                                    Ext.MessageBox.show({
25577
                                        title: 'Remove tab',
25578
                                        msg: "This will remove. Do you want to continue?",
25579
                                        buttons: Ext.MessageBox.YESNO,
25580
                                        fn: function (choice) {
25581
                                            console.log(choice);
25582
                                            if (choice === 'yes') {
25583
                                                var selection = grid.getView().getSelectionModel().getSelection()[0];
25584
                                                if (selection) {
25585
                                                    store.remove(selection);
25586
                                                    var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
25587
                                                    frmForm.reset();
25588
                                                    //frmDisplay.setHidden(true);
25589
                                                    frmForm.setHidden(true);
25590
                                                }
25591
                                            }
25592
                                        }
25593
                                    });
25594
                                }
25595
                            }
25596
                        },
25597
                        {
25598
                            text: 'Edit',
25599
                            hidden: hide_,
25600
                            name: tableName + 'EditText',
25601
                            bizprocid: me.bizprocid,
25602
                            taskid: me.taskid,
25603
                            TableName: tableName,
25604
                            iconCls: 'fa-edit',
25605
                            style: 'font-family: FontAwesome',
25606
                            handler: function () {
25607
                                ////var frmDisplay = Ext.ComponentQuery.query('[name=display' + me.name + ']')[0];
25608
                                //var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.name + ']')[0];
25609
                                //var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
25610
                                //var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
25611
                                //if (frmForm == undefined) {
25612
                                //    frmForm = Ext.create('MinovaUtil.MinovaES.MinovaWorkflowFormGrid', {
25613
                                //        bizprocid: this.bizprocid,
25614
                                //        taskid: this.taskid,
25615
                                //        name: 'form' + this.TableName,
25616
                                //        tableName: this.TableName,
25617
                                //    });
25618
                                //}
25619
                                ////frmForm.reset();
25620
                                ////frmForm.down('form').getForm().loadRecord(dtrec.data);
25621
                                //frmForm.show();
25622

    
25623
                                var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.name + ']')[0];
25624
                                var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
25625
                                var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
25626
                                if (dtrec) {
25627
                                    //frmDisplay.reset();
25628
                                    frmForm.reset();
25629
                                    frmForm.getForm().setValues(dtrec.data);
25630
                                    //frmDisplay.setHidden(true);
25631
                                    frmForm.setHidden(false);
25632
                                    //grdPanel.setHidden(true);
25633
                                    me.action = "1";
25634
                                }
25635
                            }
25636
                        }
25637
                    ]
25638
                }
25639
                ],
25640
                columns: cols,
25641
                //selType: checkSelection,
25642
                //plugins: {
25643
                //    ptype: 'actionColumnRowEditing', //rowediting
25644
                //    pluginId: 'rowEditing',
25645
                //    hiddenColumnsOnEdit: ['startEditActionColumn'],
25646
                //    clicksToEdit: 2,
25647
                //    saveButtonIconCls: 'x-fa fa-floppy-o',
25648
                //    listeners: {}
25649
                //},
25650
                listeners: {
25651
                    //'beforeedit': function (editor) {
25652
                    //    editor.getEditor().floatingButtons.items.items[0].hide();
25653
                    //    editor.getEditor().floatingButtons.items.items[1].hide();
25654
                    //}
25655
                    'itemdblclick': function (this_, record, item, index, e, eOpts) {
25656
                        //var me = this;
25657
                        var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
25658
                        //var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.tablename + ']')[0];
25659
                        var dtrec = record;
25660
                        if (dtrec) {
25661
                            //frmDisplay.reset();
25662
                            //frmForm.reset();
25663
                            frmForm.getForm().setValues(dtrec.data);
25664
                            //grdPanel.setHeight(0);
25665
                            //frmDisplay.setHidden(true);
25666
                            frmForm.setHidden(false);
25667
                            //grdPanel.setHidden(true);
25668
                            me.action = "1";
25669
                        }
25670
                    }
25671
                },
25672
                features: features,
25673
                viewConfig: {
25674
                    listeners: {
25675
                        refresh: function (dataview) {
25676
                            Ext.each(dataview.panel.columns, function (column) {
25677
                                //column.autoSize();
25678
                            })
25679
                        }
25680
                    }
25681
                }
25682
            }
25683
            ]
25684
        });
25685
        me.callParent(arguments);
25686
    },
25687
    listeners: {
25688
        boxready: function (dataview) {
25689
            var grd = Ext.ComponentQuery.query('[name=grid' + this.name + ']')[0];
25690
            grd.reconfigure(); //YN 20211217 - Solusi Layout rapih
25691
        }
25692
    }
25693
});
25694

    
25695
/*Form ESS Generator YN 20211216*/
25696
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowFormGrid', {
25697
    extend: 'Ext.form.Panel',
25698
    alias: ['widget.MinovaWorkflowFormGrid', 'widget.minovaworkflowformgrid', 'widget.workflowformgrid'],
25699
    controller: 'workflowformgrid',
25700
    formname: this.name,
25701
    bizprocid: undefined,
25702
    bizflowid: undefined,
25703
    taskid: undefined,
25704
    tableName: undefined,
25705
    tableNameT: undefined,
25706
    titleform: undefined,
25707
    labelWidth: 150,
25708
    //resizable: true,
25709
    border: true,
25710
    autoScroll: true,
25711
    minHeight: 20,
25712
    layout: {
25713
        type: 'hbox'
25714
    },
25715
    listeners: {
25716
        render: function () {
25717
            if (this.titleform != undefined) {
25718
                this.setTitle(this.titleform);
25719
            }
25720
        },
25721
    },
25722
    buttonAlign: 'left',
25723
    defaults: {
25724
        layout: 'anchor',
25725
        xtype: 'container',
25726
        flex: 1,
25727
        margin: '10px',
25728
        //defaultType: 'textfield',
25729
        //anchor: '100%',
25730
        ////style: 'width: 50%',
25731
    },
25732
    initComponent: function () {
25733
        var col1 = [];
25734
        var col2 = [];
25735
        var me = this;
25736
        var LangID = localStorage.LangId;
25737
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
25738
        var formname_ = me.name;
25739
        var nameTable_ = me.tableName;
25740
        //var labelWidth = 150;
25741
        Ext.Ajax.request({
25742
            async: false,
25743
            method: 'POST',
25744
            url: '/UserControl/GetStore',
25745
            params: {
25746
                tableName: 'PDSWFSTRUCTUREFIELD',
25747
                param: parameter
25748
            },
25749
            success: function (response) {
25750
                var results = Ext.decode(response.responseText);
25751
                hasil = results.data;
25752
            }
25753
        });
25754
        if (hasil.length > 0) {
25755
            Ext.each(hasil, function (rec) {
25756
                var formfield = undefined;
25757
                var readonly = false;
25758
                var ishidden = false;
25759
                var allowblank = true;
25760
                var startDt = null;
25761
                var endDt = null;
25762
                if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
25763
                    startDt = 'StartDate';
25764
                    endDt = 'EndDate';
25765
                }
25766
                if (rec.IsReadOnly == '1') {
25767
                    readonly = true;
25768
                }
25769
                if (rec.IsRequired == '1') {
25770
                    allowblank = false;
25771
                }
25772
                if (rec.IsVisible == '0') {
25773
                    ishidden = true;
25774
                }
25775
                if (rec.SearchType == "") //textfield
25776
                {
25777
                    switch (rec.FormatRef) {
25778
                        case "date":
25779
                            if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
25780
                                formfield = new Ext.form.DateField({
25781
                                    allowBlank: allowblank,
25782
                                    fieldLabel: rec.ScreenCaption,
25783
                                    readOnly: readonly,
25784
                                    msgTarget: 'side',
25785
                                    //labelCls: 'label-minova',
25786
                                    labelWidth: me.labelWidth,
25787
                                    hidden: ishidden,
25788
                                    name: rec.FieldName,
25789
                                    submitFormat: 'Ymd',
25790
                                    value: rec.DefaultValue,
25791
                                    anchor: '100%',
25792
                                    vtype: 'daterange',
25793
                                    start: startDt,
25794
                                    end: endDt,
25795
                                    formname: formname_,
25796
                                    nameTable: nameTable_,
25797
                                    hideMode: 'visibility',
25798
                                    listeners: {
25799
                                        change: function (val) {
25800
                                            var _label = val.name;
25801
                                            var _form = val.formname;
25802
                                            var _Value = val.getValue();
25803
                                            var target = rec.TriggerCombo;
25804
                                            var custumFunc = rec.SelectFunction;
25805
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25806
                                                Ext.Ajax.request({
25807
                                                    async: false,
25808
                                                    method: 'POST',
25809
                                                    url: '/UserControl/GetStore',
25810
                                                    params: {
25811
                                                        tableName: 'PCMFUNC',
25812
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25813
                                                    },
25814
                                                    success: function (response) {
25815
                                                        var results = Ext.decode(response.responseText);
25816
                                                        data_ = results.data[0];
25817
                                                        if (data_ != undefined) {
25818
                                                            custumFunc = data_.FunctionCode;
25819
                                                        }
25820
                                                    }
25821
                                                });
25822
                                            }
25823
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25824
                                            if (frm) {
25825
                                                if (custumFunc) {
25826
                                                    eval(custumFunc)
25827
                                                }
25828
                                            }
25829
                                        }
25830
                                    }
25831
                                });
25832
                            } else {
25833
                                formfield = new Ext.form.DateField({
25834
                                    allowBlank: allowblank,
25835
                                    fieldLabel: rec.ScreenCaption,
25836
                                    readOnly: readonly,
25837
                                    msgTarget: 'side',
25838
                                    //labelCls: 'label-minova',
25839
                                    labelWidth: me.labelWidth,
25840
                                    hidden: ishidden,
25841
                                    name: rec.FieldName,
25842
                                    submitFormat: 'Ymd',
25843
                                    value: rec.DefaultValue,
25844
                                    anchor: '100%',
25845
                                    formname: formname_,
25846
                                    nameTable: nameTable_,
25847
                                    hideMode: 'visibility',
25848
                                    listeners: {
25849
                                        change: function (val) {
25850
                                            var _label = val.name;
25851
                                            var _form = val.formname;
25852
                                            var _Value = val.getValue();
25853
                                            var target = rec.TriggerCombo;
25854
                                            var custumFunc = rec.SelectFunction;
25855
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25856
                                                Ext.Ajax.request({
25857
                                                    async: false,
25858
                                                    method: 'POST',
25859
                                                    url: '/UserControl/GetStore',
25860
                                                    params: {
25861
                                                        tableName: 'PCMFUNC',
25862
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25863
                                                    },
25864
                                                    success: function (response) {
25865
                                                        var results = Ext.decode(response.responseText);
25866
                                                        data_ = results.data[0];
25867
                                                        if (data_ != undefined) {
25868
                                                            custumFunc = data_.FunctionCode;
25869
                                                        }
25870
                                                    }
25871
                                                });
25872
                                            }
25873
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25874
                                            if (frm) {
25875
                                                if (custumFunc) {
25876
                                                    eval(custumFunc)
25877
                                                }
25878
                                            }
25879
                                        }
25880
                                    }
25881
                                });
25882
                            }
25883
                            break;
25884
                        case "time":
25885
                            formfield = new Ext.form.TimeField({
25886
                                allowBlank: allowblank,
25887
                                fieldLabel: rec.ScreenCaption,
25888
                                readOnly: readonly,
25889
                                //labelCls: 'label-minova',
25890
                                labelWidth: me.labelWidth,
25891
                                hidden: ishidden,
25892
                                name: rec.FieldName,
25893
                                msgTarget: 'side',
25894
                                format: 'Hi',
25895
                                submitFormat: 'Hi',
25896
                                increment: 5,
25897
                                value: rec.DefaultValue,
25898
                                anchor: '100%',
25899
                                formname: formname_,
25900
                                nameTable: nameTable_,
25901
                                listeners: {
25902
                                    change: function (val) {
25903
                                        var _label = val.name;
25904
                                        var _form = val.formname;
25905
                                        var _Value = val.getValue();
25906
                                        var target = rec.TriggerCombo;
25907
                                        var custumFunc = rec.SelectFunction;
25908
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25909
                                            Ext.Ajax.request({
25910
                                                async: false,
25911
                                                method: 'POST',
25912
                                                url: '/UserControl/GetStore',
25913
                                                params: {
25914
                                                    tableName: 'PCMFUNC',
25915
                                                    param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
25916
                                                },
25917
                                                success: function (response) {
25918
                                                    var results = Ext.decode(response.responseText);
25919
                                                    data_ = results.data[0];
25920
                                                    if (data_ != undefined) {
25921
                                                        custumFunc = data_.FunctionCode;
25922
                                                    }
25923
                                                }
25924
                                            });
25925
                                        }
25926
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25927
                                        if (frm) {
25928
                                            if (custumFunc) {
25929
                                                eval(custumFunc)
25930
                                            }
25931
                                        }
25932
                                    }
25933
                                }
25934
                            });
25935
                            break;
25936
                        case "amount":
25937
                            formfield = new Ext.form.TextField({
25938
                                allowBlank: allowblank,
25939
                                fieldLabel: rec.ScreenCaption,
25940
                                readOnly: readonly,
25941
                                //labelCls: 'label-minova',
25942
                                labelWidth: me.labelWidth,
25943
                                hidden: ishidden,
25944
                                name: rec.FieldName,
25945
                                msgTarget: 'side',
25946
                                value: rec.DefaultValue,
25947
                                maxLength: rec.Length,
25948
                                anchor: '100%',
25949
                                formname: formname_,
25950
                                nameTable: nameTable_,
25951
                                fieldStyle: 'text-align:right;',
25952
                                listeners: {
25953
                                    change: function (val) {
25954
                                        var _label = val.name;
25955
                                        var _form = val.formname;
25956
                                        var _Value = val.getValue();
25957
                                        var target = rec.TriggerCombo;
25958
                                        var custumFunc = rec.SelectFunction;
25959
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25960
                                            Ext.Ajax.request({
25961
                                                async: false,
25962
                                                method: 'POST',
25963
                                                url: '/UserControl/GetStore',
25964
                                                params: {
25965
                                                    tableName: 'PCMFUNC',
25966
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25967
                                                },
25968
                                                success: function (response) {
25969
                                                    var results = Ext.decode(response.responseText);
25970
                                                    data_ = results.data[0];
25971
                                                    if (data_ != undefined) {
25972
                                                        custumFunc = data_.FunctionCode;
25973
                                                    }
25974
                                                }
25975
                                            });
25976
                                        }
25977
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25978
                                        if (frm) {
25979
                                            if (custumFunc) {
25980
                                                eval(custumFunc)
25981
                                            }
25982
                                        }
25983
                                    }
25984
                                }
25985
                            });
25986
                            break;
25987
                        case "file":
25988
                            formfield = new MinovaUtil.MinovaES.UploadFile({
25989
                                allowBlank: allowblank,
25990
                                fieldLabel: rec.ScreenCaption,
25991
                                readOnly: readonly,
25992
                                readOnlyCls: 'minova-readonly',
25993
                                hidden: ishidden,
25994
                                //labelCls: 'label-minova',
25995
                                name: rec.FieldName,
25996
                                msgTarget: 'side',
25997
                                fieldname: rec.FieldName,
25998
                                IsPrimaryKey: rec.IsPrimaryKey,
25999
                                tableName: rec.TableRef,
26000
                                triggerCls: 'x-form-search-trigger',
26001
                                formtarget: me.formname,
26002
                                anchor: '100%',
26003
                                formname: formname_,
26004
                                nameTable: nameTable_,
26005
                                listeners: {
26006
                                    change: function (val) {
26007
                                        var _label = val.name;
26008
                                        var _form = val.formname;
26009
                                        var _Value = val.getValue();
26010
                                        var target = rec.TriggerCombo;
26011
                                        var custumFunc = rec.SelectFunction;
26012
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26013
                                            Ext.Ajax.request({
26014
                                                async: false,
26015
                                                method: 'POST',
26016
                                                url: '/UserControl/GetStore',
26017
                                                params: {
26018
                                                    tableName: 'PCMFUNC',
26019
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26020
                                                },
26021
                                                success: function (response) {
26022
                                                    var results = Ext.decode(response.responseText);
26023
                                                    data_ = results.data[0];
26024
                                                    if (data_ != undefined) {
26025
                                                        custumFunc = data_.FunctionCode;
26026
                                                    }
26027
                                                }
26028
                                            });
26029
                                        }
26030
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26031
                                        if (frm) {
26032
                                            if (target) {
26033
                                                var f = frm.getForm().findField(target)
26034
                                                _store = f.getStore();
26035
                                                var _tbl = _store.proxy.extraParams.tableName;
26036
                                                var oldParam = _store.proxy.extraParams.param;
26037
                                                _store.proxy.extraParams = {
26038
                                                    tableName: _tbl,
26039
                                                    param: _label + '[=]' + _Value
26040
                                                };
26041
                                                _store.load();
26042
                                            }
26043
                                            if (custumFunc) {
26044
                                                eval(custumFunc)
26045
                                            }
26046
                                        }
26047
                                    }
26048
                                }
26049
                            });
26050
                            break;
26051
                        default:
26052
                            if (rec.DataType == 0) {
26053
                                if (rec.Length > 250) {
26054
                                    formfield = new Ext.form.TextArea({
26055
                                        allowBlank: allowblank,
26056
                                        fieldLabel: rec.ScreenCaption,
26057
                                        readOnly: readonly,
26058
                                        ////labelCls: 'label-minova',
26059
                                        labelWidth: me.labelWidth,
26060
                                        hidden: ishidden,
26061
                                        name: rec.FieldName,
26062
                                        msgTarget: 'side',
26063
                                        value: rec.DefaultValue,
26064
                                        maxLength: rec.Length,
26065
                                        anchor: '100%',
26066
                                        grow: true,
26067
                                        formname: formname_,
26068
                                        nameTable: nameTable_,
26069
                                        listeners: {
26070
                                            change: function (val) {
26071
                                                var _label = val.name;
26072
                                                var _form = val.formname;
26073
                                                var _Value = val.getValue();
26074
                                                var target = rec.TriggerCombo;
26075
                                                var custumFunc = rec.SelectFunction;
26076
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26077
                                                    Ext.Ajax.request({
26078
                                                        async: false,
26079
                                                        method: 'POST',
26080
                                                        url: '/UserControl/GetStore',
26081
                                                        params: {
26082
                                                            tableName: 'PCMFUNC',
26083
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26084
                                                        },
26085
                                                        success: function (response) {
26086
                                                            var results = Ext.decode(response.responseText);
26087
                                                            data_ = results.data[0];
26088
                                                            if (data_ != undefined) {
26089
                                                                custumFunc = data_.FunctionCode;
26090
                                                            }
26091
                                                        }
26092
                                                    });
26093
                                                }
26094
                                                var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26095
                                                if (frm) {
26096
                                                    if (custumFunc) {
26097
                                                        eval(custumFunc)
26098
                                                    }
26099
                                                }
26100
                                            }
26101
                                        }
26102
                                    });
26103
                                } else {
26104
                                    if (rec.FixedValue != '') {
26105
                                        var storeData = [];
26106
                                        var str = rec.FixedValue;
26107
                                        var hasil = str.split('||');
26108
                                        hasil.forEach(function (h) {
26109
                                            store_ = h.split('=')
26110
                                            storeData.push({
26111
                                                code: store_[0],
26112
                                                desc: store_[1],
26113
                                            });
26114
                                        });
26115
                                        formfield = new Ext.form.ComboBox({
26116
                                            allowBlank: allowblank,
26117
                                            fieldLabel: rec.ScreenCaption,
26118
                                            forceSelection: true,
26119
                                            readOnly: readonly,
26120
                                            //labelCls: 'label-minova',
26121
                                            labelWidth: me.labelWidth,
26122
                                            hidden: ishidden,
26123
                                            name: rec.FieldName,
26124
                                            msgTarget: 'side',
26125
                                            value: rec.DefaultValue,
26126
                                            anchor: '100%',
26127
                                            formname: formname_,
26128
                                            nameTable: nameTable_,
26129
                                            formtarget: me.formname,
26130
                                            store: Ext.create('Ext.data.Store', {
26131
                                                storeId: 'store' + rec.FieldName,
26132
                                                autoLoad: true,
26133
                                                data: storeData
26134

    
26135
                                            }),
26136
                                            listeners: {
26137
                                                change: function (val) {
26138
                                                    var _label = val.name;
26139
                                                    var _form = val.formtarget;
26140
                                                    var _Value = val.getValue();
26141
                                                    var target = rec.TriggerCombo;
26142
                                                    var custumFunc = rec.SelectFunction;
26143
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26144
                                                    if (frm) {
26145
                                                        if (target) {
26146
                                                            var f = frm.getForm().findField(target)
26147
                                                            _store = f.getStore();
26148
                                                            var _tbl = _store.proxy.extraParams.tableName;
26149
                                                            var oldParam = _store.proxy.extraParams.param;
26150
                                                            _store.proxy.extraParams = {
26151
                                                                tableName: _tbl,
26152
                                                                param: _label + '[=]' + _Value
26153
                                                            };
26154
                                                            _store.load();
26155
                                                        }
26156
                                                        if (custumFunc) {
26157
                                                            eval(custumFunc)
26158
                                                        }
26159
                                                    }
26160
                                                }
26161
                                            },
26162
                                            queryMode: 'local',
26163
                                            valueField: 'code',
26164
                                            displayField: 'desc',
26165
                                        });
26166
                                    } else {
26167
                                        formfield = new Ext.form.TextField({
26168
                                            allowBlank: allowblank,
26169
                                            fieldLabel: rec.ScreenCaption,
26170
                                            readOnly: readonly,
26171
                                            //labelCls: 'label-minova',
26172
                                            labelWidth: me.labelWidth,
26173
                                            hidden: ishidden,
26174
                                            name: rec.FieldName,
26175
                                            msgTarget: 'side',
26176
                                            value: rec.DefaultValue,
26177
                                            maxLength: rec.Length,
26178
                                            anchor: '100%',
26179
                                            formname: formname_,
26180
                                            nameTable: nameTable_,
26181
                                            listeners: {
26182
                                                change: function (val) {
26183
                                                    var _label = val.name;
26184
                                                    var _form = val.formname;
26185
                                                    var _Value = val.getValue();
26186
                                                    var target = rec.TriggerCombo;
26187
                                                    var custumFunc = rec.SelectFunction;
26188
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26189
                                                        Ext.Ajax.request({
26190
                                                            async: false,
26191
                                                            method: 'POST',
26192
                                                            url: '/UserControl/GetStore',
26193
                                                            params: {
26194
                                                                tableName: 'PCMFUNC',
26195
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26196
                                                            },
26197
                                                            success: function (response) {
26198
                                                                var results = Ext.decode(response.responseText);
26199
                                                                data_ = results.data[0];
26200
                                                                if (data_ != undefined) {
26201
                                                                    custumFunc = data_.FunctionCode;
26202
                                                                }
26203
                                                            }
26204
                                                        });
26205
                                                    }
26206
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26207
                                                    if (frm) {
26208
                                                        if (custumFunc) {
26209
                                                            eval(custumFunc)
26210
                                                        }
26211
                                                    }
26212
                                                }
26213
                                            }
26214
                                        });
26215
                                    }
26216
                                }
26217
                            } else if (rec.DataType == 1 || rec.DataType == 2) {
26218
                                formfield = new MinovaUtil.MinovaES.MinovaNumberField({
26219
                                    allowBlank: allowblank,
26220
                                    fieldLabel: rec.ScreenCaption,
26221
                                    readOnly: readonly,
26222
                                    //labelCls: 'label-minova',
26223
                                    labelWidth: me.labelWidth,
26224
                                    msgTarget: 'side',
26225
                                    hidden: ishidden,
26226
                                    name: rec.FieldName,
26227
                                    value: rec.DefaultValue,
26228
                                    maxLength: rec.Length,
26229
                                    anchor: '100%',
26230
                                    formname: formname_,
26231
                                    nameTable: nameTable_,
26232
                                    fieldStyle: 'text-align:right;',
26233
                                    listeners: {
26234
                                        change: function (val) {
26235
                                            var _label = val.name;
26236
                                            var _form = val.formname;
26237
                                            var _Value = val.getValue();
26238
                                            var target = rec.TriggerCombo;
26239
                                            var custumFunc = rec.SelectFunction;
26240
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26241
                                                Ext.Ajax.request({
26242
                                                    async: false,
26243
                                                    method: 'POST',
26244
                                                    url: '/UserControl/GetStore',
26245
                                                    params: {
26246
                                                        tableName: 'PCMFUNC',
26247
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26248
                                                    },
26249
                                                    success: function (response) {
26250
                                                        var results = Ext.decode(response.responseText);
26251
                                                        data_ = results.data[0];
26252
                                                        if (data_ != undefined) {
26253
                                                            custumFunc = data_.FunctionCode;
26254
                                                        }
26255
                                                    }
26256
                                                });
26257
                                            }
26258
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26259
                                            if (frm) {
26260
                                                if (target) {
26261
                                                    var f = frm.getForm().findField(target)
26262
                                                    _store = f.getStore();
26263
                                                    var _tbl = _store.proxy.extraParams.tableName;
26264
                                                    var oldParam = _store.proxy.extraParams.param;
26265
                                                    _store.proxy.extraParams = {
26266
                                                        tableName: _tbl,
26267
                                                        param: _label + '[=]' + _Value
26268
                                                    };
26269
                                                    _store.load();
26270
                                                }
26271
                                                if (custumFunc) {
26272
                                                    eval(custumFunc)
26273
                                                }
26274
                                            }
26275
                                        }
26276
                                    }
26277
                                });
26278
                            } else if (rec.DataType == 3) {
26279
                                formfield = new Ext.form.TextField({
26280
                                    allowBlank: allowblank,
26281
                                    fieldLabel: rec.ScreenCaption,
26282
                                    readOnly: readonly,
26283
                                    //labelCls: 'label-minova',
26284
                                    labelWidth: me.labelWidth,
26285
                                    msgTarget: 'side',
26286
                                    hidden: ishidden,
26287
                                    name: rec.FieldName,
26288
                                    value: rec.DefaultValue,
26289
                                    maxLength: rec.Length,
26290
                                    precision: rec.Prec,
26291
                                    anchor: '100%',
26292
                                    formname: formname_,
26293
                                    nameTable: nameTable_,
26294
                                    fieldStyle: 'text-align:right;',
26295
                                    maskRe: '^[0-9]+(\.[0-9]{1,2})?$',
26296
                                    listeners: {
26297
                                        change: function (val) {
26298
                                            var _label = val.name;
26299
                                            var _form = val.formname;
26300
                                            var _Value = val.getValue();
26301
                                            var target = rec.TriggerCombo;
26302
                                            var custumFunc = rec.SelectFunction;
26303
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26304
                                                Ext.Ajax.request({
26305
                                                    async: false,
26306
                                                    method: 'POST',
26307
                                                    url: '/UserControl/GetStore',
26308
                                                    params: {
26309
                                                        tableName: 'PCMFUNC',
26310
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26311
                                                    },
26312
                                                    success: function (response) {
26313
                                                        var results = Ext.decode(response.responseText);
26314
                                                        data_ = results.data[0];
26315
                                                        if (data_ != undefined) {
26316
                                                            custumFunc = data_.FunctionCode;
26317
                                                        }
26318
                                                    }
26319
                                                });
26320
                                            }
26321
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26322
                                            if (frm) {
26323
                                                if (target) {
26324
                                                    var f = frm.getForm().findField(target)
26325
                                                    _store = f.getStore();
26326
                                                    var _tbl = _store.proxy.extraParams.tableName;
26327
                                                    var oldParam = _store.proxy.extraParams.param;
26328
                                                    _store.proxy.extraParams = {
26329
                                                        tableName: _tbl,
26330
                                                        param: _label + '[=]' + _Value
26331
                                                    };
26332
                                                    _store.load();
26333
                                                }
26334
                                                if (custumFunc) {
26335
                                                    eval(custumFunc)
26336
                                                }
26337
                                            }
26338
                                        }
26339
                                    }
26340
                                });
26341
                            }
26342
                    }
26343
                } else if (rec.SearchType != "") {
26344
                    if (rec.SearchType == "0") //combobox
26345
                    {
26346
                        valueField = null;
26347
                        displayValue = null;
26348
                        if (rec.TableRef != "") {
26349
                            Ext.Ajax.request({
26350
                                async: false,
26351
                                method: 'POST',
26352
                                url: '/UserControl/GetStore',
26353
                                params: {
26354
                                    tableName: 'SDATATABLEFIELD',
26355
                                    param: 'TableName[equal]' + rec.TableRef
26356
                                },
26357
                                success: function (response) {
26358
                                    var results = Ext.decode(response.responseText);
26359
                                    data_ = results.data;
26360
                                    if (data_ != undefined) {
26361
                                        valueField_ = $.grep(data_, function (r) {
26362
                                            return r.ValueField == '1'
26363
                                        });
26364
                                        if (valueField_.length > 0) {
26365
                                            valueField = valueField_[0].FieldName
26366
                                        }
26367
                                        displayValue_ = $.grep(data_, function (r) {
26368
                                            return r.DisplayValue == '1'
26369
                                        });
26370
                                        if (displayValue_.length > 0) {
26371
                                            displayValue = displayValue_[0].FieldName
26372
                                        }
26373
                                    }
26374
                                }
26375
                            });
26376
                        }
26377
                        formfield = new Ext.form.ComboBox({
26378
                            allowBlank: allowblank,
26379
                            fieldLabel: rec.ScreenCaption,
26380
                            forceSelection: true,
26381
                            anyMatch: true,
26382
                            readOnly: readonly,
26383
                            //labelCls: 'label-minova',
26384
                            labelWidth: me.labelWidth,
26385
                            hidden: ishidden,
26386
                            msgTarget: 'side',
26387
                            name: rec.FieldName,
26388
                            formname: formname_,
26389
                            nameTable: nameTable_,
26390
                            value: rec.DefaultValue,
26391
                            anchor: '100%', //width: '95%',
26392
                            //store: Ext.StoreMgr.lookup('store' + rec.FieldName) ? Ext.StoreMgr.lookup('store' + rec.FieldName):
26393
                            store: Ext.create('Ext.data.Store', {
26394
                                storeId: 'store' + rec.FieldName,
26395
                                autoLoad: false,
26396
                                proxy: {
26397
                                    method: 'POST',
26398
                                    type: 'ajax',
26399
                                    url: '/UserControl/GetStore',
26400
                                    extraParams: {
26401
                                        tableName: rec.TableRef,
26402
                                        param: rec.ParamCombo
26403
                                    },
26404
                                    reader: {
26405
                                        type: 'json',
26406
                                        root: 'data',
26407
                                        totalProperty: 'data[0].TotalCount'
26408
                                    }
26409
                                }
26410
                            }),
26411
                            formtarget: formname_,
26412
                            listeners: {
26413
                                afterrender: function (f) {
26414
                                    var store_ = f.getStore();
26415
                                    store_.load();
26416
                                },
26417
                                change: function (val) {
26418
                                    var _label = val.name;
26419
                                    var _form = val.formtarget;
26420
                                    var _Value = val.getValue();
26421
                                    var target = rec.TriggerCombo;
26422
                                    var custumFunc = rec.SelectFunction;
26423
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26424
                                    if (frm) {
26425

    
26426
                                        if (target) {
26427
                                            var f = frm.getForm().findField(target)
26428
                                            _store = f.getStore();
26429
                                            var _tbl = _store.proxy.extraParams.tableName;
26430
                                            var oldParam = _store.proxy.extraParams.param;
26431
                                            _store.proxy.extraParams = {
26432
                                                tableName: _tbl,
26433
                                                param: _label + '[=]' + _Value
26434
                                            };
26435
                                            _store.load();
26436
                                        }
26437
                                        if (custumFunc) {
26438
                                            eval(custumFunc)
26439
                                        }
26440
                                    }
26441
                                }
26442
                            },
26443
                            queryMode: 'local',
26444
                            displayField: displayValue,
26445
                            valueField: valueField,
26446
                        });
26447
                    } else if (rec.SearchType == '2') //Lookup
26448
                    {
26449
                        formfield = new MinovaUtil.MinovaES.MinovaLookupGrid({
26450
                            allowBlank: allowblank,
26451
                            fieldLabel: rec.ScreenCaption,
26452
                            readOnly: readonly,
26453
                            IsPrimaryKey: rec.IsPrimaryKey,
26454
                            msgTarget: 'side',
26455
                            //labelCls: 'label-minova',
26456
                            labelWidth: me.labelWidth,
26457
                            hidden: ishidden,
26458
                            name: rec.FieldName,
26459
                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
26460
                            triggerCls: 'x-form-search-trigger',
26461
                            vtype: 'alphanum', // disable space
26462
                            formtarget: me.formname, // nama form  yang akan di set value-nya
26463
                            anchor: '100%',
26464
                            formname: formname_,
26465
                            nameTable: nameTable_,
26466
                            LookupFunction: rec.LookupFunction,
26467
                            SearchFunction: rec.SearchFunction,
26468
                            listeners: {
26469
                                change: function (val) {
26470
                                    var _label = val.name;
26471
                                    var _form = val.formname;
26472
                                    var _Value = val.getValue();
26473
                                    var target = rec.TriggerCombo;
26474
                                    var custumFunc = rec.SelectFunction;
26475
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26476
                                        Ext.Ajax.request({
26477
                                            async: false,
26478
                                            method: 'POST',
26479
                                            url: '/UserControl/GetStore',
26480
                                            params: {
26481
                                                tableName: 'PCMFUNC',
26482
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26483
                                            },
26484
                                            success: function (response) {
26485
                                                var results = Ext.decode(response.responseText);
26486
                                                data_ = results.data[0];
26487
                                                if (data_ != undefined) {
26488
                                                    custumFunc = data_.FunctionCode;
26489
                                                }
26490
                                            }
26491
                                        });
26492
                                    }
26493
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26494
                                    if (frm) {
26495

    
26496
                                        if (target) {
26497
                                            var f = frm.getForm().findField(target)
26498
                                            _store = f.getStore();
26499
                                            var _tbl = _store.proxy.extraParams.tableName;
26500
                                            var oldParam = _store.proxy.extraParams.param;
26501
                                            _store.proxy.extraParams = {
26502
                                                tableName: _tbl,
26503
                                                param: _label + '[=]' + _Value
26504
                                            };
26505
                                            _store.load();
26506
                                        }
26507

    
26508
                                        if (custumFunc) {
26509
                                            eval(custumFunc)
26510
                                        }
26511

    
26512
                                    }
26513

    
26514
                                },
26515

    
26516
                            },
26517
                        });
26518
                    } else if (rec.SearchType == '3') //lookup tree
26519
                    {
26520
                        formfield = new MinovaUtil.MinovaES.MinovaLookupTree({
26521
                            allowBlank: allowblank,
26522
                            fieldLabel: rec.ScreenCaption,
26523
                            readOnly: readonly,
26524
                            IsPrimaryKey: rec.IsPrimaryKey,
26525
                            //labelCls: 'label-minova',
26526
                            labelWidth: me.labelWidth,
26527
                            hidden: ishidden,
26528
                            name: rec.FieldName,
26529
                            msgTarget: 'side',
26530
                            triggerCls: 'x-form-search-trigger',
26531
                            treeSructure: rec.SearchFunction, //'O-O-P',
26532
                            objClassValue: rec.ParamCombo, //'O',
26533
                            formname: formname_,
26534
                            targetField: rec.FieldName,
26535
                            nameTable: nameTable_,
26536
                            editable: false,
26537
                            anchor: '100%',
26538
                            listeners: {
26539
                                change3: function (val) {
26540
                                    var _label = val.name;
26541
                                    var _form = val.formname;
26542
                                    var _Value = val.getValue();
26543
                                    var target = rec.TriggerCombo;
26544
                                    var custumFunc = rec.SelectFunction;
26545
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26546
                                        Ext.Ajax.request({
26547
                                            async: false,
26548
                                            method: 'POST',
26549
                                            url: '/UserControl/GetStore',
26550
                                            params: {
26551
                                                tableName: 'PCMFUNC',
26552
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26553
                                            },
26554
                                            success: function (response) {
26555
                                                var results = Ext.decode(response.responseText);
26556
                                                data_ = results.data[0];
26557
                                                if (data_ != undefined) {
26558
                                                    custumFunc = data_.FunctionCode;
26559
                                                }
26560
                                            }
26561
                                        });
26562
                                    }
26563
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26564
                                    if (frm) {
26565

    
26566
                                        if (target) {
26567
                                            var f = frm.getForm().findField(target)
26568
                                            _store = f.getStore();
26569
                                            var _tbl = _store.proxy.extraParams.tableName;
26570
                                            var oldParam = _store.proxy.extraParams.param;
26571
                                            _store.proxy.extraParams = {
26572
                                                tableName: _tbl,
26573
                                                param: _label + '[=]' + _Value
26574
                                            };
26575
                                            _store.load();
26576
                                        }
26577
                                        if (custumFunc) {
26578
                                            eval(custumFunc)
26579
                                        }
26580
                                    }
26581
                                },
26582
                                blur: function (val) {
26583
                                    //if(val.value.split('-').length != 2){
26584
                                    var _label = val.name;
26585
                                    var _form = val.formname;
26586
                                    var _Value = val.getValue();
26587
                                    var target = rec.TriggerCombo;
26588
                                    var custumFunc = rec.SelectFunction;
26589
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26590
                                        Ext.Ajax.request({
26591
                                            async: false,
26592
                                            method: 'POST',
26593
                                            url: '/UserControl/GetStore',
26594
                                            params: {
26595
                                                tableName: 'PCMFUNC',
26596
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26597
                                            },
26598
                                            success: function (response) {
26599
                                                var results = Ext.decode(response.responseText);
26600
                                                data_ = results.data[0];
26601
                                                if (data_ != undefined) {
26602
                                                    custumFunc = data_.FunctionCode;
26603
                                                }
26604
                                            }
26605
                                        });
26606
                                    }
26607
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26608
                                    if (frm) {
26609

    
26610
                                        if (target) {
26611
                                            var f = frm.getForm().findField(target)
26612
                                            _store = f.getStore();
26613
                                            var _tbl = _store.proxy.extraParams.tableName;
26614
                                            var oldParam = _store.proxy.extraParams.param;
26615
                                            _store.proxy.extraParams = {
26616
                                                tableName: _tbl,
26617
                                                param: _label + '[=]' + _Value
26618
                                            };
26619
                                            _store.load();
26620
                                        }
26621
                                        if (custumFunc) {
26622
                                            eval(custumFunc)
26623
                                        }
26624
                                    }
26625
                                    //}
26626
                                }
26627

    
26628
                            }
26629
                        });
26630
                    }
26631
                }
26632
                if (isDesk) {
26633
                    if (rec.ColumnNo == 1) {
26634
                        col1.push(formfield);
26635
                    } else {
26636
                        col2.push(formfield);
26637
                    }
26638
                } else {
26639
                    col1.push(formfield);
26640
                }
26641

    
26642
            });
26643
        }
26644
        Ext.applyIf(me, {
26645
            items:
26646
                [
26647
                    {
26648
                        //width: 450,
26649
                        //style: 'width: 50%',
26650
                        defaults: {
26651
                            layout: 'anchor',
26652
                            xtype: 'container',
26653
                            flex: 1,
26654
                            margin: '10px',
26655
                            //defaultType: 'textfield',
26656
                            //anchor: '100%',
26657
                            ////style: 'width: 50%',
26658
                        },
26659
                        items: col1,
26660
                        flex: 1,
26661
                    },
26662
                    {
26663
                        //width: 450,
26664
                        //style: 'width: 50%',
26665
                        defaults: {
26666
                            layout: 'anchor',
26667
                            xtype: 'container',
26668
                            flex: 1,
26669
                            margin: '10px',
26670
                            //defaultType: 'textfield',
26671
                            //anchor: '100%',
26672
                            ////style: 'width: 50%',
26673
                        },
26674
                        items: col2,
26675
                        flex: 1,
26676
                    }
26677
                ]
26678
        });
26679
        this.callParent();
26680
    },
26681
    listeners: {
26682
        boxready: function (dataview) {
26683
            //this.reset(); //YN 20211217 - Solusi Layout sebelah kanan terlalu geser
26684
        }
26685
    },
26686
    buttons: [{
26687
        text: 'Update',
26688
        handler: 'onSaveClick'
26689
    }, {
26690
        text: 'Cancel',
26691
        handler: 'onCancelClick'
26692
    }]
26693
});
26694

    
26695
/*Form ESS GeneratorT YN 20211216*/
26696
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowFormGridT', {
26697
    extend: 'Ext.form.Panel',
26698
    alias: ['widget.MinovaWorkflowFormGridT', 'widget.minovaworkflowformgridT', 'widget.workflowformgridT'],
26699
    controller: 'workflowformgrid',
26700
    formname: this.name,
26701
    bizprocid: undefined,
26702
    bizflowid: undefined,
26703
    taskid: undefined,
26704
    tableName: undefined,
26705
    tableNameT: undefined,
26706
    parentKey: undefined,
26707
    titleform: undefined,
26708
    //resizable: true,
26709
    border: true,
26710
    autoScroll: true,
26711
    minHeight: 20,
26712
    layout: {
26713
        type: 'hbox'
26714
    },
26715
    listeners: {
26716
        render: function () {
26717
            if (this.titleform != undefined) {
26718
                this.setTitle(this.titleform);
26719
            }
26720
        },
26721
    },
26722
    buttonAlign: 'left',
26723
    defaults: {
26724
        layout: 'anchor',
26725
        xtype: 'container',
26726
        flex: 1,
26727
        margin: '10px',
26728
        //defaultType: 'textfield',
26729
        //anchor: '100%',
26730
        ////style: 'width: 50%',
26731
    },
26732
    initComponent: function () {
26733
        var col1 = [];
26734
        var col2 = [];
26735
        var me = this;
26736
        var LangID = localStorage.LangId;
26737
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
26738
        var formname_ = me.name;
26739
        var nameTable_ = me.tableName;
26740
        var labelWidth = 150;
26741
        Ext.Ajax.request({
26742
            async: false,
26743
            method: 'POST',
26744
            url: '/UserControl/GetStore',
26745
            params: {
26746
                tableName: 'PDSWFSTRUCTUREFIELD',
26747
                param: parameter
26748
            },
26749
            success: function (response) {
26750
                var results = Ext.decode(response.responseText);
26751
                hasil = results.data;
26752
            }
26753
        });
26754
        if (hasil.length > 0) {
26755
            Ext.each(hasil, function (rec) {
26756
                var formfield = undefined;
26757
                var readonly = false;
26758
                var ishidden = false;
26759
                var allowblank = true;
26760
                var startDt = null;
26761
                var endDt = null;
26762
                if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
26763
                    startDt = 'StartDate';
26764
                    endDt = 'EndDate';
26765
                }
26766
                if (rec.IsReadOnly == '1') {
26767
                    readonly = true;
26768
                }
26769
                if (rec.IsRequired == '1') {
26770
                    allowblank = false;
26771
                }
26772
                if (rec.IsVisible == '0') {
26773
                    ishidden = true;
26774
                }
26775
                if (rec.SearchType == "") //textfield
26776
                {
26777
                    switch (rec.FormatRef) {
26778
                        case "date":
26779
                            if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
26780
                                formfield = new Ext.form.DateField({
26781
                                    allowBlank: allowblank,
26782
                                    fieldLabel: rec.ScreenCaption,
26783
                                    readOnly: readonly,
26784
                                    msgTarget: 'side',
26785
                                    //labelCls: 'label-minova',
26786
                                    labelWidth: labelWidth,
26787
                                    hidden: ishidden,
26788
                                    name: rec.FieldName,
26789
                                    submitFormat: 'Ymd',
26790
                                    value: rec.DefaultValue,
26791
                                    anchor: '100%',
26792
                                    vtype: 'daterange',
26793
                                    start: startDt,
26794
                                    end: endDt,
26795
                                    formname: formname_,
26796
                                    nameTable: nameTable_,
26797
                                    hideMode: 'visibility',
26798
                                    listeners: {
26799
                                        change: function (val) {
26800
                                            var _label = val.name;
26801
                                            var _form = val.formname;
26802
                                            var _Value = val.getValue();
26803
                                            var target = rec.TriggerCombo;
26804
                                            var custumFunc = rec.SelectFunction;
26805
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26806
                                                Ext.Ajax.request({
26807
                                                    async: false,
26808
                                                    method: 'POST',
26809
                                                    url: '/UserControl/GetStore',
26810
                                                    params: {
26811
                                                        tableName: 'PCMFUNC',
26812
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26813
                                                    },
26814
                                                    success: function (response) {
26815
                                                        var results = Ext.decode(response.responseText);
26816
                                                        data_ = results.data[0];
26817
                                                        if (data_ != undefined) {
26818
                                                            custumFunc = data_.FunctionCode;
26819
                                                        }
26820
                                                    }
26821
                                                });
26822
                                            }
26823
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26824
                                            if (frm) {
26825
                                                if (custumFunc) {
26826
                                                    eval(custumFunc)
26827
                                                }
26828
                                            }
26829
                                        }
26830
                                    }
26831
                                });
26832
                            } else {
26833
                                formfield = new Ext.form.DateField({
26834
                                    allowBlank: allowblank,
26835
                                    fieldLabel: rec.ScreenCaption,
26836
                                    readOnly: readonly,
26837
                                    msgTarget: 'side',
26838
                                    //labelCls: 'label-minova',
26839
                                    labelWidth: labelWidth,
26840
                                    hidden: ishidden,
26841
                                    name: rec.FieldName,
26842
                                    submitFormat: 'Ymd',
26843
                                    value: rec.DefaultValue,
26844
                                    anchor: '100%',
26845
                                    formname: formname_,
26846
                                    nameTable: nameTable_,
26847
                                    hideMode: 'visibility',
26848
                                    listeners: {
26849
                                        change: function (val) {
26850
                                            var _label = val.name;
26851
                                            var _form = val.formname;
26852
                                            var _Value = val.getValue();
26853
                                            var target = rec.TriggerCombo;
26854
                                            var custumFunc = rec.SelectFunction;
26855
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26856
                                                Ext.Ajax.request({
26857
                                                    async: false,
26858
                                                    method: 'POST',
26859
                                                    url: '/UserControl/GetStore',
26860
                                                    params: {
26861
                                                        tableName: 'PCMFUNC',
26862
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26863
                                                    },
26864
                                                    success: function (response) {
26865
                                                        var results = Ext.decode(response.responseText);
26866
                                                        data_ = results.data[0];
26867
                                                        if (data_ != undefined) {
26868
                                                            custumFunc = data_.FunctionCode;
26869
                                                        }
26870
                                                    }
26871
                                                });
26872
                                            }
26873
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26874
                                            if (frm) {
26875
                                                if (custumFunc) {
26876
                                                    eval(custumFunc)
26877
                                                }
26878
                                            }
26879
                                        }
26880
                                    }
26881
                                });
26882
                            }
26883
                            break;
26884
                        case "time":
26885
                            formfield = new Ext.form.TimeField({
26886
                                allowBlank: allowblank,
26887
                                fieldLabel: rec.ScreenCaption,
26888
                                readOnly: readonly,
26889
                                //labelCls: 'label-minova',
26890
                                labelWidth: labelWidth,
26891
                                hidden: ishidden,
26892
                                name: rec.FieldName,
26893
                                msgTarget: 'side',
26894
                                format: 'Hi',
26895
                                submitFormat: 'Hi',
26896
                                increment: 5,
26897
                                value: rec.DefaultValue,
26898
                                anchor: '100%',
26899
                                formname: formname_,
26900
                                nameTable: nameTable_,
26901
                                listeners: {
26902
                                    change: function (val) {
26903
                                        var _label = val.name;
26904
                                        var _form = val.formname;
26905
                                        var _Value = val.getValue();
26906
                                        var target = rec.TriggerCombo;
26907
                                        var custumFunc = rec.SelectFunction;
26908
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26909
                                            Ext.Ajax.request({
26910
                                                async: false,
26911
                                                method: 'POST',
26912
                                                url: '/UserControl/GetStore',
26913
                                                params: {
26914
                                                    tableName: 'PCMFUNC',
26915
                                                    param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
26916
                                                },
26917
                                                success: function (response) {
26918
                                                    var results = Ext.decode(response.responseText);
26919
                                                    data_ = results.data[0];
26920
                                                    if (data_ != undefined) {
26921
                                                        custumFunc = data_.FunctionCode;
26922
                                                    }
26923
                                                }
26924
                                            });
26925
                                        }
26926
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26927
                                        if (frm) {
26928
                                            if (custumFunc) {
26929
                                                eval(custumFunc)
26930
                                            }
26931
                                        }
26932
                                    }
26933
                                }
26934
                            });
26935
                            break;
26936
                        case "amount":
26937
                            formfield = new Ext.form.TextField({
26938
                                allowBlank: allowblank,
26939
                                fieldLabel: rec.ScreenCaption,
26940
                                readOnly: readonly,
26941
                                //labelCls: 'label-minova',
26942
                                labelWidth: labelWidth,
26943
                                hidden: ishidden,
26944
                                name: rec.FieldName,
26945
                                msgTarget: 'side',
26946
                                value: rec.DefaultValue,
26947
                                maxLength: rec.Length,
26948
                                anchor: '100%',
26949
                                formname: formname_,
26950
                                nameTable: nameTable_,
26951
                                fieldStyle: 'text-align:right;',
26952
                                listeners: {
26953
                                    change: function (val) {
26954
                                        var _label = val.name;
26955
                                        var _form = val.formname;
26956
                                        var _Value = val.getValue();
26957
                                        var target = rec.TriggerCombo;
26958
                                        var custumFunc = rec.SelectFunction;
26959
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26960
                                            Ext.Ajax.request({
26961
                                                async: false,
26962
                                                method: 'POST',
26963
                                                url: '/UserControl/GetStore',
26964
                                                params: {
26965
                                                    tableName: 'PCMFUNC',
26966
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26967
                                                },
26968
                                                success: function (response) {
26969
                                                    var results = Ext.decode(response.responseText);
26970
                                                    data_ = results.data[0];
26971
                                                    if (data_ != undefined) {
26972
                                                        custumFunc = data_.FunctionCode;
26973
                                                    }
26974
                                                }
26975
                                            });
26976
                                        }
26977
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26978
                                        if (frm) {
26979
                                            if (custumFunc) {
26980
                                                eval(custumFunc)
26981
                                            }
26982
                                        }
26983
                                    }
26984
                                }
26985
                            });
26986
                            break;
26987
                        case "file":
26988
                            formfield = new MinovaUtil.MinovaES.UploadFile({
26989
                                allowBlank: allowblank,
26990
                                fieldLabel: rec.ScreenCaption,
26991
                                readOnly: readonly,
26992
                                readOnlyCls: 'minova-readonly',
26993
                                hidden: ishidden,
26994
                                //labelCls: 'label-minova',
26995
                                name: rec.FieldName,
26996
                                msgTarget: 'side',
26997
                                fieldname: rec.FieldName,
26998
                                IsPrimaryKey: rec.IsPrimaryKey,
26999
                                tableName: rec.TableRef,
27000
                                triggerCls: 'x-form-search-trigger',
27001
                                formtarget: me.formname,
27002
                                anchor: '100%',
27003
                                formname: formname_,
27004
                                nameTable: nameTable_,
27005
                                listeners: {
27006
                                    change: function (val) {
27007
                                        var _label = val.name;
27008
                                        var _form = val.formname;
27009
                                        var _Value = val.getValue();
27010
                                        var target = rec.TriggerCombo;
27011
                                        var custumFunc = rec.SelectFunction;
27012
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27013
                                            Ext.Ajax.request({
27014
                                                async: false,
27015
                                                method: 'POST',
27016
                                                url: '/UserControl/GetStore',
27017
                                                params: {
27018
                                                    tableName: 'PCMFUNC',
27019
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27020
                                                },
27021
                                                success: function (response) {
27022
                                                    var results = Ext.decode(response.responseText);
27023
                                                    data_ = results.data[0];
27024
                                                    if (data_ != undefined) {
27025
                                                        custumFunc = data_.FunctionCode;
27026
                                                    }
27027
                                                }
27028
                                            });
27029
                                        }
27030
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27031
                                        if (frm) {
27032
                                            if (target) {
27033
                                                var f = frm.getForm().findField(target)
27034
                                                _store = f.getStore();
27035
                                                var _tbl = _store.proxy.extraParams.tableName;
27036
                                                var oldParam = _store.proxy.extraParams.param;
27037
                                                _store.proxy.extraParams = {
27038
                                                    tableName: _tbl,
27039
                                                    param: _label + '[=]' + _Value
27040
                                                };
27041
                                                _store.load();
27042
                                            }
27043
                                            if (custumFunc) {
27044
                                                eval(custumFunc)
27045
                                            }
27046
                                        }
27047
                                    }
27048
                                }
27049
                            });
27050
                            break;
27051
                        default:
27052
                            if (rec.DataType == 0) {
27053
                                if (rec.Length > 250) {
27054
                                    formfield = new Ext.form.TextArea({
27055
                                        allowBlank: allowblank,
27056
                                        fieldLabel: rec.ScreenCaption,
27057
                                        readOnly: readonly,
27058
                                        ////labelCls: 'label-minova',
27059
                                        labelWidth: labelWidth,
27060
                                        hidden: ishidden,
27061
                                        name: rec.FieldName,
27062
                                        msgTarget: 'side',
27063
                                        value: rec.DefaultValue,
27064
                                        maxLength: rec.Length,
27065
                                        anchor: '100%',
27066
                                        grow: true,
27067
                                        formname: formname_,
27068
                                        nameTable: nameTable_,
27069
                                        listeners: {
27070
                                            change: function (val) {
27071
                                                var _label = val.name;
27072
                                                var _form = val.formname;
27073
                                                var _Value = val.getValue();
27074
                                                var target = rec.TriggerCombo;
27075
                                                var custumFunc = rec.SelectFunction;
27076
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27077
                                                    Ext.Ajax.request({
27078
                                                        async: false,
27079
                                                        method: 'POST',
27080
                                                        url: '/UserControl/GetStore',
27081
                                                        params: {
27082
                                                            tableName: 'PCMFUNC',
27083
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27084
                                                        },
27085
                                                        success: function (response) {
27086
                                                            var results = Ext.decode(response.responseText);
27087
                                                            data_ = results.data[0];
27088
                                                            if (data_ != undefined) {
27089
                                                                custumFunc = data_.FunctionCode;
27090
                                                            }
27091
                                                        }
27092
                                                    });
27093
                                                }
27094
                                                var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27095
                                                if (frm) {
27096
                                                    if (custumFunc) {
27097
                                                        eval(custumFunc)
27098
                                                    }
27099
                                                }
27100
                                            }
27101
                                        }
27102
                                    });
27103
                                } else {
27104
                                    if (rec.FixedValue != '') {
27105
                                        var storeData = [];
27106
                                        var str = rec.FixedValue;
27107
                                        var hasil = str.split('||');
27108
                                        hasil.forEach(function (h) {
27109
                                            store_ = h.split('=')
27110
                                            storeData.push({
27111
                                                code: store_[0],
27112
                                                desc: store_[1],
27113
                                            });
27114
                                        });
27115
                                        formfield = new Ext.form.ComboBox({
27116
                                            allowBlank: allowblank,
27117
                                            fieldLabel: rec.ScreenCaption,
27118
                                            forceSelection: true,
27119
                                            readOnly: readonly,
27120
                                            //labelCls: 'label-minova',
27121
                                            labelWidth: labelWidth,
27122
                                            hidden: ishidden,
27123
                                            name: rec.FieldName,
27124
                                            msgTarget: 'side',
27125
                                            value: rec.DefaultValue,
27126
                                            anchor: '100%',
27127
                                            formname: formname_,
27128
                                            nameTable: nameTable_,
27129
                                            formtarget: me.formname,
27130
                                            store: Ext.create('Ext.data.Store', {
27131
                                                storeId: 'store' + rec.FieldName,
27132
                                                autoLoad: true,
27133
                                                data: storeData
27134

    
27135
                                            }),
27136
                                            listeners: {
27137
                                                change: function (val) {
27138
                                                    var _label = val.name;
27139
                                                    var _form = val.formtarget;
27140
                                                    var _Value = val.getValue();
27141
                                                    var target = rec.TriggerCombo;
27142
                                                    var custumFunc = rec.SelectFunction;
27143
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27144
                                                    if (frm) {
27145
                                                        if (target) {
27146
                                                            var f = frm.getForm().findField(target)
27147
                                                            _store = f.getStore();
27148
                                                            var _tbl = _store.proxy.extraParams.tableName;
27149
                                                            var oldParam = _store.proxy.extraParams.param;
27150
                                                            _store.proxy.extraParams = {
27151
                                                                tableName: _tbl,
27152
                                                                param: _label + '[=]' + _Value
27153
                                                            };
27154
                                                            _store.load();
27155
                                                        }
27156
                                                        if (custumFunc) {
27157
                                                            eval(custumFunc)
27158
                                                        }
27159
                                                    }
27160
                                                }
27161
                                            },
27162
                                            queryMode: 'local',
27163
                                            valueField: 'code',
27164
                                            displayField: 'desc',
27165
                                        });
27166
                                    } else {
27167
                                        formfield = new Ext.form.TextField({
27168
                                            allowBlank: allowblank,
27169
                                            fieldLabel: rec.ScreenCaption,
27170
                                            readOnly: readonly,
27171
                                            //labelCls: 'label-minova',
27172
                                            labelWidth: labelWidth,
27173
                                            hidden: ishidden,
27174
                                            name: rec.FieldName,
27175
                                            msgTarget: 'side',
27176
                                            value: rec.DefaultValue,
27177
                                            maxLength: rec.Length,
27178
                                            anchor: '100%',
27179
                                            formname: formname_,
27180
                                            nameTable: nameTable_,
27181
                                            listeners: {
27182
                                                change: function (val) {
27183
                                                    var _label = val.name;
27184
                                                    var _form = val.formname;
27185
                                                    var _Value = val.getValue();
27186
                                                    var target = rec.TriggerCombo;
27187
                                                    var custumFunc = rec.SelectFunction;
27188
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27189
                                                        Ext.Ajax.request({
27190
                                                            async: false,
27191
                                                            method: 'POST',
27192
                                                            url: '/UserControl/GetStore',
27193
                                                            params: {
27194
                                                                tableName: 'PCMFUNC',
27195
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27196
                                                            },
27197
                                                            success: function (response) {
27198
                                                                var results = Ext.decode(response.responseText);
27199
                                                                data_ = results.data[0];
27200
                                                                if (data_ != undefined) {
27201
                                                                    custumFunc = data_.FunctionCode;
27202
                                                                }
27203
                                                            }
27204
                                                        });
27205
                                                    }
27206
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27207
                                                    if (frm) {
27208
                                                        if (custumFunc) {
27209
                                                            eval(custumFunc)
27210
                                                        }
27211
                                                    }
27212
                                                }
27213
                                            }
27214
                                        });
27215
                                    }
27216
                                }
27217
                            } else if (rec.DataType == 1 || rec.DataType == 2) {
27218
                                formfield = new MinovaUtil.MinovaES.MinovaNumberField({
27219
                                    allowBlank: allowblank,
27220
                                    fieldLabel: rec.ScreenCaption,
27221
                                    readOnly: readonly,
27222
                                    //labelCls: 'label-minova',
27223
                                    labelWidth: labelWidth,
27224
                                    msgTarget: 'side',
27225
                                    hidden: ishidden,
27226
                                    name: rec.FieldName,
27227
                                    value: rec.DefaultValue,
27228
                                    maxLength: rec.Length,
27229
                                    anchor: '100%',
27230
                                    formname: formname_,
27231
                                    nameTable: nameTable_,
27232
                                    fieldStyle: 'text-align:right;',
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
                                                if (target) {
27261
                                                    var f = frm.getForm().findField(target)
27262
                                                    _store = f.getStore();
27263
                                                    var _tbl = _store.proxy.extraParams.tableName;
27264
                                                    var oldParam = _store.proxy.extraParams.param;
27265
                                                    _store.proxy.extraParams = {
27266
                                                        tableName: _tbl,
27267
                                                        param: _label + '[=]' + _Value
27268
                                                    };
27269
                                                    _store.load();
27270
                                                }
27271
                                                if (custumFunc) {
27272
                                                    eval(custumFunc)
27273
                                                }
27274
                                            }
27275
                                        }
27276
                                    }
27277
                                });
27278
                            } else if (rec.DataType == 3) {
27279
                                formfield = new Ext.form.TextField({
27280
                                    allowBlank: allowblank,
27281
                                    fieldLabel: rec.ScreenCaption,
27282
                                    readOnly: readonly,
27283
                                    //labelCls: 'label-minova',
27284
                                    labelWidth: labelWidth,
27285
                                    msgTarget: 'side',
27286
                                    hidden: ishidden,
27287
                                    name: rec.FieldName,
27288
                                    value: rec.DefaultValue,
27289
                                    maxLength: rec.Length,
27290
                                    precision: rec.Prec,
27291
                                    anchor: '100%',
27292
                                    formname: formname_,
27293
                                    nameTable: nameTable_,
27294
                                    fieldStyle: 'text-align:right;',
27295
                                    maskRe: '^[0-9]+(\.[0-9]{1,2})?$',
27296
                                    listeners: {
27297
                                        change: function (val) {
27298
                                            var _label = val.name;
27299
                                            var _form = val.formname;
27300
                                            var _Value = val.getValue();
27301
                                            var target = rec.TriggerCombo;
27302
                                            var custumFunc = rec.SelectFunction;
27303
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27304
                                                Ext.Ajax.request({
27305
                                                    async: false,
27306
                                                    method: 'POST',
27307
                                                    url: '/UserControl/GetStore',
27308
                                                    params: {
27309
                                                        tableName: 'PCMFUNC',
27310
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27311
                                                    },
27312
                                                    success: function (response) {
27313
                                                        var results = Ext.decode(response.responseText);
27314
                                                        data_ = results.data[0];
27315
                                                        if (data_ != undefined) {
27316
                                                            custumFunc = data_.FunctionCode;
27317
                                                        }
27318
                                                    }
27319
                                                });
27320
                                            }
27321
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27322
                                            if (frm) {
27323
                                                if (target) {
27324
                                                    var f = frm.getForm().findField(target)
27325
                                                    _store = f.getStore();
27326
                                                    var _tbl = _store.proxy.extraParams.tableName;
27327
                                                    var oldParam = _store.proxy.extraParams.param;
27328
                                                    _store.proxy.extraParams = {
27329
                                                        tableName: _tbl,
27330
                                                        param: _label + '[=]' + _Value
27331
                                                    };
27332
                                                    _store.load();
27333
                                                }
27334
                                                if (custumFunc) {
27335
                                                    eval(custumFunc)
27336
                                                }
27337
                                            }
27338
                                        }
27339
                                    }
27340
                                });
27341
                            }
27342
                    }
27343
                } else if (rec.SearchType != "") {
27344
                    if (rec.SearchType == "0") //combobox
27345
                    {
27346
                        valueField = null;
27347
                        displayValue = null;
27348
                        if (rec.TableRef != "") {
27349
                            Ext.Ajax.request({
27350
                                async: false,
27351
                                method: 'POST',
27352
                                url: '/UserControl/GetStore',
27353
                                params: {
27354
                                    tableName: 'SDATATABLEFIELD',
27355
                                    param: 'TableName[equal]' + rec.TableRef
27356
                                },
27357
                                success: function (response) {
27358
                                    var results = Ext.decode(response.responseText);
27359
                                    data_ = results.data;
27360
                                    if (data_ != undefined) {
27361
                                        valueField_ = $.grep(data_, function (r) {
27362
                                            return r.ValueField == '1'
27363
                                        });
27364
                                        if (valueField_.length > 0) {
27365
                                            valueField = valueField_[0].FieldName
27366
                                        }
27367
                                        displayValue_ = $.grep(data_, function (r) {
27368
                                            return r.DisplayValue == '1'
27369
                                        });
27370
                                        if (displayValue_.length > 0) {
27371
                                            displayValue = displayValue_[0].FieldName
27372
                                        }
27373
                                    }
27374
                                }
27375
                            });
27376
                        }
27377
                        formfield = new Ext.form.ComboBox({
27378
                            allowBlank: allowblank,
27379
                            fieldLabel: rec.ScreenCaption,
27380
                            forceSelection: true,
27381
                            anyMatch: true,
27382
                            readOnly: readonly,
27383
                            //labelCls: 'label-minova',
27384
                            labelWidth: labelWidth,
27385
                            hidden: ishidden,
27386
                            msgTarget: 'side',
27387
                            name: rec.FieldName,
27388
                            formname: formname_,
27389
                            nameTable: nameTable_,
27390
                            value: rec.DefaultValue,
27391
                            anchor: '100%', //width: '95%',
27392
                            store: Ext.create('Ext.data.Store', {
27393
                                storeId: 'store' + rec.FieldName,
27394
                                autoLoad: false,
27395
                                proxy: {
27396
                                    method: 'POST',
27397
                                    type: 'ajax',
27398
                                    url: '/UserControl/GetStore',
27399
                                    extraParams: {
27400
                                        tableName: rec.TableRef,
27401
                                        param: rec.ParamCombo
27402
                                    },
27403
                                    reader: {
27404
                                        type: 'json',
27405
                                        root: 'data',
27406
                                        totalProperty: 'data[0].TotalCount'
27407
                                    }
27408
                                }
27409
                            }),
27410
                            formtarget: formname_,
27411
                            listeners: {
27412
                                afterrender: function (f) {
27413
                                    var store_ = f.getStore();
27414
                                    store_.load();
27415
                                },
27416
                                change: function (val) {
27417
                                    var _label = val.name;
27418
                                    var _form = val.formtarget;
27419
                                    var _Value = val.getValue();
27420
                                    var target = rec.TriggerCombo;
27421
                                    var custumFunc = rec.SelectFunction;
27422
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27423
                                    if (frm) {
27424

    
27425
                                        if (target) {
27426
                                            var f = frm.getForm().findField(target)
27427
                                            _store = f.getStore();
27428
                                            var _tbl = _store.proxy.extraParams.tableName;
27429
                                            var oldParam = _store.proxy.extraParams.param;
27430
                                            _store.proxy.extraParams = {
27431
                                                tableName: _tbl,
27432
                                                param: _label + '[=]' + _Value
27433
                                            };
27434
                                            _store.load();
27435
                                        }
27436
                                        if (custumFunc) {
27437
                                            eval(custumFunc)
27438
                                        }
27439
                                    }
27440
                                }
27441
                            },
27442
                            queryMode: 'local',
27443
                            displayField: displayValue,
27444
                            valueField: valueField,
27445
                        });
27446
                    } else if (rec.SearchType == '2') //Lookup
27447
                    {
27448
                        formfield = new MinovaUtil.MinovaES.MinovaLookupGrid({
27449
                            allowBlank: allowblank,
27450
                            fieldLabel: rec.ScreenCaption,
27451
                            readOnly: readonly,
27452
                            IsPrimaryKey: rec.IsPrimaryKey,
27453
                            msgTarget: 'side',
27454
                            //labelCls: 'label-minova',
27455
                            labelWidth: labelWidth,
27456
                            hidden: ishidden,
27457
                            name: rec.FieldName,
27458
                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
27459
                            triggerCls: 'x-form-search-trigger',
27460
                            vtype: 'alphanum', // disable space
27461
                            formtarget: me.formname, // nama form  yang akan di set value-nya
27462
                            anchor: '100%',
27463
                            formname: formname_,
27464
                            nameTable: nameTable_,
27465
                            LookupFunction: rec.LookupFunction,
27466
                            SearchFunction: rec.SearchFunction,
27467
                            listeners: {
27468
                                change: function (val) {
27469
                                    var _label = val.name;
27470
                                    var _form = val.formname;
27471
                                    var _Value = val.getValue();
27472
                                    var target = rec.TriggerCombo;
27473
                                    var custumFunc = rec.SelectFunction;
27474
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27475
                                        Ext.Ajax.request({
27476
                                            async: false,
27477
                                            method: 'POST',
27478
                                            url: '/UserControl/GetStore',
27479
                                            params: {
27480
                                                tableName: 'PCMFUNC',
27481
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27482
                                            },
27483
                                            success: function (response) {
27484
                                                var results = Ext.decode(response.responseText);
27485
                                                data_ = results.data[0];
27486
                                                if (data_ != undefined) {
27487
                                                    custumFunc = data_.FunctionCode;
27488
                                                }
27489
                                            }
27490
                                        });
27491
                                    }
27492
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27493
                                    if (frm) {
27494

    
27495
                                        if (target) {
27496
                                            var f = frm.getForm().findField(target)
27497
                                            _store = f.getStore();
27498
                                            var _tbl = _store.proxy.extraParams.tableName;
27499
                                            var oldParam = _store.proxy.extraParams.param;
27500
                                            _store.proxy.extraParams = {
27501
                                                tableName: _tbl,
27502
                                                param: _label + '[=]' + _Value
27503
                                            };
27504
                                            _store.load();
27505
                                        }
27506

    
27507
                                        if (custumFunc) {
27508
                                            eval(custumFunc)
27509
                                        }
27510

    
27511
                                    }
27512

    
27513
                                },
27514

    
27515
                            },
27516
                        });
27517
                    } else if (rec.SearchType == '3') //lookup tree
27518
                    {
27519
                        formfield = new MinovaUtil.MinovaES.MinovaLookupTree({
27520
                            allowBlank: allowblank,
27521
                            fieldLabel: rec.ScreenCaption,
27522
                            readOnly: readonly,
27523
                            IsPrimaryKey: rec.IsPrimaryKey,
27524
                            //labelCls: 'label-minova',
27525
                            labelWidth: labelWidth,
27526
                            hidden: ishidden,
27527
                            name: rec.FieldName,
27528
                            msgTarget: 'side',
27529
                            triggerCls: 'x-form-search-trigger',
27530
                            treeSructure: rec.SearchFunction, //'O-O-P',
27531
                            objClassValue: rec.ParamCombo, //'O',
27532
                            formname: formname_,
27533
                            targetField: rec.FieldName,
27534
                            nameTable: nameTable_,
27535
                            editable: false,
27536
                            anchor: '100%',
27537
                            listeners: {
27538
                                change3: function (val) {
27539
                                    var _label = val.name;
27540
                                    var _form = val.formname;
27541
                                    var _Value = val.getValue();
27542
                                    var target = rec.TriggerCombo;
27543
                                    var custumFunc = rec.SelectFunction;
27544
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27545
                                        Ext.Ajax.request({
27546
                                            async: false,
27547
                                            method: 'POST',
27548
                                            url: '/UserControl/GetStore',
27549
                                            params: {
27550
                                                tableName: 'PCMFUNC',
27551
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27552
                                            },
27553
                                            success: function (response) {
27554
                                                var results = Ext.decode(response.responseText);
27555
                                                data_ = results.data[0];
27556
                                                if (data_ != undefined) {
27557
                                                    custumFunc = data_.FunctionCode;
27558
                                                }
27559
                                            }
27560
                                        });
27561
                                    }
27562
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27563
                                    if (frm) {
27564

    
27565
                                        if (target) {
27566
                                            var f = frm.getForm().findField(target)
27567
                                            _store = f.getStore();
27568
                                            var _tbl = _store.proxy.extraParams.tableName;
27569
                                            var oldParam = _store.proxy.extraParams.param;
27570
                                            _store.proxy.extraParams = {
27571
                                                tableName: _tbl,
27572
                                                param: _label + '[=]' + _Value
27573
                                            };
27574
                                            _store.load();
27575
                                        }
27576
                                        if (custumFunc) {
27577
                                            eval(custumFunc)
27578
                                        }
27579
                                    }
27580
                                },
27581
                                blur: function (val) {
27582
                                    //if(val.value.split('-').length != 2){
27583
                                    var _label = val.name;
27584
                                    var _form = val.formname;
27585
                                    var _Value = val.getValue();
27586
                                    var target = rec.TriggerCombo;
27587
                                    var custumFunc = rec.SelectFunction;
27588
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27589
                                        Ext.Ajax.request({
27590
                                            async: false,
27591
                                            method: 'POST',
27592
                                            url: '/UserControl/GetStore',
27593
                                            params: {
27594
                                                tableName: 'PCMFUNC',
27595
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27596
                                            },
27597
                                            success: function (response) {
27598
                                                var results = Ext.decode(response.responseText);
27599
                                                data_ = results.data[0];
27600
                                                if (data_ != undefined) {
27601
                                                    custumFunc = data_.FunctionCode;
27602
                                                }
27603
                                            }
27604
                                        });
27605
                                    }
27606
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27607
                                    if (frm) {
27608

    
27609
                                        if (target) {
27610
                                            var f = frm.getForm().findField(target)
27611
                                            _store = f.getStore();
27612
                                            var _tbl = _store.proxy.extraParams.tableName;
27613
                                            var oldParam = _store.proxy.extraParams.param;
27614
                                            _store.proxy.extraParams = {
27615
                                                tableName: _tbl,
27616
                                                param: _label + '[=]' + _Value
27617
                                            };
27618
                                            _store.load();
27619
                                        }
27620
                                        if (custumFunc) {
27621
                                            eval(custumFunc)
27622
                                        }
27623
                                    }
27624
                                    //}
27625
                                }
27626

    
27627
                            }
27628
                        });
27629
                    }
27630
                }
27631
                if (isDesk) {
27632
                    if (rec.ColumnNo == 1) {
27633
                        col1.push(formfield);
27634
                    } else {
27635
                        col2.push(formfield);
27636
                    }
27637
                } else {
27638
                    col1.push(formfield);
27639
                }
27640

    
27641
            });
27642
        }
27643
        Ext.applyIf(me, {
27644
            items:
27645
                [
27646
                    {
27647
                        //width: 450,
27648
                        //style: 'width: 50%',
27649
                        defaults: {
27650
                            layout: 'anchor',
27651
                            xtype: 'container',
27652
                            flex: 1,
27653
                            margin: '10px',
27654
                            //defaultType: 'textfield',
27655
                            //anchor: '100%',
27656
                            ////style: 'width: 50%',
27657
                        },
27658
                        items: col1,
27659
                        flex: 1,
27660
                    },
27661
                    {
27662
                        //width: 450,
27663
                        //style: 'width: 50%',
27664
                        defaults: {
27665
                            layout: 'anchor',
27666
                            xtype: 'container',
27667
                            flex: 1,
27668
                            margin: '10px',
27669
                            //defaultType: 'textfield',
27670
                            //anchor: '100%',
27671
                            ////style: 'width: 50%',
27672
                        },
27673
                        items: col2,
27674
                        flex: 1,
27675
                    }
27676
                ]
27677
        });
27678
        this.callParent();
27679
    },
27680
    listeners: {
27681
        boxready: function (dataview) {
27682
            //this.reset(); //YN 20211217 - Solusi Layout sebelah kanan terlalu geser
27683
        }
27684
    },
27685
    buttons: [{
27686
        text: 'Update',
27687
        handler: 'onSaveClick'
27688
    }, {
27689
        text: 'Cancel',
27690
        handler: 'onCancelClick'
27691
    }]
27692
});
27693

    
27694
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowFormGridController', {
27695
    extend: 'Ext.app.ViewController',
27696
    alias: 'controller.workflowformgrid',
27697
    //afterrender: function () {
27698
    //    this.reset();
27699
    //},
27700

    
27701
    onSaveClick: function () {
27702
        // Save the changes pending in the dialog's child session back to the
27703
        // parent session.
27704
        //this.dialog.getSession().save();
27705
        var frmPanel = this.getView();
27706
        //var panel = this.up('form');
27707
        //var form = panel.getForm();
27708
        if (frmPanel.isValid()) {
27709
            //Ext.Msg.alert('Success');
27710
            var grdPanel = Ext.ComponentQuery.query('[name=grid' + frmPanel.tableName + ']')[0];
27711
            var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
27712
            values = frmPanel.getValues();
27713
            try {               
27714
                dtrec.set(values);
27715
                }
27716
            catch (e) {
27717
                //grdPanel.reconfigure();
27718
                console.log(e);
27719
            }
27720
            frmPanel.hide();
27721
            //this.onCancelClick();
27722
        } else {
27723
            fieldNames = [];
27724
            fields = this.getInvalidFields(frmPanel);
27725
            for (var i = 0; i < fields.length; i++) {
27726
                field = fields[i];
27727
                fieldNames.push(i + 1 + '. ' + field.fieldLabel + ' (' + field.activeErrors[0] + ')');
27728
            }
27729
            console.debug(fieldNames);
27730
            Ext.MessageBox.alert('Invalid Fields', 'The following fields are invalid: </br> ' + fieldNames.join(' </br>'));
27731
        }
27732
    },
27733

    
27734
    onCancelClick: function () {
27735
        //this.getView().remove(this.dialog);
27736
        //this.dialog = null;
27737
        var frmPanel = this.getView();
27738
        //frmPanel.reset();
27739
        frmPanel.hide();
27740
    },
27741

    
27742
    getInvalidFields: function (frmPanel) {
27743
        var invalidFields = [];
27744
        Ext.suspendLayouts();
27745
        frmPanel.getForm().getFields().filterBy(function (field) {
27746
            if (field.validate()) return;
27747
            invalidFields.push(field);
27748
        });
27749
        Ext.resumeLayouts(true);
27750
        return invalidFields;
27751
    },
27752
});
27753

    
27754
/*Form ESS Generator Layout: Auto if just 1 column YN 20211216*/
27755
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowForm1', {
27756
    extend: 'Ext.form.Panel',
27757
    alias: ['widget.MinovaWorkflowForm1', 'widget.minovaworkflowform1', 'widget.workflowform1'],
27758
    formname: this.name,
27759
    bizprocid: undefined,
27760
    bizflowid: undefined,
27761
    taskid: undefined,
27762
    tableName: undefined,
27763
    tableNameT: undefined,
27764
    parentKey: undefined,
27765
    titleform: undefined,
27766
    name: undefined,
27767
    labelAlign: 'left',
27768
    labelWidth: 150,
27769
    labelSeparator: undefined,
27770
    //resizable: true,
27771
    border: true,
27772
    autoScroll: true,
27773
    minHeight: 20,
27774
    marginDefault: 10,
27775
    layout: {
27776
        type: (isDesk == true) ? 'hbox': 'auto'
27777
    },
27778
    listeners: {
27779
        render: function () {
27780
            if (this.titleform != undefined) {
27781
                this.setTitle(this.titleform);
27782
            }
27783
        },
27784
    },
27785
    defaults: {
27786
        layout: 'anchor',
27787
        xtype: 'container',
27788
        flex: 1,
27789
        margin: this.marginDefault,
27790
        //defaultType: 'textfield',
27791
        //anchor: '100%',
27792
        ////style: 'width: 50%',
27793
    },
27794
    initComponent: function () {
27795
        var col1 = [];
27796
        var col2 = [];
27797
        var me = this;
27798
        var LangID = localStorage.LangId;
27799
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
27800
        var formname_ = me.name;
27801
        var nameTable_ = me.tableName;
27802
        var labelWidth = me.labelWidth;
27803
        Ext.Ajax.request({
27804
            async: false,
27805
            method: 'POST',
27806
            url: '/UserControl/GetStore',
27807
            params: {
27808
                tableName: 'PDSWFSTRUCTUREFIELD',
27809
                param: parameter
27810
            },
27811
            success: function (response) {
27812
                var results = Ext.decode(response.responseText);
27813
                hasil = results.data;
27814
            }
27815
        });
27816
        if (hasil.length > 0) {
27817
            Ext.each(hasil, function (rec) {
27818
                var formfield = undefined;
27819
                var readonly = false;
27820
                var ishidden = false;
27821
                var allowblank = true;
27822
                var startDt = null;
27823
                var endDt = null;
27824
                if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
27825
                    startDt = 'StartDate';
27826
                    endDt = 'EndDate';
27827
                }
27828
                if (rec.IsReadOnly == '1') {
27829
                    readonly = true;
27830
                }
27831
                if (rec.IsRequired == '1') {
27832
                    allowblank = false;
27833
                }
27834
                if (rec.IsVisible == '0') {
27835
                    ishidden = true;
27836
                }
27837
                if (rec.SearchType == "") //textfield
27838
                {
27839
                    switch (rec.FormatRef) {
27840
                        case "date":
27841
                            if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
27842
                                formfield = new Ext.form.DateField({
27843
                                    allowBlank: allowblank,
27844
                                    fieldLabel: rec.ScreenCaption,
27845
                                    readOnly: readonly,
27846
									
27847
									//Start for mobile by saswanto
27848
									editable:readonly,
27849
									plugins: 'responsive',
27850
									responsiveConfig: {
27851
										personalizedWide:{}
27852
									},    
27853
									responsiveFormulas: {
27854
										personalizedWide: function (context,layout) {
27855
											if (context.width <= 600){
27856
												this.cmp.setEditable(false);
27857
												return true;
27858
											}
27859
										}
27860
									},							
27861
									//Start for mobile by saswanto									
27862
									
27863
                                    msgTarget: 'side',
27864
                                    //labelCls: 'label-minova',
27865
                                    labelWidth: labelWidth,
27866
                                    hidden: ishidden,
27867
                                    name: rec.FieldName,
27868
                                    submitFormat: 'Ymd',
27869
                                    value: rec.DefaultValue,
27870
                                    anchor: '100%',
27871
                                    vtype: 'daterange',
27872
                                    start: startDt,
27873
                                    end: endDt,
27874
                                    formname: formname_,
27875
                                    nameTable: nameTable_,
27876
                                    hideMode: 'visibility',
27877
                                    listeners: {
27878
                                        change: function (val) {
27879
                                            var _label = val.name;
27880
                                            var _form = val.formname;
27881
                                            var _Value = val.getValue();
27882
                                            var target = rec.TriggerCombo;
27883
                                            var custumFunc = rec.SelectFunction;
27884
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27885
                                                Ext.Ajax.request({
27886
                                                    async: false,
27887
                                                    method: 'POST',
27888
                                                    url: '/UserControl/GetStore',
27889
                                                    params: {
27890
                                                        tableName: 'PCMFUNC',
27891
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27892
                                                    },
27893
                                                    success: function (response) {
27894
                                                        var results = Ext.decode(response.responseText);
27895
                                                        data_ = results.data[0];
27896
                                                        if (data_ != undefined) {
27897
                                                            custumFunc = data_.FunctionCode;
27898
                                                        }
27899
                                                    }
27900
                                                });
27901
                                            }
27902
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27903
                                            if (frm) {
27904
                                                if (custumFunc) {
27905
                                                    eval(custumFunc)
27906
                                                }
27907
                                            }
27908
                                        }
27909
                                    }
27910
                                });
27911
                            } else {
27912
                                formfield = new Ext.form.DateField({
27913
                                    allowBlank: allowblank,
27914
                                    fieldLabel: rec.ScreenCaption,
27915
                                    readOnly: readonly,
27916
									
27917
									//Start for mobile by saswanto
27918
									editable:readonly,
27919
									plugins: 'responsive',
27920
									responsiveConfig: {
27921
										personalizedWide:{}
27922
									},    
27923
									responsiveFormulas: {
27924
										personalizedWide: function (context,layout) {
27925
											if (context.width <= 600){
27926
												this.cmp.setEditable(false);
27927
												return true;
27928
											}
27929
										}
27930
									},							
27931
									//Start for mobile by saswanto									
27932
									
27933
                                    msgTarget: 'side',
27934
                                    //labelCls: 'label-minova',
27935
                                    labelWidth: labelWidth,
27936
                                    hidden: ishidden,
27937
                                    name: rec.FieldName,
27938
                                    submitFormat: 'Ymd',
27939
                                    value: rec.DefaultValue,
27940
                                    anchor: '100%',
27941
                                    formname: formname_,
27942
                                    nameTable: nameTable_,
27943
                                    hideMode: 'visibility',
27944
                                    listeners: {
27945
                                        change: function (val) {
27946
                                            var _label = val.name;
27947
                                            var _form = val.formname;
27948
                                            var _Value = val.getValue();
27949
                                            var target = rec.TriggerCombo;
27950
                                            var custumFunc = rec.SelectFunction;
27951
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27952
                                                Ext.Ajax.request({
27953
                                                    async: false,
27954
                                                    method: 'POST',
27955
                                                    url: '/UserControl/GetStore',
27956
                                                    params: {
27957
                                                        tableName: 'PCMFUNC',
27958
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27959
                                                    },
27960
                                                    success: function (response) {
27961
                                                        var results = Ext.decode(response.responseText);
27962
                                                        data_ = results.data[0];
27963
                                                        if (data_ != undefined) {
27964
                                                            custumFunc = data_.FunctionCode;
27965
                                                        }
27966
                                                    }
27967
                                                });
27968
                                            }
27969
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27970
                                            if (frm) {
27971
                                                if (custumFunc) {
27972
                                                    eval(custumFunc)
27973
                                                }
27974
                                            }
27975
                                        }
27976
                                    }
27977
                                });
27978
                            }
27979
                            break;
27980
                        case "time":
27981
                            formfield = new Ext.form.TimeField({
27982
                                allowBlank: allowblank,
27983
                                fieldLabel: rec.ScreenCaption,
27984
                                readOnly: readonly,
27985
								
27986
								//Start for mobile by saswanto
27987
								editable:readonly,
27988
								plugins: 'responsive',
27989
								responsiveConfig: {
27990
									personalizedWide:{}
27991
								},    
27992
								responsiveFormulas: {
27993
									personalizedWide: function (context,layout) {
27994
										if (context.width <= 600){
27995
											this.cmp.setEditable(false);
27996
											return true;
27997
										}
27998
									}
27999
								},							
28000
								//Start for mobile by saswanto								
28001
								
28002
                                //labelCls: 'label-minova',
28003
                                labelWidth: labelWidth,
28004
                                hidden: ishidden,
28005
                                name: rec.FieldName,
28006
                                msgTarget: 'side',
28007
                                format: 'Hi',
28008
                                submitFormat: 'Hi',
28009
                                increment: 5,
28010
                                value: rec.DefaultValue,
28011
                                anchor: '100%',
28012
                                formname: formname_,
28013
                                nameTable: nameTable_,
28014
                                listeners: {
28015
                                    change: function (val) {
28016
                                        var _label = val.name;
28017
                                        var _form = val.formname;
28018
                                        var _Value = val.getValue();
28019
                                        var target = rec.TriggerCombo;
28020
                                        var custumFunc = rec.SelectFunction;
28021
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
28022
                                            Ext.Ajax.request({
28023
                                                async: false,
28024
                                                method: 'POST',
28025
                                                url: '/UserControl/GetStore',
28026
                                                params: {
28027
                                                    tableName: 'PCMFUNC',
28028
                                                    param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
28029
                                                },
28030
                                                success: function (response) {
28031
                                                    var results = Ext.decode(response.responseText);
28032
                                                    data_ = results.data[0];
28033
                                                    if (data_ != undefined) {
28034
                                                        custumFunc = data_.FunctionCode;
28035
                                                    }
28036
                                                }
28037
                                            });
28038
                                        }
28039
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
28040
                                        if (frm) {
28041
                                            if (custumFunc) {
28042
                                                eval(custumFunc)
28043
                                            }
28044
                                        }
28045
                                    }
28046
                                }
28047
                            });
28048
                            break;
28049
                        case "amount":
28050
                            formfield = new Ext.form.TextField({
28051
                                allowBlank: allowblank,
28052
                                fieldLabel: rec.ScreenCaption,
28053
                                readOnly: readonly,
28054
                                //labelCls: 'label-minova',
28055
                                labelWidth: labelWidth,
28056
                                hidden: ishidden,
28057
                                name: rec.FieldName,
28058
                                msgTarget: 'side',
28059
                                value: rec.DefaultValue,
28060
                                maxLength: rec.Length,
28061
                                anchor: '100%',
28062
                                formname: formname_,
28063
                                nameTable: nameTable_,
28064
                                fieldStyle: 'text-align:right;',
28065
                                listeners: {
28066
                                    change: function (val) {
28067
                                        var _label = val.name;
28068
                                        var _form = val.formname;
28069
                                        var _Value = val.getValue();
28070
                                        var target = rec.TriggerCombo;
28071
                                        var custumFunc = rec.SelectFunction;
28072
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
28073
                                            Ext.Ajax.request({
28074
                                                async: false,
28075
                                                method: 'POST',
28076
                                                url: '/UserControl/GetStore',
28077
                                                params: {
28078
                                                    tableName: 'PCMFUNC',
28079
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
28080
                                                },
28081
                                                success: function (response) {
28082
                                                    var results = Ext.decode(response.responseText);
28083
                                                    data_ = results.data[0];
28084
                                                    if (data_ != undefined) {
28085
                                                        custumFunc = data_.FunctionCode;
28086
                                                    }
28087
                                                }
28088
                                            });
28089
                                        }
28090
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
28091
                                        if (frm) {
28092
                                            if (custumFunc) {
28093
                                                eval(custumFunc)
28094
                                            }
28095
                                        }
28096
                                    }
28097
                                }
28098
                            });
28099
                            break;
28100
                        case "file":
28101
                            formfield = new MinovaUtil.MinovaES.UploadFile({
28102
                                allowBlank: allowblank,
28103
                                fieldLabel: rec.ScreenCaption,
28104
                                readOnly: readonly,
28105
                                readOnlyCls: 'minova-readonly',
28106
                                hidden: ishidden,
28107
                                //labelCls: 'label-minova',
28108
                                name: rec.FieldName,
28109
                                msgTarget: 'side',
28110
                                fieldname: rec.FieldName,
28111
                                IsPrimaryKey: rec.IsPrimaryKey,
28112
                                tableName: rec.TableRef,
28113
                                triggerCls: 'x-form-search-trigger',
28114
                                formtarget: me.formname,
28115
                                anchor: '100%',
28116
                                formname: formname_,
28117
                                nameTable: nameTable_,
28118
                                listeners: {
28119
                                    change: function (val) {
28120
                                        var _label = val.name;
28121
                                        var _form = val.formname;
28122
                                        var _Value = val.getValue();
28123
                                        var target = rec.TriggerCombo;
28124
                                        var custumFunc = rec.SelectFunction;
28125
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
28126
                                            Ext.Ajax.request({
28127
                                                async: false,
28128
                                                method: 'POST',
28129
                                                url: '/UserControl/GetStore',
28130
                                                params: {
28131
                                                    tableName: 'PCMFUNC',
28132
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
28133
                                                },
28134
                                                success: function (response) {
28135
                                                    var results = Ext.decode(response.responseText);
28136
                                                    data_ = results.data[0];
28137
                                                    if (data_ != undefined) {
28138
                                                        custumFunc = data_.FunctionCode;
28139
                                                    }
28140
                                                }
28141
                                            });
28142
                                        }
28143
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
28144
                                        if (frm) {
28145
                                            if (target) {
28146
                                                var f = frm.getForm().findField(target)
28147
                                                _store = f.getStore();
28148
                                                var _tbl = _store.proxy.extraParams.tableName;
28149
                                                var oldParam = _store.proxy.extraParams.param;
28150
                                                _store.proxy.extraParams = {
28151
                                                    tableName: _tbl,
28152
                                                    param: _label + '[=]' + _Value
28153
                                                };
28154
                                                _store.load();
28155
                                            }
28156
                                            if (custumFunc) {
28157
                                                eval(custumFunc)
28158
                                            }
28159
                                        }
28160
                                    }
28161
                                }
28162
                            });
28163
                            break;
28164
                        default:
28165
                            if (rec.DataType == 0) {
28166
                                if (rec.Length > 250) {
28167
                                    formfield = new Ext.form.TextArea({
28168
                                        allowBlank: allowblank,
28169
                                        fieldLabel: rec.ScreenCaption,
28170
                                        readOnly: readonly,
28171
                                        labelAlign: me.labelAlign,
28172
                                        labelSeparator: me.labelSeparator,
28173
                                        //labelCls: 'label-minova',
28174
                                        labelWidth: labelWidth,
28175
                                        hidden: ishidden,
28176
                                        name: rec.FieldName,
28177
                                        msgTarget: 'side',
28178
                                        value: rec.DefaultValue,
28179
                                        maxLength: rec.Length,
28180
                                        anchor: '100%',
28181
                                        grow: true,
28182
                                        formname: formname_,
28183
                                        nameTable: nameTable_,
28184
                                        listeners: {
28185
                                            change: function (val) {
28186
                                                var _label = val.name;
28187
                                                var _form = val.formname;
28188
                                                var _Value = val.getValue();
28189
                                                var target = rec.TriggerCombo;
28190
                                                var custumFunc = rec.SelectFunction;
28191
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
28192
                                                    Ext.Ajax.request({
28193
                                                        async: false,
28194
                                                        method: 'POST',
28195
                                                        url: '/UserControl/GetStore',
28196
                                                        params: {
28197
                                                            tableName: 'PCMFUNC',
28198
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
28199
                                                        },
28200
                                                        success: function (response) {
28201
                                                            var results = Ext.decode(response.responseText);
28202
                                                            data_ = results.data[0];
28203
                                                            if (data_ != undefined) {
28204
                                                                custumFunc = data_.FunctionCode;
28205
                                                            }
28206
                                                        }
28207
                                                    });
28208
                                                }
28209
                                                var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
28210
                                                if (frm) {
28211
                                                    if (custumFunc) {
28212
                                                        eval(custumFunc)
28213
                                                    }
28214
                                                }
28215
                                            }
28216
                                        }
28217
                                    });
28218
                                } else {
28219
                                    if (rec.FixedValue != '') {
28220
                                        var storeData = [];
28221
                                        var str = rec.FixedValue;
28222
                                        var hasil = str.split('||');
28223
                                        hasil.forEach(function (h) {
28224
                                            store_ = h.split('=')
28225
                                            storeData.push({
28226
                                                code: store_[0],
28227
                                                desc: store_[1],
28228
                                            });
28229
                                        });
28230
                                        formfield = new Ext.form.ComboBox({
28231
                                            allowBlank: allowblank,
28232
                                            fieldLabel: rec.ScreenCaption,
28233
                                            forceSelection: true,
28234
                                            readOnly: readonly,
28235
                                            //labelCls: 'label-minova',
28236
                                            labelWidth: labelWidth,
28237
                                            hidden: ishidden,
28238
                                            name: rec.FieldName,
28239
                                            msgTarget: 'side',
28240
                                            value: rec.DefaultValue,
28241
                                            anchor: '100%',
28242
                                            formname: formname_,
28243
                                            nameTable: nameTable_,
28244
                                            formtarget: me.formname,
28245
                                            store: Ext.create('Ext.data.Store', {
28246
                                                storeId: 'store' + rec.FieldName,
28247
                                                autoLoad: true,
28248
                                                data: storeData
28249

    
28250
                                            }),
28251
                                            listeners: {
28252
                                                change: function (val) {
28253
                                                    var _label = val.name;
28254
                                                    var _form = val.formtarget;
28255
                                                    var _Value = val.getValue();
28256
                                                    var target = rec.TriggerCombo;
28257
                                                    var custumFunc = rec.SelectFunction;
28258
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
28259
                                                    if (frm) {
28260
                                                        if (target) {
28261
                                                            var f = frm.getForm().findField(target)
28262
                                                            _store = f.getStore();
28263
                                                            var _tbl = _store.proxy.extraParams.tableName;
28264
                                                            var oldParam = _store.proxy.extraParams.param;
28265
                                                            _store.proxy.extraParams = {
28266
                                                                tableName: _tbl,
28267
                                                                param: _label + '[=]' + _Value
28268
                                                            };
28269
                                                            _store.load();
28270
                                                        }
28271
                                                        if (custumFunc) {
28272
                                                            eval(custumFunc)
28273
                                                        }
28274
                                                    }
28275
                                                }
28276
                                            },
28277
                                            queryMode: 'local',
28278
                                            valueField: 'code',
28279
                                            displayField: 'desc',
28280
                                        });
28281
                                    } else {
28282
                                        formfield = new Ext.form.TextField({
28283
                                            allowBlank: allowblank,
28284
                                            fieldLabel: rec.ScreenCaption,
28285
                                            readOnly: readonly,
28286
                                            //labelCls: 'label-minova',
28287
                                            labelWidth: labelWidth,
28288
                                            hidden: ishidden,
28289
                                            name: rec.FieldName,
28290
                                            msgTarget: 'side',
28291
                                            value: rec.DefaultValue,
28292
                                            maxLength: rec.Length,
28293
                                            anchor: '100%',
28294
                                            formname: formname_,
28295
                                            nameTable: nameTable_,
28296
                                            listeners: {
28297
                                                change: function (val) {
28298
                                                    var _label = val.name;
28299
                                                    var _form = val.formname;
28300
                                                    var _Value = val.getValue();
28301
                                                    var target = rec.TriggerCombo;
28302
                                                    var custumFunc = rec.SelectFunction;
28303
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
28304
                                                        Ext.Ajax.request({
28305
                                                            async: false,
28306
                                                            method: 'POST',
28307
                                                            url: '/UserControl/GetStore',
28308
                                                            params: {
28309
                                                                tableName: 'PCMFUNC',
28310
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
28311
                                                            },
28312
                                                            success: function (response) {
28313
                                                                var results = Ext.decode(response.responseText);
28314
                                                                data_ = results.data[0];
28315
                                                                if (data_ != undefined) {
28316
                                                                    custumFunc = data_.FunctionCode;
28317
                                                                }
28318
                                                            }
28319
                                                        });
28320
                                                    }
28321
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
28322
                                                    if (frm) {
28323
                                                        if (custumFunc) {
28324
                                                            eval(custumFunc)
28325
                                                        }
28326
                                                    }
28327
                                                }
28328
                                            }
28329
                                        });
28330
                                    }
28331
                                }
28332
                            } else if (rec.DataType == 1 || rec.DataType == 2) {
28333
                                formfield = new MinovaUtil.MinovaES.MinovaNumberField({
28334
                                    allowBlank: allowblank,
28335
                                    fieldLabel: rec.ScreenCaption,
28336
                                    readOnly: readonly,
28337
                                    //labelCls: 'label-minova',
28338
                                    labelWidth: labelWidth,
28339
                                    msgTarget: 'side',
28340
                                    hidden: ishidden,
28341
                                    name: rec.FieldName,
28342
                                    value: rec.DefaultValue,
28343
                                    maxLength: rec.Length,
28344
                                    anchor: '100%',
28345
                                    formname: formname_,
28346
                                    nameTable: nameTable_,
28347
                                    fieldStyle: 'text-align:right;',
28348
                                    listeners: {
28349
                                        change: function (val) {
28350
                                            var _label = val.name;
28351
                                            var _form = val.formname;
28352
                                            var _Value = val.getValue();
28353
                                            var target = rec.TriggerCombo;
28354
                                            var custumFunc = rec.SelectFunction;
28355
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
28356
                                                Ext.Ajax.request({
28357
                                                    async: false,
28358
                                                    method: 'POST',
28359
                                                    url: '/UserControl/GetStore',
28360
                                                    params: {
28361
                                                        tableName: 'PCMFUNC',
28362
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
28363
                                                    },
28364
                                                    success: function (response) {
28365
                                                        var results = Ext.decode(response.responseText);
28366
                                                        data_ = results.data[0];
28367
                                                        if (data_ != undefined) {
28368
                                                            custumFunc = data_.FunctionCode;
28369
                                                        }
28370
                                                    }
28371
                                                });
28372
                                            }
28373
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
28374
                                            if (frm) {
28375
                                                if (target) {
28376
                                                    var f = frm.getForm().findField(target)
28377
                                                    _store = f.getStore();
28378
                                                    var _tbl = _store.proxy.extraParams.tableName;
28379
                                                    var oldParam = _store.proxy.extraParams.param;
28380
                                                    _store.proxy.extraParams = {
28381
                                                        tableName: _tbl,
28382
                                                        param: _label + '[=]' + _Value
28383
                                                    };
28384
                                                    _store.load();
28385
                                                }
28386
                                                if (custumFunc) {
28387
                                                    eval(custumFunc)
28388
                                                }
28389
                                            }
28390
                                        }
28391
                                    }
28392
                                });
28393
                            } else if (rec.DataType == 3) {
28394
                                formfield = new Ext.form.TextField({
28395
                                    allowBlank: allowblank,
28396
                                    fieldLabel: rec.ScreenCaption,
28397
                                    readOnly: readonly,
28398
                                    //labelCls: 'label-minova',
28399
                                    labelWidth: labelWidth,
28400
                                    msgTarget: 'side',
28401
                                    hidden: ishidden,
28402
                                    name: rec.FieldName,
28403
                                    value: rec.DefaultValue,
28404
                                    maxLength: rec.Length,
28405
                                    precision: rec.Prec,
28406
                                    anchor: '100%',
28407
                                    formname: formname_,
28408
                                    nameTable: nameTable_,
28409
                                    fieldStyle: 'text-align:right;',
28410
                                    maskRe: '^[0-9]+(\.[0-9]{1,2})?$',
28411
                                    listeners: {
28412
                                        change: function (val) {
28413
                                            var _label = val.name;
28414
                                            var _form = val.formname;
28415
                                            var _Value = val.getValue();
28416
                                            var target = rec.TriggerCombo;
28417
                                            var custumFunc = rec.SelectFunction;
28418
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
28419
                                                Ext.Ajax.request({
28420
                                                    async: false,
28421
                                                    method: 'POST',
28422
                                                    url: '/UserControl/GetStore',
28423
                                                    params: {
28424
                                                        tableName: 'PCMFUNC',
28425
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
28426
                                                    },
28427
                                                    success: function (response) {
28428
                                                        var results = Ext.decode(response.responseText);
28429
                                                        data_ = results.data[0];
28430
                                                        if (data_ != undefined) {
28431
                                                            custumFunc = data_.FunctionCode;
28432
                                                        }
28433
                                                    }
28434
                                                });
28435
                                            }
28436
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
28437
                                            if (frm) {
28438
                                                if (target) {
28439
                                                    var f = frm.getForm().findField(target)
28440
                                                    _store = f.getStore();
28441
                                                    var _tbl = _store.proxy.extraParams.tableName;
28442
                                                    var oldParam = _store.proxy.extraParams.param;
28443
                                                    _store.proxy.extraParams = {
28444
                                                        tableName: _tbl,
28445
                                                        param: _label + '[=]' + _Value
28446
                                                    };
28447
                                                    _store.load();
28448
                                                }
28449
                                                if (custumFunc) {
28450
                                                    eval(custumFunc)
28451
                                                }
28452
                                            }
28453
                                        }
28454
                                    }
28455
                                });
28456
                            }
28457
                    }
28458
                } else if (rec.SearchType != "") {
28459
                    if (rec.SearchType == "0") //combobox
28460
                    {
28461
                        valueField = null;
28462
                        displayValue = null;
28463
                        if (rec.TableRef != "") {
28464
                            Ext.Ajax.request({
28465
                                async: false,
28466
                                method: 'POST',
28467
                                url: '/UserControl/GetStore',
28468
                                params: {
28469
                                    tableName: 'SDATATABLEFIELD',
28470
                                    param: 'TableName[equal]' + rec.TableRef
28471
                                },
28472
                                success: function (response) {
28473
                                    var results = Ext.decode(response.responseText);
28474
                                    data_ = results.data;
28475
                                    if (data_ != undefined) {
28476
                                        valueField_ = $.grep(data_, function (r) {
28477
                                            return r.ValueField == '1'
28478
                                        });
28479
                                        if (valueField_.length > 0) {
28480
                                            valueField = valueField_[0].FieldName
28481
                                        }
28482
                                        displayValue_ = $.grep(data_, function (r) {
28483
                                            return r.DisplayValue == '1'
28484
                                        });
28485
                                        if (displayValue_.length > 0) {
28486
                                            displayValue = displayValue_[0].FieldName
28487
                                        }
28488
                                    }
28489
                                }
28490
                            });
28491
                        }
28492
                        formfield = new Ext.form.ComboBox({
28493
                            allowBlank: allowblank,
28494
                            fieldLabel: rec.ScreenCaption,
28495
                            forceSelection: true,
28496
                            anyMatch: true,
28497
                            readOnly: readonly,
28498
							
28499
							//Start for mobile by saswanto
28500
							editable:readonly,
28501
							plugins: 'responsive',
28502
							responsiveConfig: {
28503
								personalizedWide:{}
28504
							},    
28505
							responsiveFormulas: {
28506
								personalizedWide: function (context,layout) {
28507
									if (context.width <= 600){
28508
										this.cmp.setEditable(false);
28509
										return true;
28510
									}
28511
								}
28512
							},							
28513
							//Start for mobile by saswanto
28514
							
28515
							
28516
                            //labelCls: 'label-minova',
28517
                            labelWidth: labelWidth,
28518
                            hidden: ishidden,
28519
                            msgTarget: 'side',
28520
                            name: rec.FieldName,
28521
                            formname: formname_,
28522
                            nameTable: nameTable_,
28523
                            value: rec.DefaultValue,
28524
                            anchor: '100%',
28525
                            store: Ext.create('Ext.data.Store', {
28526
                                storeId: 'store' + rec.FieldName,
28527
                                autoLoad: false,
28528
                                proxy: {
28529
                                    method: 'POST',
28530
                                    type: 'ajax',
28531
                                    url: '/UserControl/GetStore',
28532
                                    extraParams: {
28533
                                        tableName: rec.TableRef,
28534
                                        param: rec.ParamCombo
28535
                                    },
28536
                                    reader: {
28537
                                        type: 'json',
28538
                                        root: 'data',
28539
                                        totalProperty: 'data[0].TotalCount'
28540
                                    }
28541
                                }
28542
                            }),                            
28543
                            formtarget: formname_,
28544
                            listeners: {
28545
                                afterrender: function (f) {
28546
                                    var store_ = f.getStore();
28547
                                    store_.load();
28548
                                },
28549
                                change: function (val) {
28550
                                    var _label = val.name;
28551
                                    var _form = val.formtarget;
28552
                                    var _Value = val.getValue();
28553
                                    var target = rec.TriggerCombo;
28554
                                    var custumFunc = rec.SelectFunction;
28555
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
28556
                                    if (frm) {
28557

    
28558
                                        if (target) {
28559
                                            var f = frm.getForm().findField(target)
28560
                                            _store = f.getStore();
28561
                                            var _tbl = _store.proxy.extraParams.tableName;
28562
                                            var oldParam = _store.proxy.extraParams.param;
28563
                                            _store.proxy.extraParams = {
28564
                                                tableName: _tbl,
28565
                                                param: _label + '[=]' + _Value
28566
                                            };
28567
                                            _store.load();
28568
                                        }
28569
                                        if (custumFunc) {
28570
                                            eval(custumFunc)
28571
                                        }
28572
                                    }
28573
                                }
28574
                            },
28575
                            queryMode: 'local',
28576
                            displayField: displayValue,
28577
                            valueField: valueField,
28578
                        });
28579
                    } else if (rec.SearchType == '2') //Lookup
28580
                    {
28581
                        formfield = new MinovaUtil.MinovaES.MinovaLookupGrid({
28582
                            allowBlank: allowblank,
28583
                            fieldLabel: rec.ScreenCaption,
28584
                            readOnly: readonly,
28585
                            IsPrimaryKey: rec.IsPrimaryKey,
28586
                            msgTarget: 'side',
28587
                            //labelCls: 'label-minova',
28588
                            labelWidth: labelWidth,
28589
                            hidden: ishidden,
28590
                            name: rec.FieldName,
28591
                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
28592
                            triggerCls: 'x-form-search-trigger',
28593
                            vtype: 'alphanum', // disable space
28594
                            formtarget: me.formname, // nama form  yang akan di set value-nya
28595
                            anchor: '100%',
28596
                            formname: formname_,
28597
                            nameTable: nameTable_,
28598
                            LookupFunction: rec.LookupFunction,
28599
                            SearchFunction: rec.SearchFunction,
28600
                            listeners: {
28601
                                change: function (val) {
28602
                                    var _label = val.name;
28603
                                    var _form = val.formname;
28604
                                    var _Value = val.getValue();
28605
                                    var target = rec.TriggerCombo;
28606
                                    var custumFunc = rec.SelectFunction;
28607
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
28608
                                        Ext.Ajax.request({
28609
                                            async: false,
28610
                                            method: 'POST',
28611
                                            url: '/UserControl/GetStore',
28612
                                            params: {
28613
                                                tableName: 'PCMFUNC',
28614
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
28615
                                            },
28616
                                            success: function (response) {
28617
                                                var results = Ext.decode(response.responseText);
28618
                                                data_ = results.data[0];
28619
                                                if (data_ != undefined) {
28620
                                                    custumFunc = data_.FunctionCode;
28621
                                                }
28622
                                            }
28623
                                        });
28624
                                    }
28625
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
28626
                                    if (frm) {
28627

    
28628
                                        if (target) {
28629
                                            var f = frm.getForm().findField(target)
28630
                                            _store = f.getStore();
28631
                                            var _tbl = _store.proxy.extraParams.tableName;
28632
                                            var oldParam = _store.proxy.extraParams.param;
28633
                                            _store.proxy.extraParams = {
28634
                                                tableName: _tbl,
28635
                                                param: _label + '[=]' + _Value
28636
                                            };
28637
                                            _store.load();
28638
                                        }
28639

    
28640
                                        if (custumFunc) {
28641
                                            eval(custumFunc)
28642
                                        }
28643

    
28644
                                    }
28645

    
28646
                                },
28647

    
28648
                            },
28649
                        });
28650
                    } else if (rec.SearchType == '3') //lookup tree
28651
                    {
28652
                        formfield = new MinovaUtil.MinovaES.MinovaLookupTree({
28653
                            allowBlank: allowblank,
28654
                            fieldLabel: rec.ScreenCaption,
28655
                            readOnly: readonly,
28656
                            IsPrimaryKey: rec.IsPrimaryKey,
28657
                            //labelCls: 'label-minova',
28658
                            labelWidth: labelWidth,
28659
                            hidden: ishidden,
28660
                            name: rec.FieldName,
28661
                            msgTarget: 'side',
28662
                            triggerCls: 'x-form-search-trigger',
28663
                            treeSructure: rec.SearchFunction, //'O-O-P',
28664
                            objClassValue: rec.ParamCombo, //'O',
28665
                            formname: formname_,
28666
                            targetField: rec.FieldName,
28667
                            nameTable: nameTable_,
28668
                            editable: false,
28669
                            anchor: '100%',
28670
                            listeners: {
28671
                                change3: function (val) {
28672
                                    var _label = val.name;
28673
                                    var _form = val.formname;
28674
                                    var _Value = val.getValue();
28675
                                    var target = rec.TriggerCombo;
28676
                                    var custumFunc = rec.SelectFunction;
28677
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
28678
                                        Ext.Ajax.request({
28679
                                            async: false,
28680
                                            method: 'POST',
28681
                                            url: '/UserControl/GetStore',
28682
                                            params: {
28683
                                                tableName: 'PCMFUNC',
28684
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
28685
                                            },
28686
                                            success: function (response) {
28687
                                                var results = Ext.decode(response.responseText);
28688
                                                data_ = results.data[0];
28689
                                                if (data_ != undefined) {
28690
                                                    custumFunc = data_.FunctionCode;
28691
                                                }
28692
                                            }
28693
                                        });
28694
                                    }
28695
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
28696
                                    if (frm) {
28697

    
28698
                                        if (target) {
28699
                                            var f = frm.getForm().findField(target)
28700
                                            _store = f.getStore();
28701
                                            var _tbl = _store.proxy.extraParams.tableName;
28702
                                            var oldParam = _store.proxy.extraParams.param;
28703
                                            _store.proxy.extraParams = {
28704
                                                tableName: _tbl,
28705
                                                param: _label + '[=]' + _Value
28706
                                            };
28707
                                            _store.load();
28708
                                        }
28709
                                        if (custumFunc) {
28710
                                            eval(custumFunc)
28711
                                        }
28712
                                    }
28713
                                },
28714
                                blur: function (val) {
28715
                                    //if(val.value.split('-').length != 2){
28716
                                    var _label = val.name;
28717
                                    var _form = val.formname;
28718
                                    var _Value = val.getValue();
28719
                                    var target = rec.TriggerCombo;
28720
                                    var custumFunc = rec.SelectFunction;
28721
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
28722
                                        Ext.Ajax.request({
28723
                                            async: false,
28724
                                            method: 'POST',
28725
                                            url: '/UserControl/GetStore',
28726
                                            params: {
28727
                                                tableName: 'PCMFUNC',
28728
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
28729
                                            },
28730
                                            success: function (response) {
28731
                                                var results = Ext.decode(response.responseText);
28732
                                                data_ = results.data[0];
28733
                                                if (data_ != undefined) {
28734
                                                    custumFunc = data_.FunctionCode;
28735
                                                }
28736
                                            }
28737
                                        });
28738
                                    }
28739
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
28740
                                    if (frm) {
28741

    
28742
                                        if (target) {
28743
                                            var f = frm.getForm().findField(target)
28744
                                            _store = f.getStore();
28745
                                            var _tbl = _store.proxy.extraParams.tableName;
28746
                                            var oldParam = _store.proxy.extraParams.param;
28747
                                            _store.proxy.extraParams = {
28748
                                                tableName: _tbl,
28749
                                                param: _label + '[=]' + _Value
28750
                                            };
28751
                                            _store.load();
28752
                                        }
28753
                                        if (custumFunc) {
28754
                                            eval(custumFunc)
28755
                                        }
28756
                                    }
28757
                                    //}
28758
                                }
28759

    
28760
                            }
28761
                        });
28762
                    } else if (rec.SearchType == '10') //Checkboxgroup
28763
                    {
28764
                        if (rec.TableRef != "") {
28765
                            Ext.Ajax.request({
28766
                                async: false,
28767
                                method: 'POST',
28768
                                url: '/UserControl/GetStore',
28769
                                params: {
28770
                                    tableName: 'SDATATABLEFIELD',
28771
                                    param: 'TableName[equal]' + rec.TableRef
28772
                                },
28773
                                success: function (response) {
28774
                                    var results = Ext.decode(response.responseText);
28775
                                    data_ = results.data;
28776
                                    if (data_ != undefined) {
28777
                                        valueField_ = $.grep(data_, function (r) {
28778
                                            return r.ValueField == '1'
28779
                                        });
28780
                                        if (valueField_.length > 0) {
28781
                                            valueField = valueField_[0].FieldName
28782
                                        }
28783
                                        displayValue_ = $.grep(data_, function (r) {
28784
                                            return r.DisplayValue == '1'
28785
                                        });
28786
                                        if (displayValue_.length > 0) {
28787
                                            displayValue = displayValue_[0].FieldName
28788
                                        }
28789
                                    }
28790
                                }
28791
                            });
28792
                        }
28793
                        formfield = new MinovaUtil.MinovaES.StoreCheckboxGroup({
28794
                            //xtype: 'storecheckboxgroup',
28795
                            //allowBlank: allowblank,
28796
                            name: 'cbg' + rec.FieldName,
28797
                            nametxt: rec.FieldName,
28798
                            formname: formname_,
28799
                            nameTable: nameTable_,
28800
                            value: rec.DefaultValue,
28801
                            fieldLabel: rec.ScreenCaption,
28802
                            labelAlign: me.labelAlign,
28803
                            labelSeparator: me.labelSeparator,
28804
                            readOnly: readonly,
28805
                            //forceSelection: true,
28806
                            //anyMatch: true,
28807
                            //readOnly: readonly,
28808
                            ////labelCls: 'label-minova',
28809
                            labelWidth: labelWidth,
28810
                            //hidden: ishidden,
28811
                            //msgTarget: 'side',
28812
                            //name: rec.FieldName,
28813
                            //formname: formname_,
28814
                            //nameTable: nameTable_,
28815
                            //value: rec.DefaultValue,
28816
                            //width: '95%',
28817
                            store: Ext.create('Ext.data.Store', {
28818
                                storeId: 'store' + rec.FieldName,
28819
                                autoLoad: true,
28820
                                proxy: {
28821
                                    method: 'POST',
28822
                                    type: 'ajax',
28823
                                    url: '/UserControl/GetStore',
28824
                                    extraParams: {
28825
                                        tableName: rec.TableRef,
28826
                                        param: rec.ParamCombo
28827
                                    },
28828
                                    reader: {
28829
                                        type: 'json',
28830
                                        root: 'data',
28831
                                        totalProperty: 'data[0].TotalCount'
28832
                                    }
28833
                                }
28834
                            }),
28835
                            //formtarget: formname_,
28836
                            columns: 2,
28837
                            vertical: true,
28838
                            mapFn: function (storeItem) {
28839
                                var txfield = Ext.ComponentQuery.query('[name=' + rec.FieldName + '_TX_' + storeItem.data.ProblemCode + ']')[0];
28840
                                var txvalue = '';
28841
                                if (txfield) txvalue = txfield.value;
28842
                                var cbfield = Ext.ComponentQuery.query('[name=' + rec.FieldName + '_CB_' + storeItem.data.ProblemCode + ']')[0];
28843
                                var cbchecked = false;
28844
                                if (cbfield) cbchecked = (cbfield.value === 'true');
28845
                                return {
28846
                                    // Here, we define which store fields map 
28847
                                    // to which checkbox configuration property.
28848
                                    // The field "label" should map to boxLabel
28849
                                    // The field "value" should map to inputValue
28850
                                    // xtype and name are hardcoded for all checkboxes in this group.
28851
                                    xtype: 'container',
28852
                                    items: [
28853
                                        {
28854
                                            xtype: 'checkbox',
28855
                                            boxLabel: storeItem.data.ProblemDesc,
28856
                                            name: 'cb_' + rec.FieldName + '_CB_' + storeItem.data.ProblemCode,
28857
                                            nametxt: rec.FieldName + '_CB_' + storeItem.data.ProblemCode,
28858
                                            formname: formname_,
28859
                                            nameTable: nameTable_,
28860
                                            readOnly: readonly,
28861
                                            isshowtext: storeItem.data.IsShowText,
28862
                                            inputValue: storeItem.data.ProblemCode,
28863
                                            checked: cbchecked,
28864
                                            listeners: {
28865
                                                click: {
28866
                                                    element: 'el', //bind to the underlying el property on the panel
28867
                                                    fn: function (id) {
28868
                                                        var MyComp = Ext.getCmp(this.id);
28869
                                                        var frmForm = Ext.ComponentQuery.query('[name=tx_' + this.el.component.nametxt.replace("_CB_", "_TX_") + ']')[0];
28870
                                                        if (this.el.component.isshowtext == '1') {
28871
                                                            frmForm.setHidden(!MyComp.checked);
28872
                                                            frmForm.setValue('');
28873
                                                        }
28874
                                                        var cb_ = Ext.ComponentQuery.query('[name=' + this.el.component.nametxt + ']')[0];
28875
                                                        cb_.setValue(MyComp.checked);
28876
                                                    }
28877
                                                },
28878
                                                //change: function (val) {
28879
                                                //    alert('ok');
28880
                                                //},
28881
                                            }
28882
                                        }, {
28883
                                            xtype: 'textareafield',
28884
                                            name: 'tx_' + rec.FieldName + '_TX_' + storeItem.data.ProblemCode,
28885
                                            nametxt: rec.FieldName + '_TX_' + storeItem.data.ProblemCode,
28886
                                            formname: formname_,
28887
                                            nameTable: nameTable_,
28888
                                            readOnly: readonly,
28889
                                            width: '100%',
28890
                                            value: txvalue,
28891
                                            hidden: !((storeItem.data.IsShowText === '1') && (cbchecked)),
28892
                                            listeners: {
28893
                                                change: function (id, newValue, oldValue, eOpts) {
28894
                                                    var frmForm = Ext.ComponentQuery.query('[name=' + id.nametxt + ']')[0];
28895
                                                    frmForm.setValue(newValue);
28896
                                                },
28897
                                            }
28898
                                        }]
28899
                                };
28900
                            }
28901
                        });
28902
                    } else if (rec.SearchType == '11') //Checkbox
28903
                    {
28904
                        formfield = new Ext.Container({
28905
                            items: [
28906
                                {
28907
                                    xtype: 'checkbox',
28908
                                    boxLabel: rec.ScreenCaption,
28909
                                    name: 'cb_' + rec.FieldName,
28910
                                    nametxt: rec.FieldName,
28911
                                    hidden: ishidden,
28912
                                    readOnly: readonly,
28913
                                    tableName: rec.TableRef, //name tabel yang jadi ref-nya
28914
                                    checked: (rec.DefaultValue.toUpperCase() === 'TRUE'),
28915
                                    listeners: {
28916
                                        click: {
28917
                                            element: 'el', //bind to the underlying el property on the panel
28918
                                            fn: function (id) {
28919
                                                var MyComp = Ext.getCmp(this.id);
28920
                                                var frmForm = Ext.ComponentQuery.query('[name=' + this.el.component.nametxt + ']')[0];
28921
                                                frmForm.setValue(MyComp.checked);
28922
                                            }
28923
                                        }
28924
                                    }
28925
                                },
28926
                                {
28927
                                    xtype: 'textfield',
28928
                                    name: rec.FieldName,
28929
                                    namecb: 'cb_' + rec.FieldName,
28930
                                    formname: formname_,
28931
                                    nameTable: nameTable_,
28932
                                    readOnly: readonly,
28933
                                    value: rec.DefaultValue,
28934
                                    hidden: true,
28935
                                    listeners: {
28936
                                        change: function (id, newValue, oldValue, eOpts) {
28937
                                            var cbfield = Ext.ComponentQuery.query('[name=' + id.namecb + ']')[0];
28938
                                            var cbchecked = false;
28939
                                            if (cbfield) cbchecked = (newValue === 'true');
28940
                                            cbfield.setValue(cbchecked);
28941
                                        },
28942
                                    }
28943
                                }]
28944
                            
28945
                        })
28946
                        //formfield = new Ext.form.field.Checkbox({
28947
                        //    boxLabel: rec.ScreenCaption,
28948
                        //    name: rec.FieldName,
28949
                        //    name: 'cb_' + rec.FieldName,
28950
                        //    nametxt: rec.FieldName,
28951
                        //    hidden: ishidden,
28952
                        //    readOnly: readonly,
28953
                        //    name: rec.FieldName,
28954
                        //    tableName: rec.TableRef, //name tabel yang jadi ref-nya
28955
                        //    checked: (rec.DefaultValue.toUpperCase() === 'TRUE'),
28956
                        //    listeners: {
28957
                        //        click: {
28958
                        //            element: 'el', //bind to the underlying el property on the panel
28959
                        //            fn: function (id) {
28960
                        //                var MyComp = Ext.getCmp(this.id);
28961
                        //                var cb_ = Ext.ComponentQuery.query('[name=' + this.el.component.nametxt + ']')[0];
28962
                        //                cb_.setValue(MyComp.checked);
28963
                        //            }
28964
                        //        }
28965
                        //    }
28966
                        //    //value: rec.DefaultValue,
28967
                        //})
28968
                    }
28969
                }
28970
                if (isDesk) {
28971
                    if (rec.ColumnNo == 1) {
28972
                        col1.push(formfield);
28973
                    } else {
28974
                        col2.push(formfield);
28975
                    }
28976
                } else {
28977
                    col1.push(formfield);
28978
                }
28979

    
28980
            });
28981
        }
28982
        Ext.applyIf(me, {
28983
            items:
28984
                [
28985
                    {
28986
                        //width: 450,
28987
                        //style: 'width: 50%',
28988
                        defaults: {
28989
                            layout: 'anchor',
28990
                            xtype: 'container',
28991
                            flex: 1,
28992
                            margin: me.marginDefault,
28993
                            //defaultType: 'textfield',
28994
                            //anchor: '100%',
28995
                            ////style: 'width: 50%',
28996
                        },
28997
                        items: col1,
28998
                        flex: 1,
28999
                    },
29000
                    {
29001
                        //width: 450,
29002
                        //style: 'width: 50%',
29003
                        defaults: {
29004
                            layout: 'anchor',
29005
                            xtype: 'container',
29006
                            flex: 1,
29007
                            margin: me.marginDefault,
29008
                            //defaultType: 'textfield',
29009
                            //anchor: '100%',
29010
                            ////style: 'width: 50%',
29011
                        },
29012
                        items: col2,
29013
                        flex: 1,
29014
                    }
29015
                ]
29016
        });
29017
        this.callParent();
29018
    }
29019
});
29020

    
29021
/*EditableGrid ESS Generator YN 20211216 */
29022
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowEditableGrid2', {
29023
    extend: 'Ext.form.Panel',
29024
    alias: ['widget.minovaworkfloweditablegrid2', 'widget.workfloweditablegrid2'],
29025
    requires: [
29026
        'Ext.grid.plugin.CellEditing',
29027
        'Ext.grid.RowNumberer',
29028
        'Ext.grid.Panel',
29029
    ],
29030
    cls: 'grid-ess',
29031
    anchor: '100%',
29032
    tableName: undefined,
29033
    hideButton: undefined,
29034
    multiSelect: undefined,
29035
    formname: this.name,
29036
    bizprocid: undefined,
29037
    bizflowid: undefined,
29038
    taskid: undefined,
29039
    features: undefined,
29040
    minHeight: undefined,
29041
    maxHeight: undefined,
29042
    headerLayout: undefined,
29043
    summaryType: undefined,
29044
    initComponent: function () {
29045
        var me = this;
29046
        var isLookup = me.isLookup;
29047
        var hide_ = false;
29048
        var widthLock = 250;
29049
        var checkSelection = '';
29050
        if (me.hideButton == true) {
29051
            hide_ = true;
29052
        }
29053
        if (me.multiSelect) {
29054
            locking = false;
29055
            checkSelection = 'checkboxmodel';
29056
            widthLock = 40;
29057
        }
29058
        var tableName = me.tableName;
29059
        var features = me.features;
29060
        var cols = [];
29061
        var fieldStore = [];
29062
        var _url = 'GetAllField';
29063
        var hasil = null;
29064
        var height = me.height;
29065
        var storeID = 'store' + me.tableName;
29066
        var gridName = 'grid' + me.name;
29067
        if (me.storeName) {
29068
            storeID = me.storeName;
29069
        }
29070
        var LangID = MinovaUtil.GetLangID();
29071
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
29072
        Ext.Ajax.request({
29073
            async: false,
29074
            method: 'POST',
29075
            url: '/UserControl/GetStore',
29076
            params: {
29077
                tableName: 'PDSWFSTRUCTUREFIELD',
29078
                param: parameter
29079
            },
29080
            success: function (response) {
29081
                var results = Ext.decode(response.responseText);
29082
                hasil = results.data;
29083
            }
29084
        });
29085
        cols.push({
29086
            xtype: 'rownumberer'
29087
        });
29088
        var addData = 'var data={';
29089
        if (hasil.length > 0) {
29090
            Ext.each(hasil, function (rec) {
29091
                fieldStore.push(rec.FieldName);
29092
                if (rec.FieldName != 'Sequence') {
29093
                    addData = addData + rec.FieldName + ":" + "'',";
29094
                }
29095
                var null_ = null;
29096
                var ReadOnly_ = false;
29097
                if (rec.IsRequired == '1') {
29098
                    null_ = false;
29099
                } else {
29100
                    null_ = true;
29101
                }
29102
                var Hidden_ = false;
29103
                if (rec.IsReadOnly == '1') {
29104
                    ReadOnly_ = true;
29105
                }
29106
                if (rec.IsVisible == '1') {
29107
                    switch (rec.FormatRef) {
29108
                        case "date":
29109
                            cols.push({
29110
                                xtype: 'minovadatecolumn',
29111
                                hidden: Hidden_,
29112
                                text: rec.HeaderTitle,
29113
                                dataIndex: rec.FieldName,
29114
                                filter: {
29115
                                    itemDefaults: {
29116
                                        emptyText: 'Search for...',
29117
                                    }
29118
                                },
29119
                                editor: {
29120
                                    allowBlank: null_,
29121
                                    xtype: 'datefield',
29122
                                    hideMode: 'visibility',
29123
                                    readOnly: ReadOnly_,
29124
                                    id: tableName + rec.FieldName,
29125
                                    fieldGrid: rec.FieldName,
29126
                                    nameTable: rec.TableName,
29127
                                    value: rec.DefaultValue
29128
                                }
29129
                            });
29130
                            break
29131
                        case "amount":
29132
                            cols.push({
29133
                                xtype: 'minovacurrancycolumn',
29134
                                align: 'right',
29135
                                text: rec.HeaderTitle,
29136
                                dataIndex: rec.FieldName,
29137
                                hidden: Hidden_,
29138
                                filter: {
29139
                                    itemDefaults: {
29140
                                        emptyText: 'Search for...'
29141
                                    }
29142
                                },
29143
                                editor: {
29144
                                    allowBlank: null_,
29145
                                    xtype: 'minovacurrencyfield',
29146
                                    readOnly: ReadOnly_,
29147
                                    id: tableName + rec.FieldName,
29148
                                    nameTable: rec.TableName,
29149
                                    fieldGrid: rec.FieldName,
29150
                                    fieldStyle: 'text-align:right;',
29151
                                    value: '0',
29152
                                    maxLength: rec.Length,
29153
                                }
29154
                            });
29155
                            break
29156
                        default:
29157
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
29158
                                cols.push({
29159
                                    text: rec.HeaderTitle,
29160
                                    dataIndex: rec.FieldName,
29161
                                    width: 100,
29162
                                    filter: {
29163
                                        type: 'string',
29164
                                        itemDefaults: {
29165
                                            emptyText: 'Search for...'
29166
                                        }
29167
                                    }
29168
                                });
29169
                            } else if (rec.SearchType == '0') { 
29170
                                var valueField = null;
29171
                                var displayValue = null;
29172
                                var TableRef = undefined;
29173
                                if (rec.TableRef != '') {
29174
                                    TableRef = rec.TableRef;
29175
                                    Ext.Ajax.request({
29176
                                        async: false,
29177
                                        method: 'POST',
29178
                                        url: '/UserControl/GetStore',
29179
                                        params: {
29180
                                            tableName: 'SDATATABLEFIELD',
29181
                                            param: 'TableName[equal]' + rec.TableRef
29182
                                        },
29183
                                        success: function (response) {
29184
                                            var results = Ext.decode(response.responseText);
29185
                                            data_ = results.data;
29186
                                            if (data_ != undefined) {
29187
                                                valueField_ = $.grep(data_, function (r) {
29188
                                                    return r.ValueField == '1'
29189
                                                });
29190
                                                valueField = valueField_[0].FieldName
29191
                                                displayValue_ = $.grep(data_, function (r) {
29192
                                                    return r.DisplayValue == '1'
29193
                                                });
29194
                                                displayValue = displayValue_[0].FieldName
29195
                                            }
29196
                                        }
29197
                                    });
29198
                                }
29199
                                Ext.create('Ext.data.Store', {
29200
                                    storeId: 'store_' + me.tableName + rec.FieldName,
29201
                                    autoLoad: true,
29202
                                    proxy: {
29203
                                        method: 'POST',
29204
                                        type: 'ajax',
29205
                                        url: '/UserControl/GetStoreAuth',
29206
                                        extraParams: {
29207
                                            tableName: TableRef,
29208
                                            param: rec.ParamCombo,
29209
                                            menuId: MinovaUtil.GetMenuID()
29210
                                        },
29211
                                        reader: {
29212
                                            type: 'json',
29213
                                            root: 'data',
29214
                                            totalProperty: 'data[0].TotalCount'
29215
                                        }
29216
                                    }
29217
                                });
29218
                                cols.push({
29219
                                    //xtype : 'minovacombocolumn',
29220
                                    hidden: Hidden_,
29221
                                    text: rec.HeaderTitle,
29222
                                    dataIndex: rec.FieldName,
29223
                                    width: (rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
29224
                                    summaryType: function (records) {
29225
                                        var suma = 0;
29226
                                        if (me.summaryType == 'average') {
29227
                                            // Sumar en la columna solo las lineas que estan marcadas para ser sumadas a los totales
29228
                                            Ext.each(records, function (record, index) {
29229
                                                if (record.get(rec.FieldName)) {
29230
                                                    suma = suma + parseFloat(record.get(rec.FieldName).replace(",", "."));
29231
                                                }
29232
                                            });
29233
                                            (records.length == 0) ? suma = 0 : suma = suma / records.length;
29234
                                        }
29235
                                        else if (me.summaryType == 'sum') {
29236
                                            // Sumar en la columna solo las lineas que estan marcadas para ser sumadas a los totales
29237
                                            Ext.each(records, function (record, index) {
29238
                                                if (record.get(rec.FieldName)) {
29239
                                                    suma = suma + parseFloat(record.get(rec.FieldName).replace(",", "."));
29240
                                                }
29241
                                            });
29242
                                        }
29243
                                        return suma;
29244
                                    },
29245
                                    //valueField : valueField,
29246
                                    //displayField : displayValue,
29247
                                    //store : 'store_' + me.tableName + rec.FieldName,
29248
                                    editor: {
29249
                                        allowBlank: null_,
29250
                                        xtype: 'minovacombobox',
29251
                                        readOnly: ReadOnly_,
29252
                                        id: rec.TableName + rec.FieldName,
29253
                                        nameTable: rec.TableName,
29254
                                        fieldGrid: rec.FieldName,
29255
                                        valueField: valueField,
29256
                                        displayField: displayValue,
29257
                                        store: 'store_' + me.tableName + rec.FieldName,
29258
                                        value: rec.DefaultValue,
29259
										formtarget: me.name,
29260
										listeners: {
29261
											blur: function (val) {
29262
												var _label = val.valueField; //YN 220616
29263
												var _form = val.formtarget;
29264
												var _Value = val.getValue();
29265
												var target = rec.TriggerCombo;
29266
												var custumFunc = rec.SelectFunction;
29267
												var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
29268
												if (frm) {
29269

    
29270
													if (target) {
29271
														//var f = frm.getForm().findField(target)
29272
														//_store = f.getStore();
29273
														var _store = Ext.data.StoreManager.lookup('store_' + me.tableName + target);
29274
														var _tbl = _store.proxy.extraParams.tableName;
29275
														var oldParam = _store.proxy.extraParams.param;
29276
														_store.proxy.extraParams = {
29277
															tableName: _tbl,
29278
															param: _label + '[=]' + _Value
29279
														};
29280
														_store.load();
29281
													}
29282
													if (custumFunc) {
29283
														eval(custumFunc)
29284
													}
29285
												}
29286
											}
29287
										}
29288
                                    },
29289
                                    renderer: function (value) {
29290
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
29291
                                        var index = store.find(valueField, value);
29292
                                        var val = "";
29293
                                        if (index != -1) {
29294
                                            var rc = store.getAt(index);
29295
                                            val = rc.get(displayValue);
29296
                                        } else {
29297
                                            val = value;
29298
                                        }
29299
                                        return val;
29300
                                    },
29301
                                    filter: {
29302
                                        type: 'list',
29303
                                        itemDefaults: {
29304
                                            emptyText: 'Search for...'
29305
                                        }
29306
                                    }
29307
                                });
29308
                            } else if (rec.SearchType == '5') {
29309
                                var valueField = null;
29310
                                var displayValue = null;
29311
                                var AdditionaldisplayValue = null;
29312
                                var TableRef = undefined;
29313
                                if (rec.TableRef != '') {
29314
                                    TableRef = rec.TableRef;
29315
                                    Ext.Ajax.request({
29316
                                        async: false,
29317
                                        method: 'POST',
29318
                                        url: '/UserControl/GetStore',
29319
                                        params: {
29320
                                            tableName: 'SDATATABLEFIELD',
29321
                                            param: 'TableName[equal]' + rec.TableRef
29322
                                        },
29323
                                        success: function (response) {
29324
                                            var results = Ext.decode(response.responseText);
29325
                                            data_ = results.data;
29326
                                            if (data_ != undefined) {
29327
                                                valueField_ = $.grep(data_, function (r) {
29328
                                                    return r.ValueField == '1'
29329
                                                });
29330
                                                if (valueField_.length > 0) {
29331
                                                    valueField = valueField_[0].FieldName
29332
                                                }
29333

    
29334
                                                displayValue_ = $.grep(data_, function (r) {
29335
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
29336
                                                });
29337
                                                if (displayValue_.length > 0) {
29338
                                                    displayValue = displayValue_[0].FieldName;
29339
                                                }
29340
                                                if (displayValue_.length >= 2) {
29341
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
29342
                                                }
29343
                                            }
29344
                                        }
29345
                                    });
29346
                                }
29347
                                Ext.create('Ext.data.Store', {
29348
                                    storeId: 'store_' + me.tableName + rec.FieldName,
29349
                                    autoLoad: true,
29350
                                    proxy: {
29351
                                        method: 'POST',
29352
                                        type: 'ajax',
29353
                                        url: '/UserControl/GetStoreAuth',
29354
                                        extraParams: {
29355
                                            tableName: TableRef,
29356
                                            param: rec.ParamCombo,
29357
                                            menuId: MinovaUtil.GetMenuID()
29358
                                        },
29359
                                        reader: {
29360
                                            type: 'json',
29361
                                            root: 'data',
29362
                                            totalProperty: 'data[0].TotalCount'
29363
                                        }
29364
                                    }
29365
                                });
29366
                                cols.push({
29367
                                    //xtype : 'minovacombocolumn',
29368
                                    hidden: Hidden_,
29369
                                    text: rec.HeaderTitle,
29370
                                    dataIndex: rec.FieldName,
29371
                                    //valueField : valueField,
29372
                                    //displayField : displayValue,
29373
                                    //store : 'store_' + me.tableName + rec.FieldName,
29374
                                    tpl: Ext.create('Ext.XTemplate',
29375
                                        '<ul class="x-list-plain"><tpl for=".">',
29376
                                        '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
29377
                                        '</tpl></ul>'),
29378
                                    displayTpl: Ext.create('Ext.XTemplate',
29379
                                        '<tpl for=".">',
29380
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
29381
                                        '</tpl>'),
29382
                                    editor: {
29383
                                        allowBlank: null_,
29384
                                        xtype: 'combobox',
29385
                                        readOnly: ReadOnly_,
29386
                                        id: rec.TableName + rec.FieldName,
29387
                                        nameTable: rec.TableName,
29388
                                        fieldGrid: rec.FieldName,
29389
                                        valueField: valueField,
29390
                                        displayField: displayValue,
29391
                                        store: 'store_' + me.tableName + rec.FieldName,
29392
                                        value: rec.DefaultValue,
29393
                                        tpl: Ext.create('Ext.XTemplate',
29394
                                            '<ul class="x-list-plain"><tpl for=".">',
29395
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
29396
                                            '</tpl></ul>'),
29397
                                        displayTpl: Ext.create('Ext.XTemplate',
29398
                                            '<tpl for=".">',
29399
                                            '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
29400
                                            '</tpl>')
29401
                                    },
29402
                                    renderer: function (value) {
29403
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
29404
                                        var index = store.find(valueField, value);
29405
                                        var val = "";
29406
                                        if (index != -1) {
29407
                                            var rc = store.getAt(index);
29408
                                            //val = rc.get(displayValue);
29409
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
29410
                                        } else {
29411
                                            val = value;
29412
                                        }
29413
                                        return val;
29414
                                    },
29415
                                    filter: {
29416
                                        type: 'list',
29417
                                        itemDefaults: {
29418
                                            emptyText: 'Search for...'
29419
                                        }
29420
                                    }
29421
                                });
29422
                            } else if (rec.SearchType == '2') {
29423
                                var triger = (rec.TriggerCombo).split('$');
29424
                                var targetField_ = triger[0];
29425
                                var fieldValue_ = triger[1];
29426
                                cols.push({
29427
                                    text: rec.HeaderTitle,
29428
                                    hidden: Hidden_,
29429
                                    dataIndex: rec.FieldName,
29430
                                    filter: {
29431
                                        itemDefaults: {
29432
                                            emptyText: 'Search for...'
29433
                                        }
29434
                                    },
29435
                                    editor: {
29436
                                        allowBlank: null_,
29437
                                        xtype: 'minovalookupgrid',
29438
                                        readOnly: ReadOnly_,
29439
                                        isGrid: true,
29440
                                        fieldTarget: targetField_,
29441
                                        fieldValue: fieldValue_,
29442
                                        isGrid: true,
29443
                                        id: tableName + rec.FieldName,
29444
                                        tableName: rec.TableRef,
29445
                                        triggerCls: 'x-form-search-trigger',
29446
                                        vtype: 'alphanum',
29447
                                        nameTable: rec.TableName,
29448
                                        fieldGrid: rec.FieldName,
29449
                                        listeners: {
29450
                                            change: function (val) {
29451
                                                var custumFunc = rec.SelectFunction;
29452
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
29453
                                                    Ext.Ajax.request({
29454
                                                        async: false,
29455
                                                        method: 'POST',
29456
                                                        url: '/UserControl/GetStore',
29457
                                                        params: {
29458
                                                            tableName: 'PCMFUNC',
29459
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
29460
                                                        },
29461
                                                        success: function (response) {
29462
                                                            var results = Ext.decode(response.responseText);
29463
                                                            data_ = results.data[0];
29464
                                                            if (data_ != undefined) {
29465
                                                                custumFunc = data_.FunctionCode;
29466
                                                            }
29467
                                                        }
29468
                                                    });
29469
                                                }
29470
                                                if (custumFunc) {
29471
                                                    eval(custumFunc)
29472
                                                }
29473
                                            }
29474
                                        }
29475
                                    }
29476
                                });
29477
                            } else if (rec.SearchType == '3') {
29478
                                cols.push({
29479
                                    text: rec.HeaderTitle,
29480
                                    hidden: Hidden_,
29481
                                    dataIndex: rec.FieldName,
29482
                                    filter: {
29483
                                        itemDefaults: {
29484
                                            emptyText: 'Search for...'
29485
                                        }
29486
                                    },
29487
                                    editor: {
29488
                                        allowBlank: null_,
29489
                                        xtype: 'MinovaLookupTree',
29490
                                        readOnly: ReadOnly_,
29491
                                        id: tableName + rec.FieldName,
29492
                                        tableName: rec.TableRef,
29493
                                        triggerCls: 'x-form-search-trigger',
29494
                                        vtype: 'alphanum',
29495
                                        treeSructure: rec.SearchFunction,
29496
                                        objClassValue: rec.ParamCombo,
29497
                                        nameTable: rec.TableName,
29498
                                        fieldGrid: rec.FieldName,
29499
                                        formname: me.name,
29500
                                        listeners: {
29501
                                            change: function (val) {
29502
                                                var custumFunc = rec.SelectFunction;
29503
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
29504
                                                    Ext.Ajax.request({
29505
                                                        async: false,
29506
                                                        method: 'POST',
29507
                                                        url: '/UserControl/GetStore',
29508
                                                        params: {
29509
                                                            tableName: 'PCMFUNC',
29510
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
29511
                                                        },
29512
                                                        success: function (response) {
29513
                                                            var results = Ext.decode(response.responseText);
29514
                                                            data_ = results.data[0];
29515
                                                            if (data_ != undefined) {
29516
                                                                custumFunc = data_.FunctionCode;
29517
                                                            }
29518
                                                        }
29519
                                                    });
29520
                                                }
29521
                                                if (custumFunc) {
29522
                                                    eval(custumFunc)
29523
                                                }
29524
                                            }
29525
                                        }
29526
                                    }
29527
                                });
29528
                            } 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) {
29529
                                var triger = (rec.TriggerCombo).split('&');
29530
                                var targetField_ = triger[0];
29531
                                var fieldValue_ = triger[0];
29532
                                cols.push({
29533
                                    text: rec.HeaderTitle,
29534
                                    hidden: Hidden_,
29535
                                    dataIndex: rec.FieldName,
29536
                                    filter: {
29537
                                        itemDefaults: {
29538
                                            emptyText: 'Search for...'
29539
                                        }
29540
                                    },
29541
                                    editor: {
29542
                                        allowBlank: null_,
29543
                                        xtype: 'lookupemployee',
29544
                                        readOnly: ReadOnly_,
29545
                                        isGrid: true,
29546
                                        fieldTarget: targetField_,
29547
                                        fieldValue: fieldValue_,
29548
                                        isGrid: true,
29549
                                        id: tableName + rec.FieldName,
29550
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
29551
                                        triggerCls: 'x-form-search-trigger',
29552
                                        vtype: 'alphanum', // disable space
29553
                                        nameTable: rec.TableName,
29554
                                        fieldGrid: rec.FieldName,
29555
                                        listeners: {
29556
                                            change: function (val) {
29557
                                                var custumFunc = rec.SelectFunction;
29558
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
29559
                                                    Ext.Ajax.request({
29560
                                                        async: false,
29561
                                                        method: 'POST',
29562
                                                        url: '/UserControl/GetStore',
29563
                                                        params: {
29564
                                                            tableName: 'PCMFUNC',
29565
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
29566
                                                        },
29567
                                                        success: function (response) {
29568
                                                            var results = Ext.decode(response.responseText);
29569
                                                            data_ = results.data[0];
29570
                                                            if (data_ != undefined) {
29571
                                                                custumFunc = data_.FunctionCode;
29572
                                                            }
29573
                                                        }
29574
                                                    });
29575
                                                }
29576
                                                if (custumFunc) {
29577
                                                    eval(custumFunc)
29578
                                                }
29579
                                            }
29580
                                        }
29581
                                    }
29582
                                });
29583
                            } else if (rec.SearchType == '4' && isLookup != true) {
29584
                                cols.push({
29585
                                    text: rec.HeaderTitle,
29586
                                    hidden: Hidden_,
29587
                                    dataIndex: rec.FieldName,
29588
                                    filter: {
29589
                                        itemDefaults: {
29590
                                            emptyText: 'Search for...'
29591
                                        }
29592
                                    },
29593
                                    editor: {
29594
                                        allowBlank: null_,
29595
                                        xtype: 'lookupemployee',
29596
                                        readOnly: ReadOnly_,
29597
                                        isGrid: true,
29598
                                        fieldTarget: targetField_,
29599
                                        fieldValue: fieldValue_,
29600
                                        isGrid: true,
29601
                                        id: tableName + rec.FieldName,
29602
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
29603
                                        triggerCls: 'x-form-search-trigger',
29604
                                        vtype: 'alphanum', // disable space
29605
                                        nameTable: rec.TableName,
29606
                                        fieldGrid: rec.FieldName,
29607
                                        listeners: {
29608
                                            change: function (val) {
29609
                                                var custumFunc = rec.SelectFunction;
29610
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
29611
                                                    Ext.Ajax.request({
29612
                                                        async: false,
29613
                                                        method: 'POST',
29614
                                                        url: '/UserControl/GetStore',
29615
                                                        params: {
29616
                                                            tableName: 'PCMFUNC',
29617
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
29618
                                                        },
29619
                                                        success: function (response) {
29620
                                                            var results = Ext.decode(response.responseText);
29621
                                                            data_ = results.data[0];
29622
                                                            if (data_ != undefined) {
29623
                                                                custumFunc = data_.FunctionCode;
29624
                                                            }
29625
                                                        }
29626
                                                    });
29627
                                                }
29628
                                                if (custumFunc) {
29629
                                                    eval(custumFunc)
29630
                                                }
29631
                                            }
29632
                                        }
29633
                                    }
29634
                                });
29635
                            } else if (rec.FixedValue != '') { // add by taufan
29636
                                cols.push({
29637
                                    text: rec.HeaderTitle,
29638
                                    hidden: Hidden_,
29639
                                    dataIndex: rec.FieldName,
29640
                                    filter: {
29641
                                        itemDefaults: {
29642
                                            emptyText: 'Search for...'
29643
                                        }
29644
                                    },
29645
                                    editor: {
29646
                                        allowBlank: null_,
29647
                                        xtype: 'minovafixvalue',
29648
                                        readOnly: ReadOnly_,
29649
                                        id: rec.TableName + rec.FieldName,
29650
                                        name: rec.TableName + rec.FieldName,
29651
                                        nameTable: rec.TableName,
29652
                                        fieldGrid: rec.FieldName,
29653
                                        fixedValue: rec.FixedValue,
29654
                                        valueField: 'code',
29655
                                        displayField: 'desc',
29656
                                        value: rec.DefaultValue
29657
                                    },
29658
                                    renderer: function (value) {
29659
                                        var val = "";
29660
                                        var storeData = [];
29661
                                        var str = rec.FixedValue;
29662
                                        var hasil = str.split('||');
29663
                                        hasil.forEach(function (h) {
29664
                                            store_ = h.split('=')
29665
                                            storeData.push({
29666
                                                code: store_[0],
29667
                                                desc: store_[1]
29668
                                            });
29669
                                        });
29670
                                        var item = storeData.find(x => x.code == value);
29671
                                        if (item != undefined) {
29672
                                            val = item.desc;
29673
                                        }
29674
                                        return val;
29675
                                    }
29676
                                });
29677
                            } else {
29678
                                var _custumFunc = null;
29679
                                Ext.Ajax.request({
29680
                                    async: false,
29681
                                    method: 'POST',
29682
                                    url: '/UserControl/GetStore',
29683
                                    params: {
29684
                                        tableName: 'SDATATABLEFIELD',
29685
                                        param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
29686
                                    },
29687
                                    success: function (response) {
29688
                                        var results = Ext.decode(response.responseText);
29689
                                        data_ = results.data[0];
29690
                                        if (data_ != undefined) {
29691
                                            _custumFunc = data_.SelectFunction;
29692
                                        }
29693
                                    }
29694
                                });
29695
                                _xtype = 'textfield';
29696
                                if (rec.Length > 250) {
29697
                                    _xtype = 'textareafield';
29698
                                    cols.push({
29699
                                        text: rec.HeaderTitle,
29700
                                        xtype: 'gridcolumn',
29701
                                        hidden: Hidden_,
29702
                                        dataIndex: rec.FieldName,
29703
                                        filter: {
29704
                                            itemDefaults: {
29705
                                                emptyText: 'Search for...'
29706
                                            }
29707
                                        },
29708
                                        cellWrap: true,
29709
                                        width: (rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
29710
                                        editor: {
29711
                                            allowBlank: null_,
29712
                                            xtype: _xtype,
29713
                                            readOnly: ReadOnly_,
29714
                                            id: tableName + rec.FieldName,
29715
                                            nameTable: rec.TableName,
29716
                                            fieldGrid: rec.FieldName,
29717
                                            value: rec.DefaultValue,
29718
                                            maxLength: rec.Length,
29719
                                            grow: true,
29720
                                            listeners: {
29721
                                                //initialize: function (editor) {
29722
                                                //    editor.ownerCt.alignTo(editor.ownerCt.boundEl, 'tl-tl');
29723
                                                //    editor.ownerCt.alignment = 'tl-tl';
29724
                                                //},
29725
                                                afterrender: function () {
29726
                                                    var me = this;
29727
                                                    //me.el.swallowEvent(['keypress', 'keydown']);
29728
                                                }
29729
                                            }
29730
                                        },
29731
                                        renderer: function (v) {
29732
                                            if (v != undefined) {
29733
												result = v.replace(/\r\n\r\n/g, "</p><p>").replace(/\n\n/g, "</p><p>");
29734
												result = result.replace(/\r\n/g, "<br />").replace(/\n/g, "<br />");
29735
												result = result.replace(/\r\t/g, "&emsp;").replace(/\t/g, "&emsp;");
29736
												return result;
29737
											}
29738
											else {
29739
												return v;
29740
											}
29741
                                        }
29742
                                    });
29743
                                }
29744
                                else {
29745
                                    cols.push({
29746
                                        text: rec.HeaderTitle,
29747
                                        xtype: 'gridcolumn',
29748
                                        hidden: Hidden_,
29749
                                        dataIndex: rec.FieldName,
29750
                                        filter: {
29751
                                            itemDefaults: {
29752
                                                emptyText: 'Search for...'
29753
                                            }
29754
                                        },
29755
                                        cellWrap: true,
29756
                                        width: (rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
29757
                                        editor: {
29758
                                            allowBlank: null_,
29759
                                            xtype: _xtype,
29760
                                            readOnly: ReadOnly_,
29761
                                            id: tableName + rec.FieldName,
29762
                                            nameTable: rec.TableName,
29763
                                            fieldGrid: rec.FieldName,
29764
                                            value: rec.DefaultValue,
29765
                                            maxLength: rec.Length,
29766
                                            grow: true,
29767
                                            listeners: {
29768
                                                change: function (val) {
29769
                                                    if (_custumFunc) {
29770
                                                        eval(_custumFunc)
29771
                                                    }
29772
                                                }
29773
                                                /*change: function (val) {
29774
                                                    var custumFunc = null;
29775
                                                    Ext.Ajax.request({
29776
                                                        async: false,
29777
                                                        method: 'POST',
29778
                                                        url: '/UserControl/GetStore',
29779
                                                        params: {
29780
                                                            tableName: 'SDATATABLEFIELD',
29781
                                                            param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
29782
                                                        },
29783
                                                        success: function (response) {
29784
                                                            var results = Ext.decode(response.responseText);
29785
                                                            data_ = results.data[0];
29786
                                                            if (data_ != undefined) {
29787
                                                                custumFunc = data_.SelectFunction;
29788
                                                                //console.log(data_)
29789
                                                            }
29790
                                                        }
29791
                                                    });
29792
    
29793
                                                    if (custumFunc) {
29794
                                                        eval(custumFunc)
29795
                                                    }
29796
                                                } */
29797
                                            }
29798
                                        }
29799
                                    });
29800
                                }
29801
                            }
29802
                            break
29803
                    }
29804
                } else {
29805
                    cols.push({
29806
                        text: rec.HeaderTitle,
29807
                        hidden: Hidden_,
29808
                        dataIndex: rec.FieldName,
29809
                        hidden: true,
29810
                        editor: {
29811
                            allowBlank: true,
29812
                            xtype: 'textfield',
29813
                            readOnly: ReadOnly_,
29814
                            id: tableName + rec.FieldName,
29815
                            nameTable: rec.TableName,
29816
                            fieldGrid: rec.FieldName,
29817
                            value: rec.DefaultValue
29818
                        },
29819
                        filter: {
29820
                            itemDefaults: {
29821
                                emptyText: 'Search for...'
29822
                            }
29823
                        }
29824
                    });
29825
                }
29826
            });
29827

    
29828
        };        
29829
        //cols.push({
29830
        //    xtype: 'actioncolumn',
29831
        //    text: 'Edit',
29832
        //    maxWidth: 150,
29833
        //    minWidth: 50,
29834
        //    border: false,
29835
        //    itemId: 'startEditActionColumn',
29836
        //    align: 'center',
29837
        //    items: [
29838
        //        {
29839
        //            iconCls: 'x-fa fa-pencil-square-o',
29840
        //            handler: function (grid, rowIndex, colIndex) {
29841
        //                grid.editingPlugin.startEdit(rowIndex, 0);
29842
        //            }
29843
        //        }
29844
        //    ]
29845
        //});
29846
        addData = addData + "}";
29847
        Ext.applyIf(me, {
29848
            items: [{
29849
                xtype: 'grid',
29850
                id: gridName,
29851
                name: gridName,
29852
                height: height,
29853
                minHeight: me.minHeight,
29854
                maxHeight: me.maxHeight,
29855
                addFlag: true,
29856
                deleteFlag: true,
29857
                store: Ext.create('Ext.data.Store', {
29858
                    storeId: storeID,
29859
                    fields: fieldStore,
29860
                    //groupField: 'QuestionGroup',
29861
                    grouper: {
29862
                        sortProperty: 'SeqQuest',
29863
                        groupFn: function (record) {
29864
                            return record.get('QuestionGroup');
29865
                        }
29866
                    },
29867
                    proxy: {
29868
                        method: 'POST',
29869
                        type: 'ajax',
29870
                        url: '',
29871
                        reader: {
29872
                            type: 'json',
29873
                            root: 'data'
29874
                        }
29875
                    }
29876
                }),
29877
                dockedItems: [{
29878
                    xtype: 'toolbar',
29879
                    items: [{
29880
                        text: 'Add',
29881
                        hidden: hide_,
29882
                        name: tableName + 'Add',
29883
                        iconCls: 'fa-plus-circle',
29884
                        style: 'font-family: FontAwesome',
29885
                        handler: function () {
29886
                            var grid = Ext.getCmp(gridName);
29887
                            if (grid.addFlag === true) {
29888
                                var store = Ext.StoreMgr.lookup(storeID)
29889
                                idx = store.getCount();
29890
                                var action = getParam('action');
29891
                                var data = '';
29892
                                var Sequence = 0;
29893
                                if (idx == 0) {
29894
                                    Sequence = 1;
29895
                                } else {
29896
                                    Sequence = 1 + idx;
29897
                                }
29898
                                var seq = 'Sequence';
29899
                                var SequenceValue = Sequence;
29900
                                eval(addData);
29901
                                data[seq] = SequenceValue;
29902
                                store.insert(idx, data);
29903
                            }
29904
                        }
29905
                    }, {
29906
                        text: 'Delete',
29907
                        hidden: hide_,
29908
                        name: tableName + 'DeleteText',
29909
                        iconCls: 'fa-trash-o',
29910
                        style: 'font-family: FontAwesome',
29911
                        handler: function () {
29912
                            var grid = Ext.getCmp(gridName);
29913
                            if (grid.deleteFlag === true) {
29914
                                var me = this,
29915
                                    store = Ext.StoreMgr.lookup(storeID)
29916
                                var grid = Ext.getCmp(gridName);
29917
                                Ext.MessageBox.show({
29918
                                    title: 'Remove tab',
29919
                                    msg: "This will remove. Do you want to continue?",
29920
                                    buttons: Ext.MessageBox.YESNO,
29921
                                    fn: function (choice) {
29922
                                        console.log(choice);
29923
                                        if (choice === 'yes') {
29924
                                            var selection = grid.getView().getSelectionModel().getSelection()[0];
29925
                                            if (selection) {
29926
                                                store.remove(selection);
29927
                                            }
29928
                                        }
29929
                                    }
29930
                                });
29931
                            }
29932
                        }
29933
                        },
29934
                        {
29935
                            xtype: 'label',
29936
                            name: tableName + 'Label',
29937
							id: tableName + 'Label', //YN 220316
29938
							hidden: true, //YN 220316
29939
                            html: '<i>*Please double click on the cell/row to edit content.</i>'
29940
                        }]
29941
                }
29942
                ],
29943
                columns: {
29944
                    defaults: {
29945
                        menuDisabled: true
29946
                    },
29947
                    items: cols
29948
                },
29949
                //selModel: 'rowmodel',
29950
                selType: 'rowmodel', //checkSelection,
29951
                plugins: [
29952
                    Ext.create('Ext.grid.plugin.CellEditing', {
29953
                        clicksToEdit: 2
29954
                    })
29955
                ],
29956
                //plugins: {
29957
                //    //ptype: 'actionColumnRowEditing', //rowediting
29958
                //    //pluginId: 'rowEditing',
29959
                //    ptype: 'cellediting',
29960
                //    //hiddenColumnsOnEdit: ['startEditActionColumn'],
29961
                //    clicksToEdit: 2,
29962
                //    //saveButtonIconCls: 'x-fa fa-floppy-o',
29963
                //    listeners: {}
29964
                //},
29965
                //listeners: {
29966
                //    'beforeedit': function (editor) {
29967
                //        editor.getEditor().floatingButtons.items.items[0].hide();
29968
                //        editor.getEditor().floatingButtons.items.items[1].hide();
29969
                //    }
29970
                //},
29971
                features: features,
29972
                viewConfig: {
29973
                    listeners: {
29974
                        refresh: function (dataview) {
29975
                            Ext.each(dataview.panel.columns, function (column) {
29976
                                column.autoSize();
29977
                                column.setWidth(column.width + 20); //YN 220316
29978
                            })
29979
                        }
29980
                    }
29981
                }
29982
            }
29983
            ]
29984
        });
29985
        me.callParent(arguments);
29986
    }
29987
});
29988

    
29989
/*Grid Display ESS Generator YN 20211216 */
29990
Ext.define('MinovaUtil.MinovaES.MinovaGridDisplay', {
29991
    extend: 'Ext.grid.Panel',
29992
    requires: ['Ext.grid.RowNumberer'],
29993
    alias: 'widget.minovagriddisplay',
29994
    //alternateClassName : 'Ext.grid.MinovaGrid',
29995
    tableName: undefined,
29996
    isLookup: undefined,
29997
    param: undefined,
29998
    pagesize: undefined,
29999
    storeName: undefined,
30000
    layoutType: undefined,
30001
    enableLocking: true,
30002
    initComponent: function () {
30003
        var me = this;
30004
        var cols_ = [];
30005
        var fieldeditor = {};
30006
        var hasil = null;
30007
        var autoLoad = true;
30008
        var LangID = MinovaUtil.GetLangID();
30009
        parameter = null;
30010
        if (me.isLookup == true || isLookup == 1 || isLookup == 'Y') {
30011
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',LookupGrid='1'"
30012
        } else {
30013
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
30014
        }
30015
        Ext.Ajax.request({
30016
            async: false,
30017
            method: 'POST',
30018
            url: '/UserControl/GetStore',
30019
            params: {
30020
                tableName: 'PDSBS0007',
30021
                param: parameter
30022
            },
30023
            success: function (response) {
30024
                var results = Ext.decode(response.responseText);
30025
                hasil = results.data;
30026
            }
30027
        });
30028
        if (hasil.length > 0) {
30029
            Ext.each(hasil, function (rec) {
30030
                var null_ = null;
30031
                if (rec.IsPrimaryKey == true) {
30032
                    null_ = false;
30033
                }
30034
                if (rec.IsRequired == true) {
30035
                    null_ = false;
30036
                } else {
30037
                    null_ = true;
30038
                }
30039
                if (rec.GridView == 1) {
30040
                    switch (rec.FormatRef) {
30041
                        case "date":
30042
                            cols_.push({
30043
                                xtype: 'minovadatecolumn',
30044
                                text: rec.HeaderTitle,
30045
                                dataIndex: rec.FieldName,
30046
                                width: 100,
30047
                                filter: {
30048
                                    type: 'date',
30049
                                    itemDefaults: {
30050
                                        emptyText: 'Search for...'
30051
                                    }
30052
                                }
30053
                            });
30054
                            break
30055
                        case "amountencrypt":
30056
                            cols_.push({
30057
                                xtype: 'minovaamountcolumn',
30058
                                text: rec.HeaderTitle,
30059
                                dataIndex: rec.FieldName,
30060
                                align: 'right',
30061
                                width: 100,
30062
                                filter: {
30063
                                    type: 'string',
30064
                                    itemDefaults: {
30065
                                        emptyText: 'Search for...'
30066
                                    }
30067
                                }
30068
                            });
30069
                            break
30070
                        case "amount":
30071
                            cols_.push({
30072
                                xtype: 'minovacurrancycolumn',
30073
                                text: rec.HeaderTitle,
30074
                                dataIndex: rec.FieldName,
30075
                                align: 'right',
30076
                                width: 100,
30077
                                filter: {
30078
                                    type: 'number',
30079
                                    itemDefaults: {
30080
                                        emptyText: 'Search for...'
30081
                                    }
30082
                                }
30083
                            });
30084
                            break
30085
                        case "datetime":
30086
                            cols_.push({
30087
                                xtype: 'minovadatetimecolumn',
30088
                                text: rec.HeaderTitle,
30089
                                dataIndex: rec.FieldName,
30090
                                width: 140,
30091
                                filter: {
30092
                                    type: 'string',
30093
                                    itemDefaults: {
30094
                                        emptyText: 'Search for...'
30095
                                    }
30096
                                }
30097
                            });
30098
                            break
30099
                        default:
30100
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
30101
                                cols_.push({
30102
                                    text: rec.HeaderTitle,
30103
                                    dataIndex: rec.FieldName,
30104
                                    width: 100,
30105
                                    filter: {
30106
                                        type: 'string',
30107
                                        itemDefaults: {
30108
                                            emptyText: 'Search for...'
30109
                                        }
30110
                                    }
30111
                                });
30112
                            } else if (rec.SearchType == '2') {
30113
                                cols_.push({
30114
                                    xtype: 'minovalookupcolumn',
30115
                                    text: rec.HeaderTitle,
30116
                                    tableName: rec.TableRef,
30117
                                    dataIndex: rec.FieldName,
30118
                                    filter: {
30119
                                        itemDefaults: {
30120
                                            emptyText: 'Search for...'
30121
                                        }
30122
                                    }
30123
                                });
30124
                            } else if (rec.TableRef != "") {
30125
                                if (rec.TableRef != null) {
30126
                                    var valueField = null;
30127
                                    Ext.Ajax.request({
30128
                                        async: false,
30129
                                        method: 'POST',
30130
                                        url: '/UserControl/GetStore',
30131
                                        params: {
30132
                                            tableName: 'SDATATABLEFIELD',
30133
                                            param: 'ValueField[equal]1,TableName[equal]' + rec.TableRef
30134
                                        },
30135
                                        success: function (response) {
30136
                                            var results = Ext.decode(response.responseText);
30137
                                            data_ = results.data[0];
30138
                                            if (data_ != undefined) {
30139
                                                valueField = data_.FieldName;
30140
                                            }
30141
                                        }
30142
                                    });
30143

    
30144
                                    displayValue = null;
30145
                                    Ext.Ajax.request({
30146
                                        async: false,
30147
                                        method: 'POST',
30148
                                        url: '/UserControl/GetStore',
30149
                                        params: {
30150
                                            tableName: 'SDATATABLEFIELD',
30151
                                            param: 'DisplayValue[equal]1,TableName[equal]' + rec.TableRef
30152
                                        },
30153
                                        success: function (response) {
30154
                                            var results = Ext.decode(response.responseText);
30155
                                            data_ = results.data[0];
30156
                                            if (data_ != undefined) {
30157
                                                displayValue = data_.FieldName;
30158
                                                //console.log(data_)
30159
                                            }
30160
                                        }
30161
                                    });
30162
                                    var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
30163
                                    var count_ = 0;
30164
                                    if (store_) {
30165
                                        count_ = store_.count();
30166
                                    }
30167
                                    if (count_ == 0) {
30168
                                        Ext.create('Ext.data.Store', {
30169
                                            storeId: 'store_' + rec.FieldName,
30170
                                            autoLoad: true,
30171
                                            proxy: {
30172
                                                method: 'POST',
30173
                                                type: 'ajax',
30174
                                                url: '/UserControl/GetStore',
30175
                                                extraParams: {
30176
                                                    tableName: rec.TableRef,
30177
                                                    param: rec.ParamCombo
30178
                                                },
30179
                                                reader: {
30180
                                                    type: 'json',
30181
                                                    root: 'data',
30182
                                                    totalProperty: 'data[0].TotalCount'
30183
                                                }
30184
                                            }
30185
                                        })
30186
                                    }
30187
                                    cols_.push({
30188
                                        xtype: 'minovacombocolumn',
30189
                                        text: rec.HeaderTitle,
30190
                                        dataIndex: rec.FieldName,
30191
                                        valueField: valueField,
30192
                                        displayField: displayValue,
30193
                                        store: 'store_' + rec.FieldName,
30194
                                        filter: {
30195
                                            type: 'list',
30196
                                            itemDefaults: {
30197
                                                emptyText: 'Search for...'
30198
                                            }
30199
                                        }
30200
                                    });
30201
                                }
30202

    
30203
                            } else {
30204
                                cols_.push({
30205
                                    text: rec.HeaderTitle,
30206
                                    dataIndex: rec.FieldName,
30207
                                    width: rec.Length * 6.5 + 20, //(rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
30208
                                    flex: ((rec.Length * 6.5 + 20) >= 800)?1:0,
30209
                                    //autoSizeColumn: true,
30210
                                    cellWrap: true,
30211
                                    hidden: (rec.IsHidden=='1')? true:false,
30212
                                    filter: {
30213
                                        itemDefaults: {
30214
                                            emptyText: 'Search for...'
30215
                                        }
30216
                                    }
30217
                                });
30218
                            }
30219
                            break
30220
                    }
30221
                }
30222
                else {
30223
                    cols_.push({
30224
                        text: rec.HeaderTitle,
30225
                        dataIndex: rec.FieldName,
30226
                        hidden: true,
30227
                        filter: {
30228
                            itemDefaults: {
30229
                                emptyText: 'Search for...'
30230
                            }
30231
                        }
30232
                    });
30233
                }
30234
            });
30235
        };
30236
        var param_ = me.param;
30237
        if (param_ == undefined) {
30238
            param_ = ''
30239
        }
30240

    
30241
        var jsStoreGrid = new Ext.create('Ext.data.Store', {
30242
            storeId: me.storeName,
30243
            autoLoad: false,
30244
            proxy: {
30245
                method: 'POST',
30246
                type: 'ajax',
30247
                url: '/UserControl/GetStore',
30248
                extraParams: {
30249
                    tableName: me.tableName,
30250
                    param: param_
30251
                },
30252
                reader: {
30253
                    type: 'json',
30254
                    root: 'data',
30255
                    totalProperty: 'data[0].TotalCount'
30256
                }
30257
            }
30258
        });
30259

    
30260
        Ext.applyIf(me, {
30261
            defaults: {
30262
                autoSizeColumn: true,
30263
            },
30264
            columns: cols_,
30265
            store: jsStoreGrid,
30266
            viewConfig: {
30267
                listeners: {
30268
                    refresh: function (dataview) {
30269
                        Ext.each(dataview.panel.columns, function (column) {
30270
                            if (column.autoSizeColumn === true)
30271
                                column.autoSize();
30272
                        })
30273
                    }
30274
                }
30275
            },
30276
        });
30277
        me.callParent(arguments);
30278
    }
30279

    
30280
});
30281

    
30282
/*https://fiddle.sencha.com/#fiddle/1544&view/editor */
30283
Ext.define('MinovaUtil.MinovaES.StoreCheckboxGroup', {
30284
    extend: 'Ext.form.CheckboxGroup',
30285
    xtype: 'storecheckboxgroup', // <- this "xtype" is a unique name of the component.
30286
    name: undefined,
30287
    nametxt: undefined,
30288
    formname: undefined,
30289
    nameTable: undefined,
30290
    initComponent: function () {
30291
        var me = this;
30292
        if (!me.store) throw "No store defined for StoreCheckboxGroup";
30293
        if (!me.mapFn) throw "No mapFn defined for StoreCheckboxGroup";
30294
        if (me.items) throw "Items may not be defined for StoreCheckboxGroup; we get them from the store!";
30295
        var checklistStore = me.store, // <-- using the required "store" property
30296
            renderCheckboxes = function () {
30297
                me.removeAll();
30298
                //me.add(formfield = new Ext.form.TextField({
30299
                //    name: me.nametxt,
30300
                //    formname: me.formname,
30301
                //    nameTable: me.nameTable,
30302
                //}));
30303
                me.add(
30304
                    checklistStore.getRange().map(me.mapFn)); // <-- using the required "mapFn" property
30305
            };
30306
        me.callParent(arguments);
30307
        renderCheckboxes(); // <-- using the function I defined above
30308
        checklistStore.on({
30309
            load: renderCheckboxes, // <-------- binding the
30310
            update: renderCheckboxes, // <------ function to
30311
            datachanged: renderCheckboxes, // <- the store
30312
            filterchange: renderCheckboxes // <- events
30313
        });
30314
    }
30315
});
30316
/* END YN 20211216 */
30317

    
30318

    
30319

    
30320

    
30321

    
(3-3/3)