# サービス税率NULL許可実装完了

## 概要
サービステーブルで税率（tax_rate）カラムにNULL値を許可する機能を実装しました。これにより、非課税のサービスを適切に管理できるようになります。

## 実装内容

### 1. データベース構造の変更

#### マイグレーションファイル
- `includes/migrations/20250131_add_tax_rate_to_service.php`
  - サービステーブルに`tax_rate`カラムを追加
  - NULL値を許可する設定
  - 既存レコードにデフォルト税率（10%）を設定

#### テーブル作成時の修正
- `includes/class-ktpwp-service-db.php`
  - `create_table`メソッドで`tax_rate`カラムを追加
  - NULL値を許可する設定

### 2. データ処理の修正

#### 更新処理
- `update_table`メソッドで税率の処理を修正
- 空文字列の場合はNULLとして保存
- 数値の場合は適切に変換

#### 新規作成処理
- `handle_new_service`メソッドで税率の処理を修正
- NULL値を適切に処理

#### 複製処理
- `handle_duplicate_service`メソッドで税率を複製対象に追加

### 3. UI表示の修正

#### フォーム表示
- `includes/class-tab-service.php`
  - 税率フィールドのプレースホルダーを「税率（%）空白で非課税」に変更
  - NULL値の場合は空文字列として表示

#### リスト表示
- 税率がNULLの場合は「非課税」と表示
- 税率が設定されている場合は「X%」と表示

#### プレビュー表示
- 税率がNULLの場合は「非課税」と表示
- 税率が設定されている場合は「X%」と表示

### 4. JavaScript処理の修正

#### サービスセレクター
- `js/ktp-service-selector.js`
  - 税率がNULLの場合は空文字列として表示
  - 税率の保存時にNULL値を適切に処理
  - リスト表示でNULL値の場合は「非課税」と表示

## 使用方法

### 1. マイグレーションの実行
```bash
php test_service_tax_rate_migration.php
```

### 2. サービスの登録・編集
1. サービスタブにアクセス
2. 新規作成または既存サービスを編集
3. 税率フィールドを空白にすると非課税として登録
4. 税率を入力すると課税として登録

### 3. 表示確認
- リスト表示で税率が「非課税」または「X%」として表示
- プレビューで税率が適切に表示
- 請求書作成時に税率が正しく反映

## 技術仕様

### データベース
- カラム名: `tax_rate`
- 型: `DECIMAL(5,2)`
- NULL許可: `YES`
- デフォルト値: `NULL`

### 処理ロジック
- 空文字列 → NULL（非課税）
- 数値 → そのまま保存（課税）
- NULL → 非課税として表示

### 表示形式
- NULL値: 「非課税」
- 数値: 「X%」（Xは税率）

## テスト

### テストファイル
- `test_service_tax_rate_migration.php`
  - マイグレーションの実行確認
  - カラム構造の確認
  - 既存データの確認

### テスト項目
1. マイグレーション実行
2. 新規サービス作成（税率NULL）
3. 新規サービス作成（税率設定）
4. 既存サービス編集
5. サービス複製
6. リスト表示確認
7. プレビュー表示確認

## 注意事項

1. **既存データ**: マイグレーション実行時に既存レコードにデフォルト税率（10%）が設定されます
2. **互換性**: 既存の機能との互換性を維持しています
3. **表示**: 税率がNULLの場合は「非課税」として表示されます
4. **計算**: 税率がNULLの場合は税額計算で0%として扱われます

## 今後の拡張

1. **税率カテゴリー**: 軽減税率などの複数税率対応
2. **税率履歴**: 税率変更の履歴管理
3. **税率設定**: システム全体での税率設定機能

## 実装完了日
2025年1月31日 