CREATE OR REPLACE PROCEDURE A_SRE_1210
/*******************************************************************************
** プロシジャ名 :調達仕入先連携(WorksPro→楽々)
** プロシジャID :A_SRE_1210
** 機能概要 :WorksProシステムから楽々システムへ調達仕入先情報を連携する日次ジョブである。
** パラメータ :会社コード
** :CSV出力パス
** :CSVのファイル名1
** :CSVのファイル名2
** :CSVのファイル名3
** :リトライ回数
** :SLEEP時間
** :戻り値
** :エラーコード
** :エラーメッセージ
** :エラー発生した主キーデータ
** :処理開始時間
** :処理終了時間
***************************************************************************/
(
INCOMP_CD IN CHAR, /* 会社コード */
PPATH IN VARCHAR2, /* CSV出力パス */
FILE1 IN VARCHAR2, /* CSVのファイル名1 */
FILE2 IN VARCHAR2, /* CSVのファイル名2 */
FILE3 IN VARCHAR2, /* CSVのファイル名3 */
RETRYCNT IN NUMBER, /* リトライ回数 */
SLEEPTIME IN NUMBER, /* SLEEP時間 */
RETURN_CD OUT NUMBER, /* 戻り値 */
CD OUT VARCHAR2, /* エラーコード */
MESSAGE OUT VARCHAR2, /* エラーメッセージ */
ERROR_DATA OUT VARCHAR2, /* エラー発生した主キーデータ */
START_TIME OUT VARCHAR2, /* 処理開始時間 */
END_TIME OUT VARCHAR2 /* 処理終了時間 */
)
AUTHID CURRENT_USER IS
-- *************************************************************************
-- *** 変数宣言部
-- *************************************************************************
WK_SQL VARCHAR2(30000);
STR VARCHAR2(30000);
FCSVHANDLE UTL_FILE.FILE_TYPE; --取引先書類のハンドルを書く
FWINHANDLE UTL_FILE.FILE_TYPE; --取引先窓口書類のハンドルを書く
FPAYHANDLE UTL_FILE.FILE_TYPE; --取引先・支払条件書類のハンドルを書く
OUT_COMP_CD M_SUPL.COMP_CD%TYPE; --会社コード
OUT_SUPL_CD M_SUPL.SUPL_CD%TYPE; --仕入先コード
OUT_PYMT_SUPL_CD M_SUPL.PYMT_SUPL_CD%TYPE; --支払先コード
OUT_SUPL_NM M_SUPL.SUPL_NM%TYPE; --仕入先名称
OUT_SUPL_SHORT_NM M_SUPL.SUPL_SHORT_NM%TYPE; --仕入先略称
OUT_SUPL_WINDOW_NM M_SUPL.SUPL_WINDOW_NM%TYPE; --仕入先窓口名称
CSV_SUPL_NM M_SUPL_CSV.SUPL_NM%TYPE;
CSV_SUPL_SHORT_NM M_SUPL_CSV.SUPL_SHORT_NM%TYPE;
CSV_SUPL_WINDOW_NM M_SUPL_WINDOW_CSV.SUPL_WINDOW_NM%TYPE;
CSV_SUPL_ADDRESS1 M_SUPL_WINDOW_CSV.SUPL_ADD1%TYPE;
OUT_SUPL_ZIP M_SUPL.SUPL_ZIP%TYPE; --仕入先郵便番号
OUT_SUPL_ADDRESS1 M_SUPL.SUPL_ADDRESS1%TYPE; --仕入先住所
OUT_SUPL_PHONE M_SUPL.SUPL_PHONE%TYPE; --仕入先電話番号
OUT_SUPL_FAX M_SUPL.SUPL_FAX%TYPE; --仕入先FAX
OUT_UPDATE_TIME M_SUPL.UPDATE_DATETIME%TYPE; --更新日時
OUT_PYMT_TERMS_CD M_PYMT_SUPL.PYMT_TERMS_CD%TYPE; --支払条件コード
V_UPDATE_TIME M_SUPL_CSV.LATEST_UPDATE_DATETIME%TYPE;
V_SUPL_CSV M_SUPL_CSV%ROWTYPE; --取引先CSV作成済ROWTYPE
V_SUPL_WINDOW_CSV M_SUPL_WINDOW_CSV%ROWTYPE; --取引先窓口CSV作成済ROWTYPE
V_PAY_CONDITIONS_CSV M_PAY_CONDITIONS_CSV%ROWTYPE; --取引先・支払条件CSV作成済ROWTYPE
V_SUPL_CSV_NUM NUMBER := 0; --取引先CSV作成済処理件数
V_SUPL_WIN_NUM NUMBER := 0; --取引先窓口CSV作成済処理件数
V_PAY_COND_NUM NUMBER := 0; --取引先・支払条件CSV作成済処理件数
V_ERR_TABLE VARCHAR2(50); --エラー発生したテーブル
V_ERR_KEY VARCHAR2(300); --エラー発生した主キー
FILE1_EXIST_FLG BOOLEAN; --ファイルが存在flag
FILE2_EXIST_FLG BOOLEAN; --ファイルが存在flag
FILE3_EXIST_FLG BOOLEAN; --ファイルが存在flag
FLENGTH NUMBER;
BSIZE BINARY_INTEGER;
-- *************************************************************************
-- *** 定数宣言部
-- *************************************************************************
C_USER_ID CONSTANT CHAR(10) := '9999999999';
C_PROGRAM_ID CONSTANT CHAR(10) := 'A_SRE_1210';
C_WINDOW_CD CONSTANT CHAR(2) := '01';
C_TITLE_KBN CONSTANT CHAR(1) := '3';
C_SUB_CONTRACT_CLASS CONSTANT CHAR(1) := '0';
C_SUPL_CD_LEN CONSTANT NUMBER(2) := 10;
C_NM_LEN CONSTANT NUMBER(3) := 120;
C_SUPLSHORTNM_LEN CONSTANT NUMBER(2) := 60;
C_CSV_NM_LEN CONSTANT NUMBER(2) := 40;
C_CSV_SHORTNM_LEN CONSTANT NUMBER(2) := 20;
C_SUPLZIP_LEN CONSTANT NUMBER(1) := 8;
-- *************************************************************************
-- 基本情報 仕入先を検索CURSOR
-- *************************************************************************
CURSOR CUR_SEL_SUPL IS
SELECT
M_SUPL.COMP_CD,
SUPL_CD,
M_SUPL.PYMT_SUPL_CD,
SUPL_NM,
SUPL_SHORT_NM,
SUPL_WINDOW_NM,
SUPL_ZIP,
SUPL_ADDRESS1,
SUPL_PHONE,
SUPL_FAX,
DECODE(M_SUPL.UPDATE_DATETIME,NULL,M_SUPL.INSERT_DATETIME,M_SUPL.UPDATE_DATETIME) UPDATE_DATETIME,
PYMT_TERMS_CD
FROM
M_SUPL,
M_PYMT_SUPL
WHERE
M_SUPL.COMP_CD = INCOMP_CD
AND M_SUPL.COMP_CD = M_PYMT_SUPL.COMP_CD
AND M_SUPL.PYMT_SUPL_CD = M_PYMT_SUPL.PYMT_SUPL_CD;
-- ************************************************************************
-- 基本情報 取引先CSV作成済の取引先コードを検索CURSOR
-- ************************************************************************
CURSOR CUR_SEL_M_SUPL_CSV(V_SUPL_CD VARCHAR2) IS
SELECT
LATEST_UPDATE_DATETIME
FROM
M_SUPL_CSV
WHERE
M_SUPL_CSV.COMP_CD = INCOMP_CD
AND RTRIM(M_SUPL_CSV.SUPL_CD) = RTRIM(V_SUPL_CD);
-- ************************************************************************
-- 基本情報 取引先CSV作成済の取引先コードを削除検索CURSOR
-- ************************************************************************
CURSOR CUR_DEL_M_SUPL_CSV IS
SELECT
*
FROM
M_SUPL_CSV
WHERE
M_SUPL_CSV.COMP_CD = INCOMP_CD
AND RTRIM(M_SUPL_CSV.SUPL_CD) NOT IN (
SELECT
RTRIM(M_SUPL_CSV.SUPL_CD)
FROM
M_SUPL_CSV,
M_SUPL
WHERE
M_SUPL.SUPL_CD LIKE M_SUPL_CSV.SUPL_CD || '%'
);
-- *************************************************************************
-- 基本情報 取引先窓口CSV作成済の取引先コードを検索CURSOR
-- *************************************************************************
CURSOR CUR_SEL_M_SUPL_WINDOW_CSV(V_SUPL_CD VARCHAR2) IS
SELECT
LATEST_UPDATE_DATETIME
FROM
M_SUPL_WINDOW_CSV
WHERE
M_SUPL_WINDOW_CSV.COMP_CD = INCOMP_CD
AND RTRIM(M_SUPL_WINDOW_CSV.SUPL_CD) = RTRIM(V_SUPL_CD);
-- *************************************************************************
-- 基本情報 取引先窓口CSV作成済の取引先コードを削除検索CURSOR
-- *************************************************************************
CURSOR CUR_DEL_M_SUPL_WINDOW_CSV IS
SELECT
*
FROM
M_SUPL_WINDOW_CSV
WHERE
M_SUPL_WINDOW_CSV.COMP_CD = INCOMP_CD
AND RTRIM(M_SUPL_WINDOW_CSV.SUPL_CD) NOT IN (
SELECT
RTRIM(M_SUPL_WINDOW_CSV.SUPL_CD)
FROM
M_SUPL_WINDOW_CSV,
M_SUPL
WHERE
M_SUPL.SUPL_CD LIKE M_SUPL_WINDOW_CSV.SUPL_CD || '%'
);
-- *************************************************************************
-- 基本情報 取引先・支払条件CSV作成済の取引先コードを検索CURSOR
-- *************************************************************************
CURSOR CUR_SEL_M_PAY_CONDITIONS_CSV(V_SUPL_CD VARCHAR2,V_PYMT_TERMS_CD VARCHAR2) IS
SELECT
LATEST_UPDATE_DATETIME
FROM
M_PAY_CONDITIONS_CSV
WHERE
M_PAY_CONDITIONS_CSV.COMP_CD = INCOMP_CD
AND RTRIM(M_PAY_CONDITIONS_CSV.SUPL_CD) = RTRIM(V_SUPL_CD)
AND RTRIM(M_PAY_CONDITIONS_CSV.PAY_CONDITION_CODE) = RTRIM(V_PYMT_TERMS_CD);
-- *************************************************************************
-- 基本情報 取引先・支払条件CSV作成済の取引先コードを削除検索CURSOR
-- *************************************************************************
CURSOR CUR_DEL_M_PAY_CONDITIONS_CSV IS
SELECT
*
FROM
M_PAY_CONDITIONS_CSV
WHERE
M_PAY_CONDITIONS_CSV.COMP_CD = INCOMP_CD
AND RTRIM(M_PAY_CONDITIONS_CSV.SUPL_CD) NOT IN (
SELECT
RTRIM(M_PAY_CONDITIONS_CSV.SUPL_CD)
FROM
M_PAY_CONDITIONS_CSV,
M_SUPL
WHERE
M_SUPL.SUPL_CD LIKE M_PAY_CONDITIONS_CSV.SUPL_CD || '%'
);
-- *************************************************************************
-- *** 機能名称:取引先CSV作成済挿入SQL文
-- *** 戻り値:SQL文
-- *** 機能説明:
-- *************************************************************************
FUNCTION GET_INS_SUPL_CSV RETURN VARCHAR2 IS
BEGIN
WK_SQL := '';
WK_SQL := WK_SQL || ' INSERT INTO M_SUPL_CSV ';
WK_SQL := WK_SQL || ' VALUES(' ;
WK_SQL := WK_SQL || ' ''' || RTRIM(OUT_COMP_CD) || ''' ,'; --会社コード
WK_SQL := WK_SQL || ' ''' || RTRIM(OUT_SUPL_CD) || ''' ,'; --取引先コード
WK_SQL := WK_SQL || ' ''' || RTRIM(REPLACE(OUT_SUPL_NM,'''','''''')) || ''' ,'; --取引先名称
WK_SQL := WK_SQL || ' ''' || RTRIM(REPLACE(OUT_SUPL_SHORT_NM,'''','''''')) || ''' ,'; --取引先略称
WK_SQL := WK_SQL || ' ''' || OUT_UPDATE_TIME || ''' ,'; --最新更新時間
WK_SQL := WK_SQL || ' ''' || C_USER_ID || ''' ,'; --登録ユーザID
WK_SQL := WK_SQL || ' ''' || C_PROGRAM_ID || ''' ,'; --登録プログラムID
WK_SQL := WK_SQL || ' SYSDATE ,'; --作成日時
WK_SQL := WK_SQL || ' NULL ,'; --更新ユーザID
WK_SQL := WK_SQL || ' NULL ,'; --更新プログラムID
WK_SQL := WK_SQL || ' NULL) '; --更新日時
RETURN WK_SQL;
END GET_INS_SUPL_CSV;
-- *************************************************************************
-- *** 機能名称:取引先CSV作成済更新SQL文
-- *** 戻り値:SQL文
-- *** 機能説明:
-- *************************************************************************
FUNCTION GET_UPD_SUPL_CSV RETURN VARCHAR2 IS
BEGIN
WK_SQL := '';
WK_SQL := WK_SQL || ' UPDATE M_SUPL_CSV ';
WK_SQL := WK_SQL || ' SET ';
WK_SQL := WK_SQL || ' SUPL_NM = ''' || RTRIM(REPLACE(OUT_SUPL_NM,'''','''''')) || ''' ,'; --取引先名称
WK_SQL := WK_SQL || ' SUPL_SHORT_NM = ''' || RTRIM(REPLACE(OUT_SUPL_SHORT_NM,'''','''''')) || ''' ,'; --取引先略称
WK_SQL := WK_SQL || ' LATEST_UPDATE_DATETIME = ''' || OUT_UPDATE_TIME || ''' ,'; --最新更新時間
WK_SQL := WK_SQL || ' UPDATE_USER_ID = ''' || C_USER_ID || ''' ,'; --更新ユーザID
WK_SQL := WK_SQL || ' UPDATE_PRG_ID = ''' || C_PROGRAM_ID || ''' ,'; --更新プログラムID
WK_SQL := WK_SQL || ' UPDATE_DATETIME = SYSDATE '; --更新日時
WK_SQL := WK_SQL || ' WHERE ';
WK_SQL := WK_SQL || ' RTRIM(COMP_CD) = ''' || RTRIM(OUT_COMP_CD) || ''' ';
WK_SQL := WK_SQL || ' AND RTRIM(SUPL_CD) = ''' || RTRIM(OUT_SUPL_CD) || ''' ';
RETURN WK_SQL;
END GET_UPD_SUPL_CSV;
-- *************************************************************************
-- *** 機能名称:取引先CSV作成済削除SQL文
-- *** 戻り値:SQL文
-- *** 機能説明:
-- *************************************************************************
FUNCTION GET_DEL_SUPL_CSV RETURN VARCHAR2 IS
BEGIN
WK_SQL := '';
WK_SQL := WK_SQL || ' DELETE FROM M_SUPL_CSV ';
WK_SQL := WK_SQL || ' WHERE ';
WK_SQL := WK_SQL || ' RTRIM(COMP_CD) = ''' || RTRIM(V_SUPL_CSV.COMP_CD) || ''' ';
WK_SQL := WK_SQL || ' AND RTRIM(SUPL_CD) = ''' || RTRIM(V_SUPL_CSV.SUPL_CD) || ''' ';
RETURN WK_SQL;
END GET_DEL_SUPL_CSV;
-- *************************************************************************
-- *** 機能名称:取引先窓口CSV作成済挿入SQL文
-- *** 戻り値:SQL文
-- *** 機能説明:
-- *************************************************************************
FUNCTION GET_INS_SUPL_WINDOW_CSV RETURN VARCHAR2 IS
BEGIN
WK_SQL := '';
WK_SQL := WK_SQL || ' INSERT INTO M_SUPL_WINDOW_CSV ';
WK_SQL := WK_SQL || ' VALUES( ';
WK_SQL := WK_SQL || ' ''' || RTRIM(OUT_COMP_CD) || ''' ,'; --会社コード
WK_SQL := WK_SQL || ' ''' || RTRIM(OUT_SUPL_CD) || ''' ,'; --取引先コード
WK_SQL := WK_SQL || ' ''' || C_WINDOW_CD || ''' ,'; --取引先窓口コード
WK_SQL := WK_SQL || ' '' '' ,'; --部署名称
WK_SQL := WK_SQL || ' ''' || RTRIM(REPLACE(OUT_SUPL_WINDOW_NM,'''','''''')) || ''' ,'; --窓口名称
WK_SQL := WK_SQL || ' ''' || C_TITLE_KBN || ''' ,'; --敬称区分
WK_SQL := WK_SQL || ' ''' || RTRIM(OUT_SUPL_ZIP) || ''' ,'; --郵便番号
WK_SQL := WK_SQL || ' ''' || RTRIM(REPLACE(OUT_SUPL_ADDRESS1,'''','''''')) || ''' ,'; --住所1
WK_SQL := WK_SQL || ' NULL ,'; --住所2
WK_SQL := WK_SQL || ' NULL ,'; --住所3
WK_SQL := WK_SQL || ' ''' || RTRIM(OUT_SUPL_PHONE) || ''' ,'; --電話番号
WK_SQL := WK_SQL || ' ''' || RTRIM(OUT_SUPL_FAX) || ''' ,'; --FAX番号
WK_SQL := WK_SQL || ' '' '' ,'; --メールアドレス
WK_SQL := WK_SQL || ' 1 ,'; --通知形態
WK_SQL := WK_SQL || ' 0 ,'; --メール通知
WK_SQL := WK_SQL || ' 1 ,'; --インターネット接続
WK_SQL := WK_SQL || ' ''' || OUT_UPDATE_TIME || ''' ,'; --最新更新時間
WK_SQL := WK_SQL || ' ''' || C_USER_ID || ''' ,'; --登録ユーザID
WK_SQL := WK_SQL || ' ''' || C_PROGRAM_ID || ''' ,'; --登録プログラムID
WK_SQL := WK_SQL || ' SYSDATE ,'; --作成日時
WK_SQL := WK_SQL || ' NULL ,'; --更新ユーザID
WK_SQL := WK_SQL || ' NULL ,'; --更新プログラムID
WK_SQL := WK_SQL || ' NULL) '; --更新日時
RETURN WK_SQL;
END GET_INS_SUPL_WINDOW_CSV;
-- *************************************************************************
-- *** 機能名称:取引先窓口CSV作成済更新SQL文
-- *** 戻り値:SQL文
-- *** 機能説明:
-- *************************************************************************
FUNCTION GET_UPD_SUPL_WINDOW_CSV RETURN VARCHAR2 IS
BEGIN
WK_SQL := '';
WK_SQL := WK_SQL || ' UPDATE M_SUPL_WINDOW_CSV ';
WK_SQL := WK_SQL || ' SET ';
WK_SQL := WK_SQL || ' SUPL_WINDOW_NM = ''' || RTRIM(REPLACE(OUT_SUPL_WINDOW_NM,'''','''''')) || ''' ,'; --窓口名称
WK_SQL := WK_SQL || ' SUPL_ZIP = ''' || RTRIM(OUT_SUPL_ZIP) || ''' ,'; --郵便番号
WK_SQL := WK_SQL || ' SUPL_ADD1 = ''' || RTRIM(REPLACE(OUT_SUPL_ADDRESS1,'''','''''')) || ''' ,'; --住所1
WK_SQL := WK_SQL || ' SUPL_TEL = ''' || RTRIM(OUT_SUPL_PHONE) || ''' ,'; --電話番号
WK_SQL := WK_SQL || ' SUPL_FAX = ''' || RTRIM(OUT_SUPL_FAX) || ''' ,'; --FAX番号
WK_SQL := WK_SQL || ' LATEST_UPDATE_DATETIME = ''' || OUT_UPDATE_TIME || ''' ,'; --最新更新時間
WK_SQL := WK_SQL || ' UPDATE_USER_ID = ''' || C_USER_ID || ''' ,'; --更新ユーザID
WK_SQL := WK_SQL || ' UPDATE_PRG_ID = ''' || C_PROGRAM_ID || ''' ,'; --更新プログラムID
WK_SQL := WK_SQL || ' UPDATE_DATETIME = SYSDATE '; --更新日時
WK_SQL := WK_SQL || ' WHERE ';
WK_SQL := WK_SQL || ' RTRIM(COMP_CD) = ''' || RTRIM(OUT_COMP_CD) || ''' ';
WK_SQL := WK_SQL || ' AND RTRIM(SUPL_CD) = ''' || RTRIM(OUT_SUPL_CD) || ''' ';
WK_SQL := WK_SQL || ' AND RTRIM(SUPL_WINDOW_CD) = ''01'' ';
RETURN WK_SQL;
END GET_UPD_SUPL_WINDOW_CSV;
-- *************************************************************************
-- *** 機能名称:取引先窓口CSV作成済削除SQL文
-- *** 戻り値:SQL文
-- *** 機能説明:
-- *************************************************************************
FUNCTION GET_DEL_SUPL_WINDOW_CSV RETURN VARCHAR2 IS
BEGIN
WK_SQL := '';
WK_SQL := WK_SQL || ' DELETE FROM M_SUPL_WINDOW_CSV ';
WK_SQL := WK_SQL || ' WHERE ';
WK_SQL := WK_SQL || ' RTRIM(COMP_CD) = ''' || RTRIM(V_SUPL_WINDOW_CSV.COMP_CD) || ''' ';
WK_SQL := WK_SQL || ' AND RTRIM(SUPL_CD) = ''' || RTRIM(V_SUPL_WINDOW_CSV.SUPL_CD) || ''' ';
WK_SQL := WK_SQL || ' AND RTRIM(SUPL_WINDOW_CD) = ''' || RTRIM(V_SUPL_WINDOW_CSV.SUPL_WINDOW_CD) || ''' ';
RETURN WK_SQL;
END GET_DEL_SUPL_WINDOW_CSV;
-- *************************************************************************
-- *** 機能名称:取引先・支払条件CSV作成済挿入SQL文
-- *** 戻り値:SQL文
-- *** 機能説明:
-- *************************************************************************
FUNCTION GET_INS_PAY_CONDITIONS_CSV RETURN VARCHAR2 IS
BEGIN
WK_SQL := '';
WK_SQL := WK_SQL || ' INSERT INTO M_PAY_CONDITIONS_CSV ';
WK_SQL := WK_SQL || ' VALUES(';
WK_SQL := WK_SQL || ' ''' || RTRIM(OUT_COMP_CD) || ''' ,'; --会社コード
WK_SQL := WK_SQL || ' ''' || RTRIM(OUT_SUPL_CD) || ''' ,'; --取引先コード
WK_SQL := WK_SQL || ' ''' || RTRIM(OUT_PYMT_TERMS_CD) || ''' ,'; --支払条件コード
WK_SQL := WK_SQL || ' ''' || C_SUB_CONTRACT_CLASS || ''' ,'; --下請種別
WK_SQL := WK_SQL || ' ''' || OUT_UPDATE_TIME || ''' ,'; --最新更新時間
WK_SQL := WK_SQL || ' ''' || C_USER_ID || ''' ,'; --登録ユーザID
WK_SQL := WK_SQL || ' ''' || C_PROGRAM_ID || ''' ,'; --登録プログラムID
WK_SQL := WK_SQL || ' SYSDATE ,'; --作成日時
WK_SQL := WK_SQL || ' NULL ,'; --更新ユーザID
WK_SQL := WK_SQL || ' NULL ,'; --更新プログラムID
WK_SQL := WK_SQL || ' NULL) '; --更新日時
RETURN WK_SQL;
END GET_INS_PAY_CONDITIONS_CSV;
-- *************************************************************************
-- *** 機能名称:取引先・支払条件CSV作成済更新SQL文
-- *** 戻り値:SQL文
-- *** 機能説明:
-- *************************************************************************
FUNCTION GET_UPD_PAY_CONDITIONS_CSV RETURN VARCHAR2 IS
BEGIN
WK_SQL := '';
WK_SQL := WK_SQL || ' UPDATE M_PAY_CONDITIONS_CSV ';
WK_SQL := WK_SQL || ' SET ';
WK_SQL := WK_SQL || ' SUPL_CD = ''' || RTRIM(OUT_SUPL_CD) || ''' ,'; --取引先コード
WK_SQL := WK_SQL || ' PAY_CONDITION_CODE = ''' || RTRIM(OUT_PYMT_TERMS_CD) || ''' ,'; --支払条件コード
WK_SQL := WK_SQL || ' SUB_CONTRACT_CLASS = ''' || C_SUB_CONTRACT_CLASS || ''' ,'; --下請種別
WK_SQL := WK_SQL || ' LATEST_UPDATE_DATETIME = ''' || OUT_UPDATE_TIME || ''' ,'; --最新更新時間
WK_SQL := WK_SQL || ' UPDATE_USER_ID = ''' || C_USER_ID || ''' ,'; --更新ユーザID
WK_SQL := WK_SQL || ' UPDATE_PRG_ID = ''' || C_PROGRAM_ID || ''' ,'; --更新プログラムID
WK_SQL := WK_SQL || ' UPDATE_DATETIME = SYSDATE '; --更新日時
WK_SQL := WK_SQL || ' WHERE ';
WK_SQL := WK_SQL || ' RTRIM(COMP_CD) = ''' || RTRIM(OUT_COMP_CD) || ''' ';
WK_SQL := WK_SQL || ' AND RTRIM(SUPL_CD) = ''' || RTRIM(OUT_SUPL_CD) || ''' ';
WK_SQL := WK_SQL || ' AND RTRIM(PAY_CONDITION_CODE) = ''' || RTRIM(OUT_PYMT_TERMS_CD) || ''' ';
RETURN WK_SQL;
END GET_UPD_PAY_CONDITIONS_CSV;
-- *************************************************************************
-- *** 機能名称:取引先・支払条件CSV作成済削除SQL文
-- *** 戻り値:SQL文
-- *** 機能説明:
-- *************************************************************************
FUNCTION GET_DEL_PAY_CONDITIONS_CSV RETURN VARCHAR2 IS
BEGIN
WK_SQL := '';
WK_SQL := WK_SQL || ' DELETE FROM M_PAY_CONDITIONS_CSV ';
WK_SQL := WK_SQL || ' WHERE ';
WK_SQL := WK_SQL || ' RTRIM(COMP_CD) = ''' || RTRIM(V_PAY_CONDITIONS_CSV.COMP_CD) || ''' ';
WK_SQL := WK_SQL || ' AND RTRIM(SUPL_CD) = ''' || RTRIM(V_PAY_CONDITIONS_CSV.SUPL_CD) || ''' ';
WK_SQL := WK_SQL || ' AND RTRIM(PAY_CONDITION_CODE) = ''' || RTRIM(V_PAY_CONDITIONS_CSV.PAY_CONDITION_CODE) || ''' ';
RETURN WK_SQL;
END GET_DEL_PAY_CONDITIONS_CSV;
--******************************************************************************
--*** 機能名称:メイン
--*** 機能説明:
--******************************************************************************
BEGIN
RETURN_CD := 0;
START_TIME := TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS');
EXECUTE IMMEDIATE 'CREATE OR REPLACE DIRECTORY UTL_CSV_DIR AS ''' || PPATH || '''';
UTL_FILE.FGETATTR ('UTL_CSV_DIR', FILE1, FILE1_EXIST_FLG, FLENGTH, BSIZE);
UTL_FILE.FGETATTR ('UTL_CSV_DIR', FILE2, FILE2_EXIST_FLG, FLENGTH, BSIZE);
UTL_FILE.FGETATTR ('UTL_CSV_DIR', FILE3, FILE3_EXIST_FLG, FLENGTH, BSIZE);
--ファイルが存在しないの場合
IF FILE1_EXIST_FLG = TRUE OR FILE2_EXIST_FLG = TRUE OR FILE3_EXIST_FLG = TRUE THEN
RETURN_CD := 1;
CD := 'E-AS92-001';
MESSAGE := '指定したフォルダにすでにファイルが存在します。';
END_TIME := TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS');
RETURN;
END IF;
FCSVHANDLE := UTL_FILE.FOPEN('UTL_CSV_DIR', FILE1, 'w');
FWINHANDLE := UTL_FILE.FOPEN('UTL_CSV_DIR', FILE2, 'w');
FPAYHANDLE := UTL_FILE.FOPEN('UTL_CSV_DIR', FILE3, 'w');
OPEN CUR_SEL_SUPL;
LOOP
FETCH CUR_SEL_SUPL INTO OUT_COMP_CD,OUT_SUPL_CD,OUT_PYMT_SUPL_CD,OUT_SUPL_NM,OUT_SUPL_SHORT_NM,OUT_SUPL_WINDOW_NM,OUT_SUPL_ZIP,OUT_SUPL_ADDRESS1,OUT_SUPL_PHONE,OUT_SUPL_FAX,OUT_UPDATE_TIME,OUT_PYMT_TERMS_CD;
EXIT WHEN CUR_SEL_SUPL%NOTFOUND;
OUT_SUPL_CD := SUBSTR(OUT_SUPL_CD,1,C_SUPL_CD_LEN);
CSV_SUPL_NM := SUBSTR(OUT_SUPL_NM,1,C_CSV_NM_LEN/2);
OUT_SUPL_NM := SUBSTR(OUT_SUPL_NM,1,C_NM_LEN/3);
CSV_SUPL_SHORT_NM := SUBSTR(OUT_SUPL_SHORT_NM,1,C_CSV_SHORTNM_LEN/2);
OUT_SUPL_SHORT_NM := SUBSTR(OUT_SUPL_SHORT_NM,1,C_SUPLSHORTNM_LEN/3);
CSV_SUPL_WINDOW_NM := SUBSTR(OUT_SUPL_WINDOW_NM,1,C_CSV_NM_LEN/2);
OUT_SUPL_WINDOW_NM := SUBSTR(OUT_SUPL_WINDOW_NM,1,C_NM_LEN/3);
OUT_SUPL_ZIP := REPLACE(OUT_SUPL_ZIP,'''','''''');
OUT_SUPL_ZIP := SUBSTR(OUT_SUPL_ZIP,1,C_SUPLZIP_LEN);
CSV_SUPL_ADDRESS1 := SUBSTR(OUT_SUPL_ADDRESS1,1,C_CSV_NM_LEN/2);
OUT_SUPL_ADDRESS1 := SUBSTR(OUT_SUPL_ADDRESS1,1,C_NM_LEN/3);
V_ERR_TABLE := '(M_SUPL_CSV:';
OPEN CUR_SEL_M_SUPL_CSV(OUT_SUPL_CD);
FETCH CUR_SEL_M_SUPL_CSV INTO V_UPDATE_TIME;
IF CUR_SEL_M_SUPL_CSV%NOTFOUND THEN
STR := '"' || 'I' || '","' || RTRIM(OUT_SUPL_CD) || '","' || CSV_SUPL_NM || '","' || CSV_SUPL_SHORT_NM || '"';
V_SUPL_CSV_NUM := V_SUPL_CSV_NUM + 1;
V_ERR_KEY := RTRIM(INCOMP_CD) || '-' || RTRIM(OUT_SUPL_CD) || ')';
UTL_FILE.PUT_LINE(FCSVHANDLE,convert(STR,'JA16SJIS'));
EXECUTE IMMEDIATE GET_INS_SUPL_CSV;
ELSE
IF TO_CHAR(V_UPDATE_TIME,'YYYY/MM/DD') <> TO_CHAR(OUT_UPDATE_TIME,'YYYY/MM/DD') THEN
STR := '"' || 'U' || '","' || RTRIM(OUT_SUPL_CD) || '","' || CSV_SUPL_NM || '","' || CSV_SUPL_SHORT_NM || '"';
V_SUPL_CSV_NUM := V_SUPL_CSV_NUM + 1;
V_ERR_KEY := RTRIM(INCOMP_CD) || '-' || RTRIM(OUT_SUPL_CD) || ')';
UTL_FILE.PUT_LINE(FCSVHANDLE,convert(STR,'JA16SJIS'));
EXECUTE IMMEDIATE GET_UPD_SUPL_CSV;
END IF;
END IF;
CLOSE CUR_SEL_M_SUPL_CSV;
V_ERR_TABLE := '(M_SUPL_WINDOW_CSV:';
OPEN CUR_SEL_M_SUPL_WINDOW_CSV(OUT_SUPL_CD);
FETCH CUR_SEL_M_SUPL_WINDOW_CSV INTO V_UPDATE_TIME;
IF CUR_SEL_M_SUPL_WINDOW_CSV%NOTFOUND THEN
STR := '"' || 'I' || '","' || RTRIM(OUT_SUPL_CD) || '","' || C_WINDOW_CD || '","' || ' ' || '","' || CSV_SUPL_WINDOW_NM || '","' || '3' || '","' || RTRIM(OUT_SUPL_ZIP) || '","' || CSV_SUPL_ADDRESS1 || '","","","' || RTRIM(OUT_SUPL_PHONE) || '","' || RTRIM(OUT_SUPL_FAX) || '"," ","1","0","1"';
V_SUPL_WIN_NUM := V_SUPL_WIN_NUM + 1;
V_ERR_KEY := RTRIM(INCOMP_CD) || '-' || RTRIM(OUT_SUPL_CD) || '-' || C_WINDOW_CD || ')';
UTL_FILE.PUT_LINE(FWINHANDLE,convert(STR,'JA16SJIS'));
EXECUTE IMMEDIATE GET_INS_SUPL_WINDOW_CSV;
ELSE
IF TO_CHAR(V_UPDATE_TIME,'YYYY/MM/DD') <> TO_CHAR(OUT_UPDATE_TIME,'YYYY/MM/DD') THEN
STR := '"' || 'U' || '","' || RTRIM(OUT_SUPL_CD) || '","' || C_WINDOW_CD || '","' || ' ' || '","' || CSV_SUPL_WINDOW_NM || '","' || '3' || '","' || RTRIM(OUT_SUPL_ZIP) || '","' || CSV_SUPL_ADDRESS1 || '","","","' || RTRIM(OUT_SUPL_PHONE) || '","' || RTRIM(OUT_SUPL_FAX) || '"," ","1","0","1"';
V_SUPL_WIN_NUM := V_SUPL_WIN_NUM + 1;
V_ERR_KEY := RTRIM(INCOMP_CD) || '-' || RTRIM(OUT_SUPL_CD) || '-' || C_WINDOW_CD || ')';
UTL_FILE.PUT_LINE(FWINHANDLE,convert(STR,'JA16SJIS'));
EXECUTE IMMEDIATE GET_UPD_SUPL_WINDOW_CSV;
END IF;
END IF;
CLOSE CUR_SEL_M_SUPL_WINDOW_CSV;
V_ERR_TABLE := '(M_PAY_CONDITIONS_CSV:';
OPEN CUR_SEL_M_PAY_CONDITIONS_CSV(OUT_SUPL_CD,OUT_PYMT_TERMS_CD);
FETCH CUR_SEL_M_PAY_CONDITIONS_CSV INTO V_UPDATE_TIME;
IF CUR_SEL_M_PAY_CONDITIONS_CSV%NOTFOUND THEN
STR := '"' || 'I' || '","' || RTRIM(OUT_COMP_CD) || '","' || RTRIM(OUT_SUPL_CD) || '","' || RTRIM(OUT_PYMT_TERMS_CD) || '","' || C_SUB_CONTRACT_CLASS || '"';
V_PAY_COND_NUM := V_PAY_COND_NUM + 1;
V_ERR_KEY := RTRIM(INCOMP_CD) || '-' || RTRIM(OUT_SUPL_CD) || '-' || RTRIM(OUT_PYMT_TERMS_CD) || ')';
UTL_FILE.PUT_LINE(FPAYHANDLE,convert(STR,'JA16SJIS'));
EXECUTE IMMEDIATE GET_INS_PAY_CONDITIONS_CSV;
ELSE
IF TO_CHAR(V_UPDATE_TIME) <> TO_CHAR(OUT_UPDATE_TIME) THEN
STR := '"' || 'U' || '","' || RTRIM(OUT_COMP_CD) || '","' || RTRIM(OUT_SUPL_CD) || '","' || RTRIM(OUT_PYMT_TERMS_CD) || '","' || C_SUB_CONTRACT_CLASS || '"';
V_PAY_COND_NUM := V_PAY_COND_NUM + 1;
V_ERR_KEY := RTRIM(INCOMP_CD) || '-' || RTRIM(OUT_SUPL_CD) || '-' || RTRIM(OUT_PYMT_TERMS_CD) || ')';
UTL_FILE.PUT_LINE(FPAYHANDLE,convert(STR,'JA16SJIS'));
EXECUTE IMMEDIATE GET_UPD_PAY_CONDITIONS_CSV;
END IF;
END IF;
CLOSE CUR_SEL_M_PAY_CONDITIONS_CSV;
END LOOP;
CLOSE CUR_SEL_SUPL;
V_ERR_TABLE := '(M_SUPL_CSV:';
OPEN CUR_DEL_M_SUPL_CSV;
LOOP
FETCH CUR_DEL_M_SUPL_CSV INTO V_SUPL_CSV;
EXIT WHEN CUR_DEL_M_SUPL_CSV%NOTFOUND;
STR := '"' || 'D' || '","' || V_SUPL_CSV.SUPL_CD || '","' || V_SUPL_CSV.SUPL_NM || '","' || V_SUPL_CSV.SUPL_SHORT_NM || '"';
V_SUPL_CSV_NUM := V_SUPL_CSV_NUM + 1;
V_ERR_KEY := RTRIM(INCOMP_CD) || '-' || V_SUPL_CSV.SUPL_CD || ')';
UTL_FILE.PUT_LINE(FCSVHANDLE,convert(STR,'JA16SJIS'));
EXECUTE IMMEDIATE GET_DEL_SUPL_CSV;
END LOOP;
CLOSE CUR_DEL_M_SUPL_CSV;
V_ERR_TABLE := '(M_SUPL_WINDOW_CSV:';
OPEN CUR_DEL_M_SUPL_WINDOW_CSV;
LOOP
FETCH CUR_DEL_M_SUPL_WINDOW_CSV INTO V_SUPL_WINDOW_CSV;
EXIT WHEN CUR_DEL_M_SUPL_WINDOW_CSV%NOTFOUND;
STR := '"' || 'D' || '","' || V_SUPL_WINDOW_CSV.SUPL_CD || '","' || V_SUPL_WINDOW_CSV.SUPL_WINDOW_CD || '","' || V_SUPL_WINDOW_CSV.SUPL_DEPT_NM ||'","' || V_SUPL_WINDOW_CSV.SUPL_WINDOW_NM || '","' || V_SUPL_WINDOW_CSV.SUPL_TITLE_KBN || '","' || V_SUPL_WINDOW_CSV.SUPL_ZIP || '","' || V_SUPL_WINDOW_CSV.SUPL_ADD1 || '","' || V_SUPL_WINDOW_CSV.SUPL_ADD2 || '","' || V_SUPL_WINDOW_CSV.SUPL_ADD3 || '","' || V_SUPL_WINDOW_CSV.SUPL_TEL || '","' || V_SUPL_WINDOW_CSV.SUPL_FAX || '","' || V_SUPL_WINDOW_CSV.SUPL_MAIL || '","' || V_SUPL_WINDOW_CSV.SUPL_ALERT || '","' || V_SUPL_WINDOW_CSV.SUPL_MAIL_ALERT || '","' || V_SUPL_WINDOW_CSV.SUPL_INTERNET || '"';
V_SUPL_WIN_NUM := V_SUPL_WIN_NUM + 1;
V_ERR_KEY := RTRIM(INCOMP_CD) || '-' || V_SUPL_WINDOW_CSV.SUPL_CD || '-' || V_SUPL_WINDOW_CSV.SUPL_WINDOW_CD || ')';
UTL_FILE.PUT_LINE(FWINHANDLE,convert(STR,'JA16SJIS'));
EXECUTE IMMEDIATE GET_DEL_SUPL_WINDOW_CSV;
END LOOP;
CLOSE CUR_DEL_M_SUPL_WINDOW_CSV;
V_ERR_TABLE := '(M_PAY_CONDITIONS_CSV:';
OPEN CUR_DEL_M_PAY_CONDITIONS_CSV;
LOOP
FETCH CUR_DEL_M_PAY_CONDITIONS_CSV INTO V_PAY_CONDITIONS_CSV;
EXIT WHEN CUR_DEL_M_PAY_CONDITIONS_CSV%NOTFOUND;
STR := '"' || 'D' || '","' || RTRIM(V_PAY_CONDITIONS_CSV.COMP_CD) || '","' || V_PAY_CONDITIONS_CSV.SUPL_CD || '","' || V_PAY_CONDITIONS_CSV.PAY_CONDITION_CODE || '","' || V_PAY_CONDITIONS_CSV.SUB_CONTRACT_CLASS || '"';
V_PAY_COND_NUM := V_PAY_COND_NUM + 1;
V_ERR_KEY := RTRIM(INCOMP_CD) || '-' || V_PAY_CONDITIONS_CSV.SUPL_CD || '-' || V_PAY_CONDITIONS_CSV.PAY_CONDITION_CODE || ')';
UTL_FILE.PUT_LINE(FPAYHANDLE,convert(STR,'JA16SJIS'));
EXECUTE IMMEDIATE GET_DEL_PAY_CONDITIONS_CSV;
END LOOP;
CLOSE CUR_DEL_M_PAY_CONDITIONS_CSV;
UTL_FILE.FCLOSE(FCSVHANDLE);
UTL_FILE.FCLOSE(FWINHANDLE);
UTL_FILE.FCLOSE(FPAYHANDLE);
COMMIT;
IF V_SUPL_CSV_NUM = 0 OR V_SUPL_WIN_NUM = 0 OR V_PAY_COND_NUM = 0 THEN
UTL_FILE.FCLOSE(FCSVHANDLE);
UTL_FILE.FCLOSE(FWINHANDLE);
UTL_FILE.FCLOSE(FPAYHANDLE);
UTL_FILE.FREMOVE('UTL_CSV_DIR', FILE1);
UTL_FILE.FREMOVE('UTL_CSV_DIR', FILE2);
UTL_FILE.FREMOVE('UTL_CSV_DIR', FILE3);
END IF;
MESSAGE := 'M_SUPL_CSV:' || V_SUPL_CSV_NUM || '件、' || 'M_SUPL_WINDOW_CSV:' || V_SUPL_WIN_NUM || '件、' || 'M_PAY_CONDITIONS_CSV:' || V_PAY_COND_NUM || '件';
END_TIME := TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS');
EXCEPTION
WHEN OTHERS THEN
UTL_FILE.FCLOSE(FCSVHANDLE);
UTL_FILE.FCLOSE(FWINHANDLE);
UTL_FILE.FCLOSE(FPAYHANDLE);
UTL_FILE.FREMOVE('UTL_CSV_DIR', FILE1);
UTL_FILE.FREMOVE('UTL_CSV_DIR', FILE2);
UTL_FILE.FREMOVE('UTL_CSV_DIR', FILE3);
RETURN_CD := 1;
CD := SQLCODE;
MESSAGE := SQLERRM;
ERROR_DATA := V_ERR_TABLE || V_ERR_KEY;
END_TIME := TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS');
ROLLBACK;
END;
/