# Retail POS for WooCommerce — full changelog

= 1.0.3 =
* Pro: a trashed POS order stops counting. Both Pro tables gained a `trashed` flag, every SUM over
  them filters on it, and four hooks keep it true (woocommerce_trash_order / woocommerce_untrash_order
  under HPOS, wp_trash_post / untrashed_post under classic storage). 1.0.2 hooked permanent deletion
  and deliberately left the trash alone, on the argument that a restore must be lossless and the
  tender breakdown lives nowhere else. That argument was right about the DATA and wrong about the
  MONEY: the register sums the tender table, so a trashed sale kept paying into the drawer and the
  credit ledger kept the debt on the customer, and the only cure was to delete the order for good —
  the one act that cannot be undone. Flagging rather than deleting keeps both properties. The 1.0.3
  migration re-runs dbDelta for the column and then RECONCILES against the orders as they actually
  stand, because the hooks only ever see what happens next and every order trashed before this
  release is invisible to them. The reconcile costs the size of the trash, not the size of the order
  history (two statements, chunked IN ()). Call sites swept: RPSW_Register::cash_in/cash_refunds,
  RPSW_Payments::day_total, RPSW_Reports' payment-method breakdown, RPSW_Ledger::balance/aggregate/
  summary/ledger. Gated by suite-pro section PV.
* Listing: the wp.org display name drops the brand and gains the descriptor every ranking POS plugin
  in the directory carries. The slug is permanent and unchanged. Tags stop repeating one another and
  spend two of five slots (barcode scanner, retail) where no competing POS plugin is standing.

= 1.0.2 =
* Pro: deleting a POS order now clears its rows in the tender and credit-ledger tables, and an
  update migration purges rows whose order no longer resolves. Both tables key on order_id and
  neither had any deletion hook, so a deleted order kept summing into RPSW_Register::cash_in()
  and kept a debt on the customer. Found while shooting marketing screenshots: the register read
  1333.50 against surviving POS orders totalling 544.50. Hooks cover HPOS
  (woocommerce_delete_order) and classic storage (before_delete_post); the trash is deliberately
  NOT hooked, since a restored order could not get its tender breakdown back. Gated by
  suite-pro section PU.

= 1.0.1 =
* Accessibility: Sell, Dashboard, Orders, Returns and Labels render a screen-reader heading. The operational screens
  drop the WordPress page chrome on purpose and the h1 went with it; found by auditing the rendered page, not by a gate.
  The heading now comes from the two shared nav helpers, which is exactly the set of screens without a visible title,
  so a new screen cannot ship without one and no screen can end up with two. Covered by the free suite (section H).
* Pro: the Freemius licence-activation screen is fully translated for tr, pt_BR and ar. The SDK ships no catalogue for
  those three, and the shim previously carried only short chrome labels, so a Turkish buyer met one Turkish button in an
  otherwise English page — on the first screen after paying.

= 1.0.0 =
* First public release: sale terminal (scanner + phone camera), blind returns, POS order list with safe edit, barcode labels, dashboard, receipt printing.
* Fully translatable with an in-plugin language switcher; translated into English, Turkish, Spanish, German, French, Italian, Portuguese (Brazil) and Arabic. Built-in Help & support page.
* Pro: in-store (POS) pricing (per-product + bulk generator), split payments, partial payment with customer credit ledger, cash register / end of day, exchange terminal, campaign scenarios, profit reports, store activity feed.
* Documents the Pro version's Freemius licensing under "External services"; the free package ships no licensing or telemetry code at all.
