Dynamic Pricing¶
AirDoo supports seasonal pricing for direct bookings (website, API).
Airbnb Bookings
Dynamic pricing does not apply to bookings imported from Airbnb. Airbnb sets its own prices and transmits them in confirmation emails.
How It Works¶
The pricing engine uses Odoo Pricelists (product.pricelist) to calculate the price night by night based on the stay date.
Configuration¶
1. Create the Pricelist¶
Sales → Configuration → Pricelists → New
Configure rules on the "Accommodation Nights" product with date ranges:
| Rule | Period | Price |
|---|---|---|
| High season | 01/07 - 31/08 | €250/night |
| Low season | 01/11 - 31/03 | €120/night |
| Standard rate | Rest of year | €180/night |
2. Link to the Accommodation¶
AirDoo → Accommodations → [your accommodation] → Pricing Tab
- Pricelist: seasonal pricelist
- Minimum Stay: minimum number of nights for direct bookings
3. Default Pricelist¶
AirDoo → Configuration → Settings → Default Pricelist
Pricelist applied to new Airbnb bookings.
Price Calculation¶
For a direct booking, _compute_direct_booking_price() iterates over each night of the stay and calls pricelist._get_product_price(product, quantity=total_nights, date=night).
The quantity=total_nights (not 1) allows "Minimum Quantity" rules (e.g. minimum 3 nights) to work correctly while still calculating night by night.
Example¶
Stay 15/06 → 20/06 (5 nights, high season €250/night)
Total: €1,250 | Average: €250/night
Via the Odoo Interface¶
On a direct booking: "Recalculate Price" button - Updates the "Accommodation Nights" line with the average price - Writes the per-date price breakdown in the line description
Via the API¶
The /api/v1/airdoo/availability endpoint returns the calculated price:
{
"available": true,
"nights": 5,
"pricing": {
"total": 1250.00,
"per_night": 250.00,
"cleaning_fee": 80.00
}
}
← Back: Advanced Parsing | Next: Loyalty →