Monday, January 30, 2017

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;

No comments: