Title: LoyCart-POS
Author: Dave Herbert
Published: <strong>21 دسامبر 2025</strong>
Last modified: 28 فوریه 2026

---

جستجوی افزونه‌ها

![](https://s.w.org/plugins/geopattern-icon/loycart-pos.svg)

# LoyCart-POS

 توسط [Dave Herbert](https://profiles.wordpress.org/daveherbert6614/)

[دانلود](https://downloads.wordpress.org/plugin/loycart-pos.1.0.20.zip)

 * [جزئیات](https://fa.wordpress.org/plugins/loycart-pos/#description)
 * [نقد و بررسی‌ها](https://fa.wordpress.org/plugins/loycart-pos/#reviews)
 *  [نصب](https://fa.wordpress.org/plugins/loycart-pos/#installation)
 * [توسعه](https://fa.wordpress.org/plugins/loycart-pos/#developers)

 [پشتیبانی](https://wordpress.org/support/plugin/loycart-pos/)

## توضیحات

LoyCart-POS is a modern, lightning-fast, and intuitive point-of-sale solution built
natively for WooCommerce. Designed for retail stores, phone orders, and hybrid businesses,
LoyCart-POS transforms your WordPress dashboard into a full-featured, professional
POS system—no third-party services or monthly fees required.

 * Seamless integration: Instantly syncs with your WooCommerce products, customers,
   coupons, and orders.
 * Beautiful, responsive UI: Works on desktop, tablet, and mobile, with full dark
   mode and accessibility support.
 * Built for speed: Optimized for high-volume retail, with instant product search,
   barcode scanning, and rapid cart management.
 * No lock-in: All data stays in your WooCommerce store—no external accounts or 
   cloud dependencies.

### 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.

### Features

 * 🛒 **Full-featured POS:**
    - Add, search, and scan products (barcode/camera support)
    - Real-time stock and price updates
    - Product grid with sorting, categories, and filters
    - Quick add-to-cart, quantity, and variation selection
    - Hold/resume sales, persistent cart, and order notes
 * 💳 **Flexible Payments & Refunds:**
    - Split payments (multiple methods per order)
    - Partial and full refunds with guided workflow
    - Custom payment types and tendered/cash change calculation
    - Print/email receipts and shipping labels
 * 🎁 **Coupons & Store Credit:**
    - Native WooCommerce coupon support (fixed, percent, store credit)
    - Store credit system: customers earn/redeem credit via email-restricted coupons
    - Configurable earn rates, sale item exclusions, and online/POS redemption
    - Coupon picker modal with real-time filtering and validation
 * 👥 **Customer Management:**
    - Search, select, and create customers on the fly
    - Guest checkout and customer-specific pricing/credit
    - Customer order history and loyalty tracking
 * 📦 **Inventory & Product Controls:**
    - Live product grid with stock status, variations, and private/hidden product
      support
    - Barcode generation and label printing
    - Category, sale, and new product filters
 * 🖨️ **Printing & Hardware:**
    - Print receipts and shipping labels (thermal printer support)
    - Experimental USB direct print for legacy hardware
    - Customizable receipt footer and store info
 * 🌙 **Modern UI & Accessibility:**
    - Responsive design for desktop, tablet, and mobile
    - Full dark mode and theme toggles
    - ARIA labels, keyboard shortcuts, and accessible modals
    - Customizable notifications and UI density
 * ⚙️ **Advanced Settings:**
    - In-app POS settings modal for all key options
    - Control store credit, receipt, appearance, and product grid
    - Visibility controls for private/hidden products
 * 🔒 **Security & Performance:**
    - All data stays on your site—no external APIs or cloud lock-in
    - Hardened AJAX endpoints, input validation, and capability checks
    - Optimized caching and instant UI updates

### About

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

This project was a labor of love shared with my co-developer and dear friend, Kia
Loy. This plugin is dedicated to his memory, as he sadly passed away in 2015. Kia’s
passion and expertise are woven into the very fabric of LoyCart, and I am committed
to maintaining his legacy through this work.

If you find value in this plugin, please consider making a donation. All proceeds
will go directly to supporting Kia’s family.

_Where can I get support or make a donation?_
 – Visit https://buymeacoffee.com/
loycart for support, feature requests, and updates.

### 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 or light mode preference based on the pos appearance Settings. You 
can also toggle dark mode using the toggle switch in the wordpress top bar 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 from the customers receipt, 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.

## نصب

 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.
 4. LoyCart POS will work without taxes, payment options, shipping or coupons configured
    in Woocommerce, but if you want any of those features to work in the POS you must
    first configure them in WooCommerce settings.

## نقد و بررسی‌ها

نقد و بررسی‌ای برای این افزونه یافت نشد.

## توسعه دهندگان و همکاران

“LoyCart-POS” نرم افزار متن باز است. افراد زیر در این افزونه مشارکت کرده‌اند.

مشارکت کنندگان

 *   [ Dave Herbert ](https://profiles.wordpress.org/daveherbert6614/)

[ترجمه “LoyCart-POS” به زبان شما.](https://translate.wordpress.org/projects/wp-plugins/loycart-pos)

### علاقه‌ مند به توسعه هستید؟

[Browse the code](https://plugins.trac.wordpress.org/browser/loycart-pos/), check
out the [SVN repository](https://plugins.svn.wordpress.org/loycart-pos/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/loycart-pos/) by
[RSS](https://plugins.trac.wordpress.org/log/loycart-pos/?limit=100&mode=stop_on_copy&format=rss).

## گزارش تغییرات

#### 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

 * 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.

#### 1.0.17 – 2026-02-11

 * Fixed: Admin bar dark/light mode toggle button now properly shows/hides based
   on the “Show Theme Toggle” setting in POS Settings modal.
 * Fixed: Hold/Resume sale button now correctly enables when cart is empty and held
   sales exist, instead of staying disabled after cart clearing. Button also properly
   shows “Hold Sale” when items are added to cart.
 * Fixed: Prevented the add-to-cart animation from playing when the button is disabled
   for products limited to one per customer already in the cart.
 * On the wordpress plugin directory page it states: This plugin hasn’t been tested
   with the latest three major releases of WordPress.
    It may no longer be maintained
   or supported and may have compatibility issues when used with more recent versions
   of WordPress.

This notice appeared due to a versioning typo in version 1.0.16 in our ‘Tested up
to’ tag (it was listed as 6.91 instead of 6.9).
 Please be assured that we always
test the plugin against the most recent stable release of WordPress to ensure full
compatibility. We have updated this readme.txt to reflect the correct versioning
and clear this notice.

#### 1.0.18 – 2026-02-14

UI Enhancements
 – Enhanced search input focus styling for better visibility. – 
Improved accessibility with ARIA labels added to key buttons and controls. – Refined
product grid hover effects and transitions. – Polished modal animations and dark
mode consistency. – Added checkbox in the POS settings to hide or show notification
messages in the POS header (default: hidden).

#### 1.0.19 – 2026-02-22

UI & Workflow Enhancements:
 – Added confirmation modal for Hold Sale: Users are
now prompted to add a note and confirm before holding a sale, preventing accidental
holds and improving workflow clarity. – Added confirmation modal for Clear Cart:
Users must now confirm before clearing the cart, reducing accidental cart clearing
and improving user experience.

Store Credit System Improvements:
 – Store credit coupons are now unpublished (set
to draft) when store credit is disabled, and republished when re-enabled. – Existing
store credit coupons are always reused and updated, never duplicated. – Store credit
coupons with a value of 0.00 are hidden from the coupon picker modal. – Coupon description
now includes the customer’s full name and email for easy identification. – Coupon
creation and update logic respects POS settings for sale item exclusions and customer-
specific restrictions. – Backend and modal logic improved for robust coupon management
and visibility.

#### 1.0.20 – 2028-02-22

 * POS settings now reliably persist across page reloads, browser cache clears, 
   and even survive aggressive cache plugins. Your preferences are always saved 
   and restored seamlessly.
 * Notifications now appear unobtrusively in the WordPress admin top bar and can
   be easily toggled on or off from the POS settings.
 * Hardened AJAX handlers with additional capability checks and input validation.

## اطلاعات

 *  نگارش **1.0.20**
 *  Last updated **2 ماه پیش**
 *  نصب‌های فعال **کمتر از 10**
 *  نگارش وردپرس ** 5.8 یا بالاتر **
 *  Tested up to **6.9.4**
 *  نگارش PHP ** 7.4 یا بالاتر **
 *  زبان
 * [English (US)](https://wordpress.org/plugins/loycart-pos/)
 * Tags
 * [pos](https://fa.wordpress.org/plugins/tags/pos/)[refunds](https://fa.wordpress.org/plugins/tags/refunds/)
   [retail](https://fa.wordpress.org/plugins/tags/retail/)[Split Payments](https://fa.wordpress.org/plugins/tags/split-payments/)
   [woocommerce](https://fa.wordpress.org/plugins/tags/woocommerce/)
 *  [نمایش پیشرفته](https://fa.wordpress.org/plugins/loycart-pos/advanced/)

## امتیازها

هنوز هیچ نقدی ارسال نشده است.

[Your review](https://wordpress.org/support/plugin/loycart-pos/reviews/#new-post)

[مشاهده همه بررسی‌ها](https://wordpress.org/support/plugin/loycart-pos/reviews/)

## مشارکت کنندگان

 *   [ Dave Herbert ](https://profiles.wordpress.org/daveherbert6614/)

## پشتیبانی

چیزی برای گفتن دارید؟ نیاز به کمک دارید؟

 [مشاهده انجمن پشتیبانی](https://wordpress.org/support/plugin/loycart-pos/)