What’s New in Artisan POS 4.9

The latest version of Artisan is here–version 4.9. Read on to discover the latest features, from automatic updates to “Buy Again” repeat sales.

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

 


Key Features

Automatic Updates / Check for Updates

Artisan can now automatically check for updates when a User logs in. You may also check for updates by accessing the “Help” tab and selecting that option. 

If a new version is available, Artisan will prompt you to install it. You can also have Artisan automatically check for updates after a set number of days.

You can limit update checking to specific users (or groups of users), with the “Checking for Program Updates” setting in “Security Settings for Other Tasks“.

User-Based Authorization (Fine-Grained Security Settings)

In addition to the level-based authorization settings, you can now enter a list of overrides for specific users. For each task and user, you can set “Allow,” “Deny,” or “Just Ask.” Any task and user combinations not listed will use the regular level-based task settings.

User-Based Authorization requires a “Deluxe” license and must be enabled in “Optional Features“.

New Record Table Buttons

Record table screens now feature several new buttons. The “Home” and “End” buttons take you to the beginning or end of any record list (e.g. “Item Records”).

Where applicable, you may also select the new “Copy” button to copy records (previously available only through Alt-F3). Copy opens a new record screen, like F3, but filled in with values copied from the original record.

A “Delete” button has been added as well (previously available only through the hidden Alt-D key sequence). Other button names have been shortened to make room.

Copy” is also now available on individual record screens, along with a new “Merge” button. Merge lets you pick another record (the “target”) to merge the current record into. This will combine the two records into one, using values from both records where possible; conflicting fields (with values in both records) will keep the value from the target. All references to the records (such as sales history) will be combined as well.

Note: When deleted Item Records are copied, the copy starts with the original Inventory Tracking setting from before the record was deleted.

Bulk Change Pictures & Menus

4.9 introduces two new Bulk Change operations: Bulk Change Vendor Consignment Settings and Bulk Change Pictures and Menus, which lets you change Quick Pick, Menu Order, and other related settings, and delete images in bulk. Bulk Change Pictures and Menus is supported for Item and Category Records. For Customers, it’s called Bulk Change Customer Pictures, since Customer Records don’t have menu settings.

Export Pictures

A new choice in the F9 Export function, “Image Fields“, lets you export images (pictures) from applicable tables (Item, Category, and Customer Records).

Search All Reports

In addition to selecting Standard and Custom reports through the main Reports menu or the Reports pull-down menu, you can now see a searchable list of all reports, including additional built-in reports, with Search All Reports (or a filtered list under each report group). Once you’ve highlighted the report you want, press Enter (or Return, on Mac) to run the report. 

The “Source” column (for Reports, Forms, and Labels) distinguishes between “Standard” built-in, “Extended” built-in, and “Custom” reports/forms. “Standard” reports also appear in the report menus; the remaining built-in reports are listed as “Extended”.

Run Any Report at Day-End

You can now configure additional reports to be run after posting a Day-End or Shift-Closing, along with any (or none) of the standard Day-End reports. Find these new settings in “Day-End and Shift Closing Options.” Fill in the desired Report Names (not the full Report Titles), separated by commas.

Add Pronouns to Customer & Vendor Records

Customer and Vendor records (Vendor Contact) now have an optional Pronouns field. For example, “She/Her/Hers” or “They/Them/Theirs.”

This information is displayed on Sales Screens but not shown on standard receipts and reports. 

Sum-of-Kit Pricing supports Kit Markdown

The Sum-of-Kit pricing model for kit items can now specify a Kit Markdown, to set the price to be calculated below the sum of the individual component prices. Kit Markdown can be either a percentage or a specific amount.

“Fill In Discount” Coupons

Coupon Items can now be set to “Fill In Discount” in the Item Record. When a Fill-In Coupon is put on a sale, the focus will automatically move to the Discount field, to allow the clerk to enter a discount amount.

Tare Weight Calculator

A new Category Special Handling type, “Tare Weight”, prompts for Starting and Ending Weight and sets sale line quantity to the absolute difference between the two weights. Useful for products priced by weight that are weighed inside a vehicle or heavy container.

Check Cashing Fees

A new Category Special Handling type, “Check Cashing Fee”, with a corresponding percentage-based or flat fee in the Item Record. When sold, the cashier is prompted for the Check Amount, and the fee is calculated and placed on the sale, with a note line showing the Check Amount. The check itself must still be entered as a Tender on the Payment Screen, which can be configured to prompt for Check # and other details.

Custom Field Names

Custom fields for Item Records can now be named globally: Custom field name settings in Item Record Screen Options are used when the names in the corresponding Category Records are blank.

In general, for Customers, Items, Sales, and Vendors, display custom field names in table headers, instead of “Custom Field 1”, etc. For Item Records, these will be the new default names from Item Record Screen Options, not the Category-specific names (since a list may include Items from multiple categories).

“Exception Quantity” Column for Inventory Counting

Add the “Exception Quantity” column to your Inventory Counts screen to see the quantity counted minus the expected quantity. For example, Artisan shows 10 QOH and you count 9, so the Exception Quantity is -1.

This can also be displayed on the Item Record list screen.

“Buy Again” in Customer Purchase History

While pressing Shift-F4 to view a customer’s purchase history while on the Sales Screen,  you may select the new button, “Buy Again” (F11), to add a previously purchased item onto the current sale (usually a new sale).

The original quantity purchased is copied to the sale. Also allows a checkmark selection of items to buy, in one step.

PO Smart Start by Item Creation Date

The “Smart Start” option for creating a Purchase Order now allows you to specify a range of Item creation dates, in addition to the last-sale date range. This allows you to, for example, start the PO with only recently-created items (which probably haven’t been ordered yet).

Allow Backorders for Online Store

New “Allow Backorders?” field for Shopify and WooCommerce in the Internet Store Interface which allows the sale of out-of-stock items. WooCommerce explicitly labels these out-of-stock orders as “backorders,” whereas Shopify just allows them to be purchased normally.

BigCommerce does not support the concept of backorders, so “Allow Backorders?” is not supported for BigCommerce. “In-Store Only?” is now implemented for BigCommerce, which is treated the same as Discontinued/Unavailable/Coming-Soon availability. The product is displayed on the site without an “Add to Cart” button. 

You may also control whether “Allow Backorders?” varies individually within Product Variants, in each Variant Template’s settings. 

Label Printing Enhancements

Simplify Item Label Printer selection (in Label Forms and Label Printing Dialogs) to directly select an item label printer number (from Printer Assignments). Allow for 3 label printers per station instead of 2.

Temporary Report/Form Changes

To allow support technicians to deliver temporary “hotfixes” for reports and forms in advance of a program update, any changes made to built-in reports, forms, and labels, are now preserved until the next program version update. Any such changes will be silently and immediately discarded and replaced with the (possibly new) standard versions whenever the program is updated (even if the update does not include new versions of those reports/forms).

Label Stocks can also be overridden, by placing new or updated label stock XML files in the “…/Documents/Artisan/Labels” folder. Note, though, that these will not be automatically removed when the program is updated. They should be manually removed once they are no longer needed, so future changes to the standard stock won’t be ignored.

Multiple Payment Processing Profiles Per Station

As part of the “Advanced Payment Processing Module,” 4.9 lets you choose custom payment types to be linked to Payment Processing Profiles. This can be used for selecting alternate processing methods, providers, or merchant accounts. It can also be used for non-credit-card integrations, using the “Custom” Payment Class.

The previous “Deposit” and “Non-Deposit” Payment Classes have been combined into a single “Custom” Payment Class, which can be used for Deposits, by selecting a non-zero Deposit Group, or for Non-Deposits, by setting Deposit Group to zero.

Custom payment processing methods return an Account Number, which is logged in the CC Log and can be used to select a Customer Record. Unlike a Credit Card Number, the Account Number is not obscured or encrypted, except when used as the Bank Account Number for Checks.

The setting “Select or Create Customer Record (if none selected) from Payment Data” supports selecting a Customer by Customer ID from the Account Number returned by an integrated custom payment type. This setting can also be set in each Payment Type record.

This feature also controls Alternate Payment Processing Profiles for Cards On File. This also allows a clerk to select which processing profile to use when adding a new card on file, automatically selecting the appropriate processing profile for Tips and Smart Refunds (so they’re applied via the same merchant account and processing method as the originals), separating deposits by Token Scope when exporting to QuickBooks, and applying Batch Settlements to all processing profiles.

Offline Payments (Store & Forward)

With supported Payment Processing Methods (see below), you can now enable Offline Payment Processing (in each Payment Processing Profile). This allows you to process credit cards even if your Internet is down. The payment details are stored in the payment processing software or PIN Pad (for DC Direct), not in the Artisan data, and later forwarded to the processor for normal processing once Internet access is available again. (You must invoke the Forward CC operation manually, or as part of a Day-End Closing or Settle CC Batch.)

The following three new operations (along with the related existing “Settle Credit Card Batch”) are now (1) available in the Payment Processing menu under Tools or Accounting, (2) controlled by new security settings under “Financial Tasks”, and (3) available as toolbar buttons (except Offline Summary):

  • Offline Card Processing Mode (Force Offline, Try Online First, or Online Only)
  • Offline Card Summary
  • Forward Offline Credit Cards (to process online)
  • Settle Credit Card Batch

