Tillbon - full changelog

The two most recent versions are also in readme.txt.

= 0.14.4 =
* The built-in manual covers correcting and deleting day closes, VAT on the receipt, and the Pro features: counting by brand, labels and staff codes.

= 0.14.3 =
* The receipt's styling and print script are separate files loaded the WordPress way, instead of written into the page.
* The updater for shops that installed from counterpos.app lives in a file of its own, which the wordpress.org build leaves out entirely.

= 0.14.2 =
* The receipt lists VAT per rate: the rate, the amount it was charged on, and the VAT.
* Till sales now show as "Point of Sale" in the Origin column of the WooCommerce order list, and count as such in WooCommerce's attribution reports, instead of "Unknown". Needs WooCommerce 10 or newer.

= 0.14.1 =
* Ready for wordpress.org: passes the official Plugin Check without errors (translator comments, one query now fully prepared).
* A large total, in crowns or forints, stays on one line instead of breaking in two.

= 0.14.0 =
* Works behind LiteSpeed Cache. That plugin stores logged-in REST answers by default, which made the day close insist the till was still closed right after it was opened. Every answer the till gets is now marked as not to be cached, by header and by the browser.
* Notices from other plugins appear above the till's header instead of inside it.
* The settings screen now says when it has saved, and why it refused something.
* The sold out report says so when no article keeps a stock figure, instead of calling an empty list good news.
* "Taken today" on the start screen subtracts what was paid back, the same way the day close does.
* Earlier day closes can be corrected and removed. A float typed wrong in the morning or a miscounted drawer no longer stays in the books: change it and what should have been in the drawer is worked out again. Removing a day close leaves its sales untouched. Only shop managers can do either.
* Room for add-ons on the till: a spot in the top bar, data that travels with a sale, and extra tables on the day close.

= 0.13.1 =
* Customers, loyalty cards and taking goods back are free. A till that cannot hand money back is not a till, so these belong in the part everyone gets.
* So does keeping your payment methods apart. The day close counts only the method you marked as cash, and with a single method allowed every card sale would have been counted into the drawer. A figure that is confidently wrong is worse than no figure.

= 0.13.0 =
* Stocktakes, purchase prices and the stock value have moved to a separate add-on, Tillbon Pro. Nothing is hidden or switched off in this plugin: that code simply is not here any more. If you were using those screens, install the add-on and they come back exactly as they were, counts and all.
* Everything else stays free and stays here: the till, scanning, checkout, the receipt, customers, returns, working offline, the scanner test screen, the day close, and the sold out and running low lists.
* Add-ons can now hook into the menu, the settings and the REST API properly, instead of the plugin having to know about them.

= 0.12.2 =
* Whole categories can now be left out of the stock value, in the settings. Plenty of shops keep expensive goods permanently in stock on paper because the supplier delivers within days; counting those as money on the shelves made the total meaningless. They still appear in the sold out and running low lists, and the till sells them exactly as before.

= 0.12.1 =
* The articles still missing a purchase price are now listed with the most valuable first, and show what that stock is worth at selling price. Filling in the forty expensive ones gets you most of a usable total; the four euro lures can wait.

= 0.12.0 =
* Updates arrive by themselves. The plugin now appears in your WordPress updates list like any other, so a fix no longer means hunting down a zip file.
* A scanner test screen, under Till > Scanner. Scan one article and it shows exactly what your scanner sent: the characters, the milliseconds between them, whether an Enter followed, and whether the code belongs to an article. It then says what to change, and can change it for you.
* Scanners that still think they are on a US keyboard are repaired. Every scanner leaves the factory set that way, so on a Belgian keyboard the digits 1234567890 arrive as punctuation and accented letters instead. The till now puts that back by itself, and only ever touches a code made up entirely of those characters, so a scan that was already right cannot be damaged. French AZERTY and German QWERTZ as well.
* You can name your scanner in the settings. Not required, but then the test screen knows what your model ought to be doing and can tell you when it is not.
* Stock reports, under Till > Reports. What is sold out, what is running low, and what your stock is worth. The sold out list is sorted by what actually sold over the last ninety days, so the top of it is your reorder list rather than four hundred names in alphabetical order.
* Purchase prices per article, for valuing your stock at the end of the year. Fill them in on the product, or load them in bulk from a file with the barcode in one column and the price in the other. Articles without a purchase price are reported separately instead of being quietly counted as worthless.
* Groundwork for the subscription: the paid extras now sit behind a single switch, which is off. Nothing changes for anyone yet.

= 0.11.1 =
* If the payment method marked as cash is not one the shop actually offers, the day close now says the drawer cannot be checked instead of quietly reporting the opening float as the expected amount.

= 0.11.0 =
* Day close. Open the till with the cash you start with, and at the end of the day see the takings per payment method, the refunds, and what should be in the drawer. Count it, type the number, and the difference is shown plainly. Only the payment method marked as cash counts towards the drawer.
* Every sale is stamped with the till session it belongs to, so the figures are exact and survive midnight.
* Earlier day closes are kept with what was expected, what was counted, the difference and a note.

