What’s New in Artisan POS 4.8

Discover the latest version of Artisan – version 4.8.

Artisan 4.8 introduces many sought-after features, from cash drops, cash discounts and dual pricing, BigCommerce integration, and more.

Contact us at sales@certek.com or (877) 723-7835 to upgrade!

To see a breakdown of all the maintenance updates and fixes, head over to our Change Log. Detailed articles with instructions for each Key Feature are coming soon.

Key Features

Cash Management: Support for Cash Drops and More

Artisan 4.8 introduces Cash Management features, including cash drops. Some businesses transfer money to a secure area, like a safe, at the end of each day. Because of this, they don’t always start the day with the same amount in the cash drawer. This procedure, called a Cash Drop, is supported in version 4.8. In addition to other useful configurations, Artisan can also remind Users to do a Cash Drop once the amount in the drawer reaches the Cash Drawer Limit.

Make Starting Cash Persistent

Artisan can keep track of how much the User is leaving in the drawer at the end of the day and use that amount as the next day’s starting value. Artisan will ask the User to count out the money in the drawer at the start of the next day and enter that amount into the program. It will check against the amount entered the night before, and will use this amount as the starting cash.

Blind Cash Counting

This optional feature is tied to the Cash Counter. With this enabled, the User will not know how much money to expect in the drawer. This is a good security feature, as it does not tell the User how much they’re off by, if anything. You may optionally set a number of attempts until the Cash Counter closes out.

Cash Discounts and Dual Pricing

While Artisan will continue to maintain traditional payment processing models, version 4.8 introduces cash discounts and dual pricing capabilities. This feature helps merchants directly recoup processing fees from customers while adding a layer of transparency for shoppers.

Merchants raise the regular posted price for their items and give customers a discount for using cash (or another payment type, if necessary, like writing a check). With this configured in Artisan, the consumer will receive a certain set discount on the order for choosing this payment type. Dual pricing works by clearly stating to the customer, on signage in the store, on receipts, and customer-facing displays, the price difference between paying in cash versus paying with a different payment type (ex. their credit card).

Support for BigCommerce ISI

Artisan is adding BigCommerce to its list of supported Internet Store Interfaces. BigCommerce is a leading webstore builder and was highly requested due to its ease of use and popularity.

New Payment Processing with TRX Integration

4.8 introduces a new solution for payment processing — TRX Payments, using Verifone Engage PIN Pads. TRX is DCI-PSS compliant. Merchants can also receive in-depth reports, from interchange reports to sales reports in TRX’s convenient online portal.

All card types go through a single generic “Credit Card” payment type button in Artisan, and then Debit and EBT are detected in the PIN Pad.

Non-EMV Payment Processing No Longer Supported

Artisan 4.8 does not support old Magnetic Stripe Readers and instead supports EMV chip processors. BridgePay, T-Gate Gateway, Paygistix Gateway, Innovo Gateway, and other non-EMV payment processing are not supported in 4.8.

Cancel Payment Processing from Artisan

In addition to the Cancel button on the PIN Pad, 4.8 includes a “Cancel” button on the payment processing screen so the cashier can cancel the transaction in Artisan. Note that some, but not all payment processing methods allow a transaction to be canceled.

Improved Handling of Datacap Cancel/Timeout

If a card has not been entered after a certain amount of time, the PIN Pad will time out and Artisan will cancel the transaction.

Delivery Fee Tax

In 4.8, when orders are placed to ship to a certain state that has implemented a delivery fee, that fee is automatically included on the order. The fee is distinguished as a line item on the receipt and listed in Sales Tax reports. For example, Colorado recently implemented a 27-cent delivery tax for orders entering the state, so any orders with the “Ship To” as Colorado will have that fee applied.

Destination-Based Tax

Destination Based Tax now includes per-state settings for Origin-Based vs. Destination Based, Rounding Mode, and Shipping Taxability (Taxable, Non-Taxable, or Non-Sales) settings. Also includes a new Lookup Method, which can be manual, as before, or “Zip Code” to automatically use the Zip/Postal Code from the shipping address as the Tax Location Code.

Mark Up Processing

This is a new choice for Customer Types, and can be used to help offset pricing for service sites like Drizly and Bottlecapps that take a percentage of the sales price.

Add UPC as an Item Code (SKU) Numbering Scheme

With this option enabled, after scanning a UPC into the item search and selecting “Add a New Record,” the record’s Item Code will populate with the UPC code that was just scanned.

Open Specific Quick-Pick Category on the Sales Screen

With this enabled, Artisan will automatically open a specific product category when the Quick-Pick is selected, or even once the Sales Screen is launched (if you have “Automatic Quick-Pick Mode” enabled). Simply choose which category you want to start out with in “Configuration Options.”

Tag Printing By Site QOH

With this option enabled, you can choose to print labels based on the site’s QOH (only done from the current site). For example, if you’re at Site 02 and this location has 5 green t-shirts in stock, you can print those labels based on that site’s QOH.

CC Emails in Artisan

Artisan now lets you CC emails, instead of being limited to just one recipient. This is useful for sending reports, purchase orders, and other documentation from Artisan.

Report Designer Enhancements

4.8 also introduces the following improvements to the Report Designer:

  • Extend translate() to also support name translation of parameter values, by passing in the full class name of the parameter’s type instead of a database table-dot column. Add explode(), to “explode a string” by inserting spaces between each character.
  • “SQL Query Text” always prompts for parameters (but preserves current values as defaults).
  • Only show the “Replace Field Source” help dialog once per Designer session.
  • Change the default data format for Report Date fields to be long+long instead of long+full, because “full” time format in later versions of Java is *too* verbose (w/time zone spelled out).

Improvements to the Best Sellers Report

The Best Sellers Report, SAL-052, now has the Category Rollup feature, Variant Group filter, Group by Vendor P/N, Group Percent, and Total Percent. Several layout and wording improvements are added as well.

Vendor Custom Fields

Vendor records now have Custom Fields 1-9. The labels for these fields are found in “Sales Screen Options,” “Vendor Screen Options” within the “Program Options” screen.

Change Log

