コンテンツにスキップ

SMILEマスタデータ(フィクスチャ)リファレンス

目的

  • SMILE連携で使用する検証用フィクスチャのヘッダーを整理し、列の役割を明確化する。
  • 仕様判断は /docs/specifications/ 内の元仕様書を正とする。
  • 用語対応は docs/glossary.md の「システム用語対照表(SMILE連携マッピング)」に従う。
  • 本ドキュメント内の 商品コード は、用語集の 商品番号(SKU) に対応する。
  • SMILEマスタ.xlsx の全項目(型・桁数・備考)は docs/03-implementation/smile/smile-master-xlsx-field-catalog.md を参照。

運用ルール(SSOT)

  • SMILEからインポートされるマスタデータの正本(SSOT)は SMILE とする。
  • Vendure側の対象データは、SMILE由来項目として 手動編集不可 を原則とする。
  • 修正が必要な場合は Vendure で直接更新せず、SMILE側を更新したうえで再インポートする。
  • Dashboard で表示するSMILE由来の customFields は、設定で readonly: true を必須とする。

対象ファイル

方針: apps/vendure-server/tests/integration/fixtures/smile/import/ がインポート項目、
apps/vendure-server/tests/integration/fixtures/smile/export/ が出力項目の正本。

インポートデータ

import/: SMILE → Vendure の取り込み対象データ

  • apps/vendure-server/tests/integration/fixtures/smile/import/tanka.txt(単価マスタ:掛率分類別)
  • apps/vendure-server/tests/integration/fixtures/smile/import/suryou-tanka.txt(数量別単価マスタ:商品ごとの数量別価格)
  • apps/vendure-server/tests/integration/fixtures/smile/import/suryou-tanka-tokuisaki.txt(数量別単価マスタ顧客先別:顧客単体の数量別価格)
  • apps/vendure-server/tests/integration/fixtures/smile/import/suryou-tanka-bunrui.txt(数量別単価マスタ分類別:顧客分類(グループ)ごとの数量別価格)
  • apps/vendure-server/tests/integration/fixtures/smile/import/tokuisaki.csv(得意先マスタ)
  • apps/vendure-server/tests/integration/fixtures/smile/import/shouhin.csv(商品マスタ)
  • apps/vendure-server/tests/integration/fixtures/smile/import/nouhinsaki.csv(納品先マスタ)

Seed正本(顧客)

  • 顧客SMILE取り込みのシード正本: apps/vendure-server/tests/integration/fixtures/smile/import/tokuisaki.csv
  • 顧客SMILE読み込みのテスト・開発参照は tokuisaki.txt より tokuisaki.csv を優先する。

Seedデータ(別用途)

  • apps/vendure-server/src/data/products.csv は Vendure のシード投入用データ。
  • SMILEインポート(CsvImportService)の参照仕様とは分離して扱う。

エクスポートデータ

export/: Vendure → SMILE への出力で期待されるデータ

  • apps/vendure-server/tests/integration/fixtures/smile/export/jutyu.txt(出力受注データ)
  • apps/vendure-server/tests/integration/fixtures/smile/export/nouhinsaki.txt(出力納品先データ)

文字コード・区切り

ファイル 文字コード 区切り 読み方例
tanka.txt UTF-16LE CSV(カンマ) iconv -f UTF-16LE -t UTF-8 apps/vendure-server/tests/integration/fixtures/smile/import/tanka.txt
suryou-tanka.txt UTF-16LE CSV(カンマ) iconv -f UTF-16LE -t UTF-8 apps/vendure-server/tests/integration/fixtures/smile/import/suryou-tanka.txt
suryou-tanka-tokuisaki.txt UTF-16LE CSV(カンマ) iconv -f UTF-16LE -t UTF-8 apps/vendure-server/tests/integration/fixtures/smile/import/suryou-tanka-tokuisaki.txt
suryou-tanka-bunrui.txt UTF-16LE CSV(カンマ) iconv -f UTF-16LE -t UTF-8 apps/vendure-server/tests/integration/fixtures/smile/import/suryou-tanka-bunrui.txt
tokuisaki.csv UTF-8(BOM) CSV(カンマ) sed '1q' apps/vendure-server/tests/integration/fixtures/smile/import/tokuisaki.csv
shouhin.csv UTF-8(BOM) CSV(カンマ) sed '1q' apps/vendure-server/tests/integration/fixtures/smile/import/shouhin.csv
nouhinsaki.csv UTF-8(BOM) CSV(カンマ) sed '1q' apps/vendure-server/tests/integration/fixtures/smile/import/nouhinsaki.csv

得意先CSVの読み込みルール(2026-02-13更新)

納品先CSVの読み込みルール

  • import/nouhinsaki.csv は SMILE → Vendure の納品先マスタ取り込み形式。
  • export/nouhinsaki.txt は Vendure → SMILE の出力形式であり、入力形式とは別物として扱う。
  • 取り込み先の正本は Vendure AddressAddress.customFields.deliveryPointCode
  • 納品先コード は顧客別ではなく SMILE 連携全体で一意のコードとして扱う。
  • upsert キーは Address.customFields.deliveryPointCode。同じ納品先コードが別得意先へ紐付いている行はデータ不整合として行エラーにする。
  • Storefront で新規追加された納品先の採番開始値は Vendure Settings Store の smile.exportSettings.deliveryPointCodeSequenceStart を正本とする。DB 初期値は required baseline seed で投入し、アプリコード側では未設定値を補完しない。
  • 得意先コード または 納品先 が Vendure の得意先コードとして未登録の場合、仮顧客は作成せず行エラーにする。
  • 納品先名荷受け人名1/2荷受人名1Address.fullName に集約する。
  • 郵便番号住所1住所2住所3電話番号、元行 JSON を住所へ保存する。
  • 同一ファイル内で同じ納品先コードが複数行ある場合、同じ得意先への行は行順に処理し後続行で上書きする。別得意先への行はエラーにする。