Keep in mind that since offline processing cannot communicate with your payment processor, the payments are not authorized until forwarded. You do risk them being declined at that time, after the customers have already left.

Requires the “Advanced Payment Processing Module.” Supported Processing Methods:

  • DC Direct 1.22 or later on PAX “A” series terminals
  • NETePay
  • TranCloud with Direct Communication (“@” in Device ID setting)

Database Maintenance

Replace the unimplemented Database Maintenance operations: Compact Database, Reindex Database, and Rebuild Database, with a single “Optimize Database & Reindex” button, which lets you choose combinations of Quick Compact, Full Compact, Analyze, and Reindex. Full Compact and Reindex require exclusive access; other stations must exit.

There is also a new “Apply Database Privileges” operation in Database Maintenance, which reapplies the standard privilege settings to the current database, in case some were missed during an upgrade or restore.

Security settings for the new “Optimize Database” and “Apply Database Privileges” operations is controlled by the existing “Other Database Maintenance Tasks” setting, under “Security Settings for Database Maintenance Tasks”. Other, pre-existing Advanced Database Maintenance operations are now controlled by a new “Advanced Database Maintenance Tasks” setting.

Similarly, the Advanced Remote Operations menu now has an “Purge Queue” option, which is useful for resuming after “S3” errors in the “Receiving Changes” portion of the Remote Operation task (in Artisan Task Manager). Purge Queue deletes all messages from a node’s incoming queue; these will eventually be retransmitted from the other nodes. (You can accelerate it by doing a “Force Retransmit” option at all other nodes.)

Cross-Station Configuration Syncing

Configuration changes (Tools -> Options) made on one station now become visible at other stations, within 30 seconds, without having to restart Artisan on those stations. (In the case of remote stations and sites, there will also be the usual remote sync delay).

View Local and Public IP Address

View your device’s local and public IP address by clicking on “Help” and “About.”


Changelogs

Last updated 3/25/25

4.9.156

  • POS-14659 Honor category restrictions for customer-based tax exemption types. Even though the customer’s Tax Type must be set to NT, when the exemption type has categories specified, the NT will only be used for those categories. (Otherwise, the default tax type will be used.)
  • Fix for loyalty clubs that require membership items to join: Since 4.9.144, membership item purchases were not adding customers to the club. To fix those customers, go to the Loyalty Club tab in their Customer Records and click Recalculate Points (or recalculate ALL customer points by disabling the club then re-enabling it, at a time when there won’t be any sales in progress).
  • Add “Exclude from Loyalty Clubs?” to Category Records. This overrides any Category exclusions in the Loyalty Club settings.
  • Fix error when a Last Name Sounds-Like search contains a comma (used to include a match on First Name), by using a Starts-With match for the First Name part and keeping the Last Name part a Sounds-Like match.

4.9.154

  • Fix 4.9.150 upgrade step failure when IVAR table contains nulls.
  • Fix NonUniqueObjectException after using Edit List from the Tare Weight Unit of Measure (UOM) selection (in Category Record Screen), by removing the Edit List option that wasn’t supposed to be there.

4.9.152

  • Fix incorrect recording of Out-Of-Stock (OOS) Corrections as a Correct Reserve and a pair of Auto-Corrects (since 4.9.141). These are repaired by the upgrade, but as Permanent OOS Corrections not Pending Stock Corrections, regardless of the current OOS Correction Type setting.
  • Fix Null Pointer Exception prompting for PO Discount via Numeric Keypad (when Touch Screen Mode is enabled w/o the full On-Screen Keyboard).
  • Fix Retail Price column in Receiving Log; it was always zero.
  • Add UPC (GTIN) to the Common Fields for the Variant Grid screen, for
    convenience. (It was already available through All Fields.)
  • Add Discount to SAL-101, Sales by Item (Detail) Report. Fine-tune
    formatting.
  • Accept “Yes” & “No” as aliases for “On” & “Off” when importing Inventory Tracking Mode in Item Records.
  • Add UPC (GTIN) to the Common Fields for the Variant Grid screen, for convenience. (It was already available through All Fields.)
  • Add ability to automatically convert units when inputting weights from integrated scales or the (category-based) Tare Weight dialog, by extending the Unit of Measure (UOM) table to include “Kind”, Conversion Factor, and Base Unit. “Kind” can be Count, Length, Weight, Time, Area, Volume, or Other. The input UOM is now specified in the Weight Scale Device Settings and Category Record Special Handling (for Tare Weight), and defaults to use UOM from Item (no conversion), as before.

    All Kinds except Count are now considered “Variable-Measure” units and may specify a Conversion Factor (multiplier) and Base Unit. For example, one Pound = 16 Ounces.

    During Receiving, don’t print (or ask to print) labels for items with Variable-Measure units.
    Increase max for Item weights & lengths to 99,999.999.

4.9.149

  • Fix report export to XLS & XLSX of numbers ending in “D” or “F” to be treated as text, so the “D” or “F” is not discarded.
  • Fix a race condition in the Report Viewer that could occasionally cause a fatal Null Pointer Exception.
  • ETC-063, Employee Time Clock Report: Add a new parameter to allow you to only show modified time clock records.
  • INV-053, Inventory Summary Report: Fix numeric overflow with large amounts.
  • INV-123, Inventory Item Listing: Fix cut off group & total counts.
  • Internet Store Interface: When using a non-Retail Internet Price Level, allow all Price-Level Pricing Models, not just Set Price Manually.
  • Enforce punctuation restrictions in Variant Attribute names.
  • Check Variant Template Attribute Name & Punctuation lengths before save, to prevent Constraint Violation Exception and, if in a new record, a subsequent fatal Illegal State Exception trying to delete a transient instance.
  • Increase Variant Preset list length from 200 to 2000 characters.
  • Make Mfr (Manufacturer), Mfr P/N, and Vendor P/N columns available on Sale Lines.
  • POS-14655: Fix so changes made in Edit List Dialogs such as reordering & renaming are correctly saved rather than discarded. Fix incomplete removal when current selection is removed via Edit List.
  • Fix Null Pointer when Site Product load fails.

4.9.145

  • Fix Stack Overflow issuing Loyalty Reward Credits in some cases.
  • Fix IllegalStateException closing Day-End while it’s still preparing data.
  • POS-14654: Fix WooCommerce product uploads to preserve metadata from other plugins besides those we explicitly upload for SEO tags.
  • Update to Shopify API 2025-01 (no changes needed).

4.9.144

  • Add Customer Contact Details to available columns for Store Credit List, including Home/Work/Mobile Phone, Address. Also now available on lists of sales and sales activity. Add a Customer Edit button to the Store Credit F4 detail screen; this and similar buttons on other screens can also now be triggered by a Ctrl-F4 shortcut key sequence.
  • Show customer’s Birth Month (by abbreviated name) on Sale Screen even when no Birth Day is set. (With both month & day, the numeric form is used, like: “2/13”.)
  • Earn Loyalty Points on the same sale a Customer becomes eligible due to purchasing an item that adds a required Customer Keyword or Customer Type (via Category Special Handling).
  • Fix interaction between the new auto-prompt-for-qty feature and the Sticky Quick-Pick category feature, by waiting for the Qty prompt to finish before returning to the Sticky Quick-Pick menu.
  • Fix some cases where Column Configuration changes were not saved, from screens with no previously saved (non-default) Column Configuration. (Since 4.9.142.)

4.9.143

  • Add a touch-screen numeric keypad to numeric pop-up dialog prompts, such as sale line quantity, when in Touch-Screen Mode with On-Screen Keyboard disabled.
  • Fix TransientObjectException while opening newly-migrated data (upgrading from 3.5). (Since 4.9.113; previously fixed in 4.9.132, but broken again by 4.9.136 fix for sample data creation. New fix covers *both* cases.)
  • Fix ConcurrentModificationException while Receiving, in rare cases.
  • Fix a “tranline_check” constraint violation voiding a pre-existing Rental Reservation from 3.5.
  • Recognize some additional “Issuing State” IIN codes for Drivers Licenses from some CA provinces & US territories that were missing.
  • Fix Eltron Label Printer Initialization for Black-Mark Labels.

4.9.142

  • Fix Lazy Initialization Exception on Site Product.
  • Fix null pointer from invalid license keys.
  • Fix unsortable Item Code column in Inventory Transfer screen. (Since 4.9.128.)
  • Make column order changes override width changes when multiple stations are changing the same column layout at (about) the same time.
  • Fix Stack Overflow using a kit item w/a loop in it.
  • Fix “Close session in progress” on error closing Day-End.
  • Fix a “Can’t load Sale Line Item record 1” fatal error in Sale Screen on mouse click when line item table is completely empty (probably from clicking too quickly while starting a new sale).
  • Recognize additional Shopify Access Token prefixes.
  • WooCommerce: Support In-Store Only by blanking Price.
  • Improve error messaging for Paygistix Client.
  • Fix INV-143, Inventory Change Report, to fully hide current inventory numbers when the “Display Current Inventory Columns?” parameter is No, instead of only hiding the column headers and totals.
  • In XLS(X) Report Export, treat long or zero-padded digit strings as text rather than numbers, to preserve them in Excel.

