Merge pull request #234 feature-NEWDWH2021-1130_add_tsv_tab_check into develop
This commit is contained in:
commit
35d8a96330
@ -6,6 +6,8 @@ name = "pypi"
|
|||||||
[scripts]
|
[scripts]
|
||||||
"test:ultmarc" = "pytest tests/batch/ultmarc/"
|
"test:ultmarc" = "pytest tests/batch/ultmarc/"
|
||||||
"test:ultmarc:cov" = "pytest --cov=src/batch/ultmarc/ --cov-branch --cov-report=term-missing tests/batch/ultmarc/"
|
"test:ultmarc:cov" = "pytest --cov=src/batch/ultmarc/ --cov-branch --cov-report=term-missing tests/batch/ultmarc/"
|
||||||
|
"test:vjsk" = "pytest tests/batch/vjsk/"
|
||||||
|
"test:vjsk:cov" = "pytest --cov=src/batch/vjsk/ --cov-branch --cov-report=term-missing tests/batch/vjsk/"
|
||||||
|
|
||||||
[packages]
|
[packages]
|
||||||
boto3 = "*"
|
boto3 = "*"
|
||||||
|
|||||||
@ -44,7 +44,7 @@
|
|||||||
- 「entrypoint.py」が、バッチ処理のエントリーポイント。
|
- 「entrypoint.py」が、バッチ処理のエントリーポイント。
|
||||||
- 実際の処理は、「src/jobctrl_daily.py」で行っている。
|
- 実際の処理は、「src/jobctrl_daily.py」で行っている。
|
||||||
|
|
||||||
## 単体テスト
|
## 単体テスト(アルトマーク取込処理)
|
||||||
|
|
||||||
アルトマーク取込処理は、単体テストコードを使用してテスト自動化を行う
|
アルトマーク取込処理は、単体テストコードを使用してテスト自動化を行う
|
||||||
|
|
||||||
@ -68,7 +68,7 @@
|
|||||||
| コマンド | 概要 |
|
| コマンド | 概要 |
|
||||||
| ---------------- | -------------------------------------------------------------------------------------------- |
|
| ---------------- | -------------------------------------------------------------------------------------------- |
|
||||||
| test:ultmarc | tests/batch/ultmarc フォルダ配下のユニットテストを実行する |
|
| test:ultmarc | tests/batch/ultmarc フォルダ配下のユニットテストを実行する |
|
||||||
| test:ultmarc:cov | tests/batch/ultmarc フォルダ配下のユニットテストを実行し、テストカバレッジを取得する(C1, C2) |
|
| test:ultmarc:cov | tests/batch/ultmarc フォルダ配下のユニットテストを実行し、テストカバレッジを取得する(C0, C1) |
|
||||||
|
|
||||||
### テスト共通関数の仕様
|
### テスト共通関数の仕様
|
||||||
|
|
||||||
@ -156,6 +156,43 @@
|
|||||||
- テスト結果データと期待値データを突き合わせ、期待値どおりとなっているかを確認する
|
- テスト結果データと期待値データを突き合わせ、期待値どおりとなっているかを確認する
|
||||||
- ignore_col_nameに指定したカラムは、呼び出し元のテストコード内で個別に突き合わせする
|
- ignore_col_nameに指定したカラムは、呼び出し元のテストコード内で個別に突き合わせする
|
||||||
|
|
||||||
|
|
||||||
|
## 単体テスト(実消化データ取込処理)
|
||||||
|
|
||||||
|
実消化データは、単体テストコードを使用してテスト自動化を行う
|
||||||
|
|
||||||
|
### テスト準備
|
||||||
|
|
||||||
|
※単体テスト(アルトマーク取込処理)と同じ
|
||||||
|
|
||||||
|
### テスト用のサブコマンド一覧
|
||||||
|
|
||||||
|
- `pipenv run`のあとに、サブコマンドとしてユーザー定義スクリプトを実行できる
|
||||||
|
- `Pipfile`内の「scripts」セクションに宣言されている
|
||||||
|
|
||||||
|
| コマンド | 概要 |
|
||||||
|
| ---------------- | -------------------------------------------------------------------------------------------- |
|
||||||
|
| test:vjsk | tests/batch/vjsk フォルダ配下のユニットテストを実行する |
|
||||||
|
| test:vjsk:cov | tests/batch/vjsk フォルダ配下のユニットテストを実行し、テストカバレッジを取得する(C0, C1) |
|
||||||
|
|
||||||
|
### テスト共通関数の仕様
|
||||||
|
|
||||||
|
- tests/testing_vjsk_utility.py内の共通関数の仕様について記載する
|
||||||
|
|
||||||
|
#### create_vjsk_assertion_list
|
||||||
|
|
||||||
|
- 概要
|
||||||
|
- DB登録期待値リストを作成する
|
||||||
|
- Args:
|
||||||
|
- file_path (str): DB登録期待値ファイル(tsvファイル)のパス
|
||||||
|
- memo: ※DB登録期待値ファイルの前提
|
||||||
|
- memo: 受領データファイルと同じ
|
||||||
|
- memo: BOM付きtsv形式
|
||||||
|
- memo: 一行目はカラム名になっているヘッダ行
|
||||||
|
- Returns:
|
||||||
|
- List(dict) DB登録期待値辞書リスト
|
||||||
|
|
||||||
|
|
||||||
## フォルダ構成
|
## フォルダ構成
|
||||||
|
|
||||||
```text
|
```text
|
||||||
@ -203,16 +240,53 @@
|
|||||||
└── tests -- ユニットテストのルートディレクト
|
└── tests -- ユニットテストのルートディレクト
|
||||||
├── batch
|
├── batch
|
||||||
│ └── ultmarc -- アルトマーク関連のユニットテストを格納する
|
│ └── ultmarc -- アルトマーク関連のユニットテストを格納する
|
||||||
│ └── utmp_tables
|
│ │ └── utmp_tables
|
||||||
│ └── table_mapper -- 以下、マッパークラス単位でフォルダを切る
|
│ │ └── table_mapper -- 以下、マッパークラス単位でフォルダを切る
|
||||||
│ └── com_alma
|
│ │ └── com_alma
|
||||||
│ ├── test_com_alma_mapper.py -- テストコード本体
|
│ │ ├── test_com_alma_mapper.py -- テストコード本体
|
||||||
│ ├── com_alma_insert.csv -- S3に配置される想定のテストCSVデータ。ケースごとに用意する。
|
│ │ ├── com_alma_insert.csv -- S3に配置される想定のテストCSVデータ。ケースごとに用意する。
|
||||||
│ ...
|
│ │ ...
|
||||||
│ ├── db_com_alma_before_update.csv -- テスト時に事前にDBに登録しておくデータ。CSVで用意する。
|
│ │ ├── db_com_alma_before_update.csv -- テスト時に事前にDBに登録しておくデータ。CSVで用意する。
|
||||||
│ ...
|
│ │ ...
|
||||||
│ ├── expect_com_alma_insert.csv -- テストの期待値データ。CSVで用意する。
|
│ │ ├── expect_com_alma_insert.csv -- テストの期待値データ。CSVで用意する。
|
||||||
|
│ │ ...
|
||||||
|
│ └─vjsk -- 実消化データ取込処理関連のユニットテストを格納する
|
||||||
|
│ │
|
||||||
|
│ ├─vjsk_file_check -- 受領ファイルチェック処理関連のユニットテストを格納する
|
||||||
|
│ │ ├─conftest.py -- テスト内で共通利用できるフィクスチャの宣言
|
||||||
|
│ │ └─test_vjsk_file_check.py -- テストクラス本体
|
||||||
|
│ │
|
||||||
|
│ └─vjsk_load -- 受領データ登録処理関連のユニットテストを格納する
|
||||||
|
│ │ conftest.py -- テスト内で共通利用できるフィクスチャの宣言
|
||||||
|
│ │ test_vjsk_load.py -- テストクラス本体
|
||||||
|
│ │
|
||||||
|
│ └─testdata -- テストモジュールが使用するテストデータを格納する
|
||||||
|
│ │ bio_slip_data_202304280000.tsv -- 正常ケースの単体確認用
|
||||||
|
│ │ ... -- *20230428* は新規4件の登録確認用
|
||||||
|
│ │ whs_mst_202304290000.tsv -- *20230429* は更新2件+追加新規2件の登録確認用
|
||||||
|
│ │
|
||||||
|
│ ├─NoData -- 正常ケースの単体確認用
|
||||||
|
│ │ bio_slip_data_nodatarecord.tsv -- ヘッダ行のみでデータが0件の動作確認用
|
||||||
|
│ │ ...
|
||||||
|
│ │ whs_mst_nodatarecord.tsv
|
||||||
|
│ │
|
||||||
|
│ ├─TestFormatErrorFile -- 異常ケースの単体確認用
|
||||||
|
│ │ bio_slip_data_formaterror.tsv -- 末尾行のタブ数が想定と異なる(ファイル欠落がある)ときの動作確認用
|
||||||
|
│ │ ...
|
||||||
|
│ │ whs_mst_formaterror.tsv
|
||||||
|
│ │
|
||||||
|
│ ├─TestImportFileToDb -- 正常ケースの単体確認用
|
||||||
|
│ │ bio_slip_data_202304270000.gz -- 対向元システムから送られてきた状態(gz圧縮)の受領データファイルの動作確認用
|
||||||
|
│ │ ...
|
||||||
|
│ │ whs_mst_202304270000.gz
|
||||||
|
│ │
|
||||||
|
│ └─UnzipError -- 異常ケースの単体確認用
|
||||||
|
│ bio_slip_data_202304270000.gz -- gz圧縮ファイルが解凍できないときの動作確認用
|
||||||
│ ...
|
│ ...
|
||||||
|
│ whs_mst_202304270000.gz
|
||||||
|
│
|
||||||
├── conftest.py -- テスト内で共通利用できるフィクスチャを宣言する(執筆時点ではDBのみ)
|
├── conftest.py -- テスト内で共通利用できるフィクスチャを宣言する(執筆時点ではDBのみ)
|
||||||
└── testing_utility.py -- テストの共通関数
|
├── testing_utility.py -- テストの共通関数
|
||||||
|
└── testing_vjsk_utility.py -- テストの共通関数(実消化データ取込処理関連)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,6 @@
|
|||||||
# from src.batch.vjsk.vjsk_recv_file_manager import VjskDatFile
|
# from src.batch.vjsk.vjsk_recv_file_manager import VjskDatFile
|
||||||
|
import os
|
||||||
|
|
||||||
from src.batch.vjsk.vjsk_recv_file_mapper import VjskReceiveFileMapper
|
from src.batch.vjsk.vjsk_recv_file_mapper import VjskReceiveFileMapper
|
||||||
from src.db.database import Database
|
from src.db.database import Database
|
||||||
from src.error.exceptions import BatchOperationException
|
from src.error.exceptions import BatchOperationException
|
||||||
@ -9,10 +11,21 @@ mapper = VjskReceiveFileMapper()
|
|||||||
|
|
||||||
|
|
||||||
class VjskDataLoadManager:
|
class VjskDataLoadManager:
|
||||||
|
"""
|
||||||
|
V実消化データ取込機能クラス
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def _import_to_db(src_file_name: str, condkey: str):
|
def _import_to_db(src_file_name: str, condkey: str):
|
||||||
|
"""
|
||||||
|
概要
|
||||||
|
指定されたtsvファイル src_file_name を策席スキーマに登録する
|
||||||
|
引数
|
||||||
|
src_file_name: ローカルストレージにある取込対象tsvファイルパス
|
||||||
|
condkey: 受領データの種類を一意に示す値(VjskReceiveFileMapperクラスで管理されているCONDKEY値)
|
||||||
|
"""
|
||||||
logger.debug(f"_import_to_db start (src_file_name : {src_file_name}, condkey : {condkey})")
|
logger.debug(f"_import_to_db start (src_file_name : {src_file_name}, condkey : {condkey})")
|
||||||
|
|
||||||
db = Database.get_instance()
|
db = Database.get_instance()
|
||||||
@ -22,6 +35,7 @@ class VjskDataLoadManager:
|
|||||||
upsert_sql = mapper.get_upsert_sql(condkey)
|
upsert_sql = mapper.get_upsert_sql(condkey)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
# データベース接続
|
||||||
db.connect()
|
db.connect()
|
||||||
db.execute("SET SESSION sql_mode = 'TRADITIONAL';")
|
db.execute("SET SESSION sql_mode = 'TRADITIONAL';")
|
||||||
|
|
||||||
@ -50,51 +64,96 @@ class VjskDataLoadManager:
|
|||||||
# MEMO: https://docs.sqlalchemy.org/en/14/core/connections.html#sqlalchemy.engine.BaseCursorResult.rowcount
|
# MEMO: https://docs.sqlalchemy.org/en/14/core/connections.html#sqlalchemy.engine.BaseCursorResult.rowcount
|
||||||
logger.info(f'{table_name_org}を{table_name_src}にUPSERT')
|
logger.info(f'{table_name_org}を{table_name_src}にUPSERT')
|
||||||
|
|
||||||
|
# データベースコミット
|
||||||
db.commit()
|
db.commit()
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
db.rollback()
|
db.rollback()
|
||||||
raise BatchOperationException(e)
|
raise BatchOperationException(e)
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
|
# データベース切断
|
||||||
db.disconnect()
|
db.disconnect()
|
||||||
|
|
||||||
logger.debug("_import_to_db done")
|
logger.debug("_import_to_db done")
|
||||||
return
|
return
|
||||||
|
|
||||||
def _get_tsv_last_row_tab_count(src_file_name: str) -> int:
|
def _get_tsv_last_row_tab_count(src_file_name: str) -> int:
|
||||||
|
"""
|
||||||
|
概要
|
||||||
|
指定されたtsvファイル src_file_name の末尾行に含まれるタブ文字数を取得する
|
||||||
|
引数
|
||||||
|
src_file_name: ローカルストレージにある取込対象tsvファイルパス
|
||||||
|
"""
|
||||||
# memo: tsvファイルが数百MBに及ぶことを想定して、末尾から1行分を参照する
|
# memo: tsvファイルが数百MBに及ぶことを想定して、末尾から1行分を参照する
|
||||||
# memo: 前提1 行区切りは LF('\n')
|
# memo: 前提1 行区切りは LF('\n')
|
||||||
|
# memo: 前提2 正常時のファイル終端にある文字は、末尾行の LF('\n')
|
||||||
|
# memo: 前提3 ファイルエンコードはBOM付UTF-8(先頭3byteが b'\xEF' + b'\xBB' + b'\xBF' )
|
||||||
buf_count = 0
|
buf_count = 0
|
||||||
|
|
||||||
|
# ファイルサイズ取得
|
||||||
|
file_size = os.path.getsize(src_file_name)
|
||||||
|
|
||||||
|
# ファイルサイズが0byteなら処理終了
|
||||||
|
if file_size == 0:
|
||||||
|
return buf_count
|
||||||
|
|
||||||
# バイナリモードでファイルオープン
|
# バイナリモードでファイルオープン
|
||||||
with open(src_file_name, 'rb') as file:
|
with open(src_file_name, 'rb') as file:
|
||||||
# ファイルの末尾から2バイト手前に移動
|
# ファイルポインタを末尾に移動
|
||||||
file.seek(-2, 2)
|
file.seek(0, os.SEEK_END)
|
||||||
# 改行文字を見つけるまで逆方向に読み進める
|
|
||||||
while file.read(1) != b'\n':
|
# ファイルポインタが先頭+1になるまで逆方向にシークする
|
||||||
# 1バイト戻って再度読み込み
|
while file.tell() > 1:
|
||||||
file.seek(-2, 1)
|
# 2byte戻って
|
||||||
# 末尾行を抽出
|
file.seek(-2, os.SEEK_CUR)
|
||||||
last_line = file.readline().decode().rstrip('\n')
|
# 1byte読む(同時に+1シークする)
|
||||||
# 末尾行に含まれるタブ文字の数を抽出
|
char = file.read(1)
|
||||||
|
# 行区切りを検出したらループ終了
|
||||||
|
# memo: UTF-8 バイトシーケンスとして、b'\n' が全角文字の一部にはならない
|
||||||
|
if char == b'\n':
|
||||||
|
break
|
||||||
|
# ファイル先頭のBOM3byte目の BF を検出したらループ終了
|
||||||
|
# memo: UTF-8 バイトシーケンスとして、b'\xbf' が全角文字の一部の可能性がある(例:全角片仮名の「タ」)
|
||||||
|
# memo: charに代入したときのfile.read(1)によって、ファイルポインタは2→3になっている前提のロジック
|
||||||
|
if char == b'\xbf' and file.tell() == 3:
|
||||||
|
break
|
||||||
|
last_line = file.readline().decode('utf-8-sig').rstrip('\n')
|
||||||
buf_count = last_line.count('\t')
|
buf_count = last_line.count('\t')
|
||||||
|
|
||||||
return buf_count
|
return buf_count
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def load(self, target: dict):
|
def load(self, target: dict):
|
||||||
|
"""
|
||||||
|
概要
|
||||||
|
取込対象受領ファイル target をデータベースに登録する
|
||||||
|
引数
|
||||||
|
target: {
|
||||||
|
condkey: 受領データの種類を一意に示す値(VjskReceiveFileMapperクラスで管理されているCONDKEY値)
|
||||||
|
src_file_path: ローカルストレージにある取込対象tsvファイルパス
|
||||||
|
}
|
||||||
|
"""
|
||||||
logger.debug(f'load start target:{target}')
|
logger.debug(f'load start target:{target}')
|
||||||
|
|
||||||
# S3からローカルストレージにdownloadした登録対象のtsvファイルパスを取得
|
# S3からローカルストレージにdownloadした登録対象のtsvファイルパスを取得
|
||||||
local_file_name = target["src_file_path"]
|
local_file_name = target["src_file_path"]
|
||||||
|
|
||||||
# tsvファイル末尾行のTABの数が総定数と一致しない場合は例外をスロー
|
# tsvファイル末尾行のTABの数が総定数と一致しない場合は例外をスロー
|
||||||
# TODO: ↓↓↓developへのマージを優先させたいので、未テストのロジックはコメントアウトする
|
# memo:
|
||||||
# tsv_tabs = self._get_tsv_last_row_tab_count(local_file_name)
|
# 対向元システムで生成されるファイルは稀に途中欠落が発生することがある。
|
||||||
# expect_tabs = mapper.get_file_column_separators(target["condkey"])
|
# これを、ファイルMySQL8.0のLOADステートメントで発生するWARNING/ERRORでは検知不可能なので、
|
||||||
# if tsv_tabs != expect_tabs:
|
# LOADステートメント実行前に、物理的に途中欠落があるかを検知してエラーとすることが目的。
|
||||||
# msg = f"受領tsvファイルの末尾行のTABの数が総定数と一致しませんでした local_file_name: {local_file_name}"
|
tsv_tabs = self._get_tsv_last_row_tab_count(local_file_name)
|
||||||
# raise BatchOperationException(msg)
|
expect_tabs = mapper.get_file_column_separators(target["condkey"])
|
||||||
# TODO: ↑↑↑developへのマージを優先させたいので、未テストのロジックはコメントアウトする
|
if tsv_tabs != expect_tabs:
|
||||||
|
msg = [
|
||||||
|
"受領tsvファイルの末尾行のTABの数が総定数と一致しませんでした",
|
||||||
|
f"local_file_name: {local_file_name}",
|
||||||
|
f"末尾行のtab数: {tsv_tabs}",
|
||||||
|
f"tab想定数: {expect_tabs}"
|
||||||
|
]
|
||||||
|
raise BatchOperationException(' '.join(msg))
|
||||||
|
|
||||||
# データベース登録
|
# データベース登録
|
||||||
self._import_to_db(local_file_name, target["condkey"])
|
self._import_to_db(local_file_name, target["condkey"])
|
||||||
|
|||||||
@ -2,6 +2,9 @@ import textwrap
|
|||||||
|
|
||||||
|
|
||||||
class VjskReceiveFileMapper:
|
class VjskReceiveFileMapper:
|
||||||
|
"""
|
||||||
|
V実消化データファイルI/Fマッピング定義クラス
|
||||||
|
"""
|
||||||
CONDKEY_SLIP_DATA = "SLIP_DATA" # 販売実績データ
|
CONDKEY_SLIP_DATA = "SLIP_DATA" # 販売実績データ
|
||||||
CONDKEY_HLD_MST = "HLD_MST" # V卸ホールディングスマスタ
|
CONDKEY_HLD_MST = "HLD_MST" # V卸ホールディングスマスタ
|
||||||
CONDKEY_WHS_MST = "WHS_MST" # V卸マスタ
|
CONDKEY_WHS_MST = "WHS_MST" # V卸マスタ
|
||||||
@ -1489,27 +1492,75 @@ class VjskReceiveFileMapper:
|
|||||||
return ret
|
return ret
|
||||||
|
|
||||||
def get_data_name(self, condkey: str) -> str:
|
def get_data_name(self, condkey: str) -> str:
|
||||||
|
"""
|
||||||
|
概要
|
||||||
|
受領ファイルI/Fが想定する、ファイル論理名を取得する
|
||||||
|
引数
|
||||||
|
condkey: 受領データの種類を一意に示す値(このクラスのメンバ CONDKEY_* の値)
|
||||||
|
"""
|
||||||
return self._get_interface_property(condkey, self._KEY_DATA_NAME)
|
return self._get_interface_property(condkey, self._KEY_DATA_NAME)
|
||||||
|
|
||||||
def get_file_prefix(self, condkey: str) -> str:
|
def get_file_prefix(self, condkey: str) -> str:
|
||||||
|
"""
|
||||||
|
概要
|
||||||
|
受領ファイルI/Fが想定する、ファイル名接頭辞を取得する
|
||||||
|
引数
|
||||||
|
condkey: 受領データの種類を一意に示す値(このクラスのメンバ CONDKEY_* の値)
|
||||||
|
"""
|
||||||
return self._get_interface_property(condkey, self._KEY_FILE_PREFIX)
|
return self._get_interface_property(condkey, self._KEY_FILE_PREFIX)
|
||||||
|
|
||||||
def get_file_suffix(self, condkey: str) -> str:
|
def get_file_suffix(self, condkey: str) -> str:
|
||||||
|
"""
|
||||||
|
概要
|
||||||
|
受領ファイルI/Fが想定する、ファイル拡張子を取得する
|
||||||
|
引数
|
||||||
|
condkey: 受領データの種類を一意に示す値(このクラスのメンバ CONDKEY_* の値)
|
||||||
|
"""
|
||||||
return self._get_interface_property(condkey, self._KEY_FILE_SUFFIX)
|
return self._get_interface_property(condkey, self._KEY_FILE_SUFFIX)
|
||||||
|
|
||||||
def get_file_column_separators(self, condkey: str) -> int:
|
def get_file_column_separators(self, condkey: str) -> int:
|
||||||
|
"""
|
||||||
|
概要
|
||||||
|
受領ファイルI/Fが想定する、1行あたりのタブ文字数を取得する
|
||||||
|
引数
|
||||||
|
condkey: 受領データの種類を一意に示す値(このクラスのメンバ CONDKEY_* の値)
|
||||||
|
"""
|
||||||
return int(self._get_interface_property(condkey, self._KEY_FILE_COLUMN_SEPARATORS))
|
return int(self._get_interface_property(condkey, self._KEY_FILE_COLUMN_SEPARATORS))
|
||||||
|
|
||||||
def get_org_table(self, condkey: str) -> str:
|
def get_org_table(self, condkey: str) -> str:
|
||||||
|
"""
|
||||||
|
概要
|
||||||
|
受領ファイルI/Fが想定する、LOAD先ロードスキーマテーブル名を取得する
|
||||||
|
引数
|
||||||
|
condkey: 受領データの種類を一意に示す値(このクラスのメンバ CONDKEY_* の値)
|
||||||
|
"""
|
||||||
return self._get_interface_property(condkey, self._KEY_ORG_TABLE)
|
return self._get_interface_property(condkey, self._KEY_ORG_TABLE)
|
||||||
|
|
||||||
def get_src_table(self, condkey: str) -> str:
|
def get_src_table(self, condkey: str) -> str:
|
||||||
|
"""
|
||||||
|
概要
|
||||||
|
受領ファイルI/Fが想定する、登録先蓄積スキーマテーブル名を取得する
|
||||||
|
引数
|
||||||
|
condkey: 受領データの種類を一意に示す値(このクラスのメンバ CONDKEY_* の値)
|
||||||
|
"""
|
||||||
return self._get_interface_property(condkey, self._KEY_SRC_TABLE)
|
return self._get_interface_property(condkey, self._KEY_SRC_TABLE)
|
||||||
|
|
||||||
def get_upsert_sql(self, condkey: str) -> str:
|
def get_upsert_sql(self, condkey: str) -> str:
|
||||||
|
"""
|
||||||
|
概要
|
||||||
|
受領ファイルI/Fが想定する、upsert (ロードスキーマ→蓄積スキーマ) CMLステートメントを取得する
|
||||||
|
引数
|
||||||
|
condkey: 受領データの種類を一意に示す値(このクラスのメンバ CONDKEY_* の値)
|
||||||
|
"""
|
||||||
return self._get_interface_property(condkey, self._KEY_UPSERT_SQL)
|
return self._get_interface_property(condkey, self._KEY_UPSERT_SQL)
|
||||||
|
|
||||||
def get_condkey_by_s3_file_path(self, s3_file_path: str) -> str:
|
def get_condkey_by_s3_file_path(self, s3_file_path: str) -> str:
|
||||||
|
"""
|
||||||
|
概要
|
||||||
|
S3受領バケットに受領したファイル名から、I/F想定に該当する condkey 値を取得する
|
||||||
|
引数
|
||||||
|
s3_file_path: S3受領バケットにある受領したファイルパス
|
||||||
|
"""
|
||||||
ret = None
|
ret = None
|
||||||
filename = s3_file_path[s3_file_path.rfind("/") + 1:]
|
filename = s3_file_path[s3_file_path.rfind("/") + 1:]
|
||||||
for condkey in self._VJSK_INTERFACE_MAPPING:
|
for condkey in self._VJSK_INTERFACE_MAPPING:
|
||||||
|
|||||||
@ -23,7 +23,6 @@ def receive_folder():
|
|||||||
return os.environ["VJSK_DATA_RECEIVE_FOLDER"]
|
return os.environ["VJSK_DATA_RECEIVE_FOLDER"]
|
||||||
|
|
||||||
|
|
||||||
# TODO 共通fixtureにして15個固定でput/delete、各個別fixtureで15個から引き算でdeleteする
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def init_check_received_files_ok1(s3_client, bucket_name, receive_folder):
|
def init_check_received_files_ok1(s3_client, bucket_name, receive_folder):
|
||||||
# setup
|
# setup
|
||||||
|
|||||||
@ -17,6 +17,9 @@ from tests.testing_vjsk_utility import (assert_table_results,
|
|||||||
|
|
||||||
|
|
||||||
class TestImportFileToDb:
|
class TestImportFileToDb:
|
||||||
|
"""
|
||||||
|
V実消化データ取込-データベース登録処理 テストクラス
|
||||||
|
"""
|
||||||
db: Database
|
db: Database
|
||||||
batch_context: BatchContext
|
batch_context: BatchContext
|
||||||
test_file_path_import_all: str
|
test_file_path_import_all: str
|
||||||
@ -1163,56 +1166,6 @@ class TestImportFileToDb:
|
|||||||
key = f"{receive_folder}/{test_file}"
|
key = f"{receive_folder}/{test_file}"
|
||||||
s3_client.delete_object(Bucket=bucket_name, Key=key)
|
s3_client.delete_object(Bucket=bucket_name, Key=key)
|
||||||
|
|
||||||
def test_load_data_error(self, mapper):
|
|
||||||
"""
|
|
||||||
観点
|
|
||||||
異常系 : 日付型矛盾のデータ ※製品価格マスタファイルで確認
|
|
||||||
期待値
|
|
||||||
例外が発生する
|
|
||||||
"""
|
|
||||||
|
|
||||||
# setup
|
|
||||||
self.batch_context.is_vjsk_stock_import_day = True
|
|
||||||
|
|
||||||
# 処理実行
|
|
||||||
target_dict = {
|
|
||||||
"condkey": mapper.CONDKEY_PHM_PRICE_MST,
|
|
||||||
"src_file_path": path.join(self.test_file_path_load_individual, "phm_price_mst_dataerror.tsv")
|
|
||||||
}
|
|
||||||
|
|
||||||
with pytest.raises(BatchOperationException) as e:
|
|
||||||
VjskDataLoadManager.load(target_dict)
|
|
||||||
|
|
||||||
# 検証
|
|
||||||
assert str(e.value).startswith("SQL Error:") > 0
|
|
||||||
|
|
||||||
# teardown
|
|
||||||
|
|
||||||
def test_load_format_error(self, mapper):
|
|
||||||
"""
|
|
||||||
観点
|
|
||||||
異常系 : tsvファイルが途中で欠落している
|
|
||||||
期待値
|
|
||||||
例外が発生する
|
|
||||||
"""
|
|
||||||
|
|
||||||
# setup
|
|
||||||
self.batch_context.is_vjsk_stock_import_day = True
|
|
||||||
|
|
||||||
# 処理実行
|
|
||||||
target_dict = {
|
|
||||||
"condkey": mapper.CONDKEY_PHM_PRICE_MST,
|
|
||||||
"src_file_path": path.join(self.test_file_path_load_individual, "phm_price_mst_formaterror.tsv")
|
|
||||||
}
|
|
||||||
|
|
||||||
with pytest.raises(BatchOperationException) as e:
|
|
||||||
VjskDataLoadManager.load(target_dict)
|
|
||||||
|
|
||||||
# 検証
|
|
||||||
assert str(e.value).startswith("LOAD文実行時にWARNINGが発生しました。") > 0
|
|
||||||
|
|
||||||
# teardown
|
|
||||||
|
|
||||||
def test_s3backup_ok(self, s3_client, bucket_name, receive_folder, mapper):
|
def test_s3backup_ok(self, s3_client, bucket_name, receive_folder, mapper):
|
||||||
"""
|
"""
|
||||||
観点
|
観点
|
||||||
@ -1293,3 +1246,783 @@ class TestImportFileToDb:
|
|||||||
assert str(e.value) == "An error occurred (404) when calling the HeadObject operation: Not Found"
|
assert str(e.value) == "An error occurred (404) when calling the HeadObject operation: Not Found"
|
||||||
|
|
||||||
# teardown
|
# teardown
|
||||||
|
|
||||||
|
def test_load_format_error_01(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
異常系 : tsvファイルが途中で欠落している
|
||||||
|
期待値
|
||||||
|
例外が発生する
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_STOCK_SLIP_DATA,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"TestFormatErrorFile", "stock_slip_data_formaterror.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
with pytest.raises(BatchOperationException) as e:
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert str(e.value).startswith("受領tsvファイルの末尾行のTABの数が総定数と一致しませんでした") > 0
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
print(e)
|
||||||
|
|
||||||
|
def test_load_format_error_02(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
異常系 : tsvファイルが途中で欠落している
|
||||||
|
期待値
|
||||||
|
例外が発生する
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_SLIP_DATA,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"TestFormatErrorFile", "slip_data_formaterror.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
with pytest.raises(BatchOperationException) as e:
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert str(e.value).startswith("受領tsvファイルの末尾行のTABの数が総定数と一致しませんでした") > 0
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
print(e)
|
||||||
|
|
||||||
|
def test_load_format_error_03(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
異常系 : tsvファイルが途中で欠落している
|
||||||
|
期待値
|
||||||
|
例外が発生する
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_ORG_CNV_MST,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"TestFormatErrorFile", "org_cnv_mst_formaterror.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
with pytest.raises(BatchOperationException) as e:
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert str(e.value).startswith("受領tsvファイルの末尾行のTABの数が総定数と一致しませんでした") > 0
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
print(e)
|
||||||
|
|
||||||
|
def test_load_format_error_04(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
異常系 : tsvファイルが途中で欠落している
|
||||||
|
期待値
|
||||||
|
例外が発生する
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_VOP_HCO_MERGE,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"TestFormatErrorFile", "vop_hco_merge_formaterror.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
with pytest.raises(BatchOperationException) as e:
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert str(e.value).startswith("受領tsvファイルの末尾行のTABの数が総定数と一致しませんでした") > 0
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
print(e)
|
||||||
|
|
||||||
|
def test_load_format_error_05(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
異常系 : tsvファイルが途中で欠落している
|
||||||
|
期待値
|
||||||
|
例外が発生する
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_WHS_MST,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"TestFormatErrorFile", "whs_mst_formaterror.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
with pytest.raises(BatchOperationException) as e:
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert str(e.value).startswith("受領tsvファイルの末尾行のTABの数が総定数と一致しませんでした") > 0
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
print(e)
|
||||||
|
|
||||||
|
def test_load_format_error_06(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
異常系 : tsvファイルが途中で欠落している
|
||||||
|
期待値
|
||||||
|
例外が発生する
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_HLD_MST,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"TestFormatErrorFile", "hld_mst_formaterror.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
with pytest.raises(BatchOperationException) as e:
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert str(e.value).startswith("受領tsvファイルの末尾行のTABの数が総定数と一致しませんでした") > 0
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
print(e)
|
||||||
|
|
||||||
|
def test_load_format_error_07(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
異常系 : tsvファイルが途中で欠落している
|
||||||
|
期待値
|
||||||
|
例外が発生する
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_FCL_MST,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"TestFormatErrorFile", "fcl_mst_formaterror.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
with pytest.raises(BatchOperationException) as e:
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert str(e.value).startswith("受領tsvファイルの末尾行のTABの数が総定数と一致しませんでした") > 0
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
print(e)
|
||||||
|
|
||||||
|
def test_load_format_error_08(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
異常系 : tsvファイルが途中で欠落している
|
||||||
|
期待値
|
||||||
|
例外が発生する
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_MKR_ORG_HORIZON,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"TestFormatErrorFile", "mkr_org_horizon_formaterror.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
with pytest.raises(BatchOperationException) as e:
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert str(e.value).startswith("受領tsvファイルの末尾行のTABの数が総定数と一致しませんでした") > 0
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
print(e)
|
||||||
|
|
||||||
|
def test_load_format_error_09(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
異常系 : tsvファイルが途中で欠落している
|
||||||
|
期待値
|
||||||
|
例外が発生する
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_TRAN_KBN_MST,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"TestFormatErrorFile", "tran_kbn_mst_formaterror.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
with pytest.raises(BatchOperationException) as e:
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert str(e.value).startswith("受領tsvファイルの末尾行のTABの数が総定数と一致しませんでした") > 0
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
print(e)
|
||||||
|
|
||||||
|
def test_load_format_error_10(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
異常系 : tsvファイルが途中で欠落している
|
||||||
|
期待値
|
||||||
|
例外が発生する
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_PHM_PRD_MST,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"TestFormatErrorFile", "phm_prd_mst_formaterror.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
with pytest.raises(BatchOperationException) as e:
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert str(e.value).startswith("受領tsvファイルの末尾行のTABの数が総定数と一致しませんでした") > 0
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
print(e)
|
||||||
|
|
||||||
|
def test_load_format_error_11(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
異常系 : tsvファイルが途中で欠落している
|
||||||
|
期待値
|
||||||
|
例外が発生する
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_PHM_PRICE_MST,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"TestFormatErrorFile", "phm_price_mst_formaterror.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
with pytest.raises(BatchOperationException) as e:
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert str(e.value).startswith("受領tsvファイルの末尾行のTABの数が総定数と一致しませんでした") > 0
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
print(e)
|
||||||
|
|
||||||
|
def test_load_format_error_12(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
異常系 : tsvファイルが途中で欠落している
|
||||||
|
期待値
|
||||||
|
例外が発生する
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_WHS_CUSTOMER_MST,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"TestFormatErrorFile", "whs_customer_mst_formaterror.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
with pytest.raises(BatchOperationException) as e:
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert str(e.value).startswith("受領tsvファイルの末尾行のTABの数が総定数と一致しませんでした") > 0
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
print(e)
|
||||||
|
|
||||||
|
def test_load_format_error_13(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
異常系 : tsvファイルが途中で欠落している
|
||||||
|
期待値
|
||||||
|
例外が発生する
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_MDB_CONV_MST,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"TestFormatErrorFile", "mdb_conv_mst_formaterror.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
with pytest.raises(BatchOperationException) as e:
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert str(e.value).startswith("受領tsvファイルの末尾行のTABの数が総定数と一致しませんでした") > 0
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
print(e)
|
||||||
|
|
||||||
|
def test_load_format_error_14(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
異常系 : tsvファイルが途中で欠落している
|
||||||
|
期待値
|
||||||
|
例外が発生する
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_BIO_SLIP_DATA,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"TestFormatErrorFile", "bio_slip_data_formaterror.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
with pytest.raises(BatchOperationException) as e:
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert str(e.value).startswith("受領tsvファイルの末尾行のTABの数が総定数と一致しませんでした") > 0
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
print(e)
|
||||||
|
|
||||||
|
def test_load_format_error_15(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
異常系 : tsvファイルが途中で欠落している
|
||||||
|
期待値
|
||||||
|
例外が発生する
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_LOT_NUM_MST,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"TestFormatErrorFile", "lot_num_mst_formaterror.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
with pytest.raises(BatchOperationException) as e:
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert str(e.value).startswith("受領tsvファイルの末尾行のTABの数が総定数と一致しませんでした") > 0
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
print(e)
|
||||||
|
|
||||||
|
def test_load_no_data_ok_01(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
正常系 : tsvファイルレコード0件の取込
|
||||||
|
期待値
|
||||||
|
例外が発生しないこと
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_STOCK_SLIP_DATA,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"NoData", "stock_slip_data_nodatarecord.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert True
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
|
||||||
|
def test_load_no_data_ok_02(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
正常系 : tsvファイルレコード0件の取込
|
||||||
|
期待値
|
||||||
|
例外が発生しないこと
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_SLIP_DATA,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"NoData", "slip_data_nodatarecord.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert True
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
|
||||||
|
def test_load_no_data_ok_03(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
正常系 : tsvファイルレコード0件の取込
|
||||||
|
期待値
|
||||||
|
例外が発生しないこと
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_ORG_CNV_MST,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"NoData", "org_cnv_mst_nodatarecord.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert True
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
|
||||||
|
def test_load_no_data_ok_04(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
正常系 : tsvファイルレコード0件の取込
|
||||||
|
期待値
|
||||||
|
例外が発生しないこと
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_VOP_HCO_MERGE,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"NoData", "vop_hco_merge_nodatarecord.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert True
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
|
||||||
|
def test_load_no_data_ok_05(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
正常系 : tsvファイルレコード0件の取込
|
||||||
|
期待値
|
||||||
|
例外が発生しないこと
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_WHS_MST,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"NoData", "whs_mst_nodatarecord.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert True
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
|
||||||
|
def test_load_no_data_ok_06(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
正常系 : tsvファイルレコード0件の取込
|
||||||
|
期待値
|
||||||
|
例外が発生しないこと
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_HLD_MST,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"NoData", "hld_mst_nodatarecord.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert True
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
|
||||||
|
def test_load_no_data_ok_07(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
正常系 : tsvファイルレコード0件の取込
|
||||||
|
期待値
|
||||||
|
例外が発生しないこと
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_FCL_MST,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"NoData", "fcl_mst_nodatarecord.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert True
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
|
||||||
|
def test_load_no_data_ok_08(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
正常系 : tsvファイルレコード0件の取込
|
||||||
|
期待値
|
||||||
|
例外が発生しないこと
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_MKR_ORG_HORIZON,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"NoData", "mkr_org_horizon_nodatarecord.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert True
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
|
||||||
|
def test_load_no_data_ok_09(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
正常系 : tsvファイルレコード0件の取込
|
||||||
|
期待値
|
||||||
|
例外が発生しないこと
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_TRAN_KBN_MST,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"NoData", "tran_kbn_mst_nodatarecord.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert True
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
|
||||||
|
def test_load_no_data_ok_10(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
正常系 : tsvファイルレコード0件の取込
|
||||||
|
期待値
|
||||||
|
例外が発生しないこと
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_PHM_PRD_MST,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"NoData", "phm_prd_mst_nodatarecord.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert True
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
|
||||||
|
def test_load_no_data_ok_11(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
正常系 : tsvファイルレコード0件の取込
|
||||||
|
期待値
|
||||||
|
例外が発生しないこと
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_PHM_PRICE_MST,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"NoData", "phm_price_mst_nodatarecord.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert True
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
|
||||||
|
def test_load_no_data_ok_12(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
正常系 : tsvファイルレコード0件の取込
|
||||||
|
期待値
|
||||||
|
例外が発生しないこと
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_WHS_CUSTOMER_MST,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"NoData", "whs_customer_mst_nodatarecord.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert True
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
|
||||||
|
def test_load_no_data_ok_13(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
正常系 : tsvファイルレコード0件の取込
|
||||||
|
期待値
|
||||||
|
例外が発生しないこと
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_MDB_CONV_MST,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"NoData", "mdb_conv_mst_nodatarecord.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert True
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
|
||||||
|
def test_load_no_data_ok_14(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
正常系 : tsvファイルレコード0件の取込
|
||||||
|
期待値
|
||||||
|
例外が発生しないこと
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_BIO_SLIP_DATA,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"NoData", "bio_slip_data_nodatarecord.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert True
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
|
||||||
|
def test_load_no_data_ok_15(self, mapper):
|
||||||
|
"""
|
||||||
|
観点
|
||||||
|
正常系 : tsvファイルレコード0件の取込
|
||||||
|
期待値
|
||||||
|
例外が発生しないこと
|
||||||
|
"""
|
||||||
|
|
||||||
|
# setup
|
||||||
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
|
|
||||||
|
# 処理実行
|
||||||
|
target_dict = {
|
||||||
|
"condkey": mapper.CONDKEY_LOT_NUM_MST,
|
||||||
|
"src_file_path": path.join(self.test_file_path_load_individual,
|
||||||
|
"NoData", "lot_num_mst_nodatarecord.tsv")
|
||||||
|
}
|
||||||
|
|
||||||
|
VjskDataLoadManager.load(target_dict)
|
||||||
|
|
||||||
|
# 検証
|
||||||
|
assert True
|
||||||
|
|
||||||
|
# teardown
|
||||||
|
|||||||
@ -0,0 +1 @@
|
|||||||
|
"rec_data" "rec_whs_cd" "rec_whs_sub_cd" "rec_whs_org_cd" "rec_cust_cd" "rec_comm_cd" "rec_tran_kbn" "rec_hsdnYmd_wrk" "rec_hsdnYmd_srk" "rec_urag_no" "rec_comm_nm" "rec_nnskFcl_nm" "rec_nnsk_fcl_addr" "rec_lot_num1" "rec_amt1" "rec_lot_num2" "rec_amt2" "rec_lot_num3" "rec_amt3" "rec_ymd" "sale_data_cat" "slip_file_nm" "slip_mgt_no" "row_num" "hsdn_ymd" "exec_dt" "v_tran_cd" "tran_kbn_nm" "whs_org_cd" "v_whsOrg_cd" "whs_org_nm" "whs_org_kn" "v_whs_cd" "whs_nm" "nnsk_cd" "fcl_cd" "fcl_nm" "fcl_kn" "fcl_addr_v" "comm_cd" "comm_nm" "htdnYmd_err_kbn" "prd_exis_kbn" "fcl_exis_kbn" "amt1" "amt2" "amt3" "slip_org_kbn" "bef_slip_mgt_no" "whs_rep_comm_nm" "whs_rep_nnskFcl_nm" "whs_rep_nnsk_fcl_addr" "err_flg1" "err_flg2" "err_flg3" "err_flg4" "err_flg5" "err_flg6" "err_flg7" "err_flg8" "err_flg9" "err_flg10" "err_flg11" "err_flg12" "err_flg13" "err_flg14" "err_flg15" "err_flg16" "err_flg17" "err_flg18" "err_flg19" "err_flg20" "kjyo_ym" "tksNbk_kbn" "fcl_exec_kbn" "rec_sts_kbn" "ins_dt" "ins_usr"
|
||||||
|
1
ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/NoData/fcl_mst_nodatarecord.tsv
vendored
Normal file
1
ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/NoData/fcl_mst_nodatarecord.tsv
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
"fcl_cd" "sub_no" "start_dt" "end_dt" "closed_dt" "nm" "kn_nm" "sht_nm" "sht_kn_nm" "mkr_cd" "jsk_proc_kbn" "fmt_addr" "fmt_kn_addr" "post_cd" "prft_cd" "prft_nm" "city_nm" "addr_line_1" "tel_no" "admin_kbn" "fcl_type" "rec_sts_kbn" "ins_dt" "upd_dt"
|
||||||
|
1
ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/NoData/hld_mst_nodatarecord.tsv
vendored
Normal file
1
ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/NoData/hld_mst_nodatarecord.tsv
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
"v_hld_cd" "sub_no" "nm" "kn_nm" "sht_nm" "start_dt" "end_dt" "dsp_odr" "rec_sts_kbn" "ins_dt" "upd_dt"
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
"ser_no" "lot_num" "expr_dt" "frst_mov_dt" "ins_dt" "ins_usr"
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
"hco_vid__v" "sub_no" "mdb_cd" "reliability" "start_dt" "rec_sts_kbn" "ins_dt" "upd_dt"
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
"vid_kind_1" "v_cd_1" "nm_1" "dsp_odr_1" "vid_kind_2" "v_cd_2" "nm_2" "dsp_odr_2" "vid_kind_3" "v_cd_3" "nm_3" "dsp_odr_3" "vid_kind_4" "v_cd_4" "nm_4" "dsp_odr_4" "vid_kind_5" "v_cd_5" "nm_5" "dsp_odr_5" "vid_kind_6" "v_cd_6" "nm_6" "dsp_odr_6" "vid_kind_7" "v_cd_7" "nm_7" "dsp_odr_7" "vid_kind_8" "v_cd_8" "nm_8" "dsp_odr_8" "vid_kind_9" "v_cd_9" "nm_9" "dsp_odr_9" "vid_kind_10" "v_cd_10" "nm_10" "dsp_odr_10" "v_whs_cd" "start_dt" "end_dt" "rec_sts_kbn" "ins_dt" "upd_dt"
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
"whs_cd" "whs_sub_cd" "org_cd" "sub_no" "v_org_cd" "start_dt" "end_dt" "dsp_odr" "rec_sts_kbn" "ins_dt" "upd_dt"
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
"prd_cd" "sub_no" "prd_nm" "prd_e_nm" "mkr_cd" "mkr_inf_1" "mkr_inf_2" "phm_itm_cd" "itm_nm" "itm_sht_nm" "form_cd" "form_nm" "vol_cd" "vol_nm" "cont_cd" "cont_nm" "pkg_cd" "pkg_nm" "cnv_num" "jsk_start_dt" "prd_sale_kbn" "jsk_proc_kbn" "start_dt" "end_dt" "dsp_odr" "rec_sts_kbn" "ins_dt" "upd_dt"
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
"phm_prd_cd" "phm_price_kind" "sub_no" "price" "start_dt" "end_dt" "dsp_odr" "rec_sts_kbn" "ins_dt" "upd_dt"
|
||||||
|
1
ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/NoData/slip_data_nodatarecord.tsv
vendored
Normal file
1
ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/NoData/slip_data_nodatarecord.tsv
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
"recvdata" "rec_whs_cd" "rec_whs_sub_cd" "rec_whs_org_cd" "rec_cust_cd" "rec_comm_cd" "rec_tran_kbn" "rev_hsdnYmd_wrk" "rev_hsdnYmd_srk" "rec_urag_no" "rec_amt" "rec_unit_price" "rec_price" "rec_comm_nm" "rec_nnskFcl_nm" "free_item" "rec_nnsk_fcl_addr" "rec_nnsk_fcl_post" "rec_nnsk_fcl_tel" "rec_bef_hsdn_ymd" "rec_bef_slip_no" "rec_ymd" "sale_data_cat" "slip_file_nm" "slip_mgt_no" "row_num" "hsdn_ymd" "exec_dt" "v_tran_cd" "tran_kbn_nm" "whs_org_cd" "v_whsOrg_cd" "whs_org_nm" "whs_org_kn" "v_whs_cd" "whs_nm" "nnsk_cd" "fcl_cd" "fcl_kn" "fcl_nm" "fcl_addr_v" "comm_cd" "comm_nm" "nn_amt" "nn_unitPrice" "nn_price" "unit_price" "unit_amt" "drag_price" "drag_amt" "whsPos_err_kbn" "htdnYmd_err_kbn" "prd_exis_kbn" "fcl_exis_kbn" "bef_hsdn_ymd" "bef_slip_no" "slip_org_kbn" "err_flg1" "err_flg2" "err_flg3" "err_flg4" "err_flg5" "err_flg6" "err_flg7" "err_flg8" "err_flg9" "err_flg10" "err_flg11" "err_flg12" "err_flg13" "err_flg14" "err_flg15" "err_flg16" "err_flg17" "err_flg18" "err_flg19" "err_flg20" "kjyo_ym" "tksNbk_kbn" "fcl_exec_kbn" "rec_sts_kbn" "ins_dt" "ins_usr"
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
"rec_data" "rec_whs_cd" "rec_whs_sub_cd" "rec_sto_place" "rec_stock_ymd" "rec_comm_cd" "rec_amt" "rev_stok_no_sign" "rev_jan_cd" "rec_free_item" "rec_ymd" "sale_data_cat" "slip_file_nm" "slip_mgt_no" "row_num" "exec_dt" "err_flg1" "err_flg2" "err_flg3" "err_flg4" "err_flg5" "err_flg6" "err_flg7" "err_flg8" "err_flg9" "err_flg10" "rec_sts_kbn" "ins_dt" "ins_usr"
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
"v_tran_cd" "sub_no" "nm" "start_dt" "end_dt" "dsp_odr" "rec_sts_kbn" "ins_dt" "upd_dt"
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
"hco_vid__v" "hco_vid__v_merge" "apply_dt" "merge_reason"
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
"whs_cd" "whs_sub_cd" "customer_cd" "sub_no" "start_dt" "end_dt" "org_cd" "src_org_cd" "nm" "kn_nm" "addr" "kn_addr" "zip_cd" "tel_no" "rec_sts_kbn" "ins_dt" "upd_dt"
|
||||||
|
1
ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/NoData/whs_mst_nodatarecord.tsv
vendored
Normal file
1
ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/NoData/whs_mst_nodatarecord.tsv
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
"v_whs_cd" "sub_no" "nm" "kn_nm" "sht_nm" "zip_cd" "addr" "kn_addr" "tel_no" "v_hld_cd" "start_dt" "end_dt" "dsp_odr" "rec_sts_kbn" "ins_dt" "upd_dt"
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
"rec_data" "rec_whs_cd" "rec_whs_sub_cd" "rec_whs_org_cd" "rec_cust_cd" "rec_comm_cd" "rec_tran_kbn" "rec_hsdnYmd_wrk" "rec_hsdnYmd_srk" "rec_urag_no" "rec_comm_nm" "rec_nnskFcl_nm" "rec_nnsk_fcl_addr" "rec_lot_num1" "rec_amt1" "rec_lot_num2" "rec_amt2" "rec_lot_num3" "rec_amt3" "rec_ymd" "sale_data_cat" "slip_file_nm" "slip_mgt_no" "row_num" "hsdn_ymd" "exec_dt" "v_tran_cd" "tran_kbn_nm" "whs_org_cd" "v_whsOrg_cd" "whs_org_nm" "whs_org_kn" "v_whs_cd" "whs_nm" "nnsk_cd" "fcl_cd" "fcl_nm" "fcl_kn" "fcl_addr_v" "comm_cd" "comm_nm" "htdnYmd_err_kbn" "prd_exis_kbn" "fcl_exis_kbn" "amt1" "amt2" "amt3" "slip_org_kbn" "bef_slip_mgt_no" "whs_rep_comm_nm" "whs_rep_nnskFcl_nm" "whs_rep_nnsk_fcl_addr" "err_flg1" "err_flg2" "err_flg3" "err_flg4" "err_flg5" "err_flg6" "err_flg7" "err_flg8" "err_flg9" "err_flg10" "err_flg11" "err_flg12" "err_flg13" "err_flg14" "err_flg15" "err_flg16" "err_flg17" "err_flg18" "err_flg19" "err_flg20" "kjyo_ym" "tksNbk_kbn" "fcl_exec_kbn" "rec_sts_kbn" "ins_dt" "ins_usr"
|
||||||
|
"D452960211JD1111311102503851400002304016427519111 496350122バベンチオテンテキ200MG 1V ソウゴウメデイカルニホンコウカンビツクバシ タカサキ 753 BAVB007 000003 000000 000000 " "296" "02" "11JD11113111025" "0385140000" "496350122" "111" "230401" "20230401" "6427519" "バベンチオテンテキ200MG 1V " "ソウゴウメデイカルニホンコウカンビ" "ツクバシ タカサキ 753 " "BAVB007 " "000003" " " "000000" " " "000000" "20230403" "J" "VJSK-BIO_J_MERCK_2023040300.txt" "J2023040300000126" "129" "20230401" "202305082041" "110" "売上" "11JD" "300001370" "川崎南支店" "" "200000007" "アルフレッサ株式会社" "0385140000" "670235967013012526" "医療法人社団こうかん会 日本鋼管病院" "イリョウホウジンシャダンコウカンカイ ニホンコウカンビョウイン" "210-0852 神奈川県川崎市川崎区鋼管通1−2−1" "496350122" "バベンチオ 注射剤 200mg 1VIAL" "" "1" "" "3" "0" "0" "J" "" "" "" "" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202304" "" "" "0" "23-04-03 20:42:11" "system"
|
||||||
|
"D452960211G11111377452402930640002304016433215111 496300127ゴナ-ルエフヒカチユウペン450 1トウ セコム)オギクボビヨウイン トウキヨウト シブヤク ジングウマエ 1-5-1 GF4C001 000002 000000 000000 " "296" "02" "11G111113774524" "0293064000" "496300127" "111" "230401" "20230401" "6433215" "ゴナ-ルエフヒカチユウペン450 1トウ " "セコム)オギクボビヨウイン " "トウキヨウト シブヤク ジングウマエ 1-5-1 " "GF4C001 " "000002" " " "000000" " " "000000" "20230403" "J" "VJSK-BIO_J_MERCK_2023040300.txt" "J2023040300000127" "130" "20230401" "202305082041" "110" "売上" "11G1" "300001351" "杉並・中野支店" "" "200000007" "アルフレッサ株式会社" "0293064000" "670234652241314835" "医療法人財団荻窪病院 荻窪病院" "イリョウホウジンザイダンオギクボビョウイン オギクボビョウイン" "167-0035 東京都杉並区今川3−1−24" "496300127" "ゴナールエフ 皮下注ペン 450IU 1PEN" "" "1" "" "2" "0" "0" "J" "" "" "" "" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202304" "" "" "0" "23-04-03 20:42:11" "system"
|
||||||
|
"D452960211V11121120604204799500002304016461276111 496300134ゴナ-ルエフヒカチユウペン900 1トウ ニチイサ-ビスキユウシユウフクオカサンフクオカシ サワラク モモチハマ 1-7-5 7F GF9C002 000010 000000 000000 " "296" "02" "11V111211206042" "0479950000" "496300134" "111" "230401" "20230401" "6461276" "ゴナ-ルエフヒカチユウペン900 1トウ " "ニチイサ-ビスキユウシユウフクオカサン" "フクオカシ サワラク モモチハマ 1-7-5 7F " "GF9C002 " "000010" " " "000000" " " "000000" "20230403" "J" "VJSK-BIO_J_MERCK_2023040300.txt" "J2023040300000128" "131" "20230401" "202305082041" "110" "売上" "11V1" "300001491" "福岡第一支店" "" "200000007" "アルフレッサ株式会社" "0479950000" "670235883412145206" "医療法人社団高邦会 福岡山王病院" "イリョウホウジンシャダンコウホウカイ フクオカサンノウビョウイン" "814-0001 福岡県福岡市早良区百道浜3−6−45" "496300134" "ゴナールエフ 皮下注ペン 900IU 1PEN" "" "1" "" "10" "0" "0" "J" "" "" "" "" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202304" "" "" "0" "23-04-03 20:42:11" "system"
|
||||||
|
"D452960211JB1121309300202875030002304016523689111 496300127ゴナ-ルエフヒカチユウペン450 1トウ イツカンドウヤツキヨク0561 カワサキシ アサオク フルサワ 172-1 GF4C001 000001 000000 000000 " "296" "02" "11JB11213093002" "02875
|
||||||
|
Can't render this file because it contains an unexpected character in line 5 and column 371.
|
@ -0,0 +1,5 @@
|
|||||||
|
"fcl_cd" "sub_no" "start_dt" "end_dt" "closed_dt" "nm" "kn_nm" "sht_nm" "sht_kn_nm" "mkr_cd" "jsk_proc_kbn" "fmt_addr" "fmt_kn_addr" "post_cd" "prft_cd" "prft_nm" "city_nm" "addr_line_1" "tel_no" "admin_kbn" "fcl_type" "rec_sts_kbn" "ins_dt" "upd_dt"
|
||||||
|
"670229430760653825" "0" "20000101" "99991231" "" "駅前町歯科診療所" "エキマエチョウシカシンリョウジョ" "駅前町歯科診療所" "エキマエチョウシカシンリョウジョ" "" "0" "700-0023 岡山県岡山市北区駅前町1−6−20" "オカヤマケン オカヤマシキタク エキマエチョウ1-6-20" "700-0023" "33" "岡山県" "岡山市北区" "駅前町1−6−20" "0862236468" "33101" "30" "1" "" ""
|
||||||
|
"670229435466662922" "0" "20000101" "99991231" "" "医療法人社団仁卓会 ほりかわ歯科クリニック" "イリョウホウジンシャダンジンタクカイ ホリカワシカクリニック" "ほりかわ歯科クリニック (医社)" "ホリカワシカクリニック (イシャ)" "" "0" "675-0101 兵庫県加古川市平岡町新在家1573−1−4F" "ヒョウゴケン カコガワシ ヒラオカチョウシンザイケ1573-1-4F" "675-0101" "28" "兵庫県" "加古川市" "平岡町新在家1573−1−4F" "0794244617" "28210" "30" "1" "" ""
|
||||||
|
"670229435785430019" "0" "20000101" "99991231" "" "株式会社コミュニティメディカル なつめ薬局 千歳船橋店" "カブシキガイシャコミュニティメディカル ナツメヤッキョク チトセフナバシテン" "なつめ薬局 千歳船橋店 (株)" "ナツメヤッキョク チトセフナバシテン (カ)" "" "0" "156-0054 東京都世田谷区桜丘2−24−2" "トウキョウト セタガヤク サクラガオカ2-24-2" "156-0054" "13" "東京都" "世田谷区" "桜丘2−24−2" "0364136189" "13112" "20" "1" "" ""
|
||||||
|
"670229447437206529" "0" "20000101" "20230407" "2023-04-07" "ヒカリ薬局" "ヒカリヤッキョク" "ヒカリ薬局" "ヒカリヤッキョク" "" "0" "670-0955 兵庫県
|
||||||
|
Can't render this file because it contains an unexpected character in line 5 and column 177.
|
@ -0,0 +1,5 @@
|
|||||||
|
"v_hld_cd" "sub_no" "nm" "kn_nm" "sht_nm" "start_dt" "end_dt" "dsp_odr" "rec_sts_kbn" "ins_dt" "upd_dt"
|
||||||
|
"10001" "1" "卸ホールディングス名01-1" "オロシホールディングスメイ01-1" "卸名01-1" "20230101" "99991231" "1" "0" "23-05-09 12:00:01" "23-05-09 13:00:01"
|
||||||
|
"10001" "2" "卸ホールディングス名01-2" "オロシホールディングスメイ01-2" "卸名01-2" "20230102" "99991231" "1" "0" "23-05-09 12:00:02" "23-05-09 13:00:02"
|
||||||
|
"10001" "3" "卸ホールディングス名01-3" "オロシホールディングスメイ01-3" "卸名01-3" "20230103" "99991231" "1" "0" "23-05-09 12:00:03" "23-05-09 13:00:03"
|
||||||
|
"10001" "4" "卸ホールディングス名01-4" "オロシホールディングスメイ01-4" "卸
|
||||||
|
Can't render this file because it contains an unexpected character in line 5 and column 100.
|
@ -0,0 +1,5 @@
|
|||||||
|
"ser_no" "lot_num" "expr_dt" "frst_mov_dt" "ins_dt" "ins_usr"
|
||||||
|
"F0110601" "BAVA001" "20230331" "20210510" "23-05-08 20:40:41" "batch"
|
||||||
|
"F0110601" "BAVA002" "20230331" "20210615" "23-05-08 20:40:41" "batch"
|
||||||
|
"F0110601" "BAVA003" "20231031" "20210719" "23-05-08 20:40:41" "batch"
|
||||||
|
"F0110601" "BAVA004" "2
|
||||||
|
Can't render this file because it contains an unexpected character in line 5 and column 24.
|
@ -0,0 +1,5 @@
|
|||||||
|
"hco_vid__v" "sub_no" "mdb_cd" "reliability" "start_dt" "rec_sts_kbn" "ins_dt" "upd_dt"
|
||||||
|
"670229780011959315" "1" "003410424" "0" "20020601" "0" "22-03-09 13:56:19" "22-03-09 13:56:19"
|
||||||
|
"670230081112654862" "0" "004101420" "0" "20000101" "9" "17-10-17 17:06:52" "22-03-09 14:17:34"
|
||||||
|
"670230081112654862" "1" "004104997" "2" "20000101" "0" "22-03-09 14:17:33" "22-03-09 14:17:33"
|
||||||
|
"670230100414841865" "0" "003622111" "3"
|
||||||
|
Can't render this file because it has a wrong number of fields in line 5.
|
@ -0,0 +1,5 @@
|
|||||||
|
"vid_kind_1" "v_cd_1" "nm_1" "dsp_odr_1" "vid_kind_2" "v_cd_2" "nm_2" "dsp_odr_2" "vid_kind_3" "v_cd_3" "nm_3" "dsp_odr_3" "vid_kind_4" "v_cd_4" "nm_4" "dsp_odr_4" "vid_kind_5" "v_cd_5" "nm_5" "dsp_odr_5" "vid_kind_6" "v_cd_6" "nm_6" "dsp_odr_6" "vid_kind_7" "v_cd_7" "nm_7" "dsp_odr_7" "vid_kind_8" "v_cd_8" "nm_8" "dsp_odr_8" "vid_kind_9" "v_cd_9" "nm_9" "dsp_odr_9" "vid_kind_10" "v_cd_10" "nm_10" "dsp_odr_10" "v_whs_cd" "start_dt" "end_dt" "rec_sts_kbn" "ins_dt" "upd_dt"
|
||||||
|
"3" "300003202" "その他営業本部卸" "0" "3" "300003217" "試薬岐阜(回収)" "0" "3" "300003217" "試薬岐阜(回収)" "0" "3" "300003217" "試薬岐阜(回収)" "0" "3" "300003217" "試薬岐阜(回収)" "0" "3" "300003217" "試薬岐阜(回収)" "0" "3" "300003217" "試薬岐阜(回収)" "0" "3" "300003217" "試薬岐阜(回収)" "0" "3" "300003217" "試薬岐阜(回収)" "0" "3" "300003217" "試薬岐阜(回収)" "0" "200000007" "20190401" "99991231" "0" "19-04-11 11:30:59" "23-04-12 17:52:38"
|
||||||
|
"3" "300003138" "北関東甲信越営業本部" "0" "3" "300003195" "首都圏移管組織" "0" "3" "300003195" "首都圏移管組織" "0" "3" "300003195" "首都圏移管組織" "0" "3" "300003195" "首都圏移管組織" "0" "3" "300003195" "首都圏移管組織" "0" "3" "300003195" "首都圏移管組織" "0" "3" "300003195" "首都圏移管組織" "0" "3" "300003195" "首都圏移管組織" "0" "3" "300003195" "首都圏移管組織" "0" "200000007" "20190401" "99991231" "0" "19-04-11 11:30:59" "23-04-12 17:52:38"
|
||||||
|
"3" "300003202" "その他営業本部卸" "0" "3" "300003226" "大垣(回収)" "0" "3" "300003226" "大垣(回収)" "0" "3" "300003226" "大垣(回収)" "0" "3" "300003226" "大垣(回収)" "0" "3" "300003226" "大垣(回収)" "0" "3" "300003226" "大垣(回収)" "0" "3" "300003226" "大垣(回収)" "0" "3" "300003226" "大垣(回収)" "0" "3" "300003226" "大垣(回収)" "0" "200000007" "20190401" "99991231" "0" "19-04-11 11:30:59" "23-04-12 17:52:38"
|
||||||
|
"a" "300003144" "メディカル営業本部1" "1" "b" "300003202" "東海スタッフ医療2" "2" "c" "300003203" "東海スタ
|
||||||
|
Can't render this file because it contains an unexpected character in line 5 and column 129.
|
@ -0,0 +1,5 @@
|
|||||||
|
"whs_cd" "whs_sub_cd" "org_cd" "sub_no" "v_org_cd" "start_dt" "end_dt" "dsp_odr" "rec_sts_kbn" "ins_dt" "upd_dt"
|
||||||
|
"042" "01" "361007" "0" "300006657" "20230401" "99991231" "0" "0" "23-04-12 11:24:06" "23-04-12 11:24:06"
|
||||||
|
"042" "01" "381207" "0" "300006658" "20230401" "99991231" "0" "0" "23-04-12 11:24:27" "23-04-12 11:24:27"
|
||||||
|
"080" "00" "02780" "0" "300006526" "20220401" "99991231" "0" "9" "22-04-11 15:57:35" "23-04-12 10:46:48"
|
||||||
|
"080" "00" "02780" "1" "300006526" "20220401"
|
||||||
|
Can't render this file because it has a wrong number of fields in line 5.
|
@ -0,0 +1,5 @@
|
|||||||
|
"prd_cd" "sub_no" "prd_nm" "prd_e_nm" "mkr_cd" "mkr_inf_1" "mkr_inf_2" "phm_itm_cd" "itm_nm" "itm_sht_nm" "form_cd" "form_nm" "vol_cd" "vol_nm" "cont_cd" "cont_nm" "pkg_cd" "pkg_nm" "cnv_num" "jsk_start_dt" "prd_sale_kbn" "jsk_proc_kbn" "start_dt" "end_dt" "dsp_odr" "rec_sts_kbn" "ins_dt" "upd_dt"
|
||||||
|
"496201110" "0" "セロフェン 錠剤 50mg 30TAB" "" "F21206A0" "セロフェン 錠 50MG" "SEROPHENE TAB. 50 MG. (30)" "001" "セロフェン" "SP" "F003" "錠剤" "0000" "" "V009" "50mg" "P007" "30TAB" "30" "" "0" "0" "20080101" "20190930" "140" "0" "17-11-08 16:52:41" "19-09-19 11:42:45"
|
||||||
|
"496201127" "0" "セロフェン 錠剤 50mg 30TAB" "" "F21206A0" "セロフェン 錠 50MG" "SEROPHENE TAB. 50 MG. (30)" "001" "セロフェン" "SP" "F003" "錠剤" "0000" "" "V009" "50mg" "P007" "30TAB" "30" "" "0" "0" "20070401" "20190930" "150" "0" "17-11-08 16:52:41" "19-09-19 11:42:45"
|
||||||
|
"496300110" "2" "ゴナールエフ 皮下注ペン 300IU 1PEN" "" "F1990608" "ゴナールエフ皮下注ペン 300" "GONAL-F PEN 300IU (1) - JPN" "005" "セロスティム" "ST" "F005" "皮下注ペン" "0000" "" "V017" "300IU" "P011" "1PEN" "1" "" "0" "0" "20190501" "20190930" "100" "9" "19-04-23 16:35:36" "19-04-23 16:40:38"
|
||||||
|
"496300127" "2" "ゴナールエフ 皮下注ペン 450IU 1PEN" "" "F19D0608" "ゴナールエフ皮下注ペン450" "Gonalef Pen 450 (1)" "008" "BDマイクロファインプラス" "MF" "F005" "皮下注ペン" "0000" "" "V018" "450IU" "P011" "1PEN" "1" "" "0" "0" "20190501" "20190930" "120" "9" "19-04-23 1
|
||||||
|
Can't render this file because it contains an unexpected character in line 5 and column 318.
|
|
Can't render this file because it contains an unexpected character in line 2 and column 39.
|
@ -0,0 +1,5 @@
|
|||||||
|
"recvdata" "rec_whs_cd" "rec_whs_sub_cd" "rec_whs_org_cd" "rec_cust_cd" "rec_comm_cd" "rec_tran_kbn" "rev_hsdnYmd_wrk" "rev_hsdnYmd_srk" "rec_urag_no" "rec_amt" "rec_unit_price" "rec_price" "rec_comm_nm" "rec_nnskFcl_nm" "free_item" "rec_nnsk_fcl_addr" "rec_nnsk_fcl_post" "rec_nnsk_fcl_tel" "rec_bef_hsdn_ymd" "rec_bef_slip_no" "rec_ymd" "sale_data_cat" "slip_file_nm" "slip_mgt_no" "row_num" "hsdn_ymd" "exec_dt" "v_tran_cd" "tran_kbn_nm" "whs_org_cd" "v_whsOrg_cd" "whs_org_nm" "whs_org_kn" "v_whs_cd" "whs_nm" "nnsk_cd" "fcl_cd" "fcl_kn" "fcl_nm" "fcl_addr_v" "comm_cd" "comm_nm" "nn_amt" "nn_unitPrice" "nn_price" "unit_price" "unit_amt" "drag_price" "drag_amt" "whsPos_err_kbn" "htdnYmd_err_kbn" "prd_exis_kbn" "fcl_exis_kbn" "bef_hsdn_ymd" "bef_slip_no" "slip_org_kbn" "err_flg1" "err_flg2" "err_flg3" "err_flg4" "err_flg5" "err_flg6" "err_flg7" "err_flg8" "err_flg9" "err_flg10" "err_flg11" "err_flg12" "err_flg13" "err_flg14" "err_flg15" "err_flg16" "err_flg17" "err_flg18" "err_flg19" "err_flg20" "kjyo_ym" "tksNbk_kbn" "fcl_exec_kbn" "rec_sts_kbn" "ins_dt" "ins_usr"
|
||||||
|
"D4420202011611A4 0183733 23030133625911102303 4963500230000020003110000000622000000000000000000000000 ア-ビタツクスチユウシヤエキ100MG 100MG 20MLX1Vハコダテチユウオウビヨウイン 00000408585ハコダテシホンチヨウ33バン2ゴウ " "202" "02" "011611A4 " "0183733 " "496350023" "110" "230301" "20230301" "3362591" "000002" "00031100" "0000062200" "ア-ビタツクスチユウシヤエキ100MG 100MG 20MLX1V" "ハコダテチユウオウビヨウイン " "0408585ハコダテシホンチヨウ33バン2ゴウ " "ハコダテシホンチヨウ33バン2ゴウ " "0408585" "" "000000" " " "20230222" "J" "VJSK_J_MERCK_2023022" "J2023022200000022" "29" "20230301" "202303142041" "110" "売上" "01161" "300000383" "函館支店" "" "200000016" "株式会社スズケン" "0183733 " "670234934576694289" "シャカイフクシホウジンハコダテコウセイイン ハコダテチュウオウビョウイン" "社会福祉法人函館厚生院 函館中央病院" "040-0011 北海道函館市本町33−2" "496350023" "アービタックス 注射剤 100mg 1VIAL" "2" "31100" "62200" "31438" "62876" "35309" "70618" "" "" "1" "" "" "" "J" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202303" "" "" "0" "23-03-14 20:41:26" "SYSTEM"
|
||||||
|
"D4420202011611A4 0183733 23030133625921102303 4963500230000080003110000002488000000000000000000000000 ア-ビタツクスチユウシヤエキ100MG 100MG 20MLX1Vハコダテチユウオウビヨウイン 00000408585ハコダテシホンチヨウ33バン2ゴウ " "202" "02" "011611A4 " "0183733 " "496350023" "110" "230301" "20230301" "3362592" "000008" "00031100" "0000248800" "ア-ビタツクスチユウシヤエキ100MG 100MG 20MLX1V" "ハコダテチユウオウビヨウイン " "0408585ハコダテシホンチヨウ33バン2ゴウ " "ハコダテシホンチヨウ33バン2ゴウ " "0408585" "" "000000" " " "20230222" "J" "VJSK_J_MERCK_2023022" "J2023022200000023" "30" "20230301" "202303142041" "110" "売上" "01161" "300000383" "函館支店" "" "200000016" "株式会社スズケン" "0183733 " "670234934576694289" "シャカイフクシホウジンハコダテコウセイイン ハコダテチュウオウビョウイン" "社会福祉法人函館厚生院 函館中央病院" "040-0011 北海道函館市本町33−2" "496350023" "アービタックス 注射剤 100mg 1VIAL" "8" "31100" "248800" "31438" "251504" "35309" "282472" "" "" "1" "" "" "" "J" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202303" "" "" "0" "23-03-14 20:41:26" "SYSTEM"
|
||||||
|
"D4416101311101A8 5140013 23030173719811122303 4963500230000120002738100003285720000000000000000000000 ア-ビタツクスチユウシヤエキ100MG 100MG 20MLX1Vトツトリニツセキビヨウイン 00006808517トツトリケントツトリシシヨウトクチヨウ117 " "161" "01" "311101A8 " "5140013 " "496350023" "112" "230301" "20230301" "7371981" "000012" "00027381" "0000328572" "ア-ビタツクスチユウシヤエキ100MG 100MG 20MLX1V" "トツトリニツセキビヨウイン " "6808517トツトリケントツトリシシヨウトクチヨウ117 " "トツトリケントツトリシシヨウトクチヨウ117 " "6808517" "" "000000" " " "20230224" "J" "VJSK_J_MERCK_2023022" "J2023022400000011" "16" "20230301" "202303142041" "110" "売上" "31110" "300000391" "鳥取支店" "" "200000015" "株式会社サンキ" "5140013 " "670237031040828444" "ニホンセキジュウジシャ トットリセキジュウジビョウイン" "日本赤十字社 鳥取赤十字病院" "680-0017 鳥取県鳥取市尚徳町117" "496350023" "アービタックス 注射剤 100mg 1VIAL" "12" "27381" "328572" "31438" "377256" "35309" "423708" "" "" "1" "" "" "" "J" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "202303" "" "" "0" "23-03-14 20:41:26" "SYSTEM"
|
||||||
|
"D4416101311
|
||||||
|
Can't render this file because it contains an unexpected character in line 5 and column 13.
|
@ -0,0 +1,5 @@
|
|||||||
|
"rec_data" "rec_whs_cd" "rec_whs_sub_cd" "rec_sto_place" "rec_stock_ymd" "rec_comm_cd" "rec_amt" "rev_stok_no_sign" "rev_jan_cd" "rec_free_item" "rec_ymd" "sale_data_cat" "slip_file_nm" "slip_mgt_no" "row_num" "exec_dt" "err_flg1" "err_flg2" "err_flg3" "err_flg4" "err_flg5" "err_flg6" "err_flg7" "err_flg8" "err_flg9" "err_flg10" "rec_sts_kbn" "ins_dt" "ins_usr"
|
||||||
|
"D463630101 23022849630021900003500000 セトロタイドチユウシヤヨウ0.25MG 1V" "363" "01" "01 " "230228" "496300219" "000035" "0" "0000" " セトロタイドチユウシヤヨウ0.25MG 1V" "20230314" "J" "VJSK-STOCK_J_MERCK_2023031400.txt" "J2023031400000059" "59" "202303142041" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "23-03-14 20:41:57" "SYSTEM"
|
||||||
|
"D4625301026 2302284963001270000040000001ゴナールエフヒカチユウペン450 1トウ40 " "253" "01" "026 " "230228" "496300127" "000004" "0" "0000" "01ゴナールエフヒカチユウペン450 1トウ40 " "20230314" "J" "VJSK-STOCK_J_MERCK_2023031400.txt" "J2023031400000060" "60" "202303142041" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "23-03-14 20:41:57" "SYSTEM"
|
||||||
|
"D4625301026 2302284963001340000220000001ゴナールエフヒカチユウペン900 1トウ40 " "253" "01" "026 " "230228" "496300134" "000022" "0" "0000" "01ゴナールエフヒカチユウペン900 1トウ40 " "20230314" "J" "VJSK-STOCK_J_MERCK_2023031400.txt" "J2023031400000061" "61" "202303142041" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "23-03-14 20:41:57" "SYSTEM"
|
||||||
|
"D4625301026 2302284963004170000500000001オビドレルヒカチユウシリンジ250MCG 140 " "2
|
||||||
|
Can't render this file because it contains an unexpected character in line 5 and column 123.
|
@ -0,0 +1,5 @@
|
|||||||
|
"v_tran_cd" "sub_no" "nm" "start_dt" "end_dt" "dsp_odr" "rec_sts_kbn" "ins_dt" "upd_dt"
|
||||||
|
"10001" "1" "Veeva取引区分名01-1" "20230101" "99991231" "1" "0" "2023-05-09 12:00:01" "2023-05-09 13:00:01"
|
||||||
|
"10001" "2" "Veeva取引区分名01-2" "20230102" "99991231" "1" "0" "2023-05-09 12:00:02" "2023-05-09 13:00:02"
|
||||||
|
"10001" "3" "Veeva取引区分名01-3" "20230103" "99991231" "1" "0" "2023-05-09 12:00:03" "2023-05-09 13:00:03"
|
||||||
|
"10001" "4" "Veeva取引区分名01-4" "20230104" "9
|
||||||
|
Can't render this file because it contains an unexpected character in line 5 and column 53.
|
@ -0,0 +1,5 @@
|
|||||||
|
"hco_vid__v" "hco_vid__v_merge" "apply_dt" "merge_reason"
|
||||||
|
"100000001" "900000001" "20230509" "事由01"
|
||||||
|
"100000002" "900000002" "20230509" "事由02"
|
||||||
|
"100000003" "900000003" "20230509" "事由03"
|
||||||
|
"100000004" "900000004"
|
||||||
|
Can't render this file because it has a wrong number of fields in line 5.
|
@ -0,0 +1,5 @@
|
|||||||
|
"whs_cd" "whs_sub_cd" "customer_cd" "sub_no" "start_dt" "end_dt" "org_cd" "src_org_cd" "nm" "kn_nm" "addr" "kn_addr" "zip_cd" "tel_no" "rec_sts_kbn" "ins_dt" "upd_dt"
|
||||||
|
"006" "01" "1002900000" "0" "20000101" "99991231" "11" "1131A2283316" "辻内科小児科医院 " "ツジナイカシヨウニカ イイン" "長崎県 佐世保市皆瀬町29 " "ナガサキケン サセボシカイゼチヨウ 29" "8570144" "0956492319" "0" "23-04-14 11:53:14" "23-04-14 11:53:14"
|
||||||
|
"006" "01" "1005400000" "0" "20000101" "99991231" "12" "1211C3415515" "医療法人 愛恵会 佐世保愛恵病院 " "イリヨウホウジンアイケイカイサセボアイケイビ" "長崎県 佐世保市瀬戸越4丁目 2−15 " "ナガサキケン サセボシセトゴシ 4チヨウメ 2-15" "8570134" "0956493335" "0" "23-04-14 11:53:14" "23-04-14 11:53:14"
|
||||||
|
"006" "01" "1007200000" "0" "20000101" "99991231" "11" "1131A2407312" "医療法人 山祇診療所 " "イリヨウホウジンヤマズミシンリヨウジヨ" "長崎県 佐世保市山祇町 19−36 " "ナガサキケン サセボシヤマズミチョウ" "8570822" "0956313633" "0" "23-04-14 11:53:14" "23-04-14 11:53:14"
|
||||||
|
"006" "01" "1007800000" "0" "20000101" "999912
|
||||||
|
Can't render this file because it contains an unexpected character in line 5 and column 47.
|
@ -0,0 +1,5 @@
|
|||||||
|
"v_whs_cd" "sub_no" "nm" "kn_nm" "sht_nm" "zip_cd" "addr" "kn_addr" "tel_no" "v_hld_cd" "start_dt" "end_dt" "dsp_odr" "rec_sts_kbn" "ins_dt" "upd_dt"
|
||||||
|
"200000002" "0" "株式会社モロオ" "カナ01" "モロオ" "1110001" "住所01" "ジュウショ01" "00-0000-0001" "0" "20000101" "99991231" "20" "0" "16-04-15 16:25:33" "16-04-15 16:25:33"
|
||||||
|
"200000005" "0" "岩渕薬品株式会社" "カナ02" "岩渕薬品" "1110002" "住所02" "ジュウショ02" "00-0000-0002" "0" "20000101" "99991231" "50" "0" "16-04-15 16:25:33" "16-04-15 16:25:33"
|
||||||
|
"200000009" "0" "株式会社マルタケ" "カナ03" "マルタケ" "1110003" "住所03" "ジュウショ03" "00-0000-0003" "0" "20000101" "99991231" "90" "0" "16-04-15 16:25:33" "16-04-15 16:25:33"
|
||||||
|
"200000010" "0" "株式会社ファイネス" "カナ04" "ファイネス" "1110004" "住所04" "ジュ
|
||||||
|
Can't render this file because it contains an unexpected character in line 5 and column 104.
|
@ -1,3 +0,0 @@
|
|||||||
"phm_prd_cd" "phm_price_kind" "sub_no" "price" "start_dt" "end_dt" "dsp_odr" "rec_sts_kbn" "ins_dt" "upd_dt"
|
|
||||||
"123456701" "01" "1" "12345.6" "yyyy0401" "20190930" "10" "0" "18-03-07 09:48:00" "19-09-19 11:23:47"
|
|
||||||
"123456701" "02" "1" "12587.8" "20191001" "99991231" "10" "0" "19-09-19 11:24:05" "19-09-19 11:24:05"
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user