Skip to main content
Question

How to set Investment on Fixed asset upon loading in

  • December 1, 2025
  • 0 replies
  • 3 views

Forum|alt.badge.img+5
  • Sidekick (Customer)

In IFS Cloud (24R2), we have a Migration Job to load our Fixed assets in. We want a custom PLSQL job to do the equivalent of clicking the “Investment” command button, but we are struggling to get this to work.

We have tried running set_investment from finite_state_machine, and also by creating a background job. Neither work.

Here is my code (from FaObject-Cust.plsql):

 

@Override
PROCEDURE Finite_State_Machine___ (
   rec_   IN OUT fa_object_tab%ROWTYPE,
   event_ IN     VARCHAR2,
   attr_  IN OUT VARCHAR2 )
IS
   info_       VARCHAR2(32000) := NULL; 

   rowkey_      VARCHAR2(32000) := NULL; 
   objid_       VARCHAR2(32000) := NULL; 
   objversion_  VARCHAR2(32000) := NULL; 

BEGIN

   --Add pre-processing code here
   super(rec_, event_, attr_);
   --Add post-processing code here


      IF rec_.rowstate = 'SystemStart'
      THEN


         Fa_Object_API.Get_Id_Version_By_Keys___ (   objid_  ,   objversion_,   rec_.company,  rec_.object_id);

--method #1
   
         Client_SYS.Clear_Attr(attr_);
         Client_SYS.Add_To_Attr('ROWSTATE',      rec_.rowstate,      attr_);
--
         Client_SYS.Add_To_Attr('OBJID',      objid_,      attr_);
         Client_SYS.Add_To_Attr('OBJVERSION', objversion_, attr_);
         Client_SYS.Add_To_Attr('ROWKEY',     rowkey_,     attr_);
         Transaction_Sys.Deferred_Call( procedure_name_ => 'fa_object_api.c_set_investment',   
                                        argument_type_db_ => 'ATTRIBUTE',
                                                         arguments_ => attr_,                          
                                                         description_ => 'Set investment flag for '||rec_.object_id );


--method #2
      Client_SYS.Clear_Attr(attr_);
      Client_SYS.Add_To_Attr('ACTION', 'INVESTMENT', attr_);
      Client_SYS.Add_To_Attr('OBJID', objid_, attr_);
      Client_SYS.Add_To_Attr('OBJVERSION', objversion_, attr_);
      Client_SYS.Add_To_Attr('ACTION', 'INVESTMENT', attr_);

      Transaction_SYS.Deferred_Call(procedure_name_    => 'Fa_Object_API.Set_Investment__;',
                                    argument_type_db_  => 'ATTRIBUTE',
                                    arguments_         => attr_,
                                    description_       => 'Move FA object to Investment state');

      END IF;

END Finite_State_Machine___;


PROCEDURE c_set_investment(attr_ IN VARCHAR2)
IS


   info_       VARCHAR2(32000) := NULL; 
   attr3_      VARCHAR2(32000);
   objid_      VARCHAR2(32000) := NULL; 
   objversion_ VARCHAR2(32000) := NULL; 
   rowkey_     VARCHAR2(32000) := NULL; 

CURSOR get_data IS
   SELECT rowid, rowversion
   FROM fa_object_tab
   WHERE rowkey = rowkey_;

BEGIN

NULL;

   Transaction_SYS.Log_Status_Info(' rowkey_ =  ' ||rowkey_, 'INFO');

   objid_      := Client_SYS.Get_Item_Value('OBJID',      attr_);
   objversion_ := Client_SYS.Get_Item_Value('OBJVERSION', attr_);

   Client_SYS.Clear_Attr(attr3_);
   Client_SYS.Add_To_Attr('OBJID',      objid_          , attr3_);
   Client_SYS.Add_To_Attr('OBJVERSION', objversion_     , attr3_);
   Client_SYS.Add_To_Attr('ACTION',     'DO'            , attr3_);
      
   Transaction_SYS.Log_Status_Info(' attr3_ =  ' ||attr3_, 'INFO');
   fa_object_api.Set_Investment__(info_,objid_, objversion_, attr3_, 'DO' );

END c_set_investment;
 

Incidentally, if we go to the UI after running the mig job to load the Fixed Asset in using the Mig Job, we can click on the “Investment” command button.

 

BTW , we are trying to automate this as our FA manager may load hundred of records at a time.

 

Any thoughts?