= 0.10.1 =
* Fixed the offline catalogue: barcodes were stored under numeric keys, because PHP turns an array key that looks like a number into an integer, so only codes with a leading zero could be found again.
* The progress during a sync no longer shows a total it can never reach.

= 0.10.0 =
* Offline. The till keeps a copy of every article with a barcode in the browser, so scanning still works when the connection drops. A sale made offline is parked and sent automatically the moment the line is back. The header shows when you are offline and how many sales are waiting.
* Searching by name and anything to do with customers still needs a connection, and the till says so rather than failing silently.

= 0.9.0 =
* A manual inside the plugin, under Till > Manual, in English and Dutch. The text lives in /docs as one Markdown file per locale, so translating it means copying a file and writing.

= 0.8.0 =
* A visual refresh: a proper header bar, rounder cards with more air, a bigger total, and product thumbnails in the basket so you can see at a glance what you scanned.

= 0.7.1 =
* The stocktake review now lists the biggest differences first and asks you to check each one off, or send you back to the shelf to count it again. Only what is checked off is written to the shop, and there is a check-off-everything button for when you trust the lot.
* Scanning or editing a line clears its tick, because the number it was ticked for has changed.
* Barcodes that belong to no article are listed with a product search, so you can attach the barcode on the spot.

= 0.7.0 =
* Stocktakes. Start a count, walk the shop scanning the shelves, and the till keeps a running list with the counted number, the number in the shop and the difference. A count is absolute: three scans means three. Minus mode counts one off when you overshoot, lines can be edited or removed by hand, and the count survives closing the browser.
* Applying a count shows the differences first and only writes after a second tap. The counted number goes to every language version of the article, so a multilingual shop does not drift apart.
* After applying, the till can list articles in the same categories that still show stock but were never scanned, with tickboxes to set them to zero. These are the ones that are quietly sold out.
* Counts export to CSV.
* The scanner handling is now shared between the till and the stocktake.

= 0.6.0 =
* Returns. Open a sale, pick how many of each article come back, and the till books a real WooCommerce refund: it shows in the reports, the order keeps its history, and the goods go back in stock. Paying out asks twice.
* Payment methods are now a list you configure, shown as buttons at the till, and the chosen one is written on the order. Handy for keeping cash and card apart in the bookkeeping.

= 0.5.0 =
* The discount can now be a percentage, and that is the default.
* A discount given as an amount is the amount that comes off what the customer pays, VAT included. It used to be applied before VAT, so ten euro off took 12.10 off the total.
* The discount is taken off the lines themselves instead of added as a negative fee, so every article keeps its own VAT rate. Shops with mixed rates now get a correct split.

= 0.4.1 =
* Refuse to open or overwrite a sale that sits in the trash.
* Saving changes to an existing sale now asks twice, because overwriting a booked sale is one stray click away.

= 0.4.0 =
* Fixed the receipt link. wp_nonce_url returns an HTML escaped URL, and the &amp; in it reached the browser as literal text, so WordPress rejected the nonce with "the link you followed has expired".
* Search results are limited to the shop default language, so a multilingual shop no longer lists the same article four times. A second check drops repeated article codes.
* Clearing the basket now takes two taps on the button itself instead of a browser dialog, which some browsers swallowed.
* After checking out there is a New sale button, so you can go straight on to the next customer.

= 0.3.0 =
* A start screen: begin a new sale, or reopen an earlier one to correct it or reprint its receipt. Shows the number of sales and the amount taken today.
* Reopen a till sale and change its lines; stock is adjusted by the difference, but only when the order is in a state where WooCommerce had already taken it off.
* Redesigned throughout: larger type, card surfaces, a clearer total and bigger targets for use across a counter.

= 0.2.2 =
* Ship the Dutch translation for Belgium (nl_BE) as well, next to nl_NL.

= 0.2.1 =
* Fall back to another regional variant of the same language, so a Belgian shop (nl_BE) gets the Dutch translation instead of English.

= 0.2.0 =
* Customers. Scan a loyalty card to put the sale on that customer, or search registered customers by name, email or phone the way you would when adding an order by hand. People who have only ever ordered as a guest are findable too, and their details are copied onto the sale. Nothing chosen means Guest, as before.
* Hand out a card from the till: scan an unused card while a customer is selected and it is attached to them.
* The customer's billing details are read from the shop rather than taken from the browser, so a tampered request cannot write someone else's address onto an order.
* The receipt shows the customer's name.
* A support endpoint at counter-pos/v1/diag reporting locale and translation file state.

= 0.1.1 =
* Register the textdomain on init instead of plugins_loaded, so bundled translations actually load.
* Ship the translation as .mo as well as .l10n.php.
* Do not repeat the variation attributes in the basket line when WooCommerce already includes them in the name.

= 0.1.0 =
* First version: scanning, basket, discount, order, receipt, name search, attaching unknown barcodes.
