fmb_gledger: 4 programs convert in part
Shortest first. Left, the PL/SQL as the form holds it. Right, the clauses in the vocabulary’s spelling and, under them, each refused statement with the converter’s reason. 4 of them are program units, headed on unit: a unit’s refusals belong to the unit and are finished there once, and a caller that inlined one links to it rather than asking for the same work again.
1. fmb_gledgeron unit FN_FIND_PREV_PERIODgreen-waste
What you havePROGRAM-UNIT
FUNCTION fn_find_prev_period (p_period IN VARCHAR2)
RETURN VARCHAR2 IS
v_quarter NUMBER;
v_month NUMBER;
v_prev_period VARCHAR2 (4) := '####';
BEGIN
v_quarter := SUBSTR (p_period, 2, 1);
v_month := SUBSTR (p_period, 4, 1);
IF v_quarter = 1 THEN
IF v_month BETWEEN 2 AND 3 THEN
v_prev_period :=
'q' || TO_CHAR (v_quarter) || 'm'
|| TO_CHAR (v_month - 1);
END IF;
ELSIF v_quarter BETWEEN 2 AND 4 THEN
IF v_month = 1 THEN
v_prev_period := 'q' || TO_CHAR (v_quarter - 1) || 'm3';
ELSIF v_month BETWEEN 2 AND 3 THEN
v_prev_period :=
'q' || TO_CHAR (v_quarter) || 'm'
|| TO_CHAR (v_month - 1);
ELSE
show_message ('req_alert', 'wrong period entry');
END IF;
ELSE
show_message ('req_alert', 'wrong period entry');
END IF;
RETURN (v_prev_period);
END;What you getClause Rule Language
on unit FN_FIND_PREV_PERIOD(P_PERIOD): warn "wrong period entry" when ((not (substr(ARG.P_PERIOD, 2, 1) = 1) and ((substr(ARG.P_PERIOD, 2, 1) >= 2) and (substr(ARG.P_PERIOD, 2, 1) <= 4))) and not (substr(ARG.P_PERIOD, 4, 1) = 1)) and not ((substr(ARG.P_PERIOD, 4, 1) >= 2) and (substr(ARG.P_PERIOD, 4, 1) <= 3)) warn "wrong period entry" when not (substr(ARG.P_PERIOD, 2, 1) = 1) and not ((substr(ARG.P_PERIOD, 2, 1) >= 2) and (substr(ARG.P_PERIOD, 2, 1) <= 4)) # 1 statement did not convert.# line 30 # RETURN (v_prev_period); # reason: this RETURN gives the local V_PREV_PERIOD, which 3 statements of one branch above it write, in no single chain of arms, so what it holds here depends on which path ran. What the function returns is therefore not stated
2 clauses converted, 1 statement refused
2. fmb_gledgeron unit LOAD_PAYVOUCHgreen-waste
What you havePROGRAM-UNIT
PROCEDURE Load_PayVouch IS
Cursor Curpayslip Is Select Paysliph_Id,Paysliph_Emp_Code,Paysliph_Divn_Code,Paysliph_Dept_Code,Paysliph_Pay_Type,
Payslipc_Main_Acnt_Code,Payslipd_Id,Payslipd_Curr_Code,Payslipd_Curr_Rate,Payslipd_Lc_Amt,Payslipd_Fc_Amt,Payslipd_Desc
From T_Payslip_Head,T_Payslip_Detail,M_Payslip_Company
Where Payslipd_Paysliph_Id =Paysliph_Id
And Payslipc_Payslip_Code = Payslipd_Payslip_Code
And Payslipc_Comp_Code =:Global.Company
And Paysliph_Comp_Code =:Global.Company
And Paysliph_Ayr_Code =Fn_Get_Ayr_Code(:Global.Company, 'C')
And Paysliph_Barcode = :Barcode
And Payslipd_Td_Id is Null
And Nvl(Paysliph_Fin_Status,'N') ='N';
V_Count Number;
V_Count1 Number;
V_Cnt Number;
V_Divn_Code Varchar2(10);
V_Dept_Code Varchar2(10);
V_Anly_Code Varchar2(10);
V_Txn_Flag Varchar2(10);
V_Txn_Type Varchar2(10);
V_Main_Account Varchar2(10);
BEGIN
:Global.Load_Flag :='Y';
Go_Block('T_Cur_Trans_Detail');
First_Record;
Loop
If :System.Last_Record='TRUE' Then
Exit;
Else
Next_Record;
End If;
End Loop;
If :Td_Main_Acnt_Code is Not Null Then
Next_Record;
End If;
For Cur In Curpayslip Loop
If Curpayslip%Notfound Then
Exit;
Else
V_Divn_Code := Cur.Paysliph_Divn_Code;
V_Dept_Code := Cur.Paysliph_Dept_Code;
V_Anly_Code := Null;
:Td_Main_Acnt_Code :=Cur.Payslipc_Main_Acnt_Code;
:Td_Anly_Code_1 :=V_Anly_Code;
:Td_Divn_Code :=V_Divn_Code;
:Td_Dept_Code :=V_Dept_Code;
:Td_Curr_Code :=Cur.Payslipd_Curr_Code;
:Curr_Rate :=Cur.Payslipd_Curr_Rate;
:Td_Fc_Amt :=Cur.Payslipd_Fc_Amt;
:Td_Lc_Amt :=Cur.Payslipd_Lc_Amt;
:Td_Seq_No := To_Number( :System.Cursor_Record);
:Doc_Id :=Cur.PayslipD_Id;
If Cur.Paysliph_Pay_Type ='REC' Then
:Td_Doc_Drcr_Flag :='C';
Else
:Td_Doc_Drcr_Flag :='D';
End If;
:Td_Desc :=Cur.Payslipd_Desc;
:Hd_Doc_Id :=Cur.Paysliph_Id;
Next_Record;
End If;
End Loop;
Previous_Record;
--End If;
:Global.Load_Flag :='N';
END;What you getClause Rule Language
on unit LOAD_PAYVOUCH: set GLOBAL.LOAD_FLAG to 'Y' go to T_CUR_TRANS_DETAIL last record next record when is_filled(TD_MAIN_ACNT_CODE) previous record set GLOBAL.LOAD_FLAG to 'N' # 1 statement did not convert.# line 39 # For Cur In Curpayslip Loop # If Curpayslip%Notfound Then # Exit; # Else # V_Divn_Code := Cur.Paysliph_Divn_Code; # V_Dept_Code := Cur.Paysliph_Dept_Code; # V_Anly_Code := Null; # # # :Td_Main_Acnt_Code :=Cur.Payslipc_Main_Acnt_Code; # :Td_Anly_Code_1 :=V_Anly_Code; # :Td_Divn_Code :=V_Divn_Code; # :Td_Dept_Code :=V_Dept_Code; # :Td_Curr_Code :=Cur.Payslipd_Curr_Code; # :Curr_Rate :=Cur.Payslipd_Curr_Rate; # :Td_Fc_Amt :=Cur.Payslipd_Fc_Amt; # :Td_Lc_Amt :=Cur.Payslipd_Lc_Amt; # :Td_Seq_No := To_Number( :System.Cursor_Record); # :Doc_Id :=Cur.PayslipD_Id; # If Cur.Paysliph_Pay_Type ='REC' Then # :Td_Doc_Drcr_Flag :='C'; # Else # :Td_Doc_Drcr_Flag :='D'; # End If; # :Td_Desc :=Cur.Payslipd_Desc; # :Hd_Doc_Id :=Cur.Paysliph_Id; # Next_Record; # # End If; # End Loop; # reason: it appends to T_CUR_TRANS_DETAIL and also writes T_CUR_TRANS_HEADER.HD_DOC_ID, and an append writes the record it appends and no other
6 clauses converted, 1 statement refused
3. fmb_gledgeron unit LOAD_PAYROLLgreen-waste
What you havePROGRAM-UNIT
PROCEDURE Load_Payroll IS
Cursor CurPay Is Select * from (
Select Payh_Id,Payh_No, PayH_Dt,Emp_Anly_Code,Payd_Id,
PayH_Divn_Code,PayH_Dept_Code,PayH_Emp_Code,Payd_Curr_Code,All_Main_Acnt,
sum(Nvl(Payd_Actual_Amt,0)) Payd_Actual_Amt,PayH_Pay_Trans_Code,Allowance_Type
From T_Emp_Pay_Head,t_Emp_Pay_Detail,M_Employee,(Select distinct Allowance_Type,Allowance_Code,
Nvl(Link_Main_Acnt_Code,Allowance_Main_Acnt_Code) All_Main_Acnt
From M_Allowance,(Select Link_Main_Acnt_Code,Link_Allow_Code From M_Emp_Exp_Link Where Link_Comp_Code =:Global.Company
-- and Link_Divn_Code = :Ref_Divn
and Nvl(Link_Main_Acnt_Code,'*') not in('*'))
Where Allowance_Code = Link_Allow_Code(+)
)
Where Payd_Payh_Id =Payh_Id
and PayH_Emp_Code =Emp_Code
and Payh_Comp_Code =:Global.Company
--and Payh_divn_Code =:Ref_Divn
-- and PayH_Pay_Trans_Code =:Ref_Txn
and PayH_Barcode=:Barcode
--and PayH_No = :Ref_No
and Payd_Allowance_Code =Allowance_Code
and Payd_Td_id is Null
Group by Payh_Id,Payh_Dt, Payh_No,PayH_Divn_Code,PayH_Dept_Code,PayH_Emp_Code,Payd_Curr_Code,All_Main_Acnt,Emp_Anly_Code,Payd_Id,PayH_Pay_Trans_Code,Allowance_Type);
v_Count Number;
v_Count1 Number;
v_Cnt Number;
v_divn_code Varchar2(10);
v_dept_code Varchar2(10);
v_Anly_Code Varchar2(10);
v_Txn_Flag Varchar2(10);
v_Txn_Type Varchar2(10);
v_Group Varchar2(10);
Begin
v_Count :=0;
-- Select Count(*) Into v_Count from M_Pay_transaction
-- Where Ptrans_code= :Ref_Txn;
-- If v_Count >0 Then
-- Select Ptrans_Group_Code Into v_Group from M_Pay_transaction
-- Where Ptrans_code= :Ref_Txn;
-- End If;
:Global.Load_Flag :='Y';
-- If Nvl(v_Group,' ') In ('PAYSLIP','PAY-OTH') Then
Go_Block('T_Cur_Trans_Detail');
Clear_Block;
First_Record;
For Cur in CurPay loop
If CurPay%NotFound Then
Exit;
Else
v_divn_code := Cur.PayH_Divn_Code;
v_dept_code := Cur.PayH_Dept_Code;
v_Anly_Code := Cur.Emp_Anly_Code;
Select Count(*) INTO v_Count From M_Analysis Where Anly_Code =Cur.Emp_Anly_Code;
If Nvl(v_Count,0)= 0 Then
Insert Into M_Analysis(Anly_Code,Anly_Name,Anly_Short_Name,Anly_Cr_User,Anly_Cr_Dt)
Select Emp_Anly_Code,Emp_Name,Substr(Emp_Short_Name,1,20),:Global.User,Sysdate From M_Employee
Where Emp_Anly_Code =Cur.Emp_Anly_Code ;
Insert Into M_Analysis_Company(Acomp_Comp_Code,Acomp_Anly_Code,Acomp_Cr_User,Acomp_Cr_Dt)
Values (:Global.Company,Cur.Emp_Anly_Code,:Global.User,Sysdate);
Else
Select Count(*) INTO v_Cnt From M_Analysis_company Where Acomp_Anly_Code =Cur.Emp_Anly_Code
and Acomp_Comp_Code =:Global.Company;
If Nvl(v_Cnt,0) =0 Then
Insert Into M_Analysis_Company(Acomp_Comp_Code,Acomp_Anly_Code,Acomp_Cr_User,Acomp_Cr_Dt)
Values (:Global.Company,Cur.Emp_Anly_Code,:Global.User,Sysdate);
End If;
End If;
:Td_Main_Acnt_Code :=Cur.All_Main_Acnt;
:Td_Anly_code_1 :=v_Anly_Code;
:Td_Divn_Code :=v_divn_code;
:Td_Dept_Code :=v_dept_code;
:Td_Curr_Code :=Cur.Payd_Curr_Code;
:Td_Fc_Amt :=Cur.Payd_Actual_Amt ;
:Td_Lc_Amt :=Cur.Payd_Actual_Amt ;
:Td_Seq_No := to_number( :System.Cursor_Record);
If Cur.Allowance_Type ='E' Then
:Td_Doc_DrCr_Flag :='D';
Else
:Td_Doc_DrCr_Flag :='C';
End If;
:Td_Desc :=Null;
:Doc_Id :=Cur.Payd_Id;
:Ref_Doc_Txn := Cur.PayH_Pay_Trans_Code;
Next_Record;
End If;
End Loop;
-- End If;
:Global.Load_Flag :='N';
End;What you getClause Rule Language
on unit LOAD_PAYROLL: set GLOBAL.LOAD_FLAG to 'Y' go to T_CUR_TRANS_DETAIL clear T_CUR_TRANS_DETAIL first record set GLOBAL.LOAD_FLAG to 'N' # 1 statement did not convert.# line 49 # For Cur in CurPay loop # If CurPay%NotFound Then # Exit; # Else # v_divn_code := Cur.PayH_Divn_Code; # v_dept_code := Cur.PayH_Dept_Code; # v_Anly_Code := Cur.Emp_Anly_Code; # # Select Count(*) INTO v_Count From M_Analysis Where Anly_Code =Cur.Emp_Anly_Code; # If Nvl(v_Count,0)= 0 Then # Insert Into M_Analysis(Anly_Code,Anly_Name,Anly_Short_Name,Anly_Cr_User,Anly_Cr_Dt) # Select Emp_Anly_Code,Emp_Name,Substr(Emp_Short_Name,1,20),:Global.User,Sysdate From M_Employee # Where Emp_Anly_Code =Cur.Emp_Anly_Code ; # Insert Into M_Analysis_Company(Acomp_Comp_Code,Acomp_Anly_Code,Acomp_Cr_User,Acomp_Cr_Dt) # Values (:Global.Company,Cur.Emp_Anly_Code,:Global.User,Sysdate); # Else # Select Count(*) INTO v_Cnt From M_Analysis_company Where Acomp_Anly_Code =Cur.Emp_Anly_Code # and Acomp_Comp_Code =:Global.Company; # If Nvl(v_Cnt,0) =0 Then # Insert Into M_Analysis_Company(Acomp_Comp_Code,Acomp_Anly_Code,Acomp_Cr_User,Acomp_Cr_Dt) # Values (:Global.Company,Cur.Emp_Anly_Code,:Global.User,Sysdate); # End If; # End If; # # :Td_Main_Acnt_Code :=Cur.All_Main_Acnt; # :Td_Anly_code_1 :=v_Anly_Code; # :Td_Divn_Code :=v_divn_code; # :Td_Dept_Code :=v_dept_code; # :Td_Curr_Code :=Cur.Payd_Curr_Code; # :Td_Fc_Amt :=Cur.Payd_Actual_Amt ; # :Td_Lc_Amt :=Cur.Payd_Actual_Amt ; # :Td_Seq_No := to_number( :System.Cursor_Record); # If Cur.Allowance_Type ='E' Then # :Td_Doc_DrCr_Flag :='D'; # Else # :Td_Doc_DrCr_Flag :='C'; # End If; # :Td_Desc :=Null; # :Doc_Id :=Cur.Payd_Id; # :Ref_Doc_Txn := Cur.PayH_Pay_Trans_Code; # # Next_Record; # # End If; # End Loop; # reason: it selects *, which a row cannot be read by a name
5 clauses converted, 1 statement refused
4. fmb_gledgeron unit LOAD_EXPENSEgreen-waste
What you havePROGRAM-UNIT
PROCEDURE Load_Expense IS
Cursor C1 Is Select Expd_Id,Expd_Emp_Code,Emp_Name,Exph_Comp_Code,Exph_Divn_Code,Exph_Dept_Code,Expd_Comp_Code,
Expd_Divn_Code,Expd_Dept_Code,Expd_Main_Acnt_Code,Expd_Curr_Code,Expd_Lc_Amt,Emp_Anly_Code,Expd_Exp_Dt,Expd_Iss_Dt,
Expd_Doc_No,Expd_Doc_Type_Code,Expd_Allowance_Code,Allowance_Name
From T_Emp_Exp_Head,T_Emp_Exp_Detail,M_Employee, M_Allowance
Where Expd_Exph_Id =Exph_Id
And Expd_Emp_Code =Emp_Code
And Allowance_Code=Expd_Allowance_Code
And Exph_Comp_Code =:Global.Company
And Exph_Ayr_Code =Fn_Get_Ayr_Code(:Global.Company, 'C')
And Exph_Barcode=:Barcode
And Expd_Pay_Mode ='V'
And Nvl(Expd_Fin_Status,'N') ='N';
V_Count Number;
V_Count1 Number;
V_Cnt Number;
V_Divn_Code Varchar2(10);
V_Dept_Code Varchar2(10);
V_Anly_Code Varchar2(10);
V_Txn_Flag Varchar2(10);
V_Txn_Type Varchar2(10);
V_Main_Account Varchar2(10);
BEGIN
:Global.Load_Flag :='Y';
Go_Block('T_Cur_Trans_Detail');
Clear_Block;
First_Record;
For Cur In C1 Loop
If C1%Notfound Then
Exit;
Else
If Cur.Expd_Iss_Dt Is Not Null And Cur.Expd_Exp_Dt Is Null Then
Show_Message('Alert1', 'Error,Document expiry not updated');
Raise Form_Trigger_Failure;
End If;
Select Count(*) Into V_Count1
From M_Emp_Documents
Where Doc_No = Cur.Expd_Doc_No
And Doc_Emp_Code =Cur.Expd_Emp_Code
And Doc_Type_Code=Cur.Expd_Doc_Type_Code
And Doc_Exp_Dt =Cur.Expd_Exp_Dt;
If V_Count1 > 0 Then
Show_Message('Alert1', 'Error,Document expiry already updated');
Raise Form_Trigger_Failure;
End If;
V_Divn_Code := Cur.Exph_Divn_Code;
V_Dept_Code := Cur.Exph_Dept_Code;
V_Anly_Code := Cur.Emp_Anly_Code;
/*Added by Janisha on 14-04-2013 to get the value in :mand_anal_code*/
Select Count(*) Into V_Count From M_Analysis Where Anly_Code =Cur.Emp_Anly_Code;
If Nvl(V_Count,0)= 0 Then
Insert Into M_Analysis(Anly_Code,Anly_Name,Anly_Short_Name,Anly_Cr_User,Anly_Cr_Dt)
Select Emp_Anly_Code,Substr(Emp_Name,1,40),Substr(Emp_Short_Name,1,20),:Global.User,Sysdate From M_Employee
Where Emp_Anly_Code =Cur.Emp_Anly_Code ;
Insert Into M_Analysis_Company(Acomp_Comp_Code,Acomp_Anly_Code,Acomp_Cr_User,Acomp_Cr_Dt)
Values (:Global.Company,Cur.Emp_Anly_Code,:Global.User,Sysdate);
Else
Select Count(*) Into V_Cnt From M_Analysis_Company Where Acomp_Anly_Code =Cur.Emp_Anly_Code
And Acomp_Comp_Code =:Global.Company;
If Nvl(V_Cnt,0) =0 Then
Insert Into M_Analysis_Company(Acomp_Comp_Code,Acomp_Anly_Code,Acomp_Cr_User,Acomp_Cr_Dt)
Values (:Global.Company,Cur.Emp_Anly_Code,:Global.User,Sysdate);
End If;
End If;
If Cur.Expd_Comp_Code = :Global.Company Then
:Td_Main_Acnt_Code :=Cur.Expd_Main_Acnt_Code;
Else
v_Cnt :=0;
Select count(*) into v_Cnt From
M_Emp_Exp_Link, M_Allowance
Where Link_Allow_Code = Cur.Expd_Allowance_Code
And Allowance_Code = Cur.Expd_Allowance_Code
And Link_Comp_Code = Cur.Expd_Comp_Code
And Link_Divn_Code = Cur.Expd_Divn_Code;
If v_Cnt>0 Then
Select Distinct Link_Main_Acnt_Code Into V_Main_Account From M_Emp_Exp_Link, M_Allowance
Where Link_Allow_Code = Cur.Expd_Allowance_Code
And Allowance_Code = Cur.Expd_Allowance_Code
And Link_Comp_Code = Cur.Expd_Comp_Code
And Link_Divn_Code = Cur.Expd_Divn_Code;
Else
Show_Message('Alert1', 'Main account-Expense link not defined for this company');
Raise Form_Trigger_Failure;
End If;
:Td_Main_Acnt_Code :=V_Main_Account;
End If;
-- :Td_Main_Acnt_Code :=Cur.Expd_Main_Acnt_Code;
:Td_Anly_Code_1 :=V_Anly_Code;
If Cur.Expd_Comp_Code = :Global.Company Then
:Td_Divn_Code :=Cur.Expd_Divn_Code;
:Td_Dept_Code :=Cur.Expd_Dept_Code;
Else
:Td_Divn_Code :=Cur.ExpH_Divn_Code;
:Td_Dept_Code :=Cur.ExpH_Dept_Code;
End If;
:Td_Curr_Code :=Cur.Expd_Curr_Code;
:Td_Fc_Amt :=Cur.Expd_Lc_Amt;
:Td_Lc_Amt :=Cur.Expd_Lc_Amt;
:Td_Seq_No := To_Number( :System.Cursor_Record);
:Td_Doc_Drcr_Flag :='D';
:Td_Desc :=Cur.Allowance_Name;
:Doc_Id :=Cur.Expd_Id;
Next_Record;
End If;
End Loop;
Previous_Record;
:Global.Load_Flag :='N';
END;What you getClause Rule Language
on unit LOAD_EXPENSE: set GLOBAL.LOAD_FLAG to 'Y' go to T_CUR_TRANS_DETAIL clear T_CUR_TRANS_DETAIL first record previous record set GLOBAL.LOAD_FLAG to 'N' # 1 statement did not convert.# line 31 # For Cur In C1 Loop # If C1%Notfound Then # Exit; # Else # If Cur.Expd_Iss_Dt Is Not Null And Cur.Expd_Exp_Dt Is Null Then # Show_Message('Alert1', 'Error,Document expiry not updated'); # Raise Form_Trigger_Failure; # End If; # # Select Count(*) Into V_Count1 # From M_Emp_Documents # Where Doc_No = Cur.Expd_Doc_No # And Doc_Emp_Code =Cur.Expd_Emp_Code # And Doc_Type_Code=Cur.Expd_Doc_Type_Code # And Doc_Exp_Dt =Cur.Expd_Exp_Dt; # # If V_Count1 > 0 Then # Show_Message('Alert1', 'Error,Document expiry already updated'); # Raise Form_Trigger_Failure; # End If; # V_Divn_Code := Cur.Exph_Divn_Code; # V_Dept_Code := Cur.Exph_Dept_Code; # V_Anly_Code := Cur.Emp_Anly_Code; # # # Select Count(*) Into V_Count From M_Analysis Where Anly_Code =Cur.Emp_Anly_Code; # If Nvl(V_Count,0)= 0 Then # Insert Into M_Analysis(Anly_Code,Anly_Name,Anly_Short_Name,Anly_Cr_User,Anly_Cr_Dt) # Select Emp_Anly_Code,Substr(Emp_Name,1,40),Substr(Emp_Short_Name,1,20),:Global.User,Sysdate From M_Employee # Where Emp_Anly_Code =Cur.Emp_Anly_Code ; # Insert Into M_Analysis_Company(Acomp_Comp_Code,Acomp_Anly_Code,Acomp_Cr_User,Acomp_Cr_Dt) # Values (:Global.Company,Cur.Emp_Anly_Code,:Global.User,Sysdate); # Else # Select Count(*) Into V_Cnt From M_Analysis_Company Where Acomp_Anly_Code =Cur.Emp_Anly_Code # And Acomp_Comp_Code =:Global.Company; # If Nvl(V_Cnt,0) =0 Then # Insert Into M_Analysis_Company(Acomp_Comp_Code,Acomp_Anly_Code,Acomp_Cr_User,Acomp_Cr_Dt) # Values (:Global.Company,Cur.Emp_Anly_Code,:Global.User,Sysdate); # End If; # End If; # # If Cur.Expd_Comp_Code = :Global.Company Then # :Td_Main_Acnt_Code :=Cur.Expd_Main_Acnt_Code; # Else # v_Cnt :=0; # Select count(*) into v_Cnt From # M_Emp_Exp_Link, M_Allowance # Where Link_Allow_Code = Cur.Expd_Allowance_Code # And Allowance_Code = Cur.Expd_Allowance_Code # And Link_Comp_Code = Cur.Expd_Comp_Code # And Link_Divn_Code = Cur.Expd_Divn_Code; # # If v_Cnt>0 Then # Select Distinct Link_Main_Acnt_Code Into V_Main_Account From M_Emp_Exp_Link, M_Allowance # Where Link_Allow_Code = Cur.Expd_Allowance_Code # And Allowance_Code = Cur.Expd_Allowance_Code # And Link_Comp_Code = Cur.Expd_Comp_Code # And Link_Divn_Code = Cur.Expd_Divn_Code; # Else # Show_Message('Alert1', 'Main account-Expense link not defined for this company'); # Raise Form_Trigger_Failure; # End If; # :Td_Main_Acnt_Code :=V_Main_Account; # End If; # # # :Td_Anly_Code_1 :=V_Anly_Code; # If Cur.Expd_Comp_Code = :Global.Company Then # :Td_Divn_Code :=Cur.Expd_Divn_Code; # :Td_Dept_Code :=Cur.Expd_Dept_Code; # Else # :Td_Divn_Code :=Cur.ExpH_Divn_Code; # :Td_Dept_Code :=Cur.ExpH_Dept_Code; # End If; # # :Td_Curr_Code :=Cur.Expd_Curr_Code; # :Td_Fc_Amt :=Cur.Expd_Lc_Amt; # :Td_Lc_Amt :=Cur.Expd_Lc_Amt; # :Td_Seq_No := To_Number( :System.Cursor_Record); # :Td_Doc_Drcr_Flag :='D'; # :Td_Desc :=Cur.Allowance_Name; # :Doc_Id :=Cur.Expd_Id; # Next_Record; # End If; # End Loop; # reason: it reads a row per iteration, and a per-row check source belongs to the for each: the clause carries a lookup this converter does not yet build (crl-loops.md operation 1)
6 clauses converted, 1 statement refused