Tuesday, January 31, 2017

add applicant


REM Declare Function ER_Attachments PeopleCode FUNCLIB_ER.AUTOPOPULATE FieldFormula; /*Ilavarasu*/
import HRS_CANDIDATE_MANAGER:CMP_CAND_ADMIN:Util:*;

Local File &APPL_FILE;
Local array of string &APP_ARY;
Local boolean &Return_Flag;



Local Record &APP_DATA_EFF_REC;
Local Record &APPLICANT_REC;
Local Record &APPLICNT_PHONE_REC;
Local Record &APP_EMAIL_ADDRS_REC;
Local Record &ER_REFERRAL_REC;
Local Record &APPLICANT_DATA_REC;
Local Record &APP_ACCOMPS_DGR_REC;
Local Record &APP_ACCOMPS_LNG_REC;
Local Record &ZIN_RCTD005A_REC;
Local Record &APP_PRIWRK_EXPR_REC;
Local Record &APP_DATA_ADDR_REC;
Local Record &APP_HRS_RCMNT_REC;
Local Record &APP_HRS_APP_USA_REC;
Local date &Brth_Dt;
Local Rowset &RS;



Function Mandatory_Fields() Returns boolean;
  
   &Return_Flag = False;
  
   For &I = 1 To &numOfFld /*Get values from data file */
     
     
      &APP_ARY [&I] = LTrim(&APP_ARY [&I], &doublequote);
      &APP_ARY [&I] = RTrim(&APP_ARY [&I], &doublequote);
     
      Evaluate &I
      When 1
      When 2
      When 4
      When 5
      When 6
      When 7
      When 8
      When 9
      When 10
      When 11
      When 12
      When 13
      When 14
      When 19
      When 20
      When 21
      When 22
      When 23
      When 24
      When 25
      When 26
      When 27
      When 28
      When 29
      When 30
      When 31
      When 32
      When 33
      When 34
      When 35
      When 36
      When 37
      When 38
      When 39
      When 40
      When 41
         If Not All(&APP_ARY [&I]) Then
           
            &Return_Flag = True;
         End-If;
         Break;
      End-Evaluate;
     
   End-For;
  
   Return &Return_Flag;
  
End-Function;


Function Get_Date_Format(&Dt) Returns string;
  
   &a = Find("/", &Dt, 1);
   &To = &a - 1;
   &Month = Substring(&Dt, 1, &To);
  
   &b = Find("/", &Dt, &a + 1);
   &To = &b - &a - 1;
   &Day = Substring(&Dt, &a + 1, &To);
  
   &Year = Substring(&Dt, (Len(&Dt) - 3), 4);
   If &a = 0 Or
         &b = 0 Or
         Value(&Month) > 12 Then
      Return "INVALID";
   Else
      If Len(&Day) = 1 Then
         &Day = "0" | &Day;
      End-If;
     
      If Len(&Month) = 1 Then
         &Month = "0" | &Month;
      End-If;
     
      &Dt = &Year | "-" | &Month | "-" | &Day;
      Return &Dt;
   End-If;
  
End-Function;


Function Create_Date_Format(&DD, &MM, &YYYY) Returns string;
  
   If Value(&MM) > 12 Then
      Return "INVALID";
   End-If;
  
   If Len(&DD) = 1 Then
      &DD = "0" | ⅅ
   End-If;
  
   If Value(&DD) > 31 Then
      Return "INVALID";
   End-If;
   If Len(&MM) = 1 Then
      &MM = "0" | &MM;
   End-If;
  
   &Dt = &YYYY | "-" | &MM | "-" | ⅅ
   Return &Dt;
  
End-Function;

Function Check_Valid_Grade(&Grd) Returns boolean;
  
   &Grd_Exists = 0;
  
   &Msg_Str = "Grade " | &Grd; /*Layeeque*/
  
   SQLExec("SELECT JB.BUSINESS_UNIT FROM PS_JOB JB ,PSOPRDEFN OP WHERE OP.OPRID =:1 AND  JB.EMPLID = OP.EMPLID AND JB.EFFDT = (SELECT MAX(JB_ED.EFFDT) FROM PS_JOB JB_ED WHERE JB.EMPLID = JB_ED.EMPLID AND JB.EMPL_RCD = JB_ED.EMPL_RCD AND JB_ED.EFFDT <= GETDATE()) AND JB.EFFSEQ = (SELECT MAX(JB_ES.EFFSEQ) FROM PS_JOB JB_ES  WHERE JB.EMPLID = JB_ES.EMPLID AND JB.EMPL_RCD = JB_ES.EMPL_RCD AND JB.EFFDT = JB_ES.EFFDT)", %OperatorId, &SetID);
  
   SQLExec("SELECT COUNT(*) FROM PS_SAL_GRADE_TBL WHERE SETID = :1 AND GRADE  = :2", &SetID, &Grd, &Grd_Exists);
  
   If &Grd_Exists > 0 Then
      Return True;
   End-If;
  
   If &Grd_Exists = 0 Then
      Return False;
   End-If;
  
End-Function;

/*Abhishek*/
/* Function for cleaning all the special characters while fetching the data */
Function Cleandata(&val As string) Returns string
   Local string &SplString;
   Local string &CleanString;
  
   &SplString = &val;
   &CleanString = "";
   For &Counter = 1 To Len(&SplString)
      If Code(Substring(&SplString, &Counter, 1)) = 10 Then
         &CleanString = &CleanString | " ";
      Else
         &CleanString = &CleanString | Clean(Substring(&SplString, &Counter, 1));
      End-If;
   End-For;
   Return (&CleanString);
End-Function;

/*Abhishek*/
Function CleanSplChar(&val As string) Returns string
  
   Local string &SplString;
   Local string &AfterClean;
   Local string &CleanString;
   Local string &SpCharStr;
   Local string &InStrChar;
   Local number &AsciiNbr;
   Local string &CleanStr;
  
  
   &SplString = Cleandata(&val);
   &CleanStr = "";
   For &Counter = 1 To Len(&SplString)
      &InStrChar = Substring(&SplString, &Counter, 1);
      &AsciiNbr = Code(&InStrChar);
     
      Evaluate &AsciiNbr
      When = 9
      When = 33
      When = 35
      When = 36
      When = 37
      When = 38
      When = 40
      When = 41
      When = 42
      When = 43
      When = 45
      When = 47
      When = 63
      When = 92
      When = 94
        
         Break;
      When-Other
         &CleanStr = &CleanStr | &InStrChar;
         Break;
      End-Evaluate;
     
   End-For;
   Return (&CleanStr);
  
End-Function;



/*Program Start*/


SQLExec("Select Z_FILE_PATH from PS_ZIN_DC_RUNCNTL WHERE OPRID = :1 AND RUN_CNTL_ID = :2", Z_DC_AET.OPRID, Z_DC_AET.RUN_CNTL_ID, &FILE_PATH);


&path = &FILE_PATH | "applicant.csv";
&APPL_FILE = GetFile(&path, "E", %FilePath_Absolute);
&numOfFld = 42;
MessageBox(0, "", 0, 0, "Path" | &path);


&APP_DATA_EFF_REC = CreateRecord(Record.HRS_APP_NAMES);
&APPLICANT_REC = CreateRecord(Record.HRS_APPLICANT);
&ER_REFERRAL_REC = CreateRecord(Record.HRS_EE_REFERRAL);
&APPLICANT_DATA_REC = CreateRecord(Record.HRS_APP_PROFILE);
&APP_ACCOMPS_DGR_REC = CreateRecord(Record.HRS_APP_ACMP);
&APP_ACCOMPS_LNG_REC = CreateRecord(Record.HRS_APP_ACMP);
&APP_PRIWRK_EXPR_REC = CreateRecord(Record.HRS_APP_WRK_EXP);
&APPLICNT_PHONE_REC = CreateRecord(Record.HRS_APP_PHONE);
&APP_EMAIL_ADDRS_REC = CreateRecord(Record.HRS_APP_EMAIL);
&APP_DATA_ADDR_REC = CreateRecord(Record.HRS_APP_ADDRESS);
&APP_HRS_RCMNT_REC = CreateRecord(Record.HRS_RCMNT);
&APP_HRS_AL_LOG_SRCE = CreateRecord(Record.HRS_AL_LOG_SRCE);
&APP_HRS_APP_USA_REC = CreateRecord(Record.HRS_APP_USA);



If &APPL_FILE.IsOpen Then
  
   While &APPL_FILE.ReadLine(&APPL_DATA);
     
      &APP_ARY = Split(&APPL_DATA, ";");
     
      For &I = 1 To &numOfFld
         &APP_ARY [&I] = CleanSplChar(&APP_ARY [&I]);
      End-For;
     
      &First_Nm = &APP_ARY [2];
      &Last_Nm = &APP_ARY [4];
      &Name = &Last_Nm | ", " | &First_Nm;
     
      &First_Nm_Upr = Upper(&First_Nm);
      &Last_Nm_Upr = Upper(&Last_Nm);
     
      &Birth_Dt = "";
      &Birth_Dt_Flag = True;
      &Dup_Flag = 0;
     
      If All(&APP_ARY [5]) And
            All(&APP_ARY [6]) And
            All(&APP_ARY [7]) Then
         &Birth_Dt = Create_Date_Format(&APP_ARY [5], &APP_ARY [6], &APP_ARY [7]);
         If &Birth_Dt = "INVALID" Then
            &Birth_Dt_Flag = False;
            &Msg_Str = "Invalid Birth Date for Applicant " | &Name;
            MessageBox(0, "", 0, 0, &Msg_Str);
         End-If;
      Else
         &Birth_Dt_Flag = False;
         &Msg_Str = "Birth Date is Null for Applicant " | &Name;
         MessageBox(0, "", 0, 0, &Msg_Str);
      End-If;
     
     
      If &Birth_Dt_Flag = True Then
        
         SQLExec("SELECT COUNT(*) FROM PS_HRS_APP_NAMES A, PS_HRS_APPLICANT B WHERE A.HRS_PERSON_ID = B.HRS_PERSON_ID AND UPPER(A.FIRST_NAME) = :1 AND UPPER(A.LAST_NAME) = :2 AND B.BIRTHDATE = :3", &First_Nm_Upr, &Last_Nm_Upr, &Birth_Dt, &Dup_Flag);
        
         If &Dup_Flag > 0 Then
            &Msg_Str = "Duplicate record found for Applicant " | &Name;
            MessageBox(0, "", 0, 0, &Msg_Str);
         End-If;
      End-If;
      If &Dup_Flag = 0 And
            &Birth_Dt_Flag = True Then
        
         &Mand = Mandatory_Fields();
        
         If &Mand = True Then
            &Msg_Str = "Insufficient Data for the Applicant " | &Name;
            MessageBox(0, "", 0, 0, &Msg_Str);
         End-If;
        
        
         &Email_Flag = True;
        
        
        
         SQLExec("SELECT COUNT(*) FROM PS_HRS_APP_EMAIL WHERE EMAIL_ADDR = :1", &APP_ARY [10], &Email_Cnt);
        
         If &Email_Cnt > 0 Then
            &Email_Flag = False;
            &Email_ApplID = "";
            &Email_Nm = "";
           
           
           
            SQLExec("SELECT A.HRS_PERSON_ID, A.NAME FROM PS_HRS_APP_NAMES A, PS_HRS_APP_EMAIL B WHERE A.HRS_PERSON_ID = B.HRS_PERSON_ID AND B.EMAIL_ADDR = :1", &APP_ARY [10], &Email_ApplID, &Email_Nm);
           
            &Msg_Str = "Email Address of the Applicant " | &Name | " being uploaded already exists in the database (Applicant ID: " | &Email_ApplID | " Applicant Name: " | &Email_Nm;
            MessageBox(0, "", 0, 0, &Msg_Str);
         End-If;
        
         /* Abhishek */
         /* Condition for Employee Referral or Consulant reference */
         &Referral_Flag = True;
        
         SQLExec("SELECT HRS_AL_LOG_ID FROM PS_HRS_HROI_COUNT", &al_log_id);
         &al_log_id = &al_log_id + 1;
         SQLExec("SELECT HRS_AL_LOG_SRC_SEQ FROM PS_HRS_HROI_COUNT", &al_log_src_seq);
         &al_log_src_seq = &al_log_src_seq + 1;
        
         SQLExec("select HRS_PERSON_ID_LAST from PS_HRS_HRAM_COUNT", &LAST_APPID);
         &New_AppID_1 = &LAST_APPID + 1;
        
        
        
         Evaluate &APP_ARY [19]
         When = "1000"
            /*consultant*/
            SQLExec("SELECT HRS_SUBSOURCE_ID FROM PS_HRS_SUBSRC_VW_I WHERE HRS_SOURCE_ID=:1 AND HRS_SUBSOURCE_ID=:2", &APP_ARY [19], &APP_ARY [20], &Refsrc);
            If None(&Refsrc) Then
               &Referral_Flag = False;
               &Msg_Str = "INVALID Referral Source Detail " | &Refsrc;
               MessageBox(0, "", 0, 0, &Msg_Str);
              
            End-If;
            &APP_ARY [20] = &Refsrc;
           
            /*to display HRS_AL_LOG_ID in HRS_APP_PROFILE record*/
            &APPLICANT_DATA_REC.HRS_AL_LOG_ID.Value = &al_log_id;
            /*to diplay in HRS_AL_LOG_SRCE record*/
            &APP_HRS_AL_LOG_SRCE.HRS_AL_LOG_SRC_SEQ.value = &al_log_src_seq;
            &APP_HRS_AL_LOG_SRCE.HRS_AL_LOG_ID.value = &al_log_id;
            &APP_HRS_AL_LOG_SRCE.HRS_SOURCE_ID.VALUE = &APP_ARY [19];
            &APP_HRS_AL_LOG_SRCE.HRS_SUBSOURCE_ID.value = &APP_ARY [20];
           
           
            Break;
         When = "1024"
            /*Job Portal*/
           
            SQLExec("SELECT HRS_SUBSOURCE_ID FROM PS_HRS_SUBSRC_VW_I WHERE HRS_SOURCE_ID=:1 AND HRS_SUBSOURCE_ID=:2", &APP_ARY [19], &APP_ARY [20], &Refsrc);
           
            /*to display HRS_AL_LOG_ID in HRS_APP_PROFILE record*/
            &APPLICANT_DATA_REC.HRS_AL_LOG_ID.Value = &al_log_id;
            /*to diplay in HRS_AL_LOG_SRCE record*/
            &APP_HRS_AL_LOG_SRCE.HRS_AL_LOG_SRC_SEQ.value = &al_log_src_seq;
            &APP_HRS_AL_LOG_SRCE.HRS_AL_LOG_ID.value = &al_log_id;
            &APP_HRS_AL_LOG_SRCE.HRS_SOURCE_ID.VALUE = &APP_ARY [19];
            &APP_HRS_AL_LOG_SRCE.HRS_SUBSOURCE_ID.value = &APP_ARY [20];
            Break;
         When = "1006"
            /*Direct*/
           
            /*to display HRS_AL_LOG_ID in HRS_APP_PROFILE record*/
            &APPLICANT_DATA_REC.HRS_AL_LOG_ID.Value = &al_log_id;
            /*to diplay in HRS_AL_LOG_SRCE record*/
            &APP_HRS_AL_LOG_SRCE.HRS_AL_LOG_SRC_SEQ.value = &al_log_src_seq;
            &APP_HRS_AL_LOG_SRCE.HRS_AL_LOG_ID.value = &al_log_id;
            &APP_HRS_AL_LOG_SRCE.HRS_SOURCE_ID.VALUE = &APP_ARY [19];
            &APP_HRS_AL_LOG_SRCE.HRS_SUBSOURCE_ID.value = &APP_ARY [20];
           
            Break;
         When = "1007"
            /*Employee referral*/
            SQLExec("SELECT EMPLID FROM PS_PERS_SRCH_ALL WHERE EMPLID = :1", &APP_ARY [20], &Refid);
           
            If None(&Refid) Then
               &Referral_Flag = False;
               &Msg_Str = "INVALID Employee Referral ID" | &Refid;
               MessageBox(0, "", 0, 0, &Msg_Str);
              
            End-If;
            &APP_ARY [20] = &Refid;
            &ER_REFERRAL_REC.HRS_PERSON_ID.Value = &New_AppID_1;
            &ER_REFERRAL_REC.HRS_PROFILE_SEQ.Value = "1";
            &ER_REFERRAL_REC.EMPLID.Value = &APP_ARY [20];
            &ER_REFERRAL_REC.HRS_AL_LOG_SRC_SEQ.Value = &al_log_src_seq;
            &ER_REFERRAL_REC.Insert();
            /*to display HRS_AL_LOG_ID in HRS_APP_PROFILE record*/
            &APPLICANT_DATA_REC.HRS_AL_LOG_ID.Value = &al_log_id;
            /*to diplay in HRS_AL_LOG_SRCE record*/
            &APP_HRS_AL_LOG_SRCE.HRS_AL_LOG_SRC_SEQ.value = &al_log_src_seq;
            &APP_HRS_AL_LOG_SRCE.HRS_AL_LOG_ID.value = &al_log_id;
            &APP_HRS_AL_LOG_SRCE.HRS_SOURCE_ID.VALUE = &APP_ARY [19];
           
            Break;
         End-Evaluate; /*Abhishek*/
        
        
         If &Mand = False And
               &Email_Flag = True And
               &Referral_Flag = True Then /*Abhishek*/
           
            SQLExec("select HRS_PERSON_ID_LAST from PS_HRS_HRAM_COUNT", &LAST_APPID);
           
            &New_AppID = &LAST_APPID + 1;
           
            SQLExec("select HRS_RCMNT_ID from PS_HRS_HRAT_COUNT", &LAST_RCMNT_ID);
           
            &New_Rcmnt_id = &LAST_RCMNT_ID + 1;
           
           
            &APP_DATA_EFF_REC.HRS_PERSON_ID.Value = &New_AppID; /*Applicant ID*/
            &APP_DATA_EFF_REC.NAME_TYPE.Value = "PRI"; /*Eff Date*/
            &APP_DATA_EFF_REC.COUNTRY_NM_FORMAT.Value = "001";
           
            &APP_DATA_EFF_REC.GetField(4).Value = &Name;
            &APP_DATA_EFF_REC.LAST_NAME_SRCH.Value = Upper(&APP_ARY [4]);
            &APP_DATA_EFF_REC.FIRST_NAME_SRCH.Value = Upper(&APP_ARY [2]);
            &APP_DATA_EFF_REC.NAME_PREFIX.Value = &APP_ARY [1]; /*Prefix*/
            &APP_DATA_EFF_REC.FIRST_NAME.Value = &APP_ARY [2]; /*First Name*/
            &APP_DATA_EFF_REC.MIDDLE_NAME.Value = &APP_ARY [3]; /*Middle Name*/
            &APP_DATA_EFF_REC.LAST_NAME.Value = &APP_ARY [4]; /*Last Name*/
            &APP_DATA_EFF_REC.NAME_DISPLAY.Value = &Name;
           
            &APPLICANT_REC.HRS_PERSON_ID.Value = &New_AppID;
            &APPLICANT_REC.BIRTHDATE.Value = &Birth_Dt; /*Birth Date*/
            &APPLICANT_REC.STATUS_CODE.Value = "010";
            &APPLICANT_REC.STATUS_DT.Value = %Date;
            &APPLICANT_REC.APP_PER_STATUS.Value = "A";
            &APPLICANT_REC.SEX.Value = Upper(&APP_ARY [8]); /*Gender*/
           
            &APPLICNT_PHONE_REC.HRS_PERSON_ID.Value = &New_AppID;
            &APPLICNT_PHONE_REC.HRS_PHONE_TYPE.Value = "OTR"; /*Phone type*/
            &APPLICNT_PHONE_REC.PHONE.Value = &APP_ARY [9]; /*Phone Number*/
            &APPLICNT_PHONE_REC.PREF_PHONE_FLAG.Value = "Y";
           
            &APP_EMAIL_ADDRS_REC.HRS_PERSON_ID.Value = &New_AppID;
            &APP_EMAIL_ADDRS_REC.HRS_E_ADDR_TYPE.Value = "HOME"; /*Email Type*/
            &APP_EMAIL_ADDRS_REC.EMAIL_ADDR.Value = &APP_ARY [10]; /*Email Address*/
            &APP_EMAIL_ADDRS_REC.PREF_EMAIL_FLAG.Value = "Y";
           
            &APP_DATA_ADDR_REC.ADDRESS1.Value = &APP_ARY [11];
            &APP_DATA_ADDR_REC.CITY.Value = &APP_ARY [12];
            &APP_DATA_ADDR_REC.STATE.Value = Upper(&APP_ARY [13]);
            &APP_DATA_ADDR_REC.POSTAL.Value = &APP_ARY [14];
            &APP_DATA_ADDR_REC.COUNTRY.Value = "IND";
            &APP_DATA_ADDR_REC.ADDRESS_TYPE.Value = "HOME";
            &APP_DATA_ADDR_REC.HRS_PERSON_ID.Value = &New_AppID;
           
           
           
            SQLExec("SELECT MAX(HRS_RESUME_ID) FROM PS_HRS_APP_RES", &resume_id);
            &resume_id = &resume_id + 1;
           
            &APPLICANT_DATA_REC.HRS_PERSON_ID.Value = &New_AppID;
            &APPLICANT_DATA_REC.HRS_PROFILE_SEQ.Value = "1";
            &APPLICANT_DATA_REC.APPLIC_PURGE_DT.Value = AddToDate(%Date, 2, 0, 0);
            &APPLICANT_DATA_REC.BUSINESS_UNIT.Value = "TALIC";
            &APPLICANT_DATA_REC.HIGHEST_EDUC_LVL.Value = Upper(&APP_ARY [21]); /*Highest Educ Level*/
            &APPLICANT_DATA_REC.DESIRED_HOURS.Value = &APP_ARY [26]; /*Total Work Experience*/
            &APPLICANT_DATA_REC.HRS_CONTACT_ID.Value = &APP_ARY [27]; /*Domain*/
            &APPLICANT_DATA_REC.MIN_RATE.Value = &APP_ARY [37]; /*Current Ctc*/
            &APPLICANT_DATA_REC.LOCATION.Value = &APP_ARY [39]; /*Preffered Location*/
            &APPLICANT_DATA_REC.HRS_PRM_LOCATION.Value = &APP_ARY [40]; /*Preffered Location*/
            &APPLICANT_DATA_REC.LANG_CD.Value = "ENG";
            &APPLICANT_DATA_REC.HRS_ROW_UPD_DTTM.Value = %Datetime;
            &APPLICANT_DATA_REC.HRS_SUBMITTED_DTTM.Value = %Datetime;
            &APPLICANT_DATA_REC.HRS_ROW_UPD_OPRID.Value = "Applicant Upload";
            &APPLICANT_DATA_REC.HRS_SUBMITTED_BY.Value = "Applicant Upload";
            &APPLICANT_DATA_REC.HRS_RESUME_ID.Value = &resume_id;
           
            If All(&APP_ARY [22]) Then
               SQLExec("SELECT MAX(HRS_APP_ACMP_ID) FROM PS_HRS_APP_ACMP", &accmp_id);
               &accmp_id = &accmp_id + 1;
              
              
               &APP_ACCOMPS_DGR_REC.HRS_PERSON_ID.Value = &New_AppID;
               &APP_ACCOMPS_DGR_REC.HRS_PROFILE_SEQ.Value = "1";
               &APP_ACCOMPS_DGR_REC.HRS_APP_ACMP_ID.Value = &accmp_id;
               &APP_ACCOMPS_DGR_REC.ACCOMPLISHMENT.Value = Upper(&APP_ARY [22]);
               &APP_ACCOMPS_DGR_REC.GRADUATE_INDICATOR.Value = "Y";
               &Dt3 = "";
               If All(&APP_ARY [23]) And
                     All(&APP_ARY [24]) And
                     All(&APP_ARY [25]) Then
                  &Dt3 = Create_Date_Format(&APP_ARY [23], &APP_ARY [24], &APP_ARY [25]);
               End-If;
              
               &APP_ACCOMPS_DGR_REC.DT_ISSUED.Value = &Dt3;
               &APP_ACCOMPS_DGR_REC.Insert();
            End-If;
            &APP_PRIWRK_EXPR_REC.HRS_PERSON_ID.Value = &New_AppID;
            &APP_PRIWRK_EXPR_REC.SEQUENCE_NBR.Value = 1;
            REM &APP_PRIWRK_EXPR_REC.ZIN_DOMAIN.Value = Upper(&APP_ARY [28]);
            &APP_PRIWRK_EXPR_REC.REL_WRK_EXPER.Value = "Y";
           
           
            &APP_HRS_APP_USA_REC.HRS_PERSON_ID.Value = &New_AppID;
            &APP_HRS_APP_USA_REC.EFFDT.Value = %Date;
            &APP_HRS_APP_USA_REC.US_WORK_ELIGIBILTY.Value = Upper(&APP_ARY [28]); /*Previously interviewed by TATA-AIG*/
           
           
            &Dt1 = "";
            If All(&APP_ARY [29]) And
                  All(&APP_ARY [30]) And
                  All(&APP_ARY [31]) Then
               &Dt1 = Create_Date_Format(&APP_ARY [29], &APP_ARY [30], &APP_ARY [31]);
            End-If;
           
            &Dt2 = "";
            If All(&APP_ARY [32]) And
                  All(&APP_ARY [33]) And
                  All(&APP_ARY [34]) Then
               &Dt2 = Create_Date_Format(&APP_ARY [32], &APP_ARY [33], &APP_ARY [34]);
            Else
               &Dt2 = %Date;
            End-If;
            &APP_PRIWRK_EXPR_REC.HRS_PROFILE_SEQ.Value = "1";
           
            &APP_PRIWRK_EXPR_REC.START_DT.Value = &Dt1;
            &APP_PRIWRK_EXPR_REC.END_DT.Value = &Dt2;
            &APP_PRIWRK_EXPR_REC.EMPLOYER.Value = &APP_ARY [35];
            &APP_PRIWRK_EXPR_REC.CITY.Value = &APP_ARY [36];
            &APP_PRIWRK_EXPR_REC.COUNTRY.Value = "IND";
            &APP_PRIWRK_EXPR_REC.PAY_FREQ_ABBRV.Value = "Y";
            &APP_PRIWRK_EXPR_REC.CURRENCY_CD.Value = "INR";
            REM &APP_PRIWRK_EXPR_REC.ENDING_RATE.Value = &APP_ARY [39];
            &APP_PRIWRK_EXPR_REC.ENDING_TITLE.Value = &APP_ARY [38];
           
           
            &APPLICANT_DATA_REC.YEARS_OF_EXP.Value = &Yrs_Of_Exp;
            &APPLICANT_DATA_REC.BUSINESS_UNIT.Value = &SetID;
            /*Joseph --> HRS_RCMNT */
            &APP_HRS_RCMNT_REC.HRS_PERSON_ID.Value = &New_AppID;
            &APP_HRS_RCMNT_REC.HRS_RCMNT_ID.Value = &New_Rcmnt_id;
            &APP_HRS_RCMNT_REC.HRS_PROFILE_SEQ.Value = "1";
            &APP_HRS_RCMNT_REC.HRS_JOB_OPENING_ID.Value = "0";
            &APP_HRS_RCMNT_REC.STATUS_CODE.Value = "020";
            &APP_HRS_RCMNT_REC.ENTRY_SOURCE.Value = "A";
            &APP_HRS_RCMNT_REC.HRS_STATUS_DT.Value = %Date;
           
           
            &Lng1 = &APP_ARY [41];
            If All(&Lng1) Then
               SQLExec("SELECT MAX(HRS_APP_ACMP_ID) FROM PS_HRS_APP_ACMP", &accmp_id);
               &accmp_id = &accmp_id + 1;
               &APP_ACCOMPS_LNG_REC.HRS_PERSON_ID.Value = &New_AppID;
               &APP_ACCOMPS_LNG_REC.HRS_PROFILE_SEQ.Value = "1";
               &APP_ACCOMPS_LNG_REC.ACCOMPLISHMENT.Value = Upper(&APP_ARY [41]);
               &APP_ACCOMPS_LNG_REC.HRS_APP_ACMP_ID.Value = &accmp_id;
               &APP_ACCOMPS_LNG_REC.DT_ISSUED.Value = %Date;
               &APP_ACCOMPS_LNG_REC.GRADUATE_INDICATOR.Value = "Y";
               &APP_ACCOMPS_LNG_REC.PASSED.Value = "N";
               &APP_ACCOMPS_LNG_REC.COUNTRY.Value = "IND";
               &APP_ACCOMPS_LNG_REC.LICENSE_VERIFIED.Value = "N";
               &APP_ACCOMPS_LNG_REC.RENEWAL.Value = "N";
               &APP_ACCOMPS_LNG_REC.IPE_SW.Value = "N";
               &APP_ACCOMPS_LNG_REC.COUNTRY_OTHER.Value = "IND";
               &APP_ACCOMPS_LNG_REC.TERMINAL_DEGREE.Value = "N";
               &APP_ACCOMPS_LNG_REC.SPEAK_PROFICIENCY.Value = "3";
               &APP_ACCOMPS_LNG_REC.READ_PROFICIENCY.Value = "3";
               &APP_ACCOMPS_LNG_REC.WRITE_PROFICIENCY.Value = "3";
              
               &APP_ACCOMPS_LNG_REC.Insert();
              
            End-If;
           
            &Lng2 = &APP_ARY [42];
            If All(&Lng2) Then
               SQLExec("SELECT MAX(HRS_APP_ACMP_ID) FROM PS_HRS_APP_ACMP", &accmp_id);
               &accmp_id = &accmp_id + 1;
               &APP_ACCOMPS_LNG_REC.HRS_PERSON_ID.Value = &New_AppID;
               &APP_ACCOMPS_LNG_REC.HRS_PROFILE_SEQ.Value = "1";
               &APP_ACCOMPS_LNG_REC.ACCOMPLISHMENT.Value = Upper(&APP_ARY [42]);
               &APP_ACCOMPS_LNG_REC.HRS_APP_ACMP_ID.Value = &accmp_id;
               &APP_ACCOMPS_LNG_REC.DT_ISSUED.Value = %Date;
               &APP_ACCOMPS_LNG_REC.GRADUATE_INDICATOR.Value = "Y";
               &APP_ACCOMPS_LNG_REC.PASSED.Value = "N";
               &APP_ACCOMPS_LNG_REC.COUNTRY.Value = "IND";
               &APP_ACCOMPS_LNG_REC.LICENSE_VERIFIED.Value = "N";
               &APP_ACCOMPS_LNG_REC.RENEWAL.Value = "N";
               &APP_ACCOMPS_LNG_REC.IPE_SW.Value = "N";
               &APP_ACCOMPS_LNG_REC.COUNTRY_OTHER.Value = "IND";
               &APP_ACCOMPS_LNG_REC.TERMINAL_DEGREE.Value = "N";
               &APP_ACCOMPS_LNG_REC.SPEAK_PROFICIENCY.Value = "3";
               &APP_ACCOMPS_LNG_REC.READ_PROFICIENCY.Value = "3";
               &APP_ACCOMPS_LNG_REC.WRITE_PROFICIENCY.Value = "3";
              
               &APP_ACCOMPS_LNG_REC.Insert();
              
            End-If;
           
           
           
            &APP_DATA_EFF_REC.Insert();
            &APPLICANT_REC.Insert();
            &ER_REFERRAL_REC.Insert();
            &APPLICANT_DATA_REC.Insert();
            &APP_PRIWRK_EXPR_REC.Insert();
            &APPLICNT_PHONE_REC.Insert();
            &APP_EMAIL_ADDRS_REC.Insert();
            &APP_HRS_RCMNT_REC.Insert();
            &APP_DATA_ADDR_REC.Insert();
            &APP_HRS_AL_LOG_SRCE.Insert();
            &APP_HRS_APP_USA_REC.Insert();
           
            REM CommitWork();
           
            SQLExec("Update PS_HRS_HRAM_COUNT SET HRS_PERSON_ID_LAST = :1", &New_AppID);
            SQLExec("Update PS_HRS_APP_PROFILE SET BUSINESS_UNIT='TALIC' WHERE HRS_PERSON_ID= :1", &New_AppID);
           
            SQLExec("Update PS_HRS_HRAT_COUNT SET HRS_RCMNT_ID =:1", &New_Rcmnt_id);
           
            SQLExec("Update PS_HRS_HROI_COUNT SET  HRS_AL_LOG_ID =:1", &al_log_id);
           
            SQLExec("Update PS_HRS_HROI_COUNT set HRS_AL_LOG_SRC_SEQ =:1", &al_log_src_seq);
           
           
           
            &Msg_Str = "Successfully created Applicant ID " | &New_AppID | " for " | &Name;
            MessageBox(0, "Applicant ID:", 0, 0, &Msg_Str);
           
           
            &FileName = &APP_ARY [10] | ".doc";
            REM MessageBox(0, "", 0, 0, "File" | &APP_ARY [10]);
           
            &ATTACHSYSFILENAME = &FileName;
            &URL_ID = "HRS_APP_ATCH";
            &URL_ID = "URL." | &URL_ID;
            &URL = GetURL(@&URL_ID);
           
           
            &ATTACHUSERFILE = &FILE_PATH | &FileName;
            MessageBox(0, "Resume Attachment", 0, 0, "Resume Path:", &ATTACHUSERFILE);
           
           
            If FileExists(&ATTACHUSERFILE, %FilePath_Absolute) Then
              
               &RETCODE = PutAttachment(&URL, &ATTACHSYSFILENAME, &ATTACHUSERFILE);
              
               If (&RETCODE = %Attachment_Success) Then
                  MessageBox(0, "", 0, 0, "RETCODE:" | &RETCODE);
                  MessageBox(0, "Resume Attachment Status", 0, 0, "Resume upload succeeded:", &FileName);
                 
                  REM MessageBox(0, "", 0, 0, "Value" | &value);
                  SQLExec("SELECT MAX(HRS_RESUME_ID) FROM PS_HRS_APP_RES", &resume_id);
                  &resume_id = &resume_id + 1;
                  &Res_txt = "";
                  REM &attachsys = &New_AppID | &resume_id | &ATTACHSYSFILENAME;
                  &attachuser = &FileName;
                  SQLExec("INSERT INTO PS_HRS_APP_RES (HRS_PERSON_ID, HRS_RESUME_ID, HRS_RESUME_TITLE, LANG_CD, RESUME_TEXT, ATTACHSYSFILENAME, ATTACHUSERFILE, HRS_ROW_ADD_DTTM, HRS_ROW_ADD_OPRID, HRS_ROW_UPD_DTTM, HRS_ROW_UPD_OPRID) values (:1,:2,:3,:4,:5,:6,:7, :8, :9, :10, :11)", &New_AppID, &resume_id, "", "ENG", &Res_txt, &ATTACHSYSFILENAME, &attachuser, %Datetime, %OperatorId, %Datetime, %OperatorId);
                 
               End-If;
               If (&RETCODE = %Attachment_Cancelled) Then
                  MessageBox(0, "Resume Attachment Status", 0, 0, "Resume upload cancelled", &FileName);
               End-If;
            Else
               MessageBox(0, "Resume Attachment Status", 0, 0, "Resume does not exists", &FileName);
            End-If;
           
         End-If;
      End-If;
   End-While;
Else
   &Msg_Str = "File could not be opened.  Please check the File Path";
   MessageBox(0, "", 0, 0, &Msg_Str);
End-If;

Monday, January 30, 2017

eletter

Local Rowset &RS;
Local Rowset &LEVEL0, &LEVEL1, &RS0, &RS1;

&RS = CreateRowset(Record.HR_SS_EE_RCD_VW);

&RS.Flush();
&RS.Fill("where EMPLID = :1", HR_SS_PERS_SRCH.EMPLID.Value);

HR_SSEECMPH_WRK.DESCR = &RS.GetRow(1).HR_SS_EE_RCD_VW.DESCR.Value;
HR_SSEECMPH_WRK.DESCR2 = &RS.GetRow(1).HR_SS_EE_RCD_VW.DESCR2.Value;
HR_SSEECMPH_WRK.EMPL_STATUS = &RS.GetRow(1).HR_SS_EE_RCD_VW.EMPL_STATUS.Value;


<*########################################################################
Developer:Joseph
Date:19/6/2009
Description:To view the E letter 
##########################################################################*>


&LEVEL0 = GetLevel0();
&LEVEL1 = &LEVEL0(1).GetRowset(Scroll.ZIN_INCRBNS_UPL);

&emplid = HR_SS_PERS_SRCH.EMPLID.Value;
&emplid_value = "%" | &emplid | "%";

ScrollFlush(Scroll.ZIN_INCRBNS_UPL);
ScrollSelect(1, Record.ZIN_INCRBNS_UPL, Record.ZIN_INCRBNS_UPL, "WHERE  FILE_SEQ='0' AND ATTACHSYSFILENAME LIKE :1", &emplid_value);

For &i = 1 To &LEVEL1.ActiveRowCount
   &file = &LEVEL1(&i).ZIN_INCRBNS_UPL.ATTACHSYSFILENAME.Value;
   &LEVEL1(&i).ZIN_DERIVED_INC.ATTACHSYSFILENAME.Value = Substring(&file, 36, Len(&file));
   &LEVEL1(&i).ZIN_DERIVED_INC.ZIN_MONTH.Value = Substring(&file, 44, 2);
   &LEVEL1(&i).ZIN_DERIVED_INC.ZIN_YEARCD.Value = Substring(&file, 46, 4);
  
   <*########################################################################
Developer:Madan.M
Date:29/3/2010
Description:To view the E letter (UM - Goal Sheet Process) 
##########################################################################*>
   SQLExec("SELECT AGREEMENT_ACCEPT FROM PS_ZIN_LETTER_STS WHERE ATTACHSYSFILENAME=:1", &file, &Agree);
   &LEVEL1(&i).ZIN_DERIVED_LVE.AGREEMENT_ACCEPT.Value = &Agree;
   If All(&Agree) Then
      &LEVEL1(&i).ZIN_DERIVED_LVE.AGREEMENT_ACCEPT.DisplayOnly = True;
   Else
      &LEVEL1(&i).ZIN_DERIVED_LVE.AGREEMENT_ACCEPT.Visible = False;
   End-If;
End-For;

<*########################################################################
Developer:Madan.M
Date:29/3/2010
Description:To view the E letter  (UM - Goal Sheet Process)
##########################################################################*>
SQLExec("SELECT A.ATTACHSYSFILENAME FROM PS_ZIN_INCRBNS_UPL A WHERE A.LASTUPDDTTM = (SELECT MAX(A1.LASTUPDDTTM) FROM PS_ZIN_INCRBNS_UPL A1 WHERE A.ATTACHSYSFILENAME = A1.ATTACHSYSFILENAME) AND A.FILE_SEQ='0' AND A.ATTACHSYSFILENAME LIKE :1", &emplid_value, &FILE_NAME);

If &FILE_NAME <> "" Then
   &RS1 = GetLevel0().GetRow(1).GetRowset(Scroll.ZIN_INCRBNS_UPL);
   For &i = 1 To &RS1.ActiveRowCount
      &RS1(&i).DERIVED_HR.EMPLID.Value = &emplid;
   End-For;
Else
   &LEVEL1.HideAllRows();
End-If;

eletter field change

import ZIN_COMMON:*;

Local Rowset &LEVEL11, &LEVEL10, &L0;
Component string &FILE_NAME;
Component string &emplid;

&emplid = HR_SS_PERS_SRCH.EMPLID.Value;
&emplid_value = "%" | &emplid | "%";

&URL_ID = "ZIN_INCRBNS_UPL";
&URL_ID = "URL." | &URL_ID;
&URL = GetURL(@&URL_ID);

&LEVEL10 = GetLevel0();
&LEVEL11 = &LEVEL10(1).GetRowset(Scroll.ZIN_INCRBNS_UPL);
&FILE_NAME = &LEVEL11(CurrentRowNumber()).ZIN_INCRBNS_UPL.ATTACHSYSFILENAME.Value;


SQLExec("SELECT COUNT(*) FROM PS_ZIN_INCRBNS_UPL WHERE ATTACHSYSFILENAME = :1", &FILE_NAME, &Cnt);

If &Cnt <= 0 Then
   MessageBox(0, "Increment Bonus/Performance Letter for the selected period is not available for viewing", 0, 0, "Increment Bonus/Performance Letter for the selected period is not available for viewing");
Else
  
   &retcode = ViewAttachment(&URL, &FILE_NAME, Right(&FILE_NAME, 18));
  
   If (&retcode = %Attachment_Failed) Then
      MessageBox(0, "File Attachment Status", 0, 0, "Letter not Found");
   End-If;
   If (&retcode = %Attachment_Cancelled) Then
      MessageBox(0, "File Attachment Status", 0, 0, "Letter not Found");
   End-If;
   If (&retcode = %Attachment_FileTransferFailed) Then
      MessageBox(0, "File Attachment Status", 0, 0, "Letter not Found");
   End-If;
End-If;

<*###################################################################################################
Developer:Madan
Date:11/3/2010
Description:Acknowledgement for the E letter of the employee
####################################################################################################*>
&UM_GOAL = Find("UM_SPRINT_GOALSHEET.pdf", &FILE_NAME, 51);
&ZIN_LETTER_STS = CreateRecord(Record.ZIN_LETTER_STS);
If &UM_GOAL <> 0 Then
   SQLExec("SELECT EMPLID FROM PS_ZIN_LETTER_STS WHERE EMPLID = :1", &emplid, &empl_count);
   If None(&empl_count) Then
     
      ZIN_DERIVED_LVE.AGREEMENT_ACCEPT.Visible = True;
     
      &ZIN_LETTER_STS.ATTACHSYSFILENAME.VALUE = &FILE_NAME;
      &ZIN_LETTER_STS.EMPLID.VALUE = &emplid;
      &ZIN_LETTER_STS.AGREEMENT_ACCEPT.Value = "A";
      &ZIN_LETTER_STS.VIEW_DETAILS.VALUE = "N";
      &ZIN_LETTER_STS.LASTUPDDTTM.VALUE = %Datetime;
      &ZIN_LETTER_STS.LASTUPDOPRID.VALUE = %OperatorId;
      &ZIN_LETTER_STS.Insert();
   End-If;
Else
   ZIN_DERIVED_LVE.AGREEMENT_ACCEPT.Visible = False;
End-If;

<*########################################################################
Developer:Madan.M
Date:29/3/2010
Description:To view the E letter  (UM - Goal Sheet Process)
##########################################################################*>

If &ZIN_LETTER_STS.VIEW_DETAILS.VALUE = "N" Then
   Local ZIN_COMMON:AppEngineBase &AppEngine = create ZIN_COMMON:AppEngineBase();
   Local ZIN_COMMON:ReportBase &Value = create ZIN_COMMON:ReportBase();
   rem &Location = &Value.GetFieldValue("LOCATION_TBL", "DESCR", &Value.getjobfieldvalue("BUSINESS_UNIT", %EmployeeId), &Value.getjobfieldvalue("LOCATION", %EmployeeId), "", "", "");
   SQLExec("SELECT CITY FROM PS_ZIN_JOB WHERE EMPLID=:1", %EmployeeId, &city);
   SQLExec("SELECT CITY FROM PS_ZIN_CITY_TBL WHERE GVT_CITY_CODE = :1 AND COUNTRY = 'IND'", &city, &Locdescr);
   &Subject = MsgGetText(21000, 92, "", &Value.GetName(%EmployeeId), %EmployeeId);
  
   &Text = MsgGetExplainText(21000, 92, "", DateTimeToLocalizedString(%Date, "dd-MMM-yy"), &Value.GetName(%EmployeeId), %EmployeeId, &Locdescr);
  
   &supv = &Value.getjobfieldvalue("SUPERVISOR_ID", %EmployeeId);
   SQLExec("SELECT EMAILID FROM PSOPRDEFN WHERE OPRID = :1", %EmployeeId, &mail1);
   SQLExec("SELECT EMAILID FROM PSOPRDEFN WHERE OPRID = :1", &supv, &mail2);
   &mail = &mail1 | ";" | &mail2 | ";" | "umgoalsheet@tata-aig.com";
   &TO = &mail;
  
   &contentHtml = "Content-type: text/html; charset=US-ASCII";
   &ret = SendMail(&MAIL_FLAGS, &TO, &MAIL_CC, &MAIL_BCC, &Subject, &Text, &MAIL_FILES, &MAIL_TITLES, &MAIL_SENDER, &contentHtml);
   rem &retcode = &AppEngine.SendEmail(&TO, "", &Subject, &Text, "", "");
   If &ret = 0 Then
      &ZIN_LETTER_STS.ATTACHSYSFILENAME.VALUE = &FILE_NAME;
      &ZIN_LETTER_STS.EMPLID.VALUE = &emplid;
      &ZIN_LETTER_STS.VIEW_DETAILS.VALUE = "Y";
      &ZIN_LETTER_STS.LASTUPDDTTM.VALUE = %Datetime;
      &ZIN_LETTER_STS.LASTUPDOPRID.VALUE = %OperatorId;
      &ZIN_LETTER_STS.Update();
   End-If;
End-If;
ZIN_DERIVED_LVE.AGREEMENT_ACCEPT.Enabled = False;

eclaims

post build:

import ZIN_COMMON:*;
import ECL_COMMON:*;

Component string &Approver_id, &ClaimStatus;
Component number &BackupApprovedTotalCost;
<*
/**************************ABHINAV***********************/
Local ZIN_COMMON:ReportBase &Value = create ZIN_COMMON:ReportBase();
Local ECL_COMMON:OnlineBase &EstimatedCost = create ECL_COMMON:OnlineBase();
/**************************ABHINAV***********************/
*>
Local Rowset &STARowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_STA);
Local Rowset &BusnRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_BUSN);


ScrollFlush(Scroll.ECL_CLAIMS_STA);
ScrollSelect(1, Record.ECL_CLAIMS_STA, Record.ECL_CLAIMS_STA, "WHERE ECL_CLAIM_REQ_ID = :1 AND (CURRENT_STEP = 1 OR ACTION_DTTM <> '')", ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value); /* Abhinav 25-Aug-2011 */

ECL_DERIVED.ECL_CHECK_FLG1.Visible = False; /* ABHINAV */

If %Menu = "ROLE_EMPLOYEE" Then
   ECL_DERIVED.ECL_STATUS.Visible = False;
   ECL_CLAIMS_HDR.ECL_TOT_REIMBU_AMT.DisplayOnly = True;
   ECL_CLAIMS_HDR.ECL_TOT_CORPCD_AMT.DisplayOnly = True;
   ECL_CLAIMS_HDR.ECL_TOT_CLAIM_AMT.DisplayOnly = True;
   ECL_CLAIMS_HDR.ECL_APV_REIMBR_AMT.DisplayOnly = True;
   ECL_CLAIMS_HDR.ECL_APV_CORPCD_AMT.DisplayOnly = True;
   ECL_CLAIMS_HDR.ECL_APV_CLAIM_AMT.DisplayOnly = True;
   REM ECL_CLAIMS_HDR.COMMENTS.DisplayOnly = True; /* KONDAL 18-04-2011*/
   ECL_DERIVED.ECL_CHECK_FLG1.Visible = False;
  
   &STARowset.HideAllRows();
  
   If &ClaimStatus = "RT" Or
         &ClaimStatus = "QY" Or
         &ClaimStatus = "HD" Then
      HR_LINK_WRK.SUBMIT_PB.Enabled = False;
      &BusnRowset.InsertEnabled = False;
      &BusnRowset.DeleteEnabled = False;
     
      For &i = 1 To &BusnRowset.ActiveRowCount
        
         &BusnRowset(&i).HR_LBL_WRK.LANG_NATIVE_LBL.Visible = True; /*Layeeque*/
         &BusnRowset(&i).FILE_ATTACH_WRK.ATTACHDELETE.Visible = False;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_GL_CODE.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CORPCARD_AMT.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TOTAL_AMT.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_ATTACHUSER.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_DETAIL1.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_DETAIL2.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_DETAIL3.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_DETAIL4.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_DETAIL5.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_NOOF_PERSON.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.PURPOSE1.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.COMPANY_DESCR.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_NAME.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.CITY.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_BILL_NO.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_LOCATION_FROM.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_LOCATION_TO.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_VEHICLE_TYPE.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_KM_TRAVEL.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_RENT_AMT.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_OFFICIAL_CALLS.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_PERS_CALLS.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.MOBILE_PHONE.DisplayOnly = True;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_LATE_REASON.DisplayOnly = True;
         &BusnRowset(&i).FILE_ATTACH_WRK.ATTACHADD.Visible = False;
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TOT_CLAIM_AMT.DisplayOnly = True;
      End-For;
   End-If;
End-If;

If %Menu = "ROLE_MANAGER" Then
  
   &BackupApprovedTotalCost = ECL_CLAIMS_HDR.ECL_APV_CLAIM_AMT.Value;
  
   ECL_DERIVED.ECL_STATUS.Visible = False;
   If ECL_CLAIMS_HDR.ECL_DEVIATION.Value = "Y" Then
      HR_LINK_WRK.APPROVE_BTN.Enabled = False;
      rem ECL_DERIVED.ECL_CHECK_FLG1.Visible = True;
   Else
      HR_LINK_WRK.APPROVE_BTN.Enabled = True;
      ECL_DERIVED.ECL_CHECK_FLG1.Visible = False;
   End-If;
End-If;


ECL_CLAIMS_HDR.COMMENTS.Visible = False;



<*
/**************************ABHINAV***********************/
If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value = "09" Then
   &Grade = &Value.getjobfieldvalue("GRADE", ECL_CLAIMS_HDR.EMPLID.Value);
   &Limit_Amount = &EstimatedCost.GetEntitledCost(&Grade, &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value, "", "");
   If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value > &Limit_Amount Then
      HR_LBL_WRK.LANG_NATIVE_LBL.Value = MsgGetExplainText(27000, 105, "", ""); /*Layeeque*/
   Else
      HR_LBL_WRK.LANG_NATIVE_LBL.Value = "";
      HR_LBL_WRK.LANG_NATIVE_LBL.DisplayOnly = True;
   End-If;
End-If;
/**************************ABHINAV***********************/
*>


pre build
Component string &ClType, &Approver_id, &ClaimStatus, &DelegateEmplid, &ActualEmplid;
Component number &Seqno;
Component number &Max_Seqno;
Component array of any &Seqno_Array;

&ClType = %Request.GetParameter("ECL_CATEGORY");
&Approver_id = %Request.GetParameter("ECL_APPROVER_ID");
&ClaimStatus = %Request.GetParameter("ECL_STATUS");
&ActualEmplid = %Request.GetParameter("EMPLID");

&Seqno = 0;
&Max_Seqno = 0;
&Seqno_Array = CreateArrayAny();

SQLExec("SELECT MAX(SEQNO) FROM PS_ECL_ATACH_SEQNO WHERE ECL_CLAIM_REQ_ID = :1", ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &Max_Seqno);

save post change
Declare Function RunWFSavePostChange PeopleCode FUNCLIB_WF.WF_RUN_SAVE_OPTION FieldFormula;
Component string &Action;


If &Action = "SAV" Then
  
Else
   RunWFSavePostChange("EO_SUBMIT_CONFIRM");
End-If;

&Action = " ";

save prechange

import ECL_COMMON:OnlineBase:*;
import ZIN_COMMON:ReportBase:*;



Component string &Action, &DepartmentId, &BudgetAction, &TempFlag, &ApprovalLevel, &Flag;
Component string &Temp;
Component boolean &Approve_Yes;
Component number &BackupApprovedTotalCost, &TailoredTravelCost, &AdjustableBudgetAmount, &Appr_Step;
Component string &DelegatedApprover, &DelegateFlag, &ActualEmplid; /*Layeeque*/
Component array of any &Seqno_Array;
Local number &SeqNo;
Local SQL &SQL;

Local Rowset &ROWSET;

Local ECL_COMMON:OnlineBase &STA = create ECL_COMMON:OnlineBase();
Local ZIN_COMMON:ReportBase &Value1 = create ZIN_COMMON:ReportBase();
Local ECL_COMMON:OnlineBase &EstimatedCost = create ECL_COMMON:OnlineBase();

Local Rowset &ClaimRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_BUSN);
Local Rowset &STARowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_STA);
Local Rowset &BusnRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_BUSN);


For &i = 1 To &ClaimRowset.ActiveRowCount
   &ClaimRowset(&i).ECL_CLAIMS_BUSN.ECL_CATEGORY.Value = ECL_CLAIMS_HDR.ECL_CATEGORY.Value;
End-For;

If ECL_CLAIMS_HDR.ECL_STATUS.Value = "SB" And
      ECL_CLAIMS_HDR.EMPLID.Value = &ActualEmplid Then
  
   rem ECL_CLAIMS_HDR.EMPLID.Value = %EmployeeId Then;
   /******************** Delegation ********************/
   If &DelegateFlag = "N" Then
      &DelegatedApprover = ECL_CLAIMS_HDR.ECL_APPROVER_ID.Value;
   End-If;
   /******************** Delegation ********************/
   &SeqNo = 0;
   &Currentstep = 0;
   &STA.AdjustDepartmentBudget(&DepartmentId, &BudgetAction, &AdjustableBudgetAmount); /*Layeeque*/
   &Deviation = &STA.ApprovaRuleSet(ECL_CLAIMS_HDR.ECL_DEVIATION.Value, ECL_CLAIMS_HDR.ECL_CHECK_FLG.Value);
   &STA.InsertClaimSTA(ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &Deviation, ECL_CLAIMS_HDR.EMPLID.Value, ECL_CLAIMS_HDR.EMPL_RCD.Value, ECL_CLAIMS_HDR.ECL_CATEGORY.Value, ECL_CLAIMS_HDR.ECL_REQUEST_DT.Value, ECL_CLAIMS_HDR.ECL_APPROVER_ID.Value, &SeqNo, "SUB", &Currentstep, &DelegatedApprover, ECL_CLAIMS_HDR.ECL_STATUS.Value); /*Layeeque Included one more parameter 'DelegatedApprover' for delegation purpose*/
End-If;

If ECL_CLAIMS_HDR.ECL_STATUS.Value = "MAP" And
      ECL_CLAIMS_HDR.EMPLID.Value = &ActualEmplid And
      ECL_CLAIMS_HDR.ECL_CHECK_FLG.Value = "Y" Then
  
   rem ECL_CLAIMS_HDR.EMPLID.Value = %EmployeeId Then;
   /******************** Delegation ********************/
   If &DelegateFlag = "N" Then
      &DelegatedApprover = ECL_CLAIMS_HDR.ECL_APPROVER_ID.Value;
   End-If;
   /******************** Delegation ********************/
   &SeqNo = 0;
   &Currentstep = 0;
   &STA.AdjustDepartmentBudget(&DepartmentId, &BudgetAction, &AdjustableBudgetAmount); /*Layeeque*/
   &Deviation = &STA.ApprovaRuleSet(ECL_CLAIMS_HDR.ECL_DEVIATION.Value, ECL_CLAIMS_HDR.ECL_CHECK_FLG.Value);
   &STA.InsertClaimSTA(ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &Deviation, ECL_CLAIMS_HDR.EMPLID.Value, ECL_CLAIMS_HDR.EMPL_RCD.Value, ECL_CLAIMS_HDR.ECL_CATEGORY.Value, ECL_CLAIMS_HDR.ECL_REQUEST_DT.Value, ECL_CLAIMS_HDR.ECL_APPROVER_ID.Value, &SeqNo, "SUB", &Currentstep, &DelegatedApprover, ECL_CLAIMS_HDR.ECL_STATUS.Value); /*Layeeque Included one more parameter 'DelegatedApprover' for delegation purpose*/
End-If;

If &Action = "MAP" Then
   For &i = 1 To &STARowset.ActiveRowCount
      &SeqNo = &STARowset(&i).ECL_CLAIMS_STA.SEQNO.Value;
      &STARowset(&i).ECL_CLAIMS_STA.CURRENT_STEP.Value = 0;
      If &STARowset(&i).ECL_CLAIMS_STA.APPROVER_OPRID.Value = %OperatorId And
            &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "PND" Then
         &Appr_Step = &STARowset(&i).ECL_CLAIMS_STA.APPR_STEP.Value;
         &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "MAP";
         &STARowset(&i).ECL_CLAIMS_STA.ACTION_DTTM.Value = %Datetime;
      End-If;
   End-For;
   &STA.InsertClaimNextApprover(ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &STA.ApprovaRuleSet(ECL_CLAIMS_HDR.ECL_DEVIATION.Value, ECL_CLAIMS_HDR.ECL_CHECK_FLG.Value), &Appr_Step, &SeqNo, ECL_CLAIMS_HDR.EMPLID.Value, ECL_CLAIMS_HDR.EMPL_RCD.Value, ECL_CLAIMS_HDR.ECL_CATEGORY.Value, ECL_CLAIMS_HDR.ECL_REQUEST_DT.Value);
End-If;

If &Action = "DAP" Then
   For &i = 1 To &STARowset.ActiveRowCount
      &SeqNo = &STARowset(&i).ECL_CLAIMS_STA.SEQNO.Value;
      &STARowset(&i).ECL_CLAIMS_STA.CURRENT_STEP.Value = 0;
      If &STARowset(&i).ECL_CLAIMS_STA.APPROVER_OPRID.Value = %OperatorId And
            &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "PND" Then
         &Appr_Step = &STARowset(&i).ECL_CLAIMS_STA.APPR_STEP.Value;
         &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "DAP";
         &STARowset(&i).ECL_CLAIMS_STA.ACTION_DTTM.Value = %Datetime;
      End-If;
   End-For;
   &STA.InsertClaimNextApprover(ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &STA.ApprovaRuleSet(ECL_CLAIMS_HDR.ECL_DEVIATION.Value, ECL_CLAIMS_HDR.ECL_CHECK_FLG.Value), &Appr_Step, &SeqNo, ECL_CLAIMS_HDR.EMPLID.Value, ECL_CLAIMS_HDR.EMPL_RCD.Value, ECL_CLAIMS_HDR.ECL_CATEGORY.Value, ECL_CLAIMS_HDR.ECL_REQUEST_DT.Value);
End-If;

If (&Action = "DNY" Or
      ECL_CLAIMS_HDR.ECL_STATUS.Value = "RJ") Then
   rem WinMessage("ECL_CLAIMS_HDR.ECL_TOT_CLAIM_AMT.Value : " | ECL_CLAIMS_HDR.ECL_TOT_CLAIM_AMT.Value, 0);
   For &i = 1 To &STARowset.ActiveRowCount
      If &STARowset(&i).ECL_CLAIMS_STA.APPROVER_OPRID.Value = %OperatorId And
            (&STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "PND" Or
               &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "REC" Or
               &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "HCR") And
            &STARowset(&i).ECL_CLAIMS_STA.CURRENT_STEP.Value = 1 Then
        
         &Appr_Step = &STARowset(&i).ECL_CLAIMS_STA.APPR_STEP.Value;
         &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "DNY";
         &STARowset(&i).ECL_CLAIMS_STA.ACTION_DTTM.Value = %Datetime;
      End-If;
      &STARowset(&i).ECL_CLAIMS_STA.CURRENT_STEP.Value = 0;
   End-For;
  
   REM SQLExec("UPDATE PS_ECL_TRAVEL_HDR SET ECL_CLAIM_SETTLE = '' WHERE ECL_TRVL_REQ_ID = :1", ECL_CLAIMS_HDR.ECL_TRVL_REQ_ID.Value);
   REM SQLExec("UPDATE PS_ECL_TRAVEL_STA SET ECL_WF_ACTION = 'TAV' WHERE ECL_TRVL_REQ_ID = :1 AND ROLENAME = 'Travel Agent'", ECL_CLAIMS_HDR.ECL_TRVL_REQ_ID.Value);
  
   If &TempFlag = "Y" Then
      rem WinMessage("&AdjustableBudgetAmount : " | &AdjustableBudgetAmount, 0);
     
      &STA.AdjustDepartmentBudget(&DepartmentId, &BudgetAction, &AdjustableBudgetAmount); /*Layeeque*/
      &TempFlag = "N";
   End-If;
  
End-If;

If &Action = "SAV" Then
Else
   Evaluate ECL_CLAIMS_HDR.ECL_STATUS.Value
   When = "RC"
      For &i = 1 To &STARowset.ActiveRowCount
         If &STARowset(&i).ECL_CLAIMS_STA.APPROVER_OPRID.Value = %OperatorId And
               &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "PND" And
               &STARowset(&i).ECL_CLAIMS_STA.CURRENT_STEP.Value = 1 Then
            &STARowset(&i).ECL_CLAIMS_STA.ACTION_DTTM.Value = %Datetime;
            &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "REC";
         End-If;
      End-For;
   When = "RT"
      For &i = 1 To &STARowset.ActiveRowCount
         If &STARowset(&i).ECL_CLAIMS_STA.APPROVER_OPRID.Value = %OperatorId And
               (&STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "PND" Or
                  &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "REC") And
               &STARowset(&i).ECL_CLAIMS_STA.CURRENT_STEP.Value = 1 Then
            &STARowset(&i).ECL_CLAIMS_STA.ACTION_DTTM.Value = %Datetime;
            &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "RET";
         End-If;
      End-For;
   When = "RL"
      For &i = 1 To &STARowset.ActiveRowCount
         If &STARowset(&i).ECL_CLAIMS_STA.APPROVER_OPRID.Value = %OperatorId And
               (&STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "PND" Or
                  &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "HCR") And
               &STARowset(&i).ECL_CLAIMS_STA.CURRENT_STEP.Value = 1 Then
            &STARowset(&i).ECL_CLAIMS_STA.ACTION_DTTM.Value = %Datetime;
            &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "RTL";
         End-If;
      End-For;
   When = "QY"
      For &i = 1 To &STARowset.ActiveRowCount
         If &STARowset(&i).ECL_CLAIMS_STA.APPROVER_OPRID.Value = %OperatorId And
               (&STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "PND" Or
                  &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "REC") And
               &STARowset(&i).ECL_CLAIMS_STA.CURRENT_STEP.Value = 1 Then
            &STARowset(&i).ECL_CLAIMS_STA.ACTION_DTTM.Value = %Datetime;
            &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "QRY";
         End-If;
      End-For;
   When = "QC"
      For &i = 1 To &STARowset.ActiveRowCount
         If &STARowset(&i).ECL_CLAIMS_STA.APPROVER_OPRID.Value = %OperatorId And
               &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "PND" And
               &STARowset(&i).ECL_CLAIMS_STA.CURRENT_STEP.Value = 1 Then
            &STARowset(&i).ECL_CLAIMS_STA.ACTION_DTTM.Value = %Datetime;
            &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "QCL";
         End-If;
      End-For;
   When = "RE"
      For &i = 1 To &STARowset.ActiveRowCount
         If &STARowset(&i).ECL_CLAIMS_STA.APPROVER_OPRID.Value = %OperatorId And
               &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "PND" And
               &STARowset(&i).ECL_CLAIMS_STA.CURRENT_STEP.Value = 1 Then
            &STARowset(&i).ECL_CLAIMS_STA.ACTION_DTTM.Value = %Datetime;
            &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "RSB";
         End-If;
      End-For;
   When = "CR"
     
      &STA.AdjustDepartmentBudget(&DepartmentId, &BudgetAction, &AdjustableBudgetAmount); /*Layeeque*/
     
      For &i = 1 To &STARowset.ActiveRowCount
         If &STARowset(&i).ECL_CLAIMS_STA.APPROVER_OPRID.Value = %OperatorId And
               (&STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "PND" Or
                  &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "REC") And
               &STARowset(&i).ECL_CLAIMS_STA.CURRENT_STEP.Value = 1 Then
            &STARowset(&i).ECL_CLAIMS_STA.ACTION_DTTM.Value = %Datetime;
            &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "CLR";
         End-If;
      End-For;
   When = "HD"
      For &i = 1 To &STARowset.ActiveRowCount
         If &STARowset(&i).ECL_CLAIMS_STA.APPROVER_OPRID.Value = %OperatorId And
               (&STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "PND" Or
                  &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "HCR") And
               &STARowset(&i).ECL_CLAIMS_STA.CURRENT_STEP.Value = 1 Then
            &STARowset(&i).ECL_CLAIMS_STA.ACTION_DTTM.Value = %Datetime;
            &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "HLD";
         End-If;
      End-For;
   When = "HC"
      For &i = 1 To &STARowset.ActiveRowCount
         If &STARowset(&i).ECL_CLAIMS_STA.APPROVER_OPRID.Value = %OperatorId And
               &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "PND" And
               &STARowset(&i).ECL_CLAIMS_STA.CURRENT_STEP.Value = 1 Then
            &STARowset(&i).ECL_CLAIMS_STA.ACTION_DTTM.Value = %Datetime;
            &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "HCR";
         End-If;
      End-For;
   When = "PT"
      For &i = 1 To &STARowset.ActiveRowCount
         If &STARowset(&i).ECL_CLAIMS_STA.APPROVER_OPRID.Value = %OperatorId And
               (&STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "PND" Or
                  &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "HCR") Then
            &STARowset(&i).ECL_CLAIMS_STA.ACTION_DTTM.Value = %Datetime;
            &STARowset(&i).ECL_CLAIMS_STA.ECL_WF_ACTION.Value = "PST";
         End-If;
      End-For;
   When = "RC"
   When = "RT"
   When = "RL"
   When = "QY"
   When = "QC"
   When = "RE"
   When = "HD"
   When = "HC"
   When = "CR"
      For &i = 1 To &STARowset.ActiveRowCount
         &SeqNo = &STARowset(&i).ECL_CLAIMS_STA.SEQNO.Value;
         &Appr_Step = &STARowset(&i).ECL_CLAIMS_STA.APPR_STEP.Value;
         &STARowset(&i).ECL_CLAIMS_STA.CURRENT_STEP.Value = 0;
      End-For;
   When = "RC"
      &STA.InsertReceivedHoldApprover(ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &STA.ApprovaRuleSet(ECL_CLAIMS_HDR.ECL_DEVIATION.Value, ECL_CLAIMS_HDR.ECL_CHECK_FLG.Value), &Appr_Step - 1, &SeqNo, ECL_CLAIMS_HDR.EMPLID.Value, ECL_CLAIMS_HDR.EMPL_RCD.Value, ECL_CLAIMS_HDR.ECL_CATEGORY.Value, ECL_CLAIMS_HDR.ECL_REQUEST_DT.Value, "REC");
      Break;
   When = "RT"
   When = "QY"
   When = "HD"
      &Appr_Step = 0;
      &Currentstep = 1;
      &STAAction = "PND";
      &STA.InsertClaimSTA(ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &STA.ApprovaRuleSet(ECL_CLAIMS_HDR.ECL_DEVIATION.Value, ECL_CLAIMS_HDR.ECL_CHECK_FLG.Value), ECL_CLAIMS_HDR.EMPLID.Value, ECL_CLAIMS_HDR.EMPL_RCD.Value, ECL_CLAIMS_HDR.ECL_CATEGORY.Value, ECL_CLAIMS_HDR.ECL_REQUEST_DT.Value, "", &SeqNo, &STAAction, &Currentstep, &DelegatedApprover, ECL_CLAIMS_HDR.ECL_STATUS.Value);
      Break;
   When = "QC"
   When = "RE"
      If ECL_CLAIMS_HDR.ECL_CHECK_FLG.Value = "Y" Then
         &Appr_Step = &Appr_Step;
      Else
         If ECL_CLAIMS_HDR.ECL_DEVIATION.Value = "Y" Then
            &Appr_Step = &Appr_Step + 2;
         Else
            &Appr_Step = &Appr_Step + 1;
         End-If;
      End-If;
      &STA.InsertClaimNextApprover(ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &STA.ApprovaRuleSet(ECL_CLAIMS_HDR.ECL_DEVIATION.Value, ECL_CLAIMS_HDR.ECL_CHECK_FLG.Value), &Appr_Step, &SeqNo, ECL_CLAIMS_HDR.EMPLID.Value, ECL_CLAIMS_HDR.EMPL_RCD.Value, ECL_CLAIMS_HDR.ECL_CATEGORY.Value, ECL_CLAIMS_HDR.ECL_REQUEST_DT.Value);
      Break;
   When = "HC"
      If ECL_CLAIMS_HDR.ECL_CHECK_FLG.Value = "Y" Then
         &Appr_Step = &Appr_Step + 1;
      Else
         If ECL_CLAIMS_HDR.ECL_DEVIATION = "Y" Then
            &Appr_Step = &Appr_Step + 3;
         Else
            &Appr_Step = &Appr_Step + 2;
         End-If;
      End-If;
      &STA.InsertClaimNextApprover(ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &STA.ApprovaRuleSet(ECL_CLAIMS_HDR.ECL_DEVIATION.Value, ECL_CLAIMS_HDR.ECL_CHECK_FLG.Value), &Appr_Step, &SeqNo, ECL_CLAIMS_HDR.EMPLID.Value, ECL_CLAIMS_HDR.EMPL_RCD.Value, ECL_CLAIMS_HDR.ECL_CATEGORY.Value, ECL_CLAIMS_HDR.ECL_REQUEST_DT.Value);
      Break;
   When = "CR"
      &STA.InsertClaimNextApprover(ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &STA.ApprovaRuleSet(ECL_CLAIMS_HDR.ECL_DEVIATION.Value, ECL_CLAIMS_HDR.ECL_CHECK_FLG.Value), &Appr_Step, &SeqNo, ECL_CLAIMS_HDR.EMPLID.Value, ECL_CLAIMS_HDR.EMPL_RCD.Value, ECL_CLAIMS_HDR.ECL_CATEGORY.Value, ECL_CLAIMS_HDR.ECL_REQUEST_DT.Value);
      Break;
      <*When = "HD"
      &STA.InsertReceivedHoldApprover(ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &STA.ApprovaRuleSet(ECL_CLAIMS_HDR.ECL_DEVIATION.Value), &Appr_Step - 1, &SeqNo, ECL_CLAIMS_HDR.EMPLID.Value, ECL_CLAIMS_HDR.EMPL_RCD.Value, ECL_CLAIMS_HDR.ECL_CATEGORY.Value, ECL_CLAIMS_HDR.ECL_REQUEST_DT.Value, "HLD");
      Break;*>
      <*When = "HC"
      &STA.InsertReceivedHoldApprover(ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &STA.ApprovaRuleSet(ECL_CLAIMS_HDR.ECL_DEVIATION.Value), &Appr_Step - 1, &SeqNo, ECL_CLAIMS_HDR.EMPLID.Value, ECL_CLAIMS_HDR.EMPL_RCD.Value, ECL_CLAIMS_HDR.ECL_CATEGORY.Value, ECL_CLAIMS_HDR.ECL_REQUEST_DT.Value, "HCR");
      Break;*>
   When = "RL"
      &Appr_Step = &Appr_Step - 2;
      &STA.InsertClaimNextApprover(ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &STA.ApprovaRuleSet(ECL_CLAIMS_HDR.ECL_DEVIATION.Value, ECL_CLAIMS_HDR.ECL_CHECK_FLG.Value), &Appr_Step, &SeqNo, ECL_CLAIMS_HDR.EMPLID.Value, ECL_CLAIMS_HDR.EMPL_RCD.Value, ECL_CLAIMS_HDR.ECL_CATEGORY.Value, ECL_CLAIMS_HDR.ECL_REQUEST_DT.Value);
      Break;
   When = "RJ"
      &STA.AdjustDepartmentBudget(&DepartmentId, &BudgetAction, &AdjustableBudgetAmount); /*Layeeque*/
      Break;
   When = "PT"
      For &i = 1 To &STARowset.ActiveRowCount
         &SeqNo = &STARowset(&i).ECL_CLAIMS_STA.SEQNO.Value;
         &Appr_Step = &STARowset(&i).ECL_CLAIMS_STA.APPR_STEP.Value;
         &STARowset(&i).ECL_CLAIMS_STA.CURRENT_STEP.Value = 0;
      End-For;
      &STA.AdjustDepartmentBudget(&DepartmentId, &BudgetAction, &AdjustableBudgetAmount); /*Layeeque*/
      Break;
   When-Other
      Break;
   End-Evaluate;
  
   /* Insert into Sequence record*/
   &SQL = GetSQL(SQL.ECL_ATCH_SEQNO_INSERT);
   For &i = 1 To &Seqno_Array.Len
      &SQL.Execute(ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &Seqno_Array [&i]);
   End-For;
   &SQL.Close();
   /*end*/
  
End-If;

/*kondal IB testing*/

&msg = CreateMessage(Operation.ECL_INSERT_HDR_SOP, %IntBroker_Request);
If &msg.IsActive Then
   &ROWSET = GetLevel0();
  
   &Emplid = &ROWSET(1).ECL_CLAIMS_HDR.EMPLID.Value;
   &empl_rcd = &ROWSET(1).ECL_CLAIMS_HDR.EMPL_RCD.Value;
   &CLAIM_REQ_ID = &ROWSET(1).ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value;
   &ECL_CATEGORY = &ROWSET(1).ECL_CLAIMS_HDR.ECL_CATEGORY.Value;
   &ECL_TRVL_REQ_ID = &ROWSET(1).ECL_CLAIMS_HDR.ECL_TRVL_REQ_ID.Value;
   &ECL_ARF_REQ_ID = &ROWSET(1).ECL_CLAIMS_HDR.ECL_ARF_REQ_ID.Value;
   &ECL_STATUS = &ROWSET(1).ECL_CLAIMS_HDR.ECL_STATUS.Value;
   &DEPTID = &ROWSET(1).ECL_CLAIMS_HDR.DEPTID.Value;
   &ECL_APPROVER_ID = &ROWSET(1).ECL_CLAIMS_HDR.ECL_APPROVER_ID.Value;
   &ECL_RAISED_ID = &ROWSET(1).ECL_CLAIMS_HDR.ECL_RAISED_ID.Value;
   &ECL_TOTAL_EXPENSE = &ROWSET(1).ECL_CLAIMS_HDR.ECL_TOTAL_EXPENSE.Value;
   &ECL_APV_EXPENSE = &ROWSET(1).ECL_CLAIMS_HDR.ECL_APV_EXPENSE.Value;
   &COMMENTS = &ROWSET(1).ECL_CLAIMS_HDR.COMMENTS.Value;
   &COMMENTS_LONG = &ROWSET(1).ECL_CLAIMS_HDR.COMMENTS_LONG.Value;
   &COMMENTS_2000 = &ROWSET(1).ECL_CLAIMS_HDR.COMMENTS_2000.Value;
  
   &msg.CopyRowset(&ROWSET);
   &msg.Publish();
End-If;
/*kondal IB testing*/

workflow

import ZIN_COMMON:*;
import ECL_COMMON:OnlineBase:*;

Component string &Action, &ActualEmplid;
Component number &Appr_Step;

Local ZIN_COMMON:AppEngineBase &AppEngine = create ZIN_COMMON:AppEngineBase();
Local ZIN_COMMON:ReportBase &Value = create ZIN_COMMON:ReportBase();
Local ECL_COMMON:OnlineBase &STA = create ECL_COMMON:OnlineBase();
Local string &TO = "";
Local string &CC = "";
Local string &Subject = "";
Local string &Text = "";
Local string &NextEmailid = "";
Local string &Approver_ID = "";
Local string &Raise_ID = "";
Local string &Delegation = "";

&NextEmailid = &STA.GetNextApproverEmailid(&STA.ApprovaRuleSet(ECL_CLAIMS_HDR.ECL_DEVIATION.Value, ECL_CLAIMS_HDR.ECL_CHECK_FLG.Value), &Appr_Step);

If &Action = "SAV" Then
Else
   SQLExec("SELECT APPROVER_OPRID FROM PS_ECL_CLAIMS_STA WHERE ECL_CLAIM_REQ_ID = :1 AND SEQNO = 1", ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &Raise_ID);
   Evaluate ECL_CLAIMS_HDR.ECL_STATUS.Value
   When = "SB"
      rem &TO = &Value.GetFieldValue("PSUSEREMAIL", "EMAILID", ECL_CLAIMS_HDR.ECL_APPROVER_ID.Value, "BUS", "", "", "");
      &Delegation = &STA.CheckDelegation(ECL_CLAIMS_HDR.ECL_APPROVER_ID.Value, "APPR", %Component);
      &Delegation = &STA.Check_Next_Approver_Delagation("SB", ECL_CLAIMS_HDR.ECL_APPROVER_ID.Value, &STA.ApprovaRuleSet(ECL_CLAIMS_HDR.ECL_DEVIATION.Value, ECL_CLAIMS_HDR.ECL_CHECK_FLG.Value), &Appr_Step);
      If &Delegation = "Y" Then
         &STA.Send_Mail_To_Delegated_Id(ECL_CLAIMS_HDR.ECL_STATUS.Value, ECL_CLAIMS_HDR.ECL_APPROVER_ID.Value, &STA.ApprovaRuleSet(ECL_CLAIMS_HDR.ECL_DEVIATION.Value, ECL_CLAIMS_HDR.ECL_CHECK_FLG.Value), &Appr_Step);
      Else
         &TO = &Value.GetFieldValue("PSUSEREMAIL", "EMAILID", ECL_CLAIMS_HDR.ECL_APPROVER_ID.Value, "BUS", "", "", "");
         &CC = %EmailAddress;
         &url = GenerateComponentPortalURL(Portal."EMPLOYEE", Node."HRMS", MenuName."ROLE_MANAGER", "GBL", Component."ECL_CLAIM_SRCH_CMP", "", "");
         &href = EncodeURL(&url);
         &Subject = MsgGetText(27000, 116, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value);
         &Text = MsgGetExplainText(27000, 116, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &href, %Date);
        
         If All(&TO) Then
            &AppEngine.SendEmail(&TO, &CC, &Subject, &Text, "", "");
         End-If;
      End-If;
      Break;
   When = "RC"
      rem &TO = &Value.GetFieldValue("PSUSEREMAIL", "EMAILID", ECL_CLAIMS_HDR.EMPLID.Value, "BUS", "", "", "");
      &TO = &Value.GetFieldValue("PSUSEREMAIL", "EMAILID", &Raise_ID, "BUS", "", "", "");
      &CC = "";
      &Subject = MsgGetText(27000, 121, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value);
      &Text = MsgGetExplainText(27000, 121, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, %Date);
      Break;
   When = "RT"
      rem &TO = &Value.GetFieldValue("PSUSEREMAIL", "EMAILID", ECL_CLAIMS_HDR.EMPLID.Value, "BUS", "", "", "");
      &TO = &Value.GetFieldValue("PSUSEREMAIL", "EMAILID", &Raise_ID, "BUS", "", "", "");
      &CC = "";
      &Subject = MsgGetText(27000, 122, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value);
      &Text = MsgGetExplainText(27000, 122, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, %Date);
      Break;
   When = "RE"
      &TO = &NextEmailid;
      &CC = "";
      &Subject = MsgGetText(27000, 123, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value);
      &Text = MsgGetExplainText(27000, 123, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, %Date);
      Break;
   When = "RJ"
      rem &TO = &Value.GetFieldValue("PSUSEREMAIL", "EMAILID", ECL_CLAIMS_HDR.EMPLID.Value, "BUS", "", "", "");
      &TO = &Value.GetFieldValue("PSUSEREMAIL", "EMAILID", &Raise_ID, "BUS", "", "", "");
      &CC = "";
      &Subject = MsgGetText(27000, 124, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value);
      &Text = MsgGetExplainText(27000, 124, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &Value.GetName(%EmployeeId), %EmployeeId, %Date);
      rem &Text = MsgGetExplainText(27000, 124, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, %Date);
      Break;
   When = "QY"
      rem &TO = &Value.GetFieldValue("PSUSEREMAIL", "EMAILID", ECL_CLAIMS_HDR.EMPLID.Value, "BUS", "", "", "");
      &TO = &Value.GetFieldValue("PSUSEREMAIL", "EMAILID", &Raise_ID, "BUS", "", "", "");
      &CC = "";
      &Subject = MsgGetText(27000, 244, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, ECL_CLAIMS_HDR.ECL_STATUS.LongTranslateValue);
      &Text = MsgGetExplainText(27000, 244, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, %Date);
      Break;
   When = "QC"
      &TO = &NextEmailid;
      &CC = "";
      &Subject = MsgGetText(27000, 126, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, ECL_CLAIMS_HDR.ECL_STATUS.LongTranslateValue);
      &Text = MsgGetExplainText(27000, 126, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, %Date);
      Break;
   When = "HD"
      rem &TO = &Value.GetFieldValue("PSUSEREMAIL", "EMAILID", ECL_CLAIMS_HDR.EMPLID.Value, "BUS", "", "", "");
      &TO = &Value.GetFieldValue("PSUSEREMAIL", "EMAILID", &Raise_ID, "BUS", "", "", "");
      &CC = "";
      &Subject = MsgGetText(27000, 245, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, ECL_CLAIMS_HDR.ECL_STATUS.LongTranslateValue);
      &Text = MsgGetExplainText(27000, 245, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, %Date);
      Break;
   When = "HC"
      &TO = &NextEmailid;
      &CC = "";
      &url = GenerateComponentPortalURL(Portal."EMPLOYEE", Node."HRMS", MenuName."ECLAIMS_MANAGE", "GBL", Component."ECL_CLAIM_SRCH_CMP", "", "");
      &href = EncodeURL(&url);
      &Subject = MsgGetText(27000, 132, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, ECL_CLAIMS_HDR.ECL_STATUS.LongTranslateValue);
      &Text = MsgGetExplainText(27000, 132, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &href, %Date);
      Break;
   When = "RL"
      &TO = &NextEmailid;
      &CC = "";
      &Subject = MsgGetText(27000, 127, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, ECL_CLAIMS_HDR.ECL_STATUS.LongTranslateValue);
      &Text = MsgGetExplainText(27000, 127, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &Value.GetName(%EmployeeId), %EmployeeId, %Date);
      rem &Text = MsgGetExplainText(27000, 127, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &Value.GetName(&ActualEmplid), &ActualEmplid, %Date);
      Break;
      /*When = "CR"
      &TO = &NextEmailid;
      &CC = "";
      &Subject = MsgGetText(27000, 120, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, ECL_CLAIMS_HDR.ECL_STATUS.LongTranslateValue);
      &Text = MsgGetExplainText(27000, 120, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &Value.GetName(%EmployeeId), %EmployeeId, %Date);
      rem &Text = MsgGetExplainText(27000, 120, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &Value.GetName(&ActualEmplid), &ActualEmplid, %Date);
      Break;*/
   When = "PT"
      rem &TO = &Value.GetFieldValue("PSUSEREMAIL", "EMAILID", ECL_CLAIMS_HDR.EMPLID.Value, "BUS", "", "", "");
      &TO = &Value.GetFieldValue("PSUSEREMAIL", "EMAILID", &Raise_ID, "BUS", "", "", "");
      &CC = "";
      &Subject = MsgGetText(27000, 128, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, ECL_CLAIMS_HDR.ECL_STATUS.LongTranslateValue);
      rem &Text = MsgGetExplainText(27000, 128, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &Value.GetName(%EmployeeId), %EmployeeId, %Date);
      &Text = MsgGetExplainText(27000, 128, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, %Date);
      Break;
   When-Other
      Break;
   End-Evaluate;
  
   If &Action = "MAP" Then
      If &STA.ApprovaRuleSet(ECL_CLAIMS_HDR.ECL_DEVIATION.Value, ECL_CLAIMS_HDR.ECL_CHECK_FLG.Value) = "CLAIMS-DEVIATION" Then
         rem &TO = &NextEmailid; /*Abhinav*/
         &Delegation = &STA.Check_Next_Approver_Delagation("MAP", "", &STA.ApprovaRuleSet(ECL_CLAIMS_HDR.ECL_DEVIATION.Value, ECL_CLAIMS_HDR.ECL_CHECK_FLG.Value), &Appr_Step);
         If &Delegation = "Y" Then
            &STA.Send_Mail_To_Delegated_Id("MAP", "", &STA.ApprovaRuleSet(ECL_CLAIMS_HDR.ECL_DEVIATION.Value, ECL_CLAIMS_HDR.ECL_CHECK_FLG.Value), &Appr_Step);
         Else
            &TO = &NextEmailid;
            &CC = "";
            If &Appr_Step = 2 Then
               &url = GenerateComponentPortalURL(Portal."EMPLOYEE", Node."HRMS", MenuName."ROLE_MANAGER", "GBL", Component."ECL_CLAIM_SRCH_CMP", "", "");
               &href = EncodeURL(&url);
            End-If;
            /* If &Appr_Step = 3 Then
            &url = GenerateComponentPortalURL(Portal."EMPLOYEE", Node."HRMS", MenuName."ECLAIMS_MANAGE", "GBL", Component."ECL_CLAIM_SRCH_CMP", "", "");
            &href = EncodeURL(&url);
         End-If; */
            &Subject = MsgGetText(27000, 117, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value);
            &Text = MsgGetExplainText(27000, 117, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &href, %Date);
            If All(&TO) Then
               &AppEngine.SendEmail(&TO, &CC, &Subject, &Text, "", "");
            End-If;
           
         End-If;
      End-If;
      /* If &STA.ApprovaRuleSet(ECL_CLAIMS_HDR.ECL_DEVIATION.Value, ECL_CLAIMS_HDR.ECL_CHECK_FLG.Value) = "CLAIMS" Then
         &TO = &NextEmailid;
         &CC = "";
        
         &url = GenerateComponentPortalURL(Portal."EMPLOYEE", Node."HRMS", MenuName."ECLAIMS_MANAGE", "GBL", Component."ECL_CLAIM_SRCH_CMP", "", "");
         &href = EncodeURL(&url);
        
         &Subject = MsgGetText(27000, 120, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value);
         &Text = MsgGetExplainText(27000, 120, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &href, %Date);
      End-If;*/
     
      If &STA.ApprovaRuleSet(ECL_CLAIMS_HDR.ECL_DEVIATION.Value, ECL_CLAIMS_HDR.ECL_CHECK_FLG.Value) = "CLAIMS" Then
         &TO = &NextEmailid; /*Abhinav*/
         &CC = "";
        
         &url = GenerateComponentPortalURL(Portal."EMPLOYEE", Node."HRMS", MenuName."ECLAIMS_MANAGE", "GBL", Component."ECL_CLAIM_SRCH_CMP", "", "");
         &href = EncodeURL(&url);
        
         &Subject = MsgGetText(27000, 116, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value);
         &Text = MsgGetExplainText(27000, 116, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &href, %Date);
         /*Send Mail*/
         If All(&TO) Then
            &AppEngine.SendEmail(&TO, &CC, &Subject, &Text, "", "");
         End-If;
      End-If;
   End-If;
  
   If &Action = "DAP" Then
      If &STA.ApprovaRuleSet(ECL_CLAIMS_HDR.ECL_DEVIATION.Value, ECL_CLAIMS_HDR.ECL_CHECK_FLG.Value) = "CLAIMS-DEVIATION" Then
         &TO = &NextEmailid;
         &CC = "";
        
         If &Appr_Step = 3 Then
            &url = GenerateComponentPortalURL(Portal."EMPLOYEE", Node."HRMS", MenuName."ECLAIMS_MANAGE", "GBL", Component."ECL_CLAIM_SRCH_CMP", "", "");
            &href = EncodeURL(&url);
         End-If;
         &Subject = MsgGetText(27000, 116, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value);
         &Text = MsgGetExplainText(27000, 116, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &href, %Date);
      End-If;
   End-If;
End-If;

If &Action = "MAP" Or
      ECL_CLAIMS_HDR.ECL_STATUS.Value = "SB" Then
   &Dont_Send_Common_MAil = "Y";
Else
   &Dont_Send_Common_MAil = "N";
End-If;


If (All(&TO) And
      &Dont_Send_Common_MAil = "N") Then
   &AppEngine.SendEmail(&TO, &CC, &Subject, &Text, "", "");
End-If;


add attachments
<******************************************************************************************
Developer Name:Kondal
Date:25-05-11                 
********************************************************************************************>
<*
REM Declare Function display_attachment_buttons PeopleCode ECL_ATTACH_SBR.ATTACHADD RowInit;
Declare Function Add_ER_attachment PeopleCode DERIVED_TR_ATCH.TERMINATION_DT FieldFormula;

Local string &P1, &P2;
Local string &ATTACHSYSFILENAME, &ATTACH_URL, &ATTACHUSERFILE;
Local string &File_Extn;

&URL_ID = "ZIN_TER_REC";
&URL_ID = "URL." | &URL_ID;
&ATTACH_URL = GetURL(@&URL_ID);

If All(&ATTACH_URL) Then
  
   &P1 = "sample";
   &P2 = "data";
   &ATTACHSYSFILENAME = &P1 | "_" | &P2 | "_";
  
   Add_ER_attachment(&ATTACH_URL, &ATTACHSYSFILENAME, "*", &ATTACHUSERFILE, 0, &retcode);*>
/*PeopleCode added to validate the file extension - Starts here*/
<*&File_Extn = Upper(Substring(&ATTACHUSERFILE, Find(".", &ATTACHUSERFILE, 1) + 1, Len(&ATTACHUSERFILE) - Find(".", &ATTACHUSERFILE, 1) + 1));
   If Not None(&File_Extn) Then
      Evaluate &File_Extn
      When = "DOC"
         Break;
      When-Other
         Error MsgGet(27000, 208, "", &ATTACHUSERFILE, &File_Extn);
         Break;
      End-Evaluate;
   End-If;*>

/*PeopleCode added to validate the file extension - Ends here*/
<*   If (&retcode = %Attachment_Success) Then
      ECL_CLAIMS_HDR.ATTACHUSERFILE.Value = &ATTACHUSERFILE;
      ECL_CLAIMS_HDR.ATTACHSYSFILENAME.Value = &ATTACHSYSFILENAME | &ATTACHUSERFILE;
   End-If;
Else
   Error MsgGetText(1116, 9203, "Message Not Found");
End-If;
/*PeopleCode added to validate the file extension - Ends here*/

If (&ATTACHUSERFILE <> "") Then
   Hide(ECL_ATTACH_WRK.ATTACHADD);
   UnHide(ECL_ATTACH_WRK.ATTACHVIEW);
   UnHide(ECL_ATTACH_WRK.ATTACHDELETE);
Else
   UnHide(ECL_ATTACH_WRK.ATTACHADD);
   Hide(ECL_ATTACH_WRK.ATTACHVIEW);
   Hide(ECL_ATTACH_WRK.ATTACHDELETE);
End-If;
*>

import ECL_COMMON:ReportBase:*;


Declare Function display_attachment_buttons PeopleCode FILE_ATTACH_WRK.ATTACHADD RowInit;
Declare Function add_attachment PeopleCode ECL_FILE_WRK.ATTACHADD FieldFormula;

Local string &attach = ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value | "_" | "L2" | "_";

&Check = create ECL_COMMON:ReportBase();
rem &ftpsite = "ftp://Admin:Mphasis123@10.32.16.26";
&ftpsite = &Check.ftpfile_path();

add_attachment(&ftpsite, "", "/", 0, False, "", "", &ATTACHUSERFILE, 1, &retcode, &attach);

If (&retcode = %Attachment_Success) Then
   ECL_CLAIMS_HDR.ATTACHUSERFILE.Value = &ATTACHUSERFILE;
   ECL_CLAIMS_HDR.ATTACHSYSFILENAME.Value = &attach | &ATTACHUSERFILE;
End-If;

REM display_attachment_buttons(ECL_CLAIMS_HDR.ECL_ATTACHUSER.Value);

If (ECL_CLAIMS_HDR.ATTACHUSERFILE.Value <> "") Then
   Hide(ECL_ATTACH_WRK.ATTACHADD);
   UnHide(ECL_ATTACH_WRK.ATTACHVIEW);
   UnHide(ECL_ATTACH_WRK.ATTACHDELETE);
Else
   UnHide(ECL_ATTACH_WRK.ATTACHADD);
   Hide(ECL_ATTACH_WRK.ATTACHVIEW);
   Hide(ECL_ATTACH_WRK.ATTACHDELETE);
End-If;

delete attqachment
<******************************************************************************************
Developer Name:Kondal
Date:25-05-11                 
********************************************************************************************>
<*
REM Declare Function display_attachment_buttons PeopleCode ECL_ATTACH_SBR.ATTACHADD RowInit;
Declare Function delete_attachment PeopleCode ECL_ATTACH_SBR.ATTACHDELETE FieldChange;

Local string &ATTACH_URL;

&URL_ID = "ZIN_TER_REC";
&URL_ID = "URL." | &URL_ID;
&ATTACH_URL = GetURL(@&URL_ID);

If All(&ATTACH_URL) Then
   If None(ECL_CLAIMS_HDR.ECL_ATTACHUSER.Value) Then
      delete_attachment(&ATTACH_URL, ECL_CLAIMS_HDR.ATTACHSYSFILENAME, ECL_CLAIMS_HDR.ATTACHSYSFILENAME, 2, &retcode);
   Else
      delete_attachment(&ATTACH_URL, ECL_CLAIMS_HDR.ATTACHSYSFILENAME, ECL_CLAIMS_HDR.ATTACHUSERFILE, 2, &retcode);
   End-If;
End-If;

If (&ATTACHUSERFILE <> "") Then
   Hide(ECL_ATTACH_WRK.ATTACHADD);
   UnHide(ECL_ATTACH_WRK.ATTACHVIEW);
   UnHide(ECL_ATTACH_WRK.ATTACHDELETE);
Else
   UnHide(ECL_ATTACH_WRK.ATTACHADD);
   Hide(ECL_ATTACH_WRK.ATTACHVIEW);
   Hide(ECL_ATTACH_WRK.ATTACHDELETE);
End-If;
*>

import ECL_COMMON:ReportBase:*;

Declare Function delete_attachment PeopleCode FILE_ATTACH_WRK.ATTACHDELETE FieldChange;

rem Local string &ATTACH_URL = "ftp://Admin:Mphasis123@10.32.16.26";
&Check = create ECL_COMMON:ReportBase();
rem &ftpsite = "ftp://Admin:Mphasis123@10.32.16.26";
&ftpsite = &Check.ftpfile_path();
delete_attachment(&ftpsite, ECL_CLAIMS_HDR.ATTACHSYSFILENAME.Value, ECL_CLAIMS_HDR.ATTACHUSERFILE.Value, 2, &retcode);


If (ECL_CLAIMS_HDR.ATTACHUSERFILE.Value <> "") Then
   Hide(ECL_ATTACH_WRK.ATTACHADD);
   UnHide(ECL_ATTACH_WRK.ATTACHVIEW);
   UnHide(ECL_ATTACH_WRK.ATTACHDELETE);
Else
   UnHide(ECL_ATTACH_WRK.ATTACHADD);
   Hide(ECL_ATTACH_WRK.ATTACHVIEW);
   Hide(ECL_ATTACH_WRK.ATTACHDELETE);
End-If;


view attachments

<******************************************************************************************
Developer Name:Kondal
Date:25-05-11                 
********************************************************************************************>
<*
Declare Function View_Attachment PeopleCode ECL_ATTACH_SBR.ATTACHVIEW FieldChange;

Local string &ATTACH_URL;

&URL_ID = "ZIN_TER_REC";
&URL_ID = "URL." | &URL_ID;
&ATTACH_URL = GetURL(@&URL_ID);

If All(&ATTACH_URL) Then
   If None(ECL_CLAIMS_HDR.ECL_ATTACHUSER.Value) Then
      View_Attachment(&ATTACH_URL, ECL_CLAIMS_HDR.ATTACHSYSFILENAME, ECL_CLAIMS_HDR.ATTACHSYSFILENAME, 2, &retcode);
   Else
      View_Attachment(&ATTACH_URL, ECL_CLAIMS_HDR.ATTACHSYSFILENAME, ECL_CLAIMS_HDR.ATTACHSYSFILENAME, 2, &retcode);
   End-If;
End-If;
*>
import ECL_COMMON:ReportBase:*;

Declare Function View_Attachment PeopleCode FILE_ATTACH_WRK.ATTACHVIEW FieldChange;

rem Local string &ATTACH_URL = "ftp://Admin:Mphasis123@10.32.16.26";
&Check = create ECL_COMMON:ReportBase();
rem &ftpsite = "ftp://Admin:Mphasis123@10.32.16.26";
&ftpsite = &Check.ftpfile_path();
View_Attachment(&ftpsite, ECL_CLAIMS_HDR.ATTACHSYSFILENAME.Value, ECL_CLAIMS_HDR.ATTACHSYSFILENAME.Value, 2, &retcode);


/*************************** ABHINAV Begin ***********************************/
import ZIN_COMMON:*;
import ECL_COMMON:*;

Local ZIN_COMMON:ReportBase &Value_1 = create ZIN_COMMON:ReportBase();
Local ECL_COMMON:OnlineBase &EstimatedCost = create ECL_COMMON:OnlineBase();

/*************************** ABHINAV End***********************************/

ECL_CLAIMS_HDR.ECL_TOT_REIMBU_AMT.Value = ECL_CLAIMS_HDR.ECL_TOT_REIMBU_AMT.Value - ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value;
ECL_CLAIMS_HDR.ECL_TOT_CORPCD_AMT.Value = ECL_CLAIMS_HDR.ECL_TOT_CORPCD_AMT.Value - ECL_CLAIMS_BUSN.ECL_CORPCARD_AMT.Value;
ECL_CLAIMS_HDR.ECL_TOT_CLAIM_AMT.Value = ECL_CLAIMS_HDR.ECL_TOT_CLAIM_AMT.Value - ECL_CLAIMS_BUSN.ECL_TOTAL_AMT.Value;

/*Bug Fix 14-10-2011*/
rem ECL_CLAIMS_HDR.ECL_APV_CORPCD_AMT.Value = ECL_CLAIMS_HDR.ECL_TOT_CORPCD_AMT.Value;
rem ECL_CLAIMS_HDR.ECL_APV_REIMBR_AMT.Value = ECL_CLAIMS_HDR.ECL_TOT_REIMBU_AMT.Value;
rem ECL_CLAIMS_HDR.ECL_APV_CLAIM_AMT.Value = ECL_CLAIMS_HDR.ECL_TOT_CLAIM_AMT.Value;

/*************************** ABHINAV Begin ***********************************/
Local Rowset &RS_Claims_Buss = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_BUSN);

&Count_Mob = 0;
For &i = 1 To &RS_Claims_Buss.ActiveRowCount
   If &i <> CurrentRowNumber() Then
      If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value = "09" Then
         &Grade = &Value_1.getjobfieldvalue("GRADE", ECL_CLAIMS_HDR.EMPLID.Value);
         &Limit_Amount = &EstimatedCost.GetEntitledCost(&Grade, &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value, "", "");
         If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value > &Limit_Amount Then
            &Count_Mob = &Count_Mob + 1;
         End-If;
      End-If;
   End-If;
End-For;

&DevFlag = 0;

&RS_Claims_Buss(CurrentRowNumber()).ECL_CLAIMS_BUSN.ECL_TO_DT.Value = "";
&RS_Claims_Buss(CurrentRowNumber()).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value = "";
&RS_Claims_Buss(CurrentRowNumber()).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value = "";

For &i = 1 To &RS_Claims_Buss.ActiveRowCount
   If &i <> CurrentRowNumber() Then
      If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value <> "" Then
         If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value < (%Date - 90) And
               &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value <> "" Then
            &DevFlag = &DevFlag + 1;
         End-If;
      End-If;
   End-If;
End-For;
<*Code Commented On 11/15/2011 By Nishanth
If &Count_Mob > 0 Then
   HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
   ECL_CLAIMS_HDR.COMMENTS.Visible = True;
   If &DevFlag > 0 Then
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 228, "", ""); /*Layeeque*/
   Else
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 227, "", ""); /*Layeeque*/
   End-If;
Else
   If &DevFlag > 0 Then
      ECL_CLAIMS_HDR.COMMENTS.Visible = True;
      HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 217, "", ""); /*Layeeque*/
   Else
      HR_LBL_WRK.LANG_TRANS_LBL.Visible = False;
      ECL_CLAIMS_HDR.COMMENTS.Value = "";
      ECL_CLAIMS_HDR.COMMENTS.Visible = False;
   End-If;
End-If;
*>
/*************************** ABHINAV End ***********************************/
/*Nishanth*/

&fromflag = 0;

For &f = 1 To &RS_Claims_Buss.ActiveRowCount
   If &f <> CurrentRowNumber() Then
      If &RS_Claims_Buss(&f).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value <> "" Then
         If &RS_Claims_Buss(&f).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value < (%Date - 120) And
               &RS_Claims_Buss(&f).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value <> "" Then
            &fromflag = &fromflag + 1;
         End-If;
      End-If;
   End-If;
End-For;
/*Nishanth-120 Days Deviation Check */

If &Count_Mob > 0 Then
   HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
   ECL_CLAIMS_HDR.COMMENTS.Visible = True;
   HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 227, "", ""); /*Layeeque*/
   If &DevFlag > 0 Then
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 228, "", ""); /*Layeeque*/
      If &fromflag > 0 Then
         HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 253, "", ""); /*Layeeque*/
      End-If;
   End-If;
   If &fromflag > 0 Then
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 253, "", ""); /*Layeeque*/
   End-If
Else
   If &DevFlag > 0 Then
      ECL_CLAIMS_HDR.COMMENTS.Visible = True;
      HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 217, "", ""); /*Layeeque*/
      If &fromflag > 0 Then
         HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 251, "", ""); /*Nishanth*/
      End-If;
   Else
      HR_LBL_WRK.LANG_TRANS_LBL.Visible = False;
      ECL_CLAIMS_HDR.COMMENTS.Visible = False;
      If &fromflag > 0 Then
         HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
         ECL_CLAIMS_HDR.COMMENTS.Visible = True;
         HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 251, "", ""); /*Nishanth*/
      End-If;
   End-If;
End-If;
/*Nishanth*/
/*Nishanth*/
WinMessage("&Count_Mob-->" | &Count_Mob | "&DevFlag-->" | &DevFlag | "&fromflag-->" | &fromflag, 0);


import ZIN_COMMON:*;
import ECL_COMMON:*;

Component string &Value;
rem Component number &DevFlag;
Local ZIN_COMMON:ReportBase &Value_1 = create ZIN_COMMON:ReportBase();
Local ECL_COMMON:OnlineBase &EstimatedCost = create ECL_COMMON:OnlineBase();
Local Rowset &RS_Claims_Buss = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_BUSN);

If &Value = "Y" Then
   ECL_DERIVED.GROUPBOX1.Visible = True;
   ECL_DERIVED.GROUPBOX2.Visible = False;
Else
   ECL_DERIVED.GROUPBOX2.Visible = True;
   ECL_DERIVED.GROUPBOX1.Visible = False;
End-If;

ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.DisplayOnly = False;

SQLExec("SELECT ALLOWEDIT FROM PS_ECL_GL_CODE_TBL WHERE ECL_CATEGORY = :1 AND ECL_CLAIM_TYP = :2", ECL_CLAIMS_BUSN.ECL_CATEGORY.Value, ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value, &Edit);
If &Edit = "Y" Then
   ECL_CLAIMS_BUSN.ECL_COST_CENTER.DisplayOnly = False;
Else
   ECL_CLAIMS_BUSN.ECL_COST_CENTER.DisplayOnly = True;
End-If;

Evaluate ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value
When = "09"
   HR_LBL_WRK.GROUPBOX8.Visible = False;
   HR_LBL_WRK.GROUPBOX7.Visible = False;
   HR_LBL_WRK.GROUPBOX6.Visible = False;
   HR_LBL_WRK.GROUPBOX5.Visible = False;
   HR_LBL_WRK.GROUPBOX4.Visible = True;
   ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.DisplayOnly = True; /*kondal 14-04-2011*/
   HR_LBL_WRK.LANG_NATIVE_LBL.Visible = True; /*Layeeque*/
  
   rem HR_LBL_WRK.LANG_NATIVE_LBL.Value = MsgGetExplainText(27000, 105, "", ""); /*Layeeque*/
   Break;
When = "04"
   HR_LBL_WRK.GROUPBOX7.Visible = False;
   HR_LBL_WRK.GROUPBOX8.Visible = False;
   HR_LBL_WRK.GROUPBOX6.Visible = False;
   HR_LBL_WRK.GROUPBOX5.Visible = True;
   HR_LBL_WRK.GROUPBOX4.Visible = False;
   Break;
When = "10"
   HR_LBL_WRK.GROUPBOX7.Visible = False;
   HR_LBL_WRK.GROUPBOX8.Visible = False;
   HR_LBL_WRK.GROUPBOX6.Visible = True;
   HR_LBL_WRK.GROUPBOX5.Visible = False;
   HR_LBL_WRK.GROUPBOX4.Visible = False;
   Break;
When = "08"
   /*Abhinav - Begin*/
   &Con_Attachment_Count = 0;
   &Convey = 0;
   For &i = 1 To &RS_Claims_Buss.ActiveRowCount
      If &i <> CurrentRowNumber() Then
         If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value = "08" Then
            &Convey = 1;
            If None(&RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_ATTACHUSER.Value) Then
               &Con_Attachment_Count = 1;
            End-If;
         End-If;
      End-If;
   End-For;
   If &Convey = 1 Then
      If &Con_Attachment_Count = 0 Then
         WinMessage("Please enter the Conveyance Expenses details in a single attachment. Use the file attached to the Conveyance Expenses line item previously.", 0);
         &RS_Claims_Buss(CurrentRowNumber()).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value = "";
         &RS_Claims_Buss(CurrentRowNumber()).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value = "";
         &RS_Claims_Buss(CurrentRowNumber()).ECL_CLAIMS_BUSN.ECL_TO_DT.Value = "";
         HR_LBL_WRK.GROUPBOX7.Visible = False;
      End-If;
      If &Con_Attachment_Count = 1 Then
         WinMessage("Please add an attachment to the Conveyance Expenses line item entered earlier. Add in all the conveyance expense details in this file.", 0);
         &RS_Claims_Buss(CurrentRowNumber()).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value = "";
         &RS_Claims_Buss(CurrentRowNumber()).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value = "";
         &RS_Claims_Buss(CurrentRowNumber()).ECL_CLAIMS_BUSN.ECL_TO_DT.Value = "";
         HR_LBL_WRK.GROUPBOX7.Visible = False;
      End-If;
   Else
      /*Abhinav - End*/
      HR_LBL_WRK.GROUPBOX7.Visible = True;
   End-If;
   HR_LBL_WRK.GROUPBOX8.Visible = False;
   HR_LBL_WRK.GROUPBOX6.Visible = False;
   HR_LBL_WRK.GROUPBOX5.Visible = False;
   HR_LBL_WRK.GROUPBOX4.Visible = False;
   Break;
When = ""
   HR_LBL_WRK.GROUPBOX7.Visible = False;
   HR_LBL_WRK.GROUPBOX8.Visible = False;
   HR_LBL_WRK.GROUPBOX6.Visible = False;
   HR_LBL_WRK.GROUPBOX5.Visible = False;
   HR_LBL_WRK.GROUPBOX4.Visible = False;
   Break;
When-Other
   HR_LBL_WRK.GROUPBOX4.Visible = False;
   HR_LBL_WRK.GROUPBOX5.Visible = False;
   HR_LBL_WRK.GROUPBOX6.Visible = False;
   HR_LBL_WRK.GROUPBOX7.Visible = False;
   HR_LBL_WRK.GROUPBOX8.Visible = True;
   Break;
End-Evaluate;

SetDefault(ECL_CLAIMS_BUSN.ECL_FROM_DT);
SetDefault(ECL_CLAIMS_BUSN.ECL_TO_DT);
SetDefault(ECL_CLAIMS_BUSN.ECL_GL_CODE);
SetDefault(ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT);
SetDefault(ECL_CLAIMS_BUSN.ECL_GL_CODE);
SetDefault(ECL_CLAIMS_BUSN.ECL_CORPCARD_AMT);
SetDefault(ECL_CLAIMS_BUSN.ECL_TOTAL_AMT);
SetDefault(ECL_CLAIMS_BUSN.ECL_DETAIL1);
SetDefault(ECL_CLAIMS_BUSN.ECL_DETAIL2);
SetDefault(ECL_CLAIMS_BUSN.COMMENTS1);
SetDefault(ECL_CLAIMS_BUSN.ECL_DETAIL3);
SetDefault(ECL_CLAIMS_BUSN.ECL_DETAIL4);
SetDefault(ECL_CLAIMS_BUSN.ECL_DETAIL5);
SetDefault(ECL_CLAIMS_BUSN.ECL_NOOF_PERSON);
SetDefault(ECL_CLAIMS_BUSN.PURPOSE1);
SetDefault(ECL_CLAIMS_BUSN.COMPANY_DESCR);
SetDefault(ECL_CLAIMS_BUSN.ECL_NAME);
SetDefault(ECL_CLAIMS_BUSN.CITY);
SetDefault(ECL_CLAIMS_BUSN.ECL_BILL_NO);
SetDefault(ECL_CLAIMS_BUSN.ECL_LOCATION_FROM);
SetDefault(ECL_CLAIMS_BUSN.ECL_LOCATION_TO);
SetDefault(ECL_CLAIMS_BUSN.ECL_VEHICLE_TYPE);
SetDefault(ECL_CLAIMS_BUSN.ECL_KM_TRAVEL);
SetDefault(ECL_CLAIMS_BUSN.ECL_RENT_AMT);
SetDefault(ECL_CLAIMS_BUSN.ECL_OFFICIAL_CALLS);
SetDefault(ECL_CLAIMS_BUSN.ECL_PERS_CALLS);
SetDefault(ECL_CLAIMS_BUSN.MOBILE_PHONE);
SetDefault(ECL_CLAIMS_BUSN.ECL_LATE_REASON);
SetDefault(HR_LBL_WRK.LANG_TRANS_LBL);

/*************************** ABHINAV ***********************************/

&Count_Mob = 0;
For &i = 1 To &RS_Claims_Buss.ActiveRowCount
   If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value = "09" Then
      &Grade = &Value_1.getjobfieldvalue("GRADE", ECL_CLAIMS_HDR.EMPLID.Value);
      &Limit_Amount = &EstimatedCost.GetEntitledCost(&Grade, &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value, "", "");
      If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value > &Limit_Amount Then
         &Count_Mob = &Count_Mob + 1;
      End-If;
   End-If;
  
End-For;

&DevFlag = 0;

For &i = 1 To &RS_Claims_Buss.ActiveRowCount
   If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value <> "" Then
      If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value < (%Date - 90) And
            &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value <> "" Then
         &DevFlag = &DevFlag + 1;
      End-If;
   End-If;
End-For;

<*Nishanth - Code Commented On 15/11/2011
If &Count_Mob > 0 Then
   HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
   ECL_CLAIMS_HDR.COMMENTS.Visible = True;
   If &DevFlag > 0 Then
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 228, "", ""); /*Layeeque*/
   Else
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 227, "", ""); /*Layeeque*/
   End-If;
Else
   If &DevFlag > 0 Then
      ECL_CLAIMS_HDR.COMMENTS.Visible = True;
      HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 217, "", ""); /*Layeeque*/
   Else
      HR_LBL_WRK.LANG_TRANS_LBL.Visible = False;
      ECL_CLAIMS_HDR.COMMENTS.Visible = False;
   End-If;
End-If;
*>
/*************************** ABHINAV ***********************************/
/*Nishanth*/
&fromflag = 0;

For &f = 1 To &RS_Claims_Buss.ActiveRowCount
   If &RS_Claims_Buss(&f).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value <> "" Then
      If &RS_Claims_Buss(&f).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value < (%Date - 120) Then
         &fromflag = &fromflag + 1;
      End-If;
   End-If;
End-For;
/*Nishanth-120 Days Deviation Check */

If &Count_Mob > 0 Then
   HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
   ECL_CLAIMS_HDR.COMMENTS.Visible = True;
   HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 227, "", ""); /*Layeeque*/
   If &DevFlag > 0 Then
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 228, "", ""); /*Layeeque*/
      If &fromflag > 0 Then
         HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 253, "", ""); /*Layeeque*/
      End-If;
   End-If;
   If &fromflag > 0 Then
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 253, "", ""); /*Layeeque*/
   End-If
Else
   If &DevFlag > 0 Then
      ECL_CLAIMS_HDR.COMMENTS.Visible = True;
      HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 217, "", ""); /*Layeeque*/
      If &fromflag > 0 Then
         HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 251, "", ""); /*Nishanth*/
      End-If;
   Else
      HR_LBL_WRK.LANG_TRANS_LBL.Visible = False;
      ECL_CLAIMS_HDR.COMMENTS.Visible = False;
      If &fromflag > 0 Then
         HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
         ECL_CLAIMS_HDR.COMMENTS.Visible = True;
         HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 251, "", ""); /*Nishanth*/
      End-If;
   End-If;
End-If;
/*Nishanth*/


&Corp_Amount = 0;
&Reim_Amount = 0;
&total_amt = 0;
Local Rowset &rs = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_BUSN);

ECL_CLAIMS_BUSN.ECL_TOTAL_AMT.Value = ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value + ECL_CLAIMS_BUSN.ECL_CORPCARD_AMT.Value;
ECL_CLAIMS_BUSN.ECL_TOT_CORPCD_AMT.Value = ECL_CLAIMS_BUSN.ECL_CORPCARD_AMT.Value;
ECL_CLAIMS_BUSN.ECL_TOT_CLAIM_AMT.Value = ECL_CLAIMS_BUSN.ECL_TOTAL_AMT.Value;

For &i = 1 To &rs.ActiveRowCount
   &Corp_Amount = &Corp_Amount + &rs(&i).ECL_CLAIMS_BUSN.ECL_CORPCARD_AMT.Value;
   &Reim_Amount = &Reim_Amount + &rs(&i).ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value;
   &total_amt = &total_amt + &rs(&i).ECL_CLAIMS_BUSN.ECL_TOTAL_AMT.Value;
End-For;

ECL_CLAIMS_HDR.ECL_TOT_CORPCD_AMT.Value = &Corp_Amount;
ECL_CLAIMS_HDR.ECL_TOT_REIMBU_AMT.Value = &Reim_Amount;
ECL_CLAIMS_HDR.ECL_TOT_CLAIM_AMT.Value = &total_amt;

ECL_CLAIMS_HDR.ECL_APV_REIMBR_AMT.Value = &Reim_Amount;
ECL_CLAIMS_HDR.ECL_APV_CORPCD_AMT.Value = &Corp_Amount;
ECL_CLAIMS_HDR.ECL_APV_CLAIM_AMT.Value = &total_amt;

import ZIN_COMMON:*;
import ECL_COMMON:*;

Local Rowset &BusnRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_BUSN);
Local ZIN_COMMON:ReportBase &Value = create ZIN_COMMON:ReportBase();
Local ECL_COMMON:OnlineBase &EstimatedCost = create ECL_COMMON:OnlineBase();


For &i = 1 To &BusnRowset.ActiveRowCount
   If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value > %Date Or
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value > %Date Then
      rem Error "Entered Date is Greater than the current date";
      Error MsgGetText(27000, 167, "Message Not Found");
   End-If;
   /*  kondal 18-04-2011 commented
 If All(&BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value, &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value) Then
      If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value = &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value Then
         rem Error "Entered From date and To Date as same";
         Error MsgGetText(27000, 168, "Message Not Found");
      Else
   If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value > &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value Then
      rem Error "From Date is Greater than the To Date";
      Error MsgGetText(27000, 169, "Message Not Found");
   End-If;
    End-If;
    End-If;*/
End-For;

For &i = 1 To &BusnRowset.ActiveRowCount
   For &j = (&i + 1) To &BusnRowset.ActiveRowCount
      If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value = &BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value Then
         If All(&BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value) Or
               All(&BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_TO_DT.Value) Then
            If &BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value <= &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value And
                  &BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value >= &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value Then
               rem Error "Invalid date";
               Error MsgGetText(27000, 170, "Message Not Found");
            End-If;
            If &BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_TO_DT.Value >= &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value And
                  &BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_TO_DT.Value <= &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value Then
               rem Error "Invalid date3";
               Error MsgGetText(27000, 170, "Message Not Found");
            End-If;
         End-If;
      End-If;
   End-For;
End-For;

/***************************************************************************
Developer : Nishanth
Date : 01/11/2011
Customize Purpose : Claims Policy is deviated when the From Date is entered above 120 Days
***************************************************************************/
/*********************************90 Days Deviation ***********************************/
&DevFlag = 0;

For &i = 1 To &BusnRowset.ActiveRowCount
   If All(&BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value) Then
      If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value < (%Date - 90) And
            &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value <> "" Then
         &DevFlag = &DevFlag + 1;
      End-If;
   End-If;
End-For;
/* 90 Days Deviation Check*/


/*************************** ABHINAV ***********************************/
Local Rowset &RS_Claims_Buss = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_BUSN);
&Count_Mob = 0;
For &i = 1 To &RS_Claims_Buss.ActiveRowCount
   If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value = "09" Then
      &Grade = &Value.getjobfieldvalue("GRADE", ECL_CLAIMS_HDR.EMPLID.Value);
      &Limit_Amount = &EstimatedCost.GetEntitledCost(&Grade, &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value, "", "");
      If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value > &Limit_Amount Then
         &Count_Mob = &Count_Mob + 1;
      End-If;
   End-If;
End-For;

&fromflag = 0;

For &f = 1 To &BusnRowset.ActiveRowCount
   If All(&BusnRowset(&f).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value) Then
      If &BusnRowset(&f).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value < (%Date - 120) And
            &BusnRowset(&f).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value <> "" Then
         &fromflag = &fromflag + 1;
      End-If;
   End-If;
End-For;
/*Nishanth-120 Days Deviation Check */
If &Count_Mob > 0 Then
   HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
   ECL_CLAIMS_HDR.COMMENTS.Visible = True;
   HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 227, "", ""); /*Layeeque*/
   If &DevFlag > 0 Then
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 228, "", ""); /*Layeeque*/
      If &fromflag > 0 Then
         HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 253, "", ""); /*Layeeque*/
      End-If;
   End-If;
   If &fromflag > 0 Then
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 253, "", ""); /*Layeeque*/
   End-If
Else
   If &DevFlag > 0 Then
      ECL_CLAIMS_HDR.COMMENTS.Visible = True;
      HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 217, "", ""); /*Layeeque*/
      If &fromflag > 0 Then
         HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 251, "", ""); /*Nishanth*/
      End-If;
   Else
      HR_LBL_WRK.LANG_TRANS_LBL.Visible = False;
      ECL_CLAIMS_HDR.COMMENTS.Visible = False;
      If &fromflag > 0 Then
         HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
         ECL_CLAIMS_HDR.COMMENTS.Visible = True;
         HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 251, "", ""); /*Nishanth*/
      End-If;
   End-If;
End-If;
rem WinMessage("&Count_Mob-->" | &Count_Mob | "&DevFlag-->" | &DevFlag | "&fromflag -->" | &fromflag, 0);
/*Nishanth*/

import ZIN_COMMON:*;
import ECL_COMMON:*;

Local ZIN_COMMON:ReportBase &Value = create ZIN_COMMON:ReportBase();
Local ECL_COMMON:OnlineBase &EstimatedCost = create ECL_COMMON:OnlineBase();

&Corp_Amount = 0;
&Reim_Amount = 0;
&total_amt = 0;
Local Rowset &rs = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_BUSN);

ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value = ECL_CLAIMS_BUSN.ECL_RENT_AMT.Value + ECL_CLAIMS_BUSN.ECL_OFFICIAL_CALLS.Value; /* kondal 18-04-2011*/
ECL_CLAIMS_BUSN.ECL_TOTAL_AMT.Value = ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value + ECL_CLAIMS_BUSN.ECL_CORPCARD_AMT.Value;

ECL_CLAIMS_BUSN.ECL_TOT_REIMBU_AMT.Value = ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value;
ECL_CLAIMS_BUSN.ECL_TOT_CLAIM_AMT.Value = ECL_CLAIMS_BUSN.ECL_TOTAL_AMT.Value;

For &i = 1 To &rs.ActiveRowCount
   &Corp_Amount = &Corp_Amount + &rs(&i).ECL_CLAIMS_BUSN.ECL_CORPCARD_AMT.Value;
   &Reim_Amount = &Reim_Amount + &rs(&i).ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value;
   &total_amt = &total_amt + &rs(&i).ECL_CLAIMS_BUSN.ECL_TOTAL_AMT.Value;
End-For;

ECL_CLAIMS_HDR.ECL_TOT_CORPCD_AMT.Value = &Corp_Amount;
ECL_CLAIMS_HDR.ECL_TOT_REIMBU_AMT.Value = &Reim_Amount;
ECL_CLAIMS_HDR.ECL_TOT_CLAIM_AMT.Value = &total_amt;

ECL_CLAIMS_HDR.ECL_APV_REIMBR_AMT.Value = &Reim_Amount;
ECL_CLAIMS_HDR.ECL_APV_CORPCD_AMT.Value = &Corp_Amount;
ECL_CLAIMS_HDR.ECL_APV_CLAIM_AMT.Value = &total_amt;

If ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value = "09" Then
   &Grade = &Value.getjobfieldvalue("GRADE", ECL_CLAIMS_HDR.EMPLID.Value);
   &Limit_Amount = &EstimatedCost.GetEntitledCost(&Grade, ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value, "", "");
   If ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value > &Limit_Amount Then
      WinMessage("Your are eligible for a Mobile Entitilement amount of Rs : " | &Limit_Amount | "/-. To avoide deviation of your expense request, please ensure that sum of Rental Amount and Office Calls is less the Rs. " | &Limit_Amount | "/-.", 0);
      HR_LBL_WRK.LANG_NATIVE_LBL.Value = MsgGetExplainText(27000, 105, "", ""); /*Layeeque*/
   Else
      HR_LBL_WRK.LANG_NATIVE_LBL.Value = "";
      HR_LBL_WRK.LANG_NATIVE_LBL.DisplayOnly = True;
   End-If;
End-If;
/************************* ABHINAV ****************************/

Local Rowset &RS_Claims_Buss = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_BUSN);
&Count_Mob = 0;
For &i = 1 To &RS_Claims_Buss.ActiveRowCount
   If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value = "09" Then
      &Grade = &Value.getjobfieldvalue("GRADE", ECL_CLAIMS_HDR.EMPLID.Value);
     
      &Limit_Amount = &EstimatedCost.GetEntitledCost(&Grade, &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value, "", "");
     
      If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value > &Limit_Amount Then
         &Count_Mob = &Count_Mob + 1;
      End-If;
   End-If;
End-For;

&DevFlag = 0;

For &i = 1 To &RS_Claims_Buss.ActiveRowCount
   If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value <> "" Then
      If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value < (%Date - 90) And
            &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value <> "" Then
         &DevFlag = &DevFlag + 1;
      End-If;
   End-If;
End-For;

/************************* ABHINAV ****************************/
<* Code Commented By Nishanth
If &Count_Mob > 0 Then
   HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
   ECL_CLAIMS_HDR.COMMENTS.Visible = True;
   If &DevFlag > 0 Then
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 228, "", ""); /*Layeeque*/
   Else
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 227, "", ""); /*Layeeque*/
   End-If;
Else
   If &DevFlag > 0 Then
      ECL_CLAIMS_HDR.COMMENTS.Visible = True;
      HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 217, "", ""); /*Layeeque*/
   Else
      HR_LBL_WRK.LANG_TRANS_LBL.Visible = False;
      ECL_CLAIMS_HDR.COMMENTS.Visible = False;
   End-If;
End-If;
*>
/*Nishanth*/
&fromflag = 0;

For &f = 1 To &RS_Claims_Buss.ActiveRowCount
   If &RS_Claims_Buss(&f).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value <> "" Then
      If &RS_Claims_Buss(&f).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value < (%Date - 120) And
            &RS_Claims_Buss(&f).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value <> "" Then
         &fromflag = &fromflag + 1;
      End-If;
   End-If;
End-For;
/*Nishanth-120 Days Deviation Check */

If &Count_Mob > 0 Then
   HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
   ECL_CLAIMS_HDR.COMMENTS.Visible = True;
   HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 227, "", ""); /*Layeeque*/
   If &DevFlag > 0 Then
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 228, "", ""); /*Layeeque*/
      If &fromflag > 0 Then
         HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 253, "", ""); /*Layeeque*/
      End-If;
   End-If;
   If &fromflag > 0 Then
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 253, "", ""); /*Layeeque*/
   End-If
Else
   If &DevFlag > 0 Then
      ECL_CLAIMS_HDR.COMMENTS.Visible = True;
      HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 217, "", ""); /*Layeeque*/
      If &fromflag > 0 Then
         HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 251, "", ""); /*Nishanth*/
      End-If;
   Else
      HR_LBL_WRK.LANG_TRANS_LBL.Visible = False;
      ECL_CLAIMS_HDR.COMMENTS.Visible = False;
      If &fromflag > 0 Then
         HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
         ECL_CLAIMS_HDR.COMMENTS.Visible = True;
         HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 251, "", ""); /*Nishanth*/
      End-If;
   End-If;
End-If;
/*Nishanth*/

import ZIN_COMMON:*;
import ECL_COMMON:*;


Local ZIN_COMMON:ReportBase &Value = create ZIN_COMMON:ReportBase();
Local ECL_COMMON:OnlineBase &EstimatedCost = create ECL_COMMON:OnlineBase();

&Corp_Amount = 0;
&Reim_Amount = 0;
&total_amt = 0;
Local Rowset &rs = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_BUSN);

ECL_CLAIMS_BUSN.ECL_TOTAL_AMT.Value = ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value + ECL_CLAIMS_BUSN.ECL_CORPCARD_AMT.Value;
ECL_CLAIMS_BUSN.ECL_TOT_REIMBU_AMT.Value = ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value; /*KONDAL 18-04-2011*/
ECL_CLAIMS_BUSN.ECL_TOT_CLAIM_AMT.Value = ECL_CLAIMS_BUSN.ECL_TOTAL_AMT.Value;

For &i = 1 To &rs.ActiveRowCount
   &Corp_Amount = &Corp_Amount + &rs(&i).ECL_CLAIMS_BUSN.ECL_CORPCARD_AMT.Value;
   &Reim_Amount = &Reim_Amount + &rs(&i).ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value;
   &total_amt = &total_amt + &rs(&i).ECL_CLAIMS_BUSN.ECL_TOTAL_AMT.Value;
   rem &rs(&i).ECL_CLAIMS_BUSN.ECL_TOT_REIMBU_AMT.Value = &rs(&i).ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value; /*KONDAL 18-04-2011*/
End-For;

ECL_CLAIMS_HDR.ECL_TOT_CORPCD_AMT.Value = &Corp_Amount;
ECL_CLAIMS_HDR.ECL_TOT_REIMBU_AMT.Value = &Reim_Amount;
ECL_CLAIMS_HDR.ECL_TOT_CLAIM_AMT.Value = &total_amt;

ECL_CLAIMS_HDR.ECL_APV_REIMBR_AMT.Value = &Reim_Amount;
ECL_CLAIMS_HDR.ECL_APV_CORPCD_AMT.Value = &Corp_Amount;
ECL_CLAIMS_HDR.ECL_APV_CLAIM_AMT.Value = &total_amt;



If ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value = "09" Then
   &Grade = &Value.getjobfieldvalue("GRADE", ECL_CLAIMS_HDR.EMPLID.Value);
   &Limit_Amount = &EstimatedCost.GetEntitledCost(&Grade, ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value, "", "");
   rem WinMessage("&Limit_Amount : " | &Limit_Amount, 0);
   If ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT > &Limit_Amount Then
      WinMessage("Your are eligible for a Mobile Entitilement amount of Rs : " | &Limit_Amount | "/-. To avoide deviation of your expense request, please ensure that sum of Rental Amount and Office Calls is less the Rs. " | &Limit_Amount | "/-.", 0);
      HR_LBL_WRK.LANG_NATIVE_LBL.Value = MsgGetExplainText(27000, 105, "", ""); /*Layeeque*/
   End-If;
End-If;
<*
Local Rowset &RS_Claims_Buss = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_BUSN);
&Count_Mob = 0;
For &i = 1 To &RS_Claims_Buss.ActiveRowCount
   If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value = "09" Then
      &Grade = &Value.getjobfieldvalue("GRADE", ECL_CLAIMS_HDR.EMPLID.Value);
      &Limit_Amount = &EstimatedCost.GetEntitledCost(&Grade, &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value, "", "");
      If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value > &Limit_Amount Then
         &Count_Mob = &Count_Mob + 1;
      End-If;
   End-If;
End-For;

If &Count_Mob > 0 Or
      &DateDeviationFlag = "Y" Then
   ECL_CLAIMS_HDR.COMMENTS.Visible = True; /* ABHINAV*/
Else
   ECL_CLAIMS_HDR.COMMENTS.Visible = False; /* ABHINAV*/
   ECL_CLAIMS_HDR.COMMENTS.Value = ""; /* ABHINAV*/
End-If;
*>

If &DeviationFlag = "Y" Then
   ECL_CLAIMS_HDR.COMMENTS.Visible = True;
   HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
   HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 227, "", ""); /*Layeeque*/
Else
   If &DeviationFlag = "N" Then
      HR_LBL_WRK.LANG_TRANS_LBL.Visible = False;
      ECL_CLAIMS_HDR.COMMENTS.Visible = False;
   End-If;
End-If;

import ZIN_COMMON:*;
import ECL_COMMON:*;

Local ZIN_COMMON:ReportBase &Value = create ZIN_COMMON:ReportBase();
Local ECL_COMMON:OnlineBase &EstimatedCost = create ECL_COMMON:OnlineBase();

&Corp_Amount = 0;
&Reim_Amount = 0;
&total_amt = 0;
Local Rowset &rs = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_BUSN);

ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value = ECL_CLAIMS_BUSN.ECL_RENT_AMT.Value + ECL_CLAIMS_BUSN.ECL_OFFICIAL_CALLS.Value; /* kondal 18-04-2011*/
ECL_CLAIMS_BUSN.ECL_TOTAL_AMT.Value = ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value + ECL_CLAIMS_BUSN.ECL_CORPCARD_AMT.Value;

ECL_CLAIMS_BUSN.ECL_TOT_REIMBU_AMT.Value = ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value;
ECL_CLAIMS_BUSN.ECL_TOT_CLAIM_AMT.Value = ECL_CLAIMS_BUSN.ECL_TOTAL_AMT.Value;

For &i = 1 To &rs.ActiveRowCount
   &Corp_Amount = &Corp_Amount + &rs(&i).ECL_CLAIMS_BUSN.ECL_CORPCARD_AMT.Value;
   &Reim_Amount = &Reim_Amount + &rs(&i).ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value;
   &total_amt = &total_amt + &rs(&i).ECL_CLAIMS_BUSN.ECL_TOTAL_AMT.Value;
End-For;

ECL_CLAIMS_HDR.ECL_TOT_CORPCD_AMT.Value = &Corp_Amount;
ECL_CLAIMS_HDR.ECL_TOT_REIMBU_AMT.Value = &Reim_Amount;
ECL_CLAIMS_HDR.ECL_TOT_CLAIM_AMT.Value = &total_amt;

ECL_CLAIMS_HDR.ECL_APV_REIMBR_AMT.Value = &Reim_Amount;
ECL_CLAIMS_HDR.ECL_APV_CORPCD_AMT.Value = &Corp_Amount;
ECL_CLAIMS_HDR.ECL_APV_CLAIM_AMT.Value = &total_amt;

If ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value = "09" Then
   &Grade = &Value.getjobfieldvalue("GRADE", ECL_CLAIMS_HDR.EMPLID.Value);
   &Limit_Amount = &EstimatedCost.GetEntitledCost(&Grade, ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value, "", "");
   If ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value > &Limit_Amount Then
      WinMessage("Your are eligible for a Mobile Entitilement amount of Rs : " | &Limit_Amount | "/-. To avoide deviation of your expense request, please ensure that sum of Rental Amount and Office Calls is less the Rs. " | &Limit_Amount | "/-.", 0);
      HR_LBL_WRK.LANG_NATIVE_LBL.Value = MsgGetExplainText(27000, 105, "", ""); /*Layeeque*/
   Else
      HR_LBL_WRK.LANG_NATIVE_LBL.Value = "";
      HR_LBL_WRK.LANG_NATIVE_LBL.DisplayOnly = True;
   End-If;
End-If;

/*************************** ABHINAV ***********************************/
Local Rowset &RS_Claims_Buss = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_BUSN);
&Count_Mob = 0;
For &i = 1 To &RS_Claims_Buss.ActiveRowCount
   If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value = "09" Then
      &Grade = &Value.getjobfieldvalue("GRADE", ECL_CLAIMS_HDR.EMPLID.Value);
      &Limit_Amount = &EstimatedCost.GetEntitledCost(&Grade, &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value, "", "");
      If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value > &Limit_Amount Then
         &Count_Mob = &Count_Mob + 1;
      End-If;
   End-If;
End-For;

&DevFlag = 0;

For &i = 1 To &RS_Claims_Buss.ActiveRowCount
   If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value <> "" Then
      If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value < (%Date - 90) And
            &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value <> "" Then
         &DevFlag = &DevFlag + 1;
      End-If;
   End-If;
End-For;

/*************************** ABHINAV ***********************************/
/*Code Commented By Nishanth*/
<*If &Count_Mob > 0 Then
   HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
   ECL_CLAIMS_HDR.COMMENTS.Visible = True;
   If &DevFlag > 0 Then
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 228, "", ""); /*Layeeque*/
   Else
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 227, "", ""); /*Layeeque*/
   End-If;
Else
   If &DevFlag > 0 Then
      ECL_CLAIMS_HDR.COMMENTS.Visible = True;
      HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 217, "", ""); /*Layeeque*/
   Else
      HR_LBL_WRK.LANG_TRANS_LBL.Visible = False;
      ECL_CLAIMS_HDR.COMMENTS.Visible = False;
   End-If;
End-If;
*>
/*Nishanth*/
&fromflag = 0;

For &i = 1 To &RS_Claims_Buss.ActiveRowCount
   If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value <> "" Then
      If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value < (%Date - 120) And
            &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value <> "" Then
         &fromflag = &fromflag + 1;
      End-If;
   End-If;
End-For;
/*Nishanth-120 Days Deviation Check */

If &Count_Mob > 0 Then
   HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
   ECL_CLAIMS_HDR.COMMENTS.Visible = True;
   HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 227, "", ""); /*Layeeque*/
   If &DevFlag > 0 Then
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 228, "", ""); /*Layeeque*/
      If &fromflag > 0 Then
         HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 253, "", ""); /*Layeeque*/
      End-If;
   End-If;
   If &fromflag > 0 Then
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 253, "", ""); /*Layeeque*/
   End-If
Else
   If &DevFlag > 0 Then
      ECL_CLAIMS_HDR.COMMENTS.Visible = True;
      HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 217, "", ""); /*Layeeque*/
      If &fromflag > 0 Then
         HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 251, "", ""); /*Nishanth*/
      End-If;
   Else
      HR_LBL_WRK.LANG_TRANS_LBL.Visible = False;
      ECL_CLAIMS_HDR.COMMENTS.Visible = False;
      If &fromflag > 0 Then
         HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
         ECL_CLAIMS_HDR.COMMENTS.Visible = True;
         HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 251, "", ""); /*Nishanth*/
      End-If;
   End-If;
End-If;
/*Nishanth*/


import ZIN_COMMON:*;
import ECL_COMMON:*;

Component number &DevFlag;

Local Rowset &BusnRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_BUSN);
Local ZIN_COMMON:ReportBase &Value = create ZIN_COMMON:ReportBase();
Local ECL_COMMON:OnlineBase &EstimatedCost = create ECL_COMMON:OnlineBase();

For &i = 1 To &BusnRowset.ActiveRowCount
   If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value > %Date Or
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value > %Date Then
      rem Error "Greater than the current date";
      Error MsgGetText(27000, 167, "Message Not Found");
   End-If;
   /*  kondal 18-04-2011 commented
   If All(&BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value, &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value) Then
      If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value = &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value Then
         rem Error "Entered From date and To Date as same";
         Error MsgGetText(27000, 168, "Message Not Found");
      Else
   If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value > &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value Then
      rem Error "From Date is Greater than the To Date";
      Error MsgGetText(27000, 169, "Message Not Found");
   End-If;
    End-If;
    End-If;*/
End-For;

For &i = 1 To &BusnRowset.ActiveRowCount
   For &j = (&i + 1) To &BusnRowset.ActiveRowCount
      If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value = &BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value Then
         If All(&BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value) Or
               All(&BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_TO_DT.Value) Then
            If &BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value <= &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value And
                  &BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value >= &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value Then
               rem Error "Invalid date";
               Error MsgGetText(27000, 170, "Message Not Found");
            End-If;
            If &BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_TO_DT.Value >= &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value And
                  &BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_TO_DT.Value <= &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value Then
               rem Error "Invalid date";
               Error MsgGetText(27000, 170, "Message Not Found");
            End-If;
         End-If;
      End-If;
   End-For;
End-For;


/*********************************90 Days Deviation ***********************************/
&DevFlag = 0;

For &i = 1 To &BusnRowset.ActiveRowCount
   If All(&BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value) Then
      If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value < (%Date - 90) And
            &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value <> "" Then
         &DevFlag = &DevFlag + 1;
      End-If;
   End-If;
End-For;

/* 90 Days Deviation Check*/


/*************************** ABHINAV ***********************************/
Local Rowset &RS_Claims_Buss = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_BUSN);
&Count_Mob = 0;
For &i = 1 To &RS_Claims_Buss.ActiveRowCount
   If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value = "09" Then
      &Grade = &Value.getjobfieldvalue("GRADE", ECL_CLAIMS_HDR.EMPLID.Value);
      &Limit_Amount = &EstimatedCost.GetEntitledCost(&Grade, &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value, "", "");
      If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value > &Limit_Amount Then
         &Count_Mob = &Count_Mob + 1;
      End-If;
   End-If;
End-For;
<*
If &Count_Mob > 0 Or
      &DateDeviationFlag = "Y" Then
   ECL_CLAIMS_HDR.COMMENTS.Visible = True; /* ABHINAV*/
Else
   ECL_CLAIMS_HDR.COMMENTS.Visible = False; /* ABHINAV*/
   ECL_CLAIMS_HDR.COMMENTS.Value = ""; /* ABHINAV*/
End-If;
*>

/*************************** ABHINAV ***********************************/

/*Nishanth - 120 Days Deviation Check - 15/11/2011*/
/* COde Commented on 15/11/2011 By Nishanth - Code BackUp*/

<*If &Count_Mob > 0 Then
   HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
   ECL_CLAIMS_HDR.COMMENTS.Visible = True;
   If &DevFlag > 0 Then
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 228, "", ""); /*Layeeque*/
   Else
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 227, "", ""); /*Layeeque*/
   End-If;
Else
   If &DevFlag > 0 Then
      ECL_CLAIMS_HDR.COMMENTS.Visible = True;
      HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 217, "", ""); /*Layeeque*/
   Else
      HR_LBL_WRK.LANG_TRANS_LBL.Visible = False;
      ECL_CLAIMS_HDR.COMMENTS.Visible = False;
   End-If;
End-If;
*>

/*Nishanth*/

&fromflag = 0;
For &f = 1 To &BusnRowset.ActiveRowCount
   If All(&BusnRowset(&f).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value) Then
      If &BusnRowset(&f).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value < (%Date - 120) And
            &BusnRowset(&f).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value <> "" Then
         &fromflag = &fromflag + 1;
      End-If;
   End-If;
End-For;


/*Nishanth-120 Days Deviation Check */

If &Count_Mob > 0 Then
   HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
   ECL_CLAIMS_HDR.COMMENTS.Visible = True;
   HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 227, "", ""); /*Layeeque*/
   If &DevFlag > 0 Then
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 228, "", ""); /*Layeeque*/
      If &fromflag > 0 Then
         HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 253, "", ""); /*Layeeque*/
      End-If;
   End-If;
   If &fromflag > 0 Then
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 253, "", ""); /*Layeeque*/
   End-If
Else
   If &DevFlag > 0 Then
      ECL_CLAIMS_HDR.COMMENTS.Visible = True;
      HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
      HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 217, "", ""); /*Layeeque*/
      If &fromflag > 0 Then
         HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 251, "", ""); /*Nishanth*/
      End-If;
   Else
      HR_LBL_WRK.LANG_TRANS_LBL.Visible = False;
      ECL_CLAIMS_HDR.COMMENTS.Visible = False;
      If &fromflag > 0 Then
         HR_LBL_WRK.LANG_TRANS_LBL.Visible = True;
         ECL_CLAIMS_HDR.COMMENTS.Visible = True;
         HR_LBL_WRK.LANG_TRANS_LBL.Value = MsgGetExplainText(27000, 251, "", ""); /*Nishanth*/
      End-If;
   End-If;
End-If;
rem WinMessage("&Count_Mob-->" | &Count_Mob | "&DevFlag-->" | &DevFlag | "&fromflag -->" | &fromflag, 0);
/*Nishanth*/

Local Rowset &STARowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_STA);

&FLD = GetRecord(Record.ECL_DERIVED).GetField(Field.ECL_STATUS);

&FLD.ClearDropDownList();

If %Menu = "ROLE_EMPLOYEE" Then
   If ECL_CLAIMS_HDR.ECL_STATUS.Value = "RT" Then
      &FLD.AddDropDownItem("RE", "ReSubmit");
   End-If;
   If ECL_CLAIMS_HDR.ECL_STATUS.Value = "QY" Then
      &FLD.AddDropDownItem("QC", "Query Cleared");
   End-If;
   If ECL_CLAIMS_HDR.ECL_STATUS.Value = "HD" Then
      &FLD.AddDropDownItem("HC", "Hold Clear");
   End-If;
End-If;

If &STARowset(&STARowset.ActiveRowCount).ECL_CLAIMS_STA.ROLENAME.Value = "Level1 Approver" Then
   If ECL_CLAIMS_HDR.ECL_STATUS.Value = "MAP" Or
         ECL_CLAIMS_HDR.ECL_STATUS.Value = "DAP" Then
      &FLD.AddDropDownItem("RC", "Received");
   Else
      &FLD.AddDropDownItem("RT", "Returned");
      &FLD.AddDropDownItem("QY", "Query");
      &FLD.AddDropDownItem("CR", "Clear");
      &FLD.AddDropDownItem("RJ", "Reject");
   End-If;
End-If;

If &STARowset(&STARowset.ActiveRowCount).ECL_CLAIMS_STA.ROLENAME.Value = "Level2 Approver" Then
   &FLD.AddDropDownItem("HD", "Hold");
   &FLD.AddDropDownItem("PT", "Post");
   &FLD.AddDropDownItem("RL", "Return to Level 1");
   &FLD.AddDropDownItem("RJ", "Reject");
End-If;


import ECL_COMMON:*;
import ZIN_COMMON:*;

Component string &Value;

Component string &DepartmentId, &BudgetAction, &ApproverRole, &ApprovalLevel, &Flag;
Component number &BackupApprovedTotalCost, &AdjustableBudgetAmount, &TailoredTravelCost;

Local ECL_COMMON:ClaimFormat &Claimformat = create ECL_COMMON:ClaimFormat();
Local ZIN_COMMON:ReportBase &FieldValue = create ZIN_COMMON:ReportBase();
Local ECL_COMMON:OnlineBase &EstimatedCost = create ECL_COMMON:OnlineBase();
Local ZIN_COMMON:ReportBase &Value1 = create ZIN_COMMON:ReportBase();
Local Rowset &STARowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_STA);
Local Rowset &RSBUSN = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_BUSN);
Local Rowset &QRYRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_QRY);

/*
If ECL_DERIVED.ECL_STATUS.Value = "QY" Or
      ECL_DERIVED.ECL_STATUS.Value = "HD" Then
   &Claimformat.Queryinsertupdate(%Menu, "QY", %OperatorId);
   For &i = 1 To &QRYRowset.ActiveRowCount
      If None(&QRYRowset(&i).ECL_CLAIMS_QRY.ECL_QSTN_CD.Value) Then
         rem Error ("Please select the Query code");
         Error MsgGetText(27000, 173, "Message Not Found");
      End-If;
   End-For;
End-If;
*/
If ECL_DERIVED.ECL_STATUS.Value = "QY" Or
      ECL_DERIVED.ECL_STATUS.Value = "HD" Then
   &Claimformat.Queryinsertupdate(%Menu, ECL_DERIVED.ECL_STATUS.Value, %OperatorId);
   For &i = 1 To &QRYRowset.ActiveRowCount
      If None(&QRYRowset(&i).ECL_CLAIMS_QRY.ECL_QSTN_CD.Value) Then
         rem Error ("Please select the Query code");
         Error MsgGetText(27000, 173, "Message Not Found");
      End-If;
   End-For;
End-If;

/*Nishanth*/

For &i = 1 To &RSBUSN.ActiveRowCount
   If None(&RSBUSN(&i).ECL_CLAIMS_BUSN.COMMENTS1.Value) Then
      Error MsgGetText(27000, 196, "Message Not Found");
   End-If;
   If &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_TOT_REIMBU_AMT.Value > &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value Then
      rem  Error "Entered Approved reimb amount is greater than the self Rreimb amount ";
      Error MsgGetText(27000, 172, "Message Not Found");
   End-If;
   If &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_TOT_CORPCD_AMT.Value > &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_CORPCARD_AMT.Value Then
      rem Error "Entered  Aproved CORPCD amount is greater than the selfCORPCD amount ";
      Error MsgGetText(27000, 171, "Message Not Found");
   End-If;
End-For;

If None(ECL_DERIVED.ECL_STATUS.Value) Then
   rem Error ("Please select the status");
   Error MsgGetText(27000, 174, "Message Not Found");
End-If;
<*
If ECL_DERIVED.ECL_STATUS.Value = "PT" Then

    /****************************************************************************************************/
   /*                Developer    :    Layeeque Abdal Palli [MphasiS]                                        */
   /*                Date        :    06-April-2011                                                        */
   /*                Descr        :    Dept Budget                                                         */
   /****************************************************************************************************/
  
   &TotalReimbursementAmount = 0;
   &TotalTravelCost = ECL_CLAIMS_HDR.ECL_TOT_CLAIM_AMT.Value;
   &AppTotalTravelCost = ECL_CLAIMS_HDR.ECL_APV_CLAIM_AMT.Value;
   &DepartmentId = &Value1.getjobfieldvalue("DEPTID", ECL_CLAIMS_HDR.EMPLID.Value);
   &InsignificantAmount = 0;
   &CorporateCardAmount = 0;
   &AppSelfReimbursementAmount = 0;
   &AppInsignificantAmount = 0;
   &AppCorporateCardAmount = 0;
   For &i = 1 To &RSBUSN.ActiveRowCount
      Evaluate &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value
         /*01    Prizes & Awards   
        02    Agents Training Expenses
        03    Vehicle Running Cost   
        04    Late Working Claim   
        05    Staff Relocation Expenses   
        06    Utility Expense   
        07    Repairs & Maintenance   
        08    Conveyance Expense       
        09    Mobile Expense   
        10    Entertainment Expense   
        11    Membership & Subscription   
        12    Seminar & Conferences   
        13    Books & Periodicals   
        14    Misc Expenses     */
      When = "01"
      When = "02"
      When = "03"
      When = "04"
      When = "05"
      When = "06"
      When = "07"
      When = "09"
      When = "11"
      When = "12"
      When = "13"
      When = "14"
         &SelfReimbursementAmount = 0;
        
         &SelfReimbursementAmount = &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value;
         &CorporateCardAmount = &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_CORPCARD_AMT.Value;
         &InsignificantAmount = &InsignificantAmount + &SelfReimbursementAmount + &CorporateCardAmount;
         &AppSelfReimbursementAmount = &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_TOT_REIMBU_AMT.Value;
         &AppCorporateCardAmount = &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_TOT_CORPCD_AMT.Value;
         &AppInsignificantAmount = &AppInsignificantAmount + &AppSelfReimbursementAmount + &AppCorporateCardAmount;
        
         Break;
      End-Evaluate;
   End-For;
  
   &TailoredTravelCost = &TotalTravelCost - &InsignificantAmount;
   &AppTailoredTravelCost = &AppTotalTravelCost - &AppInsignificantAmount;
  
   &AdjustableBudgetAmount = &AppTailoredTravelCost;
   If &AdjustableBudgetAmount <> 0 Then
     
      &BudgetAction = "A";
   End-If;
End-If;
*>

If ECL_DERIVED.ECL_STATUS.Value = "CR" Then
   For &i = 1 To &RSBUSN.ActiveRowCount
      If All(&RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value) Then
         If None(&RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_TOT_REIMBU_AMT.Value) Then
            rem Error ("Please fill the Approved Self Reimbrusement amount");
            rem Error MsgGetText(27000, 175, "Message Not Found");
         End-If;
      End-If;
      If &Value = "Y" Then
         If All(&RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_CORPCARD_AMT.Value) Then
            If None(&RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_TOT_CORPCD_AMT.Value) Then
               rem Error ("Please fill the Approved Corporate Card amount");
               rem Error MsgGetText(27000, 176, "Message Not Found");
            End-If;
         End-If;
      End-If;
     
      If All(&RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value) And
            All(&RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_TOT_REIMBU_AMT.Value) Then
         If &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_TOT_REIMBU_AMT.Value < &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value Then
            If None(&RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_REDUCE_REASON.Value) Then
               rem Error ("Please fill the Reason For Reducing Amount");
               Error MsgGetText(27000, 177, "Message Not Found");
            End-If;
         End-If;
      End-If;
     
      If &Value = "Y" Then
         If All(&RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_CORPCARD_AMT.Value) And
               All(&RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_TOT_CORPCD_AMT.Value) Then
            If &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_TOT_CORPCD_AMT.Value < &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_CORPCARD_AMT.Value Then
               If None(&RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_REDUCE_REASON.Value) Then
                  rem Error ("Please fill the Reason For Reducing Amount");
                  Error MsgGetText(27000, 177, "Message Not Found");
               End-If;
            End-If;
         End-If;
      End-If;
     
     
      /******************************************************************************************************/
      /*                Developer    :    Layeeque Abdal Palli [MphasiS]                                        */
      /*                Date        :    06-April-2011                                                        */
      /*                Descr        :    Dept Budget                                                         */
      /******************************************************************************************************/
     
      &TotalReimbursementAmount = 0;
      &TotalTravelCost = ECL_CLAIMS_HDR.ECL_TOT_CLAIM_AMT.Value;
      &AppTotalTravelCost = ECL_CLAIMS_HDR.ECL_APV_CLAIM_AMT.Value;
      &DepartmentId = &Value1.getjobfieldvalue("DEPTID", ECL_CLAIMS_HDR.EMPLID.Value);
      &InsignificantAmount = 0;
      &CorporateCardAmount = 0;
      &AppSelfReimbursementAmount = 0;
      &AppInsignificantAmount = 0;
      &AppCorporateCardAmount = 0;
     
      Evaluate &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value
         /*01    Prizes & Awards   
        02    Agents Training Expenses
        03    Vehicle Running Cost   
        04    Late Working Claim   
        05    Staff Relocation Expenses   
        06    Utility Expense   
        07    Repairs & Maintenance   
        08    Conveyance Expense       
        09    Mobile Expense   
        10    Entertainment Expense   
        11    Membership & Subscription   
        12    Seminar & Conferences   
        13    Books & Periodicals   
        14    Misc Expenses     */
      When = "01"
      When = "02"
      When = "03"
      When = "04"
      When = "05"
      When = "06"
      When = "07"
      When = "09"
      When = "11"
      When = "12"
      When = "13"
      When = "14"
         &SelfReimbursementAmount = 0;
        
         &SelfReimbursementAmount = &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value;
         &CorporateCardAmount = &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_CORPCARD_AMT.Value;
         &InsignificantAmount = &InsignificantAmount + &SelfReimbursementAmount + &CorporateCardAmount;
        
        
         &AppSelfReimbursementAmount = &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_TOT_REIMBU_AMT.Value;
         &AppCorporateCardAmount = &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_TOT_CORPCD_AMT.Value;
         &AppInsignificantAmount = &AppInsignificantAmount + &AppSelfReimbursementAmount + &AppCorporateCardAmount;
        
        
         Break;
      End-Evaluate;
   End-For;
  
  
   &TailoredTravelCost = &TotalTravelCost - &InsignificantAmount;
   &AppTailoredTravelCost = &AppTotalTravelCost - &AppInsignificantAmount;
   &AdjustableBudgetAmount = &TailoredTravelCost - &AppTailoredTravelCost;
   If &AdjustableBudgetAmount <> 0 Then
     
      &BudgetAction = "A";
   End-If;
  
  
   /********************************************* Dept Budget ******************************************/
   <*If None(ECL_CLAIMS_HDR.COMMENTS.Value) Then   /*kondal 25-04-2011*/
      rem Error ("Please fill the Remarks");
      Error MsgGetText(27000, 178, "Message Not Found");
   End-If;*>
   <*If None(ECL_CLAIMS_HDR.COMMENTS_LONG.Value) Then /*kondal 25-04-2011*/
      rem Error ("Please fill the Expence Narration");
      Error MsgGetText(27000, 196, "Message Not Found");
   End-If;*>
End-If;

If (ECL_DERIVED.ECL_STATUS.Value = "RT" Or
      ECL_DERIVED.ECL_STATUS.Value = "RJ") And
      None(ECL_CLAIMS_HDR.COMMENTS_2000.Value) Then
   Error MsgGetText(27000, 202, "Message Not Found");
End-If;

If ECL_DERIVED.ECL_STATUS.Value = "RJ" Then
  
   For &i = 1 To &STARowset.ActiveRowCount
      &ApproverOprid = &STARowset(&i).ECL_CLAIMS_STA.APPROVER_OPRID.Value;
      &RoleName = &STARowset(&i).ECL_CLAIMS_STA.ROLENAME.Value;
   End-For;
   If &RoleName = "Level2 Approver" Then
      &ApprovalLevel = "2";
      rem WinMessage("&ApprovalLevel", 0);
   End-If;
  
   If &RoleName = "Level1 Approver" Then
      &ApprovalLevel = "1";
      rem WinMessage("&ApprovalLevel", 0);
   End-If;
  
  
   If &ApprovalLevel = "1" Then
      &AdjustableBudgetAmount = 0;
      &InsignificantAmount = 0;
      &TotalTravelCost = 0;
      &TotalReimbursementAmount = 0;
     
      &TotalTravelCost = ECL_CLAIMS_HDR.ECL_TOT_CLAIM_AMT.Value;
      &DepartmentId = &Value1.getjobfieldvalue("DEPTID", ECL_CLAIMS_HDR.EMPLID.Value);
     
      For &i = 1 To &RSBUSN.ActiveRowCount
         Evaluate &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value
            /*01    Prizes & Awards   
        02    Agents Training Expenses
        03    Vehicle Running Cost   
        04    Late Working Claim   
        05    Staff Relocation Expenses   
        06    Utility Expense   
        07    Repairs & Maintenance   
        08    Conveyance Expense       
        09    Mobile Expense   
        10    Entertainment Expense   
        11    Membership & Subscription   
        12    Seminar & Conferences   
        13    Books & Periodicals   
        14    Misc Expenses     */
         When = "01"
         When = "02"
         When = "03"
         When = "04"
         When = "05"
         When = "06"
         When = "07"
         When = "09"
         When = "11"
         When = "12"
         When = "13"
         When = "14"
            &SelfReimbursementAmount = 0;
            &SelfReimbursementAmount = &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value;
            &CorporateCardAmount = &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_CORPCARD_AMT.Value;
            &InsignificantAmount = &InsignificantAmount + &SelfReimbursementAmount + &CorporateCardAmount;
            Break;
         End-Evaluate;
      End-For;
     
      &TailoredTravelCost = &TotalTravelCost - &InsignificantAmount;
      &DeptBudgetFlag = &EstimatedCost.CheckDepartmentBudget(&DepartmentId, &TailoredTravelCost);
      &AdjustableBudgetAmount = &TailoredTravelCost;
      &BudgetAction = "A";
      &Flag = "Y";
   End-If;
  
   If &ApprovalLevel = "2" Then
      &TotalReimbursementAmount = 0;
      &TotalTravelCost = ECL_CLAIMS_HDR.ECL_TOT_CLAIM_AMT.Value;
      &AppTotalTravelCost = ECL_CLAIMS_HDR.ECL_APV_CLAIM_AMT.Value;
      &DepartmentId = &Value1.getjobfieldvalue("DEPTID", ECL_CLAIMS_HDR.EMPLID.Value);
      &InsignificantAmount = 0;
      &CorporateCardAmount = 0;
      &AppSelfReimbursementAmount = 0;
      &AppInsignificantAmount = 0;
      &AppCorporateCardAmount = 0;
      For &i = 1 To &RSBUSN.ActiveRowCount
         Evaluate &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value
            /*01    Prizes & Awards   
        02    Agents Training Expenses
        03    Vehicle Running Cost   
        04    Late Working Claim   
        05    Staff Relocation Expenses   
        06    Utility Expense   
        07    Repairs & Maintenance   
        08    Conveyance Expense       
        09    Mobile Expense   
        10    Entertainment Expense   
        11    Membership & Subscription   
        12    Seminar & Conferences   
        13    Books & Periodicals   
        14    Misc Expenses     */
         When = "01"
         When = "02"
         When = "03"
         When = "04"
         When = "05"
         When = "06"
         When = "07"
         When = "09"
         When = "11"
         When = "12"
         When = "13"
         When = "14"
            rem       &SelfReimbursementAmount = 0;
            rem &SelfReimbursementAmount = &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value;
            rem &CorporateCardAmount = &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_CORPCARD_AMT.Value;
            rem &InsignificantAmount = &InsignificantAmount + &SelfReimbursementAmount + &CorporateCardAmount;
            &AppSelfReimbursementAmount = &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_TOT_REIMBU_AMT.Value;
            &AppCorporateCardAmount = &RSBUSN(&i).ECL_CLAIMS_BUSN.ECL_TOT_CORPCD_AMT.Value;
            &AppInsignificantAmount = &AppInsignificantAmount + &AppSelfReimbursementAmount + &AppCorporateCardAmount;
            Break;
         End-Evaluate;
      End-For;
     
      rem &TailoredTravelCost = &TotalTravelCost - &InsignificantAmount;
      &AppTailoredTravelCost = &AppTotalTravelCost - &AppInsignificantAmount;
     
      &AdjustableBudgetAmount = &AppTailoredTravelCost;
      &BudgetAction = "A";
      &Flag = "Y";
     
     
   End-If;
  
End-If;

ECL_CLAIMS_HDR.ECL_STATUS.Value = ECL_DERIVED.ECL_STATUS.Value;
&msg = MsgGetText(27000, 79, "", " The action once done could not be reverted.");
&Approve_Yes = WinMessage(&msg);

If &Approve_Yes = True Then
  
   DoSave();
End-If;

import ECL_COMMON:*;
import ZIN_COMMON:*;

Component string &Value;
Component boolean &Approve_Yes;
Component string &DepartmentId, &BudgetAction;
Component number &AdjustableBudgetAmount;
Component string &DelegatedApprover, &DelegateFlag, &ActualEmplid;
Component number &DevFlag;
Local ECL_COMMON:ClaimFormat &Claimformat = create ECL_COMMON:ClaimFormat();
Local ZIN_COMMON:ReportBase &Value1 = create ZIN_COMMON:ReportBase();
Local ECL_COMMON:OnlineBase &EstimatedCost = create ECL_COMMON:OnlineBase();

Local Rowset &BusnRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_BUSN);
Local Rowset &QRYRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_QRY);
Local Rowset &Rowset = CreateRowset(Record.ECL_CLAIMS_BUSN);

&DelegateFlag = "N";

For &i = 1 To &BusnRowset.ActiveRowCount
   If None(&BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value) Then
      rem Error ("Select The Claim Type");
      Error MsgGetText(27000, 179, "Message Not Found");
   End-If;
   If None(&BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value) Then
      rem Error ("Select The Expense Incurred Date From");
      Error MsgGetText(27000, 180, "Message Not Found");
   End-If;
   If None(&BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value) Then
      rem Error ("Select The Expense Incurred Date To");
      Error MsgGetText(27000, 181, "Message Not Found");
   End-If;
  
   If All(&BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value) And
         All(&BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value) Then
      If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value > &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value Then
         Error MsgGetText(27000, 169, "Message Not Found");
      End-If;
   End-If;
  
   If None(&BusnRowset(&i).ECL_CLAIMS_BUSN.COMMENTS1.Value) Then
      rem Error ("Please fill the Remarks");
      Error MsgGetText(27000, 196, "Message Not Found");
   End-If;
  
   If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value = "08" Then /*KONDAL 25-04-2011*/
      If None(&BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_LOCATION_FROM.Value) Then
         rem Error ("Please Enter The Travel From Location");
         Error MsgGetText(27000, 191, "Message Not Found");
      End-If;
      If None(&BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_LOCATION_TO.Value) Then
         rem Error ("Please Enter The Travel To Location");
         Error MsgGetText(27000, 192, "Message Not Found");
      End-If;
      If None(&BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_VEHICLE_TYPE.Value) Then
         rem Error ("Please Enter The Vehicle Type");
         Error MsgGetText(27000, 193, "Message Not Found");
      End-If;
   End-If;
  
   If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value = "04" Then /*KONDAL 25-04-2011*/
      If None(&BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_LATE_REASON.Value) Then /*KONDAL 25-04-2011*/
         rem Error ("Please Enter The Reson For Lateworking");
         Error MsgGetText(27000, 194, "Message Not Found");
      End-If;
   End-If;
  
   If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value = "10" Then /*KONDAL 25-04-2011*/
      If None(&BusnRowset(&i).ECL_CLAIMS_BUSN.PURPOSE1.Value) Then
         rem Error ("Please Enter the Purpose and Outcome");
         Error MsgGetText(27000, 199, "Message Not Found");
      End-If;
      If None(&BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_NAME.Value) Then
         rem Error ("Please Enter The Name of the Person Entertained");
         Error MsgGetText(27000, 198, "Message Not Found");
      End-If;
      If None(&BusnRowset(&i).ECL_CLAIMS_BUSN.CITY.Value) Then
         rem Error ("Please Enter the Place");
         Error MsgGetText(27000, 197, "Message Not Found");
      End-If;
      If None(&BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_BILL_NO.Value) Then
         rem Error ("Please Enter the Bill No");
         Error MsgGetText(27000, 190, "Message Not Found");
      End-If;
   End-If;
  
   If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value = "09" Then
      If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TOTAL_AMT.Value > &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_RENT_AMT.Value + &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_OFFICIAL_CALLS.Value Then
         rem Error ("Sum of Rental Amount and Office Calls is Greater than the Total Claim Amount ");
         Error MsgGetText(27000, 182, "Message Not Found");
      End-If;
      If None(&BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_RENT_AMT.Value) Then
         rem Error ("Enter The Rental");
         Error MsgGetText(27000, 183, "Message Not Found");
      End-If;
      <*If None(&BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_OFFICIAL_CALLS.Value) Then  /*KONDAL 25-04-2011*/
         rem Error ("Enter The Office Calls");
         Error MsgGetText(27000, 184, "Message Not Found");
      End-If;
      If None(&BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_PERS_CALLS.Value) Then
         rem Error ("Enter The Personal Calls");
         Error MsgGetText(27000, 185, "Message Not Found");
      End-If;*>
      If None(&BusnRowset(&i).ECL_CLAIMS_BUSN.MOBILE_PHONE.Value) Then
         rem Error ("Enter The Mobile Number");
         Error MsgGetText(27000, 186, "Message Not Found");
      End-If;
   End-If;
  
   /*Kondal 15-02-2012*/
   &Value2 = "";
   SQLExec("SELECT 'Y' FROM PSROLEUSER WHERE ROLEUSER = :1 AND ROLENAME = 'ECL_CORPORATE_CARD'", ECL_CLAIMS_HDR.EMPLID.Value, &Corp_Role);
   If &Corp_Role = "Y" Then
      /* If None(&BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CORPCARD_AMT.Value) Then
         rem Error ("Please Enter The Self CorporateCard Amount");
         Error MsgGetText(27000, 195, "Message Not Found");
      End-If;*/
   Else
      If None(&BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value) Then
         rem Error ("Enter The Self Reimbursement Amount");
         Error MsgGetText(27000, 187, "Message Not Found");
      End-If;
   End-If;
  
   If &Value = "Y" Then
      If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value <> "09" Then /*KONDAL 25-04-2011*/
         If None(&BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CORPCARD_AMT.Value) Then
            rem Error ("Please Enter The Self CorporateCard Amount");
            rem Error MsgGetText(27000, 195, "Message Not Found");
         End-If;
      End-If;
   End-If;
   <* 
   /*************************************************************************************/
   /*        Developer    :        Layeeque Abdal Palli [MphasiS]                            */
   /*        Date        :        05-April-2011                                            */
   /*        Descr        :        Deviation Check for Mobile Expense Claims                */
   /*************************************************************************************/
   If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value = "09" Then
      ECL_CLAIMS_HDR.ECL_DEVIATION.Value = "Y";
   End-If;
*>
End-For;

For &i = 1 To &BusnRowset.ActiveRowCount
   If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value > %Date Or
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value > %Date Then
      rem Error "Greater than the current date";
      Error MsgGetText(27000, 167, "Message Not Found");
   End-If;
   /* kondal 18-04-2011 Commented
   If All(&BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value) AND ALL(&BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value) Then
      If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value = &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value Then
         rem Error "Entered From date adn To Date as same";
         Error MsgGetText(27000, 168, "Message Not Found");
      Else
   If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value > &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value Then
      rem Error "From Date is Greater than the To Date";
      Error MsgGetText(27000, 169, "Message Not Found");
   End-If;
    End-If;
    End-If;*/
End-For;

For &i = 1 To &BusnRowset.ActiveRowCount
   For &j = (&i + 1) To &BusnRowset.ActiveRowCount
      If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value = &BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value Then
         If All(&BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value) Or
               All(&BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_TO_DT.Value) Then
            If &BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value <= &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value And
                  &BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value >= &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value Then
               Error MsgGetText(27000, 170, "Message Not Found");
            End-If;
            If &BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_TO_DT.Value >= &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value And
                  &BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_TO_DT.Value <= &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value Then
               Error MsgGetText(27000, 170, "Message Not Found");
            End-If;
         End-If;
      End-If;
   End-For;
End-For;

If ECL_CLAIMS_HDR.ECL_STATUS.Value = "SA" Then
   For &i = 1 To &BusnRowset.ActiveRowCount
      &Rowset.Flush();
      &Rowset.Fill("WHERE ECL_CLAIM_REQ_ID <> :1 AND EMPLID = :2 AND ECL_CATEGORY = :3 AND ECL_CLAIM_TYP = :4", &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_REQ_ID.Value, &BusnRowset(&i).ECL_CLAIMS_BUSN.EMPLID.Value, &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CATEGORY.Value, &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value);
      For &j = 1 To &Rowset.ActiveRowCount
         SQLExec("SELECT ECL_STATUS FROM PS_ECL_CLAIMS_HDR WHERE ECL_CLAIM_REQ_ID = :1 AND EMPLID = :2 AND ECL_CATEGORY = :3 ", &Rowset(&j).ECL_CLAIMS_BUSN.ECL_CLAIM_REQ_ID.Value, &Rowset(&j).ECL_CLAIMS_BUSN.EMPLID.Value, &Rowset(&j).ECL_CLAIMS_BUSN.ECL_CATEGORY.Value, &Status);
        
         If All(&Status) Then
            If &Status <> "RJ" Then
               If &Status <> "CL" Then
                 
                  rem WinMessage(&Status, 0);
                  rem WinMessage(&Status | &Rowset(&j).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value | &Rowset(&j).ECL_CLAIMS_BUSN.ECL_CLAIM_REQ_ID.Value | &Rowset(&j).ECL_CLAIMS_BUSN.EMPLID.Value | &Rowset(&j).ECL_CLAIMS_BUSN.ECL_CATEGORY.Value, 0);
                  If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value <= &Rowset(&j).ECL_CLAIMS_BUSN.ECL_TO_DT.Value And
                        &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value >= &Rowset(&j).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value Then
                     &DESCR = "";
                     rem WinMessage("1", 0);
                     SQLExec("SELECT DESCR FROM PS_ECL_CLAIM_TYP WHERE ECL_CATEGORY = :1 AND ECL_CLAIM_TYP =:2", &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CATEGORY.Value, &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value, &DESCR);
                     Error MsgGetText(27000, 211, "", &DESCR);
                  End-If;
                  If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value >= &Rowset(&j).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value And
                        &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value <= &Rowset(&j).ECL_CLAIMS_BUSN.ECL_TO_DT.Value Then
                     &DESCR = "";
                     rem WinMessage("2", 0);
                     SQLExec("SELECT DESCR FROM PS_ECL_CLAIM_TYP WHERE ECL_CATEGORY = :1 AND ECL_CLAIM_TYP = :2", &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CATEGORY.Value, &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value, &DESCR);
                     Error MsgGetText(27000, 211, "", &DESCR);
                  End-If;
               End-If;
            End-If;
         End-If;
      End-For;
   End-For;
End-If;

For &i = 1 To &QRYRowset.ActiveRowCount
   If All(&QRYRowset(&i).ECL_CLAIMS_QRY.ECL_QSTN_CD.Value) And
         None(&QRYRowset(&i).ECL_CLAIMS_QRY.COMMENTS.Value) Then
      rem Error ("Please fill the answer for the Query");
      Error MsgGetText(27000, 188, "Message Not Found");
   End-If;
End-For;

/******************************** Check for Approval Delegation ***************************************/
&DelegatedApprover = "";
&Delegation = create ECL_COMMON:OnlineBase();
&DelegationTo = &Delegation.ApprovalDelegationCheck(ECL_CLAIMS_HDR.ECL_APPROVER_ID.Value, "DC");
/******************************** Nishanth ***************************************/
/*If the Manager has delagetd his acces to reportee then that request should not come to the reportee*/

If All(&DelegationTo) Then
   If &DelegationTo = %EmployeeId Then
      &Supervisorid = &Value1.getjobfieldvalue("SUPERVISOR_ID", &ActualEmplid); /*Nishanth*/
      &DelegatedApprover = &Supervisorid;
   Else
      &DelegatedApprover = &DelegationTo;
   End-If;
   &DelegateFlag = "Y";
End-If;

If &DelegationTo = "" Then
   &DelegatedApprover = ECL_CLAIMS_HDR.ECL_APPROVER_ID.Value;
End-If;

/******************************** End - Check for Approval Delegation ***************************************/
/****************************************************************************************************/
/*                Developer    :    Layeeque Abdal Palli [MphasiS]                                        */
/*                Date        :    06-April-2011                                                        */
/*                Descr        :    Dept Budget                                                         */
/****************************************************************************************************/

&TotalReimbursementAmount = 0;
&TotalTravelCost = ECL_CLAIMS_HDR.ECL_TOT_CLAIM_AMT.Value;
&DepartmentId = &Value1.getjobfieldvalue("DEPTID", ECL_CLAIMS_HDR.EMPLID.Value);
&InsignificantAmount = 0;
&CorporateCardAmount = 0;
For &i = 1 To &BusnRowset.ActiveRowCount
   Evaluate &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value
      /*01    Prizes & Awards   
        02    Agents Training Expenses
        03    Vehicle Running Cost   
        04    Late Working Claim   
        05    Staff Relocation Expenses   
        06    Utility Expense   
        07    Repairs & Maintenance   
        08    Conveyance Expense       
        09    Mobile Expense   
        10    Entertainment Expense   
        11    Membership & Subscription   
        12    Seminar & Conferences   
        13    Books & Periodicals   
        14    Misc Expenses     */
   When = "01"
   When = "02"
   When = "03"
   When = "04"
   When = "05"
   When = "06"
   When = "07"
   When = "09"
   When = "11"
   When = "12"
   When = "13"
   When = "14"
      &SelfReimbursementAmount = 0;
      &SelfReimbursementAmount = &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value;
      &CorporateCardAmount = &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CORPCARD_AMT.Value;
      &InsignificantAmount = &InsignificantAmount + &SelfReimbursementAmount + &CorporateCardAmount;
      Break;
   End-Evaluate;
End-For;

&TailoredTravelCost = &TotalTravelCost - &InsignificantAmount;
&DeptBudgetFlag = &EstimatedCost.CheckDepartmentBudget(&DepartmentId, &TailoredTravelCost);
&AdjustableBudgetAmount = &TailoredTravelCost;

&BudgetAction = "D";
If &DeptBudgetFlag = "Y" Then
   Error MsgGet(27000, 52, "Message Not Found");
End-If;

/********************************************* Dept Budget ******************************************/
<*
If None(ECL_CLAIMS_HDR.COMMENTS.Value) Then
   rem Error ("Please fill the Remarks");
   Error MsgGetText(27000, 178, "Message Not Found");
End-If;
*>
/*90 Days Deviation Check for any Claim type based on the Expense Incured from Date*/
/****/
Local Rowset &RS_Claims_Buss = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_BUSN);
&Count_Mob = 0;
For &i = 1 To &RS_Claims_Buss.ActiveRowCount
   If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value = "09" Then
      &Grade = &Value1.getjobfieldvalue("GRADE", ECL_CLAIMS_HDR.EMPLID.Value);
      &Limit_Amount = &EstimatedCost.GetEntitledCost(&Grade, &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value, "", "");
      If &RS_Claims_Buss(&i).ECL_CLAIMS_BUSN.ECL_REIMBURSE_AMT.Value > &Limit_Amount Then
         &Count_Mob = &Count_Mob + 1;
         rem WinMessage(&Count_Mob, 0);
      End-If;
   End-If;
End-For;
/*90 Days Deviation Check for any Claim type based on the Expense Incured To Date - Start */
&DevFlag = 0;

For &i = 1 To &BusnRowset.ActiveRowCount
   If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value < (%Date - 90) And
         &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value <> "" Then
      &DevFlag = &DevFlag + 1;
   End-If;
End-For;
/*90 Days Deviation Check for any Claim type based on the Expense Incured To Date - Ends -Nishanth*/
/*120 Days Deviation Check for any Claim type based on the Expense Incured From Date - Start - Nishanth - 16/11/2011 */
&fromflag = 0;

For &f = 1 To &RS_Claims_Buss.ActiveRowCount
   If &RS_Claims_Buss(&f).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value < (%Date - 120) And
         &RS_Claims_Buss(&f).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value <> "" Then
      &fromflag = &fromflag + 1;
   End-If;
End-For;
/*120 Days Deviation Check for any Claim type based on the Expense Incured From Date -End -  Nishanth - 16/11/2011*/
/*************************** ABHINAV ***********************************/

If &Count_Mob > 0 Or
      &DevFlag > 0 Or
      &fromflag > 0 Then
   ECL_CLAIMS_HDR.ECL_DEVIATION.Value = "Y";
Else
   ECL_CLAIMS_HDR.ECL_DEVIATION.Value = "";
End-If;




If ECL_CLAIMS_HDR.ECL_STATUS.Value = "RT" Then
   ECL_CLAIMS_HDR.ECL_STATUS.Value = "RE";
End-If;

If ECL_CLAIMS_HDR.ECL_STATUS.Value = "QY" Then
   ECL_CLAIMS_HDR.ECL_STATUS.Value = "QC";
   &Claimformat.Queryinsertupdate(%Menu, ECL_DERIVED.ECL_STATUS.Value, %OperatorId);
End-If;
/*
If ECL_CLAIMS_HDR.ECL_STATUS.Value = "HD" Then
   ECL_CLAIMS_HDR.ECL_STATUS.Value = "HC";
   &Claimformat.Queryinsertupdate(%Menu, "QC", %OperatorId);
End-If;
*/
If ECL_CLAIMS_HDR.ECL_STATUS.Value = "HD" Then
   ECL_CLAIMS_HDR.ECL_STATUS.Value = "HC";
   &Claimformat.Queryinsertupdate(%Menu, ECL_CLAIMS_HDR.ECL_STATUS.Value, %OperatorId);
End-If;

rem If %EmployeeId = ECL_CLAIMS_HDR.EMPLID.Value And;
If &ActualEmplid = ECL_CLAIMS_HDR.EMPLID.Value And
      ECL_CLAIMS_HDR.ECL_STATUS.Value = "SA" Then
   If ECL_CLAIMS_HDR.ECL_CHECK_FLG.Value = "Y" Then
      ECL_CLAIMS_HDR.ECL_STATUS.Value = "MAP";
   Else
      ECL_CLAIMS_HDR.ECL_STATUS.Value = "SB";
   End-If;
End-If;

/********Mandatory reason if policy deviated - ABHINAV ********/
If ECL_CLAIMS_HDR.COMMENTS.Visible = True And
      ECL_CLAIMS_HDR.COMMENTS.Value = "" Then
   Error (MsgGetText(27000, 221, "", ""));
End-If;
/**********************END*************************************/



&MSG = MsgGetText(27000, 76, "", " The action once done could not be reverted.");
&Approve_Yes = WinMessage(&MSG);

If &Approve_Yes = True Then
   DoSave();
End-If;





app package

class ClaimFormat
   method ClaimFormat();
   method TravelFormat(&Menu As string);
   method ReturnQueryTravelFormat(&Menu As string, &Status As string);
   method Queryinsertupdate(&Menu As string, &Status As string, &Oprid As string);
   method Queryshowhide(&Menu As string, &Status As string);
   method QueryDelete(&Menu As string, &Status As string);
   method ViewTravelFormat(&Component As string);
   method GridColumnTravelFormat();
   method DisplayTravelFormat();
end-class;

method ClaimFormat
end-method;

method TravelFormat
   /+ &Menu as String +/
  
   Local Rowset &TrvlSTARowset = GetLevel0()(1).GetRowset(Scroll.ECL_TRAVEL_STA);
   Local Rowset &ClSumRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_SUMM);
   Local Rowset &TrotRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_TROT);
   Local Rowset &TrvlRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_TRAG_VW);
   Local Rowset &CreditRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_CREDTVW);
   Local Rowset &BTCCarRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_BTC_VW);
   Local Rowset &BTCCarCredit = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_BTCR_VW);
   Local Rowset &EMHRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_EMH_VW);
   Local Rowset &GuestRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_GUH_VW);
   Local Rowset &SelfRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_SELF_VW);
   Local Rowset &BTCHotelRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_BTCH_VW);
   Local Rowset &BTCHotelCredit = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_BTHC_VW);
   Local Rowset &SWRRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_STR_VW);
   Local Rowset &QRYRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_QRY);
   Local Rowset &ClaimSTARowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_STA);
   Local Rowset &EmpRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_EH_VW); /*Nishanth*/
   Local number &i;
   Local Record &HdrRec = GetRecord(Record.ECL_CLAIMS_HDR);
   Local boolean &Travel, &SelfTravel, &BTCCar, &BTCHotel, &Guest, &Emphotel; /*Nishanth*/
  
   If None(&TrvlSTARowset(1).ECL_TRAVEL_STA.ROLEUSER.Value) Then
      &TrvlSTARowset.HideAllRows();
   End-If;
  
   If None(&TrvlRowset(1).ECL_CLM_TRAG_VW.ECL_TRVL_REQ_ID.Value) Then
      &TrvlRowset.HideAllRows();
   End-If;
  
   If None(&CreditRowset(1).ECL_CLM_CREDTVW.ECL_TRVL_REQ_ID.Value) Then
      &CreditRowset.HideAllRows();
   End-If;
  
   If None(&BTCCarRowset(1).ECL_CLM_BTC_VW.ECL_TRVL_REQ_ID.Value) Then
      &BTCCarRowset.HideAllRows();
   End-If;
  
   If None(&BTCCarCredit(1).ECL_CLM_BTCR_VW.ECL_TRVL_REQ_ID.Value) Then
      &BTCCarCredit.HideAllRows();
   End-If;
  
   If None(&EMHRowset(1).ECL_CLM_EMH_VW.ECL_TRVL_REQ_ID.Value) Then
      &EMHRowset.HideAllRows();
   End-If;
  
   If None(&SelfRowset(1).ECL_CLM_SELF_VW.ECL_TRVL_REQ_ID.Value) Then
      &SelfRowset.HideAllRows();
   End-If;
  
   If None(&GuestRowset(1).ECL_CLM_GUH_VW.ECL_TRVL_REQ_ID.Value) Then
      &GuestRowset.HideAllRows();
   End-If;
  
   If None(&BTCHotelRowset(1).ECL_CLM_BTCH_VW.ECL_TRVL_REQ_ID.Value) Then
      &BTCHotelRowset.HideAllRows();
   End-If;
  
   If None(&BTCHotelCredit(1).ECL_CLM_BTHC_VW.ECL_TRVL_REQ_ID.Value) Then
      &BTCHotelCredit.HideAllRows();
   End-If;
  
   If None(&SWRRowset(1).ECL_CLM_STR_VW.ECL_TRVL_REQ_ID.Value) Then
      &SWRRowset.HideAllRows();
   End-If;
  
   If None(&ClSumRowset(1).ECL_CLAIMS_SUMM.ECL_TRVL_REQ_ID.Value) Then
      &ClSumRowset.HideAllRows();
   End-If;
   /*Nishanth*/
   If None(&EmpRowset(1).ECL_CLM_EH_VW.ECL_TRVL_REQ_ID.Value) Then
      &EmpRowset.HideAllRows();
   End-If;
   /*Nishanth*/
  
   For &i = 1 To &SelfRowset.ActiveRowCount
     
      If None(&SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TICK_STATUS.Value) Then
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TRAIN_PLNE_NUM.DisplayOnly = True;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TRAIN_PLNE_NAM.DisplayOnly = True;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_PNR_NUMBER.DisplayOnly = True;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TICKET_COST.DisplayOnly = True;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_REIMBURSE_AMT.DisplayOnly = True;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_CANCEL_TYPE.DisplayOnly = True;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_CANCEL_DT.DisplayOnly = True;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_CANCEL_CHARGE.DisplayOnly = True;
      End-If;
      If None(&SelfRowset(&i).ECL_CLM_SELF_VW.ECL_CANCEL_TYPE.Value) Then
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_CANCEL_CHARGE.DisplayOnly = True;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_CANCEL_DT.DisplayOnly = True;
      End-If;
      If &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_CANCEL_TYPE.Value = "NR" Then
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_CANCEL_CHARGE.DisplayOnly = True;
      End-If;
      If &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TICK_STATUS.Value = "NA" Or
            &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TICK_STATUS.Value = "RCE" Then
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TRAIN_PLNE_NUM.DisplayOnly = True;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TRAIN_PLNE_NAM.DisplayOnly = True;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_PNR_NUMBER.DisplayOnly = True;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TICKET_COST.DisplayOnly = True;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_REIMBURSE_AMT.DisplayOnly = True;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_CANCEL_TYPE.DisplayOnly = True;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_CANCEL_DT.DisplayOnly = True;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_CANCEL_CHARGE.DisplayOnly = True;
      End-If;
     
      If &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TICK_STATUS.Value = "CB" Then
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TRAIN_PLNE_NUM.DisplayOnly = False;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TRAIN_PLNE_NAM.DisplayOnly = False;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_PNR_NUMBER.DisplayOnly = False;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TICKET_COST.DisplayOnly = False;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_REIMBURSE_AMT.DisplayOnly = False;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_CANCEL_TYPE.DisplayOnly = False;
      End-If;
     
      If &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TICK_STATUS.Value = "IN" Then
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TRAIN_PLNE_NUM.DisplayOnly = False;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TRAIN_PLNE_NAM.DisplayOnly = False;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_PNR_NUMBER.DisplayOnly = False;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TICKET_COST.DisplayOnly = False;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_REIMBURSE_AMT.DisplayOnly = False;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_CANCEL_TYPE.DisplayOnly = True;
      End-If;
   End-For;
  
   /* Hide/Unhide the deviation column in the travel agent grid */
   &Travel = True;
   For &i = 1 To &TrvlRowset.ActiveRowCount
      If &TrvlRowset(&i).ECL_CLM_TRAG_VW.ECL_ESTIMATED_COST.Value < &TrvlRowset(&i).ECL_CLM_TRAG_VW.ECL_TOT_TCKT_COST.Value Then
         &Travel = False;
      End-If;
   End-For;
  
   If &Travel = True Then
      REM GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_TRAG_VW").GetColumn("TRAGENT_DEVIATE").Visible = False;
   End-If;
  
   /* Hide/Unhide the deviation column in the self booking grid */
   &SelfTravel = True;
   For &i = 1 To &SelfRowset.ActiveRowCount
      If &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_ESTIMATED_COST.Value < &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TOT_TCKT_COST.Value Then
         &SelfTravel = False;
      End-If;
   End-For;
  
   If &SelfTravel = True Then
      REM  GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_SELF_VW").GetColumn("SELF_DEVIATE").Visible = False;
   End-If;
  
   /* Hide/Unhide the deviation column in the BTC car booking grid */
   &BTCCar = True;
   For &i = 1 To &BTCCarRowset.ActiveRowCount
      If &BTCCarRowset(&i).ECL_CLM_BTC_VW.ECL_ESTIMATED_COST.Value < &BTCCarRowset(&i).ECL_CLM_BTC_VW.ECL_TOT_TCKT_COST.Value Then
         &BTCCar = False;
      End-If;
   End-For;
  
   If &BTCCar = True Then
      REM  GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_BTC_VW").GetColumn("BTCCAR_DEVIATE").Visible = False;
   End-If;
  
   /* Hide/Unhide the deviation column in the BTC hotel booking grid */
   &BTCHotel = True;
   For &i = 1 To &BTCHotelRowset.ActiveRowCount
      If &BTCHotelRowset(&i).ECL_CLM_BTCH_VW.ECL_ESTIMATED_COST.Value < &BTCHotelRowset(&i).ECL_CLM_BTCH_VW.ECL_TOT_TCKT_COST.Value Then
         &BTCHotel = False;
      End-If;
   End-For;
  
   If &BTCHotel = True Then
      REM GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_BTCH_VW").GetColumn("BTCHOTEL_DEVIATE").Visible = False;
   End-If;
  
   /* Hide/Unhide the deviation column in the BTC hotel booking grid */
   &Guest = True;
   For &i = 1 To &GuestRowset.ActiveRowCount
      If &GuestRowset(&i).ECL_CLM_GUH_VW.ECL_ESTIMATED_COST.Value < &GuestRowset(&i).ECL_CLM_GUH_VW.ECL_TOT_TCKT_COST.Value Then
         &Guest = False;
      End-If;
   End-For;
  
   If &Guest = True Then
      REM GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_GUH_VW").GetColumn("GUEST_DEVIATE").Visible = False;
   End-If;
  
   /*Nishanth*/
   /* Hide/Unhide the deviation column in the Empanelled Hotel grid */
   &Emphotel = True;
   For &i = 1 To &EmpRowset.ActiveRowCount
      If &EmpRowset(&i).ECL_CLM_EH_VW.ECL_ESTIMATED_COST.Value < &EmpRowset(&i).ECL_CLM_EH_VW.ECL_TOT_TCKT_COST.Value Then
         &Emphotel = False;
      End-If;
   End-For;
  
   If &Emphotel = True Then
      REM GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_GUH_VW").GetColumn("GUEST_DEVIATE").Visible = False;
   End-If;
   /*Nishanth*/
  
  
   If &Menu = "ROLE_EMPLOYEE" Then
      REM &ClaimSTARowset.HideAllRows();
   End-If;
  
   <*If &Menu = "ROLE_EMPLOYEE" Then
      &ClaimSTARowset.HideAllRows();
      REM &HdrRec.ECL_TOT_CORPCD_AMT.DisplayOnly = True;
      REM &HdrRec.ECL_TOT_REIMBU_AMT.DisplayOnly = True;
      REM &HdrRec.ECL_AMT_PAY_EMPL.DisplayOnly = True;
      REM &HdrRec.ECL_TOTAL_EXPENSE.DisplayOnly = True;
      REM &HdrRec.ECL_TOT_CLAIM_AMT.DisplayOnly = True;
   End-If;

    If &Menu = "ROLE_MANAGER" Then
      &HdrRec.ECL_AMT_PAY_EMPL.DisplayOnly = True;
      &HdrRec.ECL_TOTAL_EXPENSE.DisplayOnly = True;
      &HdrRec.ECL_TOT_CLAIM_AMT.DisplayOnly = True;
   End-If;
  
   If &Menu = "ECLAIMS_MANAGE" Then
      &HdrRec.ECL_AMT_PAY_EMPL.DisplayOnly = False;
      &HdrRec.ECL_TOTAL_EXPENSE.DisplayOnly = False;
      &HdrRec.ECL_TOT_CLAIM_AMT.DisplayOnly = False;
   End-If; *> /*To be removed after UAT-Clarification*/
  
   Evaluate &Menu
   When = "ROLE_MANAGER"
   When = "ECLAIMS_MANAGE"
     
      For &i = 1 To &TrotRowset.ActiveRowCount
         &TrotRowset(&i).ECL_CLAIMS_TROT.ATTACHDELETE.Visible = False;
         &TrotRowset(&i).ECL_CLAIMS_TROT.ATTACHADD.Visible = False;
      End-For;
      <*
      For &i = 1 To &TrvlSTARowset.ActiveRowCount
         &TrvlSTARowset(&i).ECL_TRAVEL_STA.ECL_FEEDBACK.DisplayOnly = True;
      End-For;
     
      For &i = 1 To &SelfRowset.ActiveRowCount
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TICK_STATUS.DisplayOnly = True;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TRAIN_PLNE_NUM.DisplayOnly = True;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TRAIN_PLNE_NAM.DisplayOnly = True;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_PNR_NUMBER.DisplayOnly = True;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_ESTIMATED_COST.DisplayOnly = True;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TICKET_COST.DisplayOnly = True;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_REIMBURSE_AMT.DisplayOnly = True;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_CORPCARD_AMT.DisplayOnly = True;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_CANCEL_TYPE.DisplayOnly = True;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_CANCEL_DT.DisplayOnly = True;
         &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_CANCEL_CHARGE.DisplayOnly = True;
      End-For;
     
      For &i = 1 To &EMHRowset.ActiveRowCount
         &EMHRowset(&i).ECL_CLM_EMH_VW.ECL_HOTEL_NAME.DisplayOnly = True;
         &EMHRowset(&i).ECL_CLM_EMH_VW.ECL_CHECKIN_DT.DisplayOnly = True;
         &EMHRowset(&i).ECL_CLM_EMH_VW.ECL_CHECKIN_TIME.DisplayOnly = True;
         &EMHRowset(&i).ECL_CLM_EMH_VW.ECL_CHECKOUT_TIME.DisplayOnly = True;
         &EMHRowset(&i).ECL_CLM_EMH_VW.ECL_ESTIMATED_COST.DisplayOnly = True;
         &EMHRowset(&i).ECL_CLM_EMH_VW.ECL_DAYS_COUNT.DisplayOnly = True;
         &EMHRowset(&i).ECL_CLM_EMH_VW.ECL_TICKET_COST.DisplayOnly = True;
         &EMHRowset(&i).ECL_CLM_EMH_VW.ECL_CORPCARD_AMT.DisplayOnly = True;
         &EMHRowset(&i).ECL_CLM_EMH_VW.ECL_REIMBURSE_AMT.DisplayOnly = True;
         &EMHRowset(&i).ECL_CLM_EMH_VW.ECL_TOT_TCKT_COST.DisplayOnly = True;
         &EMHRowset(&i).ECL_CLM_EMH_VW.ECL_TRVL_AGNT_BILL.DisplayOnly = True;
      End-For;
     
      For &i = 1 To &SWRRowset.ActiveRowCount
         &SWRRowset(&i).ECL_CLM_STR_VW.CITY.DisplayOnly = True;
         &SWRRowset(&i).ECL_CLM_STR_VW.ECL_CHECKIN_DT.DisplayOnly = True;
         &SWRRowset(&i).ECL_CLM_STR_VW.ECL_CHECKOUT_DT.DisplayOnly = True;
         &SWRRowset(&i).ECL_CLM_STR_VW.ECL_DAYS_COUNT.DisplayOnly = True;
         &SWRRowset(&i).ECL_CLM_STR_VW.ECL_TICKET_COST.DisplayOnly = True;
         &SWRRowset(&i).ECL_CLM_STR_VW.ECL_TOT_TCKT_COST.DisplayOnly = True;
      End-For;
     
      If None(&TrotRowset(1).ECL_CLAIMS_TROT.ECL_CLAIM_TYP.Value) Then
         &TrotRowset.HideAllRows();
      End-If;
     
      &TrotRowset.InsertEnabled = False;
      &TrotRowset.DeleteEnabled = False;
     
      For &i = 1 To &TrotRowset.ActiveRowCount
         &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_CLAIM_TYP.DisplayOnly = True;
         &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_FROM_DT.DisplayOnly = True;
         &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_TO_DT.DisplayOnly = True;
         &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_GL_CODE.DisplayOnly = True;
         &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_REQUEST_DT.DisplayOnly = True;
         &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_REIMBURSE_AMT.DisplayOnly = True;
         &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_CORPCARD_AMT.DisplayOnly = True;
         &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_TOTAL_AMT.DisplayOnly = True;
         &TrotRowset(&i).ECL_CLAIMS_TROT.COMMENTS1.DisplayOnly = True;
         &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_NOOF_PERSON.DisplayOnly = True;
         &TrotRowset(&i).ECL_CLAIMS_TROT.PURPOSE1.DisplayOnly = True;
         &TrotRowset(&i).ECL_CLAIMS_TROT.COMPANY_DESCR.DisplayOnly = True;
         &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_NAME.DisplayOnly = True;
         &TrotRowset(&i).ECL_CLAIMS_TROT.CITY.DisplayOnly = True;
         &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_BILL_NO.DisplayOnly = True;
         &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_LOCATION_FROM.DisplayOnly = True;
         &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_LOCATION_TO.DisplayOnly = True;
         &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_VEHICLE_TYPE.DisplayOnly = True;
         &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_KM_TRAVEL.DisplayOnly = True;
         &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_DETAIL1.DisplayOnly = True;
         &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_DETAIL2.DisplayOnly = True;
         &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_DETAIL3.DisplayOnly = True;
         &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_DETAIL4.DisplayOnly = True;
         &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_DETAIL5.DisplayOnly = True;
         &TrotRowset(&i).ECL_CLAIMS_TROT.ATTACHDELETE.Visible = False;
         &TrotRowset(&i).ECL_CLAIMS_TROT.ATTACHADD.Visible = False;
        
      End-For;
*>
      %This.DisplayTravelFormat();
      %This.GridColumnTravelFormat();
     
      Break;
   When-Other
      Break
   End-Evaluate;
  
end-method;

method ReturnQueryTravelFormat
   /+ &Menu as String, +/
   /+ &Status as String +/
  
   If %Menu = "ROLE_EMPLOYEE" Then
      If &Status = "RT" Or
            &Status = "QY" Or
            &Status = "HD" Then
         HR_LINK_WRK.SUBMIT_PB.Enabled = False;
         %This.DisplayTravelFormat();
      End-If;
   End-If;
  
end-method;

method ViewTravelFormat
   /+ &Component as String +/
   <*Local Rowset &TrotRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_TROT);
   Local Rowset &TrvlRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_TRAG_VW);
   Local Rowset &CreditRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_CREDTVW);
   Local Rowset &BTCCarRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_BTC_VW);
   Local Rowset &BTCCarCredit = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_BTCR_VW);
   Local Rowset &EMHRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_EMH_VW);
   Local Rowset &GuestRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_GUH_VW);
   Local Rowset &SelfRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_SELF_VW);
   Local Rowset &BTCHotelRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_BTCH_VW);
   Local Rowset &BTCHotelCredit = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_BTHC_VW);
   Local Rowset &SWRRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_STR_VW);*>
   Local Rowset &QRYRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_QRY);
   Local Record &HdrRec = GetRecord(Record.ECL_CLAIMS_HDR);
   Local number &i;
  
   If &Component = "ECL_CLAIMS_VIEW" Then
      &HdrRec.COMMENTS_LONG.DisplayOnly = True;
      &HdrRec.ECL_APV_PAY_EMPL.DisplayOnly = True;
      &HdrRec.ECL_APV_CORPCD_AMT.DisplayOnly = True;
     
      &QRYRowset.InsertEnabled = False;
      &QRYRowset.DeleteEnabled = False;
     
      For &i = 1 To &QRYRowset.ActiveRowCount
         &QRYRowset(&i).ECL_CLAIMS_QRY.ECL_QSTN_CD.DisplayOnly = True;
         &QRYRowset(&i).ECL_CLAIMS_QRY.COMMENTS.DisplayOnly = True;
      End-For;
      %This.DisplayTravelFormat();
      %This.GridColumnTravelFormat();
   End-If;
  
   If &Component = "ECL_CLAIMS_TRVL" Then
      If (%Menu = "ROLE_EMPLOYEE" Or
            %Menu = "ROLE_MANAGER") Then
         ECL_CLAIMS_HDR.ECL_APV_PAY_EMPL.Visible = False;
         ECL_CLAIMS_HDR.ECL_APV_CORPCD_AMT.Visible = False;
         ECL_CLAIMS_HDR.ECL_APV_EXPENSE.Visible = False;
         ECL_CLAIMS_HDR.ECL_APV_CLAIM_AMT.Visible = False;
      End-If;
   End-If;
end-method;

method Queryinsertupdate
   /+ &Menu as String, +/
   /+ &Status as String, +/
   /+ &Oprid as String +/
   Local Rowset &QRYRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_QRY);
   Local number &i;
   Local number &Seq = 1;
   If &Menu = "ECLAIMS_MANAGE" Then
     
      For &i = 1 To &QRYRowset.ActiveRowCount
         &QRYRowset(&i).ECL_CLAIMS_QRY.ECL_CATEGORY.Value = ECL_CLAIMS_HDR.ECL_CATEGORY.Value;
         &QRYRowset(&i).ECL_CLAIMS_QRY.SEQNO.Value = &Seq;
         If &QRYRowset(&i).ECL_CLAIMS_QRY.ECL_STATUS.Value = "" Then
            &QRYRowset(&i).ECL_CLAIMS_QRY.ECL_STATUS.Value = &Status;
            &QRYRowset(&i).ECL_CLAIMS_QRY.ECL_REQUEST_DT.Value = %Date;
            &QRYRowset(&i).ECL_CLAIMS_QRY.ECL_RAISED_ID.Value = &Oprid;
            &QRYRowset(&i).ECL_CLAIMS_QRY.LASTUPDOPRID.Value = &Oprid;
            &QRYRowset(&i).ECL_CLAIMS_QRY.LASTUPDDTTM.Value = %Datetime;
         End-If;
         &Seq = &Seq + 1;
      End-For;
     
   End-If;
  
   If &Menu = "ROLE_EMPLOYEE" Then
      For &i = 1 To &QRYRowset.ActiveRowCount
         &QRYRowset(&i).ECL_CLAIMS_QRY.ECL_STATUS.Value = &Status;
      End-For;
   End-If;
  
end-method;

method Queryshowhide
   /+ &Menu as String, +/
   /+ &Status as String +/
   Local Rowset &QRYRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_QRY);
   Local number &i;
   /*
   If All(&QRYRowset(1).ECL_CLAIMS_QRY.ECL_QSTN_CD.Value) Then
      &QRYRowset.ShowAllRows();
   Else
      &QRYRowset.HideAllRows();
   End-If;
   */
   For &i = 1 To &QRYRowset.ActiveRowCount
     
      If None(&QRYRowset(&i).ECL_CLAIMS_QRY.ECL_QSTN_CD.Value) Then
         HideRow(Record.ECL_CLAIMS_QRY, &i);
      End-If;
   End-For;
  
   If &Menu = "ROLE_EMPLOYEE" Then
     
      &QRYRowset.InsertEnabled = False;
      &QRYRowset.DeleteEnabled = False;
     
      For &i = 1 To &QRYRowset.ActiveRowCount
         &QRYRowset(&i).ECL_CLAIMS_QRY.ECL_QSTN_CD.DisplayOnly = True;
         If &QRYRowset(&i).ECL_CLAIMS_QRY.ECL_STATUS.Value = "QC" Or
               &QRYRowset(&i).ECL_CLAIMS_QRY.ECL_STATUS.Value = "HC" Then
            &QRYRowset(&i).ECL_CLAIMS_QRY.COMMENTS.DisplayOnly = True;
         End-If;
      End-For;
   End-If;
  
   If &Menu = "ECLAIMS_MANAGE" Then
      For &i = 1 To &QRYRowset.ActiveRowCount
         <*If All(&QRYRowset(1).ECL_CLAIMS_QRY.ECL_QSTN_CD.Value) Then
            &QRYRowset(&i).ECL_CLAIMS_QRY.ECL_QSTN_CD.DisplayOnly = True;
         Else
            &QRYRowset(&i).ECL_CLAIMS_QRY.ECL_QSTN_CD.DisplayOnly = False;
         End-If;*>
        
         If &QRYRowset(&i).ECL_CLAIMS_QRY.ECL_STATUS.Value = "QC" Or
               &QRYRowset(&i).ECL_CLAIMS_QRY.ECL_STATUS.Value = "HC" Then
            &QRYRowset(&i).ECL_CLAIMS_QRY.ECL_QSTN_CD.DisplayOnly = True;
         Else
            &QRYRowset(&i).ECL_CLAIMS_QRY.ECL_QSTN_CD.DisplayOnly = False;
         End-If;
      End-For;
     
      If &Status = "QY" Or
            &Status = "HD" Then
         &QRYRowset.ShowAllRows();
         If %Component <> "ECL_CLAIMS_VIEW" Then
            If All(&QRYRowset(1).ECL_CLAIMS_QRY.ECL_QSTN_CD.Value) Then
               &QRYRowset.InsertRow(&QRYRowset.ActiveRowCount);
            End-If;
         End-If;
         <*Else
         For &i = &QRYRowset.ActiveRowCount To 1 Step - 1
            If &QRYRowset(&i).ECL_CLAIMS_QRY.ECL_QSTN_CD.Value = "" Then
               &QRYRowset.DeleteRow(&i);
            End-If;
         End-For;*>
      End-If;
   End-If;
end-method;

method QueryDelete
   /+ &Menu as String, +/
   /+ &Status as String +/
   Local Rowset &QRYRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_QRY);
   Local number &i, &Count_Qry_Raise, &Count_Qry_Clear;
   &Count_Qry_Raise = 0;
   &Count_Qry_Clear = 0;
  
   If &Menu = "ECLAIMS_MANAGE" Then
      If &Status = "QY" Or
            &Status = "HD" Then
         &Count_Qry_Raise = 1;
      End-If;
      If &Count_Qry_Raise = 0 Then
         For &i = &QRYRowset.ActiveRowCount To 1 Step - 1
            &Count_Qry_Clear = 0;
            If &QRYRowset(&i).ECL_CLAIMS_QRY.ECL_STATUS.Value = "QC" Or
                  &QRYRowset(&i).ECL_CLAIMS_QRY.ECL_STATUS.Value = "HC" Then
               &Count_Qry_Clear = 1;
            End-If;
           
            If &QRYRowset(&i).ECL_CLAIMS_QRY.ECL_QSTN_CD.Value <> "" And
                  &Count_Qry_Clear = 0 Then
               &QRYRowset.DeleteRow(&i);
            End-If;
         End-For;
      End-If;
     
   End-If;
  
end-method;


method GridColumnTravelFormat
  
   If %Component = "ECL_CLAIMS_TRVL" Then
      GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_TRAG_VW").GetColumn("TRAGENT_ADD").Visible = False;
      GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_TRAG_VW").GetColumn("TRAGENT_DELETE").Visible = False;
     
      GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_CREDTVW").GetColumn("AGENTCREDIT_ADD").Visible = False;
      GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_CREDTVW").GetColumn("AGENTCREDIT_DELETE").Visible = False;
     
      GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_SELF_VW").GetColumn("SELF_ADD").Visible = False;
      GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_SELF_VW").GetColumn("SELF_DELETE").Visible = False;
     
      GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_BTC_VW").GetColumn("BTCCAR_ADD").Visible = False;
      GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_BTC_VW").GetColumn("BTCCAR_DELETE").Visible = False;
     
      GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_BTCR_VW").GetColumn("BTCCARCRDT_ADD").Visible = False;
      GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_BTCR_VW").GetColumn("BTCCARCRDT_DELETE").Visible = False;
     
      GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_BTCH_VW").GetColumn("BTCHOTEL_ADD").Visible = False;
      GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_BTCH_VW").GetColumn("BTCHOTEL_DELETE").Visible = False;
     
      GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_BTHC_VW").GetColumn("BTCHTLCDT_ADD").Visible = False;
      GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_BTHC_VW").GetColumn("BTCHTLCDT_DELETE").Visible = False;
     
      /*Nishanth*/
      GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_EH_VW").GetColumn("EMP_ADD").Visible = False;
      GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_EH_VW").GetColumn("EMP_DELETE").Visible = False;
      /*Nishanth*/
     
      GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_GUH_VW").GetColumn("GUEST_ADD").Visible = False;
      GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_GUH_VW").GetColumn("GUEST_DELETE").Visible = False;
     
      GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_EMH_VW").GetColumn("NONEMP_ADD").Visible = False;
      GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_EMH_VW").GetColumn("NONEMP_DELETE").Visible = False;
     
      GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_STR_VW").GetColumn("STAY_ADD").Visible = False;
      GetGrid(Page.ECL_CLAIMS_TRVL, "ECL_CLM_STR_VW").GetColumn("STAY_DELETE").Visible = False;
     
     
   End-If;
end-method;

method DisplayTravelFormat
   Local Rowset &TrvlSTARowset = GetLevel0()(1).GetRowset(Scroll.ECL_TRAVEL_STA);
   Local Rowset &TrotRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_TROT);
   Local Rowset &EMHRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_EMH_VW);
   Local Rowset &SelfRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_SELF_VW);
   Local Rowset &SWRRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_STR_VW);
   Local Rowset &GuestRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_GUH_VW);
   Local Rowset &EmpRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_EH_VW); /*Nishanth*/
   Local Record &HdrRec = GetRecord(Record.ECL_CLAIMS_HDR);
   Local number &i;
  
   &HdrRec.COMMENTS.DisplayOnly = True;
  
   For &i = 1 To &TrvlSTARowset.ActiveRowCount
      &TrvlSTARowset(&i).ECL_TRAVEL_STA.ECL_FEEDBACK.DisplayOnly = True;
   End-For;
  
   If None(&TrotRowset(1).ECL_CLAIMS_TROT.ECL_CLAIM_TYP.Value) Then
      &TrotRowset.HideAllRows();
   End-If;
  
   &TrotRowset.InsertEnabled = False;
   &TrotRowset.DeleteEnabled = False;
  
   For &i = 1 To &SelfRowset.ActiveRowCount
      &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TICK_STATUS.DisplayOnly = True;
      &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TRAIN_PLNE_NUM.DisplayOnly = True;
      &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TRAIN_PLNE_NAM.DisplayOnly = True;
      &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_PNR_NUMBER.DisplayOnly = True;
      &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TICKET_COST.DisplayOnly = True;
      &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_REIMBURSE_AMT.DisplayOnly = True;
      &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_CORPCARD_AMT.DisplayOnly = True;
      &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_CANCEL_TYPE.DisplayOnly = True;
      &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_CANCEL_DT.DisplayOnly = True;
      &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_CANCEL_CHARGE.DisplayOnly = True;
   End-For;
   For &i = 1 To &EMHRowset.ActiveRowCount
      &EMHRowset(&i).ECL_CLM_EMH_VW.ECL_HOTEL_NAME.DisplayOnly = True;
      &EMHRowset(&i).ECL_CLM_EMH_VW.ECL_CHECKIN_DT.DisplayOnly = True;
      &EMHRowset(&i).ECL_CLM_EMH_VW.ECL_CHECKOUT_DT.DisplayOnly = True;
      &EMHRowset(&i).ECL_CLM_EMH_VW.ECL_CHECKIN_TIME.DisplayOnly = True;
      &EMHRowset(&i).ECL_CLM_EMH_VW.ECL_CHECKOUT_TIME.DisplayOnly = True;
      &EMHRowset(&i).ECL_CLM_EMH_VW.ECL_DAYS_COUNT.DisplayOnly = True;
      &EMHRowset(&i).ECL_CLM_EMH_VW.ECL_CORPCARD_AMT.DisplayOnly = True;
      &EMHRowset(&i).ECL_CLM_EMH_VW.ECL_REIMBURSE_AMT.DisplayOnly = True;
      &EMHRowset(&i).ECL_CLM_EMH_VW.ECL_TRVL_AGNT_BILL.DisplayOnly = True;
      &EMHRowset(&i).ECL_CLM_EMH_VW.ECL_TICKET_COST.DisplayOnly = True;
      &EMHRowset(&i).ECL_CLM_EMH_VW.ECL_TICK_STATUS.DisplayOnly = True;
   End-For;
   For &i = 1 To &SWRRowset.ActiveRowCount
      &SWRRowset(&i).ECL_CLM_STR_VW.ECL_CHECKIN_DT.DisplayOnly = True;
      &SWRRowset(&i).ECL_CLM_STR_VW.ECL_CHECKOUT_DT.DisplayOnly = True;
      &SWRRowset(&i).ECL_CLM_STR_VW.ECL_DAYS_COUNT.DisplayOnly = True;
      &SWRRowset(&i).ECL_CLM_STR_VW.ECL_TICKET_COST.DisplayOnly = True;
      &SWRRowset(&i).ECL_CLM_STR_VW.ECL_TICK_STATUS.DisplayOnly = True;
   End-For;
   For &i = 1 To &GuestRowset.ActiveRowCount
      &GuestRowset(&i).ECL_CLM_GUH_VW.ECL_CHECKIN_DT.DisplayOnly = True;
      &GuestRowset(&i).ECL_CLM_GUH_VW.ECL_CHECKOUT_DT.DisplayOnly = True;
      &GuestRowset(&i).ECL_CLM_GUH_VW.ECL_CHECKIN_TIME.DisplayOnly = True;
      &GuestRowset(&i).ECL_CLM_GUH_VW.ECL_CHECKOUT_TIME.DisplayOnly = True;
      &GuestRowset(&i).ECL_CLM_GUH_VW.ECL_DAYS_COUNT.DisplayOnly = True;
      &GuestRowset(&i).ECL_CLM_GUH_VW.ECL_TICK_STATUS.DisplayOnly = True;
   End-For;
   /*Nishanth*/
   For &i = 1 To &EmpRowset.ActiveRowCount
     
      &EmpRowset(&i).ECL_CLM_EH_VW.ECL_CHECKIN_DT.DisplayOnly = True;
      &EmpRowset(&i).ECL_CLM_EH_VW.ECL_CHECKOUT_DT.DisplayOnly = True;
      &EmpRowset(&i).ECL_CLM_EH_VW.ECL_CHECKIN_TIME.DisplayOnly = True;
      &EmpRowset(&i).ECL_CLM_EH_VW.ECL_CHECKOUT_TIME.DisplayOnly = True;
      &EmpRowset(&i).ECL_CLM_EH_VW.ECL_DAYS_COUNT.DisplayOnly = True;
      &EmpRowset(&i).ECL_CLM_EH_VW.ECL_TICK_STATUS.DisplayOnly = True;
      &EmpRowset(&i).ECL_CLM_EH_VW.ECL_TICKET_COST.DisplayOnly = True;
   End-For;
   /*Nishanth*/
  
   For &i = 1 To &TrotRowset.ActiveRowCount
      &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_CLAIM_TYP.DisplayOnly = True;
      &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_FROM_DT.DisplayOnly = True;
      &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_TO_DT.DisplayOnly = True;
      &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_REIMBURSE_AMT.DisplayOnly = True;
      &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_GL_CODE.DisplayOnly = True;
      &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_CORPCARD_AMT.DisplayOnly = True;
      &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_TOTAL_AMT.DisplayOnly = True;
      &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_DETAIL1.DisplayOnly = True;
      &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_DETAIL2.DisplayOnly = True;
      &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_DETAIL3.DisplayOnly = True;
      &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_DETAIL4.DisplayOnly = True;
      &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_DETAIL5.DisplayOnly = True;
      &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_NOOF_PERSON.DisplayOnly = True;
      &TrotRowset(&i).ECL_CLAIMS_TROT.PURPOSE1.DisplayOnly = True;
      &TrotRowset(&i).ECL_CLAIMS_TROT.COMPANY_DESCR.DisplayOnly = True;
      &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_NAME.DisplayOnly = True;
      &TrotRowset(&i).ECL_CLAIMS_TROT.CITY.DisplayOnly = True;
      &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_BILL_NO.DisplayOnly = True;
      &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_LOCATION_FROM.DisplayOnly = True;
      &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_LOCATION_TO.DisplayOnly = True;
      &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_VEHICLE_TYPE.DisplayOnly = True;
      &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_KM_TRAVEL.DisplayOnly = True;
   End-For;
end-method;



class ClaimIdCreation
   method ClaimIdCreation();
   method CreateClaimId(&TravelReqId As string, &ClaimType As string, &Approver_id As string, &Id As string, &MDVariable As string) Returns string;
   method InsertBusnClaim(&Emplid As string, &Empl_Rcd As number, &Approver_id As string, &ClaimType As string, &Id As string, &Deptid As string, &MDVariable As string) Returns string;
   method InsertBusnSummary(&ClaimreqId As string, &Emplid As string, &Empl_rcd As number, &TravelReqId As string, &ClaimType As string);
   method InsertARFClaim(&Emplid As string, &Empl_Rcd As number, &ARF_id As string, &Approver_id As string, &ClaimType As string, &Advamount As number, &Id As string, &Deptid As string, &MDVariable As string) Returns string;
   method ClaimCalculation();
   property string ClaimId;
private
   method InsertClaimHeader(&TravelReqId As string, &ClaimType As string, &Approver_id As string, &Id As string, &MDVariable As string);
   method InsertClaimTravel(&TravelReqId As string, &ClaimType As string);
   method InsertClaimSummary(&TravelReqId As string, &ClaimType As string);
  
   instance string &Status;
   instance string &ClaimIdFound;
   instance string &ClaimKeyOverrides;
   instance string &ClaimIdInUse;
   instance number &nbrRowsInserted;
  
   instance SQL &sqlInsert;
  
end-class;

method ClaimIdCreation
end-method;

method CreateClaimId
   /+ &TravelReqId as String, +/
   /+ &ClaimType as String, +/
   /+ &Approver_id as String, +/
   /+ &Id as String, +/
   /+ &MDVariable as String +/
   /+ Returns String +/
   &ClaimId = "EXP" | GetNextNumberWithGapsCommit(ECL_INSTALL.ECL_CLAIM_REQ_ID, 99999999, 1);
  
  
  
   /* be positive */
   &Status = "SUCC";
  
   <*If &ClaimId <= 0 Then
      &Status = "APID";
      Return &Status;
   End-If;*>
   &ClaimIdInUse = &ClaimId;
  
   /* make sure there is no duplicate Claim id */
   REM SQLExec(SQL.ECL_CLAIM_DUP_CLAIM_ID_SEL, &ClaimId, &ClaimIdFound);
  
   If &ClaimIdFound = "Y" Then
      &Status = "DPID";
      Return &Status;
   End-If;
  
   /* set the appraisal key overrides */
   &ClaimKeyOverrides = ExpandSqlBinds("ECL_CLAIM_REQ_ID = :1", &ClaimId);
  
   /* populate Travel Claim table */
  
   %This.InsertClaimTravel(&TravelReqId, &ClaimType);
  
   If &nbrRowsInserted = 0 Then
      /* Couldn't insert any sections */
      &Status = "FAIL";
      Return &Status;
   End-If;
  
   /* populate Claim header table (only one row)  */
   %This.InsertClaimHeader(&TravelReqId, &ClaimType, &Approver_id, &Id, &MDVariable);
  
   %This.InsertClaimSummary(&TravelReqId, &ClaimType);
  
   &Status = String(&ClaimId);
  
   Return &Status
end-method;

method InsertClaimHeader
   /+ &TravelReqId as String, +/
   /+ &ClaimType as String, +/
   /+ &Approver_id as String, +/
   /+ &Id as String, +/
   /+ &MDVariable as String +/
  
   Local string &strStartSQL, &strBuildSQL;
  
   &strStartSQL = GetSQL(SQL.ECL_CLAIMS_HEADER_INSERT).Value;
   &strBuildSQL = Substitute(&strStartSQL, "ECL_CLAIM_REQ_ID = 0", &ClaimKeyOverrides);
   &sqlInsert = CreateSQL(&strBuildSQL);
  
   /* insert role rows */
   &sqlInsert.Execute(&TravelReqId, &ClaimType, &Approver_id, &Id, &MDVariable);
   &sqlInsert.Close();
  
end-method;


method InsertClaimTravel
   /+ &TravelReqId as String, +/
   /+ &ClaimType as String +/
   Local string &strStartSQL, &strBuildSQL;
  
   &strStartSQL = GetSQL(SQL.ECL_CLAIMS_TRAVEL_INSERT).Value;
   &strBuildSQL = Substitute(&strStartSQL, "ECL_CLAIM_REQ_ID = 0", &ClaimKeyOverrides);
   &sqlInsert = CreateSQL(&strBuildSQL);
  
   /* insert role rows */
   &sqlInsert.Execute(&TravelReqId);
  
   &nbrRowsInserted = &sqlInsert.RowsAffected;
   &sqlInsert.Close();
end-method;

method InsertClaimSummary
   /+ &TravelReqId as String, +/
   /+ &ClaimType as String +/
   Local string &strStartSQL, &strBuildSQL;
   &strStartSQL = GetSQL(SQL.ECL_CLAIMS_SUMMARY_INSERT).Value;
  
   &sqlInsert = CreateSQL(&strStartSQL);
   &sqlInsert.Execute(&TravelReqId, &ClaimType, &ClaimId);
   &sqlInsert.Close();
  
end-method;

method InsertBusnClaim
   /+ &Emplid as String, +/
   /+ &Empl_Rcd as Number, +/
   /+ &Approver_id as String, +/
   /+ &ClaimType as String, +/
   /+ &Id as String, +/
   /+ &Deptid as String, +/
   /+ &MDVariable as String +/
   /+ Returns String +/
   Local string &strStartSQL, &strBuildSQL;
   &ClaimId = "EXP" | GetNextNumberWithGapsCommit(ECL_INSTALL.ECL_CLAIM_REQ_ID, 99999999, 1);
  
   &strStartSQL = GetSQL(SQL.ECL_CLAIMS_BUSN_HEADER_INSERT).Value;
  
   &sqlInsert = CreateSQL(&strStartSQL);
   &sqlInsert.Execute(&Emplid, &ClaimType, "SA", &Approver_id, &ClaimId, &Id, &Deptid, &MDVariable);
   &sqlInsert.Close();
   &Status = String(&ClaimId);
   Return &Status
end-method;

method InsertARFClaim
   /+ &Emplid as String, +/
   /+ &Empl_Rcd as Number, +/
   /+ &ARF_id as String, +/
   /+ &Approver_id as String, +/
   /+ &ClaimType as String, +/
   /+ &Advamount as Number, +/
   /+ &Id as String, +/
   /+ &Deptid as String, +/
   /+ &MDVariable as String +/
   /+ Returns String +/
   Local string &strStartSQL, &strBuildSQL;
  
   &ClaimId = "EXP" | GetNextNumberWithGapsCommit(ECL_INSTALL.ECL_CLAIM_REQ_ID, 99999999, 1);
  
   &strStartSQL = GetSQL(SQL.ECL_CLAIMS_ARF_HEADER_INSERT).Value;
  
   &sqlInsert = CreateSQL(&strStartSQL);
   &sqlInsert.Execute(&Emplid, &ClaimType, &ARF_id, "SA", &Approver_id, &Advamount, &ClaimId, &Id, &Deptid, &MDVariable);
   &sqlInsert.Close();
   &Status = String(&ClaimId);
  
   Return &Status
end-method;

method InsertBusnSummary
   /+ &ClaimreqId as String, +/
   /+ &Emplid as String, +/
   /+ &Empl_rcd as Number, +/
   /+ &TravelReqId as String, +/
   /+ &ClaimType as String +/
   Local string &strStartSQL, &strBuildSQL;
  
   &strStartSQL = GetSQL(SQL.ECL_CLAIMS_BUSN_INSERT_SUMMARY).Value;
  
   &sqlInsert = CreateSQL(&strStartSQL);
  
   &sqlInsert.Execute(&ClaimreqId, &Emplid, &Empl_rcd, &TravelReqId, &ClaimType);
   &sqlInsert.Close();
  
end-method;

method ClaimCalculation
  
   Local Rowset &ClSumRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_SUMM);
   Local Rowset &TrotRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLAIMS_TROT);
   Local Rowset &TrvlRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_TRAG_VW);
   Local Rowset &CreditRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_CREDTVW);
   Local Rowset &BTCCarRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_BTC_VW);
   Local Rowset &BTCCarCredit = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_BTCR_VW);
   Local Rowset &EMHRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_EMH_VW);
   Local Rowset &GuestRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_GUH_VW);
   Local Rowset &SelfRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_SELF_VW);
   Local Rowset &BTCHotelRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_BTCH_VW);
   Local Rowset &BTCHotelCredit = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_BTHC_VW);
   Local Rowset &SWRRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_STR_VW);
   Local Rowset &EMPRowset = GetLevel0()(1).GetRowset(Scroll.ECL_CLM_EH_VW); /*Nishanth*/
   Local number &i;
   Local number &SelfBook = 0;
   Local number &EmpHotel = 0;
   Local number &StayRelative = 0;
   Local number &Trothself = 0;
   Local number &Trothcorp = 0;
   Local number &TRAgentSum = 0;
   Local number &Credit = 0;
   Local number &CarCredit = 0;
   Local number &BTCCar = 0;
   Local number &GuestHouse = 0;
   Local number &BTCHotel = 0;
   Local number &HotelCredit = 0;
   Local number &Amntpayable = 0;
   Local number &Claimexpense = 0;
   Local number &Emphotelexpense = 0; /*Nishanth*/
  
   For &i = 1 To &SelfRowset.ActiveRowCount
      &SelfBook = &SelfBook + &SelfRowset(&i).ECL_CLM_SELF_VW.ECL_TOT_TCKT_COST.Value;
   End-For;
  
   For &i = 1 To &EMHRowset.ActiveRowCount
      &EmpHotel = &EmpHotel + &EMHRowset(&i).ECL_CLM_EMH_VW.ECL_TOT_TCKT_COST.Value;
   End-For;
  
   For &i = 1 To &SWRRowset.ActiveRowCount
      &StayRelative = &StayRelative + &SWRRowset(&i).ECL_CLM_STR_VW.ECL_TOT_TCKT_COST.Value;
   End-For;
  
   For &i = 1 To &TrotRowset.ActiveRowCount
      &Trothself = &Trothself + &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_REIMBURSE_AMT.Value;
      &Trothcorp = &Trothcorp + &TrotRowset(&i).ECL_CLAIMS_TROT.ECL_CORPCARD_AMT.Value;
   End-For;
  
  
   For &i = 1 To &TrvlRowset.ActiveRowCount
      &TRAgentSum = &TRAgentSum + &TrvlRowset(&i).ECL_CLM_TRAG_VW.ECL_TOT_TCKT_COST.Value;
   End-For;
  
   For &i = 1 To &CreditRowset.ActiveRowCount
      &Credit = &Credit + &CreditRowset(&i).ECL_CLM_CREDTVW.ECL_CREDIT_AMOUNT.Value;
   End-For;
  
   For &i = 1 To &BTCCarRowset.ActiveRowCount
      rem &BTCCarRowset(&i).ECL_CLM_BTC_VW.ECL_TOT_TCKT_COST.Value = &BTCCarRowset(&i).ECL_CLM_BTC_VW.ECL_TICKET_COST.Value;
      &BTCCar = &BTCCar + &BTCCarRowset(&i).ECL_CLM_BTC_VW.ECL_TOT_TCKT_COST.Value;
   End-For;
  
   For &i = 1 To &BTCCarCredit.ActiveRowCount
      &CarCredit = &CarCredit + &BTCCarCredit(&i).ECL_CLM_BTCR_VW.ECL_CREDIT_AMOUNT.Value;
   End-For;
  
   For &i = 1 To &GuestRowset.ActiveRowCount
      REM &GuestRowset(&i).ECL_CLM_GUH_VW.ECL_TOT_TCKT_COST.Value = &GuestRowset(&i).ECL_CLM_GUH_VW.ECL_ESTIMATED_COST.Value;
      &GuestHouse = &GuestHouse + &GuestRowset(&i).ECL_CLM_GUH_VW.ECL_TOT_TCKT_COST.Value;
   End-For;
  
   /*Nishanth*/
   For &i = 1 To &EMPRowset.ActiveRowCount
      REM &GuestRowset(&i).ECL_CLM_GUH_VW.ECL_TOT_TCKT_COST.Value = &GuestRowset(&i).ECL_CLM_GUH_VW.ECL_ESTIMATED_COST.Value;
      &Emphotelexpense = &Emphotelexpense + &EMPRowset(&i).ECL_CLM_EH_VW.ECL_TOT_TCKT_COST.Value;
   End-For;
   /*Nishanth*/
  
   For &i = 1 To &BTCHotelRowset.ActiveRowCount
      rem &BTCHotelRowset(&i).ECL_CLM_BTCH_VW.ECL_TOT_TCKT_COST.Value = &BTCHotelRowset(&i).ECL_CLM_BTCH_VW.ECL_TICKET_COST.Value;
      &BTCHotel = &BTCHotel + &BTCHotelRowset(&i).ECL_CLM_BTCH_VW.ECL_TOT_TCKT_COST.Value;
   End-For;
  
   For &i = 1 To &BTCHotelCredit.ActiveRowCount
      &HotelCredit = &HotelCredit + &BTCHotelCredit(&i).ECL_CLM_BTHC_VW.ECL_CREDIT_AMOUNT.Value;
   End-For;
  
   For &i = 1 To &ClSumRowset.ActiveRowCount
     
      If &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_BOOKING_TYP.Value = "TA" Then
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_TOTAL_AMT.Value = &TRAgentSum;
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_CREDIT_AMOUNT.Value = &Credit;
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_TOT_CLAIM_AMT.Value = &TRAgentSum - &Credit;
      End-If;
      If &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_TRVL_REQ_TYP.Value = "TR" And
            &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_BOOKING_TYP.Value = "BT" Then
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_TOTAL_AMT.Value = &BTCCar;
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_CREDIT_AMOUNT.Value = &CarCredit;
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_TOT_CLAIM_AMT.Value = &BTCCar - &CarCredit;
      End-If;
      If &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_BOOKING_TYP.Value = "NE" Then
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_REIMBURSE_AMT.Value = &EmpHotel;
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_TOTAL_AMT.Value = &EmpHotel;
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_TOT_CLAIM_AMT.Value = &EmpHotel;
      End-If;
      If &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_BOOKING_TYP.Value = "SE" Then
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_REIMBURSE_AMT.Value = &SelfBook;
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_TOTAL_AMT.Value = &SelfBook;
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_TOT_CLAIM_AMT.Value = &SelfBook;
      End-If;
      If &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_TRVL_REQ_TYP.Value = "LB" And
            &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_BOOKING_TYP.Value = "BT" Then
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_TOTAL_AMT.Value = &BTCHotel;
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_CREDIT_AMOUNT.Value = &HotelCredit;
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_TOT_CLAIM_AMT.Value = &BTCHotel - &HotelCredit;
      End-If;
      If &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_TRVL_REQ_TYP.Value = "LB" And
            &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_BOOKING_TYP.Value = "ST" Then
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_REIMBURSE_AMT.Value = &StayRelative;
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_TOTAL_AMT.Value = &StayRelative;
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_TOT_CLAIM_AMT.Value = &StayRelative;
      End-If;
      If &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_TRVL_REQ_TYP.Value = "LB" And
            &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_BOOKING_TYP.Value = "GH" Then
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_TOTAL_AMT.Value = &GuestHouse;
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_TOT_CLAIM_AMT.Value = &GuestHouse;
      End-If;
     
      /*Nishanth*/
      If &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_TRVL_REQ_TYP.Value = "LB" And
            &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_BOOKING_TYP.Value = "EH" Then
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_TOTAL_AMT.Value = &Emphotelexpense;
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_TOT_CLAIM_AMT.Value = &Emphotelexpense;
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_REIMBURSE_AMT.Value = &Emphotelexpense;
        
      End-If;
      /*Nishanth*/
     
      If &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_BOOKING_TYP.Value = "OT" Then
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_REIMBURSE_AMT.Value = &Trothself;
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_CORPCARD_AMT.Value = &Trothcorp;
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_TOTAL_AMT.Value = &Trothself + &Trothcorp;
         &ClSumRowset(&i).ECL_CLAIMS_SUMM.ECL_TOT_CLAIM_AMT.Value = &Trothself + &Trothcorp;
      End-If;
   End-For;
  
   ECL_CLAIMS_HDR.ECL_TOT_CORPCD_AMT.Value = &Trothcorp;
  
   ECL_CLAIMS_HDR.ECL_AMT_PAY_EMPL.Value = &SelfBook + &EmpHotel + &StayRelative + &Trothself + &Emphotelexpense; /*Nishanth*/
   &Amntpayable = ECL_CLAIMS_HDR.ECL_AMT_PAY_EMPL.Value;
  
   ECL_CLAIMS_HDR.ECL_TOTAL_EXPENSE.Value = &Trothcorp + &Amntpayable;
  
   &Claimexpense = ECL_CLAIMS_HDR.ECL_TOTAL_EXPENSE.Value;
   ECL_CLAIMS_HDR.ECL_TOT_CLAIM_AMT.Value = (&Claimexpense + &TRAgentSum + &BTCCar + &GuestHouse + &BTCHotel) - (&Credit + &HotelCredit + &CarCredit);
  
   REM ECL_CLAIMS_HDR.ECL_APV_PAY_EMPL.Value = ECL_CLAIMS_HDR.ECL_AMT_PAY_EMPL.Value;
   REM ECL_CLAIMS_HDR.ECL_APV_CORPCD_AMT.Value = ECL_CLAIMS_HDR.ECL_TOT_CORPCD_AMT.Value;
  
   ECL_CLAIMS_HDR.ECL_APV_EXPENSE.Value = ECL_CLAIMS_HDR.ECL_APV_PAY_EMPL.Value + ECL_CLAIMS_HDR.ECL_APV_CORPCD_AMT.Value;
   ECL_CLAIMS_HDR.ECL_APV_CLAIM_AMT.Value = (ECL_CLAIMS_HDR.ECL_APV_EXPENSE.Value + &TRAgentSum + &BTCCar + &GuestHouse + &BTCHotel) - (&Credit + &HotelCredit + &CarCredit);
  
end-method;

import ZIN_COMMON:*;

class OnlineBase
   method getreqno() Returns number;
   method OnlineBase();
   method AssignNextId(&Recname As string, &Fieldname As string, &Length As number, &Prefix As string) Returns string;
   method InsertSTA(&Employeeid As string, &Empl_rcd As number, &TravelReqID As string, &TravelReqDate As date, &RoleUser As string, &DelegatedApprover As string, &Comments As string, &UserRole As string);
   method InsertNextApprover(&Employeeid As string, &Empl_rcd As number, &TravelReqID As string, &TravelReqDate As date, &Seqno As number, &ApprStep As number, &TravelType As string, &DeviationFlag As string, &CurrentRoleName As string);
   method GetNextUserEmail(&Ecode As string) Returns string;
   method GetNextApprover();
   REM METHOD assign_employee_id(&EMPLID AS STRING);
   method InsertClaimSTA(&ReqID As string, &Approval_Type As string, &Employeeid As string, &Empl_rcd As number, &Category As string, &TravelReqDate As date, &ApproverID As string, &Seqno As number, &Action As string, &Currentstep As number, &DelegatedApprover As string, &Status As string);
   method Bulk_Insert_Claim_STA(&ReqID As string, &Approval_Type As string, &Employeeid As string, &Empl_rcd As number, &Category As string, &TravelReqDate As date, &ApproverID As string, &Seqno As number, &Action As string, &Currentstep As number, &DelegatedApprover As string, &Status As string, &Check_Flag As string);
   method InsertClaimNextApprover(&ReqID As string, &Approval_Type As string, &ApprStep As number, &Seqno As number, &Employeeid As string, &Empl_rcd As number, &Category As string, &ClaimReqDate As date);
   method InsertReceivedHoldApprover(&ReqID As string, &Approval_Type As string, &ApprStep As number, &Seqno As number, &Employeeid As string, &Empl_rcd As number, &Category As string, &ClaimReqDate As date, &Action As string);
   method DeviationCheck(&CurrentGrade As string, &DeviationType As string, &CityGrade As string, &EstimatedCost As number) Returns string;
   method GetEntitledCost(&EmployeeGrade As string, &BookingType As string, &CityGrade As string, &GuestHouseID As string) Returns number;
   method CheckDepartmentBudget(&DepartmentId As string, &OverAllExpense As number) Returns string;
   method GetCostCenter(&DepartmentId As string) Returns string;
   method GetAvailableBudget(&CostCenter As string) Returns number;
   method AdjustDepartmentBudget(&DepartmentId As string, &BudgetAction As string, &OverAllExpense As number);
   method GetBudgetApprover(&CostCenter As string) Returns string;
   method InsertInterimBudget(&CostCenter As string, &InterimBudgetCost As number);
   method ApprovalDelegationCheck(&Ecode As string, &Delegationtype As string) Returns string;
   method ApprovalDelegation(&Ecode As string, &DelegateTo As string, &DelegationType As string, &DelegationAction As string);
   method CheckDelegation(&Ecode As string, &DelegationAction As string, &Component As string) Returns string;
   method RevokeDelegation(&EmplCode As string, &DelegationAction As string, &DelegationType As string, &Seqno As number, &DelegatedId As string, &FromDate As date, &ToDate As date);
   method GetMaxSequence(&TravelRequestId As string) Returns number;
   method InsertArfSta(&ReqID As string, &Employeeid As string, &Empl_rcd As number, &TravelReqDate As date, &ApproverID As string, &Seqno As number, &Action As string, &CurrentStep As number, &UserRole As string);
   method InsertArfNextApprover(&ReqID As string, &Approval_Type As string, &ApprStep As number, &Seqno As number, &Employeeid As string, &Empl_rcd As number, &ArfReqDate As date);
   method ApprovaRuleSet(&Deviation As string, &MDCheck As string) Returns string;
   method GetOverallExpense(&TravelReqId As string) Returns number;
   method GetNextApproverEmailid(&Approvalset As string, &Apprstep As number) Returns string;
   method DelegationOprid(&Emplid As string, &Action As string, &Type As string) Returns string;
   method InitiateDelegationCheck(&Ecode As string, &From_date As date, &To_date As date, &DelegationAction As string, &DelegationType As string) Returns string;
   method UpdateClaims(&TicketCost As number, &AgentBill As string, &AgentBillDate As date, &ServiceCharge As number, &Tax As number, &TotalTicketCost As number, &SystemFileName As string, &UserFile As string, &AttachSys As string, &AttachUser As string, &TravelReqId As string, &TravelSeq As number, &InvoiceStatus As string);
   method GetTravelBTC(&TravelReqId As string) Returns string;
   method GetBTCEstimatedCost(&TravelReqId As string) Returns number;
   method GetOtherCancelledEstimatedCost(&TravelReqId As string) Returns number;
   method BudgetAdjustmentAmount(&TravelReqId As string, &ClaimReqId As string, &Category As string);
   method UpdateBudgetSTA(&WFAction As string, &ActionDate As datetime, &Comments As string, &Emplid As string, &BudgetID As string, &RoleName As string, &ApproverId As string);
   method grade_check(&emplid As string) Returns string;
   method RowCount(&Record As string, &Key As string) Returns number;
   method UpdateDelegation(&Approverid As string, &Lastapproverid As string, &Lastuddtm As datetime, &Emplid As string, &delgaction As string, &Seqno As number);
   method Check_Duplicacy(&View As string, &Input_Claim_Id As string) Returns string;
   method UpdateRecieved(&Claim_ID As string);
   method Get_Attachment_Seqno(&Claim_Id As string) Returns number;
   method Update_Received_Header(&Claim_Id As string);
   method Update_STA(&Claim_ID As string, &Oprid As string, &Action As string);
   method Update_LV1(&Claim_ID As string);
   method Insert_New_L1_L2_STA(&Claim_ID As string);
   method Check_Next_Approver_Delagation(&Status As string, &Approver_Id As string, &Approvalset As string, &Apprstep As number) Returns string;
   method Send_Mail_To_Delegated_Id(&Status As string, &Approver_Id As string, &Approvalset As string, &Apprstep As number);
   method GetCityDistance(&DepartureCity As string, &ArrivalCity As string, &DistanceMode As string) Returns string;
end-class;

method GetTravelBTC
   /+ &TravelReqId as String +/
   /+ Returns String +/
   Local Rowset &Rowset;
   Local number &i;
   Local string &BTC, &BTCFlag;
   &BTCFlag = "N";
   &Rowset = GetLevel0()(1).GetRowset(Scroll.ECL_TRAVEL_REQ);
   rem WinMessage(&Rowset.ActiveRowCount, 0);
   For &i = 1 To &Rowset.ActiveRowCount
      &BTC = &Rowset(&i).ECL_TRAVEL_REQ.ECL_BOOKING_TYP.Value;
      If &BTC = "BT" Then
         &BTCFlag = "Y";
      End-If;
   End-For;
  
   Return &BTCFlag;
end-method;

method getreqno
   /+ Returns Number +/
   Local number &ECL_TRVL_REQ_ID;
   SQLExec("SELECT ECL_TRVL_REQ_ID PS_ECL_INSTALL", &ECL_TRVL_REQ_ID);
   Return &ECL_TRVL_REQ_ID;
end-method;

method AssignNextId
   /+ &Recname as String, +/
   /+ &Fieldname as String, +/
   /+ &Length as Number, +/
   /+ &Prefix as String +/
   /+ Returns String +/
   /* Assigns the next available ID according to Recname.Fieldname.      */
   /* Ensures that this ID (with Prefix) does not exist in PERSON table. */
   /* If a match is found in PERSON, then that ID is "reserved" and we   */
   /* keep trying until we get an ID that does not already exist.        */
   Local number &NextIdNbr, &MaxId;
   Local string &NextId, &DuplicateId, &RecFieldName;
  
   &RecFieldName = &Recname | "." | &Fieldname;
   &MaxId = Value(Rept("9", &Length));
   &DuplicateId = "X";
   While All(&DuplicateId)
      &NextIdNbr = GetNextNumberWithGapsCommit(@(&RecFieldName), &MaxId, 1);
      If &NextIdNbr < 0 Then
         If &NextIdNbr = - 2 Then
            /* Highest Id already assigned. */
            Error MsgGet(1000, 74, "Message Not Found.", &MaxId);
         Else
            /* General PeopleCode Error */
            Error "GetNextNumberWithGapsCommit() ErrorCode: " | &NextIdNbr;
         End-If;
      End-If;
      &NextId = String(&NextIdNbr);
      &NextId = &Prefix | Rept("0", &Length - Len(&NextId)) | &NextId;
      SQLExec("SELECT EMPLID FROM PS_PERSON WHERE EMPLID = :1", &NextId, &DuplicateId);
   End-While;
   Return &NextId;
end-method;


/* ! Assign Employee ID. Length of the ID comes from the INSTALLATION table*/
<* METHOD assign_employee_id
   &EMPLID = AssignNextId("INSTALLATION", "EMPLID_LAST_EMPL", INSTALLATION.EMPLID_LENGTH, "");
End-METHOD;
*>
method OnlineBase
end-method;

method InsertSTA
   /+ &Employeeid as String, +/
   /+ &Empl_rcd as Number, +/
   /+ &TravelReqID as String, +/
   /+ &TravelReqDate as Date, +/
   /+ &RoleUser as String, +/
   /+ &DelegatedApprover as String, +/
   /+ &Comments as String, +/
   /+ &UserRole as String +/
   Local Rowset &Rowset;
   Local Record &Rec;
   Local number &j;
   Local string &CancelFlag, &RoleFlag;
   Local string &RoleName, &RoleNameDescr, &ApproverId, &ActionedEmpCode;
   &Rec = CreateRecord(Record.ECL_TRAVEL_STA);
   &Rowset = GetLevel0()(1).GetRowset(Scroll.ECL_TRAVEL_REQ);
   &RoleFlag = "";
   rem SQLExec("INSERT INTO PS_ECL_TRAVEL_STA VALUES(&Employeeid,&Empl_rcd,&TravelReqID,&TravelReqDate,'','','','',NULL,''");
  
   If &RoleUser = &DelegatedApprover Then
      &ApproverId = &RoleUser;
   Else
      &ApproverId = &DelegatedApprover;
   End-If;
   If &Employeeid <> %UserId Then
      &ActionedEmpCode = %UserId;
   Else
      &ActionedEmpCode = &Employeeid;
   End-If;
   SQLExec("SELECT 'Y' FROM PSROLEUSER WHERE ROLEUSER = :1 AND ROLENAME = 'TATA-ECL-MD'", &Employeeid, &RoleFlag);
   If &RoleFlag = "Y" Then
      &UserRole = "MD";
   End-If;
   If &UserRole = "MD" Then
      &Rec.EMPLID.Value = &Employeeid;
      &Rec.EMPL_RCD.Value = &Empl_rcd;
      &Rec.ECL_TRVL_REQ_ID.Value = &TravelReqID;
      &Rec.ECL_TRVL_REQ_DT.Value = &TravelReqDate;
      &Rec.SEQNO.Value = 1;
      &Rec.APPR_STEP.Value = 1;
      &Rec.ROLENAME.Value = "MD";
      &Rec.ROLEUSER.Value = &Employeeid;
      &Rec.ECL_DELEGATE_ID.Value = %UserId;
      &Rec.APPROVER_OPRID.Value = &ActionedEmpCode;
      &Rec.ECL_WF_ACTION.Value = "APV";
      &Rec.ACTION_DTTM.Value = %Datetime;
      &Rec.ECL_COMMENTS.Value = &Comments;
      &Rec.Insert();
     
      %This.InsertNextApprover(&Employeeid, &Empl_rcd, &TravelReqID, &TravelReqDate, 1, 1, "", "", "MD");
   End-If;
   If &UserRole <> "MD" Then
      For &j = 1 To 2
         &Rec.EMPLID.Value = &Employeeid;
         &Rec.EMPL_RCD.Value = &Empl_rcd;
         &Rec.ECL_TRVL_REQ_ID.Value = &TravelReqID;
         &Rec.ECL_TRVL_REQ_DT.Value = &TravelReqDate;
         &Rec.SEQNO.Value = &j;
         If &j = 1 Then
            If &UserRole = "CFO" Then
               SQLExec("SELECT ROLENAME,DESCR FROM PS_ECL_APPR_RULES WHERE APPR_RULE_SET = 'IN-CFO-REQUEST' AND APPR_STEP=:1 ", &j, &RoleName, &RoleNameDescr);
              
            Else
               If &UserRole = "CFOApp" Then
                  SQLExec("SELECT ROLENAME,DESCR FROM PS_ECL_APPR_RULES where APPR_RULE_SET='IN-APPROVER-CFO' AND APPR_STEP = :1", &j, &RoleName, &RoleNameDescr);
               Else
                  SQLExec("SELECT ROLENAME,DESCR FROM PS_ECL_APPR_RULES where APPR_STEP = :1", &j, &RoleName, &RoleNameDescr);
               End-If;
            End-If;
            rem WinMessage(&Employeeid | " = " | &ApproverId | " = " | &ActionedEmpCode);
            &Rec.APPR_STEP.Value = &j;
            &Rec.ROLENAME.Value = &RoleNameDescr;
            &Rec.ROLEUSER.Value = &Employeeid;
            &Rec.ECL_DELEGATE_ID.Value = %UserId;
            &Rec.APPROVER_OPRID.Value = &ActionedEmpCode;
            &Rec.ECL_WF_ACTION.Value = "SUB";
            &Rec.ACTION_DTTM.Value = %Datetime;
            &Rec.ECL_COMMENTS.Value = &Comments;
         Else
            If &UserRole = "CFO" Then
              
               SQLExec("SELECT ROLENAME,DESCR FROM PS_ECL_APPR_RULES WHERE APPR_RULE_SET = 'IN-CFO-REQUEST' AND APPR_STEP=:1 ", &j, &RoleName, &RoleNameDescr);
               REM SQLExec("SELECT ROLEUSER FROM PSROLEUSER WHERE ROLENAME='TATA-ECL-MD'", &ApproverId);
            Else
               If &UserRole = "CFOApp" Then
                  SQLExec("SELECT ROLENAME,DESCR FROM PS_ECL_APPR_RULES where APPR_RULE_SET='IN-APPROVER-CFO' AND APPR_STEP = :1", &j, &RoleName, &RoleNameDescr);
                 
               Else
                  SQLExec("SELECT ROLENAME,DESCR FROM PS_ECL_APPR_RULES where APPR_STEP = :1", &j, &RoleName, &RoleNameDescr);
               End-If;
            End-If;
            /*If the approver is MD then restrict CFO for International -Starts*/
            If &ApproverId = "3935313" Then
               &RoleNameDescr = "MD";
            Else
               If &RoleUser <> &DelegatedApprover And
                     &RoleUser = "3935313" Then
                  &RoleNameDescr = "MD";
               End-If;
            End-If;
            /*If the approver is MD then restrict CFO for International -Ends*/
            &Rec.APPR_STEP.Value = &j;
            &Rec.ROLENAME.Value = &RoleNameDescr;
            &Rec.ROLEUSER.Value = &RoleUser;
            &Rec.ECL_DELEGATE_ID.Value = &DelegatedApprover;
            &Rec.APPROVER_OPRID.Value = &ApproverId;
            &Rec.ECL_WF_ACTION.Value = "PND";
            &Rec.CURRENT_STEP.Value = 1;
            &Rec.ACTION_DTTM.Value = "";
            &Rec.ECL_COMMENTS.Value = "";
         End-If;
        
         &Rec.Insert();
      End-For;
   End-If;
end-method;

method InsertNextApprover
   /+ &Employeeid as String, +/
   /+ &Empl_rcd as Number, +/
   /+ &TravelReqID as String, +/
   /+ &TravelReqDate as Date, +/
   /+ &Seqno as Number, +/
   /+ &ApprStep as Number, +/
   /+ &TravelType as String, +/
   /+ &DeviationFlag as String, +/
   /+ &CurrentRoleName as String +/
   Local Record &Rec, &AgentRecord;
   Local number &NextApprStep, &MAXSTEP, &j, &k, &TASequence;
   Local string &RoleName, &RoleNameDescr, &Approvers, &agents, &ApprovalSet, &btc, &btc_agents;
   Local SQL &SQL, &agent, &btc_agent;
   Local string &Id = "";
   Local string &Appr_Id = "";
   Local Rowset &Rowset, &rs;
   Local Row &row1, &row2;
   Local number &i, &AgentCounter, &r, &r1;
   Local string &TravelAgent, &TravelAgentFlag, &MDFlag;
   Local array of string &TravelAgentArray, &TAArray;
   &MDFlag = "";
   &TravelAgentFlag = "N";
   &ApprovalSet = ""; /*LAYEEQUE - ADDED ON 06-MAY-2011*/
   &MAXSTEP = 0; /*LAYEEQUE - ADDED ON 06-MAY-2011*/
   &Rec = CreateRecord(Record.ECL_TRAVEL_STA);
  
   Evaluate &DeviationFlag
   When "Y"
      If &TravelType = "DO" Then
         &ApprovalSet = "Do-Deviation";
      End-If;
      If &TravelType = "IN" Then
         &ApprovalSet = "IN-Deviation";
      End-If;
      Break;
   When "N"
      If &TravelType = "DO" Then
         &ApprovalSet = "Do-Normal";
      End-If;
      If &TravelType = "IN" Then
         &ApprovalSet = "IN-Normal";
      End-If;
      Break;
   End-Evaluate;
   If &ApprStep = 2 And
         &CurrentRoleName = "CFO" Then
      &ApprovalSet = "IN-APPROVER-CFO";
   End-If;
   /* If the Current role is MD then Insert the Travel Agent,BTC Items - Starts*/
   If &ApprStep = 2 And
         &CurrentRoleName = "MD" Then
      &ApprovalSet = "";
   End-If;
   If &ApprStep = 3 And
         &CurrentRoleName = "MD" Then
      &ApprovalSet = "";
   End-If;
   /* If the Current role is MD then Insert the Travel Agent,BTC Items - Ends */
   &ApprStep = &ApprStep + 1;
  
   SQLExec("SELECT MAX(APPR_STEP) FROM PS_ECL_APPR_RULES WHERE APPR_RULE_SET=:1", &ApprovalSet, &MAXSTEP);
  
   SQLExec("SELECT APPR_STEP,ROLENAME,DESCR FROM PS_ECL_APPR_RULES WHERE APPR_RULE_SET=:1 AND APPR_STEP=:2", &ApprovalSet, &ApprStep, &NextApprStep, &RoleName, &RoleNameDescr);
  
   &SQL = CreateSQL("SELECT ROLEUSER FROM PSROLEUSER WHERE ROLENAME=:1", &RoleName, &Approvers);
  
   SQLExec("SELECT MAX(SEQNO) FROM PS_ECL_TRAVEL_STA WHERE ECL_TRVL_REQ_ID=:1 ", &TravelReqID, &Seqno);
  
   If &MAXSTEP < &ApprStep Then
      &btc = "";
     
      SQLExec("SELECT 'X' FROM PS_ECL_TRAVEL_REQ WHERE ECL_TRVL_REQ_ID=:1 AND ECL_BOOKING_TYP='BT' AND ECL_TICK_STATUS<>'RCE'", &TravelReqID, &btc);
      rem WinMessage(&btc, 0);
      If IsUserInRole("TATA-ECL-MD") Then
         &MDFlag = "Y";
      Else
         &MDFlag = "N";
      End-If;
      If &CurrentRoleName = "MD" Then
         &MDFlag = "Y";
      Else
         &MDFlag = "N";
      End-If;
      If &MDFlag = "Y" Then
         &Rowset = GetLevel0()(1).GetRowset(Scroll.ECL_TRAVEL_REQ);
         &TravelAgentArray = CreateArrayRept("", 0);
         &TAArray = CreateArrayRept("", 0);
         For &i = 1 To &Rowset.ActiveRowCount
            &TravelAgent = &Rowset(&i).ECL_TRAVEL_REQ.ECL_BOOKING_TYP.Value;
            If &TravelAgent = "TA" Then
              
               If &TravelAgentArray.Find(&Rowset(&i).ECL_TRAVEL_REQ.ECL_AGENT_ID.Value) > 0 Then
                  /*Do Nothing*/
               Else
                  &TravelAgentArray [&i] = &Rowset(&i).ECL_TRAVEL_REQ.ECL_AGENT_ID.Value;
                  &Seqno = &Seqno + 1;
                  &Rec.EMPLID.Value = &Employeeid;
                  &Rec.EMPL_RCD.Value = &Empl_rcd;
                  &Rec.ECL_TRVL_REQ_ID.Value = &TravelReqID;
                  &Rec.ECL_TRVL_REQ_DT.Value = &TravelReqDate;
                  &Rec.SEQNO.Value = &Seqno;
                  &Rec.APPR_STEP.Value = &ApprStep;
                  &Rec.ROLENAME.Value = "Travel Agent";
                  &Rec.ROLEUSER.Value = &TravelAgentArray [&i];
                  &Rec.ECL_DELEGATE_ID.Value = &TravelAgentArray [&i];
                  &Rec.APPROVER_OPRID.Value = &TravelAgentArray [&i];
                  &Rec.ECL_WF_ACTION.Value = "TAP";
                  &Rec.CURRENT_STEP.Value = 1;
                  &Rec.ACTION_DTTM.Value = "";
                  &Rec.ECL_COMMENTS.Value = "";
                  &Rec.Insert();
               End-If;
            End-If;
         End-For;
         If &btc = "" Then
            &btc = %This.GetTravelBTC(&TravelReqID);
         End-If;
      End-If;
     
     
     
      If &MDFlag = "N" Then
         &agent = CreateSQL("SELECT DISTINCT ECL_AGENT_ID FROM PS_ECL_TRAVEL_REQ WHERE ECL_TRVL_REQ_ID=:1 AND ECL_BOOKING_TYP='TA'", &TravelReqID);
         While &agent.Fetch(&agents)
            &Seqno = &Seqno + 1;
            &Rec.EMPLID.Value = &Employeeid;
            &Rec.EMPL_RCD.Value = &Empl_rcd;
            &Rec.ECL_TRVL_REQ_ID.Value = &TravelReqID;
            &Rec.ECL_TRVL_REQ_DT.Value = &TravelReqDate;
            &Rec.SEQNO.Value = &Seqno;
            &Rec.APPR_STEP.Value = &ApprStep;
            &Rec.ROLENAME.Value = "Travel Agent";
            &Rec.ROLEUSER.Value = &agents;
            &Rec.ECL_DELEGATE_ID.Value = &agents;
            &Rec.APPROVER_OPRID.Value = &agents;
            &Rec.ECL_WF_ACTION.Value = "TAP";
            &Rec.CURRENT_STEP.Value = 1;
            &Rec.ACTION_DTTM.Value = "";
            &Rec.ECL_COMMENTS.Value = "";
            &Rec.Insert();
           
         End-While;
      End-If;
   End-If;
  
   /*to Insert BTC Agent in STA*/
   If &MAXSTEP < &ApprStep Then
     
      If &btc = "X" Or
            &btc = "Y" Then
         rem  WinMessage("inside btc " | &btc, 0);
         &btc_agent = CreateSQL("SELECT ROLEUSER FROM PSROLEUSER WHERE ROLENAME='TATA-ECL-BTC'");
        
        
         While &btc_agent.Fetch(&btc_agents)
           
           
            &Seqno = &Seqno + 1;
            &Rec.EMPLID.Value = &Employeeid;
            &Rec.EMPL_RCD.Value = &Empl_rcd;
            &Rec.ECL_TRVL_REQ_ID.Value = &TravelReqID;
            &Rec.ECL_TRVL_REQ_DT.Value = &TravelReqDate;
            &Rec.SEQNO.Value = &Seqno;
            &Rec.APPR_STEP.Value = &ApprStep;
            &Rec.ROLENAME.Value = "ZIPU/CIPU";
            &Rec.ROLEUSER.Value = &btc_agents;
            &Rec.ECL_DELEGATE_ID.Value = &btc_agents;
            &Rec.APPROVER_OPRID.Value = &btc_agents;
            &Rec.ECL_WF_ACTION.Value = "BTC";
            &Rec.CURRENT_STEP.Value = 1;
            &Rec.ACTION_DTTM.Value = "";
            &Rec.ECL_COMMENTS.Value = "";
            &Rec.Insert();
         End-While;
      End-If;
   End-If;
  
   While &SQL.Fetch(&Approvers)
      /*Code included for delegation check and fetching the delegated oprid for all the next approvers in travel including CFO, MD*/
      &Id = %This.DelegationOprid(&Approvers, "APPR", "DT");
     
      If All(&Id) Then
         &Appr_Id = &Id;
      Else
         &Appr_Id = &Approvers;
      End-If;
     
      REM WinMessage(&Id, 0);
      REM WinMessage(&Appr_Id, 0);
     
      /*Code ends*/
      &Seqno = &Seqno + 1;
      &Rec.EMPLID.Value = &Employeeid;
      &Rec.EMPL_RCD.Value = &Empl_rcd;
      &Rec.ECL_TRVL_REQ_ID.Value = &TravelReqID;
      &Rec.ECL_TRVL_REQ_DT.Value = &TravelReqDate;
      &Rec.SEQNO.Value = &Seqno;
      &Rec.APPR_STEP.Value = &NextApprStep;
      &Rec.ROLENAME.Value = &RoleNameDescr;
      &Rec.ROLEUSER.Value = &Approvers;
      &Rec.ECL_DELEGATE_ID.Value = &Appr_Id;
      &Rec.APPROVER_OPRID.Value = &Appr_Id;
      &Rec.ECL_WF_ACTION.Value = "PND";
      &Rec.CURRENT_STEP.Value = 1;
      &Rec.ACTION_DTTM.Value = "";
      &Rec.ECL_COMMENTS.Value = "";
      &Rec.Insert();
   End-While;
  
end-method;

method InsertClaimSTA
   /+ &ReqID as String, +/
   /+ &Approval_Type as String, +/
   /+ &Employeeid as String, +/
   /+ &Empl_rcd as Number, +/
   /+ &Category as String, +/
   /+ &TravelReqDate as Date, +/
   /+ &ApproverID as String, +/
   /+ &Seqno as Number, +/
   /+ &Action as String, +/
   /+ &Currentstep as Number, +/
   /+ &DelegatedApprover as String, +/
   /+ &Status as String +/
  
   Local Record &Rec;
   Local number &j;
   Local string &RoleName = "";
   Local string &RoleNameDescr = "";
   Local string &ActualApprover = "";
   Local string &ActionedEmpCode = "";
   Local number &Rowcount = 0;
   Local string &App_Id = "";
   Local Record &HdrRec = GetRecord(Record.ECL_CLAIMS_HDR);
   Local date &ClaimReqDate;
  
   If &ApproverID = &DelegatedApprover Then
      &ActualApprover = &ApproverID;
   Else
      &ActualApprover = &DelegatedApprover;
   End-If;
  
   If &Status = "MAP" And
         &HdrRec.ECL_CHECK_FLG.Value = "Y" Then
      If &Employeeid <> %UserId Then
         &ActionedEmpCode = %UserId;
      Else
         &ActionedEmpCode = &Employeeid;
      End-If;
   Else
      If &Status = "SB" Then
         If &Employeeid <> %UserId Then
            &ActionedEmpCode = %UserId;
         Else
            &ActionedEmpCode = &Employeeid;
         End-If;
      Else
         &App_Id = %This.DelegationOprid(&Employeeid, "RAIS", "DC");
         If All(&App_Id) Then
            &ActionedEmpCode = &App_Id;
         Else
            &ActionedEmpCode = &Employeeid;
         End-If;
         &HdrRec.ECL_RAISED_ID.Value = &ActionedEmpCode;
      End-If;
   End-If;
   rem Error (0);
   WinMessage(&Approval_Type, 0);
   If &Approval_Type = "CLAIMS-DEVIATION" Or
         &Approval_Type = "CLAIMS" Or
         &Approval_Type = "CLAIMS-MD" Then
      &Rec = CreateRecord(Record.ECL_CLAIMS_STA);
   End-If;
   If &Approval_Type = "ARF" Then
      &Rec = CreateRecord(Record.ECL_ARF_STA);
   End-If;
   rem WinMessage("&ApproverID" | &ApproverID, 0);
   If All(&ApproverID) Then
      &Rowcount = 2;
   Else
      &Rowcount = 1;
   End-If;
   <*
   If &Approval_Type = "CLAIMS-MD" Then
      &Rowcount = 1;
   End-If;
   *>
   For &j = 1 To &Rowcount
      If &Approval_Type = "CLAIMS-DEVIATION" Or
            &Approval_Type = "CLAIMS" Or
            &Approval_Type = "CLAIMS-MD" Then
         &Rec.ECL_CLAIM_REQ_ID.Value = &ReqID;
      End-If;
     
      If &Approval_Type = "ARF" Then
         &Rec.ECL_ARF_REQ_ID.Value = &ReqID;
      End-If;
     
      &Rec.EMPLID.Value = &Employeeid;
      &Rec.EMPL_RCD.Value = &Empl_rcd;
      &Rec.ECL_CATEGORY.Value = &Category;
      &Rec.ECL_REQUEST_DT.Value = &TravelReqDate;
      &Seqno = &Seqno + 1;
      &Rec.SEQNO.Value = &Seqno;
      If &j = 1 Then
         SQLExec("SELECT ROLENAME,DESCR FROM PS_ECL_APPR_RULES WHERE APPR_STEP = :1 AND APPR_RULE_SET=:2", &j, &Approval_Type, &RoleName, &RoleNameDescr);
         &Rec.APPR_STEP.Value = &j;
         &Rec.ROLENAME.Value = &RoleNameDescr;
         &Rec.ROLEUSER.Value = &Employeeid;
         &Rec.ECL_DELEGATE_ID.Value = &ActionedEmpCode;
         &Rec.APPROVER_OPRID.Value = &ActionedEmpCode;
         &Rec.ECL_WF_ACTION.Value = &Action;
         &Rec.CURRENT_STEP.Value = &Currentstep;
         &Rec.ECL_COMMENTS.Value = "";
         If &RoleNameDescr = "Originator" And
               &Currentstep = 0 Then
            &Rec.ACTION_DTTM.Value = %Datetime;
         Else
            &Rec.ACTION_DTTM.Value = "";
         End-If;
         <*If IsUserInRole("TATA-ECL-MD") Then
            &ClaimReqDate = %Date;
            %This.InsertClaimNextApprover(&ReqID, &Approval_Type, 1, 1, &Employeeid, &Empl_rcd, &Category, &ClaimReqDate);
         End-If;*>
      Else
         SQLExec("SELECT ROLENAME,DESCR FROM PS_ECL_APPR_RULES WHERE APPR_STEP = :1 AND APPR_RULE_SET=:2", &j, &Approval_Type, &RoleName, &RoleNameDescr);
         If &RoleNameDescr = "Level1 Approver" Then
            %This.InsertClaimNextApprover(&ReqID, &Approval_Type, 1, 1, &Employeeid, &Empl_rcd, &Category, %Date);
         Else
            &Rec.APPR_STEP.Value = &j;
            &Rec.ROLENAME.Value = &RoleNameDescr;
            &Rec.ROLEUSER.Value = &ApproverID;
            &Rec.ECL_DELEGATE_ID.Value = &DelegatedApprover;
            &Rec.APPROVER_OPRID.Value = &ActualApprover;
            &Rec.ECL_WF_ACTION.Value = "PND";
            &Rec.CURRENT_STEP.Value = 1;
            &Rec.ACTION_DTTM.Value = "";
            &Rec.ECL_COMMENTS.Value = "";
         End-If;
      End-If;
      &Rec.Insert();
   End-For;
  
end-method;

method InsertClaimNextApprover
   /+ &ReqID as String, +/
   /+ &Approval_Type as String, +/
   /+ &ApprStep as Number, +/
   /+ &Seqno as Number, +/
   /+ &Employeeid as String, +/
   /+ &Empl_rcd as Number, +/
   /+ &Category as String, +/
   /+ &ClaimReqDate as Date +/
   Local Record &Rec;
   Local SQL &SQL;
   Local string &NextApprStep, &RoleName, &RoleNameDescr, &Approvers;
   Local string &Id = "";
   Local string &Appr_Id = "";
   If &Approval_Type = "CLAIMS-DEVIATION" Then
      &Rec = CreateRecord(Record.ECL_CLAIMS_STA);
   End-If;
   If &Approval_Type = "CLAIMS" Then
      &Rec = CreateRecord(Record.ECL_CLAIMS_STA);
   End-If;
   If &Approval_Type = "ARF" Then
      &Rec = CreateRecord(Record.ECL_ARF_STA);
   End-If;
   If &Approval_Type = "CLAIMS-MD" Then
      &Rec = CreateRecord(Record.ECL_CLAIMS_STA);
   End-If;
   &ApprStep = &ApprStep + 1;
  
   SQLExec("SELECT APPR_STEP, ROLENAME, DESCR FROM PS_ECL_APPR_RULES WHERE APPR_RULE_SET=:1 AND APPR_STEP=:2", &Approval_Type, &ApprStep, &NextApprStep, &RoleName, &RoleNameDescr);
   &SQL = CreateSQL("SELECT ROLEUSER FROM PSROLEUSER WHERE ROLENAME=:1", &RoleName, &Approvers);
   While &SQL.Fetch(&Approvers)
      &Seqno = &Seqno + 1;
      If &Approval_Type = "CLAIMS-DEVIATION" Then
         &Rec.ECL_CLAIM_REQ_ID.Value = &ReqID;
      End-If;
      If &Approval_Type = "CLAIMS" Then
         &Rec.ECL_CLAIM_REQ_ID.Value = &ReqID;
      End-If;
      If &Approval_Type = "ARF" Then
         &Rec.ECL_ARF_REQ_ID.Value = &ReqID;
      End-If;
      If &Approval_Type = "CLAIMS-MD" Then
         &Rec.ECL_CLAIM_REQ_ID.Value = &ReqID;
      End-If;
      &Id = %This.DelegationOprid(&Approvers, "APPR", "DC");
     
      If All(&Id) Then
         &Appr_Id = &Id;
      Else
         &Appr_Id = &Approvers;
      End-If;
      &Rec.EMPLID.Value = &Employeeid;
      &Rec.EMPL_RCD.Value = &Empl_rcd;
      &Rec.ECL_CATEGORY.Value = &Category;
      &Rec.SEQNO.Value = &Seqno;
      &Rec.ECL_REQUEST_DT.Value = &ClaimReqDate;
      &Rec.APPR_STEP.Value = &NextApprStep;
      &Rec.ROLENAME.Value = &RoleNameDescr;
      &Rec.ROLEUSER.Value = &Approvers;
      rem &Rec.ECL_DELEGATE_ID.Value = &Approvers; /*commented by layeeque for delegation issue on 10-Oct-2011*/
      &Rec.ECL_DELEGATE_ID.Value = &Appr_Id; /*Included by layeeque for delegation issue on 10-Oct-2011*/
      rem &Rec.APPROVER_OPRID.Value = &Approvers; /*commented by layeeque for delegation issue on 10-Oct-2011*/
      &Rec.APPROVER_OPRID.Value = &Appr_Id;
      &Rec.ECL_WF_ACTION.Value = "PND";
      &Rec.CURRENT_STEP.Value = 1;
      &Rec.ACTION_DTTM.Value = "";
      &Rec.ECL_COMMENTS.Value = "";
      &Rec.Insert();
   End-While;
end-method;

method InsertReceivedHoldApprover
   /+ &ReqID as String, +/
   /+ &Approval_Type as String, +/
   /+ &ApprStep as Number, +/
   /+ &Seqno as Number, +/
   /+ &Employeeid as String, +/
   /+ &Empl_rcd as Number, +/
   /+ &Category as String, +/
   /+ &ClaimReqDate as Date, +/
   /+ &Action as String +/
   Local Record &Rec;
   Local SQL &SQL;
   Local string &NextApprStep, &RoleName, &RoleNameDescr, &Approvers;
   If &Approval_Type = "CLAIMS-DEVIATION" Then
      &Rec = CreateRecord(Record.ECL_CLAIMS_STA);
   End-If;
   If &Approval_Type = "CLAIMS" Then
      &Rec = CreateRecord(Record.ECL_CLAIMS_STA);
   End-If;
   If &Approval_Type = "CLAIMS-MD" Then
      &Rec = CreateRecord(Record.ECL_CLAIMS_STA);
   End-If;
   If &Approval_Type = "ARF" Then
      &Rec = CreateRecord(Record.ECL_ARF_STA);
   End-If;
  
   &ApprStep = &ApprStep + 1;
  
   SQLExec("SELECT APPR_STEP, ROLENAME, DESCR FROM PS_ECL_APPR_RULES WHERE APPR_RULE_SET=:1 AND APPR_STEP=:2", &Approval_Type, &ApprStep, &NextApprStep, &RoleName, &RoleNameDescr);
   &SQL = CreateSQL("SELECT ROLEUSER FROM PSROLEUSER WHERE ROLENAME=:1", &RoleName, &Approvers);
   While &SQL.Fetch(&Approvers)
      &Seqno = &Seqno + 1;
      If &Approval_Type = "CLAIMS-DEVIATION" Then
         &Rec.ECL_CLAIM_REQ_ID.Value = &ReqID;
      End-If;
      If &Approval_Type = "CLAIMS-MD" Then
         &Rec.ECL_CLAIM_REQ_ID.Value = &ReqID;
      End-If;
      If &Approval_Type = "CLAIMS" Then
         &Rec.ECL_CLAIM_REQ_ID.Value = &ReqID;
      End-If;
      If &Approval_Type = "ARF" Then
         &Rec.ECL_ARF_REQ_ID.Value = &ReqID;
      End-If;
      &Rec.EMPLID.Value = &Employeeid;
      &Rec.EMPL_RCD.Value = &Empl_rcd;
      &Rec.ECL_CATEGORY.Value = &Category;
      &Rec.SEQNO.Value = &Seqno;
      &Rec.ECL_REQUEST_DT.Value = &ClaimReqDate;
      &Rec.APPR_STEP.Value = &NextApprStep;
      &Rec.ROLENAME.Value = &RoleNameDescr;
      &Rec.ROLEUSER.Value = &Approvers;
      &Rec.ECL_DELEGATE_ID.Value = &Approvers;
      &Rec.APPROVER_OPRID.Value = &Approvers;
      &Rec.ECL_WF_ACTION.Value = &Action;
      &Rec.CURRENT_STEP.Value = 1;
      &Rec.ACTION_DTTM.Value = "";
      &Rec.ECL_COMMENTS.Value = "";
      &Rec.Insert();
   End-While;
end-method;

method DeviationCheck
   /+ &CurrentGrade as String, +/
   /+ &DeviationType as String, +/
   /+ &CityGrade as String, +/
   /+ &EstimatedCost as Number +/
   /+ Returns String +/
   Local string &EligibiityFlag, &Eligibilty;
   Local string &FieldValue;
   Local number &EntitlementAmount;
   If &DeviationType = "AR" Then
      SQLExec("SELECT ECL_TRVL_MOD_ELIG FROM PS_ECL_HR_LIMITS A WHERE A.SETID='TALIC' AND A.GRADE=:1 AND A.EFFDT=(SELECT MAX(A1.EFFDT) FROM PS_ECL_HR_LIMITS A1 WHERE A.SETID=A1.SETID AND A.GRADE=A1.GRADE AND A.EFFDT<=GETDATE()) AND A.EFF_STATUS='A'", &CurrentGrade, &Eligibilty);
      If &Eligibilty = "AN" Then
         &EligibiityFlag = "OFF";
      End-If;
      If &Eligibilty = "ALL" Then
         &EligibiityFlag = "ON";
      End-If;
   End-If;
  
   If &DeviationType = "NE" Then
      If &CityGrade = "A" Then
         SQLExec("SELECT A.ECL_ACITY_AMT FROM PS_ECL_HR_LIMITS A WHERE A.SETID='TALIC' AND A.GRADE=:1 AND A.EFFDT=(SELECT MAX(A1.EFFDT) FROM PS_ECL_HR_LIMITS A1 WHERE A.SETID=A1.SETID AND A.GRADE=A1.GRADE AND A.EFFDT<=GETDATE()) AND A.EFF_STATUS='A'", &CurrentGrade, &EntitlementAmount);
      End-If;
      If &CityGrade = "B" Then
         SQLExec("SELECT A.ECL_BCITY_AMT FROM PS_ECL_HR_LIMITS A WHERE A.SETID='TALIC' AND A.GRADE=:1 AND A.EFFDT=(SELECT MAX(A1.EFFDT) FROM PS_ECL_HR_LIMITS A1 WHERE A.SETID=A1.SETID AND A.GRADE=A1.GRADE AND A.EFFDT<=GETDATE()) AND A.EFF_STATUS='A'", &CurrentGrade, &EntitlementAmount);
      End-If;
     
     
      If (&EntitlementAmount - &EstimatedCost) >= 0 Then
         &EligibiityFlag = "ON";
      Else
         &EligibiityFlag = "OFF";
      End-If;
   End-If;
  
   Return &EligibiityFlag;
end-method;

method GetEntitledCost
   /+ &EmployeeGrade as String, +/
   /+ &BookingType as String, +/
   /+ &CityGrade as String, +/
   /+ &GuestHouseID as String +/
   /+ Returns Number +/
  
   Local number &Amount, &GHAmount, &GHDialyExpense;
   If &BookingType = "ST" Then
      SQLExec("SELECT A.ECL_RELATV_STY_AMT FROM PS_ECL_HR_LIMITS A WHERE A.SETID='TALIC' AND A.GRADE=:1 AND A.EFFDT=(SELECT MAX(A1.EFFDT) FROM PS_ECL_HR_LIMITS A1 WHERE A.SETID=A1.SETID AND A.GRADE=A1.GRADE AND A.EFFDT<=GETDATE()) AND A.EFF_STATUS='A'", &EmployeeGrade, &Amount);
   End-If;
  
   If &BookingType = "NE" Then
     
      If &CityGrade = "A" Then
         SQLExec("SELECT A.ECL_ACITY_AMT FROM PS_ECL_HR_LIMITS A WHERE A.SETID='TALIC' AND A.GRADE=:1 AND A.EFFDT=(SELECT MAX(A1.EFFDT) FROM PS_ECL_HR_LIMITS A1 WHERE A.SETID=A1.SETID AND A.GRADE=A1.GRADE AND A.EFFDT<=GETDATE()) AND A.EFF_STATUS='A'", &EmployeeGrade, &Amount);
      End-If;
      If &CityGrade = "B" Then
         SQLExec("SELECT A.ECL_BCITY_AMT FROM PS_ECL_HR_LIMITS A WHERE A.SETID='TALIC' AND A.GRADE=:1 AND A.EFFDT=(SELECT MAX(A1.EFFDT) FROM PS_ECL_HR_LIMITS A1 WHERE A.SETID=A1.SETID AND A.GRADE=A1.GRADE AND A.EFFDT<=GETDATE()) AND A.EFF_STATUS='A'", &EmployeeGrade, &Amount);
      End-If;
   End-If;
   If &BookingType = "GH" Then
     
      SQLExec("SELECT A.ECL_DLY_GH_AMT FROM PS_ECL_HR_LIMITS A WHERE A.SETID='TALIC' AND A.GRADE=:1 AND A.EFFDT=(SELECT MAX(A1.EFFDT) FROM PS_ECL_HR_LIMITS A1 WHERE A.SETID=A1.SETID AND A.GRADE=A1.GRADE AND A.EFFDT<=GETDATE()) AND A.EFF_STATUS='A'", &EmployeeGrade, &GHDialyExpense);
      SQLExec("SELECT G.ECL_DLY_GH_AMT FROM PS_ECL_GUEST_HOUSE G WHERE G.SETID='TALIC' AND G.ECL_BOOKING_TYP = :1 AND G.ECL_GUEST_ID=:2 AND G.EFFDT = (SELECT MAX(G1.EFFDT) FROM PS_ECL_GUEST_HOUSE G1 WHERE G.SETID=G1.SETID AND G.ECL_BOOKING_TYP=G1.ECL_BOOKING_TYP AND G.ECL_GUEST_ID=G1.ECL_GUEST_ID AND G1.EFFDT <=GETDATE())", &BookingType, &GuestHouseID, &GHAmount);
      &Amount = &GHAmount + &GHDialyExpense;
   End-If;
   /*Nishanth*/
   If &BookingType = "EH" Then
     
      If &CityGrade = "A" Then
         SQLExec("SELECT A.ECL_ACITY_AMT FROM PS_ECL_HR_LIMITS A WHERE A.SETID='TALIC' AND A.GRADE=:1 AND A.EFFDT=(SELECT MAX(A1.EFFDT) FROM PS_ECL_HR_LIMITS A1 WHERE A.SETID=A1.SETID AND A.GRADE=A1.GRADE AND A.EFFDT<=GETDATE()) AND A.EFF_STATUS='A'", &EmployeeGrade, &Amount);
      End-If;
      If &CityGrade = "B" Then
         SQLExec("SELECT A.ECL_BCITY_AMT FROM PS_ECL_HR_LIMITS A WHERE A.SETID='TALIC' AND A.GRADE=:1 AND A.EFFDT=(SELECT MAX(A1.EFFDT) FROM PS_ECL_HR_LIMITS A1 WHERE A.SETID=A1.SETID AND A.GRADE=A1.GRADE AND A.EFFDT<=GETDATE()) AND A.EFF_STATUS='A'", &EmployeeGrade, &Amount);
      End-If;
     
   End-If;
   /*Nishanth*/
  
   If &BookingType = "09" Then
      SQLExec("SELECT ECL_MOB_EXP_AMT FROM PS_ECL_HR_LIMITS WHERE GRADE = :1", &EmployeeGrade, &Amount);
   End-If;
   Return &Amount;
end-method;


method CheckDelegation
   /+ &Ecode as String, +/
   /+ &DelegationAction as String, +/
   /+ &Component as String +/
   /+ Returns String +/
   Local string &IsDelegated = "";
  
   If &Component = "ECL_CLAIM_REQ_HOME" Or
         &Component = "ECL_CLAIMS_TRVL" Or
         &Component = "ECL_CLAIM_BUSINESS" Or
         &Component = "ECL_CLAIMS_ARF" Then
     
      SQLExec("SELECT 'Y' FROM PS_ECL_DELEGATION WHERE EMPLID=:1 AND ECL_DELEG_ACTION=:2 AND ECL_DELEGATE_TYPE IN ('DC','DB') AND CONVERT(VARCHAR(10),getdate(),111) BETWEEN FROM_DT AND TO_DT AND ECL_DELEGAT_STATUS='APV' AND ECL_DELEG_RVK_FLG='N'", &Ecode, &DelegationAction, &IsDelegated);
   End-If;
  
   If &Component = "ECL_TRVL_REQ_HOME" Or
         &Component = "ECL_DEL_MGR_TR_APR" Or
         &Component = "ECL_TRVL_TRGT_APPR" Then /*Nishanth*/
      SQLExec("SELECT 'Y' FROM PS_ECL_DELEGATION WHERE EMPLID=:1 AND ECL_DELEG_ACTION=:2 AND ECL_DELEGATE_TYPE IN ('DT','DB') AND CONVERT(VARCHAR(10),getdate(),111) BETWEEN FROM_DT AND TO_DT AND ECL_DELEGAT_STATUS='APV' AND ECL_DELEG_RVK_FLG='N'", &Ecode, &DelegationAction, &IsDelegated);
   End-If;
  
   Return &IsDelegated;
end-method;

method ApprovalDelegationCheck
   /+ &Ecode as String, +/
   /+ &Delegationtype as String +/
   /+ Returns String +/
   Local string &DelegateTo = "";
  
   SQLExec("SELECT ECL_DELEGATE_TO FROM PS_ECL_DELEGATION WHERE EMPLID = :1 AND ECL_DELEG_ACTION = 'APPR' AND ECL_DELEGATE_TYPE IN(:2, 'DB') AND FROM_DT <= CONVERT(VARCHAR(10),GETDATE(),111) AND TO_DT >= CONVERT(VARCHAR(10),GETDATE(),111) AND ECL_DELEGAT_STATUS = 'APV' AND ECL_DELEG_RVK_FLG = 'N'", &Ecode, &Delegationtype, &DelegateTo);
  
   <*If &DBoth <> "Y" Then
      SQLExec("SELECT 'Y' FROM PS_ECL_DELEGATION WHERE EMPLID=:1 AND ECL_DELEG_ACTION='APPR' AND ECL_DELEGATE_TYPE='DT' AND FROM_DT <=CONVERT(VARCHAR(10),getdate(),111) AND TO_DT >=CONVERT(VARCHAR(10),getdate(),111) AND ECL_DELEGAT_STATUS='APV' AND ECL_DELEG_RVK_FLG='N'", &Ecode, &DTravel);
      SQLExec("SELECT 'Y' FROM PS_ECL_DELEGATION WHERE EMPLID=:1 AND ECL_DELEG_ACTION='APPR' AND ECL_DELEGATE_TYPE='DC' AND FROM_DT <=CONVERT(VARCHAR(10),getdate(),111) AND TO_DT >=CONVERT(VARCHAR(10),getdate(),111) AND ECL_DELEGAT_STATUS='APV' AND ECL_DELEG_RVK_FLG='N'", &Ecode, &DClaims);
   End-If;
  
   If &DBoth = "Y" Then
      &DType = "DB";
   End-If;
   If &DClaims = "Y" Then
      &DType = "DC";
   End-If;
   If &DTravel = "Y" Then
      &DType = "DT";
   End-If;
  
   SQLExec("SELECT ECL_DELEGATE_TO FROM PS_ECL_DELEGATION WHERE EMPLID=:1 AND ECL_DELEG_ACTION='APPR' AND ECL_DELEGATE_TYPE=:2 AND FROM_DT <=CONVERT(VARCHAR(10),getdate(),111) AND TO_DT >=CONVERT(VARCHAR(10),getdate(),111) AND ECL_DELEGAT_STATUS='APV' AND ECL_DELEG_RVK_FLG='N'", &Ecode, &DType, &DelegateTo);*>
   Return &DelegateTo;
end-method;


method RevokeDelegation
   /+ &EmplCode as String, +/
   /+ &DelegationAction as String, +/
   /+ &DelegationType as String, +/
   /+ &Seqno as Number, +/
   /+ &DelegatedId as String, +/
   /+ &FromDate as Date, +/
   /+ &ToDate as Date +/
  
   If &DelegationType = "DT" Then
      rem SQLExec("UPDATE PS_ECL_DELEGATION SET ECL_DELEGAT_STATUS='RVK',LASTUPDOPRID=:1,LASTUPDDTTM=:2,ECL_DELEG_RVK_FLG='Y' WHERE EMPLID=:3 AND EMPL_RCD=0 AND ECL_DELEG_ACTION=:4 AND ECL_DELEGATE_TYPE=:5 AND SEQNO=:6", %OperatorId, %Datetime, &EmplCode, &DelegationAction, &DelegationType, &Seqno);
      <*If &DelegationAction = "RAIS" Then
         SQLExec("UPDATE PS_ECL_TRAVEL_STA SET APPROVER_OPRID=:1 WHERE ROLEUSER=:1 AND APPROVER_OPRID=:2 AND ECL_DELEGATE_ID=:2 AND ROLENAME='Originator' AND ECL_TRVL_REQ_DT >=:3 AND ECL_TRVL_REQ_DT<=:4", &EmplCode, &DelegatedId, &FromDate, &ToDate);
      End-If; - Commented on 19/4/2011 - basis discussion on the claims scenario revoke concept*>
      If &DelegationAction = "RAIS" Then
         SQLExec("UPDATE PS_ECL_TRAVEL_HDR SET ECL_RAISED_BY = :1 WHERE EMPLID = :1 AND ECL_TR_STATUS = 'S' AND ECL_RAISED_BY = :2", &EmplCode, &DelegatedId);
      End-If;
      If &DelegationAction = "APPR" Then
         SQLExec("UPDATE PS_ECL_TRAVEL_STA SET APPROVER_OPRID=:1 WHERE ROLEUSER=:1 AND ECL_DELEGATE_ID=:2 AND APPROVER_OPRID=:2 AND CURRENT_STEP=1", &EmplCode, &DelegatedId);
      End-If;
   End-If;
   If &DelegationType = "DC" Then
     
      If &DelegationAction = "RAIS" Then
         SQLExec("UPDATE PS_ECL_CLAIMS_STA SET APPROVER_OPRID=:1 WHERE ROLEUSER=:1 AND APPROVER_OPRID=:2 AND ECL_DELEGATE_ID=:2 AND ROLENAME='Originator' AND CURRENT_STEP=1", &EmplCode, &DelegatedId);
         SQLExec("UPDATE PS_ECL_CLAIMS_HDR SET ECL_RAISED_ID = :1 WHERE EMPLID = :1 AND ECL_STATUS IN ('SA', 'RT', 'QY') AND ECL_RAISED_ID = :2", &EmplCode, &DelegatedId);
      End-If;
      If &DelegationAction = "APPR" Then
         SQLExec("UPDATE PS_ECL_CLAIMS_STA SET APPROVER_OPRID=:1 WHERE ROLEUSER=:1 AND ECL_DELEGATE_ID=:2 AND APPROVER_OPRID=:2 AND CURRENT_STEP=1 AND ROLENAME IN ('Approver','Deviation Approver')", &EmplCode, &DelegatedId);
      End-If;
   End-If;
  
   If &DelegationType = "DB" Then
      If &DelegationAction = "RAIS" Then
         SQLExec("UPDATE PS_ECL_TRAVEL_HDR SET ECL_RAISED_BY = :1 WHERE EMPLID = :1 AND ECL_TR_STATUS = 'S' AND ECL_RAISED_BY = :2", &EmplCode, &DelegatedId);
         SQLExec("UPDATE PS_ECL_CLAIMS_STA SET APPROVER_OPRID=:1 WHERE ROLEUSER=:1 AND APPROVER_OPRID=:2 AND ECL_DELEGATE_ID=:2 AND ROLENAME='Originator' AND CURRENT_STEP=1", &EmplCode, &DelegatedId);
         SQLExec("UPDATE PS_ECL_CLAIMS_HDR SET ECL_RAISED_ID = :1 WHERE EMPLID = :1 AND ECL_STATUS IN ('SA', 'RT', 'QY') AND ECL_RAISED_ID = :2", &EmplCode, &DelegatedId);
      End-If;
      If &DelegationAction = "APPR" Then
         SQLExec("UPDATE PS_ECL_TRAVEL_STA SET APPROVER_OPRID=:1 WHERE ROLEUSER=:1 AND ECL_DELEGATE_ID=:2 AND APPROVER_OPRID=:2 AND CURRENT_STEP=1", &EmplCode, &DelegatedId);
         SQLExec("UPDATE PS_ECL_CLAIMS_STA SET APPROVER_OPRID=:1 WHERE ROLEUSER=:1 AND ECL_DELEGATE_ID=:2 AND APPROVER_OPRID=:2 AND CURRENT_STEP=1", &EmplCode, &DelegatedId);
      End-If;
   End-If;
  
end-method;

method ApprovalDelegation
   /+ &Ecode as String, +/
   /+ &DelegateTo as String, +/
   /+ &DelegationType as String, +/
   /+ &DelegationAction as String +/
  
  
   If &DelegationType = "DT" Then
      If &DelegationAction = "RAIS" Then
         SQLExec("UPDATE PS_ECL_TRAVEL_HDR SET ECL_RAISED_BY = :1 WHERE EMPLID = :2 AND ECL_TR_STATUS = 'S' AND ECL_RAISED_BY = :2", &DelegateTo, &Ecode);
      End-If;
      If &DelegationAction = "APPR" Then
         SQLExec("UPDATE PS_ECL_TRAVEL_STA SET APPROVER_OPRID=:1, ECL_DELEGATE_ID=:1 WHERE APPROVER_OPRID=:2 AND ROLEUSER=:2 AND ECL_WF_ACTION='PND' AND CURRENT_STEP=1", &DelegateTo, &Ecode);
      End-If;
   End-If;
  
   If &DelegationType = "DC" Then
      If &DelegationAction = "RAIS" Then
         SQLExec("UPDATE PS_ECL_CLAIMS_STA SET APPROVER_OPRID=:1, ECL_DELEGATE_ID=:1 WHERE ROLEUSER=:2 AND APPROVER_OPRID=:2 AND ECL_DELEGATE_ID=:2 AND ROLENAME='Originator' AND CURRENT_STEP=1", &DelegateTo, &Ecode);
         SQLExec("UPDATE PS_ECL_CLAIMS_HDR SET ECL_RAISED_ID = :1 WHERE EMPLID = :2 AND ECL_STATUS IN ('SA', 'RT', 'QY') AND ECL_RAISED_ID = :2", &DelegateTo, &Ecode);
      End-If;
      If &DelegationAction = "APPR" Then
         SQLExec("UPDATE PS_ECL_CLAIMS_STA SET APPROVER_OPRID=:1, ECL_DELEGATE_ID=:1 WHERE APPROVER_OPRID=:2 AND ROLEUSER=:2 AND ECL_WF_ACTION='PND' AND CURRENT_STEP=1 AND ROLENAME IN ('Approver','Deviation Approver')", &DelegateTo, &Ecode);
      End-If;
   End-If;
  
   If &DelegationType = "DB" Then
      If &DelegationAction = "RAIS" Then
         SQLExec("UPDATE PS_ECL_TRAVEL_HDR SET ECL_RAISED_BY = :1 WHERE EMPLID = :2 AND ECL_TR_STATUS = 'S' AND ECL_RAISED_BY = :2", &DelegateTo, &Ecode);
         SQLExec("UPDATE PS_ECL_CLAIMS_STA SET APPROVER_OPRID=:1, ECL_DELEGATE_ID=:1 WHERE ROLEUSER=:2 AND APPROVER_OPRID=:2 AND ECL_DELEGATE_ID=:2 AND ROLENAME = 'Originator' AND CURRENT_STEP=1", &DelegateTo, &Ecode);
         SQLExec("UPDATE PS_ECL_CLAIMS_HDR SET ECL_RAISED_ID = :1 WHERE EMPLID = :2 AND ECL_STATUS IN ('SA', 'RT', 'QY') AND ECL_RAISED_ID = :2", &DelegateTo, &Ecode);
      End-If;
      If &DelegationAction = "APPR" Then
         SQLExec("UPDATE PS_ECL_TRAVEL_STA SET APPROVER_OPRID=:1, ECL_DELEGATE_ID=:1 WHERE APPROVER_OPRID=:2 AND ROLEUSER=:2 AND ECL_WF_ACTION='PND' AND CURRENT_STEP=1", &DelegateTo, &Ecode);
         SQLExec("UPDATE PS_ECL_CLAIMS_STA SET APPROVER_OPRID=:1, ECL_DELEGATE_ID=:1 WHERE APPROVER_OPRID=:2 AND ROLEUSER=:2 AND ECL_WF_ACTION='PND' AND CURRENT_STEP=1 AND ROLENAME IN ('Approver','Deviation Approver')", &DelegateTo, &Ecode);
      End-If;
   End-If;
end-method;


method GetMaxSequence
   /+ &TravelRequestId as String +/
   /+ Returns Number +/
   Local number &SEQNO;
  
   SQLExec("Select MAX(ECL_TICKET_SEQ) From PS_ECL_TRAVEL_REQ Where ECL_TRVL_REQ_ID=:1", &TravelRequestId, &SEQNO);
   Return &SEQNO;
end-method;

method CheckDepartmentBudget
   /+ &DepartmentId as String, +/
   /+ &OverAllExpense as Number +/
   /+ Returns String +/
   Local string &CostCenter;
   Local number &AvailableBudget, &AmountUtilized;
   Local string &BudgetExceedFlag = "N";
  
   SQLExec("SELECT DISTINCT DESCRSHORT FROM PS_DEPT_TBL D WHERE D.EFFDT=(SELECT MAX(EFFDT) FROM PS_DEPT_TBL D_ED WHERE D_ED.SETID=D.SETID AND D_ED.DEPTID=D.DEPTID AND D_ED.EFFDT<=GETDATE()) AND SETID='TALIC' AND EFF_STATUS='A' AND DEPTID =:1", &DepartmentId, &CostCenter);
  
   SQLExec("SELECT D.BUDGET_ACTUAL_AMT FROM PS_ECL_BUDGET_DEPT D WHERE D.DESCRSHORT =:1  AND D.EFFDT = (SELECT MAX(D1.EFFDT) FROM PS_ECL_BUDGET_DEPT D1 WHERE D.DESCRSHORT = D1.DESCRSHORT AND D1.EFFDT<=GETDATE()) AND D.EFFSEQ = (SELECT MAX(D2.EFFSEQ) FROM PS_ECL_BUDGET_DEPT D2 WHERE D.DESCRSHORT = D2.DESCRSHORT AND D.EFFDT=D2.EFFDT)", &CostCenter, &AvailableBudget);
  
   rem MessageBox(0, "", 0, 0, "&OverAllExpense => " | &OverAllExpense | " &AvailableBudget = " | &AvailableBudget | " &DepartmentId = " | &DepartmentId);
   If &OverAllExpense > &AvailableBudget Then
      &BudgetExceedFlag = "Y";
      rem MessageBox(0, "", 0, 0, "&BudgetExceedFlag => " | &BudgetExceedFlag);
     
   End-If;
   /*If &BudgetExceedFlag = "N" Then
      &AmountUtilized = &AvailableBudget - &OverAllExpense;
     
      REM  SQLExec("UPDATE D SET ECL_BUDGET_UTILIZE = :1 FROM PS_ECL_BUDGET_DEPT D WHERE D.DESCRSHORT =:2 AND D.EFFDT = (SELECT MAX(D1.EFFDT) FROM PS_ECL_BUDGET_DEPT D1 WHERE D.DESCRSHORT = D1.DESCRSHORT AND D.EFFDT<=GETDATE()) AND D.EFFSEQ = (SELECT MAX(D2.EFFSEQ) FROM PS_ECL_BUDGET_DEPT D2 WHERE D.DESCRSHORT = D2.DESCRSHORT AND D.EFFDT=D2.EFFDT)", &AmountUtilized, &CostCenter);
    End-If;*/
   Return &BudgetExceedFlag;
end-method;

method AdjustDepartmentBudget
   /+ &DepartmentId as String, +/
   /+ &BudgetAction as String, +/
   /+ &OverAllExpense as Number +/
   Local string &CostCenter;
   Local number &AvailableBudget, &AmountUtilized;
   Local number &TotalUtilizedAmount, &OpeningAmount;
  
   &AvailableBudget = 0;
   &AmountUtilized = 0;
   &TotalUtilizedAmount = 0;
   &OpeningAmount = 0;
   rem MessageBox(0, "", 0, 0, "&OverAllExpense = " | &OverAllExpense);
   rem WinMessage("&OverAllExpense = " | &OverAllExpense, 0);
   SQLExec("SELECT DISTINCT DESCRSHORT FROM PS_DEPT_TBL D WHERE D.EFFDT=(SELECT MAX(EFFDT) FROM PS_DEPT_TBL D_ED WHERE D_ED.SETID=D.SETID AND D_ED.DEPTID=D.DEPTID AND D_ED.EFFDT<=GETDATE()) AND SETID='TALIC' AND EFF_STATUS='A' AND DEPTID =:1", &DepartmentId, &CostCenter);
  
   SQLExec("SELECT D.ECL_BUDGET_OPENING,D.BUDGET_ACTUAL_AMT, D.ECL_BUDGET_UTILIZE FROM PS_ECL_BUDGET_DEPT D WHERE D.DESCRSHORT =:1  AND D.EFFDT = (SELECT MAX(D1.EFFDT) FROM PS_ECL_BUDGET_DEPT D1 WHERE D.DESCRSHORT = D1.DESCRSHORT AND D1.EFFDT<=GETDATE()) AND D.EFFSEQ = (SELECT MAX(D2.EFFSEQ) FROM PS_ECL_BUDGET_DEPT D2 WHERE D.DESCRSHORT = D2.DESCRSHORT AND D.EFFDT=D2.EFFDT)", &CostCenter, &OpeningAmount, &AvailableBudget, &AmountUtilized);
  
   If &BudgetAction = "D" Then
     
      &AvailableBudget = &AvailableBudget - &OverAllExpense;
      &AmountUtilized = &AmountUtilized + &OverAllExpense;
      rem MessageBox(0, "", 0, 0, "&AvailableBudget = " | &AvailableBudget | " &AmountUtilized = " | &AmountUtilized);
     
      SQLExec("UPDATE D SET ECL_BUDGET_UTILIZE = :1,BUDGET_ACTUAL_AMT=:2 FROM PS_ECL_BUDGET_DEPT D WHERE D.DESCRSHORT =:3 AND D.EFFDT = (SELECT MAX(D1.EFFDT) FROM PS_ECL_BUDGET_DEPT D1 WHERE D.DESCRSHORT = D1.DESCRSHORT AND D.EFFDT<=GETDATE()) AND D.EFFSEQ = (SELECT MAX(D2.EFFSEQ) FROM PS_ECL_BUDGET_DEPT D2 WHERE D.DESCRSHORT = D2.DESCRSHORT AND D.EFFDT=D2.EFFDT)", &AmountUtilized, &AvailableBudget, &CostCenter);
     
     
   End-If;
   If &BudgetAction = "A" Then
      REM WinMessage("inside add budget - &OverAllExpense = " | &OverAllExpense, 0);
      &AvailableBudget = &AvailableBudget + &OverAllExpense;
      &AmountUtilized = &AmountUtilized - &OverAllExpense;
      REM WinMessage("inside add budget - &OverAllExpense = " | &OverAllExpense, 0);
      rem MessageBox(0, "", 0, 0, "&AvailableBudget = " | &AvailableBudget | " &AmountUtilized = " | &AmountUtilized);
     
      REM Error (0);
      SQLExec("UPDATE D SET ECL_BUDGET_UTILIZE = :1,BUDGET_ACTUAL_AMT=:2 FROM PS_ECL_BUDGET_DEPT D WHERE D.DESCRSHORT =:3 AND D.EFFDT = (SELECT MAX(D1.EFFDT) FROM PS_ECL_BUDGET_DEPT D1 WHERE D.DESCRSHORT = D1.DESCRSHORT AND D.EFFDT<=GETDATE()) AND D.EFFSEQ = (SELECT MAX(D2.EFFSEQ) FROM PS_ECL_BUDGET_DEPT D2 WHERE D.DESCRSHORT = D2.DESCRSHORT AND D.EFFDT=D2.EFFDT)", &AmountUtilized, &AvailableBudget, &CostCenter);
     
   End-If;
end-method;

method GetCostCenter
   /+ &DepartmentId as String +/
   /+ Returns String +/
   Local string &CostCenter;
   SQLExec("SELECT DISTINCT DESCRSHORT FROM PS_DEPT_TBL D WHERE D.EFFDT=(SELECT MAX(EFFDT) FROM PS_DEPT_TBL D_ED WHERE D_ED.SETID=D.SETID AND D_ED.DEPTID=D.DEPTID AND D_ED.EFFDT<=GETDATE()) AND SETID='TALIC' AND EFF_STATUS='A' AND DEPTID =:1", &DepartmentId, &CostCenter);
   Return &CostCenter;
end-method;

method GetAvailableBudget
   /+ &CostCenter as String +/
   /+ Returns Number +/
  
   Local number &AvailableBudget;
   SQLExec("SELECT D.BUDGET_ACTUAL_AMT FROM PS_ECL_BUDGET_DEPT D WHERE D.DESCRSHORT =:1  AND D.EFFDT = (SELECT MAX(D1.EFFDT) FROM PS_ECL_BUDGET_DEPT D1 WHERE D.DESCRSHORT = D1.DESCRSHORT AND D1.EFFDT<=GETDATE()) AND D.EFFSEQ = (SELECT MAX(D2.EFFSEQ) FROM PS_ECL_BUDGET_DEPT D2 WHERE D.DESCRSHORT = D2.DESCRSHORT AND D.EFFDT=D2.EFFDT)", &CostCenter, &AvailableBudget);
  
   Return &AvailableBudget;
end-method;

method GetBudgetApprover
   /+ &CostCenter as String +/
   /+ Returns String +/
   Local string &Approver;
   SQLExec("SELECT D.ECL_BUDGET_OWNER FROM PS_ECL_BUDGET_DEPT D WHERE D.DESCRSHORT =:1  AND D.EFFDT = (SELECT MAX(D1.EFFDT) FROM PS_ECL_BUDGET_DEPT D1 WHERE D.DESCRSHORT = D1.DESCRSHORT AND D1.EFFDT<=GETDATE()) AND D.EFFSEQ = (SELECT MAX(D2.EFFSEQ) FROM PS_ECL_BUDGET_DEPT D2 WHERE D.DESCRSHORT = D2.DESCRSHORT AND D.EFFDT=D2.EFFDT)", &CostCenter, &Approver);
   Return &Approver;
end-method;


method InsertInterimBudget
   /+ &CostCenter as String, +/
   /+ &InterimBudgetCost as Number +/
  
   Local Record &Record;
   Local number &EffSeq, &BudgetCost, &BudgetOpening, &BudgetUtilized, &BudgetBalance, &IterimBudgetOpening;
   Local date &EffDate;
   Local string &BudgetPeriod, &BudgetOwner;
  
   SQLExec("SELECT D.EFFDT,D.EFFSEQ,D.ECL_BUDGET_OWNER,D.ECL_BUDGET_OPENING,D.ECL_BUDGET_UTILIZE,D.BUDGET_ACTUAL_AMT FROM PS_ECL_BUDGET_DEPT D WHERE D.DESCRSHORT =:1  AND D.EFFDT = (SELECT MAX(D1.EFFDT) FROM PS_ECL_BUDGET_DEPT D1 WHERE D.DESCRSHORT = D1.DESCRSHORT AND D1.EFFDT<=GETDATE()) AND D.EFFSEQ = (SELECT MAX(D2.EFFSEQ) FROM PS_ECL_BUDGET_DEPT D2 WHERE D.DESCRSHORT = D2.DESCRSHORT AND D.EFFDT=D2.EFFDT)", &CostCenter, &EffDate, &EffSeq, &BudgetOwner, &BudgetOpening, &BudgetUtilized, &BudgetBalance);
   &Record = CreateRecord(Record.ECL_BUDGET_DEPT);
  
   If &EffDate = %Date Then
      &EffSeq = &EffSeq + 1;
   Else
      &EffSeq = 0;
   End-If;
   REM &IterimBudgetOpening = &InterimBudgetCost + &BudgetBalance;
   REM &IterimBudgetOpening = &InterimBudgetCost;
   &IterimBudgetOpening = &BudgetOpening + &InterimBudgetCost;
   &Record.DESCRSHORT.Value = &CostCenter;
   &Record.EFFDT.Value = %Date;
   &Record.EFFSEQ.Value = &EffSeq;
   &Record.ECL_PERIODS.Value = "Interim";
   &Record.ECL_BUDGET_OWNER.Value = &BudgetOwner;
   &Record.BUDGETED_COST.Value = &InterimBudgetCost;
   REM &Record.ECL_BUDGET_OPENING.Value = &IterimBudgetOpening;
   &Record.ECL_BUDGET_OPENING.Value = &BudgetOpening + &InterimBudgetCost;
   REM &Record.ECL_BUDGET_UTILIZE.Value = 0;
   &Record.ECL_BUDGET_UTILIZE.Value = &BudgetUtilized;
  
   REM &Record.BUDGET_ACTUAL_AMT.Value = &IterimBudgetOpening;
   &Record.BUDGET_ACTUAL_AMT.Value = &IterimBudgetOpening - &BudgetUtilized;
   &Record.LASTUPDOPRID.Value = %OperatorId;
   &Record.LASTUPDDTTM.Value = %Datetime;
   &Record.Insert();
end-method;

method GetNextUserEmail
   /+ &Ecode as String +/
   /+ Returns String +/
  
   Return "";
end-method;

method GetNextApprover
  
end-method;

<*method InsertArfSta
   /+ &ReqID as String, +/
   /+ &Employeeid as String, +/
   /+ &Empl_rcd as Number, +/
   /+ &TravelReqDate as Date, +/
   /+ &ApproverID as String, +/
   /+ &Seqno as Number, +/
   /+ &Action as String, +/
   /+ &CurrentStep as Number, +/
   /+ &UserRole as String +/
   Local Record &Rec;
   Local number &j;
   Local string &RoleName, &RoleNameDescr;
   Local number &Rowcount = 0;
  
   &Rec = CreateRecord(Record.ECL_ARF_STA);
  
   If All(&ApproverID) Then
      &Rowcount = 2;
   Else
      &Rowcount = 1;
   End-If;
   If &UserRole = "MD" Then
      &Rec.EMPLID.Value = &Employeeid;
      &Rec.EMPL_RCD.Value = &Empl_rcd;
      &Rec.ECL_ARF_REQ_ID.Value = &ReqID;
      &Rec.ECL_REQUEST_DT.Value = &TravelReqDate;
      &Rec.SEQNO.Value = 1;
      &Rec.APPR_STEP.Value = 1;
      &Rec.ROLENAME.Value = "MD";
      &Rec.ROLEUSER.Value = &Employeeid;
      &Rec.ECL_DELEGATE_ID.Value = %UserId;
      &Rec.APPROVER_OPRID.Value = &Employeeid;
      &Rec.ECL_WF_ACTION.Value = "APV";
      &Rec.ACTION_DTTM.Value = %Datetime;
      &Rec.ECL_COMMENTS.Value = "";
      &Rec.Insert();
      %This.InsertArfNextApprover(&ReqID, "ARF", 1, 1, &Employeeid, &Empl_rcd, %Date);
     
   End-If;
   If &UserRole <> "MD" Then
     
      For &j = 1 To &Rowcount
        
         &Rec.ECL_ARF_REQ_ID.Value = &ReqID;
         &Rec.EMPLID.Value = &Employeeid;
         &Rec.EMPL_RCD.Value = &Empl_rcd;
         &Rec.ECL_REQUEST_DT.Value = &TravelReqDate;
        
         &Seqno = &Seqno + 1;
         &Rec.SEQNO.Value = &Seqno;
        
         If &j = 1 Then
            SQLExec("SELECT ROLENAME,DESCR FROM PS_ECL_APPR_RULES WHERE APPR_STEP = :1", &j, &RoleName, &RoleNameDescr);
            &Rec.APPR_STEP.Value = &j;
            &Rec.ROLENAME.Value = &RoleNameDescr;
            &Rec.ROLEUSER.Value = &Employeeid;
            &Rec.ECL_DELEGATE_ID.Value = &Employeeid;
            &Rec.APPROVER_OPRID.Value = &Employeeid;
            &Rec.ECL_WF_ACTION.Value = &Action;
            &Rec.CURRENT_STEP.Value = &CurrentStep;
            &Rec.ACTION_DTTM.Value = %Datetime;
            &Rec.ECL_COMMENTS.Value = "";
         Else
            SQLExec("SELECT ROLENAME,DESCR FROM PS_ECL_APPR_RULES WHERE APPR_STEP = :1", &j, &RoleName, &RoleNameDescr);
            &Rec.APPR_STEP.Value = &j;
            &Rec.ROLENAME.Value = &RoleNameDescr;
            &Rec.ROLEUSER.Value = &ApproverID;
            &Rec.ECL_DELEGATE_ID.Value = &ApproverID;
            &Rec.APPROVER_OPRID.Value = &ApproverID;
            &Rec.ECL_WF_ACTION.Value = "PND";
            &Rec.CURRENT_STEP.Value = 1;
            &Rec.ACTION_DTTM.Value = "";
            &Rec.ECL_COMMENTS.Value = "";
         End-If;
         &Rec.Insert();
      End-For;
   End-If;
end-method;

method InsertArfNextApprover
   /+ &ReqID as String, +/
   /+ &Approval_Type as String, +/
   /+ &ApprStep as Number, +/
   /+ &Seqno as Number, +/
   /+ &Employeeid as String, +/
   /+ &Empl_rcd as Number, +/
   /+ &ArfReqDate as Date +/
  
   Local Record &Rec;
   Local SQL &SQL;
   Local string &NextApprStep, &RoleName, &RoleNameDescr, &Approvers, &deptid;
   Local string &setid = "TALIC";
   &Rec = CreateRecord(Record.ECL_ARF_STA);
  
   &ApprStep = &ApprStep + 1;
  
   SQLExec("SELECT APPR_STEP, ROLENAME, DESCR FROM PS_ECL_APPR_RULES WHERE APPR_RULE_SET=:1 AND APPR_STEP=:2", &Approval_Type, &ApprStep, &NextApprStep, &RoleName, &RoleNameDescr);
   &SQL = CreateSQL("SELECT ROLEUSER FROM PSROLEUSER WHERE ROLENAME=:1", &RoleName, &Approvers);
   While &SQL.Fetch(&Approvers)
      &Seqno = &Seqno + 1;
      &Rec.ECL_ARF_REQ_ID.Value = &ReqID;
      &Rec.EMPLID.Value = &Employeeid;
      &Rec.EMPL_RCD.Value = &Empl_rcd;
      &Rec.SEQNO.Value = &Seqno;
      &Rec.ECL_REQUEST_DT.Value = &ArfReqDate;
      &Rec.APPR_STEP.Value = &NextApprStep;
      &Rec.ROLENAME.Value = &RoleNameDescr;
      &Rec.ROLEUSER.Value = &Approvers;
      &Rec.ECL_DELEGATE_ID.Value = &Approvers;
      &Rec.APPROVER_OPRID.Value = &Approvers;
      &Rec.ECL_WF_ACTION.Value = "PND";
      &Rec.CURRENT_STEP.Value = 1;
      &Rec.ACTION_DTTM.Value = "";
      &Rec.ECL_COMMENTS.Value = "";
      &Rec.Insert();
   End-While;
  
end-method;
*>

method InsertArfSta
   /+ &ReqID as String, +/
   /+ &Employeeid as String, +/
   /+ &Empl_rcd as Number, +/
   /+ &TravelReqDate as Date, +/
   /+ &ApproverID as String, +/
   /+ &Seqno as Number, +/
   /+ &Action as String, +/
   /+ &CurrentStep as Number, +/
   /+ &UserRole as String +/
   Local Record &Rec;
   Local number &j;
   Local string &RoleName, &RoleNameDescr;
   Local number &Rowcount = 0;
   &Rec = CreateRecord(Record.ECL_ARF_STA);
   If All(&ApproverID) Then
      &Rowcount = 2;
   Else
      &Rowcount = 1;
   End-If;
   If &UserRole = "MD" Then
      &Rec.EMPLID.Value = &Employeeid;
      &Rec.EMPL_RCD.Value = &Empl_rcd;
      &Rec.ECL_ARF_REQ_ID.Value = &ReqID;
      &Rec.ECL_REQUEST_DT.Value = &TravelReqDate;
      &Rec.SEQNO.Value = 1;
      &Rec.APPR_STEP.Value = 1;
      &Rec.ROLENAME.Value = "MD";
      &Rec.ROLEUSER.Value = &Employeeid;
      &Rec.ECL_DELEGATE_ID.Value = %UserId;
      &Rec.APPROVER_OPRID.Value = &Employeeid;
      &Rec.ECL_WF_ACTION.Value = "APV";
      &Rec.ACTION_DTTM.Value = %Datetime;
      &Rec.ECL_COMMENTS.Value = "";
      &Rec.Insert();
      %This.InsertArfNextApprover(&ReqID, "ARF-MD", 1, 1, &Employeeid, &Empl_rcd, %Date);
     
   End-If;
  
   If &UserRole <> "MD" Then
     
      For &j = 1 To &Rowcount
        
         &Rec.ECL_ARF_REQ_ID.Value = &ReqID;
         &Rec.EMPLID.Value = &Employeeid;
         &Rec.EMPL_RCD.Value = &Empl_rcd;
         &Rec.ECL_REQUEST_DT.Value = &TravelReqDate;
        
         &Seqno = &Seqno + 1;
         &Rec.SEQNO.Value = &Seqno;
        
         If &j = 1 Then
            SQLExec("SELECT ROLENAME,DESCR FROM PS_ECL_APPR_RULES WHERE APPR_STEP = :1", &j, &RoleName, &RoleNameDescr);
            &Rec.APPR_STEP.Value = &j;
            &Rec.ROLENAME.Value = &RoleNameDescr;
            &Rec.ROLEUSER.Value = &Employeeid;
            &Rec.ECL_DELEGATE_ID.Value = &Employeeid;
            &Rec.APPROVER_OPRID.Value = &Employeeid;
            &Rec.ECL_WF_ACTION.Value = &Action;
            &Rec.CURRENT_STEP.Value = &CurrentStep;
            &Rec.ACTION_DTTM.Value = %Datetime;
            &Rec.ECL_COMMENTS.Value = "";
         Else
            SQLExec("SELECT ROLENAME,DESCR FROM PS_ECL_APPR_RULES WHERE APPR_STEP = :1", &j, &RoleName, &RoleNameDescr);
            &Rec.APPR_STEP.Value = &j;
            &Rec.ROLENAME.Value = &RoleNameDescr;
            &Rec.ROLEUSER.Value = &ApproverID;
            &Rec.ECL_DELEGATE_ID.Value = &ApproverID;
            &Rec.APPROVER_OPRID.Value = &ApproverID;
            &Rec.ECL_WF_ACTION.Value = "PND";
            &Rec.CURRENT_STEP.Value = 1;
            &Rec.ACTION_DTTM.Value = "";
            &Rec.ECL_COMMENTS.Value = "";
         End-If;
         &Rec.Insert();
      End-For;
   End-If;
end-method;

method InsertArfNextApprover
   /+ &ReqID as String, +/
   /+ &Approval_Type as String, +/
   /+ &ApprStep as Number, +/
   /+ &Seqno as Number, +/
   /+ &Employeeid as String, +/
   /+ &Empl_rcd as Number, +/
   /+ &ArfReqDate as Date +/
  
   Local Record &Rec;
   Local SQL &SQL;
   Local string &NextApprStep, &RoleName, &RoleNameDescr, &Approvers, &deptid;
   Local string &setid = "TALIC";
   If &Approval_Type = "ARF" Or
         &Approval_Type = "ARF-MD" Then
      &Rec = CreateRecord(Record.ECL_ARF_STA);
   End-If;
  
   &ApprStep = &ApprStep + 1;
  
  
   SQLExec("SELECT APPR_STEP, ROLENAME, DESCR FROM PS_ECL_APPR_RULES WHERE APPR_RULE_SET=:1 AND APPR_STEP=:2", &Approval_Type, &ApprStep, &NextApprStep, &RoleName, &RoleNameDescr);
   &SQL = CreateSQL("SELECT ROLEUSER FROM PSROLEUSER WHERE ROLENAME=:1", &RoleName, &Approvers);
   While &SQL.Fetch(&Approvers)
      &Seqno = &Seqno + 1;
      &Rec.ECL_ARF_REQ_ID.Value = &ReqID;
      &Rec.EMPLID.Value = &Employeeid;
      &Rec.EMPL_RCD.Value = &Empl_rcd;
      &Rec.SEQNO.Value = &Seqno;
      &Rec.ECL_REQUEST_DT.Value = &ArfReqDate;
      &Rec.APPR_STEP.Value = &NextApprStep;
      &Rec.ROLENAME.Value = &RoleNameDescr;
      &Rec.ROLEUSER.Value = &Approvers;
      &Rec.ECL_DELEGATE_ID.Value = &Approvers;
      &Rec.APPROVER_OPRID.Value = &Approvers;
      &Rec.ECL_WF_ACTION.Value = "PND";
      &Rec.CURRENT_STEP.Value = 1;
      &Rec.ACTION_DTTM.Value = "";
      &Rec.ECL_COMMENTS.Value = "";
      &Rec.Insert();
   End-While;
  
  
end-method;

method ApprovaRuleSet
   /+ &Deviation as String, +/
   /+ &MDCheck as String +/
   /+ Returns String +/
   Local string &Approvalset = "";
  
   If &MDCheck = "Y" Then
      &Approvalset = "CLAIMS-MD";
   Else
      If &Deviation = "Y" Then
         &Approvalset = "CLAIMS-DEVIATION";
      Else
         &Approvalset = "CLAIMS";
      End-If;
   End-If;
  
   Return &Approvalset;
end-method;

method GetOverallExpense
   /+ &TravelReqId as String +/
   /+ Returns Number +/
   Local number &TravelExpense;
   SQLExec("SELECT ECL_TOTAL_EXPENSE FROM PS_ECL_TRAVEL_HDR WHERE ECL_TRVL_REQ_ID = :1", &TravelReqId, &TravelExpense);
   Return &TravelExpense;
end-method;

method GetNextApproverEmailid
   /+ &Approvalset as String, +/
   /+ &Apprstep as Number +/
   /+ Returns String +/
  
   Local string &Emailid = "";
   Local number &NextApprStep;
   Local string &RoleName = "";
   Local string &RoleNameDescr = "";
   Local SQL &SQL;
   Local string &NotifyApprover = "";
  
   &Apprstep = &Apprstep + 1;
  
   SQLExec("SELECT ROLENAME FROM PS_ECL_APPR_RULES WHERE APPR_RULE_SET = :1 AND APPR_STEP = :2", &Approvalset, &Apprstep, &RoleName);
   &SQL = CreateSQL("SELECT EMAILID FROM PS_ROLEUSER_VW WHERE ROLENAME = :1", &RoleName, &Emailid);
   While &SQL.Fetch(&Emailid)
      If None(&NotifyApprover) Then
         &NotifyApprover = &Emailid;
      Else
         &NotifyApprover = &NotifyApprover | ";" | &Emailid;
      End-If;
   End-While;
   Return &NotifyApprover
end-method;

method DelegationOprid
   /+ &Emplid as String, +/
   /+ &Action as String, +/
   /+ &Type as String +/
   /+ Returns String +/
   Local string &App_Id = "";
   SQLExec("SELECT ECL_DELEGATE_TO FROM PS_ECL_DELEGATION WHERE EMPLID = :1 AND ECL_DELEG_ACTION = :2 AND (ECL_DELEGATE_TYPE = :3 OR ECL_DELEGATE_TYPE = 'DB') AND ECL_DELEGAT_STATUS='APV' AND CONVERT(CHAR(10),GETDATE(), 121) BETWEEN FROM_DT AND TO_DT", &Emplid, &Action, &Type, &App_Id);
   Return &App_Id;
end-method;

method InitiateDelegationCheck
   /+ &Ecode as String, +/
   /+ &From_date as Date, +/
   /+ &To_date as Date, +/
   /+ &DelegationAction as String, +/
   /+ &DelegationType as String +/
   /+ Returns String +/
   Local string &IsDelegated = "";
   If &DelegationType = "DC" Or
         &DelegationType = "DT" Then
      SQLExec("SELECT 'Y' FROM PS_ECL_DELEGATION WHERE EMPLID = :1 AND ECL_DELEG_ACTION = :2 AND ECL_DELEGATE_TYPE IN (:3,'DB') AND (:4 < FROM_DT AND :5 > TO_DT OR ((:4 BETWEEN FROM_DT AND TO_DT) OR (:5 BETWEEN FROM_DT AND TO_DT))) AND ECL_DELEGAT_STATUS NOT IN ('RVK', 'DNY') AND ECL_DELEG_RVK_FLG='N'", &Ecode, &DelegationAction, &DelegationType, &From_date, &To_date, &IsDelegated);
   End-If;
  
   If &DelegationType = "DB" Then
      SQLExec("SELECT 'Y' FROM PS_ECL_DELEGATION WHERE EMPLID=:1 AND ECL_DELEG_ACTION=:2 AND ECL_DELEGATE_TYPE IN (:3,'DC', 'DT') AND (:4 < FROM_DT AND :5 > TO_DT OR ((:4 BETWEEN FROM_DT AND TO_DT) OR (:5 BETWEEN FROM_DT AND TO_DT))) AND ECL_DELEGAT_STATUS NOT IN ('RVK', 'DNY') AND ECL_DELEG_RVK_FLG='N'", &Ecode, &DelegationAction, &DelegationType, &From_date, &To_date, &IsDelegated);
   End-If;
  
   Return &IsDelegated;
end-method;

/*Update the Claims record by ZIPU/CIPU */
method UpdateClaims
   /+ &TicketCost as Number, +/
   /+ &AgentBill as String, +/
   /+ &AgentBillDate as Date, +/
   /+ &ServiceCharge as Number, +/
   /+ &Tax as Number, +/
   /+ &TotalTicketCost as Number, +/
   /+ &SystemFileName as String, +/
   /+ &UserFile as String, +/
   /+ &AttachSys as String, +/
   /+ &AttachUser as String, +/
   /+ &TravelReqId as String, +/
   /+ &TravelSeq as Number, +/
   /+ &InvoiceStatus as String +/
  
  
   SQLExec("UPDATE PS_ECL_CLAIMS_TRVL SET ECL_TICKET_COST = :1, ECL_TRVL_AGNT_BILL = :2, ECL_TR_AGT_BILL_DT = :3,ECL_SERVICE_CHARGE = :4, ECL_TAX = :5, ECL_TOT_TCKT_COST = :6, ATTACHSYSFILENAME = :7, ATTACHUSERFILE = :8, ECL_ATTACHSYS = :9, ECL_ATTACHUSER = :10, ECL_INVOICE_STATUS=:11 WHERE ECL_TRVL_REQ_ID =:12 AND ECL_TICKET_SEQ =:13", &TicketCost, &AgentBill, &AgentBillDate, &ServiceCharge, &Tax, &TotalTicketCost, &SystemFileName, &UserFile, &AttachSys, &AttachUser, &InvoiceStatus, &TravelReqId, &TravelSeq);
end-method;

method GetBTCEstimatedCost
   /+ &TravelReqId as String +/
   /+ Returns Number +/
   Local number &BTCCost;
   &BTCCost = 0;
   SQLExec("select SUM(ECL_ESTIMATED_COST) from PS_ECL_TRAVEL_REQ where ECL_TRVL_REQ_ID = :1 and ECL_INVOICE_STATUS NOT IN ('CA') AND ECL_BOOKING_TYP='BT'", &TravelReqId, &BTCCost);
   Return &BTCCost;
end-method;

method GetOtherCancelledEstimatedCost
   /+ &TravelReqId as String +/
   /+ Returns Number +/
   Local number &EstimatedCost;
   SQLExec("select SUM(ECL_ESTIMATED_COST) from PS_ECL_TRAVEL_REQ where ECL_TRVL_REQ_ID = :1 and ECL_CANCEL_FLAG = 'Y' AND ECL_BOOKING_TYP NOT IN ('BT','TA')", &TravelReqId, &EstimatedCost);
   Return &EstimatedCost;
end-method;


method BudgetAdjustmentAmount
   /+ &TravelReqId as String, +/
   /+ &ClaimReqId as String, +/
   /+ &Category as String +/
   <*
   Local number &Estimated_Amount, &Ticket_Cost_Diff, &Adjustment_Amount;
   Local string &Deptid;
   SQLExec("SELECT SUM(A.ECL_ESTIMATED_COST) ,(SUM(A.ECL_TOT_TCKT_COST)-(SELECT (SUM(B.ECL_TOT_TCKT_COST) - SUM(B.ECL_ESTIMATED_COST)) FROM PS_ECL_TRAVEL_REQ B WHERE B.ECL_TRVL_REQ_ID = :1 AND B.ECL_BOOKING_TYP = 'BT'    AND B.ECL_INVOICE_STATUS <> 'CA')) FROM PS_ECL_TRAVEL_REQ A WHERE A.ECL_TRVL_REQ_ID =:1 AND A.ECL_TICK_STATUS NOT IN ('RC','RCE') AND A.ECL_INVOICE_STATUS <> 'CA'", &TravelReqId, &Estimated_Amount, &Ticket_Cost_Diff);
   SQLExec("select DEPTID from PS_ECL_TRAVEL_HDR where ECL_TRVL_REQ_ID =:1", &TravelReqId, &Deptid);
   If &Estimated_Amount > &Ticket_Cost_Diff Then
      &Adjustment_Amount = &Estimated_Amount - &Ticket_Cost_Diff;
      %This.AdjustDepartmentBudget(&Deptid, "A", &Adjustment_Amount);
   End-If;
  
   If &Estimated_Amount < &Ticket_Cost_Diff Then
      &Adjustment_Amount = &Ticket_Cost_Diff - &Estimated_Amount;
      %This.AdjustDepartmentBudget(&Deptid, "A", &Adjustment_Amount);
   End-If;
*>
  
   If &Category = "EC" Then
      Local number &TotalClaimReimbursementAmount, &InsignificantAmount, &ActualDeductibleAmount;
      rem Local number &InsignificantAmount;
      rem local number &ActualClaimAmount,&ActualDeductibleAmount;
      Local string &Deptid_Claim;
      &InsignificantAmount = 0;
      &TotalClaimReimbursementAmount = 0;
      &ActualDeductibleAmount = 0;
      SQLExec("SELECT SUM(ECL_REIMBURSE_AMT)+SUM(ECL_CORPCARD_AMT) FROM  PS_ECL_CLAIMS_BUSN WHERE ECL_CLAIM_REQ_ID = :1", &ClaimReqId, &TotalClaimReimbursementAmount);
      SQLExec("SELECT SUM(ECL_REIMBURSE_AMT)+SUM(ECL_CORPCARD_AMT) FROM  PS_ECL_CLAIMS_BUSN WHERE ECL_CLAIM_REQ_ID = :1 AND ECL_CLAIM_TYP NOT IN ('08','10')", &ClaimReqId, &InsignificantAmount);
      SQLExec("select DEPTID from PS_ECL_CLAIMS_HDR where ECL_CLAIM_REQ_ID =:1", &ClaimReqId, &Deptid_Claim);
      &ActualDeductibleAmount = &TotalClaimReimbursementAmount - &InsignificantAmount;
     
     
      %This.AdjustDepartmentBudget(&Deptid_Claim, "A", &ActualDeductibleAmount);
     
   End-If;
  
  
  
  
   If &Category = "TR" Then
      Local number &EH_EstimatedCost, &EH_TotalExpense, &Self_EstimatedCost, &Self_TotalExpense, &SWR_TotalExpense, &SWR_EstimatedCost, &TRVL_TotalExpense, &TRVL_EstimatedCost, &GH_TotalExpense, &GH_EstimatedCost, &TRVL_ClaimAmount, &Self_ClaimAmount, &GH_ClaimAmount, &EH_ClaimAmount, &TravelIncidentCost, &OtherIncidentCost, &ActualIncidentCost, &ActualEstimatedCost, &AdjustableBudgetAmount, &ActualClaimAmount, &TotalReimbursementAmount, &CorporateCardAmount, &TotalIncidentCost;
     
      Local string &DeptBudgetFlag, &Deptid;
     
      &EH_EstimatedCost = 0;
      &EH_TotalExpense = 0;
      &Self_EstimatedCost = 0;
      &Self_TotalExpense = 0;
      &SWR_TotalExpense = 0;
      &SWR_EstimatedCost = 0;
      &TRVL_TotalExpense = 0;
      &TRVL_EstimatedCost = 0;
      &GH_TotalExpense = 0;
      &GH_EstimatedCost = 0;
      &TRVL_ClaimAmount = 0;
      &Self_ClaimAmount = 0;
      &GH_ClaimAmount = 0;
      &EH_ClaimAmount = 0;
      &TravelIncidentCost = 0;
      &OtherIncidentCost = 0;
      &ActualIncidentCost = 0;
      &ActualEstimatedCost = 0;
      &AdjustableBudgetAmount = 0;
      &ActualClaimAmount = 0;
      &TotalReimbursementAmount = 0;
      &CorporateCardAmount = 0;
      &TotalIncidentCost = 0;
     
      SQLExec("SELECT SUM(ECL_ESTIMATED_COST),SUM(ECL_TOT_TCKT_COST) FROM PS_ECL_CLM_TRAG_VW WHERE ECL_TRVL_REQ_ID = :1 and ECL_CLAIM_REQ_ID = :2", &TravelReqId, &ClaimReqId, &TRVL_EstimatedCost, &TRVL_TotalExpense);
     
      rem &TRVL_ClaimAmount = &TRVL_TotalExpense - &TRVL_EstimatedCost;
      REM WinMessage("&TRVL_EstimatedCost : " | &TRVL_EstimatedCost | " &TRVL_TotalExpense : " | &TRVL_TotalExpense, 0);
      rem WinMessage("&TRVL_ClaimAmount : " | &TRVL_ClaimAmount, 0);
     
      SQLExec("SELECT SUM(ECL_ESTIMATED_COST),SUM(ECL_TOT_TCKT_COST) FROM PS_ECL_CLM_SELF_VW WHERE ECL_TRVL_REQ_ID = :1 and ECL_CLAIM_REQ_ID = :2", &TravelReqId, &ClaimReqId, &Self_EstimatedCost, &Self_TotalExpense);
     
      rem &Self_ClaimAmount = &Self_TotalExpense - &Self_EstimatedCost;
      REM WinMessage("&Self_EstimatedCost : " | &Self_EstimatedCost | " &Self_TotalExpense : " | &Self_TotalExpense, 0);
      rem WinMessage("&Self_ClaimAmount : " | &Self_ClaimAmount, 0);
     
      SQLExec("SELECT SUM(ECL_ESTIMATED_COST),SUM(ECL_TOT_TCKT_COST) FROM PS_ECL_CLM_GUH_VW WHERE ECL_TRVL_REQ_ID = :1 and ECL_CLAIM_REQ_ID = :2", &TravelReqId, &ClaimReqId, &GH_EstimatedCost, &GH_TotalExpense);
      rem &GH_ClaimAmount = &GH_TotalExpense - &GH_EstimatedCost;
      REM WinMessage("&GH_EstimatedCost : " | &EH_EstimatedCost | " &GH_TotalExpense : " | &GH_TotalExpense, 0);
      rem WinMessage("&GH_ClaimAmount : " | &GH_ClaimAmount, 0);
     
      SQLExec("SELECT SUM(ECL_ESTIMATED_COST),SUM(ECL_TOT_TCKT_COST) FROM PS_ECL_CLM_EMH_VW WHERE ECL_TRVL_REQ_ID = :1 and ECL_CLAIM_REQ_ID = :2", &TravelReqId, &ClaimReqId, &EH_EstimatedCost, &EH_TotalExpense);
      rem &EH_ClaimAmount = &EH_TotalExpense - &EH_EstimatedCost;
      REM WinMessage("&EH_EstimatedCost : " | &EH_EstimatedCost | " &EH_TotalExpense : " | &EH_TotalExpense, 0);
      rem WinMessage("&EH_ClaimAmount : " | &EH_ClaimAmount, 0);
     
      SQLExec("SELECT SUM(ECL_ESTIMATED_COST),SUM(ECL_TOT_TCKT_COST) FROM PS_ECL_CLM_STR_VW WHERE ECL_TRVL_REQ_ID = :1 and ECL_CLAIM_REQ_ID = :2", &TravelReqId, &ClaimReqId, &SWR_EstimatedCost, &SWR_TotalExpense);
      rem &SWR_ClaimAmount = &SWR_TotalExpense - &SWR_EstimatedCost;
     
      REM WinMessage("&SWR_EstimatedCost : " | &SWR_EstimatedCost | " &SWR_TotalExpense : " | &SWR_TotalExpense, 0);
      rem WinMessage("&SWR_ClaimAmount : " | &SWR_ClaimAmount, 0);
     
      SQLExec("SELECT ECL_INCIDENT_COST FROM PS_ECL_CLAIMS_HDR WHERE ECL_TRVL_REQ_ID = :1 and ECL_CLAIM_REQ_ID = :2", &TravelReqId, &ClaimReqId, &TravelIncidentCost);
      REM WinMessage("&TravelIncidentCost : " | &TravelIncidentCost, 0);
     
     
      rem SQLExec("SELECT SUM(ECL_TOT_CLAIM_AMT) FROM PS_ECL_CLAIMS_SUMM WHERE ECL_TRVL_REQ_ID = :1 and ECL_CLAIM_REQ_ID = :2", &TravelReqId, &ClaimReqId, &OtherIncidentCost);
      SQLExec("SELECT SUM(ECL_REIMBURSE_AMT),SUM(ECL_CORPCARD_AMT) FROM PS_ECL_CLAIMS_TROT WHERE ECL_CLAIM_REQ_ID = :1", &ClaimReqId, &OtherIncidentCost, &CorporateCardAmount);
     
      REM WinMessage("&OtherIncidentCost : " | &OtherIncidentCost, 0);
     
      rem SQLExec("SELECT SUM(ECL_CORPCARD_AMT) FROM PS_ECL_CLAIMS_TROT WHERE ECL_CLAIM_REQ_ID :1", &ClaimReqId, &CorporateCardAmount);
      REM WinMessage("&CorporateCardAmount : " | &CorporateCardAmount, 0);
     
      &TotalIncidentCost = &OtherIncidentCost + &CorporateCardAmount;
      REM WinMessage("&TotalIncidentCost = &OtherIncidentCost + &CorporateCardAmount = " | &TotalIncidentCost, 0);
      &ActualIncidentCost = &TotalIncidentCost - &TravelIncidentCost;
     
      REM WinMessage("&ActualIncidentCost : " | &ActualIncidentCost, 0);
      &ActualEstimatedCost = &TRVL_EstimatedCost + &Self_EstimatedCost + &GH_EstimatedCost + &EH_EstimatedCost + &SWR_EstimatedCost + &TravelIncidentCost;
      REM WinMessage("&ActualEstimatedCost : " | &ActualEstimatedCost, 0);
      rem &ActualClaimAmount = &TRVL_TotalExpense + &Self_TotalExpense + &GH_TotalExpense + &EH_TotalExpense + &SWR_TotalExpense + &OtherIncidentCost;
      &ActualClaimAmount = &TRVL_TotalExpense + &Self_TotalExpense + &GH_TotalExpense + &EH_TotalExpense + &SWR_TotalExpense + &ActualIncidentCost;
     
      REM WinMessage("&OverallClaimAmount : " | &ActualClaimAmount, 0);
     
      SQLExec("select DEPTID from PS_ECL_TRAVEL_HDR where ECL_TRVL_REQ_ID =:1", &TravelReqId, &Deptid);
     
      If &ActualEstimatedCost < &ActualClaimAmount Then
         rem &AdjustableBudgetAmount = &ActualClaimExpense - &ActualEstimatedCost;
         rem &AdjustableBudgetAmount = &ActualClaimAmount;
         &AdjustableBudgetAmount = &ActualClaimAmount - &ActualEstimatedCost;
         REM WinMessage("&AdjustableBudgetAmount Claim - Est : " | &AdjustableBudgetAmount, 0);
        
         %This.AdjustDepartmentBudget(&Deptid, "A", &AdjustableBudgetAmount);
      End-If;
     
      If &ActualEstimatedCost > &ActualClaimAmount Then
         &AdjustableBudgetAmount = &ActualEstimatedCost - &ActualClaimAmount;
         REM WinMessage("&AdjustableBudgetAmount Est - Claim : " | &AdjustableBudgetAmount, 0);
         &DeptBudgetFlag = %This.CheckDepartmentBudget(&Deptid, &AdjustableBudgetAmount);
         If &DeptBudgetFlag = "Y" Then
            Error MsgGetText(27000, 52, "Message Not Found");
         End-If;
         %This.AdjustDepartmentBudget(&Deptid, "D", &AdjustableBudgetAmount);
      End-If;
   End-If;
end-method;

method UpdateBudgetSTA
   /+ &WFAction as String, +/
   /+ &ActionDate as DateTime, +/
   /+ &Comments as String, +/
   /+ &Emplid as String, +/
   /+ &BudgetID as String, +/
   /+ &RoleName as String, +/
   /+ &ApproverId as String +/
  
   SQLExec("Update PS_ECL_BUDGET_STA set ECL_WF_ACTION = :1,CURRENT_STEP = 0,ACTION_DTTM = :2,ECL_COMMENTS = :3 where EMPLID = :4 and ECL_BUDGET_ID = :5 and ROLENAME = :6 and APPROVER_OPRID = :7", &WFAction, &ActionDate, &Comments, &Emplid, &BudgetID, &RoleName, &ApproverId);
  
end-method;

method grade_check
   /+ &emplid as String +/
   /+ Returns String +/
   /*List Approver id for Grade greater than 401*/
   Local string &sup_id;
   SQLExec("SELECT A.EMPLID FROM PS_JOB A WHERE  A.EFFDT = (SELECT MAX(A_ED.EFFDT) FROM PS_JOB A_ED WHERE A.EMPLID = A_ED.EMPLID AND A.EMPL_RCD = A_ED.EMPL_RCD AND A_ED.EFFDT <= SUBSTRING(CONVERT(CHAR,GETDATE(),121), 1, 10)) AND A.EFFSEQ = (SELECT MAX(A_ES.EFFSEQ) FROM PS_JOB A_ES WHERE A.EMPLID = A_ES.EMPLID AND A.EMPL_RCD = A_ES.EMPL_RCD  AND A.EFFDT = A_ES.EFFDT) AND A.GRADE >='401' AND A.HR_STATUS='A' AND A.BUSINESS_UNIT='TALIC' AND A.EMPLID=:1", &emplid, &sup_id);
   Return &sup_id;
end-method;

method RowCount
   /+ &Record as String, +/
   /+ &Key as String +/
   /+ Returns Number +/
   Local number &Rowcount;
   SQLExec("SELECT COUNT(*) FROM PS_" | &Record | " WHERE ECL_CLAIM_REQ_ID = :1", &Key, &Rowcount);
   Return &Rowcount;
end-method;

method UpdateDelegation
   /+ &Approverid as String, +/
   /+ &Lastapproverid as String, +/
   /+ &Lastuddtm as DateTime, +/
   /+ &Emplid as String, +/
   /+ &delgaction as String, +/
   /+ &Seqno as Number +/
   SQLExec("UPDATE PS_ECL_DELEGATION SET ECL_DELEGAT_STATUS = 'RVK',ECL_DELEG_RVK_FLG= 'Y',APPROVER_ID = :1,LASTUPDOPRID = :2,LASTUPDDTTM = :3 WHERE EMPLID = :4 AND ECL_DELEG_ACTION = :5 AND SEQNO = :6 AND ECL_DELEGATE_TYPE = 'DB'", &Approverid, &Lastapproverid, &Lastuddtm, &Emplid, &delgaction, &Seqno)
end-method;

method Check_Duplicacy
   /+ &View as String, +/
   /+ &Input_Claim_Id as String +/
   /+ Returns String +/
   Local string &ECL_CLAIM_REQ_ID;
   Local string &Flag = "N";
   Local string &Exist = "N";
   SQLExec("SELECT 'Y' FROM PS_" | &View | " WHERE ECL_CLAIM_REQ_ID = :1", &Input_Claim_Id, &Flag);
   If &Flag = "Y" Then
      &Exist = "Y";
   End-If;
   Return &Exist;
end-method;


method UpdateRecieved
   /+ &Claim_ID as String +/
   SQLExec("UPDATE PS_ECL_CLM_LV1_UPD SET ECL_STATUS = 'RC' WHERE ECL_CLAIM_REQ_ID = :1 AND DESCR = 'Summary'", &Claim_ID);
end-method;

method Get_Attachment_Seqno
   /+ &Claim_Id as String +/
   /+ Returns Number +/
   Local string &Exists;
   Local number &Seqno;
   Local SQL &SQL;
   &Exists = "";
   &Seqno = 0;
   SQLExec("SELECT 'Y' FROM PS_ECL_ATACH_SEQNO WHERE ECL_CLAIM_REQ_ID = :1", &Claim_Id, &Exists);
   If &Exists = "Y" Then
      SQLExec("SELECT MAX(SEQNO)+1 FROM PS_ECL_ATACH_SEQNO WHERE ECL_CLAIM_REQ_ID = :1", &Claim_Id, &Seqno);
      rem SQLExec("INSERT INTO PS_ECL_ATACH_SEQNO VALUES (:1,:2)", &Claim_Id, &Seqno);
   Else
      &Seqno = 1;
      rem SQLExec("INSERT INTO PS_ECL_ATACH_SEQNO VALUES (:1,1)", &Claim_Id);
   End-If;
   &SQL = GetSQL(SQL.ECL_ATCH_SEQNO_INSERT);
   &SQL.Execute(&Claim_Id, &Seqno);
   &SQL.Close();
  
   Return (&Seqno);
end-method;

method Update_Received_Header
   /+ &Claim_Id as String +/
   SQLExec("UPDATE PS_ECL_CLAIMS_HDR SET ECL_STATUS = 'RC' WHERE ECL_CLAIM_REQ_ID = :1", &Claim_Id);
end-method;

method Update_STA
   /+ &Claim_ID as String, +/
   /+ &Oprid as String, +/
   /+ &Action as String +/
   SQLExec("UPDATE PS_ECL_CLAIMS_STA SET CURRENT_STEP = 0, ACTION_DTTM = GETDATE(), ECL_WF_ACTION = :1  WHERE ECL_CLAIM_REQ_ID = :2 AND APPROVER_OPRID = :3 AND ECL_WF_ACTION = 'PND' AND CURRENT_STEP = 1", &Action, &Claim_ID, &Oprid);
  
   SQLExec("UPDATE PS_ECL_CLAIMS_STA SET CURRENT_STEP = 0 WHERE ECL_CLAIM_REQ_ID = :1 AND ECL_WF_ACTION = 'PND' AND CURRENT_STEP = 1", &Claim_ID);
end-method;

method Insert_New_L1_L2_STA
   /+ &Claim_ID as String +/
   /* Abhinav : 23/09/2011*/
   Local string &Approver_Present, &RoleName;
   Local number &i, &Seqno, &j;
   Local Rowset &STARowset = CreateRowset(Record.ECL_CLAIMS_STA);
   Local Record &Rec;
   &Rec = CreateRecord(Record.ECL_CLAIMS_STA);
  
   &STARowset.Fill("WHERE ECL_CLAIM_REQ_ID = :1", &Claim_ID);
  
   &Approver_Present = "N";
   &j = &STARowset.ActiveRowCount;
   &RoleName = &STARowset(&j).ECL_CLAIMS_STA.ROLENAME.Value;
   For &i = 1 To &STARowset.ActiveRowCount
      If &STARowset(&i).ECL_CLAIMS_STA.ROLENAME.Value = &RoleName And
            &STARowset(&i).ECL_CLAIMS_STA.APPROVER_OPRID.Value = %OperatorId Then
         &Approver_Present = "Y";
      End-If;
   End-For;
  
   If &Approver_Present = "N" Then
      &Seqno = &STARowset(&j).ECL_CLAIMS_STA.SEQNO.Value + 1;
      &Rec.ECL_CLAIM_REQ_ID.Value = &Claim_ID;
      &Rec.EMPLID.Value = &STARowset(&j).ECL_CLAIMS_STA.EMPLID.Value;
      &Rec.EMPL_RCD.Value = &STARowset(&j).ECL_CLAIMS_STA.EMPL_RCD.Value;
      &Rec.ECL_CATEGORY.Value = &STARowset(&j).ECL_CLAIMS_STA.ECL_CATEGORY.Value;
      &Rec.SEQNO.Value = &Seqno;
      &Rec.ECL_REQUEST_DT.Value = &STARowset(1).ECL_CLAIMS_STA.ECL_REQUEST_DT.Value;
      &Rec.APPR_STEP.Value = &STARowset(&j).ECL_CLAIMS_STA.APPR_STEP.Value;
      &Rec.ROLENAME.Value = &STARowset(&j).ECL_CLAIMS_STA.ROLENAME.Value;
      &Rec.ROLEUSER.Value = %OperatorId;
      &Rec.ECL_DELEGATE_ID.Value = %OperatorId;
      &Rec.APPROVER_OPRID.Value = %OperatorId;
      &Rec.ECL_WF_ACTION.Value = "PND";
      &Rec.CURRENT_STEP.Value = 1;
      &Rec.ACTION_DTTM.Value = "";
      &Rec.ECL_COMMENTS.Value = "";
      &Rec.Insert();
   End-If;
  
end-method;

method Bulk_Insert_Claim_STA
   /+ &ReqID as String, +/
   /+ &Approval_Type as String, +/
   /+ &Employeeid as String, +/
   /+ &Empl_rcd as Number, +/
   /+ &Category as String, +/
   /+ &TravelReqDate as Date, +/
   /+ &ApproverID as String, +/
   /+ &Seqno as Number, +/
   /+ &Action as String, +/
   /+ &Currentstep as Number, +/
   /+ &DelegatedApprover as String, +/
   /+ &Status as String, +/
   /+ &Check_Flag as String +/
  
   Local Record &Rec;
   Local number &j;
   Local string &RoleName = "";
   Local string &RoleNameDescr = "";
   Local string &ActualApprover = "";
   Local string &ActionedEmpCode = "";
   Local number &Rowcount = 0;
   Local string &App_Id = "";
   Local date &ClaimReqDate;
  
   If &ApproverID = &DelegatedApprover Then
      &ActualApprover = &ApproverID;
   Else
      &ActualApprover = &DelegatedApprover;
   End-If;
  
   If &Status = "MAP" And
         &Check_Flag = "Y" Then
      If &Employeeid <> %UserId Then
         &ActionedEmpCode = %UserId;
      Else
         &ActionedEmpCode = &Employeeid;
      End-If;
   Else
      If &Status = "SB" Then
         If &Employeeid <> %UserId Then
            &ActionedEmpCode = %UserId;
         Else
            &ActionedEmpCode = &Employeeid;
         End-If;
      Else
         &App_Id = %This.DelegationOprid(&Employeeid, "RAIS", "DC");
         If All(&App_Id) Then
            &ActionedEmpCode = &App_Id;
         Else
            &ActionedEmpCode = &Employeeid;
         End-If;
         SQLExec("update PS_ECL_CLAIMS_HDR set ECL_RAISED_ID = :1 where ECL_CLAIM_REQ_ID = :2", &ActionedEmpCode, &ReqID);
      End-If;
   End-If;
   rem Error (0);
  
   If &Approval_Type = "CLAIMS-DEVIATION" Or
         &Approval_Type = "CLAIMS" Or
         &Approval_Type = "CLAIMS-MD" Then
      &Rec = CreateRecord(Record.ECL_CLAIMS_STA);
   End-If;
   If &Approval_Type = "ARF" Then
      &Rec = CreateRecord(Record.ECL_ARF_STA);
   End-If;
  
   If All(&ApproverID) Then
      &Rowcount = 2;
   Else
      &Rowcount = 1;
   End-If;
   <*
   If &Approval_Type = "CLAIMS-MD" Then
      &Rowcount = 1;
   End-If;
   *>
   For &j = 1 To &Rowcount
      If &Approval_Type = "CLAIMS-DEVIATION" Or
            &Approval_Type = "CLAIMS" Or
            &Approval_Type = "CLAIMS-MD" Then
         &Rec.ECL_CLAIM_REQ_ID.Value = &ReqID;
      End-If;
     
      If &Approval_Type = "ARF" Then
         &Rec.ECL_ARF_REQ_ID.Value = &ReqID;
      End-If;
     
      &Rec.EMPLID.Value = &Employeeid;
      &Rec.EMPL_RCD.Value = &Empl_rcd;
      &Rec.ECL_CATEGORY.Value = &Category;
      &Rec.ECL_REQUEST_DT.Value = &TravelReqDate;
      &Seqno = &Seqno + 1;
      &Rec.SEQNO.Value = &Seqno;
      If &j = 1 Then
         SQLExec("SELECT ROLENAME,DESCR FROM PS_ECL_APPR_RULES WHERE APPR_STEP = :1 AND APPR_RULE_SET=:2", &j, &Approval_Type, &RoleName, &RoleNameDescr);
         &Rec.APPR_STEP.Value = &j;
         &Rec.ROLENAME.Value = &RoleNameDescr;
         &Rec.ROLEUSER.Value = &Employeeid;
         &Rec.ECL_DELEGATE_ID.Value = &ActionedEmpCode;
         &Rec.APPROVER_OPRID.Value = &ActionedEmpCode;
         &Rec.ECL_WF_ACTION.Value = &Action;
         &Rec.CURRENT_STEP.Value = &Currentstep;
         &Rec.ACTION_DTTM.Value = %Datetime;
         &Rec.ECL_COMMENTS.Value = "";
         <*If IsUserInRole("TATA-ECL-MD") Then
            &ClaimReqDate = %Date;
            %This.InsertClaimNextApprover(&ReqID, &Approval_Type, 1, 1, &Employeeid, &Empl_rcd, &Category, &ClaimReqDate);
         End-If;*>
      Else
         SQLExec("SELECT ROLENAME,DESCR FROM PS_ECL_APPR_RULES WHERE APPR_STEP = :1 AND APPR_RULE_SET=:2", &j, &Approval_Type, &RoleName, &RoleNameDescr);
         If &RoleNameDescr = "Level1 Approver" Then
            %This.InsertClaimNextApprover(&ReqID, &Approval_Type, 1, 1, &Employeeid, &Empl_rcd, &Category, %Date);
         Else;
            &Rec.APPR_STEP.Value = &j;
            &Rec.ROLENAME.Value = &RoleNameDescr;
            &Rec.ROLEUSER.Value = &ApproverID;
            &Rec.ECL_DELEGATE_ID.Value = &DelegatedApprover;
            &Rec.APPROVER_OPRID.Value = &ActualApprover;
            &Rec.ECL_WF_ACTION.Value = "PND";
            &Rec.CURRENT_STEP.Value = 1;
            &Rec.ACTION_DTTM.Value = "";
            &Rec.ECL_COMMENTS.Value = "";
         End-If;
      End-If;
      &Rec.Insert();
   End-For;
  
end-method;

method Update_LV1
   /+ &Claim_ID as String +/
   SQLExec("UPDATE PS_ECL_CLM_LV1_UPD SET ECL_STATUS = 'RC',ECL_ACTUAL_STATUS='',ECL_WF_ACTION = '',OPRID='' WHERE ECL_CLAIM_REQ_ID = :1", &Claim_ID);
end-method;

method Check_Next_Approver_Delagation
   /+ &Status as String, +/
   /+ &Approver_Id as String, +/
   /+ &Approvalset as String, +/
   /+ &Apprstep as Number +/
   /+ Returns String +/
  
   Local string &RoleName = "";
   Local string &RoleUser = "";
   Local SQL &SQL;
   Local string &Delegation = "";
   Local number &Delegation_Count = 0;
   Local string &Delegation_Flag = "";
  
   Evaluate &Status
   When = "SB"
      SQLExec("SELECT 'Y' FROM PS_ECL_DELEGATION WHERE EMPLID=:1 AND ECL_DELEG_ACTION='APPR' AND ECL_DELEGATE_TYPE IN ('DC','DB') AND CONVERT(VARCHAR(10),getdate(),111) BETWEEN FROM_DT AND TO_DT AND ECL_DELEGAT_STATUS='APV' AND ECL_DELEG_RVK_FLG='N'", &Approver_Id, &Delegation_Flag);
      Break;
   When = "MAP"
      &Apprstep = &Apprstep + 1;
     
      SQLExec("SELECT ROLENAME FROM PS_ECL_APPR_RULES WHERE APPR_RULE_SET = :1 AND APPR_STEP = :2", &Approvalset, &Apprstep, &RoleName);
      &SQL = CreateSQL("SELECT ROLEUSER FROM PS_ROLEUSER_VW WHERE ROLENAME = :1", &RoleName, &RoleUser);
      While &SQL.Fetch(&RoleUser)
         &Delegation = "N";
         SQLExec("SELECT 'Y' FROM PS_ECL_DELEGATION WHERE EMPLID=:1 AND ECL_DELEG_ACTION='APPR' AND ECL_DELEGATE_TYPE IN ('DC','DB') AND CONVERT(VARCHAR(10),getdate(),111) BETWEEN FROM_DT AND TO_DT AND ECL_DELEGAT_STATUS='APV' AND ECL_DELEG_RVK_FLG='N'", &RoleUser, &Delegation);
        
         If &Delegation = "Y" Then
            &Delegation_Count = &Delegation_Count + 1;
         End-If;
      End-While;
      If &Delegation_Count > 0 Then
         &Delegation_Flag = "Y";
      End-If;
      Break;
   When-Other
      &Delegation_Flag = "";
      Break;
   End-Evaluate;
  
   Return &Delegation_Flag
end-method;

method Send_Mail_To_Delegated_Id
   /+ &Status as String, +/
   /+ &Approver_Id as String, +/
   /+ &Approvalset as String, +/
   /+ &Apprstep as Number +/
  
   Local ZIN_COMMON:AppEngineBase &AppEngine = create ZIN_COMMON:AppEngineBase();
  
   Local string &RoleName = "";
   Local string &RoleUser = "";
   Local SQL &SQL;
   Local string &Delegated_Id = "";
   Local number &Delegation_Count = 0;
   Local string &Delegation_Flag = "";
   Local string &TO = "";
   Local string &CC = "";
   Local string &url = "";
   Local string &href = "";
   Local string &Subject = "";
   Local string &Text = "";
   Local string &UserId = "";
  
   Evaluate &Status
   When = "SB"
      SQLExec("SELECT ECL_DELEGATE_TO FROM PS_ECL_DELEGATION WHERE EMPLID=:1 AND ECL_DELEG_ACTION='APPR' AND ECL_DELEGATE_TYPE IN ('DC','DB') AND CONVERT(VARCHAR(10),getdate(),111) BETWEEN FROM_DT AND TO_DT AND ECL_DELEGAT_STATUS='APV' AND ECL_DELEG_RVK_FLG='N'", &Approver_Id, &Delegated_Id);
     
      SQLExec("SELECT EMAILID FROM PS_ROLEUSER_VW WHERE ROLEUSER = :1", &Delegated_Id, &TO);
      &CC = %EmailAddress;
      &url = GenerateComponentPortalURL(Portal."EMPLOYEE", Node."HRMS", MenuName."ROLE_MANAGER", "GBL", Component."ECL_DCLAIM_SCH_CMP", "", "");
      &href = EncodeURL(&url);
     
      &Subject = MsgGetText(27000, 116, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value);
      &Text = MsgGetExplainText(27000, 116, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &href, %Date);
     
      If All(&TO) Then
         &AppEngine.SendEmail(&TO, &CC, &Subject, &Text, "", "");
      End-If;
      Break;
   When = "MAP"
     
      &Apprstep = &Apprstep + 1;
     
      SQLExec("SELECT ROLENAME FROM PS_ECL_APPR_RULES WHERE APPR_RULE_SET = :1 AND APPR_STEP = :2", &Approvalset, &Apprstep, &RoleName);
      &SQL = CreateSQL("SELECT ROLEUSER FROM PS_ROLEUSER_VW WHERE ROLENAME = :1", &RoleName, &RoleUser);
     
      While &SQL.Fetch(&RoleUser)
         SQLExec("SELECT ECL_DELEGATE_TO FROM PS_ECL_DELEGATION WHERE EMPLID=:1 AND ECL_DELEG_ACTION='APPR' AND ECL_DELEGATE_TYPE IN ('DC','DB') AND CONVERT(VARCHAR(10),getdate(),111) BETWEEN FROM_DT AND TO_DT AND ECL_DELEGAT_STATUS='APV' AND ECL_DELEG_RVK_FLG='N'", &RoleUser, &Delegated_Id);
        
         If &Delegated_Id = "" Then
            &UserId = &RoleUser;
            &url = GenerateComponentPortalURL(Portal."EMPLOYEE", Node."HRMS", MenuName."ROLE_MANAGER", "GBL", Component."ECL_CLAIM_SRCH_CMP", "", "");
         Else
            &UserId = &Delegated_Id;
            &url = GenerateComponentPortalURL(Portal."EMPLOYEE", Node."HRMS", MenuName."ROLE_MANAGER", "GBL", Component."ECL_DCLAIM_SCH_CMP", "", "");
         End-If;
        
         SQLExec("SELECT EMAILID FROM PS_ROLEUSER_VW WHERE ROLEUSER = :1", &UserId, &TO);
         &CC = "";
         &href = EncodeURL(&url);
         &Subject = MsgGetText(27000, 117, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value);
         &Text = MsgGetExplainText(27000, 117, "", ECL_CLAIMS_HDR.ECL_CATEGORY.LongTranslateValue, ECL_CLAIMS_HDR.ECL_CLAIM_REQ_ID.Value, &href, %Date);
        
         If All(&TO) Then
            &AppEngine.SendEmail(&TO, &CC, &Subject, &Text, "", "");
         End-If;
        
      End-While;
     
      Break;
   When-Other
      Break;
   End-Evaluate;
end-method;

method GetCityDistance
   /+ &DepartureCity as String, +/
   /+ &ArrivalCity as String, +/
   /+ &DistanceMode as String +/
   /+ Returns String +/
   Local string &Distance;
  
   Evaluate &DistanceMode
   When = "AR"
      SQLExec("SELECT ECL_AIR_DISTANCE FROM PS_ECL_CITY_KM_TBL WHERE CITY = :1 AND CITY2=:2", &DepartureCity, &ArrivalCity, &Distance);
      Break;
   When = "RL"
      SQLExec("SELECT ECL_RAIL_DISTANCE FROM PS_ECL_CITY_KM_TBL WHERE CITY = :1 AND CITY2=:2", &DepartureCity, &ArrivalCity, &Distance);
      Break;
   When = "BU"
   When = "BC"
   When = "CH"
      SQLExec("SELECT ECL_ROAD_DISTANCE FROM PS_ECL_CITY_KM_TBL WHERE CITY = :1 AND CITY2=:2", &DepartureCity, &ArrivalCity, &Distance);
      Break;
   When-Other
      Break;
   End-Evaluate;
   Return &Distance;
end-method;

import ECL_COMMON:*;

class ReportBase
   method is_holiday(&X_EMPLID As string, &X_INPUT_DT As date) Returns boolean;
   method TAT_DAYS(&X_EMPLID As string, &X_FROM_DT As date, &X_TO_DT As date) Returns number;
   method OnlineBase();
   method ftpfile_path() Returns string;
   method Working_Days(&Emplid As string, &Date1 As date, &Date2 As date) Returns number;
end-class;

/*============================================================================
  Developer : Mohammed Hussain - AIGSS
  Name:         is_holiday
  Description:  Returns the particular day is holiday or not
  Parameters (in):      &X_EMPLID
               &X_INPUT_DT
  Parameters (out):     TRUE OR FALSE
 ============================================================================*/
method OnlineBase
end-method;

method is_holiday
   /+ &X_EMPLID as String, +/
   /+ &X_INPUT_DT as Date +/
   /+ Returns Boolean +/
  
   Local string &emplid = &X_EMPLID;
   Local date &date = &X_INPUT_DT;
   Local string &holiday = "";
   Local string &work_tmpl;
   Local string &String = DateTimeToLocalizedString(&date, "EEEEEEE");
  
   SQLExec("SELECT 'Y' FROM PS_ABSW_SCHEDULE S, PS_HOLIDAY_DATE H WHERE  S.BEGIN_DT =(SELECT MAX(S_ED.BEGIN_DT) FROM PS_ABSW_SCHEDULE S_ED WHERE S_ED.EMPLID = S.EMPLID    AND S_ED.EMPL_RCD = S.EMPL_RCD    AND S_ED.BEGIN_DT <= :2) AND S.HOLIDAY_SCHEDULE=H.HOLIDAY_SCHEDULE AND S.EMPLID=:1  AND  H.HOLIDAY=:2", &emplid, &date, &holiday);
  
   If &String = "Sunday" Or
         &String = "Saturday" Then
      &holiday = "Y";
   End-If;
  
  
   If All(&holiday) Then
      Return True;
   Else
      Return False;
   End-If;
  
end-method;


/*============================================================================
  Developer     : Krishna.C - [Mphasis]
  Name            : TAT_days
  Description:  Returns the number of days based on the from_dt and To_dt
 
 ============================================================================*/

method TAT_DAYS
   /+ &X_EMPLID as String, +/
   /+ &X_FROM_DT as Date, +/
   /+ &X_TO_DT as Date +/
   /+ Returns Number +/
   Local ECL_COMMON:ReportBase &object = create ECL_COMMON:ReportBase();
   Local string &emplid = &X_EMPLID;
   Local date &from_date = &X_FROM_DT;
   Local date &to_date = &X_TO_DT;
   Local date &date, &run_day;
   Local number &Diff_days;
   Local number &hol_cnt, &I, &curr_day;
   If &X_FROM_DT < &X_TO_DT Then
      SQLExec("SELECT DATEDIFF(DAY,:1,:2) FROM PS_INSTALLATION", &X_FROM_DT, &X_TO_DT, &Diff_days);
   Else
      SQLExec("SELECT DATEDIFF(DAY,:1,:2) FROM PS_INSTALLATION", &X_TO_DT, &X_FROM_DT, &Diff_days);
   End-If;
   &hol_cnt = 0;
  
   For &I = 1 To &Diff_days
      If &X_FROM_DT < &X_TO_DT Then
         &run_day = AddToDate(&X_FROM_DT, 0, 0, &I);
      Else
         &run_day = AddToDate(&X_TO_DT, 0, 0, &I);
      End-If;
      If &object.is_holiday(&X_EMPLID, &run_day) Then
         &hol_cnt = &hol_cnt + 1;
      End-If;
   End-For;
  
   Return &Diff_days - &hol_cnt;
end-method;

method ftpfile_path
   /+ Returns String +/
   Local string &ftpsite;
   &ftpsite = "ftp://Admin:Mphasis123@10.32.16.26";
   Return &ftpsite;
end-method;

method Working_Days
   /+ &Emplid as String, +/
   /+ &Date1 as Date, +/
   /+ &Date2 as Date +/
   /+ Returns Number +/
   Local date &Date_In, &Date_1, &Date_2;
   Local number &Date_Diff;
   Local boolean &Holiday;
  
   &Date_Diff = 0;
   If &Date1 < &Date2 Then
      &Date_1 = &Date1;
      &Date_2 = &Date2;
   Else
      &Date_1 = &Date2;
      &Date_2 = &Date1;
   End-If;
   rem &Date_In = AddToDate(&Date1, 0, 0, 1);
   If &Date_1 = &Date_2 Then
      Return (0);
   Else
      &Date_In = AddToDate(&Date_1, 0, 0, 1); /*Dont consider first day*/
      While (&Date_In <= &Date_2)
         &Holiday = %This.is_holiday(&Emplid, &Date_In);
         If &Holiday = False Then
            &Date_Diff = &Date_Diff + 1;
         End-If;
         &Date_In = AddToDate(&Date_In, 0, 0, 1);
      End-While;
      Return (&Date_Diff);
   End-If;
end-method;

class UploadBase
   method PendingFormat(&status As string, &agent As string, &trvl_req As string, &Wherestr As string);
   method InvoiceFormat(&status As string, &agent As string, &trvl_req As string, &Wherestr As string);
   method CreditFormat(&status As string, &agent As string, &trvl_req As string, &Wherestr As string);
   method Pending_rowinit();
   method Pending_status();
   method Pending_ticket_status();
   method Pending_validation(&status As string);
   method invoice_validation(&status As string);
   method invoice_calculation();
   method invoice_status();
   method Credit_rowinit();
   method Credit_cancel_type();
   method Credit_cancel_charge();
   method Credit_status();
   method Credit_validation(&status As string);
   method btc_pending(&status As string, &userid As string, &trvl_req As string, &Wherestr As string);
   method btc_rowinit();
   method btc_tr_invoice_status();
   method btc_lb_invoice_status();
   method btc_calculation();
   method btc_validation();
end-class;

method PendingFormat
   /+ &status as String, +/
   /+ &agent as String, +/
   /+ &trvl_req as String, +/
   /+ &Wherestr as String +/
   Local string &default;
   &default = "WHERE ECL_AGENT_ID = " | Quote(%UserId);
   SQLExec(SQL.ECL_TR_UPD_SQL, &agent);
   Local Rowset &pnd = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_REQ_UPD);
   Local Rowset &inv = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_INVC_UPD);
   Local Rowset &cr = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_CR_UPD);
   If All(&trvl_req) Then
      &pnd.Flush();
      &pnd.Select(Record.ECL_TR_REQ_UPD, &Wherestr);
   Else
      &pnd.Flush();
      &pnd.Select(Record.ECL_TR_REQ_UPD, &default);
   End-If;
   If All(&pnd(1).ECL_TR_REQ_UPD.ECL_TICKET_SEQ.Value) Then
      &pnd.ShowAllRows();
      ECL_DERIVED.SAVE_PB.Visible = True;
   Else
      &pnd.HideAllRows();
   End-If;
   &inv.HideAllRows();
   &cr.HideAllRows();
  
end-method;

method Pending_ticket_status
   Local Rowset &pnd = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_REQ_UPD);
   If (&pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_TICK_STATUS.Value = "RC") Then
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_BOOK_COST.Value = 0.00;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_BOOK_COST.DisplayOnly = True;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_DEPARTURE_TIME.DisplayOnly = True;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_ARRIVAL_TIME.DisplayOnly = True;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_TRAIN_PLNE_NUM.DisplayOnly = True;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_TRAIN_PLNE_NAM.DisplayOnly = True;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_PNR_NUMBER.DisplayOnly = True;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_PREF_TIME.DisplayOnly = True;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_TR_AGT_BILL_DT.DisplayOnly = True;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_DEPARTURE_DATE.DisplayOnly = True;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_ARRIVAL_DATE.DisplayOnly = True;
   End-If;
   If &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_TICK_STATUS.Value = "TB" Then
     
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_BOOK_COST.DisplayOnly = False;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_DEPARTURE_TIME.DisplayOnly = False;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_ARRIVAL_TIME.DisplayOnly = False;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_TRAIN_PLNE_NUM.DisplayOnly = False;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_TRAIN_PLNE_NAM.DisplayOnly = False;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_PNR_NUMBER.DisplayOnly = False;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_PREF_TIME.DisplayOnly = False;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_TR_AGT_BILL_DT.DisplayOnly = False;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_DEPARTURE_DATE.DisplayOnly = False;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_ARRIVAL_DATE.DisplayOnly = False;
   End-If;
  
  
   If (&pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_TICK_STATUS.Value = "CB") Or
         (&pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_TICK_STATUS.Value = "BC") Then
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_BOOK_COST.DisplayOnly = True;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_DEPARTURE_TIME.Enabled = False;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_ARRIVAL_TIME.Enabled = False;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_TRAIN_PLNE_NUM.Enabled = False;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_TRAIN_PLNE_NAM.Enabled = False;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_PNR_NUMBER.Enabled = False;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_PREF_TIME.Enabled = False;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_TR_AGT_BILL_DT.Enabled = False;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_DEPARTURE_DATE.Enabled = False;
      &pnd(CurrentRowNumber()).ECL_TR_REQ_UPD.ECL_ARRIVAL_DATE.Enabled = False;
   End-If;
  
end-method;

method btc_pending
   /+ &status as String, +/
   /+ &userid as String, +/
   /+ &trvl_req as String, +/
   /+ &Wherestr as String +/
  
   SQLExec(SQL.ECL_BTC_SQL, &userid);
   Local Rowset &btc_tr = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_BT_UP_VW);
   Local Rowset &btc_lb = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_LB_BT_UP_VW);
   If All(&trvl_req) Then
      &btc_tr.Flush();
      &btc_tr.Select(Record.ECL_TR_BT_UP_VW, &Wherestr);
   Else
      &btc_tr.Flush();
      &btc_tr.Select(Record.ECL_TR_BT_UP_VW);
   End-If;
  
   If All(&trvl_req) Then
      &btc_lb.Flush();
      &btc_lb.Select(Record.ECL_LB_BT_UP_VW, &Wherestr);
   Else
      &btc_lb.Flush();
      &btc_lb.Select(Record.ECL_LB_BT_UP_VW);
   End-If;
  
   If All(&btc_tr(1).ECL_TR_BT_UP_VW.ECL_TICKET_SEQ.Value) Then
      &btc_tr.ShowAllRows();
      ECL_DERIVED.SAVE_PB.Visible = True;
   Else
      &btc_tr.HideAllRows();
      ECL_DERIVED.SAVE_PB.Visible = False;
   End-If;
  
   If All(&btc_lb(1).ECL_LB_BT_UP_VW.ECL_TICKET_SEQ.Value) Then
      &btc_lb.ShowAllRows();
      ECL_DERIVED.SAVE_PB.Visible = True;
   Else
     
      &btc_lb.HideAllRows();
     
   End-If;
  
end-method;

method btc_validation
   /*Travel*/
   Local Rowset &btc_tr = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_BT_UP_VW);
   Local number &actual_cost, &tax, &i, &actual_cost_lb, &tax_lb;
   Local string &Var;
   For &i = 1 To &btc_tr.ActiveRowCount
     
      If All(&btc_tr(&i).ECL_TR_BT_UP_VW.ECL_TICKET_SEQ.Value) Then
         If None(&btc_tr(&i).ECL_TR_BT_UP_VW.ECL_INVOICE_STATUS.Value) Then
            &Var = "Status";
            &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_INVOICE_STATUS.Style = "PSERROR";
            SetCursorPos(Page.ECL_BTC_UPD, ECL_TR_BT_UP_VW.ECL_INVOICE_STATUS, &i);
            Error MsgGetText(27000, 41, "Please Enter the %1", &Var);
         Else
            &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_INVOICE_STATUS.Style = "";
         End-If;
      End-If;
     
      /*Validates only for Invoice*/
     
      If (&btc_tr(&i).ECL_TR_BT_UP_VW.ECL_INVOICE_STATUS.Value = "IN") Then
         If None(&btc_tr(&i).ECL_TR_BT_UP_VW.ECL_TRVL_AGNT_BILL.Value) Then
            &Var = "Bill Number";
            &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_TRVL_AGNT_BILL.Style = "PSERROR";
            SetCursorPos(Page.ECL_BTC_UPD, ECL_TR_BT_UP_VW.ECL_TRVL_AGNT_BILL, &i);
            Error MsgGetText(27000, 41, "Please Enter the %1", &Var);
         Else
            &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_TRVL_AGNT_BILL.Style = "";
         End-If;
         If None(&btc_tr(&i).ECL_TR_BT_UP_VW.ECL_TR_AGT_BILL_DT.Value) Then
            &Var = "Bill Date";
            &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_TR_AGT_BILL_DT.Style = "PSERROR";
            SetCursorPos(Page.ECL_BTC_UPD, ECL_TR_BT_UP_VW.ECL_TR_AGT_BILL_DT, &i);
            Error MsgGetText(27000, 41, "Please Enter the %1", &Var);
         Else
            &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_TR_AGT_BILL_DT.Style = "";
           
         End-If;
         /*If Ticket Cost is zero then throw error*/
         If &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_TICKET_COST.Value = "0" Then
            &Var = "Actual Cost";
            &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_TICKET_COST.Style = "PSERROR";
            SetCursorPos(Page.ECL_BTC_UPD, ECL_TR_BT_UP_VW.ECL_TICKET_COST, &i);
            Error MsgGetText(27000, 41, "Please Enter the %1", &Var);
         Else
            &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_TICKET_COST.Style = "";
         End-If;
      End-If;
     
      &actual_cost = &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_TICKET_COST.Value;
      &tax = &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_SERVICE_CHARGE.Value + &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_TAX.Value;
      If &tax > &actual_cost Then
         &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_INVOICE_STATUS.Style = "PSERROR";
         SetCursorPos(Page.ECL_BTC_UPD, ECL_TR_BT_UP_VW.ECL_INVOICE_STATUS, &i);
         Error MsgGetText(27000, 98, "Service Cost", &Var);
      Else
         &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_INVOICE_STATUS.Style = "";
      End-If;
   End-For;
  
   /*Lodging*/
   Local Rowset &btc_lb = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_LB_BT_UP_VW);
   For &i = 1 To &btc_lb.ActiveRowCount
     
     
      /*Validates only for Invoice*/
      If (&btc_lb(&i).ECL_LB_BT_UP_VW.ECL_INVOICE_STATUS.Value = "IN") Then
        
         If None(&btc_lb(&i).ECL_LB_BT_UP_VW.ECL_TRVL_AGNT_BILL.Value) Then
            &Var = "Bill Number";
            &btc_lb(&i).ECL_LB_BT_UP_VW.ECL_TRVL_AGNT_BILL.Style = "PSERROR";
            SetCursorPos(Page.ECL_BTC_UPD, ECL_LB_BT_UP_VW.ECL_TRVL_AGNT_BILL, &i);
            Error MsgGetText(27000, 41, "Please Enter the %1", &Var);
         Else
            &btc_lb(&i).ECL_LB_BT_UP_VW.ECL_TRVL_AGNT_BILL.Style = "";
         End-If;
        
         If None(&btc_lb(&i).ECL_LB_BT_UP_VW.ECL_TR_AGT_BILL_DT.Value) Then
            &Var = "Bill Date";
            &btc_lb(&i).ECL_LB_BT_UP_VW.ECL_TR_AGT_BILL_DT.Style = "PSERROR";
            SetCursorPos(Page.ECL_BTC_UPD, ECL_LB_BT_UP_VW.ECL_TR_AGT_BILL_DT, &i);
            Error MsgGetText(27000, 41, "Please Enter the %1", &Var);
         Else
            &btc_lb(&i).ECL_LB_BT_UP_VW.ECL_TR_AGT_BILL_DT.Style = "";
         End-If;
        
         /*If Ticket Cost is zero then throw error*/
         If &btc_lb(&i).ECL_LB_BT_UP_VW.ECL_TICKET_COST.Value = "0" Then
            &Var = "Actual Cost";
            &btc_lb(&i).ECL_LB_BT_UP_VW.ECL_TICKET_COST.Style = "PSERROR";
            SetCursorPos(Page.ECL_BTC_UPD, ECL_LB_BT_UP_VW.ECL_TICKET_COST, &i);
            Error MsgGetText(27000, 41, "Please Enter the %1", &Var);
         Else
            &btc_lb(&i).ECL_LB_BT_UP_VW.ECL_TICKET_COST.Style = "";
         End-If;
        
      End-If;
      /*Service Tax Calculation*/
      &actual_cost_lb = &btc_lb(&i).ECL_LB_BT_UP_VW.ECL_TICKET_COST.Value;
      &tax_lb = &btc_lb(&i).ECL_LB_BT_UP_VW.ECL_SERVICE_CHARGE.Value + &btc_lb(&i).ECL_LB_BT_UP_VW.ECL_TAX.Value;
      If &tax_lb > &actual_cost_lb Then
         &btc_lb(&i).ECL_LB_BT_UP_VW.ECL_INVOICE_STATUS.Style = "PSERROR";
         SetCursorPos(Page.ECL_BTC_UPD, ECL_LB_BT_UP_VW.ECL_INVOICE_STATUS, &i);
         Error MsgGetText(27000, 98, "Service Cost", &Var);
      Else
         &btc_lb(&i).ECL_LB_BT_UP_VW.ECL_INVOICE_STATUS.Style = "";
      End-If;
   End-For;
  
  
  
end-method;

method btc_rowinit
   Local number &i, &Xlat_cnt, &j;
   Local string &CodeIn, &DescIn;
   Local Rowset &Xlat;
   Local Rowset &btc_tr = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_BT_UP_VW);
   For &i = 1 To &btc_tr.ActiveRowCount
      &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_INVOICE_STATUS.ClearDropDownList();
      &Xlat = CreateRowset(Record.PSXLATITEM);
      &Xlat.Fill("WHERE FILL.FIELDNAME = 'ECL_INVOICE_STATUS' AND Fill.FIELDVALUE in ('CA','IN') and EFFDT <= %CurrentDateIn");
      &Xlat_cnt = &Xlat.ActiveRowCount;
      For &j = 1 To &Xlat_cnt
         &CodeIn = &Xlat.GetRow(&j).GetRecord(1).FIELDVALUE.Value;
         &DescIn = &Xlat.GetRow(&j).GetRecord(1).XLATLONGNAME.Value;
         &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_INVOICE_STATUS.AddDropDownItem(&CodeIn, &DescIn);
      End-For;
   End-For;
  
   Local Rowset &btc_lb = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_LB_BT_UP_VW);
   For &i = 1 To &btc_lb.ActiveRowCount
     
      &btc_lb(&i).ECL_LB_BT_UP_VW.ECL_INVOICE_STATUS.ClearDropDownList();
      &Xlat = CreateRowset(Record.PSXLATITEM);
      &Xlat.Fill("WHERE FILL.FIELDNAME = 'ECL_INVOICE_STATUS' AND Fill.FIELDVALUE in ('IN','CA') and EFFDT <= %CurrentDateIn");
      &Xlat_cnt = &Xlat.ActiveRowCount;
      For &j = 1 To &Xlat_cnt
         &CodeIn = &Xlat.GetRow(&j).GetRecord(1).FIELDVALUE.Value;
         &DescIn = &Xlat.GetRow(&j).GetRecord(1).XLATLONGNAME.Value;
         &btc_lb(&i).ECL_LB_BT_UP_VW.ECL_INVOICE_STATUS.AddDropDownItem(&CodeIn, &DescIn);
      End-For;
   End-For;
end-method;

method btc_tr_invoice_status
   Local number &i;
   Local Rowset &btc_tr = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_BT_UP_VW);
   If &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_INVOICE_STATUS.Value = "IN" Then
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TRVL_AGNT_BILL.DisplayOnly = False;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TR_AGT_BILL_DT.DisplayOnly = False;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TICKET_COST.DisplayOnly = False;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_SERVICE_CHARGE.DisplayOnly = False;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TAX.DisplayOnly = False;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TR_AGT_BILL_DT.DisplayOnly = False;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TR_AGT_BILL_DT.DisplayOnly = False;
   End-If;
   If &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_INVOICE_STATUS.Value = "" Then
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TRVL_AGNT_BILL.DisplayOnly = True;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TR_AGT_BILL_DT.DisplayOnly = True;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TICKET_COST.DisplayOnly = True;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_SERVICE_CHARGE.DisplayOnly = True;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TR_AGT_BILL_DT.DisplayOnly = True;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TR_AGT_BILL_DT.DisplayOnly = True;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TAX.DisplayOnly = True;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TICKET_COST.Value = 0;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_SERVICE_CHARGE.Value = 0;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TAX.Value = 0;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TOT_TCKT_COST.Value = 0;
   End-If;
  
   If &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_INVOICE_STATUS.Value = "CA" Then
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TRVL_AGNT_BILL.DisplayOnly = True;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TR_AGT_BILL_DT.DisplayOnly = True;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TRVL_AGNT_BILL.Value = "";
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TR_AGT_BILL_DT.Value = "";
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TICKET_COST.DisplayOnly = True;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_SERVICE_CHARGE.DisplayOnly = True;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TR_AGT_BILL_DT.DisplayOnly = True;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TR_AGT_BILL_DT.DisplayOnly = True;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TAX.DisplayOnly = True;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TICKET_COST.Value = 0;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_SERVICE_CHARGE.Value = 0;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TAX.Value = 0;
      &btc_tr(CurrentRowNumber()).ECL_TR_BT_UP_VW.ECL_TOT_TCKT_COST.Value = 0;
   End-If;
  
  
   For &i = 1 To &btc_tr.ActiveRowCount
      If &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_INVOICE_STATUS.Value = "IN" Then
         &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_TOT_TCKT_COST.Value = &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_TICKET_COST.Value + &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_SERVICE_CHARGE.Value + &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_TAX.Value;
      End-If;
   End-For;
end-method;


method btc_lb_invoice_status
   Local Rowset &btc_lb = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_LB_BT_UP_VW);
   If &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_INVOICE_STATUS.Value = "IN" Then
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TRVL_AGNT_BILL.DisplayOnly = False;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TR_AGT_BILL_DT.DisplayOnly = False;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TICKET_COST.DisplayOnly = False;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_SERVICE_CHARGE.DisplayOnly = False;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TAX.DisplayOnly = False;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TR_AGT_BILL_DT.DisplayOnly = False;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TR_AGT_BILL_DT.DisplayOnly = False;
   End-If;
   If &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_INVOICE_STATUS.Value = "" Then
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TRVL_AGNT_BILL.DisplayOnly = True;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TR_AGT_BILL_DT.DisplayOnly = True;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TICKET_COST.DisplayOnly = True;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_SERVICE_CHARGE.DisplayOnly = True;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TR_AGT_BILL_DT.DisplayOnly = True;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TR_AGT_BILL_DT.DisplayOnly = True;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TAX.DisplayOnly = True;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TICKET_COST.Value = 0;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_SERVICE_CHARGE.Value = 0;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TAX.Value = 0;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TOT_TCKT_COST.Value = 0;
   End-If;
  
   If &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_INVOICE_STATUS.Value = "CA" Then
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TRVL_AGNT_BILL.DisplayOnly = True;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TR_AGT_BILL_DT.DisplayOnly = True;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TRVL_AGNT_BILL.Value = "";
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TR_AGT_BILL_DT.Value = "";
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TICKET_COST.DisplayOnly = True;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_SERVICE_CHARGE.DisplayOnly = True;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TR_AGT_BILL_DT.DisplayOnly = True;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TR_AGT_BILL_DT.DisplayOnly = True;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TAX.DisplayOnly = True;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TICKET_COST.Value = 0;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_SERVICE_CHARGE.Value = 0;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TAX.Value = 0;
      &btc_lb(CurrentRowNumber()).ECL_LB_BT_UP_VW.ECL_TOT_TCKT_COST.Value = 0;
   End-If;
  
  
end-method;

method btc_calculation
   Local number &i;
   Local Rowset &btc_tr = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_BT_UP_VW);
   For &i = 1 To &btc_tr.ActiveRowCount
      If &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_INVOICE_STATUS.Value = "IN" Then
         &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_TOT_TCKT_COST.Value = &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_TICKET_COST.Value + &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_SERVICE_CHARGE.Value + &btc_tr(&i).ECL_TR_BT_UP_VW.ECL_TAX.Value;
        
      End-If;
   End-For;
  
   Local Rowset &btc_lb = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_LB_BT_UP_VW);
   For &i = 1 To &btc_lb.ActiveRowCount
      If &btc_lb(&i).ECL_LB_BT_UP_VW.ECL_INVOICE_STATUS.Value = "IN" Then
         &btc_lb(&i).ECL_LB_BT_UP_VW.ECL_TOT_TCKT_COST.Value = &btc_lb(&i).ECL_LB_BT_UP_VW.ECL_TICKET_COST.Value + &btc_lb(&i).ECL_LB_BT_UP_VW.ECL_SERVICE_CHARGE.Value + &btc_lb(&i).ECL_LB_BT_UP_VW.ECL_TAX.Value;
        
      End-If;
   End-For;
  
end-method;

method Pending_rowinit
   Local Rowset &pnd = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_REQ_UPD);
   Local number &i, &Xlat_cnt, &j;
   Local date &journey_dt, &depart_dt;
   Local Rowset &Xlat;
   Local string &CodeIn, &DescIn;
   For &i = 1 To &pnd.ActiveRowCount
     
      &Xlat = CreateRowset(Record.PSXLATITEM);
      If (&pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.Value = "") Then
         &pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.ClearDropDownList();
         &Xlat.Fill("WHERE FILL.FIELDNAME = 'ECL_TICK_STATUS' AND Fill.FIELDVALUE in ('TB','RC') and EFFDT <= %CurrentDateIn");
         &Xlat_cnt = &Xlat.ActiveRowCount;
         For &j = 1 To &Xlat_cnt
            &CodeIn = &Xlat.GetRow(&j).GetRecord(1).FIELDVALUE.Value;
            &DescIn = &Xlat.GetRow(&j).GetRecord(1).XLATLONGNAME.Value;
           
            &pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.AddDropDownItem(&CodeIn, &DescIn);
         End-For;
      End-If;
     
      If (&pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.Value = "TB") Or
            (&pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.Value = "RC") Then
         &pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.ClearDropDownList();
         &Xlat = CreateRowset(Record.PSXLATITEM);
         &Xlat.Fill("WHERE FILL.FIELDNAME = 'ECL_TICK_STATUS' AND Fill.FIELDVALUE in ('TB','RC') and EFFDT <= %CurrentDateIn");
         &Xlat_cnt = &Xlat.ActiveRowCount;
         For &j = 1 To &Xlat_cnt
            &CodeIn = &Xlat.GetRow(&j).GetRecord(1).FIELDVALUE.Value;
            &DescIn = &Xlat.GetRow(&j).GetRecord(1).XLATLONGNAME.Value;
            &pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.AddDropDownItem(&CodeIn, &DescIn);
         End-For;
      End-If;
     
     
      &journey_dt = &pnd(&i).ECL_TR_REQ_UPD.ECL_JOURNEY_DT.Value;
      &depart_dt = &pnd(&i).ECL_TR_REQ_UPD.ECL_DEPARTURE_DATE.Value;
      If None(&depart_dt) Then
         &pnd(&i).ECL_TR_REQ_UPD.ECL_DEPARTURE_DATE.Value = &journey_dt;
      End-If;
   End-For;
   <*
      If (&pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.Value = "TB") Then
         &pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.ClearDropDownList();
         &Xlat = CreateRowset(Record.PSXLATITEM);
         &Xlat.Fill("WHERE FILL.FIELDNAME = 'ECL_TICK_STATUS' AND Fill.FIELDVALUE in ('TB','BC','CB') and EFFDT <= %CurrentDateIn");
         &Xlat_cnt = &Xlat.ActiveRowCount;
         For &j = 1 To &Xlat_cnt
            &CodeIn = &Xlat.GetRow(&j).GetRecord(1).FIELDVALUE.Value;
            &DescIn = &Xlat.GetRow(&j).GetRecord(1).XLATLONGNAME.Value;
            &pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.AddDropDownItem(&CodeIn, &DescIn);
         End-For;
      End-If;
      If (&pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.Value = "BC") Then
         &pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.ClearDropDownList();
         &Xlat = CreateRowset(Record.PSXLATITEM);
         &Xlat.Fill("WHERE FILL.FIELDNAME = 'ECL_TICK_STATUS' AND Fill.FIELDVALUE in ('BC') and EFFDT <= %CurrentDateIn");
         &Xlat_cnt = &Xlat.ActiveRowCount;
         For &j = 1 To &Xlat_cnt
            &CodeIn = &Xlat.GetRow(&j).GetRecord(1).FIELDVALUE.Value;
            &DescIn = &Xlat.GetRow(&j).GetRecord(1).XLATLONGNAME.Value;
            &pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.AddDropDownItem(&CodeIn, &DescIn);
         End-For;
      End-If;
      If (&pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.Value = "RC") Then
         &pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.ClearDropDownList();
         &Xlat = CreateRowset(Record.PSXLATITEM);
         &Xlat.Fill("WHERE FILL.FIELDNAME = 'ECL_TICK_STATUS' AND Fill.FIELDVALUE in ('RC') and EFFDT <= %CurrentDateIn");
         &Xlat_cnt = &Xlat.ActiveRowCount;
         For &j = 1 To &Xlat_cnt
            &CodeIn = &Xlat.GetRow(&j).GetRecord(1).FIELDVALUE.Value;
            &DescIn = &Xlat.GetRow(&j).GetRecord(1).XLATLONGNAME.Value;
            &pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.AddDropDownItem(&CodeIn, &DescIn);
         End-For;
      End-If;
     
      If (&pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.Value = "CB") Then
         &pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.ClearDropDownList();
         &Xlat = CreateRowset(Record.PSXLATITEM);
         &Xlat.Fill("WHERE FILL.FIELDNAME = 'ECL_TICK_STATUS' AND Fill.FIELDVALUE in ('CB') and EFFDT <= %CurrentDateIn");
         &Xlat_cnt = &Xlat.ActiveRowCount;
         For &j = 1 To &Xlat_cnt
            &CodeIn = &Xlat.GetRow(&j).GetRecord(1).FIELDVALUE.Value;
            &DescIn = &Xlat.GetRow(&j).GetRecord(1).XLATLONGNAME.Value;
            &pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.AddDropDownItem(&CodeIn, &DescIn);
         End-For;
      End-If;
      If (&pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.Value = "CBT") Then
         &pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.ClearDropDownList();
         &Xlat = CreateRowset(Record.PSXLATITEM);
         &Xlat.Fill("WHERE FILL.FIELDNAME = 'ECL_TICK_STATUS' AND Fill.FIELDVALUE in ('CBT') and EFFDT <= %CurrentDateIn");
         &Xlat_cnt = &Xlat.ActiveRowCount;
         For &j = 1 To &Xlat_cnt
            &CodeIn = &Xlat.GetRow(&j).GetRecord(1).FIELDVALUE.Value;
            &DescIn = &Xlat.GetRow(&j).GetRecord(1).XLATLONGNAME.Value;
            &pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.AddDropDownItem(&CodeIn, &DescIn);
         End-For;
      End-If;
     
      If (&pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.Value = "TBT") Then
         &pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.ClearDropDownList();
         &Xlat = CreateRowset(Record.PSXLATITEM);
         &Xlat.Fill("WHERE FILL.FIELDNAME = 'ECL_TICK_STATUS' AND Fill.FIELDVALUE in ('TBT') and EFFDT <= %CurrentDateIn");
         &Xlat_cnt = &Xlat.ActiveRowCount;
         For &j = 1 To &Xlat_cnt
            &CodeIn = &Xlat.GetRow(&j).GetRecord(1).FIELDVALUE.Value;
            &DescIn = &Xlat.GetRow(&j).GetRecord(1).XLATLONGNAME.Value;
            &pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.AddDropDownItem(&CodeIn, &DescIn);
         End-For;
      End-If;
      *>
  
  
  
  
end-method;

method Pending_status
   Local Rowset &pnd = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_REQ_UPD);
   Local number &i, &Xlat_cnt, &j;
   Local Rowset &Xlat;
   Local string &CodeIn, &DescIn;
   For &i = 1 To &pnd.ActiveRowCount
      If &pnd(&i).ECL_TR_REQ_UPD.ECL_SAVE_STATUS.Value = "" Then
         &pnd(&i).ECL_TR_REQ_UPD.ECL_SAVE_STATUS.ClearDropDownList();
         &Xlat = CreateRowset(Record.PSXLATITEM);
         &Xlat.Fill("WHERE FILL.FIELDNAME = 'ECL_SAVE_STATUS' AND Fill.FIELDVALUE in ('SUB') and EFFDT <= %CurrentDateIn");
         &Xlat_cnt = &Xlat.ActiveRowCount;
         For &j = 1 To &Xlat_cnt
            &CodeIn = &Xlat.GetRow(&j).GetRecord(1).FIELDVALUE.Value;
            &DescIn = "Submit";
            &pnd(&i).ECL_TR_REQ_UPD.ECL_SAVE_STATUS.AddDropDownItem(&CodeIn, &DescIn);
         End-For;
      End-If;
      If &pnd(&i).ECL_TR_REQ_UPD.ECL_SAVE_STATUS.Value = "SUB" Then
         &pnd(&i).ECL_TR_REQ_UPD.ECL_SAVE_STATUS.DisplayOnly = True;
      End-If;
      If (&pnd(&i).ECL_TR_REQ_UPD.ECL_SAVE_STATUS.Value = "SUB") Then
         &pnd(&i).ECL_TR_REQ_UPD.ECL_DEPARTURE_DATE.DisplayOnly = True;
         &pnd(&i).ECL_TR_REQ_UPD.ECL_DEPARTURE_TIME.DisplayOnly = True;
         &pnd(&i).ECL_TR_REQ_UPD.ECL_ARRIVAL_DATE.DisplayOnly = True;
         &pnd(&i).ECL_TR_REQ_UPD.ECL_ARRIVAL_TIME.DisplayOnly = True;
         &pnd(&i).ECL_TR_REQ_UPD.ECL_TRAIN_PLNE_NUM.DisplayOnly = True;
         &pnd(&i).ECL_TR_REQ_UPD.ECL_TRAIN_PLNE_NAM.DisplayOnly = True;
         &pnd(&i).ECL_TR_REQ_UPD.ECL_PNR_NUMBER.DisplayOnly = True;
         &pnd(&i).ECL_TR_REQ_UPD.ECL_BOOK_COST.DisplayOnly = True;
      End-If;
   End-For;
end-method;

method Pending_validation
   /+ &status as String +/
   Local Rowset &pnd = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_REQ_UPD);
   Local number &i;
   Local string &Var;
   For &i = 1 To &pnd.ActiveRowCount
      If (&pnd(&i).ECL_TR_REQ_UPD.ECL_SAVE_STATUS.Value = "SUB") Then
        
         If (&pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.Value = "BC") Or
               (&pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.Value = "TB") Or
               (&pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.Value = "TBT") Then
           
            If None(&pnd(&i).ECL_TR_REQ_UPD.ECL_DEPARTURE_DATE.Value) Then
               &Var = "Departure Date";
               &pnd(&i).ECL_TR_REQ_UPD.ECL_DEPARTURE_DATE.Style = "PSERROR";
               SetCursorPos(Page.ECL_TR_AGNT_UPD, ECL_TR_REQ_UPD.ECL_DEPARTURE_DATE, &i);
               Error MsgGetText(27000, 41, "Please Enter the %1", &Var);
            Else
               &pnd(&i).ECL_TR_REQ_UPD.ECL_DEPARTURE_DATE.Style = "";
            End-If;
           
            If None(&pnd(&i).ECL_TR_REQ_UPD.ECL_ARRIVAL_DATE.Value) Then
               &Var = "Arrival Date";
               &pnd(&i).ECL_TR_REQ_UPD.ECL_ARRIVAL_DATE.Style = "PSERROR";
               SetCursorPos(Page.ECL_TR_AGNT_UPD, ECL_TR_REQ_UPD.ECL_ARRIVAL_DATE, &i);
               Error MsgGetText(27000, 41, "Please Enter the %1", &Var);
            Else
               &pnd(&i).ECL_TR_REQ_UPD.ECL_ARRIVAL_DATE.Style = "";
            End-If;
         End-If;
        
         If None(&pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.Value) Then
            &Var = "Ticket Status";
            &pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.Style = "PSERROR";
            SetCursorPos(Page.ECL_TR_AGNT_UPD, ECL_TR_REQ_UPD.ECL_TICK_STATUS, &i);
            Error MsgGetText(27000, 41, "Please Enter the %1", &Var);
         Else
            &pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.Style = "";
         End-If;
        
        
         If All(&pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.Value) Then
            If (&pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.Value = "BC") Or
                  (&pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.Value = "TB") Or
                  (&pnd(&i).ECL_TR_REQ_UPD.ECL_TICK_STATUS.Value = "TBT") Then
               If &pnd(&i).ECL_TR_REQ_UPD.ECL_BOOK_COST.Value = 0 Then
                  &Var = "Booking Cost";
                  &pnd(&i).ECL_TR_REQ_UPD.ECL_BOOK_COST.Style = "PSERROR";
                  SetCursorPos(Page.ECL_TR_AGNT_UPD, ECL_TR_REQ_UPD.ECL_BOOK_COST, &i);
                  Error MsgGetText(27000, 41, "Please Enter the %1", &Var);
               Else
                  &pnd(&i).ECL_TR_REQ_UPD.ECL_BOOK_COST.Style = "";
               End-If;
            End-If;
         End-If;
        
      End-If;
   End-For;
end-method;

method InvoiceFormat
   /+ &status as String, +/
   /+ &agent as String, +/
   /+ &trvl_req as String, +/
   /+ &Wherestr as String +/
   Local Rowset &pnd = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_REQ_UPD);
   Local Rowset &inv = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_INVC_UPD);
   Local Rowset &cr = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_CR_UPD);
   Local string &default;
   &default = "WHERE ECL_AGENT_ID = " | Quote(%UserId);
   SQLExec(SQL.ECL_TR_INVC_UPD_SQL, &agent);
   REM SQLExec(SQL.ECL_UPD_INVC_SQL, &agent);
  
   If All(&trvl_req) Then
      &inv.Flush();
      &inv.Select(Record.ECL_TR_INVC_UPD, &Wherestr);
     
      If None(&inv(1).ECL_TR_INVC_UPD.ECL_TICKET_SEQ.Value) Then
         ECL_DERIVED.SAVE_PB.Visible = False;
      End-If;
   Else
      &inv.Flush();
      &inv.Select(Record.ECL_TR_INVC_UPD);
   End-If;
  
   If All(&inv(1).ECL_TR_INVC_UPD.ECL_TICKET_SEQ.Value) Then
      &inv.ShowAllRows();
      ECL_DERIVED.SAVE_PB.Visible = True;
   Else
      &inv.HideAllRows();
   End-If;
   &pnd.HideAllRows();
   &cr.HideAllRows();
  
end-method;

method invoice_status
   Local Rowset &inv = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_INVC_UPD);
   If &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_INVOICE_STATUS.Value = "IN" Then
      &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_TRVL_AGNT_BILL.DisplayOnly = False;
      &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_TR_AGT_BILL_DT.DisplayOnly = False;
      &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_TICKET_COST.DisplayOnly = False;
      &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_SERVICE_CHARGE.DisplayOnly = False;
      &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_TAX.DisplayOnly = False;
   End-If;
  
  
   If (&inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_TICK_STATUS.Value = "CB" Or
         &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_TICK_STATUS.Value = "CBT" And
            &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_TICKET_COST.Value = "0") Then
      &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_TRVL_AGNT_BILL.DisplayOnly = True;
      &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_TR_AGT_BILL_DT.DisplayOnly = True;
      &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_TICKET_COST.DisplayOnly = True;
      &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_SERVICE_CHARGE.DisplayOnly = True;
      &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_TAX.DisplayOnly = True;
   End-If;
  
   If (&inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_TICK_STATUS.Value = "CB" Or
         &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_TICK_STATUS.Value = "CBT" And
            &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_TICKET_COST.Value <> "0") Then
      &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_TRVL_AGNT_BILL.DisplayOnly = False;
      &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_TR_AGT_BILL_DT.DisplayOnly = False;
      &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_TICKET_COST.DisplayOnly = False;
      &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_SERVICE_CHARGE.DisplayOnly = False;
      &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_TAX.DisplayOnly = False;
   End-If;
   If &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_INVOICE_STATUS.Value = "" Then
      &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_TRVL_AGNT_BILL.DisplayOnly = True;
      &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_TR_AGT_BILL_DT.DisplayOnly = True;
      &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_TICKET_COST.DisplayOnly = True;
      &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_SERVICE_CHARGE.DisplayOnly = True;
      &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_SERVICE_CHARGE.Value = 0;
      &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_TAX.DisplayOnly = True;
      &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_TAX.Value = 0;
      &inv(CurrentRowNumber()).ECL_TR_INVC_UPD.ECL_TOT_TCKT_COST.Value = 0;
   End-If;
  
end-method;

method invoice_validation
   /+ &status as String +/
  
   Local Rowset &inv = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_INVC_UPD);
   Local number &i, &actual_cost, &tax, &cb, &raised;
   Local string &Var;
   Local SQL &sql;
   Local string &travel_req, &req;
   For &i = 1 To &inv.ActiveRowCount
      /*If there is Cancel and Book Another Ticket then corresponding Ticket Should be booked*/
      If (&inv(&i).ECL_TR_INVC_UPD.ECL_TICK_STATUS.Value = "CBT" Or
            &inv(&i).ECL_TR_INVC_UPD.ECL_TICK_STATUS.Value = "CB") Then
         &cb = &cb + 1;
      End-If;
      If (&inv(&i).ECL_TR_INVC_UPD.ECL_CB_STATUS.Value = "RA" Or
            &inv(&i).ECL_TR_INVC_UPD.ECL_CB_STATUS.Value = "RA") Then
         &raised = &raised + 1;
      End-If;
   End-For;
  
   &sql = CreateSQL("SELECT DISTINCT ECL_TRVL_REQ_ID FROM PS_ECL_TRAVEL_REQ WHERE ECL_TICK_STATUS IN ('CB', 'CBT') AND ECL_CB_STATUS ='' AND ECL_AGENT_ID =:1", %UserId);
   While &sql.Fetch(&req)
      If None(&req) Then
      Else
         &travel_req = &req | "   " | &travel_req;
      End-If;
     
   End-While;
  
  
   If &cb <> &raised Then
      Error MsgGetText(27000, 243, "", &travel_req);
   End-If;
  
   /*If there is Cancel and Book Another Ticket then corresponding Ticket Should be booked  END-*/
  
  
   For &i = 1 To &inv.ActiveRowCount
      If (&inv(&i).ECL_TR_INVC_UPD.ECL_INVOICE_STATUS.Value = "IN") Then
         If &inv(&i).ECL_TR_INVC_UPD.ECL_TICKET_COST.Value <> "0" Then
           
            If None(&inv(&i).ECL_TR_INVC_UPD.ECL_DEPARTURE_DATE.Value) Then
               &Var = "Departure Date";
               &inv(&i).ECL_TR_INVC_UPD.ECL_DEPARTURE_DATE.Style = "PSERROR";
               SetCursorPos(Page.ECL_TR_AGNT_UPD, ECL_TR_INVC_UPD.ECL_DEPARTURE_DATE, &i);
               Error MsgGetText(27000, 41, "Please Enter the %1", &Var);
            Else
               &inv(&i).ECL_TR_INVC_UPD.ECL_DEPARTURE_DATE.Style = "";
            End-If;
           
            If None(&inv(&i).ECL_TR_INVC_UPD.ECL_ARRIVAL_DATE.Value) Then
               &Var = "Arrival Date";
               &inv(&i).ECL_TR_INVC_UPD.ECL_ARRIVAL_DATE.Style = "PSERROR";
               SetCursorPos(Page.ECL_TR_AGNT_UPD, ECL_TR_INVC_UPD.ECL_ARRIVAL_DATE, &i);
               Error MsgGetText(27000, 41, "Please Enter the %1", &Var);
            Else
               &inv(&i).ECL_TR_INVC_UPD.ECL_ARRIVAL_DATE.Style = "";
            End-If;
           
            If None(&inv(&i).ECL_TR_INVC_UPD.ECL_DEPARTURE_TIME.Value) Then
               &Var = "Departure Time";
               &inv(&i).ECL_TR_INVC_UPD.ECL_DEPARTURE_TIME.Style = "PSERROR";
               SetCursorPos(Page.ECL_TR_AGNT_UPD, ECL_TR_INVC_UPD.ECL_DEPARTURE_TIME, &i);
               Error MsgGetText(27000, 41, "Please Enter the %1", &Var);
            Else
               &inv(&i).ECL_TR_INVC_UPD.ECL_DEPARTURE_TIME.Style = "";
            End-If;
           
           
            If None(&inv(&i).ECL_TR_INVC_UPD.ECL_ARRIVAL_TIME.Value) Then
               &Var = "Arrival Time";
               &inv(&i).ECL_TR_INVC_UPD.ECL_ARRIVAL_TIME.Style = "PSERROR";
               SetCursorPos(Page.ECL_TR_AGNT_UPD, ECL_TR_INVC_UPD.ECL_ARRIVAL_TIME, &i);
               Error MsgGetText(27000, 41, "Please Enter the %1", &Var);
            Else
               &inv(&i).ECL_TR_INVC_UPD.ECL_ARRIVAL_TIME.Style = "";
            End-If;
           
            If None(&inv(&i).ECL_TR_INVC_UPD.ECL_TRAIN_PLNE_NUM.Value) Then
               &Var = "Train/Plane Number";
               &inv(&i).ECL_TR_INVC_UPD.ECL_TRAIN_PLNE_NUM.Style = "PSERROR";
               SetCursorPos(Page.ECL_TR_AGNT_UPD, ECL_TR_INVC_UPD.ECL_TRAIN_PLNE_NUM, &i);
               Error MsgGetText(27000, 41, "Please Enter the %1", &Var);
            Else
               &inv(&i).ECL_TR_INVC_UPD.ECL_TRAIN_PLNE_NUM.Style = "";
            End-If;
           
            If None(&inv(&i).ECL_TR_INVC_UPD.ECL_TRAIN_PLNE_NAM.Value) Then
               &Var = "Train/Plane Name";
               &inv(&i).ECL_TR_INVC_UPD.ECL_TRAIN_PLNE_NAM.Style = "PSERROR";
               SetCursorPos(Page.ECL_TR_AGNT_UPD, ECL_TR_INVC_UPD.ECL_TRAIN_PLNE_NAM, &i);
               Error MsgGetText(27000, 41, "Please Enter the %1", &Var);
            Else
               &inv(&i).ECL_TR_INVC_UPD.ECL_TRAIN_PLNE_NAM.Style = "";
            End-If;
           
            If None(&inv(&i).ECL_TR_INVC_UPD.ECL_PNR_NUMBER.Value) Then
               &Var = "PNR/Air Ticket Number";
               &inv(&i).ECL_TR_INVC_UPD.ECL_PNR_NUMBER.Style = "PSERROR";
               SetCursorPos(Page.ECL_TR_AGNT_UPD, ECL_TR_INVC_UPD.ECL_PNR_NUMBER, &i);
               Error MsgGetText(27000, 41, "Please Enter the %1", &Var);
            Else
               &inv(&i).ECL_TR_INVC_UPD.ECL_PNR_NUMBER.Style = "";
            End-If;
           
            If None(&inv(&i).ECL_TR_INVC_UPD.ECL_TRVL_AGNT_BILL.Value) Then
               &Var = "Travel Agent Bill No";
               &inv(&i).ECL_TR_INVC_UPD.ECL_TRVL_AGNT_BILL.Style = "PSERROR";
               SetCursorPos(Page.ECL_TR_AGNT_UPD, ECL_TR_INVC_UPD.ECL_TRVL_AGNT_BILL, &i);
               Error MsgGetText(27000, 41, "Please Enter the %1", &Var);
            Else
               &inv(&i).ECL_TR_INVC_UPD.ECL_TRVL_AGNT_BILL.Style = "";
            End-If;
           
            If None(&inv(&i).ECL_TR_INVC_UPD.ECL_TR_AGT_BILL_DT.Value) Then
               &Var = "Bill Date";
               &inv(&i).ECL_TR_INVC_UPD.ECL_TR_AGT_BILL_DT.Style = "PSERROR";
               SetCursorPos(Page.ECL_TR_AGNT_UPD, ECL_TR_INVC_UPD.ECL_TR_AGT_BILL_DT, &i);
               Error MsgGetText(27000, 41, "Please Enter the %1", &Var);
            Else
               &inv(&i).ECL_TR_INVC_UPD.ECL_TR_AGT_BILL_DT.Style = "";
            End-If;
         End-If;
        
         /*If Ticket Cost is zero then throw error*/
         If &inv(&i).ECL_TR_INVC_UPD.ECL_TICKET_COST.Value = "0" Then
            &Var = "Ticket Cost";
            &inv(&i).ECL_TR_INVC_UPD.ECL_TICKET_COST.Style = "PSERROR";
            SetCursorPos(Page.ECL_TR_AGNT_UPD, ECL_TR_INVC_UPD.ECL_TICKET_COST, &i);
            Error MsgGetText(27000, 41, "Please Enter the %1", &Var);
         Else
            &inv(&i).ECL_TR_INVC_UPD.ECL_TICKET_COST.Style = "";
         End-If;
        
      End-If;
     
      &actual_cost = &inv(&i).ECL_TR_INVC_UPD.ECL_TICKET_COST.Value;
      &tax = &inv(&i).ECL_TR_INVC_UPD.ECL_SERVICE_CHARGE.Value + &inv(&i).ECL_TR_INVC_UPD.ECL_TAX.Value;
      If &tax > &actual_cost Then
         &inv(&i).ECL_TR_INVC_UPD.ECL_INVOICE_STATUS.Style = "PSERROR";
         SetCursorPos(Page.ECL_TR_AGNT_UPD, ECL_TR_INVC_UPD.ECL_INVOICE_STATUS, &i);
         Error MsgGetText(27000, 98, "Service Cost", &Var);
      Else
         &inv(&i).ECL_TR_INVC_UPD.ECL_INVOICE_STATUS.Style = "";
      End-If;
     
      If &inv(&i).ECL_TR_INVC_UPD.ECL_INVOICE_STATUS.Value = "IN" Then
         &inv(&i).ECL_TR_INVC_UPD.ECL_TOT_TCKT_COST.Value = &inv(&i).ECL_TR_INVC_UPD.ECL_TICKET_COST.Value + &inv(&i).ECL_TR_INVC_UPD.ECL_SERVICE_CHARGE.Value + &inv(&i).ECL_TR_INVC_UPD.ECL_TAX.Value;
      End-If;
     
   End-For;
  
end-method;

method invoice_calculation
   Local Rowset &inv = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_INVC_UPD);
   Local number &i, &Xlat_cnt, &j;
   Local Rowset &Xlat;
   Local string &CodeIn, &DescIn;
   For &i = 1 To &inv.ActiveRowCount
      If &inv(&i).ECL_TR_INVC_UPD.ECL_INVOICE_STATUS.Value = "IN" Then
         &inv(&i).ECL_TR_INVC_UPD.ECL_TOT_TCKT_COST.Value = &inv(&i).ECL_TR_INVC_UPD.ECL_TICKET_COST.Value + &inv(&i).ECL_TR_INVC_UPD.ECL_SERVICE_CHARGE.Value + &inv(&i).ECL_TR_INVC_UPD.ECL_TAX.Value;
      End-If;
      If (&inv(&i).ECL_TR_INVC_UPD.ECL_TICK_STATUS.Value = "BC") Or
            (&inv(&i).ECL_TR_INVC_UPD.ECL_TICK_STATUS.Value = "TB") Or
            (&inv(&i).ECL_TR_INVC_UPD.ECL_TICK_STATUS.Value = "TBT") Or
            (&inv(&i).ECL_TR_INVC_UPD.ECL_TICK_STATUS.Value = "CBT") Or
            (&inv(&i).ECL_TR_INVC_UPD.ECL_TICK_STATUS.Value = "CB") Then
         &inv(&i).ECL_TR_INVC_UPD.ECL_INVOICE_STATUS.DisplayOnly = False;
         &inv(&i).ECL_TR_INVC_UPD.ECL_INVOICE_STATUS.ClearDropDownList();
         &Xlat = CreateRowset(Record.PSXLATITEM);
         &Xlat.Fill("WHERE FILL.FIELDNAME = 'ECL_INVOICE_STATUS' AND Fill.FIELDVALUE in ('IN') and EFFDT <= %CurrentDateIn");
         &Xlat_cnt = &Xlat.ActiveRowCount;
         For &j = 1 To &Xlat_cnt
            &CodeIn = &Xlat.GetRow(&j).GetRecord(1).FIELDVALUE.Value;
            &DescIn = &Xlat.GetRow(&j).GetRecord(1).XLATLONGNAME.Value;
            &inv(&i).ECL_TR_INVC_UPD.ECL_INVOICE_STATUS.AddDropDownItem(&CodeIn, &DescIn);
         End-For;
      End-If;
     
      If ((&inv(&i).ECL_TR_INVC_UPD.ECL_TICK_STATUS.Value = "CB") Or
            (&inv(&i).ECL_TR_INVC_UPD.ECL_TICK_STATUS.Value = "CBT")) And
            (&inv(&i).ECL_TR_INVC_UPD.ECL_TICKET_COST.Value = "0") Then
         &inv(&i).ECL_TR_INVC_UPD.ECL_INVOICE_STATUS.DisplayOnly = True;
         &inv(&i).ECL_TR_INVC_UPD.ECL_INVOICE_STATUS.ClearDropDownList();
         &Xlat = CreateRowset(Record.PSXLATITEM);
         &Xlat.Fill("WHERE FILL.FIELDNAME = 'ECL_INVOICE_STATUS' AND Fill.FIELDVALUE in ('NA') and EFFDT <= %CurrentDateIn");
         &Xlat_cnt = &Xlat.ActiveRowCount;
         For &j = 1 To &Xlat_cnt
            &CodeIn = &Xlat.GetRow(&j).GetRecord(1).FIELDVALUE.Value;
            &DescIn = &Xlat.GetRow(&j).GetRecord(1).XLATLONGNAME.Value;
            &inv(&i).ECL_TR_INVC_UPD.ECL_INVOICE_STATUS.AddDropDownItem(&CodeIn, &DescIn);
            &inv(&i).ECL_TR_INVC_UPD.ECL_INVOICE_STATUS.Value = "NA";
         End-For;
      End-If;
     
      If (&inv(&i).ECL_TR_INVC_UPD.ECL_TICK_STATUS.Value = "RC") Then
         &inv(&i).ECL_TR_INVC_UPD.ECL_INVOICE_STATUS.DisplayOnly = True;
         &inv(&i).ECL_TR_INVC_UPD.ECL_INVOICE_STATUS.ClearDropDownList();
         &Xlat = CreateRowset(Record.PSXLATITEM);
         &Xlat.Fill("WHERE FILL.FIELDNAME = 'ECL_INVOICE_STATUS' AND Fill.FIELDVALUE in ('CA') and EFFDT <= %CurrentDateIn");
         &Xlat_cnt = &Xlat.ActiveRowCount;
         For &j = 1 To &Xlat_cnt
            &CodeIn = &Xlat.GetRow(&j).GetRecord(1).FIELDVALUE.Value;
            &DescIn = &Xlat.GetRow(&j).GetRecord(1).XLATLONGNAME.Value;
            &inv(&i).ECL_TR_INVC_UPD.ECL_INVOICE_STATUS.AddDropDownItem(&CodeIn, &DescIn);
         End-For;
      End-If;
     
      If (&inv(&i).ECL_TR_INVC_UPD.ECL_TICK_STATUS.Value = "NA") Then
         &inv(&i).ECL_TR_INVC_UPD.ECL_INVOICE_STATUS.DisplayOnly = False;
         &inv(&i).ECL_TR_INVC_UPD.ECL_INVOICE_STATUS.ClearDropDownList();
         &Xlat = CreateRowset(Record.PSXLATITEM);
         &Xlat.Fill("WHERE FILL.FIELDNAME = 'ECL_INVOICE_STATUS' AND Fill.FIELDVALUE in ('NA') and EFFDT <= %CurrentDateIn");
         &Xlat_cnt = &Xlat.ActiveRowCount;
         For &j = 1 To &Xlat_cnt
            &CodeIn = &Xlat.GetRow(&j).GetRecord(1).FIELDVALUE.Value;
            &DescIn = &Xlat.GetRow(&j).GetRecord(1).XLATLONGNAME.Value;
            &inv(&i).ECL_TR_INVC_UPD.ECL_INVOICE_STATUS.AddDropDownItem(&CodeIn, &DescIn);
         End-For;
      End-If;
     
      If &inv(&i).ECL_TR_INVC_UPD.ECL_INVOICE_STATUS.Value = "IN" Then
        
         &inv(&i).ECL_TR_INVC_UPD.ECL_INVOICE_STATUS.DisplayOnly = False;
         &inv(&i).ECL_TR_INVC_UPD.ECL_TRVL_AGNT_BILL.DisplayOnly = False;
         &inv(&i).ECL_TR_INVC_UPD.ECL_TR_AGT_BILL_DT.DisplayOnly = False;
         &inv(&i).ECL_TR_INVC_UPD.ECL_TICKET_COST.DisplayOnly = False;
         &inv(&i).ECL_TR_INVC_UPD.ECL_SERVICE_CHARGE.DisplayOnly = False;
         &inv(&i).ECL_TR_INVC_UPD.ECL_TAX.DisplayOnly = False;
        
      End-If;
      /*If the Ticket Status is Cancel and Book Another and Ticket Cost is 0*/
      If (&inv(&i).ECL_TR_INVC_UPD.ECL_TICK_STATUS.Value = "CB" Or
            &inv(&i).ECL_TR_INVC_UPD.ECL_TICK_STATUS.Value = "CBT") And
            (&inv(&i).ECL_TR_INVC_UPD.ECL_TICKET_COST.Value = "0") Then
         &inv(&i).ECL_TR_INVC_UPD.ECL_TRAIN_PLNE_NUM.DisplayOnly = True;
         &inv(&i).ECL_TR_INVC_UPD.ECL_TRAIN_PLNE_NAM.DisplayOnly = True;
         &inv(&i).ECL_TR_INVC_UPD.ECL_PNR_NUMBER.DisplayOnly = True;
         &inv(&i).ECL_TR_INVC_UPD.ECL_INVOICE_STATUS.DisplayOnly = True;
         &inv(&i).ECL_TR_INVC_UPD.ECL_TRVL_AGNT_BILL.DisplayOnly = True;
         &inv(&i).ECL_TR_INVC_UPD.ECL_TR_AGT_BILL_DT.DisplayOnly = True;
         &inv(&i).ECL_TR_INVC_UPD.ECL_TICKET_COST.DisplayOnly = True;
         &inv(&i).ECL_TR_INVC_UPD.ECL_SERVICE_CHARGE.DisplayOnly = True;
         &inv(&i).ECL_TR_INVC_UPD.ECL_TAX.DisplayOnly = True;
         &inv(&i).ECL_TR_INVC_UPD.ECL_DEPARTURE_DATE.DisplayOnly = True;
         &inv(&i).ECL_TR_INVC_UPD.ECL_DEPARTURE_TIME.DisplayOnly = True;
         &inv(&i).ECL_TR_INVC_UPD.ECL_ARRIVAL_DATE.DisplayOnly = True;
         &inv(&i).ECL_TR_INVC_UPD.ECL_ARRIVAL_TIME.DisplayOnly = True;
      End-If;
     
     
     
   End-For;
end-method;

method CreditFormat
   /+ &status as String, +/
   /+ &agent as String, +/
   /+ &trvl_req as String, +/
   /+ &Wherestr as String +/
   Local Rowset &pnd = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_REQ_UPD);
   Local Rowset &inv = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_INVC_UPD);
   Local Rowset &cr = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_CR_UPD);
  
   Local string &default;
   &default = "WHERE ECL_AGENT_ID = " | Quote(%UserId);
   SQLExec(SQL.ECL_TR_CR_UPD_SQL, &agent);
  
   If All(&trvl_req) Then
      &cr.Flush();
      &cr.Select(Record.ECL_TR_CR_UPD, &Wherestr);
   Else
      &cr.Flush();
      &cr.Select(Record.ECL_TR_CR_UPD, &default);
   End-If;
   If All(&cr(1).ECL_TR_CR_UPD.ECL_TICKET_SEQ.Value) Then
      &cr.ShowAllRows();
      ECL_DERIVED.SAVE_PB.Visible = True;
   Else
      &cr.HideAllRows();
   End-If;
   &pnd.HideAllRows();
   &inv.HideAllRows();
end-method;



method Credit_rowinit
   Local Rowset &cr = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_CR_UPD);
   Local number &i;
   For &i = 1 To &cr.ActiveRowCount
      If &cr(&i).ECL_TR_CR_UPD.ECL_CANCEL_TYPE.Value = "NR" Then
         &cr(&i).ECL_TR_CR_UPD.ECL_CANCEL_CHARGE.DisplayOnly = True;
         &cr(&i).ECL_TR_CR_UPD.ECL_CANCEL_CHARGE.DisplayOnly = True;
         &cr(&i).ECL_TR_CR_UPD.ECL_REFUND_AMOUNT.DisplayOnly = True;
         &cr(&i).ECL_TR_CR_UPD.ECL_CREDIT_AMOUNT.DisplayOnly = True;
      End-If
   End-For;
end-method;


method Credit_status
   Local Rowset &cr = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_CR_UPD);
   Local number &i;
   If &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_CREDIT_STATUS.Value = "CR" Then
      &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_TRVL_CRDT_BILL.DisplayOnly = False;
      &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_CANCEL_TYPE.DisplayOnly = False;
      &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_CANCEL_DT.DisplayOnly = False;
      &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_CANCEL_CHARGE.DisplayOnly = False;
      &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_REFUND_AMOUNT.DisplayOnly = False;
   End-If;
   If &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_CREDIT_STATUS.Value = "" Then
     
      &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_TRVL_CRDT_BILL.DisplayOnly = True;
      &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_CANCEL_TYPE.DisplayOnly = True;
      &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_CANCEL_TYPE.Value = "";
      &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_CANCEL_CHARGE.Value = 0;
      &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_REFUND_AMOUNT.Value = 0;
      &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_CANCEL_DT.DisplayOnly = True;
      &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_CANCEL_CHARGE.DisplayOnly = True;
      &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_REFUND_AMOUNT.DisplayOnly = True;
   End-If;
   If (&cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_TICK_STATUS.Value = "CB" Or
         &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_TICK_STATUS.Value = "CBT") And
         (&cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_TICKET_COST.Value = "0") Then
      &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_CANCEL_CHARGE.DisplayOnly = True;
      &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_REFUND_AMOUNT.DisplayOnly = True;
      &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_CREDIT_AMOUNT.DisplayOnly = True;
      &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_TRVL_CRDT_BILL.DisplayOnly = True;
      &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_CANCEL_TYPE.DisplayOnly = True;
      &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_CANCEL_DT.DisplayOnly = True;
   End-If;
  
end-method;

method Credit_cancel_type
   Local Rowset &cr = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_CR_UPD);
   Local number &i;
  
   &cr = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_CR_UPD);
   If &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_CANCEL_TYPE.Value = "NR" Or
         &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_CANCEL_TYPE.Value = "" Then
      &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_CANCEL_CHARGE.DisplayOnly = True;
      &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_REFUND_AMOUNT.DisplayOnly = True;
      &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_CANCEL_CHARGE.Value = 0.00;
      &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_REFUND_AMOUNT.Value = 0.00;
      &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_CREDIT_AMOUNT.Value = 0.00;
   End-If;
   If &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_CANCEL_TYPE.Value = "RE" Then
      &cr(CurrentRowNumber()).ECL_TR_CR_UPD.ECL_CANCEL_CHARGE.DisplayOnly = False;
   End-If;
   For &i = 1 To &cr.ActiveRowCount
      If &cr(&i).ECL_TR_CR_UPD.ECL_CREDIT_STATUS.Value = "CR" Then
         If &cr(&i).ECL_TR_CR_UPD.ECL_CANCEL_TYPE.Value = "RE" Then
            &cr(&i).ECL_TR_CR_UPD.ECL_REFUND_AMOUNT.Value = (&cr(&i).ECL_TR_CR_UPD.ECL_TOT_TCKT_COST.Value - &cr(&i).ECL_TR_CR_UPD.ECL_CANCEL_CHARGE.Value);
            &cr(&i).ECL_TR_CR_UPD.ECL_CREDIT_AMOUNT.Value = &cr(&i).ECL_TR_CR_UPD.ECL_REFUND_AMOUNT.Value;
            &cr(&i).ECL_TR_CR_UPD.ECL_REFUND_AMOUNT.DisplayOnly = True;
         End-If;
      End-If;
   End-For;
  
end-method;

method Credit_cancel_charge
   Local Rowset &cr = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_CR_UPD);
   Local number &i;
   For &i = 1 To &cr.ActiveRowCount
      If &cr(&i).ECL_TR_CR_UPD.ECL_CREDIT_STATUS.Value = "CR" Then
         If &cr(&i).ECL_TR_CR_UPD.ECL_CANCEL_TYPE.Value = "RE" Then
            &cr(&i).ECL_TR_CR_UPD.ECL_REFUND_AMOUNT.DisplayOnly = True;
            &cr(&i).ECL_TR_CR_UPD.ECL_REFUND_AMOUNT.Value = (&cr(&i).ECL_TR_CR_UPD.ECL_TOT_TCKT_COST.Value - &cr(&i).ECL_TR_CR_UPD.ECL_CANCEL_CHARGE.Value);
            &cr(&i).ECL_TR_CR_UPD.ECL_CREDIT_AMOUNT.Value = &cr(&i).ECL_TR_CR_UPD.ECL_REFUND_AMOUNT.Value;
         End-If;
      End-If;
   End-For;
end-method;

method Credit_validation
   /+ &status as String +/
   Local Rowset &cr = GetLevel0().GetRow(1).GetRowset(Scroll.ECL_TR_CR_UPD);
   Local number &i;
   Local string &Var;
   Local number &cancel_charge, &ticket_cost;
   For &i = 1 To &cr.ActiveRowCount
      /*Validates only for Credit*/
      If (&cr(&i).ECL_TR_CR_UPD.ECL_CREDIT_STATUS.Value = "CR") Then
         If &cr(&i).ECL_TR_CR_UPD.ECL_TOT_TCKT_COST.Value <> "0" Then
            If None(&cr(&i).ECL_TR_CR_UPD.ECL_TRVL_CRDT_BILL.Value) Then
               &Var = "Credit Bill";
               &cr(&i).ECL_TR_CR_UPD.ECL_TRVL_CRDT_BILL.Style = "PSERROR";
               SetCursorPos(Page.ECL_TR_AGNT_UPD, ECL_TR_CR_UPD.ECL_TRVL_CRDT_BILL, &i);
               Error MsgGetText(27000, 41, "Please Enter the %1", &Var);
            Else
               &cr(&i).ECL_TR_CR_UPD.ECL_TRVL_CRDT_BILL.Style = "";
            End-If;
           
            If None(&cr(&i).ECL_TR_CR_UPD.ECL_CANCEL_TYPE.Value) Then
               &Var = "Cancellation Type";
               &cr(&i).ECL_TR_CR_UPD.ECL_CANCEL_TYPE.Style = "PSERROR";
               SetCursorPos(Page.ECL_TR_AGNT_UPD, ECL_TR_CR_UPD.ECL_CANCEL_TYPE, &i);
               Error MsgGetText(27000, 41, "Please Enter the %1", &Var);
            Else
               &cr(&i).ECL_TR_CR_UPD.ECL_CANCEL_TYPE.Style = "";
            End-If;
           
            If None(&cr(&i).ECL_TR_CR_UPD.ECL_CANCEL_DT.Value) Then
               &Var = "Credit Note Date";
               &cr(&i).ECL_TR_CR_UPD.ECL_CANCEL_DT.Style = "PSERROR";
               SetCursorPos(Page.ECL_TR_AGNT_UPD, ECL_TR_CR_UPD.ECL_CANCEL_DT, &i);
               Error MsgGetText(27000, 41, "Please Enter the %1", &Var);
            Else
               &cr(&i).ECL_TR_CR_UPD.ECL_CANCEL_DT.Style = "";
            End-If;
         End-If;
      End-If;
      &cancel_charge = &cr(&i).ECL_TR_CR_UPD.ECL_CANCEL_CHARGE.Value;
      &ticket_cost = &cr(&i).ECL_TR_CR_UPD.ECL_TOT_TCKT_COST.Value;
     
      If &cancel_charge > &ticket_cost Then
         &cr(&i).ECL_TR_CR_UPD.ECL_CANCEL_CHARGE.Style = "PSERROR";
         SetCursorPos(Page.ECL_TR_AGNT_UPD, ECL_TR_CR_UPD.ECL_CANCEL_CHARGE, &i);
         Error MsgGetText(27000, 101, "Cancellation charge cannot be greater than Actual Cost", &Var);
      Else
         &cr(&i).ECL_TR_CR_UPD.ECL_CANCEL_CHARGE.Style = "";
      End-If;
     
   End-For;
end-method;



app engine
<*********************************************************************
Developer Name: Kondal Reddy
Date: 01-April-2011
Descr: Code handled for Writing the data into File
*****************************************************************>
Function RemoveSpecialChar(&Char As string) Returns string
  
   For &m = 1 To Len(&Char)
      If Substring(&Char, &m, 1) = Char(13) Or
            Substring(&Char, &m, 1) = Char(10) Or
            Substring(&Char, &m, 1) = Char(9) Or
            Substring(&Char, &m, 1) = Char(22) Then
         &ModifiedComments = &ModifiedComments | "";
      Else
         &ModifiedComments = &ModifiedComments | Substring(&Char, &m, 1);
      End-If;
   End-For;
   Return (&ModifiedComments);
End-Function;

Local string &Delimiter;
Component File &OutFile_ARFS;
Component number &i;
Component string &id;
Component string &type_flag;
Component number &claim, &claim_tot_lines;
Local number &mincount = 0;

&Delimiter = Char(9);
&GLCode = "";
&Flag = "EC";
&Category = ECL_CLAIMS_AET.ECL_CATEGORY.Value;
&Claim_type = ECL_CLAIMS_AET.ECL_CLAIM_TYP.Value;
SQLExec("SELECT ECL_GL_CODE FROM PS_ECL_GL_CODE_TBL WHERE ECL_CATEGORY =:1 AND ECL_CLAIM_TYP =:2 ", &Category, &Claim_type, &GLCode);

&DATE = DateTimeToLocalizedString(%Date, "dd/MM/yyyy");
&DocDate = ECL_CLAIMS_AET.ECL_REQUEST_DT.Value;
&DDate = DateTimeToLocalizedString(&DocDate, "dd/MM/yyyy");
&Ref = ECL_CLAIMS_AET.ECL_CLAIM_REQ_ID.Value;

If &Ref <> &id Then
   &claim = &claim + 1;
End-If;

&lenght = Len(&Ref);
For &j = 1 To (20 - &lenght)
   &space = &space | " ";
End-For;
&Ref = &space | &Ref;

&TotAmount = ECL_CLAIMS_AET.ECL_DEPARTURE.Value;
&Emplid = ECL_CLAIMS_AET.EMPLID.Value;
&SelfReuAmount = ECL_CLAIMS_AET.ECL_LOCATION_FROM.Value;
&CorpCardAmount = ECL_CLAIMS_AET.ECL_LOCATION_TO.Value;
&Zone = ECL_CLAIMS_AET.ZIN_ZONE.Value;
&Branch = ECL_CLAIMS_AET.LOCATION.Value;
&CostCenter = ECL_CLAIMS_AET.ECL_COST_CENTER.Value;
&Narration = ECL_CLAIMS_AET.COMMENTS1.Value;

&ModNarration = RemoveSpecialChar(&Narration);

&Narr_len = Len(&ModNarration);
If &Narr_len > 50 Then
   &ModNarration = Substring(&ModNarration, 1, 50);
End-If;
For &l = 1 To (50 - &Narr_len)
   &space_1 = &space_1 | " ";
End-For;
&ModNarration = &space_1 | &ModNarration;

&CReqId = ECL_CLAIMS_AET.ECL_CLAIM_REQ_ID.Value;
&lenght = Len(&CReqId);
For &j = 1 To (12 - &lenght)
   &Place = &Place | " ";
End-For;
&CReqId = &Place | &CReqId;

&Blen = Len(&Branch);
For &l = 1 To (4 - &Blen)
   &BPlace = &BPlace | " ";
End-For;
&Branch = &BPlace | &Branch;

If ECL_CLAIMS_AET.ECL_CLAIM_REQ_ID.Value <> &id Then
   &i = &i + 1;
End-If;

&len = &i;
&totLen = Len(&len);
If &totLen = 1 Then
   &k = "000" | &i;
End-If;
If &totLen = 2 Then
   &k = "00" | &i;
End-If;
If &totLen = 3 Then
   &k = "0" | &i;
End-If;
If &totLen = 4 Then
   &k = "" | &i;
End-If;

&id = ECL_CLAIMS_AET.ECL_CLAIM_REQ_ID.Value;

<* If &type_flag <> &Claim_type Then
   &type_flag = &Claim_type;
   MessageBox(0, "", 0, 0, "claim type " | &type_flag);
   &claim_req_id = LTrim(&Ref);
   SQLExec("SELECT SUM(ECL_TOT_REIMBU_AMT) FROM PS_ECL_CLAIMS_BUSN WHERE ECL_CLAIM_REQ_ID =:1 AND ECL_CATEGORY =:2 AND ECL_CLAIM_TYP =:3", &claim_req_id, &Category, &Claim_type, &sum_Reum_amt);
   SQLExec("SELECT SUM(ECL_TOT_CORPCD_AMT)  FROM PS_ECL_CLAIMS_BUSN WHERE ECL_CLAIM_REQ_ID =:1 AND ECL_CATEGORY =:2 AND ECL_CLAIM_TYP =:3", &claim_req_id, &Category, &Claim_type, &sum_corp_amt);
   SQLExec("SELECT SUM(ECL_TOT_CLAIM_AMT)  FROM PS_ECL_CLAIMS_BUSN WHERE ECL_CLAIM_REQ_ID =:1 AND ECL_CATEGORY =:2 AND ECL_CLAIM_TYP =:3", &claim_req_id, &Category, &Claim_type, &sum_tot_amt);
   MessageBox(0, "", 0, 0, "claim id " | &claim_req_id);
   MessageBox(0, "", 0, 0, "tot reimb " | &sum_Reum_amt);
   MessageBox(0, "", 0, 0, "tot corp " | &sum_corp_amt);
   MessageBox(0, "", 0, 0, "tot amt " | &sum_tot_amt);
  
   rem &Eclaims = &k | &Flag | &DATE | &DDate | &Ref | &Empty | &GLCode | &TotAmount | &Emplid | &SelfReuAmount | &CorpCardAmount | &Zone | &Branch | &CostCenter | &Narration | &CReqId | &Empty | &Empty;
   rem &Eclaims = &k | &Flag | &DATE | &DDate | &Ref | "0000000000000.00" | &GLCode | &TotAmount | &Emplid | &SelfReuAmount | &CorpCardAmount | &Zone | &Branch | &CostCenter | &Narration | &CReqId | "0000000000000.00" | "0000000000000.00";
   &Eclaims = &k | &Flag | &DATE | &DDate | &Ref | "0000000000000.00" | &GLCode | &sum_tot_amt | &Emplid | &sum_Reum_amt | &sum_corp_amt | &Zone | &Branch | &CostCenter | &Narration | &CReqId | "0000000000000.00" | "0000000000000.00";
  
   If &OutFile_ARFS.IsOpen Then
      &OutFile_ARFS.WriteLine(&Eclaims);
   End-If;
   &req_id = &claim_req_id;
   If &claim_req_id <> &req_id Then
      &type_flag = "";
   End-If;
End-If;*>

&Eclaims = &k | &Flag | &DATE | &DDate | &Ref | "0000000000000.00" | &GLCode | &TotAmount | &Emplid | &SelfReuAmount | &CorpCardAmount | &Zone | &Branch | &CostCenter | &ModNarration | &CReqId | "0000000000000.00" | "0000000000000.00";
If &OutFile_ARFS.IsOpen Then
   &OutFile_ARFS.WriteLine(&Eclaims);
   &claim_tot_lines = &claim_tot_lines + 1;
End-If;

sql

 %SelectInit(ECL_CATEGORY,ECL_CLAIM_TYP,ECL_REQUEST_DT , ECL_CLAIM_REQ_ID ,ECL_GL_CODE ,ECL_DEPARTURE ,EMPLID ,ECL_LOCATION_FROM ,ECL_LOCATION_TO ,ZIN_ZONE ,LOCATION ,ECL_COST_CENTER ,COMMENTS1 ,ECL_CLAIM_REQ_ID)
 SELECT A.ECL_CATEGORY
 ,A.ECL_CLAIM_TYP
 ,A.ECL_REQUEST_DT
 , RIGHT(' '+ CONVERT(VARCHAR
 , A.ECL_CLAIM_REQ_ID)
 , 20) AS ECL_CLAIM_REQ_ID
 , A.ECL_GL_CODE
 , RIGHT(REPLICATE('0'
 , 16)+ CAST(A.ECL_TOT_CLAIM_AMT AS nvarchar(16))
 , 16) AS ECL_TOT_CLAIM_AMT
 , A.EMPLID
 , RIGHT(REPLICATE('0'
 , 16)+ CAST(A.ECL_TOT_REIMBU_AMT AS nvarchar(16))
 , 16) AS ECL_TOT_REIMBU_AMT
 , RIGHT(REPLICATE('0'
 , 16)+ CAST(A.ECL_TOT_CORPCD_AMT AS nvarchar(16))
 , 16) AS ECL_TOT_CORPCD_AMT
 ,(
 SELECT TOP 1 C.ZIN_ZONE
  FROM PS_ZIN_JOB C
 WHERE C.EMPLID =A.EMPLID
   AND C.EFFDT =(
 SELECT MAX(C1.EFFDT)
  FROM PS_ZIN_JOB C1
 WHERE C1.EMPLID=C.EMPLID
   AND C1.EMPL_RCD = C.EMPL_RCD
   AND C1.EFFDT <= GETDATE())
   AND C.EFFSEQ = (
 SELECT MAX(JOB_ES.EFFSEQ)
  FROM PS_JOB JOB_ES
 WHERE JOB_ES.EMPLID = C.EMPLID
   AND JOB_ES.EMPL_RCD = C.EMPL_RCD
   AND JOB_ES.EFFDT = C.EFFDT ) ) AS ZIN_ZONE ,(
 SELECT TOP 1 C.LOCATION
  FROM PS_ZIN_JOB C
 WHERE C.EMPLID =A.EMPLID
   AND C.EFFDT =(
 SELECT MAX(C1.EFFDT)
  FROM PS_ZIN_JOB C1
 WHERE C1.EMPLID=C.EMPLID
   AND C1.EMPL_RCD = C.EMPL_RCD
   AND C1.EFFDT <= GETDATE())
   AND C.EFFSEQ = (
 SELECT MAX(JOB_ES.EFFSEQ)
  FROM PS_JOB JOB_ES
 WHERE JOB_ES.EMPLID = C.EMPLID
   AND JOB_ES.EMPL_RCD = C.EMPL_RCD
   AND JOB_ES.EFFDT = C.EFFDT ) ) AS LOCATION , A.ECL_COST_CENTER , A.COMMENTS1 , RIGHT(' '+ CONVERT (VARCHAR , A.ECL_CLAIM_REQ_ID) , 20) AS ECL_CLAIM_REQ_ID
  FROM PS_ECL_CLAIMS_BUSN A , PS_ECL_CLAIMS_HDR B
 WHERE A.ECL_CLAIM_REQ_ID = B.ECL_CLAIM_REQ_ID
   AND A.EMPLID= B.EMPLID
   AND A.EMPL_RCD = B.EMPL_RCD
   AND A.ECL_CATEGORY = B.ECL_CATEGORY
   AND B.ECL_STATUS = 'PT'



Component File &logFile;

&Delimiter = Char(9);
&logFile = GetFile(GetEnv("PSPRCSLOGDIR") | "\Upload logFile.XLS", "W", %FilePath_Absolute);
&logFile.WriteLine("Claim Req Id" | &Delimiter | "Claim Status" | &Delimiter | "Expense Document Number" | &Delimiter | "Expense Document Date" | &Delimiter | "Payment Document Number" | &Delimiter | "Payment Document Date");

import ZIN_COMMON:*;

Local File &APPL_FILE;
Local array of string &APP_ARY;
Local string &APPL_DATA;
Component File &logFile;

&Delimiter = Char(9);
Local ZIN_COMMON:AppEngineBase &AppEngine = create ZIN_COMMON:AppEngineBase();
Local ZIN_COMMON:ReportBase &Value = create ZIN_COMMON:ReportBase();

rem SQLExec("Select Z_FILE_PATH from PS_ECL_SAP_TBL WHERE OPRID = :1 AND RUN_CNTL_ID = :2", Z_DC_AET.OPRID, Z_DC_AET.RUN_CNTL_ID, &FILE_PATH);
REM &FILE_PATH = "d:\Files\INVC.csv";
rem &FILE_PATH = "C:\temp\SAP.txt";
REM &FILE_PATH = "C:\Documents and Settings\Admin\Desktop\SAP.txt";
rem MessageBox(0, "", 0, 0, "File Path :" | &FILE_PATH);

&Filepath = GetAttachment("ftp://Admin:Mphasis123@10.32.16.26/", "SAP.txt", "C:\temp\SAP.txt");

&APPL_FILE = GetFile("C:\temp\SAP.txt", "E", %FilePath_Absolute);

If &APPL_FILE.IsOpen Then
   While &APPL_FILE.ReadLine(&APPL_DATA);
     
      &APP_ARY = Split(&APPL_DATA, ";");
      &id = &APP_ARY [1];
      &empl_id = &APP_ARY [2];
      &exp_doc_no = &APP_ARY [3];
      &date = &APP_ARY [4];
      &exp_doc_date = DateValue(&date);
      &pay_doc_no = &APP_ARY [5];
      &date_1 = &APP_ARY [6];
      &pay_doc_date = DateValue(&date_1);
      SQLExec("SELECT ECL_STATUS FROM PS_ECL_CLAIMS_HDR WHERE ECL_CLAIM_REQ_ID =:1", &id, &ecl_status);
      SQLExec("SELECT ECL_STATUS FROM PS_ECL_ARF_HDR WHERE ECL_ARF_REQ_ID =:1", &id, &arf_status);
     
     
      &id_type = Substring(&id, 1, 3);
      MessageBox(0, "", 0, 0, &id_type);
      <*
      MessageBox(0, "", 0, 0, &id);
      MessageBox(0, "", 0, 0, &empl_id);
      MessageBox(0, "", 0, 0, &Sap_id);
      MessageBox(0, "", 0, 0, &first_date);
      MessageBox(0, "", 0, 0, &arf_id);
      MessageBox(0, "", 0, 0, &second_date);
*>
     
      Local Record &ECL_SAP = CreateRecord(Record.ECL_CLAIMS_HDR);
      &ECL_SAP.SelectByKey();
      If &id_type = "EXP" Then
         If &ecl_status = "PT" Then
            SQLExec("UPDATE PS_ECL_CLAIMS_HDR SET ECL_EXP_DOC_NUM=:1,ECL_EXP_DOC_DATE=:2,ECL_PAY_DOC_NUM=:3,ECL_PAY_DOC_DATE=:4,ECL_STATUS='PD' WHERE ECL_CLAIM_REQ_ID=:5 AND EMPLID=:6", &exp_doc_no, &exp_doc_date, &pay_doc_no, &pay_doc_date, &id, &empl_id);
            <*
         &ECL_SAP.ECL_CLAIM_REQ_ID.Value = &id;
         &ECL_SAP.EMPLID.Value = &empl_id;
         &ECL_SAP.ECL_EXP_DOC_NUM.Value = &exp_doc_no;
         &ECL_SAP.ECL_EXP_DOC_DATE.Value = &exp_doc_date;
         &ECL_SAP.ECL_PAY_DOC_NUM.Value = &pay_doc_no;
         &ECL_SAP.ECL_PAY_DOC_DATE.Value = &pay_doc_date;
         &ECL_SAP.ECL_STATUS.Value = "PD";
         &ECL_SAP.Update();
*>
         End-If;
      End-If;
     
      If &id_type = "ARF" Then
         If &arf_status = "PT" Then
            SQLExec("UPDATE PS_ECL_ARF_HDR SET ECL_EXP_DOC_NUM=:1,ECL_EXP_DOC_DATE=:2,ECL_PAY_DOC_NUM=:3,ECL_PAY_DOC_DATE=:4,ECL_STATUS='PD' WHERE ECL_ARF_REQ_ID=:5 AND EMPLID=:6", &exp_doc_no, &exp_doc_date, &pay_doc_no, &pay_doc_date, &id, &empl_id);
           
         End-If;
      End-If;
     
      If &id_type = "EXP" Then
         SQLExec("SELECT XLATLONGNAME  FROM PSXLATITEM A WHERE A.EFFDT = (SELECT MAX(A_ED.EFFDT) FROM PSXLATITEM A_ED WHERE A.FIELDNAME = A_ED.FIELDNAME AND A.FIELDVALUE = A_ED.FIELDVALUE AND A_ED.EFFDT <= GETDATE()) AND FIELDNAME='ECL_STATUS' AND FIELDVALUE =:1", &ecl_status, &Claim_Status);
      End-If;
      If &id_type = "ARF" Then
         SQLExec("SELECT XLATLONGNAME  FROM PSXLATITEM A WHERE A.EFFDT = (SELECT MAX(A_ED.EFFDT) FROM PSXLATITEM A_ED WHERE A.FIELDNAME = A_ED.FIELDNAME AND A.FIELDVALUE = A_ED.FIELDVALUE AND A_ED.EFFDT <= GETDATE()) AND FIELDNAME='ECL_STATUS' AND FIELDVALUE =:1", &arf_status, &Claim_Status);
      End-If;
     
      If &ecl_status = "PT" Then
         &Claim_Status = "Paid";
      End-If;
      If &arf_status = "PT" Then
         &Claim_Status = "Paid";
      End-If;
     
      If (&Claim_Status <> "Paid") Then
         &exp_doc_no = "";
         &exp_doc_date = "";
         &pay_doc_no = "";
         &pay_doc_date = "";
      End-If;
     
      &logFile.WriteLine(&id | &Delimiter | &Claim_Status | &Delimiter | &exp_doc_no | &Delimiter | &exp_doc_date | &Delimiter | &pay_doc_no | &Delimiter | &pay_doc_date);
     
   End-While;
   &APPL_FILE.Close();
Else
   &Msg_Str = "File could not be opened.  Please check the File Path";
   MessageBox(0, "", 0, 0, &Msg_Str);
End-If;



<*########################################################################
Developer: Kondal   
Date: 07-02-2012
Description:To Upload the Form16 letter 
##########################################################################*>

Local array of string &FNAMES;
Local File &MYFILE, &logfile;
Local string &file_name;

&delimeter = Char(9);

&logfile = GetFile("test.xls", "W", %FilePath_Absolute);
&logfile.WriteLine("Employee ID" | &delimeter | "Year" | &delimeter | "Status");

SQLExec("Select SETID,ZIN_FIELD7 from PS_ZIN_FORM16_RCR WHERE OPRID = :1 AND RUN_CNTL_ID = :2", %OperatorId, Z_DC_AET.RUN_CNTL_ID, &Bsn, &FILE_PATH);

MessageBox(0, "", 0, 0, "&FILE_PATH: " | &FILE_PATH);

&FNAMES = FindFiles(&FILE_PATH | "*" | "F16.pdf", %FilePath_Absolute);

MessageBox(0, "", 0, 0, "&FNAMES: " | &FNAMES);

While &FNAMES.Len > 0
  
   &MYFILE = GetFile(&FNAMES.Shift(), "R", %FilePath_Absolute); /* Open each file */
  
   /* Process the file contents */
   &file_name = &MYFILE.Name;
   MessageBox(0, "", 0, 0, &file_name);
  
   &URL_ID = "ZIN_FORM16_UPL";
   &URL_ID = "URL." | &URL_ID;
   &URL = GetURL(@&URL_ID);
  
   &ATTACHSYSFILENAME = &file_name;
   &ATTACHUSERFILE = &file_name;
  
   MessageBox(0, "", 0, 0, &ATTACHUSERFILE);
  
   If FileExists(&ATTACHUSERFILE, %FilePath_Absolute) Then
     
      &RETCODE = PutAttachment(&URL, &ATTACHSYSFILENAME, &ATTACHUSERFILE);
     
      If (&RETCODE = %Attachment_Success) Then
         MessageBox(0, "Letter Upload Status", 21000, 82, "Letter upload succeeded" | &file_name);
        
         &emplid = Substring(&file_name, 17, 7); /*change the year field length*/
         &year = Substring(&file_name, 25, 9); /*change the year field length*/
         &logfile.WriteLine(&emplid | &delimeter | &year | &delimeter | "Success");
        
      End-If;
     
      If (&RETCODE = %Attachment_Cancelled) Then
         MessageBox(0, "Letter Upload Status", 21000, 83, "Letter upload cancelled" | &file_name);
         &emplid = Substring(&file_name, 17, 7); /*change the year field length*/
         &year = Substring(&file_name, 25, 9); /*change the year field length*/
         &logfile.WriteLine(&emplid | &delimeter | &year | &delimeter | "Failure");
      End-If;
     
   Else
      MessageBox(0, "Letter Upload Status", 21000, 84, "Letter does not exists" | &file_name);
   End-If;
  
   &MYFILE.Close();
End-While;