Last updated 5/13/24


  • Add Label Printing support for SSL-1X10WB wristbands.
  • POS-14536: Ignore “bad position” error in very rare cases when restoring a text field cursor position after a barcode scan.
  • Fix customer import w/DOB, Phone, *no* Customer ID
  • Fix hang creating new blank label form.


  • POS-14522: Handle a combination of payment-type pricing (cash discounts) with month-based pricing schemes: make sure payment-type pricing is based on the same date as the actual sale.
  • POS-14521: Fix handling of “newRecord” state to correct problems introduced by the stock-split ObjectNotFound fix in 4.8.138. Among other things, that change had caused Sample Data creation to fail with a transact record constraint violation (due to spurious sales tax adjustments).


  • POS-1411: Fix Semantic Exception on “reqsite” running the Item Quantity Repair tool with Full Location-Tracking enabled under some conditions.
  • POS-14515: (Broken in 4.8.94) Fix so barcode scans during dialogs (such as Item pop-up notes in the Sale Screen) close the dialog and process the scan on the active screen, as they used to do.
  • POS-14510: Give a detailed error message when trying to finalize a sale with a Shipping Item that has been deleted or discontinued, rather than just beeping.


  • Fix ObjectNotFound (“No row with the given identifier exists”) after certain inventory changes involving stock unit splitting, such as receiving items with multiple reserved orders.
  • POS-14507: Include items from deleted categories and vendors in INV-123, Inventory Item Listing.
  • Fix silent error changing Loyalty Clubs to be more restrictive in Customer Types or Keywords. In general, speed up the customer membership updates when saving or deleting Loyalty Clubs.


  • POS-14506: Fix a LazyInitiliazationException fatal error creating a new Item from the PO Screen when the Vendor has a default Pricing Scheme set, or has a Main Category that has a default Pricing Scheme set.


  • POS-14502: Smart rounding for variable-measure barcodes & back-computed-quantity items: (1) double-check that the computed quantity multiplies back out to the target price exactly (if at all possible), adjusting as necessary; (2) round the computed quantity using as few decimal places as possible (4 or less) to produce the exact target amount (in cases where a range of quantities could app produce the same extended amount).
  • POS-14505 Shopify: Fix so Artisan Items with identical Product Names aren’t uploaded to the same Shopify product during initial matching. (By doing the same as we’re doing for Woo & BigCommerce: only match on Product Name for website products that don’t yet have SKUs.)
  • Map SecureDeviceIDs from EMV to PDC for Ingenico and PAX.
  • A/R Statements: Make 3rd-party credit redemptions more visible on statements. Fix interaction between credit redemptions (in general) and balance-forward start dates.
  • Reports: Support underlined text in PDF exports.
  • Report Designer: Fix copy/move subreport to new section.


  • Special-case remote merge sale change w/ void (take 2).


  • Fix intermittent zeroing of surcharge amounts.


  • Special-case remote merge of a sale that was changed at one node but voided at another. If the non-voided sale is used, make sure Void Date and Void Clerk remain empty.


  • Fix Processor-Based GC on NETePay to set “AcctNo”


  • Fix stkunit_check on some stock unit splits.


  • Fix crash turning OFF location-tracking in 4.8.
  • POS-14499: Fix inventory discrepancies after transfers (and some other inventory changes) when Stock Units from Purchase Orders are split, resulting in incorrect quantities in Stock Units.
  • POS-14498: Fix to not combine sales lines from variable-measure (a.k.a. random-weight) barcodes with exact integer quantities (weights).


  • Import Internet Store (or other) orders with missing required Tax Location or Rate as Incomplete orders, with a Batch status message of “Tax Location & Rate required.”
  • Shopify Download: Fix Null Pointer Exception with shipping method missing from Shopify order details.


  • For Item Labels printed from sales with pre-configured label forms (set in the Category Record), pass in a “Slip Number” parameter to the form, so it can get information from the sale (such as Customer Name).
  • Fix WEB-171, Internet Store Checklist, to support, and default to, “Retail” as the displayed Customer Type / Price Level. Also, fix some formatting glitches.


  • Fix a Null Pointer Exception on “RowSorter” in some cases, including refresh of a record list after doing an Un-Delete from an individual record screen.
  • Fix fatal error after confirming discarding a new record with the Delete button. (Since 4.8.59).
  • Fix to always give a clean Duplicate Record Error, telling you to pick unique values, when saving a new or changed record with some set of fields conflicting with an existing record, rather than a messy, unrecoverable insert exception. (This was working in general, but was missed in some cases with multiple unique fields.)


  • Fix a “stkunit_check” Constraint Violation in some cases of Inventory Transfer and other non-sales inventory reduction, when an adjusted stock unit has only a non-onhand quantity remaining after the reduction (previously sold).


  • Accept periods (‘.’) in phone numbers during import and copy/paste; covert them to dashes (‘-‘) for North American numbers. Also accept space, slash (‘/’) and underscore (‘_’). On import, accept “Phone” and other variations as column names for phone number fields.


  • POS-14486: Fix Slip Style Condition Keyword not saved.


  • Shopify/Woo/BigCommerce: Optimize initial product upload searches for matching existing online products, by combining  several API calls into one. Also, don’t take over existing online products that have SKUs that conflict with the Artisan SKUs even though they match by Name or UPC; only include those with a SKU matching an Artisan SKU, UPC, or Barcode, or with *no* SKU. (Shopify was already doing this.
  • WooCommerce: Fix exceptions matching by titles > 22 characters long, and when UPC contains ‘>’ characters.
  • BigCommerce: Fix failure to update price, SKU, and some other fields for “simple” products (non-variants), after initial upload.
  • Fix so copying a sale then saving it w/o making any changes doesn’t cause a “transact_check” constraint violation (when there were tenders on the original sale).
  • Fix Null Pointer Exception when importing from a spreadsheet file (XLS/XLSX) that has “undefined” rows. These rows sometimes occur when blank rows that have never been modified precede some modified rows (whether the modified rows are now blank or not). Also fix Divide by Zero when file contains exactly one row. Fail cleanly when NO rows.


  • Prevent ArrayIndexOutOfBounds exporting to QuickBooks with an out-of-balance Vendor Invoice with no line items but an Invoice Amount different from the (total) shipping cost.
  • Fix Stack Overflow when processing a large batch of scans from F8 Scan Mode (usually > 1,000 or so).


  • Fix SAL-121, Daily Sales Summary, to run in Sample Data.
  • Fix searches on record fields like Parent Category in Category Records work again (since 4.8).
  • POS-14475: Fix more subreport page-spanning issues. Also fix cases where Suppress Page Breaks wasn’t honored.
  • Require Surcharge Item when Surcharge amount is set in Payment Processing Profiles.


  • Fix Discount End Dates to use End of Day for Imports and Bulk Changes. (It already uses End of Day when set in Item Record).
  • Fix failure to find named parameter, “discount”, in Bulk Change Retail Discounts when updating Start or End Date, but not Discount amount.
  • POS-14473: Fix printing of Gift Registry forms (from the Gift Registry list or the Gift Registry record screen); it wasn’t reading the Printer Assignments settings, and thus acted as if no form were configured.
  • Honor # of copies set in Printer Assignments for forms printed through the “Print Form(s)” menu entries in Record/Table Printing Options.
  • When emailing Purchase Orders & Vendor Invoices, get the default email address from the Vendor Record. For Gift Registries, use the Customer Record (if any).
  • POS-14474: Fix stkunit_check constraint violation from stock adjustments that remove the last part of a partially-sold stock unit.
  • Show “Internet Price Level” in ISI upload task settings.


  • Make adaptive-percentage fields (such as discounts) switch to decimal mode when the maximum percentage (usually 100%) is exceeded.
  • Inventory Location-Tracking: When “syncing site products”, such as when opening the Locations table in an Item Record Screen, add/subtract any missing/extra inventory quantities to/from the current site (based on comparing the sum of the site quantities with total Item quantities).
  • Fix upgrade step 4.8.03 to handle pre-4.4.272 data. (4.8.04 was failing on missing “IVAR” table added in 4.4.520. Update 4.4.272 post-upgrade step to work with Hibernate 6 in 4.8.)
  • POS-14468: Fix inconsistent stock unit QOH after voiding a sale or sale line with a still-pending stock correction (OOS). This caused report QOH discrepancies in some reports, but could be corrected by the Advanced Maintenance Repair Quantities tool.


  • POS-14461: Fix “livestock” constraint violation error receiving with pending stock corrections (receive after sold) and inconsistent line stock quantities from earlier inventory history.
  • Fix for excessive inventory activity (but that nets out to the correct amount) when modifying recalled delivered sales (unless lines are completely replaced). (Since 4.8.34).
  • Fix so a prompt to change (expired) password on login doesn’t get stuck on Save, waiting for authorization when new screens are locked out (because nobody is logged in). (Since 4.7.99/4.8.79).
  • POS-14464: Fix inventory discrepancies after returns in some cases (usually when none were in stock), as well as other rare cases resulting in incorrect quantities in Stock Units.


  • Fix restore from backups older than 4.4.02.
  • POS-14465: Fix syntax error in MCH-194, Item Trend Report (near “{“). (Since 4.8.49).
  • POS-14460: Fix IllegalStateException (“refreshRecord record must not be dirty when refreshed”) deleting Items, Categories & Vendors with “Use Online” set. (Since 4.8.49).
  • POS-14234: Fix Bulk Delete and Bulk Un-Delete to report the actual count of records changed, rather than zero.
  • Fix silent error creating new data (since 4.8.104).
  • POS-14463: Fix a proxy initialization error (“no session”) putting items on sales when the Default Tax Type is a Composite Tax Type. (Introduced in 4.8).


  • Make additional columns available in Inventory Activity Detail with more details about requests and receiving.
  • POS-14456: Fix so copied sales (from manual copies or from Automatic Billing) with store credit redemptions don’t lose the original credit slip number (and this leave the original credit with a balance). (Since 4.8.79)
  • Fix error exporting to QuickBooks with Checks Paid: “Provided id of the wrong type for class com.certek.artisan.data.CategoryRecord. Expected: class java.util.UUUID, got class java.lang.Integer”


  • Update to Shopify API version 2024-01. Customer PO number, if any, is now included in Order downloads.


  • POS-13641: Display club points rounded to an integer. For the raw points (with 3 decimal places), use the “Raw Points” column instead. (The “Points” column was accidentally showed to show the raw points in 4.4.36.)
  • ISI: Improve Category matching to match by name as well as by slug (for WooCommerce & BigCommerce). In general, replace ‘+’ with ‘-‘ in slugs, since some sites don’t support ‘+’.


  • POS-14450: Fix more page-spanning subreport issues.
  • Fix so new sales see Default Customer Type changes.


  • POS-14450: SAL-051, Sales Summary Report: Only show Sales by Location when showing the Receipts Summary Section.


  • POS-14450: Fix a number of occasional report glitches when subreports span pages. One example: CONS-101, Consignment Statements, which has a subreport for Items Remaining In Stock, which sometimes was hidden if it started very near the bottom of a page. Also fix issues with vertical line continuation after a subreport, especially on CONS-101.


  • Shopify: When uploading new items and looking for existing items in the online store to take over, if we couldn’t find one using any available codes (SKU, UPC, Barcode), try to match one (by title) w/ an empty SKU.
  • WooCommerce: Fix some cases where newly uploaded products match (and replace) the wrong items on the online store.
  • Shopify, WooCommerce: Keep quotes in product and category names as is, instead of replacing them with “"”. (Introduced in 4.8.95 as part of a fix for other special characters.)


  • Fix for occasional cases where the list of records is not displayed when first opening a record table screen, until something is typed or the refresh button is pressed, even though the Search Start Delay setting was not zero (infinite). It was most likely to occur in Sample Data, with a small Search Start Delay (such as the default 0.1), only once during each run of Artisan, but since it was timing dependent, the behavior would differ from machine to machine.
  • POS-14444: Fix an “lcsum_check” constraint violation modifying an old sale in some cases (when RESETDATE < CLUBDATE because the old sale’s date is before the new customer’s membership date in the loyalty club).
  • POS-14445: Fix Null Pointer Exception during a change form a Column Configuration without any Vendor fields to one with Vendor Name or other Vendor-based virtual column, either when adding such a column directly, or when switching Column Configurations or Search Schemes that has the same effect.


  • PPL-401: Payment Processing Batch Detail Report – Improvements when including voided transactions.


  • Rework 4.8.96 fix for deleting Scan Job after processing.


  • Fix error deleting Scan Job after processing.
  • Fix Null Pointer recalling Voids w/missing Off-Site flag.
  • New Label Stock AVS-5302, 2″ x 3.5″ (4) Tent Card, for Avery Form 5302 on Sheet Printers.


  • POS-14399: Fix SLIP-T, SLIP-S, SLIP-5X7 slip forms to show negative cash tenders for refunds, not just cash change. Also fix SLIP-T to show the count of Items Returned as a positive number.
  • Fix excess “additive” percent discount on modified recalled sale that also has a “max” (best-of) percent discount.
  • POS-14440: WooCommerce: Download orders in WooCommerce On-Hold status, along with Processing and Completed. WooCommerce’s On-Hold status is closer to Artisan’s Ready (but not fully paid) than Artisan’s On-Hold status. The “On Hold status applies to orders that are awaiting further confirmation for payment to be received, but the inventory stock has already been reduced on the online store.”
  • When a scanned or typed code in the Sale Screen matches multiple Items, the resulting menu buttons now include the Retail Price (except for fill-in and dynamically-computed prices), to help identify the Items. (As before, the help line shows each item’s Item Code (SKU).
  • ISI: Improve handling of product & category names containing HTML special characters like “&” and “<“, since Shopify & WooCommerce allow these fields to contain HTML.
  • POS-14441: Fix ABT “Month(s) Each” to allow > 1.
  • Drop support for OpenEdge HostPay.
  • POS-14435: Fix error when changing “Disable Automatic Discounts” via Bulk Change Retail Discounts.
  • POS-14411: Handle credit card cancels more robustly.
  • Fix rare Null Pointer in Task Manager (taskRunner).
  • Add new Label Stock AVS-5871, for Avery 5871 2 x 3.5″ cardstock sheets.


  • Improvements for Purchase Order Imports: Skip PO lines with zero qty (but an item code). Get missing PO # on PO Lines from the closest POMAIN line above it in the file (when source s TTX with box POMAIN and POLINE in the same file).


  • POS-14429: Protect against LazyInitializationException loading a PricingScehem from an Item Record, by reloading from the database in getPricingSchemeUsed() when PricingScheme is loaded.
  • Protect against LazyInitializationException in loadMap(), for example, when importing a PO when Full Inventory Location Tracking is enabled.
  • POS-14427: Fix Rcv w/o PO.
  • When showing month-name fields (like Birth Month) in tables, use common 3-4 letter abbreviations rather than full month names. On import, accept either (case-insensitive). As before, month numbers (1-12) are also accepted on import.
  • Credits are being shown as negative numbers. Fix inconsistencies when reporting the totals.
  • POS-14418: External Accounting (QuickBooks: Add option to Itemize Cash & Checks.
  • POS-14425: Fix “Could not interpret path expression ’email'” when a customer or vendor power search email filter option is selected (to limit to records with, or w/o, email addresses).


  • Fix occasional random-seeming inconsistencies in inventory location/site after Receive PO with some request sites different than the received site when immediate transfers are enabled.
  • Fix point-per-sale clubs to include sales of 0.00 (if allowed by the sales amount threshold setting).
  • POS-14423: Report Engine: Enhanced Grouping and Sorting: Groups can specify a Sort Formula to control the sort value instead of using the group value. Sort Direction (Ascending vs Descending), for both Groups and Record Sorts can be specified by a formula (any value starting with “D” or “d” is treated as Descending; anything else is Ascending).
  • If multiple Groups have the same Group Sort Formula value, they will be listed in Ascending order by Group Value.


  • Fix null relation1Type on customer import (4.8.87).


  • POS-14419: Standalone Credit Card Processing: Fix error refunding deposits when voiding a sale, and enhance void & refund choices to be closer to those offered for integrated credit card processing, but disable options for detaching payments, which don’t apply to standalone processing.
  • For both integrated and standalone processing, fix to cancel and resume sale after an attempt to void it when some deposit tenders could not be voided because they were posted or processed, rather than proceeding to void the tenders without actually voiding the payments.
  • POS-14420: Fix so an invalid email in a Customer Record doesn’t cause unrecoverable errors when saving a sale for that customer. In general, rework the handling of email validation, including more consistently moving invalid imported email address into website or memo fields, as appropriate.


  • Use detailed title when printing record lists, such “A/R Account Activity for Sally Smith” rather than just “A/R Account Activity.”
  • Add more details to A/R Account Activity: Distinguish ROA vs Payment, and include new Applied-To Slip # column for Payment & Apply Credit.
  • Fix A/R Statements & Aging Report for ROA & 3rd-party credits in some cases. Fine-tune Aging Report, including adding a Customer ID column.
  • Add Import for Purchase Orders and PO Lines.
  • Fix to update PO Expected Date when Interval changed.
  • Fix so the recipient’s email address is again filled into the “To” field of the mail window when emailing a form that has an associated customer, vendor, etc. This had been working, but was broken by the change to add “Cc” to the mail window.
  • In case of hidden file extensions causing the mail properties file to be named incorrectly, now try “.mail.properties.properties” in addition to “.mail.properties” and “.mail.properties.txt”.


  • POS-14416: Fix a NonUniqueObjectException in assignNumbers occasionally when assigning slip numbers while saving a sale.
  • Fix failure to show all records when changing to a completely empty filter on any record list screen. For example, in View/Edit Purchase Order, when changing the power search PO Status filter to “-ALL-” (when no search string or other restrictions are set).
  • Fix “Keywords in Customer Record must not be null” when saving a new Customer Record if the Default Customer Keyword(s) setting has somehow gotten to be null (instead of blank).
  • Improve Product Variants imports for implicit base products: Clear the barcode in the base product, so it doesn’t duplicate the first variant. Also, when converting single-variant items to flat products: Save input attribute/value names in an Extended Description.
  • Shopify Download: Use the Description from an order line if no SKU is provided. (Probably an order manually entered via the Shopify panel.)
  • ISI Order Download: Skip Empty Orders (no money & no items). In general, show skipped orders as “*SKIPPED**” rather than “*ERROR*”, in ORD-601, Order Processing Batch Report.
  • Sale Screen: Allow F10 w/no sale lines if sale is an unmodified recalled sale.
  • Internet Store Order Downloads: Skip lines with a quantity but no SKU, Description, or Price.
  • Fix sales slip forms to work with *no* line items: SLIP-8X7, SLIP-GIFT-T, SLIP-J, SLIP-RTV-S, SLIP-S, SLIP-T.
  • Remote Operation: Add source node to dependency messages in log output.


  • Fix null pointer getting item.retailPrice at DayEnd (due to change in 4.8.83).
  • Shopify: Fix bogus negative tenders due to voided authorizations when Shopify changes the order total after it has already authorized a credit card. Artisan will now only use the final “capture” amount.


  • Fix missing Retail value on Receiving (and other hidden transactions). Repair existing transaction data for occurrences of this problem since it was introduced in 4.8.68 (using current prices in Item Records).
  • Fix silent NonUniqueObjectException errors in log.txt refreshing DataScope while checking for exclusive database access in some cases, including sometimes during Activity Monitor background checks.
  • Fix null pointer exception on CategoryRecord.getSpecialHandling() in ISI Downloads on orders with instruction note lines.
  • Disable Cancel-by-Clerk w/Datacap until it’s working.


  • TranCloud/ePay: Fix null pointer when List Devices fails.
  • Fix so Advanced Filter searches on date fields default time to End of Day for “Greater Than (>)” (and “At Most (<=)”), and *not* for “Less Than (<)”.
  • Only optimize data after restore not backup.


  • Critical Security Fix
  • POS-14410: Fix failed image imports from website URLs or MAC OS (case sensitive) file names, by preserving the original case of image fields. Also preserve the original case of email and UOM fields (except Unit Name).
  • POS-14407: Fix occasional NonUniqueObjectException on NumberingProfile when opening Configuration Settings.
  • POS-14408: Protect against out-of-range redeemed credit slip numbers, rather than crashing in A/R reports and statements (and the repair tool). Fix to prevent out-of-range numbers in the first place, by forcing a prompt for a new GC or Credit Slip number when switching between GC and Store Credit payment types on an existing tender.
  • POS-14409 Shopify: Upload UPC (as “Barcode”)


  • Fix when exporting accounting transactions (to QuickBooks) with no activity except Due Bills to add a second, zero-dollar line to the “Daily Sales” transaction, because QuickBooks requires at least two lines for every transaction.
  • Some cases of updating totals on the Vendor Invoice screen when line item details are changed were missed, including changes between two non-zero quantities and cost changes.
  • POS-13921: Add support for Credit Card Surcharges, supported for Datacap DC Direct (and other Datacap methods when used with Hosted Bridge) and Transaction Services (TRX) processing methods. New Surcharge Item in Payment Processing Settings lets you configure an Item to record surcharges on the sale. (This should *not* be a non-sales Item. Credit card surcharges are part of the sales amount, and in many places are also taxable. Artisan will back-compute the portion of the surcharge to apply as tax. We recommend the surcharge item’s description include “Tax Included”.) This feature requires an Advanced Payment Processing license.
  • Optimize data (w/ANALYZE) after every restore from backup.
  • Add Restore Configuration Only in Database Maintenance.
  • Fix 3.X migration to handle invalid shipping emails in sales & POs.
  • POS-14403: Add Unit of Measure & Case Size to Bulk Change Weights & Measures.
  • POS-14401: Fix “Illegally Nested DataWorker” in rare cases during Item Import. Specifically, when importing an Item’s Vendor without (or before) a Category and the Vendor has a Main Category (already) set.
  • POS-14402: Include the “FEE” built-in category (new in 4.8) in Non-Sales Income during  External Accounting exports.
  • Day-End Adjustment Screen Enhancements:
    1. Sort Adjustments table by Deposit Group, then Menu Order, then Name.
    2. Keep adjustments in memory until final F10 Process.
    3. Preserve adjustments across the various Day-End screens.
    4. Make the Adjustments column visible on the main Tender Summary.
    5. Preserve edits in progress when Accept button is pressed.
    6. Void newly created Adjustments if canceled after F10 Process.
  • Sale Screen: Don’t prompt to confirm a zero price on a fill-in-price line if there’s a non-zero manual discount on that line.
  • Change minimum PostgreSQL version from 9.6 to 10.
  • Fix missing “maxDate” w/Unpost Most Recent Day-End.
  • POS-14397: Fix so changes to a recalled sale’s Transact Date (for example, via the Sale Screen “Sale Date/Time” field) move the Finished Date and Sale Date accordingly, if those dates were originally on the same *day* as the Transact Date. Previously it was only doing it if they were the exact same instant.


  • POS-14393: External Accounting (QuickBooks): Fix some cases where bank deposit lines in Deposit transactions were lumped into the wrong transactions, leaving both out of balance, when exporting a range of dates.
  • POS-14390: Enhancements to Age Verification: Add a new authorization setting to manually verify age w/o Date of Birth (DOB). (This is in addition to the existing setting to manually set DOB w/o a License/ID scan.)
  • This can be set to Not Allowed (equivalent to current behavior), to Just Ask ( to ask the clerk to confirm that the customer is of age), or to a specific authorization level (which will ask for confirmation if user is already authorized).
  • All related dialogs and authorization menu screens allow a License/ID to be scanned directly, if desired for younger customers, without having to cancel the dialogs/screens first.
  • Preserve DOB (and age verification) on Sale, even if customer selected or changed afterward (unless DOB originally came from an earlier customer selection).
  • Don’t logout on idle if a pop-up dialog is open.
  • Fix “for update” error w/Real Data Repair A/R/Credit.
  • Clarify Merchant ID setting for Datacap DC Direct.
  • POS-14391: Fix potential race conditions on Record Table Screens between repainting table cells and switching to new search schemes or new filters. This should prevent “can’t load record” errors from “getRecordAt” when scanning missing items in an Item Record Screen, and similar cases.
  • SAL-057: New sub-report section for Sales  Tax Breakdown for the Sales Summary Report for Receipt Printer. Also some additional cleanup and updating to match the current changes to the SAL-051 report.


  • Add (optional) Shift Close toolbar button.
  • POS-14388: Fix for LazyInitializationException in some Bulk Change operations, including Bulk Change Category. Fix Bulk Change Pricing Model to not skip Items with no Pricing Scheme (Qty Break Scheme) when applying a Pricing Scheme (Qty Break Scheme), and to only shown quantity-based schemes for the Qty Break Scheme choices.
  • Fix Null Pointer on Day-End w/ no sales.


  • Fix aliasing (“jaggies”) in toolbars and the logo on the Welcome Screen on Windows OS with Display Settings set to scale the display (to other than 100%), and in the Image Viewer Dialog in general. Reduce space between toolbar buttons to make room for more.
  • Remove default Printer Final Strings, since Feed & Cut are now generally done in the printer drivers.
  • After a non-matching or partial code is typed into a lookup field, such as Item Code on Sale Screen, start the search on the Record Table Screen immediately. Previously it was displaying the full list and then waiting one second before starting the filtered search.
  • Make Customer & Item Last Sale/Rcv Dates importable.
  • Add additional import field names for Category Description, in addition to “Description” and “CATDESC”: “Name,” “Category Name”, “Category Description.”
  • POS-14386: Fix to not print empty consignment statements when List Unsold Items is set, Skip Statements with No Transactions is not set, and there is no activity nor any unsold items (as of the statement closing date). The one exception is if run for a single vendor: then ask if they want to print an empty statement.


  • POS-14385: Fix Lazy Initialization error creating a new Item Record from a PO screen when the vendor has a Main Category assigned.
  • Fix failure to mark percentage coupon sales lines (including customer discounts) as non-sales. (Includes data fixup).
  • POS-14384: Split the security setting for “Overriding Discounts in Sales Screen” into two: one for “Items with Automatic Discounts Disabled”, and one for “Other Items”.
  • Show field name, not property, for validation errors.


  • POS-14383: Recover from validation errors (required fields, value constraints, etc) in embedded tables and secondary records, like we do for the main record screen fields. This allows you to correct or back out the changes and then hit Save again, rather than getting errors like “Secondary record for save is not in session”.
  • Sale Screen: Make Quick Discount Buttons fit in a Standard Size window (1024 x 768) when Show Item Picture On Sale Screen is set to No, by removing the space for the item picture and putting the Show Picture button under Edit Item instead. In general, fine-tune the layout of the bottom part of the sale screen.
  • Add SSL-902D label stock and ITEM-SSL-902-D label forms for “Duplicate” hang tags, which repeat the same information on both parts of the 2-across SSL-902 card stock.
  • Make two versions of each SSL-900 and SSL-900R label stocks, along with corresponding item labels: SSL-900 with gap detection (for printers with center gap sensors), and SSL-900BM with black mark sensing.
  • POS-14364: Prevent many cases of StaleObjectException and similar errors that could happen when operations in multiple screens or on multiple stations change the same record(s) “at the same time” (overlapping time between loading the record(s) “at the same time” (overlapping time between loading the record(s) on the screens and saving them), especially when one of them is a Purchase Order (PO) screen.
  • Fix null pointer in endWork() closing login screen early.
  • Fix null pointer closing days w/o visible sales, including when creating sample data.
  • POS-14382: For customer types with percentage markdowns from retail, with “Show as Discount” mode, show discounts that use the default customer type discount as percentages, even for fractional percentages, rather than the usual heuristic of only showing percentages when the price-level price happens to work out to an integer percent discount.


  • Improvements for SSL-902 clothing tags: Fine-tune layout, including making the price much larger. Make two versions: SSL-902 with gap detection (for printers with center gap sensors), and SSL-902BM with black mark sensing (for printers with edge gap sensors, even with no black marks on the actual label stock).
  • Remove “BACKFEED 0” from TSC printer initialization.


  • POS-14377: Make the PO “Smart Start” option easier to use, by putting the “suggested” items (those with non-zero quantities) at the top of the PO screen (after any requested items).
  • POS-14191: Enhance the PO “Smart Start” option to take a date range, rather than just a number of days, to facilitate seasonal purchases. It defaults to immediately past “n” whole days, where “n” is the remembered number of days from the last non-backdated range.
  • Don’t crash if a credit slip number is somehow too big (>9999999), negative, or incorrectly formatted, perhaps from an import.
  • POS-14300: Add a Sales Task authorization setting for “Using Out-Of-Stock Items on Sales (“Sell Anyway” in OOS Menu)”.
  • Fix Payment Processing with Datacap methods to allow debit cards to be used even when Debit is disabled in the Payment Processing settings. Note that this setting disables *prompting* specifically for Debit in the Artisan Payment Type menu; whether the debit card is *processed* as PIN Debit or as Credit, and whether the customer is prompted on the PIN PAD, are controlled by Datacap’s Deployment settings.
  • POS-14376: Fix Cash Activity recorded during a Day-End or Shift Closing: possibly a CASH Count, then a Cash Deposit (Day-End) or a Final Drop (Shift Close), to use timestamps just seconds after the last non-hidden sale in the posting. Discard (delete) any Cash Activity generated while posting, when a Day-End or Shift Close is unposted.
  • Return to Vendor: Hide “Account #” label if none.
  • Fix QB Export error in Sample Data.
  • Fix IllegalStateException starting backup.
  • Report Viewer: Don’t crash if page # out of range.


  • POS-14375: Fix a problem with an interaction between the settings to prompt for a customer at the *beginning* of a sale and to log out after every sale, where the new sale was getting the original Cashier rather than the newly-logged-in user. (It worked w/o the customer prompting.)
  • Fix “Function ‘DMINMAG’ already exists” in Sample Data upgrades from 4.7.79 or later, during the 4.8.04 upgrade step.
  • POS-14369: Fix payment processing after authorization.


  • POS-14364: Fix Copy Purchase Order function.
  • POS-14370: Fix select-all checkbox on list screens.
  • WooCommerce: Ignore products in Trash (create new ones).


  • Add support for DC Direct on PAX terminals.
  • PAX requires port 8080 instead of 80.
  • PAX (and new versions of DC Direct in general) use a real parameter-download “INITIALIZE” instead of a “TEST” button.
  • For payment processing in general, include any non-trivial response messages in SUCCESS response dialogs, not just on error.
  • POS-14365: Fix QuickBooks Export of Bills for Vendor Invoices with non-distributed shipping costs.
  • POS-14366: Fix Internet Store Order Download “surcharge” error.
  • Another Variant Import enhancement: When only variant, and no explicit base product, are provided, and the item is interpreted as a flat product, preserve any attribute values in the Extended Description field. For example: “Color=Maroon, Size=XL”.
  • Fix saving *new* PO after voiding request line.


  • Fix NullPointerException in Payment Processing in some transactions, when no tender data is provided and the payment transaction requires a slip number. (PAX Direct, Paygistix Client, and TRX).
  • Fix StringIndexOutOfBoundsException parsing an empty response from Payment Processing for Datacap, Paygistix Client, and various gateways.


  • Retry refresh after StaleObjectStateException up to 5 times.
  • Work around apparent multi-threading problems with Hibernate 6.1, even with independent Sessions, by single-threading Data Works (running them one at a time). This can be disabled by setting environment variable SINGLE_THREAD_DATA_WORKER=N.
  • Import: Show output values too, on error.
  • Enhance imports to leave non-blank values in existing records unchanged when the input field value is blank (after clean-up), unless a mapping file replacement was applied.


  • Shopify: Fix bogus negative tenders due to voided authorizations when Shopify changes the order total after it has already authorized a credit card. Artisan will now only use the final “capture” amount. Also fixes 4.8.53 bug that caused Day Ends to crash if any sales have description-only lines.
  • Shopify: Support an additional authentication method for Shopify, using the newer API Access Token instead of the older API Key / Secret Key. Artisan will automatically recognize newer access tokens that start with “shpat_” in the Store Password field, or an older Shopify Access Token preceded by “&”. In this case, the Store User ID is unused; you can set it to “-“.
  • POS-14359 (4.8): Fix Woo Download Authentication.
  • Show fill-in-desc items as “– Fill In On Sale –”
  • Fix error upgrading Sample Data past 4.8.36.


  • SSL-902: 2 1/4 x 3 1/4 tag with split perforation for consignment.


  • Fix backup/restore missing pg_dump/pg_restore (4.8.44).
  • Add Customer PO and External Invoice (Web Order #), if present to the full-sheet invoice form, SLIP-S.
  • Fix “null value in column “flags” of relation “tranline”” insert failure in Remote Operation tasks, caused by bit-set field added in 4.8.20.
  • POS-14000 ISI: Sort downloads by order number.
  • Add a built-in Item Record & Category called “FEE”, as a generic miscellaneous fee item with fill-in description and fill-in price. Change to treat the corresponding Inventory Classification, “Fees & Surcharges”, as a special case of “Non-Sales”; it should now only be used for fees that are passed on to third parties (governments, usually) and are not part of the store’s revenue. Fees for services provided by the store should be put into the “Services” class, and may be taxable in some jurisdictions.
  • Add a new Inventory Classification, “Finance Charges & Late Fees”, for the corresponding built-in items & categories used with A/R Statements. These are also considered special cases of Non-Sales.
  • ISI & order imports: Treat lines with a price but no SKU fees, using the new “FEE” item. Import other lines w/o SKUs as description-only note lines.


  • Allow GC to be issued on a donation sale.
  • Allow View/Edit Cash Activity when the Cash Management feature is disabled, so you can see a record of Cash Deposits and Cash Counts.
  • (Continuation of import mapping file enhancements:) Replacements that end with “===” are final even if not matched; if they don’t match, the input will be ignored (treated as blank).
  • POS-14352: Fix an SQL exception with “mixed-mode” location tracking when selling an item that’s out-of-stock at the sale site, but reserved for a pending layaway or order.


  • POS-14350: Add a “Build Kit” option to the Early OOS (Out of Stock) menu in the Sale Screen when the item is an “assembly” (inventory-tracked) kit.
  • Fix a logged but not displayed StringIndexOutOfBoundsException from verifyGS1CheckDigit from an empty SearchInputEvent when using F3 to add a new Item Record.
  • POS-14346: Fix Variant Grid editing to handle adjustments (and reason prompt) for QOH and Reorder Level changes, even when the selected field is changed before saving.
  • POS-14289: Complete Bottlecapps ISI integration.
  • Add new Database Maintenance operation: “Apply Database Privileges”, for cases where database privileges for external apps (like ScannerPal) are missing.
  • Fix for blank output in Remote Operation Status, due to multiple OUTGOING records. (Also fixes existing data and the cause of the extra records.)
  • Fix Qty 2 on fixed-price surcharges.
  • Fix null pointer on F4 from recall sale list.
  • POS-14298: Part 2 of Bottlecapps ISI integration (import order files). Allow tips, line-item surcharges, description overrides, and promise dates to be imported in sales imports. Fix problems importing Customer DOB when some individual Birth Date fields (Month, Day, Year) are present but blank.


  • PaygistiX Client: Now only use HTTPS if port number s 8081. Otherwise, use HTTP, since some PaygistiX Client deployments are not set up with SSL certificates for HTTPs. Default is back to HTTP/8080, like 4.7.
  • POS-13556: Add “Run Once” button to Task Manager.


  • Fix adding Pricing Rule to check new feature settings.
  • POS-14348: Fix login for “Strong” users.
  • Fix import failures during ISI order download.
  • PAX Direct: Hnadle new 000002 response code (Partially Approved).
  • POS-14289: Part 1 of Bottlecapps ISI Integration (export product files).
  • POS-12964: Enhance Task Manager (for ISI & Remote Operation) Task Frequency to allow options for limited operational hours (e.g. “15@9:00-17:00”) and explicit schedules (e.g. “9:00,12:00,4:30”).
  • Fix PGX Client logging glitch


  • POS-14340: Add a new Pricing Model for Item Price Levels: “Use the Retail Pricing Model”. This is particularly useful when the Retail Price can vary on the sale, such as with a Month-Based Price Chart.
  • Fix and simplify station counting.


  • POS-14344: Fix Management One Export.


  • SAL-121: Added the ability to see totals by month or year.
  • POS-14337: Fix deadlock processing Automatic Billing.
  • Fix missing category price levels after import.


  • QB Export/Cash On Hand: Continue the 4.8 Cash Management implementation. Use the Cash Deposit amount entered into the Ending Cash Counter to determine the exported deposit (or Undeposited Funds) amount for Cash. Account for any difference between this and the Cash Receipts using a new Cash On Hand account.  During upgrades (and migrations), create Cash Deposit transactions for all past Day-Ends. Allow negative Cash Deposits.
  • Import Enhancements: Enhance mapping files (.map) to allow an import source field to be mapped to multiple target record fields, and to perform regular-expression replacements on the imported values. Enhance Product Variant Items import to allow suffixes to be imported directly, or mapped from value names using built-in replacements for common colors, sizes, and units. Derive Attribute Names from Value Names if not provided explicitly. Skip over empty attributes (w/o Value Names), to allow for input that has specific attributes in specific fields; for example, Color and Size, where Color is optional.
  • Expand the list of default variant suffixes (used when creating variant templates manually) to match the new list of default replacements for imports.


  • Fix an inventory recording issue with a rare case of replacing one line on a delivered sale with another using the same item.
  • Fix Video Pole Display usability issues: Close window when Pole Display is disabled. After successful test, prompt to enable it. Fix screen layout issues, especially during 1st part of the test (numbered lines).
  • FIN-214: Added an Ending Date to the A/R Aging Report and used the Due Date instead of the Transact Date plus some other general improvements.
  • POS-14328: Implement BigCommerce Rate Limiting.


  • FIX QB export of A/R transactions.
  • POS-14336: Avoid some possible closed-session errors in Sale Screens when returning from other screens, especially when selecting a customer.
  • POS-14333: Let user choose screen for Video Pole Display.
  • Fix CUS-231, Sales Per Zip Code, to not add 1 to threshold.
  • Fix so refresh in report viewer keeps current parameter values in all cases. Some parameters were not being preserved correctly, especially inner “embedded” panels (purchase criteria and dates added) for customer power search filter parameters.


  • Sale Screen: Disable “Delete Tender” button when sale doesn’t use tenders (such as a previously-saved layaway/order).
  • Some progress dialogs wrongly allowed Cancel.
  • Fix 4.8.03 upgrade step.
  • Add missing 4.8.22 upgrade step.


  • Fix SQL errors with date fields in A/R statements and any reports with dates specified in customer power search filter parameters.
  • Fine-tune the layout of report parameter prompting panes so SAL-052, for example, fits in Standard Size w/o a horizontal scrollbar. In general, fit the Item Power Search in better by replacing “Include Out-Of-Stock Inventory” with “Include Out-Of-Stock Items”. Date range parameter prompts are now laid out vertically.


  • Migration fixes and performance improvements.
  • WooCommerce authentication deprecated. Use WordPress user name & “application password”, and put ‘-‘ in Store user & p/w.
  • Fix missing Cash Activity Audit Logs.
  • Fix error doing Cash Drop w/Shifts disabled.
  • Tighten up Starting Cash Counter triggers.
  • POS-14296: Fix various session management problems while syncing changes to category price levels, including “Secondary record for save is not in session: CategoryPriceLevel”.
  • POS-14320: Fix null pointer w/new customer type.


  • Fix migration error changing immutable attribute “baseItem.”
  • Don’t show payment prices on deposits/payments.
  • Fix so deleting tender re-checks price level.
  • POS-14324: Must pay LAY/ORD in full for cash price.
  • Don’t allow a PO to be saved w/vendor NONE.
  • POS-14224: Fix proxy error deleting vendor from PO screen.
  • Fix migration of text fields with >32,600 characters.
  • POS-14297: Change the transaction date (and sale date) for voided ABTs and other future-dated sales to be the void date, not the other way around.


  • POS-14323: Upgrade to AWS SDK 1.12.464 & Jackson 2.15.0.
  • Fix custom field options in task settings.
  • Fix an error opening sale screens when more than one Payment Price Rule has been defined.


  • POS-14321: Fix insert of kits & variants on PO
  • POS-14316: Fix sort by Available Online


  • Fix SAL-075 to exclude scheduled ABTs.
  • Add ITEM-SSL-2X1-DUAL Dual-Price Label.
  • Prevent clipped italic “null choice” strings in combo boxes, caused by a Java bug in width calculation when list values have different fonts.
  • Print receipts in Sample Data w/o confirmation when est to Preview or Print to File, but append “_SAMPLE” to all Print To File filenames in Sample Data. Change default configuration for new Sample Data to preview Sales Slips and Cash Counter forms in Receipt Printer format.
  • (You can still disable the Sample Data receipt confirmation entirely, by setting environment variable “printInSample” to “Y”.)
  • Show Processing Fee Account setting even when disabled.
  • Make Rounding Mode for Payment Type Processing Fees configurable. Add additional rounding modes for Sales Tax rounding. Both of these now support: Up, Down, Half Up, Half Down, Half Even.
  • POS-14240: Purchasing Reports Improvements:
    • Add PUR-201, Vendor Invoice Report.
    • Remove menu entries for unimplemented “Purchase Reorder Report”.
    • Rename SAL-156, Item Reorder Report, to PUR-156, since it’s in the Purchasing report group, and fix it to work in Sample Data.
    • Add Reorder Levels and Request Reason to PUR-005, Purchase Request Report.
    • Other formatting refinements and fixes for these reports.
  • POS-14298: Add a default setting for Kit Component Visibility to the Inventory Defaults configuration settings.
  • When creating new Sample Data, the “Integrated Processing” profile (not initially selected) now defaults to “Fale” processing in automatic approval mode.
  • Display progress after 1 sec even if still at zero.
  • POS-10202: Add a “Mod” flag to the ETC-061, Employee Time Clock Detail, report, to show when a time clock entry has been modified (by a manager).
  • POS-14287: Stay on Sale Screen after void, discard or escape (unless sale is completely blank). “Close Screen”, on the other hand, always closes the screen.
  • Show progress bar when printing large label batch.
  • POS-14201: Do “smart” Item scanning (checking for UPC, Barcode, etc. if not found by Item Code(, like we do on Item Record lists (and the Sale Screen), on these screens: Inventory Counting, Inventory Transfers, Pending Transfers.
  • POS-10193: Add a “Default PO Discount” to the Vendor “Account Number & Terms” tab. Used on PO as default when user chooses the discount operation. If non-zero and PO is finalized w/o any discount, it will ask if you want to apply the default discount.
  • POS-14113: Clear Reorder Levels when an Item’s Availability is changed to Discontinued, Clearance, Closeout, or Non-Stock.
  • POS-14213: When changing Category in a new Item Record, and Vendor is still unset, if the Category is a Service, Fee, Coupon, or Non-Sales class, set Vendor to NONE.
  • POS-14283: Enhance Customer Types (Price Levels) to allow mark *ups* from another Price Level. This extends the existing ability to choose Mark Up or Mark Down at the Category Level.
  • POS-14219: Shopify order downloads: Use the tracking company (e.g. “USPS) as the Shipping Method, if no specific shipping method is specified.
  • WooCommerce: Download line-item discounts.
  • Allow Cash Back, subject to Debit Cash Back Limit, for Credit Card payment types (if Debit is enabled). This is mainly for Debit Cards run as Credit (w/o PIN).
  • POS-14093: Add “Additional Fees & Taxes” in the Sales Tax Settings, to allow fixed-price or percentage fee items to be added to every sale with any sales items that also meets optional specified conditions. Conditions include Taxable Sales Only and matching a particular Tax Scope (for out-of-state shipping).
  • Origin-Based Tax Scopes use the regular Tax Types, rather than being treated as out-of-state exemptions. Shopping Taxability for states w/o Tax Scopes is (as before) determined by the Category Record of the shipping item (typically “SHIP”, which for the new data now defaults to being a taxable service). The “SHIP” item is now configured as the Shipping Item by default, when creating new data.
  • ISI: Preserve (but ignore) In-Store Reserve when Internet Store is disabled. Fix so related fields on the Inventory Details tab, including quantity “Available Online”, are updated whenever relevant changes are made.
  • Show EBT Voucher Number on Payment Log Record Screen, if used.
  • POS-13828, POS-13521: Finish new cancel/Timeout model for Payment Processing.
  • PayProc: Implement new Cancel/Timeout model for Payment Processing. The Timeout setting is now just a Connection Timeout; all data is reset to the new default of 5 seconds. This is how long Artisan waits to connect to the Payment Processing service, application, or PIN Pad. If this timeout is reached, the transaction is canceled before it has been sent. After that, Artisan waits until it receives a successful response or an explicit error, or the new Cancel button on the screen is pressed. If supported by the Processing Method, Cancel will be rejected if the transaction has already been sent for processing; otherwise, Artisan will attempt to determine the state of the transaction, if supported by the Processing Method. If the state of the transaction cannot be determined, Artisan will inform the clerk that it may or may not have been processed.
  • In general, allow the Cancel button on the progress bar for select operations, starting with Backup, to cancel a long operation in process.
  • Datacap: Recognize “AP DUPE” response as Duplicate.
  • General Payment Processing improvements:
    • Fix inconsistencies in timeout and exception handling.
    • Fix inconsistencies in handling some less common AVS Response Codes.
    • Distinguish between actual zero Remaining Balance and unknown (blank).
    • Remove several fields from Payment Log screen when they don’t apply.
  • Allow tips to be put on a *new* credit card when there’s a balance still due on the sale, even if there are already other credit card tenders (which will also be presented as choices).
  • Don’t check for SNAP (or other) merchandise eligibility when putting a sale on hold or voiding it.
  • ISI: Preserve (but ignore) In-Store Reserve when Internet Store is disabled. Fix so related fields on the Inventory Details tab, including quantity “Available Online”, are updated whenever relevant changes are made.
  • POS-14266: Fix “Menu Order … must be less than or equal to 99” after moving rows in an Edit List dialog when there are >= 50 rows.
  • Switch to use secure HTTPS when connecting to Paygistix Client, now on port 8081. Make logging of Raw Request and Response consistent across Payment Processing Providers.
  • ISI task settings: Remove “Disable Upload Chunking?” setting (which was really “Don’t Force Chunking Enable”, effectively); treat as if set. Force “Store URL” to start with “https://”.
  • Protect against possible race conditions simultaneously saving and/or receiving POS for the same items.
  • Fix Constraint Violation in Item Quantity Repair tool with location-tracking in some rare circumstances.
  • POS-10670: During Day-End processing, skip any configured Tender Detail reports for which there are no tenders.
  • SAL-101: Sales by Item: Add Phone & Contact to vendor group header.
  • POS-14209: Increase the robustness and scalability of data loading in Record Tables and other screens that process lists of records. In particular, fix a “Can’t Load Row – 0” error when you change the search parameters on a Record Table screen Power Search with a combo box field whose pop-up overlaps the main record table (because repainting underlying table cells happens while the data is being reloaded by a background task).
  • POS-14221: Allow *all* columns in a record table to be sortable, even virtual columns like Xfer Qty in the Inventory Transfer screen. Dynamically switch between server-side sorting (when all sort columns are real database fields) and (slower) local in-memory sorting.
  • Fix parsing of .mail.properties with “=” in values.
  • POS-14052: Fix Date Picker pop-up on Windows 11.
  • Remove 32-bit Windows install. Make the macOS installer a “universal” binary (includes native executables for both the Intel and M1 chips, so M1 doesn’t need to use the Rosetta emulator). Always show install folder (even if existing installation found).
  • Move forward from Java 8 to Java 17.
Updated on May 13, 2024

Related Articles