# Billink 請求書テンプレート 作成ガイド

自社の Excel テンプレート (.xlsx) をアップロードすると、Billink がそのテンプレに会社情報・取引先名・明細・印鑑を自動で埋め込んで出力します。「請求書ごとに手で入力していた項目」を消すのが目的です。

---

## 仕組み

1. ユーザがテンプレ .xlsx をアップロード → Supabase Storage の `invoice-templates/{org_id}/template.xlsx` に保存
2. Billink が請求書 Excel 出力時にそのテンプレを取得
3. テンプレ内の **プレースホルダ** を実データで置換 → .xlsx として書き出し

書式・罫線・色・セル結合・印刷範囲などの **設定はテンプレ側のものがそのまま維持** されます。

---

## プレースホルダ一覧

セルの中に下記の文字列を書いておくと、エクスポート時に対応する値で置換されます。

### 会社情報（自社）

| プレースホルダ | 置換される値 | 例 |
|---|---|---|
| `{{company_name}}` | organizations.company_name | 株式会社LETIZIA |
| `{{legal_form}}` | organizations.legal_form | 株式会社 |
| `{{address}}` | organizations.address | 東京都新宿区... |
| `{{phone}}` | organizations.phone | 03-1234-5678 |
| `{{rep_name}}` | organizations.rep_name | 山田 太郎 |
| `{{bank}}` | organizations.bank_info | 〇〇銀行 普通 1234567 |

### 請求書メタデータ

| プレースホルダ | 値 | 例 |
|---|---|---|
| `{{invoice_no}}` | 発行番号 (Billink が自動生成) | INV-202605-A586888E |
| `{{invoice_date}}` | 発行日 | 2026-05-11 |
| `{{client_name}}` | clients.name | 株式会社〇〇 |
| `{{period_start}}` | 対象期間 開始 | 2026-04-21 |
| `{{period_end}}` | 対象期間 終了 | 2026-05-20 |

### 金額

| プレースホルダ | 値 |
|---|---|
| `{{subtotal}}` | 小計（税抜） |
| `{{tax}}` | 消費税 |
| `{{total}}` | 合計（税込） |

数値のみのセルになる場合、自動的に number 型として書き出されるので Excel 内で SUM 等の式は問題なく動きます。

### 明細行（items）

明細を出したい行に、以下のプレースホルダを **1 行内のセルに並べて** 書いてください。その行が「テンプレート行」になり、Billink が請求項目の数だけその行を複製します。

| プレースホルダ | 値 | 例 |
|---|---|---|
| `{{item_date}}` | invoice_items.item_date | 2026-05-01 |
| `{{item_name}}` | invoice_items.item_name | デスク |
| `{{quantity}}` | invoice_items.quantity | 3 |
| `{{unit}}` | invoice_items.unit | 個 |
| `{{unit_price}}` | invoice_items.unit_price | 12000 |
| `{{amount}}` | invoice_items.amount | 36000 |

**テンプレ行の例:**
```
| {{item_date}} | {{item_name}} | {{quantity}} | {{unit}} | {{unit_price}} | {{amount}} |
```

**実行後:**
```
| 2026-05-01 | デスク     | 3 | 個 | 12,000 | 36,000 |
| 2026-05-02 | チェア     | 5 | 個 |  8,000 | 40,000 |
| 2026-05-03 | キャビネット | 2 | 個 | 25,000 | 50,000 |
```

書式（罫線・背景色・フォント）はテンプレ行のものが各複製行にも反映されます。

### 印鑑（{{seal}}）

印鑑を貼りたいセルに **`{{seal}}` 単独** で書いてください。エクスポート時、そのセルの位置に `organizations.seal_url` に保存されている PNG 印鑑画像が貼り付けられます。

セルのサイズで貼付サイズが決まります。印鑑をしっかり目立たせたいセルは **行高 60pt × 列幅 12** くらいを目安に。

---

## 制約・注意事項

- **シートは1枚目のみ** が対象です。複数シートあっても 1 枚目しか触りません。
- **数式セル** に `{{...}}` を埋めても置換されません。数式は数式のまま残ります。
- **プレースホルダは半角の波括弧 2 個** で囲んでください。`｛｛...｝｝`（全角）は認識しません。
- **明細行のテンプレ位置** はシート内の **最初に見つかった item_* 系プレースホルダを含む行** が採用されます。複数行に分けて書くのは未対応です。
- **セル結合**: テンプレ行を結合セルにすると行クローン時に書式が崩れる可能性があります。明細行は結合を避けてください。

---

## サンプル

最小サンプル (.xlsx に貼り付け):

```
┌─────────────────────────────────────────────────────────────┐
│ 請 求 書                                                    │
│                                                             │
│ 発行日: {{invoice_date}}        No. {{invoice_no}}          │
│                                                             │
│ {{client_name}} 御中                                        │
│                                                             │
│ 下記のとおりご請求申し上げます。                            │
│                                                             │
│ ─────────────────────────────────────────────────────────── │
│ 日付        │ 品名        │ 数量 │ 単位 │ 単価     │ 金額    │
│ {{item_date}} │ {{item_name}} │ {{quantity}} │ {{unit}} │ {{unit_price}} │ {{amount}} │
│ ─────────────────────────────────────────────────────────── │
│                                       小計  {{subtotal}}    │
│                                       消費税 {{tax}}        │
│                                       合計  {{total}}       │
│                                                             │
│  {{company_name}}                                  ┌─────┐ │
│  {{address}}                                       │{{seal}}│ │
│  Tel: {{phone}}                                    └─────┘ │
│  振込先: {{bank}}                                           │
└─────────────────────────────────────────────────────────────┘
```

---

## トラブルシューティング

| 症状 | 確認 |
|---|---|
| 値が置換されず `{{xxx}}` のまま | プレースホルダが半角の `{{` `}}` か / セル内に他の文字と一緒に書いていないか |
| 明細が 1 行しか出ない | item_* プレースホルダが 1 つの行にまとまっているか |
| 印鑑が出ない | `{{seal}}` セルが完全に単独か / 設定で印鑑が登録されているか |
| アップロードで 400 エラー | .xlsx 形式か / 10MB 以下か |
| 「テンプレ取得失敗」 | Storage 上の `invoice-templates/{org_id}/template.xlsx` が削除されていないか |

設定 → 📄 請求書テンプレート → 削除して組み込みに戻す、で標準レイアウトに戻せます。