4.9.141

  • Add a Sales Screen Option (under Cashier Prompting Options) to Auto-Prompt for Quantity for Variable-Measure Items (ounces, feet, etc., based on having a Unit Of Measure with Case Size = 1 that’s not Each). When set, manual quantity changes via Ctrl-Q or Keypad-* also present a pop-up dialog for the quantity instead of just moving to the Qty field. Don’t prompt for qty if qty was already entered from a connected scale. In general, move to next line after a connected scale qty is entered. In general, don’t combine lines for variable-measure items.
  • Report Engine: Add XLSX export option (in addition to XLS).
  • Improve ETC-063, Employee Time Clock Report: Sort by Full Name, rather than Short Name; add Total Hours for All Employees.
  • Fix a Lazy Initialization Exception during PO Import w/Full Location Tracking enabled.
  • Fix StringIndexOutOfBoundsException when a power-search pattern field has a pattern with two commas in a row.
  • Fix Data Session Already Closed when resetting search scheme while a record list screen is being closed.
  • Fix Steal Reserve calculation for sales w/multiple stock units for same item. Record any excess Steal Reserve as a new “Correct Reserve” rather than as OOS (Out Of Stock).
  • Fix query exception on “visibility” when importing PO w/non-existent ship-to site with full location-tracking enabled. Instead of a confusing exception, specifically fail (and skip) the offending PO Lines, with a message that the site was not found.
  • Don’t report host lookup errors during non-essential operations like silent auto-update checks & loading the menu of recent files. (This makes operation w/o an Internet connection smoother.)
  • Upgrade to Java 17.0.14.

4.9.139

  • Support for Drivers License/ID scanning on Datalogic scanners.
  • Handle DL/ID scans more reliably on slow/busy computers.

4.9.138

  • Add Item Screen Option, “Confirm Duplicate Codes (UPC, Vendor P/N, Mfr. P/N, Barcode)”, which warns of possible duplicate records when saving an Item Record.
  • FIN-208, Consignment Statement Ledger: Fix so Statement Posting Date is visible.
  • Fix a Null Pointer Exception (during save) when a customer was added to a sale with an outstanding balance (during Sample Data creation, for instance).
  • Fix failure to save report parameter defaults due to a (silent) Hibernate Exception, “illegally attempted to associate proxy… with two open Sessions”.
  • Fix error when changing reorder mode to “Per-Site (Same Levels)” with the choice to average the existing levels. (Since 4.0)

4.9.136

  • Fix a number of Transient Object Exceptions, variously when creating new data, adding or removing a Site Record, and during Bulk Change Preferred Vendor.
  • Serial numbers are not fully implemented in Artisan 4.X, but there could be some serial numbers left over from migrated 3.5 data. Fix some basic errors using (existing) serial numbers:
    1) Error opening Item screen when some serial #s are blank.
    2) Error viewing Inventory Activity from a serial number record.
    3) Disallow adding new serial #s if serial number feature not enabled.
    4) Disallow adding/deleting/changing serial #s on limited edition items.
    5) Disallow changing limited edition size if serial numbers not enabled.
    6) Fix so new serial #s added are marked “Unused”, not “Not Tracked”.
    7) Hide non-serialized stock units from Serial #s list.
    8) Sort numeric serial #s numerically.
  • POS-14645: Multi-Site External Accounting: Add option to export each site’s data separately, or (as currently) all sites together in one export. Either way, cross-site sales or inventory use the accounts & class names from the profile configured for each site, and are included as split lines in exported transactions. The transactions as a whole are based on the sites where they were entered. Add a column to the “Station-less Sites” table in External Accounting Settings to select which main site its exports should be exported with (if not doing All Sites).
  • Clarify Inventory Counting dialogs for Accept Counts & Zero Uncounted. Always ignore the Counts Filter (counted, uncounted, exceptions only) for these actions, even if the user chooses Matching Items Only.

4.9.134

  • Fix Stack Overflow in Bulk Change Internet Fields setting Online to No when multiple other fields were set to be updated.
  • Fix “join fetching” Semantic Exception in Day-End Reprint by Station caused by Lazy Initialization fixes in 4.9.128.

4.9.133

  • Protect against a null pointer exception while appending records in scan mode, in very rare cases.
  • More fixes for null dates in date_between() report formula.
  • Fix TransientObjectException while opening newly-migrated data (upgrading from 3.5). (Since 4.9.113)

4.9.131

  • Fix StaleObjectException processing scans (from F8 Scan Mode) for the same item during Physical Inventory Counting with Scan Mode open at the same time. Add the incremental counts together, instead.
  • Protect against possible IndexOutOfBoundsException during table navigation.

4.9.130

  • Second attempt to fix occasional “Illegally Nested DataWorker” error putting bundle kit items on a sale, to fix an Array Index Out of Bounds caused by the first attempt. (Since 4.9.128)

4.9.129

  • Fix failure to exit after running a new installer during auto-update. (Since 4.9.127)
  • Fix error making same change on 2 stations/screens.
  • Report Engine:
    • Make Report Date work in subreports (like MCH-054, Merchandise Performance Report).
    • Fix so Report Footer that spans the end of a page is moved to the next page instead of being cut off.

4.9.128

  • Fix TransientObjectException saving a copied sale with a changed customer selected. (Since 4.9.91.)
  • Fix occasional “Illegally Nested DataWorker” error putting bundle kit items on a sale.
  • Prevent a ConcurrentModificationException fatal error in Screen Manager while processing deferred results in some unusual cases.
  • Protect against some rare Lazy Initialization Exceptions (proxy errors).
  • Fix problems using the Exception Qty column on an Inventory Counting screen when Tracking Inventory by Location.
  • Add Item Code & Item Shelf Loc to Per-Site Inventory Counting individual Count Screen when Tracking Inventory by Location.

4.9.127

  • Fix an error in the ETC-063 Employee Time Clock Report, when an employee has multiple entries on the same day, with notes, that add up to more than 40 characters (including the commas and space added between the entries). (Single notes were handled correctly, no matter how long.)
  • Add “Run Time Clock Report” button to Time Clock Record screens (In/Out Board and View/Edit Time Clock Records).
  • Fix extra Employee Time Clock In/Out Board entries in rare cases. Specifically, when two employees’ entries have the exact same clock-in time (which generally can only happen if both were manually edited) and one of them is the latest entry for one of the employees (even if that employee is no longer active, and their entry is hidden).
  • POS-14636: Fix Null Pointer exception in Export Detailed Sales Transactions. (Since 4.8.20.)
  • POS-14637: Sale Screen: Keep Customer Type selected by membership items, or others with Category Special Handling that set Customer Type, even when a Customer is selected afterward.
  • Protect against unexpected Null Pointer Exception stopping table cell editing.
  • Fix missing Cash Drop button in sidebar, which is supposed to appear after the last cash drop reminder, when the cash in drawer limit has been exceeded. (Since 4.9.84)
  • Fix anomalies using indirect table columns like Referenced Slip Number (used on a Sale Line for a Deposit or Payment), which were incorrectly being named the same as other similar columns and combined with them. This also fixes a related “Illegal pop()” exception.
  • Fix another (rare) potential “Illegal pop()” putting an item on a sale that has a category-based pricing scheme and no quantity breaks set.

4.9.126

  • Remote Operation:
    • Fix a proxy exception preparing a station remote.
    • Fix “Missing Data Scope” after turning Remote Operation off.
    • Reduce size of prepared remote data files to be about the size of a regular backup.
  • Fix so the Ctrl-Alt-C key sequence works on Mac computers on screens with both “Choose Customer” and “Cancel” buttons.
  • Explicitly resolve proxies for Variant Template & Base Product when opening an Item Record Screen, to fix a fatal error with Variant Items: “Illegal pop() with non-matching JdbcValuesSourceProcessingState” while Hibernate was trying to resolve the proxy for a call to baseProduct.isInternetStoreEnabled() from lockVariantFields().

4.9.125

  • Don’t allow Refund to Credit Card while voiding a sale where any processed credit card tenders are negative, even when there are newly processed tenders. This restriction was previously enforced generally, but was missed in the case where any newly processed tenders were present and thus the Detached New Payments choice was presented.

4.9.124

  • Fix a Constraint Violation from duplicate Vendor Products while saving a Purchase Order with Multi-Vendor support enabled, when a new Vendor Product is added manually for the same Vendor used in a PO after the same item was added to the PO and confirmed to be for a new alternate supplier of that item. The PO Save now reloads the latest Vendor Product records before seeing if it needs to add a new one.
  • Fix some anomalies when making changes to Vendor Products (per-vendor pricing and part numbers in the Other Vendors table in an Item Record), including failure to make another Vendor Product the Preferred one after the current one is deleted. Fix existing records to match the current Preferred Vendor for each Item Record.
  • Fix more Lazy Initialization Exceptions in PO screen.
  • Fix some race conditions between closing screens & table actions, which could result in an Illegal State Exception, “Session/EntityManager is closed”.
  • Report Engine: Treat nulls in date_between() as “no date”, rather than making the whole result null: Nulls in the range parameters indicate an “open-ended” range; returns false if 1st arg is null.

