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;