PluginProbe
WCPOS – Point of Sale (POS) plugin for WooCommerce / 1.10.18
WCPOS – Point of Sale (POS) plugin for WooCommerce v1.10.18
1.10.19 1.10.18 1.10.17 1.10.16 1.10.15 1.10.13 1.10.14 1.10.12 1.10.11 1.10.10 1.10.9 1.10.8 untagged-3d9b7ccddc54df87c672 1.10.7 1.10.6 1.10.5 1.10.3 1.10.4 1.10.2 1.10.1 1.10.0 1.9.17 1.9.15 1.9.16 1.9.14 All 163 releases
woocommerce-pos / CONTEXT.md

CONTEXT.md in WCPOS – Point of Sale (POS) plugin for WooCommerce 1.10.18, at CONTEXT.md

67 lines 4.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 # WCPOS Free Plugin
2
3 Domain language for the `woocommerce-pos` WordPress plugin — the server-side foundation for WCPOS. Terms here are binding for code, docs, and reviews; architecture reviews and grilling sessions update this file as concepts crystallize.
4
5 ## Language
6
7 ### Settings
8
9 **Settings**:
10 User-configurable intent stored in `woocommerce_pos_settings_*` options and read through the Settings module. Distinct from Plugin State.
11 _Avoid_: options, config, preferences
12
13 **Settings Section**:
14 The unit that owns one settings group end to end: schema, defaults, sanitization, secret redaction, merge strategy, and (when not option-backed) custom read/write behaviour. Nine exist: general, checkout, tax_ids, payment_gateways, tools, visibility, cloud_print, access (role-backed), license (Pro-injected). Classes are named `{Id}_Section`.
15 _Avoid_: settings group, settings schema, settings tab
16
17 **Section Registry**:
18 The seam where Settings Sections are registered. The free plugin registers its nine; Pro and extensions register theirs through it instead of hooking ad-hoc filters.
19 _Avoid_: section manager, settings factory
20
21 **Plugin State**:
22 Machine bookkeeping stored in options but not user intent: site UUID, JWT secret keys, install timestamp, DB version. Owned by the module that uses it (e.g. Auth owns its secret keys), never by the Settings module.
23 _Avoid_: settings (for these), internal options
24
25 ### Receipts
26
27 **Receipt Data**:
28 The JSON payload a receipt template renders from: `order`, `store`, `cashier`, `customer`, `lines`, `fees`, `shipping`, `discounts`, `totals`, `tax`, `tax_summary`, `payments`, `refunds`, `fiscal`, `presentation_hints`. Built by a source (a live WooCommerce order, or the sample the template editor and gallery use), filtered through `woocommerce_pos_receipt_data`, then rendered identically on the server and offline in the app. Logic-less by ADR 0039: templates branch on data the payload carries.
29 _Avoid_: receipt JSON, receipt context, template data
30
31 **Receipt Section**:
32 One named block of Receipt Data and the shape of its rows. Money keys come in triples (`total`, `total_incl`, `total_excl`) with the bare key filled from the store's tax display basis. Row shapes and the aggregate rules of `totals` (subtotals, item counts, net total after refunds, savings completeness) are declared once in the Receipt Sections module; a source supplies priced values, it never declares keys.
33 _Avoid_: receipt block, payload part, builder output
34
35 ### Sync
36
37 **Collection Rule**:
38 One POS query behaviour for one collection — the params it claims, the clauses it contributes, the storage it targets — declared once in the Collection Rules module and applied identically on every read lane, so it cannot be wired into only one.
39 _Avoid_: query filter, orderby mapping, proxy mirror
40
41 **Read Lane**:
42 One of the two paths a collection read reaches the client by — the direct lane (`wcpos/v1` controllers, plus the flat `wcpos/v2` routes with no `wc/v3` proxy backing, e.g. `/variations`) and the proxy lane (`wcpos/v2``wc/v3`). Behaviour that exists on one lane only is a parity bug, not a design. (Code comments also say "lane" for the request shapes *within* one route — include lane, discovery lane; that narrower sense is not this term.)
43 _Avoid_: v1/v2 API, endpoint version
44
45 **Replica policy**:
46 What a collection's client-side copy aims to hold: `complete` (a full replica, e.g. products,
47 variations) or `windowed` (a bounded recent window of an unbounded set, e.g. orders).
48 _Avoid_: cache mode, sync mode
49
50 **Trickle**:
51 Low-priority idle seeding that pages a complete-replica collection down to the client until
52 it holds everything.
53 _Avoid_: background sync, prefetch
54
55 **Pointer stream**:
56 The journal-backed change signal (`/changes/sequence-log`): tiny id-pointers the client
57 filters and hydrates through the collection's read lane (the wc/v3 proxy — or the flat
58 route where the registry has no proxy lane, e.g. variations). The engine's single
59 transport paradigm.
60 _Avoid_: change feed, event stream
61
62 **Canonical revision**:
63 THE content fingerprint of a record — a sha256 over its schema-scoped, canonicalized wc/v3
64 serialization, computed at read time, never stored. The `baseRevision` a client echoes for
65 optimistic concurrency.
66 _Avoid_: version, hash (unqualified), rev
67