4.9.122

  • POS-14478: Improve SAL-101, Sales by Item (Detail) Report:
    • Exclude Non-Sales transactions, like Return To Vendor & Internal Use.
    • Fix so main group headers & footers are shown w/Show Subtotals Only.
    • Make listing of Product Variants more concise by eliminating redundant header fields for base product group, and by treating single-variant groups as flat products (hiding the base product group header & footer).
    • Add a Parameter Values header to show all the non-default parameters.
    • Fix group by “Vendor + Category”.
  • POS-14634: Inventory Counting: Make “Run Count Report” more obvious, by (a) changing its button color on the Inventory Counting Screen to yellow, and (b) adding it to the Print menu from that screen.
  • Add missing “Print Inventory Tally Sheet” button to Print Menu for Inventory Counting when using Location Tracking.
  • Make progress pop-ups less aggressive. (Wait 1 second instead of 0.5. Don’t show progress for loading column layouts, saving column layout changes, or automatic program update checks.)

4.9.121

  • Fix upgrade step 4.9.117 for Postgres versions < 13.
  • Prevent some Lazy Initialization Exceptions on PO, Vendor Invoice, and Sale Screens.
  • Fix empty Vendor Account Number table (not even column headers) due to a silent Transient Object Exception when opening the Account Numbers tab in a Vendor Record. This was happening when Vendor Account records have not yet been created for some sites, with Full Inventory Location Tracking mode enabled.

4.9.120

  • POS-14614: Fix race condition between closing screens (especially PO & Sales) and data operations using private sessions (such as refreshing item pictures), that would sometimes cause a JDBC Exception, “You can’t operate on a closed Statement”. (Since 4.9.88)
  • Fix race condition between scanning and closing a record list screen that could sometimes cause a fatal error, “Data Session already closed when starting DataWorker for Loading Search Scheme…”
  • Fix an IllegalStateException, Session/EntityManager is closed, after final table actions (like Process or Accept), in some cases, such as Inventory Transfers & Inventory Counts. (Since 4.9.116)
  • Fix an Unsupported Operation Exception from attachStockUnitsToTranLine processing inventory changes for new stock units, in some cases (such as Receive w/o PO). (Since 4.9.110)
  • Protect against various other race conditions when closing screens.

4.9.119

  • POS-14629: Fix a “stuck” Sale Screen (or other editable table screen), where the normal blank line at the bottom of the table (the “scratch record”) is missing after typing a value into the scratch record, then clicking on another table cell w/o pressing Enter (or another navigation key).

4.9.118

  • Further refinements & fixes for ETC-063, Employee Time Clock Report.
  • POS-14542: In general, format the Parameter Values header sections consistently, for those reports that use it (now including the Report Templates), currently: ETC-063, INV-053, MCH-149, PUR-201, TEMPLATE-L & TEMPLATE-P.
  • Report Engine: Add unique_agg() database aggregate: if all non-null values are the same string, returns that string, else blank (or null if no non-null values).
  • Fix the header for the “Note” column in View/Edit Time Clock Records to say “Note” again, rather than “Custom 1” (since 4.9.104).

4.9.116_01

  • POS-14627 Fix for delayed actions in record tables (since 4.9.115). For example, when editing a record (F4), then switching back to the table and trying to do another F4 edit (or any other action), the subsequent action(s) were being deferred until the edit screen was closed.
  • POS-14628 Fix an error running the Repair Quantities tool when a Pending Stock Correction refers to an already-permanent OOS Correction. (Repair these in general, during the 4.9.116 upgrade, and as they are resolved.)
  • Fix another null pointer exception adding customer types (since 4.9.113).
  • Fix a “transact_check” error in some cases when starting a Day-End, when preparing transactions for posting (finalizing costs, etc.), if an item used a quantity-break pricing scheme (or chart) and that scheme changed between saving the sale and running Day-End.
  • Fix interactions between Cash Discounts (Payment-Type Pricing) and Entire-Sale Discounts.
  • Don’t prompt to confirm leaving discount zero when a percentage-based entire-sale discount is put on the sale before any merchandise.
  • Expand A/R Repair to include pending orders/layaways.
  • Include lines with missing Stock Units in Inventory Activity Detail, so the quantities add up correctly.
  • Add indexes to speed up Audit Log searches and Employee Time Clock reports.
  • Replace the ETC-061 & ETC-062 Employee Time Clock Detail & Summary Report with a combined and sped up ETC-063 Employee Time Clock Report, including a new option to show Daily Totals (per employee) only.
  • Report Engine: Support “compound joins”, which are joins to a same target (“to”) table that relate *multiple* fields to each other (currently, only combined by “and”, not “or”). This is indicated in the Join Table by having multiple entries with columns from the same table on the “to” side. Entries with the same “to” table are now combined into single joins with multiple conditions in the “on” clause.
  • Add a new Item Lookup Mode (in Miscellaneous Program Options) for “Repeat Last Choice (when same code scanned/typed)”, which replaces the current Full Lookup mode for existing Options Profiles. The new Full Lookup mode, now the default for new data and new profiles, does not have the Repeat Last Choice behavior; instead, it always prompts when there are multiple matches. Pressing the spacebar now clears the remembered selection for Repeat Last Choice mode.

4.9.115

  • Add a “Recalculate Points” button to the Customer Record Screen “Loyalty Clubs” tab, to backdate membership to a given date, and recompute the total points for each of the customer’s clubs accordingly.
    In general, when backdating or resetting points, default date to the beginning of the year, rather than the current date. Don’t set a customer’s membership date earlier than it’s Customer Since date (or the earliest actual sale date).
  • Fix so other stations exit when one station is waiting for exclusive access in order to perform an upgrade, like they do for other exclusive operations.
  • Fix a “Can’t save record that’s not in session” error with quick, repeated use of the “+”/”-” buttons in Inventory Counting, Transfer, and similar screens.
  • Fix Transient Object Exception in CategoryPriceLevel.baseCategory, when creating new data. (Since 4.9.113)
  • Fix an intermittent hang with a grey screen on macOS when switching to, or starting the program in, full-screen mode.
  • Fix size of full-screen window on macOS to leave room for menu bar.
  • Let the ARTISAN_POS_LOG_LEVEL environment variable override the logging level (default: INFO) set in the log4j2 properties file. Move the GUI init logging to TRACE level so it must be explicitly enabled if needed.

4.9.114

  • Finish fix (from 4.9.110) for a “value too long for type character varying(15)” when settling a credit card batch with Paygistix Client in some cases.
  • Fix to use the Batch ID rather than the Auth Code in the batch summary when settling a credit card batch with Paygistix Client & First Data.
  • Reduce frequency of proxy loads somewhat, to help improve performance in some cases.
  • Include Java Vendor Name in Help => About.

4.9.113

  • Improve recovery from database server communication errors, such as might happen if the server computer goes to sleep (not recommended) or a station loses its network access. In particular, respond to UI events (user interaction) while logging errors.
  • Fix Transient Object Exception adding a new Customer Type.
  • Show More Prices in Category Record Screen for new categories.
  • Fix a “Value Too Long” error in rare cases when a Column Layout Spec exceeds 32,600 characters; remove older column sets to make it fit.

4.9.112

  • Implement basic 3rd-party billing (when licensed and enabled): The customer for a sale must have a Bill-To Customer selected in their own customer record. That customer will then be set as the Bill-To Customer for the sale. Any tender amount put on account will be charged to the Bill-To Customer’s account instead of the sale customer. Full 3rd-party billing (including billing statements) to come in a later release.
  • Add a Sale Screen Option, “Offer to Apply Available Store Credit when Finalizing Sale”, under “Cashier Prompting Options”. This allows that prompt added in 4.9 to be disabled. Default is Yes.
  • Video Pole Display Fixes:
    • Fix so sale quantity changes are reflected in pole display output.
    • Fix overlapped layout when both a logo & banner message are present.
  • Label Designer: Allow new label stocks to be added in the field by adding their file names to an additional “index” file in the “Labels” subfolder of the user’s application-specific Documents folder (“Documents/Artisan/Labels”).
  • Fix a rare null pointer exception when saving column specs when no database is open.
  • Fix Stale Object Exception, “secondary record for save not in session”, and other errors that would in some cases occur after choosing which set of values to keep when saving a record that was modified by another user or screen, most often when choosing “Merged Values”.

4.9.111

  • Fix “refreshRecord cannot be used with new unsaved records” when refreshing a new record after an indirect table edit. (Since 4.9.110.)
  • Fix to validate fields in embedded configuration tables and other secondary records (those not directly attached to screen form fields) before proceeding with Save. (Broken in 4.8.69.)
  • (Additional fix for WooCommerce 502 Bad Gateway in some cases.)

