PL/SQL2

create or replace PACKAGE BODY KJZ_KJZB01_BTGKJZB0101J10
AS
    C_BATCH_ID               CONSTANT VARCHAR2 ( 20 ) := 'BTGKJZB0101J10';             --バッチID
    C_DM_SUSPNS_ACPTDT       CONSTANT VARCHAR2 ( 30 ) := 'DM中止受付データ';         --更新元テーブル名(DM中止受付データ)
    C_ACPT_NUM               CONSTANT VARCHAR2 ( 50 ) := '受付番号';                   --受付番号
    C_DM_SUSPNS_DIV_PRIORITY CONSTANT VARCHAR2 ( 50 ) := 'KJE_DM_SUSPNS_DIV_PRIORITY'; --DM中止区分優先順
    C_MSGCOMB000K            CONSTANT VARCHAR2 ( 11 ) := 'MSGCOMB000K';                --メッセージID[MSGCOMB000K]
    C_MSGCOMB000G            CONSTANT VARCHAR2 ( 11 ) := 'MSGCOMB000G';                --メッセージID[MSGCOMB000G]
    C_MSGCOMB000C            CONSTANT VARCHAR2 ( 11 ) := 'MSGCOMB000C';                --メッセージID[MSGCOMB000C]
    C_MSGCOMB0040            CONSTANT VARCHAR2 ( 11 ) := 'MSGCOMB0040';                --メッセージID[MSGCOMB0040]
    C_MSGCOMB0001            CONSTANT VARCHAR2 ( 11 ) := 'MSGCOMB0001';                --メッセージID[MSGCOMB0001]
    C_MSGCOMB0025            CONSTANT VARCHAR2 ( 11 ) := 'MSGCOMB0025';                --メッセージID[MSGCOMB0025]
    C_MSGCOMB0060            CONSTANT VARCHAR2 ( 11 ) := 'MSGCOMB0060';                --メッセージID[MSGCOMB0060]
    C_MSGCOMB0061            CONSTANT VARCHAR2 ( 11 ) := 'MSGCOMB0061';                --メッセージID[MSGCOMB0061]
    C_MSGCOMB0062            CONSTANT VARCHAR2 ( 11 ) := 'MSGCOMB0062';                --メッセージID[MSGCOMB0062]
    C_MSGCOMB0063            CONSTANT VARCHAR2 ( 11 ) := 'MSGCOMB0063';                --メッセージID[MSGCOMB0063]
    C_MSGCOMB0064            CONSTANT VARCHAR2 ( 11 ) := 'MSGCOMB0064';                --メッセージID[MSGCOMB0064]
    C_MSGCOMB0065            CONSTANT VARCHAR2 ( 11 ) := 'MSGCOMB0065';                --メッセージID[MSGCOMB0065]
    C_MSGCOMB0103            CONSTANT VARCHAR2 ( 11 ) := 'MSGCOMB0103';                --メッセージID[MSGCOMB0103]
    C_MSGCOMB0066            CONSTANT VARCHAR2 ( 11 ) := 'MSGCOMB0066';                --メッセージID[MSGCOMB0066]
    C_MSGCOMB0067            CONSTANT VARCHAR2 ( 11 ) := 'MSGCOMB0067';                --メッセージID[MSGCOMB0067]
    C_MSGCOMB0068            CONSTANT VARCHAR2 ( 11 ) := 'MSGCOMB0068';                --メッセージID[MSGCOMB0068]
    C_MSGCOMB0069            CONSTANT VARCHAR2 ( 11 ) := 'MSGCOMB0069';                --メッセージID[MSGCOMB0069]
    C_MSGCOMB0070            CONSTANT VARCHAR2 ( 11 ) := 'MSGCOMB0070';                --メッセージID[MSGCOMB0070]
    C_MSGCOMB0071            CONSTANT VARCHAR2 ( 11 ) := 'MSGCOMB0071';                --メッセージID[MSGCOMB0071]
    C_MSGCOMB0072            CONSTANT VARCHAR2 ( 11 ) := 'MSGCOMB0072';                --メッセージID[MSGCOMB0072]
    C_MSGCOMB0078            CONSTANT VARCHAR2 ( 11 ) := 'MSGCOMB0078';                --メッセージID[MSGCOMB0078]
    C_MSGCOMB0079            CONSTANT VARCHAR2 ( 11 ) := 'MSGCOMB0079';                --メッセージID[MSGCOMB0079]
    C_ERRFLAG_EXIS           CONSTANT CHAR ( 1 ) := '1';                               --エラーフラグ(1:エラー有り)
    C_ERRFLG_NORML           CONSTANT CHAR ( 1 ) := '0';                               --エラーフラグ(0:正常)
    P_CMN_RETURN_COD         CHAR ( 1 ) ;                                              --共通部品リターンコード
    P_COMMIT_CNT PLS_INTEGER ;                                                         --総コミット件数
TYPE REC_GENRL_COD_MST
IS
    RECORD --汎用マスタレコード
    (
        CODE_GROUP_ID GENRL_COD_MST_DETL.CODE_GROUP_ID%TYPE ,--サブキー1
        CODE_VALUE1 GENRL_COD_MST_DETL.CODE_VALUE1%TYPE      --コードVALUE1
    ) ;
TYPE TYP_GENRL_COD_MST_TBL
IS
    TABLE OF REC_GENRL_COD_MST; --汎用マスタタイプ

