Issue #3612687: Resolve the place picker's price through the payment policy

The graphical place picker read each tier's raw stored price (the slot-category override, else the category price) in VenueMapBuilder::categoriesByGrade(), bypassing PaymentPolicyResolver. It therefore ignored the category payment_inherit flag and could disagree with the cart, which resolves the price through the policy.

Example: a category with its own 60 EUR but payment_inherit on, on a resource priced 0.00, showed 60 EUR on the map but 0 (blank) in the cart.

Fix: VenueMapBuilder resolves each tier's price through PaymentPolicyResolver::priceForTarget(), injected as an optional service (@?yoyaku_payment.policy_resolver) exactly as yoyaku_calendar already does. So the picker shows the same price the cart charges, honoring inheritance and any per-slot override. Placement keeps no hard dependency on payment: with no payment module the price is NULL, as before.

Includes a kernel test asserting an inheriting tier prices at the resource price on the map.

Merge request reports

Loading