4.9.110

  • External Accounting Export: Fix a problem with unbalanced exports when some transactions initially had credit card processing errors (which result in multiple CC Log entries for a single tender). This was a side effect of the change to group deposits by Card-On-File “token scope”. (Since 4.9.47, with some related cases fixed in 4.9.51.)
  • Fix ConstraintViolation on size of “batchID” in PaymentLog (0 to 15), when settling batches with PaygistiX Client since Sep 1, 2024, by increasing the max size to 36, and, in general, clipping string values from payment results to their max sizes in the Payment Log fields.
  • Fix an “object references an unsaved transient instance” error receiving w/o PO with stock corrections pending for those item(s).
  • Refresh unattached secondary records during save, rather than failing with an exception (“Secondary record for save is not in session”).
  • Lock Item Records when saving Vendor Invoice.
  • Expand bundle kits added to PO from variants.
  • WooCommerce:
    • Fix a WooCommerce 502 Bad Gateway error (from Cloudflare) when downloading orders from more than 300 customers at once. In general, increase # of results per page from default of 10 to the max of 100.
    • Don’t download customer ID 0 (from guest orders).

4.9.109

  • WooCommerce fixes:
    • Fix duplicate product error (“The SKU (xxx) you are trying to insert is already under processing”) uploading an item with the same SKU as a Woo product in the trash, by deleting the trash copy.
    • Delete new images if a category or product upload fails (for any reason), so duplicates don’t build up in the media library.
  • Fix macOS installer to NOT restore all minimized windows.
  • Sort Exclusive Access Waiting List by Station Number.

4.9.108

  • POS-14591: Allow a Standalone (External) Payment Processing Profile to be attached to a Custom Payment Type that can be manually picked as a payment type for a sale instead of the regular configured payment processing method.
  • Make Ctrl-I Tender Info work even for tenders that don’t have any detail info fields to show.
  • Update to Shopify API 2024-10 (no changes needed).
  • Fix to not recompute sale prices when posting consignment statements.
  • Fix inconsistencies in how sales and units are counted for Customer Sales Activity Summaries when using Manage Sales => Reset YTD Sales or Advanced Database Maintenance => Recalculate Activity Summaries. (The incremental calculation from new sales was correct.)
  • Don’t check for Smart Refunds on Voided Sales.
  • When enabling the Internet Store Interface, in addition to offering to create an Internet Sales Site, offer to create an Internet Store Station to use when processing order downloads. This station defaults to its own “Internet Store” profiles, for Device, Options, and Payment Processing Settings.
  • Fix to sync changes in Catalog Order from Base Products to its Variant Items.
  • Fix number format error “Decimal point not allowed” that was incorrectly saying “Minus not allowed”.
  • Fix a Null Pointer Exception apply credits or making payments, in some cases.
  • Fix a rare null pointer exception deleting an Advanced Filter in a Power Search, under some conditions.
  • Fix “Restore Configuration” w/Loyalty Credit Rewards.

4.9.106

  • POS-14611: Add Notification of Loyalty Credit Rewards.

4.9.105

  • POS-14615: Fix the SAL-101, Sales by Item (Detail), report to handle sales of kits and kit components correctly, based on the “Use Kits Instead of Components” parameter.
  • Internet Store Interface: Allow punctuation in web order “numbers”, such as dashes in eBay order numbers. Don’t put the “WEB” prefix on customer IDs or order numbers that include non-digits.
  • Fix an “Unknown wrap conversion requested: java.lang.Integer to java.lang.String” saving a modified recalled sale after changing the customer on the sale. (Since 4.9.91)
  • Fix Avery customer mailing labels (CUST-MAIL-516n) to honor sort order instead of always sorting by Last Name, First Name, Business Name. Fix 2″ X 1″ mailing labels (CUST-MAIL-2X1) to honor sort order instead of being unsorted.

4.9.104

  • Fix a Null Pointer Exception copying a Variant Item (Since 4.8.20).
  • Fix a Null Pointer Exception after selecting an invalid Payment Type in the Sale Screen (such as a Credit Card for more than the total due).
  • Fix a Null Pointer Exception processing a “Smart” Credit Card Refund w/a Payment Processing Method that is *not* configured for Surcharges, when the sale contains at least one “Restricted” line (such as an entire-sale discount or a GC). (Since 4.8.77)
  • Fix a problem where changes to mark Payment Log entries as “Replaced” weren’t being saved.
  • Add a “Retry?” field to Payment Log records, indicating that the user requested a retry of a failed transaction.
  • Log (in CC Log), and report, exceptions during Payment Processing, even if they occur in the very last stages of result processing.
  • Fix to set the Source of a copied report or form to be “Custom”, even if copied from a Standard or Extended one.
  • Allow Variants to be (Bundle or Assembly) Kits.
  • Implement center & right alignment for barcodes on label printers.
  • Implement Line Drawing on Label Printers.
  • Add a Report Formula Function to get the names of Custom Fields:
    custom_field_name(recordTypeName, fieldNumber [, categoryID])
    where recordTypeName is “Item”, “Customer”, “Vendor”, or “Transact”. The optional categoryID (a record ID string from ITEM.CATEGORY) can be used to get a more specific name for an Item custom field, based on its Category.
  • Improvements for ITEM-SSL-900 (and ITEM-SSL-900-BM) clothing tag labels:
    • Show values & actual names for Attributes 1 & 2 (rather than assuming “Size” & “Color”), or custom field names & values for items that don’t use variants.
    • Use a centered barcode, with room for a long alphanumeric code (when using Item Code).
    • Add lines above and below price, and before attributes if there are any.
    • Allow long store names to wrap to a second line.
    • Other formatting refinements.
  • Fix ITEM-SSL-900-BM to use the SSL-900BM stock, not the normal SSL-900.
  • Add SSL-2X0.5 label stock for 2″ X 0.5″ label.

4.9.100

  • Fix a “stkunit_check” constraint violation, with inventory location-tracking enabled, voiding sales that contained Out-Of-Stock items, in some cases. (Since 4.9.95)

4.9.99

  • Don’t allow PO Smart Start range > 365 days. Prevents Constraint Violation.
  • Fix a possible case of “Can’t operate on a closed statement” when closing a Sale Screen, due to a race with the reference table refresh, by deferring the close of the reference session until after the screen is fully closed (using the new finalCallback mechanism).

4.9.98

  • Clear pending exclusive access request if requesting station no longer running.
  • Offer to renumber/rename existing Vendors and/or Categories when changing corresponding Inventory Numbering Scheme details.
  • Fix dashes in Internet order downloads. (Since 4.9.89)
  • Fix Missing “rtr” in A/R Repair Tool when “All Customers” selected. (Since 4.9.92)
  • Add Menu Order & “Active” to the default columns for User Record lists.
  • Report Engine: Always list multiple-choice parameters in the Parameter Values header (if used).

4.9.96

  • Fix a “transact_check” constraint violation during a Day-End or Shift Closing when a Category change from Sales to Non-Sales requires a Sales Tax Adjustment.
  • POS-14607: Also void immediate or permanent Out-of-Stock Corrections when the original Out Of Stock sale or sale line is voided.

4.9.95

  • POS-14606: Fix to once again delete Pending Stock Corrections when the original Out Of Stock sale or sale line is voided. (Since 4.9.31)
  • Accounts Receivable (A/R): Don’t charge “catch-up” finance charges for prior periods, even if no F/C transactions were recorded. Use the previous statement’s closing date (if any) as the starting point for new F/C computations. In general, change the displayed Statement Starting Date to be the day after the last Closing Date, rather than overlapping the Closing. Apply F/C in Sale Date order within the same F/C Due Date.
  • POS-14605: A/R Statement Options: Allow all 3 types of detail itemization to be configured: Charges (already available), Payments, and Finance Charges (F/C).
  • More improvements for AR-101, A/R Statement Form: Show summary amounts as all positive, but marked with plus & minus signs to show how they affect the balance. Various clarifications for Credits Redeemed (formerly, “Credits Used”). Fine-tune fonts and spacing; make sure there’s enough room for long customer names.
  • Fix FIN-215, A/R Statement Ledger, to sort by Closing Date (descending), then Customer Name, rather than by Start Date.
  • POS-14604: Skip deleted records w/Update Mode import; only undelete records in Full Mode imports.

4.9.92

  • Add FIN-215, A/R Statement Ledger. Reorganize A/R & Consignment menus for consistency.
  • Add FIN-321, Customer Purchases & Payments Audit Report. This is an “Extended” report (not on the main menus), which you can find in Search All Reports (or All Accounting Reports).
  • Refine FIN-168, Store Credit History: Group by Customer when no slip # or customer specified. Add help text to parameters. Fix wrapping issue in “Running Balance” label.
  • SAL-074 report: Sort layaway/order history payments by date.
  • Fix AR-101 Statement Form for long customer names in cross-customer transactions. (Other A/R Statement fine-tuning was included in 4.9.88.)
  • Fix excess Finance Charges in some cases. (Other F/C fixes were included in 4.9.88.)
  • POS-14602: Don’t allow saving a sale with payments on a different customer’s sales or orders, or store credit redemptions for multiple customers’ credits, since these cases are not (yet) handled correctly by A/R statements.
  • Add “[SSL]” to the end of the database name in Open Recent items for SSL connections.

