=== Webase Booking Manager ===
Contributors: webase-solutions, webase
Tags: booking, appointments, scheduling, payments, calendar
Requires at least: 6.0
Tested up to: 6.9
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

A professional appointment booking plugin with category-based services, calendar scheduling, multiple payment gateways, and PDF invoicing.

== Description ==

Webase Booking Manager is a complete appointment and service booking system for WordPress. Built for any service-based business, it allows customers to book appointments directly from your website through a clean, multi-step frontend form.

**Key Features:**

* Multi-step booking form — Category → Service → Date/Time → Details → Payment
* Service categories with customizable color coding
* Per-service time slots with configurable intervals (30 minutes to 12 hours)
* Optional time slot toggle — date-only mode for package-style bookings
* Per-package date availability — fully booked dates disabled only for that specific service
* Multiple payment gateways — Bank Transfer, Stripe, PayPal
* PDF invoice generation with bank account details and company logo
* Complete admin panel — Bookings, Payments, Services, Invoices, Calendar View
* Bulk actions support for bookings, payments, and invoices
* Working hours configuration per day of the week
* Automatic booking reference number generation
* Email notifications sent to both customer and admin
* Mobile-responsive frontend design
* Translation ready
* Services showcase shortcode `[wbbm_services]` with category filter and column control

**Built-in Payment Gateways:**

* **Bank Transfer** — Manual confirmation by admin
* **Stripe** — Secure credit/debit card payments
* **PayPal** — Online payments via PayPal

**Admin Management:**

* View and manage all bookings from a central dashboard
* Update booking statuses (Pending, Confirmed, Completed, Cancelled)
* Manage payment statuses (Pending, Paid, Failed, Refunded)
* Create and edit service categories and services
* View calendar overview of all bookings
* Generate and download PDF invoices
* Configure working hours
* Set company information, currency, and payment gateways

Webase Booking Manager is developed and maintained by [Webase Solutions](https://webase.com.bd).

== Installation ==

1. Upload the `webase-booking-manager` folder to `/wp-content/plugins/`
2. Activate the plugin through **Plugins → Installed Plugins** in WordPress
3. Navigate to **Webase Booking Manager → Settings** to configure your company name, currency, working hours, and payment gateways
4. Add at least one category under **Services**, then add your services
5. Place the shortcode `[webase-booking-manager]` on any page where you want the booking form to appear

== Frequently Asked Questions ==

= How do I display a list of my services? =

Use the `[wbbm_services]` shortcode on any page. It accepts optional attributes:
* `columns="3"` — number of columns (1–4, default 3)
* `category="name"` — filter by category name or ID
* `show_book="yes"` — show/hide the Book Now button (yes/no, default yes)

Example: `[wbbm_services columns="2" category="Massage" show_book="yes"]`

= What shortcode do I use to display the booking form? =

Add `[webase-booking-manager]` to any WordPress page or post content.

= Can I accept online payments? =

Yes. Webase Booking Manager supports Bank Transfer (manual confirmation), Stripe (card payments), and PayPal. Enable and configure each gateway under **Webase Booking Manager → Settings → Payment Gateways**.

= Can I disable time slots and let customers pick only a date? =

Yes. Go to **Webase Booking Manager → Settings → General** and toggle off **Show Time Slots**. Customers will select only a date, and the time slots panel will be hidden completely.

= If a date is fully booked for one service, are other services blocked? =

No. Date availability is calculated per service. If "Evening Tour" is fully booked on the 20th, "Morning Tour" remains available on the same date.

= Where are invoices stored? =

All generated invoices are stored in **Webase Booking Manager → Invoices**. Customers can also download their invoice directly from the booking confirmation page — no login required.

= Does the plugin send confirmation emails? =

Yes. A confirmation email is sent to the customer and the admin email address configured in Settings upon every new booking.

= Is the plugin translation ready? =

Yes. The plugin uses the `webase-booking-manager` text domain and is ready for translation via standard `.po` / `.mo` files.

= What are the minimum requirements? =

WordPress 6.0+, PHP 7.4+, MySQL 5.6+.

= Does it support multiple service providers? =

The current version supports single-provider setups. Multi-provider support is planned for a future release.

== Screenshots ==

1. Admin Settings — General tab with company name, currency, time slot step, default booking status, and Show Time Slots toggle
2. Admin Dashboard — key stats overview including total bookings, revenue, pending, approved, and bank transfers pending
3. Admin Dashboard — top services bar chart, peak booking hours heatmap, and recent bookings list
4. Admin Calendar — monthly view with color-coded booking entries per service
5. Admin Services — Add New Service modal with name, category, color, duration, price, and capacity fields
6. Frontend booking form Step 1 — category filter dropdown and service selection cards with price and hours
7. Frontend booking form Step 2 — interactive calendar date picker with available time slots
8. Frontend booking form Step 4 — payment summary with booking details, total, and payment method selection

== Changelog ==

= 1.0.0 =
* Initial release
* Multi-step booking form with category and service selection
* Custom calendar picker with per-service booked date disabling
* Time slot configuration (30 minutes to 12 hours intervals)
* Time slot visibility toggle for date-only booking mode
* Bank Transfer, Stripe, and PayPal payment gateways
* Automatic PDF invoice generation with bank details and company logo
* Admin panels: Bookings, Payments, Services, Invoices, Calendar, Settings
* Bulk actions support on all admin tables
* Working hours management per day
* Email notifications on booking creation and status changes
* Mobile-responsive frontend CSS
* GPLv2 licensed

== External services ==

This plugin optionally connects to the following third-party services when the corresponding payment gateway is enabled by the site administrator.

= Stripe =

When the Stripe payment gateway is enabled and a customer submits a booking, the plugin communicates with:

* **Stripe API** (`https://api.stripe.com`) — to create a PaymentIntent and process the card payment. Data sent includes the booking amount, currency, and a booking reference metadata string. No personal customer data (name, email, address) is sent to the Stripe API directly by this plugin.
* **Stripe.js** (`https://js.stripe.com/v3/`) — the official Stripe JavaScript library, loaded on any page containing the booking form when Stripe is enabled. This library handles secure card field rendering in the customer's browser. Stripe may collect browser and device information as described in their privacy policy.

Stripe Terms of Service: https://stripe.com/legal/ssa
Stripe Privacy Policy: https://stripe.com/privacy

= PayPal =

When the PayPal payment gateway is enabled and a customer chooses PayPal at checkout, the plugin communicates with:

* **PayPal Orders API** — `https://api-m.paypal.com` (live) or `https://api-m.sandbox.paypal.com` (sandbox/test mode) — to create a PayPal order and capture the payment. Data sent includes the booking amount, currency, and a booking reference description.

PayPal Terms of Service: https://www.paypal.com/legalhub/useragreement-full
PayPal Privacy Policy: https://www.paypal.com/legalhub/privacy-full

= No data is sent when gateways are disabled =

Bank Transfer (the default gateway) does not connect to any external service. Stripe and PayPal connections are only established when those gateways are explicitly enabled in **Webase Booking Manager → Settings → Payment Gateways**.

== Upgrade Notice ==

= 1.0.0 =
Initial release. No upgrade steps required.
