Tutón tykač njeje so z najnowšimi 3 hłownymi wersijemi WordPress testował. Snano so hižo njewothladuje abo njepodpěruje a ma problemy z kompatibelnosću, hdyž so z nowšimi wersijemi WordPress wužiwa.

LoyCart-POS

Wopisanje

LoyCart-POS provides a simple to use, fast, accurate, and seamless** point-of-sale interface directly within your WordPress dashboard. Built on top of WooCommerce, it allows you to manage in-person and telephone sales with ease.

Hi, I’m David Herbert, a dedicated WordPress developer and e-commerce specialist with eight years of focused experience in the WooCommerce ecosystem and Point-of-Sale (POS) systems.

Having partnered with countless businesses to launch and scale their online stores, I’ve gained firsthand insight into a persistent and frustrating challenge: the difficulty of maintaining real-time product and inventory synchronisation between a busy, customer-facing retail location and the online WooCommerce website.

Why LoyCart POS Was Built

My journey with LoyCart POS began in 2011, shortly after the initial release of WooCommerce. As a brick-and-mortar store owner myself, I immediately recognised the immense potential of building a simplified solution directly on top of this powerful platform.

I was personally frustrated by the administrative burden: I was wasting valuable time manually reconciling product details and stock levels across my store’s separate POS system and my WordPress website. I quickly realised that by utilising the WooCommerce foundation, I could build a customer-facing POS that fulfilled my needs without the complexity and prohibitive costs of maintaining two entirely different systems.

I saw that many existing POS solutions were either prohibitively expensive, overly complex, or critically lacked the seamless, unified integration necessary for small to medium-sized retail businesses. My goal became simple: to engineer a solution that is efficient, accessible, and effortlessly keeps your in-store and online operations perfectly synchronised.

My Vision: Empowering Your Business Growth

LoyCart POS is designed to be more than a transactional tool—it’s a robust system built to empower business owners by freeing them from administrative burdens.

I am personally committed to the continuous development of this plugin, driven by user feedback and a dedication to feature refinement. Thank you for choosing LoyCart POS to provide a reliable, unified commerce solution, allowing you to focus your energy on what truly drives growth.

Third Party Resources

