nexg-erp / Forms
Refused
fmb_invoice, green-waste

all forms

fmb_invoice: 55 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. 30 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_invoiceWHEN-BUTTON-PRESSED on T_INV_HEAD.DOC_SELECTION_CANCELgreen-waste
What you haveWHEN-BUTTON-PRESSED
hide_window('INVH_DOC_SELECTION');
next_item;
What you getClause Rule Language
on press of DOC_SELECTION_CANCEL:    next item
# 1 statement did not convert.#   line 1
#   hide_window('INVH_DOC_SELECTION');
#   reason: HIDE_WINDOW is a Forms built-in, which no FormConnect document declares because no database holds it, and no program unit of this form declares one either, so there is no body to inline under the caller's point and item and nothing to bridge to

1 clause converted, 1 statement refused

2. fmb_invoiceWHEN-NEW-FORM-INSTANCE on FMB_INVOICEgreen-waste
What you haveWHEN-NEW-FORM-INSTANCE
Declare
  V_Window_Name Varchar(20);
Begin
  Select Menu_Name Into V_Window_Name
  From M_Menu 
  Where Menu_Code = :Parameter.Menu_Code;
  
  Set_Window_Property('INVH_WIN',Title,V_Window_Name);
  :Global.Msg_Flag := 0;
  Init_Form;
  :System.Message_Level := :Global.Message_Level;
End;
What you getClause Rule Language
on open:    set GLOBAL.MSG_FLAG to 0
# 2 statements did not convert.#   line 8
#   Set_Window_Property('INVH_WIN',Title,V_Window_Name);
#   reason: a screen's title is the document's and the platform draws it, and every corpus site reads this one from a local the trigger does not state, so the window property is refused rather than folded into a verb#   Select Menu_Name Into V_Window_Name
#     From M_Menu 
#     Where Menu_Code = :Parameter.Menu_Code
#   reason: its query binds Parameter.Menu_Code, which this form has no field for

1 clause converted, 2 statements refused

3. fmb_invoiceKEY-NEXT-ITEM on T_INV_HEAD.INVH_SMAN_CODEgreen-waste
What you haveKEY-NEXT-ITEM
  If :InvH_Sman_Code Is Null Then
    List_Values;
  End If;
  
  If Nvl(:Frm_En_Doc_Selection,'N') ='N' Then
    :RADIO_DOC_SELECTION := Nvl(:Frm_Inv_Def_Refdoc_Txn_Type,'SO');
    Go_Item('RADIO_DOC_SELECTION');
  Else
    Hide_Window('INVH_DOC_SELECTION');
    GO_BLOCK('T_INV_ITEM');
  End If;
  
What you getClause Rule Language
on change of INVH_SMAN_CODE:    open value help of INVH_SMAN_CODE when is_blank(INVH_SMAN_CODE)    set RADIO_DOC_SELECTION to nvl(FRM_INV_DEF_REFDOC_TXN_TYPE, 'SO') when nvl(FRM_EN_DOC_SELECTION, 'N') = 'N'    go to RADIO_DOC_SELECTION when nvl(FRM_EN_DOC_SELECTION, 'N') = 'N'    go to T_INV_ITEM when not (nvl(FRM_EN_DOC_SELECTION, 'N') = 'N')
# 1 statement did not convert.#   line 9
#   Hide_Window('INVH_DOC_SELECTION');
#   reason: HIDE_WINDOW is a Forms built-in, which no FormConnect document declares because no database holds it, and no program unit of this form declares one either, so there is no body to inline under the caller's point and item and nothing to bridge to

4 clauses converted, 1 statement refused

4. fmb_invoiceWHEN-BUTTON-PRESSED on T_INV_HEAD.SCANgreen-waste
What you haveWHEN-BUTTON-PRESSED
Declare
  Rep_Url Varchar2(2000);
  Host    Varchar2(2000);
  V_Count Number;
  V_Count1 Number;
  V_Id    Number;
  V_Type  Varchar2(2);
  v_url   Varchar2(200);
Begin
  v_url := :Frm_IMAGE_URL;
    Insert Into T_Image_Load (Imgl_Id,Imgl_Doc_Code,Imgl_Doc_Name,Imgl_Load_Type,Imgl_Cr_User,Imgl_Cr_Date)
    Values (Fn_Get_Next_Id('Emp_Image_Load'),:InvH_Loc_Code ||:InvH_Txn_Code||:InvH_No,:InvH_Cust_NAME,'N',:Global.User, Sysdate);
    Standard.Commit;
    Rep_Url :='http://'|| v_url ||'/Filescan.aspx?Code='||Fn_Get_Image_Id(:InvH_Loc_Code ||:InvH_Txn_Code||:InvH_No);
    Web.Show_Document(Rep_Url,'_Blank');
    message(Rep_Url);
End;
What you getClause Rule Language
on press of SCAN:    call WRITE_T_IMAGE_LOAD_DD6C6309(INVH_LOC_CODE, INVH_TXN_CODE, INVH_NO, INVH_CUST_NAME, GLOBAL.USER)    warn (('http://' || FRM_IMAGE_URL) || '/Filescan.aspx?Code=') || FN_GET_IMAGE_ID((INVH_LOC_CODE || INVH_TXN_CODE) || INVH_NO)
# 2 statements did not convert.#   line 13
#   Standard.Commit;
#   reason: G13: mid-trigger DML and the transaction boundary are refused, not converted#   line 15
#   Web.Show_Document(Rep_Url,'_Blank');
#   reason: Web.Show_Document opens a URL and runs no report; the corpus sites that are not the delivery of a claimed run open a scanned image, which has no web equivalent

2 clauses converted, 2 statements refused

5. fmb_invoiceWHEN-BUTTON-PRESSED on T_INV_HEAD.PREVIEWgreen-waste
What you haveWHEN-BUTTON-PRESSED
Declare
  Rep_Url Varchar2(2000);
  Host    Varchar2(2000);
  V_Count Number;
  V_Count1 Number;
  V_Id    Number;
  V_Type  Varchar2(2);
  v_url   Varchar2(200);
Begin
  v_url := :Frm_IMAGE_URL;
    Insert Into T_Image_Load (Imgl_Id,Imgl_Doc_Code,Imgl_Doc_Name,Imgl_Load_Type,Imgl_Cr_User,Imgl_Cr_Date)
    Values (Fn_Get_Next_Id('Emp_Image_Load'),:InvH_Loc_Code ||:InvH_Txn_Code||:InvH_No,:InvH_Cust_NAME,'P',:Global.User, Sysdate);
    Standard.Commit;
    Rep_Url :='http://'|| v_url ||'/Filescan.aspx?Code='||Fn_Get_Image_Id(:InvH_Loc_Code ||:InvH_Txn_Code||:InvH_No);
    Web.Show_Document(Rep_Url,'_Blank');
    message(Rep_Url);
End;
What you getClause Rule Language
on press of PREVIEW:    call WRITE_T_IMAGE_LOAD_C7A2DA85(INVH_LOC_CODE, INVH_TXN_CODE, INVH_NO, INVH_CUST_NAME, GLOBAL.USER)    warn (('http://' || FRM_IMAGE_URL) || '/Filescan.aspx?Code=') || FN_GET_IMAGE_ID((INVH_LOC_CODE || INVH_TXN_CODE) || INVH_NO)
# 2 statements did not convert.#   line 13
#   Standard.Commit;
#   reason: G13: mid-trigger DML and the transaction boundary are refused, not converted#   line 15
#   Web.Show_Document(Rep_Url,'_Blank');
#   reason: Web.Show_Document opens a URL and runs no report; the corpus sites that are not the delivery of a claimed run open a scanned image, which has no web equivalent

2 clauses converted, 2 statements refused

6. fmb_invoiceon unit FN_GET_INV_AMTgreen-waste
What you havePROGRAM-UNIT
FUNCTION FN_GET_INV_AMT(SUB_AMT IN NUMBER) RETURN Number IS
  v_Nett  Number;

BEGIN
  /*
   Select Sub_Amt +  Decode(Nvl(:InvI_Vat_Incl_Price,'N'),'N',:Vat_Amt,0) +
   Decode(Nvl(:InvI_Gst_Incl_Price,'N'),'N',:Gst_Amt,0) +
   Decode(Nvl(:InvI_Cst_Incl_Price,'N'),'N',:Cst_Amt,0) +
   Decode(Nvl(:InvI_Serv_Tax_Incl_Price,'N'),'N',:ST_Amt,0) 
   Into v_Nett From Dual;  
   */
   
   Select Sub_Amt + ((Decode(Nvl(:InvI_Vat_Incl_Price,'N'),'N',:Vat_Amt,0) +
   Decode(Nvl(:InvI_ED_Incl_Price,'N'),'N',:ED_Amt,0))/:InvH_Curr_Rate) 
   Into v_Nett From Dual;  
   Return Nvl(v_Nett,0);
   Return Nvl(v_Nett,0);
END;
What you getClause Rule Language
on unit FN_GET_INV_AMT(SUB_AMT):
# 1 statement did not convert.#   line 16
#   FUNCTION FN_GET_INV_AMT(SUB_AMT IN NUMBER) RETURN Number IS
#     v_Nett  Number;
#   
#   BEGIN
#     /*
#      Select Sub_Amt +  Decode(Nvl(:InvI_Vat_Incl_Price,'N'),'N',:Vat_Amt,0) +
#      Decode(Nvl(:InvI_Gst_Incl_Price,'N'),'N',:Gst_Amt,0) +
#      Decode(Nvl(:InvI_Cst_Incl_Price,'N'),'N',:Cst_Amt,0) +
#      Decode(Nvl(:InvI_Serv_Tax_Incl_Price,'N'),'N',:ST_Amt,0) 
#      Into v_Nett From Dual;  
#      */
#      
#      Select Sub_Amt + ((Decode(Nvl(:InvI_Vat_Incl_Price,'N'),'N',:Vat_Amt,0) +
#      Decode(Nvl(:InvI_ED_Incl_Price,'N'),'N',:ED_Amt,0))/:InvH_Curr_Rate) 
#      Into v_Nett From Dual;  
#      Return Nvl(v_Nett,0);
#      Return Nvl(v_Nett,0);
#   END;
#   reason: a statement after a RETURN at the same level cannot run, because the function has already given its value, so this body says two things about what it returns and a return clause can carry only what its own path says

0 clauses converted, 1 statement refused

7. fmb_invoiceon unit VALIDATE_REFERENCE_FLAGgreen-waste
What you havePROGRAM-UNIT
Function Validate_Reference_Flag Return Number IS
  v_Count Number:=0;
BEGIN
  If Nvl(:Frm_En_Multi_So, 'Y') = 'N' Then    --Not allow multiple SO
    Go_Block('T_Inv_Ref_Doc');
    First_Record;
    Loop
      If Nvl(:Flag, 'N') = 'Y' Then
        v_Count := v_Count + 1;
      End If;
      If :System.Last_Record = 'TRUE' Then
        Exit;
      End If;
      Next_Record;
    End Loop;
    Return v_Count;
  Else
    Return 0;
  End If;
END;
What you getClause Rule Language
on unit VALIDATE_REFERENCE_FLAG:    go to T_INV_REF_DOC when FRM_EN_MULTI_SO = 'N'    return 0 when not (FRM_EN_MULTI_SO = 'N')
# 2 statements did not convert.#   line 7
#   Loop
#         If Nvl(:Flag, 'N') = 'Y' Then
#           v_Count := v_Count + 1;
#         End If;
#         If :System.Last_Record = 'TRUE' Then
#           Exit;
#         End If;
#         Next_Record;
#       End Loop;
#   reason: nothing in it converts to a clause, so what it did per row is not recorded#   line 16
#   Return v_Count;
#   reason: this RETURN gives the local V_COUNT, which a loop body above it counts with: `V_COUNT := V_COUNT + 1`, so what it holds here is the loop's own arithmetic, and crl-loops.md states the collection operation and not the bookkeeping around it. What the function returns is therefore not stated

2 clauses converted, 2 statements refused

8. fmb_invoiceon unit FN_CALC_CESSgreen-waste
What you havePROGRAM-UNIT
Function fn_calc_cess(Tax_On In Varchar2) Return Number IS
 v_Amt   Number(14,3);
BEGIN
  
 If Nvl(:InvC_Tax_Perc,0) > 0 Then  
    If Tax_On ='VAT' Then
         v_Amt := (:vat_Total * :Invc_Tax_Perc/100);
    Elsif Tax_On ='GST' Then     
       v_Amt := (:Gst_Total * :Invc_Tax_Perc/100);
    Elsif Tax_On ='CST' Then     
       v_Amt := (:Cst_Total * :Invc_Tax_Perc/100);
    Elsif Tax_On ='ST' Then     
       v_Amt := (:St_Total * :Invc_Tax_Perc/100);
    Elsif Tax_On  is Null Then     
       v_Amt := (:Total_Aft_Discount * :Invc_Tax_Perc/100);
    End If;
 End If;   
   Return v_Amt;
  
END;
What you getClause Rule Language
on unit FN_CALC_CESS(TAX_ON):
# 1 statement did not convert.#   line 18
#   Return v_Amt;
#   reason: this RETURN gives the local V_AMT, which 5 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

0 clauses converted, 1 statement refused

9. fmb_invoiceKEY-NEXT-ITEM on T_INV_HEAD.INVH_CUST_CODEgreen-waste
What you haveKEY-NEXT-ITEM
If :InvH_Cust_Code Is Null Then
 List_Values;
Else  --<< Added on 29/Jun/2019, Shebin    
    Declare
      n_alert_button Number;
    Begin    
      If :System.Block_Status = 'CHANGED' And Get_Block_Property('T_INV_ITEM', Current_Record)> 0 And :InvI_Item_Code Is Not Null Then
         Set_alert_property('Caution', alert_message_text,'Item details will be cleared! Do you really want to change the customer? ');
        n_alert_button := Show_Alert('Caution'); 
        If n_alert_button = ALERT_BUTTON1 THEN 
           Go_Block('T_INV_ITEM');
           Clear_Block(No_Commit);
          Else
           :T_Inv_Head.Invh_Cust_Code := :Parameter.Prv_Cust;
          End If;
      Else
       Next_item;       
      End If;  
    End;-- >>
Next_item;   
End If;
What you getClause Rule Language
on change of INVH_CUST_CODE:    open value help of INVH_CUST_CODE when is_blank(INVH_CUST_CODE)
# 1 statement did not convert.#   line 7
#   If :System.Block_Status = 'CHANGED' And Get_Block_Property('T_INV_ITEM', Current_Record)> 0 And :InvI_Item_Code Is Not Null Then
#     Set_alert_property('Caution', alert_message_text,'Item details will be cleared! Do you really want to change the customer? ');
#     n_alert_button := Show_Alert('Caution');
#     If n_alert_button = ALERT_BUTTON1 Then
#       Go_Block('T_INV_ITEM');
#       Clear_Block(No_Commit);
#     Else
#       :T_Inv_Head.Invh_Cust_Code := :Parameter.Prv_Cust;
#     End If;
#   Else
#     Next_item;
#   End If;
#   reason: the guard reads CURRENT_RECORD of a block, and the one property read the language has a value for is a field's own state: a block, a record, a window, a view and a canvas each carry properties CRL has no expression for

1 clause converted, 1 statement refused

10. fmb_invoiceWHEN-BUTTON-PRESSED on T_INV_HEAD.PB_LOAD_SLgreen-waste
What you haveWHEN-BUTTON-PRESSED
Declare
  v_Sl_To Number;
  v_Num_Rec Number;
Begin
  If :System.Form_Status = 'CHANGED' Then
    v_Sl_To := Nvl(:InvI_Qty * :Max_Loose, 0) + Nvl(:InvI_Loose, 0) + Nvl(:InvI_Foc_Qty * :Max_Loose, 0) + Nvl(:InvI_Foc_Loose, 0);
    Go_Block('T_Inv_Serial');
    Last_Record;
    v_Num_Rec := Get_Block_Property('T_Inv_Serial', Current_Record);
    If v_Sl_To > 0 And :En_Sl IN ('M','Manual') And v_Sl_To <> v_Num_Rec Then
      Show_Message('Inv_Alert', 'Serial number records insufficient!');
      Raise Form_Trigger_Failure;
     End If;
    Post;
    :Old_Item_Code := :InvI_Item_Code;
    :Old_Uom_Code := :InvI_UOM_Code;
    :Old_Qty := :InvI_Qty;
    :Old_Loose := :InvI_Loose;
    :Old_Foc_Qty := :InvI_Foc_Qty;
    :Old_Foc_Loose := :InvI_Foc_Loose;
  End If;
  Go_Block('T_Inv_Item');
End;
What you getClause Rule Language
on press of PB_LOAD_SL:    go to T_INV_SERIAL when SYSTEM.FORM_STATUS = 'CHANGED'    last record of T_INV_SERIAL when SYSTEM.FORM_STATUS = 'CHANGED'    set OLD_ITEM_CODE to INVI_ITEM_CODE when SYSTEM.FORM_STATUS = 'CHANGED'    set OLD_UOM_CODE to INVI_UOM_CODE when SYSTEM.FORM_STATUS = 'CHANGED'    set OLD_QTY to INVI_QTY when SYSTEM.FORM_STATUS = 'CHANGED'    set OLD_LOOSE to INVI_LOOSE when SYSTEM.FORM_STATUS = 'CHANGED'    set OLD_FOC_QTY to INVI_FOC_QTY when SYSTEM.FORM_STATUS = 'CHANGED'    set OLD_FOC_LOOSE to INVI_FOC_LOOSE when SYSTEM.FORM_STATUS = 'CHANGED'    go to T_INV_ITEM
# 2 statements did not convert.#   line 10
#   If v_Sl_To > 0 And :En_Sl IN ('M','Manual') And v_Sl_To <> v_Num_Rec Then
#     Show_Message('Inv_Alert', 'Serial number records insufficient!');
#     Raise Form_Trigger_Failure;
#   End If;
#   reason: the guard reads the local V_NUM_REC, which is written from something CRL has no expression for: a Forms built-in, a database call or a shape the reader refuses#   line 14
#   Post;
#   reason: POST is a Forms built-in, which no FormConnect document declares because no database holds it, and no program unit of this form declares one either, so there is no body to inline under the caller's point and item and nothing to bridge to

9 clauses converted, 2 statements refused

11. fmb_invoiceon unit ENABLE_TEXTgreen-waste
What you havePROGRAM-UNIT
PROCEDURE ENABLE_TEXT 
  (Text_Name IN VarChar2,
   Flag      IN VarChar2)
IS
BEGIN
  If Flag = 'F' Then
    Set_Item_Property(Text_Name, Enabled, Property_False);
    If Get_Item_Property(Text_Name,ITEM_TYPE) <> 'BUTTON' And Text_Name Not In ('INVI_FOC_QTY','INVI_FOC_LOOSE') Then  ---commented on 15/2/2021, #59957
     Set_Item_Property(Text_Name,VISUAL_ATTRIBUTE ,'DISABLE_VA'); 
    End If; 
  ElsIf Flag = 'N' Then
    Set_Item_Property(Text_Name, Enabled, Property_True);
    Set_Item_Property(Text_Name, Navigable, Property_False);
    If Get_Item_Property(Text_Name,ITEM_TYPE) <> 'BUTTON' And Text_Name Not In ('INVI_FOC_QTY','INVI_FOC_LOOSE') Then  ---commented on 15/2/2021, #59957
     Set_Item_Property(Text_Name,VISUAL_ATTRIBUTE ,'GENERAL_VA');
    End If; 
  Else
    Set_Item_Property(Text_Name, Enabled, Property_True);
    Set_Item_Property(Text_Name, Navigable, Property_True);
    If Get_Item_Property(Text_Name,ITEM_TYPE) <> 'BUTTON' And Text_Name Not In ('INVI_FOC_QTY','INVI_FOC_LOOSE') Then  ---commented on 15/2/2021, #59957
     Set_Item_Property(Text_Name,VISUAL_ATTRIBUTE ,'GENERAL_VA');
    End If;
  End If;  
END;
What you getClause Rule Language
on unit ENABLE_TEXT(TEXT_NAME, FLAG):    state disable ARG.TEXT_NAME when ARG.FLAG = 'F'    state enable ARG.TEXT_NAME when not (ARG.FLAG = 'F') and (ARG.FLAG = 'N')    state skip ARG.TEXT_NAME when not (ARG.FLAG = 'F') and (ARG.FLAG = 'N')    state enable ARG.TEXT_NAME when not (ARG.FLAG = 'F') and not (ARG.FLAG = 'N')    state unskip ARG.TEXT_NAME when not (ARG.FLAG = 'F') and not (ARG.FLAG = 'N')
# 3 statements did not convert.#   line 8
#   If Get_Item_Property(Text_Name,ITEM_TYPE) <> 'BUTTON' And Text_Name Not In ('INVI_FOC_QTY','INVI_FOC_LOOSE') Then
#     Set_Item_Property(Text_Name,VISUAL_ATTRIBUTE ,'DISABLE_VA');
#   End If;
#   reason: the guard reads ITEM_TYPE of a field, and a field's state is enabled, visible, required and its label: ITEM_TYPE is none of the four, so there is no value here to read#   line 14
#   If Get_Item_Property(Text_Name,ITEM_TYPE) <> 'BUTTON' And Text_Name Not In ('INVI_FOC_QTY','INVI_FOC_LOOSE') Then
#     Set_Item_Property(Text_Name,VISUAL_ATTRIBUTE ,'GENERAL_VA');
#   End If;
#   reason: the guard reads ITEM_TYPE of a field, and a field's state is enabled, visible, required and its label: ITEM_TYPE is none of the four, so there is no value here to read#   line 20
#   If Get_Item_Property(Text_Name,ITEM_TYPE) <> 'BUTTON' And Text_Name Not In ('INVI_FOC_QTY','INVI_FOC_LOOSE') Then
#     Set_Item_Property(Text_Name,VISUAL_ATTRIBUTE ,'GENERAL_VA');
#   End If;
#   reason: the guard reads ITEM_TYPE of a field, and a field's state is enabled, visible, required and its label: ITEM_TYPE is none of the four, so there is no value here to read

5 clauses converted, 3 statements refused

12. fmb_invoiceWHEN-BUTTON-PRESSED on T_INV_REF_DOC.PB_ALL_SELECTgreen-waste
What you haveWHEN-BUTTON-PRESSED
Declare
  v_Flag Char(1);
Begin
  Go_Block('T_INV_REF_DOC');
  First_Record;
  If Get_Item_Property('Pb_All_Select', LABEL) = 'All' Then
    v_Flag := 'Y';
  Else
    v_Flag := 'N';
  End If;
  loop
    :Flag := v_Flag;
    If :System.Last_Record='TRUE' Then
      Exit;
    End If;
    Next_Record;
  End Loop;
  
  If v_Flag = 'Y' Then
    Set_Item_Property('Pb_All_Select', LABEL, 'None');
  Else
    Set_Item_Property('Pb_All_Select', LABEL, 'All');
  End If;
  First_Record;
End;
What you getClause Rule Language
on press of PB_ALL_SELECT:    go to T_INV_REF_DOC    first record of T_INV_REF_DOC
# 2 statements did not convert.#   line 11
#   loop
#       :Flag := v_Flag;
#       If :System.Last_Record='TRUE' Then
#         Exit;
#       End If;
#       Next_Record;
#     End Loop;
#   reason: its body holds a statement no recognizer claims, and a for each with one dropped runs the rest against every row: :Flag := v_Flag#   line 19
#   If v_Flag = 'Y' Then
#     Set_Item_Property('Pb_All_Select', LABEL, 'None');
#   Else
#     Set_Item_Property('Pb_All_Select', LABEL, 'All');
#   End If;
#   reason: the guard reads the local V_FLAG, which 2 arms of one branch above it write, the last of them an Else, and the guards are not all an equality or an IN list on one name, so no decode says which arm ran: `GET_ITEM_PROPERTY('Pb_All_Select', LABEL) = 'All'` asks a question a value pair cannot

2 clauses converted, 2 statements refused

13. fmb_invoiceWHEN-BUTTON-PRESSED on T_INV_HEAD.LOV_INVH_LOC_CODEgreen-waste
What you haveWHEN-BUTTON-PRESSED
/*Go_Item('INVH_LOC_CODE');
List_Values; */ 
Declare
  n_alert_button Number;   
Begin   
  If :INVH_LOC_CODE is not null then
     If :System.Block_Status = 'CHANGED' And Get_Block_Property('T_INV_ITEM', Current_Record)> 0 And :InvI_Item_Code Is Not Null Then
       set_alert_property('Caution', alert_message_text,'Item details will be cleared! Do you really want to change the Location? ');
      n_alert_button := Show_Alert('Caution'); 
      If n_alert_button = ALERT_BUTTON1 THEN 
         Go_Block('T_INV_ITEM');
         Clear_Block(No_Commit);
         Go_Item('INVH_LOC_CODE');
         List_Values; 
      Else
         Go_Block('T_INV_ITEM');
         Raise Form_Trigger_Failure;
      End If; 
     Else
      Go_Item('INVH_LOC_CODE');
      List_Values;
     End If;  
  Else
    Go_Item('INVH_LOC_CODE');
    List_Values;      
  End If;
End;
   
What you getClause Rule Language
on press of LOV_INVH_LOC_CODE:    go to INVH_LOC_CODE when not is_filled(INVH_LOC_CODE)    open value help of INVH_LOC_CODE when not is_filled(INVH_LOC_CODE)
# 1 statement did not convert.#   line 7
#   If :System.Block_Status = 'CHANGED' And Get_Block_Property('T_INV_ITEM', Current_Record)> 0 And :InvI_Item_Code Is Not Null Then
#     set_alert_property('Caution', alert_message_text,'Item details will be cleared! Do you really want to change the Location? ');
#     n_alert_button := Show_Alert('Caution');
#     If n_alert_button = ALERT_BUTTON1 Then
#       Go_Block('T_INV_ITEM');
#       Clear_Block(No_Commit);
#       Go_Item('INVH_LOC_CODE');
#       List_Values;
#     Else
#       Go_Block('T_INV_ITEM');
#       Raise Form_Trigger_Failure;
#     End If;
#   Else
#     Go_Item('INVH_LOC_CODE');
#     List_Values;
#   End If;
#   reason: the guard reads CURRENT_RECORD of a block, and the one property read the language has a value for is a field's own state: a block, a record, a window, a view and a canvas each carry properties CRL has no expression for

2 clauses converted, 1 statement refused

14. fmb_invoiceWHEN-BUTTON-PRESSED on T_INV_HEAD.LOV_INVH_TXN_CODEgreen-waste
What you haveWHEN-BUTTON-PRESSED
/*Go_Item('INVH_TXN_CODE');
List_Values; */
Declare
  n_alert_button Number;   
Begin   
  If :INVH_TXN_CODE is not null then
     If :System.Block_Status = 'CHANGED' And Get_Block_Property('T_INV_ITEM', Current_Record)> 0 And :InvI_Item_Code Is Not Null Then
       set_alert_property('Caution', alert_message_text,'Item details will be cleared! Do you really want to change the Trans Type? ');
      n_alert_button := Show_Alert('Caution'); 
        If n_alert_button = ALERT_BUTTON1 THEN 
           Go_Block('T_INV_ITEM');
           Clear_Block(No_Commit);
           Go_Item('INVH_TXN_CODE');
           List_Values; 
        Else
           Go_Block('T_INV_ITEM');
           Raise Form_Trigger_Failure;
        End If; 
     Else
      Go_Item('INVH_TXN_CODE');
      List_Values;
     End If;  
  Else
    Go_Item('INVH_TXN_CODE');
    List_Values;      
  End If;
End;
   
What you getClause Rule Language
on press of LOV_INVH_TXN_CODE:    go to INVH_TXN_CODE when not is_filled(INVH_TXN_CODE)    open value help of INVH_TXN_CODE when not is_filled(INVH_TXN_CODE)
# 1 statement did not convert.#   line 7
#   If :System.Block_Status = 'CHANGED' And Get_Block_Property('T_INV_ITEM', Current_Record)> 0 And :InvI_Item_Code Is Not Null Then
#     set_alert_property('Caution', alert_message_text,'Item details will be cleared! Do you really want to change the Trans Type? ');
#     n_alert_button := Show_Alert('Caution');
#     If n_alert_button = ALERT_BUTTON1 Then
#       Go_Block('T_INV_ITEM');
#       Clear_Block(No_Commit);
#       Go_Item('INVH_TXN_CODE');
#       List_Values;
#     Else
#       Go_Block('T_INV_ITEM');
#       Raise Form_Trigger_Failure;
#     End If;
#   Else
#     Go_Item('INVH_TXN_CODE');
#     List_Values;
#   End If;
#   reason: the guard reads CURRENT_RECORD of a block, and the one property read the language has a value for is a field's own state: a block, a record, a window, a view and a canvas each carry properties CRL has no expression for

2 clauses converted, 1 statement refused

15. fmb_invoiceWHEN-BUTTON-PRESSED on T_INV_HEAD.LOV_INVH_CUST_CODEgreen-waste
What you haveWHEN-BUTTON-PRESSED
/* Go_Item('INVH_CUST_CODE');
 List_Values;  */
Declare
  n_alert_button Number;   
Begin   
  If :INVH_CUST_CODE is not null then
     If :System.Block_Status = 'CHANGED' And Get_Block_Property('T_INV_ITEM', Current_Record)> 0 And :InvI_Item_Code Is Not Null Then
       set_alert_property('Caution', alert_message_text,'Item details will be cleared! Do you really want to change the customer? ');
      n_alert_button := Show_Alert('Caution'); 
        If n_alert_button = ALERT_BUTTON1 THEN 
           Go_Block('T_INV_ITEM');
           Clear_Block(No_Commit);
           Go_Item('INVH_CUST_CODE');
           List_Values; 
        Else
           Go_Block('T_INV_ITEM');
           Raise Form_Trigger_Failure;
        End If; 
     Else
      Go_Item('INVH_CUST_CODE');
      List_Values;
     End If;  
  Else
    Go_Item('INVH_CUST_CODE');
    List_Values;      
  End If;
End;
   
What you getClause Rule Language
on press of LOV_INVH_CUST_CODE:    go to INVH_CUST_CODE when not is_filled(INVH_CUST_CODE)    open value help of INVH_CUST_CODE when not is_filled(INVH_CUST_CODE)
# 1 statement did not convert.#   line 7
#   If :System.Block_Status = 'CHANGED' And Get_Block_Property('T_INV_ITEM', Current_Record)> 0 And :InvI_Item_Code Is Not Null Then
#     set_alert_property('Caution', alert_message_text,'Item details will be cleared! Do you really want to change the customer? ');
#     n_alert_button := Show_Alert('Caution');
#     If n_alert_button = ALERT_BUTTON1 Then
#       Go_Block('T_INV_ITEM');
#       Clear_Block(No_Commit);
#       Go_Item('INVH_CUST_CODE');
#       List_Values;
#     Else
#       Go_Block('T_INV_ITEM');
#       Raise Form_Trigger_Failure;
#     End If;
#   Else
#     Go_Item('INVH_CUST_CODE');
#     List_Values;
#   End If;
#   reason: the guard reads CURRENT_RECORD of a block, and the one property read the language has a value for is a field's own state: a block, a record, a window, a view and a canvas each carry properties CRL has no expression for

2 clauses converted, 1 statement refused

16. fmb_invoiceon unit PROC_SET_VAgreen-waste
What you havePROGRAM-UNIT
Procedure Proc_Set_Va(Pi_Formname In Varchar2) Is
--This procedure Iterates through the blocks to see the items with property 'required =  'YES' and sets mandatory_VA.
--Pre-requisite - Item's Required property should be Yes. After setting the VA, Set required = No for proper navigation
--Added on 29/Jun/2019, Shebin
 Form_Name   Varchar2(40);
 Form_Id     Formmodule;
 Block_Name  Varchar2(40);
 Block_Id    Block;
 Item_Name   Varchar2(40);
 Item_Id     Item;
 Item_Typ    Varchar2(40);
Begin
 Form_Name := Pi_Formname;
 Form_Id   := Find_Form(Form_Name);
 Block_Name := Get_Form_Property(Form_Id,First_Block);
 Block_Id   := Find_Block(Block_Name);
 While Block_Id.Id != 0 Loop
  Item_Name := Get_Block_Property(Block_Id,First_Item);
  Item_Id   := Find_Item(Item_Name);
  While Item_Id.Id != 0 Loop
   Item_Typ  := Get_Item_Property(Item_Id,Item_Type);
   If Item_Typ = 'TEXT ITEM' And Get_Item_Property(Item_Id,Item_Canvas) Is Not Null Then
    If Get_Item_Property(Item_Id, Required) = 'TRUE'  Then     
       Set_Item_Property(Item_Id,Visual_Attribute ,'Mandatory_Va'); 
      -- If Get_Item_Property(Item_Id,LOV_NAME) is not null then  
           Set_Item_Property(Item_Id,Required ,property_false); --- To proper lov population
       --End If;     
    End If;
   End If;
   Item_Name := Get_Item_Property(Item_Name,Nextitem);
   Item_Id   := Find_Item(Item_Name);
  End Loop;
  Block_Name := Get_Block_Property(Block_Name,Nextblock);
  Block_Id   := Find_Block(Block_Name);
 End Loop;
End Proc_Set_Va;
What you getClause Rule Language
on unit PROC_SET_VA(PI_FORMNAME):
# 1 statement did not convert.#   line 17
#   While Block_Id.Id != 0 Loop
#     Item_Name := Get_Block_Property(Block_Id,First_Item);
#     Item_Id   := Find_Item(Item_Name);
#     While Item_Id.Id != 0 Loop
#      Item_Typ  := Get_Item_Property(Item_Id,Item_Type);
#      If Item_Typ = 'TEXT ITEM' And Get_Item_Property(Item_Id,Item_Canvas) Is Not Null Then
#       If Get_Item_Property(Item_Id, Required) = 'TRUE'  Then     
#          Set_Item_Property(Item_Id,Visual_Attribute ,'Mandatory_Va'); 
#          
#              Set_Item_Property(Item_Id,Required ,property_false);  
#           
#       End If;
#      End If;
#      Item_Name := Get_Item_Property(Item_Name,Nextitem);
#      Item_Id   := Find_Item(Item_Name);
#     End Loop;
#     Block_Name := Get_Block_Property(Block_Name,Nextblock);
#     Block_Id   := Find_Block(Block_Name);
#    End Loop;
#   reason: it repeats while Block_Id.Id != 0 holds, and a condition is not a collection: crl-loops.md's six operations each read a finite collection whose rows are known before the first pass, and a while loop states only when it stops

0 clauses converted, 1 statement refused

17. fmb_invoiceon unit PROC_UPD_AVG_RATEgreen-waste
What you havePROGRAM-UNIT
PROCEDURE Proc_Upd_Avg_Rate IS
  v_Rate     Number;
  v_Amount   Number;
  v_Count    Number := 0;
  v_Qty_BU   Number(12,2);
  v_Oth_Perc Number(6,4);
  v_Date     Date;
  Pl_Id     ParamList;
  v_Alert    Number;
  v_Status  VarChar2(20);
  v_Log_Id  Number;
  v_Dt       Date;
  v_Auto_Transfer Char;
Begin
  --Calculate Average Rate
  v_Amount := Nvl(:Sub_Total * :InvH_Curr_Rate, 0);
  
  If v_Amount = 0 Then
    v_Oth_Perc := 0;
  Else
    If Nvl(:Disc_Tot * :InvH_Curr_Rate, 0) > 0 Then
      v_Oth_Perc := (Nvl(:Disc_Tot * :InvH_Curr_Rate, 0)) * 100 / v_Amount;
    End If;  
  End If;

  Go_Block('T_Inv_Item');
  First_Record;
  Loop
    v_Rate := (:InvI_Rate - Nvl(:InvI_Rate * :InvI_Disc_Perc / 100, 0) - Nvl(:InvI_Disc_Amt, 0)) * Nvl(:InvH_Curr_Rate,1);
    :InvI_Avg_Rate := Round(v_Rate - Nvl(v_Rate * v_Oth_Perc / 100, 0),3);
    If :System.Last_Record = 'TRUE' Then
      Exit;
    End If;
    Next_Record;
  End Loop;

End;
What you getClause Rule Language
on unit PROC_UPD_AVG_RATE:    go to T_INV_ITEM
# 1 statement did not convert.#   line 28
#   Loop
#       v_Rate := (:InvI_Rate - Nvl(:InvI_Rate * :InvI_Disc_Perc / 100, 0) - Nvl(:InvI_Disc_Amt, 0)) * Nvl(:InvH_Curr_Rate,1);
#       :InvI_Avg_Rate := Round(v_Rate - Nvl(v_Rate * v_Oth_Perc / 100, 0),3);
#       If :System.Last_Record = 'TRUE' Then
#         Exit;
#       End If;
#       Next_Record;
#     End Loop;
#   reason: it names T_INV_ITEM and T_INV_HEAD, so it walks no one collection

1 clause converted, 1 statement refused

18. fmb_invoiceon unit SELECT_PROMOTIONgreen-waste
What you havePROGRAM-UNIT
PROCEDURE Select_Promotion IS
  v_Count Number;
  v_Lov   Boolean;
BEGIN
  If Nvl(:Frm_En_Sales_Promo, 'Y') = 'Y' Then
    Select Count(*) Into v_Count
    FROM T_Prom_Head, T_Prom_Item, T_Prom_Customer
      WHERE  PromH_Id = PromI_PromH_Id AND PromH_Id = PromC_PromH_Id(+)
        AND PromH_Comp_Code = :Global.Company And Nvl(PromH_Status, 'F') = 'F'
        AND ((PromH_Cust_Alloc = 'Y' AND PromC_Cust_Code = :InvH_Cust_Code) OR PromH_Cust_Alloc = 'N')
        AND NVL(PromH_Approval_Status, 'N') = 'F' AND PromI_Item_Code = :InvI_Item_Code AND PromI_Uom_Code = :InvI_Uom_Code
        AND ((PromH_Option = 'Q' AND NVL(PromH_Qty_Limit_Bu, 0) > NVL(PromH_Inv_Qty_Bu, 0))
        OR (PromH_Option = 'P' AND :InvH_Dt BETWEEN PromH_Dt_Fm and Nvl(PromH_Ext_Upto, PromH_Dt_To))
        OR (PromH_Option = 'B' AND NVL(PromH_Qty_Limit_Bu, 0) > NVL(PromH_Inv_Qty_Bu, 0)
        AND :InvH_Dt BETWEEN PromH_Dt_Fm and Nvl(PromH_Ext_Upto, PromH_Dt_To)));
    
    Set_Item_Instance_Property('Prom_Enabled', Current_Record, Insert_Allowed, Property_False);    
    Set_Item_Instance_Property('Prom_Enabled', Current_Record, Update_Allowed, Property_False);
    
    If Nvl(:Prom_Enabled, 'Y') = 'Y' Then
      If v_Count = 1 Then
         Select PromH_Id, PromH_No, PromI_Id,Promi_Exp_Dt Into :PromH_Id, :PromH_No, :InvI_Prom_Item_Id,:Prom_Exp_Dt 
         FROM T_Prom_Head, T_Prom_Item, T_Prom_Customer
          WHERE  PromH_Id = PromI_PromH_Id AND PromH_Id = PromC_PromH_Id(+)
            AND PromH_Comp_Code = :Global.Company And Nvl(PromH_Status, 'F') = 'F'
            AND ((PromH_Cust_Alloc = 'Y' AND PromC_Cust_Code = :InvH_Cust_Code) OR PromH_Cust_Alloc = 'N')
            AND NVL(PromH_Approval_Status, 'N') = 'F' AND PromI_Item_Code = :InvI_Item_Code AND PromI_Uom_Code = :InvI_Uom_Code
            AND ((PromH_Option = 'Q' AND NVL(PromH_Qty_Limit_Bu, 0) > NVL(PromH_Inv_Qty_Bu, 0))
            OR (PromH_Option = 'P' AND :InvH_Dt BETWEEN PromH_Dt_Fm and Nvl(PromH_Ext_Upto, PromH_Dt_To))
            OR (PromH_Option = 'B' AND NVL(PromH_Qty_Limit_Bu, 0) > NVL(PromH_Inv_Qty_Bu, 0)
            AND :InvH_Dt BETWEEN PromH_Dt_Fm and Nvl(PromH_Ext_Upto, PromH_Dt_To)));
      ElsIf v_Count > 1 Then
        v_Lov := Show_Lov('Lov_Promo');
         If Not v_Lov Then
           Show_Message('Inv_Alert', 'Select atleast one promotion!');
           Raise Form_Trigger_Failure;
         End If;
      End If;
    End If;
  End If;
END;
What you getClause Rule Language
on unit SELECT_PROMOTION:    from PROM_HEAD_COUNT(INVH_CUST_CODE, INVH_DT, INVI_ITEM_CODE, INVI_UOM_CODE) when nvl(FRM_EN_SALES_PROMO, 'Y') = 'Y'
        # load-fmb-invoice-select-promotion-unit-0    from PROM_HEAD(INVH_CUST_CODE, INVH_DT, INVI_ITEM_CODE, INVI_UOM_CODE) when ((nvl(FRM_EN_SALES_PROMO, 'Y') = 'Y') and (nvl(PROM_ENABLED, 'Y') = 'Y')) and (PROM_HEAD_COUNT.COUNT = 1)
        # load-fmb-invoice-select-promotion-unit-1    set PROMH_ID to PROM_HEAD.PROMH_ID when ((nvl(FRM_EN_SALES_PROMO, 'Y') = 'Y') and (nvl(PROM_ENABLED, 'Y') = 'Y')) and (PROM_HEAD_COUNT.COUNT = 1)    set PROMH_NO to PROM_HEAD.PROMH_NO when ((nvl(FRM_EN_SALES_PROMO, 'Y') = 'Y') and (nvl(PROM_ENABLED, 'Y') = 'Y')) and (PROM_HEAD_COUNT.COUNT = 1)    set INVI_PROM_ITEM_ID to PROM_HEAD.PROMI_ID when ((nvl(FRM_EN_SALES_PROMO, 'Y') = 'Y') and (nvl(PROM_ENABLED, 'Y') = 'Y')) and (PROM_HEAD_COUNT.COUNT = 1)    set PROM_EXP_DT to PROM_HEAD.PROMI_EXP_DT when ((nvl(FRM_EN_SALES_PROMO, 'Y') = 'Y') and (nvl(PROM_ENABLED, 'Y') = 'Y')) and (PROM_HEAD_COUNT.COUNT = 1)
# 4 statements did not convert.#   line 17
#   Set_Item_Instance_Property('Prom_Enabled', Current_Record, Insert_Allowed, Property_False);
#   reason: this sets a property of one record's cell, and the screen holds field state per field and not per row, so a verb here would lock or mark the column in every row of the grid: a per-record field state is grid.md's and is not built#   line 18
#   Set_Item_Instance_Property('Prom_Enabled', Current_Record, Update_Allowed, Property_False);
#   reason: this sets a property of one record's cell, and the screen holds field state per field and not per row, so a verb here would lock or mark the column in every row of the grid: a per-record field state is grid.md's and is not built#   line 33
#   v_Lov := Show_Lov('Lov_Promo');
#   reason: open value help names the field whose list opens and no single field of this form carries Lov_Promo, so there is no field to open it on: the list is either declared on none, which is the dangling name fmb_gledger already writes, or on several#   line 34
#   If Not v_Lov Then
#     Show_Message('Inv_Alert', 'Select atleast one promotion!');
#     Raise Form_Trigger_Failure;
#   End If;
#   reason: the guard reads the local V_LOV, which is written from SHOW_LOV, and SHOW_LOV is a Forms built-in, which no FormConnect document declares because no database holds it, and no program unit of this form declares one either, so there is no body to inline under the caller's point and item and nothing to bridge to

4 clauses converted, 4 statements refused

19. fmb_invoiceon unit LOAD_REF_TNDRgreen-waste
What you havePROGRAM-UNIT
PROCEDURE Load_Ref_Tndr IS
  Cursor CurTndr Is Select Distinct TndrH_Id, TndrH_Loc_Code, TndrH_Txn_Code, TndrH_No 
  From M_Uom, M_Item, T_Tndr_Item, T_Tndr_Cust_Item, T_Tndr_Head
  Where TndrC_TndrH_Id = TndrH_Id And  TndrI_TndrC_Id = TndrC_Id
    And Item_Code = TndrI_Item_Code And Uom_Code = TndrI_Uom_Code
    And Nvl(TndrC_Inv_Qty_Bu, 0) < Nvl(TndrC_qty * Uom_Max_Loose, 0) + Nvl(TndrC_Loose, 0)
    And TndrH_Comp_Code = :Global.Company And TndrH_Cust_Code = :InvH_Cust_Code
    And TndrH_Loc_Code =:InvH_Loc_Code
    And Nvl(TndrH_Status,'N') <> 'C'            --Modified by Dipu on 19/07/14
    And Nvl(Tndrh_Approval_Status,'P')='F'      --Added by Dipu on 19/07/14
    And Nvl(TndrH_Extended_Upto, TndrH_Valid_To) >= :InvH_Dt 
    And TndrH_Valid_Fm <= :InvH_Dt Order By TndrH_No Desc;

  v_Count Number;
BEGIN
  Hide_Window('INVH_DOC_SELECTION'); 
   Select Count(*) Into v_Count
  From M_Uom, M_Item, T_Tndr_Item, T_Tndr_Cust_Item, T_Tndr_Head
  Where TndrC_TndrH_Id = TndrH_Id And  TndrI_TndrC_Id = TndrC_Id
    And Item_Code = TndrI_Item_Code And Uom_Code = TndrI_Uom_Code
    And Nvl(TndrC_Inv_Qty_Bu, 0) < Nvl(TndrC_qty * Uom_Max_Loose, 0) + Nvl(TndrC_Loose, 0)
    And TndrH_Comp_Code = :Global.Company And TndrH_Cust_Code = :InvH_Cust_Code
    And TndrH_Loc_Code = :InvH_Loc_Code
    And Nvl(TndrH_Status,'N') <> 'C'            --Modified by Dipu on 19/07/14
    And Nvl(Tndrh_Approval_Status,'P')='F'      --Added by Dipu on 19/07/14
    And Nvl(TndrH_Extended_Upto, TndrH_Valid_To) >= :InvH_Dt 
    And TndrH_Valid_Fm <= :InvH_Dt;
  If Nvl(v_Count,0) > 0 Then  
    Go_Block('T_Inv_Ref_Doc');
    Go_Item('Ref_Loc_Code');
    Open CurTndr;
      Loop
        Fetch CurTndr INTO :InvRD_Tndr_Id, :Ref_Loc_Code, :InvH_Ref_Txn_Code, :Ref_No;

        EXIT WHEN CurTndr%NotFound;

         Next_Record;     
      End Loop;
    Close CurTndr;
    First_Record;
  Else
    Show_Message('INV_ALERT','There is no tender documents to load');
  End If; 
END;
What you getClause Rule Language
on unit LOAD_REF_TNDR:    from load-fmb-invoice-load-ref-tndr-0(INVH_CUST_CODE, INVH_DT, INVH_LOC_CODE)    go to T_INV_REF_DOC when nvl(COUNT, 0) > 0    go to REF_LOC_CODE when nvl(COUNT, 0) > 0    append rows to T_INV_REF_DOC in loop-fmb-invoice-program-unit-0 when nvl(COUNT, 0) > 0    first record when nvl(COUNT, 0) > 0    warn "There is no tender documents to load" when not (nvl(COUNT, 0) > 0)
# 1 statement did not convert.#   line 16
#   Hide_Window('INVH_DOC_SELECTION');
#   reason: HIDE_WINDOW is a Forms built-in, which no FormConnect document declares because no database holds it, and no program unit of this form declares one either, so there is no body to inline under the caller's point and item and nothing to bridge to

5 clauses converted, 1 statement refused

20. fmb_invoiceon unit FN_GET_CALC_TAXgreen-waste
What you havePROGRAM-UNIT
FUNCTION FN_GET_CALC_TAX(STYPE IN VARCHAR2) RETURN NUMBER IS
 v_Tax   Number(14,3);
 v_Amt   Number; 


BEGIN
  /*
   If Stype ='VAT' Then  
     Select Round(Decode(Nvl(:InvI_Vat_Incl_Price,'N'),'N',(:Inv_Amt * Nvl(:Invi_Vat_Perc,0)/100),:Inv_Amt -((100-:Invi_Vat_Perc) * :Inv_Amt/100),0),Nvl(:Frm_Decimal,2))
     Into v_Tax From Dual;
   ElsIf Stype ='GST' Then  
     Select Round(Decode(Nvl(:InvI_Gst_Incl_Price,'N'),'N',(:Inv_Amt * Nvl(:Invi_Gst,0)/100),:Inv_Amt -((100-:Invi_Gst) * :Inv_Amt/100),0),Nvl(:Frm_Decimal,2))
     Into v_Tax From Dual;
   ElsIf Stype ='CST' Then  
     Select Round(Decode(Nvl(:InvI_Cst_Incl_Price,'N'),'N',(:Inv_Amt * Nvl(:Invi_Cst,0)/100),:Inv_Amt -((100-:Invi_Cst) * :Inv_Amt/100),0),Nvl(:Frm_Decimal,2))
     Into v_Tax From Dual;
   ElsIf Stype ='ST' Then  
     Select Round(Decode(Nvl(:InvI_Serv_Tax_Incl_Price,'N'),'N',(:Inv_Amt * Nvl(:Invi_Serv_Tax,0)/100),:Inv_Amt -((100-:Invi_Serv_Tax) * :Inv_Amt/100),0),Nvl(:Frm_Decimal,2))
     Into v_Tax From Dual;
 End If;
  */
  
  If SType ='VAT' Then
    If Nvl(:Invi_Inc_Foc_Vat,'Y') ='Y' Then
      v_Tax :=  Fn_Calc_Tax(SType,Nvl(:InvI_Qty,0)+ Nvl(:InvI_Foc_Qty,0),Nvl(:InvI_Loose,0) + Nvl(:InvI_Foc_Loose,0),Nvl(:InvH_Curr_Code, :Global.Basecurrency),
               :InvH_Curr_Rate,Nvl(:Max_Loose, 1),:InvI_Rate,:InvI_Base_Rate,:InvI_Vat,:InvI_Vat_Amt,:InvI_Vat_Incl_Price,Nvl(:Frm_Decimal,2));
    Else
      v_Tax :=  Fn_Calc_Tax(SType,Nvl(:InvI_Qty,0),Nvl(:InvI_Loose,0) ,Nvl(:InvH_Curr_Code, :Global.Basecurrency),
         :InvH_Curr_Rate,Nvl(:Max_Loose, 1),:InvI_Rate,:InvI_Base_Rate,:InvI_Vat,:InvI_Vat_Amt,:InvI_Vat_Incl_Price,Nvl(:Frm_Decimal,2));
    End If;
    
  Elsif SType ='ED' Then        
    If Nvl(:Invi_Inc_Foc_Ed,'Y') ='Y' Then
      v_Tax :=  Fn_Calc_Tax(SType,Nvl(:InvI_Qty,0)+ Nvl(:InvI_Foc_Qty,0),Nvl(:InvI_Loose,0) + Nvl(:InvI_Foc_Loose,0),Nvl(:InvH_Curr_Code, :Global.Basecurrency),
              :InvH_Curr_Rate,Nvl(:Max_Loose, 1),:InvI_Rate,:InvI_Base_Rate,:InvI_eD,:InvI_Ed_Amt,:InvI_Ed_Incl_Price,Nvl(:Frm_Decimal,2));
    Else
      v_Tax :=  Fn_Calc_Tax(SType,Nvl(:InvI_Qty,0),Nvl(:InvI_Loose,0) ,Nvl(:InvH_Curr_Code, :Global.Basecurrency),
             :InvH_Curr_Rate,Nvl(:Max_Loose, 1),:InvI_Rate,:InvI_Base_Rate,:InvI_eD,:InvI_Ed_Amt,:InvI_Ed_Incl_Price,Nvl(:Frm_Decimal,2));
    End If;
  End If;

   Return v_Tax; 
  
END;
What you getClause Rule Language
on unit FN_GET_CALC_TAX(STYPE):
# 1 statement did not convert.#   line 42
#   Return v_Tax;
#   reason: this RETURN gives the local V_TAX, which 4 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

0 clauses converted, 1 statement refused

21. fmb_invoiceon unit PROC_LOAD_CESSgreen-waste
What you havePROGRAM-UNIT
PROCEDURE proc_load_cess IS
   Cursor CurCess is Select Stax_Id,Stax_Code,Stax_Name,Stax_Type,Stax_Main_Acnt_Code,
   Stax_level,Stax_Tax_On,Stax_Tax_Perc
   From M_State_Tax,M_Tax_Location
   Where Stax_id =TaxL_Stax_Id
   and Stax_Comp_Code =:Global.Company 
   and TaxL_Loc_Code=:Invh_Loc_Code
   and Nvl(TaxL_Tax_En_YN,'N') ='Y';  
   v_Count     Number;
  
BEGIN
   Select Count(*) into v_Count
   From M_State_Tax,M_Tax_Location
   Where Stax_id =TaxL_Stax_Id
   and Stax_Comp_Code =:Global.Company 
   and TaxL_Loc_Code=:Invh_Loc_Code
   and Nvl(TaxL_Tax_En_YN,'N') ='Y';
   
   
   If Nvl(v_count,0) > 0 Then
       Go_Block('T_Inv_Cess');
       First_Record;
       For Cur in CurCess  Loop
         If CurCess%NotFound Then
            Exit;
         End If;
         :InvC_Stax_Id     := Cur.Stax_Id;
         :Invc_Tax_Perc     := Cur.STax_Tax_Perc;
         :Cess_Desc          := Cur.Stax_Name;
         :InvC_Tax_type     := Cur.Stax_Type;
         --:InvC_Main_Acnt_Code :=Cur.Stax_Main_Acnt_Code;
         :InvC_Level        :=  Cur.Stax_level;
         :InvC_Tax_On       := Cur.Stax_Tax_on;
         :InvC_Tax_Code     := Cur.Stax_Code;
         If :Invc_Tax_On is Not Null and :Invc_Tax_Perc >0 Then
            Select Stax_Type into :Invc_Tax_On_Type From M_State_Tax Where Stax_Id =:InvC_Tax_On;
         End If;   
        Next_Record;
       End Loop;
   End If;
   Go_Block('T_Inv_Head');
End;

  
    
  
What you getClause Rule Language
on unit PROC_LOAD_CESS:    from load-fmb-invoice-proc-load-cess-0(INVH_LOC_CODE)    go to T_INV_CESS when nvl(COUNT, 0) > 0    go to T_INV_HEAD
# 1 statement did not convert.#   line 23
#   For Cur in CurCess  Loop
#            If CurCess%NotFound Then
#               Exit;
#            End If;
#            :InvC_Stax_Id     := Cur.Stax_Id;
#            :Invc_Tax_Perc     := Cur.STax_Tax_Perc;
#            :Cess_Desc          := Cur.Stax_Name;
#            :InvC_Tax_type     := Cur.Stax_Type;
#             
#            :InvC_Level        :=  Cur.Stax_level;
#            :InvC_Tax_On       := Cur.Stax_Tax_on;
#            :InvC_Tax_Code     := Cur.Stax_Code;
#            If :Invc_Tax_On is Not Null and :Invc_Tax_Perc >0 Then
#               Select Stax_Type into :Invc_Tax_On_Type From M_State_Tax Where Stax_Id =:InvC_Tax_On;
#            End If;   
#           Next_Record;
#          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)

2 clauses converted, 1 statement refused

22. fmb_invoiceon unit VALIDATE_DATEgreen-waste
What you havePROGRAM-UNIT
PROCEDURE VALIDATE_DATE (Entry_Date IN OUT Date, AYr_Code IN VarChar2, Accept_Future_Dt IN Char, Alert_Name IN VarChar2)IS
  CURSOR CurAYr IS
  SELECT AYr_Code, AYr_Status FROM M_AYear
  WHERE Entry_Date BETWEEN AYr_From_Dt AND AYr_To_Dt
  AND AYr_Comp_Code = :Global.Company;

  v_AYr_Code VarChar2(10);
  v_Status   Char(1);
  v_Alert    Number;
BEGIN
  If Length(Entry_Date) < Length(:Global.DateFormat) Then
    If :Global.DateFormat = 'DD-MM-YY' AND Length(Entry_Date) = 6 Then
      Entry_Date := SubStr(Entry_Date, 1, 2) || '-' || SubStr(Entry_Date, 3, 2) || '-' || SubStr(Entry_Date, 5, 2);
    End If;
  End If;

  OPEN CurAYr;
  FETCH CurAYr INTO v_AYr_Code, v_Status;
  If CurAYr%NotFound Then
    Set_Alert_Property(Alert_Name, Alert_Message_Text, 'A/c Year not Defined!');
    v_Alert := Show_Alert(Alert_Name);
    Raise Form_Trigger_Failure;
  ElsIf Nvl(AYr_Code, v_AYr_Code) <> v_AYr_Code Then
    Set_Alert_Property(Alert_Name, Alert_Message_Text, 'Date not in the same A/c Year!');
    v_Alert := Show_Alert(Alert_Name);
    Raise Form_Trigger_Failure;
  End If;

  If Nvl(v_Status, ' ') = 'L' Then
    Set_Alert_Property(Alert_Name, Alert_Message_Text, 'A/c Year Locked!');
    v_Alert := Show_Alert(Alert_Name);
    Raise Form_Trigger_Failure;
  End If;

  If Accept_Future_Dt = 'N' AND Entry_Date > Trunc(Fn_Get_Zone_Date(:Global.Company)) Then
    Set_Alert_Property(Alert_Name, Alert_Message_Text, 'Date Should not be greater than System Date!');
    v_Alert := Show_Alert(Alert_Name);
    Raise Form_Trigger_Failure;
  End If;

  If Accept_Future_Dt = 'Y' AND Entry_Date < Trunc(Fn_Get_Zone_Date(:Global.Company)) Then
    Set_Alert_Property(Alert_Name, Alert_Message_Text, 'Date Should not be less than System Date!');
    v_Alert := Show_Alert(Alert_Name);
    Raise Form_Trigger_Failure;
  End If;

END;
What you getClause Rule Language
on unit VALIDATE_DATE(ENTRY_DATE, AYR_CODE, ACCEPT_FUTURE_DT, ALERT_NAME):    from load-fmb-invoice-validate-date-0    deny when AYR_STATUS = 'L' silent    deny when (ARG.ACCEPT_FUTURE_DT = 'N') and (ARG.ENTRY_DATE > trunc(sysdate())) silent    deny when (ARG.ACCEPT_FUTURE_DT = 'Y') and (ARG.ENTRY_DATE < trunc(sysdate())) silent
# 5 statements did not convert.#   line 13
#   Entry_Date := SubStr(Entry_Date, 1, 2) || '-' || SubStr(Entry_Date, 3, 2) || '-' || SubStr(Entry_Date, 5, 2);
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 19
#   If CurAYr%NotFound Then
#     Set_Alert_Property(Alert_Name, Alert_Message_Text, 'A/c Year not Defined!');
#     v_Alert := Show_Alert(Alert_Name);
#     Raise Form_Trigger_Failure;
#   Else
#     If Nvl(AYr_Code, v_AYr_Code) <> v_AYr_Code Then
#       Set_Alert_Property(Alert_Name, Alert_Message_Text, 'Date not in the same A/c Year!');
#       v_Alert := Show_Alert(Alert_Name);
#       Raise Form_Trigger_Failure;
#     End If;
#   End If;
#   reason: the guard reads CURAYR, which nothing in this body declares and nothing in it writes: a program unit's parameter, or a name declared somewhere this converter cannot see#   line 31
#   v_Alert := Show_Alert(Alert_Name);
#   reason: show alert names the alert the form declares and Alert_Name is not a name this body resolves: nothing above it writes it from a Find_Alert with a literal, so which alert opens is not known until the form runs#   line 37
#   v_Alert := Show_Alert(Alert_Name);
#   reason: show alert names the alert the form declares and Alert_Name is not a name this body resolves: nothing above it writes it from a Find_Alert with a literal, so which alert opens is not known until the form runs#   line 43
#   v_Alert := Show_Alert(Alert_Name);
#   reason: show alert names the alert the form declares and Alert_Name is not a name this body resolves: nothing above it writes it from a Find_Alert with a literal, so which alert opens is not known until the form runs

3 clauses converted, 5 statements refused

23. fmb_invoiceWHEN-BUTTON-PRESSED on CTRL.PB_REVERSEgreen-waste
What you haveWHEN-BUTTON-PRESSED
Declare
  V_Srth_Id        Number;
  V_Skip_Cost      Varchar2(10);  
  V_Btrn_Flag      Varchar2(10);
  V_Alert          Number;
  V_Count          Number;
  v_Cust_Validate   Number;
Begin
  If :Invh_Rev_Txn Is Null Then
    Show_Message ('Inv_Alert', 'Reverse Txn Not Found!');
    Raise Form_Trigger_Failure;
  End If;
    
  Set_Alert_Property('Conf_Alert', Alert_Message_Text, 'Do you want to REVERSE the transaction ?');
  V_Alert := Show_Alert('Conf_Alert');

  If V_Alert = Alert_Button1 Then
   -- Select Count (*) Into V_Count 
   -- From M_Customer_Txn
   -- Where Custtxn_Cust_Code = :Invh_Cust_Code
   -- And Custtxn_Txn_Code =  :Invh_Rev_Txn;
    
    v_Cust_Validate := fn_validate_cust_txn(:Global.Company,:Invh_Cust_Code,:Invh_Rev_Txn);
     
    If v_Cust_Validate = 0 Then
      Show_Message ('INV_ALERT', :Invh_Cust_Code||' / '||:Invh_Rev_Txn||' Combination Not Valid!');
      Raise Form_Trigger_Failure;
    End If;    
    
    V_Btrn_Flag := Fn_Get_Stk_Txn_Param(:Invh_Rev_Txn, :Global.Company, 'SRET_BTRN_FLAG');        
        
    Proc_Insert_Reverse_Txn(:Global.Company, :Invh_Divn_Code, :Invh_Loc_Code, :Invh_Txn_Code, 
                            :Invh_Id, :Invh_Rev_Txn, Null, :Invh_Cust_Code, :Invh_Sman_Code,  
                            V_Btrn_Flag, :Global.User, Null, :Frm_Rev_Doc_Id, V_Srth_Id); 
    Standard.Commit; 
       
    Proc_Update_Fin_Status(:Global.Company, :Invh_Rev_Txn, V_Srth_Id);
                  
    Standard.Commit;
                   
    Select Sreth_No Into :Invh_Rev_No 
    From T_Sret_Head
    Where Sreth_Id = V_Srth_Id;
    Show_Message('INV_ALERT', 'Reverse Transaction Completed. Doc No : '||:Invh_Rev_Loc_Code||'/'||:Invh_Rev_Txn||'/'||:Invh_Rev_No);
    Go_Item('Invh_Loc_Code');
    Set_Item_Property('PB_REVERSE', Enabled, Property_False);
  End If;
End;
What you getClause Rule Language
on press of PB_REVERSE:    require INVH_REV_TXN else "Reverse Txn Not Found!"    show alert CONF_ALERT with 'Do you want to REVERSE the transaction ?'    deny when (ANSWER.BUTTON = '1') and (FN_VALIDATE_CUST_TXN(GLOBAL.COMPANY, INVH_CUST_CODE, INVH_REV_TXN) = 0) else ((INVH_CUST_CODE || ' / ') || INVH_REV_TXN) || ' Combination Not Valid!'    call PROC_INSERT_REVERSE_TXN(GLOBAL.COMPANY, INVH_DIVN_CODE, INVH_LOC_CODE, INVH_TXN_CODE, INVH_ID, INVH_REV_TXN, null, INVH_CUST_CODE, INVH_SMAN_CODE, FN_GET_STK_TXN_PARAM(INVH_REV_TXN, GLOBAL.COMPANY, 'SRET_BTRN_FLAG'), GLOBAL.USER, null, FRM_REV_DOC_ID, null) when ANSWER.BUTTON = '1'    call PROC_UPDATE_FIN_STATUS(GLOBAL.COMPANY, INVH_REV_TXN, OUT.PROC_INSERT_REVERSE_TXN.14) when ANSWER.BUTTON = '1'    go to INVH_LOC_CODE when ANSWER.BUTTON = '1'    state disable PB_REVERSE when ANSWER.BUTTON = '1'
# 4 statements did not convert.#   line 35
#   Standard.Commit;
#   reason: G13: mid-trigger DML and the transaction boundary are refused, not converted#   line 39
#   Standard.Commit;
#   reason: G13: mid-trigger DML and the transaction boundary are refused, not converted#   Select Sreth_No Into :Invh_Rev_No 
#       From T_Sret_Head
#       Where Sreth_Id = V_Srth_Id
#   reason: its query narrows on V_SRTH_ID, which this body declares as a local: a formal becomes an :ARG bind and a page value becomes a param, and a local is neither#   Select Sreth_No Into :Invh_Rev_No 
#       From T_Sret_Head
#       Where Sreth_Id = V_Srth_Id;
#   Select Sreth_No Into :Invh_Rev_No 
#       From T_Sret_Head
#       Where Sreth_Id = V_Srth_Id;
#   Show_Message('INV_ALERT', 'Reverse Transaction Completed. Doc No : '||:Invh_Rev_Loc_Code||'/'||:Invh_Rev_Txn||'/'||:Invh_Rev_No);
#   reason: they are dropped with it: its query narrows on V_SRTH_ID, which this body declares as a local: a formal becomes an :ARG bind and a page value becomes a param, and a local is neither

7 clauses converted, 4 statements refused

24. fmb_invoiceon unit GET_PRATEgreen-waste
What you havePROGRAM-UNIT
PROCEDURE GET_PRATE IS
  v_Count Number;
  v_Rate_BU  Number;
  v_Qty_BU   Number;
  v_FOC_BU   Number;
  v_Net_Rate_BU Number;
  v_Max_Loose Number;
  v_Cost_Method Varchar2(10);
  v_Cost     Number(15,6);
  
BEGIN
  --Commented By Shibu.
/*
--  SELECT GRI_Avg_Rate/UOM_Max_Loose INTO v_Rate_BU 
  SELECT (GRI_Rate-Nvl(GRI_Rate*GRI_Disc_Perc/100,0)-Nvl(GRI_Disc_Amt,0))/UOM_Max_Loose, Nvl(GRI_Qty*UOM_Max_Loose,0)+Nvl(GRI_Loose,0), Nvl(GRI_FOC_Qty*UOM_Max_Loose,0)+Nvl(GRI_FOC_Loose,0) 
  INTO v_Rate_BU, v_Qty_BU, v_FOC_BU
  FROM M_UOM, T_GR_Item, M_Stock_Company
  WHERE UOM_Code (+) = GRI_UOM_Code
  AND GRI_Id (+) = StkC_GRI_Id
  AND StkC_Comp_Code = :Global.Company
  AND StkC_Item_Code=:InvI_Item_Code;

  If v_Rate_BU > 0 AND Nvl(v_Qty_BU,0)+Nvl(v_FOC_BU,0) > 0 Then
    v_Net_Rate_BU := (v_Rate_BU*v_Qty_BU)/(Nvl(v_Qty_BU,0)+Nvl(v_FOC_BU,0));
    :InvI_Rate := v_Net_Rate_BU*:Max_Loose;
  Else
    SELECT Avg(ItemPRate_PRate/UOM_Max_Loose) INTO v_Rate_BU 
    FROM M_UOM, M_Item_PRate 
    WHERE UOM_Code = ItemPRate_UOM_Code
    AND ItemPRate_Item_Code=:InvI_Item_Code;
    :InvI_Rate := v_Rate_BU * :Max_Loose;
  End If;

  */
   V_Cost_Method := Fn_Get_Company_Param(:Global.Company, 'COM_COST_VALUATION_METHOD');
   v_Qty_bu := Nvl(:InvI_Qty * Nvl(:Max_Loose, 0), 0) + Nvl(:InvI_Loose, 0) + Nvl(:InvI_Foc_Qty * Nvl(:Max_Loose, 0), 0) + Nvl(:InvI_Foc_Loose, 0);
   If Nvl(v_Qty_Bu,0) =0 Then
       v_Qty_Bu :=1;
   End If;    
   Proc_get_fifo_cost(:InvI_Item_Code, :Global.Company,:InvH_Divn_Code,'INV-COST',
   :InvH_Dt, Nvl(:Div_Stock_Bu, 1),v_Qty_bu,Null,0,v_Cost);
  
   If Nvl(v_Cost,0) = 0 Then 
     v_Cost := Fn_Get_Cost_V1(:InvI_Item_Code, :Global.Company,:InvH_Divn_Code, :InvH_Dt, Nvl(:Frm_Cost_Method, V_Cost_Method), Nvl(:Div_Stock_Bu, 1));
   End If;   
   
   If Nvl(v_Cost,0) >0 Then
    :InvI_Rate := Round(v_Cost * :Max_loose,Nvl(:Frm_Decimal,2));
  Else
    :Invi_Rate :=0;
  End If;

Exception
  When Others Then :InvI_Rate := 0;
End;
  
What you getClause Rule Language
on unit GET_PRATE:
# 1 statement did not convert.#   PROCEDURE GET_PRATE IS
#     v_Count Number;
#     v_Rate_BU  Number;
#     v_Qty_BU   Number;
#     v_FOC_BU   Number;
#     v_Net_Rate_BU Number;
#     v_Max_Loose Number;
#     v_Cost_Method Varchar2(10);
#     v_Cost     Number(15,6);
#     
#   BEGIN
#     --Commented By Shibu.
#   /*
#   --  SELECT GRI_Avg_Rate/UOM_Max_Loose INTO v_Rate_BU 
#     SELECT (GRI_Rate-Nvl(GRI_Rate*GRI_Disc_Perc/100,0)-Nvl(GRI_Disc_Amt,0))/UOM_Max_Loose, Nvl(GRI_Qty*UOM_Max_Loose,0)+Nvl(GRI_Loose,0), Nvl(GRI_FOC_Qty*UOM_Max_Loose,0)+Nvl(GRI_FOC_Loose,0) 
#     INTO v_Rate_BU, v_Qty_BU, v_FOC_BU
#     FROM M_UOM, T_GR_Item, M_Stock_Company
#     WHERE UOM_Code (+) = GRI_UOM_Code
#     AND GRI_Id (+) = StkC_GRI_Id
#     AND StkC_Comp_Code = :Global.Company
#     AND StkC_Item_Code=:InvI_Item_Code;
#   
#     If v_Rate_BU > 0 AND Nvl(v_Qty_BU,0)+Nvl(v_FOC_BU,0) > 0 Then
#       v_Net_Rate_BU := (v_Rate_BU*v_Qty_BU)/(Nvl(v_Qty_BU,0)+Nvl(v_FOC_BU,0));
#       :InvI_Rate := v_Net_Rate_BU*:Max_Loose;
#     Else
#       SELECT Avg(ItemPRate_PRate/UOM_Max_Loose) INTO v_Rate_BU 
#       FROM M_UOM, M_Item_PRate 
#       WHERE UOM_Code = ItemPRate_UOM_Code
#       AND ItemPRate_Item_Code=:InvI_Item_Code;
#       :InvI_Rate := v_Rate_BU * :Max_Loose;
#     End If;
#   
#     */
#      V_Cost_Method := Fn_Get_Company_Param(:Global.Company, 'COM_COST_VALUATION_METHOD');
#      v_Qty_bu := Nvl(:InvI_Qty * Nvl(:Max_Loose, 0), 0) + Nvl(:InvI_Loose, 0) + Nvl(:InvI_Foc_Qty * Nvl(:Max_Loose, 0), 0) + Nvl(:InvI_Foc_Loose, 0);
#      If Nvl(v_Qty_Bu,0) =0 Then
#          v_Qty_Bu :=1;
#      End If;    
#      Proc_get_fifo_cost(:InvI_Item_Code, :Global.Company,:InvH_Divn_Code,'INV-COST',
#      :InvH_Dt, Nvl(:Div_Stock_Bu, 1),v_Qty_bu,Null,0,v_Cost);
#     
#      If Nvl(v_Cost,0) = 0 Then 
#        v_Cost := Fn_Get_Cost_V1(:InvI_Item_Code, :Global.Company,:InvH_Divn_Code, :InvH_Dt, Nvl(:Frm_Cost_Method, V_Cost_Method), Nvl(:Div_Stock_Bu, 1));
#      End If;   
#      
#      If Nvl(v_Cost,0) >0 Then
#       :InvI_Rate := Round(v_Cost * :Max_loose,Nvl(:Frm_Decimal,2));
#     Else
#       :Invi_Rate :=0;
#     End If;
#   
#   Exception
#     When Others Then :InvI_Rate := 0;
#   End;
#   reason: it handles OTHERS and recovers, writing a value or showing a message on the error path, so the statements above it do not mean what they would mean without it: CRL has no clause that runs when a statement fails

0 clauses converted, 1 statement refused

25. fmb_invoiceon unit DISABLE_DETAILSgreen-waste
What you havePROGRAM-UNIT
PROCEDURE disable_details IS
BEGIN
    Set_Block_Property('T_Inv_ITem', Delete_Allowed, Property_False);
    
    If Get_Item_Property('InvI_Item_Code', Enabled) = 'TRUE' Then 
     Set_Item_Property('InvI_Item_Code', Insert_Allowed, Property_False);
     Set_Item_Property('InvI_Item_Code', Update_Allowed, Property_False); 
     Set_Item_Property('InvI_Item_Code',VISUAL_ATTRIBUTE ,'DISABLE_VA'); --Added on 20/6/2019,DISABLE_VA in all places, Shebin
    End If;
    
    If Get_Item_Property('InvI_Uom_Code', Enabled) = 'TRUE' Then 
      Set_Item_Property('InvI_Uom_Code', Insert_Allowed, Property_False);
      Set_Item_Property('InvI_Uom_Code', Update_Allowed, Property_False); 
      Set_Item_Property('InvI_Uom_Code',VISUAL_ATTRIBUTE ,'DISABLE_VA');
    End If;
    
    If Get_Item_Property('InvI_Qty', Enabled) = 'TRUE' Then 
      Set_Item_Property('InvI_Qty', Insert_Allowed, Property_False);
      Set_Item_Property('InvI_Qty', Update_Allowed, Property_False);
      Set_Item_Property('InvI_Qty',VISUAL_ATTRIBUTE ,'DISABLE_VA');
    End If;
    
    If Get_Item_Property('InvI_Loose', Enabled) = 'TRUE' Then 
     Set_Item_Property('InvI_Loose', Insert_Allowed, Property_False);
     Set_Item_Property('InvI_Loose', Update_Allowed, Property_False);
     Set_Item_Property('InvI_Loose',VISUAL_ATTRIBUTE ,'DISABLE_VA');
    End If;
        
    If Get_Item_Property('InvI_Rate', Enabled) = 'TRUE' Then 
      Set_Item_Property('InvI_Rate', Insert_Allowed, Property_False);
      Set_Item_Property('InvI_Rate', Update_Allowed, Property_False);
      Set_Item_Property('InvI_Loose',VISUAL_ATTRIBUTE ,'DISABLE_VA');
    End If;
    
    If Get_Item_Property('InvI_Disc_Perc', Enabled) = 'TRUE'  Then     
      Set_Item_Property('InvI_Disc_Perc', Insert_Allowed, Property_False);
      Set_Item_Property('InvI_Disc_Perc', Update_Allowed, Property_False);
      Set_Item_Property('InvI_Disc_Perc',VISUAL_ATTRIBUTE ,'DISABLE_VA');
    End If;
    
    If Get_Item_Property('InvI_Disc_Amt', Enabled) = 'TRUE'  Then 
      Set_Item_Property('InvI_Disc_Amt', Insert_Allowed, Property_False);
      Set_Item_Property('InvI_Disc_Amt', Update_Allowed, Property_False);
      Set_Item_Property('InvI_Disc_Amt',VISUAL_ATTRIBUTE ,'DISABLE_VA');
    End If;
    
    If Get_Item_Property('InvI_Foc_Qty', Enabled) = 'TRUE'  Then
      Set_Item_Property('InvI_Foc_Qty', Insert_Allowed, Property_False);
      Set_Item_Property('InvI_Foc_Qty', Update_Allowed, Property_False); 
    --  Set_Item_Property('InvI_Foc_Qty',VISUAL_ATTRIBUTE ,'DISABLE_VA'); ---commented on 15/2/2021, #59957
    End If;
    
    If Get_Item_Property('InvI_Foc_Loose', Enabled) = 'TRUE'  Then  
      Set_Item_Property('InvI_Foc_Loose', Insert_Allowed, Property_False);
      Set_Item_Property('InvI_Foc_Loose', Update_Allowed, Property_False);      
    ---  Set_Item_Property('InvI_Foc_Loose',VISUAL_ATTRIBUTE ,'DISABLE_VA');---commented on 15/2/2021, #59957
    End If;
      
END;
What you getClause Rule Language
on unit DISABLE_DETAILS:    state lock T_INV_ITEM on delete    state lock INVI_ITEM_CODE on insert, update when enabled of INVI_ITEM_CODE    state lock INVI_UOM_CODE on insert, update when enabled of INVI_UOM_CODE    state lock INVI_QTY on insert, update when enabled of INVI_QTY    state lock INVI_LOOSE on insert, update when enabled of INVI_LOOSE    state lock INVI_RATE on insert, update when enabled of INVI_RATE    state lock INVI_DISC_PERC on insert, update when enabled of INVI_DISC_PERC    state lock INVI_DISC_AMT on insert, update when enabled of INVI_DISC_AMT    state lock INVI_FOC_QTY on insert, update when enabled of INVI_FOC_QTY    state lock INVI_FOC_LOOSE on insert, update when enabled of INVI_FOC_LOOSE
# 1 statement did not convert.#   line 32
#   Set_Item_Property('InvI_Loose',VISUAL_ATTRIBUTE ,'DISABLE_VA');
#   reason: the state effect is nine properties over twelve verbs, and VISUAL_ATTRIBUTE is none of them, so it is refused rather than folded into a verb it does not mean

10 clauses converted, 1 statement refused

26. fmb_invoiceWHEN-VALIDATE-ITEM on T_INV_ITEM.INVI_RATEgreen-waste
What you haveWHEN-VALIDATE-ITEM
Declare
  v_Flag Number;
  v_Rate Number := (:Invi_Rate - Nvl(:Invi_Rate * Nvl(:Invi_Disc_Perc,0) / 100, 0) - Nvl(:Invi_Disc_Amt, 0))*Nvl(:InvH_Curr_Rate, 1);
  v_Ref               VarChar2(4);
  v_Qty_bu    Number;
Begin  
   v_Qty_bu := Nvl(:InvI_Qty * Nvl(:Max_Loose, 0), 0) + Nvl(:InvI_Loose, 0) + Nvl(:InvI_Foc_Qty * Nvl(:Max_Loose, 0), 0) + Nvl(:InvI_Foc_Loose, 0);
   If Nvl(v_Qty_Bu,0) =0 Then
      v_Qty_Bu :=1;
   End If;    

   If :Item_Type <> 'SRV' Then  
     If Nvl(:Frm_Cost_Price_Billing, 'N') = 'Y' AND  (:InvI_PLU_Code NOT LIKE :Frm_Weigh_Bcode_Prefix||'%' and :Frm_Weigh_Bcode_Prefix is Not Null)  Then 
        Get_Prate;
     ElsIf (:InvI_PLU_Code LIKE :Frm_Weigh_Bcode_Prefix||'%' and :Frm_Weigh_Bcode_Prefix is Not Null) 
     And NVL (:Invi_Item_Code, ' ')  LIKE :Frm_Weigh_Item_Prefix || '%' 
      and :Frm_Weigh_Item_Prefix IS NOT Null  Then    

         v_Ref := SubStr(:InvI_PLU_Code, 3, 4);
        v_Rate := SubStr(:InvI_PLU_Code, 7, 6)/100;
        
     Else
       --By 
     If  Nvl(:Frm_En_Add_Disc,'N') ='Y' Then
       Proc_Get_CustItem_Disc(:Global.Company,:InvI_Item_Code,:InvH_Cust_Code,:Inv_Additional_Disc);
     End If;
     If :Inv_Additional_Disc > 0 Then
         :Invi_Disc_Amt := Round((:InvI_Rate * :Inv_Additional_Disc/100),Nvl(:Frm_Decimal,2));
     End If;

     Proc_Validate_Srate1(:Global.Company, :Invh_Divn_Code,:Invi_Item_Code, :Invi_Uom_Code, v_Rate, :InvH_Dt,v_Qty_Bu, v_Flag);
   End If;
     Proc_Validate_Srate1(:Global.Company, :Invh_Divn_Code,:Invi_Item_Code, :Invi_Uom_Code, v_Rate, :InvH_Dt,v_Qty_Bu, v_Flag);
     If Nvl(:Item_Group,'N') = 'N' And Nvl(:InvI_Prom_Item_Id, 0) = 0 Then
       If v_Flag = 0 Then
          If Nvl(:Frm_Loc_Validate_Cost,'N') = 'Y' Then
            Show_Message('Inv_Alert', 'Rate below Cost!');
            Raise Form_Trigger_Failure;
          Elsif Nvl(:Frm_Loc_Validate_Cost,'N') = 'N' Then
             Show_Message('Inv_Alert', 'Rate below Cost!');
          --End If;          
       ElsIf v_Flag =1 Then
          Show_Message('Inv_Alert', 'Cost details not available for this item!');
          End If;
       End If;
     End If;
     
     If :InvI_Rate < 0 Then
        Show_Message('Inv_Alert', 'Rate cannot be negative!');
        Raise Form_Trigger_Failure;
     ElsIf :InvI_Rate = 0 Then
        Show_Message('Inv_Alert', 'Rate cannot be zero!');
        Raise Form_Trigger_Failure;
     End If;
  End If;

  Proc_show_margin;       


   
End;
What you getClause Rule Language
on change of INVI_RATE:    call PROC_VALIDATE_SRATE1(GLOBAL.COMPANY, INVH_DIVN_CODE, INVI_ITEM_CODE, INVI_UOM_CODE, null, INVH_DT, null, null) when ITEM_TYPE <> 'SRV'    deny when (((ITEM_TYPE <> 'SRV') and ((nvl(ITEM_GROUP, 'N') = 'N') and (nvl(INVI_PROM_ITEM_ID, 0) = 0))) and (OUT.PROC_VALIDATE_SRATE1.8 = 0)) and (FRM_LOC_VALIDATE_COST = 'Y') else "Rate below Cost!"    warn "Rate below Cost!" when ((((ITEM_TYPE <> 'SRV') and ((nvl(ITEM_GROUP, 'N') = 'N') and (nvl(INVI_PROM_ITEM_ID, 0) = 0))) and (OUT.PROC_VALIDATE_SRATE1.8 = 0)) and not (FRM_LOC_VALIDATE_COST = 'Y')) and (nvl(FRM_LOC_VALIDATE_COST, 'N') = 'N')    warn "Cost details not available for this item!" when (((((ITEM_TYPE <> 'SRV') and ((nvl(ITEM_GROUP, 'N') = 'N') and (nvl(INVI_PROM_ITEM_ID, 0) = 0))) and (OUT.PROC_VALIDATE_SRATE1.8 = 0)) and not (FRM_LOC_VALIDATE_COST = 'Y')) and not (nvl(FRM_LOC_VALIDATE_COST, 'N') = 'N')) and (OUT.PROC_VALIDATE_SRATE1.8 = 1)    deny when (ITEM_TYPE <> 'SRV') and (INVI_RATE < 0) else "Rate cannot be negative!"    deny when ((ITEM_TYPE <> 'SRV') and not (INVI_RATE < 0)) and (INVI_RATE = 0) else "Rate cannot be zero!"    call PROC_SHOW_MARGIN()
# 1 statement did not convert.#   line 13
#   If Nvl(:Frm_Cost_Price_Billing, 'N') = 'Y' AND  (:InvI_PLU_Code NOT LIKE :Frm_Weigh_Bcode_Prefix||'%' and :Frm_Weigh_Bcode_Prefix is Not Null) Then
#     Get_Prate;
#   Else
#     If (:InvI_PLU_Code LIKE :Frm_Weigh_Bcode_Prefix||'%' and :Frm_Weigh_Bcode_Prefix is Not Null) 
#        And NVL (:Invi_Item_Code, ' ')  LIKE :Frm_Weigh_Item_Prefix || '%' 
#         and :Frm_Weigh_Item_Prefix IS NOT Null Then
#       v_Ref := SubStr(:InvI_PLU_Code, 3, 4);
#       v_Rate := SubStr(:InvI_PLU_Code, 7, 6)/100;
#     Else
#       If Nvl(:Frm_En_Add_Disc,'N') ='Y' Then
#         Proc_Get_CustItem_Disc(:Global.Company,:InvI_Item_Code,:InvH_Cust_Code,:Inv_Additional_Disc);
#       End If;
#       If :Inv_Additional_Disc > 0 Then
#         :Invi_Disc_Amt := Round((:InvI_Rate * :Inv_Additional_Disc/100),Nvl(:Frm_Decimal,2));
#       End If;
#       Proc_Validate_Srate1(:Global.Company, :Invh_Divn_Code,:Invi_Item_Code, :Invi_Uom_Code, v_Rate, :InvH_Dt,v_Qty_Bu, v_Flag);
#     End If;
#   End If;
#   reason: this NOT LIKE reads a subject that can be null: Oracle answers unknown there and fires neither branch, while CRL's not is PL/SQL's Else and fires on unknown, so the two readings differ on exactly the input the Nvl the other twelve corpus sites write was put there to avoid

7 clauses converted, 1 statement refused

27. fmb_invoiceWHEN-VALIDATE-ITEM on T_INV_REF_DOC.REF_NOgreen-waste
What you haveWHEN-VALIDATE-ITEM
Declare
  v_txn_Type Varchar2(10);
Begin
  If :Ref_No is Not Null And :System.Mode <> 'QUERY' Then
    :Parameter.Tndr_Flag := 'X';      --- 'X' = Not a Tender Txn   'N' =Tender Is Enabled, 'Y' = Load Button Pressed  Added by mojish 11/04/14
    Select Txn_Type INTO v_Txn_Type From M_Stock_Txn Where Txn_Code =:InvH_Ref_Txn_Code;
    If v_Txn_Type ='DNOTE' Then
      SELECT DNH_Id, DNH_SMan_Code INTO :InvrD_Dnh_Id,:Ref_Sman_Code
      FROM T_DN_Head
      WHERE DNH_Comp_Code = :Global.Company
      AND DNH_Loc_Code = :Ref_Loc_Code          -- Modified by Mojish 27/03/14
      AND DnH_Txn_Code =:InvH_Ref_Txn_Code
      AND DNH_Cust_Code = :InvH_Cust_Code
      AND DnH_No =:Ref_No;
    Elsif v_Txn_Type ='SAL_ORD' Then
      SELECT SoH_Id, SoH_SMan_Code INTO :InvrD_SoH_Id,:Ref_Sman_Code
      FROM T_So_Head
      WHERE SoH_Comp_Code = :Global.Company
      AND SoH_Loc_Code = :Ref_Loc_Code          -- Modified by Mojish 27/03/14
      AND SoH_Txn_Code =:InvH_Ref_Txn_Code
      AND SoH_Cust_Code = :InvH_Cust_Code
      AND SoH_No =:Ref_No;
    Elsif v_Txn_Type = 'TNDR' Then  -- Added by Mojish 03/04/14
      If Nvl(Fn_Get_Stk_Txn_Param(:InvH_Txn_Code,:Global.Company, 'INV_EN_TENDER_REF'), 'F') = 'N' Then
        Select Max(TndrH_Id) Into :InvrD_Tndr_Id
        From M_Uom, M_Item, T_Tndr_Item, T_Tndr_Cust_Item, T_Tndr_Head
        Where TndrC_TndrH_Id = TndrH_Id And  TndrI_TndrC_Id = TndrC_Id
          And Item_Code = TndrI_Item_Code And Uom_Code = TndrI_Uom_Code
          And Nvl(TndrC_Inv_Qty_Bu, 0) < Nvl(TndrC_qty * Uom_Max_Loose, 0) + Nvl(TndrC_Loose, 0)
          And TndrH_Comp_Code = :Global.Company And TndrH_Cust_Code = :InvH_Cust_Code
          And TndrH_Loc_Code = :Ref_Loc_Code
          And Nvl(TndrH_Status,'N') <> 'C'            --Modified by Dipu on 19/07/14
          And Nvl(Tndrh_Approval_Status,'P')='F'      --Added by Dipu on 19/07/14
          And Nvl(TndrH_Extended_Upto, TndrH_Valid_To) >= :InvH_Dt 
          And TndrH_Valid_Fm <= :InvH_Dt And TndrH_Txn_Code = :InvH_Ref_Txn_Code
          And TndrH_No = :Ref_No;
        
        If nvl(:InvrD_Tndr_Id, 0) = 0  Then
          Show_Message('Inv_Alert', 'Invalid Tender!');
          Raise Form_Trigger_Failure;
        End If;
        :Parameter.Tndr_Flag := 'N';      --- 'N' =Tender Is Enabled, 'Y' = Load Button Pressed  Added by mojish 11/04/14
      Else
         Show_Message('Inv_Alert', 'Tender is not enabled!');
      End If;
    ElsIf v_Txn_Type = 'CUST_SERV' Then
      SELECT CSH_Id  Into :InvRD_CsH_Id 
      FROM T_Cust_Service_Head
      WHERE CSH_Comp_Code = :Global.Company
      AND CSH_Loc_Code =:Invh_Loc_Code
      AND CSH_Cust_Code = :InvH_Cust_Code
      AND CSH_Txn_Code = :InvH_Ref_Txn_Code
      AND CSH_No = :Ref_No 
      AND Nvl(CSH_Load_Status,'N') = 'N';
    Else
      SELECT PreqH_Id INTO :InvrD_Preqh_Id
      FROM T_Preq_Head
      WHERE PreqH_Comp_Code = :Global.Company
      AND PreqH_Loc_Code = :Ref_Loc_Code          -- Modified by Mojish 27/03/14
      AND PreqH_Txn_Code =:Invh_Ref_Txn_Code
      AND PreqH_No =:Ref_No;
    End If;
  End If;
End;
What you getClause Rule Language
on change of REF_NO:    from STOCK_TXN(INVH_REF_TXN_CODE) when is_filled(REF_NO) and (SYSTEM.MODE <> 'QUERY')
        # load-fmb-invoice-t-inv-ref-doc-ref-no-change-0    from DN_HEAD(INVH_CUST_CODE, INVH_REF_TXN_CODE, REF_LOC_CODE, REF_NO) when (is_filled(REF_NO) and (SYSTEM.MODE <> 'QUERY')) and (STOCK_TXN.TXN_TYPE = 'DNOTE')
        # load-fmb-invoice-t-inv-ref-doc-ref-no-change-1    from SO_HEAD(INVH_CUST_CODE, INVH_REF_TXN_CODE, REF_LOC_CODE, REF_NO) when ((is_filled(REF_NO) and (SYSTEM.MODE <> 'QUERY')) and not (STOCK_TXN.TXN_TYPE = 'DNOTE')) and (STOCK_TXN.TXN_TYPE = 'SAL_ORD')
        # load-fmb-invoice-t-inv-ref-doc-ref-no-change-2    from UOM(INVH_CUST_CODE, INVH_DT, INVH_REF_TXN_CODE, REF_LOC_CODE, REF_NO) when ((((is_filled(REF_NO) and (SYSTEM.MODE <> 'QUERY')) and not (STOCK_TXN.TXN_TYPE = 'DNOTE')) and not (STOCK_TXN.TXN_TYPE = 'SAL_ORD')) and (STOCK_TXN.TXN_TYPE = 'TNDR')) and (FN_GET_STK_TXN_PARAM(INVH_TXN_CODE, GLOBAL.COMPANY, 'INV_EN_TENDER_REF') = 'N')
        # load-fmb-invoice-t-inv-ref-doc-ref-no-change-3    from CUST_SERVICE_HEAD(INVH_CUST_CODE, INVH_LOC_CODE, INVH_REF_TXN_CODE, REF_NO) when ((((is_filled(REF_NO) and (SYSTEM.MODE <> 'QUERY')) and not (STOCK_TXN.TXN_TYPE = 'DNOTE')) and not (STOCK_TXN.TXN_TYPE = 'SAL_ORD')) and not (STOCK_TXN.TXN_TYPE = 'TNDR')) and (STOCK_TXN.TXN_TYPE = 'CUST_SERV')
        # load-fmb-invoice-t-inv-ref-doc-ref-no-change-4    from PREQ_HEAD(INVH_REF_TXN_CODE, REF_LOC_CODE, REF_NO) when ((((is_filled(REF_NO) and (SYSTEM.MODE <> 'QUERY')) and not (STOCK_TXN.TXN_TYPE = 'DNOTE')) and not (STOCK_TXN.TXN_TYPE = 'SAL_ORD')) and not (STOCK_TXN.TXN_TYPE = 'TNDR')) and not (STOCK_TXN.TXN_TYPE = 'CUST_SERV')
        # load-fmb-invoice-t-inv-ref-doc-ref-no-change-5    set INVRD_DNH_ID to DN_HEAD.DNH_ID when (is_filled(REF_NO) and (SYSTEM.MODE <> 'QUERY')) and (STOCK_TXN.TXN_TYPE = 'DNOTE')    set REF_SMAN_CODE to DN_HEAD.DNH_SMAN_CODE when (is_filled(REF_NO) and (SYSTEM.MODE <> 'QUERY')) and (STOCK_TXN.TXN_TYPE = 'DNOTE')    set INVRD_SOH_ID to SO_HEAD.SOH_ID when ((is_filled(REF_NO) and (SYSTEM.MODE <> 'QUERY')) and not (STOCK_TXN.TXN_TYPE = 'DNOTE')) and (STOCK_TXN.TXN_TYPE = 'SAL_ORD')    set REF_SMAN_CODE to SO_HEAD.SOH_SMAN_CODE when ((is_filled(REF_NO) and (SYSTEM.MODE <> 'QUERY')) and not (STOCK_TXN.TXN_TYPE = 'DNOTE')) and (STOCK_TXN.TXN_TYPE = 'SAL_ORD')    set INVRD_TNDR_ID to UOM.MAX when ((((is_filled(REF_NO) and (SYSTEM.MODE <> 'QUERY')) and not (STOCK_TXN.TXN_TYPE = 'DNOTE')) and not (STOCK_TXN.TXN_TYPE = 'SAL_ORD')) and (STOCK_TXN.TXN_TYPE = 'TNDR')) and (FN_GET_STK_TXN_PARAM(INVH_TXN_CODE, GLOBAL.COMPANY, 'INV_EN_TENDER_REF') = 'N')    deny when (((((is_filled(REF_NO) and (SYSTEM.MODE <> 'QUERY')) and not (STOCK_TXN.TXN_TYPE = 'DNOTE')) and not (STOCK_TXN.TXN_TYPE = 'SAL_ORD')) and (STOCK_TXN.TXN_TYPE = 'TNDR')) and (FN_GET_STK_TXN_PARAM(INVH_TXN_CODE, GLOBAL.COMPANY, 'INV_EN_TENDER_REF') = 'N')) and (nvl(INVRD_TNDR_ID, 0) = 0) else "Invalid Tender!"    warn "Tender is not enabled!" when ((((is_filled(REF_NO) and (SYSTEM.MODE <> 'QUERY')) and not (STOCK_TXN.TXN_TYPE = 'DNOTE')) and not (STOCK_TXN.TXN_TYPE = 'SAL_ORD')) and (STOCK_TXN.TXN_TYPE = 'TNDR')) and not (FN_GET_STK_TXN_PARAM(INVH_TXN_CODE, GLOBAL.COMPANY, 'INV_EN_TENDER_REF') = 'N')    set INVRD_CSH_ID to CUST_SERVICE_HEAD.CSH_ID when ((((is_filled(REF_NO) and (SYSTEM.MODE <> 'QUERY')) and not (STOCK_TXN.TXN_TYPE = 'DNOTE')) and not (STOCK_TXN.TXN_TYPE = 'SAL_ORD')) and not (STOCK_TXN.TXN_TYPE = 'TNDR')) and (STOCK_TXN.TXN_TYPE = 'CUST_SERV')    set INVRD_PREQH_ID to PREQ_HEAD.PREQH_ID when ((((is_filled(REF_NO) and (SYSTEM.MODE <> 'QUERY')) and not (STOCK_TXN.TXN_TYPE = 'DNOTE')) and not (STOCK_TXN.TXN_TYPE = 'SAL_ORD')) and not (STOCK_TXN.TXN_TYPE = 'TNDR')) and not (STOCK_TXN.TXN_TYPE = 'CUST_SERV')
# 2 statements did not convert.#   line 5
#   :Parameter.Tndr_Flag := 'X';
#   reason: set writes a field or a global and there is no third spelling, so a write to a form parameter is refused: item 20 rules a parameter read-only#   line 42
#   :Parameter.Tndr_Flag := 'N';
#   reason: set writes a field or a global and there is no third spelling, so a write to a form parameter is refused: item 20 rules a parameter read-only

9 clauses converted, 2 statements refused

28. fmb_invoicePRE-INSERT on T_INV_HEADgreen-waste
What you havePRE-INSERT
Declare
  v_Count NUmber;
  v_InvLog_Id    NUmber;
  v_Ayr_Dt_Fm  Date := :Global.AYear_Fm;
  v_Ayr_Dt_To  Date := :Global.AYear_To;
Begin
  If Get_Record_Property(1, 'T_Inv_Item', Status) = 'NEW' Then
    Show_Message('Inv_Alert', 'Item Details Not Entered!');
    Raise Form_Trigger_Failure;
  End If;
  
  :Parameter.Insert_Flag := 1; --Added by mojish 24/03/14

  Validate_Invoice;
    
  :InvH_Id := Fn_Get_Next_Id('Inv_Head');
  :InvH_Comp_Code := :Global.Company;

  If Trunc(:InvH_Dt) < Trunc(v_Ayr_Dt_Fm) Then
    :InvH_Ayr_Code :=Fn_Get_Ayr_Code( :Global.Company,'P');
  ElsIf Trunc(:InvH_Dt) > Trunc(v_Ayr_Dt_To) Then
    :InvH_Ayr_Code :=Fn_Get_Ayr_Code( :Global.Company,'N');
  Else
    :InvH_AYr_Code := :Global.Ayear; 
  End If;

  If :Sub_Total > 0 Then---------Added By Faisal On 12/04/2015
    If :Sub_Total - Nvl(:Sub_Total * :InvH_Disc_Perc / 100, 0) - Nvl(:InvH_Disc_Amt, 0) < 0 Then
     Show_Message('Inv_Alert', 'Invoice Nett Amount Cannot Be Negative!');
     Raise Form_Trigger_Failure;
    End If;
  End If;
  

  If Nvl(Fn_Get_Stk_Txn_Param(:InvH_Txn_Code,:Global.Company, 'INV_EN_DT'), 'F') = 'F' Then
      If Trunc(:InvH_Dt) <> Trunc(Sysdate) Then
         Show_Message('Inv_Alert', 'Invoice date is not today date!');
          Raise Form_Trigger_Failure;
      End If;
  End If;
  
  If Fn_Get_Stk_Txn_Param(:InvH_Txn_Code,:Global.Company, 'INV_DOC_NO_GEN') <> 'M' Then
    :InvH_No := Fn_Get_Next_Txn_No(:InvH_Comp_Code, :InvH_Loc_Code, :InvH_Txn_Code, :Frm_Doc_No_Gen);
  End If;

  :InvH_Cr_User := :Global.User;
  :InvH_Cr_Dt := fn_get_zone_date(:Global.Company);
  
  --Invoice Log 
  v_InvLog_Id :=Fn_Get_Next_Id('Inv_Log');
/*
  Insert INTO T_Inv_Log(
  InvLog_Id,           InvLog_Login_Id  ,
   InvLog_InvH_Id,     InvLog_Upd_Flag  ,
  InvLog_Comp_Os_Amt,  InvLog_Comp_Os_Days,
  InvLog_Divn_Os_Amt, InvLog_Divn_Os_Days,
  InvLog_Comp_Limit_Days,  InvLog_Comp_Cr_Limit  ,
  InvLog_Divn_Limit_Days,  InvLog_Divn_Cr_Limit  ,
  InvLog_Temp_Limit,  InvLog_Temp_Limit_Days,
  InvLog_Temp_Dt,      InvLog_Inv_Amt,
  InvLog_DateTime)
  Values
  (v_InvLog_Id,:Global.User,
  :InvH_Id,  Nvl(:Upd_Flag,'U'),
  :Comp_Os, (Round(Fn_Get_Zone_Date(:Global.Company)) - To_Date(:Comp_Os_Min_Dt)),
  :Divn_Os, (Round(Fn_Get_Zone_Date(:Global.Company)) - TO_Date(:Divn_Os_Min_Dt)),
  :Comp_Cr_Days,  :Comp_Cr_Limit,
  :Divn_Cr_Days,  :Divn_Cr_Limit,
  :Temp_Limit,    :Temp_Days,
  :Temp_Exp_Dt,:nett_loc,
  Fn_Get_Zone_Date(:Global.Company)
  );
*/
  
End;
What you getClause Rule Language
on save insert:    deny when status of T_INV_ITEM = 'NEW' else "Item Details Not Entered!"    call VALIDATE_INVOICE()    set INVH_ID to FN_GET_NEXT_ID('Inv_Head')    set INVH_COMP_CODE to GLOBAL.COMPANY    set INVH_AYR_CODE to FN_GET_AYR_CODE(GLOBAL.COMPANY, 'P') when trunc(INVH_DT) < trunc(to_date(GLOBAL.AYEAR_FM))    set INVH_AYR_CODE to FN_GET_AYR_CODE(GLOBAL.COMPANY, 'N') when not (trunc(INVH_DT) < trunc(to_date(GLOBAL.AYEAR_FM))) and (trunc(INVH_DT) > trunc(to_date(GLOBAL.AYEAR_TO)))    set INVH_AYR_CODE to GLOBAL.AYEAR when not (trunc(INVH_DT) < trunc(to_date(GLOBAL.AYEAR_FM))) and not (trunc(INVH_DT) > trunc(to_date(GLOBAL.AYEAR_TO)))    deny when (SUB_TOTAL > 0) and (((SUB_TOTAL - nvl((SUB_TOTAL * INVH_DISC_PERC) / 100, 0)) - nvl(INVH_DISC_AMT, 0)) < 0) else "Invoice Nett Amount Cannot Be Negative!"    deny when (nvl(FN_GET_STK_TXN_PARAM(INVH_TXN_CODE, GLOBAL.COMPANY, 'INV_EN_DT'), 'F') = 'F') and (trunc(INVH_DT) <> trunc(sysdate())) else "Invoice date is not today date!"    set INVH_NO to FN_GET_NEXT_TXN_NO(INVH_COMP_CODE, INVH_LOC_CODE, INVH_TXN_CODE, FRM_DOC_NO_GEN) when FN_GET_STK_TXN_PARAM(INVH_TXN_CODE, GLOBAL.COMPANY, 'INV_DOC_NO_GEN') <> 'M'    set INVH_CR_USER to GLOBAL.USER    set INVH_CR_DT to sysdate()
# 1 statement did not convert.#   line 12
#   :Parameter.Insert_Flag := 1;
#   reason: set writes a field or a global and there is no third spelling, so a write to a form parameter is refused: item 20 rules a parameter read-only

12 clauses converted, 1 statement refused

29. fmb_invoiceon unit TENDER_VALIDATE_ITEM_LEVELgreen-waste
What you havePROGRAM-UNIT
PROCEDURE Tender_Validate_Item_Level IS
  v_Tndr_Qty Number := 0;
  v_Tndr_Loose Number := 0;
  v_Tndr_Inv_Qty_Bu Number := 0;
  v_Tndr_Qty_Bu Number := 0;
  v_Inv_Qty_Bu Number := 0;
  v_Tndr_Validate Varchar2(10);
  v_Count Number;
  v_Row_Num Number := 1;
  v_Ref_Tndr_Id Number(10);
  v_Row_Count Number;
  rg_Id RecordGroup;
BEGIN
  If Nvl(:Parameter.Tndr_Flag, 'X') = 'N' Then            --- 'N' = Tender Is Enabled, 'Y' = Load Button Pressed  Added by mojish 11/04/14
    Show_Message('Inv_Alert', 'Click Button -> Load Checked!');
    Raise Form_Trigger_Failure;     
  End If;
  rg_Id := Find_Group('RG_TNDR'); 
  v_Row_Count := Get_Group_Row_Count(rg_Id);
  If :InvI_Item_Code Is Not Null And Nvl(v_Row_Count, 0) > 0 Then
    If Get_Block_Property('T_Inv_Ref_Doc', Insert_Allowed) = 'TRUE' Then   
      Set_Block_Property('T_Inv_Ref_Doc', Insert_Allowed, Property_False);
      Set_Block_Property('T_Inv_Ref_Doc', Update_Allowed, Property_False);
      Set_Block_Property('T_Inv_Ref_Doc', Delete_Allowed, Property_False);
    End If;
    
    loop
      v_Ref_Tndr_Id := Null;
      v_Ref_Tndr_Id := Get_Group_Number_Cell('RG_TNDR.COL_TNDR', v_Row_Num);
            
      If Nvl(:Flag, 'N') = 'Y' And Nvl(v_Ref_Tndr_Id, 0) > 0 And :InvI_Uom_Code Is Not Null Then
        Select Count(*) Into v_Count From T_Tndr_Cust_Item, T_Tndr_Item
        Where TndrC_Id = TndrI_TndrC_Id And TndrC_Uom_Code = TndrI_Uom_Code 
          And TndrI_Item_Code = :InvI_Item_Code And TndrI_Uom_Code = :InvI_Uom_Code And TndrC_TndrH_Id = v_Ref_Tndr_Id;
          
        If v_Count > 0 Then
          Select TndrC_Id, TndrC_Item_Code, TndrC_Item_Name, TndrC_Qty, TndrC_Loose, TndrC_Rate,(Nvl (Tndrc_Inv_Qty_Bu, 0) + Nvl (Tndrc_Dn_Qty_Bu, 0)) TndrC_Inv_Qty_Bu
          Into :InvI_Tndr_Doc_Item_Id, :InvI_Ref_Item_Code, :InvI_Item_Alt_Name, v_Tndr_Qty, v_Tndr_Loose, :InvI_Rate, v_Tndr_Inv_Qty_Bu
          From T_Tndr_Cust_Item, T_Tndr_Item
          Where TndrC_Id = TndrI_TndrC_Id And TndrC_Uom_Code = TndrI_Uom_Code 
            And TndrI_Item_Code = :InvI_Item_Code And TndrI_Uom_Code = :InvI_Uom_Code And TndrC_TndrH_Id = v_Ref_Tndr_Id;  
          Exit;
        End If;
      End If;
      
      If v_Row_Num = v_Row_Count Then
        Exit;
      End If;
      
      v_Row_Num := v_Row_Num + 1;
    End Loop;   
        
    If Nvl(:InvI_Tndr_Doc_Item_Id, 0) = 0 And Nvl(:InvrD_Tndr_Id, 0) > 0 Then  --Checking Tender Item Code And Uom Code
      Show_Message('Inv_Alert', 'Invalid Tender Item Code/Uom!');
      Raise Form_Trigger_Failure;
    ElsIf Nvl(:InvI_Tndr_Doc_Item_Id, 0) > 0 And Nvl(:InvrD_Tndr_Id, 0) > 0 Then
      v_Inv_Qty_Bu := Nvl(:InvI_Qty * :Max_Loose, 0) + Nvl(:InvI_loose, 0);

      If v_Inv_Qty_Bu > 0 Then
        :InvI_Foc_Qty := 0;
        :InvI_Foc_Loose := 0;
        v_Tndr_Qty_Bu := Nvl(v_Tndr_Qty * :Max_Loose, 0) + Nvl(v_Tndr_Loose, 0);
        
        If v_Inv_Qty_Bu + Nvl(v_Tndr_Inv_Qty_Bu, 0) > v_Tndr_Qty_Bu Then  --Tender Qty Validating
          Show_Message('Inv_Alert', 'Sales Order Qty is exceeded than Tender Qty!');
            Raise Form_Trigger_Failure;
        /*  v_Tndr_Validate := Fn_Get_Cust_Param(:InvH_Cust_Code, :Global.Company, 'CUST_VALIDATE_TENDER');
          
          If Nvl(v_Tndr_Validate, 'Y') = 'Y' Then   -- Blocking Tender Qty
            Raise Form_Trigger_Failure;
          End If;*/
        End If; --Validating Tender Qty
      End If;   --Checking Sales Order Qty > 0
    End If;    --Tender Item is exist or not
  End If;   --Item Code Not Null Checking
Exception When No_Data_Found Then
  Show_Message('Inv_Alert', 'Invalid Tender Item Code/Uom!');
  Raise Form_Trigger_Failure;  
END;
What you getClause Rule Language
on unit TENDER_VALIDATE_ITEM_LEVEL:    deny when PARAMETER.TNDR_FLAG = 'N' else "Click Button -> Load Checked!"
# 2 statements did not convert.#   line 20
#   If :InvI_Item_Code Is Not Null And Nvl(v_Row_Count, 0) > 0 Then
#     If Get_Block_Property('T_Inv_Ref_Doc', Insert_Allowed) = 'TRUE' Then
#       Set_Block_Property('T_Inv_Ref_Doc', Insert_Allowed, Property_False);
#       Set_Block_Property('T_Inv_Ref_Doc', Update_Allowed, Property_False);
#       Set_Block_Property('T_Inv_Ref_Doc', Delete_Allowed, Property_False);
#     End If;
#     loop
#         v_Ref_Tndr_Id := Null;
#         v_Ref_Tndr_Id := Get_Group_Number_Cell('RG_TNDR.COL_TNDR', v_Row_Num);
#               
#         If Nvl(:Flag, 'N') = 'Y' And Nvl(v_Ref_Tndr_Id, 0) > 0 And :InvI_Uom_Code Is Not Null Then
#           Select Count(*) Into v_Count From T_Tndr_Cust_Item, T_Tndr_Item
#           Where TndrC_Id = TndrI_TndrC_Id And TndrC_Uom_Code = TndrI_Uom_Code 
#             And TndrI_Item_Code = :InvI_Item_Code And TndrI_Uom_Code = :InvI_Uom_Code And TndrC_TndrH_Id = v_Ref_Tndr_Id;
#             
#           If v_Count > 0 Then
#             Select TndrC_Id, TndrC_Item_Code, TndrC_Item_Name, TndrC_Qty, TndrC_Loose, TndrC_Rate,(Nvl (Tndrc_Inv_Qty_Bu, 0) + Nvl (Tndrc_Dn_Qty_Bu, 0)) TndrC_Inv_Qty_Bu
#             Into :InvI_Tndr_Doc_Item_Id, :InvI_Ref_Item_Code, :InvI_Item_Alt_Name, v_Tndr_Qty, v_Tndr_Loose, :InvI_Rate, v_Tndr_Inv_Qty_Bu
#             From T_Tndr_Cust_Item, T_Tndr_Item
#             Where TndrC_Id = TndrI_TndrC_Id And TndrC_Uom_Code = TndrI_Uom_Code 
#               And TndrI_Item_Code = :InvI_Item_Code And TndrI_Uom_Code = :InvI_Uom_Code And TndrC_TndrH_Id = v_Ref_Tndr_Id;  
#             Exit;
#           End If;
#         End If;
#         
#         If v_Row_Num = v_Row_Count Then
#           Exit;
#         End If;
#         
#         v_Row_Num := v_Row_Num + 1;
#       End Loop;
#     If Nvl(:InvI_Tndr_Doc_Item_Id, 0) = 0 And Nvl(:InvrD_Tndr_Id, 0) > 0 Then
#       Show_Message('Inv_Alert', 'Invalid Tender Item Code/Uom!');
#       Raise Form_Trigger_Failure;
#     Else
#       If Nvl(:InvI_Tndr_Doc_Item_Id, 0) > 0 And Nvl(:InvrD_Tndr_Id, 0) > 0 Then
#         v_Inv_Qty_Bu := Nvl(:InvI_Qty * :Max_Loose, 0) + Nvl(:InvI_loose, 0);
#         If v_Inv_Qty_Bu > 0 Then
#           :InvI_Foc_Qty := 0;
#           :InvI_Foc_Loose := 0;
#           v_Tndr_Qty_Bu := Nvl(v_Tndr_Qty * :Max_Loose, 0) + Nvl(v_Tndr_Loose, 0);
#           If v_Inv_Qty_Bu + Nvl(v_Tndr_Inv_Qty_Bu, 0) > v_Tndr_Qty_Bu Then
#             Show_Message('Inv_Alert', 'Sales Order Qty is exceeded than Tender Qty!');
#             Raise Form_Trigger_Failure;
#           End If;
#         End If;
#       End If;
#     End If;
#   End If;
#   reason: the guard reads the local V_ROW_COUNT, which is written from something CRL has no expression for: a Forms built-in, a database call or a shape the reader refuses#   line 76
#   Exception When No_Data_Found Then
#     Show_Message('Inv_Alert', 'Invalid Tender Item Code/Uom!');
#     Raise Form_Trigger_Failure;
#   reason: it handles NO_DATA_FOUND and re-raises, and CRL has no clause that runs when a statement fails: the error path ends the program either way, so the statements above it convert and the handler does not

1 clause converted, 2 statements refused

30. fmb_invoiceon unit GET_STOCKgreen-waste
What you havePROGRAM-UNIT
PROCEDURE GET_STOCK (Stk_Col_Name IN VarChar2, Stk_Dtl_Col_Name IN VarChar2, Comp_Code IN VarChar2, Loc_Code IN VarChar2, Item_Code IN VarChar2, Max_Loose IN Number, Stk_Chk_Type IN VarChar2) IS
  v_Count Number;
  v_Stock Number;
  v_Resv  Number;
  v_Stock_Dtl VarChar2(100);
BEGIN
  If Loc_Code Is Null Then
    --Show complete direct location stock
    SELECT Sum(Nvl(Stk_UnConf_Qty, 0))
    INTO v_Stock
    FROM M_Stock, M_Location
    WHERE Loc_comp_Code = Stk_Comp_Code
    AND Loc_Code = Stk_Loc_Code
    AND Stk_Comp_Code = Comp_Code
    AND Stk_Item_Code = Item_Code
    AND Loc_SMan_Code Is Null
    AND Loc_Stock_Fm Is Null;
      --Show Reserv stock
    SELECT count(*) 
    INTO v_count
    FROM M_Stock_Resv, M_Location
    WHERE Loc_comp_Code = Stkr_Comp_Code
    AND Loc_Code = Stkr_Loc_Code
    AND Stkr_Comp_Code = Comp_Code
    AND Stkr_Item_Code = Item_Code
    AND Loc_SMan_Code Is Null
    AND Loc_Stock_Fm Is Null;
    If v_Count >0 Then  
      SELECT Sum(Nvl(StkR_Qty, 0))
      INTO v_Resv
      FROM M_Stock_Resv, M_Location
      WHERE Loc_comp_Code = Stkr_Comp_Code
      AND Loc_Code = Stkr_Loc_Code
      AND Stkr_Comp_Code = Comp_Code
      AND Stkr_Item_Code = Item_Code
      AND Loc_SMan_Code Is Null
      AND Loc_Stock_Fm Is Null;
    End If;
    
  Else
    SELECT Count(*) INTO v_Count
    FROM M_Stock
    WHERE Stk_Comp_Code = Comp_Code
    AND Stk_Loc_Code = Loc_Code
    AND Stk_Item_Code = Item_Code;
    If v_Count = 1 Then
      SELECT Nvl(Stk_UnConf_Qty, 0) + Decode(Nvl(:Frm_Loc_En_Uncosted_Stk,'N'),'N',0,Nvl(Stk_Uncosted_Qty,0)) INTO v_Stock
      FROM M_Stock
      WHERE Stk_Comp_Code(+) = Comp_Code
      AND Stk_Loc_Code (+) = Loc_Code
      AND Stk_Item_Code (+) = Item_Code;
    End If;
    --Reserv stock
    /*SELECT Count(*) INTO v_Count                     --Commented By Mojish on 16/08/14
    FROM M_Stock_Resv
    WHERE Stkr_Comp_Code = Comp_Code
    AND Stkr_Loc_Code = Loc_Code
    AND Stkr_Item_Code = Item_Code;*/
    --If v_Count = 1 Then
      SELECT Nvl(Sum(Stkr_Qty), 0) INTO v_Resv         --Modified By Mojish on 16/08/14
      FROM M_Stock_Resv
      WHERE Stkr_Comp_Code(+) = Comp_Code
      AND Stkr_Loc_Code (+) = Loc_Code
      AND Stkr_Item_Code (+) = Item_Code;
    --End If;
 
  End If;
  

  If Nvl(v_Resv, 0) > 0 Then
    v_Stock_Dtl := Fn_Get_Carton(Nvl(v_Stock -Nvl(v_Resv,0), 0), Max_Loose) || '[Aft Rsvd: ' || Fn_Get_Carton(v_Resv, Max_Loose) || ']';
  Else
    v_Stock_Dtl := Fn_Get_Carton(v_Stock, Max_Loose);
  End If;

  Copy (v_Stock_Dtl, Stk_Dtl_Col_Name);
  Copy (v_Stock -Nvl(v_Resv,0), Stk_Col_Name);
END;

 
What you getClause Rule Language
on unit GET_STOCK(STK_COL_NAME, STK_DTL_COL_NAME, COMP_CODE, LOC_CODE, ITEM_CODE, MAX_LOOSE, STK_CHK_TYPE):    from STOCK_SUM(ARG.COMP_CODE, ARG.ITEM_CODE) when is_blank(ARG.LOC_CODE)
        # load-fmb-invoice-get-stock-unit-0    from STOCK_RESV_COUNT(ARG.COMP_CODE, ARG.ITEM_CODE) when is_blank(ARG.LOC_CODE)
        # load-fmb-invoice-get-stock-unit-1    from STOCK_RESV_2(ARG.COMP_CODE, ARG.ITEM_CODE) when is_blank(ARG.LOC_CODE) and (STOCK_RESV_COUNT.COUNT > 0)
        # load-fmb-invoice-get-stock-unit-2    from STOCK_COUNT(ARG.COMP_CODE, ARG.ITEM_CODE, ARG.LOC_CODE) when not is_blank(ARG.LOC_CODE)
        # load-fmb-invoice-get-stock-unit-3    from STOCK(ARG.COMP_CODE, ARG.ITEM_CODE, ARG.LOC_CODE, FRM_LOC_EN_UNCOSTED_STK) when not is_blank(ARG.LOC_CODE) and (STOCK_COUNT.COUNT = 1)
        # load-fmb-invoice-get-stock-unit-4    from STOCK_RESV_5(ARG.COMP_CODE, ARG.ITEM_CODE, ARG.LOC_CODE) when not is_blank(ARG.LOC_CODE)
        # load-fmb-invoice-get-stock-unit-5    set ARG.STK_COL_NAME to STOCK.V_STOCK - nvl(STOCK_RESV_5.SUM, 0)
# 1 statement did not convert.#   line 76
#   Copy (v_Stock_Dtl, Stk_Dtl_Col_Name);
#   reason: Copy writes into the field ARG.STK_DTL_COL_NAME names, and CRL has no expression for V_STOCK_DTL, which is what it would write there

1 clause converted, 1 statement refused

31. fmb_invoiceWHEN-BUTTON-PRESSED on T_INV_HEAD.PB_CANCEL_RELOADgreen-waste
What you haveWHEN-BUTTON-PRESSED
Declare 
 CURSOR CurINV IS
    SELECT INVH_Id, INVH_Loc_Code, INVH_Txn_Code, INVH_No, INVH_SMan_Code, INVH_Cust_Code, INVH_Disc_Perc, 
           INVH_Disc_Amt, DELI_Item_Code Item_Code, Item_Name, DELI_UOM_Code UOM_Code, 
           UOM_Max_Loose Max_Loose, DELI_QTY Qty,
           DELI_LOOSE Loose,
           0 FOC_Qty,
           0 FOC_Loose,
           DELI_Rate Rate, DELI_Disc_Perc Disc_Perc, DELI_DISC_AMT Disc_Amt, NULL Item_Id
    FROM M_UOM, M_Item, T_DELITEM_LOG, T_INV_Head
    WHERE DELI_HEADER_Id = INVH_Id
    AND Item_Code = DELI_Item_Code
    AND UOM_Code = DELI_UOM_Code
    AND INVH_Comp_Code = :Global.Company
    AND INVH_Cust_Code = :InvH_Cust_Code
    AND INVH_Status = 'C'
    AND INVH_Txn_Code = :DEL_REF_TXN_CODE
    AND INVH_Loc_Code = :Del_REF_LOC_CODE
    AND INVH_No = :DEL_Ref_No;
  v_Count        Number;
  v_Loc_Code     VarChar2(10);
  v_Txn_Code     VarChar2(10);
  v_Doc_No       Number;
  v_Txn_Type     VarChar2(10);
  v_Alert        Number := Alert_Button2;
  v_Ref_Doc_Id   Number;
  v_Cust_Code    VarChar2(10);
  v_HDisc_Perc   Number;
  v_HDisc_Amt    Number;
  v_PLU_Code     VarChar2(20);
  v_Item_Code    VarChar2(10);
  v_Item_Name    VarChar2(60);
  v_UOM_Code     VarChar2(10);
  v_Max_Loose    Number;
  v_Qty_BU       Number;
  v_Qty          Number;
  v_Loose        Number;
  v_Rate         Number;
  v_Disc_Perc    Number;
  v_Disc_Amt     Number;
  v_Ref_Item_Id  Number;
  v_SMan_Code    VarChar2(10);
  v_Rem          Varchar2(100);
  v_Load_Status  Char(1);
  v_Foc_Qty      Number;
  v_Foc_Ls       Number;

  v_Init Char(1) := 'N';
  v_Old_ID Number := 0;
Begin
   Go_Block('T_Inv_Item');
   Clear_Block;
   First_Record;
  Open CurInv;
  Loop
    Fetch CurInv INTO v_Ref_Doc_Id, v_Loc_Code, v_Txn_Code, v_Doc_No, v_SMan_Code, v_Cust_Code, v_HDisc_Perc, 
    v_HDisc_Amt, v_Item_Code, v_Item_Name, v_UOM_Code, v_Max_Loose, 
    v_Qty, v_Loose,v_Foc_Qty,v_Foc_Ls, v_Rate, v_Disc_Perc, v_Disc_Amt, v_Ref_Item_Id;
    EXIT WHEN CurInv%NotFound;
    :InvI_Item_Code := v_Item_Code;
    :Item_Name := v_Item_Name;
    :InvI_UOM_Code := v_UOM_Code;
    :Max_Loose := v_Max_Loose;
    :InvI_Qty := v_Qty;
    :InvI_Loose := v_Loose;
    :InvI_Rate := v_Rate;
    :Invi_Foc_Qty :=v_Foc_Qty;
    :Invi_Foc_Loose  := v_Foc_Ls;
    :InvI_Disc_Perc := v_Disc_Perc;
    :InvI_Disc_Amt := v_Disc_Amt;
    :InvI_Id := Fn_Get_Next_Id('Inv_Item');
    :InvI_Cr_User := :Global.User;
    :InvI_Cr_Dt := :Frm_Time_Zone;   
    Next_Record;
  End Loop;
  Close CurInv;
  Set_Item_Property('PB_Cancel_Reload',Enabled,Property_False);
End;

  
  
What you getClause Rule Language
on press of PB_CANCEL_RELOAD:    go to T_INV_ITEM    clear T_INV_ITEM    first record of T_INV_HEAD    state disable PB_CANCEL_RELOAD
# 1 statement did not convert.#   line 55
#   Loop
#       Fetch CurInv INTO v_Ref_Doc_Id, v_Loc_Code, v_Txn_Code, v_Doc_No, v_SMan_Code, v_Cust_Code, v_HDisc_Perc, 
#       v_HDisc_Amt, v_Item_Code, v_Item_Name, v_UOM_Code, v_Max_Loose, 
#       v_Qty, v_Loose,v_Foc_Qty,v_Foc_Ls, v_Rate, v_Disc_Perc, v_Disc_Amt, v_Ref_Item_Id;
#       EXIT WHEN CurInv%NotFound;
#       :InvI_Item_Code := v_Item_Code;
#       :Item_Name := v_Item_Name;
#       :InvI_UOM_Code := v_UOM_Code;
#       :Max_Loose := v_Max_Loose;
#       :InvI_Qty := v_Qty;
#       :InvI_Loose := v_Loose;
#       :InvI_Rate := v_Rate;
#       :Invi_Foc_Qty :=v_Foc_Qty;
#       :Invi_Foc_Loose  := v_Foc_Ls;
#       :InvI_Disc_Perc := v_Disc_Perc;
#       :InvI_Disc_Amt := v_Disc_Amt;
#       :InvI_Id := Fn_Get_Next_Id('Inv_Item');
#       :InvI_Cr_User := :Global.User;
#       :InvI_Cr_Dt := :Frm_Time_Zone;   
#       Next_Record;
#     End Loop;
#   reason: its body calls FN_GET_NEXT_ID once per row it appends, and an append performs no round trip per row

4 clauses converted, 1 statement refused

32. fmb_invoiceon unit ENABLE_SL_BATCHgreen-waste
What you havePROGRAM-UNIT
PROCEDURE Enable_Sl_Batch(v_Sl IN VarChar2, v_Batch IN VarChar2, v_Fix_SRate IN VarChar2) IS
BEGIN
  Set_Item_Property('PB_Sl', Enabled, Property_False);
  Set_Item_Instance_Property('INVI_Item_Sl_Ref', Current_Record, Insert_Allowed, Property_False);
  Set_Item_Instance_Property('INVI_Item_Sl_Ref', Current_Record, Update_Allowed, Property_False);
  Set_Item_Instance_Property('INVI_Item_Sl_Ref', Current_Record, Required, Property_False);
  Set_Item_Property('INVI_Item_Sl_Ref',VISUAL_ATTRIBUTE ,'DISABLE_VA'); 

  If v_Sl IN ('M','Manual') Then  --Manual
    Set_Item_Instance_Property('INVI_Item_Sl_Ref', Current_Record, Insert_Allowed, Property_False);
    Set_Item_Instance_Property('INVI_Item_Sl_Ref', Current_Record, Update_Allowed, Property_False);
    Set_Item_Property('INVI_Item_Sl_Ref',VISUAL_ATTRIBUTE ,'DISABLE_VA'); 
    Set_Item_Property('PB_Sl', Enabled, Property_True);
    Set_Item_Property('PB_Sl', Navigable, Property_True);
  End If;
  If v_Sl IN('A','Auto') Then      --Auto
     Set_Item_Property('InvI_Batch', Enabled, Property_False);
    If Nvl(:Ref_Doc_Item, 'XX') <> 'Loaded' Then 
      Set_Item_Instance_Property('INVI_Item_Sl_Ref', Current_Record, Required, Property_True);
      Set_Item_Instance_Property('INVI_Item_Sl_Ref', Current_Record, Insert_Allowed, Property_True);
      Set_Item_Instance_Property('INVI_Item_Sl_Ref', Current_Record, Update_Allowed, Property_True);
      Set_Item_Property('SL_REF_TO', Enabled, Property_True);
      Set_Item_Property('SL_REF_TO', Navigable, Property_True);
    End If;
  End If;
  
  If v_Sl IN('NA',' ') Then   
    Set_Item_Property('INVI_Item_Sl_Ref', Enabled, Property_False);
    Set_Item_Property('SL_REF_TO', Enabled, Property_False);
    Set_Item_Property('SL_REF_TO',VISUAL_ATTRIBUTE ,'DISABLE_VA'); 
  End If;

  If v_Batch = 'N' Then
    Set_Item_Property('InvI_Batch', Enabled, Property_False);
    Set_Item_Property('InvI_Batch', Required, Property_False);
    Set_Item_Property('InvI_Exp_Dt', Enabled, Property_False);
    Set_Item_Property('InvI_Batch',VISUAL_ATTRIBUTE ,'DISABLE_VA'); 
    Set_Item_Property('InvI_Exp_Dt',VISUAL_ATTRIBUTE ,'DISABLE_VA');
  Else
    --Location level 
    If   Nvl(:Frm_Valid_Item_Batch,'Y') ='Y' Then
      Set_Item_Property('InvI_Batch', Enabled, Property_True);
      Set_Item_Property('InvI_Batch', Required, Property_True);
      Set_Item_Property('InvI_Exp_Dt', Enabled, Property_True);
    End If;
  End If;

  If Nvl(v_Fix_SRate, 'N') = 'Y' Then    
      If Get_Item_Property('KG_Rate',Enabled) ='TRUE' Then   
        Set_Item_Property('KG_Rate', Enabled, Property_False);
        Set_Item_Property('KG_Rate',VISUAL_ATTRIBUTE ,'DISABLE_VA');
      End If;
       
     If Get_Item_Property('InvI_Rate',Enabled) ='TRUE' Then   
        Set_Item_Property('InvI_Rate', Enabled, Property_False);
        Set_Item_Property('InvI_Rate',VISUAL_ATTRIBUTE ,'DISABLE_VA');
     End If;  
      
     If Get_Item_Property('InvI_Disc_Perc',Enabled) ='TRUE' Then
         Set_Item_Property('InvI_Disc_Perc', Enabled, Property_False);
        Set_Item_Property('InvI_Disc_Perc',VISUAL_ATTRIBUTE ,'DISABLE_VA');
     End If;
     
     If Get_Item_Property('InvI_Disc_Amt',Enabled) ='TRUE' Then
         Set_Item_Property('InvI_Disc_Amt', Enabled, Property_False);
        Set_Item_Property('InvI_Disc_Amt',VISUAL_ATTRIBUTE ,'DISABLE_VA');
     End If;
  Else
    If Nvl(:Wt, 0) > 0 Then
      Enable_Text('KG_Rate', :Frm_En_Rate);
      Enable_Text('KG_Rate', 'F');
    Else
      Enable_Text('KG_Rate', 'F');
      Enable_Text('INVI_Rate', :Frm_En_Rate);
    End If;
    If Nvl(:Frm_Show_Rate,'Y') = 'Y' Then
     Enable_Text('INVI_DISC_PERC', Fn_Get_Stk_Txn_Param(:InvH_Txn_Code,:Global.Company, 'INV_EN_DISC1'));
     Enable_Text('INVI_DISC_AMT', Fn_Get_Stk_Txn_Param(:InvH_Txn_Code,:Global.Company, 'INV_EN_DISC1'));
    End If; 
  End If;  
END;
What you getClause Rule Language
on unit ENABLE_SL_BATCH(V_SL, V_BATCH, V_FIX_SRATE):    state disable PB_SL    state enable PB_SL when (ARG.V_SL = 'M') or (ARG.V_SL = 'Manual')    state unskip PB_SL when (ARG.V_SL = 'M') or (ARG.V_SL = 'Manual')    state disable INVI_BATCH when (ARG.V_SL = 'A') or (ARG.V_SL = 'Auto')    state enable SL_REF_TO when ((ARG.V_SL = 'A') or (ARG.V_SL = 'Auto')) and (nvl(REF_DOC_ITEM, 'XX') <> 'Loaded')    state unskip SL_REF_TO when ((ARG.V_SL = 'A') or (ARG.V_SL = 'Auto')) and (nvl(REF_DOC_ITEM, 'XX') <> 'Loaded')    state disable INVI_ITEM_SL_REF, SL_REF_TO when (ARG.V_SL = 'NA') or (ARG.V_SL = ' ')    state disable INVI_BATCH when ARG.V_BATCH = 'N'    state optional INVI_BATCH when ARG.V_BATCH = 'N'    state disable INVI_EXP_DT when ARG.V_BATCH = 'N'    state enable INVI_BATCH when not (ARG.V_BATCH = 'N') and (nvl(FRM_VALID_ITEM_BATCH, 'Y') = 'Y')    state require INVI_BATCH when not (ARG.V_BATCH = 'N') and (nvl(FRM_VALID_ITEM_BATCH, 'Y') = 'Y')    state enable INVI_EXP_DT when not (ARG.V_BATCH = 'N') and (nvl(FRM_VALID_ITEM_BATCH, 'Y') = 'Y')    state disable KG_RATE when (ARG.V_FIX_SRATE = 'Y') and enabled of KG_RATE    state disable INVI_RATE when (ARG.V_FIX_SRATE = 'Y') and enabled of INVI_RATE    state disable INVI_DISC_PERC when (ARG.V_FIX_SRATE = 'Y') and enabled of INVI_DISC_PERC    state disable INVI_DISC_AMT when (ARG.V_FIX_SRATE = 'Y') and enabled of INVI_DISC_AMT    call ENABLE_TEXT('T_INV_ITEM.KG_RATE', FRM_EN_RATE) when not (ARG.V_FIX_SRATE = 'Y') and (nvl(WT, 0) > 0)    call ENABLE_TEXT('T_INV_ITEM.KG_RATE', 'F') when not (ARG.V_FIX_SRATE = 'Y') and (nvl(WT, 0) > 0)    call ENABLE_TEXT('T_INV_ITEM.KG_RATE', 'F') when not (ARG.V_FIX_SRATE = 'Y') and not (nvl(WT, 0) > 0)    call ENABLE_TEXT('T_INV_ITEM.INVI_RATE', FRM_EN_RATE) when not (ARG.V_FIX_SRATE = 'Y') and not (nvl(WT, 0) > 0)    call ENABLE_TEXT('T_INV_ITEM.INVI_DISC_PERC', FN_GET_STK_TXN_PARAM(INVH_TXN_CODE, GLOBAL.COMPANY, 'INV_EN_DISC1')) when not (ARG.V_FIX_SRATE = 'Y') and (nvl(FRM_SHOW_RATE, 'Y') = 'Y')    call ENABLE_TEXT('T_INV_ITEM.INVI_DISC_AMT', FN_GET_STK_TXN_PARAM(INVH_TXN_CODE, GLOBAL.COMPANY, 'INV_EN_DISC1')) when not (ARG.V_FIX_SRATE = 'Y') and (nvl(FRM_SHOW_RATE, 'Y') = 'Y')
# 11 statements did not convert.#   line 4
#   Set_Item_Instance_Property('INVI_Item_Sl_Ref', Current_Record, Insert_Allowed, Property_False);
#   reason: this sets a property of one record's cell, and the screen holds field state per field and not per row, so a verb here would lock or mark the column in every row of the grid: a per-record field state is grid.md's and is not built#   line 5
#   Set_Item_Instance_Property('INVI_Item_Sl_Ref', Current_Record, Update_Allowed, Property_False);
#   reason: this sets a property of one record's cell, and the screen holds field state per field and not per row, so a verb here would lock or mark the column in every row of the grid: a per-record field state is grid.md's and is not built#   line 6
#   Set_Item_Instance_Property('INVI_Item_Sl_Ref', Current_Record, Required, Property_False);
#   reason: this sets a property of one record's cell, and the screen holds field state per field and not per row, so a verb here would lock or mark the column in every row of the grid: a per-record field state is grid.md's and is not built#   line 7
#   Set_Item_Property('INVI_Item_Sl_Ref',VISUAL_ATTRIBUTE ,'DISABLE_VA');
#   reason: the state effect is nine properties over twelve verbs, and VISUAL_ATTRIBUTE is none of them, so it is refused rather than folded into a verb it does not mean#   line 10
#   Set_Item_Instance_Property('INVI_Item_Sl_Ref', Current_Record, Insert_Allowed, Property_False);
#   reason: this sets a property of one record's cell, and the screen holds field state per field and not per row, so a verb here would lock or mark the column in every row of the grid: a per-record field state is grid.md's and is not built#   line 11
#   Set_Item_Instance_Property('INVI_Item_Sl_Ref', Current_Record, Update_Allowed, Property_False);
#   reason: this sets a property of one record's cell, and the screen holds field state per field and not per row, so a verb here would lock or mark the column in every row of the grid: a per-record field state is grid.md's and is not built#   line 12
#   Set_Item_Property('INVI_Item_Sl_Ref',VISUAL_ATTRIBUTE ,'DISABLE_VA');
#   reason: the state effect is nine properties over twelve verbs, and VISUAL_ATTRIBUTE is none of them, so it is refused rather than folded into a verb it does not mean#   line 19
#   Set_Item_Instance_Property('INVI_Item_Sl_Ref', Current_Record, Required, Property_True);
#   reason: this sets a property of one record's cell, and the screen holds field state per field and not per row, so a verb here would lock or mark the column in every row of the grid: a per-record field state is grid.md's and is not built#   line 20
#   Set_Item_Instance_Property('INVI_Item_Sl_Ref', Current_Record, Insert_Allowed, Property_True);
#   reason: this sets a property of one record's cell, and the screen holds field state per field and not per row, so a verb here would lock or mark the column in every row of the grid: a per-record field state is grid.md's and is not built#   line 21
#   Set_Item_Instance_Property('INVI_Item_Sl_Ref', Current_Record, Update_Allowed, Property_True);
#   reason: this sets a property of one record's cell, and the screen holds field state per field and not per row, so a verb here would lock or mark the column in every row of the grid: a per-record field state is grid.md's and is not built#   line 37
#   Set_Item_Property('InvI_Batch',VISUAL_ATTRIBUTE ,'DISABLE_VA');
#   reason: the state effect is nine properties over twelve verbs, and VISUAL_ATTRIBUTE is none of them, so it is refused rather than folded into a verb it does not mean

23 clauses converted, 11 statements refused

33. fmb_invoiceon unit PROMO_FOC_LOADINGgreen-waste
What you havePROGRAM-UNIT
PROCEDURE Promo_Foc_Loading IS
  rg_Id_Promo     RecordGroup;
  rg_Col          GroupColumn;       --Added By Mojish 29/04/14
  v_Prom_Code      Varchar2(10);
  v_Rec_Num       Number;
  v_Row_Num       Number;
  v_PromH_Id      Number;
  v_InvI_Qty_Bu    Number;
  v_InvI_Foc_Bu    Number;
  v_InvI_Prom_Bu   Number;
  v_InvI_Prom_Foc_Bu Number;
  v_Issue_Foc_Bu  Number;
  v_Count         Number;
BEGIN
  If Nvl(:Frm_En_Sales_Promo, 'N') = 'Y' Then
    v_Rec_Num := Get_Block_Property('T_Inv_Item', Current_Record);
    rg_Id_Promo := Find_Group('RG_PROMO'); 
    If Id_Null(rg_Id_Promo) Then                       --Creating record group
      rg_Id_Promo := Create_Group('RG_PROMO');
      rg_Col := Add_Group_Column(rg_Id_Promo, 'PromH_Id', NUMBER_COLUMN);
      rg_Col := Add_Group_Column(rg_Id_Promo, 'Prom_Item_Id', NUMBER_COLUMN);
      rg_Col := Add_Group_Column(rg_Id_Promo, 'Inv_Qty_Bu', NUMBER_COLUMN);
      rg_Col := Add_Group_Column(rg_Id_Promo, 'Prom_Inv_Bu', NUMBER_COLUMN);
      rg_Col := Add_Group_Column(rg_Id_Promo, 'Prom_Foc_Bu', NUMBER_COLUMN);
      rg_Col := Add_Group_Column(rg_Id_Promo, 'Issued_Foc_Bu', NUMBER_COLUMN);
    End If;
        
    v_Row_Num := Get_Group_Row_Count(rg_Id_Promo); -- Record Group rows added
    v_Row_Num := v_Row_Num + 1;
    While (v_Row_Num <= v_Rec_Num) Loop
      Add_Group_Row(rg_Id_Promo, v_Row_Num);
      v_Row_Num := v_Row_Num + 1;
    End Loop;                                    -- End of Record Group rows added
  End If;

  If Nvl(:InvI_Prom_Item_Id, 0) > 0 And Nvl(:Frm_En_Sales_Promo, 'Y') = 'Y' And :InvI_Item_Code Is Not Null Then
    Select PromI_PromH_Id Into v_PromH_Id From T_Prom_Item Where PromI_Id = :InvI_Prom_Item_Id;
    Begin
      Select PromH_Promt_Code, Nvl(PromH_Qty_Bu, 0), Nvl(PromH_Foc_Bu, 0) Into v_Prom_Code, v_InvI_Prom_Bu, v_InvI_Prom_Foc_Bu 
      From T_Prom_Head Where PromH_Id = v_PromH_Id;
    Exception When Others Then
      Null;
    End;
    :PromH_Id := v_PromH_Id;
    Select Count(*) Into v_Count From T_Prom_Foc_Qualify, T_Prom_Foc_Item 
    Where PromFq_PromH_Id = PromFi_PromH_Id And PromFq_Item_Code = PromFi_Item_Code 
    And PromFi_PromH_Id = v_PromH_Id And PromFq_Item_Code = :InvI_Item_Code;
    
    If Nvl(v_Prom_Code, 'FG') = 'FG' And v_Count = 0 Then   --This option required for promotion free goods and never same item has foc 
      :InvI_Prom_Foc_Same := 'N';
    
      Select Count(*) Into v_Count From T_Prom_Foc_Qualify
        Where PromFq_PromH_Id = v_PromH_Id And PromFq_Item_Code = :InvI_Item_Code;
      If v_Count = 1 Then
        v_InvI_Qty_Bu := Nvl(:InvI_Qty * :Max_Loose, 0) + Nvl(:InvI_Loose, 0);
      Else
        v_InvI_Qty_Bu := 0;
      End If;
      Set_Group_Number_Cell('RG_PROMO.PromH_Id', v_Rec_Num, v_PromH_Id); 
      Set_Group_Number_Cell('RG_PROMO.Prom_Item_Id', v_Rec_Num, :InvI_Prom_Item_Id); 
      Set_Group_Number_Cell('RG_PROMO.Inv_Qty_Bu', v_Rec_Num, v_InvI_Qty_Bu); 
      Set_Group_Number_Cell('RG_PROMO.Prom_Inv_Bu', v_Rec_Num, v_InvI_Prom_Bu); 
      Set_Group_Number_Cell('RG_PROMO.Prom_Foc_Bu', v_Rec_Num, v_InvI_Prom_Foc_Bu);
      Set_Group_Number_Cell('RG_PROMO.Issued_Foc_Bu', v_Rec_Num, 0); 
       
      v_InvI_Foc_Bu := Nvl(:InvI_Foc_Qty * :Max_Loose, 0) + Nvl(:InvI_Foc_Loose, 0);
      If v_InvI_Foc_Bu > 0 Then
        v_Row_Num := Get_Group_Row_Count(rg_Id_Promo) - 1;
        While(v_Row_Num > 0) Loop                              -- taking Issued Foc Qty Same Promo Head Item
          If v_PromH_Id = Get_Group_Number_Cell('RG_PROMO.PromH_Id', v_Row_Num) Then
            v_Issue_Foc_Bu := Get_Group_Number_Cell('RG_PROMO.Issued_Foc_Bu', v_Row_Num);
          End If;
          v_Row_Num := v_Row_Num - 1;
        End Loop;
        
        v_Row_Num := Get_Group_Row_Count(rg_Id_Promo);
        While(v_Row_Num > 0) Loop                              -- Updating Issued Foc Qty Same Promo Head Item
          If v_PromH_Id = Get_Group_Number_Cell('RG_PROMO.PromH_Id', v_Row_Num) Then
            Set_Group_Number_Cell('RG_PROMO.Issued_Foc_Bu', v_Row_Num, (Nvl(v_Issue_Foc_Bu, 0) + Nvl(v_InvI_Foc_Bu, 0))); 
          End If;
          v_Row_Num := v_Row_Num - 1;
        End Loop;
      End If;
    End If;
  End If;
END;
What you getClause Rule Language
on unit PROMO_FOC_LOADING:
# 1 statement did not convert.#   PROCEDURE Promo_Foc_Loading IS
#     rg_Id_Promo     RecordGroup;
#     rg_Col          GroupColumn;       --Added By Mojish 29/04/14
#     v_Prom_Code      Varchar2(10);
#     v_Rec_Num       Number;
#     v_Row_Num       Number;
#     v_PromH_Id      Number;
#     v_InvI_Qty_Bu    Number;
#     v_InvI_Foc_Bu    Number;
#     v_InvI_Prom_Bu   Number;
#     v_InvI_Prom_Foc_Bu Number;
#     v_Issue_Foc_Bu  Number;
#     v_Count         Number;
#   BEGIN
#     If Nvl(:Frm_En_Sales_Promo, 'N') = 'Y' Then
#       v_Rec_Num := Get_Block_Property('T_Inv_Item', Current_Record);
#       rg_Id_Promo := Find_Group('RG_PROMO'); 
#       If Id_Null(rg_Id_Promo) Then                       --Creating record group
#         rg_Id_Promo := Create_Group('RG_PROMO');
#         rg_Col := Add_Group_Column(rg_Id_Promo, 'PromH_Id', NUMBER_COLUMN);
#         rg_Col := Add_Group_Column(rg_Id_Promo, 'Prom_Item_Id', NUMBER_COLUMN);
#         rg_Col := Add_Group_Column(rg_Id_Promo, 'Inv_Qty_Bu', NUMBER_COLUMN);
#         rg_Col := Add_Group_Column(rg_Id_Promo, 'Prom_Inv_Bu', NUMBER_COLUMN);
#         rg_Col := Add_Group_Column(rg_Id_Promo, 'Prom_Foc_Bu', NUMBER_COLUMN);
#         rg_Col := Add_Group_Column(rg_Id_Promo, 'Issued_Foc_Bu', NUMBER_COLUMN);
#       End If;
#           
#       v_Row_Num := Get_Group_Row_Count(rg_Id_Promo); -- Record Group rows added
#       v_Row_Num := v_Row_Num + 1;
#       While (v_Row_Num <= v_Rec_Num) Loop
#         Add_Group_Row(rg_Id_Promo, v_Row_Num);
#         v_Row_Num := v_Row_Num + 1;
#       End Loop;                                    -- End of Record Group rows added
#     End If;
#   
#     If Nvl(:InvI_Prom_Item_Id, 0) > 0 And Nvl(:Frm_En_Sales_Promo, 'Y') = 'Y' And :InvI_Item_Code Is Not Null Then
#       Select PromI_PromH_Id Into v_PromH_Id From T_Prom_Item Where PromI_Id = :InvI_Prom_Item_Id;
#       Begin
#         Select PromH_Promt_Code, Nvl(PromH_Qty_Bu, 0), Nvl(PromH_Foc_Bu, 0) Into v_Prom_Code, v_InvI_Prom_Bu, v_InvI_Prom_Foc_Bu 
#         From T_Prom_Head Where PromH_Id = v_PromH_Id;
#       Exception When Others Then
#         Null;
#       End;
#       :PromH_Id := v_PromH_Id;
#       Select Count(*) Into v_Count From T_Prom_Foc_Qualify, T_Prom_Foc_Item 
#       Where PromFq_PromH_Id = PromFi_PromH_Id And PromFq_Item_Code = PromFi_Item_Code 
#       And PromFi_PromH_Id = v_PromH_Id And PromFq_Item_Code = :InvI_Item_Code;
#       
#       If Nvl(v_Prom_Code, 'FG') = 'FG' And v_Count = 0 Then   --This option required for promotion free goods and never same item has foc 
#         :InvI_Prom_Foc_Same := 'N';
#       
#         Select Count(*) Into v_Count From T_Prom_Foc_Qualify
#           Where PromFq_PromH_Id = v_PromH_Id And PromFq_Item_Code = :InvI_Item_Code;
#         If v_Count = 1 Then
#           v_InvI_Qty_Bu := Nvl(:InvI_Qty * :Max_Loose, 0) + Nvl(:InvI_Loose, 0);
#         Else
#           v_InvI_Qty_Bu := 0;
#         End If;
#         Set_Group_Number_Cell('RG_PROMO.PromH_Id', v_Rec_Num, v_PromH_Id); 
#         Set_Group_Number_Cell('RG_PROMO.Prom_Item_Id', v_Rec_Num, :InvI_Prom_Item_Id); 
#         Set_Group_Number_Cell('RG_PROMO.Inv_Qty_Bu', v_Rec_Num, v_InvI_Qty_Bu); 
#         Set_Group_Number_Cell('RG_PROMO.Prom_Inv_Bu', v_Rec_Num, v_InvI_Prom_Bu); 
#         Set_Group_Number_Cell('RG_PROMO.Prom_Foc_Bu', v_Rec_Num, v_InvI_Prom_Foc_Bu);
#         Set_Group_Number_Cell('RG_PROMO.Issued_Foc_Bu', v_Rec_Num, 0); 
#          
#         v_InvI_Foc_Bu := Nvl(:InvI_Foc_Qty * :Max_Loose, 0) + Nvl(:InvI_Foc_Loose, 0);
#         If v_InvI_Foc_Bu > 0 Then
#           v_Row_Num := Get_Group_Row_Count(rg_Id_Promo) - 1;
#           While(v_Row_Num > 0) Loop                              -- taking Issued Foc Qty Same Promo Head Item
#             If v_PromH_Id = Get_Group_Number_Cell('RG_PROMO.PromH_Id', v_Row_Num) Then
#               v_Issue_Foc_Bu := Get_Group_Number_Cell('RG_PROMO.Issued_Foc_Bu', v_Row_Num);
#             End If;
#             v_Row_Num := v_Row_Num - 1;
#           End Loop;
#           
#           v_Row_Num := Get_Group_Row_Count(rg_Id_Promo);
#           While(v_Row_Num > 0) Loop                              -- Updating Issued Foc Qty Same Promo Head Item
#             If v_PromH_Id = Get_Group_Number_Cell('RG_PROMO.PromH_Id', v_Row_Num) Then
#               Set_Group_Number_Cell('RG_PROMO.Issued_Foc_Bu', v_Row_Num, (Nvl(v_Issue_Foc_Bu, 0) + Nvl(v_InvI_Foc_Bu, 0))); 
#             End If;
#             v_Row_Num := v_Row_Num - 1;
#           End Loop;
#         End If;
#       End If;
#     End If;
#   END;
#   reason: it handles OTHERS and carries on, so every statement under that handler runs in a program that has no way to say what happens when one of them fails: CRL has no clause that runs on a failure and none that ignores one

0 clauses converted, 1 statement refused

34. fmb_invoiceWHEN-VALIDATE-ITEM on T_INV_HEAD.INVH_REFgreen-waste
What you haveWHEN-VALIDATE-ITEM
Declare
  v_Ctr Number;
  v_location varchar2(10);
  v_Count Number;
  v_Sl   Number;
Begin
  If :InvH_Sman_Code Is Not Null Then
    :Frm_MBK_CHK := Fn_Get_Sman_Param(:InvH_SMan_Code,'SMAN_MBK_CHK');  
    If :InvH_Ref Is Null and  Nvl(:Frm_Mbk_Chk, 'Y') <> 'N' And :Txn_MBk_Item Is Not Null Then
      --Show_Message('Inv_Alert', 'Reference Number Not Entered!');
      Set_Item_Property('InvH_Ref', Required, Property_True);     --Added by Mojish 03/05/14
      Raise Form_Trigger_Failure;
    End If;
  End If;
  
  if :INVH_REF is not null then
    SELECT Count(*) INTO v_Ctr
    FROM T_Inv_Head
    WHERE InvH_Comp_Code = :Global.Company
    AND InvH_Dt BETWEEN :Global.AYear_Fm AND :Global.AYear_To
    AND INVH_Txn_Code= :InvH_Txn_Code
    AND InvH_Ref = :InvH_Ref
    AND InvH_Id <> Nvl(:InvH_Id, 0);

    If v_Ctr > 0 Then
      Show_Message('Inv_Alert', 'Reference already Entered!');
      Raise Form_Trigger_Failure;
    End If;
    
    v_location := :Txn_MBk_Loc;
    
    If Nvl(:Frm_Mbk_Chk, 'Y') <> 'N'  and :Txn_MBk_Item  Is Null Then
      Show_Message('Inv_Alert', 'Book Issue item Code not set in Txn parameter!');
      Raise Form_Trigger_Failure;
    End If; 
    
    Select Count(*) Into v_Count From M_Item_Serial_Exception
    Where ItemSlExc_Comp_Code = :Global.Company And ItemSlExc_Sman_Code = :InvH_Sman_Code
    And ItemSlExc_Ref = :InvH_Ref;
    
    If v_Count > 0 Then
      Show_Message('Inv_Alert', 'Cancelled Serial Number!');
      Raise Form_Trigger_Failure;
    End If;
    
    Select Count(Regexp_Replace(:Invh_Ref,'[^A-Za-z]'))Into V_Count From Dual;
    If V_Count = 0 Then 
      v_Sl := :Invh_Ref;   
      SELECT Count(*) INTO v_Count 
      FROM M_Item_Serial
      WHERE ItemSl_Comp_Code=:Global.Company
      AND ItemSl_Loc_Code= v_location       --:Txn_MBk_Loc  
      AND ItemSl_Item_Code=:Txn_MBk_Item
      AND ItemSl_Sman_Code =:Invh_Sman_Code
      AND ItemSl_Ref = (v_Sl-1)
      AND Itemsl_Issued = 'Y'
      AND not exists(select 'x' from M_Item_Serial_Exception
      Where  ItemSlexc_Comp_Code=Itemsl_Comp_Code
      AND ItemSlexc_Loc_Code= Itemsl_Loc_Code       --:Txn_MBk_Loc
      AND ItemSlexc_Item_Code=ItemSl_Item_Code
      AND ItemSlexc_Sman_Code =Itemsl_Sman_Code
      AND ItemSlexc_Ref = Itemsl_Ref)
      And Not Exists (Select 'X' from T_Inv_Head 
      Where InvH_Comp_Code = Itemsl_Comp_Code And InvH_Loc_Code = :InvH_Loc_Code
      And InvH_Sman_Code = Itemsl_Sman_Code
      And InvH_Ref = Itemsl_Ref);
      
      If v_Count > 0 Then
         Show_Message('Inv_Alert', 'Missing number  found!');
        Raise Form_Trigger_Failure; 
      End If;
    End If;    
     
    If :Txn_MBk_Item Is Not Null Then
      SELECT ItemSl_Issued, ItemSl_SMan_Code INTO :Txn_Mbk_Issued, :Txn_MBk_SMan_Code 
      FROM M_Item_Serial
      WHERE ItemSl_Comp_Code=:Global.Company
      AND ItemSl_Loc_Code= v_location       --:Txn_MBk_Loc 
      AND ItemSl_Item_Code=:Txn_MBk_Item
      AND ItemSl_Sman_Code =:Invh_Sman_Code
      AND ItemSl_Ref=:InvH_Ref;    
      
      If Nvl(:Txn_MBk_Issued, 'N')='N' Then
        Show_Message('Inv_Alert', 'Book Issue Not Found!');
        Raise Form_Trigger_Failure;
      Elsif Nvl(:Txn_MBk_SMan_Code, ' ') <> :InvH_SMan_Code Then
        Show_Message('Inv_Alert', 'Book Issued to another salesman can not be accepted!');
        Raise Form_Trigger_Failure;      
      End If;
    End If;
  end if;
Exception When No_Data_Found Then 
  Show_Message('Inv_Alert', 'Book Issue Not Found!');
  Raise Form_Trigger_Failure;
End;
What you getClause Rule Language
on change of INVH_REF:    from INV_HEAD(INVH_ID, INVH_REF, INVH_TXN_CODE) when is_filled(INVH_REF)
        # load-fmb-invoice-t-inv-head-invh-ref-change-0    from ITEM_SERIAL_EXCEPTION(INVH_REF, INVH_SMAN_CODE) when is_filled(INVH_REF)
        # load-fmb-invoice-t-inv-head-invh-ref-change-1    set FRM_MBK_CHK to FN_GET_SMAN_PARAM(INVH_SMAN_CODE, 'SMAN_MBK_CHK') when is_filled(INVH_SMAN_CODE)    state require INVH_REF when is_filled(INVH_SMAN_CODE) and ((is_blank(INVH_REF) and (nvl(FRM_MBK_CHK, 'Y') <> 'N')) and is_filled(TXN_MBK_ITEM))    deny when is_filled(INVH_SMAN_CODE) and ((is_blank(INVH_REF) and (nvl(FRM_MBK_CHK, 'Y') <> 'N')) and is_filled(TXN_MBK_ITEM)) silent    unique of INV_HEAD else "Reference already Entered!" when is_filled(INVH_REF)    deny when is_filled(INVH_REF) and ((nvl(FRM_MBK_CHK, 'Y') <> 'N') and is_blank(TXN_MBK_ITEM)) else "Book Issue item Code not set in Txn parameter!"    unique of ITEM_SERIAL_EXCEPTION else "Cancelled Serial Number!" when is_filled(INVH_REF)
# 4 statements did not convert.#   line 92
#   Exception When No_Data_Found Then 
#     Show_Message('Inv_Alert', 'Book Issue Not Found!');
#     Raise Form_Trigger_Failure;
#   reason: it handles NO_DATA_FOUND and re-raises, and CRL has no clause that runs when a statement fails: the error path ends the program either way, so the statements above it convert and the handler does not#   SELECT Count(*) INTO v_Count 
#         FROM M_Item_Serial
#         WHERE ItemSl_Comp_Code=:Global.Company
#         AND ItemSl_Loc_Code= v_location        
#         AND ItemSl_Item_Code=:Txn_MBk_Item
#         AND ItemSl_Sman_Code =:Invh_Sman_Code
#         AND ItemSl_Ref = (v_Sl-1)
#         AND Itemsl_Issued = 'Y'
#         AND not exists(select 'x' from M_Item_Serial_Exception
#         Where  ItemSlexc_Comp_Code=Itemsl_Comp_Code
#         AND ItemSlexc_Loc_Code= Itemsl_Loc_Code        
#         AND ItemSlexc_Item_Code=ItemSl_Item_Code
#         AND ItemSlexc_Sman_Code =Itemsl_Sman_Code
#         AND ItemSlexc_Ref = Itemsl_Ref)
#         And Not Exists (Select 'X' from T_Inv_Head 
#         Where InvH_Comp_Code = Itemsl_Comp_Code And InvH_Loc_Code = :InvH_Loc_Code
#         And InvH_Sman_Code = Itemsl_Sman_Code
#         And InvH_Ref = Itemsl_Ref)
#   reason: its query narrows on V_LOCATION, which this body declares as a local: a formal becomes an :ARG bind and a page value becomes a param, and a local is neither#   SELECT ItemSl_Issued, ItemSl_SMan_Code INTO :Txn_Mbk_Issued, :Txn_MBk_SMan_Code 
#         FROM M_Item_Serial
#         WHERE ItemSl_Comp_Code=:Global.Company
#         AND ItemSl_Loc_Code= v_location        
#         AND ItemSl_Item_Code=:Txn_MBk_Item
#         AND ItemSl_Sman_Code =:Invh_Sman_Code
#         AND ItemSl_Ref=:InvH_Ref
#   reason: its query narrows on V_LOCATION, which this body declares as a local: a formal becomes an :ARG bind and a page value becomes a param, and a local is neither#   Show_Message('Inv_Alert', 'Missing number  found!');
#   Raise Form_Trigger_Failure;
#   SELECT ItemSl_Issued, ItemSl_SMan_Code INTO :Txn_Mbk_Issued, :Txn_MBk_SMan_Code 
#         FROM M_Item_Serial
#         WHERE ItemSl_Comp_Code=:Global.Company
#         AND ItemSl_Loc_Code= v_location        
#         AND ItemSl_Item_Code=:Txn_MBk_Item
#         AND ItemSl_Sman_Code =:Invh_Sman_Code
#         AND ItemSl_Ref=:InvH_Ref;
#   Show_Message('Inv_Alert', 'Book Issue Not Found!');
#   Raise Form_Trigger_Failure;
#   Show_Message('Inv_Alert', 'Book Issued to another salesman can not be accepted!');
#   Raise Form_Trigger_Failure;
#   reason: the query they read is refused above, so a clause over it would read no row

6 clauses converted, 4 statements refused

35. fmb_invoiceon unit LOAD_CSgreen-waste
What you havePROGRAM-UNIT
PROCEDURE Load_Cs(Ref_Id IN Number) IS
CURSOR  CurCs IS 
    SELECT CsH_Id, CsH_Loc_Code, CsH_Txn_Code, CsH_No,CsH_Cust_Code,  
           CsD_Item_Code Item_Code, Item_Name, CsD_UOM_Code UOM_Code, 
           UOM_Max_Loose Max_Loose, Floor((Nvl(CsD_Qty * UOM_Max_Loose, 0) + Nvl(CsD_Loose, 0) - (Nvl(CsD_Inv_Qty_BU,0))) /UOM_Max_Loose) Qty,
           (Nvl(CsD_Qty * UOM_Max_Loose, 0) + Nvl(CsD_Loose, 0) - (Nvl(CsD_Inv_Qty_BU,0)))-
           (Floor((Nvl(CsD_Qty * UOM_Max_Loose, 0) + Nvl(CsD_Loose, 0) - (Nvl(CsD_Inv_Qty_BU,0)))/UOM_Max_Loose) * UOM_Max_Loose) Loose,
           CsD_Rate, 0 Disc_Perc, 0 Disc_Amt, CsD_Id Item_Id,CsD_Remarks
    FROM M_UOM, M_Item, T_Cust_Service_Detail, T_Cust_Service_Head
    WHERE CsD_CsH_Id = CsH_Id
    AND Item_Code = CsD_Item_Code
    AND UOM_Code = CsD_UOM_Code
    AND Nvl(CsD_Qty*UOM_Max_Loose, 0) + Nvl(CsD_Loose, 0) - (Nvl(CsD_Inv_Qty_BU,0)) > 0
    AND CsH_Comp_Code = :Global.Company
    AND CsH_Loc_Code =:Ref_Loc_Code
    AND CsH_Txn_Code =:Invh_Ref_Txn_Code
    And CsH_Id =Ref_Id
    AND Nvl(CsH_Load_Status,'N') ='N';
   
  v_ctr          Number := 0;
  v_Count        Number;
  v_Loc_Code     VarChar2(10);
  v_Txn_Code     VarChar2(10);
  v_Doc_No       Number;
  v_Txn_Type     VarChar2(10);
  v_Alert        Number := Alert_Button2;
  v_Ref_Doc_Id   Number;
  v_Cust_Code    VarChar2(10);
  v_HDisc_Perc   Number;
  v_HDisc_Amt    Number;
  v_PLU_Code     VarChar2(20);
  v_Item_Code    VarChar2(10);
  v_Item_Name    VarChar2(100);
  v_UOM_Code     VarChar2(10);
  v_Max_Loose    Number;
  v_Qty_BU       Number;
  v_Qty          Number;
  v_Loose        Number;
  v_Rate         Number;
  v_Disc_Perc    Number;
  v_Disc_Amt     Number;
  v_Ref_Item_Id  Number;
  v_SMan_Code    VarChar2(10);
  v_Rem          Varchar2(100);
  v_Load_Status  Char(1);
  v_Foc_Qty      Number;
  v_Foc_Ls       Number;
  v_Init Char(1) := 'N';
  v_Old_ID Number := 0;
  v_csd_Remarks Varchar2(100);

 
BEGIN
Go_Block('T_Inv_Item');
Last_Record;
IF :System.Last_Record = 'TRUE' THEN 
  Last_Record;
  Next_Record; 
ELSE 
  First_Record; 
END IF;

   Open CurCs;
   --If :FLAG = 'Y' THEN
      Loop
      Fetch CurCs INTO v_Ref_Doc_Id, v_Loc_Code, v_Txn_Code, v_Doc_No,  v_Cust_Code,  v_Item_Code, v_Item_Name, v_UOM_Code, v_Max_Loose, 
        v_Qty, v_Loose, v_Rate, v_Disc_Perc, v_Disc_Amt, v_Ref_Item_Id,v_csd_Remarks;
      EXIT WHEN CurCs%NotFound;
       
        :InvI_Cs_Doc_Item_Id := v_Ref_Item_Id;
        :Old_Item_Code := v_Item_Code;
        :Old_UOM_Code := v_UOM_Code;
        :InvI_Plu_Code := v_Plu_Code;
        :InvI_Item_Code := v_Item_Code;
        :Item_Name := v_Item_Name;
        :InvI_UOM_Code := v_UOM_Code;
        :Max_Loose := v_Max_Loose;
        :InvI_Qty := v_Qty;
        :InvI_Loose := v_Loose;
        :InvI_Rate := v_Rate;
        :InvI_Disc_Perc := v_Disc_Perc;
        :InvI_Disc_Amt := v_Disc_Amt;
        :InvI_Remarks  :=v_csd_Remarks;
        :Ref_Doc_Item := 'Loaded';
        v_ctr := v_ctr+1; 
        Next_Record;
      End Loop;
      If Nvl(v_Ctr,0) >0 Then 
         :Invh_Load_Status :='Y' ;
      End If;  
      Close CurCs;
      First_Record;
       GO_BLOCK('T_INV_ITEM');
             
END;
What you getClause Rule Language
on unit LOAD_CS(REF_ID):    go to T_INV_ITEM    last record of T_INV_ITEM    last record when SYSTEM.LAST_RECORD = 'TRUE'    next record when SYSTEM.LAST_RECORD = 'TRUE'    first record when not (SYSTEM.LAST_RECORD = 'TRUE')    first record    go to T_INV_ITEM
# 2 statements did not convert.#   line 65
#   Loop
#         Fetch CurCs INTO v_Ref_Doc_Id, v_Loc_Code, v_Txn_Code, v_Doc_No,  v_Cust_Code,  v_Item_Code, v_Item_Name, v_UOM_Code, v_Max_Loose, 
#           v_Qty, v_Loose, v_Rate, v_Disc_Perc, v_Disc_Amt, v_Ref_Item_Id,v_csd_Remarks;
#         EXIT WHEN CurCs%NotFound;
#          
#           :InvI_Cs_Doc_Item_Id := v_Ref_Item_Id;
#           :Old_Item_Code := v_Item_Code;
#           :Old_UOM_Code := v_UOM_Code;
#           :InvI_Plu_Code := v_Plu_Code;
#           :InvI_Item_Code := v_Item_Code;
#           :Item_Name := v_Item_Name;
#           :InvI_UOM_Code := v_UOM_Code;
#           :Max_Loose := v_Max_Loose;
#           :InvI_Qty := v_Qty;
#           :InvI_Loose := v_Loose;
#           :InvI_Rate := v_Rate;
#           :InvI_Disc_Perc := v_Disc_Perc;
#           :InvI_Disc_Amt := v_Disc_Amt;
#           :InvI_Remarks  :=v_csd_Remarks;
#           :Ref_Doc_Item := 'Loaded';
#           v_ctr := v_ctr+1; 
#           Next_Record;
#         End Loop;
#   reason: its collection binds REF_ID, a parameter this program takes, and a parameter passed in PL/SQL is not a bind the page can supply#   line 88
#   If Nvl(v_Ctr,0) >0 Then
#     :Invh_Load_Status :='Y';
#   End If;
#   reason: the guard reads the local V_CTR, which a loop body above it counts with: `V_CTR := V_CTR+1`, so what it holds here is the loop's own arithmetic, and crl-loops.md states the collection operation and not the bookkeeping around it

7 clauses converted, 2 statements refused

36. fmb_invoiceWHEN-BUTTON-PRESSED on T_INV_HEAD.PB_INV_RET_PRINTgreen-waste
What you haveWHEN-BUTTON-PRESSED
Declare
  Pl_Id    Paramlist;
  V_Report Varchar2(30) := 'print_invoice_sret_005';
  V_Rep_Id  Report_Object;
  V_Rep_Job_Id Varchar2(100);
  V_Job_Id Varchar2(100);
  V_Rep_Status Varchar2(100);
  V_Rep_Url Varchar2(1000);
  V_Host_Name Varchar2(100) := :Global.Rep_Host_Name;
  V_Port    Varchar2(100) := :Global.Rep_Port;
  V_Rep_Server Varchar2(100) := :Global.Rep_Server;
  V_Log_Id   Number(10);
  V_Dt       Date := Fn_Get_Zone_Date(:Global.Company);
Begin    
  Txn_Validate;    
  If Nvl(:Frm_Skip_Print, 'N') = 'N' Then    
    :Frm_Report1 := Fn_Get_Stk_Txn_Param(:Invh_Txn_Code,:Global.Company, 'INV_REPORT1');  
    :Frm_Printer_Name := Fn_Get_User_Preference(:Global.User, :Global.Company, :Invh_Txn_Code, 'USR_PRINTER');        
    If :Frm_Printer_Name  Is Null Then
      :Frm_Printer_Name  := Fn_Get_Stk_Txn_Param(:Invh_Txn_Code, :Global.Company, 'INV_PRINTER');
    End If;     
    Pl_Id := Get_Parameter_List(V_Report);
    If Not Id_Null(Pl_Id) Then
      Destroy_Parameter_List(Pl_Id);
    End If; 
    Pl_Id:=Create_Parameter_List(V_Report);
    If :Frm_No_Of_Print Is Null Then
      :Frm_No_Of_Print :=  Fn_Get_Stk_Txn_Param(:Invh_Txn_Code,:Global.Company, 'INV_NO_OF_PRINT');
    End If;     
    Add_Parameter(Pl_Id, 'Parm_Comp_Code', Text_Parameter, :Global.Company);
    Add_Parameter(Pl_Id, 'Parm_Comp_Name', Text_Parameter, :Global.Company_Name);
    Add_Parameter(Pl_Id, 'Parm_Loc_Code', Text_Parameter, :Invh_Loc_Code);
    Add_Parameter(Pl_Id, 'Parm_Txn_Code', Text_Parameter, :Invh_Txn_Code);
    Add_Parameter(Pl_Id, 'Parm_AYr_Code', Text_Parameter, :Invh_Ayr_Code);
    Add_Parameter(Pl_Id, 'Parm_No_From', Text_Parameter, :Invh_No);
    Add_Parameter(Pl_Id, 'Parm_No_To', Text_Parameter, :Invh_No);
    Add_Parameter(Pl_Id, 'No_Of_Print', Text_Parameter, :Frm_No_Of_Print);
    Add_Parameter(Pl_Id, 'Parm_User', Text_Parameter, :Global.User);
    Add_Parameter(Pl_Id, 'ParamForm', Text_Parameter, 'No');
    Add_Parameter(Pl_Id, 'Curr_Fmt', Text_Parameter, Nvl(:Frm_Curr_Format,:Global.Curr_Format));
    --Find Report Object
    V_Rep_Id := Find_Report_Object('print_txn');
    --Communication Mode
    Set_Report_Object_Property(V_Rep_Id, Report_Comm_Mode, Synchronous);
    If :Frm_Desformat Is Not Null Then
      Set_Report_Object_Property(V_Rep_Id, Report_Desformat, :Frm_Desformat);
    Else
      Set_Report_Object_Property(V_Rep_Id, Report_Desformat, 'PDF');
    End If;        
    If :Frm_Printer_Name Is Null Then
      :Frm_Printer_Name := Fn_Get_User_Preference(:Global.User, :Global.Company, :Invh_Txn_Code, 'USR_PRINTER');
    End If;  
    If :Frm_Printer_Name Is Null Then
      :Frm_Printer_Name := Fn_Get_Stk_Txn_Param(:Invh_Txn_Code, :Global.Company, 'INV_PRINTER');
    End If; 
 
    --Specify Report Server and Report File Name
    Set_Report_Object_Property(v_Rep_Id, Report_Server, v_Rep_Server);
    Set_Report_Object_Property(v_Rep_Id, Report_FileName, lower(:Frm_Report1));
    --Handled Destination Type and Name 
    If Nvl(:Frm_Printer_Name,:Mnu_Printer_Name) Is Not Null Then
      Set_Report_Object_Property(V_Rep_Id, Report_Desname, Nvl(:Frm_Printer_Name,:Mnu_Printer_Name));       
      Set_Report_Object_Property(V_Rep_Id, Report_Destype,Cache);       
    Else
      Set_Report_Object_Property(V_Rep_Id, Report_Destype,Cache);
    End If;
    --Run Report
    V_Rep_Job_Id := Run_Report_Object(V_Rep_Id, Pl_Id);
    V_Rep_Status := Report_Object_Status(V_Rep_Job_Id);

    Set_Custom_Property('CTRL.PRINTBEAN',1,'DEFAULT_PRINTER',Nvl(:Frm_Printer_Name,:Mnu_Printer_Name));
    Set_Custom_Property('CTRL.CUSTOM_PRN_BEAN',1,'DEFAULT_PRINTER',Nvl(:Frm_Printer_Name,:Mnu_Printer_Name));  
    If V_Rep_Status = 'FINISHED' Then
      If Upper(:Mnu_Dest_Name) = 'PRINTER' Then
        V_Job_Id := Substr(V_Rep_Job_Id, Length(V_Rep_Server)+2);
        V_Rep_Url := 'http://' || V_Host_Name || ':' || V_Port || '/reports/rwservlet/getjobid' || V_Job_Id || '?server=' || V_Rep_Server;
        Message(V_Rep_Url);
        Set_Custom_Property('CTRL.PRINTBEAN',1,'FILE_NAME',V_Rep_Url);
        Set_Custom_Property('CTRL.PRINTBEAN',1,'PRINT_FILE','');
        --Web.Show_Document(v_Rep_URL, '_blank');
        Elsif Upper(:Mnu_Dest_Name) = 'CACHE' Then
          V_Job_Id := Substr(V_Rep_Job_Id, Length(V_Rep_Server)+2);
        V_Rep_Url := 'http://' || V_Host_Name || ':' || V_Port || '/reports/rwservlet/getjobid' || V_Job_Id || '?server=' || V_Rep_Server;
        Message(V_Rep_Url);
        Web.Show_Document(V_Rep_Url, '_blank');
      End If;
    Else
      Message('Error Running Report');
    End If;     
    --Print Log      
    Proc_Insert_Txn_Print_Log1(:Global.Company,:Invh_Loc_Code,:Invh_Ayr_Code,:Invh_Txn_Code,:Invh_No,:Invh_No, Fn_Get_Zone_Date(:Global.Company),:Global.User);          
    Standard.Commit;
  Else
    Message('Print was skipped');
  End If;
End;
What you getClause Rule Language
on press of PB_INV_RET_PRINT:    call TXN_VALIDATE()    set FRM_REPORT1 to FN_GET_STK_TXN_PARAM(INVH_TXN_CODE, GLOBAL.COMPANY, 'INV_REPORT1') when nvl(FRM_SKIP_PRINT, 'N') = 'N'    set FRM_PRINTER_NAME to FN_GET_USER_PREFERENCE(GLOBAL.USER, GLOBAL.COMPANY, INVH_TXN_CODE, 'USR_PRINTER') when nvl(FRM_SKIP_PRINT, 'N') = 'N'    set FRM_PRINTER_NAME to FN_GET_STK_TXN_PARAM(INVH_TXN_CODE, GLOBAL.COMPANY, 'INV_PRINTER') when (nvl(FRM_SKIP_PRINT, 'N') = 'N') and is_blank(FRM_PRINTER_NAME)    set FRM_NO_OF_PRINT to FN_GET_STK_TXN_PARAM(INVH_TXN_CODE, GLOBAL.COMPANY, 'INV_NO_OF_PRINT') when (nvl(FRM_SKIP_PRINT, 'N') = 'N') and is_blank(FRM_NO_OF_PRINT)    set FRM_PRINTER_NAME to FN_GET_USER_PREFERENCE(GLOBAL.USER, GLOBAL.COMPANY, INVH_TXN_CODE, 'USR_PRINTER') when (nvl(FRM_SKIP_PRINT, 'N') = 'N') and is_blank(FRM_PRINTER_NAME)    set FRM_PRINTER_NAME to FN_GET_STK_TXN_PARAM(INVH_TXN_CODE, GLOBAL.COMPANY, 'INV_PRINTER') when (nvl(FRM_SKIP_PRINT, 'N') = 'N') and is_blank(FRM_PRINTER_NAME)    report lower(FRM_REPORT1) with (Curr_Fmt = nvl(FRM_CURR_FORMAT, GLOBAL.CURR_FORMAT), No_Of_Print = FRM_NO_OF_PRINT, ParamForm = 'No', Parm_AYr_Code = INVH_AYR_CODE, Parm_Comp_Code = GLOBAL.COMPANY, Parm_Comp_Name = GLOBAL.COMPANY_NAME, Parm_Loc_Code = INVH_LOC_CODE, Parm_No_From = INVH_NO, Parm_No_To = INVH_NO, Parm_Txn_Code = INVH_TXN_CODE, Parm_User = GLOBAL.USER) when nvl(FRM_SKIP_PRINT, 'N') = 'N'    call PROC_INSERT_TXN_PRINT_LOG1(GLOBAL.COMPANY, INVH_LOC_CODE, INVH_AYR_CODE, INVH_TXN_CODE, INVH_NO, INVH_NO, sysdate(), GLOBAL.USER) when nvl(FRM_SKIP_PRINT, 'N') = 'N'    warn "Print was skipped" when not (nvl(FRM_SKIP_PRINT, 'N') = 'N')
# 4 statements did not convert.#   line 71
#   Set_Custom_Property('CTRL.PRINTBEAN',1,'DEFAULT_PRINTER',Nvl(:Frm_Printer_Name,:Mnu_Printer_Name));
#   reason: 'CTRL.PRINTBEAN' is a bean for printing, a Bean Area, and component-tracker.md tier 4.4 rules Bean Areas will not be built: they are a Forms applet's own protocol and the web has no equivalent#   line 72
#   Set_Custom_Property('CTRL.CUSTOM_PRN_BEAN',1,'DEFAULT_PRINTER',Nvl(:Frm_Printer_Name,:Mnu_Printer_Name));
#   reason: 'CTRL.CUSTOM_PRN_BEAN' is a bean for printing, a Bean Area, and component-tracker.md tier 4.4 rules Bean Areas will not be built: they are a Forms applet's own protocol and the web has no equivalent#   line 73
#   If V_Rep_Status = 'FINISHED' Then
#     If Upper(:Mnu_Dest_Name) = 'PRINTER' Then
#       V_Job_Id := Substr(V_Rep_Job_Id, Length(V_Rep_Server)+2);
#       V_Rep_Url := 'http://' || V_Host_Name || ':' || V_Port || '/reports/rwservlet/getjobid' || V_Job_Id || '?server=' || V_Rep_Server;
#       Message(V_Rep_Url);
#       Set_Custom_Property('CTRL.PRINTBEAN',1,'FILE_NAME',V_Rep_Url);
#       Set_Custom_Property('CTRL.PRINTBEAN',1,'PRINT_FILE','');
#     Else
#       If Upper(:Mnu_Dest_Name) = 'CACHE' Then
#         V_Job_Id := Substr(V_Rep_Job_Id, Length(V_Rep_Server)+2);
#         V_Rep_Url := 'http://' || V_Host_Name || ':' || V_Port || '/reports/rwservlet/getjobid' || V_Job_Id || '?server=' || V_Rep_Server;
#         Message(V_Rep_Url);
#         Web.Show_Document(V_Rep_Url, '_blank');
#       End If;
#     End If;
#   Else
#     Message('Error Running Report');
#   End If;
#   reason: the guard reads the local V_REP_STATUS, which is written from something CRL has no expression for: a Forms built-in, a database call or a shape the reader refuses#   line 92
#   Standard.Commit;
#   reason: G13: mid-trigger DML and the transaction boundary are refused, not converted

10 clauses converted, 4 statements refused

37. fmb_invoiceWHEN-BUTTON-PRESSED on CTRL.PB_REV_PRINTgreen-waste
What you haveWHEN-BUTTON-PRESSED
Declare
  Pl_Id     ParamList;
  v_Status  VarChar2(20);
  v_Log_Id  Number;
  v_Report  Varchar2(30);
  v_Report VarChar2(30) :=  'print_sret';
  v_Rep_Id  Report_Object;
  v_Rep_Job_Id VarChar2(100);
  v_Job_Id VarChar2(100);
  v_Rep_Status VarChar2(100);
  v_Rep_URL VarChar2(1000);
  v_Host_Name VarChar2(100) := :Global.Rep_Host_Name;
  v_Port    VarChar2(100) := :Global.Rep_Port;
  v_Rep_Server VarChar2(100) := :Global.Rep_Server;
  v_Dt       Date;
Begin
  :Frm_Report1 := Fn_Get_User_Preference(:Global.User, :Global.Company, :Invh_Rev_Txn, 'USR_REPORT');
  If :Frm_Report1 Is Null Then
     :Frm_Report1 := Fn_Get_Stk_Txn_Param(:Invh_Rev_Txn,:Global.Company, 'SRET_REPORT');
  End If;  
  If Nvl(:Frm_Skip_Print, 'N') = 'N' then
    PL_Id := Get_Parameter_List('Print');
    
    If Not Id_Null(Pl_Id) Then
      Destroy_Parameter_List(Pl_Id);
    End If;

    PL_Id := Create_Parameter_List('Print');

    Add_Parameter(PL_Id, 'Parm_Comp_Code', Text_Parameter, :Global.Company);
    Add_Parameter(PL_Id, 'Parm_Loc_Code', Text_Parameter, :Invh_Loc_Code);
    Add_Parameter(PL_Id, 'Parm_Txn_Code', Text_Parameter, :Invh_Rev_Txn);
    Add_Parameter(PL_Id, 'Parm_AYr_Code', Text_Parameter, :Invh_AYr_Code);
    Add_Parameter(PL_Id, 'Parm_No_From', Text_Parameter, :Invh_Rev_No);
    Add_Parameter(PL_Id, 'Parm_No_To', Text_Parameter, :Invh_Rev_No);
    Add_Parameter(PL_Id, 'Parm_User', Text_Parameter, :Global.User);
    Add_Parameter(Pl_Id, 'ParamForm', Text_Parameter, 'No');

    v_Rep_Id := Find_Report_Object('print_txn');

    --Communication Mode
    Set_Report_Object_Property(v_Rep_Id, Report_Comm_Mode, Synchronous);
    Set_Report_Object_Property(v_Rep_Id, Report_Desformat,:Frm_Desformat);
    --User pref.Printer    
      
    If :Frm_Printer_Name Is Null Then
      :Frm_Printer_Name := Fn_Get_User_Preference(:Global.User, :Global.Company, :InvH_Txn_Code, 'USR_PRINTER');
    End If;
       
    If :Frm_Printer_Name Is Null Then
      :Frm_Printer_Name := Fn_Get_Stk_Txn_Param(:Invh_Txn_Code, :Global.Company, 'INV_PRINTER');
    End If;
    

    --Handled Destination Type and Name
    If :Mnu_Dest_Name = 'PRINTER' Then
       --Set_Report_Object_Property(v_Rep_Id, Report_DesType, PRINTER);
       Set_Report_Object_Property(v_Rep_Id, Report_DesType,CACHE);
       If Nvl(:Frm_Printer_Name,:Mnu_Printer_Name) Is Not Null Then
        Set_Report_Object_Property(v_Rep_Id, Report_DesName, Nvl(:Frm_Printer_Name,:Mnu_Printer_Name));
       End If;
    Else
       Set_Report_Object_Property(v_Rep_Id, Report_DesType,CACHE);
    End If;
    
    --Specify Report Server and Report File Name
     Set_Report_Object_Property(v_Rep_Id, Report_Server, v_Rep_Server);
     Set_Report_Object_Property(v_Rep_Id, Report_FileName,lower(:Frm_Report1));
    --Run Report
    v_Rep_Job_Id := Run_Report_Object(v_Rep_Id, PL_Id);
    v_Rep_Status := Report_Object_Status(v_Rep_Job_Id);
    SET_CUSTOM_PROPERTY('CTRL.PRINTBEAN',1,'DEFAULT_PRINTER',Nvl(:Frm_Printer_Name,:Mnu_Printer_Name));
  
    If v_Rep_Status = 'FINISHED' Then
      If Upper(:Mnu_Dest_Name) = 'PRINTER' Then
           v_Job_Id := SubStr(v_Rep_Job_Id, length(v_Rep_Server)+2);
           v_Rep_URL := 'http://' || v_Host_Name || ':' || v_Port || '/reports/rwservlet/getjobid' || v_Job_Id || '?server=' || v_Rep_Server;
           Message(v_Rep_URL);
           SET_CUSTOM_PROPERTY('CTRL.PRINTBEAN',1,'FILE_NAME',v_Rep_URL);
           SET_CUSTOM_PROPERTY('CTRL.PRINTBEAN',1,'PRINT_FILE','');
           --Web.Show_Document(v_Rep_URL, '_blank');
      Elsif Upper(:Mnu_Dest_Name) = 'CACHE' Then
            v_Job_Id := SubStr(v_Rep_Job_Id, length(v_Rep_Server)+2);
           v_Rep_URL := 'http://' || v_Host_Name || ':' || v_Port || '/reports/rwservlet/getjobid' || v_Job_Id || '?server=' || v_Rep_Server;
           Message(v_Rep_URL);
           Web.Show_Document(v_Rep_URL, '_blank');
      End If;
    Else
      Message('Error Running Report');
    End If;
  
    Proc_Insert_Txn_Print_Log1(:Global.Company,:Invh_Loc_Code,:Invh_Ayr_Code,:Invh_Rev_Txn,:Invh_Rev_No,:Invh_Rev_No, Sysdate,:Global.User);
    Clear_Form(Do_Commit);
    Init_Form;
  else
    message('Print was skipped');
  end if;
End;
What you getClause Rule Language
on press of PB_REV_PRINT:    set FRM_REPORT1 to FN_GET_USER_PREFERENCE(GLOBAL.USER, GLOBAL.COMPANY, INVH_REV_TXN, 'USR_REPORT')    set FRM_REPORT1 to FN_GET_STK_TXN_PARAM(INVH_REV_TXN, GLOBAL.COMPANY, 'SRET_REPORT') when is_blank(FRM_REPORT1)    set FRM_PRINTER_NAME to FN_GET_USER_PREFERENCE(GLOBAL.USER, GLOBAL.COMPANY, INVH_TXN_CODE, 'USR_PRINTER') when (nvl(FRM_SKIP_PRINT, 'N') = 'N') and is_blank(FRM_PRINTER_NAME)    set FRM_PRINTER_NAME to FN_GET_STK_TXN_PARAM(INVH_TXN_CODE, GLOBAL.COMPANY, 'INV_PRINTER') when (nvl(FRM_SKIP_PRINT, 'N') = 'N') and is_blank(FRM_PRINTER_NAME)    report lower(FRM_REPORT1) with (ParamForm = 'No', Parm_AYr_Code = INVH_AYR_CODE, Parm_Comp_Code = GLOBAL.COMPANY, Parm_Loc_Code = INVH_LOC_CODE, Parm_No_From = INVH_REV_NO, Parm_No_To = INVH_REV_NO, Parm_Txn_Code = INVH_REV_TXN, Parm_User = GLOBAL.USER) when nvl(FRM_SKIP_PRINT, 'N') = 'N'    call PROC_INSERT_TXN_PRINT_LOG1(GLOBAL.COMPANY, INVH_LOC_CODE, INVH_AYR_CODE, INVH_REV_TXN, INVH_REV_NO, INVH_REV_NO, sysdate(), GLOBAL.USER) when nvl(FRM_SKIP_PRINT, 'N') = 'N'    clear form when nvl(FRM_SKIP_PRINT, 'N') = 'N'    warn "Print was skipped" when not (nvl(FRM_SKIP_PRINT, 'N') = 'N')
# 2 statements did not convert.#   line 72
#   SET_CUSTOM_PROPERTY('CTRL.PRINTBEAN',1,'DEFAULT_PRINTER',Nvl(:Frm_Printer_Name,:Mnu_Printer_Name));
#   reason: 'CTRL.PRINTBEAN' is a bean for printing, a Bean Area, and component-tracker.md tier 4.4 rules Bean Areas will not be built: they are a Forms applet's own protocol and the web has no equivalent#   line 74
#   If v_Rep_Status = 'FINISHED' Then
#     If Upper(:Mnu_Dest_Name) = 'PRINTER' Then
#       v_Job_Id := SubStr(v_Rep_Job_Id, length(v_Rep_Server)+2);
#       v_Rep_URL := 'http://' || v_Host_Name || ':' || v_Port || '/reports/rwservlet/getjobid' || v_Job_Id || '?server=' || v_Rep_Server;
#       Message(v_Rep_URL);
#       SET_CUSTOM_PROPERTY('CTRL.PRINTBEAN',1,'FILE_NAME',v_Rep_URL);
#       SET_CUSTOM_PROPERTY('CTRL.PRINTBEAN',1,'PRINT_FILE','');
#     Else
#       If Upper(:Mnu_Dest_Name) = 'CACHE' Then
#         v_Job_Id := SubStr(v_Rep_Job_Id, length(v_Rep_Server)+2);
#         v_Rep_URL := 'http://' || v_Host_Name || ':' || v_Port || '/reports/rwservlet/getjobid' || v_Job_Id || '?server=' || v_Rep_Server;
#         Message(v_Rep_URL);
#         Web.Show_Document(v_Rep_URL, '_blank');
#       End If;
#     End If;
#   Else
#     Message('Error Running Report');
#   End If;
#   reason: the guard reads the local V_REP_STATUS, which is written from something CRL has no expression for: a Forms built-in, a database call or a shape the reader refuses

8 clauses converted, 2 statements refused

38. fmb_invoiceWHEN-VALIDATE-ITEM on T_INV_HEAD.INVH_SMAN_CODEgreen-waste
What you haveWHEN-VALIDATE-ITEM
Declare
  v_Count           Number;
  v_count1          Number;
  v_Status          Char(1);
  v_OS              Number;
  v_Alert           Number;
Begin
  IF :INVH_SMAN_CODE IS NOT NULL THEN
  SELECT Count(*) INTO v_Count
  FROM M_Salesman
  WHERE SMan_Code = :InvH_SMan_Code;
  
  If v_Count = 1 Then
    SELECT SMan_Name, SMan_Status INTO :SMan_Name, v_Status
    FROM M_Salesman
    WHERE SMan_Code = :InvH_SMan_Code;
   
    If Nvl(v_Status, ' ') = 'L' Then
      Show_Message('Inv_Alert', 'Salesman Locked!');
       Raise Form_Trigger_Failure;
    End If;
      
    If Fn_Get_pdc_Status(:Global.Company, :Invh_Sman_Code)=False Then
      Show_Message('Inv_Alert', 'Salesman Locked:Unconfirmed deposited cheque exists!'); 
      Raise Form_Trigger_Failure;
    End If;
/*    
    --Added by Mojish 06/04/14
    v_Count := Fn_Get_Pending_Cust_Cashbill(:InvH_Comp_Code, :InvH_Cust_Code);
    If v_Count > 0 Then
      Show_Message('Inv_Alert', 'Error,Customer Has ' || v_Count ||' Cash Bill Pending!');
      Raise Form_Trigger_Failure; 
    End If;
    ---
     */   

    If Nvl(:Frm_Validate_Cash_Bill,'Y') = 'Y' Then
      If Fn_Get_Pending_CashBill(:Global.Company,:InvH_Sman_Code) > 0 Then
         Show_Message('Inv_Alert', 'Error,Pending CashBill Exists for salesman!');
         Raise Form_Trigger_Failure; 
      End If;
    End If;


    --Validate Salesman Customer Combination
    If :InvH_SMan_Code Is Not Null Then
      SELECT Count(*) INTO v_Count
      FROM M_Customer_Salesman
      WHERE CustS_Comp_Code = :Global.Company
      AND CustS_Divn_Code = :InvH_Divn_Code
      AND CustS_SMan_Code = :InvH_SMan_Code
      AND CustS_Cust_Code = :InvH_Cust_Code;
      
      If v_Count = 0 Then
        If Nvl(:Frm_Auto_Add_Comb,'N')='Y' Then
          Set_Alert_Property('Warn_Alert', Alert_Message_Text, 'Would You like to add  Customer Salesman Combination?');
          v_Alert := Show_Alert('Warn_Alert');
          If v_Alert = Alert_Button1 Then
            INSERT INTO M_Customer_Salesman(CustS_Comp_Code, CustS_Sman_Code, CustS_Cust_Code,
                        CustS_Cr_User, CustS_Cr_Dt) Values(
                        :Global.Company, :InvH_Sman_Code, :InvH_Cust_Code, :Global.User, :Frm_Time_Zone);
                            
          Else
            Show_Message('Inv_Alert', 'Salesman not allowed for Customer!');
            Raise Form_Trigger_Failure;
          End If;
        Else
          Show_Message('Inv_Alert', 'Salesman not allowed for Customer!');
          Raise Form_Trigger_Failure;
        End If;
      End If;
    End If;
    
        ----Validate Salesman Customer Division Combination ---Added By Faisal on 07/09/14
   If Nvl(:Frm_Valid_SmanCust_Divn,'N') = 'Y' Then 
     If :InvH_SMan_Code Is Not Null Then
        SELECT count(*) INTO v_count
        FROM M_Customer_Salesman
        WHERE CustS_Comp_Code = :Global.Company
        AND CustS_Sman_Code = :InvH_SMan_Code
        AND CustS_Cust_Code = :InvH_Cust_Code
        AND CustS_Divn_Code = :InvH_Divn_Code;
   
        If v_count = 0 Then
         Show_Message('Inv_Alert', 'Salesman Customer Division Combination not found!');
         Raise Form_Trigger_Failure;
        End If;
      End If;
   End If;
    
    Validate_Invoice;
    --Warehout out validation by shibu on 23/06/15
    Validate_Wout;
  Else
    Show_Message('Inv_Alert', 'Salesman not Found!');
    Raise Form_Trigger_Failure;
  End If;

END IF;
End;
What you getClause Rule Language
on change of INVH_SMAN_CODE when is_filled(INVH_SMAN_CODE):    from SALESMAN_COUNT(INVH_SMAN_CODE)
        # load-fmb-invoice-t-inv-head-invh-sman-code-when-validate-item-change-0    from SALESMAN(INVH_SMAN_CODE) when SALESMAN_COUNT.COUNT = 1
        # load-fmb-invoice-t-inv-head-invh-sman-code-when-validate-item-change-1    from CUSTOMER_SALESMAN_COUNT(INVH_CUST_CODE, INVH_DIVN_CODE, INVH_SMAN_CODE) when (SALESMAN_COUNT.COUNT = 1) and is_filled(INVH_SMAN_CODE)
        # load-fmb-invoice-t-inv-head-invh-sman-code-when-validate-item-change-2    from CUSTOMER_SALESMAN(INVH_CUST_CODE, INVH_DIVN_CODE, INVH_SMAN_CODE) when ((SALESMAN_COUNT.COUNT = 1) and (FRM_VALID_SMANCUST_DIVN = 'Y')) and is_filled(INVH_SMAN_CODE)
        # load-fmb-invoice-t-inv-head-invh-sman-code-when-validate-item-change-3    set SMAN_NAME to SALESMAN.SMAN_NAME when SALESMAN_COUNT.COUNT = 1    deny when (SALESMAN_COUNT.COUNT = 1) and (SALESMAN.SMAN_STATUS = 'L') else "Salesman Locked!"    deny when ((SALESMAN_COUNT.COUNT = 1) and (nvl(FRM_VALIDATE_CASH_BILL, 'Y') = 'Y')) and (FN_GET_PENDING_CASHBILL(GLOBAL.COMPANY, INVH_SMAN_CODE) > 0) else "Error,Pending CashBill Exists for salesman!"    show alert WARN_ALERT with 'Would You like to add  Customer Salesman Combination?' when (((SALESMAN_COUNT.COUNT = 1) and is_filled(INVH_SMAN_CODE)) and (CUSTOMER_SALESMAN_COUNT.COUNT = 0)) and (FRM_AUTO_ADD_COMB = 'Y')    call WRITE_M_CUSTOMER_SALESMAN_9DEE54AB(GLOBAL.COMPANY, INVH_SMAN_CODE, INVH_CUST_CODE, GLOBAL.USER, FRM_TIME_ZONE) when ((((SALESMAN_COUNT.COUNT = 1) and is_filled(INVH_SMAN_CODE)) and (CUSTOMER_SALESMAN_COUNT.COUNT = 0)) and (FRM_AUTO_ADD_COMB = 'Y')) and (ANSWER.BUTTON = '1')    deny when ((((SALESMAN_COUNT.COUNT = 1) and is_filled(INVH_SMAN_CODE)) and (CUSTOMER_SALESMAN_COUNT.COUNT = 0)) and (FRM_AUTO_ADD_COMB = 'Y')) and not (ANSWER.BUTTON = '1') else "Salesman not allowed for Customer!"    deny when (((SALESMAN_COUNT.COUNT = 1) and is_filled(INVH_SMAN_CODE)) and (CUSTOMER_SALESMAN_COUNT.COUNT = 0)) and not (FRM_AUTO_ADD_COMB = 'Y') else "Salesman not allowed for Customer!"    exists of CUSTOMER_SALESMAN else "Salesman Customer Division Combination not found!" when ((SALESMAN_COUNT.COUNT = 1) and (FRM_VALID_SMANCUST_DIVN = 'Y')) and is_filled(INVH_SMAN_CODE)    call VALIDATE_INVOICE() when SALESMAN_COUNT.COUNT = 1    call VALIDATE_WOUT() when SALESMAN_COUNT.COUNT = 1    deny when not (SALESMAN_COUNT.COUNT = 1) else "Salesman not Found!"
# 1 statement did not convert.#   line 23
#   If Fn_Get_pdc_Status(:Global.Company, :Invh_Sman_Code)=False Then
#     Show_Message('Inv_Alert', 'Salesman Locked:Unconfirmed deposited cheque exists!');
#     Raise Form_Trigger_Failure;
#   End If;
#   reason: the guard reads FALSE, which is one of Forms' own constants and not a value: CRL has no expression for what a property or an alert button is called

11 clauses converted, 1 statement refused

39. fmb_invoiceon unit INIT_FORMgreen-waste
What you havePROGRAM-UNIT
PROCEDURE Init_Form IS
  V_DateTime_Format VarChar2(30);
  V_Rights VarChar2(1000);
  Rg_Id RecordGroup;        --Added By Mojish 06/04/14
  Rg_Id_Promo RecordGroup;  --Added By Mojish 16/04/14
  Rg_Col GroupColumn;       --Added By Mojish 16/04/14
BEGIN

  :Parameter.Insert_Flag := 0; --Added By Mojish 24/03/14
  :Frm_Comp_Name := :Global.Company_Name;
  :Frm_Txn_Type := 'INVOICE';

  --Menu Parameters
  :Mnu_Txn := Fn_Get_Menu_Param(:Parameter.Menu_Code, 'MNU_DEF_TXN_CODE');
  :Mnu_En_Txn := Fn_Get_Menu_Param(:Parameter.Menu_Code, 'MNU_EN_TXN_CODE');
  :Mnu_Dest_Name := Fn_Get_Menu_Param(:Parameter.Menu_Code, 'MNU_DEST_NAME');
  :Mnu_Title := Fn_Get_Menu_Param(:Parameter.Menu_Code, 'MNU_TITLE');
  :Mnu_FormColor := Fn_Get_Menu_Param(:Parameter.Menu_Code, 'MNU_FORMCOLOR');
  :Mnu_Printer_Name := Fn_Get_Menu_Param(:Parameter.Menu_Code, 'MNU_PRINTER');
  
  :Frm_Max_Temp_Limit := Fn_Get_Company_Param(:Global.Company,'COM_MAX_TEMP_LIMIT_PERC');
  :Frm_Show_Stock := Fn_Get_User_Param(:Global.User,'USR_SHOW_STOCK');
  :Frm_Weigh_Bcode_Prefix :=Fn_Get_Company_Param(:Global.Company,'COM_WEIGH_BCODE_PREFIX');
  :Frm_En_Show_History :=  Fn_Get_Stk_Txn_Param(:INVH_Txn_Code,:Global.Company, 'INV_EN_SHOW_HISTORY');
  :Frm_Max_Disc_Perc := Fn_Get_Company_Param(:Global.Company,'COM_MAX_DISC_PERC'); 
  :Frm_Max_Disc_Amt :=Fn_Get_Company_Param(:Global.Company,'COM_MAX_DISC_AMT');
  :Frm_En_Sales_Promo := Fn_Get_Company_Param(:Global.Company,'COM_EN_SALES_PROMOTION');  --Added By Mojish 17/04/14
  :Frm_Validate_Cash_Bill := Fn_Get_Company_Param(:Global.Company,'COMP_VALIDATE_SMAN_CASHBILL');  --Added By Faisal 14/03/15
  ----Added By Faisal On 29/03/2015
  :Frm_Max_Item_Disc_Perc := Fn_Get_Company_Param(:Global.Company,'COM_MAX_ITEM_DISC_PERC'); 
  
  :Frm_En_Inv_Direct_Email := Fn_Get_Company_Param(:Global.Company,'COM_EN_INV_DIRECT_EMAIL'); 
  
  :Frm_Image_Url := Fn_Get_Company_Param(:Global.Company, 'COM_EMP_IMAGE_URL');
  :Frm_Item_Exp_Days := Fn_Get_Company_Param(:Global.Company, 'COM_ITEM_EXP_DAYS');   
  :Frm_Custom_Rate_Fmt := Fn_Get_Company_Param(:Global.Company, 'COM_CUSTOM_RATE_FMT');
  :Frm_Weigh_Item_Prefix := Fn_Get_Company_Param(:Global.Company, 'COM_WEIGH_ITEM_PREFIX');
  :Frm_Usr_Show_Margin := Fn_Get_User_Param(:Global.User,'USR_SHOW_MARGIN_INVOICE');
  :Frm_Usr_Show_Net_Sale_Print := Fn_Get_User_Param(:Global.User,'USR_SHOW_NETSALE_INV_PRINT');
  :Frm_Inv_En_Doc_Dt := Fn_Get_Stk_Txn_Param(:InvH_Txn_Code,:Global.Company, 'INV_EN_DOC_DT'); --Added on 29/Jun/2019, Shebin
  :Frm_Inv_En_Dt := Fn_Get_Stk_Txn_Param(:InvH_Txn_Code,:Global.Company, 'INV_EN_DT');  --Added on 29/Jun/2019, Shebin 
  :Frm_Rights_New := Fn_Get_User_Rights(:Global.Company, :Parameter.Menu_Code, :Global.User, 'New');
  :Frm_Rights_Edt := Fn_Get_User_Rights(:Global.Company, :Parameter.Menu_Code, :Global.User, 'Edit');
  :Frm_Rights_Can := Fn_Get_User_Rights(:Global.Company, :Parameter.Menu_Code, :Global.User, 'Cancel');
  :Frm_Rights_Prn := Fn_Get_User_Rights(:Global.Company, :Parameter.Menu_Code, :Global.User, 'Print');   
  If :Frm_Custom_Rate_Fmt Is Not Null Then
    Set_Item_Property( 'INVI_RATE', Format_Mask, :Frm_Custom_Rate_Fmt); 
  Else
    Set_Item_Property( 'INVI_RATE', Format_Mask, :Global.Curr_Format); 
   End If;

  If Nvl(:Frm_Usr_Show_Margin,'N') ='Y' Then
     Set_Item_Property('InvI_Margin_perc',Visible,Property_True);
  End If;  
  If Nvl(:Frm_Usr_Show_Net_Sale_Print,'N') = 'Y' And :Frm_Rights_Prn > 0 Then
     Set_Item_Property('Pb_Inv_Ret_Print',Visible,Property_True);
  Else
    Set_Item_Property('Pb_Inv_Ret_Print',Visible,Property_False);
  End If;  
  
  
   Proc_Cust_Cur_Format;
  --Show Stock
    
  If Nvl(:Frm_Show_Stock,'N') = 'N' Then
     Set_Item_Property('STOCK_DTL', Displayed, Property_False);
  Else
      Set_Item_Property('STOCK_DTL', Visible, Property_True);
  End If;
  
  
  --Date Formats
  Set_Item_Property('InvH_Dt', Format_Mask, :Global.DateFormat);
  Set_Item_Property('InvH_Doc_Dt', Format_Mask, :Global.DateFormat);
  Set_Item_Property('InvH_Due_Dt', Format_Mask, :Global.DateFormat);
  Set_Item_Property('InvI_Exp_Dt', Format_Mask, :Global.DateFormat);
  Set_Item_Property('InvH_Cr_Dt',  Format_Mask, :Global.Datetime);
  
  
  
  If :Frm_Rights_Can > 0 And :Invh_Rev_No Is Null Then ---Added By John 20/06/18
    Set_Item_Property( 'PB_REVERSE', Enabled, Property_True); 
  End If;
  
  If :Frm_Rights_Prn > 0 Then
    Set_Item_Property('PB_Print', Enabled, Property_True);  
  Else
    Set_Item_Property('PB_Print', Enabled, Property_False);  
  End If;
  
  If :System.Form_Status = 'NEW' Then        ---Added By Mojish 19/04/14
    Rg_Id := Find_Group('RG_TNDR');          ---Added By Mojish 06/04/14
    If Not Id_Null(Rg_Id) Then
      Delete_Group_Row(Rg_Id, ALL_ROWS);
    End If;
    
    Rg_Id_Promo := Find_Group('RG_PROMO');   ---Added By Mojish 16/04/14
    If Not Id_Null(Rg_Id_Promo) Then
      Delete_Group_Row(Rg_Id_Promo, ALL_ROWS);
    End If;
    If Id_Null(Rg_Id_Promo) Then
      Rg_Id_Promo := Create_Group('RG_PROMO');
      Rg_Col := Add_Group_Column(Rg_Id_Promo, 'PromH_Id', NUMBER_COLUMN);
      Rg_Col := Add_Group_Column(Rg_Id_Promo, 'Prom_Item_Id', NUMBER_COLUMN);
      Rg_Col := Add_Group_Column(Rg_Id_Promo, 'Inv_Qty_Bu', NUMBER_COLUMN);
      Rg_Col := Add_Group_Column(Rg_Id_Promo, 'Prom_Qty_Bu', NUMBER_COLUMN);
      Rg_Col := Add_Group_Column(Rg_Id_Promo, 'Prom_Foc_Bu', NUMBER_COLUMN);
      Rg_Col := Add_Group_Column(Rg_Id_Promo, 'Issued_Foc_Bu', NUMBER_COLUMN);
    End If;
  End If;
 END;
What you getClause Rule Language
on unit INIT_FORM:    set FRM_COMP_NAME to GLOBAL.COMPANY_NAME    set FRM_TXN_TYPE to 'INVOICE'    set MNU_TXN to FN_GET_MENU_PARAM(PARAMETER.MENU_CODE, 'MNU_DEF_TXN_CODE')    set MNU_EN_TXN to FN_GET_MENU_PARAM(PARAMETER.MENU_CODE, 'MNU_EN_TXN_CODE')    set MNU_DEST_NAME to FN_GET_MENU_PARAM(PARAMETER.MENU_CODE, 'MNU_DEST_NAME')    set MNU_TITLE to FN_GET_MENU_PARAM(PARAMETER.MENU_CODE, 'MNU_TITLE')    set MNU_FORMCOLOR to FN_GET_MENU_PARAM(PARAMETER.MENU_CODE, 'MNU_FORMCOLOR')    set MNU_PRINTER_NAME to FN_GET_MENU_PARAM(PARAMETER.MENU_CODE, 'MNU_PRINTER')    set FRM_MAX_TEMP_LIMIT to FN_GET_COMPANY_PARAM(GLOBAL.COMPANY, 'COM_MAX_TEMP_LIMIT_PERC')    set FRM_SHOW_STOCK to FN_GET_USER_PARAM(GLOBAL.USER, 'USR_SHOW_STOCK')    set FRM_WEIGH_BCODE_PREFIX to FN_GET_COMPANY_PARAM(GLOBAL.COMPANY, 'COM_WEIGH_BCODE_PREFIX')    set FRM_EN_SHOW_HISTORY to FN_GET_STK_TXN_PARAM(INVH_TXN_CODE, GLOBAL.COMPANY, 'INV_EN_SHOW_HISTORY')    set FRM_MAX_DISC_PERC to FN_GET_COMPANY_PARAM(GLOBAL.COMPANY, 'COM_MAX_DISC_PERC')    set FRM_MAX_DISC_AMT to FN_GET_COMPANY_PARAM(GLOBAL.COMPANY, 'COM_MAX_DISC_AMT')    set FRM_EN_SALES_PROMO to FN_GET_COMPANY_PARAM(GLOBAL.COMPANY, 'COM_EN_SALES_PROMOTION')    set FRM_VALIDATE_CASH_BILL to FN_GET_COMPANY_PARAM(GLOBAL.COMPANY, 'COMP_VALIDATE_SMAN_CASHBILL')    set FRM_MAX_ITEM_DISC_PERC to FN_GET_COMPANY_PARAM(GLOBAL.COMPANY, 'COM_MAX_ITEM_DISC_PERC')    set FRM_EN_INV_DIRECT_EMAIL to FN_GET_COMPANY_PARAM(GLOBAL.COMPANY, 'COM_EN_INV_DIRECT_EMAIL')    set FRM_IMAGE_URL to FN_GET_COMPANY_PARAM(GLOBAL.COMPANY, 'COM_EMP_IMAGE_URL')    set FRM_ITEM_EXP_DAYS to FN_GET_COMPANY_PARAM(GLOBAL.COMPANY, 'COM_ITEM_EXP_DAYS')    set FRM_CUSTOM_RATE_FMT to FN_GET_COMPANY_PARAM(GLOBAL.COMPANY, 'COM_CUSTOM_RATE_FMT')    set FRM_WEIGH_ITEM_PREFIX to FN_GET_COMPANY_PARAM(GLOBAL.COMPANY, 'COM_WEIGH_ITEM_PREFIX')    set FRM_USR_SHOW_MARGIN to FN_GET_USER_PARAM(GLOBAL.USER, 'USR_SHOW_MARGIN_INVOICE')    set FRM_USR_SHOW_NET_SALE_PRINT to FN_GET_USER_PARAM(GLOBAL.USER, 'USR_SHOW_NETSALE_INV_PRINT')    set FRM_INV_EN_DOC_DT to FN_GET_STK_TXN_PARAM(INVH_TXN_CODE, GLOBAL.COMPANY, 'INV_EN_DOC_DT')    set FRM_INV_EN_DT to FN_GET_STK_TXN_PARAM(INVH_TXN_CODE, GLOBAL.COMPANY, 'INV_EN_DT')    set FRM_RIGHTS_NEW to FN_GET_USER_RIGHTS(GLOBAL.COMPANY, PARAMETER.MENU_CODE, GLOBAL.USER, 'New')    set FRM_RIGHTS_EDT to FN_GET_USER_RIGHTS(GLOBAL.COMPANY, PARAMETER.MENU_CODE, GLOBAL.USER, 'Edit')    set FRM_RIGHTS_CAN to FN_GET_USER_RIGHTS(GLOBAL.COMPANY, PARAMETER.MENU_CODE, GLOBAL.USER, 'Cancel')    set FRM_RIGHTS_PRN to FN_GET_USER_RIGHTS(GLOBAL.COMPANY, PARAMETER.MENU_CODE, GLOBAL.USER, 'Print')    state format INVI_RATE as FRM_CUSTOM_RATE_FMT when is_filled(FRM_CUSTOM_RATE_FMT)    state format INVI_RATE as GLOBAL.CURR_FORMAT when not is_filled(FRM_CUSTOM_RATE_FMT)    state show INVI_MARGIN_PERC when FRM_USR_SHOW_MARGIN = 'Y'    state show PB_INV_RET_PRINT when (FRM_USR_SHOW_NET_SALE_PRINT = 'Y') and (FRM_RIGHTS_PRN > 0)    state hide PB_INV_RET_PRINT when not ((FRM_USR_SHOW_NET_SALE_PRINT = 'Y') and (FRM_RIGHTS_PRN > 0))    call PROC_CUST_CUR_FORMAT()    state hide STOCK_DTL when nvl(FRM_SHOW_STOCK, 'N') = 'N'    state show STOCK_DTL when not (nvl(FRM_SHOW_STOCK, 'N') = 'N')    state format INVH_DOC_DT, INVH_DT, INVH_DUE_DT, INVI_EXP_DT as GLOBAL.DATEFORMAT    state format INVH_CR_DT as GLOBAL.DATETIME    state enable PB_REVERSE when (FRM_RIGHTS_CAN > 0) and is_blank(INVH_REV_NO)    state enable PB_PRINT when FRM_RIGHTS_PRN > 0    state disable PB_PRINT when not (FRM_RIGHTS_PRN > 0)
# 4 statements did not convert.#   line 9
#   :Parameter.Insert_Flag := 0;
#   reason: set writes a field or a global and there is no third spelling, so a write to a form parameter is refused: item 20 rules a parameter read-only#   line 93
#   If Not Id_Null(Rg_Id) Then
#     Delete_Group_Row(Rg_Id, ALL_ROWS);
#   End If;
#   reason: the guard reads the local RG_ID, which is written from FIND_GROUP, and FIND_GROUP is a Forms built-in, which no FormConnect document declares because no database holds it, and no program unit of this form declares one either, so there is no body to inline under the caller's point and item and nothing to bridge to#   line 98
#   If Not Id_Null(Rg_Id_Promo) Then
#     Delete_Group_Row(Rg_Id_Promo, ALL_ROWS);
#   End If;
#   reason: the guard reads the local RG_ID_PROMO, which is written from FIND_GROUP, and FIND_GROUP is a Forms built-in, which no FormConnect document declares because no database holds it, and no program unit of this form declares one either, so there is no body to inline under the caller's point and item and nothing to bridge to#   line 101
#   If Id_Null(Rg_Id_Promo) Then
#     Rg_Id_Promo := Create_Group('RG_PROMO');
#     Rg_Col := Add_Group_Column(Rg_Id_Promo, 'PromH_Id', NUMBER_COLUMN);
#     Rg_Col := Add_Group_Column(Rg_Id_Promo, 'Prom_Item_Id', NUMBER_COLUMN);
#     Rg_Col := Add_Group_Column(Rg_Id_Promo, 'Inv_Qty_Bu', NUMBER_COLUMN);
#     Rg_Col := Add_Group_Column(Rg_Id_Promo, 'Prom_Qty_Bu', NUMBER_COLUMN);
#     Rg_Col := Add_Group_Column(Rg_Id_Promo, 'Prom_Foc_Bu', NUMBER_COLUMN);
#     Rg_Col := Add_Group_Column(Rg_Id_Promo, 'Issued_Foc_Bu', NUMBER_COLUMN);
#   End If;
#   reason: the guard reads the local RG_ID_PROMO, which is written from FIND_GROUP, and FIND_GROUP is a Forms built-in, which no FormConnect document declares because no database holds it, and no program unit of this form declares one either, so there is no body to inline under the caller's point and item and nothing to bridge to

43 clauses converted, 4 statements refused

40. fmb_invoiceon unit GET_PROMOTION_FOCgreen-waste
What you havePROGRAM-UNIT
PROCEDURE Get_Promotion_Foc(p_Check_Flag In Varchar2) IS
  Cursor CurFoc Is Select PromFi_Id, PromFi_PromH_Id From T_Prom_Foc_Item Where PromFi_Item_Code = :InvI_Item_Code;
  rg_Id_Promo RecordGroup;
  v_Row_Num   Number;
  v_Allow_Qty Number := 0;
  v_PromH_Id  Number;
  v_Inv_Qty_Bu  Number :=0;
  v_Prom_Inv_Bu Number;
  v_Prom_Foc_Bu Number;
  v_Issue_Foc_Bu Number;
  v_Inv_Foc_Bu Number;
  v_Old_Foc_Bu Number;
BEGIN
  If :InvI_Prom_Foc_Same Is Null And Nvl(:Frm_En_Sales_Promo, 'Y') = 'Y' Then      --Foc Item Then
    rg_Id_Promo := Find_Group('RG_PROMO'); 
    For f In CurFoc Loop
      v_Row_Num := Get_Group_Row_Count(rg_Id_Promo);      --Modified by Mojish on 20/12/14 --Multiple FOC of Same Item
      While(v_Row_Num > 0) Loop
      
        If f.PromFi_PromH_Id = Nvl(Get_Group_Number_Cell('RG_PROMO.PromH_Id', v_Row_Num), 0) Then
          v_PromH_Id := Get_Group_Number_Cell('RG_PROMO.PromH_Id', v_Row_Num);
          v_Allow_Qty := Get_Group_Number_Cell('RG_PROMO.Inv_Qty_Bu', v_Row_Num);
          v_Inv_Qty_Bu := v_Inv_Qty_Bu + v_Allow_Qty;
          v_Prom_Inv_Bu := Get_Group_Number_Cell('RG_PROMO.Prom_Inv_Bu', v_Row_Num);
          v_Prom_Foc_Bu := Get_Group_Number_Cell('RG_PROMO.Prom_Foc_Bu', v_Row_Num);
          :InvI_Prom_Item_Id := Get_Group_Number_Cell('RG_PROMO.Prom_Item_Id', v_Row_Num);
          :InvI_Prom_Foc_Same := 'N';
          :PromH_Id := v_PromH_Id;
          v_Issue_Foc_Bu := Get_Group_Number_Cell('RG_PROMO.Issued_Foc_Bu', v_Row_Num);   --Same foc qty in same promotion head,  foc Already iisued qty
        End If;
        v_Row_Num := v_Row_Num - 1;
      End Loop;
    End Loop;
       
    v_Allow_Qty := Floor(Nvl(v_Inv_Qty_Bu, 0)/Nvl(v_Prom_Inv_Bu, 1)) * Nvl(v_Prom_Foc_Bu, 0);
    v_Inv_Foc_Bu := Nvl(:InvI_Foc_Qty * :Max_Loose, 0) + Nvl(:InvI_Foc_Loose, 0);
    v_Old_Foc_Bu := Nvl(:Old_Foc_Qty * :Max_Loose, 0) + Nvl(:Old_Foc_Loose, 0);
    
    If v_Inv_Foc_Bu > 0  And (v_Allow_Qty < (v_Inv_Foc_Bu - v_Old_Foc_Bu) + Nvl(v_Issue_Foc_Bu, 0) Or v_Allow_Qty < v_Inv_Foc_Bu) 
                   And Nvl(:InvI_Prom_Foc_Same, 'X') = 'N' Then              --Added By Mojish on 22/12/14
      Show_Message('Inv_Alert', 'Foc qty is exceeded!, Item Code is '||:InvI_Item_Code);
      Raise Form_Trigger_Failure;
    ElsIf v_Inv_Foc_Bu <> v_Old_Foc_Bu And v_Inv_Qty_Bu > 0 Then     -- Foc Already Entered Then
      :Old_Foc_Qty := :InvI_Foc_Qty;
      :Old_Foc_loose := :InvI_Foc_Loose;
      v_Row_Num := Get_Group_Row_Count(rg_Id_Promo);
      While(v_Row_Num > 0) Loop                                      -- Updating Issued Foc Qty Same Promo Head Item
        If v_PromH_Id = Get_Group_Number_Cell('RG_PROMO.PromH_Id', v_Row_Num) Then
          Set_Group_Number_Cell('RG_PROMO.Issued_Foc_Bu', v_Row_Num, (Nvl(v_Issue_Foc_Bu, 0) + (v_Inv_Foc_Bu - v_Old_Foc_Bu))); 
        End If;
        v_Row_Num := v_Row_Num - 1;
      End Loop;
      v_Issue_Foc_Bu := Nvl(v_Issue_Foc_Bu, 0) + (v_Inv_Foc_Bu - v_Old_Foc_Bu);
    End If;
    
    If (v_Allow_Qty - Nvl(v_Issue_Foc_Bu, 0)) > 0 And v_Inv_Qty_Bu > 0 Then   -- Foc Qty is Available
      If v_Inv_Foc_Bu = 0 And v_Inv_Foc_Bu = v_Old_Foc_Bu Then        -- Foc Qty Not Entered till
        :InvI_Foc_Loose := (v_Allow_Qty - Nvl(v_Issue_Foc_Bu, 0));
        :Old_Foc_loose := :InvI_Foc_Loose;
        v_Row_Num := Get_Group_Row_Count(rg_Id_Promo);
        While(v_Row_Num > 0) Loop                              -- Updating Issued Foc Qty Same Promo Head Item
          If v_PromH_Id = Get_Group_Number_Cell('RG_PROMO.PromH_Id', v_Row_Num) Then
            Set_Group_Number_Cell('RG_PROMO.Issued_Foc_Bu', v_Row_Num, (Nvl(v_Issue_Foc_Bu, 0) + Nvl(:InvI_Foc_Loose, 0))); 
          End If;
          v_Row_Num := v_Row_Num - 1;
        End Loop;
        
        If Nvl(:InvI_Foc_Loose, 0) >= Nvl(:Max_Loose, 1) Then  -- Convert Qty to Carton and Loose
          :InvI_Foc_Qty := Floor(:InvI_Foc_Loose / Nvl(:Max_Loose, 1));
          :Old_Foc_Qty := :InvI_Foc_Qty;
          :InvI_Foc_Loose := Mod(:InvI_Foc_Loose, Nvl(:Max_Loose, 1));
          :Old_Foc_loose := :InvI_Foc_Loose;
        End If;  
      End If;   -- Foc Qty Not Entered till
    End If;    -- Foc Qty is Available
  End If;      -- Same item has no Foc Then

  /************* Checking Foc is Issued Or Not **************/
  If Nvl(:InvI_Prom_Item_Id, 0) > 0 And Nvl(:Frm_En_Sales_Promo, 'Y') = 'Y' 
    And Nvl(:InvI_Prom_Foc_Same, 'X') = 'N' And Upper(p_Check_Flag) = 'INSERT' Then   
    rg_Id_Promo := Find_Group('RG_PROMO');  
    v_Row_Num := Get_Group_Row_Count(rg_Id_Promo);
    v_Inv_Qty_Bu := 0;              --Added By Mojish on 22/12/14
    While (v_Row_Num > 0) Loop
      If :PromH_Id = Get_Group_Number_Cell('RG_PROMO.PromH_Id', v_Row_Num) Then
        v_Allow_Qty := Get_Group_Number_Cell('RG_PROMO.Inv_Qty_Bu', v_Row_Num);
        v_Inv_Qty_Bu := v_Inv_Qty_Bu + v_Allow_Qty;
        v_Prom_Inv_Bu := Get_Group_Number_Cell('RG_PROMO.Prom_Inv_Bu', v_Row_Num);
        v_Prom_Foc_Bu := Get_Group_Number_Cell('RG_PROMO.Prom_Foc_Bu', v_Row_Num);
        v_Issue_Foc_Bu := Get_Group_Number_Cell('RG_PROMO.Issued_Foc_Bu', v_Row_Num);   --Same foc qty in same promotion head,  foc Already iisued qty
      End If;
      v_Row_Num := v_Row_Num - 1;
    End Loop;
    v_Inv_Foc_Bu := Nvl(:InvI_Foc_Qty * :Max_Loose, 0) + Nvl(:InvI_Foc_Loose, 0);
    If v_Inv_Qty_Bu = 0 And v_Inv_Foc_Bu > 0 Then
      Show_Message('Inv_Alert', 'Corresponding foc qualified item code not found!, Item Code is '||:InvI_Item_Code);
      Raise Form_Trigger_Failure;  
    End If;
    
    If v_Inv_Qty_Bu > 0 Then   --Invoice Qty > 0
      v_Allow_Qty := Floor(Nvl(v_Inv_Qty_Bu, 0)/Nvl(v_Prom_Inv_Bu, 1)) * Nvl(v_Prom_Foc_Bu, 0);
      If v_Issue_Foc_Bu < v_Allow_Qty Then
        Show_Message('Inv_Alert', 'Eligible for Foc Qty (Foc not issued/ Less Foc Qty)!, Item Code is '||:InvI_Item_Code);
        Raise Form_Trigger_Failure;  
      ElsIf v_Allow_Qty < v_Issue_Foc_Bu Then
        Show_Message('Inv_Alert', 'Foc Qty is exceeded!, Item Code is '||:InvI_Item_Code);
        Raise Form_Trigger_Failure;  
      End If;    
    End If;                    --Invoice Qty > 0
  End If;
  /************* End of Checking Foc is Issued Or Not  **************/
END;
What you getClause Rule Language
on unit GET_PROMOTION_FOC(P_CHECK_FLAG):
# 6 statements did not convert.#   line 16
#   For f In CurFoc Loop
#         v_Row_Num := Get_Group_Row_Count(rg_Id_Promo);       
#         While(v_Row_Num > 0) Loop
#         
#           If f.PromFi_PromH_Id = Nvl(Get_Group_Number_Cell('RG_PROMO.PromH_Id', v_Row_Num), 0) Then
#             v_PromH_Id := Get_Group_Number_Cell('RG_PROMO.PromH_Id', v_Row_Num);
#             v_Allow_Qty := Get_Group_Number_Cell('RG_PROMO.Inv_Qty_Bu', v_Row_Num);
#             v_Inv_Qty_Bu := v_Inv_Qty_Bu + v_Allow_Qty;
#             v_Prom_Inv_Bu := Get_Group_Number_Cell('RG_PROMO.Prom_Inv_Bu', v_Row_Num);
#             v_Prom_Foc_Bu := Get_Group_Number_Cell('RG_PROMO.Prom_Foc_Bu', v_Row_Num);
#             :InvI_Prom_Item_Id := Get_Group_Number_Cell('RG_PROMO.Prom_Item_Id', v_Row_Num);
#             :InvI_Prom_Foc_Same := 'N';
#             :PromH_Id := v_PromH_Id;
#             v_Issue_Foc_Bu := Get_Group_Number_Cell('RG_PROMO.Issued_Foc_Bu', v_Row_Num);    
#           End If;
#           v_Row_Num := v_Row_Num - 1;
#         End Loop;
#       End Loop;
#   reason: it holds a loop over whatever (v_Row_Num > 0) is true of inside a loop over a query, and a collection operation reads one collection#   line 39
#   If v_Inv_Foc_Bu > 0  And (v_Allow_Qty < (v_Inv_Foc_Bu - v_Old_Foc_Bu) + Nvl(v_Issue_Foc_Bu, 0) Or v_Allow_Qty < v_Inv_Foc_Bu) 
#                      And Nvl(:InvI_Prom_Foc_Same, 'X') = 'N' Then
#     Show_Message('Inv_Alert', 'Foc qty is exceeded!, Item Code is '||:InvI_Item_Code);
#     Raise Form_Trigger_Failure;
#   Else
#     If v_Inv_Foc_Bu <> v_Old_Foc_Bu And v_Inv_Qty_Bu > 0 Then
#       :Old_Foc_Qty := :InvI_Foc_Qty;
#       :Old_Foc_loose := :InvI_Foc_Loose;
#       v_Row_Num := Get_Group_Row_Count(rg_Id_Promo);
#       While(v_Row_Num > 0) Loop                                       
#           If v_PromH_Id = Get_Group_Number_Cell('RG_PROMO.PromH_Id', v_Row_Num) Then
#             Set_Group_Number_Cell('RG_PROMO.Issued_Foc_Bu', v_Row_Num, (Nvl(v_Issue_Foc_Bu, 0) + (v_Inv_Foc_Bu - v_Old_Foc_Bu))); 
#           End If;
#           v_Row_Num := v_Row_Num - 1;
#         End Loop;
#       v_Issue_Foc_Bu := Nvl(v_Issue_Foc_Bu, 0) + (v_Inv_Foc_Bu - v_Old_Foc_Bu);
#     End If;
#   End If;
#   reason: the guard reads the local V_ALLOW_QTY, which is written from something CRL has no expression for: a Forms built-in, a database call or a shape the reader refuses#   line 56
#   If (v_Allow_Qty - Nvl(v_Issue_Foc_Bu, 0)) > 0 And v_Inv_Qty_Bu > 0 Then
#     If v_Inv_Foc_Bu = 0 And v_Inv_Foc_Bu = v_Old_Foc_Bu Then
#       :InvI_Foc_Loose := (v_Allow_Qty - Nvl(v_Issue_Foc_Bu, 0));
#       :Old_Foc_loose := :InvI_Foc_Loose;
#       v_Row_Num := Get_Group_Row_Count(rg_Id_Promo);
#       While(v_Row_Num > 0) Loop                               
#             If v_PromH_Id = Get_Group_Number_Cell('RG_PROMO.PromH_Id', v_Row_Num) Then
#               Set_Group_Number_Cell('RG_PROMO.Issued_Foc_Bu', v_Row_Num, (Nvl(v_Issue_Foc_Bu, 0) + Nvl(:InvI_Foc_Loose, 0))); 
#             End If;
#             v_Row_Num := v_Row_Num - 1;
#           End Loop;
#       If Nvl(:InvI_Foc_Loose, 0) >= Nvl(:Max_Loose, 1) Then
#         :InvI_Foc_Qty := Floor(:InvI_Foc_Loose / Nvl(:Max_Loose, 1));
#         :Old_Foc_Qty := :InvI_Foc_Qty;
#         :InvI_Foc_Loose := Mod(:InvI_Foc_Loose, Nvl(:Max_Loose, 1));
#         :Old_Foc_loose := :InvI_Foc_Loose;
#       End If;
#     End If;
#   End If;
#   reason: the guard reads the local V_ALLOW_QTY, which is written from something CRL has no expression for: a Forms built-in, a database call or a shape the reader refuses#   line 84
#   While (v_Row_Num > 0) Loop
#         If :PromH_Id = Get_Group_Number_Cell('RG_PROMO.PromH_Id', v_Row_Num) Then
#           v_Allow_Qty := Get_Group_Number_Cell('RG_PROMO.Inv_Qty_Bu', v_Row_Num);
#           v_Inv_Qty_Bu := v_Inv_Qty_Bu + v_Allow_Qty;
#           v_Prom_Inv_Bu := Get_Group_Number_Cell('RG_PROMO.Prom_Inv_Bu', v_Row_Num);
#           v_Prom_Foc_Bu := Get_Group_Number_Cell('RG_PROMO.Prom_Foc_Bu', v_Row_Num);
#           v_Issue_Foc_Bu := Get_Group_Number_Cell('RG_PROMO.Issued_Foc_Bu', v_Row_Num);    
#         End If;
#         v_Row_Num := v_Row_Num - 1;
#       End Loop;
#   reason: it repeats while (v_Row_Num > 0) holds, and a condition is not a collection: crl-loops.md's six operations each read a finite collection whose rows are known before the first pass, and a while loop states only when it stops#   line 95
#   If v_Inv_Qty_Bu = 0 And v_Inv_Foc_Bu > 0 Then
#     Show_Message('Inv_Alert', 'Corresponding foc qualified item code not found!, Item Code is '||:InvI_Item_Code);
#     Raise Form_Trigger_Failure;
#   End If;
#   reason: the guard reads the local V_INV_QTY_BU, which a loop body above it counts with: `V_INV_QTY_BU := V_INV_QTY_BU + V_ALLOW_QTY`, so what it holds here is the loop's own arithmetic, and crl-loops.md states the collection operation and not the bookkeeping around it#   line 100
#   If v_Inv_Qty_Bu > 0 Then
#     v_Allow_Qty := Floor(Nvl(v_Inv_Qty_Bu, 0)/Nvl(v_Prom_Inv_Bu, 1)) * Nvl(v_Prom_Foc_Bu, 0);
#     If v_Issue_Foc_Bu < v_Allow_Qty Then
#       Show_Message('Inv_Alert', 'Eligible for Foc Qty (Foc not issued/ Less Foc Qty)!, Item Code is '||:InvI_Item_Code);
#       Raise Form_Trigger_Failure;
#     Else
#       If v_Allow_Qty < v_Issue_Foc_Bu Then
#         Show_Message('Inv_Alert', 'Foc Qty is exceeded!, Item Code is '||:InvI_Item_Code);
#         Raise Form_Trigger_Failure;
#       End If;
#     End If;
#   End If;
#   reason: the guard reads the local V_INV_QTY_BU, which a loop body above it counts with: `V_INV_QTY_BU := V_INV_QTY_BU + V_ALLOW_QTY`, so what it holds here is the loop's own arithmetic, and crl-loops.md states the collection operation and not the bookkeeping around it

0 clauses converted, 6 statements refused

41. fmb_invoiceon unit VALIDATE_PROMOTION_QTYgreen-waste
What you havePROGRAM-UNIT
PROCEDURE Validate_Promotion_Qty IS
  v_Prom_Limit_Qty_Bu Number;
  v_Prom_Qty_Bu       Number;
  v_Prom_Foc_Qty_Bu   Number;
  v_InvI_Qty_Bu       Number;
  v_Alert             Number;
  v_Ref               VarChar2(4);
  v_Rate              Number;
  v_Rec_Num           Number;
  rg_Id_Promo         RecordGroup;
  v_Rg_row            Number;
BEGIN
  If Nvl(:Frm_Cost_Price_Billing, 'N') = 'Y' AND (Nvl(:InvI_PLU_Code, ' ') NOT LIKE :Frm_Weigh_Bcode_Prefix||'%' AND :Frm_Weigh_Bcode_Prefix IS Not Null) 
     -- Added by faisal for handling cost price billing in catering
      And (NVL (:Invi_Item_Code, ' ') NOT LIKE :Frm_Weigh_Item_Prefix || '%' And :Frm_Weigh_Item_Prefix IS NOT Null) Then 
      -- Added 'And (NVL (:Invi_Item_Code, ' ') NOT LIKE.... condition, For Weighing Item, #50390,when validate error, invi_rate goes 0,Referred whn validate item code. Shebin,17/Sep/2019 
     Get_PRate;
     :Rate_Flag :='Y';
  ElsIf (Nvl(:InvI_PLU_Code, ' ') LIKE :Frm_Weigh_Bcode_Prefix||'%' AND :Frm_Weigh_Bcode_Prefix IS Not Null) Then
    v_Ref := SubStr(:InvI_PLU_Code, 3, 4);
    v_Rate := SubStr(:InvI_PLU_Code, 7, 6)/100;
    --:InvI_Qty := 1;
    --:InvI_Rate := v_Rate;
  ElsIf NVL(:Frm_Cost_Price_Billing, 'N') = 'Y' 
      and Nvl(:InvH_Btrn_Flag,'D') ='B' 
      and NVL (:Invi_Item_Code, ' ')  LIKE :Frm_Weigh_Item_Prefix || '%' 
      and :Frm_Weigh_Item_Prefix IS NOT Null  Then
      Get_PRate;
      :Rate_Flag :='Y';
   ElsIf NVL (:Frm_Cost_Price_Billing, 'N') = 'Y' 
      And  (Nvl(:Invi_Item_Code, ' ') LIKE :Frm_Weigh_Item_Prefix || '%' 
      And :Frm_Weigh_Item_Prefix IS NOT Null) and Nvl(:Invi_Rate,0) = 0  Then
                         Proc_Get_Sale_Price (:Global.Company,
                            :Invh_Divn_Code,
                            :Invh_PlH_Code,:InvH_Alt_PlH_Code,
                            :Invi_Item_Code,
                            :Invi_Uom_Code,
                            :Invh_Cust_Code,
                            :Invh_Curr_Code,
                            Nvl (:Frm_Inc_Default_Price, 'Y'),
                            :Invh_Dt,
                            :Invi_Prom_Item_Id,
                            :Promh_Id,
                            :Invi_Rate,
                            :Invi_Disc_Perc,
                            :Invi_Disc_Amt,
                            :Invi_Prom_Bu,
                            :Invi_Prom_Foc_Bu,
                            :Invi_Prom_Qty_Limit_Bu,
                            :Invi_Prom_Qty_Inv_Bu,
                            :Invi_Prom_Foc_Same);   
   Else
    Proc_Get_Sale_Price(:Global.Company,:InvH_Divn_Code, :Invh_PlH_Code,:InvH_Alt_PlH_Code,
            :InvI_Item_Code, :InvI_Uom_Code, :InvH_Cust_Code,:InvH_Curr_Code, Nvl(:Frm_Inc_Default_Price, 'Y'),
            :InvH_Dt, :InvI_Prom_Item_Id, :PromH_Id, :InvI_Rate, :InvI_Disc_Perc, :InvI_Disc_Amt, :InvI_Prom_Bu, :InvI_Prom_Foc_Bu, 
            :InvI_Prom_Qty_Limit_Bu, :InvI_Prom_Qty_Inv_Bu, :InvI_Prom_Foc_Same);
   End If;
   
  If Nvl(:InvI_Prom_Item_Id, 0) > 0 And (Nvl(:InvI_Qty, 0) + Nvl(:InvI_Loose, 0)) > 0 Then
      :InvI_Foc_Qty := 0;
      :InvI_Foc_Loose := 0;
      If Nvl(:InvI_Prom_Qty_Limit_Bu, 0) > 0 Then   --Check For Limit Qty Exceeded
        v_Prom_Limit_Qty_Bu := Nvl(:InvI_Prom_Qty_Inv_Bu, 0) + (Nvl(:InvI_Qty, 0) * Nvl(:Max_Loose, 0)) +  Nvl(:InvI_Loose, 0);
        If :InvI_Prom_Qty_Limit_Bu < v_Prom_Limit_Qty_Bu  Then
          Set_Alert_Property('CONF_PROM_ALERT', Alert_Message_Text, 
                        'Promotion Qty Exceed. Maximum Allowed Qty(BU) ='||To_Char(:InvI_Prom_Qty_Limit_Bu  - Nvl(:InvI_Prom_Qty_Inv_Bu, 0)));
          v_Alert := Show_Alert('CONF_PROM_ALERT');
          
          If v_Alert = Alert_Button1 Then                      --Promotion Qty
            :InvI_Loose := :InvI_Prom_Qty_Limit_Bu  - Nvl(:InvI_Prom_Qty_Inv_Bu, 0);
            If Nvl(:InvI_Loose, 0) >= Nvl(:Max_Loose, 1) Then  --Convert Qty to Carton and Loose
              :InvI_Qty := Floor(:InvI_Loose / Nvl(:Max_Loose, 1));
              :InvI_Loose := Mod(:InvI_Loose, Nvl(:Max_Loose, 1));
            End If;  
          ElsIf v_Alert = Alert_Button2 Then                   --Without Promotion
            :InvI_Prom_Item_Id := Null;
            :InvI_Prom_Bu := 0;     
            :InvI_Prom_Foc_Bu := 0; :InvI_Prom_Foc_Same := Null;
            :InvI_Foc_Qty := 0;      :InvI_Foc_Loose := 0;
          End If;
        End if;
      End If;
      
      If Nvl(:InvI_Prom_Foc_Bu, 0) > 0 Then   -- Checking Free Qty 
        v_InvI_Qty_Bu := (Nvl(:InvI_Qty, 0) * Nvl(:Max_Loose, 0)) + Nvl(:InvI_Loose, 0);
        v_Prom_Qty_Bu := Nvl(:InvI_Prom_Bu, 0);
        v_Prom_Foc_Qty_Bu := Nvl(:InvI_Prom_Foc_Bu, 0);
        
        If Nvl(:InvI_Prom_Foc_Same, 'X') = 'N' Then 
          rg_Id_Promo := Find_Group('RG_PROMO'); 
          v_Rec_Num := Get_Block_Property('T_Inv_Item', Current_Record);
          If v_Rec_Num <> Nvl(Get_Group_Row_Count(rg_Id_Promo), 0) Then
            v_Rg_Row := Get_Group_Row_Count(rg_Id_Promo);
            v_Rg_Row := Nvl(v_Rg_Row, 0) + 1;
            While (v_Rg_Row <= v_Rec_Num) Loop
              Add_Group_Row(rg_Id_Promo, v_Rg_Row);
              v_Rg_Row := v_Rg_Row + 1;
            End Loop;  
            Set_Group_Number_Cell('RG_PROMO.Issued_Foc_Bu', v_Rec_Num, 0); 
          End If;
          Set_Group_Number_Cell('RG_PROMO.PromH_Id', v_Rec_Num, :PromH_Id); 
          Set_Group_Number_Cell('RG_PROMO.Prom_Item_Id', v_Rec_Num, :InvI_Prom_Item_Id); 
          Set_Group_Number_Cell('RG_PROMO.Inv_Qty_Bu', v_Rec_Num, v_InvI_Qty_Bu); 
          Set_Group_Number_Cell('RG_PROMO.Prom_Inv_Bu', v_Rec_Num, :InvI_Prom_Bu); 
          Set_Group_Number_Cell('RG_PROMO.Prom_Foc_Bu', v_Rec_Num, :InvI_Prom_Foc_Bu); 
        End If;
        
        If Nvl(:InvI_Prom_Foc_Same, 'X') = 'Y' Then     --:InvI_Prom_Foc_Same Is Y Then Same item has FOC, Or 'N' Then Other item has FOC or Null Then no Foc
          :InvI_Foc_Loose := Floor(v_InvI_Qty_Bu/v_Prom_Qty_Bu) * v_Prom_Foc_Qty_Bu;

          If Nvl(:InvI_Foc_Loose, 0) >= Nvl(:Max_Loose, 1) Then  --Convert Qty to Carton and Loose
            :InvI_Foc_Qty := Floor(:InvI_Foc_Loose / Nvl(:Max_Loose, 1));
            :InvI_Foc_Loose := Mod(:InvI_Foc_Loose, Nvl(:Max_Loose, 1));
          End If;
        End If;
      End if;
  End If;
END;
What you getClause Rule Language
on unit VALIDATE_PROMOTION_QTY:    call GET_PRATE() when ((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(INVI_ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX))    set RATE_FLAG to 'Y' when ((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(INVI_ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX))    call GET_PRATE() when (not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(INVI_ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX))) and not ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((((FRM_COST_PRICE_BILLING = 'Y') and (INVH_BTRN_FLAG = 'B')) and (nvl(INVI_ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%'))) and is_filled(FRM_WEIGH_ITEM_PREFIX))    set RATE_FLAG to 'Y' when (not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(INVI_ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX))) and not ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((((FRM_COST_PRICE_BILLING = 'Y') and (INVH_BTRN_FLAG = 'B')) and (nvl(INVI_ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%'))) and is_filled(FRM_WEIGH_ITEM_PREFIX))    call PROC_GET_SALE_PRICE(GLOBAL.COMPANY, INVH_DIVN_CODE, INVH_PLH_CODE, INVH_ALT_PLH_CODE, INVI_ITEM_CODE, INVI_UOM_CODE, INVH_CUST_CODE, INVH_CURR_CODE, nvl(FRM_INC_DEFAULT_PRICE, 'Y'), INVH_DT, INVI_PROM_ITEM_ID, PROMH_ID, INVI_RATE, INVI_DISC_PERC, INVI_DISC_AMT, INVI_PROM_BU, INVI_PROM_FOC_BU, INVI_PROM_QTY_LIMIT_BU, INVI_PROM_QTY_INV_BU, INVI_PROM_FOC_SAME) when ((not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(INVI_ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX))) and not ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and not ((((FRM_COST_PRICE_BILLING = 'Y') and (INVH_BTRN_FLAG = 'B')) and (nvl(INVI_ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%'))) and is_filled(FRM_WEIGH_ITEM_PREFIX))) and (((FRM_COST_PRICE_BILLING = 'Y') and ((nvl(INVI_ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX))) and (nvl(INVI_RATE, 0) = 0))    call PROC_GET_SALE_PRICE(GLOBAL.COMPANY, INVH_DIVN_CODE, INVH_PLH_CODE, INVH_ALT_PLH_CODE, INVI_ITEM_CODE, INVI_UOM_CODE, INVH_CUST_CODE, INVH_CURR_CODE, nvl(FRM_INC_DEFAULT_PRICE, 'Y'), INVH_DT, INVI_PROM_ITEM_ID, PROMH_ID, INVI_RATE, INVI_DISC_PERC, INVI_DISC_AMT, INVI_PROM_BU, INVI_PROM_FOC_BU, INVI_PROM_QTY_LIMIT_BU, INVI_PROM_QTY_INV_BU, INVI_PROM_FOC_SAME) when ((not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(INVI_ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX))) and not ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and not ((((FRM_COST_PRICE_BILLING = 'Y') and (INVH_BTRN_FLAG = 'B')) and (nvl(INVI_ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%'))) and is_filled(FRM_WEIGH_ITEM_PREFIX))) and not (((FRM_COST_PRICE_BILLING = 'Y') and ((nvl(INVI_ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX))) and (nvl(INVI_RATE, 0) = 0))    set INVI_FOC_QTY to 0 when (nvl(INVI_PROM_ITEM_ID, 0) > 0) and ((nvl(INVI_QTY, 0) + nvl(INVI_LOOSE, 0)) > 0)    set INVI_FOC_LOOSE to 0 when (nvl(INVI_PROM_ITEM_ID, 0) > 0) and ((nvl(INVI_QTY, 0) + nvl(INVI_LOOSE, 0)) > 0)    show alert CONF_PROM_ALERT with 'Promotion Qty Exceed. Maximum Allowed Qty(BU) =' || to_char(INVI_PROM_QTY_LIMIT_BU - nvl(INVI_PROM_QTY_INV_BU, 0)) when (((nvl(INVI_PROM_ITEM_ID, 0) > 0) and ((nvl(INVI_QTY, 0) + nvl(INVI_LOOSE, 0)) > 0)) and (nvl(INVI_PROM_QTY_LIMIT_BU, 0) > 0)) and (INVI_PROM_QTY_LIMIT_BU < ((nvl(INVI_PROM_QTY_INV_BU, 0) + (nvl(INVI_QTY, 0) * nvl(MAX_LOOSE, 0))) + nvl(INVI_LOOSE, 0)))    when ((((nvl(INVI_PROM_ITEM_ID, 0) > 0) and ((nvl(INVI_QTY, 0) + nvl(INVI_LOOSE, 0)) > 0)) and (nvl(INVI_PROM_QTY_LIMIT_BU, 0) > 0)) and (INVI_PROM_QTY_LIMIT_BU < ((nvl(INVI_PROM_QTY_INV_BU, 0) + (nvl(INVI_QTY, 0) * nvl(MAX_LOOSE, 0))) + nvl(INVI_LOOSE, 0)))) and (ANSWER.BUTTON = '1')    when (((((nvl(INVI_PROM_ITEM_ID, 0) > 0) and ((nvl(INVI_QTY, 0) + nvl(INVI_LOOSE, 0)) > 0)) and (nvl(INVI_PROM_QTY_LIMIT_BU, 0) > 0)) and (INVI_PROM_QTY_LIMIT_BU < ((nvl(INVI_PROM_QTY_INV_BU, 0) + (nvl(INVI_QTY, 0) * nvl(MAX_LOOSE, 0))) + nvl(INVI_LOOSE, 0)))) and not (ANSWER.BUTTON = '1')) and (ANSWER.BUTTON = '2')    set INVI_FOC_LOOSE to floor(((nvl(INVI_QTY, 0) * nvl(MAX_LOOSE, 0)) + nvl(INVI_LOOSE, 0)) / nvl(INVI_PROM_BU, 0)) * nvl(INVI_PROM_FOC_BU, 0) when (((nvl(INVI_PROM_ITEM_ID, 0) > 0) and ((nvl(INVI_QTY, 0) + nvl(INVI_LOOSE, 0)) > 0)) and (nvl(INVI_PROM_FOC_BU, 0) > 0)) and (INVI_PROM_FOC_SAME = 'Y')    set INVI_FOC_QTY to floor(INVI_FOC_LOOSE / nvl(MAX_LOOSE, 1)) when ((((nvl(INVI_PROM_ITEM_ID, 0) > 0) and ((nvl(INVI_QTY, 0) + nvl(INVI_LOOSE, 0)) > 0)) and (nvl(INVI_PROM_FOC_BU, 0) > 0)) and (INVI_PROM_FOC_SAME = 'Y')) and (nvl(INVI_FOC_LOOSE, 0) >= nvl(MAX_LOOSE, 1))    set INVI_FOC_LOOSE to mod(INVI_FOC_LOOSE, nvl(MAX_LOOSE, 1)) when ((((nvl(INVI_PROM_ITEM_ID, 0) > 0) and ((nvl(INVI_QTY, 0) + nvl(INVI_LOOSE, 0)) > 0)) and (nvl(INVI_PROM_FOC_BU, 0) > 0)) and (INVI_PROM_FOC_SAME = 'Y')) and (nvl(INVI_FOC_LOOSE, 0) >= nvl(MAX_LOOSE, 1))
# 6 statements did not convert.#   line 92
#   If v_Rec_Num <> Nvl(Get_Group_Row_Count(rg_Id_Promo), 0) Then
#     v_Rg_Row := Get_Group_Row_Count(rg_Id_Promo);
#     v_Rg_Row := Nvl(v_Rg_Row, 0) + 1;
#     While (v_Rg_Row <= v_Rec_Num) Loop
#                 Add_Group_Row(rg_Id_Promo, v_Rg_Row);
#                 v_Rg_Row := v_Rg_Row + 1;
#               End Loop;
#     Set_Group_Number_Cell('RG_PROMO.Issued_Foc_Bu', v_Rec_Num, 0);
#   End If;
#   reason: the guard reads the local V_REC_NUM, which is written from something CRL has no expression for: a Forms built-in, a database call or a shape the reader refuses#   line 101
#   Set_Group_Number_Cell('RG_PROMO.PromH_Id', v_Rec_Num, :PromH_Id);
#   reason: SET_GROUP_NUMBER_CELL is a Forms built-in, which no FormConnect document declares because no database holds it, and no program unit of this form declares one either, so there is no body to inline under the caller's point and item and nothing to bridge to#   line 102
#   Set_Group_Number_Cell('RG_PROMO.Prom_Item_Id', v_Rec_Num, :InvI_Prom_Item_Id);
#   reason: SET_GROUP_NUMBER_CELL is a Forms built-in, which no FormConnect document declares because no database holds it, and no program unit of this form declares one either, so there is no body to inline under the caller's point and item and nothing to bridge to#   line 103
#   Set_Group_Number_Cell('RG_PROMO.Inv_Qty_Bu', v_Rec_Num, v_InvI_Qty_Bu);
#   reason: SET_GROUP_NUMBER_CELL is a Forms built-in, which no FormConnect document declares because no database holds it, and no program unit of this form declares one either, so there is no body to inline under the caller's point and item and nothing to bridge to#   line 104
#   Set_Group_Number_Cell('RG_PROMO.Prom_Inv_Bu', v_Rec_Num, :InvI_Prom_Bu);
#   reason: SET_GROUP_NUMBER_CELL is a Forms built-in, which no FormConnect document declares because no database holds it, and no program unit of this form declares one either, so there is no body to inline under the caller's point and item and nothing to bridge to#   line 105
#   Set_Group_Number_Cell('RG_PROMO.Prom_Foc_Bu', v_Rec_Num, :InvI_Prom_Foc_Bu);
#   reason: SET_GROUP_NUMBER_CELL is a Forms built-in, which no FormConnect document declares because no database holds it, and no program unit of this form declares one either, so there is no body to inline under the caller's point and item and nothing to bridge to

14 clauses converted, 6 statements refused

42. fmb_invoiceWHEN-BUTTON-PRESSED on T_INV_REF_DOC.PB_REF_LOADgreen-waste
What you haveWHEN-BUTTON-PRESSED
Declare
   v_ref_No   Varchar2(100);
   v_Ctr      Number;
   v_Curr_Blk VarChar2(30);
   v_Txn_Type Varchar2(10);
   v_Ref_So_Id  Varchar2(100);
   V_Ref_Tndr_Cnt Number(10);
   V_Ref_Tndr_Val Number(20);
   V_Ref_Tndr_Val2 Number(20);
   V_Ref_Tndr_Cnt2 Number;
   
   ---Added by mojish 06/04/14
   rg_Name Varchar(20):= 'RG_TNDR';
  rg_Id RecordGroup;
  rg_Col GroupColumn;
  v_Row_Num Number := 1;
   ----
Begin
  ---Added by mojish 06/04/14
  rg_Id := Find_Group(rg_Name); 
  If Not Id_Null(rg_Id) Then
    Delete_Group_Row(rg_Id, ALL_ROWS);
  End If;
  If Id_Null(rg_Id) Then
    rg_Id := Create_Group('RG_TNDR');
    rg_Col := Add_Group_Column(rg_Id, 'COL_TNDR', NUMBER_COLUMN);
  End If;
  --------------
  
-----------Added By Dipu on 28/08/14 For avoid more than one tender--
  Go_Block('T_Inv_Ref_Doc');
  First_Record;
  V_Ref_Tndr_Val2:=Null;
  Loop
  If Nvl(:Flag,'N') = 'Y'  Then
      Select Txn_Type INTO v_Txn_Type From M_Stock_Txn Where Txn_Code =:InvH_Ref_Txn_Code;
      If v_Txn_Type ='SAL_ORD' Then
        Select  Count(*) Into V_Ref_Tndr_Cnt
         From   T_So_Item B,T_So_Head C
        Where  C.Soh_Tndr_Doc_Id Is Not Null
        And B.Soi_Soh_Id=C.Soh_Id
        And C.Soh_Comp_Code=:Global.Company
        And C.Soh_Id=:InvrD_SoH_Id;
        Select  Count(*) Into V_Ref_Tndr_Cnt2
         From   T_So_Item B,T_So_Head C
        Where  C.Soh_Tndr_Doc_Id Is Null
        And B.Soi_Soh_Id=C.Soh_Id
        And C.Soh_Comp_Code=:Global.Company
        And C.Soh_Id=:InvrD_SoH_Id;
         If V_Ref_Tndr_Cnt > 0 Then
            Select Soh_Tndr_Doc_Id Into V_Ref_Tndr_Val From( Select Distinct Soh_Tndr_Doc_Id 
         From   T_So_Item B,T_So_Head C
        Where  C.Soh_Tndr_Doc_Id Is Not Null
        And B.Soi_Soh_Id=C.Soh_Id
        And C.Soh_Comp_Code=:Global.Company
        And C.Soh_Id=:InvrD_SoH_Id);
        End If;
      If V_Ref_Tndr_Val2 Is Null And V_Ref_Tndr_Val Is Not Null Then
        V_Ref_Tndr_Val2:=V_Ref_Tndr_Val;
        End If;
      If V_Ref_Tndr_Val2 Is not Null And V_Ref_Tndr_Val2<>V_Ref_Tndr_Val  Then 
          Show_Message('Inv_Alert', 'Please select only one tender referenced SO !');
        Raise Form_Trigger_Failure; 
      End If;
       If V_Ref_Tndr_Val2 Is not Null  And V_Ref_Tndr_Cnt=0 Then 
          Show_Message('Inv_Alert', 'You can not select tender referenced SO with non-tender referenced SO !');
        Raise Form_Trigger_Failure; 
       End If;
    End If;
        
    End If;
    If :System.Last_Record='TRUE' Then
      Exit;
    End If;
      Next_Record;
  End Loop;
  -----------
  
  
  
  
  v_Curr_Blk := :System.Current_Block;
  Go_Block('T_Inv_Ref_Doc');
  First_Record;
  Loop
    If Nvl(:Flag,'N') = 'Y'  Then
      Select Txn_Type INTO v_Txn_Type From M_Stock_Txn Where Txn_Code =:InvH_Ref_Txn_Code;
      If v_Txn_Type ='DNOTE' Then  
        Load_Dn(:InvrD_Dnh_Id);
      Elsif v_Txn_Type ='SAL_ORD' Then
        Load_So(:InvrD_SoH_Id);
      Elsif   v_Txn_Type ='CUST_SERV' Then
        Load_Cs(:InvrD_CsH_Id);   
      Elsif   v_Txn_Type = 'TNDR' Then  --Added By Mojish 05/04/14
        Add_Group_Row(rg_Id, v_Row_Num);
        Set_Group_Number_Cell('RG_TNDR.COL_TNDR', v_Row_Num, :InvrD_Tndr_Id);
        v_Row_Num := v_Row_Num + 1;
        If Nvl(:Parameter.Tndr_Flag, 'X') = 'N' Then
          :Parameter.Tndr_Flag := 'Y';      --- 'N' =Tender Is Enabled, 'Y' = Load Button Pressed  Added by mojish 11/04/14
        End If;
      Else
        Load_Preq(:InvRd_Preqh_Id);
      End If;  
       Go_Block('T_Inv_Ref_Doc');
      v_Ctr := Nvl(v_Ctr,0) + 1; 
    End If;
    If :System.Last_Record='TRUE' Then
      Exit;
    End If;
    Next_Record;
  End Loop;
  

  --To clear unselected  
  Go_Block('T_Inv_Ref_Doc');
  First_Record;
  Loop
  If Nvl(:Flag,'N') = 'N'  Then
       Clear_Record;
     End If;
    If :System.Last_Record='TRUE' Then
      Exit;
    End If;
    Next_Record;
  End Loop;  
  
  Go_Block('T_Inv_Item');
  First_Record;

  If v_Ctr > 0 and v_Txn_Type In ('DNOTE','SAL_ORD') Then
    Go_Block('T_Inv_Item');
    /*Set_Block_Property('T_Inv_ITem', Update_Allowed, Property_False); 
    Set_Block_Property('T_Inv_ITem', Insert_Allowed, Property_False);*/
    disable_details;
  End If;
  Set_Item_Property('PB_REF_LOAD', ENABLED, PRoperty_False);
End;
What you getClause Rule Language
on press of PB_REF_LOAD:    go to T_INV_REF_DOC    go to T_INV_REF_DOC    go to T_INV_REF_DOC    for each row in T_INV_REF_DOC when nvl(FLAG, 'N') = 'N'    go to T_INV_ITEM    state disable PB_REF_LOAD
# 5 statements did not convert.#   line 21
#   If Not Id_Null(rg_Id) Then
#     Delete_Group_Row(rg_Id, ALL_ROWS);
#   End If;
#   reason: the guard reads the local RG_ID, which is written from FIND_GROUP, and FIND_GROUP is a Forms built-in, which no FormConnect document declares because no database holds it, and no program unit of this form declares one either, so there is no body to inline under the caller's point and item and nothing to bridge to#   line 24
#   If Id_Null(rg_Id) Then
#     rg_Id := Create_Group('RG_TNDR');
#     rg_Col := Add_Group_Column(rg_Id, 'COL_TNDR', NUMBER_COLUMN);
#   End If;
#   reason: the guard reads the local RG_ID, which is written from FIND_GROUP, and FIND_GROUP is a Forms built-in, which no FormConnect document declares because no database holds it, and no program unit of this form declares one either, so there is no body to inline under the caller's point and item and nothing to bridge to#   line 34
#   Loop
#     If Nvl(:Flag,'N') = 'Y'  Then
#         Select Txn_Type INTO v_Txn_Type From M_Stock_Txn Where Txn_Code =:InvH_Ref_Txn_Code;
#         If v_Txn_Type ='SAL_ORD' Then
#           Select  Count(*) Into V_Ref_Tndr_Cnt
#            From   T_So_Item B,T_So_Head C
#           Where  C.Soh_Tndr_Doc_Id Is Not Null
#           And B.Soi_Soh_Id=C.Soh_Id
#           And C.Soh_Comp_Code=:Global.Company
#           And C.Soh_Id=:InvrD_SoH_Id;
#           Select  Count(*) Into V_Ref_Tndr_Cnt2
#            From   T_So_Item B,T_So_Head C
#           Where  C.Soh_Tndr_Doc_Id Is Null
#           And B.Soi_Soh_Id=C.Soh_Id
#           And C.Soh_Comp_Code=:Global.Company
#           And C.Soh_Id=:InvrD_SoH_Id;
#            If V_Ref_Tndr_Cnt > 0 Then
#               Select Soh_Tndr_Doc_Id Into V_Ref_Tndr_Val From( Select Distinct Soh_Tndr_Doc_Id 
#            From   T_So_Item B,T_So_Head C
#           Where  C.Soh_Tndr_Doc_Id Is Not Null
#           And B.Soi_Soh_Id=C.Soh_Id
#           And C.Soh_Comp_Code=:Global.Company
#           And C.Soh_Id=:InvrD_SoH_Id);
#           End If;
#         If V_Ref_Tndr_Val2 Is Null And V_Ref_Tndr_Val Is Not Null Then
#           V_Ref_Tndr_Val2:=V_Ref_Tndr_Val;
#           End If;
#         If V_Ref_Tndr_Val2 Is not Null And V_Ref_Tndr_Val2<>V_Ref_Tndr_Val  Then 
#             Show_Message('Inv_Alert', 'Please select only one tender referenced SO !');
#           Raise Form_Trigger_Failure; 
#         End If;
#          If V_Ref_Tndr_Val2 Is not Null  And V_Ref_Tndr_Cnt=0 Then 
#             Show_Message('Inv_Alert', 'You can not select tender referenced SO with non-tender referenced SO !');
#           Raise Form_Trigger_Failure; 
#          End If;
#       End If;
#           
#       End If;
#       If :System.Last_Record='TRUE' Then
#         Exit;
#       End If;
#         Next_Record;
#     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)#   line 85
#   Loop
#       If Nvl(:Flag,'N') = 'Y'  Then
#         Select Txn_Type INTO v_Txn_Type From M_Stock_Txn Where Txn_Code =:InvH_Ref_Txn_Code;
#         If v_Txn_Type ='DNOTE' Then  
#           Load_Dn(:InvrD_Dnh_Id);
#         Elsif v_Txn_Type ='SAL_ORD' Then
#           Load_So(:InvrD_SoH_Id);
#         Elsif   v_Txn_Type ='CUST_SERV' Then
#           Load_Cs(:InvrD_CsH_Id);   
#         Elsif   v_Txn_Type = 'TNDR' Then   
#           Add_Group_Row(rg_Id, v_Row_Num);
#           Set_Group_Number_Cell('RG_TNDR.COL_TNDR', v_Row_Num, :InvrD_Tndr_Id);
#           v_Row_Num := v_Row_Num + 1;
#           If Nvl(:Parameter.Tndr_Flag, 'X') = 'N' Then
#             :Parameter.Tndr_Flag := 'Y';       
#           End If;
#         Else
#           Load_Preq(:InvRd_Preqh_Id);
#         End If;  
#          Go_Block('T_Inv_Ref_Doc');
#         v_Ctr := Nvl(v_Ctr,0) + 1; 
#       End If;
#       If :System.Last_Record='TRUE' Then
#         Exit;
#       End If;
#       Next_Record;
#     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)#   line 130
#   If v_Ctr > 0 and v_Txn_Type In ('DNOTE','SAL_ORD') Then
#     Go_Block('T_Inv_Item');
#     disable_details;
#   End If;
#   reason: the guard reads the local V_CTR, which a loop body above it counts with: `V_CTR := NVL(V_CTR,0) + 1`, so what it holds here is the loop's own arithmetic, and crl-loops.md states the collection operation and not the bookkeeping around it

6 clauses converted, 5 statements refused

43. fmb_invoiceon unit VALIDATE_SOgreen-waste
What you havePROGRAM-UNIT
PROCEDURE Validate_SO IS
  v_Max_Loose Number;
  v_Qty       Number;
  v_Loose     Number;
  v_Qty_Bu    Number;
  v_Count     Number;
  v_Lov       Boolean;
BEGIN
  If Nvl(:Frm_Validate_So, 'N') = 'Y' Then    --Validate SO
    If Nvl(:Frm_En_Multi_So, 'Y') = 'N' Then    --Not allow multiple SO
      Select Count(*) Into v_Count
      FROM M_UOM, M_Item, T_So_Item, T_So_Head
      WHERE SoI_SoH_Id = SoH_Id
      AND Item_Code = SoI_Item_Code
      AND UOM_Code = SoI_UOM_Code
      AND (Nvl(SOI_REV_QTY*UOM_Max_Loose, 0) + Nvl(SOI_REV_LOOSE, 0) +
        Nvl(SOI_REV_Foc_QTY*UOM_Max_Loose, 0) + Nvl(SOI_REV_FOC_LOOSE, 0)) - (Nvl(SOI_Inv_Qty_BU, 0)+Nvl(SOI_Inv_Foc_Qty_BU, 0))   > 0
      AND SoH_Comp_Code = :Global.Company
      AND SoH_Loc_Code =:Ref_Loc_Code
      AND SoH_Txn_Code =:Invh_Ref_Txn_Code
      And SoH_Id = :InvrD_SoH_Id
      And SoI_Item_Code = :InvI_Item_Code
      And SoI_Uom_Code = :InvI_Uom_Code And Nvl(:Flag, 'N') = 'Y'
      AND (SOH_APPROVAL_STATUS ='F' OR
        Fn_Get_Stk_Txn_Param(SOH_Txn_Code,Soh_Comp_Code,'SO_REQ_APPROVAL') ='N')
      AND SOH_Valid_Till >= :InvH_Dt
      AND (NVL(Fn_Get_Stk_Txn_Param(SOH_Txn_Code,Soh_Comp_Code,'SO_REQ_WPL'),'N') ='N' OR
      EXISTS(SELECT 'X' From T_Wpl_Head,T_Wpl_Ref_Doc Where WPLH_Id =Wplrd_Wplh_Id  and Wplrd_Soh_Id =Soh_Id
      AND Nvl(WPLH_Status,'N') ='F'
      AND NOT EXISTS(SELECT 'x' FROM T_Wpl_Item Where Wpli_Wplh_Id =Wplh_Id and Nvl(wpli_Status,'N') ='N')));
      
      If v_Count = 0 Then
        Show_Message('Inv_Alert', 'Sales Order referernce not found!');
        Raise Form_Trigger_Failure;
      ElsIf v_Count = 1 Then        --Single Record Then
        SELECT Uom_Max_Loose, Floor((Nvl(SoI_Rev_Qty * UOM_Max_Loose, 0) + Nvl(SoI_Loose, 0) - (Nvl(SoI_Inv_Qty_BU,0) +  Nvl(SoI_Dn_Qty_Bu,0))) /UOM_Max_Loose) Qty,
         
         (Nvl(SoI_Rev_Qty * UOM_Max_Loose, 0) + Nvl(SoI_Loose, 0) - (Nvl(SoI_Inv_Qty_BU,0)  + Nvl(SoI_Dn_Qty_Bu,0)))-
         (Floor((Nvl(SoI_Rev_Qty * UOM_Max_Loose, 0) + Nvl(SoI_Rev_Loose, 0) - (Nvl(SoI_Inv_Qty_BU,0) + Nvl(SoI_Dn_Qty_Bu,0)))/UOM_Max_Loose) * UOM_Max_Loose) Loose,
           
          Floor((Nvl(SoI_Rev_Foc_Qty * UOM_Max_Loose, 0) + Nvl(SoI_Rev_Foc_Loose, 0) - (Nvl(soi_inv_foc_qty_bu,0) +  Nvl(soi_dn_foc_qty_bu,0))) /UOM_Max_Loose) foc_Qty,
           
         (Nvl(SoI_Rev_Foc_Qty * UOM_Max_Loose, 0) + Nvl(SoI_Rev_Foc_Loose, 0) - (Nvl(soi_inv_foc_qty_bu,0)  + Nvl(soi_dn_foc_qty_bu,0)))-
         (Floor((Nvl(SoI_Rev_Foc_Qty * UOM_Max_Loose, 0) + Nvl(SoI_Rev_Foc_Loose, 0) - (Nvl(soi_inv_foc_qty_bu,0) + Nvl(soi_dn_foc_qty_bu,0)))/UOM_Max_Loose) * UOM_Max_Loose) foc_Loose,
           
          Soi_Rate Rate, Soi_Disc_Perc Disc_Perc, Soi_Disc_Amt Disc_Amt, SoI_Id Item_Id,
          SoI_Loc_Fm, SoI_Batch,Soi_Exp_Dt, SoI_Prom_Item_Id, Item_Serial_Status,Soi_Tndr_Doc_Item_Id,Soi_Inc_Foc_Ed,Soi_Inc_Foc_Vat
        Into v_Max_Loose, v_Qty, v_Loose, :InvI_Foc_Qty, :InvI_Foc_Loose, :InvI_Rate, :InvI_Disc_Perc, :InvI_Disc_Amt,:InvI_So_Doc_Item_Id,
          :InvI_Loc_Fm, :InvI_Batch, :InvI_Exp_Dt, :InvI_Prom_Item_Id, :En_Sl, :Invi_Tndr_Doc_Item_Id,:Invi_Inc_Foc_Ed,:Invi_Inc_Foc_Vat
        FROM M_UOM, M_Item, T_So_Item, T_So_Head
        WHERE SoI_SoH_Id = SoH_Id
        AND Item_Code = SoI_Item_Code
        AND UOM_Code = SoI_UOM_Code
        AND (Nvl(SOI_REV_QTY*UOM_Max_Loose, 0) + Nvl(SOI_REV_LOOSE, 0) +
          Nvl(SOI_REV_Foc_QTY*UOM_Max_Loose, 0) + Nvl(SOI_REV_FOC_LOOSE, 0)) - (Nvl(SOI_Inv_Qty_BU, 0)+Nvl(SOI_Inv_Foc_Qty_BU, 0))   > 0
        AND SoH_Comp_Code = :Global.Company
        AND SoH_Loc_Code =:Ref_Loc_Code
        AND SoH_Txn_Code =:Invh_Ref_Txn_Code
        And SoH_Id = :InvrD_SoH_Id
        And SoI_Item_Code = :InvI_Item_Code
        And SoI_Uom_Code = :InvI_Uom_Code And Nvl(:Flag, 'N') = 'Y'
        AND (SOH_APPROVAL_STATUS ='F' OR
          Fn_Get_Stk_Txn_Param(SOH_Txn_Code,Soh_Comp_Code,'SO_REQ_APPROVAL') ='N')
        AND SOH_Valid_Till >= :InvH_Dt
        AND (NVL(Fn_Get_Stk_Txn_Param(SOH_Txn_Code,Soh_Comp_Code,'SO_REQ_WPL'),'N') ='N' OR
        EXISTS(SELECT 'X' From T_Wpl_Head,T_Wpl_Ref_Doc Where WPLH_Id =Wplrd_Wplh_Id  and Wplrd_Soh_Id =Soh_Id
        AND Nvl(WPLH_Status,'N') ='F'
        AND NOT EXISTS(SELECT 'x' FROM T_Wpl_Item Where Wpli_Wplh_Id =Wplh_Id and Nvl(wpli_Status,'N') ='N')));
      ElsIf v_Count > 1 Then        --Multiple Record Then
        v_Lov := Show_Lov('Lov_So');
        If Not v_Lov Then
          Show_Message('Inv_Alert', 'Sales Order referernce not found!');
          Raise Form_Trigger_Failure;
        End If;
        
        SELECT Uom_Max_Loose, Floor((Nvl(SoI_Rev_Qty * UOM_Max_Loose, 0) + Nvl(SoI_Loose, 0) - (Nvl(SoI_Inv_Qty_BU,0) +  Nvl(SoI_Dn_Qty_Bu,0))) /UOM_Max_Loose) Qty,
         
         (Nvl(SoI_Rev_Qty * UOM_Max_Loose, 0) + Nvl(SoI_Loose, 0) - (Nvl(SoI_Inv_Qty_BU,0)  + Nvl(SoI_Dn_Qty_Bu,0)))-
         (Floor((Nvl(SoI_Rev_Qty * UOM_Max_Loose, 0) + Nvl(SoI_Rev_Loose, 0) - (Nvl(SoI_Inv_Qty_BU,0) + Nvl(SoI_Dn_Qty_Bu,0)))/UOM_Max_Loose) * UOM_Max_Loose) Loose,
           
          Floor((Nvl(SoI_Rev_Foc_Qty * UOM_Max_Loose, 0) + Nvl(SoI_Rev_Foc_Loose, 0) - (Nvl(soi_inv_foc_qty_bu,0) +  Nvl(soi_dn_foc_qty_bu,0))) /UOM_Max_Loose) foc_Qty,
           
         (Nvl(SoI_Rev_Foc_Qty * UOM_Max_Loose, 0) + Nvl(SoI_Rev_Foc_Loose, 0) - (Nvl(soi_inv_foc_qty_bu,0)  + Nvl(soi_dn_foc_qty_bu,0)))-
         (Floor((Nvl(SoI_Rev_Foc_Qty * UOM_Max_Loose, 0) + Nvl(SoI_Rev_Foc_Loose, 0) - (Nvl(soi_inv_foc_qty_bu,0) + Nvl(soi_dn_foc_qty_bu,0)))/UOM_Max_Loose) * UOM_Max_Loose) foc_Loose,
           
          Soi_Rate Rate, Soi_Disc_Perc Disc_Perc, Soi_Disc_Amt Disc_Amt, SoI_Id Item_Id,
          SoI_Loc_Fm, SoI_Batch,Soi_Exp_Dt, SoI_Prom_Item_Id, Item_Serial_Status,Soi_Tndr_Doc_Item_Id,Soi_Inc_Foc_Ed,Soi_Inc_Foc_Vat
        Into v_Max_Loose, v_Qty, v_Loose, :InvI_Foc_Qty, :InvI_Foc_Loose, :InvI_Rate, :InvI_Disc_Perc, :InvI_Disc_Amt,:InvI_So_Doc_Item_Id,
          :InvI_Loc_Fm, :InvI_Batch, :InvI_Exp_Dt, :InvI_Prom_Item_Id, :En_Sl, :Invi_Tndr_Doc_Item_Id,:Invi_Inc_Foc_Ed,:Invi_Inc_Foc_Vat
        FROM M_UOM, M_Item, T_So_Item, T_So_Head
        WHERE SoI_SoH_Id = SoH_Id
        AND Item_Code = SoI_Item_Code
        AND UOM_Code = SoI_UOM_Code
        AND (Nvl(SOI_REV_QTY*UOM_Max_Loose, 0) + Nvl(SOI_REV_LOOSE, 0) +
          Nvl(SOI_REV_Foc_QTY*UOM_Max_Loose, 0) + Nvl(SOI_REV_FOC_LOOSE, 0)) - (Nvl(SOI_Inv_Qty_BU, 0)+Nvl(SOI_Inv_Foc_Qty_BU, 0))   > 0
        AND SoH_Comp_Code = :Global.Company
        AND SoH_Loc_Code =:Ref_Loc_Code
        AND SoH_Txn_Code =:Invh_Ref_Txn_Code
        And SoH_Id = :InvrD_SoH_Id
        And SoI_Item_Code = :InvI_Item_Code
        And SoI_Uom_Code = :InvI_Uom_Code And Nvl(:Flag, 'N') = 'Y'
        And SoI_Id = :InvI_So_Doc_Item_Id
        AND (SOH_APPROVAL_STATUS ='F' OR
          Fn_Get_Stk_Txn_Param(SOH_Txn_Code,Soh_Comp_Code,'SO_REQ_APPROVAL') ='N')
        AND SOH_Valid_Till >= :InvH_Dt
        AND (NVL(Fn_Get_Stk_Txn_Param(SOH_Txn_Code,Soh_Comp_Code,'SO_REQ_WPL'),'N') ='N' OR
        EXISTS(SELECT 'X' From T_Wpl_Head,T_Wpl_Ref_Doc Where WPLH_Id =Wplrd_Wplh_Id  and Wplrd_Soh_Id =Soh_Id
        AND Nvl(WPLH_Status,'N') ='F'
        AND NOT EXISTS(SELECT 'x' FROM T_Wpl_Item Where Wpli_Wplh_Id =Wplh_Id and Nvl(wpli_Status,'N') ='N')));
      End If;
      :Order_Qty_Bu     := Nvl(v_Qty*v_Max_Loose, 0) + Nvl(v_Loose, 0);
      :Order_Foc_Qty_Bu := Nvl(:InvI_Foc_Qty*v_Max_Loose, 0) + Nvl(:InvI_Foc_Loose, 0);
      If :Frm_Validate_Stock = 'Y' Then
        v_Qty_BU := Fn_Get_UnConf_Stock(:Global.Company, :InvH_Loc_Code, :InvI_Item_Code, Null);
              
        If v_Qty_BU < Nvl(v_Qty * v_Max_Loose, 0) + Nvl(v_Loose, 0) Then
          If v_Qty_BU <= 0 Then
            v_Qty := 0;
            v_Loose := 0;
          ElsIf v_Qty_BU < 1 Then
            v_Qty := v_Qty_BU;
            v_Loose := 0;
          Else
            v_Qty := Floor(v_Qty_BU/v_Max_Loose);
            v_Loose := v_Qty_BU - Nvl(v_Qty * v_Max_Loose, 0);
          End If;
        End If;
      End If;
      :InvI_Qty   := v_Qty;
      :InvI_Loose := v_Loose;
      If Nvl(:InvI_Prom_Item_Id, 0) > 0 Then 
        Select PromH_No, PromH_Id Into :PromH_No, :PromH_Id From T_Prom_Head, T_Prom_Item 
        Where PromI_PromH_Id = PromH_Id And PromH_Comp_Code = :Global.Company 
        And PromI_Id = :InvI_Prom_Item_Id;
      End If;
        
    End If;
  End If;  
END;
What you getClause Rule Language
on unit VALIDATE_SO:    from UOM_COUNT(INVH_DT, INVI_ITEM_CODE, INVI_UOM_CODE, FLAG, INVH_REF_TXN_CODE, INVRD_SOH_ID, REF_LOC_CODE) when (FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')
        # load-fmb-invoice-validate-so-unit-0    from UOM_1(INVH_DT, INVI_ITEM_CODE, INVI_UOM_CODE, FLAG, INVH_REF_TXN_CODE, INVRD_SOH_ID, REF_LOC_CODE) when (((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and (UOM_COUNT.COUNT = 1)
        # load-fmb-invoice-validate-so-unit-1    from UOM_2(INVH_DT, INVI_ITEM_CODE, INVI_SO_DOC_ITEM_ID, INVI_UOM_CODE, FLAG, INVH_REF_TXN_CODE, INVRD_SOH_ID, REF_LOC_CODE)
        # load-fmb-invoice-validate-so-unit-2    from PROM_HEAD(INVI_PROM_ITEM_ID)
        # load-fmb-invoice-validate-so-unit-3    deny when ((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and (UOM_COUNT.COUNT = 0) else "Sales Order referernce not found!"    set INVI_FOC_QTY to UOM_1.INVI_FOC_QTY when (((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and (UOM_COUNT.COUNT = 1)    set INVI_FOC_LOOSE to UOM_1.INVI_FOC_LOOSE when (((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and (UOM_COUNT.COUNT = 1)    set INVI_RATE to UOM_1.INVI_RATE when (((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and (UOM_COUNT.COUNT = 1)    set INVI_DISC_PERC to UOM_1.INVI_DISC_PERC when (((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and (UOM_COUNT.COUNT = 1)    set INVI_DISC_AMT to UOM_1.INVI_DISC_AMT when (((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and (UOM_COUNT.COUNT = 1)    set INVI_SO_DOC_ITEM_ID to UOM_1.INVI_SO_DOC_ITEM_ID when (((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and (UOM_COUNT.COUNT = 1)    set INVI_LOC_FM to UOM_1.SOI_LOC_FM when (((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and (UOM_COUNT.COUNT = 1)    set INVI_BATCH to UOM_1.SOI_BATCH when (((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and (UOM_COUNT.COUNT = 1)    set INVI_EXP_DT to UOM_1.SOI_EXP_DT when (((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and (UOM_COUNT.COUNT = 1)    set INVI_PROM_ITEM_ID to UOM_1.SOI_PROM_ITEM_ID when (((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and (UOM_COUNT.COUNT = 1)    set EN_SL to UOM_1.ITEM_SERIAL_STATUS when (((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and (UOM_COUNT.COUNT = 1)    set INVI_TNDR_DOC_ITEM_ID to UOM_1.SOI_TNDR_DOC_ITEM_ID when (((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and (UOM_COUNT.COUNT = 1)    set INVI_INC_FOC_ED to UOM_1.SOI_INC_FOC_ED when (((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and (UOM_COUNT.COUNT = 1)    set INVI_INC_FOC_VAT to UOM_1.SOI_INC_FOC_VAT when (((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and (UOM_COUNT.COUNT = 1)    fetch UOM_2 when ((((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and not (UOM_COUNT.COUNT = 1)) and (UOM_COUNT.COUNT > 1)    set INVI_FOC_QTY to UOM_2.INVI_FOC_QTY when ((((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and not (UOM_COUNT.COUNT = 1)) and (UOM_COUNT.COUNT > 1)    set INVI_FOC_LOOSE to UOM_2.INVI_FOC_LOOSE when ((((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and not (UOM_COUNT.COUNT = 1)) and (UOM_COUNT.COUNT > 1)    set INVI_RATE to UOM_2.INVI_RATE when ((((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and not (UOM_COUNT.COUNT = 1)) and (UOM_COUNT.COUNT > 1)    set INVI_DISC_PERC to UOM_2.INVI_DISC_PERC when ((((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and not (UOM_COUNT.COUNT = 1)) and (UOM_COUNT.COUNT > 1)    set INVI_DISC_AMT to UOM_2.INVI_DISC_AMT when ((((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and not (UOM_COUNT.COUNT = 1)) and (UOM_COUNT.COUNT > 1)    set INVI_SO_DOC_ITEM_ID to UOM_2.INVI_SO_DOC_ITEM_ID when ((((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and not (UOM_COUNT.COUNT = 1)) and (UOM_COUNT.COUNT > 1)    set INVI_LOC_FM to UOM_2.SOI_LOC_FM when ((((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and not (UOM_COUNT.COUNT = 1)) and (UOM_COUNT.COUNT > 1)    set INVI_BATCH to UOM_2.SOI_BATCH when ((((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and not (UOM_COUNT.COUNT = 1)) and (UOM_COUNT.COUNT > 1)    set INVI_EXP_DT to UOM_2.SOI_EXP_DT when ((((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and not (UOM_COUNT.COUNT = 1)) and (UOM_COUNT.COUNT > 1)    set INVI_PROM_ITEM_ID to UOM_2.SOI_PROM_ITEM_ID when ((((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and not (UOM_COUNT.COUNT = 1)) and (UOM_COUNT.COUNT > 1)    set EN_SL to UOM_2.ITEM_SERIAL_STATUS when ((((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and not (UOM_COUNT.COUNT = 1)) and (UOM_COUNT.COUNT > 1)    set INVI_TNDR_DOC_ITEM_ID to UOM_2.SOI_TNDR_DOC_ITEM_ID when ((((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and not (UOM_COUNT.COUNT = 1)) and (UOM_COUNT.COUNT > 1)    set INVI_INC_FOC_ED to UOM_2.SOI_INC_FOC_ED when ((((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and not (UOM_COUNT.COUNT = 1)) and (UOM_COUNT.COUNT > 1)    set INVI_INC_FOC_VAT to UOM_2.SOI_INC_FOC_VAT when ((((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and not (UOM_COUNT.COUNT = 0)) and not (UOM_COUNT.COUNT = 1)) and (UOM_COUNT.COUNT > 1)    set ORDER_QTY_BU to nvl(UOM_2.V_QTY * UOM_2.UOM_MAX_LOOSE, 0) + nvl(UOM_2.V_LOOSE, 0) when (FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')    set ORDER_FOC_QTY_BU to nvl(UOM_2.INVI_FOC_QTY * UOM_2.UOM_MAX_LOOSE, 0) + nvl(UOM_2.INVI_FOC_LOOSE, 0) when (FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')    set INVI_QTY to UOM_2.V_QTY when (FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')    set INVI_LOOSE to UOM_2.V_LOOSE when (FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')    fetch PROM_HEAD when ((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and (nvl(UOM_2.SOI_PROM_ITEM_ID, 0) > 0)    set PROMH_NO to PROM_HEAD.PROMH_NO when ((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and (nvl(UOM_2.SOI_PROM_ITEM_ID, 0) > 0)    set PROMH_ID to PROM_HEAD.PROMH_ID when ((FRM_VALIDATE_SO = 'Y') and (FRM_EN_MULTI_SO = 'N')) and (nvl(UOM_2.SOI_PROM_ITEM_ID, 0) > 0)
# 2 statements did not convert.#   line 70
#   v_Lov := Show_Lov('Lov_So');
#   reason: open value help names the field whose list opens and no single field of this form carries Lov_So, so there is no field to open it on: the list is either declared on none, which is the dangling name fmb_gledger already writes, or on several#   line 71
#   If Not v_Lov Then
#     Show_Message('Inv_Alert', 'Sales Order referernce not found!');
#     Raise Form_Trigger_Failure;
#   End If;
#   reason: the guard reads the local V_LOV, which is written from SHOW_LOV, and SHOW_LOV is a Forms built-in, which no FormConnect document declares because no database holds it, and no program unit of this form declares one either, so there is no body to inline under the caller's point and item and nothing to bridge to

37 clauses converted, 2 statements refused

44. fmb_invoiceon unit PROC_COMMIT_FORMgreen-waste
What you havePROGRAM-UNIT
PROCEDURE Proc_Commit_Form IS
    v_ErrCode NUMBER;
    v_ErrText VARCHAR2(2000);
BEGIN
  BEGIN
    -- Your existing validations (no changes here)
    IF :System.Form_Status = 'CHANGED' OR :Parameter.Insert_Flag = 1 THEN
        IF :INVH_LOC_CODE IS NULL THEN
            SHOW_MESSAGE('INV_ALERT','Please enter ' || get_item_property('INVH_LOC_CODE', prompt_text));
            RAISE FORM_TRIGGER_FAILURE;
        ELSIF :INVH_DIVN_CODE IS NULL THEN
            SHOW_MESSAGE('INV_ALERT','Please enter ' || get_item_property('INVH_DIVN_CODE', prompt_text));
            RAISE FORM_TRIGGER_FAILURE;
        ELSIF :INVH_CUST_CODE IS NULL THEN
            SHOW_MESSAGE('INV_ALERT','Please enter ' || get_item_property('INVH_CUST_CODE', prompt_text));
            RAISE FORM_TRIGGER_FAILURE;
        ELSIF :INVH_SMAN_CODE IS NULL THEN
            SHOW_MESSAGE('INV_ALERT','Please enter ' || get_item_property('INVH_SMAN_CODE', prompt_text));
            RAISE FORM_TRIGGER_FAILURE;
        ELSIF :INVH_PLH_CODE IS NULL THEN
            SHOW_MESSAGE('INV_ALERT','Please enter ' || get_item_property('INVH_PLH_CODE', prompt_text));
            RAISE FORM_TRIGGER_FAILURE;
        ELSIF :INVH_CURR_CODE IS NULL THEN
            SHOW_MESSAGE('INV_ALERT','Please enter ' || get_item_property('INVH_CURR_CODE', prompt_text));
            RAISE FORM_TRIGGER_FAILURE;
        ELSIF :INVH_PAY_MODE IS NULL THEN
            SHOW_MESSAGE('INV_ALERT','Please enter ' || get_item_property('INVH_PAY_MODE', prompt_text));
            RAISE FORM_TRIGGER_FAILURE;
        ELSIF :INVH_DT IS NULL THEN
            SHOW_MESSAGE('INV_ALERT','Please enter ' || get_item_property('INVH_DT', prompt_text));
            RAISE FORM_TRIGGER_FAILURE;
        ELSIF :INVH_DOC_DT IS NULL THEN
            SHOW_MESSAGE('INV_ALERT','Please enter ' || get_item_property('INVH_DOC_DT', prompt_text));
            RAISE FORM_TRIGGER_FAILURE;
        ELSIF :INVI_ITEM_CODE IS NULL THEN
            SHOW_MESSAGE('INV_ALERT','Please enter ' || get_item_property('INVI_ITEM_CODE', prompt_text));
            RAISE FORM_TRIGGER_FAILURE;
        ELSIF :INVI_UOM_CODE IS NULL THEN
            SHOW_MESSAGE('INV_ALERT','Please enter ' || get_item_property('INVI_UOM_CODE', prompt_text));
            RAISE FORM_TRIGGER_FAILURE;
        END IF;

        -- Your other pre-commit procedures
        Proc_Upd_Avg_Rate;
        Validate_Delivery_Loc_To;

        IF NVL(:Frm_En_Sales_Promo, 'Y') = 'Y' THEN
            GO_BLOCK('T_Inv_Item');
            FIRST_RECORD;
            LOOP
                Promo_Foc_Loading;
                IF :System.Last_Record = 'TRUE' THEN
                    EXIT;
                END IF;
                NEXT_RECORD;
            END LOOP;

            GO_BLOCK('T_Inv_Item');
            FIRST_RECORD;
            LOOP
                Get_Promotion_Foc('INSERT');
                IF :System.Last_Record = 'TRUE' THEN
                    EXIT;
                END IF;
                NEXT_RECORD;
            END LOOP;
        END IF;

        -- Your stock batch validation
        GO_BLOCK('T_Inv_Item');
        FIRST_RECORD;
        LOOP
            DECLARE
                v_Qty NUMBER := 0;
            BEGIN
                IF NVL(:Gr_Batch_En, 'N') = 'Y' THEN
                    v_Qty := NVL(:Invi_qty * :Max_Loose, 0) + NVL(:Invi_Loose, 0) + NVL(:Invi_Foc_Qty * :Max_Loose, 0) + NVL(:Invi_Foc_Loose, 0);
                    IF :Invi_Txn_Batch_id IS NOT NULL THEN
                        Validate_Gr_Batch(:Invi_Item_Code, :Invh_Loc_Code, :Invi_Txn_Batch_id, v_Qty, :Gr_Batch_En);
                    ELSE
                        SHOW_MESSAGE('ALERT1', 'Purchase batch cannot be null');
                        RAISE FORM_TRIGGER_FAILURE;
                    END IF;
                END IF;
            END;
            
            IF :System.Last_Record = 'TRUE' THEN
                EXIT;
            END IF;
            NEXT_RECORD;
        END LOOP;

        -- ?? Now COMMIT safely with exception handling
        COMMIT_FORM;

        -- Confirm COMMIT success
        IF NOT FORM_SUCCESS THEN
            v_ErrCode := ERROR_CODE;
            v_ErrText := ERROR_TEXT;
            MESSAGE('Error during commit: ' || v_ErrCode || ' - ' || v_ErrText);
            MESSAGE(' ', NO_ACKNOWLEDGE);
            RAISE FORM_TRIGGER_FAILURE;
        END IF;

        -- Financial posting after commit
        IF NVL(:Nett_Loc, 0) > 0 THEN
            Proc_Update_Fin_Status(:Global.Company, :InvH_Txn_Code, :InvH_Id);
             COMMIT_FORM;
        END IF;

    END IF;

    -- Printing setup after successful commit
    IF :System.Form_Status = 'QUERY' THEN
        :Frm_Desformat  := Fn_Get_Stk_Txn_Param(:INVH_Txn_Code, :Global.Company, 'INV_REP_DESFORMAT');
        :Frm_Skip_Print := Fn_Get_Stk_Txn_Param(:INVH_Txn_Code, :Global.Company, 'INV_SKIP_PRINT');
        :Frm_Auto_Print := Fn_Get_Stk_Txn_Param(:INVH_Txn_Code, :Global.Company, 'INV_AUTO_PRINT');
        :Frm_Report     := Fn_Get_User_Preference(:Global.User, :Global.Company, :InvH_Txn_Code, 'USR_REPORT');
        
        IF :Frm_Report IS NULL THEN
            :Frm_Report := Fn_Get_Stk_Txn_Param(:InvH_Txn_Code, :Global.Company, 'INV_REPORT');
        END IF;

        IF NVL(:InvH_Prn_Count, 0) > 0 THEN
            SHOW_MESSAGE('Inv_Alert', 'Already printed! - ' || :InvH_No);
            RAISE FORM_TRIGGER_FAILURE;
        ELSIF NVL(:InvH_Prn_Count, 0) = 0 AND NVL(:Frm_Skip_Print, 'N') = 'N' AND NVL(:Frm_Auto_Print, 'N') = 'N' THEN
            Proc_Dup_Print('K');
        END IF;
    END IF;

    -- Final messages
    SHOW_MESSAGE('Inv_Alert', 'Do# :' || :InvH_Loc_Code || '/' || :InvH_Txn_Code || '/' || :Invh_No);
    CLEAR_FORM;
    Init_Form;
    Enable_Details;

  EXCEPTION
    WHEN OTHERS THEN
        v_ErrCode := SQLCODE;
        v_ErrText := SQLERRM;
        MESSAGE('Unhandled Error: ' || v_ErrCode || ' - ' || v_ErrText);
        MESSAGE(' ', NO_ACKNOWLEDGE);
        RAISE FORM_TRIGGER_FAILURE;
  END;
END;
What you getClause Rule Language
on unit PROC_COMMIT_FORM:    deny when ((SYSTEM.FORM_STATUS = 'CHANGED') or (PARAMETER.INSERT_FLAG = 1)) and is_blank(INVH_LOC_CODE) else 'Please enter ' || label of INVH_LOC_CODE    deny when (((SYSTEM.FORM_STATUS = 'CHANGED') or (PARAMETER.INSERT_FLAG = 1)) and not is_blank(INVH_LOC_CODE)) and is_blank(INVH_DIVN_CODE) else 'Please enter ' || label of INVH_DIVN_CODE    deny when ((((SYSTEM.FORM_STATUS = 'CHANGED') or (PARAMETER.INSERT_FLAG = 1)) and not is_blank(INVH_LOC_CODE)) and not is_blank(INVH_DIVN_CODE)) and is_blank(INVH_CUST_CODE) else 'Please enter ' || label of INVH_CUST_CODE    deny when (((((SYSTEM.FORM_STATUS = 'CHANGED') or (PARAMETER.INSERT_FLAG = 1)) and not is_blank(INVH_LOC_CODE)) and not is_blank(INVH_DIVN_CODE)) and not is_blank(INVH_CUST_CODE)) and is_blank(INVH_SMAN_CODE) else 'Please enter ' || label of INVH_SMAN_CODE    deny when ((((((SYSTEM.FORM_STATUS = 'CHANGED') or (PARAMETER.INSERT_FLAG = 1)) and not is_blank(INVH_LOC_CODE)) and not is_blank(INVH_DIVN_CODE)) and not is_blank(INVH_CUST_CODE)) and not is_blank(INVH_SMAN_CODE)) and is_blank(INVH_PLH_CODE) else 'Please enter ' || label of INVH_PLH_CODE    deny when (((((((SYSTEM.FORM_STATUS = 'CHANGED') or (PARAMETER.INSERT_FLAG = 1)) and not is_blank(INVH_LOC_CODE)) and not is_blank(INVH_DIVN_CODE)) and not is_blank(INVH_CUST_CODE)) and not is_blank(INVH_SMAN_CODE)) and not is_blank(INVH_PLH_CODE)) and is_blank(INVH_CURR_CODE) else 'Please enter ' || label of INVH_CURR_CODE    deny when ((((((((SYSTEM.FORM_STATUS = 'CHANGED') or (PARAMETER.INSERT_FLAG = 1)) and not is_blank(INVH_LOC_CODE)) and not is_blank(INVH_DIVN_CODE)) and not is_blank(INVH_CUST_CODE)) and not is_blank(INVH_SMAN_CODE)) and not is_blank(INVH_PLH_CODE)) and not is_blank(INVH_CURR_CODE)) and is_blank(INVH_PAY_MODE) else 'Please enter ' || label of INVH_PAY_MODE    deny when (((((((((SYSTEM.FORM_STATUS = 'CHANGED') or (PARAMETER.INSERT_FLAG = 1)) and not is_blank(INVH_LOC_CODE)) and not is_blank(INVH_DIVN_CODE)) and not is_blank(INVH_CUST_CODE)) and not is_blank(INVH_SMAN_CODE)) and not is_blank(INVH_PLH_CODE)) and not is_blank(INVH_CURR_CODE)) and not is_blank(INVH_PAY_MODE)) and is_blank(INVH_DT) else 'Please enter ' || label of INVH_DT    deny when ((((((((((SYSTEM.FORM_STATUS = 'CHANGED') or (PARAMETER.INSERT_FLAG = 1)) and not is_blank(INVH_LOC_CODE)) and not is_blank(INVH_DIVN_CODE)) and not is_blank(INVH_CUST_CODE)) and not is_blank(INVH_SMAN_CODE)) and not is_blank(INVH_PLH_CODE)) and not is_blank(INVH_CURR_CODE)) and not is_blank(INVH_PAY_MODE)) and not is_blank(INVH_DT)) and is_blank(INVH_DOC_DT) else 'Please enter ' || label of INVH_DOC_DT    deny when (((((((((((SYSTEM.FORM_STATUS = 'CHANGED') or (PARAMETER.INSERT_FLAG = 1)) and not is_blank(INVH_LOC_CODE)) and not is_blank(INVH_DIVN_CODE)) and not is_blank(INVH_CUST_CODE)) and not is_blank(INVH_SMAN_CODE)) and not is_blank(INVH_PLH_CODE)) and not is_blank(INVH_CURR_CODE)) and not is_blank(INVH_PAY_MODE)) and not is_blank(INVH_DT)) and not is_blank(INVH_DOC_DT)) and is_blank(INVI_ITEM_CODE) else 'Please enter ' || label of INVI_ITEM_CODE    require INVI_UOM_CODE else 'Please enter ' || label of INVI_UOM_CODE when (((((((((((SYSTEM.FORM_STATUS = 'CHANGED') or (PARAMETER.INSERT_FLAG = 1)) and not is_blank(INVH_LOC_CODE)) and not is_blank(INVH_DIVN_CODE)) and not is_blank(INVH_CUST_CODE)) and not is_blank(INVH_SMAN_CODE)) and not is_blank(INVH_PLH_CODE)) and not is_blank(INVH_CURR_CODE)) and not is_blank(INVH_PAY_MODE)) and not is_blank(INVH_DT)) and not is_blank(INVH_DOC_DT)) and not is_blank(INVI_ITEM_CODE)    call PROC_UPD_AVG_RATE() when (SYSTEM.FORM_STATUS = 'CHANGED') or (PARAMETER.INSERT_FLAG = 1)    call VALIDATE_DELIVERY_LOC_TO() when (SYSTEM.FORM_STATUS = 'CHANGED') or (PARAMETER.INSERT_FLAG = 1)    go to T_INV_ITEM when ((SYSTEM.FORM_STATUS = 'CHANGED') or (PARAMETER.INSERT_FLAG = 1)) and (nvl(FRM_EN_SALES_PROMO, 'Y') = 'Y')    go to T_INV_ITEM when ((SYSTEM.FORM_STATUS = 'CHANGED') or (PARAMETER.INSERT_FLAG = 1)) and (nvl(FRM_EN_SALES_PROMO, 'Y') = 'Y')    go to T_INV_ITEM when (SYSTEM.FORM_STATUS = 'CHANGED') or (PARAMETER.INSERT_FLAG = 1)    call PROC_UPDATE_FIN_STATUS(GLOBAL.COMPANY, INVH_TXN_CODE, INVH_ID) when ((SYSTEM.FORM_STATUS = 'CHANGED') or (PARAMETER.INSERT_FLAG = 1)) and (nvl(NETT_LOC, 0) > 0)    set FRM_DESFORMAT to FN_GET_STK_TXN_PARAM(INVH_TXN_CODE, GLOBAL.COMPANY, 'INV_REP_DESFORMAT') when SYSTEM.FORM_STATUS = 'QUERY'    set FRM_SKIP_PRINT to FN_GET_STK_TXN_PARAM(INVH_TXN_CODE, GLOBAL.COMPANY, 'INV_SKIP_PRINT') when SYSTEM.FORM_STATUS = 'QUERY'    set FRM_AUTO_PRINT to FN_GET_STK_TXN_PARAM(INVH_TXN_CODE, GLOBAL.COMPANY, 'INV_AUTO_PRINT') when SYSTEM.FORM_STATUS = 'QUERY'    set FRM_REPORT to FN_GET_USER_PREFERENCE(GLOBAL.USER, GLOBAL.COMPANY, INVH_TXN_CODE, 'USR_REPORT') when SYSTEM.FORM_STATUS = 'QUERY'    set FRM_REPORT to FN_GET_STK_TXN_PARAM(INVH_TXN_CODE, GLOBAL.COMPANY, 'INV_REPORT') when (SYSTEM.FORM_STATUS = 'QUERY') and is_blank(FRM_REPORT)    deny when (SYSTEM.FORM_STATUS = 'QUERY') and (nvl(INVH_PRN_COUNT, 0) > 0) else 'Already printed! - ' || INVH_NO    call PROC_DUP_PRINT('K') when ((SYSTEM.FORM_STATUS = 'QUERY') and not (nvl(INVH_PRN_COUNT, 0) > 0)) and (((nvl(INVH_PRN_COUNT, 0) = 0) and (nvl(FRM_SKIP_PRINT, 'N') = 'N')) and (nvl(FRM_AUTO_PRINT, 'N') = 'N'))    warn (((('Do# :' || INVH_LOC_CODE) || '/') || INVH_TXN_CODE) || '/') || INVH_NO    clear form    call ENABLE_DETAILS()
# 5 statements did not convert.#   line 50
#   LOOP
#                   Promo_Foc_Loading;
#                   IF :System.Last_Record = 'TRUE' THEN
#                       EXIT;
#                   END IF;
#                   NEXT_RECORD;
#               END LOOP;
#   reason: PROMO_FOC_LOADING is a program unit of this form used as a value, and a unit's body is inlined at a call statement rather than read for a return, so no FormConnect entry is written for it and what this expression holds is not stated#   line 60
#   LOOP
#                   Get_Promotion_Foc('INSERT');
#                   IF :System.Last_Record = 'TRUE' THEN
#                       EXIT;
#                   END IF;
#                   NEXT_RECORD;
#               END LOOP;
#   reason: GET_PROMOTION_FOC is a program unit of this form used as a value, and a unit's body is inlined at a call statement rather than read for a return, so no FormConnect entry is written for it and what this expression holds is not stated#   line 72
#   LOOP
#               DECLARE
#                   v_Qty NUMBER := 0;
#               BEGIN
#                   IF NVL(:Gr_Batch_En, 'N') = 'Y' THEN
#                       v_Qty := NVL(:Invi_qty * :Max_Loose, 0) + NVL(:Invi_Loose, 0) + NVL(:Invi_Foc_Qty * :Max_Loose, 0) + NVL(:Invi_Foc_Loose, 0);
#                       IF :Invi_Txn_Batch_id IS NOT NULL THEN
#                           Validate_Gr_Batch(:Invi_Item_Code, :Invh_Loc_Code, :Invi_Txn_Batch_id, v_Qty, :Gr_Batch_En);
#                       ELSE
#                           SHOW_MESSAGE('ALERT1', 'Purchase batch cannot be null');
#                           RAISE FORM_TRIGGER_FAILURE;
#                       END IF;
#                   END IF;
#               END;
#               
#               IF :System.Last_Record = 'TRUE' THEN
#                   EXIT;
#               END IF;
#               NEXT_RECORD;
#           END LOOP;
#   reason: it names T_INV_ITEM and T_INV_HEAD, so it walks no one collection#   line 97
#   If NOT FORM_SUCCESS Then
#     v_ErrCode := ERROR_CODE;
#     v_ErrText := ERROR_TEXT;
#     MESSAGE('Error during commit: ' || v_ErrCode || ' - ' || v_ErrText);
#     MESSAGE(' ', NO_ACKNOWLEDGE);
#     RAISE FORM_TRIGGER_FAILURE;
#   End If;
#   reason: the guard reads FORM_SUCCESS, which is one of Forms' own constants and not a value: CRL has no expression for what a property or an alert button is called#   line 138
#   EXCEPTION
#       WHEN OTHERS THEN
#           v_ErrCode := SQLCODE;
#           v_ErrText := SQLERRM;
#           MESSAGE('Unhandled Error: ' || v_ErrCode || ' - ' || v_ErrText);
#           MESSAGE(' ', NO_ACKNOWLEDGE);
#           RAISE FORM_TRIGGER_FAILURE;
#   reason: it handles OTHERS and re-raises, and CRL has no clause that runs when a statement fails: the error path ends the program either way, so the statements above it convert and the handler does not

27 clauses converted, 5 statements refused

45. fmb_invoiceon unit LOAD_DNgreen-waste
What you havePROGRAM-UNIT
Procedure Load_Dn(Ref_Id In Number) Is
Cursor Curdn Is
Select Dnh_Id, Dnh_Loc_Code, Dnh_Txn_Code, Dnh_No, Dnh_Sman_Code, Dnh_Cust_Code, Dnh_Disc_Perc, 
           Dnh_Disc_Amt,Dnh_Remarks, Dni_Plu_Code,Dni_Item_Code Item_Code, Item_Name, Dni_Uom_Code Uom_Code, 
           Uom_Max_Loose Max_Loose, Dni_Remarks,
           Floor((Nvl(Dni_Qty * Uom_Max_Loose, 0) + Nvl(Dni_Loose, 0) - Nvl(Dni_Inv_Qty_Bu, 0) - Nvl(Dni_Dnret_Qty_Bu,0))/Uom_Max_Loose) Qty,
           (Nvl(Dni_Qty * Uom_Max_Loose, 0) + Nvl(Dni_Loose, 0) - Nvl(Dni_Inv_Qty_Bu, 0) - Nvl(Dni_Dnret_Qty_Bu,0))-
                 (Floor((Nvl(Dni_Qty * Uom_Max_Loose, 0) + Nvl(Dni_Loose, 0) - Nvl(Dni_Inv_Qty_Bu, 0) - Nvl(Dni_Dnret_Qty_Bu,0))/Uom_Max_Loose) * Uom_Max_Loose) Loose,
                 Floor((Nvl(Dni_Foc_Qty * Uom_Max_Loose, 0) + Nvl(Dni_Foc_Loose, 0) - Nvl(Dni_Inv_Foc_Qty_Bu, 0) - Nvl(Dni_Dnret_Foc_Qty_Bu,0))/Uom_Max_Loose) Foc_Qty,
                 (Nvl(Dni_Foc_Qty * Uom_Max_Loose, 0) + Nvl(Dni_Foc_Loose, 0) - Nvl(Dni_Inv_Foc_Qty_Bu, 0) - Nvl(Dni_Dnret_Foc_Qty_Bu,0))-
                 (Floor((Nvl(Dni_Foc_Qty * Uom_Max_Loose, 0) + Nvl(Dni_Foc_Loose, 0) - Nvl(Dni_Inv_Foc_Qty_Bu, 0) - Nvl(Dni_Dnret_Foc_Qty_Bu,0))/Uom_Max_Loose) * Uom_Max_Loose) Foc_Loose,
           Dni_Rate Rate,Dni_Disc_Perc Disc_Perc, /*0 commented on 07-04-2013*/Dni_Disc_Amt Disc_Amt, Dni_Id Item_Id,
           Dni_Ref_Item_Code, Dni_Item_Alt_Name, --- added by prem(06/11/2013) ---
           Dni_Loc_Fm, Dni_Prom_Item_Id, Item_Exp_Type, Dni_Batch, Dni_Exp_Dt,  ---Added by Mojish 09/02/14
           Dni_Vat,Dni_Vat_Incl_Price,Dni_Vat_Stax_Id,Dni_Ed,Dni_Ed_Incl_Price,Dni_Ed_Stax_Id,Dni_Base_Rate,Dni_Vat_Amt,Dni_Ed_Amt,Dni_Inc_Foc_Ed,Dni_Inc_Foc_Vat,
           Dni_Txn_Batch_Id
    From M_Uom, M_Item, T_Dn_Item, T_Dn_Head
    Where Dni_Dnh_Id = Dnh_Id
    And Item_Code = Dni_Item_Code
    And Uom_Code = Dni_Uom_Code
    And Nvl(Dni_Qty*Uom_Max_Loose, 0) + Nvl(Dni_Loose, 0) + Nvl(Dni_Foc_Qty*Uom_Max_Loose, 0) + Nvl(Dni_Foc_Loose, 0) - (Nvl(Dni_Inv_Qty_Bu, 0) + Nvl(Dni_Dnret_Qty_Bu,0)) > 0
    And Dnh_Comp_Code = :Global.Company
    And Dnh_Loc_Code =:Invh_Loc_Code
    And Dnh_Cust_Code = :Invh_Cust_Code
    --AND (Floor((Nvl(DNI_Qty * UOM_Max_Loose, 0) + Nvl(DNI_Loose, 0) - Nvl(DNI_Inv_Qty_BU, 0) - nvl(DNI_DNRET_QTY_BU,0))/UOM_Max_Loose)>0
    --OR  (Nvl(DNI_Qty * UOM_Max_Loose, 0) + Nvl(DNI_Loose, 0) - Nvl(DNI_Inv_Qty_BU, 0) - nvl(DNI_DNRET_QTY_BU,0))-
    --         (Floor((Nvl(DNI_Qty * UOM_Max_Loose, 0) + Nvl(DNI_Loose, 0) - Nvl(DNI_Inv_Qty_BU, 0) - nvl(DNI_DNRET_QTY_BU,0))/UOM_Max_Loose) * UOM_Max_Loose) >0)
    --AND Nvl(DNH_Load_Status,'N') = 'N'
    And Dnh_Id =Ref_Id
    Order By Dni_Id;
   
  v_ctr          Number := 0;
  v_Count        Number;
  v_Loc_Code     VarChar2(10);
  v_Txn_Code     VarChar2(10);
  v_Doc_No       Number;
  v_Txn_Type     VarChar2(10);
  v_Alert        Number := Alert_Button2;
  v_Ref_Doc_Id   Number;
  v_Cust_Code    VarChar2(10);
  v_HDisc_Perc   Number;
  v_HDisc_Amt    Number;
  v_PLU_Code     VarChar2(20);
  v_Item_Code    VarChar2(10);
  v_Item_Name    VarChar2(100);
  v_UOM_Code     VarChar2(10);
  v_Max_Loose    Number;
  v_Qty_BU       Number;
  v_Qty          Number;
  v_Loose        Number;
  v_Rate         Number;
  v_Disc_Perc    Number;
  v_Disc_Amt     Number;
  v_Ref_Item_Id  Number;
  v_SMan_Code    VarChar2(10);
  v_Rem          Varchar2(100);
  v_Remarks      Varchar2(100);
  v_Load_Status  Char(1);
  v_Foc_Qty      Number;
  v_Foc_Ls       Number;
  v_Init Char(1) := 'N';
  v_Old_ID Number := 0;
  v_ref_Item_Code    VarChar2(10);
  v_Item_alt_Name    VarChar2(60);
  v_Loc_Fm       Varchar2(10);
  v_Batch        Number(20);
  V_Exp_Dt       Date;
  v_Vat             Number;
  v_Vat_Incl_Price  Varchar2(2);
  v_Vat_Stax_Id     Number;
  v_ED              Number;
  v_ED_Incl_Price   Varchar2(2);
  v_Ed_Stax_Id      Number;
  v_Base_Rate       Number;  
  v_Vat_Amt         Number;
  v_Ed_Amt          Number;
  v_Inc_Vat          Varchar2(1);
  v_Inc_Ed          Varchar2(1);
  v_Batch_id        Number;


BEGIN
  Go_Block('T_Inv_Item');
   Open CurDN;
   --If :FLAG = 'Y' THEN
      Loop
      Fetch CurDN INTO v_Ref_Doc_Id, v_Loc_Code, v_Txn_Code, v_Doc_No, v_SMan_Code, v_Cust_Code, v_HDisc_Perc, v_HDisc_Amt, :InvH_Remarks, v_Plu_Code, 
                        v_Item_Code, v_Item_Name, v_UOM_Code, v_Max_Loose, v_Remarks, v_Qty, v_Loose,v_Foc_Qty,v_Foc_Ls, v_Rate, v_Disc_Perc, v_Disc_Amt, v_Ref_Item_Id,
                        v_ref_item_code, v_item_alt_name, v_Loc_Fm, :InvI_Prom_Item_Id, :En_Batch, v_Batch, v_Exp_Dt,--- added by prem(06/11/2013) ---
      v_Vat,v_Vat_Incl_Price,v_Vat_Stax_Id,v_ED,v_ED_Incl_Price,v_Ed_Stax_Id,v_Base_Rate,v_Vat_Amt,v_Ed_Amt,v_Inc_Ed,v_Inc_Vat,v_Batch_Id;

      EXIT WHEN CurDN%NotFound;
      :Prom_Enabled := Nvl(:Frm_En_Sales_Promo, 'N'); -- Added on 9/3/2019, Shebin, Since its loading only for one and first record  when multiple items loads
      :InvH_Disc_Perc := v_HDisc_Perc;
      :InvH_Disc_Amt :=  v_HDisc_Amt; 
      :InvI_DN_Doc_Item_Id := v_Ref_Item_Id;
      :Old_Item_Code := v_Item_Code;
      :Old_UOM_Code := v_UOM_Code;
      :InvI_Plu_Code := v_Plu_Code;
      :InvI_Item_Code := v_Item_Code;
      :Item_Name := v_Item_Name;
      :InvI_UOM_Code := v_UOM_Code;
      :Max_Loose := v_Max_Loose;
      :InvI_Remarks := v_Remarks;
      :InvI_Qty := v_Qty;
      :InvI_Loose := v_Loose;
      :InvI_Rate := v_Rate;
      :Invi_Foc_Qty :=v_Foc_Qty;
      :Invi_Foc_Loose  := v_Foc_Ls;
      :InvI_Disc_Perc := v_Disc_Perc;
      :InvI_Disc_Amt := v_Disc_Amt;
      :invi_ref_item_code := v_ref_item_code;--- added by prem (06/11/2013) ---
      :invi_item_alt_name := v_item_alt_name;--- added by prem (06/11/2013) ---
      :InvI_Loc_Fm  := v_Loc_Fm; ---Added By Mojish 09/02/14
      :InvI_Batch := v_Batch;
      :InvI_Exp_Dt := v_Exp_Dt;
      :Ref_Doc_Item := 'Loaded';
      :InvI_Loaded_Fm_DN :='Y';
      :InvI_Id := Fn_Get_Next_Id('Inv_Item');
      :InvI_Cr_User := :Global.User;
      :InvI_Cr_Dt := Fn_Get_Zone_Date(:Global.Company);  
      
      :Invi_Vat := v_Vat;
      :Invi_Vat_Incl_Price := v_Vat_Incl_Price;
      :Invi_Vat_Stax_Id := v_Vat_Stax_Id;
      :Invi_Ed   := v_ED;
      :Invi_Ed_Incl_Price := v_Ed_Incl_Price;
      :Invi_Ed_Stax_Id := v_Ed_Stax_Id;
      :Invi_Base_Rate := v_Base_Rate;
       :Invi_Vat_Amt := v_Vat_Amt;
      :Invi_Ed_Amt  := v_Ed_Amt;
      :Invi_Inc_Foc_Vat  := v_Inc_Vat;
       :Invi_Inc_Foc_Ed  := v_Inc_Ed;
      :Invi_Txn_Batch_Id := v_Batch_Id;
      v_ctr := v_ctr+1; 
      Next_Record;
      End Loop;
      If Nvl(v_Ctr,0) >0 Then 
         :Invh_Load_Status :='Y' ;
      End If;      
  Close CurDN;
    --  First_Record;
  --End If;
      -- GO_BLOCK('T_INV_ITEM');
     --- added by prem (06/11/2013) ---
     /*If v_Ref_Item_Id Is Not Null Then               --Commented By Mojish for Multiple delivery not didn't load
       Set_Block_Property('T_Inv_ITem', Update_Allowed, Property_False); 
      Set_Block_Property('T_Inv_ITem', Insert_Allowed, Property_False);
      Set_Block_Property('T_Inv_ITem', Delete_Allowed, Property_False);
     end if;*/
     --- added by prem (06/11/2013) ---
END;
What you getClause Rule Language
on unit LOAD_DN(REF_ID):    go to T_INV_ITEM
# 2 statements did not convert.#   line 86
#   Loop
#         Fetch CurDN INTO v_Ref_Doc_Id, v_Loc_Code, v_Txn_Code, v_Doc_No, v_SMan_Code, v_Cust_Code, v_HDisc_Perc, v_HDisc_Amt, :InvH_Remarks, v_Plu_Code, 
#                           v_Item_Code, v_Item_Name, v_UOM_Code, v_Max_Loose, v_Remarks, v_Qty, v_Loose,v_Foc_Qty,v_Foc_Ls, v_Rate, v_Disc_Perc, v_Disc_Amt, v_Ref_Item_Id,
#                           v_ref_item_code, v_item_alt_name, v_Loc_Fm, :InvI_Prom_Item_Id, :En_Batch, v_Batch, v_Exp_Dt, 
#         v_Vat,v_Vat_Incl_Price,v_Vat_Stax_Id,v_ED,v_ED_Incl_Price,v_Ed_Stax_Id,v_Base_Rate,v_Vat_Amt,v_Ed_Amt,v_Inc_Ed,v_Inc_Vat,v_Batch_Id;
#   
#         EXIT WHEN CurDN%NotFound;
#         :Prom_Enabled := Nvl(:Frm_En_Sales_Promo, 'N');  
#         :InvH_Disc_Perc := v_HDisc_Perc;
#         :InvH_Disc_Amt :=  v_HDisc_Amt; 
#         :InvI_DN_Doc_Item_Id := v_Ref_Item_Id;
#         :Old_Item_Code := v_Item_Code;
#         :Old_UOM_Code := v_UOM_Code;
#         :InvI_Plu_Code := v_Plu_Code;
#         :InvI_Item_Code := v_Item_Code;
#         :Item_Name := v_Item_Name;
#         :InvI_UOM_Code := v_UOM_Code;
#         :Max_Loose := v_Max_Loose;
#         :InvI_Remarks := v_Remarks;
#         :InvI_Qty := v_Qty;
#         :InvI_Loose := v_Loose;
#         :InvI_Rate := v_Rate;
#         :Invi_Foc_Qty :=v_Foc_Qty;
#         :Invi_Foc_Loose  := v_Foc_Ls;
#         :InvI_Disc_Perc := v_Disc_Perc;
#         :InvI_Disc_Amt := v_Disc_Amt;
#         :invi_ref_item_code := v_ref_item_code; 
#         :invi_item_alt_name := v_item_alt_name; 
#         :InvI_Loc_Fm  := v_Loc_Fm;  
#         :InvI_Batch := v_Batch;
#         :InvI_Exp_Dt := v_Exp_Dt;
#         :Ref_Doc_Item := 'Loaded';
#         :InvI_Loaded_Fm_DN :='Y';
#         :InvI_Id := Fn_Get_Next_Id('Inv_Item');
#         :InvI_Cr_User := :Global.User;
#         :InvI_Cr_Dt := Fn_Get_Zone_Date(:Global.Company);  
#         
#         :Invi_Vat := v_Vat;
#         :Invi_Vat_Incl_Price := v_Vat_Incl_Price;
#         :Invi_Vat_Stax_Id := v_Vat_Stax_Id;
#         :Invi_Ed   := v_ED;
#         :Invi_Ed_Incl_Price := v_Ed_Incl_Price;
#         :Invi_Ed_Stax_Id := v_Ed_Stax_Id;
#         :Invi_Base_Rate := v_Base_Rate;
#          :Invi_Vat_Amt := v_Vat_Amt;
#         :Invi_Ed_Amt  := v_Ed_Amt;
#         :Invi_Inc_Foc_Vat  := v_Inc_Vat;
#          :Invi_Inc_Foc_Ed  := v_Inc_Ed;
#         :Invi_Txn_Batch_Id := v_Batch_Id;
#         v_ctr := v_ctr+1; 
#         Next_Record;
#         End Loop;
#   reason: its collection binds REF_ID, a parameter this program takes, and a parameter passed in PL/SQL is not a bind the page can supply#   line 138
#   If Nvl(v_Ctr,0) >0 Then
#     :Invh_Load_Status :='Y';
#   End If;
#   reason: the guard reads the local V_CTR, which a loop body above it counts with: `V_CTR := V_CTR+1`, so what it holds here is the loop's own arithmetic, and crl-loops.md states the collection operation and not the bookkeeping around it

1 clause converted, 2 statements refused

46. fmb_invoiceWHEN-BUTTON-PRESSED on CTRL.PB_COPYgreen-waste
What you haveWHEN-BUTTON-PRESSED
-- Task-Invoice, $Shebin, 15/June/2019
Declare
  Cursor C_Item_Det Is 
     Select Invi_Id,Invi_Invh_Id,Invi_So_Doc_Item_Id,Invi_Dn_Doc_Item_Id,Invi_Plu_Code,Invi_Item_Code,Invi_Uom_Code ,
            Invi_Batch,Invi_Exp_Dt,Invi_Item_Sl_Ref,Invi_Qty,Invi_Loose,Invi_Foc_Qty,Invi_Foc_Loose,Invi_Loaded_Fm_Dn,
            Invi_Srt_Qty_Bu,Invi_Lt_Qty_Bu,Invi_Fifo,Invi_Wac,Invi_Rate,Invi_Disc_Perc,Invi_Disc_Amt,Invi_Com_Perc,
            Invi_Vat_Perc,Invi_Others,Invi_Remarks 
     From Table(Pkg_Invoice.Fn_Load_Invoice_Dtl(:Parameter.Par_InvhId));     --Item details  
      
 /* Cursor C_T_Inv_Cess Is 
     Select Invc_Stax_Id,Invc_Tax_Perc,Invc_Tax_Level,Invc_Tax_On 
     From T_Inv_Cess Where Invc_Invh_Id = :Parameter.Par_Invhid;  -- T_Inv_Cess          
  v_Cess  C_T_Inv_Cess%Rowtype;  */
  v_Item_Rec C_Item_Det%Rowtype;    
  item_hd_tab Pkg_Invoice.Item_hd_table;
  v_Cnt Number := 0;
Begin 
  --Populating Header 
  :Parameter.P_Copy := 1; -- To handle some of the validations during Copying
  If :T_Inv_Head.Invh_no Is null Then
     Show_Message('Inv_Alert', 'Please enter Doc No.');
     Raise Form_Trigger_Failure;
  End If;   
  :Parameter.Par_InvhId :=  :T_Inv_Head.Invh_id;   
  If Nvl(:Parameter.Par_InvhId,0) = 0 Then 
     Select Count(*) Into v_Cnt from T_inv_head
       Where invh_no = :T_Inv_Head.Invh_no;  
     If v_Cnt = 1 Then 
        Select Invh_id Into :Parameter.Par_InvhId from T_inv_head
        Where invh_no = :T_Inv_Head.Invh_no;
     ElsIf v_Cnt > 1 Then
        Declare 
         lov_id LOV;
         v_lov BOOLEAN;  
        Begin 
           lov_id := Find_LOV('LOV_DOC_NO'); 
            If Get_LOV_Property(lov_id,GROUP_NAME) = 'LOV_DOC_NO' Then 
              Set_LOV_Property(lov_id,GROUP_NAME,'LOV_DOC_COPY'); 
              v_lov := Show_LOV('LOV_DOC_NO');
              If v_lov THEN 
                :Parameter.Par_InvhId :=  :T_Inv_Head.Invh_id; 
              End If;      
             End If; 
        End;
     /*Else
        Select Invh_id Into :Parameter.Par_InvhId from T_inv_head
        Where invh_no = :T_Inv_Head.Invh_no
          And Invh_Cust_code = :T_Inv_Head.Invh_Cust_code
        Order by 1 Desc; */
     End If;      
  End If; 
     
  Pkg_Invoice.Proc_Load_Invoice_Hd(:Parameter.Par_InvhId,item_hd_tab);
  Go_Block('T_INV_HEAD'); 
  --  for i in item_hd_tab.first..item_hd_tab.last loop  -- Since only one record no loop is needed 
 -- :T_Inv_Head.Invh_Comp_Code   :=  Item_hd_tab(1).Invh_Comp_Code;
    :T_Inv_Head.Invh_Divn_Code   := Item_hd_tab(1).Invh_Divn_Code;
    :T_Inv_Head.Invh_Ayr_Code    := Item_hd_tab(1).Invh_Ayr_Code;
    :T_Inv_Head.Invh_Loc_Code    := Item_hd_tab(1).Invh_Loc_Code;
    :T_Inv_Head.Invh_Txn_Code    := Item_hd_tab(1).Invh_Txn_Code;
 -- :T_Inv_Head.Invh_Ref         := Item_hd_tab(1).Invh_Ref;
  --:T_Inv_Head.Invh_Dt       := Item_hd_tab(1).Invh_Dt;
  --:T_Inv_Head.Invh_Doc_Dt   := Item_hd_tab(1).Invh_Doc_Dt;
    :T_Inv_Head.Invh_Cust_Code  := Item_hd_tab(1).Invh_Cust_Code;
    :T_Inv_Head.Invh_Cust_Alt_Name:= Item_hd_tab(1).Invh_Cust_Alt_Name;
    :T_Inv_Head.Invh_Loyalty_Ref  := Item_hd_tab(1).Invh_Loyalty_Ref; 
    :T_Inv_Head.Invh_Pay_Mode     := Item_hd_tab(1).Invh_Loyalty_Ref; 
    --:T_Inv_Head.Invh_Cash:= Item_hd_tab(1).Invh_Cash; 
   -- :T_Inv_Head.Invh_Card := Item_hd_tab(1).Invh_Card; 
    --:T_Inv_Head.Invh_Card_Code := Item_hd_tab(1).Invh_Card_Code; 
    --:T_Inv_Head.Invh_Card_No:= Item_hd_tab(1).Invh_Card_No; 
    --:T_Inv_Head.Invh_Credit  := Item_hd_tab(1).Invh_Credit; 
    --:T_Inv_Head.Invh_Pos_Ref  := Item_hd_tab(1).Invh_Pos_Ref; 
   -- :T_Inv_Head.Invh_Due_Dt        := Item_hd_tab(1).Invh_Due_Dt; 
    :T_Inv_Head.Invh_Cust_Ref      := Item_hd_tab(1).Invh_Cust_Ref; 
    :T_Inv_Head.Invh_Sman_Code     := Item_hd_tab(1).Invh_Sman_Code; 
    :T_Inv_Head.Invh_Del_Address1  := Item_hd_tab(1).Invh_Del_Address1; 
    :T_Inv_Head.Invh_Del_Address2  := Item_hd_tab(1).Invh_Del_Address2; 
    :T_Inv_Head.Invh_Del_Area_Code := Item_hd_tab(1).Invh_Del_Area_Code; 
    :T_Inv_Head.Invh_Plh_Code      := Item_hd_tab(1).Invh_Plh_Code; 
    :T_Inv_Head.Invh_Curr_Code     := Item_hd_tab(1).Invh_Curr_Code; 
    :T_Inv_Head.Invh_Curr_Rate     := Item_hd_tab(1).Invh_Curr_Rate; 
    :T_Inv_Head.Invh_Disc_Perc    := Item_hd_tab(1).Invh_Disc_Perc; 
    :T_Inv_Head.Invh_Disc_Amt     := Item_hd_tab(1).Invh_Disc_Amt; 
    :T_Inv_Head.Invh_Com_Perc     := Item_hd_tab(1).Invh_Com_Perc; 
    :T_Inv_Head.Invh_Vat_Perc     := Item_hd_tab(1).Invh_Vat_Perc; 
    :T_Inv_Head.Invh_Others       := Item_hd_tab(1).Invh_Others; 
    :T_Inv_Head.Invh_Remarks      := Item_hd_tab(1).Invh_Remarks; 
  --:T_Inv_Head.Invh_Locked        ,
   --Invh_Status        , 
  ---:T_Inv_Head.Invh_Conf_User     ,
--  :T_Inv_Head.Invh_Conf_Dt ,
    :T_Inv_Head.Invh_Th_Id := Item_hd_tab(1).Invh_Th_Id; 
    :T_Inv_Head.Invh_Close_So := Item_hd_tab(1).Invh_Close_So; 
                       -- Invh_Cr_User    , 
                       -- Invh_Cr_Dt ,
                        --Invh_Edt_User ,
                       -- Invh_Edt_Dt ,
    :T_Inv_Head.Invh_Load_Status := Item_hd_tab(1).Invh_Load_Status; 
  --:T_Inv_Head.Invh_Barcode     := Item_hd_tab(1).Invh_Barcode; 
    :T_Inv_Head.Invh_Btrn_Flag   := Item_hd_tab(1).Invh_Btrn_Flag; 
  --:T_Inv_Head.Invh_Wdel_Status := Item_hd_tab(1).Invh_Wdel_Status; 
    :T_Inv_Head.Invh_Ord_Ref     := Item_hd_tab(1).Invh_Ord_Ref; 
    :T_Inv_Head.Invh_Ord_Dt      := Item_hd_tab(1).Invh_Ord_Dt; 
    :T_Inv_Head.Invh_Emp_Code    := Item_hd_tab(1).Invh_Emp_Code; 
    :T_Inv_Head.Invh_Bank_Code   := Item_hd_tab(1).Invh_Bank_Code; 
    :T_Inv_Head.Invh_Loc_Code_To := Item_hd_tab(1).Invh_Loc_Code_To; 
  --:T_Inv_Head.Invh_Edt_Terminal:= Item_hd_tab(1).Invh_Edt_Terminal; 
  --:T_Inv_Head.Invh_Cob_Dt := Item_hd_tab(1).Invh_Cob_Dt; 
    :T_Inv_Head.Invh_Advance_Amt := Item_hd_tab(1).Invh_Advance_Amt;  
            
  --Populating Detail Block 
  Go_Block('T_INV_ITEM');
  First_Record;
  Open C_Item_Det;
  Loop    
     Next_Record;  
  Fetch C_Item_Det Into v_Item_Rec;
  Exit When C_Item_Det%NotFound; 
  --:T_Inv_Item.Invi_Id             := v_Item_Rec.Invi_Id;
  --:T_Inv_Item.Invi_Invh_Id        := v_Item_Rec.Invi_Invh_Id;
  --:T_Inv_Item.Invi_So_Doc_Item_Id := v_Item_Rec.Invi_So_Doc_Item_Id;
  --:T_Inv_Item.Invi_Dn_Doc_Item_Id := v_Item_Rec.Invi_Dn_Doc_Item_Id;
    :T_Inv_Item.Invi_Plu_Code       := v_Item_Rec.Invi_Plu_Code;
    :T_Inv_Item.Invi_Item_Code      := v_Item_Rec.Invi_Item_Code;
    :T_Inv_Item.Invi_Uom_Code       := v_Item_Rec.Invi_Uom_Code;
    :T_Inv_Item.Invi_Batch          := v_Item_Rec.Invi_Batch;
    :T_Inv_Item.Invi_Exp_Dt         := v_Item_Rec.Invi_Exp_Dt;
  --:T_Inv_Item.Invi_Item_Sl_Ref    := v_Item_Rec.Invi_Item_Sl_Ref;
    :T_Inv_Item.Invi_Qty            := v_Item_Rec.Invi_Qty;
    :T_Inv_Item.Invi_Loose          := v_Item_Rec.Invi_Loose;
    :T_Inv_Item.Invi_Foc_Qty        := v_Item_Rec.Invi_Foc_Qty;
    :T_Inv_Item.Invi_Foc_Loose      := v_Item_Rec.Invi_Foc_Loose;
  --:T_Inv_Item.Invi_Loaded_Fm_Dn   := v_Item_Rec.Invi_Loaded_Fm_Dn;
  --:T_Inv_Item.Invi_Srt_Qty_Bu     := v_Item_Rec.Invi_Srt_Qty_Bu;
  --:T_Inv_Item.Invi_Lt_Qty_Bu      := v_Item_Rec.Invi_Lt_Qty_Bu;
  --:T_Inv_Item.Invi_Fifo           := v_Item_Rec.Invi_Fifo;
  --:T_Inv_Item.Invi_Wac             := v_Item_Rec.Invi_Wac;
    :T_Inv_Item.Invi_Rate           := v_Item_Rec.Invi_Rate;
    :T_Inv_Item.Invi_Disc_Perc       := v_Item_Rec.Invi_Disc_Perc;
    :T_Inv_Item.Invi_Disc_Amt        := v_Item_Rec.Invi_Disc_Amt;
    :T_Inv_Item.Invi_Com_Perc       := v_Item_Rec.Invi_Com_Perc;
    :T_Inv_Item.Invi_Others         := v_Item_Rec.Invi_Others;
  --:T_Inv_Item.Invi_Remarks         := v_Item_Rec.Invi_Remarks;
  End Loop; 
  Close C_Item_Det;
  Go_Block('T_INV_ITEM');
  First_Record;
  --Added on 30/Jun/2019
  proc_load_cess;-- to handle t_inv_cess 
  Go_Block('T_INV_HEAD'); --till
---
  --Reset
  :Parameter.P_Copy := 0; 
  :Parameter.Par_InvhId := Null;
  :T_Inv_Head.Invh_id := Null;
  :T_Inv_Head.Invh_No := Null;
Exception
  When No_Data_Found Then
  Null;
End;   
What you getClause Rule Language
on press of PB_COPY:    from INV_HEAD_COUNT(INVH_NO) when nvl(PARAMETER.PAR_INVHID, 0) = 0
        # load-fmb-invoice-ctrl-pb-copy-press-0    from INV_HEAD(INVH_NO) when (nvl(PARAMETER.PAR_INVHID, 0) = 0) and (INV_HEAD_COUNT.COUNT = 1) or null
        # load-fmb-invoice-ctrl-pb-copy-press-1    require INVH_NO else "Please enter Doc No."    go to T_INV_HEAD    go to T_INV_ITEM    go to T_INV_ITEM    call PROC_LOAD_CESS()    go to T_INV_HEAD    set INVH_ID to null    set INVH_NO to null
# 39 statements did not convert.#   line 19
#   :Parameter.P_Copy := 1;
#   reason: set writes a field or a global and there is no third spelling, so a write to a form parameter is refused: item 20 rules a parameter read-only#   line 24
#   :Parameter.Par_InvhId :=  :T_Inv_Head.Invh_id;
#   reason: set writes a field or a global and there is no third spelling, so a write to a form parameter is refused: item 20 rules a parameter read-only#   line 37
#   If Get_LOV_Property(lov_id,GROUP_NAME) = 'LOV_DOC_NO' Then
#     Set_LOV_Property(lov_id,GROUP_NAME,'LOV_DOC_COPY');
#     v_lov := Show_LOV('LOV_DOC_NO');
#     If v_lov Then
#       :Parameter.Par_InvhId :=  :T_Inv_Head.Invh_id;
#     End If;
#   End If;
#   reason: the guard reads the local LOV_ID, which is written from FIND_LOV, and FIND_LOV is a Forms built-in, which no FormConnect document declares because no database holds it, and no program unit of this form declares one either, so there is no body to inline under the caller's point and item and nothing to bridge to#   line 53
#   Pkg_Invoice.Proc_Load_Invoice_Hd(:Parameter.Par_InvhId,item_hd_tab);
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 57
#   :T_Inv_Head.Invh_Divn_Code   := Item_hd_tab(1).Invh_Divn_Code;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 58
#   :T_Inv_Head.Invh_Ayr_Code    := Item_hd_tab(1).Invh_Ayr_Code;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 59
#   :T_Inv_Head.Invh_Loc_Code    := Item_hd_tab(1).Invh_Loc_Code;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 60
#   :T_Inv_Head.Invh_Txn_Code    := Item_hd_tab(1).Invh_Txn_Code;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 64
#   :T_Inv_Head.Invh_Cust_Code  := Item_hd_tab(1).Invh_Cust_Code;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 65
#   :T_Inv_Head.Invh_Cust_Alt_Name:= Item_hd_tab(1).Invh_Cust_Alt_Name;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 66
#   :T_Inv_Head.Invh_Loyalty_Ref  := Item_hd_tab(1).Invh_Loyalty_Ref;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 67
#   :T_Inv_Head.Invh_Pay_Mode     := Item_hd_tab(1).Invh_Loyalty_Ref;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 75
#   :T_Inv_Head.Invh_Cust_Ref      := Item_hd_tab(1).Invh_Cust_Ref;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 76
#   :T_Inv_Head.Invh_Sman_Code     := Item_hd_tab(1).Invh_Sman_Code;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 77
#   :T_Inv_Head.Invh_Del_Address1  := Item_hd_tab(1).Invh_Del_Address1;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 78
#   :T_Inv_Head.Invh_Del_Address2  := Item_hd_tab(1).Invh_Del_Address2;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 79
#   :T_Inv_Head.Invh_Del_Area_Code := Item_hd_tab(1).Invh_Del_Area_Code;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 80
#   :T_Inv_Head.Invh_Plh_Code      := Item_hd_tab(1).Invh_Plh_Code;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 81
#   :T_Inv_Head.Invh_Curr_Code     := Item_hd_tab(1).Invh_Curr_Code;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 82
#   :T_Inv_Head.Invh_Curr_Rate     := Item_hd_tab(1).Invh_Curr_Rate;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 83
#   :T_Inv_Head.Invh_Disc_Perc    := Item_hd_tab(1).Invh_Disc_Perc;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 84
#   :T_Inv_Head.Invh_Disc_Amt     := Item_hd_tab(1).Invh_Disc_Amt;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 85
#   :T_Inv_Head.Invh_Com_Perc     := Item_hd_tab(1).Invh_Com_Perc;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 86
#   :T_Inv_Head.Invh_Vat_Perc     := Item_hd_tab(1).Invh_Vat_Perc;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 87
#   :T_Inv_Head.Invh_Others       := Item_hd_tab(1).Invh_Others;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 88
#   :T_Inv_Head.Invh_Remarks      := Item_hd_tab(1).Invh_Remarks;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 93
#   :T_Inv_Head.Invh_Th_Id := Item_hd_tab(1).Invh_Th_Id;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 94
#   :T_Inv_Head.Invh_Close_So := Item_hd_tab(1).Invh_Close_So;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 99
#   :T_Inv_Head.Invh_Load_Status := Item_hd_tab(1).Invh_Load_Status;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 101
#   :T_Inv_Head.Invh_Btrn_Flag   := Item_hd_tab(1).Invh_Btrn_Flag;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 103
#   :T_Inv_Head.Invh_Ord_Ref     := Item_hd_tab(1).Invh_Ord_Ref;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 104
#   :T_Inv_Head.Invh_Ord_Dt      := Item_hd_tab(1).Invh_Ord_Dt;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 105
#   :T_Inv_Head.Invh_Emp_Code    := Item_hd_tab(1).Invh_Emp_Code;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 106
#   :T_Inv_Head.Invh_Bank_Code   := Item_hd_tab(1).Invh_Bank_Code;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 107
#   :T_Inv_Head.Invh_Loc_Code_To := Item_hd_tab(1).Invh_Loc_Code_To;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 110
#   :T_Inv_Head.Invh_Advance_Amt := Item_hd_tab(1).Invh_Advance_Amt;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 116
#   Loop    
#        Next_Record;  
#     Fetch C_Item_Det Into v_Item_Rec;
#     Exit When C_Item_Det%NotFound; 
#      
#      
#      
#      
#       :T_Inv_Item.Invi_Plu_Code       := v_Item_Rec.Invi_Plu_Code;
#       :T_Inv_Item.Invi_Item_Code      := v_Item_Rec.Invi_Item_Code;
#       :T_Inv_Item.Invi_Uom_Code       := v_Item_Rec.Invi_Uom_Code;
#       :T_Inv_Item.Invi_Batch          := v_Item_Rec.Invi_Batch;
#       :T_Inv_Item.Invi_Exp_Dt         := v_Item_Rec.Invi_Exp_Dt;
#      
#       :T_Inv_Item.Invi_Qty            := v_Item_Rec.Invi_Qty;
#       :T_Inv_Item.Invi_Loose          := v_Item_Rec.Invi_Loose;
#       :T_Inv_Item.Invi_Foc_Qty        := v_Item_Rec.Invi_Foc_Qty;
#       :T_Inv_Item.Invi_Foc_Loose      := v_Item_Rec.Invi_Foc_Loose;
#      
#      
#      
#      
#      
#       :T_Inv_Item.Invi_Rate           := v_Item_Rec.Invi_Rate;
#       :T_Inv_Item.Invi_Disc_Perc       := v_Item_Rec.Invi_Disc_Perc;
#       :T_Inv_Item.Invi_Disc_Amt        := v_Item_Rec.Invi_Disc_Amt;
#       :T_Inv_Item.Invi_Com_Perc       := v_Item_Rec.Invi_Com_Perc;
#       :T_Inv_Item.Invi_Others         := v_Item_Rec.Invi_Others;
#      
#     End Loop;
#   reason: its collection binds Parameter.Par_InvhId, which this form has no field for#   line 154
#   :Parameter.P_Copy := 0;
#   reason: set writes a field or a global and there is no third spelling, so a write to a form parameter is refused: item 20 rules a parameter read-only#   line 155
#   :Parameter.Par_InvhId := Null;
#   reason: set writes a field or a global and there is no third spelling, so a write to a form parameter is refused: item 20 rules a parameter read-only

8 clauses converted, 39 statements refused

47. fmb_invoiceon unit LOAD_CS_MTHgreen-waste
What you havePROGRAM-UNIT
PROCEDURE Load_Cs_Mth(Mth IN Number) IS

  Cursor CurCust Is Select CustI_Item_Code,Custi_Packing_Rate,CustI_Packing_Qty,CustI_Packing_Period From M_Cust_Item
  Where CustI_Comp_Code =:Global.Company
  and CustI_Cust_Code =:Invh_Cust_Code;  

  CURSOR  CurCs(Dt_fm in Date,Dt_to in Date,ItemCode in Varchar2) IS 
    SELECT CsH_Id, CsH_Loc_Code, CsH_Txn_Code, CsH_No,CsH_Cust_Code,  
           CsD_Item_Code Item_Code, Item_Name, CsD_UOM_Code UOM_Code, 
           UOM_Max_Loose Max_Loose, Floor((Nvl(CsD_Qty * UOM_Max_Loose, 0) + Nvl(CsD_Loose, 0) - (Nvl(CsD_Inv_Qty_BU,0))) /UOM_Max_Loose) Qty,
           (Nvl(CsD_Qty * UOM_Max_Loose, 0) + Nvl(CsD_Loose, 0) - (Nvl(CsD_Inv_Qty_BU,0)))-
           (Floor((Nvl(CsD_Qty * UOM_Max_Loose, 0) + Nvl(CsD_Loose, 0) - (Nvl(CsD_Inv_Qty_BU,0)))/UOM_Max_Loose) * UOM_Max_Loose) Loose,
           CsD_Rate, 0 Disc_Perc, 0 Disc_Amt, CsD_Id Item_Id
    FROM M_UOM, M_Item, T_Cust_Service_Detail, T_Cust_Service_Head
    WHERE CsD_CsH_Id = CsH_Id
    AND Item_Code = CsD_Item_Code
    AND UOM_Code = CsD_UOM_Code
    AND Nvl(CsD_Qty*UOM_Max_Loose, 0) + Nvl(CsD_Loose, 0) - (Nvl(CsD_Inv_Qty_BU,0)) > 0
    AND CsH_Comp_Code = :Global.Company
    AND CsH_Loc_Code =:InvH_Loc_Code
    --AND CsH_Txn_Code =:Invh_Ref_Txn_Code
    And Csd_Item_Code =ItemCode
    And CsH_Dt  Between Dt_fm and Dt_to 
    AND Nvl(CsH_Load_Status,'N') ='N';
    
  v_Dt_fm        Date;
  v_Dt_To        Date; 
  v_ctr          Number := 0;
  v_Count        Number;
  v_Loc_Code     VarChar2(10);
  v_Txn_Code     VarChar2(10);
  v_Doc_No       Number;
  v_Txn_Type     VarChar2(10);
  v_Alert        Number := Alert_Button2;
  v_Ref_Doc_Id   Number;
  v_Cust_Code    VarChar2(10);
  v_HDisc_Perc   Number;
  v_HDisc_Amt    Number;
  v_PLU_Code     VarChar2(20);
  v_Item_Code    VarChar2(10);
  v_Item_Name    VarChar2(100);
  v_UOM_Code     VarChar2(10);
  v_Max_Loose    Number;
  v_Qty_BU       Number;
  v_Qty          Number;
  v_Loose        Number;
  v_Rate         Number;
  v_Disc_Perc    Number;
  v_Disc_Amt     Number;
  v_Ref_Item_Id  Number;
  v_SMan_Code    VarChar2(10);
  v_Rem          Varchar2(100);
  v_Load_Status  Char(1);
  v_Foc_Qty      Number;
  v_Foc_Ls       Number;
  v_Init Char(1) := 'N';
  v_Old_ID Number := 0;

 
BEGIN
  Select To_Date(Mth,'YYYYMM'),Last_Day(To_Date(Mth,'YYYYMM')) Into v_Dt_fm,v_Dt_to from dual;
  
  Select count(*) into v_Count from T_Cust_Service_Detail, T_Cust_Service_Head,M_Uom
    WHERE CsD_CsH_Id = CsH_Id
    and Uom_Code =Csd_Uom_Code
    AND Nvl(CsD_Qty*UOM_Max_Loose, 0) + Nvl(CsD_Loose, 0) - (Nvl(CsD_Inv_Qty_BU,0)) > 0
    AND CsH_Comp_Code = :Global.Company
    AND CsH_Loc_Code =:InvH_Loc_Code
    --AND CsH_Txn_Code =:Invh_Ref_Txn_Code
    And Csd_Item_Code not in (select CustI_item_Code from M_Cust_item Where Custi_Comp_Code =:Global.Company and Custi_Cust_Code =:Invh_Cust_Code)
    And CsH_Dt  Between v_Dt_fm and v_Dt_to 
    AND Nvl(CsH_Load_Status,'N') ='N';
  If v_Count > 0 Then
      Show_Message('Inv_Alert', 'Items not defined in Customer Item Master!');
     Raise Form_Trigger_Failure;
  End If;
  
  Go_Block('T_Inv_Item');
  Last_Record;
  IF :System.Last_Record = 'TRUE' THEN 
    Last_Record;
    Next_Record; 
  ELSE 
    First_Record; 
  END IF;
  For Cur in CurCust Loop
  v_Count  :=0;  
   Open CurCs(v_Dt_Fm,v_Dt_To,Cur.Custi_Item_Code);
   --If :FLAG = 'Y' THEN
      Loop
      Fetch CurCs INTO v_Ref_Doc_Id, v_Loc_Code, v_Txn_Code, v_Doc_No,  v_Cust_Code,  v_Item_Code, v_Item_Name, v_UOM_Code, v_Max_Loose, 
        v_Qty, v_Loose, v_Rate, v_Disc_Perc, v_Disc_Amt, v_Ref_Item_Id;
      EXIT WHEN CurCs%NotFound;
      If v_count = Nvl(Cur.CustI_Packing_Qty,0) and  Nvl(Cur.CustI_Packing_Qty,0)> 1 Then
        --:InvI_Cs_Doc_Item_Id := v_Ref_Item_Id;
        :Old_Item_Code := v_Item_Code;
        :Old_UOM_Code := v_UOM_Code;
        :InvI_Plu_Code := v_Plu_Code;
        :InvI_Item_Code := v_Item_Code;
        :Item_Name := v_Item_Name;
        :InvI_UOM_Code := v_UOM_Code;
        :Max_Loose := v_Max_Loose;
        :InvI_Qty := v_Count;
        :InvI_Loose := 0;
        :InvI_Rate := Cur.Custi_Packing_Rate;
        :InvI_Disc_Perc := v_Disc_Perc;
        :InvI_Disc_Amt := v_Disc_Amt;
        Next_Record;
      Elsif (Nvl(Cur.CustI_Packing_Qty,0)= 0 Or v_count > Nvl(Cur.CustI_Packing_Qty,0)) Then 
 
        :InvI_Cs_Doc_Item_Id := v_Ref_Item_Id;
        :Old_Item_Code := v_Item_Code;
        :Old_UOM_Code := v_UOM_Code;
        :InvI_Plu_Code := v_Plu_Code;
        :InvI_Item_Code := v_Item_Code;
        :Item_Name := v_Item_Name;
        :InvI_UOM_Code := v_UOM_Code;
        :Max_Loose := v_Max_Loose;
        :InvI_Qty := v_Qty;
        :InvI_Loose := v_Loose;
        :InvI_Rate := v_Rate;
        :InvI_Disc_Perc := v_Disc_Perc;
        :InvI_Disc_Amt := v_Disc_Amt;
        :Ref_Doc_Item := 'Loaded';
        Next_Record;
      End If;
        v_count := v_Count + v_Qty;
        v_ctr := v_ctr+1; 
      End Loop;
      Close CurCs;

        If v_Count >0 and v_Count < Nvl(Cur.CustI_Packing_Qty,0) Then
          --:InvI_Cs_Doc_Item_Id := v_Ref_Item_Id;
          :Old_Item_Code := v_Item_Code;
          :Old_UOM_Code := v_UOM_Code;
          :InvI_Plu_Code := v_Plu_Code;
          :InvI_Item_Code := v_Item_Code;
          :Item_Name := v_Item_Name;
          :InvI_UOM_Code := v_UOM_Code;
          :Max_Loose := v_Max_Loose;
          :InvI_Qty := v_Count;
          :InvI_Loose := 0;
          :InvI_Rate := Cur.Custi_Packing_Rate;
          :InvI_Disc_Perc := v_Disc_Perc;
          :InvI_Disc_Amt := v_Disc_Amt;
                    
        End If;
        
     End Loop;
   
      If Nvl(v_Ctr,0) >0 Then 
         :Invh_Load_Status :='Y' ;
         Update T_Cust_Service_Head set CsH_Load_Status='Y' 
         Where  CsH_Comp_Code = :Global.Company
         AND CsH_Loc_Code =:InvH_Loc_Code
         And CsH_Dt  Between v_Dt_fm and v_Dt_to 
         AND Nvl(CsH_Load_Status,'N') ='N';        
      End If;  
      First_Record;
       GO_BLOCK('T_INV_ITEM');
             
END;
What you getClause Rule Language
on unit LOAD_CS_MTH(MTH):    from load-fmb-invoice-load-cs-mth-0(INVH_CUST_CODE, INVH_LOC_CODE)    unique else "Items not defined in Customer Item Master!"    go to T_INV_ITEM    last record of T_INV_ITEM    last record when SYSTEM.LAST_RECORD = 'TRUE'    next record when SYSTEM.LAST_RECORD = 'TRUE'    first record when not (SYSTEM.LAST_RECORD = 'TRUE')    first record    go to T_INV_ITEM
# 2 statements did not convert.#   line 86
#   For Cur in CurCust Loop
#     v_Count  :=0;  
#      Open CurCs(v_Dt_Fm,v_Dt_To,Cur.Custi_Item_Code);
#       
#         Loop
#         Fetch CurCs INTO v_Ref_Doc_Id, v_Loc_Code, v_Txn_Code, v_Doc_No,  v_Cust_Code,  v_Item_Code, v_Item_Name, v_UOM_Code, v_Max_Loose, 
#           v_Qty, v_Loose, v_Rate, v_Disc_Perc, v_Disc_Amt, v_Ref_Item_Id;
#         EXIT WHEN CurCs%NotFound;
#         If v_count = Nvl(Cur.CustI_Packing_Qty,0) and  Nvl(Cur.CustI_Packing_Qty,0)> 1 Then
#            
#           :Old_Item_Code := v_Item_Code;
#           :Old_UOM_Code := v_UOM_Code;
#           :InvI_Plu_Code := v_Plu_Code;
#           :InvI_Item_Code := v_Item_Code;
#           :Item_Name := v_Item_Name;
#           :InvI_UOM_Code := v_UOM_Code;
#           :Max_Loose := v_Max_Loose;
#           :InvI_Qty := v_Count;
#           :InvI_Loose := 0;
#           :InvI_Rate := Cur.Custi_Packing_Rate;
#           :InvI_Disc_Perc := v_Disc_Perc;
#           :InvI_Disc_Amt := v_Disc_Amt;
#           Next_Record;
#         Elsif (Nvl(Cur.CustI_Packing_Qty,0)= 0 Or v_count > Nvl(Cur.CustI_Packing_Qty,0)) Then 
#    
#           :InvI_Cs_Doc_Item_Id := v_Ref_Item_Id;
#           :Old_Item_Code := v_Item_Code;
#           :Old_UOM_Code := v_UOM_Code;
#           :InvI_Plu_Code := v_Plu_Code;
#           :InvI_Item_Code := v_Item_Code;
#           :Item_Name := v_Item_Name;
#           :InvI_UOM_Code := v_UOM_Code;
#           :Max_Loose := v_Max_Loose;
#           :InvI_Qty := v_Qty;
#           :InvI_Loose := v_Loose;
#           :InvI_Rate := v_Rate;
#           :InvI_Disc_Perc := v_Disc_Perc;
#           :InvI_Disc_Amt := v_Disc_Amt;
#           :Ref_Doc_Item := 'Loaded';
#           Next_Record;
#         End If;
#           v_count := v_Count + v_Qty;
#           v_ctr := v_ctr+1; 
#         End Loop;
#         Close CurCs;
#   
#           If v_Count >0 and v_Count < Nvl(Cur.CustI_Packing_Qty,0) Then
#              
#             :Old_Item_Code := v_Item_Code;
#             :Old_UOM_Code := v_UOM_Code;
#             :InvI_Plu_Code := v_Plu_Code;
#             :InvI_Item_Code := v_Item_Code;
#             :Item_Name := v_Item_Name;
#             :InvI_UOM_Code := v_UOM_Code;
#             :Max_Loose := v_Max_Loose;
#             :InvI_Qty := v_Count;
#             :InvI_Loose := 0;
#             :InvI_Rate := Cur.Custi_Packing_Rate;
#             :InvI_Disc_Perc := v_Disc_Perc;
#             :InvI_Disc_Amt := v_Disc_Amt;
#                       
#           End If;
#           
#        End Loop;
#   reason: it holds a loop over CURCS, a cursor this loop's own row supplies arguments to, so the inner collection is a source read once per row and no collection operation has a slot for one#   line 151
#   If Nvl(v_Ctr,0) >0 Then
#     :Invh_Load_Status :='Y';
#     Update T_Cust_Service_Head set CsH_Load_Status='Y' 
#            Where  CsH_Comp_Code = :Global.Company
#            AND CsH_Loc_Code =:InvH_Loc_Code
#            And CsH_Dt  Between v_Dt_fm and v_Dt_to 
#            AND Nvl(CsH_Load_Status,'N') ='N';
#   End If;
#   reason: the guard reads the local V_CTR, which a loop body above it counts with: `V_CTR := V_CTR+1`, so what it holds here is the loop's own arithmetic, and crl-loops.md states the collection operation and not the bookkeeping around it

8 clauses converted, 2 statements refused

48. fmb_invoiceon unit LOAD_PREQgreen-waste
What you havePROGRAM-UNIT
PROCEDURE Load_Preq(Ref_Id IN Number) IS


CURSOR  CurPreq IS 
    SELECT PreqI_Id, PreqH_Id, PreqH_Loc_Code, PreqH_Txn_Code, PreqH_No, Null PreqH_SMan_Code,Null PreqH_Cust_Code,Null PreqH_Disc_Perc, 
           Null PreqH_Disc_Amt,PreqI_Plu_Code, PreqI_Item_Code Item_Code, Item_Name, PreqI_UOM_Code UOM_Code, 
           UOM_Max_Loose Max_Loose, Floor((Nvl(PreqI_Qty * UOM_Max_Loose, 0) + Nvl(PreqI_Loose, 0) - (Nvl(PreqI_Inv_Qty_BU,0) + Nvl(PreqI_Pq_Qty_Bu,0) + Nvl(PreqI_PO_Qty_Bu,0) + 
  Nvl(PreqI_LtO_Qty_Bu,0) + Nvl(PreqI_Dn_Qty_Bu,0)))/UOM_Max_Loose) Qty,
           (Nvl(PreqI_Qty * UOM_Max_Loose, 0) + Nvl(PreqI_Loose, 0) - (Nvl(PreqI_Inv_Qty_BU,0) + Nvl(PreqI_Pq_Qty_Bu,0) + Nvl(PreqI_PO_Qty_Bu,0) + Nvl(PreqI_LtO_Qty_Bu,0) + Nvl(PreqI_Dn_Qty_Bu,0)))-
           (Floor((Nvl(PreqI_Qty * UOM_Max_Loose, 0) + Nvl(PreqI_Loose, 0) - (Nvl(PreqI_Inv_Qty_BU,0) + Nvl(PreqI_Pq_Qty_Bu,0) + Nvl(PreqI_PO_Qty_Bu,0) + Nvl(PreqI_LtO_Qty_Bu,0) + Nvl(PreqI_Dn_Qty_Bu,0)))/UOM_Max_Loose) * UOM_Max_Loose) Loose,
           0 Rate, 0 Disc_Perc, 0 Disc_Amt, PreqI_Id Item_Id
    FROM M_UOM, M_Item, T_Preq_Item, T_Preq_Head
    WHERE PreqI_PreqH_Id = PreqH_Id
    AND Item_Code = PreqI_Item_Code
    AND UOM_Code = PreqI_UOM_Code
    AND Nvl(PreqI_Qty*UOM_Max_Loose, 0) + Nvl(PreqI_Loose, 0) - (Nvl(PreqI_Inv_Qty_BU,0) + Nvl(PreqI_Pq_Qty_Bu,0) + Nvl(PreqI_PO_Qty_Bu,0) + Nvl(PreqI_LtO_Qty_Bu,0) + Nvl(PreqI_Dn_Qty_Bu,0)) > 0
    AND PreqH_Comp_Code = :Global.Company
    AND PreqH_Loc_Code =:Ref_Loc_Code
    AND PreqH_Txn_Code =:Invh_Ref_Txn_Code
    And PreqH_Id =Ref_Id
    AND Nvl(PreqH_Load_Status,'N') = 'N' Order By PreqI_Id;

   
  v_ctr          Number := 0;
  v_Count        Number;
  v_Loc_Code     VarChar2(10);
  v_Txn_Code     VarChar2(10);
  v_Doc_No       Number;
  v_Txn_Type     VarChar2(10);
  v_Alert        Number := Alert_Button2;
  v_Ref_Doc_Id   Number;
  v_Cust_Code    VarChar2(10);
  v_HDisc_Perc   Number;
  v_HDisc_Amt    Number;
  v_PLU_Code     VarChar2(20);
  v_Item_Code    VarChar2(10);
  v_Item_Name    VarChar2(100);
  v_UOM_Code     VarChar2(10);
  v_Max_Loose    Number;
  v_Qty_BU       Number;
  v_Qty          Number;
  v_Loose        Number;
  v_Rate         Number;
  v_Disc_Perc    Number;
  v_Disc_Amt     Number;
  v_Ref_Item_Id  Number;
  v_SMan_Code    VarChar2(10);
  v_Rem          Varchar2(100);
  v_Load_Status  Char(1);
  v_Foc_Qty      Number;
  v_Foc_Ls       Number;
  v_Init         Char(1) := 'N';
  v_Old_ID       Number := 0;
  v_Divn         Varchar2(10);
  v_PreqI_Id     Number(10);
  V_Ref          VARCHAR2 (4);
  

 
BEGIN
  
  --Validation
  Select Loc_Divn_Code INTO v_Divn From M_Location Where Loc_Comp_Code =:Global.Company and Loc_Code =:Ref_Loc_Code;
  If v_Divn is Null Then 
     Show_Message('Inv_Alert','Divn code of '||:Ref_Loc_Code||' not found!');
     Raise Form_Trigger_Failure;
  End If;
  v_Cust_Code := Fn_Get_Divn_Param(:Global.Company,v_Divn,'DIVN_CUST_CODE');

  If :Invh_Cust_Code <> v_Cust_Code Then
     Show_Message('Inv_Alert','Division/Customer Not match!');
     Raise Form_Trigger_Failure;
  End If;
  
   
Go_Block('T_Inv_Item');
   Open CurPreq;
   --If :FLAG = 'Y' THEN
      Loop
      Fetch CurPreq INTO v_PreqI_Id, v_Ref_Doc_Id, v_Loc_Code, v_Txn_Code, v_Doc_No, v_SMan_Code, v_Cust_Code, v_HDisc_Perc, v_HDisc_Amt, v_Plu_Code, v_Item_Code, v_Item_Name, v_UOM_Code, v_Max_Loose, 
        v_Qty, v_Loose, v_Rate, v_Disc_Perc, v_Disc_Amt, v_Ref_Item_Id;
      EXIT WHEN CurPreq%NotFound;

        :InvI_Preq_Doc_Item_Id := v_Ref_Item_Id;
        :Old_Item_Code := v_Item_Code;
        :Old_UOM_Code := v_UOM_Code;
        :InvI_Plu_Code := v_Plu_Code;
        :InvI_Item_Code := v_Item_Code;
        :Item_Name := v_Item_Name;
        :InvI_UOM_Code := v_UOM_Code;
        :Max_Loose := v_Max_Loose;
        :InvI_Qty := v_Qty;
        :InvI_Loose := v_Loose;
        :InvI_Rate := v_Rate;
         Select Stkd_Unconf_Qty,Stkd_Validate_stk Into :Div_Stock_Bu,:Validate_Stk From M_Stock_Division
         Where Stkd_Comp_Code = :Global.Company And Stkd_Divn_Code= :InvH_Divn_Code
           And Stkd_Item_code = :InvI_Item_Code;
        If Nvl(:InvI_Rate, 0) = 0 Then    
          
          If NVL (:Frm_Cost_Price_Billing, 'N') = 'Y' And (NVL (:Invi_Plu_Code, ' ') NOT LIKE :Frm_Weigh_Bcode_Prefix || '%' And :Frm_Weigh_Bcode_Prefix IS NOT Null)  And 
             (NVL (:Invi_Item_Code, ' ') NOT LIKE :Frm_Weigh_Item_Prefix || '%' And :Frm_Weigh_Item_Prefix IS NOT Null) Then
            Get_Prate;
            :Rate_Flag :='Y';
           ELSIf (NVL (:Invi_Plu_Code, ' ') LIKE :Frm_Weigh_Bcode_Prefix || '%' And :Frm_Weigh_Bcode_Prefix IS NOT Null) Then
            V_Ref := SUBSTR (:Invi_Plu_Code, 3, 4);
            V_Rate := SUBSTR (:Invi_Plu_Code, 7, 6) / 100;
            -----For Weighing Item consider Selling Rate 
            If NVL (:Frm_Cost_Price_Billing, 'N') = 'Y' And  (Nvl(:Invi_Item_Code, ' ') LIKE :Frm_Weigh_Item_Prefix || '%' And :Frm_Weigh_Item_Prefix IS NOT Null) Then
                 Proc_Get_Sale_Price (:Global.Company,
                    :Invh_Divn_Code,
                    :Invh_PlH_Code,:InvH_Alt_PlH_Code,
                    :Invi_Item_Code,
                    :Invi_Uom_Code,
                    :Invh_Cust_Code,
                    :Invh_Curr_Code,
                    Nvl (:Frm_Inc_Default_Price, 'Y'),
                    :Invh_Dt,
                    :Invi_Prom_Item_Id,
                    :Promh_Id,
                    :Invi_Rate,
                    :Invi_Disc_Perc,
                    :Invi_Disc_Amt,
                    :Invi_Prom_Bu,
                    :Invi_Prom_Foc_Bu,
                    :Invi_Prom_Qty_Limit_Bu,
                    :Invi_Prom_Qty_Inv_Bu,
                    :Invi_Prom_Foc_Same);                    
            End If;
             
            If NVL (:Frm_Valid_Wt, 'N') = 'Y' And (NVL (:Invi_Plu_Code, ' ') LIKE :Frm_Weigh_Bcode_Prefix || '%' And :Frm_Weigh_Bcode_Prefix IS NOT Null) Then          
              Proc_Get_Wt (:Invi_Plu_Code,:Invi_Rate,:Max_Loose,:Invi_Qty,:Invi_Loose); 
            End If;
             
          Else

            Proc_Get_Sale_Price (:Global.Company,
                            :Invh_Divn_Code,
                            :Invh_PlH_Code,:InvH_Alt_PlH_Code,
                            :Invi_Item_Code,
                            :Invi_Uom_Code,
                            :Invh_Cust_Code,
                            :Invh_Curr_Code,
                            Nvl (:Frm_Inc_Default_Price, 'Y'),
                            :Invh_Dt,
                            :Invi_Prom_Item_Id,
                            :Promh_Id,
                            :Invi_Rate,
                            :Invi_Disc_Perc,
                            :Invi_Disc_Amt,
                            :Invi_Prom_Bu,
                            :Invi_Prom_Foc_Bu,
                            :Invi_Prom_Qty_Limit_Bu,
                            :Invi_Prom_Qty_Inv_Bu,
                            :Invi_Prom_Foc_Same);
            :Old_Uom_Code := :Invi_Uom_Code;
            Get_Promotion_Foc ('VALIDATE');         
        
            If  Nvl(:Frm_En_Add_Disc,'N') ='Y' Then
               Proc_Get_CustItem_Disc(:Global.Company,:InvI_Item_Code,:InvH_Cust_Code,:Inv_Additional_Disc);
            End If;
            If :Inv_Additional_Disc > 0 Then
               :Invi_Disc_Amt := Round((:InvI_Rate * :Inv_Additional_Disc/100),Nvl(:Frm_Decimal,2));
            End If;
           End If;
        End If;
        
        :InvI_Disc_Perc := v_Disc_Perc;
        :InvI_Disc_Amt := v_Disc_Amt;
        :Ref_Doc_Item := 'Loaded';
        v_ctr := v_ctr+1; 
          Next_Record;
      End Loop;
      If Nvl(v_Ctr,0) >0 Then 
         :Invh_Load_Status :='Y' ;
      End If;  
      Close CurPreq;
      First_Record;
       GO_BLOCK('T_INV_ITEM');
END;
What you getClause Rule Language
on unit LOAD_PREQ(REF_ID):    from load-fmb-invoice-load-preq-0(REF_LOC_CODE)    deny when is_blank(LOC_DIVN_CODE) else ('Divn code of ' || REF_LOC_CODE) || ' not found!'    deny when INVH_CUST_CODE <> FN_GET_DIVN_PARAM(GLOBAL.COMPANY, LOC_DIVN_CODE, 'DIVN_CUST_CODE') else "Division/Customer Not match!"    go to T_INV_ITEM    first record    go to T_INV_ITEM
# 2 statements did not convert.#   line 79
#   Loop
#         Fetch CurPreq INTO v_PreqI_Id, v_Ref_Doc_Id, v_Loc_Code, v_Txn_Code, v_Doc_No, v_SMan_Code, v_Cust_Code, v_HDisc_Perc, v_HDisc_Amt, v_Plu_Code, v_Item_Code, v_Item_Name, v_UOM_Code, v_Max_Loose, 
#           v_Qty, v_Loose, v_Rate, v_Disc_Perc, v_Disc_Amt, v_Ref_Item_Id;
#         EXIT WHEN CurPreq%NotFound;
#   
#           :InvI_Preq_Doc_Item_Id := v_Ref_Item_Id;
#           :Old_Item_Code := v_Item_Code;
#           :Old_UOM_Code := v_UOM_Code;
#           :InvI_Plu_Code := v_Plu_Code;
#           :InvI_Item_Code := v_Item_Code;
#           :Item_Name := v_Item_Name;
#           :InvI_UOM_Code := v_UOM_Code;
#           :Max_Loose := v_Max_Loose;
#           :InvI_Qty := v_Qty;
#           :InvI_Loose := v_Loose;
#           :InvI_Rate := v_Rate;
#            Select Stkd_Unconf_Qty,Stkd_Validate_stk Into :Div_Stock_Bu,:Validate_Stk From M_Stock_Division
#            Where Stkd_Comp_Code = :Global.Company And Stkd_Divn_Code= :InvH_Divn_Code
#              And Stkd_Item_code = :InvI_Item_Code;
#           If Nvl(:InvI_Rate, 0) = 0 Then    
#             
#             If NVL (:Frm_Cost_Price_Billing, 'N') = 'Y' And (NVL (:Invi_Plu_Code, ' ') NOT LIKE :Frm_Weigh_Bcode_Prefix || '%' And :Frm_Weigh_Bcode_Prefix IS NOT Null)  And 
#                (NVL (:Invi_Item_Code, ' ') NOT LIKE :Frm_Weigh_Item_Prefix || '%' And :Frm_Weigh_Item_Prefix IS NOT Null) Then
#               Get_Prate;
#               :Rate_Flag :='Y';
#              ELSIf (NVL (:Invi_Plu_Code, ' ') LIKE :Frm_Weigh_Bcode_Prefix || '%' And :Frm_Weigh_Bcode_Prefix IS NOT Null) Then
#               V_Ref := SUBSTR (:Invi_Plu_Code, 3, 4);
#               V_Rate := SUBSTR (:Invi_Plu_Code, 7, 6) / 100;
#                
#               If NVL (:Frm_Cost_Price_Billing, 'N') = 'Y' And  (Nvl(:Invi_Item_Code, ' ') LIKE :Frm_Weigh_Item_Prefix || '%' And :Frm_Weigh_Item_Prefix IS NOT Null) Then
#                    Proc_Get_Sale_Price (:Global.Company,
#                       :Invh_Divn_Code,
#                       :Invh_PlH_Code,:InvH_Alt_PlH_Code,
#                       :Invi_Item_Code,
#                       :Invi_Uom_Code,
#                       :Invh_Cust_Code,
#                       :Invh_Curr_Code,
#                       Nvl (:Frm_Inc_Default_Price, 'Y'),
#                       :Invh_Dt,
#                       :Invi_Prom_Item_Id,
#                       :Promh_Id,
#                       :Invi_Rate,
#                       :Invi_Disc_Perc,
#                       :Invi_Disc_Amt,
#                       :Invi_Prom_Bu,
#                       :Invi_Prom_Foc_Bu,
#                       :Invi_Prom_Qty_Limit_Bu,
#                       :Invi_Prom_Qty_Inv_Bu,
#                       :Invi_Prom_Foc_Same);                    
#               End If;
#                
#               If NVL (:Frm_Valid_Wt, 'N') = 'Y' And (NVL (:Invi_Plu_Code, ' ') LIKE :Frm_Weigh_Bcode_Prefix || '%' And :Frm_Weigh_Bcode_Prefix IS NOT Null) Then          
#                 Proc_Get_Wt (:Invi_Plu_Code,:Invi_Rate,:Max_Loose,:Invi_Qty,:Invi_Loose); 
#               End If;
#                
#             Else
#   
#               Proc_Get_Sale_Price (:Global.Company,
#                               :Invh_Divn_Code,
#                               :Invh_PlH_Code,:InvH_Alt_PlH_Code,
#                               :Invi_Item_Code,
#                               :Invi_Uom_Code,
#                               :Invh_Cust_Code,
#                               :Invh_Curr_Code,
#                               Nvl (:Frm_Inc_Default_Price, 'Y'),
#                               :Invh_Dt,
#                               :Invi_Prom_Item_Id,
#                               :Promh_Id,
#                               :Invi_Rate,
#                               :Invi_Disc_Perc,
#                               :Invi_Disc_Amt,
#                               :Invi_Prom_Bu,
#                               :Invi_Prom_Foc_Bu,
#                               :Invi_Prom_Qty_Limit_Bu,
#                               :Invi_Prom_Qty_Inv_Bu,
#                               :Invi_Prom_Foc_Same);
#               :Old_Uom_Code := :Invi_Uom_Code;
#               Get_Promotion_Foc ('VALIDATE');         
#           
#               If  Nvl(:Frm_En_Add_Disc,'N') ='Y' Then
#                  Proc_Get_CustItem_Disc(:Global.Company,:InvI_Item_Code,:InvH_Cust_Code,:Inv_Additional_Disc);
#               End If;
#               If :Inv_Additional_Disc > 0 Then
#                  :Invi_Disc_Amt := Round((:InvI_Rate * :Inv_Additional_Disc/100),Nvl(:Frm_Decimal,2));
#               End If;
#              End If;
#           End If;
#           
#           :InvI_Disc_Perc := v_Disc_Perc;
#           :InvI_Disc_Amt := v_Disc_Amt;
#           :Ref_Doc_Item := 'Loaded';
#           v_ctr := v_ctr+1; 
#             Next_Record;
#         End Loop;
#   reason: its collection binds REF_ID, a parameter this program takes, and a parameter passed in PL/SQL is not a bind the page can supply#   line 173
#   If Nvl(v_Ctr,0) >0 Then
#     :Invh_Load_Status :='Y';
#   End If;
#   reason: the guard reads the local V_CTR, which a loop body above it counts with: `V_CTR := V_CTR+1`, so what it holds here is the loop's own arithmetic, and crl-loops.md states the collection operation and not the bookkeeping around it

5 clauses converted, 2 statements refused

49. fmb_invoiceon unit PROC_DUP_PRINTgreen-waste
What you havePROGRAM-UNIT
PROCEDURE Proc_Dup_Print(P_Flag Varchar2) IS
-- P_Flag = K - Called from Key-Commit, 
-- P-Flag = D - Duplicate Print Button
  Pl_Id     ParamList;
  v_Status  VarChar2(20);
  v_Log_Id  Number;
  v_Report  Varchar2(30);
  v_Report  VarChar2(30) :=  'print_invoice';
  v_Rep_Id  Report_Object;
  v_Rep_Job_Id VarChar2(100);
  v_Job_Id     VarChar2(100);
  v_Rep_Status VarChar2(100);
  v_Rep_URL    VarChar2(1000);
  v_Cust_Host   VarChar2(100);
  v_Host_Name  VarChar2(100) := :Global.Rep_Host_Name;
  v_Port       VarChar2(100)   := :Global.Rep_Port;
  v_Rep_Server VarChar2(100):= :Global.Rep_Server;
  v_Dt         Date;
  v_Alert      Number;
  v_mail_URL   Varchar2(1000);
  v_cust_short_name m_customer.cust_short_name%type;
  v_cust_email m_customer.cust_email%type;
  v_cust_tel1  m_customer.cust_tel1%type;
 Begin
  If P_Flag = 'D' Then 
     Txn_Validate;
  End If;     
  
  Select cust_short_name,cust_email,cust_tel1 Into v_cust_short_name,v_cust_email,v_cust_tel1 from m_customer where cust_code = :Invh_Cust_code;
  --Select user_email Into v_email from m_user Where user_code =  'ANOOP';
    If Nvl(:Frm_Skip_Print, 'N') = 'N' AND Nvl(:Frm_Auto_Print, 'N') = 'N' Then
     PL_Id := Get_Parameter_List('Print');
  If Not Id_Null(Pl_Id) Then
    Destroy_Parameter_List(Pl_Id);
  End If;
  PL_Id := Create_Parameter_List('Print');   
  If :Frm_No_Of_Print Is Null Then
    :Frm_No_Of_Print :=  Fn_Get_Stk_Txn_Param(:Invh_Txn_Code,:Global.Company, 'INV_NO_OF_PRINT');
  End If;  
  Add_Parameter(PL_Id, 'Parm_Comp_Code', Text_Parameter, :Global.Company);
  Add_Parameter(PL_Id, 'Parm_Loc_Code', Text_Parameter, :InvH_Loc_Code);
  Add_Parameter(PL_Id, 'Parm_Txn_Code', Text_Parameter, :InvH_Txn_Code);
  Add_Parameter(PL_Id, 'Parm_AYr_Code', Text_Parameter, :InvH_AYr_Code);
  Add_Parameter(PL_Id, 'Parm_No_From', Text_Parameter, :InvH_No);
  Add_Parameter(PL_Id, 'Parm_No_To', Text_Parameter, :InvH_No);
  Add_Parameter(PL_Id, 'No_Of_Print', Text_Parameter, :Frm_No_Of_Print);
  Add_Parameter(PL_Id, 'Parm_User', Text_Parameter, :Global.User);
  Add_Parameter(Pl_Id, 'ParamForm', Text_Parameter, 'No');
  Add_Parameter(PL_Id, 'Curr_Fmt', Text_Parameter, Nvl(:Frm_Curr_Format,:Global.Curr_Format));

  v_Rep_Id := Find_Report_Object('print_txn');
  --Communication Mode
  Set_Report_Object_Property(v_Rep_Id, Report_Comm_Mode, Synchronous);
  --Set_Report_Object_Property(v_Rep_Id, Report_Desformat,:Frm_Desformat);
  Set_Report_Object_Property(v_Rep_Id, Report_Desformat, 'PDF');
  --User pref.Printer    
  
  
  
  If :Frm_Printer_Name Is Null Then
    :Frm_Printer_Name := Fn_Get_User_Preference(:Global.User, :Global.Company, :InvH_Txn_Code, 'USR_PRINTER');
  End If;
  
  If :Frm_Printer_Name Is Null Then
     :Frm_Printer_Name := Fn_Get_Stk_Txn_Param(:InvH_Txn_Code, :Global.Company, 'INV_PRINTER');
  End If;
  

  --Specify Report Server and Report File Name
   Set_Report_Object_Property(v_Rep_Id, Report_Server, v_Rep_Server);
  If :Frm_Custom_Inv_Report Is Not Null Then
    v_Alert := Show_Alert('CUSTOM_PRINT_ALERT');
    If v_Alert = Alert_button1 Then
      Set_Report_Object_Property(v_Rep_Id, Report_FileName,lower(:FRM_REPORT));
    Else
      Set_Report_Object_Property(v_Rep_Id, Report_FileName,lower(:Frm_Custom_Inv_Report));
      :Frm_Printer_Name := Fn_Get_Cust_Param(:Invh_Cust_Code, :Global.Company, 'CUST_CUSTOM_PRINTER');
    End If;
  Else
    Set_Report_Object_Property(v_Rep_Id, Report_FileName,lower(:FRM_REPORT));
  End If;

  --Handled Destination Type and Name
 -- If :Mnu_Dest_Name = 'PRINTER' Then
     -- Set_Report_Object_Property(v_Rep_Id, Report_DesType, PRINTER);
  If Nvl(:Frm_Printer_Name,:Mnu_Printer_Name) Is Not Null Then
       Set_Report_Object_Property(v_Rep_Id, Report_DesName, Nvl(:Frm_Printer_Name,:Mnu_Printer_Name));
       --Set_Report_Object_Property(v_Rep_Id, Report_DesType,PRINTER);--- added by prem (06/11/2013) ---
       Set_Report_Object_Property(v_Rep_Id, Report_DesType,CACHE);
     --End If;
  Else
     Set_Report_Object_Property(v_Rep_Id, Report_DesType,CACHE);
  End If;

  --Run Report
  v_Rep_Job_Id := Run_Report_Object(v_Rep_Id, PL_Id);
  v_Rep_Status := Report_Object_Status(v_Rep_Job_Id);

 --  SET_CUSTOM_PROPERTY('CTRL.PRINTBEAN',1,'DEFAULT_PRINTER',:Frm_Printer_Name);
 --  SET_CUSTOM_PROPERTY('CTRL.CUSTOM_PRN_BEAN',1,'DEFAULT_PRINTER',:Frm_Printer_Name);
   SET_CUSTOM_PROPERTY('CTRL.PRINTBEAN',1,'DEFAULT_PRINTER',Nvl(:Frm_Printer_Name,:Mnu_Printer_Name));
   SET_CUSTOM_PROPERTY('CTRL.CUSTOM_PRN_BEAN',1,'DEFAULT_PRINTER',Nvl(:Frm_Printer_Name,:Mnu_Printer_Name));
    
 If Nvl(:Frm_Custom_Print,'N') = 'N' Then
     --  Message('1');
    If v_Rep_Status = 'FINISHED' Then
       If Upper(:Mnu_Dest_Name) = 'PRINTER' Then
          v_Job_Id := SubStr(v_Rep_Job_Id, length(v_Rep_Server)+2);
          v_Rep_URL := 'http://' || v_Host_Name || ':' || v_Port || '/reports/rwservlet/getjobid' || v_Job_Id || '?server=' || v_Rep_Server;
          Message('Print Success');
          SET_CUSTOM_PROPERTY('CTRL.PRINTBEAN',1,'FILE_NAME',v_Rep_URL);          
          SET_CUSTOM_PROPERTY('CTRL.PRINTBEAN',1,'PRINT_FILE','');          
          --Web.Show_Document(v_Rep_URL, '_blank');
       Elsif Upper(:Mnu_Dest_Name) = 'CACHE' Then
           v_Job_Id := SubStr(v_Rep_Job_Id, length(v_Rep_Server)+2);
          v_Rep_URL := 'http://' || v_Host_Name || ':' || v_Port || '/reports/rwservlet/getjobid' || v_Job_Id || '?server=' || v_Rep_Server;
          Message('Print Success');
          Web.Show_Document(v_Rep_URL, '_blank');
      Elsif Upper(:Mnu_Dest_Name) = 'EMAIL' Then
           v_Job_Id     := SubStr(v_Rep_Job_Id, length(v_Rep_Server)+2);
           v_Cust_Host := Fn_Get_User_Param(:Global.User, 'USR_REP_HOST_NAME');
           If v_Cust_Host Is Not Null Then
             v_Host_Name := v_Cust_Host;
           End If;
          v_Rep_URL   := 'http://' || v_Host_Name || ':' || v_Port || '/reports/rwservlet/getjobid' || v_Job_Id || '?server=' || v_Rep_Server;
          If Nvl(:Frm_En_Inv_Direct_Email,'N') = 'Y' Then
            If Nvl(:Frm_Cust_En_Email, 'N') = 'Y' Then
               If v_cust_email is not null Then
                 v_mail_URL := 'http://dev-portal.family.qa/send-mail/report-mailer/send-report-mail?to='||v_cust_email||'&user_code='||v_cust_short_name||'&content=Please find attached the report!&url='||v_Rep_URL;  
                Proc_Send_Report(:Global.Company,v_cust_email,:Global.User,v_cust_short_name,'Please find attached the pdf',v_mail_URL);
                Proc_Ins_Email_Log(:Global.Company, :Invh_Loc_Code, :Invh_Txn_Code, :Invh_Ayr_Code, :Invh_No, Sysdate, v_cust_email, v_cust_short_name, :Global.User);
               End If; 
            End If;
          End If;
       End If;
       
     Else
       Message('Error Running Report');
     End If;
  Else
    If v_Rep_Status = 'FINISHED' Then
        If Upper(:Mnu_Dest_Name) = 'PRINTER' Then
             v_Job_Id := SubStr(v_Rep_Job_Id, length(v_Rep_Server)+2);
             v_Rep_URL := 'http://' || v_Host_Name || ':' || v_Port || '/reports/rwservlet/getjobid' || v_Job_Id || '?server=' || v_Rep_Server;
          If P_Flag = 'K' then 
           Message('Print Success');
          End if;
          SET_CUSTOM_PROPERTY('CTRL.CUSTOM_PRN_BEAN',1,'FILE_NAME',v_Rep_URL);
          SET_CUSTOM_PROPERTY('CTRL.CUSTOM_PRN_BEAN',1,'PAGE_WIDTH',Nvl(:FRM_CUSTOM_WIDTH,'8.5')); 
          SET_CUSTOM_PROPERTY('CTRL.CUSTOM_PRN_BEAN',1,'PAGE_HEIGHT',Nvl(:FRM_CUSTOM_HEIGHT,'5.5'));
          SET_CUSTOM_PROPERTY('CTRL.CUSTOM_PRN_BEAN',1,'ORIENTATION', 'POTRAIT');          
          SET_CUSTOM_PROPERTY('CTRL.CUSTOM_PRN_BEAN',1,'PRINT_FILE','');          
        Elsif Upper(:Mnu_Dest_Name) = 'CACHE' Then
          v_Job_Id := SubStr(v_Rep_Job_Id, length(v_Rep_Server)+2);
           v_Rep_URL := 'http://' || v_Host_Name || ':' || v_Port || '/reports/rwservlet/getjobid' || v_Job_Id || '?server=' || v_Rep_Server;
          If P_Flag = 'D' Then
           Message('Print Success');
          End if;
           Web.Show_Document(v_Rep_URL, '_blank');
         Elsif Upper(:Mnu_Dest_Name) = 'EMAIL' Then
           v_Job_Id     := SubStr(v_Rep_Job_Id, length(v_Rep_Server)+2);
           v_Cust_Host := Fn_Get_User_Param(:Global.User, 'USR_REP_HOST_NAME');
           If v_Cust_Host Is Not Null Then
             v_Host_Name := v_Cust_Host;
           End If;
          v_Rep_URL   := 'http://' || v_Host_Name || ':' || v_Port || '/reports/rwservlet/getjobid' || v_Job_Id || '?server=' || v_Rep_Server;
          If Nvl(:Frm_En_Inv_Direct_Email,'N') = 'Y' Then
            If Nvl(:Frm_Cust_En_Email, 'N') = 'Y' Then
              If v_cust_email is not null Then 
                v_mail_URL := 'http://dev-portal.family.qa/send-mail/report-mailer/send-report-mail?to='||v_cust_email||'&user_code='||v_cust_short_name||'&content=Please find attached the report!&url='||v_Rep_URL;  
                Proc_Send_Report(:Global.Company,v_cust_email,:Global.User,v_cust_short_name,'Please find attached the pdf',v_mail_URL);
                Proc_Ins_Email_Log(:Global.Company, :Invh_Loc_Code, :Invh_Txn_Code, :Invh_Ayr_Code, :Invh_No, Sysdate, v_cust_email, v_cust_short_name, :Global.User);
              End If;
            End If;
          End If;
        End If;
      Else
        Message('Error Running Report');
      End If;
  End If;
   
  Proc_Insert_Txn_Print_Log1(:Global.Company,:InvH_Loc_Code,:InvH_Ayr_Code,:InvH_Txn_Code,:InvH_No,:InvH_No, :Frm_Time_Zone,:Global.User);
                  
  Standard.Commit;
    If P_Flag = 'D' then     
       Clear_Form(NO_COMMIT);
       Init_Form; 
    End If;
  Else
    message('Print was skipped');
  End if;
Exception 
  When No_Data_Found Then
  Show_Message('Inv_Alert', 'Customer Email ID not found!');  
End;
What you getClause Rule Language
on unit PROC_DUP_PRINT(P_FLAG):    from load-fmb-invoice-proc-dup-print-0(INVH_CUST_CODE) or null    call TXN_VALIDATE() when ARG.P_FLAG = 'D'    set FRM_NO_OF_PRINT to FN_GET_STK_TXN_PARAM(INVH_TXN_CODE, GLOBAL.COMPANY, 'INV_NO_OF_PRINT') when ((nvl(FRM_SKIP_PRINT, 'N') = 'N') and (nvl(FRM_AUTO_PRINT, 'N') = 'N')) and is_blank(FRM_NO_OF_PRINT)    set FRM_PRINTER_NAME to FN_GET_USER_PREFERENCE(GLOBAL.USER, GLOBAL.COMPANY, INVH_TXN_CODE, 'USR_PRINTER') when ((nvl(FRM_SKIP_PRINT, 'N') = 'N') and (nvl(FRM_AUTO_PRINT, 'N') = 'N')) and is_blank(FRM_PRINTER_NAME)    set FRM_PRINTER_NAME to FN_GET_STK_TXN_PARAM(INVH_TXN_CODE, GLOBAL.COMPANY, 'INV_PRINTER') when ((nvl(FRM_SKIP_PRINT, 'N') = 'N') and (nvl(FRM_AUTO_PRINT, 'N') = 'N')) and is_blank(FRM_PRINTER_NAME)    show alert CUSTOM_PRINT_ALERT when ((nvl(FRM_SKIP_PRINT, 'N') = 'N') and (nvl(FRM_AUTO_PRINT, 'N') = 'N')) and is_filled(FRM_CUSTOM_INV_REPORT)    set FRM_PRINTER_NAME to FN_GET_CUST_PARAM(INVH_CUST_CODE, GLOBAL.COMPANY, 'CUST_CUSTOM_PRINTER') when (((nvl(FRM_SKIP_PRINT, 'N') = 'N') and (nvl(FRM_AUTO_PRINT, 'N') = 'N')) and is_filled(FRM_CUSTOM_INV_REPORT)) and not (ANSWER.BUTTON = '1')    report print_txn with (Curr_Fmt = nvl(FRM_CURR_FORMAT, GLOBAL.CURR_FORMAT), No_Of_Print = FRM_NO_OF_PRINT, ParamForm = 'No', Parm_AYr_Code = INVH_AYR_CODE, Parm_Comp_Code = GLOBAL.COMPANY, Parm_Loc_Code = INVH_LOC_CODE, Parm_No_From = INVH_NO, Parm_No_To = INVH_NO, Parm_Txn_Code = INVH_TXN_CODE, Parm_User = GLOBAL.USER) when (nvl(FRM_SKIP_PRINT, 'N') = 'N') and (nvl(FRM_AUTO_PRINT, 'N') = 'N')    call PROC_INSERT_TXN_PRINT_LOG1(GLOBAL.COMPANY, INVH_LOC_CODE, INVH_AYR_CODE, INVH_TXN_CODE, INVH_NO, INVH_NO, FRM_TIME_ZONE, GLOBAL.USER) when (nvl(FRM_SKIP_PRINT, 'N') = 'N') and (nvl(FRM_AUTO_PRINT, 'N') = 'N')    clear form when ((nvl(FRM_SKIP_PRINT, 'N') = 'N') and (nvl(FRM_AUTO_PRINT, 'N') = 'N')) and (ARG.P_FLAG = 'D')    warn "Print was skipped" when not ((nvl(FRM_SKIP_PRINT, 'N') = 'N') and (nvl(FRM_AUTO_PRINT, 'N') = 'N'))    warn "Customer Email ID not found!" when not is_filled(CUST_SHORT_NAME)
# 5 statements did not convert.#   line 101
#   SET_CUSTOM_PROPERTY('CTRL.PRINTBEAN',1,'DEFAULT_PRINTER',Nvl(:Frm_Printer_Name,:Mnu_Printer_Name));
#   reason: 'CTRL.PRINTBEAN' is a bean for printing, a Bean Area, and component-tracker.md tier 4.4 rules Bean Areas will not be built: they are a Forms applet's own protocol and the web has no equivalent#   line 102
#   SET_CUSTOM_PROPERTY('CTRL.CUSTOM_PRN_BEAN',1,'DEFAULT_PRINTER',Nvl(:Frm_Printer_Name,:Mnu_Printer_Name));
#   reason: 'CTRL.CUSTOM_PRN_BEAN' is a bean for printing, a Bean Area, and component-tracker.md tier 4.4 rules Bean Areas will not be built: they are a Forms applet's own protocol and the web has no equivalent#   line 106
#   If v_Rep_Status = 'FINISHED' Then
#     If Upper(:Mnu_Dest_Name) = 'PRINTER' Then
#       v_Job_Id := SubStr(v_Rep_Job_Id, length(v_Rep_Server)+2);
#       v_Rep_URL := 'http://' || v_Host_Name || ':' || v_Port || '/reports/rwservlet/getjobid' || v_Job_Id || '?server=' || v_Rep_Server;
#       Message('Print Success');
#       SET_CUSTOM_PROPERTY('CTRL.PRINTBEAN',1,'FILE_NAME',v_Rep_URL);
#       SET_CUSTOM_PROPERTY('CTRL.PRINTBEAN',1,'PRINT_FILE','');
#     Else
#       If Upper(:Mnu_Dest_Name) = 'CACHE' Then
#         v_Job_Id := SubStr(v_Rep_Job_Id, length(v_Rep_Server)+2);
#         v_Rep_URL := 'http://' || v_Host_Name || ':' || v_Port || '/reports/rwservlet/getjobid' || v_Job_Id || '?server=' || v_Rep_Server;
#         Message('Print Success');
#         Web.Show_Document(v_Rep_URL, '_blank');
#       Else
#         If Upper(:Mnu_Dest_Name) = 'EMAIL' Then
#           v_Job_Id     := SubStr(v_Rep_Job_Id, length(v_Rep_Server)+2);
#           v_Cust_Host := Fn_Get_User_Param(:Global.User, 'USR_REP_HOST_NAME');
#           If v_Cust_Host Is Not Null Then
#             v_Host_Name := v_Cust_Host;
#           End If;
#           v_Rep_URL   := 'http://' || v_Host_Name || ':' || v_Port || '/reports/rwservlet/getjobid' || v_Job_Id || '?server=' || v_Rep_Server;
#           If Nvl(:Frm_En_Inv_Direct_Email,'N') = 'Y' Then
#             If Nvl(:Frm_Cust_En_Email, 'N') = 'Y' Then
#               If v_cust_email is not null Then
#                 v_mail_URL := 'http://dev-portal.family.qa/send-mail/report-mailer/send-report-mail?to='||v_cust_email||'&user_code='||v_cust_short_name||'&content=Please find attached the report!&url='||v_Rep_URL;
#                 Proc_Send_Report(:Global.Company,v_cust_email,:Global.User,v_cust_short_name,'Please find attached the pdf',v_mail_URL);
#                 Proc_Ins_Email_Log(:Global.Company, :Invh_Loc_Code, :Invh_Txn_Code, :Invh_Ayr_Code, :Invh_No, Sysdate, v_cust_email, v_cust_short_name, :Global.User);
#               End If;
#             End If;
#           End If;
#         End If;
#       End If;
#     End If;
#   Else
#     Message('Error Running Report');
#   End If;
#   reason: the guard reads the local V_REP_STATUS, which is written from something CRL has no expression for: a Forms built-in, a database call or a shape the reader refuses#   line 141
#   If v_Rep_Status = 'FINISHED' Then
#     If Upper(:Mnu_Dest_Name) = 'PRINTER' Then
#       v_Job_Id := SubStr(v_Rep_Job_Id, length(v_Rep_Server)+2);
#       v_Rep_URL := 'http://' || v_Host_Name || ':' || v_Port || '/reports/rwservlet/getjobid' || v_Job_Id || '?server=' || v_Rep_Server;
#       If P_Flag = 'K' Then
#         Message('Print Success');
#       End If;
#       SET_CUSTOM_PROPERTY('CTRL.CUSTOM_PRN_BEAN',1,'FILE_NAME',v_Rep_URL);
#       SET_CUSTOM_PROPERTY('CTRL.CUSTOM_PRN_BEAN',1,'PAGE_WIDTH',Nvl(:FRM_CUSTOM_WIDTH,'8.5'));
#       SET_CUSTOM_PROPERTY('CTRL.CUSTOM_PRN_BEAN',1,'PAGE_HEIGHT',Nvl(:FRM_CUSTOM_HEIGHT,'5.5'));
#       SET_CUSTOM_PROPERTY('CTRL.CUSTOM_PRN_BEAN',1,'ORIENTATION', 'POTRAIT');
#       SET_CUSTOM_PROPERTY('CTRL.CUSTOM_PRN_BEAN',1,'PRINT_FILE','');
#     Else
#       If Upper(:Mnu_Dest_Name) = 'CACHE' Then
#         v_Job_Id := SubStr(v_Rep_Job_Id, length(v_Rep_Server)+2);
#         v_Rep_URL := 'http://' || v_Host_Name || ':' || v_Port || '/reports/rwservlet/getjobid' || v_Job_Id || '?server=' || v_Rep_Server;
#         If P_Flag = 'D' Then
#           Message('Print Success');
#         End If;
#         Web.Show_Document(v_Rep_URL, '_blank');
#       Else
#         If Upper(:Mnu_Dest_Name) = 'EMAIL' Then
#           v_Job_Id     := SubStr(v_Rep_Job_Id, length(v_Rep_Server)+2);
#           v_Cust_Host := Fn_Get_User_Param(:Global.User, 'USR_REP_HOST_NAME');
#           If v_Cust_Host Is Not Null Then
#             v_Host_Name := v_Cust_Host;
#           End If;
#           v_Rep_URL   := 'http://' || v_Host_Name || ':' || v_Port || '/reports/rwservlet/getjobid' || v_Job_Id || '?server=' || v_Rep_Server;
#           If Nvl(:Frm_En_Inv_Direct_Email,'N') = 'Y' Then
#             If Nvl(:Frm_Cust_En_Email, 'N') = 'Y' Then
#               If v_cust_email is not null Then
#                 v_mail_URL := 'http://dev-portal.family.qa/send-mail/report-mailer/send-report-mail?to='||v_cust_email||'&user_code='||v_cust_short_name||'&content=Please find attached the report!&url='||v_Rep_URL;
#                 Proc_Send_Report(:Global.Company,v_cust_email,:Global.User,v_cust_short_name,'Please find attached the pdf',v_mail_URL);
#                 Proc_Ins_Email_Log(:Global.Company, :Invh_Loc_Code, :Invh_Txn_Code, :Invh_Ayr_Code, :Invh_No, Sysdate, v_cust_email, v_cust_short_name, :Global.User);
#               End If;
#             End If;
#           End If;
#         End If;
#       End If;
#     End If;
#   Else
#     Message('Error Running Report');
#   End If;
#   reason: the guard reads the local V_REP_STATUS, which is written from something CRL has no expression for: a Forms built-in, a database call or a shape the reader refuses#   line 184
#   Standard.Commit;
#   reason: G13: mid-trigger DML and the transaction boundary are refused, not converted

11 clauses converted, 5 statements refused

50. fmb_invoiceon unit LOAD_SOgreen-waste
What you havePROGRAM-UNIT
PROCEDURE Load_So(Ref_Id IN Number) IS
CURSOR  CurSo IS 
      Select Soh_Id, Soh_Loc_Code, Soh_Txn_Code, Soh_No,Soh_Sman_Code,Soh_Cust_Code, Soh_Disc_Perc, 
           Soh_Disc_Amt,Soh_Remarks, Soi_Plu_Code, Soi_Item_Code Item_Code, Item_Name, Soi_Uom_Code Uom_Code, 
           Uom_Max_Loose Max_Loose,            
           Floor((Nvl(Soi_Qty * Uom_Max_Loose, 0) + Nvl(Soi_Loose, 0) - (Nvl(Soi_Inv_Qty_Bu,0) +  Nvl(Soi_Dn_Qty_Bu,0))) /Uom_Max_Loose) Qty,           
           (Nvl(Soi_Qty * Uom_Max_Loose, 0) + Nvl(Soi_Loose, 0) - (Nvl(Soi_Inv_Qty_Bu,0)  + Nvl(Soi_Dn_Qty_Bu,0)))-
           (Floor((Nvl(Soi_Qty * Uom_Max_Loose, 0) + Nvl(Soi_Loose, 0) - (Nvl(Soi_Inv_Qty_Bu,0) + Nvl(Soi_Dn_Qty_Bu,0)))/Uom_Max_Loose) * Uom_Max_Loose) Loose,           
           Floor((Nvl(Soi_Foc_Qty * Uom_Max_Loose, 0) + Nvl(Soi_Foc_Loose, 0) - (Nvl(Soi_Inv_Foc_Qty_Bu,0) +  Nvl(Soi_Dn_Foc_Qty_Bu,0))) /Uom_Max_Loose) Foc_Qty,           
           (Nvl(Soi_Foc_Qty * Uom_Max_Loose, 0) + Nvl(Soi_Foc_Loose, 0) - (Nvl(Soi_Inv_Foc_Qty_Bu,0)  + Nvl(Soi_Dn_Foc_Qty_Bu,0)))-
           (Floor((Nvl(Soi_Foc_Qty * Uom_Max_Loose, 0) + Nvl(Soi_Foc_Loose, 0) - (Nvl(Soi_Inv_Foc_Qty_Bu,0) + Nvl(Soi_Dn_Foc_Qty_Bu,0)))/Uom_Max_Loose) * Uom_Max_Loose) Foc_Loose,           
           Soi_Rate Rate, Soi_Disc_Perc Disc_Perc, Soi_Disc_Amt Disc_Amt, Soi_Id Item_Id, Soi_Ref_Item_Code,Soi_Item_Alt_Name, 
           Soi_Loc_Fm,Soi_Batch,Soi_Exp_Dt, Soi_Prom_Item_Id, Item_Serial_Status,Soi_Tndr_Doc_Item_Id,
           Soi_Vat,Soi_Vat_Incl_Price,Soi_Vat_Stax_Id,Soi_Ed,Soi_Ed_Incl_Price,Soi_Ed_Stax_Id,Soi_Base_Rate,Soi_Vat_Amt,Soi_Ed_Amt,Soi_Inc_Foc_Ed,Soi_Inc_Foc_Vat,
           Soi_Item_Desc,Soh_Tcs
    From M_Uom, M_Item, T_So_Item, T_So_Head
    Where Soi_Soh_Id = Soh_Id
    And Item_Code = Soi_Item_Code
    And Uom_Code = Soi_Uom_Code
    And (Nvl(Soi_Qty*Uom_Max_Loose, 0) + Nvl(Soi_Loose, 0) +
    Nvl(Soi_Foc_Qty*Uom_Max_Loose, 0) + Nvl(Soi_Foc_Loose, 0)) - (Nvl(Soi_Inv_Qty_Bu, 0)+Nvl(Soi_Inv_Foc_Qty_Bu, 0))   > 0
    And Soh_Comp_Code = :Global.Company
    And Soh_Loc_Code =:Ref_Loc_Code
    And Soh_Txn_Code =:Invh_Ref_Txn_Code
    And Soh_Id = Ref_Id
    And (Soh_Approval_Status ='F' Or
    Fn_Get_Stk_Txn_Param(Soh_Txn_Code,Soh_Comp_Code,'SO_REQ_APPROVAL') ='N')
         And Soh_Valid_Till >= :Invh_Dt
            And (Nvl(Fn_Get_Stk_Txn_Param(Soh_Txn_Code,Soh_Comp_Code,'SO_REQ_WPL'),'N') ='N' Or
        Exists(Select 'X' From T_Wpl_Head,T_Wpl_Ref_Doc Where Wplh_Id =Wplrd_Wplh_Id  And Wplrd_Soh_Id =Soh_Id
        And Nvl(Wplh_Status,'N') ='F'
       And Not Exists(Select 'x' From T_Wpl_Item Where Wpli_Wplh_Id =Wplh_Id And Nvl(Wpli_Status,'N') ='N'  And Wpli_Item_Code =Soi_Item_Code)))
    Order By Soi_Id; 

      /*Select Soh_Id, Soh_Loc_Code, Soh_Txn_Code, Soh_No,Soh_Sman_Code,Soh_Cust_Code, Soh_Disc_Perc, 
           Soh_Disc_Amt,Soh_Remarks, Soi_Plu_Code, Soi_Item_Code Item_Code, Item_Name, Soi_Uom_Code Uom_Code, 
           Uom_Max_Loose Max_Loose,            
           Floor((Nvl(Soi_Rev_Qty * Uom_Max_Loose, 0) + Nvl(Soi_Loose, 0) - (Nvl(Soi_Inv_Qty_Bu,0) +  Nvl(Soi_Dn_Qty_Bu,0))) /Uom_Max_Loose) Qty,           
           (Nvl(Soi_Rev_Qty * Uom_Max_Loose, 0) + Nvl(Soi_Loose, 0) - (Nvl(Soi_Inv_Qty_Bu,0)  + Nvl(Soi_Dn_Qty_Bu,0)))-
           (Floor((Nvl(Soi_Rev_Qty * Uom_Max_Loose, 0) + Nvl(Soi_Rev_Loose, 0) - (Nvl(Soi_Inv_Qty_Bu,0) + Nvl(Soi_Dn_Qty_Bu,0)))/Uom_Max_Loose) * Uom_Max_Loose) Loose,           
           Floor((Nvl(Soi_Rev_Foc_Qty * Uom_Max_Loose, 0) + Nvl(Soi_Rev_Foc_Loose, 0) - (Nvl(Soi_Inv_Foc_Qty_Bu,0) +  Nvl(Soi_Dn_Foc_Qty_Bu,0))) /Uom_Max_Loose) Foc_Qty,           
           (Nvl(Soi_Rev_Foc_Qty * Uom_Max_Loose, 0) + Nvl(Soi_Rev_Foc_Loose, 0) - (Nvl(Soi_Inv_Foc_Qty_Bu,0)  + Nvl(Soi_Dn_Foc_Qty_Bu,0)))-
           (Floor((Nvl(Soi_Rev_Foc_Qty * Uom_Max_Loose, 0) + Nvl(Soi_Rev_Foc_Loose, 0) - (Nvl(Soi_Inv_Foc_Qty_Bu,0) + Nvl(Soi_Dn_Foc_Qty_Bu,0)))/Uom_Max_Loose) * Uom_Max_Loose) Foc_Loose,           
           Soi_Rate Rate, Soi_Disc_Perc Disc_Perc, Soi_Disc_Amt Disc_Amt, Soi_Id Item_Id, Soi_Ref_Item_Code,Soi_Item_Alt_Name, 
           Soi_Loc_Fm,Soi_Batch,Soi_Exp_Dt, Soi_Prom_Item_Id, Item_Serial_Status,Soi_Tndr_Doc_Item_Id,
           Soi_Vat,Soi_Vat_Incl_Price,Soi_Vat_Stax_Id,Soi_Ed,Soi_Ed_Incl_Price,Soi_Ed_Stax_Id,Soi_Base_Rate,Soi_Vat_Amt,Soi_Ed_Amt,Soi_Inc_Foc_Ed,Soi_Inc_Foc_Vat,
           Soi_Item_Desc,Soh_Tcs
    From M_Uom, M_Item, T_So_Item, T_So_Head
    Where Soi_Soh_Id = Soh_Id
    And Item_Code = Soi_Item_Code
    And Uom_Code = Soi_Uom_Code
    And (Nvl(Soi_Rev_Qty*Uom_Max_Loose, 0) + Nvl(Soi_Rev_Loose, 0) +
  Nvl(Soi_Rev_Foc_Qty*Uom_Max_Loose, 0) + Nvl(Soi_Rev_Foc_Loose, 0)) - (Nvl(Soi_Inv_Qty_Bu, 0)+Nvl(Soi_Inv_Foc_Qty_Bu, 0))   > 0
    And Soh_Comp_Code = :Global.Company
    And Soh_Loc_Code =:Ref_Loc_Code
    And Soh_Txn_Code =:Invh_Ref_Txn_Code
    And Soh_Id = Ref_Id
    And (Soh_Approval_Status ='F' Or
    Fn_Get_Stk_Txn_Param(Soh_Txn_Code,Soh_Comp_Code,'SO_REQ_APPROVAL') ='N')
         And Soh_Valid_Till >= :Invh_Dt
            And (Nvl(Fn_Get_Stk_Txn_Param(Soh_Txn_Code,Soh_Comp_Code,'SO_REQ_WPL'),'N') ='N' Or
        Exists(Select 'X' From T_Wpl_Head,T_Wpl_Ref_Doc Where Wplh_Id =Wplrd_Wplh_Id  And Wplrd_Soh_Id =Soh_Id
        And Nvl(Wplh_Status,'N') ='F'
       And Not Exists(Select 'x' From T_Wpl_Item Where Wpli_Wplh_Id =Wplh_Id And Nvl(Wpli_Status,'N') ='N'  And Wpli_Item_Code =Soi_Item_Code)))
    Order By Soi_Id; */
   
  v_ctr          Number := 0;
  v_Count        Number;
  v_Loc_Code     VarChar2(10);
  v_Txn_Code     VarChar2(10);
  v_Doc_No       Number;
  v_Txn_Type     VarChar2(10);
  v_Alert        Number := Alert_Button2;
  v_Ref_Doc_Id   Number;
  v_Cust_Code    VarChar2(10);
  v_HDisc_Perc   Number;
  v_HDisc_Amt    Number;
  v_PLU_Code     VarChar2(20);
  v_Item_Code    VarChar2(10);
  v_Item_Name    VarChar2(100);
  v_UOM_Code     VarChar2(10);
  v_Max_Loose    Number;
  v_Qty_BU       Number;
  v_Qty          Number;
  v_Loose        Number;
  v_Rate         Number;
  v_Disc_Perc    Number;
  v_Disc_Amt     Number;
  v_Ref_Item_Id  Number;
  v_SMan_Code    VarChar2(10);
  v_Emp_Code     VarChar2(10);
  v_Rem          Varchar2(100);
  v_Load_Status  Char(1);
  v_Foc_Qty      Number;
  v_Foc_Ls       Number;
  v_Init Char(1) := 'N';
  v_Old_ID Number := 0;
  v_ref_Item_Code    VarChar2(10);
  v_Item_alt_Name    VarChar2(60);
  v_Loc_Fm       Varchar2(10);
  v_Batch         Varchar2(20);
  v_Exp_Dt       Date;
  V_Tndr_Doc_Item_Id number;
  v_Vat             Number;
  v_Vat_Incl_Price  Varchar2(2);
  v_Vat_Stax_Id     Number;
  v_ED              Number;
  v_ED_Incl_Price   Varchar2(2);
  v_Ed_Stax_Id      Number;
  v_Base_Rate       Number;  
  v_Vat_Amt         Number;
  v_Ed_Amt          Number; 
  v_Inc_Vat          Varchar2(1);
  v_Inc_Ed          Varchar2(1);
  v_Item_Desc        Varchar2(1000);
  v_Tcs          Varchar2(2000);
  
  
BEGIN
Go_Block('T_Inv_Item');
Last_Record; --Ticket #50390 Added on 28/08/2019 , S$hebin
 
IF :System.Last_Record = 'TRUE' THEN 
  Last_Record;
  Next_Record; 
ELSE 
  First_Record; 
END IF;


   Open CurSo;
   --If :FLAG = 'Y' THEN
      Loop
      Fetch CurSo INTO v_Ref_Doc_Id, v_Loc_Code, v_Txn_Code, v_Doc_No, v_SMan_Code, v_Cust_Code, v_HDisc_Perc, v_HDisc_Amt, :InvH_Remarks,
        v_Plu_Code, v_Item_Code, v_Item_Name, v_UOM_Code, v_Max_Loose, 
        v_Qty, v_Loose,v_Foc_Qty,v_Foc_ls, v_Rate, v_Disc_Perc, v_Disc_Amt, v_Ref_Item_Id,
        v_ref_Item_Code, v_Item_alt_Name,
        v_Loc_Fm,v_Batch,v_Exp_Dt, :InvI_Prom_Item_Id, :En_Sl,V_Tndr_Doc_Item_Id, --added by prem (06/11/2013)---
        V_Vat,v_Vat_Incl_Price,v_Vat_Stax_Id,v_ED,v_ED_Incl_Price,
            v_Ed_Stax_Id,v_Base_Rate,v_Vat_Amt,v_Ed_Amt,v_Inc_Ed,v_Inc_Vat,v_Item_Desc,v_Tcs; 
      EXIT WHEN CurSo%NotFound;      
              if :Frm_Validate_Stock = 'Y' then
                v_Qty_BU := Fn_Get_UnConf_Stock(:Global.Company, :InvH_Loc_Code, v_Item_Code, Null);
              
                If v_Qty_BU < Nvl(v_Qty * v_Max_Loose, 0) + Nvl(v_Loose, 0) Then
                  If v_Qty_BU <= 0 Then
                    v_Qty := 0;
                    v_Loose := 0;
                  ElsIf v_Qty_BU < 1 Then
                    v_Qty := v_Qty_BU;
                    v_Loose := 0;
                  Else
                    v_Qty := Floor(v_Qty_BU/v_Max_Loose);
                    v_Loose := v_Qty_BU - Nvl(v_Qty * v_Max_Loose, 0);
                  End If;
                End If;
              end if;
        :Prom_Enabled := Nvl(:Frm_En_Sales_Promo, 'N');    --Added By Mojish  01/07/14
         :InvH_Disc_Perc := v_HDisc_Perc;
         :InvH_Disc_Amt := v_HDisc_Amt;
         :InvH_Tcs := v_Tcs;
        :InvI_So_Doc_Item_Id := v_Ref_Item_Id;
        :Old_Item_Code := v_Item_Code;
        :Old_UOM_Code := v_UOM_Code;
        :InvI_Plu_Code := v_Plu_Code;
        :InvI_Item_Code := v_Item_Code;
        :Item_Name := v_Item_Name;
        :InvI_UOM_Code := v_UOM_Code;
        :Max_Loose := v_Max_Loose;
        :InvI_Qty := v_Qty;
        :InvI_Loose := v_Loose;
        :InvI_foc_Qty := v_Foc_Qty;
        :InvI_foc_Loose := v_Foc_ls;
        :InvI_Rate := v_Rate;
        :InvI_Disc_Perc := v_Disc_Perc;
        :InvI_Disc_Amt := v_Disc_Amt;
        :invi_ref_item_code := v_ref_Item_Code;--- added by prem (06/11/2013) ---
        :invi_item_alt_name := v_Item_alt_Name;--- added by prem (06/11/2013) ---
        :Ref_Doc_Item := 'Loaded';
        :InvI_Id := Fn_Get_Next_Id('Inv_Item');
        :InvI_Cr_User := :Global.User;
        :InvI_Cr_Dt := Fn_Get_Zone_Date(:Global.Company);
        :InvI_Loc_Fm  := v_Loc_Fm;
        :InvI_Batch   := v_Batch;
        :InvI_Exp_Dt  := v_Exp_Dt;
        :Invi_Tndr_Doc_Item_Id :=V_Tndr_Doc_Item_Id;
        :Invi_Item_Desc := v_Item_Desc;
        :Invi_Vat := v_Vat;
        :Invi_Vat_Incl_Price := v_Vat_Incl_Price;
        :Invi_Vat_Stax_Id := v_Vat_Stax_Id;
        :Invi_Ed   := v_ED;
        :Invi_Ed_Incl_Price := v_Ed_Incl_Price;
        :Invi_Ed_Stax_Id := v_Ed_Stax_Id;
        :Invi_Base_Rate := v_Base_Rate;
         :Invi_Vat_Amt := v_Vat_Amt;
        :Invi_Ed_Amt  := v_Ed_Amt;
         :Invi_Inc_Foc_Vat  := v_Inc_Vat;
         :Invi_Inc_Foc_Ed  := v_Inc_Ed;
  
        
        If Nvl(:InvI_Prom_Item_Id, 0) > 0 Then  -- Added by Mojish 10/06/14
          Select PromH_No, PromH_Id Into :PromH_No, :PromH_Id From T_Prom_Head, T_Prom_Item 
          Where PromI_PromH_Id = PromH_Id And PromH_Comp_Code = :Global.Company 
          And PromI_Id = :InvI_Prom_Item_Id;
        End If;
        Promo_Foc_Loading;                     --Added By Mojish 30/04/14 
        
        v_ctr := v_ctr+1; 
        Next_Record;
      End Loop;
      If Nvl(v_Ctr,0) >0 Then 
         :Invh_Load_Status :='Y' ;
      End If; 
      Close  CurSo;
      First_Record;
 /*      
     If v_Ref_Item_Id Is Not Null Then --- added by prem (06/11/2013) ---
       Set_Block_Property('T_Inv_ITem', Update_Allowed, Property_False); 
      Set_Block_Property('T_Inv_ITem', Insert_Allowed, Property_False);
      Set_Block_Property('T_Inv_ITem', Delete_Allowed, Property_False);
     end if;                            --- added by prem (06/11/2013) ---
 */
             
END;
What you getClause Rule Language
on unit LOAD_SO(REF_ID):    go to T_INV_ITEM    last record of T_INV_ITEM    last record when SYSTEM.LAST_RECORD = 'TRUE'    next record when SYSTEM.LAST_RECORD = 'TRUE'    first record when not (SYSTEM.LAST_RECORD = 'TRUE')    first record
# 2 statements did not convert.#   line 133
#   Loop
#         Fetch CurSo INTO v_Ref_Doc_Id, v_Loc_Code, v_Txn_Code, v_Doc_No, v_SMan_Code, v_Cust_Code, v_HDisc_Perc, v_HDisc_Amt, :InvH_Remarks,
#           v_Plu_Code, v_Item_Code, v_Item_Name, v_UOM_Code, v_Max_Loose, 
#           v_Qty, v_Loose,v_Foc_Qty,v_Foc_ls, v_Rate, v_Disc_Perc, v_Disc_Amt, v_Ref_Item_Id,
#           v_ref_Item_Code, v_Item_alt_Name,
#           v_Loc_Fm,v_Batch,v_Exp_Dt, :InvI_Prom_Item_Id, :En_Sl,V_Tndr_Doc_Item_Id,  
#           V_Vat,v_Vat_Incl_Price,v_Vat_Stax_Id,v_ED,v_ED_Incl_Price,
#               v_Ed_Stax_Id,v_Base_Rate,v_Vat_Amt,v_Ed_Amt,v_Inc_Ed,v_Inc_Vat,v_Item_Desc,v_Tcs; 
#         EXIT WHEN CurSo%NotFound;      
#                 if :Frm_Validate_Stock = 'Y' then
#                   v_Qty_BU := Fn_Get_UnConf_Stock(:Global.Company, :InvH_Loc_Code, v_Item_Code, Null);
#                 
#                   If v_Qty_BU < Nvl(v_Qty * v_Max_Loose, 0) + Nvl(v_Loose, 0) Then
#                     If v_Qty_BU <= 0 Then
#                       v_Qty := 0;
#                       v_Loose := 0;
#                     ElsIf v_Qty_BU < 1 Then
#                       v_Qty := v_Qty_BU;
#                       v_Loose := 0;
#                     Else
#                       v_Qty := Floor(v_Qty_BU/v_Max_Loose);
#                       v_Loose := v_Qty_BU - Nvl(v_Qty * v_Max_Loose, 0);
#                     End If;
#                   End If;
#                 end if;
#           :Prom_Enabled := Nvl(:Frm_En_Sales_Promo, 'N');     
#            :InvH_Disc_Perc := v_HDisc_Perc;
#            :InvH_Disc_Amt := v_HDisc_Amt;
#            :InvH_Tcs := v_Tcs;
#           :InvI_So_Doc_Item_Id := v_Ref_Item_Id;
#           :Old_Item_Code := v_Item_Code;
#           :Old_UOM_Code := v_UOM_Code;
#           :InvI_Plu_Code := v_Plu_Code;
#           :InvI_Item_Code := v_Item_Code;
#           :Item_Name := v_Item_Name;
#           :InvI_UOM_Code := v_UOM_Code;
#           :Max_Loose := v_Max_Loose;
#           :InvI_Qty := v_Qty;
#           :InvI_Loose := v_Loose;
#           :InvI_foc_Qty := v_Foc_Qty;
#           :InvI_foc_Loose := v_Foc_ls;
#           :InvI_Rate := v_Rate;
#           :InvI_Disc_Perc := v_Disc_Perc;
#           :InvI_Disc_Amt := v_Disc_Amt;
#           :invi_ref_item_code := v_ref_Item_Code; 
#           :invi_item_alt_name := v_Item_alt_Name; 
#           :Ref_Doc_Item := 'Loaded';
#           :InvI_Id := Fn_Get_Next_Id('Inv_Item');
#           :InvI_Cr_User := :Global.User;
#           :InvI_Cr_Dt := Fn_Get_Zone_Date(:Global.Company);
#           :InvI_Loc_Fm  := v_Loc_Fm;
#           :InvI_Batch   := v_Batch;
#           :InvI_Exp_Dt  := v_Exp_Dt;
#           :Invi_Tndr_Doc_Item_Id :=V_Tndr_Doc_Item_Id;
#           :Invi_Item_Desc := v_Item_Desc;
#           :Invi_Vat := v_Vat;
#           :Invi_Vat_Incl_Price := v_Vat_Incl_Price;
#           :Invi_Vat_Stax_Id := v_Vat_Stax_Id;
#           :Invi_Ed   := v_ED;
#           :Invi_Ed_Incl_Price := v_Ed_Incl_Price;
#           :Invi_Ed_Stax_Id := v_Ed_Stax_Id;
#           :Invi_Base_Rate := v_Base_Rate;
#            :Invi_Vat_Amt := v_Vat_Amt;
#           :Invi_Ed_Amt  := v_Ed_Amt;
#            :Invi_Inc_Foc_Vat  := v_Inc_Vat;
#            :Invi_Inc_Foc_Ed  := v_Inc_Ed;
#     
#           
#           If Nvl(:InvI_Prom_Item_Id, 0) > 0 Then   
#             Select PromH_No, PromH_Id Into :PromH_No, :PromH_Id From T_Prom_Head, T_Prom_Item 
#             Where PromI_PromH_Id = PromH_Id And PromH_Comp_Code = :Global.Company 
#             And PromI_Id = :InvI_Prom_Item_Id;
#           End If;
#           Promo_Foc_Loading;                      
#           
#           v_ctr := v_ctr+1; 
#           Next_Record;
#         End Loop;
#   reason: its collection binds REF_ID, a parameter this program takes, and a parameter passed in PL/SQL is not a bind the page can supply#   line 211
#   If Nvl(v_Ctr,0) >0 Then
#     :Invh_Load_Status :='Y';
#   End If;
#   reason: the guard reads the local V_CTR, which a loop body above it counts with: `V_CTR := V_CTR+1`, so what it holds here is the loop's own arithmetic, and crl-loops.md states the collection operation and not the bookkeeping around it

6 clauses converted, 2 statements refused

51. fmb_invoiceWHEN-BUTTON-PRESSED on T_INV_HEAD.PB_LOAD_LOCN_STKgreen-waste
What you haveWHEN-BUTTON-PRESSED
Declare

 CURSOR Curstk Is Select Stk_Item_Code,Stk_Unconf_Qty From M_Stock
       Where Stk_Comp_Code =:Global.Company
       and Stk_Loc_Code =:Invh_Loc_Code
       and Stk_unconf_qty > 0;
       
 CURSOR CurSl(ItemCode in Varchar2) Is Select * FROM M_Item_Serial
      WHERE ItemSl_Comp_Code = :Global.Company
      AND ItemSl_Loc_Code = :InvH_Loc_Code
      AND ItemSl_Item_Code = ItemCode
      AND ItemSl_Ref BETWEEN 000000001 AND 99999999999999999
      AND ItemSl_Issued = 'N'
      Order by Itemsl_ref;
         
  v_Count        Number;
  v_Loc_Code     VarChar2(10);
  v_Txn_Code     VarChar2(10);
  v_Doc_No       Number;
  v_Txn_Type     VarChar2(10);
  v_Alert        Number := Alert_Button2;
  v_Ref_Doc_Id   Number;
  v_Cust_Code    VarChar2(10);
  v_HDisc_Perc   Number;
  v_HDisc_Amt    Number;
  v_PLU_Code     VarChar2(20);
  v_Item_Code    VarChar2(10);
  v_Item_Name    VarChar2(60);
  v_UOM_Code     VarChar2(10);
  v_Max_Loose    Number;
  v_Qty_BU       Number;
  v_Qty          Number;
  v_Loose        Number;
  v_Rate         Number;
  v_Disc_Perc    Number;
  v_Disc_Amt     Number;
  v_Ref_Item_Id  Number;
  v_SMan_Code    VarChar2(10);
  v_Rem          Varchar2(100);
  v_Load_Status  Char(1);
  v_Foc_Qty      Number;
  v_Foc_Ls       Number;
  v_sl_Status    Varchar2(10);
  v_sl_count     Number(10);
  v_sl_fm        Number(20);
  v_Init Char(1) := 'N';
  v_Old_ID Number := 0;
  v_sl           Number(20);
  
Begin
  Select Count(*) into v_Count From M_Location Where Loc_Comp_Code =:Global.Company and Loc_Code =:InvH_Loc_Code and Loc_Type ='VAN';
  If Nvl(v_Count,0) = 0 Then
     Show_Message('Inv_Alert', 'Stock can be loaded from Van location only!');
     Raise Form_Trigger_Failure;
  End If;
  
  
  v_Count := 0;
   Go_Block('T_Inv_Item');
   Clear_Block;
   First_Record;
  Open CurStk;
  Loop
    Fetch CurStk INTO v_Item_Code,v_Qty;
    EXIT WHEN CurStk%NotFound;
    Select Item_Name,Item_Uom_Code,Uom_max_Loose,Item_Serial_Status INTO v_Item_Name,v_Uom_Code,v_max_Loose,v_Sl_status 
    From M_item,M_uom 
    Where Item_Code =v_item_Code
    and Uom_Code =item_uom_code;
    :En_Sl := v_sl_Status;
    Select PLI_Rate,PLI_Disc_Perc,Pli_Disc_Amt INTO v_Rate,v_Disc_Perc,v_Disc_Amt 
    From M_PL_Item 
    Where PLI_Comp_Code =:Global.Company
    and PLI_plh_Code =:Invh_PlH_Code 
    and PLI_Item_Code  =v_item_Code
    and PLI_Uom_Code =v_Uom_Code;
    If v_sl_Status IN ('M','Manual') Then
      SELECT Count(*) INTO v_Count
      FROM M_Item_Serial
      WHERE ItemSl_Comp_Code = :Global.Company
      AND ItemSl_Loc_Code = :InvH_Loc_Code
      AND ItemSl_Item_Code = v_Item_Code
      AND ItemSl_Ref BETWEEN 1 AND 99999999999999999
      AND ItemSl_Issued = 'N';
      If v_Count <> v_Qty Then
        Show_Message('Inv_Alert', 'Serial number count and Qty not tally!');
        Raise Form_Trigger_Failure;
      End If;
      :Ref_Doc_Item:='Loaded';
      :InvI_Item_Code := v_Item_Code;
      :Old_Item_Code := v_Item_Code;
      :Old_UOM_Code := v_UOM_Code;
      :Item_Name := v_Item_Name;
      :InvI_UOM_Code := v_UOM_Code;
      :Max_Loose := v_Max_Loose;
      If v_Max_Loose <> 1 Then
        :Invi_Qty :=Floor(v_Qty/v_Max_Loose);
        :Invi_Loose :=v_Qty - (Floor(v_Qty/v_Max_Loose) * v_Max_Loose);
      Else
         :InvI_Qty := v_Qty;
        :InvI_Loose := 0;
      End If;      
      :InvI_Rate := v_Rate;
      :Invi_Foc_Qty :=0;
      :Invi_Foc_Loose  := 0;
      :InvI_Disc_Perc := v_Disc_Perc;
      :InvI_Disc_Amt := v_Disc_Amt;
      :InvI_Id := Fn_Get_Next_Id('Inv_Item');
      :InvI_Cr_User := :Global.User;
      :InvI_Cr_Dt := :Frm_Time_Zone;
      Set_Item_Instance_Property('INVI_Item_Sl_Ref', Current_Record, Insert_Allowed, Property_False);
      Set_Item_Instance_Property('INVI_Item_Sl_Ref', Current_Record, Update_Allowed, Property_False);
      Set_Item_Property('PB_Sl', Enabled, Property_True);
      Set_Item_Property('PB_Sl', Navigable, Property_True);
      
      Go_Block('T_Inv_Serial');
      Last_Record;  
       For Cur in CurSl(v_item_Code) Loop
        If Cursl%NotFound Then
           Exit;
        End If;
        :InvSl_Ref :=Cur.ItemSl_Ref;
        Next_Record;
       End Loop;
       Post;
      Go_Block('T_inv_Item');
      Last_Record;
      Next_Record;   
       ElsIf v_sl_Status IN ('A','Auto') Then
         v_sl_fm:=null;
         v_sl_count:=0;
         v_sl := Null;
         
        SELECT Count(*) INTO v_Count
        FROM M_Item_Serial
        WHERE ItemSl_Comp_Code = :Global.Company
        AND ItemSl_Loc_Code = :InvH_Loc_Code
        AND ItemSl_Item_Code = v_Item_Code
        AND ItemSl_Ref BETWEEN 1 AND 99999999999999999
        AND ItemSl_Issued = 'N';
        If v_Count <> v_Qty Then
          Show_Message('Inv_Alert', 'Serial number count and Qty not tally!');
          Raise Form_Trigger_Failure;
        End If;
        
         For Cur in CurSl(v_item_Code) Loop
          If Cursl%NotFound Then
             Exit;
          End If;
          If v_sl_fm is Null Then
             v_sl_fm :=Cur.Itemsl_ref;
          End If;
          
          If v_Sl is Null Then
             v_sl := Cur.Itemsl_ref; 
          Else
             v_sl := v_sl + 1;
          End If;
          
          If v_sl <> Cur.Itemsl_ref Then
            :Ref_Doc_Item:='Loaded';
             :InvI_Item_Code := v_Item_Code;
             :Old_Item_Code := v_Item_Code;
            :Old_UOM_Code := v_UOM_Code;
            :Item_Name := v_Item_Name;
            :InvI_UOM_Code := v_UOM_Code;
            :Max_Loose := v_Max_Loose;
            If v_Max_Loose <> 1 Then
              :Invi_Qty :=Floor(v_sl_Count/v_Max_Loose);
              :Invi_Loose :=v_Sl_Count - (Floor(v_sl_Count/v_Max_Loose) * v_Max_Loose);
            Else
               :InvI_Qty := v_Sl_Count;
              :InvI_Loose := 0;
            End If;      
            :InvI_Rate := v_Rate;
            :Invi_Foc_Qty :=0;
            :Invi_Foc_Loose  := 0;
            :InvI_Disc_Perc := v_Disc_Perc;
            :InvI_Disc_Amt := v_Disc_Amt;
            :InvI_Id := Fn_Get_Next_Id('Inv_Item');
            :InvI_Cr_User := :Global.User;
            :InvI_Cr_Dt := :Frm_Time_Zone;
            --Show_Message('Inv_Alert',v_sl_count); 
            --:InvI_Item_Sl_Status :=v_sl_Status;  
            :InvI_Item_Sl_Ref :=v_sl_fm;
             v_sl_count:=1;
             v_sl_fm := Cur.Itemsl_ref;
             v_sl := Cur.Itemsl_ref;
             Next_Record; 
          Else
             v_sl_count := v_sl_count+1;
          End If;
         End Loop;
         :Ref_Doc_Item:='Loaded';
         :Old_Item_Code := v_Item_Code;
        :Old_UOM_Code := v_UOM_Code;
         :InvI_Item_Code := v_Item_Code;
        :Item_Name := v_Item_Name;
        :InvI_UOM_Code := v_UOM_Code;
        :Max_Loose := v_Max_Loose;
         If v_Max_Loose <> 1 Then
           :Invi_Qty :=Floor(v_sl_Count/v_Max_Loose);
          :Invi_Loose :=v_Sl_Count - (Floor(v_sl_Count/v_Max_Loose) * v_Max_Loose);
        Else
          :InvI_Qty := v_Sl_Count;
          :InvI_Loose := 0;
        End If;      
        :InvI_Rate := v_Rate;
        :Invi_Foc_Qty :=0;
        :Invi_Foc_Loose  := 0;
        :InvI_Disc_Perc := v_Disc_Perc;
        :InvI_Disc_Amt := v_Disc_Amt;
        :InvI_Id := Fn_Get_Next_Id('Inv_Item');
        :InvI_Cr_User := :Global.User;
        :InvI_Cr_Dt := :Frm_Time_Zone;
        --:InvI_Item_Sl_Status :=v_sl_Status;  
        :InvI_Item_Sl_Ref :=v_sl_fm;
        Next_Record; 
      Else
         :Ref_Doc_Item:='Loaded';  
        :Old_Item_Code := v_Item_Code;
        :Old_UOM_Code := v_UOM_Code;
         :InvI_Item_Code := v_Item_Code;
        :Item_Name := v_Item_Name;
        :InvI_UOM_Code := v_UOM_Code;
        :Max_Loose := v_Max_Loose;
        If v_Max_Loose <> 1 Then
          :Invi_Qty :=Floor(v_Qty/v_Max_Loose);
          :Invi_Loose :=v_Qty - (Floor(v_Qty/v_Max_Loose) * v_Max_Loose);
        Else
           :InvI_Qty := v_Qty;
          :InvI_Loose := 0;
        End If;      
        :InvI_Rate := v_Rate;
        :Invi_Foc_Qty :=0;
        :Invi_Foc_Loose  := 0;
        :InvI_Disc_Perc := v_Disc_Perc;
        :InvI_Disc_Amt := v_Disc_Amt;
        :InvI_Id := Fn_Get_Next_Id('Inv_Item');
        :InvI_Cr_User := :Global.User;
        :InvI_Cr_Dt := :Frm_Time_Zone;
         Next_Record; 
    End If;
  End Loop;
  Close Curstk;
  Set_Item_Property('PB_LOAD_LOCN_STK',Enabled,Property_False);
End;

  
  
What you getClause Rule Language
on press of PB_LOAD_LOCN_STK:    from load-fmb-invoice-t-inv-head-pb-load-locn-stk-press-0(INVH_LOC_CODE)    exists else "Stock can be loaded from Van location only!"    go to T_INV_ITEM    clear T_INV_ITEM    first record of T_INV_HEAD    state disable PB_LOAD_LOCN_STK
# 1 statement did not convert.#   line 63
#   Loop
#       Fetch CurStk INTO v_Item_Code,v_Qty;
#       EXIT WHEN CurStk%NotFound;
#       Select Item_Name,Item_Uom_Code,Uom_max_Loose,Item_Serial_Status INTO v_Item_Name,v_Uom_Code,v_max_Loose,v_Sl_status 
#       From M_item,M_uom 
#       Where Item_Code =v_item_Code
#       and Uom_Code =item_uom_code;
#       :En_Sl := v_sl_Status;
#       Select PLI_Rate,PLI_Disc_Perc,Pli_Disc_Amt INTO v_Rate,v_Disc_Perc,v_Disc_Amt 
#       From M_PL_Item 
#       Where PLI_Comp_Code =:Global.Company
#       and PLI_plh_Code =:Invh_PlH_Code 
#       and PLI_Item_Code  =v_item_Code
#       and PLI_Uom_Code =v_Uom_Code;
#       If v_sl_Status IN ('M','Manual') Then
#         SELECT Count(*) INTO v_Count
#         FROM M_Item_Serial
#         WHERE ItemSl_Comp_Code = :Global.Company
#         AND ItemSl_Loc_Code = :InvH_Loc_Code
#         AND ItemSl_Item_Code = v_Item_Code
#         AND ItemSl_Ref BETWEEN 1 AND 99999999999999999
#         AND ItemSl_Issued = 'N';
#         If v_Count <> v_Qty Then
#           Show_Message('Inv_Alert', 'Serial number count and Qty not tally!');
#           Raise Form_Trigger_Failure;
#         End If;
#         :Ref_Doc_Item:='Loaded';
#         :InvI_Item_Code := v_Item_Code;
#         :Old_Item_Code := v_Item_Code;
#         :Old_UOM_Code := v_UOM_Code;
#         :Item_Name := v_Item_Name;
#         :InvI_UOM_Code := v_UOM_Code;
#         :Max_Loose := v_Max_Loose;
#         If v_Max_Loose <> 1 Then
#           :Invi_Qty :=Floor(v_Qty/v_Max_Loose);
#           :Invi_Loose :=v_Qty - (Floor(v_Qty/v_Max_Loose) * v_Max_Loose);
#         Else
#            :InvI_Qty := v_Qty;
#           :InvI_Loose := 0;
#         End If;      
#         :InvI_Rate := v_Rate;
#         :Invi_Foc_Qty :=0;
#         :Invi_Foc_Loose  := 0;
#         :InvI_Disc_Perc := v_Disc_Perc;
#         :InvI_Disc_Amt := v_Disc_Amt;
#         :InvI_Id := Fn_Get_Next_Id('Inv_Item');
#         :InvI_Cr_User := :Global.User;
#         :InvI_Cr_Dt := :Frm_Time_Zone;
#         Set_Item_Instance_Property('INVI_Item_Sl_Ref', Current_Record, Insert_Allowed, Property_False);
#         Set_Item_Instance_Property('INVI_Item_Sl_Ref', Current_Record, Update_Allowed, Property_False);
#         Set_Item_Property('PB_Sl', Enabled, Property_True);
#         Set_Item_Property('PB_Sl', Navigable, Property_True);
#         
#         Go_Block('T_Inv_Serial');
#         Last_Record;  
#          For Cur in CurSl(v_item_Code) Loop
#           If Cursl%NotFound Then
#              Exit;
#           End If;
#           :InvSl_Ref :=Cur.ItemSl_Ref;
#           Next_Record;
#          End Loop;
#          Post;
#         Go_Block('T_inv_Item');
#         Last_Record;
#         Next_Record;   
#          ElsIf v_sl_Status IN ('A','Auto') Then
#            v_sl_fm:=null;
#            v_sl_count:=0;
#            v_sl := Null;
#            
#           SELECT Count(*) INTO v_Count
#           FROM M_Item_Serial
#           WHERE ItemSl_Comp_Code = :Global.Company
#           AND ItemSl_Loc_Code = :InvH_Loc_Code
#           AND ItemSl_Item_Code = v_Item_Code
#           AND ItemSl_Ref BETWEEN 1 AND 99999999999999999
#           AND ItemSl_Issued = 'N';
#           If v_Count <> v_Qty Then
#             Show_Message('Inv_Alert', 'Serial number count and Qty not tally!');
#             Raise Form_Trigger_Failure;
#           End If;
#           
#            For Cur in CurSl(v_item_Code) Loop
#             If Cursl%NotFound Then
#                Exit;
#             End If;
#             If v_sl_fm is Null Then
#                v_sl_fm :=Cur.Itemsl_ref;
#             End If;
#             
#             If v_Sl is Null Then
#                v_sl := Cur.Itemsl_ref; 
#             Else
#                v_sl := v_sl + 1;
#             End If;
#             
#             If v_sl <> Cur.Itemsl_ref Then
#               :Ref_Doc_Item:='Loaded';
#                :InvI_Item_Code := v_Item_Code;
#                :Old_Item_Code := v_Item_Code;
#               :Old_UOM_Code := v_UOM_Code;
#               :Item_Name := v_Item_Name;
#               :InvI_UOM_Code := v_UOM_Code;
#               :Max_Loose := v_Max_Loose;
#               If v_Max_Loose <> 1 Then
#                 :Invi_Qty :=Floor(v_sl_Count/v_Max_Loose);
#                 :Invi_Loose :=v_Sl_Count - (Floor(v_sl_Count/v_Max_Loose) * v_Max_Loose);
#               Else
#                  :InvI_Qty := v_Sl_Count;
#                 :InvI_Loose := 0;
#               End If;      
#               :InvI_Rate := v_Rate;
#               :Invi_Foc_Qty :=0;
#               :Invi_Foc_Loose  := 0;
#               :InvI_Disc_Perc := v_Disc_Perc;
#               :InvI_Disc_Amt := v_Disc_Amt;
#               :InvI_Id := Fn_Get_Next_Id('Inv_Item');
#               :InvI_Cr_User := :Global.User;
#               :InvI_Cr_Dt := :Frm_Time_Zone;
#                
#                
#               :InvI_Item_Sl_Ref :=v_sl_fm;
#                v_sl_count:=1;
#                v_sl_fm := Cur.Itemsl_ref;
#                v_sl := Cur.Itemsl_ref;
#                Next_Record; 
#             Else
#                v_sl_count := v_sl_count+1;
#             End If;
#            End Loop;
#            :Ref_Doc_Item:='Loaded';
#            :Old_Item_Code := v_Item_Code;
#           :Old_UOM_Code := v_UOM_Code;
#            :InvI_Item_Code := v_Item_Code;
#           :Item_Name := v_Item_Name;
#           :InvI_UOM_Code := v_UOM_Code;
#           :Max_Loose := v_Max_Loose;
#            If v_Max_Loose <> 1 Then
#              :Invi_Qty :=Floor(v_sl_Count/v_Max_Loose);
#             :Invi_Loose :=v_Sl_Count - (Floor(v_sl_Count/v_Max_Loose) * v_Max_Loose);
#           Else
#             :InvI_Qty := v_Sl_Count;
#             :InvI_Loose := 0;
#           End If;      
#           :InvI_Rate := v_Rate;
#           :Invi_Foc_Qty :=0;
#           :Invi_Foc_Loose  := 0;
#           :InvI_Disc_Perc := v_Disc_Perc;
#           :InvI_Disc_Amt := v_Disc_Amt;
#           :InvI_Id := Fn_Get_Next_Id('Inv_Item');
#           :InvI_Cr_User := :Global.User;
#           :InvI_Cr_Dt := :Frm_Time_Zone;
#            
#           :InvI_Item_Sl_Ref :=v_sl_fm;
#           Next_Record; 
#         Else
#            :Ref_Doc_Item:='Loaded';  
#           :Old_Item_Code := v_Item_Code;
#           :Old_UOM_Code := v_UOM_Code;
#            :InvI_Item_Code := v_Item_Code;
#           :Item_Name := v_Item_Name;
#           :InvI_UOM_Code := v_UOM_Code;
#           :Max_Loose := v_Max_Loose;
#           If v_Max_Loose <> 1 Then
#             :Invi_Qty :=Floor(v_Qty/v_Max_Loose);
#             :Invi_Loose :=v_Qty - (Floor(v_Qty/v_Max_Loose) * v_Max_Loose);
#           Else
#              :InvI_Qty := v_Qty;
#             :InvI_Loose := 0;
#           End If;      
#           :InvI_Rate := v_Rate;
#           :Invi_Foc_Qty :=0;
#           :Invi_Foc_Loose  := 0;
#           :InvI_Disc_Perc := v_Disc_Perc;
#           :InvI_Disc_Amt := v_Disc_Amt;
#           :InvI_Id := Fn_Get_Next_Id('Inv_Item');
#           :InvI_Cr_User := :Global.User;
#           :InvI_Cr_Dt := :Frm_Time_Zone;
#            Next_Record; 
#       End If;
#     End Loop;
#   reason: it holds a loop over CURSL, a cursor this loop's own row supplies arguments to, so the inner collection is a source read once per row and no collection operation has a slot for one

5 clauses converted, 1 statement refused

52. fmb_invoiceWHEN-VALIDATE-ITEM on T_INV_ITEM.INVI_ITEM_CODEgreen-waste
What you haveWHEN-VALIDATE-ITEM
Set_item_instance_property('INVI_ITEM_CODE', CURRENT_RECORD, REQUIRED,PROPERTY_TRUE);
:Invi_Item_Code := Fn_Get_Item_Code(:Invi_Item_Code, :Frm_Search_Order, Null, Null, :Global.Company, :Global.User); --Added by  John-- 14/07/2019
If :Invi_Item_Code is not null then 
 Proc_Valid_Plu_Item('ITEM');
 Validate_Cust_Item;
End if;


/*
DECLARE
   V_Count                 NUMBER;
   V_Uom_Code              VARCHAR2 (10);
   V_Pos                   NUMBER   (2);
   V_Status                VARCHAR2 (10);
   V_Def_Qty               NUMBER   (12,3);
   V_Item_Code             VARCHAR2 (20);
   V_Sl                    NUMBER;
   V_Ref                   VARCHAR2 (4);
   V_Rate                  NUMBER;
   V_Rate_Ref              NUMBER;
   V_Cat_Code              VARCHAR2 (10);
   V_Count1                NUMBER;
   V_Vat_Incl_Price        VARCHAR2 (10);
   v_Gst_Incl_Price        VARCHAR2 (10);
   v_Cst_Incl_Price        VARCHAR2 (10);
   v_Serv_Tax_IncL_Price   VARCHAR2 (10);
BEGIN
   set_item_instance_property('INVI_ITEM_CODE', CURRENT_RECORD, REQUIRED,PROPERTY_TRUE);
   If :Ref_Doc_Item = 'Loaded'  Then
      :Invi_Item_Code := :Old_Item_Code;         --ModIfied By Mojish 12/02/14
      :Invi_Uom_Code := :Old_Uom_Code;           --ModIfied By Mojish 12/02/14
   Else
      If :Invi_Item_Code IS NOT NULL AND :Invi_Plu_Code IS Null Then
         ---Added by Mojish 12/02/14
         If :Sl_Manual_Flag = 1 AND :Invi_Item_Code <> :Old_Item_Code  Then
            Show_Message ('Inv_Alert', 'Serial Number exist, Can''t Change Item Code!');
            Validate_Sl_No;
         Else
            :Invi_Qty := 0;
            :Invi_Loose := 0;
            :Invi_Foc_Qty := 0;
            :Invi_Foc_Loose := 0;
            :Invi_Rate := 0;
            :Invi_Disc_Perc := Null;
            :Invi_Disc_Amt := Null;
         End If;

         ---------
         V_Pos := INSTR (:Invi_Item_Code, '+');

         If V_Pos > 0 Then
            :Invi_Qty := SUBSTR (:Invi_Item_Code, 1, V_Pos - 1);
            :Invi_Item_Code := SUBSTR (:Invi_Item_Code, V_Pos + 1);
         ELSIf NVL (:Invi_Qty, 0) = 0 And :Frm_Auto_Qty = 'Y'  Then
            :Invi_Qty := 1;
         End If; */
         /* -- Already commented --
         Proc_Get_Item_Tax (:Invi_Item_Code,:Global.Company,:InvH_Loc_Code,:Invi_Vat_Perc,:InvI_Gst,:InvI_Cst,:Invi_Serv_Tax,V_Vat_Incl_Price,
         v_Gst_Incl_Price,v_Cst_Incl_Price,v_Serv_Tax_IncL_Price);

         V_Vat_Incl_Price := :InvI_Vat_Incl_Price;
         v_Gst_Incl_Price := :Invi_Gst_Incl_Price;
         v_Cst_Incl_Price := :Invi_Cst_Incl_Price;
         v_Serv_Tax_IncL_Price := :Invi_Serv_Tax_IncL_Price;
         */
         /*
         Proc_Get_sale_Tax(:Invi_Item_Code,:Global.Company,:InvH_Divn_Code,'VAT',:Invh_Cust_Code,:Invh_Txn_Code,:Invi_Vat,:Invi_Vat_Amt,:InvI_Vat_Incl_Price,:InvI_Vat_Stax_Id,
         :Invi_Base_Rate);
         Proc_Get_sale_Tax (:Invi_Item_Code,:Global.Company,:InvH_Divn_Code,'ED',:Invh_Cust_Code,:Invh_Txn_Code,:Invi_ED,:Invi_ED_Amt,:InvI_ED_Incl_Price,:InvI_ED_Stax_Id,
         :Invi_Base_Rate);
         
         :Invi_Item_Code :=Fn_Get_Item_Code (:Invi_Item_Code,:Frm_Search_Order,'Y',:Invh_Cust_Code,:Global.Company,:Global.USER);
         --Manually search for items until Fn_Get_Item_Code is fixed to return barcode in the next release
         V_Item_Code := :Invi_Item_Code;

         ----Added By Faisal on 07/09/2014
         If :Invi_Item_Code IS NOT Null Then
            Select COUNT (*)INTO V_Count
              FROM M_Item_Division
             Where Itemd_Comp_Code = :Global.Company
                   And Itemd_Divn_Code = :Invh_Divn_Code
                   And Itemd_Item_Code = :Invi_Item_Code;

            If V_Count = 0 Then
               Show_Message ('Inv_Alert','Item Division Combination Not Found!');
               RAISE Form_Trigger_Failure;
            End If;
         End If;


         If :Invi_Plu_Code IS Null Then                             --Adde by Mojish 06/04/14 for tender
            Select Item_Name,Item_Uom_Code,Uom_Max_Loose,Item_Cat_Code,Item_Status,Item_Serial_Status,Item_Type,Item_Def_Qty,
                   Stk_Unconf_Qty+ DECODE (NVL (:Frm_Loc_En_Uncosted_Stk, 'N'),'N', 0, NVL (Stk_Uncosted_Qty, 0)), Item_Exp_Type,Item_Group,Item_Mode
              Into :Item_Name,:Invi_Uom_Code,:Max_Loose,V_Cat_Code,V_Status,:En_Sl,:Item_Type,V_Def_Qty,:Stock_Bu,:En_Batch,:Item_Group,:Item_Mode
              From M_Stock, M_Uom, M_Item
             Where     Uom_Code = Item_Uom_Code
                   And Stk_Comp_Code(+) = :Global.Company
                   And Stk_Loc_Code(+) = :Invh_Loc_Code
                   And Stk_Item_Code(+) = Item_Code
                   And Item_Code = :Invi_Item_Code;
         Else
            Select Item_Cat_Code,Item_Status,Item_Serial_Status,
                   Item_Type,
                   Item_Def_Qty,
                   Stk_Unconf_Qty
                   + DECODE (NVL (:Frm_Loc_En_Uncosted_Stk, 'N'),'N', 0,NVL (Stk_Uncosted_Qty, 0)),
                   Item_Exp_Type
              Into V_Cat_Code,
                   V_Status,
                   :En_Sl,
                   :Item_Type,
                   V_Def_Qty,
                   :Stock_Bu,
                   :En_Batch
              From M_Stock, M_Uom, M_Item
             Where     Uom_Code = Item_Uom_Code
                   And Stk_Comp_Code(+) = :Global.Company
                   And Stk_Loc_Code(+) = :Invh_Loc_Code
                   And Stk_Item_Code(+) = Item_Code
                   And Item_Code = :Invi_Item_Code;
         End If;

         Select COUNT (*) Into V_Count
           From M_Cat_User_Group, M_User_Group_Belong
          Where     Catuser_User_Group_Code = Ugb_User_Group_Code
                And Ugb_User_Code = :Global.USER
                And Catuser_Cat_Code = V_Cat_Code;

         If NVL (V_Count, 0) = 0 Then
            Show_Message ('Inv_Alert',
                          'User Category combination not defined!');
            RAISE Form_Trigger_Failure;
         End If;

         If :Invi_Item_Code IS Null Then
            Show_Message ('Inv_Alert', 'Item not Found!');
            RAISE Form_Trigger_Failure;
         End If;

         If V_Status = 'Locked' Then
            Show_Message ('Inv_Alert', 'Item Locked!');
            RAISE Form_Trigger_Failure;
         End If;

         If NVL (V_Status, 'New') NOT IN ('Open', 'Re-Act') Then
            Show_Message ('Inv_ALERT', 'Item Status (' || NVL (V_Status, 'New') || ') is not Open');
         End If;

         If :Item_Type NOT IN ('SRV', 'STK') Then
            Show_Message ('Inv_ALERT','Item not found/not a stock or service item!');
            RAISE Form_Trigger_Failure;
         End If;
         
         If :Item_Mode = 'P' Then
            Show_Message ('Inv_Alert','Purchase code, not enabled for selling!');
            RAISE Form_Trigger_Failure;
          End If;
                  

         If NVL (:Item_Group, 'N') = 'C' Then                                 ---Added By Faisal On 22/03/2016
            If NVL (:FRM_En_Consumable, 'N') = 'N' Then
               Show_Message ('Inv_ALERT', 'Consumable items not enabled for this transaction!');
               SET_ITEM_PROPERTY (:Global.Cur_Item, Current_Record_Attribute,'Alert_VA');
               RAISE Form_Trigger_Failure;
            ELSIf NVL (:Item_Group, 'N') <> 'C'
                  And NVL (:FRM_En_Consumable, 'N') = 'N'  Then
               Show_Message ('Inv_ALERT','Non Consumable items not enabled for this transaction!');
               SET_ITEM_PROPERTY (:Global.Cur_Item,Current_Record_Attribute, 'Alert_VA');
               RAISE Form_Trigger_Failure;
            End If;
         End If;

         If V_Def_Qty IS NOT Null And NVL (:Invi_Qty, 0) = 0  Then
            :Invi_Qty := V_Def_Qty;
         End If;

         If NVL (:Frm_Valid_Whouse, 'N') = 'Y' Then
            Select COUNT (Wstk_Item_Code) Into V_Count1
              From M_Wstock
             Where     Wstk_Comp_Code = :Global.Company
                   And Wstk_Item_Code = :Invi_Item_Code
                   And Wstk_Qty > 0
                   And (Wstk_Exp_Dt IS Null
                        OR Wstk_Exp_Dt >=
                              TO_DATE (:Frm_Time_Zone, 'DD/MM/YYYY'));

            If NVL (V_Count1, 0) = 1  Then
               Select Wstk_Loc_Code,
                      Wstk_Batch,
                      Wstk_Exp_Dt,
                      Wstk_Qty
                 Into :Invi_Loc_Fm,
                      :Invi_Batch,
                      :Invi_Exp_Dt,
                      :Invi_Wstock
                 From M_Wstock
                Where     Wstk_Comp_Code = :Global.Company
                      And Wstk_Item_Code = :Invi_Item_Code
                      And Wstk_Qty > 0
                      And (Wstk_Exp_Dt IS Null
                           OR Wstk_Exp_Dt >=
                                 TO_DATE (:Frm_Time_Zone, 'DD/MM/YYYY'));
            End If;
         End If;
         
        Select Stkd_Unconf_Qty Into :Div_Stock_Bu From M_Stock_Division
        Where Stkd_Comp_Code = :Global.Company And Stkd_Divn_Code= :InvH_Divn_Code
        And Stkd_Item_code = :InvI_Item_Code;

         If NVL (:Frm_Cost_Price_Billing, 'N') = 'Y' And (NVL (:Invi_Plu_Code, ' ') NOT LIKE :Frm_Weigh_Bcode_Prefix || '%' And :Frm_Weigh_Bcode_Prefix IS NOT Null)  And 
           (NVL (:Invi_Item_Code, ' ') NOT LIKE :Frm_Weigh_Item_Prefix || '%' And :Frm_Weigh_Item_Prefix IS NOT Null) Then
            Get_Prate;
         ELSIf (NVL (:Invi_Plu_Code, ' ') LIKE :Frm_Weigh_Bcode_Prefix || '%' And :Frm_Weigh_Bcode_Prefix IS NOT Null) Then
            V_Ref := SUBSTR (:Invi_Plu_Code, 3, 4);
            V_Rate := SUBSTR (:Invi_Plu_Code, 7, 6) / 100;
            -----For Weighing Item consider Selling Rate added on 08/07/2017
             If NVL (:Frm_Cost_Price_Billing, 'N') = 'Y' And  (Nvl(:Invi_Item_Code, ' ') LIKE :Frm_Weigh_Item_Prefix || '%' And :Frm_Weigh_Item_Prefix IS NOT Null) Then
                         Proc_Get_Sale_Price (:Global.Company,
                            :Invh_Divn_Code,
                            :Invh_PlH_Code,:InvH_Alt_PlH_Code,
                            :Invi_Item_Code,
                            :Invi_Uom_Code,
                            :Invh_Cust_Code,
                            :Invh_Curr_Code,
                            Nvl (:Frm_Inc_Default_Price, 'Y'),
                            :Invh_Dt,
                            :Invi_Prom_Item_Id,
                            :Promh_Id,
                            :Invi_Rate,
                            :Invi_Disc_Perc,
                            :Invi_Disc_Amt,
                            :Invi_Prom_Bu,
                            :Invi_Prom_Foc_Bu,
                            :Invi_Prom_Qty_Limit_Bu,
                            :Invi_Prom_Qty_Inv_Bu,
                            :Invi_Prom_Foc_Same);  
   
                                     
             End If;
             
             If NVL (:Frm_Valid_Wt, 'N') = 'Y' And (NVL (:Invi_Plu_Code, ' ') LIKE :Frm_Weigh_Bcode_Prefix || '%' And :Frm_Weigh_Bcode_Prefix IS NOT Null) Then   --Added By Faisal on 09/Nov/2014                
               Proc_Get_Wt (:Invi_Plu_Code,:Invi_Rate,:Max_Loose,:Invi_Qty,:Invi_Loose); --Qty And loose From Plu added by Mojish on 10/11/14
             End If;
             
          Else
              
            Select_Promotion; --Added by Mojish 10/06/14 For Selecting promotion

            Proc_Get_Sale_Price (:Global.Company,
                            :Invh_Divn_Code,
                            :Invh_PlH_Code,:InvH_Alt_PlH_Code,
                            :Invi_Item_Code,
                            :Invi_Uom_Code,
                            :Invh_Cust_Code,
                            :Invh_Curr_Code,
                            Nvl (:Frm_Inc_Default_Price, 'Y'),
                            :Invh_Dt,
                            :Invi_Prom_Item_Id,
                            :Promh_Id,
                            :Invi_Rate,
                            :Invi_Disc_Perc,
                            :Invi_Disc_Amt,
                            :Invi_Prom_Bu,
                            :Invi_Prom_Foc_Bu,
                            :Invi_Prom_Qty_Limit_Bu,
                            :Invi_Prom_Qty_Inv_Bu,
                            :Invi_Prom_Foc_Same);
            :Old_Uom_Code := :Invi_Uom_Code;
            Get_Promotion_Foc ('VALIDATE');         --Added By Mojish 16/04/14
        
            If  Nvl(:Frm_En_Add_Disc,'N') ='Y' Then
               Proc_Get_CustItem_Disc(:Global.Company,:InvI_Item_Code,:InvH_Cust_Code,:Inv_Additional_Disc);
            End If;
            If :Inv_Additional_Disc > 0 Then
               :Invi_Disc_Amt := Round((:InvI_Rate * :Inv_Additional_Disc/100),Nvl(:Frm_Decimal,2));
            End If;
         End If;

         Validate_SO;                               --Added By Mojish 21/04/16
         
         --:Invi_Wac_Pcs := Fn_Get_Cost (:Invi_Item_Code, :Global.Company,:Invh_Divn_Code,:Invh_Dt,'WAC', Nvl(:Div_Stock_Bu,1));  Disabled On 23/11/2017 handled in trigger
         -- :Invi_FIfo_Pcs := Fn_Get_Cost (:Invi_Item_Code, :Global.Company,:Invh_Divn_Code,:Invh_Dt,'FIfO', Nvl(:Div_Stock_Bu,1)); Disabled On 23/11/2017 handled in trigger
         
         Enable_Sl_Batch (:En_Sl, NVL (:En_Batch, 'N'), :Fix_Srate);
         Get_Stock ('STOCK_BU', 'STOCK_DTL',:Global.Company, :Invh_Loc_Code,:Invi_Item_Code,:Max_Loose,:Global.Stk_Chk_Type);
         Enable_Pcs;
         Tender_Validate_Item_Level;   -- Added by mojish 05/04/14
         Proc_show_margin;
      End If;
   End If;     
END; */
What you getClause Rule Language
on change of INVI_ITEM_CODE:    set INVI_ITEM_CODE to FN_GET_ITEM_CODE(INVI_ITEM_CODE, FRM_SEARCH_ORDER, null, null, GLOBAL.COMPANY, GLOBAL.USER)    call PROC_VALID_PLU_ITEM('ITEM') when is_filled(INVI_ITEM_CODE)    call VALIDATE_CUST_ITEM() when is_filled(INVI_ITEM_CODE)
# 1 statement did not convert.#   line 1
#   Set_item_instance_property('INVI_ITEM_CODE', CURRENT_RECORD, REQUIRED,PROPERTY_TRUE);
#   reason: this sets a property of one record's cell, and the screen holds field state per field and not per row, so a verb here would lock or mark the column in every row of the grid: a per-record field state is grid.md's and is not built

3 clauses converted, 1 statement refused

53. fmb_invoiceon unit VALIDATE_INVOICEgreen-waste
What you havePROGRAM-UNIT
Procedure Validate_Invoice Is
  V_Count           Number;
  V_Inv_Count       Number;
  V_Alert           Number;
  V_Status          Char;
  V_Rem             Varchar2(1000);
  V_Date            Date ;
  V_Divn_Cr_Days     Number;
  V_Nett            Number(12,2);
  V_Pay_Mode        Char;
  V_Comp_Temp_Cr_Limit   Number(10,2);
  V_Comp_Temp_Cr_Dt     Date;
  V_Comp_Temp_Cr_Days   Number(3);
  V_Divn_Temp_Cr_Limit   Number(10,2);
  V_Divn_Temp_Cr_Dt     Date;
  V_Divn_Temp_Cr_Days   Number(3);
  V_Cash_Limit          Number(14,2);
  V_Divn_Inv_Count      Number;
  V_Divn_Inv_Limit      Number(12,2);
  V_Divn_Inv_Per_Day     Number(3);
  V_Divn_Inv_Settle_Limit_Days   Number;
  V_Msg           Varchar2(1000);
  V_Cust_Code     Varchar2(10);
  --<< ## Proc_InvCredit_limit_Val - Procedure Added on 13/Jun/2019,Shebin,  
 -- v_Ref_Div          Sys_refcursor;  
 -- v_Ref_Comp         Sys_refcursor; 
  v_errMsg        Varchar2(100) := Null;
 /* Type v_Rec_CustDiv Is Record (
                                Custd_Cr_Limit NUMBER(14,3), 
                                Custd_Cr_Days NUMBER(3,0),
                                Custd_Cr_Warn_Limit NUMBER(14,3),
                                Custd_Pay_Mode CHAR(1),
                                Custd_Temp_Cr_Limit NUMBER(14,3),
                                Custd_Temp_Dt DATE,
                                Custd_Temp_Cr_Days NUMBER(3,0)); 
  v_Rec v_Rec_CustDiv;  */
  v_Rec Pkg_Invoice.CustDiv_table;
  /* Type v_Rec_CustComp Is Record(
                                Custcomp_Cr_Limit NUMBER(14,3),
                                Custcomp_Cr_Days  NUMBER(3,0),
                                Custcomp_Cr_Warn_Limit NUMBER(14,3),
                                Custcomp_Pay_Mode CHAR(1),
                                Custcomp_Inv_Limit NUMBER(14,3) ,
                                Custcomp_Inv_Per_Day NUMBER(2,0),
                                Custcomp_Inv_Settle_Limit_Days NUMBER(2,0), 
                                Custcomp_Temp_Cr_Limit NUMBER(14,3), 
                                Custcomp_Temp_Cr_Days NUMBER(3,0),
                                Custcomp_Temp_Cr_Dt DATE);
 v_RecComp v_Rec_CustComp; */ -->> 
 v_RecComp Pkg_Invoice.CustComp_table; 
 V_Sman_Cnt Number; 
Begin 
  --Validate Customer Lock
  /*Check if the validate invoice not fired in query mode*/
  If :System.Record_Status <> 'QUERY' Then     
    If Nvl(:Cust_Status, ' ') = 'L' Then
      Show_Message('Inv_Alert', 'Customer Locked! [' || Nvl(:Cust_Rem, 'No Remarks!') || ']');
      Raise Form_Trigger_Failure;
    End If;

    Select Cust_Parent_Code Into V_Cust_Code From M_Customer Where Cust_Code =:Invh_Cust_Code;
  
    If V_Cust_Code Is Null Then
       V_Cust_Code :=:Invh_Cust_Code;
    End If;
    If :Frm_Loc_Sman is Not Null Then
      :Invh_Sman_Code := :Frm_Loc_Sman;
    End If;  
    
    --<<Task #49191, Added on 30/6/2019, Shebin
    If :Invh_Sman_Code is Not Null Then
       Select Count(*) Into V_Sman_Cnt 
         From M_Customer_Salesman
        Where Custs_Comp_Code=:Global.Company
          And Custs_Divn_Code  =:Invh_Divn_Code
          And Custs_Cust_Code  =:Invh_Cust_Code
          And Custs_Sman_Code  =:Invh_Sman_Code;
          If V_Sman_Cnt = 0 Then 
            Show_Message('Inv_Alert', 'Salesman is not defined for this location/Customer !');
            :Invh_Sman_Code := Null;
            :Sman_Name      := Null;
            Raise Form_Trigger_Failure;     
          End If;
     End If;-->>
 
    If :Frm_Loc_Sman Is Not Null Then
      Select Sman_Name, Sman_Status, Sman_Remarks 
      Into :Sman_Name, V_Status, V_Rem
      From M_Salesman
      Where Sman_Code = :Invh_Sman_Code;
    End If;
    
    If Nvl(V_Status, ' ') = 'L' Then
      Show_Message('Inv_Alert', 'Salesman Locked! [' || Nvl(V_Rem, 'No Remarks!') || ']');
      Raise Form_Trigger_Failure;
    End If;

   :Frm_Valid_Cr_Limit := Fn_Get_Cust_Param(V_Cust_Code,:Global.Company,'CUST_VALIDATE_CR_LIMIT');
   :Frm_Valid_Cr_Days := Fn_Get_Cust_Param(V_Cust_Code,:Global.Company,'CUST_VALIDATE_CR_DAYS');
   :Frm_Valid_Order := Fn_Get_Cust_Param(V_Cust_Code,:Global.Company,'CUST_VALIDATE_ORDER');
   :Frm_Valid_Emp_Code := Fn_Get_Cust_Param(V_Cust_Code,:Global.Company,'CUST_VALIDATE_EMP_CODE');
   :Frm_Show_Rate := Fn_Get_Cust_Param(V_Cust_Code,:Global.Company,'CUST_SHOW_RATE');
   :Frm_En_Add_Disc := Fn_Get_Cust_Param(V_Cust_Code,:Global.Company,'CUST_EN_ADD_DISC');
  
  
       If Nvl(:Frm_Show_Rate,'Y') = 'N' Then
          Set_Item_Property('INVI_RATE', ECHO, PROPERTY_FALSE);
          Set_Item_Property('INVI_DISC_PERC', ECHO, PROPERTY_FALSE);
          Set_Item_Property('INVI_DISC_AMT', ECHO, PROPERTY_FALSE);
          Set_Item_Property('AMOUNT', ECHO, PROPERTY_FALSE);
          Set_Item_Property('INVH_DISC_PERC', ECHO, PROPERTY_FALSE);
          Set_Item_Property('INVH_DISC_AMT', ECHO, PROPERTY_FALSE);
      Else
          SET_ITEM_PROPERTY('INVI_RATE', ECHO, PROPERTY_TRUE);
          Set_Item_Property('INVI_RATE', ECHO, PROPERTY_TRUE);
          Set_Item_Property('INVI_DISC_PERC', ECHO, PROPERTY_TRUE);
          Set_Item_Property('INVI_DISC_AMT', ECHO, PROPERTY_TRUE);
          Set_Item_Property('AMOUNT', ECHO, PROPERTY_TRUE);
          Set_Item_Property('INVH_DISC_PERC', ECHO, PROPERTY_TRUE);
          Set_Item_Property('INVH_DISC_AMT', ECHO, PROPERTY_TRUE);     
      End If;    
      
   If Nvl(:Frm_Valid_Order,'N') = 'Y' Then
     Set_Item_Property('INVH_ORD_REF', Required, Property_True);
     Set_Item_Property('INVH_ORD_DT', Required, Property_True);
   Else
     Set_Item_Property('INVH_ORD_REF', Required, Property_False);
     Set_Item_Property('INVH_ORD_DT', Required, Property_False);
   End If;
   
   If Nvl(:Frm_Valid_Emp_Code,'N') = 'Y' Then
     Set_Item_Property('InvH_Emp_Code', Enabled, Property_True);
     Set_Item_Property('InvH_Emp_Code', Required, Property_True);
     Set_Item_Property('Lov_InvH_Emp_Code', Enabled, Property_True);
   Else
     Set_Item_Property('InvH_Emp_Code', Enabled, Property_False);
     Set_Item_Property('InvH_Emp_Code', Required, Property_False);
     Set_Item_Property('Lov_InvH_Emp_Code',  Enabled, Property_False);
   End If;
   
    If Nvl(:Frm_En_Bank,'F') = 'N' Then
       Set_Item_Property('InvH_Bank_Code', Enabled, Property_True);
       Set_Item_Property('InvH_Bank_Code', Required, Property_True);
       Set_Item_Property('Lov_Bank', Enabled, Property_True);
   Else
       Set_Item_Property('InvH_Bank_Code', Enabled, Property_False);
       Set_Item_Property('InvH_Bank_Code', Required, Property_False);
       Set_Item_Property('Lov_Bank', Enabled, Property_False);
   End If;
   /*  
   If Nvl(:Frm_En_Loc_To,'F') = 'N' Then
       Set_Item_Property('InvH_Loc_Code_To', Enabled, Property_True);
       Set_Item_Property('InvH_Loc_Code_To', Required, Property_True);
       Set_Item_Property('Lov_Loc_Code_To', Enabled, Property_True);
   Else
       Set_Item_Property('InvH_Loc_Code_To', Enabled, Property_False);
       Set_Item_Property('InvH_Loc_Code_To', Required, Property_False);
       Set_Item_Property('Lov_Loc_Code_To', Enabled, Property_False);
   End If;  
 */ 
    --Validate Credit Limit(Divisin/Company)
   If Nvl(:Frm_Valid_Cr_Limit,'Y') ='Y'  And Nvl(:Frm_Invh_Btrn_Flag, 'D') <> 'B' Then  
     If Nvl(:Frm_Divn_Crlimit_Man, 'Y') ='Y' Then    
       Select Count(*) Into V_Count From M_Customer_Division Where Custd_Comp_Code =:Global.Company
         And Custd_Divn_Code = :Invh_Divn_Code 
         And Custd_Cust_Code =V_Cust_Code
         And Custd_Cr_Limit > 0;  -- This was tried to include in db proc Pkg_Invoice.Proc_InvCredit_limit_Val, later brought back for the time being, since peculiar no data found issue db. 
         --<< ##Task -Invoice Standardization,Added on 13/06/2019,Shebin
        If V_Count > 0 Then 
           Pkg_Invoice.Proc_InvCredit_limit_Val('D',:Global.Company,v_Cust_Code,:Invh_Divn_Code,:Invh_Dt,:Divn_Cr_Limit,:Divn_Cr_Days,v_errMsg,v_Rec,v_RecComp); 
           :Divn_Warn_Limit  := v_Rec(1).Custd_Cr_Warn_Limit;
            :Cust_Pay_Mode    := v_Rec(1).Custd_Pay_Mode;
            V_Divn_Temp_Cr_Limit := v_Rec(1).Custd_Temp_Cr_Limit;
            V_Divn_Temp_Cr_Dt := v_Rec(1).Custd_Temp_Dt;
            V_Divn_Temp_Cr_Days := v_Rec(1).Custd_Temp_Cr_Days;  -->>
         Else  
              Show_Message('Inv_Alert', 'Division Credit Limit not defined');
              Raise Form_Trigger_Failure; 
              :Divn_Cr_Limit    := Null;
              :Divn_Cr_Days    := Null;
              :Divn_Warn_Limit :=Null;
              :Invh_Cust_Code  :=Null;
              :Invh_Cust_Code  :=Null;--Added on 13/06/2019,To handle repeated msgs, Shebin
              :Invh_Cust_Name  :=Null;
          End If; 

        /*    If V_Count > 0 Then        
             Select Custd_Cr_Limit,Custd_Cr_Days,Custd_Cr_Warn_Limit,Custd_Pay_Mode,Custd_Temp_Cr_Limit,Custd_Temp_Dt,Custd_Temp_Cr_Days 
             Into :Divn_Cr_Limit,:Divn_Cr_Days,:Divn_Warn_Limit,:Cust_Pay_Mode,V_Divn_Temp_Cr_Limit,V_Divn_Temp_Cr_Dt,V_Divn_Temp_Cr_Days  
             From M_Customer_Division 
             Where Custd_Comp_Code =:Global.Company
             And Custd_Divn_Code = :Invh_Divn_Code 
             And Custd_Cust_Code =V_Cust_Code;
                         
             --Temporary Limt exception
             Select Count(*) Into V_Count From M_Cust_Tempcr_Limit_Exception
             Where Custex_Comp_Code =:Global.Company
             And Custex_Cust_Code =V_Cust_Code
             And Custex_Exp_Dt >= :Invh_Dt;
          
             If (V_Divn_Temp_Cr_Dt >= :Invh_Dt And V_Divn_Temp_Cr_Dt Is Not Null) Then
               If  Nvl(:Frm_Max_Temp_Limit,0) > 0 Then
                If Nvl(V_Count,0) = 0 Then 
                  If Nvl(V_Divn_Temp_Cr_Limit,0) > Nvl(:Divn_Cr_Limit, 0) +  Nvl(:Divn_Cr_Limit * :Frm_Max_Temp_Limit/100, 0) Then
                    :Divn_Cr_Limit := Nvl(:Divn_Cr_Limit,0) +  Nvl(:Divn_Cr_Limit * :Frm_Max_Temp_Limit/100, 0);
                  Else
                    :Divn_Cr_Limit:= V_Divn_Temp_Cr_Limit;
                  End If;
                Else 
                  :Divn_Cr_Limit:= V_Divn_Temp_Cr_Limit;
                 End If; 
              Else
                :Divn_Cr_Limit:= V_Divn_Temp_Cr_Limit;
              End If;    
              :Divn_Cr_Days := V_Divn_Temp_Cr_Days  ;
             End If; 
           Else
              Show_Message('Inv_Alert', 'Division Credit Limit not defined');
              Raise Form_Trigger_Failure; 
              :Divn_Cr_Limit := Null;
              :Divn_Cr_Days := Null;
              :Divn_Warn_Limit :=Null;
           End If; 
         */
    End If; 
       --<< Task #49191, -Invoice Standardization,Added on 12/06/2019, Shebin
        Pkg_Invoice.Proc_InvCredit_limit_Val('C',:Global.Company,v_Cust_Code,:Invh_Divn_Code,:Invh_Dt,:Comp_Cr_Limit,:Comp_Cr_Days,v_errMsg,v_Rec,v_RecComp); 
       --  Fetch v_Ref_Comp Into v_RecComp; 
           :Comp_Warn_Limit  := v_RecComp(1).Custcomp_Cr_Warn_Limit;
           v_Pay_Mode   := v_RecComp(1).Custcomp_Pay_Mode;
           :Inv_Limit   := v_RecComp(1).Custcomp_Inv_Limit;
           :Inv_Per_Day := v_RecComp(1).Custcomp_Inv_Per_Day;
           :Inv_Settle_Limit_Days := v_RecComp(1).Custcomp_Inv_Settle_Limit_Days;
           V_Comp_Temp_Cr_Limit   := v_RecComp(1).Custcomp_Temp_Cr_Limit;
           V_Comp_Temp_Cr_Days    := v_RecComp(1).Custcomp_Temp_Cr_Days;
           V_Comp_Temp_Cr_Dt      := v_RecComp(1).Custcomp_Temp_Cr_Dt; -->> 
           /* 
            Select Custcomp_Cr_Limit,Custcomp_Cr_Days,Custcomp_Cr_Warn_Limit,Custcomp_Pay_Mode,Custcomp_Inv_Limit,Custcomp_Inv_Per_Day,
            Custcomp_Inv_Settle_Limit_Days, Custcomp_Temp_Cr_Limit, Custcomp_Temp_Cr_Days, Custcomp_Temp_Cr_Dt 
            Into :Comp_Cr_Limit,:Comp_Cr_Days,:Comp_Warn_Limit,V_Pay_Mode,:Inv_Limit,:Inv_Per_Day,:Inv_Settle_Limit_Days,
            V_Comp_Temp_Cr_Limit, V_Comp_Temp_Cr_Days, V_Comp_Temp_Cr_Dt
            From M_Customer_Company 
            Where Custcomp_Comp_Code =:Global.Company
            And Custcomp_Cust_Code =V_Cust_Code;
            
            Select Count(*) Into V_Count From M_Cust_Tempcr_Limit_Exception
                   Where Custex_Comp_Code =:Global.Company
                   And Custex_Cust_Code =V_Cust_Code
                   And Custex_Exp_Dt >= :Invh_Dt;
          
            If V_Comp_Temp_Cr_Dt Is Not Null And V_Comp_Temp_Cr_Dt >= :Invh_Dt Then
                 If  Nvl(:Frm_Max_Temp_Limit, 0) > 0 Then
                   If Nvl(V_Count, 0) = 0 Then 
                     If Nvl(V_Comp_Temp_Cr_Limit, 0) > Nvl(:Comp_Cr_Limit, 0) + Nvl(:Comp_Cr_Limit * :Frm_Max_Temp_Limit/100, 0) Then
                       :Comp_Cr_Limit := Nvl(:Comp_Cr_Limit, 0) + Nvl(:Comp_Cr_Limit * :Frm_Max_Temp_Limit/100, 0);
                     Else
                       :Comp_Cr_Limit:= Nvl(V_Comp_Temp_Cr_Limit, 0);
                     End If;
                   Else 
                     :Comp_Cr_Limit:= Nvl(V_Comp_Temp_Cr_Limit, 0);
                    End If; 
                 Else
                   :Comp_Cr_Limit:= Nvl(V_Comp_Temp_Cr_Limit, 0);
                 End If;    
                 :Comp_Cr_Days := Nvl(V_Comp_Temp_Cr_Days, 0);
            End If;  */
          
            --Show_Message('Inv_Alert', :Comp_Cr_LImit||'*'||:Global.Company||'*'||v_Cust_Code);
  
    If :Cust_Pay_Mode Is Null Then
      :Cust_Pay_Mode := V_Pay_Mode;
    End If;
    
    If :Invh_Pay_Mode='R' Then
      :Invh_Due_Dt := :Invh_Dt + :Comp_Cr_Days;
    Else
      :Invh_Due_Dt := :Invh_Dt;
    End If;  
  
    If :Frm_Def_Pay_Mode = 'R' And :Cust_Pay_Mode = 'C' Then
      Show_Message('Inv_Alert', 'Cash only Customer not allowed!');
      Raise Form_Trigger_Failure;
    End If;
  
    If :Frm_Def_Pay_Mode Is Null Then
      If :Invh_Pay_Mode Is Null Then
        :Invh_Pay_Mode := :Cust_Pay_Mode;
      End If;
      Set_Item_Property('InvH_Pay_Mode', Enabled, Property_True);
    Else
      Set_Item_Property('InvH_Pay_Mode', Enabled, Property_False);
    End If;

    If :Invh_Pay_Mode = 'R' Then
       Proc_Get_Cust_Bal(:Global.Company, :Invh_Divn_Code, V_Cust_Code, Nvl(:Nett_Loc, 0), Nvl(:Old_Inv_Amt, 0), 
                         :Cust_Main_Ac, :Invh_Sman_Code, :Global.Company, :Invh_Divn_Code, :Divn_Os, :Comp_Os,
                         :Divn_Os_Bills, :Divn_Os_Min_Dt, :Comp_Os_Bills, :Comp_Os_Min_Dt);
       --Show_Message('Inv_Alert', 'Company O/S:'||:Comp_Os||' Divn O/S :'||:Divn_Os||' Company Cr Limit:'|| :Comp_Cr_Limit||' Divn Cr Limit:'||:Divn_Cr_Limit);
       --Company level 
       If Nvl(:Comp_Os, 0) > Nvl(:Comp_Cr_Limit, 0) And Nvl(:Frm_Invh_Btrn_Flag, 'D') <> 'B' Then
         Show_Message('Inv_Alert', 'Company Credit Limit Exceeded!');  
         :Parameter.P_msg := 1; --To handle Copy functionality, Added on 16/6/2019,
         Raise Form_Trigger_Failure;  
       Elsif Nvl(:Comp_Os, 0) > Nvl(:Comp_Warn_Limit, 0) Then
           V_Msg :=V_Msg || 'Nearing Company Credit Limit!';
       End If;
       --Show_Message('Inv_Alert',  Nvl(:Comp_Os, 0) || 'Divn:' || Nvl(:Divn_Os, 0 ));
       :Available_Balance := Nvl(:Comp_Cr_Limit, 0) - Nvl(:Comp_Os, 0) ;
      -- :Min_osdate := :Comp_OS_Min_Dt;
       --Division Level 
       If Nvl(:Frm_Valid_Cr_Limit,'Y') ='Y'  Then
         If :Invh_Divn_Code Is Not Null And Nvl(:Divn_Cr_Limit, 0) > 0 And Nvl(:Frm_Invh_Btrn_Flag, 'D') <> 'B' Then
           If Nvl(:Divn_Os, 0) > Nvl(:Divn_Cr_Limit, 0) Then
             Show_Message('Inv_Alert', 'Division Credit Limit Exceeded!');
             Raise Form_Trigger_Failure; 
           Elsif Nvl(:Divn_Os, 0) > Nvl(:Divn_Warn_Limit, 0) Then
              V_Msg :=V_Msg || 'Nearing Division Credit Limit!';
             Show_Message('Inv_Alert',V_Msg);
            End If;
         End If;
    
         --Bill-wise O/s
         If :Divn_Cr_Days > 0 And :Divn_Os_Min_Dt + Nvl(Nvl(:Divn_Cr_Days,:Comp_Cr_Days), :Global.No_Days) < Trunc(Fn_Get_Zone_Date(:Global.Company))   --Uncommented by Mojish on 16/08/14 for RQ
           And Nvl(:Frm_Invh_Btrn_Flag, 'D') <> 'B' Then
            If Nvl(:Frm_Valid_Cr_Days,'Y') = 'Y' Then
             Show_Message('Inv_Alert', 'Division O/s Bills Day(s) Exceeded!');
             Raise Form_Trigger_Failure; --Temporary blocked by faisal on 14/01/15 as per Mr.Punnen
           End If;
         End If;
       End If;
       --Show_Message('Inv_Alert', 'CR Days:'||:Comp_Cr_Days||' No Of days :'||:Global.No_Days);
       --Show_Message('Inv_Alert', 'CR Days:'||:Comp_Cr_Days||' No Of days :'||:Global.No_Days || 'Min Date'||:Comp_Os_Min_Dt);
       If :Comp_Os_Min_Dt + Nvl(:Comp_Cr_Days, :Global.No_Days) < Trunc(Fn_Get_Zone_Date(:Global.Company)) And Nvl(:Frm_Invh_Btrn_Flag, 'D') <> 'B' Then  --Uncommented by Mojish on 16/08/14 for RQ
           If Nvl(:Frm_Valid_Cr_Days,'Y') = 'Y' Then
             Show_Message('Inv_Alert', 'Company O/s Bills Day(s) Exceeded!!!!'); 
            Raise Form_Trigger_Failure; 
          End If;
       End If;
       
       If V_Msg Is Not Null And :Global.Msg_Flag = 1 Then 
         Show_Message('Inv_Alert', V_Msg);
         :Global.Msg_Flag := 0;
         V_Msg := Null;
       End If;  
    Else
      -- Invoice Limit Validation:
      If Nvl(:Inv_Limit,0) > 0 Then
         If Nvl(:Nett_Loc, 0)> :Inv_Limit Then
            Show_Message('Inv_Alert', 'Invoice Amount Limit Exceeded!'); 
           Raise Form_Trigger_Failure; 
         End If;  
         
         If Nvl(:Inv_Per_Day,0) <> 0 Then
            Pkg_Invoice.Proc_InvCnt_Limit('C',:Invh_Cust_Code,:Global.Company,:Invh_Divn_Code,V_Divn_Inv_Limit,V_Divn_Inv_Per_Day,V_Divn_Inv_Settle_Limit_Days,V_Inv_Count); --##Invoice Standardization,Added on 12/06/2019, Shebin
            If V_Inv_Count > Nvl(:Inv_Per_Day,0) Then
                 Show_Message('Inv_Alert', 'Number of Invoices Exceeded for the customer for the company '||:Global.Company||' !'); 
                Raise Form_Trigger_Failure; 
            End If;
         End If;
     
         --Division Level Invoice limit per day and Invoice count limit validation
         V_Count := 0;
         Select Count(*) Into V_Count From M_Customer_Division Where Custd_Comp_Code =:Global.Company
         And Custd_Divn_Code = :Invh_Divn_Code 
         And Custd_Cust_Code =:Invh_Cust_Code;
         If V_Count >0 Then
           Pkg_Invoice.Proc_InvCnt_Limit('D',:Invh_Cust_Code,:Global.Company,:Invh_Divn_Code,V_Divn_Inv_Limit,V_Divn_Inv_Per_Day,V_Divn_Inv_Settle_Limit_Days,V_Divn_Inv_Count); --##Invoice Standardization,Added on 17/06/2019, Shebin
            If  Nvl(:Nett_Loc, 0)> V_Divn_Inv_Limit Then
              Show_Message('Inv_Alert', 'Division Invoice Amount Limit Exceeded!'); 
             Raise Form_Trigger_Failure; 
            End If; 
            
            If Nvl(V_Divn_Inv_Per_Day,0) <> 0 Then
            If V_Divn_Inv_Count > Nvl(V_Divn_Inv_Per_Day,0) Then
                  Show_Message('Inv_Alert', 'Number of Invoices Exceeded for the customer in this division!'); 
                 Raise Form_Trigger_Failure; 
            End If;               
            End If;            
         End If;   
         
      End If;
    End If; 
   End If;  
  End If;    
Exception 
  When No_Data_Found Then Null;  
End;  
What you getClause Rule Language
on unit VALIDATE_INVOICE:    from CUSTOMER(INVH_CUST_CODE) when SYSTEM.RECORD_STATUS <> 'QUERY' or null
        # load-fmb-invoice-validate-invoice-unit-0    from CUSTOMER_SALESMAN(INVH_CUST_CODE, INVH_DIVN_CODE, INVH_SMAN_CODE)
        # load-fmb-invoice-validate-invoice-unit-1    from SALESMAN(INVH_SMAN_CODE) or null
        # load-fmb-invoice-validate-invoice-unit-2    from CUSTOMER_DIVISION(INVH_CUST_CODE, INVH_DIVN_CODE) or null
        # load-fmb-invoice-validate-invoice-unit-4    deny when (SYSTEM.RECORD_STATUS <> 'QUERY') and (CUST_STATUS = 'L') else ('Customer Locked! [' || nvl(CUST_REM, 'No Remarks!')) || ']'    set INVH_SMAN_CODE to FRM_LOC_SMAN when (SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(FRM_LOC_SMAN)    fetch CUSTOMER_SALESMAN when (SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)    when ((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and (CUSTOMER_SALESMAN.COUNT = 0)    fetch SALESMAN when (SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(FRM_LOC_SMAN)    set SMAN_NAME to SALESMAN.SMAN_NAME when (SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(FRM_LOC_SMAN)    deny when (SYSTEM.RECORD_STATUS <> 'QUERY') and (SALESMAN.SMAN_STATUS = 'L') else ('Salesman Locked! [' || nvl(SALESMAN.SMAN_REMARKS, 'No Remarks!')) || ']'    set FRM_VALID_CR_LIMIT to FN_GET_CUST_PARAM(CUSTOMER.CUST_PARENT_CODE, GLOBAL.COMPANY, 'CUST_VALIDATE_CR_LIMIT') when SYSTEM.RECORD_STATUS <> 'QUERY'    set FRM_VALID_CR_DAYS to FN_GET_CUST_PARAM(CUSTOMER.CUST_PARENT_CODE, GLOBAL.COMPANY, 'CUST_VALIDATE_CR_DAYS') when SYSTEM.RECORD_STATUS <> 'QUERY'    set FRM_VALID_ORDER to FN_GET_CUST_PARAM(CUSTOMER.CUST_PARENT_CODE, GLOBAL.COMPANY, 'CUST_VALIDATE_ORDER') when SYSTEM.RECORD_STATUS <> 'QUERY'    set FRM_VALID_EMP_CODE to FN_GET_CUST_PARAM(CUSTOMER.CUST_PARENT_CODE, GLOBAL.COMPANY, 'CUST_VALIDATE_EMP_CODE') when SYSTEM.RECORD_STATUS <> 'QUERY'    set FRM_SHOW_RATE to FN_GET_CUST_PARAM(CUSTOMER.CUST_PARENT_CODE, GLOBAL.COMPANY, 'CUST_SHOW_RATE') when SYSTEM.RECORD_STATUS <> 'QUERY'    set FRM_EN_ADD_DISC to FN_GET_CUST_PARAM(CUSTOMER.CUST_PARENT_CODE, GLOBAL.COMPANY, 'CUST_EN_ADD_DISC') when SYSTEM.RECORD_STATUS <> 'QUERY'    state conceal INVH_DISC_AMT, INVH_DISC_PERC, AMOUNT, INVI_DISC_AMT, INVI_DISC_PERC, INVI_RATE when (SYSTEM.RECORD_STATUS <> 'QUERY') and (FRM_SHOW_RATE = 'N')    state reveal INVH_DISC_AMT, INVH_DISC_PERC, AMOUNT, INVI_DISC_AMT, INVI_DISC_PERC, INVI_RATE when (SYSTEM.RECORD_STATUS <> 'QUERY') and not (FRM_SHOW_RATE = 'N')    state require INVH_ORD_DT, INVH_ORD_REF when (SYSTEM.RECORD_STATUS <> 'QUERY') and (FRM_VALID_ORDER = 'Y')    state optional INVH_ORD_DT, INVH_ORD_REF when (SYSTEM.RECORD_STATUS <> 'QUERY') and not (FRM_VALID_ORDER = 'Y')    state enable INVH_EMP_CODE when (SYSTEM.RECORD_STATUS <> 'QUERY') and (FRM_VALID_EMP_CODE = 'Y')    state require INVH_EMP_CODE when (SYSTEM.RECORD_STATUS <> 'QUERY') and (FRM_VALID_EMP_CODE = 'Y')    state enable LOV_INVH_EMP_CODE when (SYSTEM.RECORD_STATUS <> 'QUERY') and (FRM_VALID_EMP_CODE = 'Y')    state disable INVH_EMP_CODE when (SYSTEM.RECORD_STATUS <> 'QUERY') and not (FRM_VALID_EMP_CODE = 'Y')    state optional INVH_EMP_CODE when (SYSTEM.RECORD_STATUS <> 'QUERY') and not (FRM_VALID_EMP_CODE = 'Y')    state disable LOV_INVH_EMP_CODE when (SYSTEM.RECORD_STATUS <> 'QUERY') and not (FRM_VALID_EMP_CODE = 'Y')    state enable INVH_BANK_CODE when (SYSTEM.RECORD_STATUS <> 'QUERY') and (FRM_EN_BANK = 'N')    state require INVH_BANK_CODE when (SYSTEM.RECORD_STATUS <> 'QUERY') and (FRM_EN_BANK = 'N')    state enable LOV_BANK when (SYSTEM.RECORD_STATUS <> 'QUERY') and (FRM_EN_BANK = 'N')    state disable INVH_BANK_CODE when (SYSTEM.RECORD_STATUS <> 'QUERY') and not (FRM_EN_BANK = 'N')    state optional INVH_BANK_CODE when (SYSTEM.RECORD_STATUS <> 'QUERY') and not (FRM_EN_BANK = 'N')    state disable LOV_BANK when (SYSTEM.RECORD_STATUS <> 'QUERY') and not (FRM_EN_BANK = 'N')    set INVH_DUE_DT to INVH_DT + COMP_CR_DAYS when ((SYSTEM.RECORD_STATUS <> 'QUERY') and ((nvl(FRM_VALID_CR_LIMIT, 'Y') = 'Y') and (nvl(FRM_INVH_BTRN_FLAG, 'D') <> 'B'))) and (INVH_PAY_MODE = 'R')    set INVH_DUE_DT to INVH_DT when ((SYSTEM.RECORD_STATUS <> 'QUERY') and ((nvl(FRM_VALID_CR_LIMIT, 'Y') = 'Y') and (nvl(FRM_INVH_BTRN_FLAG, 'D') <> 'B'))) and not (INVH_PAY_MODE = 'R')    deny when ((SYSTEM.RECORD_STATUS <> 'QUERY') and ((nvl(FRM_VALID_CR_LIMIT, 'Y') = 'Y') and (nvl(FRM_INVH_BTRN_FLAG, 'D') <> 'B'))) and ((FRM_DEF_PAY_MODE = 'R') and (CUST_PAY_MODE = 'C')) else "Cash only Customer not allowed!"    set INVH_PAY_MODE to CUST_PAY_MODE when (((SYSTEM.RECORD_STATUS <> 'QUERY') and ((nvl(FRM_VALID_CR_LIMIT, 'Y') = 'Y') and (nvl(FRM_INVH_BTRN_FLAG, 'D') <> 'B'))) and is_blank(FRM_DEF_PAY_MODE)) and is_blank(INVH_PAY_MODE)    state enable INVH_PAY_MODE when ((SYSTEM.RECORD_STATUS <> 'QUERY') and ((nvl(FRM_VALID_CR_LIMIT, 'Y') = 'Y') and (nvl(FRM_INVH_BTRN_FLAG, 'D') <> 'B'))) and is_blank(FRM_DEF_PAY_MODE)    state disable INVH_PAY_MODE when ((SYSTEM.RECORD_STATUS <> 'QUERY') and ((nvl(FRM_VALID_CR_LIMIT, 'Y') = 'Y') and (nvl(FRM_INVH_BTRN_FLAG, 'D') <> 'B'))) and not is_blank(FRM_DEF_PAY_MODE)    call PROC_GET_CUST_BAL(GLOBAL.COMPANY, INVH_DIVN_CODE, CUSTOMER.CUST_PARENT_CODE, nvl(NETT_LOC, 0), nvl(OLD_INV_AMT, 0), CUST_MAIN_AC, INVH_SMAN_CODE, GLOBAL.COMPANY, INVH_DIVN_CODE, DIVN_OS, COMP_OS, DIVN_OS_BILLS, DIVN_OS_MIN_DT, COMP_OS_BILLS, COMP_OS_MIN_DT) when ((SYSTEM.RECORD_STATUS <> 'QUERY') and ((nvl(FRM_VALID_CR_LIMIT, 'Y') = 'Y') and (nvl(FRM_INVH_BTRN_FLAG, 'D') <> 'B'))) and (INVH_PAY_MODE = 'R')    warn "Company Credit Limit Exceeded!" when (((SYSTEM.RECORD_STATUS <> 'QUERY') and ((nvl(FRM_VALID_CR_LIMIT, 'Y') = 'Y') and (nvl(FRM_INVH_BTRN_FLAG, 'D') <> 'B'))) and (INVH_PAY_MODE = 'R')) and ((nvl(COMP_OS, 0) > nvl(COMP_CR_LIMIT, 0)) and (nvl(FRM_INVH_BTRN_FLAG, 'D') <> 'B'))    deny when (((SYSTEM.RECORD_STATUS <> 'QUERY') and ((nvl(FRM_VALID_CR_LIMIT, 'Y') = 'Y') and (nvl(FRM_INVH_BTRN_FLAG, 'D') <> 'B'))) and (INVH_PAY_MODE = 'R')) and ((nvl(COMP_OS, 0) > nvl(COMP_CR_LIMIT, 0)) and (nvl(FRM_INVH_BTRN_FLAG, 'D') <> 'B')) silent    set AVAILABLE_BALANCE to nvl(COMP_CR_LIMIT, 0) - nvl(COMP_OS, 0) when ((SYSTEM.RECORD_STATUS <> 'QUERY') and ((nvl(FRM_VALID_CR_LIMIT, 'Y') = 'Y') and (nvl(FRM_INVH_BTRN_FLAG, 'D') <> 'B'))) and (INVH_PAY_MODE = 'R')    deny when (((((SYSTEM.RECORD_STATUS <> 'QUERY') and ((nvl(FRM_VALID_CR_LIMIT, 'Y') = 'Y') and (nvl(FRM_INVH_BTRN_FLAG, 'D') <> 'B'))) and (INVH_PAY_MODE = 'R')) and (nvl(FRM_VALID_CR_LIMIT, 'Y') = 'Y')) and ((is_filled(INVH_DIVN_CODE) and (nvl(DIVN_CR_LIMIT, 0) > 0)) and (nvl(FRM_INVH_BTRN_FLAG, 'D') <> 'B'))) and (nvl(DIVN_OS, 0) > nvl(DIVN_CR_LIMIT, 0)) else "Division Credit Limit Exceeded!"    deny when (((((SYSTEM.RECORD_STATUS <> 'QUERY') and ((nvl(FRM_VALID_CR_LIMIT, 'Y') = 'Y') and (nvl(FRM_INVH_BTRN_FLAG, 'D') <> 'B'))) and (INVH_PAY_MODE = 'R')) and (nvl(FRM_VALID_CR_LIMIT, 'Y') = 'Y')) and (((DIVN_CR_DAYS > 0) and ((DIVN_OS_MIN_DT + nvl(nvl(DIVN_CR_DAYS, COMP_CR_DAYS), GLOBAL.NO_DAYS)) < trunc(sysdate()))) and (nvl(FRM_INVH_BTRN_FLAG, 'D') <> 'B'))) and (nvl(FRM_VALID_CR_DAYS, 'Y') = 'Y') else "Division O/s Bills Day(s) Exceeded!"    deny when ((((SYSTEM.RECORD_STATUS <> 'QUERY') and ((nvl(FRM_VALID_CR_LIMIT, 'Y') = 'Y') and (nvl(FRM_INVH_BTRN_FLAG, 'D') <> 'B'))) and (INVH_PAY_MODE = 'R')) and (((COMP_OS_MIN_DT + nvl(COMP_CR_DAYS, GLOBAL.NO_DAYS)) < trunc(sysdate())) and (nvl(FRM_INVH_BTRN_FLAG, 'D') <> 'B'))) and (nvl(FRM_VALID_CR_DAYS, 'Y') = 'Y') else "Company O/s Bills Day(s) Exceeded!!!!"    deny when ((((SYSTEM.RECORD_STATUS <> 'QUERY') and ((nvl(FRM_VALID_CR_LIMIT, 'Y') = 'Y') and (nvl(FRM_INVH_BTRN_FLAG, 'D') <> 'B'))) and not (INVH_PAY_MODE = 'R')) and (nvl(INV_LIMIT, 0) > 0)) and (nvl(NETT_LOC, 0) > INV_LIMIT) else "Invoice Amount Limit Exceeded!"    fetch CUSTOMER_DIVISION when (((SYSTEM.RECORD_STATUS <> 'QUERY') and ((nvl(FRM_VALID_CR_LIMIT, 'Y') = 'Y') and (nvl(FRM_INVH_BTRN_FLAG, 'D') <> 'B'))) and not (INVH_PAY_MODE = 'R')) and (nvl(INV_LIMIT, 0) > 0)
# 19 statements did not convert.#   line 170
#   Pkg_Invoice.Proc_InvCredit_limit_Val('D',:Global.Company,v_Cust_Code,:Invh_Divn_Code,:Invh_Dt,:Divn_Cr_Limit,:Divn_Cr_Days,v_errMsg,v_Rec,v_RecComp);
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 171
#   :Divn_Warn_Limit  := v_Rec(1).Custd_Cr_Warn_Limit;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 172
#   :Cust_Pay_Mode    := v_Rec(1).Custd_Pay_Mode;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 227
#   Pkg_Invoice.Proc_InvCredit_limit_Val('C',:Global.Company,v_Cust_Code,:Invh_Divn_Code,:Invh_Dt,:Comp_Cr_Limit,:Comp_Cr_Days,v_errMsg,v_Rec,v_RecComp);
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 229
#   :Comp_Warn_Limit  := v_RecComp(1).Custcomp_Cr_Warn_Limit;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 231
#   :Inv_Limit   := v_RecComp(1).Custcomp_Inv_Limit;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 232
#   :Inv_Per_Day := v_RecComp(1).Custcomp_Inv_Per_Day;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 233
#   :Inv_Settle_Limit_Days := v_RecComp(1).Custcomp_Inv_Settle_Limit_Days;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 271
#   :Cust_Pay_Mode := V_Pay_Mode;
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 302
#   :Parameter.P_msg := 1;
#   reason: set writes a field or a global and there is no third spelling, so a write to a form parameter is refused: item 20 rules a parameter read-only#   line 318
#   Show_Message('Inv_Alert',V_Msg);
#   reason: its message cannot be built from literals and the standard library#   line 340
#   If V_Msg Is Not Null And :Global.Msg_Flag = 1 Then
#     Show_Message('Inv_Alert', V_Msg);
#     :Global.Msg_Flag := 0;
#     V_Msg := Null;
#   End If;
#   reason: the guard reads the local V_MSG, which a branch above it writes on one path only, so what it holds here depends on which path ran#   line 354
#   Pkg_Invoice.Proc_InvCnt_Limit('C',:Invh_Cust_Code,:Global.Company,:Invh_Divn_Code,V_Divn_Inv_Limit,V_Divn_Inv_Per_Day,V_Divn_Inv_Settle_Limit_Days,V_Inv_Count);
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 355
#   If V_Inv_Count > Nvl(:Inv_Per_Day,0) Then
#     Show_Message('Inv_Alert', 'Number of Invoices Exceeded for the customer for the company '||:Global.Company||' !');
#     Raise Form_Trigger_Failure;
#   End If;
#   reason: the guard reads the local V_INV_COUNT, which the statement `PKG_INVOICE.PROC_INVCNT_LIMIT('C',:INVH_CUST_CODE,:GLOBAL.COMPANY,:INV...` names above it, and no FormConnect entry declares that statement, so nothing says which of its arguments it writes#   line 367
#   Pkg_Invoice.Proc_InvCnt_Limit('D',:Invh_Cust_Code,:Global.Company,:Invh_Divn_Code,V_Divn_Inv_Limit,V_Divn_Inv_Per_Day,V_Divn_Inv_Settle_Limit_Days,V_Divn_Inv_Count);
#   reason: no recognizer claims it, and the vocabulary has no clause for what it does#   line 368
#   If Nvl(:Nett_Loc, 0)> V_Divn_Inv_Limit Then
#     Show_Message('Inv_Alert', 'Division Invoice Amount Limit Exceeded!');
#     Raise Form_Trigger_Failure;
#   End If;
#   reason: the guard reads the local V_DIVN_INV_LIMIT, which the statement `PKG_INVOICE.PROC_INVCNT_LIMIT('D',:INVH_CUST_CODE,:GLOBAL.COMPANY,:INV...` names above it, and no FormConnect entry declares that statement, so nothing says which of its arguments it writes#   line 373
#   If Nvl(V_Divn_Inv_Per_Day,0) <> 0 Then
#     If V_Divn_Inv_Count > Nvl(V_Divn_Inv_Per_Day,0) Then
#       Show_Message('Inv_Alert', 'Number of Invoices Exceeded for the customer in this division!');
#       Raise Form_Trigger_Failure;
#     End If;
#   End If;
#   reason: the guard reads the local V_DIVN_INV_PER_DAY, which the statement `PKG_INVOICE.PROC_INVCNT_LIMIT('D',:INVH_CUST_CODE,:GLOBAL.COMPANY,:INV...` names above it, and no FormConnect entry declares that statement, so nothing says which of its arguments it writes#   Select Count(*) Into V_Count From M_Customer_Division Where Custd_Comp_Code =:Global.Company
#            And Custd_Divn_Code = :Invh_Divn_Code 
#            And Custd_Cust_Code =V_Cust_Code
#            And Custd_Cr_Limit > 0
#   reason: its query narrows on V_CUST_CODE, which this body declares as a local: a formal becomes an :ARG bind and a page value becomes a param, and a local is neither#   Show_Message('Inv_Alert', 'Division Credit Limit not defined');
#   Raise Form_Trigger_Failure;
#   :Divn_Cr_Limit    := Null;
#   :Divn_Cr_Days    := Null;
#   :Divn_Warn_Limit :=Null;
#   :Invh_Cust_Code  :=Null;
#   :Invh_Cust_Name  :=Null;
#   reason: the query they read is refused above, so a clause over it would read no row

44 clauses converted, 19 statements refused

54. fmb_invoiceon unit PROC_VALID_PLU_ITEMgreen-waste
What you havePROGRAM-UNIT
Procedure Proc_Valid_Plu_Item(P_Flag Varchar2) IS
--## This procedure will validate the bar code and item code
--## Called from When-Validate-Item Triggers of Bar code and Item Code
--## P_Flag variable can have values 'PLU'( Bar code) and 'ITEM'(Item Code)
--Bar
   v_Rate      Number;
   v_Disc_Perc Number;
   v_Disc_Amt  Number;
   v_Qty       Number;
   v_Loose     Number;
   v_Sl        Number;
   v_rate_ref  Number;
--Item 
   v_Count                 NUMBER;
   v_Uom_Code              VARCHAR2 (10);
   v_Pos                   NUMBER   (2);
   v_Status                VARCHAR2 (10);
   v_Def_Qty               NUMBER   (12,3);
   v_Item_Code             VARCHAR2 (20);
   v_Sl                    NUMBER;
   v_Ref                   VARCHAR2 (4);
   v_Rate_Ref              NUMBER;
   v_Cat_Code              VARCHAR2 (10);
   v_Count1                NUMBER;
   v_Vat_Incl_Price        VARCHAR2 (10);
   v_Gst_Incl_Price        VARCHAR2 (10);
   v_Cst_Incl_Price        VARCHAR2 (10);
   v_Serv_Tax_IncL_Price   VARCHAR2 (10); 
   v_Cat_Loc               Number; 
   v_Comm                  Number;
   v_Cust_Item             Varchar2(2);
   v_Btrn_Status           Char(1);
   v_Pos_Dept              Varchar2(10);
Begin 
   If :Ref_Doc_Item = 'Loaded' Then 
      If P_Flag = 'ITEM' Then 
         :Invi_Item_Code := :Old_Item_Code;         --ModIfied By Mojish 12/02/14
         :Invi_Uom_Code := :Old_Uom_Code;           --ModIfied By Mojish 12/02/14
      Else 
        Null;  -- Bar code validation
      End If;    
   Else         --<< Bar Code validation         
     If P_Flag = 'PLU' Then 
       If :InvI_PLU_Code Is Not Null Then
        If :Sl_Manual_Flag = 1 Then
          Show_Message('Inv_Alert', 'Serial Number exist, Can''t Change Barcode!');
          Raise Form_Trigger_Failure;
        End If;
        v_Pos := InStr(:InvI_PLU_Code, '+');
        If v_Pos > 0 Then
           :InvI_Qty := SubStr(:InvI_PLU_Code, 1, v_Pos-1);
           :InvI_PLU_Code := SubStr(:InvI_PLU_Code, v_Pos+1) ;
        ElsIf Nvl(:InvI_Qty, 0) = 0 And :Frm_Auto_Qty = 'Y' Then
           :InvI_Qty := 1;
        End If;
        
      --  :Invi_Plu_Code := Fn_Get_Plu_Code(:Invi_Plu_Code, :Frm_Search_Order, Null, Null, :Global.Company, :Global.User); 
        
       --FOR Weighing items
        If :InvI_PLU_Code LIKE :Frm_Weigh_Bcode_Prefix||'%' and :Frm_Weigh_Bcode_Prefix is Not Null Then
          v_Ref := SubStr(:InvI_PLU_Code, 3, 4);
          v_Rate := SubStr(:InvI_PLU_Code, 7, 6)/100;          
          If v_Rate > 0 Then
            Select Count(*) Into v_Count From M_Item_PLU, M_Item
            Where ItemPLU_Item_Code = Item_Code
            And Item_Ref=v_Ref
            And ItemPLU_Code LIKE :Frm_Weigh_Bcode_Prefix||'%';            
            If v_Count = 1 Then
              Select Item_Code,/*Item_Parent_Code,*/ ItemPLU_UOM_Code, UOM_Max_Loose, Item_Group
              Into :InvI_Item_Code, /*:InvI_Lnk_Item_Code,*/  :InvI_UOM_Code, :Max_Loose, :Item_Group
              From  M_UOM, M_Item , M_Item_PLU
              Where Item_Code = ItemPLU_Item_Code
              And UOM_Code = ItemPLU_UOM_Code
              And Item_Ref=v_Ref
              And ItemPLU_Code LIKE :Frm_Weigh_Bcode_Prefix||'%';
              /*If :InvI_Item_Code is Null Then
                   Show_Message('Inv_Alert', 'Item Parent code not defined for this Item!'); 
                   Raise Form_Trigger_Failure;
              End If;  */   
              Select  y.Item_Name, y.Item_Cat_Code, 
              y.Item_Status, y.Item_Serial_Status, y.Item_Type,y.Item_Def_Qty, 
              Stk_UnConf_Qty + Decode(Nvl(:Frm_Loc_En_Uncosted_Stk,'N'),'N',0,Nvl(Stk_Uncosted_Qty,0))
              Into  :Item_Name,v_Cat_Code,  v_Status, :En_Sl, :Item_Type, v_Def_Qty, :Stock_BU
              From M_Stock, M_Item Y
              Where Stk_Comp_Code (+) = :Global.Company
              And Stk_Loc_Code (+) = :InvH_Loc_Code
              And Stk_Item_Code (+) = Item_Code
              And Item_Code=:Invi_Item_Code;

                Proc_Get_Sale_Price(:Global.Company,:InvH_Divn_Code, :Invh_PlH_Code,:InvH_Alt_PlH_Code,   -----Added by faisal on 09/Nov/2014
                :InvI_Item_Code, :InvI_Uom_Code, :InvH_Cust_Code,:InvH_Curr_Code, Nvl(:Frm_Inc_Default_Price, 'Y'),
                :InvH_Dt, :InvI_Prom_Item_Id, :PromH_Id, :InvI_Rate, :InvI_Disc_Perc, :InvI_Disc_Amt, :InvI_Prom_Bu, :InvI_Prom_Foc_Bu, 
                :InvI_Prom_Qty_Limit_Bu, :InvI_Prom_Qty_Inv_Bu, :InvI_Prom_Foc_Same);
                
          
              
          
              If Nvl(:Frm_Valid_Wt,'N') = 'Y' And (Nvl(:InvI_PLU_Code, ' ') LIKE :Frm_Weigh_Bcode_Prefix||'%' And :Frm_Weigh_Bcode_Prefix IS Not Null) Then          
                Proc_Get_Wt(:InvI_PLU_Code, :InvI_Rate, :Max_Loose, :InvI_Qty, :InvI_Loose);  
                Set_Item_Property('Invi_Qty', Update_Allowed, Property_False);
                Set_Item_Property('Invi_Loose', Update_Allowed, Property_False);
              Else
                  Set_Item_Property('Invi_Qty', Update_Allowed, Property_True);
                 Set_Item_Property('Invi_Loose', Update_Allowed, Property_True);
                   :Invi_Qty :=0;
                  :Invi_Loose := 0;
              End If;
                -- :InvI_Qty := 1;  -- Blocked by faisal on 09/Nov/2014
                --:InvI_Rate := v_Rate;
            Else
              :InvI_PLU_Code := Null;
            End If;
          Elsif v_Rate =0 Then  --- #50390 IN SALES ENTRY , User - category validation error , Added the else part, Shebin,17/Sep/2019
             Select Item_Code,Item_Name,/*Item_Parent_Code,*/ ItemPLU_UOM_Code, UOM_Max_Loose, Item_Group
              Into :InvI_Item_Code,:Item_Name, /*:InvI_Lnk_Item_Code,*/  :InvI_UOM_Code, :Max_Loose, :Item_Group
              From  M_UOM, M_Item , M_Item_PLU
              Where Item_Code = ItemPLU_Item_Code
              And UOM_Code = ItemPLU_UOM_Code
              And ItemPlu_Code =:InvI_Plu_Code;
              
            Select Item_Cat_Code,Item_Status,Item_Serial_Status,
                   Item_Type,
                   Item_Def_Qty,
                   Stk_Unconf_Qty
                   + DECODE (NVL (:Frm_Loc_En_Uncosted_Stk, 'N'),'N', 0,NVL (Stk_Uncosted_Qty, 0)),
                   Item_Exp_Type
              Into V_Cat_Code,
                   V_Status,
                   :En_Sl,
                   :Item_Type,
                   V_Def_Qty,
                   :Stock_Bu,
                   :En_Batch
              From M_Stock, M_Uom, M_Item
             Where     Uom_Code = Item_Uom_Code
                   And Stk_Comp_Code(+) = :Global.Company
                   And Stk_Loc_Code(+) = :Invh_Loc_Code
                   And Stk_Item_Code(+) = Item_Code
                   And Item_Code = :Invi_Item_Code;
          End If;
        Else
        --For Non Weighing items
          :Invi_Plu_Code := Fn_Get_Plu_Code(:Invi_Plu_Code, :Frm_Search_Order, Null, Null, :Global.Company, :Global.User); 
            Select Count(*) Into v_Count From M_Item_Plu Where ItemPlu_Code =:InvI_Plu_Code;
            If v_Count > 0 Then      
              --Uom code From M_Item_Plu
              If Nvl(:Frm_Plu_Uom,'N') ='Y' Then
                Select Item_Code, Item_Name, ItemPLU_UOM_Code, UOM_Max_Loose,Item_Cat_Code, 
                /*DECODE(Nvl(Item_Status, ' '), 'Locked', 'Y', 'N')Commented on 04-04-2013*/Item_Status,
                Item_Serial_Status, Item_Type,Item_Def_Qty, Stk_UnConf_Qty + Decode(Nvl(:Frm_Loc_En_Uncosted_Stk,'N'),'N',0,Nvl(Stk_Uncosted_Qty,0)), Item_Group
                Into :InvI_Item_Code, :Item_Name, :InvI_UOM_Code, :Max_Loose,v_Cat_Code,  v_Status, :En_Sl, :Item_Type, v_Def_Qty, :Stock_BU, :Item_Group
                From M_Stock, M_UOM, M_Item, M_Item_PLU
                Where Item_Code = ItemPLU_Item_Code
                And UOM_Code = ItemPLU_UOM_Code
                And Stk_Comp_Code (+) = :Global.Company
                And Stk_Loc_Code (+) = :InvH_Loc_Code
                And Stk_Item_Code (+) = ItemPLU_Item_Code
                And ItemPLU_Code = :InvI_PLU_Code;
              Else
                --Uom code From M_Item
                Select Item_Code, Item_Name, Item_UOM_Code, UOM_Max_Loose,Item_Cat_Code, 
                /*DECODE(Nvl(Item_Status, ' '), 'Locked', 'Y', 'N')*/Item_Status, Item_Serial_Status, Item_Type,Item_Def_Qty, 
                Stk_UnConf_Qty + Decode(Nvl(:Frm_Loc_En_Uncosted_Stk,'N'),'N',0,Nvl(Stk_Uncosted_Qty,0)), Item_group
                Into :InvI_Item_Code, :Item_Name, :InvI_UOM_Code, :Max_Loose,v_Cat_Code,  v_Status, :En_Sl, :Item_Type, v_Def_Qty, :Stock_BU, :Item_Group
                From M_Stock, M_UOM, M_Item, M_Item_PLU
                Where Item_Code = ItemPLU_Item_Code
                And UOM_Code = Item_UOM_Code
                And Stk_Comp_Code (+) = :Global.Company
                And Stk_Loc_Code (+) = :InvH_Loc_Code
                And Stk_Item_Code (+) = ItemPLU_Item_Code
                And ItemPLU_Code = :InvI_PLU_Code;
              End If;
             Else
              Show_Message('Inv_Alert', 'Barcode not found!');      
              :InvI_PLU_Code := Null;
              Raise Form_Trigger_Failure;        
             End If;
            :Old_Uom_Code := :Invi_Uom_Code;     
          End If; 
       End If;
    --  End If;
    End If;  -->> Bar Code validation      
     --<< Item code validation   
     If P_Flag = 'ITEM' Then 
       If :Invi_Item_Code IS NOT NULL And :Invi_Plu_Code IS Null Then
         ---Added by Mojish 12/02/14
         If :Sl_Manual_Flag = 1 And :Invi_Item_Code <> :Old_Item_Code  Then
            Show_Message ('Inv_Alert', 'Serial Number exist, Can''t Change Item Code!');
            Validate_Sl_No;
         Else
            :Invi_Qty := 0;
            :Invi_Loose := 0;
            :Invi_Foc_Qty := 0;
            :Invi_Foc_Loose := 0;
            :Invi_Rate := 0;
            :Invi_Disc_Perc := Null;
            :Invi_Disc_Amt := Null;
         End If;
         ---------
         V_Pos := INSTR (:Invi_Item_Code, '+');
         If V_Pos > 0 Then
            :Invi_Qty := SUBSTR (:Invi_Item_Code, 1, V_Pos - 1);
            :Invi_Item_Code := SUBSTR (:Invi_Item_Code, V_Pos + 1);
         ELSIf NVL (:Invi_Qty, 0) = 0 And :Frm_Auto_Qty = 'Y'  Then
            :Invi_Qty := 1;
         End If;
          
         If Nvl(:Frm_Cost_Price_Billing,'Y') = 'Y' Then   --Added if condition only on 30/Jun/2019, Shebin -- Excise duty 
           Proc_Get_sale_Tax(:Invi_Item_Code,:Global.Company,:InvH_Divn_Code,'VAT',:Invh_Cust_Code,:Invh_Txn_Code,:Invi_Vat,:Invi_Vat_Amt,:InvI_Vat_Incl_Price,:InvI_Vat_Stax_Id,
           :Invi_Base_Rate);
           Proc_Get_sale_Tax (:Invi_Item_Code,:Global.Company,:InvH_Divn_Code,'ED',:Invh_Cust_Code,:Invh_Txn_Code,:Invi_ED,:Invi_ED_Amt,:InvI_ED_Incl_Price,:InvI_ED_Stax_Id,
           :Invi_Base_Rate);  
           :Invi_Inc_Foc_Vat := :Frm_Inc_FOC_Vat;
           :Invi_Inc_Foc_ED := :Frm_Inc_FOC_ED;

         End If; 
                
         :Invi_Item_Code :=Fn_Get_Item_Code (:Invi_Item_Code,:Frm_Search_Order,'Y',:Invh_Cust_Code,:Global.Company,:Global.USER);
         --Manually search for items until Fn_Get_Item_Code is fixed to return barcode in the next release
         V_Item_Code := :Invi_Item_Code;
         --
         ----Added By Faisal on 07/09/2014
         If :Invi_Item_Code IS NOT Null Then
            Select COUNT (*)Into V_Count
              From M_Item_Division
             Where Itemd_Comp_Code = :Global.Company
                   And Itemd_Divn_Code = :Invh_Divn_Code
                   And Itemd_Item_Code = :Invi_Item_Code;

            If V_Count = 0 Then
               Show_Message ('Inv_Alert','Item Division Combination Not Found!');
               RAISE Form_Trigger_Failure;
            End If;
         End If;
        End If;    
        If :Invi_Plu_Code IS Null Then                             --Adde by Mojish 06/04/14 for tender
            Select Item_Name,Item_Uom_Code,Uom_Max_Loose,Item_Cat_Code,Item_Status,Item_Serial_Status,Item_Type,Item_Def_Qty,
                   Stk_Unconf_Qty+ DECODE (NVL (:Frm_Loc_En_Uncosted_Stk, 'N'),'N', 0, NVL (Stk_Uncosted_Qty, 0)), 
                   Item_Exp_Type,Item_Group,Item_Mode,Item_Pos_Ref
              Into :Item_Name,:Invi_Uom_Code,:Max_Loose,V_Cat_Code,V_Status,:En_Sl,:Item_Type,V_Def_Qty,:Stock_Bu,
              :En_Batch,:Item_Group,:Item_Mode,v_Pos_Dept
              From M_Stock, M_Uom, M_Item
             Where     Uom_Code = Item_Uom_Code
                   And Stk_Comp_Code(+) = :Global.Company
                   And Stk_Loc_Code(+) = :Invh_Loc_Code
                   And Stk_Item_Code(+) = Item_Code
                   And Item_Code = :Invi_Item_Code;
         Else
            Select Item_Cat_Code,Item_Status,Item_Serial_Status,
                   Item_Type,
                   Item_Def_Qty,
                   Stk_Unconf_Qty
                   + DECODE (NVL (:Frm_Loc_En_Uncosted_Stk, 'N'),'N', 0,NVL (Stk_Uncosted_Qty, 0)),
                   Item_Exp_Type,
                   Item_Pos_Ref
              Into V_Cat_Code,
                   V_Status,
                   :En_Sl,
                   :Item_Type,
                   V_Def_Qty,
                   :Stock_Bu,
                   :En_Batch, v_Pos_Dept
              From M_Stock, M_Uom, M_Item
             Where     Uom_Code = Item_Uom_Code
                   And Stk_Comp_Code(+) = :Global.Company
                   And Stk_Loc_Code(+) = :Invh_Loc_Code
                   And Stk_Item_Code(+) = Item_Code
                   And Item_Code = :Invi_Item_Code;
         End If;   
      End If;   -->> Item Code validation          
    -- User Category Validation
 If (P_Flag = 'PLU' And :InvI_PLU_Code Is Not Null) Or (P_Flag = 'ITEM' And (:Invi_Item_Code Is Not Null And :Invi_Plu_Code Is Null)) Then 
     v_Count :=0;       
     Select COUNT (*) Into V_Count
       From M_Cat_User_Group, M_User_Group_Belong
      Where Catuser_User_Group_Code = Ugb_User_Group_Code
        And Ugb_User_Code = :Global.USER
        And Catuser_Cat_Code = V_Cat_Code;      
    
     If NVL (V_Count, 0) = 0 Then
        Show_Message ('Inv_Alert','User Category combination not defined!');
        RAISE Form_Trigger_Failure;
     End If;
     If :Invi_Item_Code IS Null Then
        Show_Message ('Inv_Alert', 'Item is not Found!');
        RAISE Form_Trigger_Failure;
     End If;
     If Nvl(:InvH_Btrn_Flag,'D') ='B' Then
       proc_validate_item_btrn(v_Pos_Dept,v_Btrn_Status);
       If Nvl(v_Btrn_Status,'Y') ='N' Then
          Show_Message ('Inv_Alert',:Invi_Item_Code ||' not enabled for inter branch transaction(POS Dept)!');
          RAISE Form_Trigger_Failure;
       End If;
     End If;
     
     If v_Status = 'Locked' Then
        Show_Message ('Inv_Alert', 'Item Locked!');
        RAISE Form_Trigger_Failure;
     End If;
     If NVL (V_Status, 'New') NOT IN ('Open', 'Re-Act') Then
        Show_Message ('Inv_ALERT', 'Item Status (' || NVL (V_Status, 'New') || ') is not Open');
     End If;
     If :Item_Type NOT IN ('SRV', 'STK','NSTK','CONS') Then --- Included NSTK on 26/08/2019 ,Ticket #50050 ,Shebin
        Show_Message ('Inv_ALERT','Item not found/not a stock or service item!');
        RAISE Form_Trigger_Failure;
     End If;  
      If :Item_Type IN ('NSTK') And Nvl(:Frm_Validate_Nstock, 'N') = 'Y' Then 
        Show_Message ('Inv_ALERT','Cannot proceed: The selected item is not a stock item.!');
        RAISE Form_Trigger_Failure;
     End If; 
     /*If :Item_Mode = 'P' Then -- Commented By John on 2308-2022 ([support #70377]) 
        Show_Message ('Inv_Alert','Purchase code, not enabled for selling!');
        RAISE Form_Trigger_Failure;
     End If;  */   
       --
    /* If NVL (:Item_Group, 'N') = 'C' Then      ---Added By Faisal On 22/03/2016
      If NVL (:FRM_En_Consumable, 'N') = 'N' Then
         Show_Message ('Inv_ALERT', 'Consumable items not enabled for this transaction!');
         Set_Item_Property(:Global.Cur_Item, Current_Record_Attribute,'Alert_VA');
         Raise Form_Trigger_Failure;
      Elsif NVL (:Item_Group, 'N') <> 'C' And NVL (:FRM_En_Consumable, 'N') = 'N'  Then
         Show_Message ('Inv_ALERT','Non Consumable items not enabled for this transaction!');
         Set_Item_Property (:Global.Cur_Item,Current_Record_Attribute, 'Alert_VA');
         Raise Form_Trigger_Failure;
      End If;
     End If;*/
     
     If Nvl (:Item_Group, 'N') = 'C'  And Nvl (:Frm_En_Consumable, 'N') = 'N' Then   
       Show_Message ('Inv_ALERT', 'Consumable items not enabled for this transaction!');
       Set_Item_Property(:Global.Cur_Item, Current_Record_Attribute,'Alert_VA');
       Raise Form_Trigger_Failure;
     Elsif Nvl (:Item_Group, 'N') <> 'C' And Nvl (:Frm_En_Consumable, 'N') = 'Y'  Then
       Show_Message ('Inv_ALERT','Non Consumable items not enabled for this transaction!');
       Set_Item_Property (:Global.Cur_Item,Current_Record_Attribute, 'Alert_VA');
       Raise Form_Trigger_Failure;
     End If;
       --
     If v_Def_Qty IS NOT Null And NVL(:Invi_Qty, 0) = 0  Then
        :Invi_Qty := V_Def_Qty;
     End If;
     If P_flag = 'ITEM' Then 
        If NVL (:Frm_Valid_Whouse, 'N') = 'Y' Then
           Select COUNT (Wstk_Item_Code) Into V_Count1
             From M_Wstock
            Where Wstk_Comp_Code = :Global.Company
              And Wstk_Item_Code = :Invi_Item_Code
              And Wstk_Qty > 0
              And (Wstk_Exp_Dt IS Null
                   OR Wstk_Exp_Dt >= TO_DATE (:Frm_Time_Zone, 'DD/MM/YYYY'));  
           If NVL (V_Count1, 0) = 1  Then
              Select Wstk_Loc_Code,Wstk_Batch,Wstk_Exp_Dt, Wstk_Qty
                Into :Invi_Loc_Fm,:Invi_Batch,:Invi_Exp_Dt,:Invi_Wstock
                From M_Wstock
               Where Wstk_Comp_Code = :Global.Company
                 And Wstk_Item_Code = :Invi_Item_Code
                 And Wstk_Qty > 0
                 And (Wstk_Exp_Dt IS Null
                      OR Wstk_Exp_Dt >= TO_DATE (:Frm_Time_Zone, 'DD/MM/YYYY'));
           End If;
          End If;
      End If;  
      Select Count (*) Into V_Count
      From M_Stock_Division
      Where Stkd_Comp_Code = :Global.Company 
      And Stkd_Divn_Code= :Invh_Divn_Code
      And Stkd_Item_Code = :Invi_Item_Code;       
      If V_Count = 0 Then
        Show_Message ('Inv_Alert','Division not enabled for this Item!');
        Raise Form_Trigger_Failure;
      Else
        Select Stkd_Unconf_Qty,Stkd_Validate_stk Into :Div_Stock_Bu,:Validate_Stk 
        From M_Stock_Division
        Where Stkd_Comp_Code = :Global.Company 
        And Stkd_Divn_Code= :InvH_Divn_Code
        And Stkd_Item_code = :InvI_Item_Code;
      End If;   
  
      If NVL(:Frm_Cost_Price_Billing, 'N') = 'Y' 
         And (NVL (:Invi_Plu_Code, ' ') NOT LIKE :Frm_Weigh_Bcode_Prefix || '%' 
        And :Frm_Weigh_Bcode_Prefix IS NOT Null) 
        And (NVL (:Invi_Item_Code, ' ') NOT LIKE :Frm_Weigh_Item_Prefix || '%' 
        And :Frm_Weigh_Item_Prefix IS NOT Null) Then
        Get_Prate;
        :Rate_Flag :='Y';
      --added shibu on 16/10/25  
      Elsif  NVL(:Frm_Cost_Price_Billing, 'N') = 'Y' 
         And (NVL (:Invi_Plu_Code, ' ') NOT LIKE :Frm_Weigh_Bcode_Prefix || '%' 
        And :Frm_Weigh_Bcode_Prefix IS NOT Null) 
        And (NVL (:Invi_Item_Code, ' ') LIKE :Frm_Weigh_Item_Prefix || '%' 
        And :Frm_Weigh_Item_Prefix IS NOT Null) Then
        Get_Prate;
        :Rate_Flag :='Y';  
      Elsif (NVL (:Invi_Plu_Code, ' ') LIKE :Frm_Weigh_Bcode_Prefix || '%' 
        And :Frm_Weigh_Bcode_Prefix IS NOT Null) Then
        If P_flag = 'ITEM' Then 
          V_Ref  := SUBSTR (:Invi_Plu_Code, 3, 4);
          V_Rate := SUBSTR (:Invi_Plu_Code, 7, 6) / 100;
        End If;
        -----For Weighing Item consider Selling Rate added on 08/07/2017
    
        If NVL(:Frm_Cost_Price_Billing, 'N') = 'Y' 
          and Nvl(:InvH_Btrn_Flag,'D') ='B' 
          and NVL (:Invi_Item_Code, ' ')  LIKE :Frm_Weigh_Item_Prefix || '%' 
          and :Frm_Weigh_Item_Prefix IS NOT Null  Then
          Get_PRate;
          :Rate_Flag :='Y';
         -- Show_Message ('Inv_Alert','Rate:'||:Invi_Rate);
        End If;    
       
    
        If NVL (:Frm_Cost_Price_Billing, 'N') = 'Y' 
          And  (Nvl(:Invi_Item_Code, ' ') LIKE :Frm_Weigh_Item_Prefix || '%' 
          And :Frm_Weigh_Item_Prefix IS NOT Null) and Nvl(:Invi_Rate,0) = 0  Then
                         Proc_Get_Sale_Price (:Global.Company,
                            :Invh_Divn_Code,
                            :Invh_PlH_Code,:InvH_Alt_PlH_Code,
                            :Invi_Item_Code,
                            :Invi_Uom_Code,
                            :Invh_Cust_Code,
                            :Invh_Curr_Code,
                            Nvl (:Frm_Inc_Default_Price, 'Y'),
                            :Invh_Dt,
                            :Invi_Prom_Item_Id,
                            :Promh_Id,
                            :Invi_Rate,
                            :Invi_Disc_Perc,
                            :Invi_Disc_Amt,
                            :Invi_Prom_Bu,
                            :Invi_Prom_Foc_Bu,
                            :Invi_Prom_Qty_Limit_Bu,
                            :Invi_Prom_Qty_Inv_Bu,
                            :Invi_Prom_Foc_Same);   
        End If;
        --
        If NVL (:Frm_Valid_Wt, 'N') = 'Y' And (NVL (:Invi_Plu_Code, ' ') LIKE :Frm_Weigh_Bcode_Prefix || '%' And :Frm_Weigh_Bcode_Prefix IS NOT Null) Then   --Added By Faisal on 09/Nov/2014                
               Proc_Get_Wt (:Invi_Plu_Code,:Invi_Rate,:Max_Loose,:Invi_Qty,:Invi_Loose); --Qty And loose From Plu added by Mojish on 10/11/14
               Set_Item_Property('Invi_Qty', Update_Allowed, Property_False);
               Set_Item_Property('Invi_Loose', Update_Allowed, Property_False);
        Else                                                                  ---Else part is copied From Bar code validation, 
              Set_Item_Property('Invi_Qty', Update_Allowed, Property_True);
              Set_Item_Property('Invi_Loose', Update_Allowed, Property_True);
              :Invi_Qty :=0;
              :Invi_Loose := 0;
        End If; 
       Else              
         Select_Promotion; --Added by Mojish 10/06/14 For Selecting promotion

         If NVL(:Frm_Cost_Price_Billing, 'N') = 'Y' 
          and Nvl(:InvH_Btrn_Flag,'D') ='B' 
          and NVL (:Invi_Item_Code, ' ')  LIKE :Frm_Weigh_Item_Prefix || '%' 
          and :Frm_Weigh_Item_Prefix IS NOT Null  Then
          Get_PRate;
          :Rate_Flag :='Y';
          --Show_Message ('Inv_Alert','Rate:'||:Invi_Rate);
        End If;    
       
    
        If NVL (:Frm_Cost_Price_Billing, 'N') = 'Y' 
          And  (Nvl(:Invi_Item_Code, ' ') LIKE :Frm_Weigh_Item_Prefix || '%' 
          And :Frm_Weigh_Item_Prefix IS NOT Null) and Nvl(:Invi_Rate,0) = 0  Then
                         Proc_Get_Sale_Price (:Global.Company,
                            :Invh_Divn_Code,
                            :Invh_PlH_Code,:InvH_Alt_PlH_Code,
                            :Invi_Item_Code,
                            :Invi_Uom_Code,
                            :Invh_Cust_Code,
                            :Invh_Curr_Code,
                            Nvl (:Frm_Inc_Default_Price, 'Y'),
                            :Invh_Dt,
                            :Invi_Prom_Item_Id,
                            :Promh_Id,
                            :Invi_Rate,
                            :Invi_Disc_Perc,
                            :Invi_Disc_Amt,
                            :Invi_Prom_Bu,
                            :Invi_Prom_Foc_Bu,
                            :Invi_Prom_Qty_Limit_Bu,
                            :Invi_Prom_Qty_Inv_Bu,
                            :Invi_Prom_Foc_Same);   
        ElsIf NVL (:Frm_Cost_Price_Billing, 'N') <> 'Y'  Then 
          Proc_Get_Sale_Price (:Global.Company,
                            :Invh_Divn_Code,
                            :Invh_PlH_Code,:InvH_Alt_PlH_Code,
                            :Invi_Item_Code,
                            :Invi_Uom_Code,
                            :Invh_Cust_Code,
                            :Invh_Curr_Code,
                            Nvl (:Frm_Inc_Default_Price, 'Y'),
                            :Invh_Dt,
                            :Invi_Prom_Item_Id,
                            :Promh_Id,
                            :Invi_Rate,
                            :Invi_Disc_Perc,
                            :Invi_Disc_Amt,
                            :Invi_Prom_Bu,
                            :Invi_Prom_Foc_Bu,
                            :Invi_Prom_Qty_Limit_Bu,
                            :Invi_Prom_Qty_Inv_Bu,
                            :Invi_Prom_Foc_Same);
        End If;                       
                            
         --Show_Message ('Inv_Alert','Rate1:'||:Invi_Rate);                       
        :Old_Uom_Code := :Invi_Uom_Code;
        Get_Promotion_Foc ('VALIDATE');         --Added By Mojish 16/04/14        
        If  Nvl(:Frm_En_Add_Disc,'N') ='Y' Then
          Proc_Get_CustItem_Disc(:Global.Company,:InvI_Item_Code,:InvH_Cust_Code,:Inv_Additional_Disc);
        End If;
        If :Inv_Additional_Disc > 0 Then
          :Invi_Disc_Amt := Round((:InvI_Rate * :Inv_Additional_Disc/100),Nvl(:Frm_Decimal,2));
        End If;
      End If;
   
      If NVL (:Frm_Cost_Price_Billing, 'N') = 'Y' And Nvl(:Invi_Rate, 0) = 0 and    Nvl(:InvH_Btrn_Flag,'D') ='B'
         And NVL (:Invi_Item_Code, ' ') Not LIKE :Frm_Weigh_Item_Prefix || '%' 
        and :Frm_Weigh_Item_Prefix IS NOT Null  Then
         Get_PRate;
         :Rate_Flag :='Y';
      End If;
      If NVL (:Frm_Cost_Price_Billing, 'N') = 'Y' And Nvl(:Invi_Rate, 0) = 0 Then
         Get_Supp_Rate;
      End If;
   
      Validate_SO;  
   
   
                               --Added By Mojish 21/04/16         
         --:Invi_Wac_Pcs := Fn_Get_Cost (:Invi_Item_Code, :Global.Company,:Invh_Divn_Code,:Invh_Dt,'WAC', Nvl(:Div_Stock_Bu,1));  Disabled On 23/11/2017 hAndled in trigger
         -- :Invi_FIfo_Pcs := Fn_Get_Cost (:Invi_Item_Code, :Global.Company,:Invh_Divn_Code,:Invh_Dt,'FIfO', Nvl(:Div_Stock_Bu,1)); Disabled On 23/11/2017 hAndled in trigger         
      Enable_Sl_Batch (:En_Sl, NVL (:En_Batch, 'N'), :Fix_Srate);
      :Gr_Batch_En :=Fn_Get_Item_Txn_Batch_Status(:Global.Company, :InvI_Item_Code);
      En_gr_batch(:Gr_Batch_En);
  
      Get_Stock ('STOCK_BU', 'STOCK_DTL',:Global.Company, :Invh_Loc_Code,:Invi_Item_Code,:Max_Loose,:Global.Stk_Chk_Type); --- not found in item code validation --- Shebin
      Enable_Pcs;
      Tender_Validate_Item_Level;   -- Added by mojish 05/04/14
      Proc_show_margin;      
      --<< Task-Invoice Configuration, Added by Shebin, 11/Jun/2019
      v_Cat_Loc := Fn_Get_Stk_Txn_CatLoc(:Invh_Txn_Code,v_Cat_Code,:Global.Company,:Invh_Loc_Code);
      If Nvl(v_Cat_Loc,0) <> -1 And Nvl(v_Cat_Loc,0) = 0 Then
         If :Parameter.P_copy_msg_repeat = 0 then 
           Show_Message ('Inv_Alert',' Transaction category is not configured for this location! Please contact administrator.');
           Raise Form_Trigger_Failure;
         End If; 
         If :Parameter.P_copy = 1 Then 
            :Parameter.P_copy_msg_repeat := 1;
         End If;   
        Raise Form_Trigger_Failure;
      End If; -->>
      :Old_Uom_Code := :Invi_Uom_Code;      
    End If;  
  End If;            
End;
What you getClause Rule Language
on unit PROC_VALID_PLU_ITEM(P_FLAG):    from UOM_3(INVI_PLU_CODE)
        # load-fmb-invoice-proc-valid-plu-item-unit-3    from STOCK_4(FRM_LOC_EN_UNCOSTED_STK, INVH_LOC_CODE, INVI_ITEM_CODE)
        # load-fmb-invoice-proc-valid-plu-item-unit-4    from ITEM_PLU_5(INVI_PLU_CODE)
        # load-fmb-invoice-proc-valid-plu-item-unit-5    from STOCK_6(FRM_LOC_EN_UNCOSTED_STK, INVH_LOC_CODE, INVI_PLU_CODE)
        # load-fmb-invoice-proc-valid-plu-item-unit-6    from STOCK_7(FRM_LOC_EN_UNCOSTED_STK, INVH_LOC_CODE, INVI_PLU_CODE)
        # load-fmb-invoice-proc-valid-plu-item-unit-7    from ITEM_DIVISION(INVH_DIVN_CODE, INVI_ITEM_CODE)
        # load-fmb-invoice-proc-valid-plu-item-unit-8    from STOCK_9(FRM_LOC_EN_UNCOSTED_STK, INVH_LOC_CODE, INVI_ITEM_CODE)
        # load-fmb-invoice-proc-valid-plu-item-unit-9    from WSTOCK_COUNT(FRM_TIME_ZONE, INVI_ITEM_CODE)
        # load-fmb-invoice-proc-valid-plu-item-unit-11    from WSTOCK(FRM_TIME_ZONE, INVI_ITEM_CODE)
        # load-fmb-invoice-proc-valid-plu-item-unit-12    from STOCK_DIVISION_COUNT(INVH_DIVN_CODE, INVI_ITEM_CODE)
        # load-fmb-invoice-proc-valid-plu-item-unit-13    from STOCK_DIVISION(INVH_DIVN_CODE, INVI_ITEM_CODE)
        # load-fmb-invoice-proc-valid-plu-item-unit-14    set INVI_ITEM_CODE to OLD_ITEM_CODE when (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')    set INVI_UOM_CODE to OLD_UOM_CODE when (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')    deny when ((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'PLU')) and is_filled(INVI_PLU_CODE)) and (SL_MANUAL_FLAG = 1) else "Serial Number exist, Can't Change Barcode!"    set INVI_QTY to substr(INVI_PLU_CODE, 1, instr(INVI_PLU_CODE, '+') - 1) when ((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'PLU')) and is_filled(INVI_PLU_CODE)) and (instr(INVI_PLU_CODE, '+') > 0)    set INVI_PLU_CODE to substr(INVI_PLU_CODE, instr(INVI_PLU_CODE, '+') + 1) when ((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'PLU')) and is_filled(INVI_PLU_CODE)) and (instr(INVI_PLU_CODE, '+') > 0)    set INVI_QTY to 1 when (((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'PLU')) and is_filled(INVI_PLU_CODE)) and not (instr(INVI_PLU_CODE, '+') > 0)) and ((nvl(INVI_QTY, 0) = 0) and (FRM_AUTO_QTY = 'Y'))    fetch UOM_3 when ((((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'PLU')) and is_filled(INVI_PLU_CODE)) and ((INVI_PLU_CODE like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and not ((substr(INVI_PLU_CODE, 7, 6) / 100) > 0)) and ((substr(INVI_PLU_CODE, 7, 6) / 100) = 0)    set INVI_ITEM_CODE to UOM_3.ITEM_CODE when ((((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'PLU')) and is_filled(INVI_PLU_CODE)) and ((INVI_PLU_CODE like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and not ((substr(INVI_PLU_CODE, 7, 6) / 100) > 0)) and ((substr(INVI_PLU_CODE, 7, 6) / 100) = 0)    set ITEM_NAME to UOM_3.ITEM_NAME when ((((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'PLU')) and is_filled(INVI_PLU_CODE)) and ((INVI_PLU_CODE like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and not ((substr(INVI_PLU_CODE, 7, 6) / 100) > 0)) and ((substr(INVI_PLU_CODE, 7, 6) / 100) = 0)    set INVI_UOM_CODE to UOM_3.ITEMPLU_UOM_CODE when ((((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'PLU')) and is_filled(INVI_PLU_CODE)) and ((INVI_PLU_CODE like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and not ((substr(INVI_PLU_CODE, 7, 6) / 100) > 0)) and ((substr(INVI_PLU_CODE, 7, 6) / 100) = 0)    set MAX_LOOSE to UOM_3.UOM_MAX_LOOSE when ((((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'PLU')) and is_filled(INVI_PLU_CODE)) and ((INVI_PLU_CODE like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and not ((substr(INVI_PLU_CODE, 7, 6) / 100) > 0)) and ((substr(INVI_PLU_CODE, 7, 6) / 100) = 0)    set ITEM_GROUP to UOM_3.ITEM_GROUP when ((((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'PLU')) and is_filled(INVI_PLU_CODE)) and ((INVI_PLU_CODE like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and not ((substr(INVI_PLU_CODE, 7, 6) / 100) > 0)) and ((substr(INVI_PLU_CODE, 7, 6) / 100) = 0)    fetch STOCK_4 when ((((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'PLU')) and is_filled(INVI_PLU_CODE)) and ((INVI_PLU_CODE like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and not ((substr(INVI_PLU_CODE, 7, 6) / 100) > 0)) and ((substr(INVI_PLU_CODE, 7, 6) / 100) = 0)    set EN_SL to STOCK_4.ITEM_SERIAL_STATUS when ((((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'PLU')) and is_filled(INVI_PLU_CODE)) and ((INVI_PLU_CODE like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and not ((substr(INVI_PLU_CODE, 7, 6) / 100) > 0)) and ((substr(INVI_PLU_CODE, 7, 6) / 100) = 0)    set ITEM_TYPE to STOCK_4.ITEM_TYPE when ((((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'PLU')) and is_filled(INVI_PLU_CODE)) and ((INVI_PLU_CODE like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and not ((substr(INVI_PLU_CODE, 7, 6) / 100) > 0)) and ((substr(INVI_PLU_CODE, 7, 6) / 100) = 0)    set STOCK_BU to STOCK_4.STOCK_BU when ((((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'PLU')) and is_filled(INVI_PLU_CODE)) and ((INVI_PLU_CODE like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and not ((substr(INVI_PLU_CODE, 7, 6) / 100) > 0)) and ((substr(INVI_PLU_CODE, 7, 6) / 100) = 0)    set EN_BATCH to STOCK_4.ITEM_EXP_TYPE when ((((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'PLU')) and is_filled(INVI_PLU_CODE)) and ((INVI_PLU_CODE like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and not ((substr(INVI_PLU_CODE, 7, 6) / 100) > 0)) and ((substr(INVI_PLU_CODE, 7, 6) / 100) = 0)    when ((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'PLU')) and is_filled(INVI_PLU_CODE)) and not ((INVI_PLU_CODE like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))    warn "Serial Number exist, Can't Change Item Code!" when ((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))) and ((SL_MANUAL_FLAG = 1) and (STOCK_7.ITEM_CODE <> OLD_ITEM_CODE))    call VALIDATE_SL_NO() when ((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))) and ((SL_MANUAL_FLAG = 1) and (STOCK_7.ITEM_CODE <> OLD_ITEM_CODE))    set INVI_QTY to 0 when ((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))) and not ((SL_MANUAL_FLAG = 1) and (STOCK_7.ITEM_CODE <> OLD_ITEM_CODE))    set INVI_LOOSE to 0 when ((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))) and not ((SL_MANUAL_FLAG = 1) and (STOCK_7.ITEM_CODE <> OLD_ITEM_CODE))    set INVI_FOC_QTY to 0 when ((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))) and not ((SL_MANUAL_FLAG = 1) and (STOCK_7.ITEM_CODE <> OLD_ITEM_CODE))    set INVI_FOC_LOOSE to 0 when ((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))) and not ((SL_MANUAL_FLAG = 1) and (STOCK_7.ITEM_CODE <> OLD_ITEM_CODE))    set INVI_RATE to 0 when ((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))) and not ((SL_MANUAL_FLAG = 1) and (STOCK_7.ITEM_CODE <> OLD_ITEM_CODE))    set INVI_DISC_PERC to null when ((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))) and not ((SL_MANUAL_FLAG = 1) and (STOCK_7.ITEM_CODE <> OLD_ITEM_CODE))    set INVI_DISC_AMT to null when ((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))) and not ((SL_MANUAL_FLAG = 1) and (STOCK_7.ITEM_CODE <> OLD_ITEM_CODE))    set INVI_QTY to substr(STOCK_7.ITEM_CODE, 1, instr(STOCK_7.ITEM_CODE, '+') - 1) when ((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))) and (instr(STOCK_7.ITEM_CODE, '+') > 0)    set INVI_ITEM_CODE to substr(STOCK_7.ITEM_CODE, instr(STOCK_7.ITEM_CODE, '+') + 1) when ((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))) and (instr(STOCK_7.ITEM_CODE, '+') > 0)    set INVI_QTY to 1 when (((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))) and not (instr(STOCK_7.ITEM_CODE, '+') > 0)) and ((nvl(INVI_QTY, 0) = 0) and (FRM_AUTO_QTY = 'Y'))    call PROC_GET_SALE_TAX(STOCK_7.ITEM_CODE, GLOBAL.COMPANY, INVH_DIVN_CODE, 'VAT', INVH_CUST_CODE, INVH_TXN_CODE, INVI_VAT, INVI_VAT_AMT, INVI_VAT_INCL_PRICE, INVI_VAT_STAX_ID, INVI_BASE_RATE) when ((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))) and (nvl(FRM_COST_PRICE_BILLING, 'Y') = 'Y')    call PROC_GET_SALE_TAX(STOCK_7.ITEM_CODE, GLOBAL.COMPANY, INVH_DIVN_CODE, 'ED', INVH_CUST_CODE, INVH_TXN_CODE, INVI_ED, INVI_ED_AMT, INVI_ED_INCL_PRICE, INVI_ED_STAX_ID, INVI_BASE_RATE) when ((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))) and (nvl(FRM_COST_PRICE_BILLING, 'Y') = 'Y')    set INVI_INC_FOC_VAT to FRM_INC_FOC_VAT when ((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))) and (nvl(FRM_COST_PRICE_BILLING, 'Y') = 'Y')    set INVI_INC_FOC_ED to FRM_INC_FOC_ED when ((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))) and (nvl(FRM_COST_PRICE_BILLING, 'Y') = 'Y')    set INVI_ITEM_CODE to FN_GET_ITEM_CODE(STOCK_7.ITEM_CODE, FRM_SEARCH_ORDER, 'Y', INVH_CUST_CODE, GLOBAL.COMPANY, GLOBAL.USER) when (not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))    fetch ITEM_DIVISION when ((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))) and is_filled(STOCK_7.ITEM_CODE)    exists of ITEM_DIVISION else "Item Division Combination Not Found!" when ((not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))) and is_filled(STOCK_7.ITEM_CODE)    fetch STOCK_9 when (not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and is_blank(INVI_PLU_CODE)    set ITEM_NAME to STOCK_9.ITEM_NAME when (not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and is_blank(INVI_PLU_CODE)    set INVI_UOM_CODE to STOCK_9.ITEM_UOM_CODE when (not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and is_blank(INVI_PLU_CODE)    set MAX_LOOSE to STOCK_9.UOM_MAX_LOOSE when (not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and is_blank(INVI_PLU_CODE)    set EN_SL to STOCK_9.ITEM_SERIAL_STATUS when (not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and is_blank(INVI_PLU_CODE)    set ITEM_TYPE to STOCK_9.ITEM_TYPE when (not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and is_blank(INVI_PLU_CODE)    set STOCK_BU to STOCK_9.STOCK_BU when (not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and is_blank(INVI_PLU_CODE)    set EN_BATCH to STOCK_9.ITEM_EXP_TYPE when (not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and is_blank(INVI_PLU_CODE)    set ITEM_GROUP to STOCK_9.ITEM_GROUP when (not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and is_blank(INVI_PLU_CODE)    set ITEM_MODE to STOCK_9.ITEM_MODE when (not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and is_blank(INVI_PLU_CODE)    set EN_SL to STOCK_4.ITEM_SERIAL_STATUS when (not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and not is_blank(INVI_PLU_CODE)    set ITEM_TYPE to STOCK_4.ITEM_TYPE when (not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and not is_blank(INVI_PLU_CODE)    set STOCK_BU to STOCK_4.STOCK_BU when (not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and not is_blank(INVI_PLU_CODE)    set EN_BATCH to STOCK_4.ITEM_EXP_TYPE when (not (REF_DOC_ITEM = 'Loaded') and (ARG.P_FLAG = 'ITEM')) and not is_blank(INVI_PLU_CODE)    deny when (not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and is_blank(STOCK_7.ITEM_CODE) else "Item is not Found!"    call PROC_VALIDATE_ITEM_BTRN(STOCK_4.ITEM_POS_REF, null) when (not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and (INVH_BTRN_FLAG = 'B')    deny when ((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and (INVH_BTRN_FLAG = 'B')) and (OUT.PROC_VALIDATE_ITEM_BTRN.2 = 'N') else STOCK_7.ITEM_CODE || ' not enabled for inter branch transaction(POS Dept)!'    deny when (not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and (STOCK_4.ITEM_STATUS = 'Locked') else "Item Locked!"    warn ('Item Status (' || nvl(STOCK_4.ITEM_STATUS, 'New')) || ') is not Open' when (not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and ((nvl(STOCK_4.ITEM_STATUS, 'New') <> 'Open') and (nvl(STOCK_4.ITEM_STATUS, 'New') <> 'Re-Act'))    deny when (not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and ((((STOCK_4.ITEM_TYPE <> 'SRV') and (STOCK_4.ITEM_TYPE <> 'STK')) and (STOCK_4.ITEM_TYPE <> 'NSTK')) and (STOCK_4.ITEM_TYPE <> 'CONS')) else "Item not found/not a stock or service item!"    deny when (not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and ((STOCK_4.ITEM_TYPE = 'NSTK') and (FRM_VALIDATE_NSTOCK = 'Y')) else "Cannot proceed: The selected item is not a stock item.!"    warn "Consumable items not enabled for this transaction!" when (not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and ((STOCK_9.ITEM_GROUP = 'C') and (nvl(FRM_EN_CONSUMABLE, 'N') = 'N'))    deny when (not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and ((STOCK_9.ITEM_GROUP = 'C') and (nvl(FRM_EN_CONSUMABLE, 'N') = 'N')) silent    warn "Non Consumable items not enabled for this transaction!" when ((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and not ((STOCK_9.ITEM_GROUP = 'C') and (nvl(FRM_EN_CONSUMABLE, 'N') = 'N'))) and ((nvl(STOCK_9.ITEM_GROUP, 'N') <> 'C') and (FRM_EN_CONSUMABLE = 'Y'))    deny when ((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and not ((STOCK_9.ITEM_GROUP = 'C') and (nvl(FRM_EN_CONSUMABLE, 'N') = 'N'))) and ((nvl(STOCK_9.ITEM_GROUP, 'N') <> 'C') and (FRM_EN_CONSUMABLE = 'Y')) silent    set INVI_QTY to STOCK_4.ITEM_DEF_QTY when (not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and (is_filled(STOCK_4.ITEM_DEF_QTY) and (nvl(INVI_QTY, 0) = 0))    fetch WSTOCK_COUNT when ((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and (ARG.P_FLAG = 'ITEM')) and (FRM_VALID_WHOUSE = 'Y')    fetch WSTOCK when (((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and (ARG.P_FLAG = 'ITEM')) and (FRM_VALID_WHOUSE = 'Y')) and (WSTOCK_COUNT.COUNT = 1)    set INVI_LOC_FM to WSTOCK.WSTK_LOC_CODE when (((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and (ARG.P_FLAG = 'ITEM')) and (FRM_VALID_WHOUSE = 'Y')) and (WSTOCK_COUNT.COUNT = 1)    set INVI_BATCH to WSTOCK.WSTK_BATCH when (((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and (ARG.P_FLAG = 'ITEM')) and (FRM_VALID_WHOUSE = 'Y')) and (WSTOCK_COUNT.COUNT = 1)    set INVI_EXP_DT to WSTOCK.WSTK_EXP_DT when (((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and (ARG.P_FLAG = 'ITEM')) and (FRM_VALID_WHOUSE = 'Y')) and (WSTOCK_COUNT.COUNT = 1)    set INVI_WSTOCK to WSTOCK.WSTK_QTY when (((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and (ARG.P_FLAG = 'ITEM')) and (FRM_VALID_WHOUSE = 'Y')) and (WSTOCK_COUNT.COUNT = 1)    fetch STOCK_DIVISION_COUNT when not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))    deny when (not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and (STOCK_DIVISION_COUNT.COUNT = 0) else "Division not enabled for this Item!"    fetch STOCK_DIVISION when (not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and not (STOCK_DIVISION_COUNT.COUNT = 0)    set DIV_STOCK_BU to STOCK_DIVISION.STKD_UNCONF_QTY when (not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and not (STOCK_DIVISION_COUNT.COUNT = 0)    set VALIDATE_STK to STOCK_DIVISION.STKD_VALIDATE_STK when (not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and not (STOCK_DIVISION_COUNT.COUNT = 0)    call GET_PRATE() when (not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))    set RATE_FLAG to 'Y' when (not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))    call GET_PRATE() when ((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))    set RATE_FLAG to 'Y' when ((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))    call GET_PRATE() when ((((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((((FRM_COST_PRICE_BILLING = 'Y') and (INVH_BTRN_FLAG = 'B')) and (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%'))) and is_filled(FRM_WEIGH_ITEM_PREFIX))    set RATE_FLAG to 'Y' when ((((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((((FRM_COST_PRICE_BILLING = 'Y') and (INVH_BTRN_FLAG = 'B')) and (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%'))) and is_filled(FRM_WEIGH_ITEM_PREFIX))    call PROC_GET_SALE_PRICE(GLOBAL.COMPANY, INVH_DIVN_CODE, INVH_PLH_CODE, INVH_ALT_PLH_CODE, STOCK_7.ITEM_CODE, STOCK_9.ITEM_UOM_CODE, INVH_CUST_CODE, INVH_CURR_CODE, nvl(FRM_INC_DEFAULT_PRICE, 'Y'), INVH_DT, INVI_PROM_ITEM_ID, PROMH_ID, INVI_RATE, INVI_DISC_PERC, INVI_DISC_AMT, INVI_PROM_BU, INVI_PROM_FOC_BU, INVI_PROM_QTY_LIMIT_BU, INVI_PROM_QTY_INV_BU, INVI_PROM_FOC_SAME) when ((((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (((FRM_COST_PRICE_BILLING = 'Y') and ((nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX))) and (nvl(INVI_RATE, 0) = 0))    call PROC_GET_WT(INVI_PLU_CODE, INVI_RATE, STOCK_9.UOM_MAX_LOOSE, INVI_QTY, INVI_LOOSE) when ((((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((FRM_VALID_WT = 'Y') and ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX)))    state lock INVI_LOOSE, INVI_QTY on update when ((((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((FRM_VALID_WT = 'Y') and ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX)))    state unlock INVI_LOOSE, INVI_QTY on update when ((((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and not ((FRM_VALID_WT = 'Y') and ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX)))    set INVI_QTY to 0 when ((((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and not ((FRM_VALID_WT = 'Y') and ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX)))    set INVI_LOOSE to 0 when ((((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and not ((FRM_VALID_WT = 'Y') and ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX)))    call SELECT_PROMOTION() when (((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))    call GET_PRATE() when ((((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((((FRM_COST_PRICE_BILLING = 'Y') and (INVH_BTRN_FLAG = 'B')) and (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%'))) and is_filled(FRM_WEIGH_ITEM_PREFIX))    set RATE_FLAG to 'Y' when ((((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((((FRM_COST_PRICE_BILLING = 'Y') and (INVH_BTRN_FLAG = 'B')) and (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%'))) and is_filled(FRM_WEIGH_ITEM_PREFIX))    call PROC_GET_SALE_PRICE(GLOBAL.COMPANY, INVH_DIVN_CODE, INVH_PLH_CODE, INVH_ALT_PLH_CODE, STOCK_7.ITEM_CODE, STOCK_9.ITEM_UOM_CODE, INVH_CUST_CODE, INVH_CURR_CODE, nvl(FRM_INC_DEFAULT_PRICE, 'Y'), INVH_DT, INVI_PROM_ITEM_ID, PROMH_ID, INVI_RATE, INVI_DISC_PERC, INVI_DISC_AMT, INVI_PROM_BU, INVI_PROM_FOC_BU, INVI_PROM_QTY_LIMIT_BU, INVI_PROM_QTY_INV_BU, INVI_PROM_FOC_SAME) when ((((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (((FRM_COST_PRICE_BILLING = 'Y') and ((nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX))) and (nvl(INVI_RATE, 0) = 0))    call PROC_GET_SALE_PRICE(GLOBAL.COMPANY, INVH_DIVN_CODE, INVH_PLH_CODE, INVH_ALT_PLH_CODE, STOCK_7.ITEM_CODE, STOCK_9.ITEM_UOM_CODE, INVH_CUST_CODE, INVH_CURR_CODE, nvl(FRM_INC_DEFAULT_PRICE, 'Y'), INVH_DT, INVI_PROM_ITEM_ID, PROMH_ID, INVI_RATE, INVI_DISC_PERC, INVI_DISC_AMT, INVI_PROM_BU, INVI_PROM_FOC_BU, INVI_PROM_QTY_LIMIT_BU, INVI_PROM_QTY_INV_BU, INVI_PROM_FOC_SAME) when (((((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and not (((FRM_COST_PRICE_BILLING = 'Y') and ((nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX))) and (nvl(INVI_RATE, 0) = 0))) and (nvl(FRM_COST_PRICE_BILLING, 'N') <> 'Y')    set OLD_UOM_CODE to STOCK_9.ITEM_UOM_CODE when (((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))    call GET_PROMOTION_FOC('VALIDATE') when (((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))    call PROC_GET_CUSTITEM_DISC(GLOBAL.COMPANY, STOCK_7.ITEM_CODE, INVH_CUST_CODE, INV_ADDITIONAL_DISC) when ((((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (FRM_EN_ADD_DISC = 'Y')    set INVI_DISC_AMT to round((INVI_RATE * INV_ADDITIONAL_DISC) / 100, nvl(FRM_DECIMAL, 2)) when ((((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (not (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not (((FRM_COST_PRICE_BILLING = 'Y') and (not (nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and ((nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%')) and is_filled(FRM_WEIGH_ITEM_PREFIX)))) and not ((nvl(INVI_PLU_CODE, ' ') like (FRM_WEIGH_BCODE_PREFIX || '%')) and is_filled(FRM_WEIGH_BCODE_PREFIX))) and (INV_ADDITIONAL_DISC > 0)    call GET_PRATE() when (not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and (((((FRM_COST_PRICE_BILLING = 'Y') and (nvl(INVI_RATE, 0) = 0)) and (INVH_BTRN_FLAG = 'B')) and not (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%'))) and is_filled(FRM_WEIGH_ITEM_PREFIX))    set RATE_FLAG to 'Y' when (not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and (((((FRM_COST_PRICE_BILLING = 'Y') and (nvl(INVI_RATE, 0) = 0)) and (INVH_BTRN_FLAG = 'B')) and not (nvl(STOCK_7.ITEM_CODE, ' ') like (FRM_WEIGH_ITEM_PREFIX || '%'))) and is_filled(FRM_WEIGH_ITEM_PREFIX))    call GET_SUPP_RATE() when (not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and ((FRM_COST_PRICE_BILLING = 'Y') and (nvl(INVI_RATE, 0) = 0))    call VALIDATE_SO() when not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))    call ENABLE_SL_BATCH(STOCK_4.ITEM_SERIAL_STATUS, nvl(STOCK_4.ITEM_EXP_TYPE, 'N'), FIX_SRATE) when not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))    set GR_BATCH_EN to FN_GET_ITEM_TXN_BATCH_STATUS(GLOBAL.COMPANY, STOCK_7.ITEM_CODE) when not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))    call EN_GR_BATCH(GR_BATCH_EN) when not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))    call GET_STOCK('T_INV_ITEM.STOCK_BU', 'T_INV_ITEM.STOCK_DTL', GLOBAL.COMPANY, INVH_LOC_CODE, STOCK_7.ITEM_CODE, STOCK_9.UOM_MAX_LOOSE, GLOBAL.STK_CHK_TYPE) when not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))    call ENABLE_PCS() when not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))    call TENDER_VALIDATE_ITEM_LEVEL() when not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))    call PROC_SHOW_MARGIN() when not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))    deny when ((not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))) and ((nvl(FN_GET_STK_TXN_CATLOC(INVH_TXN_CODE, STOCK_4.ITEM_CAT_CODE, GLOBAL.COMPANY, INVH_LOC_CODE), 0) <> -1) and (nvl(FN_GET_STK_TXN_CATLOC(INVH_TXN_CODE, STOCK_4.ITEM_CAT_CODE, GLOBAL.COMPANY, INVH_LOC_CODE), 0) = 0))) and (PARAMETER.P_COPY_MSG_REPEAT = 0) else " Transaction category is not configured for this location! Please contact administrator."    set OLD_UOM_CODE to STOCK_9.ITEM_UOM_CODE when not (REF_DOC_ITEM = 'Loaded') and (((ARG.P_FLAG = 'PLU') and is_filled(INVI_PLU_CODE)) or ((ARG.P_FLAG = 'ITEM') and (is_filled(STOCK_7.ITEM_CODE) and is_blank(INVI_PLU_CODE))))
# 7 statements did not convert.#   line 330
#   Set_Item_Property(:Global.Cur_Item, Current_Record_Attribute,'Alert_VA');
#   reason: the state effect is nine properties over twelve verbs, and CURRENT_RECORD_ATTRIBUTE is none of them, so it is refused rather than folded into a verb it does not mean#   line 334
#   Set_Item_Property (:Global.Cur_Item,Current_Record_Attribute, 'Alert_VA');
#   reason: the state effect is nine properties over twelve verbs, and CURRENT_RECORD_ATTRIBUTE is none of them, so it is refused rather than folded into a verb it does not mean#   line 544
#   If :Parameter.P_copy = 1 Then
#     :Parameter.P_copy_msg_repeat := 1;
#   End If;
#   Raise Form_Trigger_Failure;
#   reason: the message this abort shows is inside the branch before it, so pairing them would drop the guard that branch runs under#   Select Count(*) Into v_Count From M_Item_PLU, M_Item
#               Where ItemPLU_Item_Code = Item_Code
#               And Item_Ref=v_Ref
#               And ItemPLU_Code LIKE :Frm_Weigh_Bcode_Prefix||'%'
#   reason: its query narrows on V_REF, which this body declares as a local: a formal becomes an :ARG bind and a page value becomes a param, and a local is neither#   Select Item_Code,  ItemPLU_UOM_Code, UOM_Max_Loose, Item_Group
#                 Into :InvI_Item_Code,    :InvI_UOM_Code, :Max_Loose, :Item_Group
#                 From  M_UOM, M_Item , M_Item_PLU
#                 Where Item_Code = ItemPLU_Item_Code
#                 And UOM_Code = ItemPLU_UOM_Code
#                 And Item_Ref=v_Ref
#                 And ItemPLU_Code LIKE :Frm_Weigh_Bcode_Prefix||'%'
#   reason: its query narrows on V_REF, which this body declares as a local: a formal becomes an :ARG bind and a page value becomes a param, and a local is neither#   Select COUNT (*) Into V_Count
#          From M_Cat_User_Group, M_User_Group_Belong
#         Where Catuser_User_Group_Code = Ugb_User_Group_Code
#           And Ugb_User_Code = :Global.USER
#           And Catuser_Cat_Code = V_Cat_Code
#   reason: its query narrows on V_CAT_CODE, which this body declares as a local: a formal becomes an :ARG bind and a page value becomes a param, and a local is neither#   Select Item_Code,  ItemPLU_UOM_Code, UOM_Max_Loose, Item_Group
#                 Into :InvI_Item_Code,    :InvI_UOM_Code, :Max_Loose, :Item_Group
#                 From  M_UOM, M_Item , M_Item_PLU
#                 Where Item_Code = ItemPLU_Item_Code
#                 And UOM_Code = ItemPLU_UOM_Code
#                 And Item_Ref=v_Ref
#                 And ItemPLU_Code LIKE :Frm_Weigh_Bcode_Prefix||'%';
#   Select  y.Item_Name, y.Item_Cat_Code, 
#                 y.Item_Status, y.Item_Serial_Status, y.Item_Type,y.Item_Def_Qty, 
#                 Stk_UnConf_Qty + Decode(Nvl(:Frm_Loc_En_Uncosted_Stk,'N'),'N',0,Nvl(Stk_Uncosted_Qty,0))
#                 Into  :Item_Name,v_Cat_Code,  v_Status, :En_Sl, :Item_Type, v_Def_Qty, :Stock_BU
#                 From M_Stock, M_Item Y
#                 Where Stk_Comp_Code (+) = :Global.Company
#                 And Stk_Loc_Code (+) = :InvH_Loc_Code
#                 And Stk_Item_Code (+) = Item_Code
#                 And Item_Code=:Invi_Item_Code;
#   Set_Item_Property('Invi_Qty', Update_Allowed, Property_False);
#   Set_Item_Property('Invi_Qty', Update_Allowed, Property_True);
#   :Invi_Qty :=0;
#   :Invi_Loose := 0;
#   :InvI_PLU_Code := Null;
#   Show_Message ('Inv_Alert','User Category combination not defined!');
#   RAISE Form_Trigger_Failure;
#   reason: the query they read is refused above, so a clause over it would read no row

108 clauses converted, 7 statements refused

55. fmb_invoiceWHEN-BUTTON-PRESSED on T_INV_HEAD.DOC_SELECTION_OKgreen-waste
What you haveWHEN-BUTTON-PRESSED
Declare
  CURSOR CurSO IS
    SELECT SOH_Id, SOH_Loc_Code, SOH_Txn_Code, SOH_No, SOH_SMan_Code, SOH_Cust_Code, SOH_Disc_Perc, 
         SOH_Disc_Amt, SOI_Item_Code Item_Code, Item_Name, SOI_UOM_Code UOM_Code, 
         UOM_Max_Loose Max_Loose, 
         Floor((Nvl(SOI_REV_QTY * UOM_Max_Loose, 0) + Nvl(SOI_REV_LOOSE, 0) - (Nvl(SOI_Inv_Qty_BU,0) +  Nvl(SoI_Dn_Qty_Bu,0)))/UOM_Max_Loose) Qty,

         
         (Nvl(SOI_REV_QTY * UOM_Max_Loose, 0) + Nvl(SOI_REV_LOOSE, 0) - (Nvl(SoI_Inv_Qty_BU,0)  + Nvl(SoI_Dn_Qty_Bu,0)))-
         (Floor((Nvl(SOI_REV_QTY * UOM_Max_Loose, 0) + Nvl(SOI_REV_LOOSE, 0) - (Nvl(SoI_Inv_Qty_BU,0) + Nvl(SoI_Dn_Qty_Bu,0)))/UOM_Max_Loose) * UOM_Max_Loose) Loose,
         
         Floor((Nvl(SOI_REV_FOC_QTY * UOM_Max_Loose, 0) + Nvl(SOI_REV_FOC_LOOSE, 0) - (Nvl(soi_inv_foc_qty_bu,0) +  Nvl(soi_dn_foc_qty_bu,0))) /UOM_Max_Loose) foc_Qty,
           
         (Nvl(SOI_REV_FOC_QTY * UOM_Max_Loose, 0) + Nvl(SOI_REV_FOC_LOOSE, 0) - (Nvl(soi_inv_foc_qty_bu,0)  + Nvl(soi_dn_foc_qty_bu,0)))-
       (Floor((Nvl(SOI_REV_FOC_QTY * UOM_Max_Loose, 0) + Nvl(SOI_REV_FOC_LOOSE, 0) - (Nvl(soi_inv_foc_qty_bu,0) + Nvl(soi_dn_foc_qty_bu,0)))/UOM_Max_Loose) * UOM_Max_Loose) foc_Loose,
           
         SOI_Rate Rate, SOI_Disc_Perc Disc_Perc, SOI_Disc_Amt Disc_Amt, SOI_Id Item_Id,
         soi_ref_item_code, soi_item_alt_name, --- added by prem (06/11/2013) ---
         SoI_Loc_Fm,SoI_Batch,Soi_Exp_Dt, SoI_Prom_Item_Id, Item_Serial_Status,Soi_Tndr_Doc_Item_Id,SoH_Tcs,Soi_Item_Desc
  FROM M_UOM, M_Item, T_SO_Item, T_SO_Head
  WHERE SOI_SOH_Id = SOH_Id
  AND Item_Code = SOI_Item_Code
  AND UOM_Code = SOI_UOM_Code
  AND (Nvl(SOI_REV_QTY*UOM_Max_Loose, 0) + Nvl(SOI_REV_LOOSE, 0) +
  Nvl(SOI_REV_Foc_QTY*UOM_Max_Loose, 0) + Nvl(SOI_REV_FOC_LOOSE, 0)) - (Nvl(SOI_Inv_Qty_BU, 0)+Nvl(SOI_Inv_Foc_Qty_BU, 0))   > 0
  AND SOH_Comp_Code = :Global.Company
  AND SOH_Cust_Code = :InvH_Cust_Code
  AND SoH_Loc_Code =:Invh_Loc_Code
  And SoH_Sman_Code = :InvH_Sman_Code    --Added by Mojish 19/05/14
  AND SOH_Load_Status = 'N'
  AND (SOH_APPROVAL_STATUS ='F' OR NVL(Fn_Get_Stk_Txn_Param(SOH_Txn_Code,Soh_Comp_Code,'SO_REQ_APPROVAL'),'N') ='N')
  AND SOH_Valid_Till >= :InvH_Dt
  AND (NVL(Fn_Get_Stk_Txn_Param(SOH_Txn_Code,Soh_Comp_Code,'SO_REQ_WPL'),'N') ='N' OR
      EXISTS(SELECT 'X' From T_Wpl_Head,T_Wpl_Ref_Doc,T_Wpl_Item Where  WPLH_Id =Wplrd_Wplh_Id And Wpli_Wplh_Id(+)=Wplh_Id and Wplrd_Soh_Id =Soh_Id
      AND Nvl(WPLH_Status,'N') ='F' and Nvl(wpli_Status,'N') ='F'))  -- added item  outer join dipu 19-JUL-18
     -- AND NOT EXISTS(SELECT 'x' FROM T_Wpl_Item Where Wpli_Wplh_Id =Wplh_Id and Nvl(wpli_Status,'N') ='N')))--
  Order By SoI_Id;
      
  CURSOR CurDN IS
  SELECT DNH_Id, DNH_Loc_Code, DNH_Txn_Code, DNH_No, DNH_SMan_Code, DNH_Cust_Code, DNH_Disc_Perc, 
         DNH_Disc_Amt,DNI_Plu_Code,
         DNI_Item_Code Item_Code, Item_Name, DNI_UOM_Code UOM_Code, 
         UOM_Max_Loose Max_Loose,Dni_Remarks,
         Floor((Nvl(DNI_Qty * UOM_Max_Loose, 0) + Nvl(DNI_Loose, 0) - Nvl(DNI_Inv_Qty_BU, 0) - Nvl(Dni_Dnret_Qty_Bu,0))/UOM_Max_Loose) Qty,
         (Nvl(DNI_Qty * UOM_Max_Loose, 0) + Nvl(DNI_Loose, 0) - Nvl(DNI_Inv_Qty_BU, 0) - Nvl(Dni_Dnret_Qty_Bu,0))-
          (Floor((Nvl(DNI_Qty * UOM_Max_Loose, 0) + Nvl(DNI_Loose, 0) - Nvl(DNI_Inv_Qty_BU, 0) - Nvl(Dni_Dnret_Qty_Bu,0))/UOM_Max_Loose) * UOM_Max_Loose) Loose,
          Floor((Nvl(DNI_Foc_Qty * UOM_Max_Loose, 0) + Nvl(DNI_Foc_Loose, 0) - Nvl(DNI_Inv_FOC_Qty_BU, 0) - Nvl(Dni_Dnret_Foc_Qty_Bu,0))/UOM_Max_Loose) FOC_Qty,
          (Nvl(DNI_Foc_Qty * UOM_Max_Loose, 0) + Nvl(DNI_Foc_Loose, 0) - Nvl(DNI_Inv_FOC_Qty_BU, 0) - Nvl(Dni_Dnret_Foc_Qty_Bu,0))-
          (Floor((Nvl(DNI_Foc_Qty * UOM_Max_Loose, 0) + Nvl(DNI_Foc_Loose, 0) - Nvl(DNI_Inv_FOC_Qty_BU, 0) - Nvl(Dni_Dnret_Foc_Qty_Bu,0))/UOM_Max_Loose) * UOM_Max_Loose) FOC_Loose,
         DNI_Rate Rate, DNI_Disc_Perc Disc_Perc, /*0 commented on 07-04-2013*/Dni_Disc_Amt Disc_Amt, DNI_Id Item_Id,
         dni_ref_item_code,dni_item_alt_name --- added by prem(06/11/2013) ---
  FROM M_UOM, M_Item,/*M_Item_Plu, Commented by dipu on 08-09-14*/ T_DN_Item, T_DN_Head
  WHERE DNI_DNH_Id = DNH_Id
  AND Item_Code = DNI_Item_Code
  --AND ItemPlu_Item_Code = Item_code Commented by dipu on 08-09-14
  AND UOM_Code = DNI_UOM_Code
  --AND ItemPlu_Uom_Code = Uom_Code Commented by dipu on 08-09-14
  --AND Nvl(DNI_Qty*UOM_Max_Loose, 0) + Nvl(DNI_Loose, 0) - (Nvl(DNI_Inv_Qty_BU, 0) + Nvl(Dni_Dnret_Qty_Bu,0)) > 0
  And (Nvl(Dni_Qty*Uom_Max_Loose, 0) + Nvl(Dni_Loose, 0)) + (Nvl(Dni_Foc_Qty*Uom_Max_Loose, 0) + Nvl(Dni_Foc_Loose, 0))  -  (Nvl(Dni_Inv_Qty_Bu, 0) + Nvl(Dni_Dnret_Qty_Bu,0))  +   (Nvl(Dni_Inv_Foc_Qty_Bu, 0) + Nvl(Dni_Dnret_Foc_Qty_Bu,0))  > 0
  AND DNH_Comp_Code = :Global.Company
  AND DNH_Loc_Code =:Invh_Loc_Code
  AND DNH_Cust_Code = :InvH_Cust_Code;
  --Added By dipu on 16/09/14 for validate delivery return
  --AND (Floor((Nvl(DNI_Qty * UOM_Max_Loose, 0) + Nvl(DNI_Loose, 0) - Nvl(DNI_Inv_Qty_BU, 0) - Nvl(Dni_Dnret_Qty_Bu,0))/UOM_Max_Loose) >0
  --OR (Nvl(DNI_Qty * UOM_Max_Loose, 0) + Nvl(DNI_Loose, 0) - Nvl(DNI_Inv_Qty_BU, 0) - Nvl(Dni_Dnret_Qty_Bu,0))-
   --       (Floor((Nvl(DNI_Qty * UOM_Max_Loose, 0) + Nvl(DNI_Loose, 0) - Nvl(DNI_Inv_Qty_BU, 0) - Nvl(Dni_Dnret_Qty_Bu,0))/UOM_Max_Loose) * UOM_Max_Loose)>0)
  -----          
  --AND DNH_Load_Status = 'N';
    
  CURSOR CurDN2 IS
  SELECT DNH_Id, DNH_Loc_Code, DNH_Txn_Code, DNH_No, DNH_SMan_Code
  FROM M_UOM,T_DN_Head,T_DN_Item /*Item Added By Faisal On 21/02/17*/
  WHERE  DNI_DNH_Id = DNH_Id
  AND UOM_Code = DNI_UOM_Code
 -- AND Nvl(DNI_Qty*UOM_Max_Loose, 0) + Nvl(DNI_Loose, 0) - (Nvl(DNI_Inv_Qty_BU, 0) + Nvl(Dni_Dnret_Qty_Bu,0)) > 0
  And (Nvl(Dni_Qty*Uom_Max_Loose, 0) + Nvl(Dni_Loose, 0)) + (Nvl(Dni_Foc_Qty*Uom_Max_Loose, 0) + Nvl(Dni_Foc_Loose, 0))  -  (Nvl(Dni_Inv_Qty_Bu, 0) + Nvl(Dni_Dnret_Qty_Bu,0))  +   (Nvl(Dni_Inv_Foc_Qty_Bu, 0) + Nvl(Dni_Dnret_Foc_Qty_Bu,0))  > 0
  AND DNH_Comp_Code = :Global.Company
  AND DNH_Loc_Code =:Invh_Loc_Code
  AND DNH_Cust_Code = :InvH_Cust_Code
  AND Nvl(DNH_Load_Status,'N') = 'N'--UNcommented by DIPU ON 14-JUL-2018
  GROUP BY DNH_Id, DNH_Loc_Code, DNH_Txn_Code, DNH_No, DNH_SMan_Code;--added by DIPU ON 14-JUL-2018
  

/*
  CURSOR CurSo2 IS
  SELECT SoH_Id, SoH_Loc_Code, SoH_Txn_Code, SoH_No, SoH_SMan_Code
  FROM T_So_Head
  WHERE SoH_Comp_Code = :Global.Company
  AND SoH_Loc_Code =:Invh_Loc_Code
  AND SoH_Cust_Code = :InvH_Cust_Code
  AND Nvl(SoH_Load_Status,'N') = 'N'
  AND (SOH_APPROVAL_STATUS ='F' OR Fn_Get_Stk_Txn_Param(SOH_Txn_Code,Soh_Comp_Code,'SO_REQ_APPROVAL') ='N')
  AND SOH_Valid_Till >= :InvH_Dt;
  */
  CURSOR CurSo2 IS
  SELECT distinct SOH_Id, SOH_Loc_Code, SOH_Txn_Code, SOH_No, SOH_SMan_Code
  FROM M_UOM, T_SO_Item, T_SO_Head
  WHERE SOI_SOH_Id = SOH_Id
  AND UOM_Code = SOI_UOM_Code
  AND (Nvl(SOI_REV_QTY*UOM_Max_Loose, 0) + Nvl(SOI_REV_LOOSE, 0) +
  Nvl(SOI_REV_Foc_QTY*UOM_Max_Loose, 0) + Nvl(SOI_REV_FOC_LOOSE, 0)) - (Nvl(SOI_Inv_Qty_BU, 0)+Nvl(SOI_Inv_Foc_Qty_BU, 0))   > 0
  AND SOH_Comp_Code = :Global.Company
  AND SOH_Cust_Code = :InvH_Cust_Code
  AND SoH_Loc_Code =:Invh_Loc_Code
  And SoH_Sman_Code = :InvH_Sman_Code    --Added by Mojish 19/05/14
  AND SOH_Load_Status = 'N'
  AND (SOH_APPROVAL_STATUS ='F' OR NVL(Fn_Get_Stk_Txn_Param(SOH_Txn_Code,Soh_Comp_Code,'SO_REQ_APPROVAL'),'N') ='N')
  AND SOH_Valid_Till >= :InvH_Dt
  AND (NVL(Fn_Get_Stk_Txn_Param(SOH_Txn_Code,Soh_Comp_Code,'SO_REQ_WPL'),'N') ='N' OR
      EXISTS(SELECT 'X' From T_Wpl_Head,T_Wpl_Ref_Doc,T_Wpl_Item Where  WPLH_Id =Wplrd_Wplh_Id And Wpli_Wplh_Id(+)=Wplh_Id and Wplrd_Soh_Id =Soh_Id
      AND Nvl(WPLH_Status,'N') ='F' and Nvl(wpli_Status,'N') ='F'));  -- added item  outer join dipu 19-JUL-18
      --AND NOT EXISTS(SELECT 'x' FROM T_Wpl_Item Where Wpli_Wplh_Id =Wplh_Id and Nvl(wpli_Status,'N') ='N'))); -- commented dipu 19-JUL-18
    
  --Service    
  CURSOR  CurCs IS 
  SELECT CsH_Id, CsH_Loc_Code, CsH_Txn_Code, CsH_No,CsH_Cust_Code,  
         CsD_Item_Code Item_Code, Item_Name, CsD_UOM_Code UOM_Code, 
         UOM_Max_Loose Max_Loose, Floor((Nvl(CsD_Qty * UOM_Max_Loose, 0) + Nvl(CsD_Loose, 0) - (Nvl(CsD_Inv_Qty_BU,0))) /UOM_Max_Loose) Qty,
         (Nvl(CsD_Qty * UOM_Max_Loose, 0) + Nvl(CsD_Loose, 0) - (Nvl(CsD_Inv_Qty_BU,0)))-
         (Floor((Nvl(CsD_Qty * UOM_Max_Loose, 0) + Nvl(CsD_Loose, 0) - (Nvl(CsD_Inv_Qty_BU,0)))/UOM_Max_Loose) * UOM_Max_Loose) Loose,
         CsD_Rate, 0 Disc_Perc, 0 Disc_Amt, CsD_Id Item_Id,CsD_Remarks
  FROM M_UOM, M_Item, T_Cust_Service_Detail, T_Cust_Service_Head
  WHERE CsD_CsH_Id = CsH_Id
  AND Item_Code = CsD_Item_Code
  AND UOM_Code = CsD_UOM_Code
  AND Nvl(CsD_Qty*UOM_Max_Loose, 0) + Nvl(CsD_Loose, 0) - (Nvl(CsD_Inv_Qty_BU,0)) > 0
  AND CsH_Comp_Code = :Global.Company
  AND CSH_Loc_Code =:Invh_Loc_Code
  AND CsH_Cust_Code =:InvH_Cust_Code
  AND Nvl(CsH_Load_Status,'N') ='N';   

  CURSOR CurCS2 IS
  SELECT CSH_Id, CSH_Loc_Code, CSH_Txn_Code, CSH_No
  FROM T_Cust_Service_Head
  WHERE CSH_Comp_Code = :Global.Company
  AND CSH_Loc_Code =:Invh_Loc_Code
  AND CSH_Cust_Code = :InvH_Cust_Code
  AND Nvl(CSH_Load_Status,'N') = 'N'
  And Exists (Select 'x' From T_Cust_Service_Detail, m_Uom
  Where CsD_CsH_Id = Csh_Id And CsD_Uom_Code = Uom_Code
  And Nvl(CsD_Qty*UOM_Max_Loose, 0) + Nvl(CsD_Loose, 0) - (Nvl(CsD_Inv_Qty_BU,0)) > 0);

  v_Count        Number;
  v_Loc_Code     VarChar2(10);
  v_Txn_Code     VarChar2(10);
  v_Doc_No       Number;
  v_Txn_Type     VarChar2(10);
  v_Alert        Number := Alert_Button2;
  v_Ref_Doc_Id   Number;
  v_Cust_Code    VarChar2(10);
  v_HDisc_Perc   Number;
  v_HDisc_Amt    Number;
  v_PLU_Code     VarChar2(20);
  v_Item_Code    VarChar2(10);
  v_Item_Name    VarChar2(100);
  V_Remarks      VarChar2(100);
  v_UOM_Code     VarChar2(10);
  v_Max_Loose    Number;
  v_Qty_BU       Number;
  v_Qty          Number;
  v_Loose        Number;
  v_Rate         Number;
  v_Disc_Perc    Number;
  v_Disc_Amt     Number;
  v_Ref_Item_Id  Number;
  v_SMan_Code    VarChar2(10);
  v_Rem          Varchar2(100);
  v_Load_Status  Char(1);
  v_Foc_Qty      Number;
  v_Foc_Ls       Number;
  v_Init Char(1) := 'N';
  v_Old_ID Number := 0;
  v_ref_Item_Code    VarChar2(10);
  v_Loc_Fm       Varchar2(10);
  v_Batch         Varchar2(20);
  v_Exp_Dt       Date;
  v_Item_alt_Name    VarChar2(100);
  V_So_Tndr_Cnt Number;
  V_Pl_Comp_Cnt Number;
  v_csd_Remarks Varchar2(100);
  v_Tcs Varchar2(2000);  
  v_Item_Desc Varchar2(1000);
Begin
  If :system.record_status <> 'QUERY' THEN
    If :INVH_Sman_Code Is Not Null THEN
      SELECT Count(*) INTO v_Count
      FROM M_Customer_Salesman
      WHERE Custs_Comp_Code = :Global.Company
      AND Custs_Divn_Code = :InvH_Divn_COde
      AND Custs_SMan_Code = :InvH_SMan_Code
      AND Custs_Cust_Code = :InvH_Cust_Code;
    
      If v_Count = 0 Then
        Show_Message('Inv_Alert', 'Salesman not allowed for Customer!');
        Raise Form_Trigger_Failure;
      End If;
       
       if :RADIO_DOC_SELECTION = 'DN' then    
         hide_window('INVH_DOC_SELECTION');
         
         SELECT Count(*) INTO v_Count
        FROM M_UOM, M_Item, T_DN_Item, T_DN_Head
        WHERE DNI_DNH_Id = DNH_Id
        AND Item_Code = DNI_Item_Code
        AND UOM_Code = DNI_UOM_Code
      --  AND Nvl(DNI_Qty*UOM_Max_Loose, 0) + Nvl(DNI_Loose, 0) - Nvl(DNI_Inv_Qty_BU, 0) > 0
        And (Nvl(Dni_Qty*Uom_Max_Loose, 0) + Nvl(Dni_Loose, 0)) + (Nvl(Dni_Foc_Qty*Uom_Max_Loose, 0) + Nvl(Dni_Foc_Loose, 0))  -  (Nvl(Dni_Inv_Qty_Bu, 0) + Nvl(Dni_Dnret_Qty_Bu,0))  +   (Nvl(Dni_Inv_Foc_Qty_Bu, 0) + Nvl(Dni_Dnret_Foc_Qty_Bu,0))  > 0  
        AND DNH_Comp_Code = :Global.Company
        AND DNH_Loc_Code =:Invh_Loc_Code
        AND DNH_Cust_Code = :InvH_Cust_Code
        AND DNH_Load_Status = 'N'
        AND DNH_Loc_Code = :InvH_Loc_Code;
      
        If Nvl(v_Count,0) > 0 Then
          --clear_block('T_Inv_Ref_Doc');
          --clear_block('T_Inv_Item');
          
          Set_Alert_Property('CONF_LOAD_ALERT', Alert_Message_Text, 'Please select load type for all pending Delivery Notes');--Added by Janisha on 06-04-2013
          v_Alert := Show_Alert('CONF_LOAD_ALERT');
          
          If v_Alert = Alert_Button1 Then
            
            Go_Block('T_Inv_Item');
            Open CurDN;
            Loop
              Fetch CurDN INTO v_Ref_Doc_Id, v_Loc_Code, v_Txn_Code, v_Doc_No, v_SMan_Code, v_Cust_Code, v_HDisc_Perc, v_HDisc_Amt, v_Plu_Code,
              v_Item_Code, v_Item_Name, v_UOM_Code, v_Max_Loose, V_Remarks,
              v_Qty, v_Loose,v_Foc_Qty,v_Foc_Ls, v_Rate, v_Disc_Perc, v_Disc_Amt, v_Ref_Item_Id,
              v_ref_item_code,v_item_alt_name;--- added by prem(06/11/2013) ---
              
              EXIT WHEN CurDN%NotFound;
               
              If v_Old_Id <> v_Ref_Doc_Id Then
                Go_BLock('T_Inv_Ref_Doc');
                :Ref_Loc_Code := v_Loc_Code;
                :InvH_Ref_Txn_Code := v_Txn_Code;
                :Ref_No := v_Doc_No;
                 :InvRD_DNH_Id := v_Ref_Doc_Id;
                :InvRD_Close_SO := 'Y';
                :Ref_SMan_Code := v_SMan_Code;
                :FLAG := 'Y';
                
                Next_Record;
      
                v_Old_Id := v_Ref_Doc_Id;
                Go_Block('T_Inv_Item');
                --Last_Record;
              End If;
   
    /* Commented by faisal for avoiding check stock for loaded item */
    /*
    v_Qty_BU := Fn_Get_UnConf_Stock(:Global.Company, :InvH_Loc_Code, v_Item_Code, Null);
    If v_Qty_BU < Nvl(v_Qty * v_Max_Loose, 0) + Nvl(v_Loose, 0) Then
      If v_Qty_BU <= 0 Then
        v_Qty := 0;
        v_Loose := 0;
      ElsIf v_Qty_BU < 1 Then
        v_Qty := v_Qty_BU;
        v_Loose := 0;
      Else
        v_Qty := Floor(v_Qty_BU/v_Max_Loose);
        v_Loose := v_Qty_BU - Nvl(v_Qty * v_Max_Loose, 0);
      End If;
    End If;
    */
    If :INVH_CUST_CODE Is Not Null Then
      Select Count(*) Into V_Pl_Comp_Cnt From M_Customer_Company  Where Custcomp_Comp_Code=:Global.Company And Custcomp_Cust_Code=:INVH_CUST_CODE;
      If V_Pl_Comp_Cnt=1 Then 
       Select Custcomp_Plh_Code Into :InvI_Plu_Code From M_Customer_Company  Where Custcomp_Comp_Code=:Global.Company And Custcomp_Cust_Code=:INVH_CUST_CODE;
      End If;
    End If;
              :InvI_Loaded_Fm_DN :='Y'; 
              :Prom_Enabled := Nvl(:Frm_En_Sales_Promo, 'N');    --Added By Mojish  01/07/14
              :InvI_DN_Doc_Item_Id := v_Ref_Item_Id;
              :Old_Item_Code := v_Item_Code;
              :Old_UOM_Code := v_UOM_Code;
              :InvI_Plu_Code := v_Plu_Code;
              :InvI_Item_Code := v_Item_Code;
              :Item_Name := v_Item_Name;
              :InvI_UOM_Code := v_UOM_Code;
              :Max_Loose := v_Max_Loose;
              :Invi_Remarks := V_Remarks;
              :InvI_Qty := v_Qty;
              :InvI_Loose := v_Loose;
              :InvI_Rate := v_Rate;
              :Invi_Foc_Qty :=v_Foc_Qty;
              :Invi_Foc_Loose  := v_Foc_Ls;
              :InvI_Disc_Perc := v_Disc_Perc;
              :InvI_Disc_Amt := v_Disc_Amt;
              :invi_ref_item_code := v_ref_item_code;--- added by prem(06/11/2013) ---
              :invi_item_alt_name := v_item_alt_name;--- added by prem(06/11/2013) ---
              :Ref_Doc_Item := 'Loaded';
              :InvI_Loaded_Fm_DN :='Y';
               :InvI_Id := Fn_Get_Next_Id('Inv_Item');
              :InvI_Cr_User := :Global.User;
              :InvI_Cr_Dt := :Frm_Time_Zone;   
    
              Next_Record;
            End Loop;
            Close CurDN;
            first_record;
          ElsIf   v_Alert = Alert_Button2 Then 
            GO_ITEM('REF_LOC_CODE');
            --Dn_load
            Open CurDN2;
            Loop
              Fetch CurDN2 INTO  :InvRD_DNH_Id, :Ref_Loc_Code, :InvH_Ref_Txn_Code, :Ref_No, :Ref_SMan_Code ;
              
              EXIT WHEN CurDN2%NotFound;
      
               Next_Record;      
               --  Go_BLock('T_Inv_Ref_Doc');
              --  :Ref_Loc_Code := v_Loc_Code;
              --  :InvH_Ref_Txn_Code := v_Txn_Code;
              --  :Ref_No := v_Doc_No;
               --  :Ref_SMan_Code := v_SMan_Code;
            End Loop;
            Close CurDN2;
            first_record;
            --Dn_Load End
          ElsIf  v_Alert = Alert_Button3 Then
            Go_Block('T_Inv_Item');
            --Exit_Form;
          End If;
        else
          show_message('INV_ALERT','There is no documents to load');
        End If;   
        
        --Disable Updation in Items in case of DN otherwise check sales orders
        If v_Ref_Item_Id Is Not Null Then
          Set_Block_Property('T_Inv_ITem', Update_Allowed, Property_False); 
          Set_Block_Property('T_Inv_ITem', Insert_Allowed, Property_False);
          Set_Block_Property('T_Inv_ITem', Delete_Allowed, Property_False);
        end if;
        --Else
      ELSif :RADIO_DOC_SELECTION = 'SO' then
         hide_window('INVH_DOC_SELECTION'); 
     
        SELECT Count(*) INTO v_Count
        FROM M_UOM, M_Item, T_SO_Item, T_SO_Head
        WHERE SOI_SOH_Id = SOH_Id
        AND Item_Code = SOI_Item_Code
        AND UOM_Code = SOI_UOM_Code
        AND (Nvl(SOI_REV_QTY*UOM_Max_Loose, 0) + Nvl(SOI_REV_LOOSE, 0) +
        Nvl(SOI_REV_Foc_QTY*UOM_Max_Loose, 0) + Nvl(SOI_REV_FOC_LOOSE, 0)) - (Nvl(SOI_Inv_Qty_BU, 0)+Nvl(SOI_Inv_Foc_Qty_BU, 0))   > 0
        AND SOH_Comp_Code = :Global.Company
        AND SOH_Cust_Code = :InvH_Cust_Code
        AND SoH_Loc_Code =:Invh_Loc_Code
        AND Nvl(SoH_Load_Status,'N') = 'N'
        AND (SOH_APPROVAL_STATUS ='F' OR NVL(Fn_Get_Stk_Txn_Param(SOH_Txn_Code,Soh_Comp_Code,'SO_REQ_APPROVAL'),'N') ='N')
        --AND (NVL(SOH_WPL_STATUS,'N') ='Y' OR NVL(Fn_Get_Stk_Txn_Param(SOH_Txn_Code,Soh_Comp_Code,'SO_REQ_WPL'),'Y') ='N')
        AND SOH_Valid_Till >= :InvH_Dt
        AND (NVL(Fn_Get_Stk_Txn_Param(SOH_Txn_Code,Soh_Comp_Code,'SO_REQ_WPL'),'N') ='N' OR
        EXISTS(SELECT 'X' From T_Wpl_Head,T_Wpl_Ref_Doc Where WPLH_Id =Wplrd_Wplh_Id  and Wplrd_Soh_Id =Soh_Id
        AND Nvl(WPLH_Status,'N') = 'F'
        AND NOT EXISTS(SELECT 'x' FROM T_Wpl_Item Where Wpli_Wplh_Id =Wplh_Id and Nvl(wpli_Status,'N') ='N')));
    
        If Nvl(v_Count,0) > 0 Then  
          Set_Alert_Property('CONF_LOAD_ALERT', Alert_Message_Text, 'Please select load type for all pending Sales Orders');
          v_Alert := Show_Alert('CONF_LOAD_ALERT');
          If v_Alert = Alert_Button1 Then
 -----Added By Dipu on 25-08-14 for load maximum one tender
 Select Count (*) Into V_So_Tndr_Cnt From (Select Distinct Soh_Tndr_Doc_Id   FROM M_UOM, M_Item, T_SO_Item, T_SO_Head
  WHERE SOI_SOH_Id = SOH_Id
  AND Item_Code = SOI_Item_Code
  AND UOM_Code = SOI_UOM_Code
  AND (Nvl(SOI_REV_QTY*UOM_Max_Loose, 0) + Nvl(SOI_REV_LOOSE, 0) +
  Nvl(SOI_REV_Foc_QTY*UOM_Max_Loose, 0) + Nvl(SOI_REV_FOC_LOOSE, 0)) - (Nvl(SOI_Inv_Qty_BU, 0)+Nvl(SOI_Inv_Foc_Qty_BU, 0))   > 0
  AND SOH_Comp_Code = :Global.Company
  AND SOH_Cust_Code = :InvH_Cust_Code
  AND SoH_Loc_Code =:Invh_Loc_Code
  And SoH_Sman_Code = :InvH_Sman_Code   
  AND SOH_Load_Status = 'N'
  AND (SOH_APPROVAL_STATUS ='F' OR NVL(Fn_Get_Stk_Txn_Param(SOH_Txn_Code,Soh_Comp_Code,'SO_REQ_APPROVAL'),'N') ='N')
  AND SOH_Valid_Till >= :InvH_Dt
  AND (NVL(Fn_Get_Stk_Txn_Param(SOH_Txn_Code,Soh_Comp_Code,'SO_REQ_WPL'),'N') ='N' OR
      EXISTS(SELECT 'X' From T_Wpl_Head,T_Wpl_Ref_Doc Where WPLH_Id =Wplrd_Wplh_Id  and Wplrd_Soh_Id =Soh_Id
      AND Nvl(WPLH_Status,'N') ='F'
      AND NOT EXISTS(SELECT 'x' FROM T_Wpl_Item Where Wpli_Wplh_Id =Wplh_Id and Nvl(wpli_Status,'N') ='N'))));
      
           If V_So_Tndr_Cnt<=1 Then  -----Added By Dipu on 25-08-14 for load maximum one tender
      
            Open CurSO;
            Loop
              Fetch CurSO INTO v_Ref_Doc_Id, v_Loc_Code, v_Txn_Code, v_Doc_No, v_SMan_Code, v_Cust_Code, v_HDisc_Perc, v_HDisc_Amt, v_Item_Code, v_Item_Name, v_UOM_Code, v_Max_Loose, 
              v_Qty, v_Loose,v_foc_Qty, v_foc_Ls, v_Rate, v_Disc_Perc, v_Disc_Amt, v_Ref_Item_Id,
              v_ref_Item_Code, v_Item_alt_Name,v_Loc_Fm,v_Batch,v_Exp_Dt, :InvI_Prom_Item_Id, :En_Sl,:Invi_Tndr_Doc_Item_Id,v_Tcs,v_Item_Desc ;--- added by prem (06/11/2013) ---

              EXIT WHEN CurSO%NotFound;
              
              If v_Old_Id <> v_Ref_Doc_Id Then
                Go_BLock('T_Inv_Ref_Doc');
                :Ref_Loc_Code := v_Loc_Code;
                :InvH_Ref_Txn_Code := v_Txn_Code;
                :Ref_No := v_Doc_No;
                 :InvRD_SOH_Id := v_Ref_Doc_Id;
                :InvRD_Close_SO := 'Y';
                :Ref_SMan_Code := v_SMan_Code;
                :FLAG := 'Y';
                :InvH_Tcs := v_Tcs;
                Next_Record;
        
                v_Old_Id := v_Ref_Doc_Id;
                
                /*If Nvl(:Comp_Os, 0) + Nvl(:Invrd_Comp_So_Total,0) > Nvl(:Comp_Cr_Limit, 0) AND Nvl(:Frm_InvH_Btrn_Flag, 'D') <> 'B' Then
                  Show_Message('Inv_Alert', 'Company Credit Limit Exceeded!');
                   Raise Form_Trigger_Failure; 
                ElsIf Nvl(:Comp_Os, 0) + Nvl(:Invrd_Comp_So_Total,0) > Nvl(:Comp_Warn_Limit, 0) Then
                  -- Show_Message('Inv_Alert', 'Nearing Company Credit!');
                  NULL;
                End If;
                
                --Division Level 
                If :Invh_Divn_Code is Not Null and Nvl(:Divn_Cr_Limit, 0) > 0 AND Nvl(:Frm_InvH_Btrn_Flag, 'D') <> 'B'Then
                  If Nvl(:Divn_Os, 0)  + Nvl(:Invrd_Divn_So_Total,0) > Nvl(:Divn_Cr_Limit, 0) Then
                    Show_Message('Inv_Alert', 'Division Credit Limit Exceeded!');
                    Raise Form_Trigger_Failure; 
                  ElsIf Nvl(:Divn_Os, 0) + Nvl(:Invrd_Divn_So_Total,0) > Nvl(:Divn_Warn_Limit, 0) AND Nvl(:Frm_InvH_Btrn_Flag, 'D') <> 'B' Then
                    Show_Message('Inv_Alert', 'Nearing Division Credit Limit!');
                  End If;
                End If;*/           --Commented by Mojish 26/06/14 Temp Credit limit exception not handled
                
                Validate_Invoice;   --Added By Mojish 26/06/14
                
                Go_Block('T_Inv_Item');
                Set_Item_Property('PB_REF_LOAD', ENABLED, PRoperty_True);
              End If;
              
              if :Frm_Validate_Stock = 'Y' then
                v_Qty_BU := Fn_Get_UnConf_Stock(:Global.Company, :InvH_Loc_Code, v_Item_Code, Null);
              
                If v_Qty_BU < Nvl(v_Qty * v_Max_Loose, 0) + Nvl(v_Loose, 0) Then
                  If v_Qty_BU <= 0 Then
                    v_Qty := 0;
                    v_Loose := 0;
                  ElsIf v_Qty_BU < 1 Then
                    v_Qty := v_Qty_BU;
                    v_Loose := 0;
                  Else
                    v_Qty := Floor(v_Qty_BU/v_Max_Loose);
                    v_Loose := v_Qty_BU - Nvl(v_Qty * v_Max_Loose, 0);
                  End If;
                End If;
              end if;
              
              :Prom_Enabled := Nvl(:Frm_En_Sales_Promo, 'N');    --Added By Mojish  01/07/14
              :InvI_SO_Doc_Item_Id := v_Ref_Item_Id;
              :Old_Item_Code := v_Item_Code;
              :Old_UOM_Code := v_UOM_Code;
              :InvI_Plu_Code := v_Plu_Code;
              :InvI_Item_Code := v_Item_Code;
              :Item_Name := v_Item_Name;
              :InvI_UOM_Code := v_UOM_Code;
              :Max_Loose := v_Max_Loose;
              :InvI_Qty := v_Qty;
              :InvI_Loose := v_Loose;
              :InvI_foc_Qty := v_foc_Qty;
              :InvI_foc_Loose := v_foc_Ls;
              :InvI_Rate := v_Rate;
              :InvI_Disc_Perc := v_Disc_Perc;
              :InvI_Disc_Amt := v_Disc_Amt;
              :InvI_ref_Item_Code := v_ref_Item_Code;
              :invi_item_alt_name := v_Item_alt_Name;
              :Ref_Doc_Item := 'Loaded';
              :InvI_Id := Fn_Get_Next_Id('Inv_Item');
              :InvI_Cr_User := :Global.User;
              :InvI_Cr_Dt := :Frm_Time_Zone;
              :InvI_Loc_Fm  := v_Loc_Fm;
              :InvI_Batch   := v_Batch;
              :InvI_Exp_Dt  := v_Exp_Dt;
              :Invi_item_Desc := v_Item_Desc;
              If Nvl(:InvI_Prom_Item_Id, 0) > 0 Then   --Added by Mojish 10/06/14
                Select PromH_No, PromH_Id Into :PromH_No, :PromH_Id From T_Prom_Head, T_Prom_Item 
                Where PromI_PromH_Id = PromH_Id And PromH_Comp_Code = :Global.Company 
                And PromI_Id = :InvI_Prom_Item_Id;
              End If;
              Next_Record;
            End Loop;
            Close CurSO;
            first_record;
          Else  -----Added By Dipu on 25-08-14 for load maximum one tender
                            Show_Message('Inv_Alert', 'Please select the required SO,More than one tender can not load!');
                  v_Alert:= Alert_Button2;        
                 --Raise Form_Trigger_Failure; 
          End If;
          
          ElsIf v_Alert = Alert_Button2 Then
            Go_BLock('T_Inv_Ref_Doc');
            GO_ITEM('REF_LOC_CODE');
            --Dn_load
            Open CurSO2;
            Loop
              Fetch CurSO2 INTO :InvRD_SoH_Id, :Ref_Loc_Code, :InvH_Ref_Txn_Code, :Ref_No, :Ref_SMan_Code ;

              If Nvl(:Comp_Os, 0) + Nvl(:Invrd_Comp_So_Total,0) > Nvl(:Comp_Cr_Limit, 0) AND Nvl(:Frm_InvH_Btrn_Flag, 'D') <> 'B' Then
                Show_Message('Inv_Alert', 'Company Credit Limit Exceeded!');
                 Raise Form_Trigger_Failure; 
              ElsIf Nvl(:Comp_Os, 0) + Nvl(:Invrd_Comp_So_Total,0) > Nvl(:Comp_Warn_Limit, 0) Then
                -- Show_Message('Inv_Alert', 'Nearing Company Credit!');
                NULL;
              End If;

              --Division Level 
              If :Invh_Divn_Code is Not Null and Nvl(:Divn_Cr_Limit, 0) > 0 AND Nvl(:Frm_InvH_Btrn_Flag, 'D') <> 'B' Then
                If Nvl(:Divn_Os, 0)  + Nvl(:Invrd_Divn_So_Total,0) > Nvl(:Divn_Cr_Limit, 0) Then
                  Show_Message('Inv_Alert', 'Division Credit Limit Exceeded!');
                  Raise Form_Trigger_Failure; 
                  NULL;
                ElsIf Nvl(:Divn_Os, 0) + Nvl(:Invrd_Divn_So_Total,0) > Nvl(:Divn_Warn_Limit, 0) Then
                  Show_Message('Inv_Alert', 'Nearing Division Credit Limit!');
                End If;
              End If;

              EXIT WHEN CurSo2%NotFound;

               Next_Record;      
               --  Go_BLock('T_Inv_Ref_Doc');
              --  :Ref_Loc_Code := v_Loc_Code;
              --  :InvH_Ref_Txn_Code := v_Txn_Code;
              --  :Ref_No := v_Doc_No;
               --  :Ref_SMan_Code := v_SMan_Code;
            End Loop;
            Close CurSO2;
            first_record;
            
           ElsIf v_Alert = Alert_Button3 Then
             Go_Block('T_Inv_Item');
            --Exit_Form;
           End If;
         else
          show_message('INV_ALERT','There is no documents to load');
         End If; 
         If v_Ref_Item_Id Is Not Null Then
          /*Set_Block_Property('T_Inv_ITem', Update_Allowed, Property_False); 
          Set_Block_Property('T_Inv_ITem', Insert_Allowed, Property_False);*/
          
          /*
          Set_Block_Property('T_Inv_ITem', Delete_Allowed, Property_False);
          Set_Item_Property('InvI_Item_Code', Insert_Allowed, Property_False);
          Set_Item_Property('InvI_Item_Code', Update_Allowed, Property_False); 
          Set_Item_Property('InvI_Uom_Code', Insert_Allowed, Property_False);
          Set_Item_Property('InvI_Uom_Code', Update_Allowed, Property_False); 
          Set_Item_Property('InvI_Qty', Insert_Allowed, Property_False);
          Set_Item_Property('InvI_Qty', Update_Allowed, Property_False); 
          Set_Item_Property('InvI_Loose', Insert_Allowed, Property_False);
          Set_Item_Property('InvI_Loose', Update_Allowed, Property_False);
          Set_Item_Property('InvI_Rate', Insert_Allowed, Property_False);
          Set_Item_Property('InvI_Rate', Update_Allowed, Property_False);
          Set_Item_Property('InvI_Disc_Perc', Insert_Allowed, Property_False);
          Set_Item_Property('InvI_Disc_Perc', Update_Allowed, Property_False);
          Set_Item_Property('InvI_Disc_Amt', Insert_Allowed, Property_False);
          Set_Item_Property('InvI_Disc_Amt', Update_Allowed, Property_False);
          */          
          disable_details;
        end if;
       Elsif :RADIO_DOC_SELECTION = 'SB' then
         hide_window('INVH_DOC_SELECTION');
         
         SELECT Count(*) INTO v_Count
        FROM M_UOM, M_Item, T_Cust_Service_Detail, T_Cust_Service_Head
        WHERE CsD_CsH_Id = CsH_Id
        AND Item_Code = CsD_Item_Code
        AND UOM_Code = CsD_UOM_Code
        AND Nvl(CsD_Qty*UOM_Max_Loose, 0) + Nvl(CsD_Loose, 0) - (Nvl(CsD_Inv_Qty_BU,0)) > 0
        AND CsH_Comp_Code = :Global.Company
        AND CSH_Loc_Code =:Invh_Loc_Code
        AND CsH_Cust_Code =:InvH_Cust_Code
        AND Nvl(CsH_Load_Status,'N') ='N';   

        If Nvl(v_Count,0) > 0 Then  
          Set_Alert_Property('CONF_LOAD_ALERT', Alert_Message_Text, 'Please select load type for all pending Service Bills');
          v_Alert := Show_Alert('CONF_LOAD_ALERT'); --03-04-2013
          
          If v_Alert = Alert_Button1 Then
            Open CurCs;
             Loop
               Fetch CurCs INTO v_Ref_Doc_Id, v_Loc_Code, v_Txn_Code, v_Doc_No,  v_Cust_Code,  v_Item_Code, v_Item_Name, v_UOM_Code, v_Max_Loose, 
              v_Qty, v_Loose, v_Rate, v_Disc_Perc, v_Disc_Amt, v_Ref_Item_Id,v_csd_Remarks;
              
              EXIT WHEN CurCs%NotFound;      
              If v_Old_Id <> v_Ref_Doc_Id Then
                Go_BLock('T_Inv_Ref_Doc');
                :Ref_Loc_Code := v_Loc_Code;
                :InvH_Ref_Txn_Code := v_Txn_Code;
                :Ref_No := v_Doc_No;
                 :InvRD_CsH_Id := v_Ref_Doc_Id;
                 :FLAG := 'Y';
                
                Next_Record;
                v_Old_Id := v_Ref_Doc_Id;
                --Division Level 
                  Go_Block('T_Inv_Item');
                Set_Item_Property('PB_REF_LOAD', ENABLED, PRoperty_True);
              End If;
              
              v_Qty_BU := Fn_Get_UnConf_Stock(:Global.Company, :InvH_Loc_Code, v_Item_Code, Null);
              
              If v_Qty_BU < Nvl(v_Qty * v_Max_Loose, 0) + Nvl(v_Loose, 0) Then
                If v_Qty_BU <= 0 Then
                  v_Qty := 0;
                  v_Loose := 0;
                ElsIf v_Qty_BU < 1 Then
                  v_Qty := v_Qty_BU;
                  v_Loose := 0;
                Else
                  v_Qty := Floor(v_Qty_BU/v_Max_Loose);
                   v_Loose := v_Qty_BU - Nvl(v_Qty * v_Max_Loose, 0);
                End If;
              End If;
              
              :InvI_CS_Doc_Item_Id := v_Ref_Item_Id;
              :Old_Item_Code := v_Item_Code;
              :Old_UOM_Code := v_UOM_Code;
              :InvI_Item_Code := v_Item_Code;
              :Item_Name := v_Item_Name;
              :InvI_UOM_Code := v_UOM_Code;
              :Max_Loose := v_Max_Loose;
              :InvI_Qty := v_Qty;
              :InvI_Loose := v_Loose;
              :InvI_Rate := v_Rate;
              :InvI_Remarks :=v_csd_Remarks;
              :Ref_Doc_Item := 'Loaded';
            
              Next_Record;
             End Loop;
             Close CurCs;
             first_record;
           ElsIf v_Alert = Alert_Button2 Then
             Go_BLock('T_Inv_Ref_Doc');  
            GO_ITEM('REF_LOC_CODE');
            Open CurCs2;
            Loop
              Fetch CurCs2 INTO  :InvRD_CsH_Id, :Ref_Loc_Code, :InvH_Ref_Txn_Code, :Ref_No ;
      
              EXIT WHEN CurCs2%NotFound;
     
               Next_Record;      
            End Loop;
            Close CurCs2;  
            first_record; 
          ElsIf     v_Alert = Alert_Button3 Then
            Go_Block('T_Inv_Item');
          End If;
        else
          show_message('INV_ALERT','There is no documents to load');
        End If;
        If v_Ref_Item_Id Is Not Null Then
          Set_Block_Property('T_Inv_ITem', Update_Allowed, Property_False); 
          Set_Block_Property('T_Inv_ITem', Insert_Allowed, Property_False);
          Set_Block_Property('T_Inv_ITem', Delete_Allowed, Property_False);
        end if;
      ElsIf :RADIO_DOC_SELECTION = 'TNDR' Then  --Added By Mojish 02/04/14    
         If Nvl(Fn_Get_Stk_Txn_Param(:InvH_Txn_Code,:Global.Company, 'INV_EN_TENDER_REF'), 'F') = 'N' Then
           Load_Ref_Tndr;
         Else
           Show_Message('Inv_Alert', 'Tender is not enabled!');
         End If;
      End If;
  
      --Set_Item_Property('PB_REF_LOAD', ENABLED, PRoperty_False);
      Set_Item_Property('PB_REF_LOAD', ENABLED, PRoperty_True);
     Else
       Show_Message('Inv_Alert', 'Salesman Not Found!');
     End If;
  End If;
End;
What you getClause Rule Language
on press of DOC_SELECTION_OK:    from CUSTOMER_SALESMAN(INVH_CUST_CODE, INVH_DIVN_CODE, INVH_SMAN_CODE) when (SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)
        # load-fmb-invoice-t-inv-head-doc-selection-ok-press-0    from UOM_1(INVH_CUST_CODE, INVH_LOC_CODE) when ((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and (RADIO_DOC_SELECTION = 'DN')
        # load-fmb-invoice-t-inv-head-doc-selection-ok-press-1    from UOM_2(INVH_CUST_CODE, INVH_DT, INVH_LOC_CODE) when (((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and not (RADIO_DOC_SELECTION = 'DN')) and (RADIO_DOC_SELECTION = 'SO')
        # load-fmb-invoice-t-inv-head-doc-selection-ok-press-2    from UOM_4(INVH_CUST_CODE, INVH_LOC_CODE) when ((((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and not (RADIO_DOC_SELECTION = 'DN')) and not (RADIO_DOC_SELECTION = 'SO')) and (RADIO_DOC_SELECTION = 'SB')
        # load-fmb-invoice-t-inv-head-doc-selection-ok-press-4    exists of CUSTOMER_SALESMAN else "Salesman not allowed for Customer!" when (SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)    show alert CONF_LOAD_ALERT with 'Please select load type for all pending Delivery Notes' when (((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and (RADIO_DOC_SELECTION = 'DN')) and (nvl(UOM_1.COUNT, 0) > 0)    go to T_INV_ITEM when ((((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and (RADIO_DOC_SELECTION = 'DN')) and (nvl(UOM_1.COUNT, 0) > 0)) and (ANSWER.BUTTON = '1')    first record of T_INV_HEAD when ((((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and (RADIO_DOC_SELECTION = 'DN')) and (nvl(UOM_1.COUNT, 0) > 0)) and (ANSWER.BUTTON = '1')    go to REF_LOC_CODE when (((((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and (RADIO_DOC_SELECTION = 'DN')) and (nvl(UOM_1.COUNT, 0) > 0)) and not (ANSWER.BUTTON = '1')) and (ANSWER.BUTTON = '2')    append rows to T_INV_REF_DOC in loop-fmb-invoice-t-inv-head-doc-selection-ok-0 when (((((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and (RADIO_DOC_SELECTION = 'DN')) and (nvl(UOM_1.COUNT, 0) > 0)) and not (ANSWER.BUTTON = '1')) and (ANSWER.BUTTON = '2')    first record of T_INV_HEAD when (((((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and (RADIO_DOC_SELECTION = 'DN')) and (nvl(UOM_1.COUNT, 0) > 0)) and not (ANSWER.BUTTON = '1')) and (ANSWER.BUTTON = '2')    go to T_INV_ITEM when ((((((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and (RADIO_DOC_SELECTION = 'DN')) and (nvl(UOM_1.COUNT, 0) > 0)) and not (ANSWER.BUTTON = '1')) and not (ANSWER.BUTTON = '2')) and (ANSWER.BUTTON = '3')    warn "There is no documents to load" when (((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and (RADIO_DOC_SELECTION = 'DN')) and not (nvl(UOM_1.COUNT, 0) > 0)    show alert CONF_LOAD_ALERT with 'Please select load type for all pending Sales Orders' when ((((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and not (RADIO_DOC_SELECTION = 'DN')) and (RADIO_DOC_SELECTION = 'SO')) and (nvl(UOM_2.COUNT, 0) > 0)    go to T_INV_REF_DOC when ((((((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and not (RADIO_DOC_SELECTION = 'DN')) and (RADIO_DOC_SELECTION = 'SO')) and (nvl(UOM_2.COUNT, 0) > 0)) and not (ANSWER.BUTTON = '1')) and (ANSWER.BUTTON = '2')    go to REF_LOC_CODE when ((((((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and not (RADIO_DOC_SELECTION = 'DN')) and (RADIO_DOC_SELECTION = 'SO')) and (nvl(UOM_2.COUNT, 0) > 0)) and not (ANSWER.BUTTON = '1')) and (ANSWER.BUTTON = '2')    first record of T_INV_HEAD when ((((((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and not (RADIO_DOC_SELECTION = 'DN')) and (RADIO_DOC_SELECTION = 'SO')) and (nvl(UOM_2.COUNT, 0) > 0)) and not (ANSWER.BUTTON = '1')) and (ANSWER.BUTTON = '2')    go to T_INV_ITEM when (((((((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and not (RADIO_DOC_SELECTION = 'DN')) and (RADIO_DOC_SELECTION = 'SO')) and (nvl(UOM_2.COUNT, 0) > 0)) and not (ANSWER.BUTTON = '1')) and not (ANSWER.BUTTON = '2')) and (ANSWER.BUTTON = '3')    warn "There is no documents to load" when ((((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and not (RADIO_DOC_SELECTION = 'DN')) and (RADIO_DOC_SELECTION = 'SO')) and not (nvl(UOM_2.COUNT, 0) > 0)    show alert CONF_LOAD_ALERT with 'Please select load type for all pending Service Bills' when (((((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and not (RADIO_DOC_SELECTION = 'DN')) and not (RADIO_DOC_SELECTION = 'SO')) and (RADIO_DOC_SELECTION = 'SB')) and (nvl(UOM_4.COUNT, 0) > 0)    first record of T_INV_HEAD when ((((((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and not (RADIO_DOC_SELECTION = 'DN')) and not (RADIO_DOC_SELECTION = 'SO')) and (RADIO_DOC_SELECTION = 'SB')) and (nvl(UOM_4.COUNT, 0) > 0)) and (ANSWER.BUTTON = '1')    go to T_INV_REF_DOC when (((((((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and not (RADIO_DOC_SELECTION = 'DN')) and not (RADIO_DOC_SELECTION = 'SO')) and (RADIO_DOC_SELECTION = 'SB')) and (nvl(UOM_4.COUNT, 0) > 0)) and not (ANSWER.BUTTON = '1')) and (ANSWER.BUTTON = '2')    go to REF_LOC_CODE when (((((((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and not (RADIO_DOC_SELECTION = 'DN')) and not (RADIO_DOC_SELECTION = 'SO')) and (RADIO_DOC_SELECTION = 'SB')) and (nvl(UOM_4.COUNT, 0) > 0)) and not (ANSWER.BUTTON = '1')) and (ANSWER.BUTTON = '2')    append rows to T_INV_REF_DOC in loop-fmb-invoice-t-inv-head-doc-selection-ok-1 when (((((((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and not (RADIO_DOC_SELECTION = 'DN')) and not (RADIO_DOC_SELECTION = 'SO')) and (RADIO_DOC_SELECTION = 'SB')) and (nvl(UOM_4.COUNT, 0) > 0)) and not (ANSWER.BUTTON = '1')) and (ANSWER.BUTTON = '2')    first record of T_INV_HEAD when (((((((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and not (RADIO_DOC_SELECTION = 'DN')) and not (RADIO_DOC_SELECTION = 'SO')) and (RADIO_DOC_SELECTION = 'SB')) and (nvl(UOM_4.COUNT, 0) > 0)) and not (ANSWER.BUTTON = '1')) and (ANSWER.BUTTON = '2')    go to T_INV_ITEM when ((((((((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and not (RADIO_DOC_SELECTION = 'DN')) and not (RADIO_DOC_SELECTION = 'SO')) and (RADIO_DOC_SELECTION = 'SB')) and (nvl(UOM_4.COUNT, 0) > 0)) and not (ANSWER.BUTTON = '1')) and not (ANSWER.BUTTON = '2')) and (ANSWER.BUTTON = '3')    warn "There is no documents to load" when (((((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and not (RADIO_DOC_SELECTION = 'DN')) and not (RADIO_DOC_SELECTION = 'SO')) and (RADIO_DOC_SELECTION = 'SB')) and not (nvl(UOM_4.COUNT, 0) > 0)    call LOAD_REF_TNDR() when ((((((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and not (RADIO_DOC_SELECTION = 'DN')) and not (RADIO_DOC_SELECTION = 'SO')) and not (RADIO_DOC_SELECTION = 'SB')) and (RADIO_DOC_SELECTION = 'TNDR')) and (FN_GET_STK_TXN_PARAM(INVH_TXN_CODE, GLOBAL.COMPANY, 'INV_EN_TENDER_REF') = 'N')    warn "Tender is not enabled!" when ((((((SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)) and not (RADIO_DOC_SELECTION = 'DN')) and not (RADIO_DOC_SELECTION = 'SO')) and not (RADIO_DOC_SELECTION = 'SB')) and (RADIO_DOC_SELECTION = 'TNDR')) and not (FN_GET_STK_TXN_PARAM(INVH_TXN_CODE, GLOBAL.COMPANY, 'INV_EN_TENDER_REF') = 'N')    state enable PB_REF_LOAD when (SYSTEM.RECORD_STATUS <> 'QUERY') and is_filled(INVH_SMAN_CODE)    warn "Salesman Not Found!" when (SYSTEM.RECORD_STATUS <> 'QUERY') and not is_filled(INVH_SMAN_CODE)
# 12 statements did not convert.#   line 199
#   hide_window('INVH_DOC_SELECTION');
#   reason: HIDE_WINDOW is a Forms built-in, which no FormConnect document declares because no database holds it, and no program unit of this form declares one either, so there is no body to inline under the caller's point and item and nothing to bridge to#   line 225
#   Loop
#                 Fetch CurDN INTO v_Ref_Doc_Id, v_Loc_Code, v_Txn_Code, v_Doc_No, v_SMan_Code, v_Cust_Code, v_HDisc_Perc, v_HDisc_Amt, v_Plu_Code,
#                 v_Item_Code, v_Item_Name, v_UOM_Code, v_Max_Loose, V_Remarks,
#                 v_Qty, v_Loose,v_Foc_Qty,v_Foc_Ls, v_Rate, v_Disc_Perc, v_Disc_Amt, v_Ref_Item_Id,
#                 v_ref_item_code,v_item_alt_name; 
#                 
#                 EXIT WHEN CurDN%NotFound;
#                  
#                 If v_Old_Id <> v_Ref_Doc_Id Then
#                   Go_BLock('T_Inv_Ref_Doc');
#                   :Ref_Loc_Code := v_Loc_Code;
#                   :InvH_Ref_Txn_Code := v_Txn_Code;
#                   :Ref_No := v_Doc_No;
#                    :InvRD_DNH_Id := v_Ref_Doc_Id;
#                   :InvRD_Close_SO := 'Y';
#                   :Ref_SMan_Code := v_SMan_Code;
#                   :FLAG := 'Y';
#                   
#                   Next_Record;
#         
#                   v_Old_Id := v_Ref_Doc_Id;
#                   Go_Block('T_Inv_Item');
#                    
#                 End If;
#      
#        
#        
#       If :INVH_CUST_CODE Is Not Null Then
#         Select Count(*) Into V_Pl_Comp_Cnt From M_Customer_Company  Where Custcomp_Comp_Code=:Global.Company And Custcomp_Cust_Code=:INVH_CUST_CODE;
#         If V_Pl_Comp_Cnt=1 Then 
#          Select Custcomp_Plh_Code Into :InvI_Plu_Code From M_Customer_Company  Where Custcomp_Comp_Code=:Global.Company And Custcomp_Cust_Code=:INVH_CUST_CODE;
#         End If;
#       End If;
#                 :InvI_Loaded_Fm_DN :='Y'; 
#                 :Prom_Enabled := Nvl(:Frm_En_Sales_Promo, 'N');     
#                 :InvI_DN_Doc_Item_Id := v_Ref_Item_Id;
#                 :Old_Item_Code := v_Item_Code;
#                 :Old_UOM_Code := v_UOM_Code;
#                 :InvI_Plu_Code := v_Plu_Code;
#                 :InvI_Item_Code := v_Item_Code;
#                 :Item_Name := v_Item_Name;
#                 :InvI_UOM_Code := v_UOM_Code;
#                 :Max_Loose := v_Max_Loose;
#                 :Invi_Remarks := V_Remarks;
#                 :InvI_Qty := v_Qty;
#                 :InvI_Loose := v_Loose;
#                 :InvI_Rate := v_Rate;
#                 :Invi_Foc_Qty :=v_Foc_Qty;
#                 :Invi_Foc_Loose  := v_Foc_Ls;
#                 :InvI_Disc_Perc := v_Disc_Perc;
#                 :InvI_Disc_Amt := v_Disc_Amt;
#                 :invi_ref_item_code := v_ref_item_code; 
#                 :invi_item_alt_name := v_item_alt_name; 
#                 :Ref_Doc_Item := 'Loaded';
#                 :InvI_Loaded_Fm_DN :='Y';
#                  :InvI_Id := Fn_Get_Next_Id('Inv_Item');
#                 :InvI_Cr_User := :Global.User;
#                 :InvI_Cr_Dt := :Frm_Time_Zone;   
#       
#                 Next_Record;
#               End Loop;
#   reason: it moves to T_INV_REF_DOC and T_INV_ITEM inside the loop, so it acts on two blocks in one body and a collection operation names one collection#   line 330
#   If v_Ref_Item_Id Is Not Null Then
#     Set_Block_Property('T_Inv_ITem', Update_Allowed, Property_False);
#     Set_Block_Property('T_Inv_ITem', Insert_Allowed, Property_False);
#     Set_Block_Property('T_Inv_ITem', Delete_Allowed, Property_False);
#   End If;
#   reason: the guard reads the local V_REF_ITEM_ID, which a branch above it writes on one path only, so what it holds here depends on which path ran#   line 337
#   hide_window('INVH_DOC_SELECTION');
#   reason: HIDE_WINDOW is a Forms built-in, which no FormConnect document declares because no database holds it, and no program unit of this form declares one either, so there is no body to inline under the caller's point and item and nothing to bridge to#   line 384
#   Loop
#                 Fetch CurSO INTO v_Ref_Doc_Id, v_Loc_Code, v_Txn_Code, v_Doc_No, v_SMan_Code, v_Cust_Code, v_HDisc_Perc, v_HDisc_Amt, v_Item_Code, v_Item_Name, v_UOM_Code, v_Max_Loose, 
#                 v_Qty, v_Loose,v_foc_Qty, v_foc_Ls, v_Rate, v_Disc_Perc, v_Disc_Amt, v_Ref_Item_Id,
#                 v_ref_Item_Code, v_Item_alt_Name,v_Loc_Fm,v_Batch,v_Exp_Dt, :InvI_Prom_Item_Id, :En_Sl,:Invi_Tndr_Doc_Item_Id,v_Tcs,v_Item_Desc ; 
#   
#                 EXIT WHEN CurSO%NotFound;
#                 
#                 If v_Old_Id <> v_Ref_Doc_Id Then
#                   Go_BLock('T_Inv_Ref_Doc');
#                   :Ref_Loc_Code := v_Loc_Code;
#                   :InvH_Ref_Txn_Code := v_Txn_Code;
#                   :Ref_No := v_Doc_No;
#                    :InvRD_SOH_Id := v_Ref_Doc_Id;
#                   :InvRD_Close_SO := 'Y';
#                   :Ref_SMan_Code := v_SMan_Code;
#                   :FLAG := 'Y';
#                   :InvH_Tcs := v_Tcs;
#                   Next_Record;
#           
#                   v_Old_Id := v_Ref_Doc_Id;
#                   
#                                
#                   
#                   Validate_Invoice;    
#                   
#                   Go_Block('T_Inv_Item');
#                   Set_Item_Property('PB_REF_LOAD', ENABLED, PRoperty_True);
#                 End If;
#                 
#                 if :Frm_Validate_Stock = 'Y' then
#                   v_Qty_BU := Fn_Get_UnConf_Stock(:Global.Company, :InvH_Loc_Code, v_Item_Code, Null);
#                 
#                   If v_Qty_BU < Nvl(v_Qty * v_Max_Loose, 0) + Nvl(v_Loose, 0) Then
#                     If v_Qty_BU <= 0 Then
#                       v_Qty := 0;
#                       v_Loose := 0;
#                     ElsIf v_Qty_BU < 1 Then
#                       v_Qty := v_Qty_BU;
#                       v_Loose := 0;
#                     Else
#                       v_Qty := Floor(v_Qty_BU/v_Max_Loose);
#                       v_Loose := v_Qty_BU - Nvl(v_Qty * v_Max_Loose, 0);
#                     End If;
#                   End If;
#                 end if;
#                 
#                 :Prom_Enabled := Nvl(:Frm_En_Sales_Promo, 'N');     
#                 :InvI_SO_Doc_Item_Id := v_Ref_Item_Id;
#                 :Old_Item_Code := v_Item_Code;
#                 :Old_UOM_Code := v_UOM_Code;
#                 :InvI_Plu_Code := v_Plu_Code;
#                 :InvI_Item_Code := v_Item_Code;
#                 :Item_Name := v_Item_Name;
#                 :InvI_UOM_Code := v_UOM_Code;
#                 :Max_Loose := v_Max_Loose;
#                 :InvI_Qty := v_Qty;
#                 :InvI_Loose := v_Loose;
#                 :InvI_foc_Qty := v_foc_Qty;
#                 :InvI_foc_Loose := v_foc_Ls;
#                 :InvI_Rate := v_Rate;
#                 :InvI_Disc_Perc := v_Disc_Perc;
#                 :InvI_Disc_Amt := v_Disc_Amt;
#                 :InvI_ref_Item_Code := v_ref_Item_Code;
#                 :invi_item_alt_name := v_Item_alt_Name;
#                 :Ref_Doc_Item := 'Loaded';
#                 :InvI_Id := Fn_Get_Next_Id('Inv_Item');
#                 :InvI_Cr_User := :Global.User;
#                 :InvI_Cr_Dt := :Frm_Time_Zone;
#                 :InvI_Loc_Fm  := v_Loc_Fm;
#                 :InvI_Batch   := v_Batch;
#                 :InvI_Exp_Dt  := v_Exp_Dt;
#                 :Invi_item_Desc := v_Item_Desc;
#                 If Nvl(:InvI_Prom_Item_Id, 0) > 0 Then    
#                   Select PromH_No, PromH_Id Into :PromH_No, :PromH_Id From T_Prom_Head, T_Prom_Item 
#                   Where PromI_PromH_Id = PromH_Id And PromH_Comp_Code = :Global.Company 
#                   And PromI_Id = :InvI_Prom_Item_Id;
#                 End If;
#                 Next_Record;
#               End Loop;
#   reason: it moves to T_INV_REF_DOC and T_INV_ITEM inside the loop, so it acts on two blocks in one body and a collection operation names one collection#   line 492
#   Loop
#                 Fetch CurSO2 INTO :InvRD_SoH_Id, :Ref_Loc_Code, :InvH_Ref_Txn_Code, :Ref_No, :Ref_SMan_Code ;
#   
#                 If Nvl(:Comp_Os, 0) + Nvl(:Invrd_Comp_So_Total,0) > Nvl(:Comp_Cr_Limit, 0) AND Nvl(:Frm_InvH_Btrn_Flag, 'D') <> 'B' Then
#                   Show_Message('Inv_Alert', 'Company Credit Limit Exceeded!');
#                    Raise Form_Trigger_Failure; 
#                 ElsIf Nvl(:Comp_Os, 0) + Nvl(:Invrd_Comp_So_Total,0) > Nvl(:Comp_Warn_Limit, 0) Then
#                    
#                   NULL;
#                 End If;
#   
#                  
#                 If :Invh_Divn_Code is Not Null and Nvl(:Divn_Cr_Limit, 0) > 0 AND Nvl(:Frm_InvH_Btrn_Flag, 'D') <> 'B' Then
#                   If Nvl(:Divn_Os, 0)  + Nvl(:Invrd_Divn_So_Total,0) > Nvl(:Divn_Cr_Limit, 0) Then
#                     Show_Message('Inv_Alert', 'Division Credit Limit Exceeded!');
#                     Raise Form_Trigger_Failure; 
#                     NULL;
#                   ElsIf Nvl(:Divn_Os, 0) + Nvl(:Invrd_Divn_So_Total,0) > Nvl(:Divn_Warn_Limit, 0) Then
#                     Show_Message('Inv_Alert', 'Nearing Division Credit Limit!');
#                   End If;
#                 End If;
#   
#                 EXIT WHEN CurSo2%NotFound;
#   
#                  Next_Record;      
#                   
#                  
#                  
#                  
#                   
#               End Loop;
#   reason: its body deny, deny, warn beside writing the record it appends, and an append states the values of a row and does nothing else#   line 533
#   If v_Ref_Item_Id Is Not Null Then
#     disable_details;
#   End If;
#   reason: the guard reads the local V_REF_ITEM_ID, which a branch above it writes on one path only, so what it holds here depends on which path ran#   line 557
#   hide_window('INVH_DOC_SELECTION');
#   reason: HIDE_WINDOW is a Forms built-in, which no FormConnect document declares because no database holds it, and no program unit of this form declares one either, so there is no body to inline under the caller's point and item and nothing to bridge to#   line 576
#   Loop
#                  Fetch CurCs INTO v_Ref_Doc_Id, v_Loc_Code, v_Txn_Code, v_Doc_No,  v_Cust_Code,  v_Item_Code, v_Item_Name, v_UOM_Code, v_Max_Loose, 
#                 v_Qty, v_Loose, v_Rate, v_Disc_Perc, v_Disc_Amt, v_Ref_Item_Id,v_csd_Remarks;
#                 
#                 EXIT WHEN CurCs%NotFound;      
#                 If v_Old_Id <> v_Ref_Doc_Id Then
#                   Go_BLock('T_Inv_Ref_Doc');
#                   :Ref_Loc_Code := v_Loc_Code;
#                   :InvH_Ref_Txn_Code := v_Txn_Code;
#                   :Ref_No := v_Doc_No;
#                    :InvRD_CsH_Id := v_Ref_Doc_Id;
#                    :FLAG := 'Y';
#                   
#                   Next_Record;
#                   v_Old_Id := v_Ref_Doc_Id;
#                    
#                     Go_Block('T_Inv_Item');
#                   Set_Item_Property('PB_REF_LOAD', ENABLED, PRoperty_True);
#                 End If;
#                 
#                 v_Qty_BU := Fn_Get_UnConf_Stock(:Global.Company, :InvH_Loc_Code, v_Item_Code, Null);
#                 
#                 If v_Qty_BU < Nvl(v_Qty * v_Max_Loose, 0) + Nvl(v_Loose, 0) Then
#                   If v_Qty_BU <= 0 Then
#                     v_Qty := 0;
#                     v_Loose := 0;
#                   ElsIf v_Qty_BU < 1 Then
#                     v_Qty := v_Qty_BU;
#                     v_Loose := 0;
#                   Else
#                     v_Qty := Floor(v_Qty_BU/v_Max_Loose);
#                      v_Loose := v_Qty_BU - Nvl(v_Qty * v_Max_Loose, 0);
#                   End If;
#                 End If;
#                 
#                 :InvI_CS_Doc_Item_Id := v_Ref_Item_Id;
#                 :Old_Item_Code := v_Item_Code;
#                 :Old_UOM_Code := v_UOM_Code;
#                 :InvI_Item_Code := v_Item_Code;
#                 :Item_Name := v_Item_Name;
#                 :InvI_UOM_Code := v_UOM_Code;
#                 :Max_Loose := v_Max_Loose;
#                 :InvI_Qty := v_Qty;
#                 :InvI_Loose := v_Loose;
#                 :InvI_Rate := v_Rate;
#                 :InvI_Remarks :=v_csd_Remarks;
#                 :Ref_Doc_Item := 'Loaded';
#               
#                 Next_Record;
#                End Loop;
#   reason: it moves to T_INV_REF_DOC and T_INV_ITEM inside the loop, so it acts on two blocks in one body and a collection operation names one collection#   line 647
#   If v_Ref_Item_Id Is Not Null Then
#     Set_Block_Property('T_Inv_ITem', Update_Allowed, Property_False);
#     Set_Block_Property('T_Inv_ITem', Insert_Allowed, Property_False);
#     Set_Block_Property('T_Inv_ITem', Delete_Allowed, Property_False);
#   End If;
#   reason: the guard reads the local V_REF_ITEM_ID, which a branch above it writes on one path only, so what it holds here depends on which path ran#   Select Count (*) Into V_So_Tndr_Cnt From (Select Distinct Soh_Tndr_Doc_Id   FROM M_UOM, M_Item, T_SO_Item, T_SO_Head
#     WHERE SOI_SOH_Id = SOH_Id
#     AND Item_Code = SOI_Item_Code
#     AND UOM_Code = SOI_UOM_Code
#     AND (Nvl(SOI_REV_QTY*UOM_Max_Loose, 0) + Nvl(SOI_REV_LOOSE, 0) +
#     Nvl(SOI_REV_Foc_QTY*UOM_Max_Loose, 0) + Nvl(SOI_REV_FOC_LOOSE, 0)) - (Nvl(SOI_Inv_Qty_BU, 0)+Nvl(SOI_Inv_Foc_Qty_BU, 0))   > 0
#     AND SOH_Comp_Code = :Global.Company
#     AND SOH_Cust_Code = :InvH_Cust_Code
#     AND SoH_Loc_Code =:Invh_Loc_Code
#     And SoH_Sman_Code = :InvH_Sman_Code   
#     AND SOH_Load_Status = 'N'
#     AND (SOH_APPROVAL_STATUS ='F' OR NVL(Fn_Get_Stk_Txn_Param(SOH_Txn_Code,Soh_Comp_Code,'SO_REQ_APPROVAL'),'N') ='N')
#     AND SOH_Valid_Till >= :InvH_Dt
#     AND (NVL(Fn_Get_Stk_Txn_Param(SOH_Txn_Code,Soh_Comp_Code,'SO_REQ_WPL'),'N') ='N' OR
#         EXISTS(SELECT 'X' From T_Wpl_Head,T_Wpl_Ref_Doc Where WPLH_Id =Wplrd_Wplh_Id  and Wplrd_Soh_Id =Soh_Id
#         AND Nvl(WPLH_Status,'N') ='F'
#         AND NOT EXISTS(SELECT 'x' FROM T_Wpl_Item Where Wpli_Wplh_Id =Wplh_Id and Nvl(wpli_Status,'N') ='N'))))
#   reason: its query has no WHERE clause, so nothing ties the row it reads to a value#   first_record;
#   Show_Message('Inv_Alert', 'Please select the required SO,More than one tender can not load!');
#   reason: the query they read is refused above, so a clause over it would read no row

27 clauses converted, 12 statements refused