4.9.90

  • POS-14600: Fix Stack Overflow changing customer type on a sale in some cases.
  • POS-14598: Fix excess on-order qty transfer w/partial cross-site receiving. (Since 4.9.79.)
  • Fix Sales Summary Reports, SAL-051 & SAL-057, in the Receipts Summary section, to fix missing subtotal amounts, like NET A/R, when a small posting or date range includes sale lines but no tenders, or vice versa.
  • Fix a problem where attaching a Detached Payment from the Payment Log Screen incorrectly attempted to delete (and thus void) the payment after attaching it to a sale. When attaching to an existing sale, open for modification first.
  • POS-14599: Fix a problem where changes to Total QOH from the Item Record Screen were discarded if the Save button was selected w/o moving off the field, with Location-Tracking and the Item Screen Option to Show Per-Site QOH on the Basic Info tab OFF (so that Qty On Hand field was *Total* QOH).
  • Internet Store Interface: Fix order downloads of fee items (price with no SKU) to use “-” for description if one is not provided. The blank description was causing a “tranline_check” constraint violation. Get fee item descriptions from web order for BigCommerce and WooCommerce, like we do for Shopify.
  • Inventory Tracking is not supported for Consignment Fill-In-Price Items. Fix cases where older data could violate that (by turning off tracking).
  • Fix StaleStateException changing Label Properties from PrintLabelsDialog when someone else has changed them as well.
  • Remote Operation: Fix failure to transmit remote SALEQTY updates.
  • Improve performance in a number of areas:
    • Line numbering (for sales lines and other lists).
    • Repair Quantity Tool.
    • 3.5 Data Migration, especially with the Purge option.
    • Speed up loading of the list of posting dates for Reprint/Unpost Day-End or Shift Closing.
  • Update root CA certificate for Cloud 1.0 SSL connections.

4.9.88

  • POS-14575: Fix a hang while a backup is running on another station. This would happen either on exit or after at most 3 minutes (when a certain background task happened to run). Artisan would then lock up until the backup completed, but most people gave up before then. We now skip that task if the lock cannot be obtained immediately (deferring it until the next time it runs and the lock can be obtained). (Since 4.9)
  • POS-14596 Fix a hang when applying a Variant Template to an Item and taking over existing items as Variants (due to a deadlock between the corresponding confirmation dialog and some synchronous Pricing Scheme loading introduced by an earlier attempt to fix Lazy Initialization Exceptions). Back out the earlier changes, now that 4.9.88 has a more general fix for Lazy Initialization Exceptions.
  • POS-14595: Protect against various Lazy Initialization Exceptions, especially when exporting POs and using the Merge button from an Item Record Screen.
  • General fix for Non-Unique Object Exception in refreshRecord.
  • Fix a Class Cast Exception (Timestamp vs ImmutableDate) running A/R statements for a closing date less than or equal to a customer’s last statement date. (Since 4.8.136)
  • POS-14590: Fix to recognize Customer Discount as a special case of Fill-In Discount Coupon, and not prompt for confirmation.
  • Remove an incorrect message that “Integrated Payment Processing is not enabled” during Shift-Close or Day-End when *not* configured to settle credit card batches.
  • When using multiple payment processing profiles on a station, allow Card on File operations if *any* profile supports it.
  • On upgrade (and 3.5 migration), preserve but deselect Payment Processing Profiles for no-longer-support methods (such as non-EMV gateways), switching corresponding stations to a new profile (starting with “X”) with Credit Card Processing disabled. During upgrade, notify user only once for each processing method, even if used on multiple stations.
  • Fix so migration from 3.5 sets a sale’s Base Customer Type equal to its migrated Customer Type, so it doesn’t look like the sale used a Payment-Type Discount (which feature was added in 4.8). Don’t check for new Payment-Type Discounts when recalling a sale; only when the Customer Type or a related field is modified. (Fix sales from earlier migrations.)
  • Fix upgrade from versions older than 4.7.13.

4.9.86

  • Fix hang on Force Deliver (marking an order Delivered when it’s in the Waiting state).

4.9.85

  • POS-13623: Add support for offline credit card processing (“Store & Forward”) on Datacap payment processing solutions that support it: DC Direct 1.22 or later on PAX “A” series terminals, NETePayTranCloud with Direct Communication (“@” in Device ID).

    The following credit card processing operations (three new, plus the existing Settle Credit Card Batch), each with their own new security settings under “Financial Tasks”, have been moved under the Payment Processing menu in Tools or Accounting:

    • Offline Card Processing Mode (Force Offline, Try Online First, or Online Only)
    • Offline Card Summary
    • Forward Offline Credit Cards (to process online)
    • Settle Credit Card Batch
  • Fix so that when prompting for Vendor Invoice during Receiving, the received stock units are correctly associated with the vendor invoice.

4.9.83

  • POS-14560: Fix a loop in Payment Processing when adding a Card On File and the Payment Processing Setting to “Use Zero Dollar Auth” is set to No, which resulted in a return to an empty prompting screen, or returning to the first device prompt, after the Add-Card (Get Token) transaction actually succeeded. (Caused by a change in 4.9.51.) That has now been fixed, but it’s generally recommended to turn on “Use Zero Dollar Auth” anyway, if your processor supports it (as most do these days); it’s less complicated, and doesn’t show as a (temporary) 1.00 hold on your customers’ accounts.
  • Fix a NumberFormatException renumbering barcodes after a change in the Barcode Numbering Format, when an existing barcode is all digits but greater than 2147483647 (after removing leading zeros).
  • Fix a NullPointerException receiving w/o PO when using a Vendor Invoice (when configured to prompt for Vendor Invoice during Receiving).
  • Fix a NullPointerException changing Default Item Custom Field Names when a New Item Record Screen is open with no Category selected. (Since 4.9.51)

4.9.79

  • Add View/Edit PO (Alt-F4) to Inventory Activity Detail.
  • POS-14588: Prevent a possible NonUniqueObjectException on VendorProduct while saving a PO with changed Vendor Product details (in rare cases).
  • Fix a problem with Per-Site Reorder Levels when used with Full Location-Tracking cross-site orders (Request Site != Ship-To Site), by maintaining the on-order quantity at the request site rather than the ship-to site, only transferring it to the ship-to site during Receiving. That way, reorder level availability computations account for the quantity expected to eventually reach the request site. (Since 4.2.02)

4.9.78

  • POS-14586: Add a new Category Special Handling type: “Tare Weight”, to prompt for Starting and Ending Weight and set the sale line quantity to the absolute difference between the two weights. Useful for products priced by weight that are weighed inside a vehicle or other heavy container.
  • POS-14569: Add a Category Special Handling type for Check Cashing Fee, with a corresponding percentage-based or flat fee in the Item Record. When sold, the cashier is prompted for the Check Amount, and the fee is calculated and placed on the sale, with a note line showing the Check Amount. The check itself must still be entered as a Tender on the Payment Screen, which can be configured to prompt for Check Number and other details.
  • POS-14584: Automatically apply an Out-Of-Stock (OOS) Correction before a Force Deliver (marking a sale Delivered when some merchandise has not been ordered and marked as Received) if there is insufficient unreserved on-hand inventory to account for it.
  • Fix some navigation issues using store coupons and some unintended editable fields in the “COUPON” Item Record, caused by the Fill-in Discount changes in 4.9.07.
  • Fix mnemonics & default button focus in input dialogs.
  • Fix quantities on category-based surcharge lines (like bottle deposits) when generated from kit component lines (or quantity variants like 6-packs) or when used with smart returns.
  • Artisan Task Manager:
    • Increase length of Artisan Task Manager task names from 16 to 40.
    • When starting tasks from the command line (shortcut), fail cleanly if required fields are missing, as is done for manually-run tasks.

4.9.74

  • BigCommerce:
    • Detect identical images during upload to reduce duplicates.
    • Fix upload errors with images > 1MB that sometimes resulted in duplicate images. Large images are now skipped w/o affecting the rest of the upload.
    • You must now configure “WebDAV Username” & “WebDAV Password” for BigCommerce Upload tasks, which you can find in the BigCommerce control panel under Settings => Advanced => File access (WebDAV).
  • (4.9) Fix import matching on Vendor P/N when no SKU.
  • Improve handling of Shift Closings when the maximum number of shifts has been reached (at a particular station), including preventing new sales, and increase the maximum to 15. Change the default columns for Shift Closings lists (for reprint and unpost) to use the full Date/Time format for Start & End. (Day-End Closings still default to Date-only.)
  • POS-14571: Add an option for Loyalty Clubs to issue Store Credit as rewards, rather than Coupons. One advantage of Store Credits is that they’re listed at the top of the Sale Screen when a customer is selected, and is automatically prompted to apply when finalized.
  • Fix FIN-168, Store Credit History, to treat “Customer ID” parameter as a Customer ID, not as a Customer *Record* ID.

4.9.71

  • Don’t generate late fees on A/R statements if none are configured.
  • POS-14576: Reject imports of negative numbers into non-negative fields such as QOH and decimal fractions in integer fields.
  • Allow (Menu) Color fields to be imported (by name).
  • SSL-305 Barbell Label Stock: Fix vertical spacing (page height).

