Thursday, 21 December 2017

Fixed Asset Retirement and cost adjustment using API


API For Cost Adjsutment

/* Formatted on 2013/05/06 13:01 (Formatter Plus v4.8.8) */
declare
  l_trans_rec                 fa_api_types.trans_rec_type;
  l_asset_hdr_rec             fa_api_types.asset_hdr_rec_type;
  l_asset_fin_rec_adj         fa_api_types.asset_fin_rec_type;
  l_asset_fin_rec_new         fa_api_types.asset_fin_rec_type;
  l_asset_fin_mrc_tbl_new     fa_api_types.asset_fin_tbl_type;
  l_inv_trans_rec             fa_api_types.inv_trans_rec_type;
  l_inv_tbl                   fa_api_types.inv_tbl_type;
  l_inv_rate_tbl              fa_api_types.inv_rate_tbl_type;
  l_asset_deprn_rec_adj       fa_api_types.asset_deprn_rec_type;
  l_asset_deprn_rec_new       fa_api_types.asset_deprn_rec_type;
  l_asset_deprn_mrc_tbl_new   fa_api_types.asset_deprn_tbl_type;
  l_inv_rec                   fa_api_types.inv_rec_type;
  l_group_reclass_options_rec fa_api_types.group_reclass_options_rec_type;
  l_return_status             varchar2(1);
  l_mesg_count                number := 0;
  l_mesg_len                  number;
  l_mesg                      varchar2(4000);
  l_asset_id                  number;
  --l_new_life FA_API_TYPES.asset_hr_attr_rec_type;
  cursor cur_fa_addition is
    select a.asset_number, b.cost
      from fa_additions_b a, fa_books_v b
     where a.asset_id = b.asset_id
       and b.cost not in (0)
       and a.asset_number = '5612960'
       and a.attribute4 = '0000002526'
      and not exists (select 1 from fa_retirements fr where fr.asset_id=a.asset_id)            
                  ;
begin
  for c1 in cur_fa_addition loop
    begin
      select asset_id
        into l_asset_id
        from fa_additions_b
       where asset_number = c1.asset_number;
    exception
      when others then
        dbms_output.put_line(' Asset number does not exit' ||
                             c1.asset_number);
    end;
    fnd_profile.put('PRINT_DEBUG', 'Y');
    dbms_output.enable(1000000);
    fa_srvr_msg.init_server_message;
    fa_debug_pkg.initialize;
    --asset header info
    l_asset_hdr_rec.asset_id       := l_asset_id;
    l_asset_hdr_rec.book_type_code := 'CORPORATE BOOK';
    -- fin info
    l_asset_fin_rec_adj.cost := -c1.cost;---c1.asset_cost;
    --l_new_life.life_in_months:=100;
    fa_adjustment_pub.do_adjustment(p_api_version           => 1.0,
                                    p_init_msg_list         => fnd_api.g_false,
                                    p_commit                => fnd_api.g_false,
                                    p_validation_level      => fnd_api.g_valid_level_full,
                                    x_return_status         => l_return_status,
                                    x_msg_count             => l_mesg_count,
                                    x_msg_data              => l_mesg,
                                    p_calling_fn            => 'ADJ_TEST_SCRIPT',
                                    px_trans_rec            => l_trans_rec,
                                    px_asset_hdr_rec        => l_asset_hdr_rec,
                                    p_asset_fin_rec_adj     => l_asset_fin_rec_adj,
                                    x_asset_fin_rec_new     => l_asset_fin_rec_new,
                                    x_asset_fin_mrc_tbl_new => l_asset_fin_mrc_tbl_new,
                                    px_inv_trans_rec        => l_inv_trans_rec,
                                    px_inv_tbl              => l_inv_tbl,
                                    -- px_inv_rate_tbl => l_inv_rate_tbl,
                                    p_asset_deprn_rec_adj       => l_asset_deprn_rec_adj,
                                    x_asset_deprn_rec_new       => l_asset_deprn_rec_new,
                                    x_asset_deprn_mrc_tbl_new   => l_asset_deprn_mrc_tbl_new,
                                    p_group_reclass_options_rec => l_group_reclass_options_rec);
    dbms_output.put_line(l_return_status);
    if (l_return_status <> fnd_api.g_ret_sts_success) then
      fa_debug_pkg.dump_debug_messages(max_mesgs => 0);
      l_mesg_count := fnd_msg_pub.count_msg;
      if l_mesg_count > 0 then
        l_mesg := substr(fnd_msg_pub.get(fnd_msg_pub.g_first,
                                         fnd_api.g_false),
                         1,
                         512);
        dbms_output.put_line(substr(l_mesg, 1, 255));
        for i in 1 .. l_mesg_count - 1 loop
          l_mesg := substr(fnd_msg_pub.get(fnd_msg_pub.g_next,
                                           fnd_api.g_false),
                           1,
                           512);
          dbms_output.put_line(substr(l_mesg, 1, 255));
        end loop;
        fnd_msg_pub.delete_msg();
      end if;
    else
      dbms_output.put_line('SUCCESS');
      commit;
      dbms_output.put_line('THID' ||
                           to_char(l_trans_rec.transaction_header_id));
    end if;
  end loop;
