Normal #11188
# Booking.com大人/こども売上科目 対応状況
## 経緯
「室料区分」で大人/こども別の売上科目が反映されない不具合を調査。
原因:「室料区分」の予約は部屋単位の合計金額のみ、人数別単価なしで連携されており、
既存の「人数区分」ロジックでは大人/こども別の項目が生成されないため。
## Phase1(応急処置):対応済み・テスト完了
- 客室単価(室料区分)の予約でも、朝食等の項目を人数基準(大人・こども区別なし)で按分計上するよう `sales.php` を修正
- ステージング環境で以下を確認済み
- 人数按分の計算が正しいこと(合計金額が予約総額と一致)
- 人数0件時のガード(0除算なし)
- 複数泊時の翌日計上を含めた計算
- 既存の人数区分(PersonalRate)予約への影響がないこと(回帰なし)
- 朝食等の紐付けが未設定の既存プランでの後方互換維持
- 制限事項:大人/こどもを区別した単価設定はできず、合計人数での一律按分のみ
## Phase2(本対応):設計中
### 画面イメージ
| プランID | プラン名 | 料金タイプ | OTA | 施設名 |
|---|---|---|---|---|
| - | - | 人数区分 / 室料区分(ラジオボタン、デフォルト:人数区分) | - | - |
**人数区分選択時**(既存とほぼ同じ、客室単価列は削除)
| 大人 | こどもA | こどもB | こどもC | こどもD | こどもその他 | (+カラム追加) |
|---|---|---|---|---|---|---|
**室料区分選択時**(新規UI)
| 宿泊費(+追加) | 大人 | こどもA | こどもB | こどもC | こどもD | こどもその他 | (+カラム追加) |
|---|---|---|---|---|---|---|---|
| 数量1固定、残額を吸収 | 夕食/朝食/昼食/追加を人数分按分で計上 | 同左 | 同左 | 同左 | 同左 | 同左 | |
### 主な設計方針
- **財布共有**:予約の合計金額(TotalPerRoomRate)は絶対に変わらない。可変(残額)項目は「宿泊費」1つのみ、それ以外は全て固定額(項目数制限なし)
- **判定基準**:予約ごとの計算は、プラン側の設定ではなくOTAから届く実際のデータ(室料区分/人数区分)を優先
- **ガード**:固定額合計が総額を超えて宿泊費がマイナスになるケースは、既存の人数区分側にも同様の可能性があるため、現時点ではガードなしで統一(必要になれば後日追加)
- **想定外のケースへの対応**:プラン設定と実際の予約データの区分が食い違った場合(例:室料区分プランに人数区分予約が来た等)は、既存の「その他プラン」へのフォールバック機構で吸収する
- **既存プランの移行**:全既存プランはデフォルトで「人数区分」扱い。従来「客室単価」の「宿泊」に設定されていたものは新方式の「宿泊費」にそのまま引き継ぎ、「客室単価」の「朝食」等は一旦無視(Phase1の設定は使われなくなる)
## 次のステップ
- Phase2の詳細実装(DBスキーマ変更、画面改修、`sales.php`のロジック拡張)
## 経緯
「室料区分」で大人/こども別の売上科目が反映されない不具合を調査。
原因:「室料区分」の予約は部屋単位の合計金額のみ、人数別単価なしで連携されており、
既存の「人数区分」ロジックでは大人/こども別の項目が生成されないため。
## Phase1(応急処置):対応済み・テスト完了
- 客室単価(室料区分)の予約でも、朝食等の項目を人数基準(大人・こども区別なし)で按分計上するよう `sales.php` を修正
- ステージング環境で以下を確認済み
- 人数按分の計算が正しいこと(合計金額が予約総額と一致)
- 人数0件時のガード(0除算なし)
- 複数泊時の翌日計上を含めた計算
- 既存の人数区分(PersonalRate)予約への影響がないこと(回帰なし)
- 朝食等の紐付けが未設定の既存プランでの後方互換維持
- 制限事項:大人/こどもを区別した単価設定はできず、合計人数での一律按分のみ
## Phase2(本対応):設計中
### 画面イメージ
| プランID | プラン名 | 料金タイプ | OTA | 施設名 |
|---|---|---|---|---|
| - | - | 人数区分 / 室料区分(ラジオボタン、デフォルト:人数区分) | - | - |
**人数区分選択時**(既存とほぼ同じ、客室単価列は削除)
| 大人 | こどもA | こどもB | こどもC | こどもD | こどもその他 | (+カラム追加) |
|---|---|---|---|---|---|---|
**室料区分選択時**(新規UI)
| 宿泊費(+追加) | 大人 | こどもA | こどもB | こどもC | こどもD | こどもその他 | (+カラム追加) |
|---|---|---|---|---|---|---|---|
| 数量1固定、残額を吸収 | 夕食/朝食/昼食/追加を人数分按分で計上 | 同左 | 同左 | 同左 | 同左 | 同左 | |
### 主な設計方針
- **財布共有**:予約の合計金額(TotalPerRoomRate)は絶対に変わらない。可変(残額)項目は「宿泊費」1つのみ、それ以外は全て固定額(項目数制限なし)
- **判定基準**:予約ごとの計算は、プラン側の設定ではなくOTAから届く実際のデータ(室料区分/人数区分)を優先
- **ガード**:固定額合計が総額を超えて宿泊費がマイナスになるケースは、既存の人数区分側にも同様の可能性があるため、現時点ではガードなしで統一(必要になれば後日追加)
- **想定外のケースへの対応**:プラン設定と実際の予約データの区分が食い違った場合(例:室料区分プランに人数区分予約が来た等)は、既存の「その他プラン」へのフォールバック機構で吸収する
- **既存プランの移行**:全既存プランはデフォルトで「人数区分」扱い。従来「客室単価」の「宿泊」に設定されていたものは新方式の「宿泊費」にそのまま引き継ぎ、「客室単価」の「朝食」等は一旦無視(Phase1の設定は使われなくなる)
## 次のステップ
- Phase2の詳細実装(DBスキーマ変更、画面改修、`sales.php`のロジック拡張)