4.9.70

  • BigCommerce: Allow Related Product lists w/spaces.
  • You can now use Alt-click on a record table column header to remove that column from the current sort order.
  • Fix so imported references to other records (such as a Vendor Code during an Item import, or a Shipping Method name during an online store order import) are formatted to match punctuation, case, and length restrictions *before* looking for existing records, so subsequent imports match any previously created records rather than attempting to insert a new one with a duplicate name.
  • FIN-214, A/R Aging Report:
    • Add Sort By options including Business Name, Last & First Name, Customer ID, and Balance Due.
    • Fix so balances are listed under appropriate aging buckets instead of all under “Current”. (Since 4.9.42)

4.9.69

  • POS-14566: Fix cases where specific interactions between multiple items in an inventory transfer between sites that include stock units from the same Purchase Order, with specific combinations of whole and partial quantities (resulting in stock unit splitting), could result in some units’ location changes not being saved, requiring an Item QOH Repair. The exact circumstances where this could occur were very hard to predict or describe.
  • Enhance “File -> Open Recent”: Show server name & port if not default;
    increase # of remembered entries to 30; remove (new) duplicates.
  • Fix loading a station remote on a new machine.

4.9.66

  • Fix upgrade step 4.9.64 to work in Sample Data.
  • Speed up 4.9.24 upgrade step w/many A/R statements.
  • Fix Illegally Nested Data Worker in rare cases.

4.9.65

  • Fix silent NonUniqueObjectException after returning from an indirect edit screen, such as Alt-F4 Edit PO from a Receiving screen.
  • Fix upgrades from versions before 4.8.03.
  • POS-14572: Fix so sales of Registry items correctly update the corresponding Qty Received in the Item list for the corresponding Registry.
  • POS-14574: Extend the “Print Labels When Sold” feature, which prints item labels when certain items are sold, to print for not-yet-delivered layaway and orders, not just Normal Sales (but not for voids or holds).

4.9.62

  • POS-14573: Fix the Image 5 import button on the Item Record Screen imports into Image 4 instead. (Export as well.)
  • Fix Inventory Transfer Manifest in Sample Data.
  • POS-14556: Change to preserve the Customer Type (Price Level) for a sale when a customer is selected by Payment Processing, under some conditions:
    • Silently change to the new type if the original Customer Type was the Default Customer Type & the Total Amount wouldn’t change.
    • Silently preserve the original type if the new type is the Default Customer Type.
    • Otherwise, ask the clerk whether to make the change (default = No).
  • POS-14524: INV-053: Fixed the Totals Only option and added parameter values header for the Inventory Summary Report.

4.9.60

  • Fix Closed ResultSet upgrading remotes w/applied changes.
  • Use port 9100 for NETePay EBT & Gift Card.

4.9.59

  • Require Discount Type for percentage coupons.
  • POS-14545: Add a Barcode Settings option to accept any existing Customer ID as a Customer ID scan (as opposed to an Item scan). This can be used in any combination with the other Customer ID scan options.
  • Reduce # of idle database connections kept open.
  • Fix upgrades from versions before 4.9.19.

4.9.57

  • Protect against possible null pointer scanning/swiping during user selection.
  • Protect against a closed database session when looking for detatched payments while starting a Sale Screen. (Might happen if a new Sale Screen is closed very quickly).
  • Support A/R Balance Repair for One Customer
  • Fix so a database password error during a restore from backup automatically runs Server Setup, like it does when creating or connecting to existing data. (Artisan used to do this, before 4.5.21).
  • Allow image import to use “file://” URL.

4.9.55

  • Fix LazyInitializationException loading mapped collections, such as Item Price Levels, in some rare cases, possibly including changing loyalty club points manually.
  • Fix A/R statement printing in Sample Data.
  • Fix a Null Pointer Exception generating an A/R statement for a customer with no previous A/R statements.
  • POS-14561: Fix a ConcurrentModificationException closing (discarding remaining items for) a PO. (Since 4.9.53)

4.9.54

  • PPL-402: Payment Processing Reconciliation:
    • Identify Tender Adjustments as “<ADJUSTMENT>”.
    • Fix to mark matches “OK” even if PPID is null.
  • Paygistix Client: Fix null pointer if Add Card On File returns w/o a token (w/o indicating an error). This was seen to happen when the user did not provide a Zip Code in the Paygistix Client dialog.
  • POS-14558: Fix so a payment applied on a recalled, but not modified, order itself opens a new sale screen to apply the payment (as it used to, before 4.9.35), but still gives an error message if the recalled sale was modified.
  • Fix so Tender Info for a tender previously processed with integrated payment processing is not displayed as “External Credit Card Info” when the *current* processing method is External (Standalone).
  • Fix to exclude voided sales from the Day-End calculation of total cash (when not using the Cash Counter) for the “Cash Deposit” activity entry and the External Accounting export of “Cash On Hand”.
  • POS-14559: Fix excess “Deposits Applied” in the following reports and exports for orders that are overpaid, which resulted in out-of-balance accounting transactions (Total Receipts != Total Tenders):
    • SAL-051 – Sales Summary
    • SAL-057 – Sales Summary for Receipt Printer
    • External Accounting Export
  • Fix SAL-051, Sales Summary Report, to hide the “OWNED SALES” breakdown line unless there are also consignment sales (like SAL-057 already does).
  • Fix 4.4.04, 4.9.21 upgrade steps in Sample Data.

4.9.53

  • Possible fix for a failure to save loyalty club points changed manually in a Customer Record.
  • POS-14553: Fix LazyInitializationException when using Buy Again from the Customer Purchase History (Shift-F4) in Sale Screen, if the item is Out Of Stock and you choose Return from the OOS menu.
  • Don’t show the Auto-Billing Details box on the F4 Detail screen for Purchase Activity by Line Item. For Purchase Activity by Transaction, we already hide it unless the transaction is an Auto-Billing Template. (Since 4.6.13.)
  • POS-14555: Fix “Is One Of” searches on Custom Fields and other long text fields.
  • Fix for Customer Record searches by Last Name “Is One Of” to interpret commas as a list of values rather than Last Name, First Name.
  • POS-14552: Fix STKUNIT_CHECK Constraint Violation from failure to reset SITE to REQSITE when a cross-site PO is closed and the non-received stock units are “discarded” (set to zero), or when inventory tracking is turned off (and location-tracking is enabled).

4.9.52

  • Fix upgrades from versions before 4.8.10.

