PL/SQL2

create or replace PACKAGE BODY KJZ_KJZB01_BTGKJZB0101J17
AS
    C_BATCH_ID                 CONSTANT VARCHAR2 ( 20 ) := 'BTGKJZB0101J17';           --ユーザID
    C_ASSOC_GIKEN_STS_INFO_WK  CONSTANT VARCHAR2 ( 50 ) := '協会技検ステータス更新受付データ';--更新元テーブル名(協会技検ステータス更新受付データ)
    C_ACPT_NUM                 CONSTANT VARCHAR2 ( 10 ) := '受付番号' ;                --受付番号
    C_ERR_NOT                  CONSTANT VARCHAR2 ( 1 ) := '0';                         --0:エラー無り
    C_ERR_YES                  CONSTANT VARCHAR2 ( 1 ) := '1';                         --1:エラー有り
    C_ERR_HAVE                 CONSTANT VARCHAR2 ( 20 ) := '1:エラー有り';            --「1:エラー有り」
    C_CMMT_MSG_ID              CONSTANT CHAR ( 11 ) := 'MSGCOMB000G';                  --コミットメッセージID:MSGCOMB000G
    C_ROBK_MSG_ID              CONSTANT CHAR ( 11 ) := 'MSGCOMB000K';                  --ロールバックメッセージID:MSGCOMB000K
    C_TGT_CNT_MSG_ID           CONSTANT CHAR ( 11 ) := 'MSGCOMB000C';                  --対象件数メッセージID:MSGCOMB000C
    C_MSG_ID_MSGCOMB0040       CONSTANT CHAR ( 11 ) := 'MSGCOMB0040';                  --メッセージID:MSGCOMB0040
    C_MSG_ID_MSGCOMB0001       CONSTANT CHAR ( 11 ) := 'MSGCOMB0001';                  --メッセージID:MSGCOMB0001
    C_MSG_ID_MSGCOMB0073       CONSTANT CHAR ( 11 ) := 'MSGCOMB0073';                  --メッセージID:MSGCOMB0073
    C_MSG_ID_MSGCOMB0074       CONSTANT CHAR ( 11 ) := 'MSGCOMB0074';                  --メッセージID:MSGCOMB0074
    C_MSG_ID_MSGCOMB0075       CONSTANT CHAR ( 11 ) := 'MSGCOMB0075';                  --メッセージID:MSGCOMB0075
    C_6PX4                     CONSTANT CHAR ( 4 ) := '6PX4';                          --データNO:6PX4
    C_6PY4                     CONSTANT CHAR ( 4 ) := '6PY4';                          --データNO:6PY4
    C_6PZ5                     CONSTANT CHAR ( 4 ) := '6PZ5';                          --データNO:6PZ5
    C_KJE_GIKEN_APPSIT_KANZ    CONSTANT VARCHAR2 ( 30 ) := 'KJE_GIKEN_APPSIT_KANZ';    --技検応募状況_漢字
    C_KJE_GIKEN_APPSIT_KANA    CONSTANT VARCHAR2 ( 30 ) := 'KJE_GIKEN_APPSIT_KANA';    --技検応募状況_仮名
    C_KJE_GIKEN_APPSIT_BALLPN  CONSTANT VARCHAR2 ( 30 ) := 'KJE_GIKEN_APPSIT_BALLPN';  --技検応募状況_ボールペン
    C_KJE_GIKEN_APPSIT_PEN     CONSTANT VARCHAR2 ( 30 ) := 'KJE_GIKEN_APPSIT_PEN';     --技検応募状況_ペン
    C_KJE_GIKEN_APPSIT2_PRCPEN CONSTANT VARCHAR2 ( 30 ) := 'KJE_GIKEN_APPSIT2_PRCPEN'; --技検応募状況_実用ボールペン
    P_RETURN_COD               CHAR ( 1 ) ;                                            --共通部品リターンコード
    P_COMMIT_CNT PLS_INTEGER := 0;                                                     --コミット件数
    P_UPD_ASSOC_GIKEN_STS_INFO_WK ASSOC_GIKEN_STS_INFO_WK%ROWTYPE;                     --更新用協会技検ステータス更新受付データ

TYPE REC_GENRL_COD_MST
IS
    RECORD --汎用マスタレコード
    (
        CODE_DIV GENRL_COD_MST_DETL.CODE_DIV%TYPE ,          --主キー
        CODE_GROUP_ID GENRL_COD_MST_DETL.CODE_GROUP_ID%TYPE ,--サブキー1
        CODE_ID GENRL_COD_MST_DETL.CODE_ID%TYPE ,            --サブキー2
        CODE_VALUE1 GENRL_COD_MST_DETL.CODE_VALUE1%TYPE      --コードVALUE1
    ) ;

TYPE TYP_GENRL_COD_MST_TBL
IS
    TABLE OF REC_GENRL_COD_MST;            --汎用マスタタイプ
    P_GENRL_COD_MST TYP_GENRL_COD_MST_TBL; --汎用コードマスタ

