2023-09-11

[Oracle]How to Add FA

參考資料http://www.shareoracleapps.com/2014/08/api-to-add-asset-to-fixed-assets-r12-fa-addition-pub-do-addition.html
DECLARE
  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_DESC_REC      FA_API_TYPES.ASSET_DESC_REC_TYPE;
  L_ASSET_CAT_REC       FA_API_TYPES.ASSET_CAT_REC_TYPE;
  L_ASSET_TYPE_REC      FA_API_TYPES.ASSET_TYPE_REC_TYPE;
  L_ASSET_HIERARCHY_REC FA_API_TYPES.ASSET_HIERARCHY_REC_TYPE;
  L_ASSET_FIN_REC       FA_API_TYPES.ASSET_FIN_REC_TYPE;
  L_ASSET_DEPRN_REC     FA_API_TYPES.ASSET_DEPRN_REC_TYPE;
  L_ASSET_DIST_REC      FA_API_TYPES.ASSET_DIST_REC_TYPE;
  L_ASSET_DIST_TBL      FA_API_TYPES.ASSET_DIST_TBL_TYPE;
  L_INV_TBL             FA_API_TYPES.INV_TBL_TYPE;
  L_INV_RATE_TBL        FA_API_TYPES.INV_RATE_TBL_TYPE;

  L_RETURN_STATUS VARCHAR2(1);
  L_MESG_COUNT    NUMBER;
  L_MESG          VARCHAR2(4000);