TYPE TYP_ROWID_TBL
IS
    TABLE OF ROWID INDEX BY PLS_INTEGER; --判定用ROWIDタイプ

    --DM中止受付データ取得のカーソル定義
    CURSOR CUR_DM_SUSPNS_ACPTDT
    IS
        SELECT
            ACPT_NUM ,                                                                                             --受付番号
            DATA_NO ,                                                                                              --データNO
            DM_SUSPNS_REQ_DAY ,                                                                                    --DM中止依頼日
            FIRTIM_CORE_PRCS_DAY ,                                                                                 --初回基幹処理日
            DM_SUSPNS_IMPLMN_DAY ,                                                                                 --DM中止実施日
            BATCH_NO ,                                                                                             --バッチNO
            CUST_NUM ,                                                                                             --顧客番号
            INTGRT_AFT_CUST_NUM ,                                                                                  --統合後顧客番号
            DM_SUSPNS_DATA_DIV ,                                                                                   --DM中止データ区分
            DM_SUSPNS_CHANG_COD ,                                                                                  --DM中止変更コード
            NVL ( SUSPNS_CRS3DG_COMPCD ,RPAD ( CMN_CODE.C_H_SPACE ,3 ,CMN_CODE.C_H_SPACE ) ) SUSPNS_CRS3DG_COMPCD ,--中止講座3桁コード・社コード
            CANCL_DIV ,                                                                                            --取消区分
            NVL ( DMCD ,CMN_CODE.C_EMPTY_STR ) DMCD                                                                --DMコード
        FROM
            DM_SUSPNS_ACPTDT
        WHERE
            ACPT_CHECK_RESLT = CMN_CODE.C_ACR_NO_IMPLMN --受付チェック結果 = 0:未処理
            AND DEL_FLG = CMN_CODE.C_DEL_FLG_UNDEL      --AND 削除フラグ = 0:未削除
        ORDER BY
            CUST_NUM ASC ,            --顧客番号 ASC
            DM_SUSPNS_DATA_DIV ASC ,  --DM中止データ区分 ASC
            SUSPNS_CRS3DG_COMPCD ASC ,--中止講座3桁コード・社コード ASC
            CANCL_DIV ASC ,           --取消区分 ASC
            DM_SUSPNS_REQ_DAY DESC ,  --DM中止依頼日 DESC
            BATCH_NO DESC ,           --バッチNO DESC
            INSDBT_SEQ DESC;          --バッチ内シーケンス DESC

    --@*************************************************************************
    --@ Name   : DM_SUSPNS_ACPTDT_UPD(DM中止受付チェック更新)
    --@ Summary: 実施した記載事項チェックおよびノーマライズの結果をDM中止受付データに反映する
    --@*************************************************************************
    PROCEDURE DM_SUSPNS_ACPTDT_UPD (
            I_ROW_DM_SUSPNS_ACPTDT IN DM_SUSPNS_ACPTDT%ROWTYPE )
    IS
    BEGIN
        --DM中止受付チェック更新
        UPDATE
            DM_SUSPNS_ACPTDT
        SET
            PRIRTY_RNK =
            CASE
                WHEN I_ROW_DM_SUSPNS_ACPTDT.PRIRTY_RNK IS NULL
                THEN PRIRTY_RNK
                ELSE I_ROW_DM_SUSPNS_ACPTDT.PRIRTY_RNK
            END ,                                                             --優先順位
            INTGRT_AFT_CUST_NUM = I_ROW_DM_SUSPNS_ACPTDT.INTGRT_AFT_CUST_NUM ,--統合後顧客番号
            DM_SUSPNS_CHANG_COD = I_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_CHANG_COD ,--DM中止変更コード
            DNPRCS_FLG =
            CASE
                WHEN DNPRCS_FLG = CMN_CODE.C_DNPRCS_FLG_PRCS
                    OR I_ROW_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT = CMN_CODE.C_ACR_ERR
                THEN CMN_CODE.C_DNPRCS_FLG_PRCS
                ELSE DNPRCS_FLG
            END ,--処理済フラグ
            ACPT_CHECK_RESLT =
            CASE
                WHEN ACPT_CHECK_RESLT = CMN_CODE.C_ACR_ERR
                    OR I_ROW_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT = CMN_CODE.C_ACR_ERR
                THEN CMN_CODE.C_ACR_ERR
                ELSE CMN_CODE.C_ACR_NORML
            END ,--受付チェック結果
            MESSG_ID =
            CASE
                WHEN TRIM ( I_ROW_DM_SUSPNS_ACPTDT.MESSG_ID ) IS NULL
                THEN MESSG_ID
                ELSE I_ROW_DM_SUSPNS_ACPTDT.MESSG_ID
            END ,--メッセージID
            --エラーフラグ_DM中止依頼日
            ERRFLG_DM_SUSPNS_REQ_DAY = I_ROW_DM_SUSPNS_ACPTDT.ERRFLG_DM_SUSPNS_REQ_DAY ,
            ERRFLG_CUST_NUM =
            CASE
                WHEN ERRFLG_CUST_NUM = C_ERRFLAG_EXIS
                    OR I_ROW_DM_SUSPNS_ACPTDT.ERRFLG_CUST_NUM = C_ERRFLAG_EXIS
                THEN C_ERRFLAG_EXIS
                ELSE ERRFLG_CUST_NUM
            END ,--エラーフラグ_顧客番号
            ERRFLG_DM_SUSPNS_DATA_DIV =
            CASE
                WHEN ERRFLG_DM_SUSPNS_DATA_DIV = C_ERRFLAG_EXIS
                    OR I_ROW_DM_SUSPNS_ACPTDT.ERRFLG_DM_SUSPNS_DATA_DIV = C_ERRFLAG_EXIS
                THEN C_ERRFLAG_EXIS
                ELSE ERRFLG_DM_SUSPNS_DATA_DIV
            END ,--エラーフラグ_DM中止データ区分
            ERRFLG_CRS3DG_COMPCD =
            CASE
                WHEN ERRFLG_CRS3DG_COMPCD = C_ERRFLAG_EXIS
                    OR I_ROW_DM_SUSPNS_ACPTDT.ERRFLG_CRS3DG_COMPCD = C_ERRFLAG_EXIS
                THEN C_ERRFLAG_EXIS
                ELSE ERRFLG_CRS3DG_COMPCD
            END ,--エラーフラグ_講座3桁コード
            ERRFLG_CANCL_DIV =
            CASE
                WHEN ERRFLG_CANCL_DIV = C_ERRFLAG_EXIS
                    OR I_ROW_DM_SUSPNS_ACPTDT.ERRFLG_CANCL_DIV = C_ERRFLAG_EXIS
                THEN C_ERRFLAG_EXIS
                ELSE ERRFLG_CANCL_DIV
            END ,                                             --エラーフラグ_取消区分
            ERRFLG_DMCD = I_ROW_DM_SUSPNS_ACPTDT.ERRFLG_DMCD ,--エラーフラグ_DMコード
            UPD_DATIME = SYSDATE ,                            --更新日時
            UPD_USR_ID = C_BATCH_ID                           --更新ユーザID
        WHERE
            ACPT_NUM = I_ROW_DM_SUSPNS_ACPTDT.ACPT_NUM;
        --コミット件数加算
        P_COMMIT_CNT := P_COMMIT_CNT + SQL%ROWCOUNT;
    --例外処理
    EXCEPTION
    WHEN OTHERS THEN
        RAISE;
    END DM_SUSPNS_ACPTDT_UPD;

    --@*************************************************************************
    --@ Name   : DM_SUSPNS_ACPTDT_CHECK_UPD1(混在チェックエラー更新_1)
    --@ Summary: 顧客番号に対して、取消区分混在と見なして、受付データをエラーで更新する
    --@*************************************************************************
    PROCEDURE DM_SUSPNS_ACPTDT_CHECK_UPD1 (
            I_ROW_DM_SUSPNS_ACPTDT IN DM_SUSPNS_ACPTDT%ROWTYPE )
    IS
    BEGIN
        --混在チェックエラー更新_1
        UPDATE
            DM_SUSPNS_ACPTDT
        SET
            DNPRCS_FLG = CMN_CODE.C_DNPRCS_FLG_PRCS ,   --処理済フラグ
            ACPT_CHECK_RESLT = CMN_CODE.C_ACR_ERR ,     --受付チェック結果
            MESSG_ID = C_MSGCOMB0078 ,                  --メッセージID
            ERRFLG_CUST_NUM = C_ERRFLAG_EXIS ,          --エラーフラグ_顧客番号
            ERRFLG_DM_SUSPNS_DATA_DIV = C_ERRFLAG_EXIS ,--エラーフラグ_DM中止データ区分
            ERRFLG_CANCL_DIV = C_ERRFLAG_EXIS ,         --エラーフラグ_取消区分
            UPD_DATIME = SYSDATE ,                      --更新日時
            UPD_USR_ID = C_BATCH_ID                     --更新ユーザID
        WHERE
            CUST_NUM = I_ROW_DM_SUSPNS_ACPTDT.CUST_NUM
            AND DM_SUSPNS_DATA_DIV IN ( CMN_CODE.C_DSDD_A1_CORCH_OUTSD ,CMN_CODE.C_DSDD_SAMPLE_WITH_DM ,CMN_CODE.C_DSDD_PAYM )
            AND ( NVL ( ACPT_CHECK_RESLT ,CMN_CODE.C_ACR_NO_IMPLMN ) > CMN_CODE.C_ACR_ERR
                OR NVL ( ACPT_CHECK_RESLT ,CMN_CODE.C_ACR_NO_IMPLMN ) < CMN_CODE.C_ACR_ERR ) ;
        --コミット件数加算
        P_COMMIT_CNT := P_COMMIT_CNT + SQL%ROWCOUNT;
    --例外処理
    EXCEPTION
    WHEN OTHERS THEN
        RAISE;
    END DM_SUSPNS_ACPTDT_CHECK_UPD1;

    --@*************************************************************************
    --@ Name   : DM_SUSPNS_ACPTDT_CHECK_UPD2(混在チェックエラー更新_2)
    --@ Summary: 顧客番号+DM中止データ区分+中止講座3桁コード・社コードに対して、
    --@          取消区分混在と見なして、受付データをエラーで更新する
    --@*************************************************************************
    PROCEDURE DM_SUSPNS_ACPTDT_CHECK_UPD2 (
            I_ROW_DM_SUSPNS_ACPTDT IN DM_SUSPNS_ACPTDT%ROWTYPE )
    IS
    BEGIN
        --混在チェックエラー更新_2
        UPDATE
            DM_SUSPNS_ACPTDT
        SET
            DNPRCS_FLG = CMN_CODE.C_DNPRCS_FLG_PRCS ,   --処理済フラグ
            ACPT_CHECK_RESLT = CMN_CODE.C_ACR_ERR ,     --受付チェック結果
            MESSG_ID = C_MSGCOMB0079 ,                  --メッセージID
            ERRFLG_CUST_NUM = C_ERRFLAG_EXIS ,          --エラーフラグ_顧客番号
            ERRFLG_DM_SUSPNS_DATA_DIV = C_ERRFLAG_EXIS ,--エラーフラグ_DM中止データ区分
            ERRFLG_CRS3DG_COMPCD = C_ERRFLAG_EXIS ,     --エラーフラグ_講座3桁コード・社コード
            ERRFLG_CANCL_DIV = C_ERRFLAG_EXIS ,         --エラーフラグ_取消区分
            UPD_DATIME = SYSDATE ,                      --更新日時
            UPD_USR_ID = C_BATCH_ID                     --更新ユーザID
        WHERE
            CUST_NUM = I_ROW_DM_SUSPNS_ACPTDT.CUST_NUM
            AND DM_SUSPNS_DATA_DIV = I_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_DATA_DIV
            AND RPAD ( NVL ( SUSPNS_CRS3DG_COMPCD ,CMN_CODE.C_H_SPACE ) ,3 ,CMN_CODE.C_H_SPACE ) =
                I_ROW_DM_SUSPNS_ACPTDT.SUSPNS_CRS3DG_COMPCD
            AND ( NVL ( ACPT_CHECK_RESLT ,CMN_CODE.C_ACR_NO_IMPLMN ) > CMN_CODE.C_ACR_ERR
                OR NVL ( ACPT_CHECK_RESLT ,CMN_CODE.C_ACR_NO_IMPLMN ) < CMN_CODE.C_ACR_ERR ) ;
        --コミット件数加算
        P_COMMIT_CNT := P_COMMIT_CNT + SQL%ROWCOUNT;
    --例外処理
    EXCEPTION
    WHEN OTHERS THEN
        RAISE;
    END DM_SUSPNS_ACPTDT_CHECK_UPD2;

    --@****************************************************************************
    --@ Name    : BTGKJZB0101J10(DM中止受付チェック)
    --@ Summary : 取込処理によりDM中止受付データに設定された以下データに対して
    --@           記載事項チェックとノーマライズを実施する
    --@****************************************************************************
    PROCEDURE BTGKJZB0101J10 (
            O_RETURN_COD OUT CHAR --リターンコード
        )
    IS
        V_SHACD CHAR ( 1 ) ;                   --社コード
        V_BUSNSS_DATE CHAR ( 8 ) ;             --業務日付
        V_MESSAGE_ID VARCHAR2 ( 11 ) ;         --メッセージID
        V_SKIPFLG_CUSNUM BOOLEAN;              --顧客番号スキップフラッグTRUE:スキップFALSE:スキップしない
        V_SKIPFLG_PAIR BOOLEAN;                --組み合わせスキップフラッグTRUE:スキップFALSE:スキップしない
        V_KENNSU PLS_INTEGER;                  --DM中止変更コード補正用件数
        V_COMMIT_UNIT PLS_INTEGER;             --コミット単位
        V_TOTAL_CNT PLS_INTEGER;               --DM中止受付データの取得件数
        V_ROWID TYP_ROWID_TBL;                 --判定用ROWID
        V_ARY_MSG CMN_TYPE.TYP_ARY_PARAMS;     --埋め字用パラメータ
        V_ARY_TGT_MSG CMN_TYPE.TYP_ARY_PARAMS; --対象件数取得メッセージ用埋め字パラメータ
        V_GENRL_COD_MST TYP_GENRL_COD_MST_TBL; --汎用コードマスタ
        V_CMSKJZ025_OUT TYP_GENRL_COD_MST_TBL; --TODO 記載事項チェック_出力
        V_ROW_STS_DB STS_DB%ROWTYPE;           --基幹ステータスDBデータ取得1_出力
        V_DSA_IN_3AC_BEF CUR_DM_SUSPNS_ACPTDT%ROWTYPE;     --取消区分混在チェック用、DM中止データ区分が[3,A,C]の前回繰り返しで処理したレコード
        V_DSA_NOT_IN_3AC_BEF CUR_DM_SUSPNS_ACPTDT%ROWTYPE; --取消区分混在チェック用、上記以外の前回繰り返しで処理したレコード
        V_DSA_OTHER_BEF CUR_DM_SUSPNS_ACPTDT%ROWTYPE;      --取消区分混在チェック用以外の前回繰り返しで処理したレコード
        V_UPD_DM_SUSPNS_ACPTDT DM_SUSPNS_ACPTDT%ROWTYPE;   --更新用DM中止受付データ
    BEGIN
        --バッチ共通開始部品
        CMSKJZ001.START_PROC ( C_BATCH_ID ,--バッチ処理ID
        P_CMN_RETURN_COD ,                 --リターンコード
        V_BUSNSS_DATE ,                    --業務日付
        V_COMMIT_UNIT                      --コミット単位
        ) ;

        --共通部品リターンコード判定
        IF ( P_CMN_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;
        P_COMMIT_CNT := 0; --総コミット件数初期化
        V_TOTAL_CNT := 0;  --DM中止受付データの取得件数初期化
        V_SKIPFLG_CUSNUM := FALSE;
        V_SKIPFLG_PAIR := FALSE;

        --DM中止区分優先順位取得
        SELECT
            CODE_GROUP_ID ,--サブキー1
            CODE_VALUE1    --コードVALUE1
            BULK COLLECT
        INTO
            V_GENRL_COD_MST
        FROM
            GENRL_COD_MST_DETL --汎用コードマスタ_明細
        WHERE
            --AND 期間開始日 <= ※業務日付
            TERM_START_YMD <= V_BUSNSS_DATE
            --AND 期間終了日 >= ※業務日付
            AND TERM_END_YMD >= V_BUSNSS_DATE
            --AND サブキー1 IN ("3", "C", "A")
            AND CODE_GROUP_ID IN ( CMN_CODE.C_DSDD_A1_CORCH_OUTSD ,CMN_CODE.C_DSDD_PAYM ,CMN_CODE.C_DSDD_SAMPLE_WITH_DM )
            --主キー = "KJE_DM_SUSPNS_DIV_PRIORITY"
            AND CODE_DIV = C_DM_SUSPNS_DIV_PRIORITY;

        --DM中止受付データより処理対象データを取得し、取得したデータごとに繰り返す
        FOR V_ROW_DM_SUSPNS_ACPTDT IN CUR_DM_SUSPNS_ACPTDT
        LOOP
            V_TOTAL_CNT := CUR_DM_SUSPNS_ACPTDT%ROWCOUNT;
            --更新用データ初期化
            V_UPD_DM_SUSPNS_ACPTDT.ACPT_NUM := V_ROW_DM_SUSPNS_ACPTDT.ACPT_NUM; --受付番号
            --統合後顧客番号
            V_UPD_DM_SUSPNS_ACPTDT.INTGRT_AFT_CUST_NUM := V_ROW_DM_SUSPNS_ACPTDT.INTGRT_AFT_CUST_NUM;
            --優先順位
            V_UPD_DM_SUSPNS_ACPTDT.PRIRTY_RNK := NULL;
            --メッセージID
            V_UPD_DM_SUSPNS_ACPTDT.MESSG_ID := NULL;
            --DM中止変更コード
            V_UPD_DM_SUSPNS_ACPTDT.DM_SUSPNS_CHANG_COD := V_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_CHANG_COD;
            --エラーフラグ_DM中止依頼日
            V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_DM_SUSPNS_REQ_DAY := C_ERRFLG_NORML;
            --エラーフラグ_顧客番号
            V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_CUST_NUM := C_ERRFLG_NORML;
            --エラーフラグ_DM中止データ区分
            V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_DM_SUSPNS_DATA_DIV := C_ERRFLG_NORML;
            --エラーフラグ_講座3桁コード
            V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_CRS3DG_COMPCD := C_ERRFLG_NORML;
            --エラーフラグ_取消区分
            V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_CANCL_DIV := C_ERRFLG_NORML;
            --エラーフラグ_DMコード
            V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_DMCD := C_ERRFLG_NORML;
            --受付チェック結果
            V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_NORML;

            --TODO DM中止の受付データに対して、記載事項チェックを行う
            V_CMSKJZ025_OUT := NULL;
            --TODO 共通部品リターンコード判定
            /*                IF (P_CMN_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 V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT = CMN_CODE.C_ACR_NORML THEN
                BEGIN
                    SELECT
                        CUST_NUM_TO --顧客番号_TO
                    INTO
                        V_UPD_DM_SUSPNS_ACPTDT.INTGRT_AFT_CUST_NUM
                    FROM
                        CSTINT_FROMTO_CONVRT_TBL --顧客統合FROM-TO変換テーブル
                    WHERE
                        --顧客番号_FROM =DM中止受付データ.顧客番号
                        CUST_NUM_FROM = V_ROW_DM_SUSPNS_ACPTDT.CUST_NUM
                        AND DEL_FLG = CMN_CODE.C_DEL_FLG_UNDEL; --AND 削除フラグ = 0:未削除
                    --エラーフラグ_顧客番号に「1:エラー有り」設定する
                    V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_CUST_NUM := C_ERRFLAG_EXIS;
                    --受付チェック結果に「2:エラー」設定する
                    V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                    --メッセージID設定する
                    V_UPD_DM_SUSPNS_ACPTDT.MESSG_ID := C_MSGCOMB0040;
                EXCEPTION
                --取得できなかった場合
                WHEN NO_DATA_FOUND THEN
                    NULL;
                END;
            END IF;

            --共通部品処理記述書_CMSKJZ052_基幹ステータスDBデータ取得
            CMSKJZ052.GET_STS_DB_CUST_NUM ( V_ROW_DM_SUSPNS_ACPTDT.CUST_NUM ,--顧客番号
            P_CMN_RETURN_COD ,                                               --リターンコード
            V_MESSAGE_ID ,                                                   --メッセージID
            V_ARY_MSG ,                                                      --埋字
            V_ROW_STS_DB ) ;
            --共通部品リターンコード判定
            IF ( P_CMN_RETURN_COD = CMN_CODE.C_CMN_R_CD_ERR ) THEN
                RAISE_APPLICATION_ERROR ( CMN_CODE.C_ERR_NUM_CMSKJZ052 ,CMN_CODE.C_ERR_MESSG_CMSKJZ052 ) ;
            END IF;

            --受付チェック結果が「1:正常」の場合、統合後顧客番号チェック
            IF V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT = CMN_CODE.C_ACR_NORML THEN

                --取得0件の場合
                IF P_CMN_RETURN_COD = CMN_CODE.C_CMN_R_CD_NO_DATA THEN
                    --エラーフラグ_顧客番号に「1:エラー有り」設定する
                    V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_CUST_NUM := C_ERRFLAG_EXIS;
                    V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                    V_UPD_DM_SUSPNS_ACPTDT.MESSG_ID := C_MSGCOMB0001;
                END IF;

            END IF;

            --受付チェック結果が「1:正常」の場合、モニター顧客チェック
            IF V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT = CMN_CODE.C_ACR_NORML
                AND V_ROW_STS_DB.MONTR_DIV <> CMN_CODE.C_MONITA_KBN_NTGT THEN
                --エラーフラグ_顧客番号に「1:エラー有り」設定する
                V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_CUST_NUM := C_ERRFLAG_EXIS;
                V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                V_UPD_DM_SUSPNS_ACPTDT.MESSG_ID := C_MSGCOMB0025;
            END IF;

            --受付チェック結果が「1:正常」の場合、講座コードチェック
            IF V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT = CMN_CODE.C_ACR_NORML
                AND V_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_DATA_DIV IN ( CMN_CODE.C_DSDD_SPECRS_INVETI ,
                    CMN_CODE.C_DSDD_SPECOM ,CMN_CODE.C_DSDD_CORCH_NEWSLT ,CMN_CODE.C_DSDD_MALOD_NEWSLT )
                AND LENGTH ( TRIM ( V_ROW_DM_SUSPNS_ACPTDT.SUSPNS_CRS3DG_COMPCD ) ) = 3 THEN
                --講座基本3桁マスタ有無確認
                SELECT
                    ROWID BULK COLLECT
                INTO
                    V_ROWID
                FROM
                    COURSE_KIHON_3KETA_MASTER
                WHERE
                    COURSE_03_KETA_CD = V_ROW_DM_SUSPNS_ACPTDT.SUSPNS_CRS3DG_COMPCD --講座3桁コード = ※DM中止受付データ.中止講座3桁コード・社コード
                    AND STATUS_DIV = CMN_CODE.C_STATUS_DIV_PRINC_REG                --ステータス区分 = 5:本登録
                    AND DEL_FLG = CMN_CODE.C_DEL_FLG_UNDEL                          --削除フラグ = 0:未削除
                    AND ROWNUM <= 1;                                                --行番号 <= 1

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

            END IF;

            --受付チェック結果が「1:正常」の場合、社コードチェック
            IF V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT = CMN_CODE.C_ACR_NORML
                AND V_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_DATA_DIV = CMN_CODE.C_DSDD_SPECOM
                AND LENGTH ( TRIM ( V_ROW_DM_SUSPNS_ACPTDT.SUSPNS_CRS3DG_COMPCD ) ) = 1 THEN
                --社マスタ有無確認
                SELECT
                    ROWID BULK COLLECT
                INTO
                    V_ROWID
                FROM
                    SHA_MASTER
                WHERE
                    CMPNY_CD = TRIM ( V_ROW_DM_SUSPNS_ACPTDT.SUSPNS_CRS3DG_COMPCD ) --社コード = ※DM中止受付データ.中止講座3桁コード・社コード
                    AND DEL_FLG = CMN_CODE.C_DEL_FLG_UNDEL                          --削除フラグ = 0:未削除
                    AND ROWNUM <= 1;                                                --行番号 <= 1

                --社マスタ有無確認取得0件の場合
                IF V_ROWID.COUNT = 0 THEN
                    --エラーフラグ_講座3桁コード・社コードに「1:エラー有り」を設定する
                    V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_CRS3DG_COMPCD := C_ERRFLAG_EXIS;
                    V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                    V_UPD_DM_SUSPNS_ACPTDT.MESSG_ID := C_MSGCOMB0061;
                END IF;

            END IF;

            --項目間相関チェック
            --受付チェック結果が「1:正常」の場合、DM中止データ区分とDMコードの項目間相関チェック
            IF V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT = CMN_CODE.C_ACR_NORML THEN

                --DM中止データ区分=4,6,7,8,9,B,D,E の場合
                IF V_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_DATA_DIV IN ( CMN_CODE.C_DSDD_SPECRS_INVETI ,
                    CMN_CODE.C_DSDD_CORCTN_PROMT_LETTR ,CMN_CODE.C_DSDD_ASSOC_GIKEN ,
                    CMN_CODE.C_DSDD_OTHCOM_NMLST_ROT ,CMN_CODE.C_DSDD_ADMSSN_DM ,
                    CMN_CODE.C_DSDD_SPECOM ,CMN_CODE.C_DSDD_CORCH_NEWSLT ,
                    CMN_CODE.C_DSDD_MALOD_NEWSLT ) THEN

                    --DMコードが入力されていないこと
                    IF TRIM ( V_ROW_DM_SUSPNS_ACPTDT.DMCD ) IS NULL THEN
                        NULL;
                    ELSE
                        --エラーフラグ_DMコードに「1:エラー有り」を設定する
                        V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_DMCD := C_ERRFLAG_EXIS;
                        V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                        V_UPD_DM_SUSPNS_ACPTDT.MESSG_ID := C_MSGCOMB0062;
                    END IF;

                END IF;

            END IF;

            --受付チェック結果が「1:正常」の場合、DM中止データ区分と講座コード①の項目間相関チェック
            IF V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT = CMN_CODE.C_ACR_NORML THEN

                --DM中止データ区分=3,6,7,8,9,A,C の場合
                IF V_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_DATA_DIV IN ( CMN_CODE.C_DSDD_A1_CORCH_OUTSD ,
                    CMN_CODE.C_DSDD_CORCTN_PROMT_LETTR ,CMN_CODE.C_DSDD_ASSOC_GIKEN ,
                    CMN_CODE.C_DSDD_OTHCOM_NMLST_ROT ,CMN_CODE.C_DSDD_ADMSSN_DM ,
                    CMN_CODE.C_DSDD_SAMPLE_WITH_DM ,CMN_CODE.C_DSDD_PAYM ) THEN

                    --中止講座3桁コード・社コードが入力されていないこと
                    IF TRIM ( V_ROW_DM_SUSPNS_ACPTDT.SUSPNS_CRS3DG_COMPCD ) IS NULL THEN
                        NULL;
                    ELSE
                        --エラーフラグ_講座3桁コード・社コードに「1:エラー有り」を設定する
                        V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_CRS3DG_COMPCD := C_ERRFLAG_EXIS;
                        V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                        V_UPD_DM_SUSPNS_ACPTDT.MESSG_ID := C_MSGCOMB0063;
                    END IF;

                END IF;

            END IF;

            --受付チェック結果が「1:正常」の場合、DM中止データ区分と講座コード②の項目間相関チェック
            IF V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT = CMN_CODE.C_ACR_NORML
                AND V_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_DATA_DIV IN ( CMN_CODE.C_DSDD_SPECRS_INVETI ,
                CMN_CODE.C_DSDD_SPECOM ,CMN_CODE.C_DSDD_CORCH_NEWSLT ,
                CMN_CODE.C_DSDD_MALOD_NEWSLT ) THEN

                --DM中止データ区分=4,B,D,E の場合、中止講座3桁コード・社コードは入力されていること
                IF TRIM ( V_ROW_DM_SUSPNS_ACPTDT.SUSPNS_CRS3DG_COMPCD ) IS NULL THEN
                    --エラーフラグ_講座3桁コード・社コードに「1:エラー有り」を設定する
                    V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_CRS3DG_COMPCD := C_ERRFLAG_EXIS;
                    V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                    V_UPD_DM_SUSPNS_ACPTDT.MESSG_ID := C_MSGCOMB0064;
                END IF;

            END IF;

            --受付チェック結果が「1:正常」の場合、DM中止依頼日と業務日付の項目間相関チェック
            IF V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT = CMN_CODE.C_ACR_NORML THEN

                --DM中止依頼日 ≦ 初回基幹処理日であること
                IF V_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_REQ_DAY > V_ROW_DM_SUSPNS_ACPTDT.FIRTIM_CORE_PRCS_DAY THEN
                    --エラーフラグ_講座3桁コード・社コードに「1:エラー有り」を設定する
                    V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_DM_SUSPNS_REQ_DAY := C_ERRFLAG_EXIS;
                    V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                    V_UPD_DM_SUSPNS_ACPTDT.MESSG_ID := C_MSGCOMB0065;
                END IF;

            END IF;

            --受付チェック結果が「1:正常」の場合、登録済みデータチェック
            IF V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT = CMN_CODE.C_ACR_NORML THEN

                --取消区分が「0:未設定」の場合
                IF V_ROW_DM_SUSPNS_ACPTDT.CANCL_DIV = CMN_CODE.C_CD_NOT_CONFG THEN

                    --DM中止データ区分=A、ステータスDBのDM中止コード=「3」、「C」の場合
                    IF V_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_DATA_DIV = CMN_CODE.C_DSDD_SAMPLE_WITH_DM
                        AND V_ROW_STS_DB.DMSTCD IN ( CMN_CODE.C_DSDD_A1_CORCH_OUTSD ,CMN_CODE.C_DSDD_PAYM ) THEN
                        --エラーフラグ_DM中止データ区分に「1:エラー有り」を設定する
                        V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_DM_SUSPNS_DATA_DIV := C_ERRFLAG_EXIS;
                        --エラーフラグ_取消区分に「1:エラー有り」を設定する
                        V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_CANCL_DIV := C_ERRFLAG_EXIS;
                        V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                        V_UPD_DM_SUSPNS_ACPTDT.MESSG_ID := C_MSGCOMB0066;
                    ELSIF V_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_DATA_DIV = CMN_CODE.C_DSDD_PAYM
                        AND V_ROW_STS_DB.DMSTCD = CMN_CODE.C_DSDD_A1_CORCH_OUTSD THEN
                        --エラーフラグ_DM中止データ区分に「1:エラー有り」を設定する
                        V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_DM_SUSPNS_DATA_DIV := C_ERRFLAG_EXIS;
                        --エラーフラグ_取消区分に「1:エラー有り」を設定する
                        V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_CANCL_DIV := C_ERRFLAG_EXIS;
                        V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                        V_UPD_DM_SUSPNS_ACPTDT.MESSG_ID := C_MSGCOMB0066;
                    END IF;

                ELSIF V_ROW_DM_SUSPNS_ACPTDT.CANCL_DIV = CMN_CODE.C_CD_CONFG THEN

                --取消区分が「1:設定」の場合
                    IF V_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_DATA_DIV = CMN_CODE.C_DSDD_A1_CORCH_OUTSD
                        AND TRIM ( V_ROW_STS_DB.DMSTCD ) IS NOT NULL
                        AND V_ROW_STS_DB.DMSTCD <> CMN_CODE.C_DSDD_A1_CORCH_OUTSD THEN
                        --エラーフラグ_DM中止データ区分に「1:エラー有り」を設定する
                        V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_DM_SUSPNS_DATA_DIV := C_ERRFLAG_EXIS;
                        --エラーフラグ_取消区分に「1:エラー有り」を設定する
                        V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_CANCL_DIV := C_ERRFLAG_EXIS;
                        V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                        V_UPD_DM_SUSPNS_ACPTDT.MESSG_ID := C_MSGCOMB0066;
                    ELSIF V_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_DATA_DIV = CMN_CODE.C_DSDD_SAMPLE_WITH_DM
                        AND TRIM ( V_ROW_STS_DB.DMSTCD ) IS NOT NULL
                        AND V_ROW_STS_DB.DMSTCD <> CMN_CODE.C_DSDD_SAMPLE_WITH_DM THEN
                        --エラーフラグ_DM中止データ区分に「1:エラー有り」を設定する
                        V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_DM_SUSPNS_DATA_DIV := C_ERRFLAG_EXIS;
                        --エラーフラグ_取消区分に「1:エラー有り」を設定する
                        V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_CANCL_DIV := C_ERRFLAG_EXIS;
                        V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                        V_UPD_DM_SUSPNS_ACPTDT.MESSG_ID := C_MSGCOMB0066;
                    ELSIF V_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_DATA_DIV = CMN_CODE.C_DSDD_PAYM
                        AND TRIM ( V_ROW_STS_DB.DMSTCD ) IS NOT NULL
                        AND V_ROW_STS_DB.DMSTCD <> CMN_CODE.C_DSDD_PAYM THEN
                        --エラーフラグ_DM中止データ区分に「1:エラー有り」を設定する
                        V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_DM_SUSPNS_DATA_DIV := C_ERRFLAG_EXIS;
                        --エラーフラグ_取消区分に「1:エラー有り」を設定する
                        V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_CANCL_DIV := C_ERRFLAG_EXIS;
                        V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                        V_UPD_DM_SUSPNS_ACPTDT.MESSG_ID := C_MSGCOMB0066;
                    ELSIF V_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_DATA_DIV = CMN_CODE.C_DSDD_CORCTN_PROMT_LETTR
                        AND TRIM ( V_ROW_STS_DB.CORCTN_PROMT_LETTR_SUSPNS ) IS NULL THEN
                        --エラーフラグ_DM中止データ区分に「1:エラー有り」を設定する
                        V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_DM_SUSPNS_DATA_DIV := C_ERRFLAG_EXIS;
                        --エラーフラグ_取消区分に「1:エラー有り」を設定する
                        V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_CANCL_DIV := C_ERRFLAG_EXIS;
                        V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                        V_UPD_DM_SUSPNS_ACPTDT.MESSG_ID := C_MSGCOMB0067;
                    ELSIF V_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_DATA_DIV = CMN_CODE.C_DSDD_ASSOC_GIKEN
                        AND TRIM ( V_ROW_STS_DB.ASSOC_GIKEN_DMSTCD ) IS NULL THEN
                        --エラーフラグ_DM中止データ区分に「1:エラー有り」を設定する
                        V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_DM_SUSPNS_DATA_DIV := C_ERRFLAG_EXIS;
                        --エラーフラグ_取消区分に「1:エラー有り」を設定する
                        V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_CANCL_DIV := C_ERRFLAG_EXIS;
                        V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                        V_UPD_DM_SUSPNS_ACPTDT.MESSG_ID := C_MSGCOMB0068;
                    ELSIF V_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_DATA_DIV = CMN_CODE.C_DSDD_OTHCOM_NMLST_ROT
                        AND TRIM ( V_ROW_STS_DB.OTHCOM_DMSTCD ) IS NULL THEN
                        --エラーフラグ_DM中止データ区分に「1:エラー有り」を設定する
                        V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_DM_SUSPNS_DATA_DIV := C_ERRFLAG_EXIS;
                        --エラーフラグ_取消区分に「1:エラー有り」を設定する
                        V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_CANCL_DIV := C_ERRFLAG_EXIS;
                        V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                        V_UPD_DM_SUSPNS_ACPTDT.MESSG_ID := C_MSGCOMB0069;
                    ELSIF V_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_DATA_DIV = CMN_CODE.C_DSDD_ADMSSN_DM
                        AND TRIM ( V_ROW_STS_DB.ADMSSN_DMSTCD ) IS NULL THEN
                        --エラーフラグ_DM中止データ区分に「1:エラー有り」を設定する
                        V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_DM_SUSPNS_DATA_DIV := C_ERRFLAG_EXIS;
                        --エラーフラグ_取消区分に「1:エラー有り」を設定する
                        V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_CANCL_DIV := C_ERRFLAG_EXIS;
                        V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                        V_UPD_DM_SUSPNS_ACPTDT.MESSG_ID := C_MSGCOMB0070;
                    ELSIF V_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_DATA_DIV = CMN_CODE.C_DSDD_SPECOM THEN
                        --DM中止受付データ.中止講座3桁コード・社コードの上1桁を社コードに設定する
                        V_SHACD := SUBSTR ( V_ROW_DM_SUSPNS_ACPTDT.SUSPNS_CRS3DG_COMPCD ,1 ,1 ) ;

                        IF V_ROW_STS_DB.SPECOM_DMSTCD_COMPCD1 <> V_SHACD
                            AND V_ROW_STS_DB.SPECOM_DMSTCD_COMPCD2 <> V_SHACD
                            AND V_ROW_STS_DB.SPECOM_DMSTCD_COMPCD3 <> V_SHACD THEN
                            --エラーフラグ_DM中止データ区分に「1:エラー有り」を設定する
                            V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_DM_SUSPNS_DATA_DIV := C_ERRFLAG_EXIS;
                            --エラーフラグ_取消区分に「1:エラー有り」を設定する
                            V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_CANCL_DIV := C_ERRFLAG_EXIS;
                            V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                            V_UPD_DM_SUSPNS_ACPTDT.MESSG_ID := C_MSGCOMB0071;
                        END IF;

                    ELSIF V_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_DATA_DIV IN ( CMN_CODE.C_DSDD_SPECRS_INVETI ,
                        CMN_CODE.C_DSDD_CORCH_NEWSLT ,CMN_CODE.C_DSDD_MALOD_NEWSLT ) THEN
                        --特定講座指導通販会報DM中止データ有無確認
                        SELECT
                            ROWID BULK COLLECT
                        INTO
                            V_ROWID
                        FROM
                            SCMN_DM_SUSPNS_INFO_DATA --特定講座指導通販会報DM中止データ
                        WHERE
                            --統合前顧客番号 = ※DM中止受付データ.顧客番号
                            INTGRT_BEF_CUST_NUM = V_ROW_DM_SUSPNS_ACPTDT.CUST_NUM
                            --DM中止データ区分=※DM中止受付データ.DM中止データ区分
                            AND DM_SUSPNS_DATA_DIV = V_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_DATA_DIV
                            AND CRS3DG = V_ROW_DM_SUSPNS_ACPTDT.SUSPNS_CRS3DG_COMPCD
                            AND DEL_FLG = CMN_CODE.C_DEL_FLG_UNDEL --AND 削除フラグ = 0:未削除
                            AND ROWNUM <= 1;                       --AND 行番号 <= 1

                        --特定講座指導通販会報DM中止データ有無確認取得0件の場合
                        IF V_ROWID.COUNT = 0 THEN
                            --エラーフラグ_DM中止データ区分に「1:エラー有り」を設定する
                            V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_DM_SUSPNS_DATA_DIV := C_ERRFLAG_EXIS;
                            --エラーフラグ_取消区分に「1:エラー有り」を設定する
                            V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_CANCL_DIV := C_ERRFLAG_EXIS;
                            --エラーフラグ_講座3桁コード・社コードに「1:エラー有り」を設定する
                            V_UPD_DM_SUSPNS_ACPTDT.ERRFLG_CRS3DG_COMPCD := C_ERRFLAG_EXIS;
                            V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                            --メッセージID設定する
                            V_UPD_DM_SUSPNS_ACPTDT.MESSG_ID := C_MSGCOMB0072;
                        END IF;

                    END IF;

                END IF;

            END IF;

            --チェック後補正処理
            --1件目以外のステータスDBの登録済み特定社データ件数設定
            IF V_TOTAL_CNT = 1 OR V_ROW_STS_DB.CUST_NUM <> V_DSA_OTHER_BEF.CUST_NUM THEN
                V_KENNSU := 0;

                --ステータスDBの特定社DM中止コード_社コード3が入力ありの場合
                IF TRIM ( V_ROW_STS_DB.SPECOM_DMSTCD_COMPCD3 ) IS NOT NULL THEN
                    V_KENNSU := 3;
                ELSIF TRIM ( V_ROW_STS_DB.SPECOM_DMSTCD_COMPCD2 ) IS NOT NULL THEN
                    V_KENNSU := 2;
                ELSIF TRIM ( V_ROW_STS_DB.SPECOM_DMSTCD_COMPCD1 ) IS NOT NULL THEN
                    V_KENNSU := 1;
                END IF;

            END IF;

            --受付チェック結果が「1:正常」の場合
            IF V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT = CMN_CODE.C_ACR_NORML THEN
                --優先順位の設定
                IF V_GENRL_COD_MST.COUNT > 0 THEN
                    FOR I IN 1 .. V_GENRL_COD_MST.COUNT
                    LOOP
                        IF V_GENRL_COD_MST ( I ) .CODE_GROUP_ID = V_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_DATA_DIV THEN
                            V_UPD_DM_SUSPNS_ACPTDT.PRIRTY_RNK := V_GENRL_COD_MST ( I ) .CODE_VALUE1;
                            EXIT;
                        END IF;
                    END LOOP;
                ELSE
                    V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                    V_UPD_DM_SUSPNS_ACPTDT.MESSG_ID := C_MSGCOMB0103;
                END IF;

                --DM中止変更コード補正
                IF V_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_DATA_DIV = CMN_CODE.C_DSDD_SPECOM
                    AND V_ROW_DM_SUSPNS_ACPTDT.CANCL_DIV = CMN_CODE.C_CD_NOT_CONFG THEN
                    V_KENNSU := V_KENNSU + 1;

                   --有効な特定社DM中止依頼(DM中止データ区分=B)が受付データとステータスDBの登録済みデータで計4件以上発生した場合
                    IF V_KENNSU > 3 THEN
                        --DM中止変更コードに3を設定する
                        V_UPD_DM_SUSPNS_ACPTDT.DM_SUSPNS_CHANG_COD := 3;
                    END IF;

                END IF;

            END IF;

            --取消区分混在チェック
            --今回顧客番号<>保存した顧客番号の場合
            IF V_TOTAL_CNT <> 1 AND V_ROW_DM_SUSPNS_ACPTDT.CUST_NUM <> V_DSA_IN_3AC_BEF.CUST_NUM THEN
                --取消区分混在チェックスキップしない
                V_SKIPFLG_CUSNUM := FALSE;
            END IF;

            --今回顧客番号、DM中止データ区分、中止講座3桁コード・社コードいずれ<>保存したデータの場合
            IF V_TOTAL_CNT <> 1 AND ( V_DSA_NOT_IN_3AC_BEF.CUST_NUM <> V_ROW_DM_SUSPNS_ACPTDT.CUST_NUM
                    OR V_DSA_NOT_IN_3AC_BEF.DM_SUSPNS_DATA_DIV <> V_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_DATA_DIV
                    OR V_DSA_NOT_IN_3AC_BEF.SUSPNS_CRS3DG_COMPCD <> V_ROW_DM_SUSPNS_ACPTDT.SUSPNS_CRS3DG_COMPCD ) THEN
                --取消区分混在チェックスキップしない
                V_SKIPFLG_PAIR := FALSE;
            END IF;

            --顧客番号、DM中止データ区分設定
            V_UPD_DM_SUSPNS_ACPTDT.CUST_NUM := V_ROW_DM_SUSPNS_ACPTDT.CUST_NUM;
            V_UPD_DM_SUSPNS_ACPTDT.DM_SUSPNS_DATA_DIV := V_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_DATA_DIV;

            --処理対象データのDM中止データ区分が「3:A-1指導以外、A:サンプル付DM、C:支払い途上者」いずれか値を満たす場合
            IF V_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_DATA_DIV
                IN ( CMN_CODE.C_DSDD_A1_CORCH_OUTSD ,CMN_CODE.C_DSDD_SAMPLE_WITH_DM ,CMN_CODE.C_DSDD_PAYM ) THEN

                --顧客番号スキップフラッグ = FALSE の場合
                IF V_SKIPFLG_CUSNUM = FALSE THEN

                    IF V_TOTAL_CNT <> 1 AND V_ROW_DM_SUSPNS_ACPTDT.CUST_NUM = V_DSA_IN_3AC_BEF.CUST_NUM
                        AND V_DSA_IN_3AC_BEF.CANCL_DIV <> V_ROW_DM_SUSPNS_ACPTDT.CANCL_DIV THEN
                        --混在チェックエラー更新_1
                        V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                        DM_SUSPNS_ACPTDT_CHECK_UPD1 ( V_UPD_DM_SUSPNS_ACPTDT ) ;

                        V_SKIPFLG_CUSNUM := TRUE;
                    ELSE
                        --前回の繰り返しで処理したレコードを保持する
                        V_DSA_IN_3AC_BEF := V_ROW_DM_SUSPNS_ACPTDT;
                    END IF;

                END IF;

            ELSE
                --中止講座3桁コード・社コード設定
                V_UPD_DM_SUSPNS_ACPTDT.SUSPNS_CRS3DG_COMPCD := V_ROW_DM_SUSPNS_ACPTDT.SUSPNS_CRS3DG_COMPCD;

                --組み合わせスキップフラッグ = FALSE の場合
                IF V_SKIPFLG_PAIR = FALSE THEN

                    --処理対象データの顧客番号、DM中止データ区分、同一中止講座3桁コード・社コードが前回の繰り返しで処理したレコードのものと同じ場合
                    IF V_TOTAL_CNT <> 1 AND V_DSA_NOT_IN_3AC_BEF.CUST_NUM = V_ROW_DM_SUSPNS_ACPTDT.CUST_NUM
                        AND V_DSA_NOT_IN_3AC_BEF.DM_SUSPNS_DATA_DIV = V_ROW_DM_SUSPNS_ACPTDT.DM_SUSPNS_DATA_DIV
                        AND V_DSA_NOT_IN_3AC_BEF.SUSPNS_CRS3DG_COMPCD = V_ROW_DM_SUSPNS_ACPTDT.SUSPNS_CRS3DG_COMPCD
                        AND V_DSA_NOT_IN_3AC_BEF.CANCL_DIV <> V_ROW_DM_SUSPNS_ACPTDT.CANCL_DIV THEN
                        --混在チェックエラー更新_2
                        V_UPD_DM_SUSPNS_ACPTDT.ACPT_CHECK_RESLT := CMN_CODE.C_ACR_ERR;
                        DM_SUSPNS_ACPTDT_CHECK_UPD2 ( V_UPD_DM_SUSPNS_ACPTDT ) ;

                        V_SKIPFLG_PAIR := TRUE;
                    ELSE
                        --前回の繰り返しで処理したレコードを保持する
                        V_DSA_NOT_IN_3AC_BEF := V_ROW_DM_SUSPNS_ACPTDT;
                    END IF;

                END IF;

            END IF;

            --DM中止受付チェック更新
            DM_SUSPNS_ACPTDT_UPD ( V_UPD_DM_SUSPNS_ACPTDT ) ;
            --前回レコードを保持し
            V_DSA_OTHER_BEF := V_ROW_DM_SUSPNS_ACPTDT;
        END LOOP;

        --対象件数出力処理
        V_ARY_TGT_MSG ( 1 ) := C_DM_SUSPNS_ACPTDT;       --DM中止受付データ
        V_ARY_TGT_MSG ( 2 ) := TO_CHAR ( V_TOTAL_CNT ) ; --対象件数
        CMSKJZ003.INFO ( C_MSGCOMB000C ,                 --メッセージID
        MSG_CONST.MSGCOMB000C ,                          --メッセージ
        V_ARY_TGT_MSG ,                                  --埋め字用配列
        C_BATCH_ID ,                                     --ユーザーID
        P_CMN_RETURN_COD ) ;                             --リターンコード

        --DBコミットを行う
        IF ( P_COMMIT_CNT <> 0 ) THEN
            COMMIT;
            V_ARY_TGT_MSG ( 1 ) := C_DM_SUSPNS_ACPTDT;       --DM中止受付データテーブル名
            V_ARY_TGT_MSG ( 2 ) := TO_CHAR ( P_COMMIT_CNT ) ;--コミット件数
            --コミットログ
            CMSKJZ003.INFO ( C_MSGCOMB000G ,--メッセージID
            MSG_CONST.MSGCOMB000G ,         --メッセージ
            V_ARY_TGT_MSG ,                 --埋め字用配列
            C_BATCH_ID ,                    --ユーザーID
            P_CMN_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_CMN_RETURN_COD ,               --部品用リターンコード
        O_RETURN_COD                     --リターンコード
        ) ;

        --共通部品リターンコード判定
        IF ( P_CMN_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
        --バッチ共通エラー処理
        CMSKJZ051.CMN_ERR_PROC ( C_BATCH_ID ,--バッチ処理ID
        P_CMN_RETURN_COD                     --リターンコード
        ) ;
        --ロールバック
        ROLLBACK;
        --ロールバックメッセージ
        CMSKJZ003.INFO ( C_MSGCOMB000K ,--メッセージID
        MSG_CONST.MSGCOMB000K ,         --メッセージ
        V_ARY_MSG ,                     --埋め字用配列
        C_BATCH_ID ,                    --ユーザーID
        P_CMN_RETURN_COD ) ;            --リターンコード
        --異常終了
        O_RETURN_COD := CMN_CODE.C_R_CD_ERR;
    END BTGKJZB0101J10;

END KJZ_KJZB01_BTGKJZB0101J10;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值