TYPE TYP_ROWID_TBL
IS
    TABLE OF ROWID INDEX BY PLS_INTEGER; --判定用ROWIDタイプ
    --協会技検ステータス更新受付データ取得のカーソル定義
    CURSOR CUR_ASSOC_GIKEN_STS_INFO_WK
    IS
        SELECT
            ACPT_NUM ,                      --受付番号
            DATA_NO ,                       --データNO
            CUST_NUM ,                      --顧客番号
            CRSITM ,                        --講座商品コード
            MAGZN_SBSSIT_GO ,               --雑誌購読状況_囲碁
            MAGZN_SBSSIT_INKPNT ,           --雑誌購読状況_水墨画
            GIKEN_DEPSIT_KANZ ,             --技検入金状況_漢字
            GIKEN_DEPSIT_KN ,               --技検入金状況_カナ
            GIKEN_DEPSIT_BALLPN ,           --技検入金状況_ボールペン
            GIKEN_DEPSIT_PEN ,              --技検入金状況_ペン
            GIKEN_DEPSIT_PRCPEN ,           --技検入金状況_実用ボールペン
            AS400_DATA_CRET_DAY ,           --AS400データ作成日
            SIGNBR_GET ,                    --看板取得
            PENNM_GET ,                     --雅号取得
            EXHBTN_SBMINF_SBMCNT ,          --展覧会出品_出品回数
            ASSOC_ADMIS_SITU_CALLGR ,       --協会入会状況_書道
            ASSOC_ADMIS_SITU_COOPRT ,       --協会入会状況_作協
            ASSOC_ADMIS_SITU_FLOWRR ,       --協会入会状況_華道
            ASSOC_ADMIS_SITU_GARDNN ,       --協会入会状況_園芸
            ASSOC_ADMSIT_PKOC ,             --協会入会状況_写真知識検定
            ASSOC_ADMIS_SITU_BOTNST_OFCERT ,--協会入会状況_植物医検定
            EXHBTN_SBMINF_DEPRTM ,          --展覧会出品_部門
            BEST_RANK ,                     --最高位
            RECNT_SUBMT_YR ,                --最新出品年
            FIRTIM_CORE_PRCS_DAY            --初回基幹処理日
        FROM
            ASSOC_GIKEN_STS_INFO_ACPTDT--協会技検ステータス更新受付データ
        WHERE
            ACPT_CHECK_RESLT = CMN_CODE.C_ACR_NO_IMPLMN --受付チェック結果 = 0:未実施
            AND DEL_FLG = CMN_CODE.C_DEL_FLG_UNDEL ;    --AND 削除フラグ = 0:未削除

    --@*************************************************************************
    --@ Name   : CHECK_RESLT_UPD(チェック結果更新)
    --@ Summary :ノーマライズの結果を協会技検ステータス更新受付データに反映する
    --@*************************************************************************
    PROCEDURE CHECK_RESLT_UPD (
            I_ROW_ASSOC_GIKEN_STS_INFO_WK IN ASSOC_GIKEN_STS_INFO_WK%ROWTYPE )
    IS
    BEGIN
        UPDATE
            ASSOC_GIKEN_STS_INFO_ACPTDT--協会技検ステータス更新受付データ
        SET
            INTGRT_AFT_CUST_NUM = I_ROW_ASSOC_GIKEN_STS_INFO_WK.INTGRT_AFT_CUST_NUM ,  --統合後顧客番号
            GIKEN_APPSIT_KANZ = I_ROW_ASSOC_GIKEN_STS_INFO_WK.GIKEN_APPSIT_KANZ ,      --技検応募状況_漢字
            GIKEN_APPSIT_KANA = I_ROW_ASSOC_GIKEN_STS_INFO_WK.GIKEN_APPSIT_KANA ,      --技検応募状況_仮名
            GIKEN_APPSIT_BALLPN = I_ROW_ASSOC_GIKEN_STS_INFO_WK.GIKEN_APPSIT_BALLPN ,  --技検応募状況_ボールペン
            GIKEN_APPSIT_PEN = I_ROW_ASSOC_GIKEN_STS_INFO_WK.GIKEN_APPSIT_PEN ,        --技検応募状況_ペン
            GIKEN_APPSIT2_PRCPEN = I_ROW_ASSOC_GIKEN_STS_INFO_WK.GIKEN_APPSIT2_PRCPEN ,--技検応募状況2_実用ボールペン
            DNPRCS_FLG = (
            CASE
                WHEN I_ROW_ASSOC_GIKEN_STS_INFO_WK.ACPT_CHECK_RESLT = CMN_CODE.C_ACR_ERR
                THEN CMN_CODE.C_DNPRCS_FLG_PRCS
                WHEN I_ROW_ASSOC_GIKEN_STS_INFO_WK.ACPT_CHECK_RESLT = CMN_CODE.C_ACR_NORML
                THEN DNPRCS_FLG
            END ) ,--処理済フラグ
            ACPT_CHECK_RESLT = (
            CASE
                WHEN I_ROW_ASSOC_GIKEN_STS_INFO_WK.ACPT_CHECK_RESLT = CMN_CODE.C_ACR_NORML
                THEN CMN_CODE.C_ACR_NORML
                WHEN I_ROW_ASSOC_GIKEN_STS_INFO_WK.ACPT_CHECK_RESLT = CMN_CODE.C_ACR_ERR
                THEN CMN_CODE.C_ACR_ERR
            END ) ,--受付チェック結果
            MESSG_ID = (
            CASE
                WHEN I_ROW_ASSOC_GIKEN_STS_INFO_WK.ACPT_CHECK_RESLT = CMN_CODE.C_ACR_ERR
                THEN I_ROW_ASSOC_GIKEN_STS_INFO_WK.MESSG_ID
                WHEN I_ROW_ASSOC_GIKEN_STS_INFO_WK.ACPT_CHECK_RESLT = CMN_CODE.C_ACR_NORML
                THEN MESSG_ID
            END ) ,                                                                                --メッセージID
            ERRFLG_CUST_NUM = I_ROW_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_CUST_NUM ,                      --エラーフラグ_顧客番号
            ERRFLG_CRSITM = I_ROW_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_CRSITM ,                          --エラーフラグ_講座商品コード
            ERRFLG_MAGZN_SBSSIT_GO = I_ROW_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_CRSITM ,                 --エラーフラグ_雑誌購読状況_囲碁
            ERRFLG_MAGZN_SBSSIT_INKPNT = I_ROW_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_CRSITM ,             --エラーフラグ_雑誌購読状況_水墨画
            ERRFLG_ASSOC_ADMSIT_CALLGR = I_ROW_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_ASSOC_ADMSIT_CALLGR ,--エラーフラグ_協会入会状況_書道
            ERRFLG_ASSOC_ADMSIT_COOPRT = I_ROW_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_ASSOC_ADMSIT_COOPRT ,--エラーフラグ_協会入会状況_作協
            ERRFLG_ASSOC_ADMSIT_FLOWRR = I_ROW_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_ASSOC_ADMSIT_FLOWRR ,--エラーフラグ_協会入会状況_華道
            ERRFLG_ASSOC_ADMSIT_GARDNN = I_ROW_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_ASSOC_ADMSIT_GARDNN ,--エラーフラグ_協会入会状況_園芸
            ERRFLG_GIKEN_DEPSIT_KANZ = I_ROW_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_CRSITM ,               --エラーフラグ_技検入金状況_漢字
            ERRFLG_GIKEN_DEPSIT_KN = I_ROW_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_CRSITM ,                 --エラーフラグ_技検入金状況_カナ
            ERRFLG_GIKEN_DEPSIT_BALLPN = I_ROW_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_CRSITM ,             --エラーフラグ_技検入金状況_ボールペン
            ERRFLG_GIKEN_DEPSIT_PEN = I_ROW_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_CRSITM ,                --エラーフラグ_技検入金状況_ペン
            ERRFLG_GIKEN_DEPSIT_PRCPEN = I_ROW_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_CRSITM ,             --エラーフラグ_技検入金状況_実用ボールペン
            ERRFLG_SIGNBR_GET = I_ROW_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_CRSITM ,                      --エラーフラグ_看板取得
            ERRFLG_PENNM_GET = I_ROW_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_CRSITM ,                       --エラーフラグ_雅号取得
            ERRFLG_EXHBTN_SBMINF_SBMCNT = I_ROW_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_CRSITM ,            --エラーフラグ_展覧会出品_出品回数
            ERRFLG_EXHBTN_SBMINF_DEPRTM = I_ROW_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_CRSITM ,            --エラーフラグ_展覧会出品_部門
            ERRFLG_RECNT_SUBMT_YR = I_ROW_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_CRSITM ,                  --エラーフラグ_最新出品年
            ERRFLG_BEST_RANK = I_ROW_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_CRSITM ,                       --エラーフラグ_最高位
            ERRFLG_ASSOC_ADMSIT_PKOC = I_ROW_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_ASSOC_ADMSIT_PKOC ,    --エラーフラグ_協会入会状況_写真知識検定
            ERRFLG_ASSOC_ADMSIT_BOC = I_ROW_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_ASSOC_ADMSIT_BOC ,      --エラーフラグ_協会入会状況_植物医検定
            ERRFLG_DATA_DATE = I_ROW_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_DATA_DATE ,                    --エラーフラグ_データ日付
            UPD_DATIME = SYSDATE ,                                                                 --システム日時
            UPD_USR_ID = C_BATCH_ID                                                                --バッチ処理ID
        WHERE
            ACPT_NUM = I_ROW_ASSOC_GIKEN_STS_INFO_WK.ACPT_NUM;--受付番号
        --ループ内コミット件数加算
        P_COMMIT_CNT := P_COMMIT_CNT + SQL%ROWCOUNT;
    --例外処理
    EXCEPTION
    WHEN OTHERS THEN
        RAISE;
    END CHECK_RESLT_UPD;

    --@****************************************************************************
    --@ Name    : SOUKAN_CHECK(相関チェック)
    --@ Summary : 受付データとマスタ登録済みのデータの相関チェック
    --@****************************************************************************
    PROCEDURE SOUKAN_CHECK (
            I_ITEM IN CHAR ,       --協会技検ステータス更新受付データ値
            I_ITEM_STS_DB IN CHAR ,--STS_DB値
            O_ITEM_UPD OUT CHAR )  --更新値
    IS
    BEGIN
        O_ITEM_UPD := C_ERR_NOT ; --エラーフラグ初期化
        --受付データの値が「2:非会員」の場合
        IF I_ITEM = CMN_CODE.C_AAS_NONMEM THEN

            --ステータスDBの設定値が「△:対象外」、「2:非会員」、「7:元非会員」以外の場合
            IF I_ITEM_STS_DB NOT IN ( CMN_CODE.C_AAS_UNKNW ,CMN_CODE.C_AAS_NONMEM ,CMN_CODE.C_AAS_FNMEM ) THEN
                --エラーフラグに「1:エラー有り」を設定する
                O_ITEM_UPD := C_ERR_YES;                                              --エラーフラグ_協会入会状況_書道
                P_UPD_ASSOC_GIKEN_STS_INFO_WK.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR; --受付チェック結果
                P_UPD_ASSOC_GIKEN_STS_INFO_WK.MESSG_ID := C_MSG_ID_MSGCOMB0075;       --メッセージID
            END IF;

        END IF;

    EXCEPTION
    WHEN OTHERS THEN
        RAISE;
    END SOUKAN_CHECK;

    --@****************************************************************************
    --@ Name    : AFTCHECK_HOSEISYORI(チェック後補正処理)
    --@ Summary : 技検応募状況補正を実施する
    --@****************************************************************************
    PROCEDURE AFTCHECK_HOSEISYORI (
            I_VALUE_TYPE IN CHAR ,    --技検応募状況更新値
            I_GIKEN_DEPSIT IN CHAR ,  --技検入金状況
            O_GIKEN_APPSIT OUT CHAR ) --技検応募状況
    IS
    BEGIN
        O_GIKEN_APPSIT := CMN_CODE.C_OL_EXIS_APPLC ; --技検応募状況初期化
        FOR I IN 1 .. P_GENRL_COD_MST.COUNT
        LOOP

            IF P_GENRL_COD_MST ( I ) .CODE_DIV = I_VALUE_TYPE THEN

                IF I_GIKEN_DEPSIT >= P_GENRL_COD_MST ( I ) .CODE_GROUP_ID AND
                   I_GIKEN_DEPSIT <= P_GENRL_COD_MST ( I ) .CODE_ID THEN
                    O_GIKEN_APPSIT := P_GENRL_COD_MST ( I ) .CODE_VALUE1;
                    RETURN;
                END IF;

            END IF;

        END LOOP;

    EXCEPTION
    WHEN OTHERS THEN
        RAISE;
    END AFTCHECK_HOSEISYORI;

    --@****************************************************************************
    --@ Name    : BTGKJZB0101J17(協会技検ステータス更新受付チェック)
    --@ Summary : AS400から連携された協会技検ステータス更新受付データ対して
    --@           記載事項チェックとノーマライズを実施する
    --@****************************************************************************
    PROCEDURE BTGKJZB0101J17 (
            O_RETURN_COD OUT CHAR --リターンコード
        )
    IS
        V_CMSKJZ025_OUT TYP_GENRL_COD_MST_TBL; --記載事項チェック_出力 TODO
        V_ROW_STS_DB STS_DB%ROWTYPE;           --基幹ステータスDBデータ取得1_出力
        V_MESSAGE_ID VARCHAR2 ( 11 ) ;         --メッセージID
        V_ARY_MSG CMN_TYPE.TYP_ARY_PARAMS;     --埋め字用パラメータ
        V_ARY_TGT_MSG CMN_TYPE.TYP_ARY_PARAMS; --対象件数取得メッセージ用埋め字パラメータ
        V_BUSNSS_DATE CHAR ( 8 ) ;             --業務日付
        V_COMMIT_UNIT PLS_INTEGER;             --コミット単位
        V_TOTAL_CNT PLS_INTEGER ;              --協会技検ステータス更新受付データの取得件数
        V_ROWID TYP_ROWID_TBL;                 --判定用ROWID
    BEGIN

        --バッチ共通開始部品
        CMSKJZ001.START_PROC ( C_BATCH_ID ,--バッチ処理ID
        P_RETURN_COD ,                     --リターンコード
        V_BUSNSS_DATE ,                    --業務日付
        V_COMMIT_UNIT                      --コミット単位
        ) ;

        --共通部品リターンコード判定
        IF ( P_RETURN_COD <> CMN_CODE.C_CMN_R_CD_NORMAL ) THEN
            RAISE_APPLICATION_ERROR ( CMN_CODE.C_ERR_NUM_CMSKJZ001 ,CMN_CODE.C_ERR_MESSG_CMSKJZ001 ) ;
        END IF;

        O_RETURN_COD := CMN_CODE.C_R_CD_NORMAL;
        V_TOTAL_CNT := 0 ; --協会技検ステータス更新受付データ取得件数の初期化

        --技検応募状況補正判定データ取得
        SELECT
            CODE_DIV ,     --主キー,
            CODE_GROUP_ID ,--サブキー1,
            CODE_ID ,      --サブキー2,
            CODE_VALUE1    --コードVALUE1
            BULK COLLECT
        INTO
            P_GENRL_COD_MST
        FROM
            GENRL_COD_MST_DETL --汎用コードマスタ_明細
        WHERE
            CODE_DIV IN ( C_KJE_GIKEN_APPSIT_KANZ ,C_KJE_GIKEN_APPSIT_KANA ,C_KJE_GIKEN_APPSIT_BALLPN ,
                          C_KJE_GIKEN_APPSIT_PEN ,C_KJE_GIKEN_APPSIT2_PRCPEN )
            AND TERM_START_YMD <= V_BUSNSS_DATE --業務日付
            AND TERM_END_YMD >= V_BUSNSS_DATE   --業務日付
        ORDER BY
            CODE_DIV ASC ,     --主キー ASC,
            CODE_GROUP_ID ASC ,--サブキー1 ASC,
            CODE_ID ASC;       --サブキー2 ASC

        --協会技検ステータス更新受付データより処理対象データを取得し、取得したデータごとに繰り返す
        FOR V_ROW_ASSOC_GIKEN_STS_INFO_WK IN CUR_ASSOC_GIKEN_STS_INFO_WK
        LOOP
            V_TOTAL_CNT := CUR_ASSOC_GIKEN_STS_INFO_WK%ROWCOUNT;
            --更新用データ初期化
            --受付番号
            P_UPD_ASSOC_GIKEN_STS_INFO_WK.ACPT_NUM := V_ROW_ASSOC_GIKEN_STS_INFO_WK.ACPT_NUM;
            --統合後顧客番号
            P_UPD_ASSOC_GIKEN_STS_INFO_WK.INTGRT_AFT_CUST_NUM := V_ROW_ASSOC_GIKEN_STS_INFO_WK.CUST_NUM;
            --エラーフラグ_顧客番号
            P_UPD_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_CUST_NUM := C_ERR_NOT;
            --エラーフラグ_講座商品コード
            P_UPD_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_CRSITM := C_ERR_NOT;
            --エラーフラグ_データ日付
            P_UPD_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_DATA_DATE := C_ERR_NOT;
            --エラーフラグ_最新出品年
            P_UPD_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_RECNT_SUBMT_YR := C_ERR_NOT;
            --受付チェック結果:(1:正常)
            P_UPD_ASSOC_GIKEN_STS_INFO_WK.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_NORML;
            --エラーフラグ_協会入会状況_書道
            P_UPD_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_ASSOC_ADMSIT_CALLGR := C_ERR_NOT;
            --エラーフラグ_協会入会状況_作協
            P_UPD_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_ASSOC_ADMSIT_COOPRT := C_ERR_NOT;
            --エラーフラグ_協会入会状況_華道
            P_UPD_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_ASSOC_ADMSIT_FLOWRR := C_ERR_NOT;
            --エラーフラグ_協会入会状況_園芸
            P_UPD_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_ASSOC_ADMSIT_GARDNN := C_ERR_NOT;
            --エラーフラグ_協会入会状況_写真知識検定
            P_UPD_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_ASSOC_ADMSIT_PKOC := C_ERR_NOT;
            --エラーフラグ_協会入会状況_植物医検定
            P_UPD_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_ASSOC_ADMSIT_BOC := C_ERR_NOT;
            /*TODO 記載事項チェック
            --エラーフラグ_雑誌購読状況_囲碁
            --エラーフラグ_雑誌購読状況_水墨画
            --エラーフラグ_技検入金状況_漢字
            --エラーフラグ_技検入金状況_カナ
            --エラーフラグ_技検入金状況_ボールペン
            --エラーフラグ_技検入金状況_ペン
            --エラーフラグ_技検入金状況_実用ボールペン
            --エラーフラグ_看板取得
            --エラーフラグ_雅号取得
            --エラーフラグ_展覧会出品_出品回数
            --エラーフラグ_展覧会出品_部門
            --エラーフラグ_最新出品年
            --エラーフラグ_最高位
            --技検応募状況_漢字*/
            P_UPD_ASSOC_GIKEN_STS_INFO_WK.GIKEN_APPSIT_KANZ := CMN_CODE.C_OL_EXIS_APPLC ;
            --技検応募状況_仮名
            P_UPD_ASSOC_GIKEN_STS_INFO_WK.GIKEN_APPSIT_KANA := CMN_CODE.C_OL_EXIS_APPLC ;
            --技検応募状況_ボールペン
            P_UPD_ASSOC_GIKEN_STS_INFO_WK.GIKEN_APPSIT_BALLPN := CMN_CODE.C_OL_EXIS_APPLC ;
            --技検応募状況_ペン
            P_UPD_ASSOC_GIKEN_STS_INFO_WK.GIKEN_APPSIT_PEN := CMN_CODE.C_OL_EXIS_APPLC ;
            --技検応募状況2_実用ボールペン
            P_UPD_ASSOC_GIKEN_STS_INFO_WK.GIKEN_APPSIT2_PRCPEN := CMN_CODE.C_OL_EXIS_APPLC ;
            --TODO DM中止の受付データに対して、記載事項チェックを行う
            V_CMSKJZ025_OUT := NULL;
            --TODO 共通部品リターンコード判定
            /*                IF (P_RETURN_COD <> CMN_CODE.C_CMN_R_CD_NORMAL)
            THEN
            RAISE_APPLICATION_ERROR(CMN_CODE.C_ERR_NUM_CMSKJZ025
            CMN_CODE.C_ERR_MESSG_CMSKJZ025)
            END IF;*/

            --マスターチェック
            --受付チェック結果が「1:正常」の場合、顧客番号チェック
            IF P_UPD_ASSOC_GIKEN_STS_INFO_WK.ACPT_CHECK_RESLT = CMN_CODE.C_ACR_NORML THEN
                BEGIN
                    SELECT
                        CUST_NUM_TO --顧客番号_TO
                    INTO
                        P_UPD_ASSOC_GIKEN_STS_INFO_WK.INTGRT_AFT_CUST_NUM
                    FROM
                        CSTINT_FROMTO_CONVRT_TBL --顧客統合FROM-TO変換テーブル
                    WHERE
                        --顧客番号_FROM =DM中止受付データ.顧客番号
                        CUST_NUM_FROM = V_ROW_ASSOC_GIKEN_STS_INFO_WK.CUST_NUM
                        AND DEL_FLG = CMN_CODE.C_DEL_FLG_UNDEL; --AND 削除フラグ = 0:未削除
                    --エラーフラグ_顧客番号に「1:エラー有り」設定する
                    P_UPD_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_CUST_NUM := C_ERR_YES;
                    --受付チェック結果に「2:エラー」設定する
                    P_UPD_ASSOC_GIKEN_STS_INFO_WK.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                    --メッセージID設定する
                    P_UPD_ASSOC_GIKEN_STS_INFO_WK.MESSG_ID := C_MSG_ID_MSGCOMB0040;
                EXCEPTION
                    --取得できなかった場合
                WHEN NO_DATA_FOUND THEN
                    --共通部品処理記述書_CMSKJZ052_基幹ステータスDBデータ取得
                    CMSKJZ052.GET_STS_DB_CUST_NUM ( V_ROW_ASSOC_GIKEN_STS_INFO_WK.CUST_NUM ,--顧客番号
                    P_RETURN_COD ,                                                          --リターンコード
                    V_MESSAGE_ID ,                                                          --メッセージID
                    V_ARY_MSG ,                                                             --埋字
                    V_ROW_STS_DB ) ;                                                        --ステータスDBデータ(カーソル)

                    --共通部品リターンコード判定
                    IF ( P_RETURN_COD <> CMN_CODE.C_CMN_R_CD_NORMAL ) THEN
                        RAISE_APPLICATION_ERROR ( CMN_CODE.C_ERR_NUM_CMSKJZ052 ,CMN_CODE.C_ERR_MESSG_CMSKJZ052 ) ;
                    END IF;

                END;
            END IF;

            --受付チェック結果が「1:正常」の場合、講座商品コードチェック
            IF P_UPD_ASSOC_GIKEN_STS_INFO_WK.ACPT_CHECK_RESLT = CMN_CODE.C_ACR_NORML AND
               V_ROW_ASSOC_GIKEN_STS_INFO_WK.DATA_NO IN ( C_6PX4 ,C_6PY4 ) THEN
                --講座基本5桁マスタ有無確認
                SELECT
                    ROWID BULK COLLECT
                INTO
                    V_ROWID
                FROM
                    COURSE_KIHON_5KETA_MASTER--講座基本5桁マスタ
                WHERE
                    COURSE_SHOHIN_CD = V_ROW_ASSOC_GIKEN_STS_INFO_WK.CRSITM --講座商品コード = ※協会技検ステータス更新受付データ.講座商品コード
                    AND KIKAN_TEKIYO_START_DAY <= TO_DATE ( V_BUSNSS_DATE ) --AND 基幹システム適用開始年月日 <= 業務日付
                    AND STATUS_DIV = CMN_CODE.C_STATUS_DIV_PRINC_REG        --AND ステータス区分 = 5:本登録
                    AND DEL_FLG = CMN_CODE.C_DEL_FLG_UNDEL                  --AND 削除フラグ = 0:未削除
                    AND ROWNUM <= 1;                                        --AND 行番号 <= 1

                --講座基本3桁マスタ有無確認取得0件の場合
                IF V_ROWID.COUNT = 0 THEN
                    --エラーフラグ_講座商品コードに「1:エラー有り」を設定する
                    P_UPD_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_CRSITM := C_ERR_YES;
                    P_UPD_ASSOC_GIKEN_STS_INFO_WK.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                    P_UPD_ASSOC_GIKEN_STS_INFO_WK.MESSG_ID := C_MSG_ID_MSGCOMB0001;
                END IF;

            END IF;

            --項目間相関チェック
            --受付チェック結果が「1:正常」の場合、AS400データ作成日と初回基幹処理日の項目間相関チェック
            IF P_UPD_ASSOC_GIKEN_STS_INFO_WK.ACPT_CHECK_RESLT = CMN_CODE.C_ACR_NORML THEN

                --AS400データ作成日 > 初回基幹処理日であること
                IF V_ROW_ASSOC_GIKEN_STS_INFO_WK.AS400_DATA_CRET_DAY >
                   V_ROW_ASSOC_GIKEN_STS_INFO_WK.FIRTIM_CORE_PRCS_DAY THEN
                    --エラーフラグ_データ日付に「1:エラー有り」を設定する
                    P_UPD_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_DATA_DATE := C_ERR_YES;
                    P_UPD_ASSOC_GIKEN_STS_INFO_WK.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                    P_UPD_ASSOC_GIKEN_STS_INFO_WK.MESSG_ID := C_MSG_ID_MSGCOMB0073;
                END IF;

            END IF;

            --受付チェック結果が「1:正常」の場合、最新出品年と初回基幹処理日の項目間相関チェック
            IF P_UPD_ASSOC_GIKEN_STS_INFO_WK.ACPT_CHECK_RESLT = CMN_CODE.C_ACR_NORML AND
               V_ROW_ASSOC_GIKEN_STS_INFO_WK.DATA_NO = C_6PZ5 THEN

                --最新出品年 > 初回基幹処理日の年
                IF V_ROW_ASSOC_GIKEN_STS_INFO_WK.RECNT_SUBMT_YR >
                   SUBSTR ( V_ROW_ASSOC_GIKEN_STS_INFO_WK.FIRTIM_CORE_PRCS_DAY ,1 ,4 ) THEN
                    --エラーフラグ_最新出品年に「1:エラー有り」を設定する
                    P_UPD_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_RECNT_SUBMT_YR := C_ERR_YES;
                    P_UPD_ASSOC_GIKEN_STS_INFO_WK.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                    P_UPD_ASSOC_GIKEN_STS_INFO_WK.MESSG_ID := C_MSG_ID_MSGCOMB0074;
                END IF;

            END IF;

            --受付チェック結果が「1:正常」の場合、受付データとマスタ登録済みのデータの相関チェック
            IF P_UPD_ASSOC_GIKEN_STS_INFO_WK.ACPT_CHECK_RESLT = CMN_CODE.C_ACR_NORML AND
               V_ROW_ASSOC_GIKEN_STS_INFO_WK.DATA_NO = C_6PZ5 THEN
                --受付データの下記の各項目の値が「2:非会員」の場合
                --協会入会状況_書道
                SOUKAN_CHECK ( V_ROW_ASSOC_GIKEN_STS_INFO_WK.ASSOC_ADMIS_SITU_CALLGR ,--協会技検ステータス更新受付データ値
                V_ROW_STS_DB.ASSOC_ADMIS_SITU_CALLGR ,                                --STS_DB値
                P_UPD_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_ASSOC_ADMSIT_CALLGR              --エラーフラグ_協会入会状況_書道
                ) ;
                --協会入会状況_作協
                SOUKAN_CHECK ( V_ROW_ASSOC_GIKEN_STS_INFO_WK.ASSOC_ADMIS_SITU_COOPRT ,--協会技検ステータス更新受付データ値
                V_ROW_STS_DB.ASSOC_ADMIS_SITU_COOPRT ,                                --STS_DB値
                P_UPD_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_ASSOC_ADMSIT_COOPRT              --エラーフラグ_協会入会状況_作協
                ) ;
                --協会入会状況_華道
                SOUKAN_CHECK ( V_ROW_ASSOC_GIKEN_STS_INFO_WK.ASSOC_ADMIS_SITU_FLOWRR ,--協会技検ステータス更新受付データ値
                V_ROW_STS_DB.ASSOC_ADMIS_SITU_FLOWRR ,                                --STS_DB値
                P_UPD_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_ASSOC_ADMSIT_FLOWRR              --エラーフラグ_協会入会状況_華道
                ) ;
                --協会入会状況_園芸
                SOUKAN_CHECK ( V_ROW_ASSOC_GIKEN_STS_INFO_WK.ASSOC_ADMIS_SITU_GARDNN ,--協会技検ステータス更新受付データ値
                V_ROW_STS_DB.ASSOC_ADMIS_SITU_GARDNN ,                                --STS_DB値
                P_UPD_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_ASSOC_ADMSIT_GARDNN              --エラーフラグ_協会入会状況_園芸
                ) ;
                --協会入会状況_写真知識検定
                SOUKAN_CHECK ( V_ROW_ASSOC_GIKEN_STS_INFO_WK.ASSOC_ADMSIT_PKOC ,--協会技検ステータス更新受付データ値
                V_ROW_STS_DB.ASSOC_ADMSIT2_PKOC ,                               --STS_DB値
                P_UPD_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_ASSOC_ADMSIT_PKOC          --エラーフラグ_協会入会状況_写真知識
                ) ;
                --協会入会状況_植物医検定
                SOUKAN_CHECK ( V_ROW_ASSOC_GIKEN_STS_INFO_WK.ASSOC_ADMIS_SITU_BOTNST_OFCERT ,--協会技検ステータス更新受付データ値
                V_ROW_STS_DB.ASSOC_ADMSIT2_BOC ,                                             --STS_DB値
                P_UPD_ASSOC_GIKEN_STS_INFO_WK.ERRFLG_ASSOC_ADMSIT_BOC                        --エラーフラグ_協会入会状況_植物医検定
                ) ;
            END IF;

            --チェック後補正処理
            --受付チェック結果が「1:正常」の場合,技検応募状況補正
            IF P_UPD_ASSOC_GIKEN_STS_INFO_WK.ACPT_CHECK_RESLT = CMN_CODE.C_ACR_NORML AND
               V_ROW_ASSOC_GIKEN_STS_INFO_WK.DATA_NO = C_6PZ5 THEN
                --技検応募状況_漢字
                AFTCHECK_HOSEISYORI ( C_KJE_GIKEN_APPSIT_KANZ ,  --技検応募状況_漢字
                V_ROW_ASSOC_GIKEN_STS_INFO_WK.GIKEN_DEPSIT_KANZ ,--協会技検ステータス更新受付データ値
                P_UPD_ASSOC_GIKEN_STS_INFO_WK.GIKEN_APPSIT_KANZ  --STS_DB値
                ) ;
                --技検応募状況_仮名
                AFTCHECK_HOSEISYORI ( C_KJE_GIKEN_APPSIT_KANA , --技検応募状況_仮名
                V_ROW_ASSOC_GIKEN_STS_INFO_WK.GIKEN_DEPSIT_KN , --協会技検ステータス更新受付データ値
                P_UPD_ASSOC_GIKEN_STS_INFO_WK.GIKEN_APPSIT_KANA --STS_DB値
                ) ;
                --技検応募状況_ボールペン
                AFTCHECK_HOSEISYORI ( C_KJE_GIKEN_APPSIT_BALLPN ,  --技検応募状況_ボールペン
                V_ROW_ASSOC_GIKEN_STS_INFO_WK.GIKEN_DEPSIT_BALLPN ,--協会技検ステータス更新受付データ値
                P_UPD_ASSOC_GIKEN_STS_INFO_WK.GIKEN_APPSIT_BALLPN  --STS_DB値
                ) ;
                --技検応募状況_ペン
                AFTCHECK_HOSEISYORI ( C_KJE_GIKEN_APPSIT_PEN ,  --技検応募状況_ペン
                V_ROW_ASSOC_GIKEN_STS_INFO_WK.GIKEN_DEPSIT_PEN ,--協会技検ステータス更新受付データ値
                P_UPD_ASSOC_GIKEN_STS_INFO_WK.GIKEN_APPSIT_PEN  --STS_DB値
                ) ;
                --技検応募状況2_実用ボールペン
                AFTCHECK_HOSEISYORI ( C_KJE_GIKEN_APPSIT2_PRCPEN , --技検応募状況2_実用ボールペン
                V_ROW_ASSOC_GIKEN_STS_INFO_WK.GIKEN_DEPSIT_PRCPEN ,--協会技検ステータス更新受付データ値
                P_UPD_ASSOC_GIKEN_STS_INFO_WK.GIKEN_APPSIT2_PRCPEN --STS_DB値
                ) ;
            END IF;

            --協会技検ステータス更新受付データ更新
            CHECK_RESLT_UPD ( P_UPD_ASSOC_GIKEN_STS_INFO_WK ) ;
        END LOOP;

        --対象件数出力処理
        V_ARY_TGT_MSG ( 1 ) := C_ASSOC_GIKEN_STS_INFO_WK; --協会技検ステータス更新受付データ
        V_ARY_TGT_MSG ( 2 ) := TO_CHAR ( V_TOTAL_CNT ) ;  --対象件数
        CMSKJZ003.INFO ( C_TGT_CNT_MSG_ID ,               --メッセージID
        MSG_CONST.MSGCOMB000C ,                           --メッセージ
        V_ARY_TGT_MSG ,                                   --埋め字用配列
        C_BATCH_ID ,                                      --ユーザーID
        P_RETURN_COD ) ;                                  --リターンコード

        --DBコミットを行う
        IF ( P_COMMIT_CNT <> 0 ) THEN
            COMMIT;
            V_ARY_TGT_MSG ( 1 ) := C_ASSOC_GIKEN_STS_INFO_WK; --協会技検ステータス更新受付データ
            V_ARY_TGT_MSG ( 2 ) := TO_CHAR ( P_COMMIT_CNT ) ; --コミット件数
            --コミットログ
            CMSKJZ003.INFO ( C_CMMT_MSG_ID ,--メッセージID
            MSG_CONST.MSGCOMB000G ,         --メッセージ
            V_ARY_TGT_MSG ,                 --埋め字用配列
            C_BATCH_ID ,                    --ユーザーID
            P_RETURN_COD ) ;                --リターンコード
        END IF;

        --正常終了
        O_RETURN_COD := CMN_CODE.C_R_CD_NORMAL;
        --バッチ共通終了部品
        CMSKJZ002.END_PROC ( C_BATCH_ID ,--バッチ処理ID
        V_TOTAL_CNT ,                    --正常処理件数
        V_TOTAL_CNT ,                    --総処理対象件数
        V_BUSNSS_DATE ,                  --業務日付
        P_RETURN_COD ,                   --部品用リターンコード
        O_RETURN_COD                     --バッチ用リターンコード
        ) ;

        --共通部品リターンコード判定
        IF ( P_RETURN_COD <> CMN_CODE.C_CMN_R_CD_NORMAL ) THEN
            RAISE_APPLICATION_ERROR ( CMN_CODE.C_ERR_NUM_CMSKJZ002 ,CMN_CODE.C_ERR_MESSG_CMSKJZ002 ) ;
        END IF;

    --例外処理
    EXCEPTION
    --例外が発生した場合、DBロールバックを行う
    WHEN OTHERS THEN
        RAISE;
        --バッチ共通エラー処理
        CMSKJZ051.CMN_ERR_PROC ( C_BATCH_ID ,--バッチ処理ID
        P_RETURN_COD                         --リターンコード
        ) ;
        --ロールバック
        ROLLBACK;
        --ロールバックメッセージ
        CMSKJZ003.INFO ( C_ROBK_MSG_ID ,--メッセージID
        MSG_CONST.MSGCOMB000K ,         --メッセージ
        V_ARY_MSG ,                     --埋め字用配列
        C_BATCH_ID ,                    --ユーザーID
        P_RETURN_COD ) ;                --リターンコード
        --異常終了
        O_RETURN_COD := CMN_CODE.C_R_CD_ERR;
    END BTGKJZB0101J17;

END KJZ_KJZB01_BTGKJZB0101J17;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值