BEGIN

  DBMS_OUTPUT.ENABLE(10000000);

  FA_SRVR_MSG.INIT_SERVER_MESSAGE;

  -- desc info
  L_ASSET_DESC_REC.ASSET_NUMBER   := 'TEST0911-1'; --如要自動編號將該行註解,自行定義與TAG_NUMBER填寫一樣
  L_ASSET_DESC_REC.TAG_NUMBER     := 'TEST0911-1'; --資產編號
  L_ASSET_DESC_REC.SERIAL_NUMBER  := NULL; --序號(沒有使用)
  L_ASSET_DESC_REC.IN_USE_FLAG    := 'YES'; --使用中
  L_ASSET_DESC_REC.NEW_USED       := 'NEW'; --購買
  L_ASSET_DESC_REC.OWNED_LEASED   := 'OWNED'; --所有權
  L_ASSET_DESC_REC.CURRENT_UNITS  := 1; --單位量
  L_ASSET_DESC_REC.DESCRIPTION    := 'Shareoracleapps Test Asset'; -- 摘要
  L_ASSET_DESC_REC.ASSET_KEY_CCID := NULL; --資產索引(沒有使用)

  -- Valid Value in FA_CATEGORIES
  L_ASSET_CAT_REC.CATEGORY_ID := '5064'; --A:土地-A:土地-

  --type info
  L_ASSET_TYPE_REC.ASSET_TYPE := 'CAPITALIZED';--資本化

  -- Asset Financial Information
  L_ASSET_FIN_REC.SET_OF_BOOKS_ID         := 1003;
  L_ASSET_FIN_REC.DATE_PLACED_IN_SERVICE  := TO_DATE('2023-01-01','YYYY-MM-DD'); --啟用日期
  L_ASSET_FIN_REC.DEPRN_START_DATE        := TO_DATE('2023-01-01','YYYY-MM-DD'); --攤派日期
  L_ASSET_FIN_REC.DEPRN_METHOD_CODE       := 'STL'; --折舊方式
  L_ASSET_FIN_REC.LIFE_IN_MONTHS          := 240; --折舊月數
  L_ASSET_FIN_REC.ORIGINAL_COST           := 50000; --原始成本
  L_ASSET_FIN_REC.COST                    := 50000; --成本
  L_ASSET_FIN_REC.PRORATE_CONVENTION_CODE := 'TW_THIS_M'; --攤派方式
  L_ASSET_FIN_REC.SALVAGE_TYPE            := 'AMT'; --殘值類型
  L_ASSET_FIN_REC.SALVAGE_VALUE           := 0; --殘值
  L_ASSET_FIN_REC.PERCENT_SALVAGE_VALUE   := NULL; --殘值百分比
  L_ASSET_FIN_REC.DEPRECIATE_FLAG         := 'YES'; --折舊
  L_ASSET_FIN_REC.ORIG_DEPRN_START_DATE   := NULL; --原始折舊開始日期(沒有使用)

  -- deprn info
  L_ASSET_DEPRN_REC.SET_OF_BOOKS_ID     := 1003;
  L_ASSET_DEPRN_REC.YTD_DEPRN           := 20000; --年度累積折舊
  L_ASSET_DEPRN_REC.DEPRN_RESERVE       := 20000; --累積折舊
  L_ASSET_DEPRN_REC.BONUS_YTD_DEPRN     := 0; --年加速折舊
  L_ASSET_DEPRN_REC.BONUS_DEPRN_RESERVE := 0; --總加速折舊

  -- Valid value in FA_BOOK_CONTROLS
  L_ASSET_HDR_REC.BOOK_TYPE_CODE := 'TW资产帐'; --帳本

  -- distribution info
  L_ASSET_DIST_REC.UNITS_ASSIGNED := 1; --單位量
  
  -- Valid Record from GL Code cominations with record type = 'E' (Expense)
  L_ASSET_DIST_REC.EXPENSE_CCID := 9241; --費用科目
  
  -- Valid Value in FA Locations   
  L_ASSET_DIST_REC.LOCATION_CCID := 3005; --放置地點(F00000-行政管理部)
  L_ASSET_DIST_REC.ASSIGNED_TO := NULL;
  L_ASSET_DIST_REC.TRANSACTION_UNITS := L_ASSET_DIST_REC.UNITS_ASSIGNED;
  L_ASSET_DIST_TBL(1) := L_ASSET_DIST_REC;

  -- call the api 
  FA_ADDITION_PUB.DO_ADDITION(
                              -- std parameters
                              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,
                              P_CALLING_FN       => NULL,
                              X_RETURN_STATUS    => L_RETURN_STATUS,
                              X_MSG_COUNT        => L_MESG_COUNT,
                              X_MSG_DATA         => L_MESG,
                              -- api parameters
                              PX_TRANS_REC           => L_TRANS_REC,
                              PX_DIST_TRANS_REC      => L_DIST_TRANS_REC,
                              PX_ASSET_HDR_REC       => L_ASSET_HDR_REC,
                              PX_ASSET_DESC_REC      => L_ASSET_DESC_REC,
                              PX_ASSET_TYPE_REC      => L_ASSET_TYPE_REC,
                              PX_ASSET_CAT_REC       => L_ASSET_CAT_REC,
                              PX_ASSET_HIERARCHY_REC => L_ASSET_HIERARCHY_REC,
                              PX_ASSET_FIN_REC       => L_ASSET_FIN_REC,
                              PX_ASSET_DEPRN_REC     => L_ASSET_DEPRN_REC,
                              PX_ASSET_DIST_TBL      => L_ASSET_DIST_TBL,
                              PX_INV_TBL             => L_INV_TBL);

  --dump messages
  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, 250);
    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, 250);
      DBMS_OUTPUT.PUT_LINE(L_MESG);
    END LOOP;
    FND_MSG_PUB.DELETE_MSG();
  END IF;

  IF (L_RETURN_STATUS <> FND_API.G_RET_STS_SUCCESS) THEN
    DBMS_OUTPUT.PUT_LINE('FAILURE');
  ELSE
    DBMS_OUTPUT.PUT_LINE('SUCCESS');
    DBMS_OUTPUT.PUT_LINE('ASSET_ID :' || TO_CHAR(L_ASSET_HDR_REC.ASSET_ID));
    DBMS_OUTPUT.PUT_LINE('ASSET_NUMBER :' || L_ASSET_DESC_REC.ASSET_NUMBER);
  END IF;

END;
/

沒有留言:

張貼留言