対象: tokuisaki.csv(参照優先)および tokuisaki.txtCsvImportService で取り込む場合。

  • ヘッダーの同義語は吸収する(例: 得意先コード / 得意先コード)。
  • 同じ意味の候補ヘッダーが複数ある場合は、先に定義したキーを優先する。
  • 同名ヘッダーが重複している場合は、列順で扱う。
  • 基本ルール: 先頭列を優先して値を採用する。
  • 例外ルール: 同名ヘッダーが連続2列の場合は、前をコード、後ろを表示名として解釈する。
    • 例: 回収方法,回収方法 → 1列目=collectionMethod(コード)として保存。2列目(表示名)は SMILE 由来の derivative name field を Customer customFields から廃止したため Vendure 側には保存しない(表示が 必要な箇所はコードから master 経由で解決する)。
  • collectionMethod1 は使わない。過去の内部フィールド名であり、現行の得意先CSVには 回収方法1 ヘッダーが存在しないため、取込・決済判定・Dashboard 表示の正本から除外する。
  • tokuisaki.csvコード 列(運送会社名 の直前にある列)は 運送会社コード として扱い、shippingCompanyCode に保存する。
  • CSVパーサーは重複ヘッダーを失わないよう group_columns_by_name: true で処理する。
  • Customer upsert キーは 得意先コード で、Customer.customFields.customerCode 一致時は新規作成せず既存顧客を更新する。
  • 通常のメールアドレスは顧客照合キーに使わない。メール未入力時だけ ${customerCode}@ritsubi-platform.com 形式の仮メール顧客を再利用対象に含める。
  • 同一CSV内に同じ得意先コードが複数ある場合は、行順に処理し、最後に出現した行の内容で上書きされる。
  • 住所は deliveryPointCode を優先キーとして更新し、未設定時は defaultBillingAddress を更新対象にする。
  • 回収方法Customer.customFields.collectionMethod に SMILE のコード値として保存する。tokuisaki.csv のように 回収方法,回収方法 が連続する場合は、1列目をコード、2列目を表示名として扱い、保存値は1列目のコードのみ。
  • customerStatus は SMILE importer では設定・補完しない。SMILE の回収方法から general や顧客分類へ 変換する処理は import 時に行わない。
  • 顧客再インポートの正本仕様は docs/specifications/2026-03-smile-customer-import-upsert-rules.md を参照。

単価マスタCSVの読み込みルール(2026-05-28更新)

対象: tanka.txtsuryou-tanka*.txt

  • importer は SMILE 列を正規化して保存するだけで、価格計算上の業務判断を import 時に行わない。単価種別・単価種類・顧客/商品軸の組み合わせ解釈は価格計算関数の責務。
  • 単価種別 は SMILE コード値を ritsubi_smile_price_master.unitTypeCode にそのまま保存する。0/1/2/3 以外の値も import 時に別の意味へ変換しない。
  • 単価種別名 は表示・監査用の補助情報として unitTypeName に保存する。通常の価格計算は rawRowDataunitTypeName へ fallback せず、正規化済みの unitTypeCode / unitRate / unitPrice を使う。
  • 単価種別 header を持たない旧数量単価 fixture は、後方互換のため unitTypeCode='0' として扱う。ただし header が存在するファイルでは raw の 単価種別 と正規化後の unitTypeCode が一致しない行は import エラーにする。
  • rawRowData は問題調査・監査・既存データ修復のために保存する。通常時の価格計算や表示で rawRowData から値を backfill / fallback しない。

商品CSVの読み込みルール(2026-03-03更新)

