=== Domilocus === Contributors: consulinfolm Tags: booking, reservations, vacation-rentals, property-management, calendar Requires at least: 6.0 Tested up to: 6.9 Requires PHP: 8.0 Stable tag: 1.3.0 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Complete booking and property management solution for vacation rentals, apartments, and accommodations with backend administration. == Description == Domilocus is a comprehensive booking management system designed for vacation rentals, apartments, and property managers. Manage your properties, bookings, calendar, and pricing all from your WordPress dashboard. = Free Features = * **Property Management** - Add and manage unlimited apartments/properties with photo galleries (backend) * **Booking Management** - Accept and manage bookings manually from your WordPress dashboard * **Visual Calendar** - See availability and bookings at a glance in admin area * **Email Notifications** - Basic booking confirmation emails * **Multi-language** - Available in Italian, English, German, French, Spanish * **Customizable** - Settings for check-in/out times, minimum stays, guest limits * **Backend Administration** - Complete admin interface for property and booking management **Note:** The free version provides backend management only. Frontend features (property display, booking forms, payments) require Premium add-ons. = Premium Add-ons = Extend Domilocus with powerful premium add-ons available at [domilocus.consulinfo.it](https://domilocus.consulinfo.it/premium): **Starter Plan (€19/month)** * Online booking forms for guests * Automated pricing rules (seasons, weekends, discounts) * Email automation * Basic statistics (occupancy, revenue) * Online payment gateways (Stripe, PayPal) **Professional Plan (€39/month)** * Everything in Starter, plus: * Advanced tariff system (flexible pricing based on stay duration and booking advance) * Dynamic pricing (automatic price optimization) * iCal synchronization (Airbnb, Booking.com integration) * Event-based pricing (automatic adjustments for local events) * Advanced statistics and reports **Premium Plan (€69/month)** * Everything in Professional, plus: * Multiple payment gateways * Advanced API access * White label (remove branding) * Detailed export reports * Priority support Premium add-ons are installed separately and extend the free version with additional functionality. = Perfect For = * Vacation rental owners * Property managers * Bed & breakfasts * Apartment rentals * Holiday homes * Short-term rentals * Guest houses == External Services == **The FREE version of this plugin does NOT connect to any external services.** Premium add-ons (sold separately) may connect to third-party services to provide specific functionalities: * **Google Maps** (Premium Add-on) * Used to display apartment locations on maps. * Data sent: IP address (to Google servers when map loads). * [Terms of Service](https://cloud.google.com/maps-platform/terms/) | [Privacy Policy](https://policies.google.com/privacy) * **Stripe** (Premium Add-on) * Used for processing credit card payments. * Data sent: Payment details, customer information. * [Terms of Service](https://stripe.com/legal) | [Privacy Policy](https://stripe.com/privacy) * **PayPal** (Premium Add-on) * Used for processing payments. * Data sent: Payment details, customer information. * [Terms of Service](https://www.paypal.com/us/webapps/mpp/ua/useragreement-full) | [Privacy Policy](https://www.paypal.com/us/webapps/mpp/ua/privacy-full) == Installation == 1. Upload the `domilocus` folder to `/wp-content/plugins/` 2. Activate the plugin through the 'Plugins' menu in WordPress 3. Go to Domilocus > Settings to configure your preferences 4. Add your first property under Domilocus > Apartments **For Premium Features:** Purchase and install add-on plugins from [domilocus.consulinfo.it](https://domilocus.consulinfo.it/premium) == Frequently Asked Questions == = Is this plugin completely free? = Yes! The FREE version provides complete **backend management** for unlimited properties and bookings. You can manage everything from the WordPress admin panel. Frontend features (booking forms, property displays, payments) require add-on plugins starting at €19/month. = What's included in the FREE version? = **FREE Features (Backend Only):** - ✅ Unlimited apartments/properties management - ✅ Manual booking management (admin panel) - ✅ Backend calendar views - ✅ Customer data management - ✅ Basic settings and configuration - ❌ NO frontend booking forms - ❌ NO public property displays - ❌ NO automated emails - ❌ NO payment processing = What do I get with the Starter Add-on (€19/month)? = **Starter Add-on includes:** - ✅ All FREE features - ✅ Frontend property displays (`[domilocus_apartments]` shortcode) - ✅ Public booking calendar - ✅ Online booking forms for guests - ✅ Automated email notifications - ✅ Availability checking - ✅ Price calculation = What's included in Professional Add-on (€39/month)? = **Professional Add-on includes:** - ✅ All Starter features - ✅ Advanced dynamic pricing rules - ✅ iCal synchronization (Airbnb, Booking.com) - ✅ Online payment processing (Stripe, PayPal) - ✅ Advanced statistics and reports - ✅ Revenue analytics = What's in the Premium Add-on (€69/month)? = **Premium Add-on includes:** - ✅ All Professional features - ✅ Custom events management - ✅ Ultra-advanced tariff rules - ✅ Multiple payment gateways (Klarna, Apple Pay, Google Pay) - ✅ Priority support = Can I accept online bookings with the free version? = No. The FREE version only includes **backend management**. Online booking forms for website visitors require the **Starter add-on** (€19/month) or higher. = Can I accept payments? = Online payment processing (Stripe, PayPal) requires the **Professional add-on** (€39/month) or higher. The FREE version allows you to manually track offline payments (bank transfer, cash). = Can I sync with Airbnb or Booking.com? = iCal synchronization with external platforms is available in the **Professional add-on** (€39/month) or higher. = How do I display properties on my site? = Frontend property displays require the **Starter add-on** or higher. With Starter, you can use shortcodes like `[domilocus_apartments]` to show all properties or `[domilocus_apartment id="123"]` for a specific property. = Is it translation ready? = Yes! The plugin includes translations for Italian, English, German, French, and Spanish. You can also add your own translations. = Where can I get premium add-ons? = Premium add-ons are available at [domilocus.consulinfo.it](https://domilocus.consulinfo.it/premium) == Screenshots == 1. Dashboard overview with booking statistics 2. Property management screen 3. Booking calendar view 4. Booking details and customer information 5. Settings panel 6. Frontend booking form == Changelog == = 1.3.0 = * Added: filtri avanzati nella lista prenotazioni admin (sorgente, periodo check-in, importo min/max). * Added: ricerca prenotazioni estesa a source, external_platform, ID numerico prenotazione. * Added: viste "Attive" / "Archivio" / "Tutte" nella lista prenotazioni admin. * Added: codice accesso APP per ospiti piattaforme esterne (formato DML-XXXXXX). = 1.2.0 = * Fixed: migrazione DB ora garantisce la creazione delle colonne customer_residence_address e customer_country anche se il transient di lock era già presente, evitando che siti aggiornati restino senza le colonne. * Added: pulsante "Esegui migrazione DB" nel tab Avanzate delle impostazioni per forzare la creazione delle colonne mancanti senza dover disattivare il plugin. = 1.1.9 = * Fixed: campi Indirizzo di residenza e Nazione ospite aggiunti al form di creazione/modifica prenotazione admin (booking-form.php). * Fixed: indirizzo e nazione ospite ora salvati nel DB anche alla creazione di una nuova prenotazione dall'admin. = 1.1.8 = * Fixed: Codice fiscale host e ospite ora visibili correttamente nella stampa della ricevuta (aggiunto parametro mode=print all'URL di download). * Fixed: metodo t() riscritto con stringhe letterali per piena compatibilità PHPCS (WordPress.WP.I18n). * Fixed: aggiunto phpcs:ignore NoCaching sulla query di aggiornamento dati ospite nel portale. * Added: campo Codice Fiscale ospite, Indirizzo residenza e Nazione nella metabox admin prenotazione. * Fixed: dati ospite (CF, indirizzo, nazione) ora salvati correttamente nel DB dall'admin tramite sync_booking_from_admin_post(). * Fixed: campo Codice Fiscale ospite nel form portale ora pre-compilato con il valore salvato. = 1.1.7 = * Fixed: CIN e CIR ora visualizzati su una sola riga nella ricevuta; i codici contenenti slash non vengono più troncati. * Fixed: rimossa riga duplicata nella ricevuta penale no-show. * Improved: layout stampa/PDF compresso per garantire l'output su pagina singola. = 1.1.6 = * Improved: logica documento fiscale — prospetto riepilogativo OTA emesso per tutte le prenotazioni da piattaforma (Booking.com, Airbnb), indipendentemente dal metodo di pagamento registrato. * Added: riquadro marca da bollo (€ 2,00) nella ricevuta, visibile solo quando il corrispettivo lordo supera € 77,47. * Added: nota a piè di pagina «Imposta di bollo, se dovuta, a carico dell'ospite» per corrispettivi superiori a € 77,47. * Added: riga totale complessivo (corrispettivo lordo + tassa di soggiorno) nella sezione Dati Economici. * Fixed: tassa di soggiorno mostrata in una sola riga con dicitura «pagata in loco». * Fixed: testo art. 15 DPR 633/72 per penale no-show ora completo e corretto. * Fixed: Codice Fiscale host e ospite visibili solo in modalità stampa/PDF. = 1.1.5 = * Fixed: data di emissione nella ricevuta non fiscale ora mostra sempre la data di check-out. = 1.1.4 = * Added: portale ricevuta ospite integrato nella pagina di conferma prenotazione — visualizzazione, stampa/PDF e aggiornamento dati direttamente dal link di conferma. * Added: impostazioni locatore (indirizzo, CIN/CIR struttura) nelle impostazioni generali — la ricevuta legge questi dati dal database invece delle costanti. * Added: box "Pagina ospite" nel pannello admin prenotazione con link diretto copiabile. * Fixed: supporto prenotazioni OTA/iCal senza email ospite — la chiave di accesso ora funziona anche per prenotazioni importate da piattaforme (Airbnb, Booking.com, ecc.). = 1.1.3 = * Added: stato prenotazione "Non presentato (no-show)" nel form admin — impostare questo stato genera automaticamente la ricevuta come penale per mancato arrivo (art. 15 DPR 633/72). = 1.1.2 = * Added: guest fiscal code / VAT field on booking form (Codice Fiscale / P.IVA ospite), stored in bookings table. * Added: host fiscal code / VAT setting in General tab (Codice Fiscale / P.IVA titolare), shown on non-fiscal receipts. * Improved: non-fiscal receipt now displays guest fiscal code and host fiscal code / VAT for full Italian anagrafica fiscale compliance. = 1.1.1 = * Improved: non-fiscal receipt platform detection generalised to all OTA channels (Booking.com, Airbnb, VRBO, Expedia, generic OTA, iCal import) with backwards-compatible metadata. = 1.1.0 = * Added: non-fiscal receipt system with progressive annual numbering (e.g. 01/2026), available from admin and frontend booking confirmation. * Added: printable receipt document with improved Italian legal wording and correct payer/receiver logic. * Added: dedicated owner name setting for receipts, separated from email sender name. * Improved: platform bookings (Airbnb/OTA/iCal) receipt logic now issues amount for tourist tax collection only, with clear explanatory note. * Improved: admin navigation redesigned with horizontal tab bar and compact module grouping for better UX on full installations. * Improved: top admin bar quick links for common actions (new booking, bookings, calendar, apartments). * Fixed: dashboard/top-menu routing and malformed admin URL normalization to prevent "page not found"/permission edge cases. * Fixed: security/code-quality hardening for escaping, input sanitization, nonce flow documentation, and PHPCS compatibility. = 1.0.17 = * Fixed: iCal sync no longer creates duplicate bookings for records imported before v1.0.16 (orphan-adopt: existing records with NULL ical_uid and matching apartment/check-in are updated instead of re-inserted). * Added: `platform_booking_code` column to store the OTA reservation code (e.g. VRBO ID-XXXXXXX, Airbnb HMXXXXXXX) parsed from the iCal DESCRIPTION field. * Fixed: admin booking form preserves `source`, `ical_uid`, `external_platform`, and `platform_booking_code` on save — iCal-imported bookings remain correctly identified after admin edits. * Fixed: dynamic format array in `save_booking()` prevents silent field loss when `ical_uid` or `platform_booking_code` are conditionally included. * Fixed: feature gate definitions corrected — `statistics_basic` now requires Starter (not Professional), `dynamic_pricing` requires Professional (not Premium), `white_label` requires Premium (not Enterprise). * Added: `domilocus_admin_menu_icon` and `domilocus_admin_menu_title` filter hooks to allow Premium White Label add-on to replace the admin sidebar icon and title. = 1.0.16 = * Fixed: iCal import now stores the event UID and uses upsert deduplication — editing a booking from admin no longer causes a duplicate on the next sync. * Added: `ical_uid` column to the bookings table (DB migration runs automatically on upgrade). * Fixed: saving a booking from admin preserves the original `source` and `ical_uid` so iCal sync can still match the record. = 1.0.15 = * Fixed: Stable Tag mismatch between readme.txt and plugin header. * Fixed: PHPCS PluginCheck.Security.DirectDB.UnescapedDBParameter warning on bookings count query. = 1.0.14 = * Improved: bookings list now defaults to "Attive" tab (check-out >= today), keeping the main view clean. * Added: "Archivio" tab for past bookings (check-out < today). * Added: "Tutte" tab to see all bookings without date filter. = 1.0.13 = * Added: access code system for external-platform guests (Booking.com, Airbnb, VRBO) — admin generates a DML-XXXXXX code and emails it; guests use email + code to log in via the app. * Added: `access_code` and `external_platform` columns with automatic DB migration. * Fixed: PHP syntax error caused by AJAX methods placed outside class scope. * Fixed: direct DB query caching warnings (PHPCS compliance). = 1.0.12 = * Fixed: admin calendar availability data now consistently uses `status` instead of a legacy `available` flag across month/week/day views. * Fixed: admin day/week views now correctly reflect booked/blocked/maintenance states and no longer mislabel pending bookings. * Improved: iCal Professional export now includes manual blocked/maintenance periods from the availability table so external channels (e.g. Booking.com) see those days as closed. = 1.0.11 = * Fixed: missing translators comment for i18n placeholder in bookings list table (WPCS compliance). = 1.0.10 = * Added: admin visibility for booking date-change payment integrations in Bookings list. * Added: improved status labels for pending payment integrations after booking modifications. * Improved: compatibility with Starter add-on date modification flow while keeping core free release stable. = 1.0.8 = * Added: `domilocus_calculated_price` filter hook to allow pricing addons (Professional) to modify the final calculation. = 1.0.7 = * Updated: all documentation and support links now point to domilocus.consulinfo.it subdomain * Updated: premium add-ons link updated to new subdomain = 1.0.6 = * Added: calendar view selector - choose between Month, Week, or Day view * Added: week view showing 7-day grid with booking details * Added: day view with complete booking information for single day * Improved: calendar navigation now adapts to selected view (month/week/day) * Improved: responsive design for new calendar views on mobile and tablet = 1.0.5 = * Fixed: resolved "Cannot modify header information" error when deleting paid bookings * Fixed: booking form now fully translatable - all Italian hardcoded strings converted to English with proper i18n functions * Improved: paid booking deletion now shows proper confirmation screen before proceeding * Updated: tested and confirmed compatibility with WordPress 6.9 = 1.0.4 = * Fixed: resolved "Cannot modify header information" error when deleting paid bookings * Fixed: booking form now fully translatable - all Italian hardcoded strings converted to English with proper i18n functions * Improved: paid booking deletion now shows proper confirmation screen before proceeding * Updated: tested and confirmed compatibility with WordPress 6.9 = 1.0.4 = * Removed: legacy onboarding banner and dismiss logic so the notice no longer persists. * Fixed: corretti errori di parsing PHP nelle classi admin dopo la pulizia del banner. * Fixed: aggiunto sanitizer per gli array dei metodi di pagamento per impedire salvataggi di dati corrotti. * Improved: notifiche admin ora mostrano solo gli avvisi realmente necessari (requisiti PHP, modalità premium disattivata). = 1.0.3 = * Fixed: Menu translations now use WordPress standard __() functions * Fixed: Menu items now correctly translate when WordPress language is changed * Updated: Added missing menu translations to .po files (English and Italian) * Added: 28 additional currencies including all major European currencies (NOK, SEK, DKK, PLN, CZK, HUF, RON, BGN, HRK, ISK, TRY, RUB, UAH and more) * Added: Asian currencies (SGD, HKD, INR, THB, MYR, IDR, PHP, KRW) * Added: Americas currencies (MXN, BRL, ARS) * Added: Middle East/Africa currencies (ZAR, AED, SAR, ILS) * Improved: Total of 38 currencies now available (was 10) * Improved: Menu items (Dashboard, Apartments, Bookings, Settings) now follow WordPress i18n best practices = 1.0.2 = * Added: Addon compatibility layer for premium extensions * Added: News ticker system for announcements * Added: Dashboard widget for plugin updates * Improved: Separated free and premium features * Improved: Better upgrade prompts for premium features * Fixed: PHP version requirement aligned across all files * Fixed: Premium features now use filter-based activation (WordPress.org compliant) * Note: Premium features available via separate add-on plugins from domilocus.consulinfo.it = 1.0.1 = * Initial bug fixes and improvements = 1.0.0 = * Initial public release == Upgrade Notice == = 1.0.2 = This version separates free and premium features. Premium functionality now requires separate add-on plugins available at domilocus.consulinfo.it. == Support == For support, feature requests, or bug reports: * Free version support: WordPress.org support forum * Premium support: https://domilocus.consulinfo.it/support * Documentation: https://domilocus.consulinfo.it/docs * GitHub: https://github.com/consulinfo/domilocus