4.9.51

  • Enhancements to built-in Search Schemes for Reports and Forms: Make Title Contains the default. Remove Title Starts With. Add search by Description Contains.
  • Confirm before settling credit card batch from menu.
  • POS-12936: Fine-tune Smart Returns: when a slip number is entered, use lines from that sale in order by the lowest to highest net amount (unit price after discounts). Fix so multiple returns from the same slip number on the same new sale use different lines from the original sale (or fails if no more are available).
  • POS-14535: Add F7, “Run Count Report”, to the Inventory Count Screen.
  • POS-14546: Fix to update Item Record Screen labels for custom fields when changed in Item Screen Options. (Category-specific names were already updated.)
  • In general, use Custom Field Names (for Customers, Sales, Vendors, and Item field names set in Misc Program Options) instead of just “Custom Field nn” in Search & Filter Field pull-downs. (They were already used in column headers.)
  • POS-14533: Fix so Virtual Columns with no custom queries defined are (again) excluded from Search Field choices. (Since 4.9)
  • POS-14551: Disallow “Other Addresses” from the Customer Record screen for new, unsaved customer records, since it requires a saved customer record.
  • External Accounting Export: Fix a problem with unbalanced exports when some transactions have tips (which resulted in multiple CC Log entries for a single tender) or non-credit-card deposits. This was a side effect of the change to group deposits by Card-On-File “token scope”.
  • POS-14541: When exporting to QuickBooks from a Day-End closing and using the option to include a date in the filename, use the (ending) date of the closing, rather than the current date. (Export by date range, not as part of a Day-End was already using the export end date.)
  • Restrict Balance Check operation in Sale Screen to Processing Methods that support it (TRX, Datacap).
  • Make Station in Payment Processing Profiles editable.
  • Only default to Open Drawer for Cash & Check.
  • POS-14543: Fix some cases of missing Card Source in CC Log (since 4.0), and some cases of incorrect Card Source in Tender Info and CC LOG for follow-on transactions (like Voids).
  • Fix a null pointer exception doing smart returns with Teest and Gateway processing methods.
  • Fix failure to complete an Add Card on File action when not using Zero-Dollar Authorization (after the Void Release following a One-Dollar Auth).
  • SAL-120: Major rework to fit columns for all Deposit Gropus, listing the included Payment Types in each column header, rather than the hard-coded payment type combinations that were there before. Fine-tune formatting and Non-Deposit Tenders section column names.
  • Change default Deposit Groups for built-in payment types to more closely reflect current typical merchant accounts: all credit & debit card types in one deposit group (#2) with the two EBT types in another (#8).
  • Fix null pointer swiping CC info prompt for refund w/ standalone or test processing.
  • Change default for Fake/Test Payment Processing to use Smart Refunds.

4.9.47

  • Don’t use commas in Tender Info subtitle slip #.
  • Sale Screen: Change Tender Info button to Teal.
  • External Accounting Export: Fine-tune an earlier 4.9 change that separated deposits by Card-On-File “token scope” to now deduce the token scope for regular CC tenders (not on file) from their Payment Processing Methods, so regular & on-file credit card payments are combined in the same deposit lines for each processor scope.
  • POS-14526: Fix error exporting to QuickBooks when some tenders have no Card On File “token scope”. 
  • POS-14538: Fix error creating new XAcctConf.
  • POS-14534: Fix failure to start a record screen (Item Record, for example) with F3 Add, when a non-empty search value on an auto-numbered field (Item Code, for example) is used.
  • Fix searches with filter strings when there are indirect references to other tables, such as filtering by Item Code from a Customer Purchase Activity list. (Since 4.9.39).
  • Report Engine: Add date_add and date_diff database functions (for use in User Tables and User Columns) to mimic the corresponding Report Formula functions. Fix a small calculation error in the date_diff formula function. Update FIN-214 & CUS-111 reports to use the new functions instead of the JDBC escape functions timestampadd/timestampdiff.
  • POS-14519: For Purchase Orders when Full Location-Tracking is enabled: Extend Shift-Ctrl-T “Change Target Site for New Lines” operation to also ask if you want to change all current lines. Add Shift-Alt-T to change all current lines and *silently* change the setting for New Lines. Add Ctrl-Alt-T “Change One Site”. Also add all these to the PO Operations Menu.
  • Fix a race condition that leaves Inventory Transfer (and Inventory Count) screen open, with function buttons disabled, after Process (Accept). (Caused by changes for “Buy Again” feature in 4.9.12.)
  • Fix issues with A/R payments & prepayments (due to 4.9 enhancements):
    • 1) Payments & Prepayments weren’t completed when account already open.
    • 2) Clarify wording on account opening dialog to indicate that you can open an account, continue w/o opening it (new in 4.9), or cancel.
    • 3) Always prompt to confirm exceeding credit limit, even when account is or was closed.
    • 4) Add Security Setting for Putting New Charges on Closed A/R Accounts.
  • POS-14517: Fix fatal error in Export PO.
  • Fix SLIP-S, Full-Sheet Invoice, to center logo more precisely, so it lines up with the centered Message 1 text below it.
  • POS-14518: When adjusting column layouts to add/remove feature columns when a feature is enabled/disabled, do it for ALL windows sizes and stations, not just the current station’s current size. This also fixes a Null Pointer Exception running Artisan from a command line, since it was checking for the window size when there was no window.
  • Fix Purchase Order Options Dialog to not change selection to “Smart Start” when the mouse moves over the “Sales” or “Items created” checkboxes. It should only do that if they’re clicked.
  • Add a number of Case-Based versions (divided by case size) of various quantity-based columns on a number of screens and tables, including:
    • Item Records
    • Purchase Order line items
    • Receiving
    • Receiving Log
    • Sales Screen line items
  • Change the default columns for Purchase Order lines to replace the pain Available Qty with Available Qty in Cases, and add Case Size.
  • Allow TRX Pin Pad to be identified by MAC Address.
  • When comparing purchase amounts or quantities for customer power searches using “exactly” or “at most”, round the amount/qty DOWN to a whole number, since the criteria amount can only be a whole number. In other words ignore pennies (and other fractions) in searches like “exactly 10 dollars”.
  • Don’t count coupons in quantities for purchase criteria in Customer Power Searches.
  • SAL-051/057: Fix SAL-051 Sales Summary Report (and SAL-057 for Receipt Printers) to exclude even zero-discount coupons from Avg Units. (Previously they only excluded coupons with discount amounts.)
  • POS-14500: Major speed-up of Customer power searches that specify purchase criteria (both in Customer Record lists and in report parameters).
  • Refinements for Tender Info Screens (in Sale Screen): (1) Add customer name to subtitle box, when there is one. (2) Add Credit Customer when a redeemed Store Credit is from a different customer than the one for this sale.
  • Allow add-on fees in the Additional Fees & Taxes table (under Business & Financial Settings => Sales Tax Settings) to specify a Site, so they can apply only to a specific Sales Location. The default is to apply to all sites
  • Payment Processing with Datacap: Improve PIN Pad and TranCloud IP Address discovery (in cases where Artisan is using a Device Serial Number or MAC Address lookup to find the IP Address) in two ways: (1) Try Serial Number Discovery 30 X 1/2 second instead of 3 X 10 sec. (2) Force a new lookup after a connection error or timeout, if it’s at least 10 minutes since the last lookup attempt, rather than just doing it every 8 hours (with or w/o errors).
  • POS-14494: A/R: Allow prepayments on account to be made with or without opening an account. Saying No to the confirmation dialog now lets the prepayment go through w/o opening the account. Escape or close the dialog to cancel.
  • A/R: Check new charges against the credit limit, even while opening (or reopening) an account, but in that case just get authorization if over the limit; skip the separate confirmation, since the user has already confirmed opening an account for this charge.
  • Offer to automatically apply available credits when finalizing sale.
  • Enhance Payment On Account (Ctrl-A) dialog: Add choices to also apply payments to Orders and Layaways (after Invoices), and to make a Prepayment even if there are invoices due. Refine the algorithm for applying payments to multiple transactions. Fix so default amounts for all choices except Selected Invoice are not negative (clipped to zero).
  • Improve handling of Alt-key sequences on macOS.
  • Fix, when merging records, to merge dependent fields (such as State/Province) based on the merge result of the fields they depend on (such as Country), as originally intended, rather than always leaving the target value as is.
  • POS-13572: “Edit List” Dialog (reached from the bottom of pop-up lists of configuration profiles and record references, such as Categories and Vendors on the Item Record Screen:
    • New “Duplicate” button (Alt-D) lets you copy an existing profile or record directly from the Edit List Dialog.
    • Changes made in Edit List Dialog are now reflected immediately in the original screen’s pop-up lists.
    • Changes made to profile settings *before* Edit List are preserved (and merged with any renaming done in the Edit List dialog).
  • Performance improvement for inventory adjustments (including sales), especially for items with lots of past sales from the same receiving batch.
  • Speed up inventory adjustments, including when saving sales.
  • POS-14477: Improvements for Smart Returns: Fix to split sale lines with returns from multiple original sales. Confirm before leaving a return *without* an original sale selected. Streamline Smart Return dialog so only one Enter key press is needed.
  • Fix WEB-171, Internet Store Checklist, to honor Online Store parameter, which allows you to specify “Online Items Only” (now the default), “Items NOT Online”, or “All Items”.
  • Fix Audit Log to show Record Merges with a “Merge” action (rather than “Change”). 
  • Honor Form Preview settings even if printer and copies are zero.
  • Automatically add (or remove) common feature-specific columns from all Column Layouts (and Default Columns) when the corresponding features are enabled (disabled). Any feature columns missing when upgrading to 4.9 (or migrating from 3.5) are added during the upgrade. This currently applies to the following features:
    • Internet Store Interface
    • Shift Closing
    • Inventory Location Tracking
  • When the Internet Store Interface is enabled, offer to add an Internet sales site (site #999).
  • Remove “Shift” column, by default, from Day-End Reprint lists.
  • Item Import: Fix some cases where items with discounts were occasionally misinterpreted as coupons (depending on field processing order), incorrectly turning off inventory tracking and clearing discount dates.
  • Disallow changing reorder levels to have reorder max (target qty) less than reorder min (threshold qty), since that would be effectively the same as setting them both to the lower value (except for some previous inconsistencies handling this case).
  • Use original CC # in CC Log for Follow-ons (Voids, Refunds) if not provided by processor. 
  • Fix some race conditions and editing glitches when applying a credit card refund to an overpaid sale via the Save button (and related cases). Keep from getting stuck in a negative refund tender or getting an invalid value error trying to move off of that value cell.
  • Disallow Refunds of credits/refunds (from Void All).
  • POS-14262: Purchase Order Screen: Offer choice to update an Item’s Standard Cost when Unit Cost is changed, as is done when Case Cost is changed.
  • POS-14434: Display “(Forced)” for all forced Internet Store uploads (Categories, etc.), not just Items.
  • POS-13122: Internet Store Interface: Display “In-Store Reserve” and “Available Online” as blank in record tables when not applicable. Force “In-Store Reserve” to zero when not applicable.
  • POS-14451: Fix a Stack Overflow using Main Category in the Vendor Power Search. Extend it to “Main Category(ies)”, allowing comma lists and wildcards.
  • SAL-057: “TOTAL TENDER” => “TOTAL TENDERS”
  • Fix a number of problems with the Copy Sale function, especially when no changes are made after the copy. In particular, make sure that the Print function always confirms putting the sale on hold after a copy. Add a status label of “COPY of #nnn” at the top of the Sale Screen.
  • POS-13900: For Loyalty Clubs set to require Customer ID: Add an indicator to the Sale Screen (to the left of the customer address) when customer was selected by Customer ID (w/a negative indicator when a required ID was *not* used). Give a reminder dialog when a required ID was not used, giving the clerk the opportunity to swipe or scan a Customer ID or Loyalty card, when customer selected or sale finalized.
  • POS-14153: Add Redeemed Slip # to Coupons.
Updated on March 25, 2025

Related Articles