対象: 参照フィクスチャ shouhin.csv の列定義に沿って CsvImportService で商品CSVを取り込む場合。

  • 取り込み実装はファイル名に依存しない(shouhin.csv はテスト/開発参照データ)。
  • Variant upsertキーは 商品コード(SKU)。
  • Product 識別キーは 商品コード を使用し、商品コードが異なる行は必ず別 Product とする。
  • SMILE 商品データには Vendure の Product に相当する概念がないため、 1 Product = 1 Variant を import 時の必須構造として採る。
  • ただし上記は 環境に依らず SMILE import 時に守る必須ルール であり、公開用の curated data / seed data の正規形そのものを定義するものではない。
  • 公開用の curated data / seed data では、単一 variant 商品なら option group なしを許容し、複数 variant 商品に整理する場合は option groups を伴う。
  • 必要に応じて import 後にユーザーが整理する。
  • 誤解防止: ここでの 1 Product = 1 Variant は importer の必須ルールであり、公開カタログの推奨モデリングではない。
  • SMILE には自動集約の根拠となる Product 親概念がないため、importer はサイズ・色・容量などで勝手に SKU を束ねない。
  • 逆に、公開用 catalog / seed / storefront では import 時の初期形をそのまま正とせず、単一 variant 商品か、regroup 後の 1 Product + 複数 Variant + option groups かを商品実態に応じて選ぶ。
  • 初期商品コード / 親商品コード は Product 集約キーとして使用しない。
  • Product slug は 商品コード から <product-code> 形式で生成する。
  • smile-<product-code> 形式は migration 20260509120000_drop_smile_slug_prefix_from_single_sku_products で一括変換済み。importer 側の runtime 正規化は廃止しており、再取込時の silent fixup は行わない。
  • 主価格は 標準売上単価ProductVariant.price に保存する。
  • 上代単価ProductVariant.customFields.smileListPrice に保存する。
  • 注文単位数量 は旧 ProductVariant custom field へ保存しない。購入制限の正本は PurchaseLimitRule であり、SMILE 商品 CSV の seed 同期は購入制限値を書き戻さない。
  • Variant表示名は 正式品名 を優先し、未指定時は 商品名 + 規格(規格未指定時は 商品名)を使用する。
  • 規格ProductVariant.customFields.specification に保存する(未指定時は空)。
  • categoryCode が必要な場合は、SMILE の部門コード相当の参考値として smileRaw に保存するだけに留め、 Product の共有属性にもアプリケーションロジックにも使わない。
  • 部門/用途/税率 等の余剰列は ProductVariant.customFields.smileRaw に JSON 文字列で保持する。
  • 既存 SKU の再インポート時は、手動 regroup 済み Product を壊さないため、親 Product 更新は importer 管理の単独 SKU Product に限定する。
  • brandCode は販売表現上の共有属性として Product に保持する。
  • categoryCode は部門コード相当の参考値なので、 smileRaw に保持するだけに留め、Product の共有属性としてもプログラムからも使わない。
  • directShippingEligible は SKU ごとの配送制約なので ProductVariant.customFields に保持し、Product 側では扱わない。
  • 購入数量制限(minimumQuantity / purchaseUnit / maxPerOrder)は PurchaseLimitRule に保持する。Variant 単位の共通制限は対象商品だけを持つ rule、顧客・顧客グループ別制限は同じ rule に target を追加して表現する。
  • consent* は、現行 storefront / shipping / access-control / consent 判定が Product 側フォールバックを持つため、Product と Variant の両方で扱う。
  • 上記の Product 側項目は、同一 Product に手動 regroup する SKU 間で同値であることを前提にする。
  • とくに brandCode は Product の共有表示属性なので、異なるブランドの SKU を同一 Product に regroup しない。
  • directShippingEligible は Variant 正本なので、SKU 間で値が混在する Product を許容する。regroup 制約には含めない。
  • Product / Variant の責務分離と regroup 禁止条件は docs/specifications/2026-03-smile-product-field-responsibility.md を参照する。
  • 既存フィクスチャ shouhin.csv は、従来どおり SKU 単位(1SKU=1Product)で取り込まれる。

docs/specifications/SMILEマスタ.xlsx ベースの定義

本セクションは docs/specifications/SMILEマスタ.xlsx(2026-02-13確認)を正本として、型・桁数・抽出条件を実装向けに整理したもの。

対象シート

  • 得意先マスタ
  • 得意先マスタの分類項目
  • 納品先マスタ
  • 商品マスタ
  • 単価マスタ
  • 数量別単価マスタ
  • 担当者マスタ
  • 対応表

種類(型)と桁数の読み方

記号 意味
V 文字列(可変長)
C 文字列(コード)
N 数値

桁数19.4(Excel上は 19.399999999999999)のように見える列は、 整数19桁 + 小数4桁 の意味。

取込時のコード正規化(Excel 由来の .0 除去・2026-06更新)

得意先コード / 商品コード / お届先コード / 売上掛率分類 / 分類コード / 地区No / 担当者コードは仕様書上いずれも C(char) だが、別表のサンプル値はすべて数字 (地区No 09、売上掛率分類 1000 / 60000 / 7010 …)であり、英字を含む C001 のようなコードは実 SMILE データには存在しない(C001 はテスト seed のみ)。 唯一の英字コードは通貨コード(JPY 等)。

これら 値が数字のコード列は、SMILE エクスポートを Excel で開いて保存すると 6000060000.0 / 22.0 のように小数表記へ化ける(種類 N/V/C に関わらず、 Excel が数値に見えるセルを float 化するため。実データ tanka.csv売上掛率分類コード60000.0 で出力される事例を確認済み)。得意先 import 側だけ未処理だと、単価マスタ側 (60000)と照合できず顧客別価格が解決できないため、全 import の取込境界で末尾の .0 を除去して整数表記へ揃える。

  • 正規化の正本(SSOT)は smile-csv-row.helpers.tsnormalizeSmileNumericCode / pickNumericCode^[0-9]+\.0+$ に一致する値の .0 のみ除去する。
  • 数値変換ではなく Excel アーティファクト除去。先頭ゼロ(010000)・英字コード (JPY)・全角・2.5 のような非整数は破壊せずそのまま返す。
  • 適用箇所: 得意先(得意先 / 請求先 / 売上掛率分類 / 分類コード1 / 地区No / 担当者 / 運送会社 / 納品先コード)、商品(商品コード / 消費税率区分 / 非課税区分)、納品先 (得意先 / お届先コード)、単価マスタ(単価マスター区分 / 単価種類 / 単価種別 / 各日付 系の N 列)。照合に使う getSmileCustomerCode / getSmileProductCode / 納品先 getter も同じ正規化を通し、保存値と照合キーの表記を一致させる。
  • 氏名・住所などの自由文字列列には使わない(pickValue のまま)。
  • 回収方法 は仕様書では V だが、Vendure の Customer.customFields.collectionMethod^[0-9]+$ の数値コード field。Excel 由来 2.0 の吸収と数値検証は processor (validateCollectionMethodCode)が正本で行い、不正値(2.5 / 振込 等)は 取込エラーにする。
  • 補足: Excel は先頭ゼロ付きコード(001031)を 1031 に潰すこともあるが、これは .0 除去では復旧できない別問題。SMILE エクスポートは Excel で開かず取り込むのが望ましい。

実装で使う主要キーと制約(原本準拠)

