=> penambahan CekLvDate di field OnInitExtensions di 'field[name=StartDate]': { change: function (field) { selectDate(field); fillEndDate(field); CekLvDate(); // penambahan } }, 'field[name=AbsenceType]': { select: function (field) { selectAbsenceType(field); fillEndDate(field); CutiThn(); // penambahan } }, // penambahan field[name=TotalRemainingQuota] 'field[name=TotalRemainingQuota]': { change: function () { CekLvMin(); } }, => penambahan function di field OnMethodExtensions: function CekLvDate() { debugger; var body = MinovaUtil.WORKFLOW.getViewBodyWorkflow(); var emp = MinovaUtil.WORKFLOW.getEmpId(); var StartDate = body.down('field[name=StartDate]').getValue(); var Lv = ''; var lv2 = ''; MinovaUtil.ExecuteParamQuery({ ID: 'LVCKDATE', StartDate: StartDate, EmpID: emp }, function (s) { d var result = Ext.decode(s.responseText); var dt = Ext.decode(Ext.decode(result.data)); if (dt.length == 0) { Lv = ''; } else { var val = dt[0].Tglrovr; var val2 = dt[0].Tglrun; Lv = val; lv2 = val2; } }); if (Lv == '1') { MinovaMessageError("ERROR", "CEK19LV", "", ""); body.down('field[name=StartDate]').setValue(''); body.down('field[name=EndDate]').setValue(''); } else if (lv2 == '1') { MinovaMessageError("ERROR", "CEKRUNLV", "", ""); body.down('field[name=StartDate]').setValue(''); body.down('field[name=EndDate]').setValue(''); } } function CekLvMin() { var Body = MinovaUtil.WORKFLOW.getViewBodyWorkflow(); var ttlquo = Body.down('[name=TotalRemainingQuota]').getValue(); if (ttlquo < 0) { MinovaMessageError("ERROR", "CEKLVQUO", "", ""); Body.down('field[name=EndDate]').setValue(''); } } function CutiThn() { var body = MinovaUtil.WORKFLOW.getViewBodyWorkflow(); var abs = body.down('[name=AbsenceType]').getValue(); var StartDate = body.down('[name=StartDate]'); var StartD = body.down('[name=StartDate]').getValue(); var EndDate = body.down('[name=EndDate]'); var ss = '19000101'; var ee = '99991231'; var now = MinovaUtil.GetNowDate(); var abss = body.down('[name=TotalAbsenceTaken]'); var res = ''; MinovaUtil.ExecuteParamQuery({ ID: 'CEKTWOWEEKLEAVE' }, function (s) { var result = Ext.decode(s.responseText); var dt = Ext.decode(Ext.decode(result.data)); var val = dt[0].res; res = val; }); if (abs == '1000') { StartDate.setMinValue(res.substring(6, 8) + '/' + res.substring(4, 6) + '/' + res.substring(0, 4)); StartDate.setMaxValue(ee.substring(6, 8) + '/' + ee.substring(4, 6) + '/' + ee.substring(0, 4)); EndDate.setMinValue(StartD.substring(6, 8) + '/' + StartD.substring(4, 6) + '/' + StartD.substring(0, 4)); EndDate.setMaxValue(ee.substring(6, 8) + '/' + ee.substring(4, 6) + '/' + ee.substring(0, 4)); } else { StartDate.setMinValue(ss.substring(6, 8) + '/' + ss.substring(4, 6) + '/' + ss.substring(0, 4)); EndDate.setMaxValue(ee.substring(6, 8) + '/' + ee.substring(4, 6) + '/' + ee.substring(0, 4)); } } => tambah Data di table [dbo].[PCMWFCUSTPARAM] : 1) ID : LVCKDATE Value : DECLARE @Regidtbl TABLE(RegID VARCHAR(20)) INSERT INTO @Regidtbl SELECT RegID FROM dbo.PCMWFRUNMAIN WHERE BizflowID ='MD_Leave_AJTM' AND EmpIDAs=@EmpID DECLARE @TglRun TABLE(Tglrun VARCHAR(20)) INSERT INTO @TglRun SELECT DISTINCT CASE WHEN NOT EXISTS (SELECT DISTINCT Value FROM PCMWFRUNBIZDATA DATA INNER JOIN @Regidtbl reg ON reg.RegID = data.RegID WHERE FieldID ='StartDate' AND Value =@StartDate ) THEN '0' ELSE '1' END DECLARE @TglOvr TABLE(Tglrovr VARCHAR(20)) INSERT INTO @TglOvr SELECT DISTINCT CASE WHEN NOT EXISTS (SELECT DISTINCT StartDate FROM PHRPA0019 WHERE EmployeeID = @EmpID AND StartDate =@StartDate) THEN '0' ELSE '1' END SELECT * FROM @TglOvr, @TglRun CommandType : sqlstring 2) ID : CEKTWOWEEKLEAVE Value : DECLARE @Days VARCHAR(20) = (SELECT Value1 FROM dbo.PCMEPGENPARAM WHERE Parameter='MINIMALHARIPENGAJUANCUTITAHUNAN') DECLARE @Now VARCHAR(20) = (SELECT FORMAT (getdate(), 'yyyymmdd') ) DECLARE @Two DATETIME = (SELECT DATEADD(DAY,CAST(@Days AS int) , GETDATE())) SELECT FORMAT (@Two,'yyyyMMdd') AS res CommandType : sqlstring