This plugin bundles the following third-party libraries in minified format. Human-readable source code and licensing information for these resources are provided below:

  • Decimal.js

    • Source: https://github.com/MikeMcl/decimal.js
    • License: MIT (https://opensource.org/licenses/MIT)
    • Purpose: High-precision decimal arithmetic for cart calculations.
  • JsBarcode

    • Source: https://github.com/lindell/JsBarcode
    • License: MIT (https://opensource.org/licenses/MIT)
    • Purpose: Generating barcodes for POS receipts and labels.
  • QuaggaJS

    • Source: https://github.com/serratus/quaggaJS
    • License: MIT (https://opensource.org/licenses/MIT)
    • Purpose: Barcode scanner support via the device camera.
  • Dashicons

    • Source: https://developer.wordpress.org/resource/dashicons/
    • License: GPLv2-or-later
    • Purpose: Local UI icons for product placeholders and cart actions.

Tips & FAQ

Here are some helpful tips and answers to common questions for LoyCart POS users:

How do I enable dark mode?
– LoyCart POS automatically detects your system or browser dark mode preference. You can also toggle dark mode from the POS More Actions menu.

How do I add or update products?
– Add or edit products in WooCommerce as usual. Changes sync instantly to the POS grid. Use the barcode scan feature for fast product lookup.

Why is my product image missing?
– If a product has no image, the POS displays a WooCommerce placeholder. To add an image, edit the product in WooCommerce and set a featured image.

How do I process a refund?
– Click the Refund button in the cart, enter the original order ID, and follow the guided steps. Refunds are validated for accuracy and security.

Can I use store credit/loyalty?
– Yes! Enable Store Credit in POS Settings. Customers earn and redeem credit via WooCommerce coupons, visible in their My Account area.

What if my barcode scanner isn’t working?
– Ensure your scanner is in keyboard mode. You can also use the built-in camera scan button in the POS search bar for mobile/tablet devices.

How do I print receipts or labels?
– Use the Print buttons in the POS. On iOS, use the Share icon if the print dialog does not appear automatically.

Where can I get support?
– Visit https://buymeacoffee.com/loycart for support, feature requests, and updates.

Instalacija

  1. Upload the loycart-pos folder to the /wp-content/plugins/ directory or go to the plugin upload page and upload the zip file.
  2. Activate the plugin through the ‚Plugins‘ menu in WordPress.
  3. Install, activate and fully configure WooCommerce for LoyCart POS to function. Once WooCommerce is activated, LoyCart POS will appear in the WooCommerce menu.

Pohódnoćenja

Za tutón tykač pohódnoćenja njejsu.

Sobuskutkowarjo a wuwiwarjo

„LoyCart-POS“ je softwara wotewrjeneho žórła. Slědowacy ludźo su k tutomu tykačej přinošowali.

Sobuskutkowarjo

Protokol změnow

1.0.1 – 2025-12-05

  • Initial free version submitted for review.
  • This is the first public release of the free version.
  • Support, bug fixes and updates available at https://buymeacoffee.com/loycart

1.0.2 – 2025-12-10

Removed redirect user roles administrator and shop manager directly to the POS screen upon login. If you still need this fictionality its better to use a dedicated web browser link.
Removed much of the debugging code.
Fixed a bug in the refund code were partial refunds were failing due to a rounding error.

1.0.3 – 2025-12-10

Removed more debugging code.
Fixing i18n comments and removing DS_Store files
Fixed a bug in loycart-pos-ajax-handlers.php

= 1.0.4 – 2025-12-26
High Priority: Mobile & WebView Compatibility
This update focuses on resolving critical execution issues when the plugin is used within the official WordPress mobile app and other integrated WebView environments.

Changed
Removed Native Confirmations: Eliminated all window.confirm() calls that previously caused the POS to hang or fail in mobile applications.

Cart Management: Clearing the cart and removing a customer now executes immediately upon button click for a faster, non-blocking experience.

Held Sales: Deleting a held sale now processes instantly, removing the requirement for browser-level interaction.

Removed Native Prompts: Replaced window.prompt() in the Hold Sale workflow.

Auto-Naming Logic: The system now automatically generates a descriptive name for held orders based on the selected customer’s name or the current timestamp (e.g., „Held Order for John Doe“ or „Order held at 14:30“).

Enhanced UI Feedback: Transitioned from blocking system alerts to non-blocking, integrated notifications using the showNotification utility to maintain user awareness of background actions.

Fixed
WebView Execution Lock: Resolved an issue where the POS would become unresponsive in hybrid apps due to unhandled JavaScript UI threads.

Workflow Efficiency: Reduced the number of „taps“ required for common administrative actions (Clearing, Holding, and Deleting), optimizing the interface for high-volume retail environments.

Technical Details
Modified File: trunk/assets/js/loycart-pos-app.js.

Namespace Updates: Refined loycart.cartManager.clearCartAndCustomer and loycart.heldSalesManager event listeners to support direct execution.

= 1.0.5 – 2025-12-27
Improvements

Workflow Automation: Appended a hidden carriage return (\r) to shipping label barcodes. Scanning a label into the WooCommerce order search field now automatically triggers the search, eliminating the need for a manual „Enter“ key press.

Human-Readable Labels: Refined the barcode text display on labels to show only numeric order IDs, providing a cleaner, more professional appearance.

🛠️ Bug Fixes
Data Sanitization: Fixed an issue where the „ORD“ prefix was being included in the barcode encoding, which caused search failures in standard WooCommerce configurations.

Mobile App Stability
WebView Performance: Fine-tuned the print delay in the WordPress iOS app environment to ensure high-density barcodes have fully rendered before the print dialog appears.

= 1.0.6 – 2026-01-05

🏗️ Major Architectural Overhaul
JavaScript Modularization: Decoupled the massive POS logic into independent, specialized modules.
This prevents variable collisions, improves load times, and makes the codebase maintainable.

loycart.cartManager: Handles all state, math, and UI rendering for the shopping cart.

loycart.customerManager: Manages registered customer search, selection, and guest checkout states.

loycart.refundManager: Specialized logic for processing returns and order history.

loycart.productManager: Manages the grid display and real-time stock updates.

Namespace Isolation: Wrapped all modules in the window.loycart namespace to protect global variables and ensure cross-module communication is secure.

= 1.0.7 – 2026-01-19

New Features & Enhancements

Added woocommerce coupons

Enhanced Product Visibility Control: Added a third visibility tier, „Hidden from POS & Store,“ which sets products to a „Privately Published“ (private) status.

Persistent Cart for Hidden Items: Updated cart validation and calculation logic to recognize and retain private products, preventing them from being removed during session reloads.

Targeted Product Queries: Refined the product retrieval logic to allow private items during specific detail lookups (such as cart reloads and barcode scans) while maintaining their exclusion from the standard POS grid.

Bug Fixes
Refund Mode Validation: Implemented strict server-side validation in the Refund Manager to prevent the UI from transitioning into „Return Mode“ when an invalid or non-existent Order ID is entered.

Image Path Resolution: Resolved a console 404 (Not Found) error where missing product images or false return values caused invalid URL requests; the system now correctly defaults to the standard WooCommerce placeholder.

UI State Consistency: Fixed an issue where standard checkout action buttons remained visible during refund operations; the UI now correctly toggles between Sale and Refund action groups based on the active mode.

Transients and Caching: Optimized product transients to ensure that changes to visibility settings are reflected accurately across the POS interface.

= 1.0.8 – 2026-01-26

  • Header/topbar cleanup: unified sticky topbar, removed extra icon buttons (theme/density) to reduce clutter, Filters button now only appears on narrow screens.
  • Search UX polish: embedded Clear and Camera controls inside the search field with matching 32px touch targets and borderless styling.
  • Product grid interactions: image/card clicks routed correctly (info in normal mode, add in refund mode), dedicated Add to Cart button, improved merging of identical items via robust attribute comparison.
  • No results behavior: show “No products found…” briefly, then auto-reset search and reload products to recover gracefully.
  • Dark mode improvements: coupon picker modal/cards now use theme variables for background, borders, and text; receipt printer panel updated for readable contrast; general modal readability improved.
  • Print Label logic: enabled by default for non-variable products; requires variation selection for variable products.
  • Cart/totals UX: shimmer during server recalculation, debounced cart save, shipping removal flow refined, empty-cart UI resets; fixed lingering cashier discount row visibility.
  • Security & i18n: added capability checks to sensitive AJAX endpoints, input sanitization (refunds), and translator comments for strings.
  • Notifications & performance: unified toast notifications, skeleton loaders for product grid, persisted density/theme toggles accessible via More Actions.

1.0.9 – 2026-01-27

  • Store Credit via Coupons: Introduced a native loyalty mechanism using WooCommerce coupons (fixed_cart). Customers earn credit at a configurable rate, redeemable both in POS and online, restricted to their email, with no expiry.
  • Settings: Moved to an in-POS Settings modal (More Actions POS Settings) with options to enable, set earn rate %, apply to online orders, and configure sale item exclusions for earning and redeeming.
  • Sale item policy split: Separate toggles for Exclude Sale Items (Earning) and Exclude Sale Items (Redeeming). Redemption aligns with WooCommerce by setting the coupon’s „exclude_sale_items“ meta accordingly.
  • POS UI: Displays the selected customer’s store credit and highlights the Apply Coupon action when credit exists.
  • Order notes: Adds a note on order completion showing earn rate, eligible subtotal, and whether sale items were excluded from earning.
  • My Account: New Store Credit endpoint showing balance and recent credit activity for the logged-in customer.
  • Reports: Store Credit Reports accessible via the POS modal (More Actions Store Credit Reports), with hardened date filters, validation, and a safe fallback if invalid inputs are supplied (prevents 500 errors). The previous WooCommerce submenu page was removed to avoid duplication.
  • Fixes & hardening: Resolved coupon modal open issue (JS syntax), sanitized/validated report date inputs, and improved accessibility/UX for modals including responsive filter layout.

1.0.10 – 2026-01-27

Search reliability and UX
– Enter-to-search: Text searches now execute only when pressing Enter, preventing unintended scans from partial input and avoiding conflicts with barcode scanning.
– Mid-word matching: Partial queries like „Tra“ now match „Trading“ and similar mid-word substrings so relevant products consistently appear.
– Deterministic results: Implemented ANDed-term matching across title, slug, and excerpt with phrase fallback; added partial SKU matching; bypassed category filters for free-text searches; and improved transient cache keys for consistent results.

Compliance and security
– Prepared SQL statements and scoped PHPCS ignores with documented rationale; removed disallowed hidden files (e.g., .DS_Store).
– Hardened AJAX handlers with additional capability checks and input validation.

Internationalization
– Full i18n sweep across PHP and JavaScript; added text domain loader and languages/ directory; regenerated a complete POT with source references.
– Fixed translation quality warnings by ordering placeholders and adding translators comments in server messages.

UI polish and accessibility
– Product card spacing: Tightened spacing between product name and price in both default and compact densities without increasing the image/icon area height.
– Improved accessibility labels (alt/aria) across product, coupon, and modal controls; localized help content and keyboard shortcut notifications.

Performance and stability
– Cache key updates to avoid stale search results; reduced noisy logs; minor consistency fixes across modals and notifications.

1.0.11 – 2026-01-27

Urgent hotfix
– Fixed a regression where the „Apply Coupon“ action no longer responded due to a JavaScript module parse error in assets/js/loycart-pos-couponManager.js. Restored correct event bindings (open modal, select/clear coupon, remove coupon, Escape-to-close) and eliminated duplicate lines causing syntax failures.
– Ensured coupon availability prompt updates reliably and modal presence is validated.

Release safety
– Hardened the release script to honor dry-run mode and added an interactive confirmation for non-dry-run actions to prevent accidental submissions.

Dark mode improvements
– Refund context header and details now use theme variables for color (instead of hard-coded light theme colors), improving text contrast in Dark Mode.

1.0.12 – 2026-01-30

  • Fixed: Barcode scanning now works reliably for rapid-fire scans and variable products. The search input no longer accumulates barcode numbers, and the cursor is removed after both barcode and manual searches for seamless scanning.
  • Dark mode & Cart UI fixes
    • Cart panel, section, and footer backgrounds now display correctly in dark mode.
    • Sale line item: new price is bold white in dark mode for visibility; strikethrough old price remains readable.
    • Discount details (e.g., „Cashier Discount 4% Saving £1.00“) now appear green in dark mode, matching light mode.
    • General improvements to cart element contrast, button states, and coupon/discount row visibility in dark mode.
  • Font size unification: All headings (h1-h4), buttons, and body text now use a consistent, accessible font size scale (rem units) for improved readability and a polished, modern UI. This affects modal headers, cart totals, product info, and all major UI elements.

1.0.13

  • Removed release-svn.sh from plugin package and tags. No functional changes.

1.0.14 – 2026-01-31

  • Hardened AJAX handlers with additional capability checks and input validation.
  • Cache key updates to avoid stale search results; reduced noisy logs; minor consistency fixes across modals and notifications.

1.0.15 – 2026-02-03

🛠️ Bug Fixes
Data Sanitization: Fixed an issue in the barcode encoding, which caused search failures in standard WooCommerce configurations.

Mobile App Stability
WebView Performance: Fine-tuned the print delay in the WordPress iOS app environment to ensure high-density barcodes have fully rendered before the print dialog appears.

UI polish and accessibility
– Product card spacing: Tightened spacing between product name and price in both default and compact densities without increasing the image/icon area height.
– Further Improved accessibility labels (alt/aria) across product, coupon, and modal controls; localized help content and keyboard shortcut notifications.

1.0.16 – 2026-02-10

1.0.16 – 2026-02-10

  • Fixed issue where items could not be added to the cart after completing a sale due to the processing flag not being reset properly.
  • Hardened AJAX handlers with additional capability checks and input validation.
  • Fixed a number of issues with dark mode to make the transition between light and dark mode more fluid.