What’s New in Artisan POS 4.4

Change Log
Updated 3/9/2021

Click here for New major 4.4 Features.

(In descending order from the most recent, not all version numbers are released.)

(POS- numbers are for internal tracking reference, possibly associated with a support ticket.)
Version numbers in brackets [ ] is the version that a bug was introduced.



  • Fix null pointer exception displaying Net Price, or importing Item Records, when Item has no discount but one of its Category ancestors does. (POS-13741)
  • Fix Shopify interface to decode responses as UTF-8 characters. (POS-13739)



  • Fix for new check-box selection model to fix the conditions under which it adds the new warning when there are additional selected records that don’t match the current search (except when ALL records are selected).
  • Payment Processing: Allocate the Sales Tax proportionally in case of split tenders (to avoid decline for excess tax).(POS-13729)
  • ISI: Clarify labels for Online Descriptions in the Internet Store tab of the Item Record Screen to show where to put SEO Meta Description (among other things). Add a vertical scroll bar, if needed, to the Internet Store tab.(POS-13731)
  • (ISI) Order Loader: Fix duplicate customer insertion error when multiple transactions in the same batch have no customer specified; improve logging.



  • Fix for Purchase Order Report (PUR-006) to use Unit cost instead of Case cost.
  • Add additional confirmations for specific common mistakes during Cash Counting before recording an Adjustment.
  • Fix some vulnerabilities to inventory/sales line quantities that are too big to fit in the database fields.
  • ISI Order Download (and Sales Import): Discard payment lines (tenders) with zero amount. (Order will be placed on hold.)



  • Fix for Bulk Zero Uncounted to interpret the entered date as the beginning of the day, thus keeping counts accepted *during* the specified “oldest” day to keep.
  • Migration fix to handle missing Vendor Codes with wildcards (‘*’ and ‘?’, replaced by ‘-‘ and ‘/’).
  • Fix missing 3.5 version number in upgrade history record for the migration to 4.X. This also keeps it from complaining on first startup, if the 3.5 data had no user records, that user records are tampered with.



  • Fix migration, when resolving duplicate vendor names, to first replace “???” with the vendor code.
  • Fix migration of tax rates with minimum thresholds to correctly handle amounts exactly at the threshold. (Need to subtract one cent from the threshold value since it’s now the upper limit of the lower rate rather than the lower limit of the higher rate.)
  • Fix migration to avoid overflow in numeric field QTYONHAND in Sale Line when a line with an excess qty has a stock split.



  • More Checkbox Selection Model fixes. Bulk changes now honor user filters even in Selection mode (i.e. only matching records are included), with an extra warning in the confirmation when there are some (but not all) non-matching selected records. Reword record count footer to put selection count first, now only counting matching selected records.



  • Fix so percent-of-sale items work with negative sale totals (as they did in 3.5), by applying Minimum Price (new in 4.0) to the *magnitude* of the percentage regardless of sign. (POS-13712)
  • Allow Customer Forms to print on receipt printers as well as sheet printers.
  • Fix date format in CUS-110, Customer Sales Activity Export Report, to show months rather than minutes.
  • Restore currency symbols for Quick Cash Buttons and other places that used them.
  • Hide Quick Cash Buttons that are configured (in Sale Screen Options) to be zero.



  • Split GC into multiple lines if qty > 1, and attach one GC Code (as notes) to each one.
  • Fix inconsistency in the Checkbox Record Selection Model: Revert to the simple model that checkbox selections override all filters, including power searches; changing power search parameters no longer resets the selection (corresponding confirm removed as well). Disable checkbox selection mode in the Inventory Counting screen, like we already do for Inventory Transfer, since the potential for drastic error due to confusion when Accepting Counts was the reason for the reset model in the first place. (POS-13710)
  • Fix migration to correctly combine duplicate Number Blocks (by forcing a flush if needed).
  • Fix constraint violation in syncSiteProducts, with QTYRESERVE > QTYONHAND, either during upgrade step 4.4.346, or in general use.
    Major performance improvement for upgrade step 4.4.346.
  • More 4.4.431 upgrade step fixes: include references from Payment Log (even there shouldn’t have been any) and (unlikely but possible) Sales Slip Styles.
  • Fix (rare) missing case in 4.4.431 upgrade step where the incorrectly-migrated “Credit” payment type was set as the default payment type for credits (instead of the built-in “Store Credit”).
  • Merge incorrect payment types created by migration failure to rename 3.X “Credit” to latest 4.X “Store Credit” and “GC” to “GC (in-house)”. In cases where the “Credit” type was (manually) changed to a different Payment Class, recompute transaction and customer balances that might have been incorrectly recalculated in the 4.4.365 upgrade step. Also, in general, recalculate customer balances for some cases that were missed in the 4.4.365 upgrade step (when the balance was zero but the customer had any transactions with outstanding balances).



  • Sale Screen: Fix so selecting Return from the Out-Of-Stock Menu acts like other forms of Return and does a Smart Return (if enabled).
  • INV-153, Inventory Count Report w/Retail: Fix error when run for a specific site.
  • If a voided sale has an incorrectly-recorded non-sales line (based on the *current* item & category settings) that can’t be fixed silently during Shift- or Day-End Closing, leave it as is.



  • Fix to restore logging of error dialogs as log messages when in non-interactive mode (e.g. for ISI order imports).
  • Add Local Context to Help -> About.
  • Fixes for Repair Qty tool: handle deleted stock units with serial numbers; handle quantities bigger than (9,4).



  • INV-053 – Inventory Summary Report – Fix issues with specific sites and back-dating. Changed wording on the corrections field to help account for physical counts being performed after the inventory date, otherwise corrections are “undone” when the date goes back to prior to the corrections ocuring.  This is a very subtle but critical detail.



  • Loyalty Clubs: Fix failure to backdate memberships due to Constraint Violation Exception when any new point totals are negative.
  • Refinements to Purchase Order Forms PO-101 & PO-102, including adding Total Units/Cases, wrapping Vendor P/N and Item Code if too long, and allowing for 5 lines of Shipping Name & Address.
  • ISI: Expand special case for Authorize.net payment types in online orders to match “authorizenet” anywhere in the name, not just at the start. This corrects the oddly-spelled WooCommerce “ehauthorizenetaimcard” to be “Auth.net” like we’ve done for other variants.
  • Fix SLIP-S, Standard Full-Sheet Invoice, to handle multi-line Descriptions.
  • Fix fatal error trying to set “item” field to 1.0000 when choosing to Sell From Another Location upon adding an item to a sale that has no stock at the current location. (POS-13695)
  • Fix QB Export (External Accounting) to include XGC (External GC from Shopify) in Non-Sales Income. (POS-13696)
  • External Accounting (Export to QB): When Individual A/R Transactions are enabled, fix to separate by customer name as intended. Similarly, fix so Checks Paid are separated by Payee Name. (POS-13699)
  • ISI: When downloading orders, if the imported discount field is empty, use “0%”, not blank.
  • ISI: When downloading a Guest Order and Artisan requires a customer for the transaction, use a generic Internet Customer (or whatever Sale Source Name is configured for the task) instead of creating a customer record from the shipping info (which might be for a gift or drop-ship).



  • Skip Issued GCs when checking for detached payments, since they don’t have tenders (which caused false positives from recent changes to match on tenders only). This may be overkill, if it’s at all possible to produced detached Issue-GC payment transactions, but good enough for now, since it’s at least *much* harder than it is to produce regular detached payments.



  • Kurt Work around race condition between table cell editing and certain navigation operations, including changing the selection, by canceling editing, if necessary.
  • TranCloud: Remove Debit payment type button from Sale Screen and let the choice between Credit & Debit be made in the PIN Pad (based on the TranCloud configuration). If Debit is disabled in the Payment Processing Settings, force Credit Only.



  • Payment Processing: *Always* send Customer Code (a.k.a. PO #) for EMV “No-Touch” Credit Card sales (not Debit, EBT, etc) just in case a commercial card is used. (Even though theoretically only used for Purchase Cards, some processors require it for all commercial cards.) If a Customer PO was not provided (by using the Purchase Card payment type), use the 3-letter sale type and the slip number (but allow this to be bypassed with environment variable “NO_FAKE_L2C_PO=Y”).
  • Treat ValidationException as a Recoverable Exception.
  • SAL-052 – Best Sellers Report – Fixed issue with Sales by Customer.
  • INV-053 – Inventory Summary Report – Repaired multi-site totals, added Inventory by Site which will display the inventory for all locations.
  • Restore special case that allows you to set 3rd-Party Billing customers (if licensed) via the CustomerRecordScreen (to be used in the Sale Screen) even though most of the feature is NYI.



  • Fix migration to append “-MFR” to Vendor Codes for Manufacturers that conflict with 3.X Vendor Codes. Fix to process Manufacturers *after* Vendors, so Main Supplier field gets set correctly.



  • Fix INV-125, Inventory Tally Sheets, to honor filters and selections when run from Physical Inventory Counting screen (and present Item Filters when run directly from Report Designer). Fine-tune report layout and formatting, including putting expected count near the COUNT entry blank, for ease in entering discrepancies. Fix to not exclude items with QOH zero unless that option is selected. Fix to use Variant Order instead of plain SKU order.
  • Finish the 4.4.417 changes to approach for handling Detached Payments: Fix inconsistencies with Attach to Sale button in PaymentLogRecordScreen, and cover more cases.
  • (Add a comment to note that Shopify doesn’t support scheduled discounts.)
  • POS-13685: Fix failure to return correct set of selected records (for a Bulk Change) with check-box selection when a mixed selection was obtained by clearing individual selections w/o using the clear all button first. (4.5 has a different implementation, which does not have this problem.)
  • POS-13688: Fix failure of customer pop-up notes to pop up (in many cases).
  • Payment Processing Settings: Some fields related to Card On File and Zero-Dollar Auth weren’t checking current unsaved Optional Features settings while editing Configuration Settings.
  • Payment Processing: Add special cases for Card Brand to change “DCVR” as “Discover” and “DCLB” as “Diners” (for Diner’s Club). This then triggers the correct Payment Type instead of Generic Credit Card.
  • POS-13684: When importing from Excel, take the cached value of formula cells, not the formula itself.
  • Fix so default menu order for ITEM-SSL-19SX7E-3UP label is zero; it was accidentally set to 60 when it was first added.


  • Fix for 4.4.389 upgrade step if the IDESC column is missing from REGITEM.
  • Fixes for new Customer import matching (from 4.4.05), for some cases of false positives that tended to match records with no detailed info.
  • WooCommerce: Speed up Download task by skipping the category/tags/attributes download needed only for inventory uploads.


  • WEB-171- Internet Store – Check List Report – Added the ability to show the “Internet” price instead of in-store retail and other tweaks.
  • New card stock label SSL-900R rotated, includes new label form.
  • SAL-121 – Daily Sales Summary Report fix in COGS, inconsistencies. Also improved the Sales Breakdown section, added the day of the week, and removed all the user columns in lieu of a user table… which offers significant performance improvement.
  • Fix to remove slashes and other problematic characters from filenames for temp files when sending reports to email from the Report Viewer.
  • Shopify: Fix “Compare-at Price needs to be higher than Price” errors due to an incompatible Shopify change to reject it even when the two prices are the same.



  • Zoey/Magento: Fix null pointer exception during Download when the shipping address has no street.



  • Fix import of date fields in Item Record (Discount Start, Discount End, Count Date) and Category Record (Discount Start, Discount End).
  • Some errors in sale screens (or other screens) are unrecoverable; once they have occurred, any new record or changes on that screen cannot be saved. For the Sale Screen, rather than allowing the user to save again and get a misleading error that hides the original cause, repeat the original error with an “Unrecoverable Error” dialog that explains the situation.



  • Allow a coupon to be scanned at the coupon number prompt dialog. (It can still also be scanned directly in the sale screen.)
  • Fix null pointer exception checking station status in rare cases where a station record is set alive with no last activity time.
  • Fix missing actions for Add/Edit/Del buttons for Kit Details on the Item Record Screen (handler names were misspelled as singular rather than plural). (POS-13672)
  • Migration fix for data with missing posting station (from last posting), which was causing a transact_check when converting accthist or consignment statements.



  • 4.4.415: Set STKUNIT.RCVSITE, even for IT_OFF items, so Receiving Report includes them.


  • Fix possible race conditions finishing tenders in Sale Screen, especially with auto-save after a payment-processed tender. Restrict auto-save to payment-processed tenders that provide payment in full, not just minimum deposits (in case of a larger than a minimum split tender deposit).
  • Sales Labels: Add Printer Assignments option to Ask Before Printing Item Labels (if a main slip is printed).



  • SAL-101 – Sales by Item Report – Allow for Cost to be hidden so more users could run the report.
  • Sales Labels: Silently skip printing item labels when sold if configured item label printer(s) are not the correct printer type.
  • Force a stack trace to the log (and the error dialog) when a record error somehow occurs *without* an exception.
  • Add missing error logging (to log.txt) for a number of cases of record load errors displayed in error dialogs.
  • Sales Labels: Don’t “Print Labels When Sold” when Transact State is not Delivered or when printing slips in a batch.
  • Sales Labels: Enhance “Print Labels When Sold” to use the Print Labels Dialog when the Category’s Label Form is set to “(prompt)” and to skip items with zero Label Qty. In general, enhance Print Labels Dialog to only show the “Label Qty” note when some item being printed has a Label Qty > 1, and use the specific qty field name instead of “QOH, etc.” in the description of the second option: Use the Primary Quantity Field.



  • Fix stuck Sale Screen after Item Pop-Up Note (due to failure to add new scratch record). (POS-13671)
  • Migration from 3.5: Fix migration of Customer Types to include Markdown percentage.
  • New Feature: Sales Labels: Add new Optional Feature, “Print Labels When Sold”, which requires an Advanced Inventory license and is configured in Category Records. Items in configured categories use a specified label form to print one for each unit sold (times each item’s label quantity) when a main receipt is printed.



  • Migration from 3.5: Fix for assert (or unnecessary data loading) in some rare case while migrating Sales Lines.
  • TranCloud: Distinguish various Miscellaneous Errors and change them to corresponding specific response class codes, including Limit Exceeded (as DECLINE) and a new class for Card Removed from Terminal Too Soon.
  • Added Label Stock SSL-4X3-90 which is a rotated 4X3 label. (No label form is included at this time.) Updates to descriptions in other Label Stocks larger than 2X1.
  • Fix for the subtle case with new original value implementation when a new record is saved twice. Probably only happens during migration from 3.5 with a missing item that is recreated.
  • Remote Operation: Special case to clear Transact Sale Date if an incoming changesets TSTAT * backward* from Delivered (5) to non-delivered (1 through 4).



  • Customer Record Import: Improved secondary matching (that is, heuristic matching of non-unique fields when the primary field – in this case, Customer ID – isn’t present) to take into account additional fields like email, phone numbers, and DOB, and to give different fields different weights based on their relative uniqueness.
  • Fix NullPointerException creating variant items for new base product records; this also prevented new sample data from being created.
  • ISI and Order Import: When importing orders w/o customers (such as “Guest” online sales) and creating a corresponding Artisan customer record from the order’s shipping address, also include shipping email, fax, and phone.
  • Sale Screen: Fix to recompute tender amount after switching from payment pane to the main sale pain and back, in case the sale was changed to result in a different total amount, when using Alt-1 or the Sale button itself rather than with Escape (or with Escape first). The escape route was already working. (POS-13666)
  • Add TranCloud support for Purchasing Card Level 2 Data. In general, when Level 2 Data is enabled in Payment Processing Settings (for those Processing Methods that support it: currently, TranCloud, PayGuardian, PAX Direct, OpenEdge HostPay, OpenEdge Gateway [Innovo], BridgePay Gateway, and Payment Logistics Gateway) we now provide a separate “Purchasing Card” payment button, to prompt for the required Customer PO # even in no-touch (EMV PIN Pad) cases. We now *always* send the Tax Amount, so we meet Level 2 for Business and Corporate cards w/o any extra prompting.
  • Shopify: Update to 2020-10 Shopify API (no changes). When downloading orders with purchases of Shopify Gift Cards, add the last 4 digits of the GC code as a note line on the sale (starting with “# … “).



  • Fix so these two Sales Screen Options work together: Log Out After Each Sale, and Prompt For Customer At Beginning Of Sale. Also, extend the auto log-out behavior to include discarded sales; in fact, any time a sale screen is closed unless it was an unmodified recalled sale. (POS-13665)
  • Make sure that DatabaseRecord.originalValue() works in case it gets called from afterSave() for an (originally) new record. (POS-13661)
  • Tightening the commit-edit vs save-form race condition (when Save button pressed w/o moving off of a changed field) yet again. Nth time’s the charm? This time the problem (only) occurred when changing QOH on the main screen of a new Item record with Location-Tracking on. (POS-13661)
  • Recompute tampering check for Security Settings, which was missed during 4.4.389 upgrade step that added a new task setting.
  • Remote Operation: Critical fixes for forwarding.
  • CUS-111 – Customer Export Report with Sales/Margins: Fix to run in Sample Data. Change to show actual YTD Sales/COGS/Margin in addition to (now labeled) Last 1yr Sales/COGS/Margin. Fix half of the headers had underlines; remove them.
  • DataVision: Because a User Table expression is written as a select statement, users sometimes (incorrectly) put a semicolon at the end. Strip it off, since the report generator will already be adding one (between this and the next statement), and some databases (like Apache Derby) don’t like double semicolons.
  • DataVision: Fix SQL errors when a power search filter parameter for a report has no filter condition set (due to failure of ParserHelper to correctly detect the beginning of the clause to replace in some cases).



  • FIN-112 – Buy From Customer Report implemented, started SAL-156 – Item Reorder Report.
  • Remote Operation: Ignore duplicate inserts with same record ID and same natural ID(s).



  • Critical Fix for Product Variants: Make sure Sale Screen puts the selected Variant on the sale, not the Base Product.
  • Fix so new Vendor initialization of “Include in Internet Store” honors the *Vendor Record* Defaults setting, not the Item Record Defaults.



  • Fix assert or error when using Buy From Customer with an item with inventory tracking off (“Unit Cost must be greater than or equal to 0”).
  • Fix occasional Concurrent Modification Exception when turning inventory tracking off for an item (such as during import of Product Variants).
  • Implemented SAL-156 – Item Reorder Report, which was tentatively named PUR-007. In 3.5 is SAL-156, now under the Purchasing Menu.
  • Another enhancement to the Sale Screen’s Out Of Stock Warning Menu: a new choice to Return Item (when adding a new line to the sale). This is a shortcut for choosing Sell Anyway and then Return (or the Keypad-Minus).
  • When Remote Operation is turned OFF, reset the scope for the main (now the only) data to allow ALL sites/stations to connect (directly).



  • New sheet Label Stock for Avery 5162 (4 x 1.3 inches, 14 per page)
  • Fix crash under specific conditions while turning off inventory tracking for an item that has inventory on hand that was ordered on a PO when there are also outstanding reorder requests for some item on that PO.
  • Remote Operation: Fix failure to handle forwarding of 3rd-party messages to new remote nodes. Should solve occasional need to force retransmits after creating multiple nodes.
  • Sales Slip Style Conditions: Add 2 new options for Payment Type condition: “ANY Credit OR Debit Card” and “Any EXCEPT Credit & Debit Cards”. “Debit” also includes EBT or any other PIN-based Payment Type. (This is in addition to the existing options for Credit Cards, which *exclude* Debit/EBT, etc.)
  • Fix Import of Product Variant Items to give an error if the Product Variants feature is not enabled/licensed, rather than silently skipping the final processing step.
  • Import Manager: If a “Base Product” (or “BASEPROD”) column is provided for Item or Variant Item imports, silently skip input rows when Item import has a non-empty Base Product or Variant import has an empty Base Product.
  • Shopify: When downloading Customers, if Shopify record is set to NOT Accepts Marketing, set the Artisan No Mail flag (but NOT vice versa).
  • MCH-140 – Slow Moving Inventory Report – Significant improvements with more filter choices and a Sales Over Inventory filter and field.
  • SAL-101 – Sales by Item – Added ability to filter by Only Sales Returns.
  • EMP-163 – Employee Performance Report – Added optional Item Detail and general improvements.
  • Instead of rejecting all changes to PO Lines that have already been received, allow changes to the same fields that the Receiving Log detail screen allows: Cost, UOM, Case Size, and Vendor’s P/N.
  • Fix assert in stockUnitCostChanged when saving sale of a consignment item with a different cost (consignor split) than some prior sales.
  • Low-level table cell navigation fixes to avoid various glitches, especially when the value in the cell (or form field) currently being edited doesn’t meet all of the requirements placed on it by an input verifier. (Specifically, this previously made it hard to recover after attempting to leave a field/cell who’s string value was too long.) (POS-13650)
  • Updated INV-056 – Inventory Adjustment Detail Report – added a consignment inventory filter 3-way option.
  • CUS-106 – Added First Name and Last Name as additional fields on the Customer Email Export report.
  • Fix so DataVision preferences (like viewer scale factor and export file type) don’t get reset during some upgrades.
  • Fix to not confirm saving changes to Variant Templates with NO existing Base Products.
  • 4.4.399: Fix failure to set the Retail Price, and hence the Cost for Consignment items, on sale lines when a Sale Type of Breakage or Internal Use is selected *before* putting the item(s) on the sale. Find and repair existing occurrences during the upgrade. (POS-13654)
  • WooCommerce: If WordPress user name is “&”, use Bearer Token authentication (using the “WordPress Password”) instead of Basic Authentication. Intended for use with the “WordPress REST API Authentication” plugin (a.k.a. “miniOrange API Authentication”), set to use an “API Key”.
  • Fix null pointer in a new error context string when an error happens before a database is open.



  • Shopify/Magento/Zoey: These all have both a main customer name and a name from a default billing address; Artisan doesn’t distinguish them; change the customer download to take the billing name if non-blank, else use the main name. (POS-13648)
  • WooCommerce: Fix to download *all* types of customers/users who have orders (default was “Customer” type only, not Admins or other user types). 2) Woo has both a main customer name and a billing name; Artisan doesn’t distinguish them; change the Woo download to take the billing name if non-blank, else use the main name. (POS-13648)
  • Fix IllegalStateException when running Day-End (Reprint) Sales Summary Report with Inventory Location Tracking enabled. (POS-13652)
  • Kurt Improved Vendor Product editing: Fix duplication of table entries on screen (in Item Record Screen). Disallow creation of *actual* duplicate records (i.e. with duplicate vendors). Remove entries with missing vendors before save.
  • Added PO Form PO-102 Purchase Order w/Case Size.



  • Payment Log Reports PPL-401 and PPL-402. Minor fix for handling credits and consistency in field sizes to prevent potential issues.
  • SAL-052 (Best Seller’s Report): Fix to handle mixed-mode cases where a Sale Site is not also an Inventory Site (such as with Internet sales) [major rework of SAL-052 to handle all cases]. Report Engine: When a report uses both an Inventory Site parameter and a Sale Site parameter, use the chosen (sale) site’s default inventory location as the Inventory Site parameter value. (POS-13649)
  • Force (2-digit) zero-padding for M1 OTB Store Numbers.
  • Fix to prevent typing in specific power search panels from looking up records prematurely (while typing in text box, rather than waiting for Enter, Tab, etc.).



  • Fix Stack Overflow turning inventory tracking on for an item with pending reservations.
  • CRITICAL CHANGE: Avoid item_check or siteprod_check when QTYRESERVE > QTYONHAND by reducing QTYRESERVE on save if necessary; silently log this change in log.txt, along with a stack trace of the offending code.
  • Add “Error Context Info” (in square brackets, including Artisan version, time, station, and Java version) to the bottom of error dialogs and above errors in log.txt. Simplify fatal error stack traces to show just the root cause.
  • Possible fix for potential race condition saving sale when required customer added after Save button. Also, if a shipped sale is turned into a Sales Order while saving, and sale was previously saved and recalled, make sure it’s open for modification *before* changing the Sale Type. When saving sale fails, move to the end of the tender table (if enabled). Fix cases where Tender amount resets to zero instead of the balance due (especially after a failed save). (POS-13635)
  • Fix various problems and inconsistencies with “mask formatted” fields, like US & CA postal codes, and North American phone numbers. In particular, allow currently-invalid strings to be edited or deleted. (This could happen when Country is changed from one that uses free-format postal codes and phone numbers to one that enforces a mask pattern.) (POS-13646)



  • MCH-054 – Merchandise Performance Report – Added Category Rollup.
  • Migration: Replace question marks (now explicitly illegal) in item/category/vendor codes with slashes (‘/’). (In some unusual import cases, 3.X generated item codes with ‘?’ plus 14 digits.)
  • ISI: When matching tax types on downloaded orders, resolve duplicates in preference of lowest menu order, then alphabetically by short name.
  • When printing in non-interactive mode (such as when downloading Internet orders), ignore Preview flags and print according to the normal settings.
  • Add another choice for ABT and External Order receipt auto-printing: “ALL (including HOLD)”. The default is still “All Except HOLD”. (POS-13644)



  • WooCommerce: Critial Fix: Use authenticated rather than anonymous HTTP GET when downloading images for comparison.
  • WooCommerce: Change query pagination to use X-WP-TotalPages header to detect ends of response lists more effectively. (In one case, loadAttributes with a single response was looping forever.)\
  • 4.4.391: When deleting Loyalty Clubs or changing the rules such that some Customers are no longer eligible, delete summaries for deleted (and hidden) Customer Records as well as visible ones. Delete any such leftover summaries during the upgrade.
  • Remove redundant check for loaded data in commitNewRecord for Child & Map Table Data Providers.
  • Change so Loyalty Clubs don’t include GC sales unless they *explicitly* include GC in the categories to include (in which case they are also subtracted from the recipient’s points when redeemed). Fixes problem where default was to add when issued but not subtract when redeemed.
  • Fix Sales by Hour section of Sales Summary Report (SAL-051) to use correct calculation for numbers of days of each weekday in the period.
  • Fix potential race condition where a record table screen started by a record lookup or device scan/swipe repeats the initial search after the search start delay instead of only doing it immediately.



  • Wording enhancements and new options for OOS Warning menu in Sale Screen: Sell Anyway vs Sales Order vs Special Order. (See POS-13634 comment for details.) (POS-13634)
  • Update Feature Release Schedule
  • Major Feature: Implement Gift Registry. (POS-12904,POS-10966,POS-10526,POS-10503)
  • DataVision: Fix null pointer when report uses form messages but no parameters where preset (e.g. when running from Designer).



  • 4.4.387: Fix incorrect Item Purchase Summary after voids. (Recalculate during upgrade).



  • Sale Screen: Fix misplaced or missing surcharge lines, “unsaved transient value” error, and other anomolies in surcharge handling.
    Sale Screen: Show Item Details and allow Ctrl-F4 for all visible item lines, even R/O lines.



  • New Label Form 1 3/16″ X 7/8 – 3 Across Label (SSL-19SX7E-3UP).
  • Report Engine: Show month name fields (such as Birth Month, Anniversary Month) as the month names when Translate Names is selected, rather than the zero-based internal numeric form.
  • Make Variant Import more forgiving on punctuation in SKU: only treat dash, slash, and plus as variant delimiters. Add message on (either error or successful) completion of Variant Loader.
  • 4.4.384: Increase the max length of power search filter list fields (like Item Code(s), Vendor Code(s), etc.) from 100 to 500.
  • ISI: Preserve time portion of Timestamp fields (like Discount Start Date and Discount End Date). Probably needed to work with WooCommerce 4.3.3; 4.3.2 is broken entirely, because it doesn’t accept blank dates.
  • Fix typo in Report Cost Level choice name.
  • Fix numerous label forms that crashed with long item codes due to size limit of 20 instead of 25. Fix INV-220 to have correct size limts for attribute and variant names.



  • Restore behavior of resetting transact date/time and station when starting a new sale or modifying a recalled Hold sale.



  • Fine-tune Vendor Invoice buttons. Add Ctrl-A Invoice ALL (set Inv Qty = PO Qty for all received units). Allow Qty to be decremented to zero. (POS-13619)
  • Fix delayed duplication of Item Pop-Up Notes on Sale Screen (second one delayed until the next line item is added) (POS-13631).
  • 4.4.381: Fix for null error in 4.4.379 upgrade step (moved to 381).
  • SAL-057 – Receipt Printer Day End – Hide Profit line when user does not have permission to see cost.



  • DataVision: use 0.8 of normal line spacing for wrapped lines on labels, since labels have less room than full sheets. CPLLE: Fine-tune font selection, including using fixed-size fonts when within half a point of the required size.
  • TranCloud: Allow direction communication with the TranCloud (default is via DataCap website, to allow for dynamic IP) by putting an “@” and the IP Address after the Device ID in the Payment Processing Settings. Note that in direct mode, TranCloud does not support “queries” (confirmation of results of prior transactions), so timeouts will not be able to confirm whether or not the payment transaction was actually submitted and/or approved.
  • Improvements for 4.4.346 upgrade step (Multi-Site only).
  • SAL-057 – Add check for the Hide Cost flag for the new Profit Line feature.
  • Fix potential crash trying to cast a masked credit card number string to an integer in upgrade step 4.4.365, AR-101 A/R Statement Form, and/or AccountBalanceCorrectionScreen, depending on the order in which the database happens to execute the corresponding queries.
  • Fox crash using new “Discounted Price (Net)” in Item Record Screens. (POS-13616)
  • 4.4.378: Fix improperly migrated Best-Of Percentage Coupon sales lines. This fixes a specific transact_check exception when preparing sales for Day-End posting, but change that code in general to give a more specific error message should there be other cases where fixing a sales line to be *not* non-sales would cause the sale to require a tax exemption type. Change the Sale Screen and Price Check Screen Item Details to show coupons as just a negative discount amount, rather than, for example, “0.00 -30%”. (POS-13622)
  • Fix phone number fields to accept extensions with no spaces before the “x” (like they were in 3.5). Keep invalid initial strings in mask-formatted fields rather than clearing them; they become un-editable, but at least you can see what the problem is, and displaying a record field doesn’t change its value. Fix so sale screen customer shipping address change prompt doesn’t cancel the in-progress change to ShipVia. Add shipping phone number to the customer shipping address change prompt. (POS-13625)




  • Shopify: Upload zero weights explicitly; they made an incompatible change to not accept empty strings as zero. (POS-13624)
  • Simplify checkForTaxRateChange (when opening a recalled sale for modification) to check/update each Tax Summary Record once, rather than once per sale line. (Possibly/partially related to POS-13625.)
  • Fix null pointer displaying Day-End Reprint posting selection and other non-search, sortable lists w/o primary fields. [Broken by Receiving Screen ordering changes in 4.4.374.] (POS-13626)
  • ISI: Fix the new “Hide Out-Of-Stock” option to handle variants correctly. Add a new one-shot option to Upload SINGLE Record (or records, with a prefix match).



  • WooCommerce: Fix null pointer preparing upload for a variant item when the base product upload failed.
  • Additional cleanup of Internet Store Layout Options field for cases missed in 4.4.357 upgrade step.
  • Minor performance improvements for Reset YTD Sales; also, record update count is now only those that actually changed.
  • Record Table Screens: Fix for focus jumping to the main search field while typing into advanced filters. Fine-tune handling of search start timing, especially when typing in power search fields. When deleting an Advanced Filter row, move focus to the nearest match value field. (POS-12713)
  • Increase the max length of Artisan Tasks log output to 500K characters (from 50K).
  • Remove zero-qty Pending Transfers. Enforce PENDXFER.QTYPEND > 0. (When Pending Transfer Qty is reduced to zero the record is deleted instead.)
  • Improve Receiving Rollup Sort Order (POS-13615)
  • INV-065 – Inventory Summary by Category by Vendor – Added secondary sort order.
  • MCH-054 – Merchandise Performance Report – Recent updates published.
  • Updated Refresh16.png to improve performance.



  • Fix fatal error when changing Cost on a Vendor Invoice line. (POS-13611)
  • Fix Receiving Rollup to show the total expected qty correctly.
  • MCH-054 – Merchandise Performance Report – completed the work for the Category and Vendor filtering. Now works with the Vendor Summary.
  • Fix hung screen after failed authorization to run the report.
  • Fix null pointer if a print-only report (like Inventory Manifest) is not supported in Sample Data mode.



  • Minor ISI optimization.
  • ISI Enhancements: 3 new task settings: Hide Out-Of-Stock Items Custom Field(s) to Add to Descriptions Custom Field for Vendor (Shopify Only) (POS-13605)
  • Fix Inventory Transfer & Pending Transfer Screens to include Pending Transfers even when Src QOH (and even Pending Qty) are zero.
  • Fix null pointer opening Item Record with Location Tracking. (Broken in 4.4.370)
  • DataVision: (Final version of:) When saving report XML, write lists of elements (formulas, parameters, etc.) in ID order. (Missed files from first check-in.)



  • Fix “scrambled” label printing from Receiving (broken by changes to allow receiving extra quantities in 4.4.348); now always sort in PO Line order, followed by Variant Order (including base Item Code). When printing receiving labels for more than one site put the site name and number in the dialog titles.



  • Add ArtisanTasks-Command launcher to run the Artisan Task Manager from the command line.
  • ISI: Show count of changed items/categories at start of upload.
  • Migration fix for “QuerySyntaxException: unexpected end of subtree [from com.certek.artisan.data.ff where transact.id in () order by transact.id, lineNumber]” when > 10,000 kit sales lines.
  • Merchandise Performance Report – MCH-054 – added filter by Vendor and/or Category. Fixes for Non-Sales items such as GC and Coupons. Hides zero rows as needed.
  • DataVision: When saving report XML, write lists of elements (formulas, parameters, etc.) in ID order.
  • Fix so Internet Store Checklist will run from the Pull-down menu.
  • Migration: Fix IllegalArgumentException in priceln when a pricing chart has no line items.
  • Fix proper-case formatting to be more consistent about have underscores make a word all upper-case. Fix Product Tags field (and any other proper-case comma-list fields) to use “override-allowed” formatting (vs “force-casing”, typically used in upper-case fields) as originally intended.
  • Put back missing F7 = Bulk Resolve on Pending Stock Corrections screen.
  • Remote Operation: Fix for station record stuck in “solitary” mode (and thus not usable for a new remote) after error while preparing a remote for that station.



  • Fix M1 OTB Export, MCH-223, Retail Planning Report, and MCH-054, Merchandise Performance Report, to also include Return To Vendor and Breakage when recorded via the Sale Screen. Fix a number of subtle inconsistencies in MCH-054 to match M1 OTB / MCH-223. Minor formatting fixes. Remove special cases from before tranline.retail was maintained for hidden STK tranlines too.
  • Fix ChildTableDataProvider & MapTableDataProvider to allocate their own proxy data session when necessary, so later access to proxied objects referenced from the child records don’t fail with a Lazy Initialization Exception when the data was previously loaded w/o a data worker. Optimize TranLineRecord.hasStockRecords to skip line stock data lookup when the TranLineRecord is a new record.
  • When saving a sale with a changed customer, lock the old customer record(s) as well as the new one(s). (POS-13600)
  • Migration: Handle data with over 64,000 kit sales.
  • Fix null pointer in record table searches from missing match type (left as “<pick one>”) after changing from a text search field to a numeric one.
  • Fix failure to set record table sort field based on search field.
  • Fix TranCloud Processor-Based GCs to put “PrePaid” in “TranType” instead of “CardType”.
  • Allow Customer Type cost mark UP to go up to 999%; mark DOWN still limited to 100%.
  • Fix failure to handle GC and other scans/swipes from specific dialog boxes. (POS-13587)
  • Clip customer total slips to zero if negative during migration. (POS-13600)



  • Implement Processor-Based Gift Cards: Split GC into GC (In-House) and GC (Processor), independently configurable, including new authorization level to issue new GCs. Processor-Based GCs must also be enabled in Payment Processing Settings (for Integrated *or* External Processing). When only one type is enabled, the shorthand name “GC” is used. Initially supported only for Test (“Fake”) Payment Processing and TranCloud.
  • Fix incorrect tripling of line stock quantity on Deposit and On Acct Payment lines when saving unrelated changes to a sale, along with corresponding corruption of the target transaction’s external amount paid. Upgrade repairs these and recomputes the external amount paid. (POS-13598)
  • Fix (long-standing) problem where recalling a sale and only changing a Tender, when the tender change involves prompting for info (such as a check number), fails to save the change. More generally, when the tender info prompting screen is used to make changes, it was marking the tender as unchanged; if something else in the sale was changed, all the changes would get saved (including the changes to that tender).
  • Lock primary record on saving, even if it’s not directly dirty (but some child records are dirty); this fixes an assert, but also possibly some rare race conditions.
  • Fix (ISI or other) order import to set Cashier to <Import> instead of <Artisan>.
  • Fix so changing Processing Method in Payment Processing Settings sets Confirm Amount to No.
  • Fix duplication of Extended Description on sales. (POS-13593)
  • Fix Receiving crash from the interaction between Pending Stock Corrections and Receiving Transfers.
  • Fix so Ctrl-A in receiving is considered non-interactive, and fix to trigger Auto-Detail (Distributed Receiving) only from interactive changes.
  • INV-065 – Inventory by Category by Vendor Report – Major improvements and cleanup.



  • Yet another MapTableDataProvider locking refinement as a possible fix for continuing problems with multi-site POs.
  • Migration: Repair negative average costs in Item Records (by setting to zero).
  • Make sure Add Missing Sale (from Payment Log) doesn’t recreate any tenders that have already been voided. (POS-13595)
  • Payment Processing Settings: Change default for “Confirm Amount” to No.



  • Migration: Fix for NonUniqueObjectException converting Sales Lines in rare cases of lines with mismatched item codes.
  • Disallow posting Shift #10 rather than crashing with a constraint violation.



  • Remote Operation: Fix Remove Node to flush after deleting number blocks, to prevent duplicate constraint violation.
  • MCH-149 – Variant Sales Analysis Report: – Added Group By Parameter
  • Fix migration to ignore extra “system” records and avoid crash on blank Discount Type field in Customer Types.
  • Fix migration to merge duplicate Pricing Schemes and Variant Templates instead of crashing.



  • Remove the Obsolete INV-220 Product Variant Matrix Report. Now use MCH-149 – Variant Sales Analysis Report under Merchandising Reports.
  • MCH-149 – Variant Sales Analysis Report: Add Vendor P/N search and optimizations.



  • Don’t count a station with only voided sales unposted as an open shift to prevent an overall Day-End closing. (POS-13590)
  • Rework upgrade processing to do (almost) all inserts as post-init steps and to run post-init steps *after* re-enabling remote logging (when Remote Operation is turned on) and only at the main site. (4.4.144 is now oldest version that can be upgraded while remote).



  • Allow Receive by PO screen to be sorted (by clicking column headers) like other receiving screens.
  • Remote Operation fix for “Update of REMOTE_STATE failed” after “Deleting Remote State for DEAD node” (in other words, a remote node that was removed).
  • More Site Product map initialization race condition fixes (which possibly fix PO / Inventory Transfer crashes).



  • Fix for out of order Variant Values on migration when more than 9 values for an Attribute.
  • Fix to copy value lists when copying Variant Templates, as well as other child record lists when copying Item Records, etc.
  • Major performance improvement for migration of Variant Items (including Base Products). Some overall migration performance improvement. During migration, repair variant items that refer to the wrong Variant Template (by using the template from their Base Products instead).



  • Fix inability to enter “1” digits in phone number fields.
  • Fix migration of Internet Store Defaults to remove “TRUE” and “FALSE” from Layout Options and fix other swapped or missing fields.
  • Add UPC as an available virtual column on PO screen, receiving log, etc.



  • Fix so Discount-related fields sync to Variant Items correctly (when Template has Individual Discounts unchecked). Lock variant items when syncing from base products; this avoids discarded changes when turning inventory tracking off. (POS-13585)
  • Fix Cash Counter Report issue with displaying the station number.
  • Improve error message for too-long and duplicate variant SKUs when creating Variant Items from their Base Products. (POS-13586)



  • Enhancement for “mask formatted” fields like phone numbers, zip codes, and expiration dates, to ignore extra punctuation. This allows more flexibility for import, for example (such as allowing “(nnn) nnn-nnnn” or “nnn-nnn-nnnn”).
  • SAL-051 – Sales Summary Report, Sales by Station – There’s now an option to report by station.
  • Data fix for incorrect PO Received Amount when PO has any Shipping Cost. (Received Amount should include [exact] Shipping Cost.)
  • Migration fixes (and performance): compute vendor invoice and PO totals after converting all stock units, instead of incrementally.
  • Fix import to count a record as unchanged even if initially changed when all changes are reverted in finishImport.
  • When saving a Customer Record, if Customer Since was cleared, fill it in with the current date/time.
  • Fix Customer Import to preserve Customer Since (unless explicitly imported) when updating an existing record.
  • When importing (or pasting) North American phone numbers, strip off optional “+1” or “1” prefix.
  • When an import matches both deleted and non-deleted existing records, prefer the (first) non-deleted one. If only a deleted record matches, un-delete it. (Later, we may want to do a “replace” in this case, rather than an “update”.)
  • Remote Operation: Fix error when trying to merge duplicate Feature Codes from multiple nodes.
  • Remote Operation: Workaround for occasional problem where we can receive a *STKUNIT* delete after we’ve already created additional LINESTOCK references; delete the LINESTOCK records first.
  • When importing phone numbers and zip codes, make dashes optional.



  • Remote Operation: Workaround for an occasional problem where we can receive a TRANLINE delete after we’ve already created additional LINESTOCK references; delete the LINESTOCK records first.



  • INV-125 – Inventory Tally Sheet – Implement Inventory Sites and filter by in-stock at inventory location.



  • Add Day-End Reprint report option “Complete Sales Summary By Station”, which repeats the entire Sales Summary report with a filter by each sales station (but with a single prompt for parameters).
  • Enforce non-blank Discount field in Category and Item Records. (Change to “0%” on import and upgrade.)
  • Add Site parameter (with site number or blank) to Inventory Tally Sheet parameter presets.
  • Fix new check for records not in session to skip *new* records. (POS-13583)
  • Fix so changes to Remote Number reservation sizes actually get saved.
  • Fix assert failure during receiving when there are no matching items.
  • Fix for multi-site Receive w/o PO to correctly handle cross-site quantities as transfers rather than Out Of Stock.
  • Fix for multi-site Receive w/o PO to not duplicate Receiving Rollups for each Site.
  • ReportEngine: Fix to not skip page breaks for blank subreports if the section isn’t set to hide blanks.
  • Improve Remote Number Reservations to check for numbers actually in use (like number allocation does) to avoid (rare) cases where remote nodes can be left without any available numbers even though the remotes are syncing. When removing a remote node, reassign its (at least 75% consumed) number blocks to the main site so they don’t get handed out again later.



  • Support receiving more than expected (on order), including redistributing to other sites in multi-site cases.
  • Fill in blank descriptions in transaction lines with “—“.
  • Don’t offer to add new record on Enter with no match on table screens with no Add function (such as Recall Sale).
  • SAL-051, SAL-057 Sales Summary Reports: Implement Tips, Checks Paid, Late Fees, Vendor Fees; general refinements.



  • Yet another fix for MapTableDataProvider (“a collection with cascade=”all-delete-orphan” was no longer referenced”).



  • Implement Sticky Quick Pick which allows for repeats such as multiple beverages or tickets sales. (POS-13538)
  • Fix for upgrade steps to work with PostgreSQL 11 and 12. Still not recommend, version 9.6 and 10 are stable.
  • SAL-051 – Sales Summary Report – Added Total Profit to report when cost not hidden.
  • Check (again) for missing Site Products, Vendor Products, and Item Price Levels during an upgrade.
  • Migration: Fix null-pointer during Pricing Schemes. (POS-13538)



  • Implement “Buy From Customer”, Allow Sale Type to change between Normal and Buy From Customer until finalized. Tighter controls on switching Sale Types in general. SAL-057 (Day-End Sales Summary for Receipt Printer): Fine-tune section header formatting. (POS-10754, POS-12921)
  • When posting a Day-End and a Category change from sales to non-sales or vice versa causes changes to a sale, account for the tax change accordingly (leaving it non-taxable in the case of changing to sales, or creating a tax adjustment line), to avoid “Operation Failed” due to out-of-balance transaction. (POS-13574)
  • Fix failure to create Site Products and Item Price Levels for new Variant Items. (POS-13578)
  • Fix null pointer while creating Item Price Levels for a new Item Record.
  • Add Breakage (Destroyed) Sale Type (with corresponding Sales Slip Style condition, defaulting to false, like Ret To Vend). (POS-13577)
  • Fix crash saving changes to security task levels and optional features.
  • Fix infinite loop in number allocation when out of numbers. Additional performance improvement for bulk barcode number assignment during migration. (POS-13576)



  • Fix glitches in Tender Table after prompting for authorization. (POS-13575)
  • Fix race conditions (which caused Null Pointer among other things) between updating Item site products & price levels and drawing the corresponding tables on the Item Record Screen.



  • Memory performance improvements for post-upgrade step 4.4.331.
  • Fix null pointer exception when Help -> About is displayed too early during initialization.
  • Fix missing Search Schemes for Inventory Transfers, Pending Transfers, and Inventory Counting by Site. Change spelling of “Bar Code” to “Barcode”. Set menu key to “M” for File -> Import -> Multiple Types In One File.
  • Fixes for Pending Transfer screen.
  • Fix combo box rendering issues in Remote Operation Create and Remove Node dialogs.
  • Category Record Screen: Fix slightly cut-off Yes/No box for Exclude From Sales Commissions.
  • Remote Operation: Handle Optional Features being enabled from multiple nodes.
  • Artisan Task Manager: Fix so task rename is saved properly.
  • Fix string matching in Bulk Change Notes & Descriptions to be case-insensitive as intended.



  • Record Table Screen fine-tuning for combo box behaviors: Fix so PgUp, PgDn, Home, and End (in addition to Up and Down arrows) in pop-up menus for combo boxes just move the selection in the pop-up w/o changing the main combo box selection and corresponding bound field value, if any.
  • Fix some cases where Record Table Screen search fields lose focus when they shouldn’t.
  • Fine-tune Bulk Change Internet Store Fields to be more like the Item Record Screen and *preserve* other fields by default when turning off “Include in Internet Store?”
  • Fix for built version: Add missing library ApacheCommons/commons-lang3-3.10.jar.



  • Migrations: Always default to Preview for POs and Vendor Invoices. (POS-13569)
  • Fix crash from missing Description on the sales line. Force non-blank Descriptions going forward. (Upgrade will change existing cases to “—“.) (POS-13568)
  • Fix 7-second delay opening first Item Record screen (per program run) in sample data, caused by 4.4.325 performance optimizations.
  • INV-065 Inventory Summary by Category by Vendor. Added consignment option and group by options.
  • Fix special case in Day-End check for open shifts (from POS-13108) to check for closed shifts on *all* stations. Now it correctly only bypasses shift closings if none of the stations have closed a shift and only one station has sales to post. In addition, that station’s shift will be automatically closed (as shift #1).
  • Change NYI Tools => Send Data to CerTek to go to our Get Help web page, at the #send_files anchor.
  • Fine-tuning for Split Tender Confirmation wording.



  • Add 2 new Sales Screen Options: Confirm Partial Amount When Payment Processing and Always Notify Cashier (with a Dialog) When Sale is Complete? Both of these hopefully will help close the gap for fast-paced sales to help warn when a card is about to process for an incomplete amount (partial payment) and clarify when a sale is complete when an extra visual aide is recommended.
  • Shopify: Fix the disconnect between Product Types and Smart Collections rules for Categories that caused Categories to lose their Products; revert attempt to use the handle (“slug”) and use the Category Name instead. (Re-upload all data after upgrading, to fix the linkages.)
  • ISI: Don’t show Custom Fields option for Shopify.
  • Fix crash in Bulk Change Internet Store Fields for Categories.
  • ISI: Add option to control whether custom fields are uploaded since it can take a long time on WooCommerce, even if none are used. The default is no.
  • 4.4.335: Allow “All Sites” choice for Destination of Inventory Transfers and Edit Pending Transfers. Some optimizations and naming fixes for Pending Transfers in general. Fix incorrect matching record count when using the “Pending Transfers Only” power search filter.
  • Move tamper/corruption warnings to silent logging in log.txt for now.
  • Allow TranCloud to work with serial connected PIN Pad by putting string “SERIAL” into “Terminal IP or Mac Address”.
  • Fix for tranline_check violation during migration with a non-zero kit multiplier and not TLT_KIT_COMP.



  • Major enhancements to Bulk Change Notes & Descriptions: include *all* fields from the corresponding tab, allow simple replacement or clearing of the entire string in addition to pattern matching replacement. (POS-13522, POS-12788)



  • New Report INV-253 Multi-Site Inventory Report. Will sum up all sites with group-by basic category or vendor.
  • ISI: Only upload custom fields corresponding to pre-existing global attributes. (POS-13564)
  • Fix overzealous complaint about refreshing dirty records when saving Items with new per-site quantities as receiving.
  • Fix recursion problem with Receiving Auto-Detail option (causing a flash and another Detail screen on every qty change).



  • Extend the Bulk Change Pricing Model to include Qty Break Scheme. (POS-13554)
  • ISI: Upload custom fields as attributes to WooCommerce and Zoey/Magento. (Shopify has no such ability.) (POS-13564)
  • Fix vertical sizing of Artisan Task Manager.
  • Add Req QOH (Qty On Hand for Requested Site) column for POs, in addition to existing Site QOH (Qty On Hand for *this* Site).
  • Fix missing vendor products and item/category price levels (from recent changes); upgrade repairs data.
  • Cash Counter Enhancements & Clarifications, including the display of Cash Deposit and Ending Cash. (POS-13560)
  • Fix crash creating SHIP item in new data due to misplaced recent fix for fill-in description items.



  • TranCloud: Treat Device Busy errors as a communication failure for query retries (since they likely mean the transaction is still in process, unless it’s just hung). (POS-13562)
  • Add back the missing Item Code (SKU) column in Inventory Transfers. (POS-13559)
  • ISI Upload: Add option to Disable Upload Chunking. (Currently, only WooCommerce is doing image upload chunking.) (POS-13565)
  • More Bulk Change Refinements. Add remaining Internet Store fields to Bulk Change Internet Store Fields. (POS-13540)
  • Don’t confirm saving consignment item w/IT_OFF if also Fill-In Price.
  • Initialize Item Description to blank instead of null so it can be saved with “Fill-In Desc”.



  • Check for (and silently fix) missing or incorrect Site Products when opening the “Locations…” pane in the Item Record Screen.
  • Fix NonUniqueObjectException in StockUnit.findUnTrackedUnit during Item Qty Repair tool, caused by recent performance changes.
  • Single-thread map and list child data loading, to hopefully fix PO Site QOH crashes once and for all. (POS-13553)
  • Fix crash changing Locations… to show On-Hand Only when the cursor was on a row that’s no longer in view.
  • Extend Refund/Void Deposit handling to include Payments on Account as well. Disallow voiding a Credit Slip which has been applied already. Together, these prevent all cases where a payment or applied credit could reference a voided sale, which would cause the A/R balance to be out.
  • Fix so A/R Balance Repair tool works in Sample Data.
  • Fix failure to create price levels and other child records for permanent Items & Categories. Handle such cases after the fact. General cleanup of child record syncing. Add progress updates for updating all price levels.
  • Fix crash in Customer Import when Tax Number is present but Tax Exemption Type is missing.
  • Usability improvement: Any time a required field is left blank (or has an invalid value) on saving a sale or record screen, in addition to moving the focus to that field (after the error message dialog is dismissed), if it’s a combo box, pop it up, too.
  • TranCloud: Increase timeout for Initialize from 2 to 4 minutes.
  • Fix for TransientObjectException saving a sale with no tenders (such as layaway, order, or on-hold sale), caused by 4.4.325 performance changes.
  • Numerous fixes for Price Charts. Add Chart Pricing Method to make it clearer how the various columns in the chart are used.



  • MCH-196 Vendor Performance Analysis Report fixes for short field length, improvements: added vendor and category filters, item code or vendor p/n field, and sort order.
  • MCH-149 Variant Sales Analysis Report improvements, added text and category filters, item code sort order, and group headers.
  • Probable fix for still-ongoing crashes in PO screen with Site QOH column displayed. (POS-13553)
  • 4.4.325: Expand bar code field to 25 characters so it can hold *any* item code when using “Use Item Code” scheme. Allow that scheme in combination with any Item Scheme, not just numeric ones, but confirm (in general) with a warning that long item codes mean long bar codes. Fix migration to recognize the “Use Item Code” bar code scheme correctly.
  • Fix station license count, which still wasn’t excluding non-interactive stations in some cases.
  • Fix cut-off punctuation in price markup formula on Pricing Scheme Screen on Windows.



  • Fix failure to open cash drawer for layaways and orders. Fix failure to report correct Change Due on layaways/orders when a customer was not selected ahead of time. Don’t report change due or open drawer for on-hold or voided sales. (POS-13549)
  • Only do grant privileges (in upgrade step) if using Postgres.
  • Fix 4.4.286 upgrade step to always grant privileges, even if the new role already exists, in case of multiple databases on the same server.
  • More fixes and improvements for A/R Statements (including handling cross-customer credits).
  • Fix null pointer printing sales with non-item lines when an active slip style has an include/exclude product type filter. Also fix so the exclude case works correctly with multiple sales lines.
  • Fix store credit lookup to be by bill-to customer.
  • Major rework of A/R Statement Form.
  • Additional tweak to the migration fix.
  • Fix migration crash trying to refresh dirty records. (A pre-existing problem was exposed by a recent change to consider items and categories dirty when their price-level records are dirty.) (POS-13544)
  • Add “Remove ALL” check-box to Bulk Change Keywords and its subclasses such as Bulk Change Related Products.
  • Add Bulk Change Related Products. (POS-13540 (partial)
  • Remote Operation: Very last, final, I promise, fix for infinite looping in send batch size calculations.
  • Update fake credit card swipes to use a (now dynamically-computed) non-expired date, except for one new *expired* card.
  • Fixes for INV-056 to accommodate larger numeric values and add number formatting with commas.



  • Fix minor discrepancy in timestamp of physical inventory counting vs the inventory activity detail for any changed counts.
  • Major performance improvement for large transactions when running with remote operation enabled (even when suspended). [Optimized the code in the “deferred trigger” used to record the end of each database transaction in the remote change log.]
  • Add the net (after-discount) price to the PriceCheckScreen (when discount is in effect). (POS-13546)
  • Fix so Variant Template pull-downs are in Variant Template Name order. (POS-13545)
  • Critical fix for the bulk change performance improvement.
  • New Report: SAL-073 Pending Layaway/Order Report
  • Add Bulk Change Weights & Measures. Rename Bulk Change Descriptions to Bulk Change Notes & Descriptions in prepration for extending it. Add placeholder Bulk Change Pictures & Menus (NYI). Add “See Also” note to Bulk Change Item Internet Store Fields. Rearrange Bulk Change menu. (POS-13540 (partial))
  • Add Return to Vendor to Bulk Reset QOH. (POS-13493)
  • Extend Reset Bulk QOH to allow choice of adjustment reason: Shrinkage, Destroyed, or Reset QOH. (POS-13539)
  • Fix failure during sample data creation while syncing existing variant items that have *new* price levels and a template with non-individual price levels, due to an attempt to refresh a new price-level record.


  • Major performance improvement for large bulk changes (including accepting inventory counts); now runs in linear time, by doing batches of 100 in a private session that can be completely cleared each time.
  • Refinements to UI for Bulk Change Consignment Settings and Bulk Change Retail Discounts. (POS-11873)
  • Fix wrong initial focus in some dialogs (esp. those containing date pickers).
  • Change column layout refresh on window size change to use a private session to avoid possible interference with normal record table screen operations (especially bulk actions).



  • ISI: More upload fixes: remove store map entry after delete (so it doesn’t keep deleting the same record); optimize the full-upload case; fix problems when there are mixed upload dates or visibility for variants and their base products (general rework of database query).
  • Fix error in query syntax for Advanced Filters when using OR followed by an incomplete last clause.
  • In Bulk Change Retail Discounts, use a Yes/No Boolean Choice for “Disable Automatic Discounts?” rather than a check box.
  • Ask to Deliver any newly-saved Sales Orders that are paid in full, ready to be delivered (all inventory available), and not Custom Orders, unless shipping and the Manually Mark Shipped Orders Delivered setting is on.
  • ISI: Update Magento API to add new “include_in_menu_mobile” category attribute required by Zoey. Use Product or Category Name for SEO Meta Description when there’s no Brief or Detailed Description (Shopify requires it to be non-blank unless we make our API calls more complicated). Upload *Category* Meta Title & Description too, for Shopify (we were already doing it for Zoey/Magento); WooCommerce can only be done through the admin panel.



  • Fix so State/Province field can be edited as text when Country is not US or Canada. (POS-13534)
  • Record Table Screens: If you switch to a Column Layout where the current sort field is missing, revert to the main search field for the sort order.
  • Fix so changing column layout details doesn’t lose the current sort field.
  • Remote Operation: Fix one more infinite loop case in send-size chunking.
  • When selecting PO for Receiving, don’t allow adding new POs or selecting/viewing deleted POs.



  • TranCloud: Complete timeout and query processing, including sending a Transaction Cancel on timeout.
  • Fix possible crashes related to loading “map” child data structures, like Site Products for Site QOH et al, when instantiated by Hibernate as proxies; resolve the proxies in a (synchronous) Data Worker. (POS-13531)
  • Shopify: Fix SEO metadata upload to use new “meta fields” API.
  • Shopify: Add Featured Products as a tag “Featured”.
  • Fix misreporting of site numbers in the message when sales are not licensed from an unlicensed inventory site. (POS-13535)
  • Auto-switch from/to North American phone number format when Country changes. (POS-13532)



  • Add clarification to Task Manager database access message.
  • Rework Record Selection model to show count of, and act on, ALL selected records, regardless of the current search string. Changes to Power Search parameters, on the other hand, do reset the selections, after confirmation (if any unselected).
  • MCH-149 and MCH-196 – General Cleanup.
  • Improved timeout handling for TranCloud: Allow timeout to be configured, with 0 = 10 minutes. Send TransactionCancel on timeout.
  • Remote Operation: Show SUSPENDED state in sidebar.
  • WooCommerce: Fix image handling for variants to not delete base product image when uploading a first-time variant image.



  • Remote Operation: Yet another fix for the new send-size heuristics.
  • Avoid using the potentially unsafe DataWorker.executeAndWaitWithGUI (in Import, setting Column Layouts, and various places that load Site Configuration settings).



  • WEB-171 – Improved Internet Store Checklist Report – Show more ISI fields and basic fields with Parameter Options.
  • Present a simple dialog (with no choices) when saving changes to a record that someone else has deleted, rather than presenting the general record conflict merge dialog.
  • Fix record merging (broken by selection checkbox feature).
  • New Merchandising Reports: MCH-196, Vendor Performance by Category Report. Placeholder for MCH-197, Vendor Sell-Through Report. Fixes for MCH-149, Variant Sales Analysis Report.
  • Remote Operation: Estimate size of outgoing change message and attempt to cut back on the number of included changes if it looks like it’s going to be too big to fit into a byte array (which would fail with “OutOfMemoryError: Requested array size exceeds VM limit”).
  • TranCloud: Increase timeout for manual card entry sales (twice the default of 40 sec).
  • (Changes to report TEMPLATEs to consistently use “Show Detail?” parameter.)
  • INV-053, Inventory Summary report: Fix Site filtering.



  • ISI upload: Add option to Upload ALL Records (Once).
  • ISI: Fix so no changes to upload isn’t considered a failure.
  • ISI: Additional fixes for Store Map management.



  • Implement Record Selection Check Boxes for Bulk Changes, Print, and (eventually) Export. (POS-11489)
  • ArtisanTasks: Show task as FAILED rather than DONE if it doesn’t complete successfully.
  • WooCommerce performance improvements for uploading new or missing variants.
  • ISI: Protect against duplicate online store record IDs in the Artisan “Store Map”.
  • Fix crashes in Sample Data doing Bulk Change Keywords and others, caused by adding “left” and “right” functions for INV-123, Inventory Item Listing. Back those functions out and change INV-123 to use other string functions instead. Also fix INV-123 to not lose the cents parts of non-percentage discounts.
  • Upgrade Derby from to (last version that supports Java 8).
  • WooCommerce: Fix so uploading new variants doesn’t keep reusing the same variant on the Woo side.



  • Add Bulk Deliver Orders (Ready, Paid-in-Full only) for Layaways, Pending Orders, Ready Orders, and ALL Orders. Add specific screen names for the various kinds of order activity screens.
  • Add Discounted Price (Net) virtual columns for Item Record Lists and Scan Mode. (POS-13530)
  • Fix null pointer running non-interactively with a video pole display enabled.
  • Fix for blank site lists in first-time remote node creation caused by old migrations from 3.5. Fine-tune error handling during remote node creation. (POS-13528)
  • TranCloud (and other Payment Processing): Further improved handling of timeouts and “query” failures.



  • Fix TranCloud Terminal Device and Printer Name popups to wait for the completion of the query.
  • Add more available fields for Scan Mode: Mfr/Pub, Mfr P/N, Discount, Discount Start Date, Discount End Date, Don’t Discount, Width, Height, Depth, Weight, Availability. (POS-13529)
  • Evaluate lists of Terminal Devices for TranCloud Payment Processing and OS Printer Names for Printer Settings every time (and only when) the combo box popup is about to be displayed.(POS-11057)
  • ISI: Check for database changes *before* connecting to online store for upload.
  • TranCloud: Improved handling of timeouts and “query” failures. In general, refine Response Class wording in CC Log.
  • WooCommerce: More image management work and performance improvements. (POS-13526)
  • TranCloud: Improve error reporting for List Devices.
  • Make TRANLINE_CHECK constraint stronger by enforcing PRICE = 0 and RETAIL = 0 when ITEM is null. Fix migration to clear these and other fields when ITEM is null, avoiding constraint violation exceptions when 3.X data has inconsistent lines.
  • WooCommerce: Fix bogus failure on Download task due to “WordPress user & password must not be empty.”
  • When filling a (failed) search string into a new Item Record, put it into the UPC field if it’s a valid GTIN code (with or w/o check digit), else Item Code if Free Format, else Vendor’s P/N. (POS-13516)
  • Fix so PO Vendor carries through to Item Record searches and adds in ALL cases, even for implicit searches from non-matched codes (via RecordLookupFormatter). Also allow multiple field initializations for new records; specifically, the Vendor from a PO plus the typed search string for a search field. (POS-13517)
  • Record changes in audit log and audit summary for Category and Item Records, and sync changes from Base Products to Variants, even if the only changes were in child records, like Price Levels.
  • Fix Category Record Screen Retail Quantity Breaks edit button.
  • Confirm when saving variant template changes if more than one existing base product uses the template.
  • Fix Video Pole Display to skip folders when looking for Ads, to avoid FileNotFoundException.



  • Menu navigation change: stay in (same) report area after running (or canceling) report.
  • Report Viewer: Add Refresh button to Report Viewer to run the report again (in a new viewer), prompting again for parameters (starting with the values just used), if any.
  • Make Retail Price and a number of other Item Record fields available in Scan Mode (for Inventory Counting, etc.).
  • Improve upgrades for Sample Data.
  • Fix INV-123, Inventory Item Listing, to run in Sample Data by, among other things, adding “left” and “right” string functions to Derby.
  • Migration: Replace bogus PM_SALE_PERCENT in Item Records with a zero sale percent with PM_MANUAL, preserving the probably-intended Retail Price and Costs.
  • Add back silent mode for variant “takeovers” during import and template changes.
  • Various Variant Import improvements.



  • Fix missing import of variant-specific UPCs in Product Variant Item import.
  • Fix so scanning slip number for smart return doesn’t leave table cell in edit mode. Fix so bar code scanned into table cell in edit mode still delivers an ENTER action (to move down to the next line). Optimizations and fixes for some Smart Return cases. (POS-13513)
  • WooCommerce: Add support for SEO Meta Description (from Brief Description else Detailed Description) for either Yoast SEO or Easy WP Meta Description plugin. Zoey/Magento: Set SEO Meta Description from Brief Description (if any) before Detailed Description, always act as if Require Brief Desc and Require Detailed Desc settings are on, since Magento requires them. Shopify: Set SEO Meta Description from Detailed Desc if Brief Desc is empty. (So now they *all* use Brief, then Detailed, and *not* Product Name for Meta Description.) (POS-13524)
  • WooCommerce: Take 2 fix for failed image uploads (use source_url field instead of link). Fix for the wrong character in error reporting of requests with parameters.



  • Product Variants: Fix several ways in which saving changes to a Template didn’t always correctly update existing Item Records using the template, including reordering attributes, and adding or deleting values. Fix “taking over” of Item Records as variants to never be silent (except during migration), but to also handle the case of merging two records when an existing variant SKU is changed to the same as an existing non-variant. Fine-tune the record merging process in general. (POS-13518)
  • WooCommerce: Rework to use the Apache HttpClient instead of the old Java HttpURLConnection (for WPEngine). Workaround for specific image upload phantom failures (due to size probably) by looking for the image in the media library after a failed upload.



  • Payment Processing Reconcile Report – PPL-402 – Major re-work to simplify the user table to fix issues with some mismatches from displaying correctly. Improved the layout design to make it more readable. Added time and the correct filter to make sure we don’t include voided transactions.
  • Fix to not disable table refresh while launched record screen (F3/F4) is open, but to still avoid refresh race returning from saving new record (with selection ending on new record). (POS-13518)
  • Add Card Brand to the Payment Log and make it visible on the screen along with Card Label. Also add Raw Request and put it with Raw Response on a new “Raw” tab; for now, only TranCloudPaymentProvider fills in Raw Request.
  • TranCloud: Remove the redundant and actually incorrect port info (“RS-232 or USB/VCom”) from the end of the Device descriptions. Fix so the device setting shows correctly when switching profile or station views. Add a timeout for the device setting pop-up if the TranCloud doesn’t respond with the list of choices in 5 seconds or so. (POS-13520)
  • Add count of coin rolls to Cash Counter. (POS-13514)
  • Fix crash reprinting Shift Report, when a shift not yet included in a Day-End has only hidden transactions.
  • SAL-051, Sales Summary Report (Receipts Summary Section): Hide the word “units” when there’s no number to go with it (data is null).
  • Fine-tune Missing Sale (Orphan Payments) check to match on *base* payment ID for voids.
  • Payment Processing Log – PPL-401 – Major work to include voids at the correct time and in the correct location. Now it shows a positive for the original charge, offset by a negative void all in the same column with correct totals at the bottom.
  • Add CASH-101, Basic Cash Count Form (for both rcpt printer & sheet printer), and remove the NYI.



  • More improvements to logo sizing on video pole displays; also, put a border on the product image area (and a gray background) so the logo and banner message placement doesn’t look lopsided when no product image is displayed.
  • DataVision: Fix so parameter-backed user tables work in subreports.
  • INV-201: Fix minor alignment problems. Add a few more fields.
  • INV-201 Vendor Export – Increased the size of the report and Added Vendor Type, Contact, Website
  • Fix so receiving from the Variant Grid Screen is handled in one batch, rather than confirming and printing each item individually. Ensure that printing is in Variant Order. (POS-13510)
  • Fix logo sizing on Video Pole Display. Fix null pointer saving Configuration Settings when video pole enabled, in some cases. (POS-13515)
  • 4.4.298: Add PO “Smart Start” option, to base initial qty on sales in some past # of days, with a Miscellaneous Program Option to make it the default.
  • WooCommerce: Create line items for any fees in downloaded orders. Fix to set the shipping method.
  • Fix overzealous reporting of conflicts during number assignment.
  • Migration: Don’t try to do *anything* with 3.X custom forms (AFD/RTF).
  • Add INV-201, Vendor List Export Report. Reorganize Inventory Reports menu; add missing Inventory Aging Report. Allow name translation for reports to optionally specify name type (e.g. “TABLE_TEXT”) instead of default “SHORT_NAME”, via either the format string of a column field, the suffix of a translated column reference (“{>column}”), or an optional third argument to the translate() function in formulas.
  • INV-053, Inventory Summary Report: Substantial Improvements, Various Fixes, and Tweaking: Actual Vendor, Backdating, Missing QOH values to Groups, Sample Data
  • Upgrade Derby to (minor upgrade with important bug fixes).
  • Fix Rcv w/o PO by an alternate vendor to not switch to preferred vendor and vendor p/n.
  • DataVision: Execute user tables in alphabetical order so the order is deterministic in order to resolve dependencies.
  • DataVision: Rework table column enumeration to not depend on exceptions or scrollable result sets.
  • DataVision: Add xsum aggregate function to sum leaf values only (no inner group or inner group is null or blank). Good for hierarchies with elements at the same level as sub-groups.
  • Generalize “Create Missing Credits & A/R Adjustments” in Advanced Database Maintenance to “Repair A/R & Credit Discrepancies”, to also include corrections for the amount paid on invoices/credits/layaways/orders.
  • Fix restore to still work for older Postgres versions, as well as >= 10. [Broken in 4.4.293]
  • Added Shift Close NO SALES TO REPORT for sheet and receipt printer. Added receipt printer for Day End NO SALES TO REPORT.



  • Refinements to A/R Statement Form AR-101, especially to remove redundant “Credit Applied” lines.
  • Implement Automatic Quick-Pick Mode (in Sales Screen Options -> Cashier Prompting Options).
  • Fix some rare cases where A/R Statement generation leaves items open for the next statement that should have been closed.
  • More Variant Import Loader performance improvements.
  • Fine-tune A/R Statement Options Screen layout.



  • Fix for overlapped wrapped text on rotated labels (such as clothing tag).



  • Variant Import Loader performance improvements.
  • Prevent PO total shipping cost from going negative even if one of its invoices’ shipping cost is somehow negative (in memory).
  • New Label Stock and Forms for new Labels



  • Fixes for cell formatting and layout in Variant Grid.
  • Add (non-default) “Qty On Order (Total for Item)” column for PO screen (abbreviated “Ord”).
  • Fix restore to skip the “public” schema (which we don’t use) since it causes errors with some versions of Postgres.
  • Add progress reporting to Variant Loader phase of Product Variants import.
  • Improvements to Product Variant import: clip description suffix to max length.



  • Improvements to Product Variant imports.
  • (POS-13482) Fix navigation issues in Sale Screen when Item Code is not the first column.
  • TranCloud: Strip spaces from MAC Address
  • 4.4.291: Add Sales Screen Option to Force Explicit Price Entry (Treating ALL Items as Fill-In-Price).
  • Add “Create Missing Credits & A/R Adjustments” to Advanced Database Maintenance.
  • 4.4.290: POS-11056: Payment Processing: Allow clerk to override Duplicate Checking interactively, with supported processing methods. Corresponding setting has been inverted, to “Disable Duplicate Checking”, for users who would rather disable it all of the time (not allowed for WorldPay).
  • Change to only prompt for individual credit card payment types with Standalone (External) processing; switch non-No-Touch (gateway) methods to use the single Generic Credit Card payment type, like we did for No-Touch (EMV) methods.



  • Fix shift reports (SAL-051, SAL-057, SAL-410, SAL-412) to limit results to the appropriate station.
  • Fix word wrap in placeholder for SAL-411, Extended Tender Detail Report.
  • In Multi-Vendor mode, consider the preferred vendor for an item to be a supplier, even if the corresponding Vendor Product record is missing.
  • Fine-tune error handling for Sales Portal script.



  • Improved logo sizing for Video Pole Display.
  • Number Manager: Fix to prevent remote nodes from using numbers in unallocated ranges. Optimizations in handling Number Properties and Number Blocks in session.
  • Fix 4.4.286 upgrade step to only do server setup once per server.
  • Fix so check for missing sales in Day-End and Sale Screen works even if there are sales with duplicate slip numbers.



  • Fix Stack Overflow when Video Pole Display is enabled, but there is no second monitor (in production).
  • Split out Touch Screen Mode with Keyboard (or w/o) as separate settings.
  • Fix Restore to restore database object privileges (ACLs), too.
  • Prevent logo from printing on SLIP-T standard thermal receipt.
  • Display first up to 8 non-blank custom fields in Customer Activity Summary Panel (Shift-F4).
  • Add customer note (if any) to Customer Activity Summary Panel (Shift-F4), dynamically sharing space with Loyalty Club Points.
  • WooCommerce: Support all 3 styles of authentication for WC REST API: 1) Normal Basic Auth with WC consumer key & consumer secret as user/password. 2) Query parameter based consumer key/secret if user name starts with “&”. 3) Use WordPress (WP) user/password (with normal Basic Auth) if WC user name is set to “-“. (WP image API calls always use the WP user/password.)
  • SAL-051, Sales Summary Report: Clarifications and formatting refinements for Receipts Summary & Tender Summary, including a new breakdown of Other Non-Sales (by Category). In Tender Summary, separate and distinguish Non-Deposits from Deposits. Replace cost percentages with (profit) margins.
  • DataVision: Fix one more subtle glitch with aggregate forward references.
  • Fix Thermal and Ink-Jet test pages to word-wrap the instructions.
  • SAL-120, Daily Tender Summary Report: Fix Typo in note (now visible due to wrapping fix).
  • SAL-120, Daily Tender Summary Report: Fix Non-Deposit column.
  • SAL-120, Daily Tender Summary Report: Fix Total Deposits to include Other Deposits, and Store Credits to be only credits redeemed; various formatting fixes.
  • SAL-122, Daily Receipts Summary Report: Fix calculations for GC Total, Credit Total, and Other Non-Sales columns.
  • Fix null pointer filling in TranCloud terminal device selection pop-up when the request fails.
  • Fix unnecessary conversion/replacement of bar code numbers during migration, in some cases.



  • Test Mode for TranCloud testing/demo.
  • Enhanced INV-124 6-Site Inventory/Sales In Columns report.
  • Fix Receive w/o PO to use current inventory location (by default) (POS-13503).
  • Several migration and upgrade fixes.



  • Fix Accounting Export to keep deposit groups separate in the Daily Sales transaction. [Broken by a recent change in support of “manual deposits”.] Don’t use “Daily Sales” in Name for deposits except for the “Manual” Group 1 entry into Undeposited Funds.
  • PUR-015 – On Order by Month Grid – Fix for Date/Timestamp Error preventing the report from running.
  • Fix so voiding a sale or other inventory change that generated a stock correction that’s still pending also voids the pending stock correction (with a new Void OOS change type) and adjusts the QOH accordingly. Record original slip # (if any) for pending stock corrections. Optimize per-item activity reports by adding an index for TRANLINE.ITEM. (POS-13487)
  • Fix fallout from POS-13426 in 4.4.255 (Prevent DT_MAX discounts from changing manual discounts) that lost non-manual DT_MAX discounts when a sale was recomputed (by recalling/modifying or by an indirect change such as posting a consignment statement). (POS-13501)
  • Performance: Fix to bypass reorder level check for items with no reorder levels, except when changing reorder levels or from Check All Reorder Levels in Advanced Database Maintenance. (Clean up warnings in InventoryManager & ItemRecordScreen.)
  • 4.4.282: Remote Operation: Add special cases for relationships between POSTDATE, POSTSTAT, and SALEDATE (to compensate for unposting Day-End from another node [we should probably disallow this]).
  • Update comments on WordPress API.
  • Various Video Pole Display tweaks, including an update to “Your Logo Here” image.
  • INV-053 – Inventory Summary Report – Fix for multi-site breakdown after recent changes.
  • Fix anomalies in range values while editing pricing charts. (POS-13498)
  • Vendor Records: Set Consignment Vendor to Yes when Split is set to non-zero; set Split to zero when Consignment Vendor is set to No. Fix inconsistencies in sample data related to consignment.
  • INV-026 – Inventory Transfer Report, now provides an option for PENDING Transfers and both reports include the site name.
  • ISI: Strip out invalid punctuation characters from payment type names when downloading orders. (Parentheses, for example.)
  • ISI: When downloading orders in a development environment, use the same version of java that ArtisanTasks was run with to invoke Artisan –import, rather than the default java version.
  • Shopify: Update to 2020-01 Shopify API, using the new pagination method (via Link headers). (POS-13451)
  • Fixes for the traditional POLE DISPLAY to not trim whitespace on the other end of the string; this fixes the LEFT/RIGHT pole display test.
  • Fix padding utility functions to not trim whitespace on the other end of the string; this fixes the LEFT/RIGHT pole display test on 2-line displays.
  • Allow all documented legal punctuation characters for QuickBooks Online (including the undocumented parentheses) in External Account Names (even if they might not all be legal for QuickBooks Desktop and others).
  • Allow Zero Dollar Authorizations (ZDA) to be enabled on Datacap for WorldPay.



  • Improvements to Payment Processing Reconcile Report PPL-402 to handle cash back and general cleanup.
  • Fix for INV-026 to handle destination site prompting correctly.
  • Implement Video Pole Display (POS-13435)
  • WorldPay certification fixes, including completing the implementation of Cash Back (except for sales slip forms) and some fixes to the handling of partial approvals and tips.
  • Remote Operation fixes for rare cases of duplicate Vendor Invoices. Fix syntax error in quotes for duplicate timestamp merging (a very rare case).
  • Sale Screen: Disable Void Sale when a void is already in progress.



  • MCH-054 – Merchandise Performance Report – Add Summarize By Vendor option.
  • Remote Operation: Fix failure to detect & merge duplicate Vendor Invoices by (Invoice Number, Vendor). [It was being overwritten in the Merge Policy Cache by the (Invoice Number, PO) check.]



  • Fix null pointer when skipping selection of customer from credit card. [Broken in 4.4.268.]
  • FIN-208 – Consignment Statement Ledger: Add Day-End Posting Date to help indicate what QuickBooks export date you should use to get that statement exported.



  • Fix migration errors with blank station records or sites with non-default inventory locations. (POS-13495)
  • Fix “missing setter” in migration of DBT Tax Location records. (POS-13496)
  • When changing Ship-To-Site on PO, change shipping address to the default store address for the new site. (POS-13489)
  • INV-026: Inventory Transfer Report: Add the ability to choose either PENDING or COMPLETED transfers. Also added group by Category or Vendor.
  • MCH-054: Merchandise Performance Report – Add Multi-Site capability and other tweaks.
  • 4.4.275: Implement Cash Rounding (for example, Penny Rounding in Canada). (POS-11121)
  • Report Designer: Fix constant jump-scrolling in Report Designer, due to Touch Screen Keyboard changes.
  • Report Designer: Clean up inconsistencies in Report Summary handling with subreports. Subreports do not have their own summaries; when a subreport is exported individually, prompt for the summary info (which is unlikely to be the same as the main report).



  • Implement Cash Counter.  (POS-11920, POS-10266)
  • MCH-054 Merchandise Performance Report – Finish implementing %-to-group-total fields.
  • Fix post-receive processing pop-up message from being hidden behind the main window or a dialog.
  • INV-053 fixes to use end-of-day dates, with explicit times shown in the report header.
  • Report Designer: Add an “End of Day” setting for single-date parameters to force end of day instead of beginning of day (as is already always done for the ending value of a date *range* parameter).
  • Report Designer: Fix subtle problems with formula references to aggregate fields.
  • Report Designer: Add JEP formula functions date_min() and date_max(). Updated Report_Functions.txt doc, including some previously-added functions that were missing.
  • Report Designer: Use a single consistent timestamp for the Report Date special field, instead of getting the current time every time it’s referenced.



  • QuickBooks: Fix for non-manual-deposit case.
  • Major Changes to INV-053 – Inventory Summary Report to allow for back-dates and general improvements.
  • Add item/category discount and date range info to Price Check Screen and item detail on the Sale Screen. Bring Price Check up to date with Sale Screen changes: Show Available qty rather than QOH, for the current site only.
  • Complete Age Verification feature. Fix some glitches in focus management when selecting/clearing customer in sale screen. (POS-13483)
  • Implement purchased Item Matching in Sales Slip Style conditions. (POS-13490)
  • Consignment: Fix to exclude Return-to-Vendor “Sales” from consignment statements.
  • When looking for Smart Returns, include non-sales items too (unlike 3.5), but limit results to 500 matches (in general). (POS-13488)
  • Fix zeroing of tranline.RETAIL for fill-in-price sales lines when certain fields change after the price has been entered. (Repairs existing data where possible.) (POS-13432)
  • Improvements to Standard Thermal Receipt (SLIP-T): Honor Summary (non-itemized) setting from Slip Styles. Hide “#” after Check payment type if no check number. Align Cash tender amounts with other tenders. Say “Cash Change” instead of “Change Due” because it’s (presumably) no longer due. Grammatical fix (when qty = 1) and clarification of sales qty label (“# Items Purchased”).
  • Update main copyright to 2020.
  • Combine the two SLIP-GIFT-T forms into one, shared by both the specific-item and the all-item slip styles. In general, eliminate Slip Type at the *form* level (but keep it at the Slip Style level). Fine-tune default columns for Forms, Reports, and Slip Styles. (POS-13490)
  • Numerous enhancements & refinements to Gift Receipts, including showing (itemized) Issue Amount (tranline.retail) for GCs and allowing GCs to be select for individual-item gift receipts. (POS-13490 (part 1))
  • Fine-tune button text formatting to treat ” – ” as a section separator (like “|”) for subtext.
  • INV-065, Inventory Summary by Category/Vendor – Moved to totals to correct summary band.
  • Improved report INV-056, Inventory Adjustment Detail Report to support Hide Cost setting, so the report could be run without cost.
  • Fixed INV-153 Inventory Count report to honor items with a ZERO count (not uncounted) and other formatting and performance improvements.
  • 4.4.268: Remote Operation: Discard changes from nodes that have already been removed. Resolve some other race conditions in starting up and tearing down nodes (especially the initial forwarding process).
  • 4.4.267: Move TranCloud credentials into the program instead of being visible/required in Payment Processing Settings.
  • Fix missing info in the message for reports that are only available in Real Data.
  • Remote Operation: Fix array index out of bounds merging Search Schemes in some cases.
  • Report Designer: Allow suppression settings to have both a formula and Hide if Blank, which will hide if either is true. (POS-11841)
  • Report Designer: Fixes for interactions between subreports and forward references to aggregate fields. Optimize “Hide if Blank” for Subreport Fields to stop evaluating report when a non-blank section is encountered. Don’t do a section page break if the section is blank. Ignore header sections when determining if a subreport field is blank.
  • Report Designer: Support reports that can hide costs, in general, not just at Day End.
  • Report Designer: Fix null pointer when clearing function name for an aggregate field.
  • Report Designer: Fix null pointer displaying a Subreport Field whose subreport no longer exists.
  • Report Designer: Fix null pointer when a bar code field has a null value.
  • Report Designer: More fixes for nested subreports.




  • Fix for a null pointer when subtracting to zero in scan mode. (Now correctly just beeps.)
  • Add “Inventory Site” number to the sidebar (under station number) when it differs from actual site number.
  • Until serial #s are re-implemented, treat serialized items as regular IT_ON when adjusting inventory (to avoid infinite loop trying to determine serial #).
  • [Update Feature Release Schedule.]



  • Fix for a null pointer in the query during QuickBooks export when *not* set to do Deposit Group 1 manually. [Broken in 4.4.261]
  • Remove (partially-implemented) support for Rectangular Size Charts.
  • Implement Qty-Based Pricing Charts. Unlike 3.X, price and discounts are now combined in the same chart (including fractional quantities, which are new in 4.X). (POS-12910, POS-10327)
  • Migration performance improvement when bar code numbers need to be reassigned.
  • Add QOH Handling Options (Import, Receive, Transfer) to Import for Items or Site Quantities, to control the Inventory Change Type used and whether the QOH is replaced (Import) or added (Receive & Transfer). Set by command-line option –import-inventory-action or prompted by interactive menu (or defaults to Import if non-interactive).
  • Turn off new warning about Raw Use of Parameterized Types.
  • Fix so unposting consignment statements handles fee lines correctly.
  • QuickBooks: Fine-tune Journal Numbering.



  • QuickBooks: Remove “.” from the new generated Journal Entry numbers, since they were one character too long for QB Desktop 2019.
  • QuickBooks: Assign numbers to journal entries (instead of letting QuickBooks assign them haphazardly), in the form YYYMMDD.nnn.
  • QuickBooks: Fix missing “Daily Sales”/”Receipts – Sales” name/memo in Daily Sales summary transaction, in some cases. Put payment types in Memo only, not Name, so you don’t have to create all combinations as Vendors or Other Names in QB. (You do still have to create “Daily Sales”.)
  • QuickBooks: Yet another re-work of QuickBooks deposit handling and corresponding Primary Banking Settings, to use anonymous clearing accounts (one for Deposits and one for A/R) instead of special QB “Undeposited Funds” account when Artisan is recording the deposits. This works around requirements in newer versions of QB that can’t be supported with the IIF interface.
  • New Report MCH-149 Variant Analysis Report.
  • Fix interference between ISI and Remote Operation, by changing to track individual last-change-uploaded timestamps for each record. ISI: Fix error attempting to upload variant items when base product is uploaded the first time. Shopify: Fix to delete a variant’s image when the variant is deleted but not the whole item. (POS-13480)
  • DataVision: Fix null pointer saving Format with a font size that doesn’t match explicit pull-down choices. Related code cleanup.



  • Fine-tune error handling in saveRecordsWorker (POS-13482 partial).
  • Fix failures merging records (manually or via Remote Operation) when a referencing record has multiple field references (such as CUSTOMER and BILLTOCUST in TRANSACT) in Real Data. (POS-13479)
  • External Accounting: Reword & restructure Primary Banking Settings for clarity. Change the “Manual Deposit” option to apply only to Deposit Group 1.
  • Fix for SAL-120 – Daily Tender Summary to include Other CC in the banking total.
  • Fix so Bulk Changes & Power Searches find keyword (or product tag) list matches even when there’s a space after the comma in the data.
  • Remote Operation: Add a strong confirm after selecting a node to remove.



  • Fixes for Consignment exports to QuickBooks to include Donations, Shrinkage, etc. while excluding misc inventory adjustments like Return to Vendor. (This means non-sales transaction lines are again marked as consignment in all cases, with the distinction being made by Inventory Change Type.) Fix inconsistency in Item Record Screen handling of setting IT_OFF for dynamic-priced consignment items. Add remote upgrade step missing from 4.4.210 to record kit-main lines as *not* consignment.
  • Change Receiving from Item Record to use Receive w/o PO instead of checking for on-order amounts first. Fine-tune menu text for “Received w/o PO”.
  • DataVision: Fix so vertical lines extending to the bottom of the page skip over specified sections (typically subreports) indicated by new “Resume Lines Below” property. Applies to Consignment Statement forms in Artisan POS. Additional fine-tuning of those Consignment Statement Forms.
  • DataVision: Fix so vertical lines extending to the bottom of the page skip over specified sections (typically subreports) indicated by new “Resume Lines Below” property. Applies to Consignment Statement forms in Artisan POS. Additional fine-tuning of those Consignment Statement Forms.
  • DataVision: Fix general report parameter problem caused by change in user column handling in 4.4.254. (Affects all reports with parameters in user columns.)
  • Remote Operation: Fix “transact_check” violation from POSTDATE non-null while POSTSTAT is null, caused by unpost followed by starting a Day-End but then canceling it.
  • Fix migration of Vendor Invoices from 3.5 (which had several serious problems). Other migration fixes: fix error handling to not mask the actual error with a bogus error from flushing the session twice; treat Order New as a normal Sale history line if it’s incorrectly attached to the real sale line; fix assert failure when converting voids. (POS-13427)
  • Fix so setting qty to zero on recalled PO is treated the same as voiding the line, fulling deleting the affected line. (POS-13473 (partial))
  • Fine-tune migration renaming of clipped variant SKUs.
  • Prevent DT_MAX discounts (from coupons or entire-sale discount) from affecting lines with manual discounts. (POS-13426)
  • Add AccountEdge account name length for future reference.
  • External accounting export: add a check for missing Sales Tax Payee.
  • When exporting accounting summaries (to QB) exclude transfers from expense accounts (moving inventory asset only). (POS-13478)
  • Update to 2019 CA Certificates for AWS RDS (Cloud 1).
  • Remove migration warning about Destination-Based Sales Tax, which *is* now (mostly) supported.
  • Shopify: Prevent errors about missing base products uploading variant for the first time. (POS-13437)
  • ISI: Fix null pointer uploading categories when some categories have no letters or digits in their description (in that case, use Category Code for the slug instead).
  • Prevent Array Index Out of Bounds when uploading images to Shopify or WooCommerce and some images fail to upload. (POS-13455)
  • Prevent null pointer exception going into Configuration Settings if any number properties are missing (somehow).
  • Fix import of unlimited text fields (like Brief Description and Detailed Description) to not clip to 255 characters. (POS-13474)
  • Fix migration of (cost-based) pricing charts to ignore lines with zero cost.



  • Fix for PUR-014 report to include date grouping when Date Basis parameter is Expected Date or Cancel Date. (Start Date was already working.)
  • DataVision: Fix so a group value of null doesn’t split every row into its own group.
  • DataVision: Fix Index Out Of Bounds and/or incorrect field mapping when a User Column has a blank definition (after evaluating conditionals) – such as with PUR-014 when not using Start Date.
  • DataVision: Fix so User Columns that are only used as a Group Field are still considered in use and not allowed to be deleted.
  • Disallow PUR-014, Order By Month Report, in sample data; it uses a postgres-only function, DATE_TRUNC, in some cases (when the first parameter is set to “Start Date”).
  • Fix excessive indentation in parameters for SAL-101 report.
  • Add clarification to 30-minute limit message for Adding Missing Sales from a different station.
  • Add Touch Screen Keyboard support to AccountPaymentDialog, LabelQtyDialog, NewSiteDialog, NewStationDialog, RecordListEditDialog, TimeClockDialog. (POS-13472)
  • Fix problem with WooCommerce downloading ALL customers whenever there are no new/changed orders in a download task run. (POS-13439)
  • Fix Inventory Transfer Manifest & Report (INV-025 & INV-026) to interpret transfer timestamps in the correct time zone; as a result, these reports cannot be used in Sample Data. (POS-13469)
  • Fix overzealous assert while transferring inventory.
  • Fix so input dialogs (like the Add value prompt from Record List Edit Dialog) use typed value even when OK button is pressed rather than Enter). (POS-13470)
  • Major fixes for Copy PO. (POS-13239)
  • Fix so deleting an attribute from a variant template actually deletes the corresponding records. (POS-13471)
  • Fine-tune new message confirming accept of partial counts.



  • Change Accept Counts (renamed from Accept ALL Counts) to prompt for the choice of whether to operate on MATCHING items only or on ALL items.
  • New Gift Receipt for All line items on one receipt.
  • Added number of items sold to default thermal slip.
  • Remote Operation: Fix ordering problem during background merging that was causing duplicate key constraint violations.
  • Fix null pointer importing variants with no Vendor P/N column.



  • Add Bulk Change Vendor Type. Fix Sample Data Creation to set Manufacturer fields for Items with Artists/Manufactures as Preferred Vendor. Fix so changing a vendor’s type propagates to existing items as appropriate. (POS-13467)
  • Misc cleanup in pole display message code.
  • Fix to initialize Pole Display Setup String based on default Pole Display Model (PartnerTech).
  • Avoid assert failure by discarding changes to vendor product before deleting it (when switching preferred vendor in a non-multi-vendor setup).
  • Add Product Variant Items import (including image fields). (POS-13423)



  • Add back optional Debit payment type for External (Standalone) Payment Processing, now configured under Payment Processing Settings (default to disabled).



  • Fix handling of consignment sales discounts in external accounting export.



  • ISI: Fix to upload *ALL* descendant categories and items of changed categories, not just two levels down.
  • Add missing space in receive-all confirm message, after “remaining items”.



  • Add Black-Mark version of SSL-501 label stock: SSL-501BM.
  • Zoey/Magento: Fix to manually set in-stock based on qty avail > 0; Magento doesn’t seem to set it automatically, at least for new items.



  • ISI: Rework Category handling to generate and key off of a “slug” (URL key) based on the *full* category description, even if the visible name is using the Abbreviated Name.
  • ISI: For non-unique category names, start with suffix “#1” on first instance, not second. Remove redundant (and possibly racy) re-load of categories after uploading them.
  • Reduce check for orphan payments in Day End and Sale Screen to exclude those more than one week old.



  • Added new report – On Order by Month
  • Fix for Sales Summary Report on Receipt Printer (POS-13462)
  • Fix premature exit from non-interactive execution while processing imported orders or other non-interactive tasks.
  • Add Category to Item upload message in web store task.
  • Fix memory crash while processing imported orders (by invoking Artisan.exe with the right working directory). Add still more logging messages.
  • Fix to not mark restored backup as “remote suspended” when it wasn’t remote in the first place.
  • Fix so exceptions while processing imported orders get logged before the program exits (with rc=100).



  • Additional logging for the order download and database closing paths. Fix missing call to exit cleanly after order download with no orders.
  • Fix PO printing in Sample Data. (POS-13461)
  • DataVision: Fix null pointer running report from designer that’s normally run as a form with presets.
  • Change the Bulk Changes for Product Tags and Extra Categories to apply to items regardless of being Internet Store Enabled. (You can still use the Power Search to filter based on Internet Store if you want.) (POS-13460)



  • More fixes for A/R and Consignment Statement processing due to 4.4.226 changes.
  • Fix for print-to-file printing.
  • Fix failure to unpost A/R statements in Sample Data (due to Derby locking limitation).
  • General Fixes and Improvements for A/R statements.



  • In the new Touch-Screen Mode, embed common input dialogs in screens, so they work with the virtual keyboard. (Dialogs built from jForms are not covered.)
  • Fix null pointer from incorrectly-enabled Add/Del/Move buttons in Variant Values after using Fill From Presets on an attribute with a name already filled in. Fix some related subtleties.
  • Improve 4.4.233 upgrade step to better discriminate which orphan payments to replace, avoiding causing out-of-balance transacts, and logging its actions in detail.
  • Fix black-mark mode for EPL label printers. Fix so printer init string file is closed before proceeding.



  • Possible fix for mysterious program crash after importing orders (before processing them). Additional log output for imported order processing.
  • Add Power Search for Coupon Records. Add “Expired” filter to GC Power Search. Fix adaptive percent formatter to convert “0.00” to “0%”.
  • Remote Operation: Fix duplicate renaming for case when a secondary unique field (like USERS.FULLNAME) is not a dup but the primary key is.
  • Remote Operation: Fix (relatively new) null pointer sending keep-alive (when no changes to send and time has passed).
  • Fix null pointer in XAcctConf during database initialization in rare cases.
  • Remote Operation: Fix so code-based duplicate records are renamed (like they used to be) instead of merged.



  • Remote Operation: Special case to force ITEM.QTYONHAND and QTYRESERVE zero when IT_OFF.
  • Remote Operation: Add more logging in the send path. Very special-case performance improvement.
  • Remote Operation: Fix stuck sending when some transaction end markers are missing from change_log.



  • Fix upgrade step 4.4.233 to skip 3.X transactions.
  • Recreate missing tender records from Payment Log during upgrade. (POS-13449, cont)
  • Fix missing tender records for smart refunds. (POS-13449)
  • Fix problems merging records with changed child records (such as Vendor Products for Items). Potential performance improvement (in Real Data only) for merging records. Handle remote merges where the target record doesn’t exist (by changing the ID of the source record).
  • Fix weird problems after voiding an item from a delivered sale, in some cases.
  • Remote Operation: Fix some cases where the wrong target record is chosen for a merge. Fail the task with an error message when the merge table has a loop, rather than hanging.



  • Add On Screen Keyboard when in Touch Screen Mode for use on Tablets without a physical keyboard.
  • Don’t look for / prompt for detached payments when recalling a sale; only do it when starting a blank sale screen.
  • Don’t prompt to “Include Unposted Transactions” when running Sales Summary Report as a Day-End report.
  • Fixes for discounted GCs in XAcct Export and in Day-End reports. Fix “PTNAME” error in XAcct Export with Non-Deposit Tenders. (POS-13452)
  • External Accounting Settings: New default A/P Export Mode to export Bills Due. For Sample Data, enable QB export and fill in all required account names, so you can do QB Exports w/o changing any settings. [Helpful for testing, too.]
  • Fix so voiding a sales order or special order with reservation from *on-hand* removes those reservations rather than logging a warning to log.txt. (POS-13453)
  • Add check for minimum 9.6 PostgreSQL server version to main program.
  • Fix subtle problems with Inventory Qty Corrections tool w.r.t. Qty Reserved in mixed-mode location tracking.
  • Add Void Date/Time and Voided By to Misc Info on Sale Screen.
  • Fix null pointer committing edits when saving (sale) screen with no component focused.
  • Remove overzealous assert updating loyalty club summary when modifying a delivered sale.



  • Remote Operation robustness: (1) Recreate missing queue when receiving in task. (2) Suspend remote operation when restoring from normal backups; in suspended mode, no AWS queue operations are done.
  • Fix more race conditions between Save/Cancel/Delete buttons and processing uncommitted changes to text components, resulting in, for example, incorrect inventory quantities when entered via Locations… table. (POS-13447)
  • Payment Processing: Add “Balance Check” to Sale Screen Operations Menu, for Debit & EBT. (Required for TranCloud)
  • Payment Processing: TranCloud changes: Allow EBT Cash independent credits.  Offer option to manually enter EBT card numbers. rework Get Token to use 1.00 sale & void. Restructure passing of Payment ID, Ref2, and Approval Code, in general.



  • Change remote operation background task to do only one merge each 30-second pass, to limit the load. Temporarily order by table name to minimize effect of ITEMPRICE problem.
  • Allow Hibernate SQL logging to be turned on by setting environment variable DEBUG_HIBERNATE to Y.
  • Log errors during remote background task. Log all background merges.
  • Possible workaround for intermittent problem with stuck Item Record screens on shutdown.
  • Fix M1 Export & Retail Planning Report to not lose on-order PO data when in Full Inventory Location Tracking mode. (POS-13450)
  • Payment Processing fixes for TranCloud and in general multiple tips on the same card.
  • Fix duplicate site product in session during Inventory Transfer. Fix broken record count in Inventory Transfer (from recent change). Misc cleanup.
  • More table navigation fixes, including moving to next line on sale screen after F2 or Quick-Pick, and moving to Save button after combining Cash tenders for complete payment. (POS-13422)
  • Switch to https for all certek.com URLs (main website link, knowledge base, ISI license checking, connect to technician, installer JREs, and auto-updates).
  • Payment Processing: TranCloud: Defer fetching Terminal Device types until the combo box is popped. Complete implementation of tips. In general, allow tip amount to be increased with multiple Ctrl-G’s.



  • Fix a number of problems with various bulk change operations. Catch and display exceptions instead of just saying there are no applicable records. (POS-13448)
  • Add option to automatically email A/R & Consignment Statements. Confirm before posting statements. Remove vendor email addresses from sample data. (POS-13433)


  • DataVision: Assert that (receipt) printer margins are not used in landscape mode (since the calculations used assume portrait). (POS-13446)
  • DataVision: Fix so landscape printing works correctly again. (Broken by receipt printer margin fix.) (POS-13446)
  • Don’t print batch order report when no orders were downloaded. (POS-13436)
  • Remove the “if numeric” restriction on the “Use Item Code” bar code numbering scheme, and increase the size of the Private Bar Code field to 13, so variants can get bar codes, too. Also, always use the item code (or alt code “C” for “COUPON”) as the bar code for visible built-in items (GC, XGC, and COUPON) and “SHIP”, regardless of numbering scheme. Disallow the “Use Item Code” scheme except when the Item Code Numbering Scheme is strictly numeric. (POS-13445)
  • Remote Operation: Fix null pointer when some incoming nodes have no changes to process (due to recent change).
  • Remote Operation: more changes for upgrade step 4.4.216.
  • Remote operation: Give an error when creating a new node if its site list is empty (meaning ALL).



  • Fix >999.99 discounts (again); this time make percentage discounts work too. (POS-13441)
  • Remote Operation: Allow inactive nodes to be restarted/recreated.
  • Remote Operation: Rework change processing order *yet again* to handle backward jumps in time (by interleaving sequence-ordered changes from each node).
  • Wrap up work on Datacap (TranCloud) and detached payments. Add new Debit icon to payment button for existing data.
  • More Datacap TranCloud changes: Instead of Zero-Dollar Auth (for Get Token) use One-Dollar Auth and void it. Configure Terminal Device from list of supported terminals. Add “Initialize” button to config panel to force a parameter download. (For non no-touch providers: do query & retry processing for AVS Checks, too.) (POS-13434)



  • Added new image for DEBIT card Payment Type.
  • Fix null pointer during report printing when no printer configured. (POS-13438)
  • Fix upgrade step 4.4.123 to handle missing Void Clerks, and to display an explicit list of transactions that would violate the new transact_check constraints.
  • Shopify: Fix for UnsupporteOperationException when replacing existing images.



  • Exclude deleted items from Receive w/o PO.
  • Fix Payment Log “Missing Sales” filter to exclude cases where the tender is on a different slip than the slip number would suggest.
  • Fixed Sales Summary (SAL-051) to not include Non-Sales costs from inventory adjustments when adjustment were made from a “Internal Use” sale or other special adjustment types.
  • Add an option to Discard Changes when voiding a sale with processed payments.
  • Fixed INV-056 – Inventory Adjustment Detail to report to include adjustments when they are made from the sales screen.
  • Fix configuration of CC Log toolbar button to persist correctly.
  • Refinements to new detached payments processing, including excluding voided payments.
  • Don’t allow Artisan Tasks to run with less then version 9.6 of PostgreSQL.
  • Give an error when trying to do integrated payment processing on a non-integrated station (none or standalone).



  • Fix QB Export for sales of kit items.(POS-13430)
  • Disallow zero-qty sale lines (except for Rental Check-Ins). (POS-13431)
  • 4.4.216: Major improvements to handling of incomplete/detached payments: Choose any payment type to refund deposits for a voided layaway/order, not just store credit; if CC is chosen, do smart refunds if possible (with balance to store credit). Allow incomplete new sale w/processed payments to be discarded/voided (for example, after an exception) with an option to move the payment(s) to a (new) store credit instead of voiding them. Automatically detect detached payments when starting a new sale on the same station, and offer choice to attach them to the sale. Disallow Day-End with any outstanding detached payments. Add power search to CC Log with, among other things, option to show detached payments only. When attaching payments to a new sale, give a dialog with the details. Misc related fixes. (Fix incomplete detection of modified power search for POs.) (POS-12319)
  • Fix “STKUNIT cannot accept a NULL value” receiving partial qty. (POS-13429)
  • Remote Operation: Fix to delete merge_pending references before deleting datascopes (avoids error after removing a node).
  • Fix so receipt printer margins are used when printed from preview.
  • WooCommerce: Round fractional inventory quantities down, instead of getting an error.
  • Fix 4.4.214 upgrade step for sample data.
  • Fix bar code printing in receipts and sheets on Mac.
  • Fix null pointer during migration of site records with no default inventory location.
  • Fix assertion failure during migration with multiple sites.



  • External Accounting: QuickBooks: Fixed the order of the processing of the sections to put undeposited funds into the main transaction not an A/R transaction.
  • Fix improperly migrated tranline data for percentage coupons (missing SPECTAG_COUPON and serial number) and no-discount items (DISCTYPE was null instead of ‘DT_NO_DISC’). (POS-13426)
  • Shopify order import: Include applied discount codes along with direct product discounts. Fix discount import in general to handle dollar discounts as well as percents.
  • Updated INV-124 Item QOH 6-Sites In Columns report to have a Sort By option.



  • WooCommerce: When uploading images, handle titles with spaces and special characters.
  • WooCommerce: Fix backwards check for inclusion of details in error messages, so it shows the request when data is NOT an image file.
  • Remote Operation: Fix so number reservation background task (at site 001) only runs every 10 minutes (as intended), instead of every 30 seconds.
  • Make sure *all* sites have a corresponding Site Configuration record, not just those with station records. This prevents a null pointer exception exporting to QuickBooks with sales from a station-less site such as an Internet Store. Add special configuration for station-less sites in External Accounting Configuration. (POS-13420)
  • Remote Operation fix for 3+ node setups when incoming changes from multiple nodes have overlapping sequence numbers.



  • Major fix for Repair Qty tool to not make incorrect adjustments to siteprod & item QOH when inventory-location-tracking and processing All Sites.
  • Critical fix for migrations with split stock unit lines. (Since November 2017)
  • Rework CONS-104 Consign Payout with Slip # and Date to fix the sort order.
  • Fix so kit main lines on sales are not marked as consigment, even if the item is. (This was happening with variant kits with qty multipliers.)
  • Major performance improvement for looking up transactions by customer, including upgrade step 4.4.200, A/R statements, and Sale Screen Reference Table loading. (Added indexes for TRANSACT.CUSTOMER and TRANSACT.BILLTOCUST.)
  • Fix for 4.4.206 upgrade step when STOREMAP contains duplicate entries. (Delete the duplicates.)
  • Updated Payment Processing Batch Reconcile Report PPL-402 to allow for multi-store.
  • Updated Payment Processing Batch Report PPL-401 to allow for multi-store, fixed the filtering with errors, split the errors and voids out of the deposit total, improved the deposit totals and formatting, and fixed the font color of the voids, etc.
  • Fix for report MCH-140 Slow Moving Inventory which needed an additional Group By field to sum up by Item and display sales total on that same line.



  • Magento/Zoey: Fix duplication of extension in uploaded image filenames.
  • Fine-tune message handling for newly-created nodes, including forwarding, to accommodate the consequences of “send chunking”.
  • Remote Operation: Don’t log merges of MERGE_PENDING itself.
  • Remote Operation: (Final?) fix for ongoing problems with missed advances of last incoming sequence number causing bogus apparent gaps; caused by the changes to change processing order.
  • Paygistix Client: Fix so “ABORTED” is recognized as a user cancellation response.
  • Payment Processing: Fix missing message after a partial authorization (when not AVS checking).
  • Fix hang (or assert failure) typing “.” (for an under-dollar number) in a discount or other adaptive-percent field. (“0.nn” worked OK.) [Broken in 4.4.170.]
  • Add a “Partial” (Approval) button to Test (Fake) Payment Processing.
  • Magento: Fix (new) error uploading alt images.
  • Remote Operation: Silently clip out of range values for additional inventory qty fields: QTYREQUEST, QTYREQRESV, QTYONORDER, QTYORDRESV, QTYOUT.
  • Remote Operation: Fix for SKIPPED changes due to overzealous check for overlapped retransmits from the send “chunking” changes. Don’t rename duplicate license key records.
  • Magento: Fix null pointer in new image upload code.
  • WooCommerce: Don’t try to log binary (image file) contents in error message.
  • Remote Operation: Fix to check all fields for merges, including those with Dependent policy like CHANGEDBY.
  • Remote Operation: Fix record merges when referencing records have multiple columns referencing the same target table. More fine-tuning of exception error message (include sequence number).
  • ISI: Preserve filenames from original import into Artisan, but append item/category code and (if not Full Image) the image index, in order to make it unique. Set alt text and/or title attribute to the item/category name/description on new image uploads. Upload images for WooCommerce directly to WordPress Media Library (rather than using FTP to certek.com and then side-loading); this eliminates the prepended millisecond time. Kurt 6/29/2019 8:27 AM
    Shopify: Continued image work… (POS-13417)



  • WooCommerce: restore use of (undocumented) position field for images.
  • When uploading Internet Store pictures preserve existing pictures on the site if possible (unless explicitly deleted from Artisan).



  • (4.4.204b) Remote Operation: re-work send chunking to handle interleaved transactions and prevent infinite loop reporting no changes to send.



  • Fine-tune check for merging permanent records.
  • Remote Operation: Fine-tune logging of received messages, esp. discarded duplicates.
  • Fix stock unit constraint violation saving a PO after increasing a qty from a request.
  • Remote Operation: Use database lock to prevent multiple task threads from running at the same time; log when waiting. Avoid task scheduling “traffic jam” by skipping any task run that starts past the *next* scheduling time. Fix memory problems by using “send chunking”, but be sure to preserve transaction boundaries. Only report the first 25 upgraded change messages (to prevent swamping the log).
  • Remote Operation: Fix check for incoming messages to skip to those that are subsets of existing messages, not the other way around. [from 4.201 change]



  • Fix to expand 4.4.200 change to customer A/R balance updates to work even when customer record is a “transient object” (i.e. not in the data session).



  • Updated Reports: Sales Summary (SAL-051) Now allows you to include UNPOSTED transactions with a parameter option. A new header field boldly displays the number of unposted transactions that are included. The Employee Performance Report (EMP-163) had several bugs that are now all fixed.
  • Remote Operation: Discard received messages that are subsets of incoming messages already in the database, rather than just exact matches.
  • Remote Operation: Change processing order yet again, to always go by timestamp and only check sequence number when timestamps are identical.



  • Fix null pointer in report parameter prompting from certain saved values, by not obfuscating names of any classes (mostly enums) used by any power search parameter types.
  • Remote Operation: Add node number to failed processing msg.
  • New Purchase Request report Purchase Reorder Report which shows automatic reorders and associated levels. (PUR-007)
  • New Customer Export Report with Sales/Margins, including sales totals and YTD totals with costs. (CUS-111)
  • WooCommerce: Fix failure to assign tags to products. (POS-13418)
  • Fix to merge permanent records created while remote (typically due to a specific upgrade). (POS-13413)
  • Minor layout tweaks to Sales Summary Report (SAL-151).
  • Fix for extended retail price. Bug introduced when we switched to tranline.retail because it was believed that the quantity multiplication was already done just like tranline.linecost.
  • Silently clip negative quantities in ITEM & SITEPROD QTYONHAND & QTYRESERVE. (POS-13414)
  • Performance improvement for upgrade step 4.4.200.
  • Fix incorrect calculation of customer A/R balance when multiple charges/credits are paid/applied in the same transaction. (Includes a recalculation of all customer balances.) (POS-13409)
  • In A/R Activity with multiple entries at the same timestamp, put increases below decreases.
  • Fix so applying payments cancels out any balancing credits and charges, even if net is zero.
  • Add optional category filter for ISI uploads (to partition merchandise between multiple online stores). (POS-13410)
  • Fix syntax error in pattern filter power searches. [4.4.198] (POS-13411)



  • Fix so switching search types (or just search field or match type) moves focus to (possibly new) search value component.
  • More fixes for renumbering bar codes when changing from “Use Item Code”.
  • Fix so built-in search schemes for non-string types (Slip #, Vendor, etc) use Equals match rather than the unsupported Starts With, and as a result are not marked modified.
  • (Remove unused quantity fields from ISI field list.)
  • Shopify: Fix null pointer when order is marked paid w/o any payment method. Handle non-credit-card payment types. For credit cards in test mode, prepend “TEST” to the Auth Code.



  • When changing bar code schemes to an assigned-number scheme, replaced unused bar codes (“—“) with new assigned numbers (if they fit the scheme). (Fixes a Number Format Exception.) (POS-13408)
  • Hopefully final fix for remote operation change processing order. Prevent stock unit quantities from going negative (though the corresponding corrections will leave things out of balance).
  • Probable fix for duplicate datascope error when turning on remote with site 001 data migrated from 3.X.
  • Fix null pointer exception exporting to QuickBooks with no class name set. [4.4.192]
  • Finish TranCloud payment processing support. Fix payment type prompting for refunds and voice auth to only show enabled payment processing types.
  • Remote Operation fix for null pointer when there are no changes to process from some nodes (due to recent changes).
  • Remote Operation: Fine-tune change ordering.
  • Update progress bar when generating statements (consignment & A/R).
  • Fix remote change processing to order by individual changes not whole messages. This fixes some cases of out of order processing. (POS-13402)



  • Fix to not include old 3.5 inventory adjustments in consignment statements.



  • Performance improvement for 4.4.144 post-init step.
  • Fix 4.4.121 upgrade step to report which transactions are out of balance (moved from 4.4.19). Fix 4.4.132 post-init upgrade step to skip tax summaries for stock transactions. Fix 4.4.192 upgrade step to keep PPLOG.PPREF2 nullable. Fix excessive memory usage in post-init step 4.4.144 for stores with a high percentage of non-taxable sales. (POS-13403)
  • Fix GC number to be mutable, since it can be changed for unredeemed manual GCs.
  • Fix migration screen title to “Migrating Data” and its progress message to include the “from” version instead of “—–“.
  • During migration, create any missing base product records.
  • Fix crash going from one receiving detail screen to another (with setting to Automatically Show Receiving Detail Whenever Quantity is Change, combined with using Receive All). Fine-tune screen title for variations of receiving screens. Misc cleanup. (POS-13396)
  • Fix so entering site quantities into a new unsaved item record transfers quantities correctly to other sites. Don’t print inventory transfer manifest when creating pending transfers. (POS-13397)



  • Fix some case of hash computation (for tampering checks): (1) multiple sites with different time zones, (2) remote changes to security task levels. Recompute all hashes during upgrade. Reduce remote operation task output for pending dependencies by showing only the first one for each node.
  • Misc cleanup (for Java 8).
  • Don’t reauthorize a tender if it’s changed to 0.00.
  • Wait for I/O from backup/restore command to complete before closing log file.
  • Add another launcher, “Artisan-Command”, optimized for command-line execution (it uses console mode and it suppresses the splash screen).
  • Fix so padLeft also clips on the left (so, for example, we don’t lose last-4-digits of credit card number when some versions of PayGuardian send leading asterisks).
  • Fix to not reject follow-on transactions (void, return) as unsupported when original transaction was done using a card on file.



  • Add support for Datacap TranCloud payment processing (with corresponding field length increases & additional PayConf fields). Fine-tune Card On File list screen. Add Manual CC payment type for no-touch manual credit card entry. In SaleScreen, only display payment types consistent with each station’s payment processing settings. (POS-13363)
  • Major rework of External Accounting (QB Export) to work with multi-store / location-tracking. Also, add missing exports for Finance Charges, Late Fees, and Manual A/R Adjustments; fix handling of GC discounts. (POS-13394)



  • When skipping bogus/corrupt SiteConf records during migration, also skip the corresponding DefaultsConf, XacctConf, etc.
  • Fix migration of site records with no M1 Store IDs. (POS-13398)
  • Misc cleanup (including R/O data workers declared R/W in SaleScreen).
  • Start tracked coupon numbers at 101 so less likely to conflict with manual codes such as “C10”, sometimes used for things like a generic $10 coupon.
  • Fix conditions for disabling “Estimate when On Hold” check box in Sales Slip Style.
  • Handle missing h/w signature as blank (with appropriate message for license validation failure) rather than as a fatal null pointer exception.



  • Fix for upgrade step 4.4.186 when remote operation is active and has more than one pending incoming message in the database.
  • Remote Operation: Ignore dependencies on nodes that have been removed.
  • Fix crash in Repair Qty screen for loc-tracking with All Sites.
  • Fix Repair Qty screen to work with Location-Tracking (by prompting for site *before* going exclusive). Improve error handling. When specific item(s) requested, only apply missing site product corrections to that/those item(s).
  • Create missing Site Product records during migration and in Repair Qty tool when location-tracking.
  • When recreating missing/deleted items during migration, set original inventory tracking mode to most likely: IT_ON.
  • Cleanly fail when trying to save an Item Record with a blank Alternate Code, rather than logging an exception (w/stacktrace) to log.txt.
  • Log DataWorker state errors as (fatal) exceptions with stack traces, instead of just exiting with a message.
  • When logging a station-in-use message, don’t include a stack trace.
  • Critical Remote Operation Fix to not mistakenly delete valid messages that are incorrectly determined to be replaced by retransmissions.
  • Fix migration of Inventory Location settings in Site Records.
  • Fix migration of Location Tracking Mode (it was always LTM_NONE).



  • Close new reference session when sale screen is closed. (POS-13393)
  • Fix failure to load or refresh sale screen’s “reference table” (due to changes in 4.4.178 to fix fatal error loading records after [main] session is closed). (POS-13393)
  • Improve timestamp handling for Magento order downloads.
  • Inventory Change Report: Added the ability to view by Case Quantity. Also important fix for Retail Value when items on the sale were discounted. Additional clarifications and tweaks.
  • Set Day-End posting date/time to time Day-End was *started* not finished (so it’s clear to see why later sales were excluded.)


  • Implement Remote Operation Retransmission (every 10 days). (POS-13380)
  • Remote Operation: Log additional detail when skipping processing due to pending changes.
  • If a sale is shipped to the store’s own address, use the default tax type(s) instead of DBT, even if in a DBT-enabled state. (Useful for online store “Store Pickup”.) (POS-13385)
  • Fix for 4.4.144 post-init upgrade step in some cases with tax exemptions.
  • Flush after *every* pre-init / post-init upgrade step.



  • Increase length of image filenames from 100 to 255.
  • Add “Image” as name for an ImageRecord.
  • Multi-Vendor improvements: Implement PO vendor change (with and w/o option to replace all items). When putting products on a PO for an alternate (non-preferred) supplier, set Case Cost not Unit Cost (from the Vendor Product’s Standard Cost). Add Vendor P/N to default column layout for Receiving Rollup. When selecting a new vendor, default to the current vendor. (POS-13337)
  • Updated SSL-303 Label Form
  • Fix crash creating new site record when site number 999 is already in use. (POS-13383)



  • Fix time zone discrepancies with ISI order downloads and import in general. (POS-13378)



  • Enhance Inventory Transfer to Ignore Filters (POS-13375)
  • Fix to not count non-sales inventory activity of dynamic-priced items as consignment (so they don’t get included in consignment statements). Force dynamic-priced consignment items to be IT_OFF. Default tracking to IT_OFF and vendor to NONE for all dynamic pricing models, not just Fill-In Price. (POS-13376 cont.)
  • Possible fix for more cases of fatal error loading record after session is closed (due to race condition with closing a screen).
  • Include relevant manual inventory adjustments on consignment statements. (POS-13376)



  • Updated CONS-101 Standard Consignment Payout to use the retail price (tranline.retail) from the sale instead of the current price in the item record to report the retail price at the time of the sale. Also fixed the total at the bottom of the page to only show on the last page.
  • Treat Internal Use and Donation sales as pre-discount consignment. (POS-13373)
  • Performance improvement for 4.4.170 upgrade step.
  • Performance improvements for receipt forms (SLIP-T and SLIP-S) and batch reports.



  • DataVision: Fix problems with word-wrapping in report forms for various corner cases. (POS-13369)
  • Import Manager: ignore extra spaces in map file.
  • Possible fix for some cases of fatal error loading record after session is closed (due to table refresh while closing a screen).
  • Major performance improvement for ISI uploads. (POS-13371)
  • Fix crash in 4.4.161 upgrade step due to index renamed in 4.4.173.
  • WooCommerce: Fix item upload when item has *no* product tags.
  • Fix so new Product Tags field in variants is controlled by the Internet Store Fields setting in the template.
  • If PaygistixClient fails to return the PrintSigLine flag, treat it as unknown and use the default, which is to print the signature line if and only if payment class is PTC_CC. (POS-12805)
  • Add Product Tags to WooCommerce. (POS-13367 cont.)



  • Add Product Tags field for Internet Stores (with corresponding Bulk Change). Upload Product Tags to Shopify (WooCommerce to be added later). Clean up Bulk Change Operation names. (POS-13367)
  • Change WooCommerce upload to product variant description field to use Detailed or Brief Description if non-blank and different from base product.
  • Fix loss of focus on search string in record table screens. [4.4.174]
  • Shopify: Fix null pointer due to recent changes for Weight field.
  • Fixes for Bulk Change Custom Fields to match new size & number of custom fields. (POS-13370)
  • Fix TranLine constraint violation with category = null when importing new items w/QOH.
  • Shopify: Fix null pointer when uploading images with missing filenames.
  • Fix for image import from DBF (trim the filename string). Unify image error handling (e.g. too large) to report consistently in all cases.
  • Shopify: Fix null pointer when uploading images with missing filenames.
  • WooCommerce: Let “Reviews Allowed” be managed entirely on the website; don’t upload it from Artisan (custom fields).
  • Remote Operation fix syntax error in new sql for removing a node.



  • Remote Operation fix to remove dependency reference points for nodes that have been removed. (It’s still way better to make sure all the changes are processed at all other nodes before removing a node.)
  • Remote Operation fix for rare case of two updates (from same source) with exact same timestamp.
    New Build: 4.4.174, new Working Version: 4.4.175 Kurt 4/24/2019 9:24 AM
    POS-13366: Fix tender table navigation issues (while still preserving recent fix to navigate to next line after selecting “Leave On Sale” from OOS prompt in main sale screen).



  • Fix for TransientObjectException saving a sale, PO, or Vendor Invoice after editing (via F4) the associated customer (or vendor). (POS-13355)
  • Fix for StaleObjectException in ColumnLayout. Fine-tune stale record checking on indirect table edit cases.
  • Fix 4.4.173 upgrade step to work on postgres as well as sample data (Derby).
  • Loyalty Club fixes: Fix “On January 1st” reset mode. Process calendar year and anniversary rest modes *before* adding new points from a sale. Revert customer type if crossing *backward* across customer type reward threshold. Don’t reissue coupons when backdating and recalculating points, but do give credit for any un-issued coupons based on new points, to be included in the *next* sale’s coupon issuing. Never reset points when backing out changes for previous values on a modified sale. Fixed cases where an expired membership failed to reset points. Added IX_LCSUM_LOYALTY index to speed up some queries. Dialog at end of backdating memberships now accurately reports number of changed summaries. (POS-13294)
  • Fix crash in Sample Data due to large number of new custom fields (by loading tranline.category with a separate loadProxy rather than having Hibernate try to fill everything with one select statement).
  • Fix so changing from a (recalled) Donation to a normal sale reverts each line to the default tax type, rather than NT.
  • WooCommerce uploads: Protect against null pointers from missing entries in category data cache.



  • Fix problems deleting variant attributes and/or values in some circumstances. (POS-13329)
  • Fix incorrect interpretation of percentage discounts as dollar discounts (introduced by dollar discount fixes in 4.4.170). (POS-13364)
  • WooCommerce: Upload shipping weight and dimensions as blank if zero, so they aren’t displayed to end user. Use floating-decimal format (strip trailing zeros) for weight and dimensions.
  • Don’t (unnecessarily) escape HTML characters in JSON encoding (for remote operation messages, Shopify, and WooCommerce).



  • Remove (40-chr) length restriction on Customer and Item Custom Fields. Increase Item Custom Fields from 9 to 30. Redraw Item Custom Field labels (immediately) when the names are changed in a Category Record. (POS-13356)
  • Fixes for 4.4.01 upgrade of Sample Data and for interrupted 4.2.59 upgrade.
  • Add version number to ArtisanTasks log header.
  • Fix ConcurrentModificationException uploading to Internet Stores with changed higher-level categories (with unchanged sub-categories). (POS-13362)
    Fix so adaptive-percent fields (such as Discounts) handle numbers larger than “999.99”, and fix glitches in switching between decimal and percentage formats. (POS-13353)
  • Enforce “supervisor” (next level up) authorization to change user records and time clock records (maxed with specific setting).



  • Continuing Remote Operation updates…



  • Major rework of Remote Operation Task (among other things, to commit all rcvd message to the database before processing).
  • Add missing Void Sale Task Level to Security Settings (it was being set behind the scenes, but you couldn’t see it or change it individually).
  • Major fix for Inventory Change Report. 1) Fixed the calculation for when ending date is less than the current date. 2) Fixed an issue with Inventory Location vs. Sales Location. 3) Fixed an incorrect field name in the summary.
  • Fix migration to conform to 15-char limit when it generates a machine name for a station record with blank machine field.



  • Fix so Item Info on PO Screen is updated after Ctrl-F4, in case anything changed in the Item Record. (The Sale Screen was previously modified to do this.) (POS-274)
  • Fix JSON error uploading items to WooCommerce due to a new meta_data field in the response, “_json_schema”, with an array value instead of a string; this must have been triggered by some recent upgrade or configuration change (e.g. plugin) on our sandbox server. [WordPress 5.1.1, WooCommerce 3.5.6, various plugins.]
  • Support images for categories in WooCommerce. (POS-13288)
  • Fix for duplicate constraint complaint creating new sample data (due to recent Statement Record index changes).
  • When importing customers w/balances, include *all* adjustments/credits generated from the same import in one Day-End posting.
  • Fine-tune timing of Remote Operation Task receiving to prevent infinite loops with visibility timeouts. Make message received logging output more compact. Show date and system info at top of log, even after clearing it to run a new task.
  • Add java version and memory size to startup info in ArtisanTasks log. Fix memory available in About info to take future pool expansion into account. Show exception info before DONE msg in RemoteOperationTask.



  • Enhanced the Sales By Item Report (SAL-101) to have an option to include NON-POSTED transactions.
  • Allow merging of customers with A/R statements on the same date (but still not generation of *new* statements on an existing date). (POS-13348)
  • Update INV-056 Inventory Adjustment Detail Report Tweaks and Fixes
  • More fixes for upgrade step 4.4.144 to avoid transact check constraint violations from null TAXEXTYPE with ANYEXEMPT = ‘Y’ when upgrading across multiple versions including earlier post-upgrade steps that cause Transact totals to be updated (such as 4.4.66 and 4.4.132).
  • Remote merging fixes for a) inserts with *multiple* duplicate key fields (such as user short and full names), b) inconsistent changes to Finished Date from two different nodes (copy Sale Date to Finished Date if TSTAT >= READY and Finished Date is null).
  • More remote operation task fixes: fix the sort order for processing changes; fix the receive message loop to read *all* of the available messages. Change the visibility timeout to 1/2 the task interval (but at least 30 seconds) rather than always 30 seconds.
  • Change Remote Operation RPA strategy to process changes in order of timestamp between nodes and sequence number from the same node, rather than processing all changes for each node before moving to the next node. This was causing FK violations due to ordering issues with 3 or more active nodes.
  • Fix null pointer displaying Item info on PO screen for a (new) PO line w/o a request date. Fix to strengthen constraints and PO screen code so all non-trivial stock units *must* have a request date (for PO w/o Request, based on the PO Issue Date). Clean up various subtle problems in date field editing on PO screen. (POS-13351)
  • More fixes for remote upgrade steps that weren’t fully executed previously.



  • Support copying Real Data to Sample Data even when Remote. In general, both copy to sample data and prepare new remote node now allow either method of copying data: direct copy on server or backup/restore (silently default to direct copy if nobody else is using the database). (POS-13320)
  • More fine-tuning of progress messages for pre- and post-init upgrade steps.
  • Fix upgrade step 4.4.144 to avoid transact check constraint violations from null TAXEXTYPE with ANYEXEMPT = ‘Y’ when upgrading across multiple versions including earlier post-upgrade steps that cause Transact totals to be updated (such as 4.4.66 and 4.4.132).
  • Cleanup after partial creation of remote node when canceled at backup file selection. Fix failure to turn on remotes when an (inactive) site node (migrated from 3.X) already exists for the main site (by deleting that node first). When creating a secondary node, if that datascope already exists (with number reservations), just take it over (but only if it’s marked inactive). In both cases, fail if the existing node is not inactive. Lay some more groundwork for (still NYI) multi-site nodes.
  • Don’t prompt to confirm expired license when saving customer record changes unrelated to license info.
  • Fix ConcurrentModificationException changing Customer Type & Discount in Sale Screen (by having updateTranLines work with a *copy* of the list of lines). (POS-13346)



  • Fix to set NT (No Tax) on all lines of an order imported with zero tax, not just the first line. (Fix assert sessionContains in adjustStock to skip permanent items.) (POS-13340)
  • Fix errors about detached instances in Scan Mode due to underlying problems exposed by recent record locking changes: scan mode records are not persistent, but some of the code wasn’t checking for that and was saving them to the database anyway. Delete existing scan and scan job records during upgrade. (POS-13343)
  • Fix so vendor invoice totals include Fix spurious AUTO-CORRECT adjustments (of On Order Qty) when adding units to a brand new Vendor Invoice while receiving w/o PO (due to internal ordering problems). Fix so pending stock corrections received w/o PO record activity using the timestamp of the original OOS sale. Fix so partially received pending stock corrections set inventory change type (to IR_OOS_PENDING) on the split line. Fix so Import comes before (below) any other inventory activity with same timestamp. (POS-13341)
  • Add Artisan Tasks icons to installer.
  • (Build fixes for remote upgrade changes.)
  • Fix so derby.log is written to the local folder, along with log.txt, rather than the program folder (actually, it was the current directory); clean up any leftover derby.log files in the program folder during uninstall (for now). Fix so Derby isn’t booted until and unless we actually open Sample Data, and completely deregister and free up its memory if we switch from sample data to Real Data. Fix to write log.txt even when running in the development environment (which was broken when IDEA switched from “.ipr” project format to “.idea”, but we didn’t notice). Intercept JDBC log output and send it to log.txt, but only if “debug” level logging is enabled in log4j.properties for “java.sql”.



  • Fix up remote data for previously missed remote upgrade steps. Improvements to upgrade progress reporting.
    Fix remote upgrade mechanism’s failure to upgrade the local CHANGE_LOG records. Split remote upgrades into individual steps (when run from the Artisan side rather than ArtisanTasks); slower, but resilient to crashes.
  • Fix failure to mark default search scheme for a context as default in preferences, in some cases.



  • Fix for Label Stock SSL-340 Barbell labels.
  • Major install package changes: Switch to folder style install for Mac. All non-launcher files move to “lib” subfolder (to make Mac folder install cleaner). Use launcher for Artisn Task Manager (with -Xmx1g by default). Name 32-bit windows package explicitly. Accept Java 1.8_0_201 but install 202 if 201 or later not present.
  • Fix for new Label Stock SSL-1X0.5X2 1 x 1/2 (2 Across)
  • Significant fixes for the Inventory Adjustment Detail Report – INV-056
  • Fix hang putting tracked coupon on a sale. Optimize related event handling. (POS-13336)
  • Add Pending Transfer screen (under Inventory Transfers) to more easily manage pending transfer quantities (including by scanning). (POS-13319)



  • Fixed various issues when saving a records or a sale that were associated with Purchase Summaries for Customer Discounts and other permanent Item Records. (POS-13334)
  • Fixed problems when saving an existing record that no longer exists in database. (POS-13334)



  • Fix failure to mark percentage coupon sales lines (including customer discounts) as non-sales. (Includes data fixup.) (POS-13334)
  • Major changes to ISI to publish Category Names/Descriptions instead of Category Codes. Also: upload items when their variant templates change; upload product dimensions to WooCommerce. (POS-13312)
  • During migration assign new Customer IDs to duplicates. (POS-13333)
  • Fix so changes to subsidiary records mark the parent (Item, Transact, or Variant Template) as modified and create audit log entries, even when nothing in the parent record itself changes. In particular, this was causing ISI to miss changes to Variant Attributes or Values. (POS-13330)
  • Fix for 4.4.147 changes that caused missing records from Item Records list screen when Product Variants are enabled.
  • Increase length of Item field “Additional Categories” from 70 to 200. (POS-13345)



  • Add Misc Program Option to Transfer Inventory By Cases. Fix duplicate and incorrectly-named columns in tables with indirect fields. (POS-13327)
  • Fix null pointer during migration of data that had remote sites. Add missing caching of number properties in data session. (POS-13328)
  • Add support for multiple line pole displays like the Logic Controls / Bematech LV4000U. (POS-13310)
  • New Label Stock 1 x 1/2 (2 Across)



  • Fix to store Non-Tax Category explicitly in TranLine, so it doesn’t get recomputed from current category hierarchy when transact is modified. This also prevents a transact check violation when modifying cost on a zero-cost item that has been previously sold on a sale with non-taxable items, in some cases.
  • Fix loss of lock on customer record while saving sale, which fired an assert. This caused issues when saving a recalled sale.



  • Fix for “isRecordStale cannot be used with detached instances” saving a TranLineRecord in some cases. (POS-13325)
  • Fix for bogus tender IDs in Payment log from migration for Batch Settle and card-on-file actions. [Include QUERY actions too.]
  • Fix migration failure in tranline table due to isRecordStale check (from recent changes). (POS-13326)
  • Fix for bogus tender IDs in Payment log from migration for Batch Settle and card-on-file actions.
  • Add missing factory method for TAXLOC, to fix migration error.
  • Exclude hidden transactions from Day-End Reprint “min date” (unless *all* transactions in a posting are hidden). (POS-13315)
  • Fix error handling for failure during upgrades while remote.
  • Fix for 4.4.123 upgrade step to add missing finish date.
  • Fix null pointer during station migration with empty station records. (POS-13324)
  • Exclude hidden transactions from Day-End Reprint “min date” (unless *all* transactions in a posting are hidden). (POS-13315)
  • Implement Serial Scanners, Scales, MSR, and Check Reader. (POS-13311)
  • Add F8 Scan Mode to Receiving Rollup screens. (POS-13314)
  • Add option for fixed-amount discounts with BOGO and nFer formulas. Fix nFer case with fixed-amount prices (and now discounts) when total doesn’t divide evenly across qty. (POS-13313)



  • Fix null pointer in updateTotals downloading ISI orders (in import).
  • Fixes for record locking changes to item quantity correction screen.
  • Fix (INV-056) for Inventory Adjustment Detail to show items that no longer have inventory tracking, but did in the past with adjustments. (POS-13305)
  • PPLOG (PPL-402) Reconciliation allow for full name length of 60 instead of 40 which would very rarely cause an error running the report.
  • Fix to not split shipping for vendor bills (including consignment) into separate QuickBooks bill transactions (when there was more than one bill in same posting). (POS-13285)
  • Fix assert failure receiving by PO with vendor invoice (stock unit already in data provider).
  • Fix PO failure to refresh dirty records (by skipping the dirty stock units and hoping they haven’t been changed elsewhere).
  • Fix event handling for Save so that, for example, vendor invoice number is committed before processing Save (avoiding an error that it was empty when typed but not moved off). (POS-13303)
  • Fix null pointer in updateTaxType downloading ISI orders (in import).
  • Enhance ISI payment type check for Auth.net to include “authorizenet” w/o punctuation (and other variations).
  • Finish Destination-Based Tax phase 2: remembered values. (POS-13247)
  • Use record locking (and lock ordering) to prevent race conditions (and StaleObjectExceptions) in Bulk Change Operations, Inventory Management, Saving Sales, A/R Statements, Purchase Orders, Receiving, etc. POS-13262: Require exclusive access for Item Qty Repair tool; strengthen exclusive access checks in general. (POS-13184)



  • More Zoey/Magento fixes: Fix missing update of existing categories. Compare existing images before deleting and replacing them, to avoid repeated image uploads.
  • Add Station Class field and exclude Non-Interactive stations from ASL license counts.
  • Fix migration of customer type fields for loyalty clubs. (POS-13308)
  • Magento: Check if product exists on site before deleting; continue after error creating image; protect against some possible cases of missing product IDs.



  • Avoid rare PO crash by making site Store Name field non-nullable. (POS-13302)
  • Update SAL-051 (Day and Month End) and SAL-213 for the new sales tax model.
  • Force 4.4.19 upgrade to fail with unbalanced transactions after showing message. (This was happening implicitly originally, but broke when the table constraint update was moved to 4.4.113.)
  • Update and Fix for FIN-043 Tax Exempt Detail Report with new sales tax model and also to include sales without customers and fix so report can run in Sample data. (POS-13304)
  • Fix new TaxType constraints to work in Sample Data. Fix incorrect precision for new TAXMIN3 & 4 fields.



  • Move TAXEXTYPE fix-up to 4.4.123 upgrade step to catch post-4.4.113 cases.
  • Fix for possible round-off error in 4.4.132 upgrade step.
  • Fix so non-percentage tracked coupons are taxable sales instead of non-sales.
  • Fix 4.4.130 upgrade step.



  • Rework Tax Specs to support multiple ranges.
  • New Java 8 update 202. Experimental new installer for Mac to use folder with multiple launchers. New launcher for ArtisanTasks.
  • Code cleanup (for Java 8) in External Accounting.
  • Minor tweak to not-yet-active serial number code.
  • Fix so label printing after Receive w/o PO includes ALL items just received, not just the first one. (POS-13299)



  • Fix a number of problems with Vendor Invoices, especially those related to Receive w/o PO prompting for Vendor Invoice. (POS-13296 (and more))



  • Fix Item constraints to allow Per-Diem Rentals. (POS-13295 (part 2) for Migration)



  • Another migration fix for 3.5 Customers: Zero out bogus negative ROA line. (POS-13286)
  • Customer Import: Fill in Customer ID and Customer Since, if missing.
  • 4.4.123 upgrade fix (this time for unnecessarily non-null TAXEXTYPE).
  • Always use menu key “Z” for Bulk Delete in Bulk Action menus.
  • Add missing Bulk Delete Categories
  • Display “Deleted” in title of deleted records. Change to allow deleting records with references (for record types that aren’t permanently deleted), but with a strong confirm.
  • Fix one more field in migration of component lines with missing kit lines. (POS-13286)



  • Migration changes and improved 4.4.123 upgrade step for Destination-Based Tax.
  • Fix 4.4.125 upgrade step to work in Sample Data.
  • Updated standard slips to prevent cutting off of Store Address under certain circumstances.
  • Clarify that migration message about negative prices is just a warning.
  • Add remote upgrade step for 4.4.126.
  • Fix blank line in the middle of multi-line address fields, from empty street2. (POS-13293)
  • Fix migration to turn component lines with missing kit lines into normal sale lines. (POS-13286)



  • Treat zero-priced item changed to non-zero in Sale Screen as a Fill-In-Price item for purposes of tranline.retail calculation, but with an extra confirm. When confirming saving Item Record with zero price, suggest they might want to use Fill-In-Price instead.
  • Upgrade existing cases in the data (including remote changes in flight).
  • Fix missing cross-site authorization check when changing Inventory Location on Sale Screen.



  • Fix divide by zero in kit distribution when component total price is zero.
  • Strengthen TRANSACT constraint check for FINISHED to include TSTAT_HOLD (FINISHED must be null). Add back TRANSACT constraints accidentally dropped in 4.4.113 upgrade step. (POS-13286)
  • Fix migration to clear TRANSACT.FINISHED when illegal for 4.X (< TSTAT_READY). (POS-13286)



  • Improve reporting of SQL errors from Artisan Task Manager, in some cases.
  • Fix Remote Operation to handle changes to security task levels. Fix minor problem with AuthConf corruption check. Improve reporting of SQL errors from Artisan Task Manager, in some cases.
  • New Label for 1/2 of Avery 5167 for 160 labels instead of 80.
  • New Label for 1/2 of Avery 5167 for 160 labels instead of 80.



  • More fixes for 4.4.119/4.4.113/4.4.115 remote upgrade step.
  • Fix off-by-one conversion of non-ALL customer types in migration for Loyalty Clubs and Customer Search Schemes. (POS-13292)
  • Move 4.4.113 & 4.4.115 remote upgrade steps forward to 4.4.119 so it applies to users who had already upgraded before they were added.
  • ArtisanTasks: Ignore non-existent task names from –context arg, rather than starting tasks w/default parameters.
  • Add missing Remote Upgrade Steps 4.4.113, 4.4.115.



  • Specifying which built-in reports do not run in Sample Data for now.
  • Minor tweaking of SAL-213 Daily Sales Tax Detail Report.
  • Minor tweaking of FIN-043 – Tax Exempt Detail Report.
  • New Report MCH-194 – Item Trend Report
  • Inventory Change Report – Fix the problem with retail price and added the ability to roll up by Base Product Variant.
  • Speed up upgrade steps 4.4.113 – 3.3.117. Fix corner cases that were causing constraint violations.
  • Record retail price in inventory history. (Upgrade step fills in with current price.)
  • Fix typo in new change for Sample Data flag in reports.
  • 4.4.115: Add ability to disallow select reports from running in Sample Data.



  • Report Engine: Add JEP Report Formula Function “date_trunc”.
  • Generalize Pending OOS handling to allow for replacement by units that were received in the past (i.e. already on hand), in case we add such use cases.
  • Destination-Based Tax (DBT) phase 1 (no lookups). (POS-13247)
  • Data Import: Improve Import of record reference fields (such as ITEM.VENDOR, ITRANL.ITEM, etc) to prefer primary codes and to otherwise fail if multiple alternate or secondary fields match.



  • Data Import: Fix Imports to set shipping to the detected tax rate.
  • Data Import: Fix Imported Sales to not be included in Shift Closing.
  • Fix failure to load discount % onto sale for percentage coupon items.
  • Migration: Handle station records with missing station names. (POS-13280)


