# 受注書請求項目の税区分対応完了レポート

## 概要
受注書の請求項目で顧客の税区分設定（内税｜外税）に応じて表示を変更する機能を実装しました。

## 修正内容

### 1. 受注書印刷機能の修正

#### 1.1 顧客税区分取得機能の追加
**ファイル**: `includes/class-kantan-order.php`
- 受注書IDから顧客の税区分を取得する関数 `get_client_tax_category()` を追加
- デフォルト値は「内税」に設定

```php
private function get_client_tax_category( $order_id ) {
    global $wpdb;
    
    // 受注書から顧客IDを取得
    $order_table = $wpdb->prefix . 'ktp_order';
    $order = $wpdb->get_row(
        $wpdb->prepare(
            "SELECT client_id FROM {$order_table} WHERE id = %d",
            $order_id
        )
    );
    
    if ( ! $order || ! $order->client_id ) {
        return '内税'; // デフォルト値
    }
    
    // 顧客テーブルから税区分を取得
    $client_table = $wpdb->prefix . 'ktp_client';
    $client = $wpdb->get_row(
        $wpdb->prepare(
            "SELECT tax_category FROM {$client_table} WHERE id = %d",
            $order->client_id
        )
    );
    
    if ( ! $client ) {
        return '内税'; // デフォルト値
    }
    
    return $client->tax_category ?: '内税';
}
```

#### 1.2 印刷プレビュー機能の修正
**ファイル**: `includes/class-kantan-order.php`
- `Generate_Invoice_Items_For_Preview()` 関数で顧客の税区分を取得
- 税区分に応じた消費税計算ロジックの実装
- 税区分に応じた表示テキストの変更

**消費税計算ロジック**:
- 外税の場合：税抜金額から税額を計算
- 内税の場合：税込金額から税額を計算

**表示テキスト**:
- 外税の場合：「外税合計」「消費税」「内税合計」
- 内税の場合：「金額合計 ¥27,940（内税 ¥2,353）」

#### 1.3 メール送信機能の修正
**ファイル**: `includes/class-ktpwp-ajax.php`
- `ajax_get_email_content()` 関数で顧客の税区分を取得
- 税区分に応じた消費税計算と表示の修正

### 2. 消費税計算ロジックの統一

#### 2.1 外税表示の場合
```php
// 外税表示の場合：税抜金額から税額を計算
$tax_amount = ceil( $item_amount * ( $tax_rate / 100 ) );
```

#### 2.2 内税表示の場合
```php
// 内税表示の場合：税込金額から税額を計算
$tax_amount = ceil( $item_amount * ( $tax_rate / 100 ) / ( 1 + $tax_rate / 100 ) );
```

### 3. 表示テキストの統一

#### 3.1 外税表示
- 合計金額：「外税合計」
- 消費税：「消費税」
- 税込合計：「内税合計」

#### 3.2 内税表示（修正後）
- 合計金額：「金額合計 ¥27,940（内税 ¥2,353）」
- 消費税：非表示
- 税込合計：非表示

### 4. 対応箇所

1. **受注書印刷プレビュー**
   - 1ページ目のヘッダー表示
   - 最後のページの合計表示

2. **メール送信機能**
   - 請求項目リストの合計表示

3. **旧形式データ対応**
   - JSONデータ（旧形式）の消費税計算と表示

### 5. 内税表示の修正（2025年1月31日追加）

#### 5.1 修正前
```
請求項目（1/1p）　内税合計 ¥27,940　消費税 ¥2,353
```

#### 5.2 修正後
```
請求項目（1/1p）　金額合計 ¥27,940（内税 ¥2,353）
```

#### 5.3 修正箇所
- 印刷プレビューの1ページ目ヘッダー
- 印刷プレビューの最後のページ合計表示
- メール送信機能の合計表示
- 旧形式データ（JSON）の合計表示

## 動作確認項目

### 1. 印刷機能の確認
- [ ] 内税顧客の受注書印刷で「金額合計 ¥27,940（内税 ¥2,353）」が表示される
- [ ] 外税顧客の受注書印刷で「外税合計」「消費税」「内税合計」が表示される
- [ ] 消費税計算が税区分に応じて正しく行われる

### 2. メール送信機能の確認
- [ ] 内税顧客のメールで「金額合計：27,940円（内税：2,353円）」が表示される
- [ ] 外税顧客のメールで「外税合計」「消費税」「内税合計」が表示される
- [ ] メール本文の消費税計算が正しく行われる

### 3. 既存機能への影響確認
- [ ] 一括請求書発行機能が正常に動作する
- [ ] 個別請求書機能が正常に動作する
- [ ] 請求項目の編集機能が正常に動作する

## 技術的な考慮事項

### 1. デフォルト値の設定
- 顧客データが取得できない場合は「内税」をデフォルト値として使用
- 後方互換性を保つため、既存の動作に影響を与えない

### 2. 消費税計算の精度
- 切り上げ処理（`ceil()`）を使用して消費税を計算
- 浮動小数点数の誤差を考慮した計算ロジック

### 3. データベースアクセス
- 必要な場合のみ顧客テーブルにアクセス
- パフォーマンスを考慮したクエリ設計

### 4. 表示の簡素化
- 内税の場合は消費税を括弧内に表示し、別行での表示を廃止
- より簡潔で分かりやすい表示形式を採用

## 完了日時
2025年1月31日

## 備考
- 既存の一括請求書発行機能との整合性を保つため、同じ税区分判定ロジックを使用
- 顧客の税区分設定が変更された場合、既存の受注書の表示も自動的に更新される
- 印刷機能とメール送信機能で一貫した表示を実現
- 内税表示の簡素化により、より分かりやすい表示形式を実現 