マスタ 主キー/参照キー 代表的な型・桁数 原本備考・抽出条件
得意先マスタ 得意先コード C(11) 請求先コード C(11)、担当者コード C(8)、売上掛率分類 C(8)
納品先マスタ 得意先コード + お届先コード C(11) + C(6) お届先コードは納品先識別子。更新番号はトリガー生成
商品マスタ 商品コード C(25) 商品名は最大36文字入力運用の注記あり
単価マスタ 単価マスター区分 + 単価種類 + 取引先/分類 + 商品 N(1) + N(1) + C(11) + C(25) 単価マスター区分は 0(売上単価)のみ抽出
数量別単価マスタ 単価マスター区分 + 単価種類 + 取引先/分類 + 商品 + 行番号 N(1) + N(1) + C(11) + C(25) + N(2) 単価マスター区分 0、単価区分 0 を抽出。行番号の昇順処理
担当者マスタ 担当者コード C(8) 得意先マスタの担当者コードと参照関係

コード値定義(原本)

項目 コード値
請求先区分 0:通常得意先 / 1:一括請求の支店 / 2:一括請求先
単価マスター区分 0:売上単価 / 1:仕入単価 / 2:支給単価
単価種類(単価マスタ) 1:得意先別商品 / 2:得意先別商品分類 / 3:得意先分類別商品 / 4:得意先分類別商品分類 / 5:納品先単価分類別商品 / 6:納品先単価分類別商品分類
単価種別(単価マスタ) 0:単価 / 1:標準売上単価×掛率 / 2:標準仕入単価×掛率 / 3:上代単価×掛率
単価種類(数量別単価マスタ) 1:商品別数量別単価 / 2:得意先別数量別単価 / 3:得意先分類別数量別単価 / 4:納品先単価分類別数量別単価
単価区分(数量別単価マスタ) 0:現在単価 / 1:新単価
変更後単価使用区分 0:未使用または新単価 / 1:期間単価
マスター検索表示区分 0:表示する / 1:表示しない

売掛分類(売上掛率分類)一覧

出典: docs/specifications/SMILEマスタ.xlsx得意先マスタの分類項目 シート。
本ドキュメントでは、運用上「売掛分類」「売上掛率分類」「顧客分類」「得意先分類」をすべて同義で扱う。実体は SMILE 内部の 得意先分類0コード に「売上掛率分類」という運用名を付けたもの。得意先分類1〜9コード は本プロジェクトでは未使用枠で、Vendure へは取り込まない。

Vendure 側の分類名正本は ritsubi_smile_sales_rate_classcode は文字列で保持し、1000 / 90009 のような数値形式でも数値変換しない(先頭ゼロも保持する)。ただし Excel 由来の小数表記(60000.0 等)は取込境界で .0 のみ除去して整数表記へ揃える(「取込時のコード正規化」節を参照)。これは数値変換ではなく Excel アーティファクト除去で、得意先 import と単価マスタ import の 売上掛率分類コード の表記を一致させて照合可能にするため。Customer.customFields.salesRateClassCode は価格計算・表示制御条件の参照キー、Customer.customFields.salesRateClassName は得意先CSV由来の snapshot / 補助表示として扱う。得意先CSV import または単価マスタ import に 売上掛率分類コード売上掛率分類名 が含まれる場合は分類マスタへ upsert する。未登録 code は code/name で作成し、既存 code は最新 import の name で更新する。Dashboard では分類マスタに無い code を「分類名未登録」として表示する。

Dashboard 上の導線

売上掛率分類 = 顧客分類 という位置付けに合わせ、Dashboard では以下の入口を用意する。

  • 一覧: /smile-sync/sales-rate-classes。「顧客」メニューと「SMILE連携」メニューの両方からアクセス可能。route 本体は SMILE連携側に登録し、顧客メニュー側は同一 URL を function 形式の navSections で重複表示する。
  • 分類詳細: /smile-sync/sales-rate-classes/$code。当該分類に所属する顧客を Vendure 標準 customers クエリの salesRateClassCode: { eq } フィルタで一覧し、各行から /customers/{id} へ遷移できる。単価マスタ(売上掛率分類別)への導線も併設。
  • 顧客詳細 side block: customer-detail の side 列(groups の直後)に「売上掛率分類」ブロックを追加。Customer.customFields.salesRateClassCode から分類コードと分類名を表示し、ボタンで上記詳細ページへ遷移する。

実装は packages/plugins/src/standard-extensions/admin-extensions/dashboard/ 配下:

  • 詳細ページ: smile-sync/components/PriceMasterSection.tsxSalesRateClassDetailPagesmile-sync.tsxSmileSyncSalesRateClassDetailPage
  • 顧客 side block: components/CustomerSalesRateClassPageBlock.tsx
  • 顧客一覧クエリ: smile-sync/queries.tscustomersBySalesRateClassCodeQuery
  • route / nav / pageBlock の登録: index.tsx(◇ marker は defineMarkedExtension で自動付与)。
売上掛率分類No 売上掛率分類名
1000 iMeso購入店
60000 コナミ単価
7010 MCスターターメンバー
7020 MCレギュラーA
7030 MCレギュラーB
7040 MCプレミアムA
7050 MCプレミアムB
7060 MCプレミアムC
7070 MCプレミアムD
7080 MCプレミアムE
7090 MC特別掛率
7091 MCレギュA相当
7092 MCレギュB相当
7093 MCプレA相当
7094 MCプレB相当
7095 MCプレC相当
7096 MCプレD相当
7097 MCプレE相当
8000 MCディーラー掛率
80000 経費
90000 社員
90002 パート
90003 派遣

拡張項目コード(得意先)