4.4.102 – 4.4.110

  • Remote Operation: General Fixes / Improvements
  • Add Bulk Change Consignment Settings. Fine-tune display of consignment-related fields in Item Lists. (POS-13276)



  • Inventory Counting: When zeroing uncounted or accepting counts, ignore uncounted items that already have zero QOH.
  • Remote Operation: Fix crash merging local records by special-casing the delta merge policy for “modificationCount” to apply to remote operation only.
  • Fix for divide by zero in consignment statement when a vendor is paying processing fees and there’s a transaction with zero total amount.



  • Fix to re-run search after deleting last remaining advanced filter clause (and automatically recreating default filter clause). (POS-13275)
  • More fine-tuning of order date handling for WooCommerce.
  • Fix Imports to do auto-number assignment (for now, based on current settings) when corresponding fields are blank.



  • Update INV-123 Inventory Item Listing report. Added more details for the Promo (discounted price) details. Now honors category discounts.
  • Cloud 2.0 (Remote Operation): Unless old values are missing, don’t clip out-of-range delta values for inventory qty fields (to avoid introducing inconsistencies); let them fail instead.
  • Fix so items taken over as variants for a new base product keep their current inventory tracking setting (if template is in split inventory mode). (POS-13264)
  • Data Import: Add import for Item Alternate Codes.
  • Fix null pointer in ItemRecordScreen.checkUpcPrefix in obscure case with vendor null.
  • Inventory Transfer Scan Mode: Fix for NonUniqueObjectException in Inventory Transfer screen in some cases.
  • Scan Mode Validation: Fix to reject F8 scans for records that don’t match current base filter.
  • Fix 4.4.87 upgrade step failure due to already existing “source_fields” in some cases. (POS-13272)



  • Fix 4.4.87 upgrade step failure due to missing “depends_on” in some cases.
  • Cloud 2.0 (Remote Operation): Compute merged stock unit state from QtyOnHand (and QtyOut) to allow for some cases of selling the same unit from multiple nodes.



  • Make sale line inventory location read-only on the sale screen once a sale has been saved.
  • Don’t reserve item or barcode numbers when the current numbering schemes don’t require them.
  • Fix inventory handling for Force-Deliver to not add extra reservation for lines that are already on hand.



  • Data Import: On Item import, set missing MFR to NONE.
  • Data Import: Extend Import function to check for a name-mapping file w/”.map” extension (including map to blank, to skip columns).



  • Disable Internet Store Inclusion for deleted Items, Categories, and Vendors, and Discontinued Items. When deleting a Category Record, move any sub-categories to this one’s own parent. (POS-13266)
  • Show consignment details on Item Record Screen if Preferred Vendor is a consignment vendor, even if the consignment feature is disabled. Enhance migration to enable Base-License features (such as Consignment) iff they were enabled or used in 3.X. (POS-13213)
  • Fix crash changing Auth Tasks or Remote Number Reservations while Remote. (POS-13268)
  • Fix WooCommerce to find *all* categories on web, not just first 10. (POS-13263)
  • Disallow migration from 3.X while any remotes are outstanding.
  • Fix subtle problems with Power Searches, especially when reverting changes and/or changing Search Schemes.



  • WooCommerce: Move from v2 to v3 WooCommerce API (version 3.5 or later).
  • Remote Operation: Final fine-tuning of missing-value heuristics, and fix do SQS code is not obfuscated during build (which affected syntax of large payload messages).
  • Fix null pointer in makePurchaseRequest() from recent date-only changes.
  • Magento & WooCommerce: Include completed orders as well as processed, in case user marks them complete before Artisan download.
  • Remote Operation: More fine-tuning of missing-value heuristics.
  • Remote Operation: Allow for timestamps w/o milliseconds.
  • Remote Operation: Ignore missing computation source fields (from older change packets).
  • Remote Operation: Ignore missing dependencies (from older change packets).
  • More fine-tuning of Remote workaround for missing old values.
  • Include line numbers in stack traces from built ArtisanTasks.



  • Remote Operation: Improve workaround for missing Delta old values. Prevent constraint violation attempting to make non-negative Delta fields go negative.
  • Minor updates to Feature Schedule.
  • Multi-Line Text fields Import for TTX files (including ISI).
  • Fix recent overzealous assert on DataWorker.execute doing interactive import.
  • Fix upgrade steps for 4.4.87 & 4.4.90 to work in Sample Data.
  • Remote Operation: Fix for null values during updates.
  • Fix a number of fields that were being treated as date-only fields to actually be store as Date types in the database.



  • Remote Operation: Fix to honor AWS SQS limit of deleting at most 10 messages at a time; discard duplicate messages even when they’re out of order; work around missing “old” values for deltas (from older versions); log unexpected data types for Min/Max/Delta merges; fix Union (comma-list) merges.



  • Remote Operation: Fix for Min/Max of date-only fields.
  • Remote Operation: Fix to work with PostgreSQL 10.
  • Remote Operation: Remove NYI; add confirms. Finish Merge Policies, including enhancements to handle derived fields and hash computation. Fix hash computation for corruption checks to be more stable (and re-compute again during upgrade). More fixes for upgrading while remote.
  • Shopify: Fix to check *all* items not just the default first 50 when looking for new items by SKU w/mismatched title.
  • Remote Operation: Change MODCOUNT to Delta policy, so merged records show as modified at all nodes.



  • Fix early exit from Artisan when in non-interactive mode. [broken in 4.4.78]
  • Improve logging of fatal errors and normal exits.
  • Fix missing “discountstartdate” in Bulk Change Retail Discounts. (POS-13261)
  • Exclude system record from remote logging.



  • Rework number locking to prevent deadlock creating a remote node on Windows.
  • Fix failure to calculate merchant processing fees on consignment statements.



  • Simplify remote number locking for background task.
  • Rename some leftover referenced to “Data Group” to be “Data Scope”.
  • Rework the Remote Upgrade code so it can work from a pre-Hibernate context (even the shared code that gets called later).
  • Improvements & fixes for Remote Operation Number Management and Merge Policies.
  • Merge Policy annotations for Transact/TranLine/Tender
  • Fix for duplicate confirmations on Alt-D from a record table. (POS-13260)


  • Automatically set Mfr/Pub for Items to match Vendor when Vendor is an Mfr/Pub/Artist (and Mfr not already set to a different record). Add Vendor Type to default Column Layout for Vendor Records.



  • Enhance Remote merging of fields with dependencies to use Default policy for dependent fields if the depends-on field is (now) the same in both copies.
  • Fixed for when adding siteprod records to not duplicate entries because lack of sort order.
  • Add MergePolicy for a number of records.
  • Fix null pointer in Shopify download when some information is missing.



  • Fix for user-initiated event changes: wrong default was causing table edits to *not* be marked as user-initiated. (POS-13256)
  • Add Bulk Change Extra Categories. (POS-13257)
  • Fix from Number Properties changes for ordering issue during new database creation.



  • Fix for double-subtraction of manual QOH change when location-tracking but showing total QOH on Item Record Screen. Many related event handling changes in common code to clarify user-initiated events. (Fix one case of Session is Closed while changing Column Layouts [via windowResize].) (POS-13256)
  • Fix race conditions assigning numbers (slips, GCs, etc.). Internal cleanup of DataWorker/ProgressWorker to handle synchronous cases better; null progress title no longer implies synchronous execution. (Among other things this removes some duplicate error stack traces.) (POS-13186)
  • Add back NumberingProfile.getMinReserveMap; it’s used indirectly from the Config Settings screen form.
  • Fix race condition setting default Numbering Profile (by going into Configuration Settings or creating a remote node) concurrently on two stations.(POS-13186, partial)
  • When importing customers w/o names, clip the resulting constructed name (based on Customer ID) to fit into the field length of 20 characters. (POS-13254)
  • Fix race condition closing screens with lazy combo box events in progress.
  • Minor performance improvement to queries for A/R statements. Basic Java 8 cleanup.
  • Fix Shopify upload of non-variant items. (POS-13253)
  • Fix so Sale Screen Reference Table is not re-sortable, and is in order of applying payments (with Ctrl-A), with *oldest* first (within each class [credits, then finance charges, then delivered transactions, then pending layaways/orders]). (POS-13252)



  • Fix some subtle race conditions in record screen event handling that caused (among other possible problems) an assertion failure when changing an Item’s Preferred Vendor while not using Multi-Vendor. (POS-13238)
  • Add (hidden) Shift-Ctrl-N action in Inventory Counting Screen to set all (selected) to Not Counted. (POS-13241)
  • More Remote Operation work.
  • Internet Store Interface: Fix ArtisanTasks download task config to hide (and not require) WordPress fields. (POS-13251)
  • Fix failure of assert that item has property changes enabled when zeroing uncounted while accepting counts with location-tracking. (POS-13249)
  • Fix divide by zero in 4.4.66 upgrade step when an IT_OFF tranline w/o inventory has lineQty zero. (Skip those lines.) (POS-13250)



  • Going forward, allow upgrades while Remote. (POS-13245)
  • Merge Policy Updates (Partial) for deciding how fields are merged when there are duplicates.
  • Fix QuerySyntaxException deleting stock units when there are NO referencing tranlines. (POS-13240)
  • Various Fixes in Remote Operation. (POS-13248)



  • More Remote Operation fixes (merging built-in Search Schemes, always-included field merge nuances).
  • Fixes for duplicate merges in Remote Operation.



  • Fixes for duplicate images in WooCommerce. (Requires separate WordPress credentials via “Application Passwords” plugin.) Fix WooCommerce variant order. Require https for WooCommerce. ISI in general: Look for Categories by name before using cached record ID. Check for missing required fields before running. (POS-13223)
  • Exclude “version” from the System Record corruption check, so upgrades don’t cause a tamper message.
  • Remote Operation Work
  • During migration, discard bogus Station and SiteConf records.
  • Fix for Best Seller Report with quantity on hand totals when grouped by item.



  • Implement Remote Number Replenishment.
  • Remove MergeProperties.local and just use MergePolicy.Ignore.
  • Don’t allow creating Sample Data from Real Data while Remote (since Sample would think it’s Remote).
  • ArtisanTasks: Disable Run button when fields are Changed but not Saved.



  • Require exclusive access to create Sample Data from Real Data. Various Java 8 cleanup.
  • Fix failure to record (placeholder) inventory history for IT_OFF sales such as GC & deposits. (Broken in 4.4.43, but the upgrade repairs data from similar older glitches as well.) (POS-12346)
  • Internet Store Interface: Split Variant Template settings for Internet Store Fields into 3 separate settings. (POS-13229)
  • Remote Operation Work Continues



  • Remote Operation: Enforce (now optional, unlike 3.X) VCI numbering restriction.
  • Internet Store Interface: Improve Shopify error handling.
  • Resolve Issues with Inventory Transfers.



  • Final fix for AuthConf tamper check.
  • Remote Operation: Work continues.



  • Internet Store Interface: Shopify: Fix so Shopify doesn’t keep recreating variants on every upload. Default to inventory policy “deny”.
  • Internet Store Interface: Shopify: Supports Shopify’s New Inventory Multi-Location model API.



  • Fix for QuickBooks export for customer deposits such as a layaway or special order payment.
  • Increased SQL database security for security-related tables such as Authorization Tasks and User Records. The increased measures protect these tables from external tampering which could defeat the security control. For example, an unscrupulous person who had somehow gained access to a back-end database password (NOT a normal Artisan password) could attempt to increase their access level and gain access to parts of Artisan they would otherwise be restricted from. These back-end direct modifications are now flagged with warning messages.
  • More WooCommerce variant fixes.



  • Major performance improvement for Reset Counts in Inventory Counting. Fix Reset Counts to not re-prompt for Site.
  • Payment Processing: PayGuardian 2.4.2 now supports returning CardHolder Name.
  • Fix possible round-off error in stock unit unit cost for virtual (or, for consignment, unsold) stock units when cost is changed in an Item Record with a case size.
  • Internet Store Interface: WooCommerce: Rework ISI handling of variants to get variants working for WooCommerce. Strip secret keys from error msg log in WooCommerce.
  • Internet Store Interface: Fix join to STOREMAP in variant check to match on store name (and table name) so as not to pick up entries from another task.
  • Remote Operation Work Continues



  • Improvements to Item Quantity Correction Screen to allow for wildcards and multiple items.
  • Fixed Adjustment Detail report to show user, changed date format and allowed the detail line more space.
  • Internet Store Interface: Shopify: Workaround stupid lack of search by SKU API: After searching by title (product name/description) download *entire* list of products. This should only happen during first-time startup or if someone manually deletes products from Shopify.
  • Fine-tune messages on Repair Quantities screen.
  • Remote Operation Work Continues


  • Fixed Sales Summary Report to honor the Hide Cost flag in the Day End Misc Program Options.
  • Remote Operation Work Continues



  • Fixed Inventory Summary report to break summary totals down by site. (POS-13235)
  • Fix Sales Summary report to handle large numeric values since a small number of the fields were defined too small.
  • Fix missing resultSet.next() in 4.4.47 upgrade step.
  • Internet Store Interface: Shopify: Handle customers w/o addresses.
  • Blank out columns in Locations… (on Item Record Screen) that are not per-site based on current Location-Tracking Mode or Reorder Mode. (POS-13233)
  • Remote Operation Work Continues



  • Internet Store Interface: When downloading internet orders, invoke Artisan via launcher (if available) instead of jar file, so it uses same JRE and VM options as when run interactively. Locate Artisan via launch directory (if possible) rather than current directory. (POS-13226)
  • Combine location-tracking options into a single Location Tracking Mode (None, Full, or On-Hand). For On-Hand mode, Qty Reserved is now global, too. (In On-Hand mode, only On-Hand, Out, and Counted quantities are per-site.) (POS-13212)
  • Remote Operation Work Continues



  • Internet Store Interface: Shopify: Improvements and Fixes for Variant uploads (POS-13225).
  • Remote Operation Work Continues
  • Improvements to Artisan Tasks especially with multiple tasks running at the same time.



  • Fixes for Real Sample Data for general and Artisan Cloud (POS-13224)
  • New “Multi-Store Station” label is set when opening database.
  • Fix Customer A/R Balance computation to include only delivered transactions, also re-compute all balances during an upgrade.
  • Major changes to the internals of the Repair Quantities tool, especially for location-tracking cases. Prepare tool for new interpretation of Order Location
    Tracking Mode to include QTYRESERVE as well.
  • Fix for “r.online not found” choosing Internet Store Only (or not Internet Store) in Power Search.
  • More fixes for 2D barcode scanning, and long swipes/scans in general. (POS-13210 continued)
  • Enhance License Barcode parsing to treat LF, CR, and CRLF the same. Different scanner models and/or drivers map those characters differently, and the newer
    DS4801 scanners weren’t working. (POS-13210)
  • Added Sales Site prompt to Consignment Reports.
  • Physical Inventory: Rewording for Ctrl-N & Ctrl-Z; allow the user to choose whether or not to honor search filters for Ctrl-Z. Workaround text wrap resizing
    problem by having option dialogs pack twice. (POS-13214)
  • Fix inventory assert that was too strong when not order-location tracking.
  • When stealing reservations, only look at “victims” with reservations at the target site. (POS-13212 continued)
  • Fix so as to not lose fill-in-price values when changing sale type on a copied sale, and similar scenarios (due to failure to copy transient line flags).
  • Fix Repair Qty tool for multi-site reservations to get the on-order reservation from stockunit.reqsite instead of stockunit.site.
  • When stealing reservations, prefer (on-hand) stock units from the same order chosen as the “victim” for replenishment via new request(s). (POS-13212 continued)
  • Fix so cancel/void/force order skips IT_OFF items.
  • Fix to skip IT_OFF lines when checking for cross-site deliveries. (POS-13212 continued)
  • Don’t allow delivering sales as a result of a payment, for sales with inventory from another site. (POS-13212 continued)
  • Best Sellers Report updated to show QOH for the specified site or all sites. (POS-13217)
  • POS-13215: Fix vertical sizing of item alt codes table to handle any number of alt codes.



  • Fix 4.4.10 upgrade step again to skip alternate name for existing constraint (“site_m1store_check”). (POS-13211)
  • Item Listing Report has a new parameter option to only show discounted items based on the item record.
  • Add authorization check and confirmation for delivering sales with inventory from another site. Prefer non-reserved stock units for non-reserved inventory changes. (POS-13212 – part 1)
  • Fix vertical sizing of item alt codes table to handle any number of alt codes. (POS-13215)
  • Best Sellers Report updated to show QOH for the specified site or all sites. (POS-13217)
  • Don’t allow delivering sales as a result of a payment, for sales with inventory from another site. (POS-13212 – continued)
  • Fix to skip IT_OFF lines when checking for cross-site deliveries. (POS-13212 – continued)
  • Fix so cancel/void/force order skips IT_OFF items.



  • Fix 4.4.10 upgrade step again to skip alternate name for existing constraint (“site_m1store_check”). (POS-13211)



  • Fixed Receipt Printer Sales Summary report to honor hide costs.
  • Enhance Repair Qty advanced maintenance tool to prompt for Item Code (blank for ALL).
  • Fix inability to set task level for “Marking Waiting Orders Delivered or Ready” (because it was renamed internally to TASK_FORCE_WAITING_READY and the form wasn’t updated).
  • More fixes for reserved stock unit handling (missed check for Waiting -> Ready on receive). (POS-13207, POS-13209)
  • Fix checkOrderFinished to check the status of *all* line items (by reworking it to happen at the end of the whole process), so a saved order isn’t prematurely marked Ready. (POS-13209)
  • Fix to skip new check for slip number (from 4.4.32) when payment action doesn’t require a slip number (e.g. adding a card on file).
  • Allow 4.x migrations from 3.5 data up through 3.5.99 just in case they are needed.



  • Add Xacct option to include (end) date in (default) export filename. Add Xacct option to include (end) date in (default) export filename.
  • When choosing file to Save, re-prompt if can’t create file or user declines to overwrite existing file.
  • Fix so XAcct settings shows Site Name not Station Name.
  • More fixes for reserved stock unit handling. (POS-13207)
  • Fix Ant build after Remote Op changes.
  • Fix for recent inventory changes, so voiding or force-delivering orders find their own stock units. (POS-13207)
    Add site to stock warning message. Reserve full amount for IR_ORDER_FORCE, even in stock warning case.
  • Check in Remote Operation design docs.
  • Minor optimizations for Remote Operation.
  • Remote Operation: Fix fir invalid SITE_LIST msg. Refresh status screen when activated.
  • Add program option (in renamed “Receiving & Vendor Invoice Screen Options”) to Allow Vendor Invoice Before Receiving.
  • Remote Operation: Clean up start-up error messages.
  • Remote Operation: Cleanly fail on all operations when not enabled.
  • Change “Real Sample” run configs to use –welcome instead of hard-coded data name.
  • Fix null pointer receiving via Locations… table. (POS-13206)
  • More fine-tuning for Remote Operation and local record merging.
  • Fix ArrayIndexOutOfBounds importing from xlsx file with empty columns.
  • Use more verbose from of exception error messages, which typically includes the exception class name.
  • Fix (loyalty club back-dating) date prompting to return correct date (rather than default date) with date-only option.
  • Fine-tuning for Remote Operation.
  • Fix leftover constraint checks from 4.1.89 or older data that prevented loyalty club points from going negative. Don’t issue coupons when recalculating points for back-dated loyalty club. Fix incorrect declaration of size of points summary field and change to display points as a floating decimal field. (POS-13183)
  • More changes to dependencies for virtual columns (like those just added), and the dependency code itself.



  • Added SITENAME and SITENUM to Purchase Requests, Pending Orders, View/edit Purchase Order, Receiving, Vendor Invoices, CC Payment Log, Sales, Voids, Orders, etc. for The Escape. Future enhancement would be to include all the potential sites such as request site vs. ship to site.
  • Fix line placement in Report Designer that was broken by POS-11536. Fix pop-up title for lines to be updated dynamically to show the line’s coordinates. (POS-13201)
  • Allow ClientState.getServerTime() to be used even when not in a Data Worker, and remove corresponding assert. (Most of the time it uses cached info, anyway, and doesn’t do data work.) (POS-13204)
  • Change ISI download to do Orders before Customers, so we can make sure to include all customers referenced by the downloaded orders. Where practical, also include any customers updated or added since the last run time, but not all providers can do that efficiently (WooCommerce, in particular). Don’t download ALL customers every time (as Magento and Woo were). Switch to v2 of the WooCommerce API. (POS-13198)
  • Remove incorrect assert from POS-13194. (POS-13203)
  • Fix to consistently remove reservations when special orders are voided or delivered (by checking TSTAT whenever a stock unit’s request reason is a reserved type), but keep the linkage to the order for historical purposes. Fix to use the current site from each stock unit rather than the order line’s inventory location when removing reservations (except for the added On-Hand reservation in the IR_ORDER_FORCE case). (POS-13194)
  • Log corrections from repair tool to log.txt like we do for implicit auto-corrects to avoid negatives.
  • Added virtual column VNAME to Item, Purchase Request, Purchase Order, Stock Unit, Vendor Invoice, Vendor Product
  • ISI: Go back to always setting SALE_PRICE since Shopify uses it for the normal Price field; not sure what this will do to Zoey/Magento/Woo.
  • Fix so changing ship-to-site on recalled PO transfers the on-order inventory.



  • Fix for missing slip number from some processed PPLOG entries that actually do have sales slips (including data fix for existing cases). Allow “Add Missing Sale” to work even with no slip number and no sale. Add double-checks to disallow payment processing w/o a slip number. (POS-13161)
  • Fix Open Item A/R Statements to include ALL payment lines for included invoices, even with multiple indirections. (POS-12883)
  • Always use bill-to customer for A/R statements. (POS-13192)
  • Always use bill-to customer for A/R statements. (POS-13192)
  • Increase max width of Reference # columns.
  • Fixes for Configuration Screen Layout to prevent extreme table widths and “jumping”. More fine-tuning of column widths for Payment Types table.
  • Fix so *interactive* order import still processes the orders.



  • Fix for WooCommerce IT_OFF case to set “In Stock”. Placeholders in all engines for setting back-order policy. Fix to not copy Order ID to Customer PO on order download.
  • ISI fixes for product variants uploads with Zoey & Magento. Fix & enable variant limit check for Shopify & Zoey.
  • Add more columns to defaults for Payment Types: “Drawer?” (for “”Open Cash Drawer?”) and “Detail?” (for “Day-End Detail?”).
  • Update installer JREs to 1.8.0_181.
  •  Added the ability to import item price levels for customer types.
  • Added item filter for deleted items but ONLY when there is no sales of that item. A bit tricky.
  • Numerous ISI fixes, mostly for Order Downloads (including printing). Increase length of Payment Type short names from 10 to 16, and prepend new “Payment Type Prefix” when downloading; refine button menu text layout accordingly; rename “Credit” to “Store Credit” and “CC” to “Credit Card”; remove redundant word-based icons from “Store Credit” and “On Account”. Apply text case formatters to ArtisanTasks forms. Change default task frequency from 60 to 15 minutes. Add Zoey use_child attributes, for variants. When creating Deposit transactions (in general), copy Sales Location from main transaction.



  • Added filter for delivered transactions.
  • Fix Loyalty Club backdating to be for date only (with time 00:00).
  • Use Eager loading of Site Records from Stock Units; proxies were causing exceptions in weird places (particularly with POs for multi-store cloud).
  • Ignore all exceptions while saving Column Layout changes; don’t even log them.
  • Fix null pointer (during migration) in PricingScheme.PricingType.getScale() for certain pricing chart types. (POS-13188)



  • Fix hang doing non-interactive import (via ArtisanTasks order download).
  • Fix ServerSetup for AWS RDS to do POS role grant as admin user.



  • Optimization: Avoid database access to get server time, once we have “alive” timestamps to compute it from locally.
  • Misc Java 8 cleanup.
  • Fix null pointer copying a sale with kit lines. Protect against enabling property changes while copy is in progress. Don’t recompute kit line cost during copy.
  • Assert that number assignment must be called from a *writable* data worker.
  • Remove overzealous assert (introduced with Pricing Chart changes) that fired when deleting a record from a record table screen.
  • Fix to not display (zero-priced) kit components or base products on pole display. Show discount on pole display when non-zero and qty is one. (POS-13174)


  • Partial performance improvement for imports.
  • Add new inventory change type, IR_XFER_RESV, to move reservations along with on-hand when transferring reserved inventory.
  • Fix Pricing Chart Line migration to zero out Fixed Price when a Markup Formula is used. (3.X overloaded it to show a sample price.)
  • Add Sales Slip Style payment type match “Any EXCEPT Credit Cards”.
  • Tweak 4.4.19 upgrade step to sort list of unbalanced transactions.
  • Fix to not change site on untracked stock units. (This was causing a constraint violation voiding a GC sale in a multi-store.) (POS-13170)
  • Tweak 4.4.19 upgrade step to copy list of unbalanced transactions to the clipboard.
  • Fix 4.4 upgrade failure in some cases with data started in 3.X, due to numblock references to duplicate datascopes. (POS-13166)
  • Fixes & refinements for kits on POs. (POS-13133)


  • Make D/L scanning more flexible to allow for scanners that send 2nd char as CR instead of LF (e.g. 2016 model DS4800s).
  • ISI: Fix to upload all (visible, online) variants if any of them change, since uploading the base product may reset the variants list. Included deleted or non-online base products if they have any visible online variants.
  • Pricing Chart Migration Fixes



  • Implement Cost-Based Pricing Charts. Add explicit Pricing Model for Sum of Kit Components (instead of basing it on MSRP pricing).
    • Honor Disabled flag in Pricing Schemes (as if no Pricing Scheme selected).
    • Require Pricing Scheme when Pricing Model is Specific Scheme.
  • Fix various table handling problems caused by BOGO changes, including addition of Payment Lines.
  • Update pole display when amount or qty changes.
  • New Label Stocks for the Specialty Tags for specific customers.


  • In migration, clip decimal fields to max value instead of “truncating on the left”.
  • Revert the Progress Monitor changes for all but Imports, since it seems to be causing problems.
  • Fix so label forms that use alternate printer use item label printer 1 if printer 2 is disabled. Protect against null pointers if label printing utilities are still called w/o an enabled printer.
  • Fix null pointer switching to “Use Item Code” Barcode Numbering Scheme.
  • Add missing setting for Next Item Code Number (in Automatic Numbering). Usability enhancements for setting corresponding scheme in Item Numbering Schemes.
  • More ISI fixes, including: protect against some null pointers, don’t generate a tender if d/l order doesn’t have any payments, log when order import starts.
  • ISI: Only download orders in “Processing” state.
  • Various refinements to payment entry in Sale Screen (Ctrl-A and/or Pay button): Fix to disable max enforcement when switching to pay all invoices. Reduce payments by the amount already paid (or credit applied) on the current sale.


  • Fix inadvertent zeroing of cost & list price (and msrp-based retail price) when pricing model changed for non-kit items.
  • Add check for out-of-balance transactions (total vs tenders) to migration.
  • Dynamically change Postal Code format to match Country field (US vs Canada vs free-format).
  • Minor message clarifications for Inventory Tracking options and ISI task logs.
  • Fix so Import File Chooser is dismissed immediately, before import starts.
  • Fix to display Progress Monitor (and handle other GUI events) during Import (and other synchronous Data Workers).
  • Internet Store Interface:
    • Fix to use product names and uniquifiers for image filenames.
    • Don’t assume Base Products are IT_OFF.
    • A number of fixes for WooCommerce:
      • Fix SKU lookup to handle spaces correctly.
      • Remove obfuscation from request fields.
      • Don’t use thumbnail if there’s a full image.
      • Partial fixes for HTTP (vs HTTPS) auth, but still not working.


  • Fix null pointer in Shopify download when there are no new or changed customer records.


  • Fixed problem with A/R Aging report.
  • Added a new database constraint check to ensure that no transactions are ever saved where the money doesn’t match the total when the transaction is not any kind of special order or layaway. This upgrade may cause challenges when upgrading to this version, especially if your data was migrated from older 3.X versions.


  • Improved import of transactions to more accurately set the sale date.
  • Fix to honor the coupon limit of zero, which means no limit. This is in the new advanced coupons feature.


  • Various Internet Store related improvements and fixes.
  • Fixed crash when setting a manual discount when there is a BOGO quantity break scheme.
  • Fix bulk-change Item Availability which was broken recently.
  • Improved Combo Box display on certain screens.

