Normal #11565
ファミマ決済が100円のみ課金された-ぼたん荘-とがし様(予約ID:2513)
Status:
End/終了
Priority:
High/高
Assignee:
-
Description
【問い合わせ内容】
ぼたん荘(r0432) 10/3チェックインのとがし様予約で、宿泊金額7,920円のところファミマ決済で100円しか支払われていない、とスマートフロント様より問い合わせあり。
【対象予約】
- 施設: ぼたん荘(r0432)
- work_check_in.id: 2513
- mujinn_no: 423340
- プラン: 【特別優待プラン】期間限定スペシャルプライス|天然温泉完備の南紀月の瀬温泉ぼたん荘<素泊り> (plan_id=4)
- familymartec.id: 1787 (receipt_no: 20020-801744165473)
【調査結果・原因】
本予約は managersite「部屋割り確認」からの「ダイレクト予約」機能(reservationlist.php action_create)で作成されたもの。
- 予約作成時、action_create() 内の insertSalesData() が売上単価を常に plan_item_map / sales_item.default_price から自動設定する実装になっている。plan_id=4のマスタ単価は大人・こども・客室単価のいずれも「100円」になっており、これがそのまま売上(sales)として登録された(2026-10-01 12:02:39)。
- チェックイン日が7日以内だったため、同一リクエスト内で Util_FamilyMartEC->run() が即時実行され、その時点の discount_total_accommodation_charge(=100円)でファミマ(FamiPort)へ請求登録が行われた(familymartec作成 12:02:41、受付番号発行)。
- 担当者(d.chiaki)が保存後の予約詳細画面で金額の誤りに気づき、action_update_sales() で売上単価を100円→7,920円へ修正(12:03:09、作成から約30秒後)。
- しかし action_update_sales() は updateWorkCheckInByIdFromSalesAndPayments() で社内の金額表示(total_accommodation_charge等)のみ更新し、ファミマ(FamiPort)への再登録・再送信は一切行わない。
- 結果、FamiPort側には最初の100円のままの請求データが残存し、同日19:39にお客様がファミリーマートで決済した際は100円のみが課金された。
- 決済通知受信処理(controller/api/famiport/payment.php reflectPayments)により、discount_total_accommodation_chargeは正しく 7,920円 → 7,820円(7920-100) に更新されており、システム側の未収金額の把握自体は正しい。
【根本原因のまとめ】
(1) plan_id=4のマスタ単価が実勢価格と合っておらず100円のままになっている(スポット/電話予約用の仮単価と思われる)
(2) ダイレクト予約作成直後(7日以内チェックインの場合)に即時ファミマ請求登録が走る一方、事後に売上金額を修正してもファミマ側への再登録が行われない仕組みになっている
【対応方針(案)】
- 残額7,820円を別途回収する対応(フロント/営業側で調整)
- plan_id=4のマスタ単価見直し、またはダイレクト予約時に単価を手動入力できるようにする
- sales修正時、ファミマ未収(未決済)であれば自動でファミマへ再登録する仕組みを追加する、あるいは登録済みの場合は警告を出す
関連コード:
- fuel/app/classes/controller/managersite/reservationlist.php (insertSalesData, action_create, action_update_sales)
- fuel/app/classes/util/reservation.php (updateWorkCheckInByIdFromSalesAndPayments)
- fuel/app/classes/util/familymartec.php (tranceFromNeppan, run)
- fuel/app/classes/controller/api/famiport/payment.php (reflectPayments)
Subtasks
Related issues