end;

--------------------------------------------------------------------

API for Asset Retirement after making cost to zero

declare


  /* define local record types */
  l_trans_rec FA_API_TYPES.trans_rec_type;
  l_dist_trans_rec FA_API_TYPES.trans_rec_type;
  l_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type;
  l_asset_retire_rec FA_API_TYPES.asset_retire_rec_type;
  l_asset_dist_tbl FA_API_TYPES.asset_dist_tbl_type;
  l_subcomp_tbl FA_API_TYPES.subcomp_tbl_type;
  l_inv_tbl FA_API_TYPES.inv_tbl_type;

  /* misc info */
  l_api_version number := 1;
  l_init_msg_list varchar2(1) := FND_API.G_FALSE;
  l_commit varchar2(1) := FND_API.G_FALSE;
  l_validation_level number := FND_API.G_VALID_LEVEL_FULL;
  l_calling_fn varchar2(80) := 'Retirement test wrapper';

  l_return_status VARCHAR2(1);
  l_mesg_count number := 0;
  l_mesg_len number;
  l_mesg varchar2(4000);
  l_source_line_id number ;
  l_cost_retired number ;
  
   cursor cur_fa_addition is
    select a.asset_number,a.asset_id, b.cost
      from fa_additions_b a, fa_books_v b
     where a.asset_id = b.asset_id
       and b.cost in (0)
       and a.asset_number = '5612960'
       and a.attribute4 = '0000002526'
       and not exists
     (select 1 from fa_retirements fr where fr.asset_id = a.asset_id);
  
  
  
begin
  l_source_line_id :=null ;
  l_cost_retired := 0;
  
  
  dbms_output.disable;
  dbms_output.enable(1000000);
  dbms_output.put_line('begin');

  fnd_profile.put('PRINT_DEBUG', 'Y');
  dbms_output.enable(1000000);

  FA_SRVR_MSG.Init_Server_Message;
  FA_DEBUG_PKG.Initialize;

for i in cur_fa_addition loop
  -- Get standard who info
  l_asset_hdr_rec.asset_id := i.asset_id;
  l_asset_hdr_rec.book_type_code :='&book_type_code';
  l_asset_retire_rec.calculate_gain_loss := FND_API.G_FALSE;

  l_asset_dist_tbl.delete;
  l_inv_tbl(1).source_line_id := l_source_line_id;
  l_inv_tbl(1).fixed_assets_cost := l_cost_retired;

  FA_RETIREMENT_PUB.do_retirement (p_api_version => l_api_version
                                  ,p_init_msg_list => l_init_msg_list
                                   ,p_commit => l_commit
                                   ,p_validation_level => l_validation_level
                                   ,p_calling_fn => l_calling_fn
                                    ,x_return_status => l_return_status
                                    ,x_msg_count => l_mesg_count
                                    ,x_msg_data => l_mesg
                                    ,px_trans_rec => l_trans_rec
                                    ,px_dist_trans_rec => l_dist_trans_rec
                                    ,px_asset_hdr_rec => l_asset_hdr_rec
                                    ,px_asset_retire_rec => l_asset_retire_rec
                                    ,p_asset_dist_tbl => l_asset_dist_tbl
                                    ,p_subcomp_tbl => l_subcomp_tbl
                                    ,p_inv_tbl => l_inv_tbl
                                     );
 

  dbms_output.put_line('Return Status: ' || l_return_status);

  if (fa_cache_pkg.fa_print_debug) then
  fa_debug_pkg.dump_debug_messages(max_mesgs => 0);
  end if;

  l_mesg_count := fnd_msg_pub.count_msg;

  if l_mesg_count > 0 then

  l_mesg := chr(10) || substr(fnd_msg_pub.get
  (fnd_msg_pub.G_FIRST, fnd_api.G_FALSE),
  1, 512);
  dbms_output.put_line(l_mesg);

  for i in 1..(l_mesg_count - 1) loop
  l_mesg :=
  substr(fnd_msg_pub.get
  (fnd_msg_pub.G_NEXT,
  fnd_api.G_FALSE), 1, 512);

  dbms_output.put_line(l_mesg);
  end loop;

  fnd_msg_pub.delete_msg();

  end if;

  if l_return_status = FND_API.G_FALSE then
  dbms_output.put_line('FAILURE');
  rollback;
  else
  dbms_output.put_line('SUCCESS');
  dbms_output.put_line('test wrapper: retirement_id: '||l_asset_retire_rec.retirement_id);
  end if;
end loop ;


end;