SMILEマスタ.xlsx の得意先マスタ拡張項目で運用しているコード値。

回収方法(V(64)

コード 名称 対応決済方法(payment policy シード)
1 代引き/クレジットカード cash-on-delivery, credit-card
2 売掛(口座引落) credit-sale
3 売掛(振込) credit-sale
4 銀行振込(前入金) bank-transfer

決済方法とのマッピング正本は docs/03-implementation/vendure-seed-data.md の 「collectionMethod 決済ポリシー(汎用ポリシー運用)」節。 顧客向け表示名規約は docs/specifications/2026-03-payment-method-restrictions-by-collection-method.md を参照。 Dashboard ではコード側を 回収方法(SMILE)、名称側を 回収方法名(SMILE) と表示する。

運送会社(V(64)

コード 名称
0001 ゆうぱっく
0002 佐川急便
0004 ヤマト運輸

ヘッダー対応表

export/jutyu.txt(受注データ)

apps/vendure-server/tests/integration/fixtures/smile/export/jutyu.txt の内容に合わせ、受注CSVの項目と出力元を整理しています。
値の固定・上書きロジックは packages/plugins/src/system-integration/smile/spec/smile-order-columns.ts を正とします。

列名 値/役割 用語対応/備考
受注日付 order.orderPlacedAtyyyy/MM/dd
受注番号 order.code 末尾の数値(NetB2B_00100477100477 受注番号
注文明細の連番(1始まり)
得意先コード customer.customFields.customerCode(未設定時は顧客ID) 得意先コード(customerCode)
納品先コード 送り先種別により 0 または deliveryPointCode 得意先マスター住所は 0
納期 空文字(固定)
時間帯 99(固定)
商品コード line.productVariant.sku(未設定時はID) 商品番号(SKU)
数量 line.quantity
単価 line.customFields.setComponentUnitPrice があればそれを優先 セット商品分解時の単価上書きに対応
金額 単価上書きがあれば 単価×数量 / それ以外は line.proratedLinePrice
備考 最短日出荷(最短日出荷選択時) 日付指定時は注文備考をそのまま出力
担当番号 009999(固定)
担当部門番号 000999(固定)
売掛区分 1(固定)
金額印字 空文字(固定)
運送会社 空文字(固定)
運送代金 空文字(固定)
契約区分 空文字(固定)
課税区分 0(固定) 送料行は 9 を上書き
内消費税額 0(固定) 送料行は金額を上書き
出荷予定日 order.customFields.shippingDate または order.orderPlacedAt yyyy/MM/dd
引当数量 line.quantity
定価 line.productVariant.price(小数4桁固定)
代理注意 空文字(固定)
オーダ order.code オーダ識別子
備考1 空文字(固定)
備考2 空文字(固定)
備考3 空文字(固定)
備考4 空文字(固定)
消費税区分 1(固定)
摘要 行に適用された campaign の CommercialRule.code(未適用は空文字) 業務キャンペーンコード(行ごと。運用名「適用」)
摘要1 キャンペーン内容の説明文字列その1(未適用は空文字) 行ごと(運用名「適用1」)
摘要2 キャンペーン内容の説明文字列その2(未適用は空文字) 行ごと(運用名「適用2」)
ADV 空文字(固定)
memo 社販 ネット注文(固定)

受注CSVの納品先コード

  • 得意先マスターに記載されている住所へ送る注文では、納品先マスターを使用しない。受注CSVの 納品先コード0 を出力する。
  • 同じ請求先コード配下の他得意先のマスター住所へ送る場合も、その得意先宛のマスター住所として扱い、受注CSVの 納品先コード0 を出力する。
  • 納品先マスターに登録済みの住所へ送る注文では、受注CSVの 納品先コード に既存の Address.customFields.deliveryPointCode を出力する。
  • checkout で新規納品先住所を入力し、注文完了後に新規納品先として登録する場合は、採番済みの deliveryPointCode を受注CSVの 納品先コード に出力する。

送料行の上書き

  • 商品コード: 空文字 / 数量: 0 / 単価: 0 / 金額: 送料金額
  • 課税区分: 9 / 内消費税額: 送料金額 / 定価: 空

数量別単価の判定ルール(数量単価系)

数量単価系ファイル(suryou-tanka*.txt)は、 / 数量(上限) / 数量別単価 の組で段階単価を定義する。数量(上限) は排他的上限で、段階は x以上 y未満 として扱う。最終 sentinel 99999999 も排他的上限であり、価格計算・カート投入の最大数量は 99999998

数量(上限) 数量別単価 判定
1 23 3000 1〜22個は3000円
2 99999 2400 23〜99998個は2400円

列名の説明(共通・解釈できるもの)

以下はヘッダー名から意味が特定できるもののみを補足する。判断不能なものは無理に説明しない。

列名 説明
得意先コード 得意先コード(用語集の customerCode)
請求先コード 請求先コード(用語集の billingCustomerCode)
納品先コード 納品先コード(用語集の deliveryPointCode)
商品コード 商品番号(用語集の SKU)
単価マスター区分 単価マスタの区分
単価種類 単価の種類(適用単位の違い)
単価種別 単価の計算種別
単価 単価(金額)
単価掛率 単価に適用する掛率
単価変更日付 単価変更の基準日
変更後単価使用区分 変更後単価の適用可否区分
期間単価対象日付 期間単価の対象日
数量(上限) 段階単価の排他的上限数量
数量別単価 数量段階ごとの単価
郵便番号 郵便番号
住所1/住所2/住所3 住所情報
電話番号 電話番号
FAX番号 FAX番号
コード 運送会社コード(運送会社名 の直前列)
通貨コード 通貨コード
通貨略称 通貨の略称
標準売上単価 標準の売上単価
上代単価 上代(定価)単価
注文単位数量 注文の最小単位数量

単価種別の判定(単価マスタ)

実装は SmilePriceMasterService.findBestPriceForVariant (実装済み 2026-05)。 詳細フロー: docs/03-implementation/pricing/price-calculation.md の U3 セクション

単価種別 SMILEマスタ.xlsx 上の定義 本プロジェクト運用 実装ステータス
0 単価 単価 / 数量別単価 header をそのまま採用 (0 円も valid、SMILE 仕様) 実装済み
1 標準売上単価×掛率 ProductVariant.price × unitRate / 100 で算出 実装済み
2 標準仕入単価×掛率 import 時は SMILE コードとして保存する。販売価格への適用可否は価格計算時に判定 実装済み
3 上代単価×掛率 ProductVariant.customFields.smileListPrice × unitRate / 100 で算出 (smileListPrice は円単位) 実装済み
未指定 (header 欠落 / 旧 fixture) 0 と同じ扱い (suryou-tanka* 系には 単価種別 header が無いため legacy 互換) 実装済み

単価マスター区分の運用(単価マスタ)

  • 単価マスター区分は 0 固定。それ以外の値は考慮しない。

単価マスタの未使用ヘッダー

以下のヘッダーは使用しない。

  • 単価変更日付
  • 変更後単価使用区分
  • 期間単価対象日付
  • 変更後単価
  • 変更後単価掛率
  • 通貨コード
  • 通貨略称

価格適用の優先順位(顧客単体 vs 顧客分類)

  • 価格や顧客別設定は、顧客グループ(分類)よりも顧客単体を優先する。

import/tanka.txt(単価マスタ:掛率分類別)

列名 値/役割 用語対応
単価マスター区分 区分
単価マスター区分名 区分名
単価種類 種類
単価種類名 名称
取引先コード コード
取引先名 名称
売上掛率分類コード 掛率
売上掛率分類名 名称
商品コード コード SKU(商品番号)
商品名 名称
単価分類コード 単価
単価分類名 名称
単価種別 単価
単価種別名 名称
単価 単価
単価掛率 掛率
単価変更日付 未使用
変更後単価使用区分 未使用
期間単価対象日付 未使用
変更後単価 未使用
変更後単価掛率 未使用
通貨コード 未使用
通貨略称 未使用

import/suryou-tanka.txt(数量別単価マスタ:商品ごとの数量別価格)

列名 値/役割 用語対応
単価マスター区分 区分
単価マスター区分名 区分名
単価種類 種類
単価種類名 名称
取引先コード コード
取引先名 名称
売上掛率分類コード 掛率
売上掛率分類名 名称
商品コード コード SKU(商品番号)
商品名 名称
単価変更日付 単価
変更後単価使用区分 区分
期間単価対象日付 単価
単価区分 区分
単価区分名 区分名
未確認
数量(上限) 数量
数量別単価 単価
通貨コード コード
通貨略称 略称

import/suryou-tanka-tokuisaki.txt(数量別単価マスタ顧客先別:顧客単体の数量別価格)

列名 値/役割 用語対応
単価マスター区分 区分
単価マスター区分名 区分名
単価種類 種類
単価種類名 名称
取引先コード コード
取引先名 名称
売上掛率分類コード 掛率
売上掛率分類名 名称
商品コード コード SKU(商品番号)
商品名 名称
単価変更日付 単価
変更後単価使用区分 区分
期間単価対象日付 単価
単価区分 区分
単価区分名 区分名
未確認
数量(上限) 数量
数量別単価 単価
通貨コード コード
通貨略称 略称

import/suryou-tanka-bunrui.txt(数量別単価マスタ分類別:顧客分類(グループ)ごとの数量別価格)

列名 値/役割 用語対応
単価マスター区分 区分
単価マスター区分名 区分名
単価種類 種類
単価種類名 名称
取引先コード コード
取引先名 名称
売上掛率分類コード 掛率
売上掛率分類名 名称
商品コード コード SKU(商品番号)
商品名 名称
単価変更日付 単価
変更後単価使用区分 区分
期間単価対象日付 単価
単価区分 区分
単価区分名 区分名
未確認
数量(上限) 数量
数量別単価 単価
通貨コード コード
通貨略称 略称

import/tokuisaki.csv(得意先マスタ)

列名 値/役割 用語対応
得意先コード コード customerCode(得意先コード)
得意先名 名称
売上掛率分類コード コード salesRateClassCode(= SMILE 内部の 得意先分類0コード。本プロジェクトではスロット 0 に「売上掛率分類」という運用名を付与)
売上掛率分類名 名称 salesRateClassName
得意先分類1コード コード 未使用枠(運用名未設定のため内部名称のまま現れる)。Vendure へは取り込まない
得意先分類1名 名称 未使用枠
地区Noコード コード
地区No名 名称
特別分類コード コード
特別分類名 名称
担当ADVコード コード
担当ADV名 名称
重複得意先コード コード
重複得意先名 名称
得意先分類6コード コード 未使用枠
得意先分類6名 名称 未使用枠
得意先分類7コード コード 未使用枠
得意先分類7名 名称 未使用枠
導入状況コード コード
導入状況名 名称
金融機関コード コード
金融機関名 名称
納品先コード コード deliveryPointCode(納品先コード)
納品先名 名称
納品先索引 索引
荷受け人名1 未確認
荷受け人名2 未確認
郵便番号 郵便番号
住所1 住所
住所2 住所
住所3 住所
カスタマバーコード コード
電話番号 電話番号
FAX番号 FAX番号
マスター検索表示区分 区分
マスター検索表示区分名 区分名
有効期間開始日 未確認
有効期間終了日 未確認

補足(得意先インポート)

  • 顧客の表示名は 得意先名(または 得意先名1/2)から作成して Customer.title/lastName に反映する。
  • 請求先コード が無い/空の場合でも、billingCustomerCode = customerCode として補完し「親(HEAD)」扱いにできるようにする。
  • 売上掛率分類は CustomerGroupに同期せずsalesRateClassCode は Customer の独立フィールドとして保持する。得意先CSV import で salesRateClassCode / salesRateClassName が来た場合は ritsubi_smile_sales_rate_class に upsert し、未登録 code は作成、既存 code は name 更新する。Customer の salesRateClassName は得意先CSV由来の snapshot / 補助表示で、表示正本にはしない。
  • salesRateClassCode は掛率ルール(CommercialRule)の顧客条件として直接使える。詳細は docs/03-implementation/vendure-plugins/pricing-system.md の「売上掛率分類コードによる顧客ターゲット指定」を参照。
  • 住所は 納品先コード(= deliveryPointCode)をキーにupsertし、空/0 の場合は defaultBillingAddress をフォールバックとして更新する。

import/tanka.csv / suryou-tanka*.txt(単価マスタ)

  • tanka.csv / suryou-tanka.txt / suryou-tanka-tokuisaki.txt / suryou-tanka-bunrui.txtritsubi_smile_price_master へ正規化して取り込む。
  • 単価種類=1 は商品別、単価種類=2 は得意先別商品、単価種類=3 は得意先分類別商品として扱う。
  • 価格計算時は 得意先別商品 > 得意先分類別商品 > 商品別 の順で、商品コードと数量上限の最小一致レンジを選ぶ。
  • 売上掛率分類コード(例: 7040)は CustomerGroup へ同期せず、Customer の salesRateClassCode と単価マスタの参照キーとして使う。単価マスタ import で 売上掛率分類コード / 売上掛率分類名 が来た場合は ritsubi_smile_sales_rate_class へ upsert し、未登録 code は作成、既存 code は name 更新する。単価マスタ行側の名称は import 時点の snapshot として残す。

export/nouhinsaki.txt(納品先マスタ)

apps/vendure-server/tests/integration/fixtures/smile/export/nouhinsaki.txt の内容に合わせ、納品先CSVの項目のみ整理しています。

納品先CSVは、登録済みの場所ではない場所へ送る注文で、checkout から新規納品先住所を登録した場合のみ出力する。得意先マスター住所へ送る場合、または既に納品先マスターへ登録済みの住所へ送る場合は、新規納品先CSVを出力しない。

列名 値/役割 用語対応
荷受人名1 名称
納品先コード コード deliveryPointCode(納品先コード)
郵便番号 郵便番号
住所1 住所
住所2 住所
住所3 住所
電話番号 電話番号
得意先コード コード customerCode(得意先コード)
担当者コード コード
担当者名 名称
ブロックコード コード
ブロック名 名称
形態コード コード
形態名 名称
職種コード コード
職種名 名称
担当者分類3コード コード
担当者分類3名 名称
担当者分類4コード コード
担当者分類4名 名称
担当者分類5コード コード
担当者分類5名 名称
担当者分類6コード コード
担当者分類6名 名称
担当者分類7コード コード
担当者分類7名 名称
担当者分類8コード コード
担当者分類8名 名称
担当者分類9コード コード
担当者分類9名 名称
締日1 未確認
締日2 未確認
締日3 未確認
入金日1 未確認
入金日2 未確認
入金日3 未確認
入金サイクル1 未確認
入金サイクル名1 未確認
入金サイクル2 未確認
入金サイクル名2 未確認
入金サイクル3 未確認
入金サイクル名3 未確認
入金条件1 未確認
入金条件名1 未確認
入金条件2 未確認
入金条件名2 未確認
入金条件3 未確認
入金条件名3 未確認
与信限度額 未確認
単価掛率区分 区分
単価掛率区分名 区分名
単価掛率 掛率
単価ランク 単価
単価処理区分 区分
単価処理区分名 区分名
単価処理単位 単価
金額処理区分 区分
金額処理区分名 区分名
課税対象区分 区分
課税対象区分名 区分名
売上単価設定区分 区分
売上単価設定区分名 区分名
消費税通知区分 区分
消費税通知区分名 区分名
消費税計算区分 区分
消費税計算区分名 区分名
消費税計算単位 未確認
消費税分解区分 区分
消費税分解区分名 区分名
請求書出力タイプ 未確認
請求書出力タイプ名 名称
請求書出力形式 未確認
請求書出力形式名 名称
得意先台帳出力形式 未確認
得意先台帳出力形式名 名称
請求消費税算出単位 未確認
請求消費税算出単位名 名称
回収管理区分 区分
回収管理区分名 区分名
回収管理単位 未確認
回収管理単位名 名称
期首売掛残高 未確認
前回請求残高 未確認
相殺仕入先コード コード
相殺仕入先名 名称
日付印字区分 区分
日付印字区分名 区分名
相手先担当者名 名称
取引 未確認
取引名 名称
マスター検索表示区分 区分
マスター検索表示区分名 区分名
売上伝票出力区分 区分
売上伝票出力区分名 区分名
変換コード売上伝票出力区分 区分
変換コード売上伝票出力区分名 区分名
変換コード見積書出力区分 区分
変換コード見積書出力区分名 区分名
変換コード請求書出力区分 区分
変換コード請求書出力区分名 区分名
入力処理モード 未確認
入力処理モード名 名称
個別設定入力行数 未確認
契約区分 区分
契約区分 区分
運送代金 未確認
運送代金 未確認
金額印字 未確認
金額印字 未確認
回収方法 未確認
回収方法 未確認
得意先Mail 未確認
代表者名 名称
郵便番号 郵便番号
住所1 住所
住所2 住所
電話番号 電話番号
伝票等敬称 未確認
敬称 未確認
コード コード
運送会社名 名称
FAX番号 FAX番号
請求書回収方法 未確認
請求書回収方法 未確認
ADV番号 番号
ADV名 名称
代理注意 未確認
備考1 未確認
備考2 未確認
備考3 未確認
請求備考 未確認
売上日付区分(出荷) 日付
売上日付区分名(出荷) 日付
指定請求書使用区分 区分
指定請求書使用区分名 区分名
指定請求書番号 番号
指定請求書番号2 番号
マスター連携区分 区分
マスター連携区分名 区分名
EB入金手数料区分 区分
EB入金手数料区分名 区分名
EB入金手数料算出方法 未確認
EB入金手数料算出方法名 名称
EB入金回収消込方法 未確認
EB入金回収消込方法名 名称
有効期間開始日 未確認
有効期間終了日 未確認
売上検収区分 区分
売上検収区分名 区分名
出荷伝票出力区分 区分
出荷伝票出力区分名 区分名
変換コード出荷伝票出力区分 区分
変換コード出荷伝票出力区分名 区分名
複数回収設定 未確認
複数回収設定名 名称
回収設定切替額 未確認
回収設定方法1 未確認
回収設定方法名1 未確認
回収設定1 入金区分1 未確認
回収設定1 入金区分名1 未確認
回収設定1 入金率1 未確認
回収設定1 入金区分2 未確認
回収設定1 入金区分名2 未確認
回収設定1 入金率2 未確認
回収設定1 入金区分3 未確認
回収設定1 入金区分名3 未確認
回収設定1 入金率3 未確認
回収設定1 入金区分4 未確認
回収設定1 入金区分名4 未確認
回収設定1 入金率4 未確認
回収設定1 単位額設定 入金方法1 未確認
回収設定1 単位額設定 入金方法名1 未確認
回収設定1 単位額設定 基準単位額 未確認
回収設定1 単位額設定 入金方法2 未確認
回収設定1 単位額設定 入金方法名2 未確認
回収設定1 基準額設定 入金方法1 未確認
回収設定1 基準額設定 入金方法名1 未確認
回収設定1 基準額設定 基準額 未確認
回収設定1 基準額設定 基準額判断区分 区分
回収設定1 基準額設定 基準額判断区分名 区分名
回収設定1 基準額設定 入金方法2 未確認
回収設定1 基準額設定 入金方法名2 未確認
回収設定方法2 未確認
回収設定方法名2 未確認
回収設定2 入金区分1 未確認
回収設定2 入金区分名1 未確認
回収設定2 入金率1 未確認
回収設定2 入金区分2 未確認
回収設定2 入金区分名2 未確認
回収設定2 入金率2 未確認
回収設定2 入金区分3 未確認
回収設定2 入金区分名3 未確認
回収設定2 入金率3 未確認
回収設定2 入金区分4 未確認
回収設定2 入金区分名4 未確認
回収設定2 入金率4 未確認
回収設定2 単位額設定 入金方法1 未確認
回収設定2 単位額設定 入金方法名1 未確認
回収設定2 単位額設定 基準単位額 未確認
回収設定2 単位額設定 入金方法2 未確認
回収設定2 単位額設定 入金方法名2 未確認
回収設定2 基準額設定 入金方法1 未確認
回収設定2 基準額設定 入金方法名1 未確認
回収設定2 基準額設定 基準額 未確認
回収設定2 基準額設定 基準額判断区分 区分
回収設定2 基準額設定 基準額判断区分名 区分名
回収設定2 基準額設定 入金方法2 未確認
回収設定2 基準額設定 入金方法名2 未確認
取引パターン 未確認
取引パターン名 名称
販売外貨取引区分 区分
販売外貨取引区分名 区分名
通貨コード コード
通貨略称 略称
期首売掛残高(外貨) 未確認
初期表示レート種類 種類
初期表示レート種類名 名称
外貨入金サイクル 未確認
法人番号 番号
登録番号売上伝票出力 番号
登録番号売上伝票出力名 名称
登録番号請求書出力 番号
登録番号請求書出力名 名称
自社負担手数料入金後売上値引 未確認
自社負担手数料入金後売上値引名 名称

import/shouhin.csv(商品マスタ)

列名 値/役割 用語対応
商品コード コード SKU(商品番号)
商品名 名称
標準売上単価 単価 通常の顧客向け卸価格(ベース)
上代単価 単価 一般販売価格(希望小売価格相当)
部門コード コード
部門名 名称
用途コード コード
用途名 名称
非課税区分 フラグ 0:課税商品 1:非課税商品1 の行は 消費税率区分 を見ずに SMILE 非課税フラグ (TaxCategory.customFields.smileTaxExempt=true) の税カテゴリへ割り当てる
消費税率区分 区分 Vendure Dashboard の税カテゴリ詳細にある SMILE 消費税率区分 (TaxCategory.customFields.smileTaxRateCategoryCode) と一致照合して TaxCategory へ対応付ける。1:標準税率10% / 2:軽減税率8% は設定例であり、import 実装は固定分岐しない。非課税区分=1 の行ではこの列を読まない
新税率 税率 監査用に raw 取込データへ保持し、税計算の正本にはしない
正式品名 名称
規格 未確認
注文単位数量 数量