4.4.00 – NEW FEATURES in 4.4

  • Multi-Vendor
    Keep up with different vendor part numbers and cost per vendor for the same item. Specify which vendor is the primary supplier for this item.
  • Drivers License Age Verification
    Confirm that a customer is eligible to purchase a particular product based on age. (Fireworks, Alcohol, Etc.)
  • Surcharge Items
    Automatically add various charges on specific items in either a dollar amount or percentage. Used for associations or township fees, cleaning charges, service fees, or other fees that need to be added to the sale when another item is sold, especially if the fee is based on a percentage of the first item.
  • BOGO (incl. nFers)
    Buy One Get One offers and special discounting. Examples: Buy One get One Half Off, Three for 9.99.
  • Advanced Coupons (new feature)
    Get special offers only when a coupon has been used.
  • Customer Forms (including Designer)
    Great for obtaining signatures for disclaimers and legal requirements. Scan a drivers license to collect data and then print the form for the signature.
  • Reserved Receiving Notes
    Get pop-up notifications when an item is received that was on special order. The note can then be printed on a sheet printer.
  • Random Weight UPC Codes (“Deli Scales”)
    When the weight is measured on a deli scale, the clerk enters the item code and the total and weight are printed on the label. When these labels are scanned into Artisan, it loads the correct SKU and then calculates the quantity sold based on the total price.


Updated on June 27, 2023

Related Articles