CMS Pharmacy Billing Pro - Website + Premium Billing Integration

Includes:
- Sales, purchase, returns, inventory, parties, patients, doctors, ledger and reports.
- 30-day trial, 1-month ₹99, 1-year ₹999 and 3-year ₹2499 subscription with Cashfree.
- Device-local offline snapshots, JSON download and safe restore; server backup disabled; encrypted email backup is optional and disabled by default (see BACKUP_SETUP.txt).
- Paid-plan-only Website Sync: connect one pharmacy website using a private sync token. Free trial accounts cannot sync stock to a public website.
- Automatic weekly stock sync every Monday through cron_weekly_sync.php. Repeated cron calls in the same week are skipped after a successful weekly sync; force=1 bypasses the guard for testing.
- Manual Website Sync / Test from the app.

WEBSITE CONNECTOR
1. Install the CMS Pharmacy Billing Pro Connector WordPress plugin on the pharmacy website.
2. In WordPress Dashboard -> Billing Pro Sync, enable sync and copy the Site Sync Token.
3. In Billing Pro -> Website Sync, paste the HTTPS base website URL (no path/query) and save. Use Sync Now / Test. Website sync is available only on active paid plans.
4. Configure Hostinger cron only for cron_weekly_sync.php with BACKUP_CRON_TOKEN if weekly website stock publication is required. Do not schedule cron_backup.php; it is intentionally disabled.

The website connector stores the latest stock report and creates a downloadable CSV. It keeps up to 12 weekly snapshots. Use HTTPS and keep tokens private.

PAYMENTS: real Cashfree payments require your own merchant credentials and HTTPS deployment.

SECURITY / VERIFICATION NOTES
- Site URL must use HTTPS and must be the base domain URL. Redirects are disabled for outbound stock sync.
- Weekly worker syncs active paid plans only (MONTH1/YEAR1/YEAR3); TRIAL_1M is excluded.
- The weekly worker stores last_weekly_sync_at and avoids repeated successful uploads during the same week.
- A successful PHP lint/static contract test does not replace a real Hostinger + WordPress test.
