What’s New in Artisan POS 4.7

The latest version of Artisan POS is here – 4.7.

Building on fresh features from version 4.6, Artisan 4.7 introduces new improvements and elements to enhance your experience with the program. 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

1. Upload Scans from PDT or File (Enhanced F8 Scan Mode)

Artisan 4.7 supports Portable Data Terminals (PDT) capabilities, such as loading scans for Inventory Counting, Purchase Orders, Label Printing (using new entry in “Labels” menu), Creating Kits, and more (anywhere F8 Scan Mode is available). Use Ctrl-F10 “Load Scans from Device” to upload scans from supported smart handheld devices acting as PDTs, or Shift-F10 to “Import Scans From File”.

Failed scans are now labeled in red, with a Failed Scans count at the top of the screen, rather than interrupting scanning with an error dialog. Any failed scans must be deleted before F10 Process will work. Ambiguous matches are controlled by the Item Lookup setting (now directly under Miscellaneous Program Options); use Quick Lookup to silently take first match.

Scan Mode (including PDT Upload) now handles Auto-Detail Mode in Receiving by presenting a Receiving Detail screen for each item, one by one, rather than a bunch of screens opened at once.

Handheld devices can also be used for wireless Price Checks / Product Info Lookups.

2. Add +/−/✱ Buttons to Label Qty Dialog and Scan Mode Screens

Add visible +/−/✱ buttons, for changing line quantities, to the Label Quantity Dialog, Scan Mode, and most screens where the corresponding keypad keys can be used to add, subtract, and change quantities. This makes these functions more obvious, and easier to use on touch screens.

3. Auto Exemptions

Enhance Tax Exemption Types to support Automatic Exemptions for Customer-Based Exemptions and Tax Holidays, with optional merchandise restrictions (by Category). Automatic Exemptions change the applicable line items to No Tax (NT) automatically, and are automatically selected when they apply. Built-in “Out of State Shipping” and (Customer-Based) “Resale” are now treated as Automatic Exemptions.

If multiple automatic exemptions apply, the priority is: Out Of State Shipping > Customer-Based > Tax Holiday.

Tax Holidays are now scheduled, automatically cutting in and out based on pre-programmed Start and End Dates. A Tax Holiday Limit can be specified in each Category Record; if non-zero, then Tax Holidays will *not* apply to any line items with net unit price above this limit.

Manual Exemption Types are also still supported, including the built-in Generic Tax Holiday (though automatic Tax Holidays are now preferred). As before, Manual Exemption Types can only be triggered by manually changing one or more line items to No Tax (NT). Then, the specific type must be manually selected from the pull-down at the top of the Sale Screen.

4. Support Smart Refunds from Void Sale

New choice to the menu when Void Sale would void already-processed payments, to Refund to Original Card(s), as an alternative to issuing Store Credit. 

5. Add Sticky Quick-Pick Option to Base Product Item Records

Similar to the Sticky Quick-Pick added to Category Records in 4.4, this setting causes the Sale Screen to automatically prompt for another variant of the same Base Product after any variant is added to the sale (whether the base product was entered directly or by using the main Quick-Pick menu). Use Escape or scan a barcode to cancel.

6. Improved Arrow Key Navigation

Allows up/down/left/right arrow keys to move through form fields and buttons quickly. (Note that PgUp/PgDn form field navigation were also added, in late 4.6.)

7. Improved Item Lookup Speed

Item Lookup Speed (in PO & Sale Screens, for example) has been improved, even in “Full Lookup” mode. (Most noticeable in data with > 100,000 SKUs.) The “Quick Lookup” mode added in 4.6 is still potentially slightly faster, but it ignores multiple matches, silently choosing one for you.

The Item Lookup Mode setting has been moved to the top of Miscellaneous Screen Options (instead of being under Sale Screen Options), since it also applies to Scan Mode processing (including PDT Upload).

8. Support Copy/Paste from Table Rows

When a table has focus, the Copy function copies the string value from the current selected cell. On Record Table Screens, when the table does NOT have focus (usually because the search box has focus) and no text is selected elsewhere, then the entire highlighted table row is now copied, with tabs in between the fields.

9. Partially-Started Sales Can Be Silently Discarded

New sales with no line items, no tenders, and no assigned slip number, don’t count as “dirty” (that is, having unsaved changes), and will be discarded without confirmation when the Sale Screen is closed, escaped, or remotely shut down from another station with Alt-F5.

10. Recall Last Sale Enhancement

When using Recall Last Sale (explicitly or implicitly) in the Sale Screen, and no sale has been saved since the program was run, it will now find the most recent non-void, non-deposit, sale/order from this station.

11. Status “Incomplete” for Internet Store Orders

When downloaded orders have missing information, or cannot be processed in some way, now record them as INCOMPLETE transaction status, rather than ON HOLD, so they still reserve inventory and reduce the available counts sent to the online store in the next upload.

12. Items Can Now Have Multiple Shelf Locations

The Shelf Location(s) field in the Item Record (and Gift Registry Item) now accept a comma-separated list of locations. Searches by Shelf Location and Bulk Changes now work on each location in the list individually, like keywords. Item Bulk Changes were reordered to include Bulk Change Shelf Location.

13. Shelf Location Uploaded to Internet Stores

Shelf Location is now uploaded as a custom attribute named “Shelf Location” to Internet Stores with Zoey/Magento (if non-blank) or WooCommerce (if such an attribute is configured in WooCommerce). (This is mainly intended for back-end order processing.)

14. Bulk Change Inventory Class

This new Category Bulk Change operation lets you change the Inventory Class for multiple Categories.

15. New Setting for Excess Credit Prompting

New Sales Screen Options setting, “Offer to Refund Excess Store Credit When Excess Is Below This Amount”, allows you to control when clerks are asked if they want to apply the entire remaining store credit even though it exceeds the amount due. The previous behavior was to always do this, but default for new data is now 100.00. When the amount is above the threshold (which can be zero to never prompt), the credit amount is silently left unchanged, and the excess is left on the original credit slip.

16. Exit When Idle

With this new Miscellaneous Program Options setting, “Exit When Idle,” Artisan will close after a period of inactivity (the default is 60 minutes). If there are unsaved changes on any screens, the user will be asked if they want to discard changes before exiting.

Change Log

Last updated: 1/3/2024


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


  • 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.


  • Critical Security Fix


  • POS-14360: When returning to Inventory Transfer or Inventory Count screens after Process Scans from Scan Mode, leave the row cursor where it was (instead of moving to the last line).
  • POS-14372: Fix a rare case of Loyalty Club Summary constraint violation (LCSUM_CHECK) when the Club Reset Date < the Club Join Date while setting a new Club Join Date, by setting Reset Date to Join Date.
  • Skip processing reorder level in Per-Site mode if the corresponding Site Product Record (per-site Item quantities) is somehow missing, rather than getting a Null Pointer Exception. (Visiting an Item’s site product list in “Locations…” will create any missing site products.)
  • POS-14374: Avoid a Null Pointer Exception when saving a sale with a tender that’s missing its Payment Type. (This does not fix the root cause of the missing payment type. It’s not yet known how that could happen.)


  • Upgrade Shopify integration to version 2023-04. Include cardholder name in order downloads, if available.


  • POS-14341: Fix so vendor invoice lines initially changed to a partial quantity are correctly linked to the vendor invoice.
  • POS-14341: Fix to adjust Average Cost when costs of received units change (such as Shipping Cost distribution, or manual editing in Receiving Log). (The more complicated, but less common, case of cost changes to stock units already sold, or removed from inventory, remains deferred to a later release.)
  • Fix for using Back-Compute-Qty items (gas) on sales.


  • In Shopify Item uploads, make sure there’s a message for items skipped because of too many (>100) variants, even if we can’t find the base product.
  • When importing scans from a file (in Scan Mode), accent “Count” as an alias for “Qty”, and accept any of “Barcode”, “UPC”, “Item Code”, “SKU”, “PLU” for “Code”.
  • Fix null pointer w/indirect month-based price.


  • Fix SAL-051, Consignment Sales Report, to exclude return to vendor and other non-sales activity.


  • POS-14299: Reduce cases of “stuck” sale date/time (previous day’s date) in sale screens left open overnight. In particular, changing cashier or sales reps no longer locks in date/time. Also, distinguish between implicitly and explicitly changed sale data (e.g. for backdating).
  • Fix additional cases where a customer’s list of loyalty club names, as displayed on the Sale Screen, gets out of sync with the actual set of active clubs, for clubs with required membership items.
  • Fix null pointer canceling club backdating prompt
  • Loyalty Clubs: Change so a membership-based club with a Customer Type reward requiring *zero* points grants the Customer Type upon membership.
  • Add Price Chart By Month for prorated memberships or seasonal prices.
  • POS-14322: Fix for newer SC driver’s licenses


  • SAL-051: Fix SAL-051, Sales Summary Report, to exclude hold and void sales from the Orders & Layaways area of the  Receipts Summary section.


  • Fix migration with >32,765 A/R transactions.
  • POS-14275: Moved joins to user table to fix filter.


  • POS-14309: Fix Driver’s License Swiping (broken in 4.7.56).
  • POS-14285: Repair Left Joins to prevent duplicate tranlines from being reported.


  • POS-14305: Fix available quantity computation for assembly kits in the Sale Screen to use the kit item’s QOH, not the components’.
  • POS-14307: Implement Processing Fee Deduction in QuickBooks Export, configured in the Processing Fees tab of Payment Type records.


  • Fix unbalanced sales export to external accounting (QuickBooks) when individual A/R is combined with a Deposit recorded as General Journal entry (perhaps because it was negative). Put the transactions within each export in a more obvious order.


  • Set Balance Due for Incomplete orders


  • Add more help line text
  • POS-14291: Fix “transact_check” constraint violation on a *different* order than is being saved from the Sale Screen, due to an Incomplete order with missing information (from an Internet Store download, usually) being changed to Waiting status incorrectly. Only Custom Orders (with missing inventory) should be changed to Waiting from Incomplete.
  • Fix failure to save Custom Orders as Incomplete initially.
  • ScannerPal: Treat invalid Job Type as “Other”


  • Add more topics (and a few help lines).
  • POS-14280: Fix a subtle PO Discount Rounding issue in some cases, where the subtotal plus the total discount wasn’t matching the un-discounted subtotal.
  • Fix some crashes using Alt-I on Mac.
  • POS-14274: To make sure that sales with a new customer (created in the middle of the sale) are included in loyalty club points, improve the accuracy of the “sale date” for a normal, delivered, sale to reflect the time it was saved, rather than being set to the “transact date” displayed on the Sale Screen, which is set at the *start* of the sale. (This is now more consistent with layaways & orders, which are marked delivered later, where “sale date” is set to the time they are marked delivered.) However, in order to allow sales to be back dated (and future dated), when a sale is saved on a different *day* than the “transact date”, then “transact date” is used as the “sale date”, as before. 
  • This change applies to all sales in general, with or w/o loyalty clubs.
  • For loyalty clubs with reset per coupon or per sale, calculate the number of coupons due based only on the new total points, because any previously accumulated points that should have earned coupons mean that a reset was missed, and probably also means that those prior coupons were not issued.
  • Fix text case overrides in Task Manager & State/Province


  • POS-14263: Fix crash in Bulk Change Consignment.
  • POS-14255: Fix QueryException on “invTrack” when using a power search filter on Out-Of-Stock Inventory on the Inventory Counting screen, with Inventory Location-Tracking enabled.
  • Add additional locking to protect against concurrent modifications to the “savedValueMap”, which tracks changes to a database record’s fields while it is being edited on the screen (including the Sale Screen).
  • POS-14268: Fix for “Syntax error at or near ‘$'” when a new record table sort column is a virtual column whose definition includes a “$”, such as a station number. (Caused by another sorting fix in 4.7.65.)


  • POS-14226: A/R Statement Form 101: Fix additional cases of statement problems when there are no new line items on the report.


  • In migration from 3.X, discard kit components with invalid quantities (kit multipliers) <= 0.


  • Speed up “Sales Summaries” section of 3.X migration.
  • POS-14259: In general, handle huge out of range inventory and sales numbers by clipping to the maximum values for their database fields, rather than getting an out of bounds exception when attempting to save the data. Specifically, this fixes the Stock Unit “lineAmount” out of bounds (8.2) exception during migration from 3.X in such cases.
  • POS-14261: Fix Stack Overflow in migration, recursing through checkIfNonFinal, during A/R statement check, caused by a payment transaction loop.


  • POS-14258: Fix a failure in the 4.7.18 upgrade step, or creation of new data, when *not* using remote operation. Introduced in 4.7.76. Error was: relation “pos.change-log” does not exist.


  • Fix error refreshing dirty record while receiving.
  • Fix secondary-station auto-install on macOS.
  • More fixes for A/R Balance Repair tool, including clarification that it corrects transaction history to match customers’ current balances, not the other way around.
  • Add support for ScannerPal with Remote Operation. Grant additional required permissions in Server Setup.
  • Fix parsing of .mail.properties with “=” in values


  • Add Transfer All button to Transfer to Another Store.
  • POS-14250: Fix F4 Edit from the Inventory Counting Screen.
  • POS-14249: Fix 4.7.35 & 4.7.72 upgrade step transact_check.
  • POS-14248: Fix Scan Mode for Gift Registry items.
  • Fix Receive by PO screen refresh and F10 Process to handle more cases where something has been changed on another station or screen.


  • POS-14242: Disable automatic tax exemptions if all lines on a sale/order are either normally non-taxable or have been manually set to a specific tax type. This includes downloaded Internet Store orders where the taxable lines are set to a tax type deduced from the downloaded tax amount if that tax amount is non-zero.


  • POS-14237 ISI: Allow downloaded orders that use Destination-Based Tax to be saved as Incomplete orders if Tax Location info is missing (rather than receiving a Constraint Violation and failing the whole batch of downloads).
  • POS-14241 ISI: Some online store engines associate a Billing Address (including a name and, for some, an email) with a customer, in addition to a “main” name and email address. Artisan customer records, in addition to one or more *shipping* addresses, have only a “main” name, email, and address, which might be used as a billing address, but are not identified as such. 
  • Shopify does *not* have an explicit billing address in its customer record, only a list of addresses that could be shipping addresses (most likely) or billing addresses, with one marked as the “Default Address”. Artisan was incorrectly interpreting this Default Address as a billing address and using it for the name and email of the Artisan customer. Fix to only use the Shopify Default Address as the Shipping Address. 
  • For WooCommerce, we use the name from the (explicitly identified) Billing Address, if non-blank, else the main name on the account. Fix to do the same for email (rather than always using the billing email even if blank).
  • For Zoey/Magento, we also use a non-blank Billing Address name over the main name. Zoey/Magento only has one email address. However, Artisan was previously using the Billing Address (if any) in place of a missing Shipping Address, and vice versa. Fix to only use the explicitly marked Default Billing and Shipping Addresses (and their names), respectively. (Zoey/Magento has a list of addresses, like Shopify, but separately marks one as Default Billing Address and one as Default Shipping Addr.)
  • Fix the A/R Balance Repair tool (“Repair A/R & Credit Discrepancies” in Advanced Database Maintenance) to cover more cases and report results in more detail. It is recommended that you run this tool after upgrading to (or past) 4.7.72 if you use A/R, or anytime you suspect a problem. A/R balance repairs are no longer done automatically during upgrades.
  • Fix inventory handling when building (or unbuilding) assembly kits. 
  • Add General Contact to the pull-down choice for Vendor Type. This without any restrictions on vendors with this choice.
  • POS-14236: Fix SQL error, “operator does not exist: character varying = bytea”, in Advanced Database Maintenance Operation, Repair A/R & Credit Discrepancies.


  • POS-14225: Most physical Secure Keys have been replaced by soft keys (SAKs), and looking for a physical key across the network (when your database is on another machine) can be slow if there isn’t one. Only check for physical keys on your own machine or if the “networkDongle” environment variable is set to “Y.”
  • POS-14228: Fix sort by per-site columns in Item lists.
  • Blank out Site QOH & Site Reserved fields, too, in Item Record tables for Items with Inventory Tracking turned off, as was done for Total QOH & Total Reserved in 4.7.52.
  • POS-14227: Fix 4.7.44 upgrade step for data created in 4.7.35 – 4.7.42.
  • Fix “missing backup/restore utility” to say Artisan.


  • POS-14226: A/R Form 101: Allow printing of statements when there are no new line items on the report.
  • POS-14223: When using Enter or “*” to set the Xfer Qty in Inventory Transfers, use the Pending Qty, if any, as the default value for the prompt (if Xfer Qty is currently zero).
  • SAL-101: Sales by Item when filtered by site, would include the item total QOH.


  • Fix loading of reports and forms with custom paper sizes doesn’t change Continuous paper orientation to Portrait.


  • POS-14218 ISI: Avoid transact_check constraint violation downloading orders with tax-exempt lines but no shipping method, by setting an Out Of State exemption type anyway (as originally intended). Flag orders with shipping charges but no shipping method and mark them incomplete.
  • POS-14217: Allow Note field to be viewed, edited, and searched in Employee Time Clock record list screens.


  • POS-14215: Fix Lazy Initialization error importing vendors with consignment field changes and associated Items. In general, speed up import and avoid indirect problems like this, by clearing the data session after each record.
  • Fix an additional problem with 3.5 Migration and consignment discounts: Don’t treat a sale line as a consignment discount line if it has no discount (and ignore consignment discounts if the preceding line doesn’t have an Item reference).
  • Fix column sorts for Item Record summary fields, like Last Purchase Date.
  • POS-14214: Fix so Bulk Change Reorder Levels updates current Reorder Requests, if applicable. Also, handle the Reorder Levels Per Site case, by setting the levels for just a specified site. (To fix existing requests after previous Bulk Changes, use “Check Reorder Levels for All Items” in Advanced Database Maintenance.)
  • Add an option to Keep Current Levels for THIS Site & Clear All Others when changing the Reorder Mode from Per Site (Same for All Sites) to Per Site (Individually Set).


  • Rework the 4.7.63 fix for searching & sorting sales by Station, and other sort fields. It was causing some indirect searches to fail.
  • Fix 3.X migrations when one of a set of duplicate sale line numbers happens to be a consignment discount line and another a blank or description-only line.


  • POS-14208: Sale Screen: When editing table cell values, such as Tax Type, stop cell editing when shipping method, or other controls that might initiate an Out of State tax exemption, are activated w/o completing the cell edit, so that automatic changes to Tax Type are not overridden.
  • Fix so External Accounting exports include Day-End postings even when they only include hidden transactions (such as Vendor Invoices).
  • POS-12878: Sale Screen: Fix leftover item picture after voiding the last item, in some cases. (Intermittent, because it was a race condition switching screen from the Void Menu.)
  • POS-14212: Don’t move coupons or merchandise returns to the Deposit transaction when saving a sale as a Layaway or Order. Among other things, this was causing a transact_check when the main sale was tax-exempt (such as for out-of-state shipping).
  • POS-14211: Fix to eliminate a spurious second Out Of Stock warning menu after choosing Take From Another Location that was accidentally introduced in 4.7.52.
  • POS-14197: Fix so tenders that fail credit card processing during Auto Billing are again correctly deleted, leaving a balance due on the Incomplete sales. Accidentally broken by a 4.7.38_01 change.
  • POS-14204: Fix searching & sorting sales by Station.


  • POS-14196: Add a Site Shelf Location column for the Inventory Counting Screen and a Source Site Shelf (in addition to the existing Destination Site Shelf) for the Inventory Transfer Screen.
  • POS-14207: Don’t count non-inventory-tracked components when computing available quantity for a bundle kit in the Sale Screen. If all components are non-tracked, then don’t show any quantity.
  • POS-14206: Add per-site Count & Count Dated to Item Lists.


  • POS-14182: Multi-Vendor: When using an Item on a PO for an alternate supplier (where the PO’s vendor is not the Preferred Vendor for the item), make sure that returning from an F4 Edit of the Item doesn’t replace the Vendor’s P/N and Cost with those for the Preferred Vendor.
  • POS-14186: Delete Scan Job after printing labels.
  • POS-14194: Handle round-off discrepancies in PO discount distribution to line items, even when the total discount is specified as a percentage discount, by applying a specific dollar amount to one of the lines to make it add up to the exact total amount (as was already being done when the total discount was entered as a dollar amount). 
  • POS-14193: Fix navigation issues on the PO Screen, including: Keep cursor on first line of kit or variant expansion after adding one. Fix loss of cursor entirely after adding variants. In general, on all tables, make sure that keypad arrow keys work the same as regular arrow keys.
  • Fix to move to the (empty) last line of a PO when adding an item via an F2 search or F11, as is done for bar code scans, so the selected item doesn’t overwrite the existing item code on the current line (if any).
  • POS-14181: Fix so merging Item Records with different Preferred Vendors doesn’t result in both vendors marked as Preferred (when the Multi-Vendor feature is turned on). Also fix various problems that occur in Items where this has already happened. The upgrade repairs existing cases.
  • SAL-410 & 412: Standard Tender/Transaction Detail so time is formatted in standard AM/PM time, not military time.
  • Allow a recalled sale with newly-processed payments to have changes discarded, leaving the new payments detached, even if the Sale Screen has an unrecoverable error, so there’s at least *some* way out of that sale.
  • Fix Index Out of Bounds uploading a Scan Job to a Sale Screen. Fix so the cursor ends up at the last line, following the appended scans.
  • Fix Escape from Tenders when Save & Hold disabled.
  • POS-14180: Add Context to Audit Log default columns.


  • POS-14176: Fix to move to the (empty) last line of a sale on F2 search or F11 quick-pick, as is done for bar code scans, so the selected item doesn’t overwrite the existing item code on the current line, if any.
  • PPL-402: Fix missing refunds and issues with detached payments.
  • Change full name of “Vendor’s P/N/” field in Item Records and Item searches to “Vendor’s P/N (Preferred)”, to clarify that it’s the P/N for the *Preferred* Vendor.
  • POS-14178: Fix “Database function called without an active DataWorker” when getting row counts for exports and tally sheets, in some cases.
  • POS-14178: Fix INV-125, Inventory Tally Sheets, for “14.4” not a valid integer, due to a typo in the number expansion changes in 4.7.49.
  • Fix a session error when selling bundle kit items, exposed by the 4.7.52 change to show Available Quantity for kits.
  • POS-14174: Fix so voiding a sales line that caused a Pending Stock Correction cleans up the Pending Stock Correction in the same way as when an entire sale is voided (by making it permanent and then recording a Void OOS to revert the QOH change).


  • Sale Screen: Fix to not open Shipping Panel excessively when Shipping Options are set to Assume Shipping w/o Prompting.


  • POS-14171: Update  Item Price Levels when the Category selected for an Item changes.
  • Allow totals on Sale, PO, and Vendor Invoice screens to grow as needed, and take less room when the numbers are smaller. (Previously, numbers above 99,999.99 would get cut off.)
  • PO-101: Basic PO form minor improvements and added the total number of line items to the summary page.
  • POS-14169: Fix “record must not be dirty when refreshed” when modifying a PO line that was newly created from a Purchase Request, or was previously saved on a recalled PO then modified twice. (Broken in 4.7.01)
  • Change PO export filename to be Vendor-Name_Purchase_Order_nnn.
  • Fix syntax error in AR-101, A/R Statement Form, (“DECIMAL(12,)”), caused by number size changes in 4.7.49.
  • Change exports to use ISO Date and Date/Time formats (yyyy-MM-dd and yyyy-MM-dd’T’HH:mm:ss.SSS). Special case for PO exports: use “Basic ISO Date” format (no dashes) for date-only fields.


  • Fix proxy initialization errors in some cases. (Continuation of POS-14167 fix in 4.7.49.)
  • POS-14083: Add an “EDI File Identifier” field, for PO exports, to Vendor Record, on the External Accounts tab. This is required for some EDI providers.
  • POS-13668: Treat Item Cost as zero for the purposes of pricing, when pricing is based on cost (whether it’s from a markup formula, a price chart, etc.) and the Item is a consignment with a split (hence its cost is based on price).
  • Fix EntityExistsException for ItemPriceLevel when changing Category Price Levels with a large number of associated Items.


  • Fix not to present the sales slip menu when on Save from Sale Screen when there are NO applicable default (# of copies > 0) main slip styles. Ctrl-P, on the other hand will still offer voices of non-main and non-default slip styles, unless there’s exactly one main (and no applicable non-default styles), which will will just print silently. 
  • POS-13762: Delete all outstanding Purchase Requests when an Item Record is deleted, or all but manual requests when Inventory Tracking is turned off. Previously, only Reorder Requests were deleted when tracking was turned off, along with manual requests when Items were deleted.
  • Blank out QOH & Qty Resv in Item Record tables for Items with Inventory Tracking turned off.
  • Fix Repair Item Quantities to work in Sample Data.
  • Give specific an exception message if missing record in lockAndLoad instead of a Null Pointer Exception. The one known case of this extremely unlikely race condition has been fixed, but others could theoretically happen.
  • Fix race condition closing screen w/column layout changes.
  • Add missing checks for the Product Variants feature in Sale & PO Screens when using Variant Items and Base Products (with some special cases to allow the inventory-holding side of existing items to be used w/o the license).
  • POS-13774: Include available quantities for bundle kits (Inventory Tracking Off) in Early Out-of-Stock checks and Item Details display on Sale Screen, based on their least-available component. This includes Product Variants with quantity multipliers (like cases of soda). Round fractional kit quantities down.


  • More report size data refinements.
  • Fix SAL-213, Daily Sales Tax Breakdown, to show the fractional part of sales tax rates (which can have up to 3 fractional digits).
  • MCH-197: Increased width of user table VITEM.
  • MCH-196: Increased width of user table VITEM.
  • POS-13896: Add Address/Phone/Email to GCs & Coupons.
  • Fix error opening Coupon Record Screen.
  • POS-14164: Fix so interactive events propagated to screen code are still marked as interactive. Among other things, this was preventing the PO screen from asking if cost changes should be used as an Item’s new standard cost. (Broken in 4.7.35.) Affected areas:
    • Prompt for changing Standard Cost in Purchase Order Screen
    • Prompt for changing Standard Cost in Vendor Invoice Screen
    • Receiving Auto-Detail Mode
    • Card-on-file warning when changing Payment Processing Methods in Configuration Settings
    • Clearing Event Name in a Gift Registry should revert to default name 
    • Sale Screen: Smart Returns
    • Sale Screen: Convert price reductions to discounts (if enabled)
    • Sale Screen: Age Restrictions
    • Sale Screen: Automatic switch to Shipping panel as needed
  • POS-14165: Fix error handling when saving Search Schemes to report actual error.
  • Fix to avoid Null Pointer Exception selecting a Search Scheme whose main search field or advanced filter field was renamed by a program upgrade.
  • POS-14166: Increase size of inventory and sale line quantity fields from 5 integer digits (with 4 decimal places) to 7 integer digits (w/4 d.p.). Increase size of other fields accordingly.
  • EMP-163: Added line number to sort detail in correct order.
  • POS-14167: Fix proxy error determining from output file name while printing an Inventory Transfer Manifest. (Caused by change in 4.7.46.)
  • Add an option to Include Unposted Transactions in the SAL-412 Transaction Detail Report, when run directly from the Report menu, like in the Sale Summary report.


  • POS-14151: Don’t check reorder levels for inventory transfers when Reorder Mode is Global (since there’s no net QOH change). Also fix several underlying problems that resulted in a Hibrenate Assertion Failure in some rare cases of such transfers. In general, fix unnecessary splitting of reorder purchase requests when changing reorder amounts during transfers.
  • POS-14158: Add Commercial Card Type and Level 2 Purchasing Card fields, Tax Amount and Customer’s PO, to the CC Log record screen. Save Customer’s PO in Tender Records, so it can be viewed again in Tender Info from the Sale Screen. Fix so Tax Amount (and, if available, Customer’s PO) for deposits and on-account payments are derived from the base sale/order.
  • Fix 4.4.144 upgrade step error due to 4.7.35 changes.


  • CUS-231, INV-143, MCH-140, MCH-194, MCH-197, SAL-052 add support for Kit Reporting.
  • Fix so PO screen stuck on Info Panel when PO Screen Option, “Show Full PO Dates Fields Before Saving”, is enabled. (Broken in 4.7.08.)
  • Fix additional cases of inconsistencies between the list of loyalty clubs for a customer in the Sale Screen and their actual club membership, especially for newly-added customers and clubs with membership purchase requirements. The upgrade repairs existing data.
  • POS-14157: Fix Idle Exit to clear immediately on No.
  • POS-14015: Add # of Copies to Customer Forms.
  • POS-13971: Add Inventory Transfer Preview, Copies & Form Settings in Printer Assignments. INV-025, the Inventory Transfer Manifest “Report”, becomes XFER-101-S, Full-Sheet Inventory Transfer Manifest *Form*.
  • POS-13640: Fix so Coupon Record Screen shows Loyalty Club name instead of internal format. Expand Issued & Redeemed Dates to Date & Time on Coupon and Gift Card Record Screens.
  • ISI: Update to Shopify 2022-10 API. The Artisan No-Mail field is now set to Yes unless the customer has opted to subscribe to a newsletter on the Shopify site.


  • POS-14144: Implement PO Export.
  • Fix failure to bind help text to conditionally-editable fields like Qty On Hand and Coupon Number.


  • POS-14150: Fix null pointer exception when changing (currently unimplemented) Serial Prompting Mode.
  • Move the “Edit PO” button on the Receiving Screen to the top row, so screen isn’t too wide for Standard Size on Windows.
  • Fix several screens that accidentally didn’t get the new Page Up & Page Down behaviors added to other form screens in 4.6, including Customer Record Screen, Gift Card Screen, and Tender Info.
  • POS-14145: Fix so long-running background tasks (like reports and bulk updates) count as activity for idle status (including the new 4.7 exit-on-idle).
  • POS-14147: Fix an error (from recent 4.7 changes) creating a new customer record when some loyalty clubs require membership item purchases. Also, do not join clubs when points are imported, if the club requires membership purchases and they haven’t done so.
  • Fix to remove leftover “OKFORCUST” column from Tax Exemption Type table that should have been removed in 4.7.35 upgrade step.
  • Loyalty Clubs: Fix to not add new customers to clubs that require membership items to be purchased (until they purchase memberships).
  • Reworked implementation of single-line help text at the bottom of the screen, for more consistency. Fine-tuned help text for some common screens. Also show help-line text as a tool tip, for increased readability on long text.
  • Fix silent (but logged) crash in batch order processing when payment processing fails. (UnsupportedOperation removing tender from an unmodifiable list, due to 4.6.26 change.)
  • POS-14136: Fix to show the search help in the help line on record table screens when the table has focus, as well as when the search box has focus.
  • Add a bunch of F1 help topics.
  • POS-13827: Protect against using partially-restored data.
  • Fix Customer Tax Type to not override Non-Tax items
  • POS-13323: In Multi-Vendor mode, when a new Vendor Product is added implicitly (either by changing Preferred Vendor for an Item Record, or putting an Item on a PO for a new supplier), remove that Item’s Vendor Product for Vendor, “NONE”, if there is one.
  • POS-13951: Fix so “Forgot Password” reset mechanism correctly prompts for new p/w, then logs you in.
  • POS-10958: Disallow Employee Time Clock In/Out in Sample Data that was created by copying from Real Data, so employees don’t accidentally lose real time clock information.
  • POS-13205: Blank out the Tax Type column on the Sale Screen for percentage discounts (including entire-sale discounts, coupon items, and tracked coupons), rather than showing it as “NT”, which may be confusing. The discount amount is in fact subtracted from the overall taxable amount, on the *other* sale lines, but the discount line itself has no tax component.
  • POS-14132: Simplify the Change Password Screen by removing the empty-password checkbox, avoiding an extra step when changing from blank to non-blank password.


  • Commit changes in embedded tables before saving screens.
  • Use Date Picker for editable date fields in tables.
  • 17 Various Reports: Added support for hide cost.


  • POS-14131: Allow loyalty club points to be manually changed, with appropriate authorization, based on a new task setting, “Manually Adjusting Loyalty Club Points”. Make these changes, as well as imported points, persistent (by writing a Points Adjustment transaction); that is, if club points are recalculated, these adjustments will still be counted. 
  • Include loyalty club points and membership changes in Audit Log.
  • Fix cases where newly-added clubs don’t set membership dates for eligible customers, even when no membership item purchased required.
  • Auto-pop customer combo box in A/R Statement Options.


  • Implement Balance Forward A/R Statement Style. This is now the default for new data (and new Defaults Profiles).
  • A/R Statement Form 101: Added Footer Message.


  • Fix for some older voided transactions that were showing on reprints of A/R statements. We now enforce that voided transactions have no Statement Date.
  • POS-14137: Fix a fatal error using the (new in 4.7) +/1/* buttons on the Label Qty dialog.
  • Payment Processing: Add a setting for PAX Direct processing methods to “Use PAX “Device ID”. Variable to Distinguish Multiple PIN Pads.” This was previously *always* done, but “Device ID” only applies to processing company, First Data Omaha/RapidConnect. New default is set to “No”.
    When “Device ID” is not used, the local part of the Artisan Station Number is used instead.
  • Sales by Item 101: Added Support for Inventory Kits.
  • Fix so migration from 3.X handles A/R statement dates correctly: fill in missing statement dates, and set Final Statement Date (new to 4.X) based on a determination of which items (invoices, payments, etc.) were still open as of the last generated statement.
  • Fix migration of A/R payment lines to preserve “Referenced Transaction” linkage, so the statement code knows which invoices have been paid. Includes a data repair for earlier migrations.
  • Add a special case in statement generation to not make finance charges (F/C) retroactive when an F/C is added to a Payment Type after it was already used on some posted statements w/o F/C (and thus had no F/C lines to set maxFinanceDate).
  • POS-14127: Fix so the Item Record Screen Options, “Hide Discontinued Items…” and “Hide Product Variants…” apply to (built-in) Item List Searches only, not Report Parameters. 
  • Support Apple keypad “Clear” key.
  • Fix auto-billing & order import batch processing to delete tenders for which payment processing fails, rather than leaving un-processed tenders on the order. When any transaction error during batch processing occurs, the transaction status is (in 4.7) set to “Incomplete”; fix to set the Sale Type to “Sales Order” even if there are no (remaining) tenders to create a Deposit transaction, since normal sales can’t have Incomplete status.
  • Inventory Transfer Report Fixes & Improvements.
  • Receiving Report 101: Now allows to Hide Cost.


  • POS-14122: Allow Custom Reports to conditionally hide costs (based on the “Hide Costs” parameter), just like built-in reports, when set to Show Costs Unless Hidden.
  • POS-14121: Fixes and refinements for Combo Box pop-up fields, including allowing Space, Left-, and Right-Arrow to select an item from a pop-up menu.


  • Fix error parsing –data cmd-line arg
  • ISI: Change User Agent header used by the Artisan Task Manager to include the “Artisan POS” name and version number (rather than just “Java/1.8.0_nnn”). This gets us past the Cloudflare anti-SPAM filter now used by Zoey online stores (as of June 2022).
  • Fix so long Customer Notes don’t stretch the Sale Screen layout, causing some of it to be cut off on the right.
  • POS-14116: Fine-tune Sale Screen layout, so bottom row of buttons don’t get cut off at Standard Size view (or larger), even on Windows (which has a slightly taller text than macOS). Move “units” count below the panel selection buttons (on the left) to balance the top layout better (especially when Tax Exemption type is visible. Keep it displayed (except when zero) now that it’s no longer sharing space.


  • Restrict database names to letters, digits & underscores.
  • Improve Alt-F5 Exit All Stations: 1) Disable “Force” button once pressed, and rename it to “Forcing Discards…”, so you can see that it’s in progress. 2) Fix some cases where the exit proceeded even though some stations with unsaved changes were still not closed.
  • POS-14117: Reduce lock contention during startup, by skipping the updates of permanent records for all but the first station connected to the data (each time), and in the background check for external exclusive access requests, by checking w/o lock first. This reduces the likelihood of occasional freezes with large numbers of stations.
  • POS-14092: Fix to prevent Constraint Violation errors form attempts to save a sale w/o full payment, which is normally prevented by disabling the Save button, but could happen if the sale was first marked as paid in full, but the tender amount was changed, and the Save button was pressed w/o leaving the amount field. So, check one last time after the tender change is finalized.
  • POS-14115: Fix so sale totals are updated after an Item on the sale is modified by going into the Item Record via Ctrl-F4 (or double-click).
  • POS-14111: Fix migration from 3.5 data with non-US addresses to match country names correctly, with a case-insensitive match.


  • Add protection for various race conditions from fast clicks or typing, by disabling Action buttons and the Scan Mode text field whenever a bulk action or final action (such as F10 Process) is initiated. (Applies to various Record Table Screens, including Scan Mode.)
  • Fix so using Scan Mode to apply counts to a paged record table screen (like Inventory Counting or Inventory Transfer) with > 400 records, doesn’t apply some counts to the wrong records. (4.7)


  • Add Discount fields to ILOOKUP view for access by Handheld Devices.


  • Don’t show deleted customers in CUS-105, Loyalty Club Points By Customer Report. Show “DISABLED” on lines with disabled clubs. Add “Joined” and “Expires” dates.
  • POS-14065: Fix a number of issues with Loyalty Club membership and expiration dates in cases where a membership item purchase is required. In particular, make calendar-year memberships expire at the end of Dec 31, rather than on Jan 1, and if purchased in the last 10 days of the year, count toward the *following* year. 
  • Fix, in general, failure in some cases to keep the list of club names on the Sale Screen in sync with the actual list of club memberships.


  • POS-14085: When a Variant Template has SKU Suffixes that result in duplicate items, only the first one is created. Fix so that when the conflict is corrected (by changing the SKU Suffixes in the Template), any missing duplicate items (which are no longer duplicates) are created.
  • Fix slip printing for Auto-Billing and External Orders to use the configured slip style for ALL printed receipts. Previously, it was incorrectly using Slip Menu Mode and possibly even trying to prompt for a slip style selection (which doesn’t work when run non-interactively, such as from an Internet Order download), for Deposit transactions.
  • Add progress bars for Scan Mode.


  • Fix Auto-Billing & External Order batch printing modes to include the correct transactions; the behavior of the first two choices were swapped.

  • POS-13904: ISI Upload Shelf Location as a custom attribute named “Shelf Location” to Zoey/Magento (if non-blank) or WooCommerce (if such an attribute is configured in WooCommerce). (Shopify doesn’t support custom attributes.)


  • INV-143 – Inventory Change Report – Change default for “Show Items” parameter to include items with Ending Inventory even w/o activity.


  • Combine Dates & Misc Info panels on PO Screen, to leave room for multi-site controls, so function buttons at the bottom of the screen don’t get cut off at Standard Size.
  • Fix Label Qty Dialog to allow quantities to be set to zero. Fix so first quantity changed by +/−/✱ after Clear All is the first row, not the second.


  • Improve handling of Escape/Close Screen in Sale Screen to prevent loss of newly-processed payments on a recalled sale.
  • POS-14028: Fix calculation of available qty for Sale Screen Out Of Stock Warning (if enabled in Sale Screen Options) when changing quantities on a recalled sale/order to take into account the *original* line quantities, which would have already been subtracted from the available counts.
  • POS-14043: Make a (virtual) column for “Issued-To Customer Address” available on the Tracked Coupons list screen.


  • POS-14031: Don’t reprint deposit slip when the main receipt is reprinted.
    (The deposit slip can still be individually reprinted.)
  • POS-13908: Fix sort order for record-typed fields (Category, Vendor, etc) in Inventory Transfer and Physical Inventory Counting screens when multi-site.
  • POS-14070: Fix the Status column in the Station list to be based on the time the record was loaded, rather than the current time, so the Status remains the same until the list is refreshed, rather than gradually creeping from “Active” to “Idle” to “Crashed” even though the status hasn’t really changed.
  • Fix Null Pointer Exception running data at a brand-new site.


  • Fix to not void a processed tender twice if it is deleted and then the entire sale is voided.
  • Fix Null Pointer Exception in “isAmazonRDS()” during initial database connection when using a server name that starts with a number but isn’t a valid IP address.


  • POS-13898: “Add Missing Sale” and “Void” buttons for detached payments on the Payment Log Record Screen (CC Log) are now disabled when either is pressed, so you can’t accidentally perform both functions on the same record.
  • POS-13547: Give an error message instead of just silently rejecting orders in a multi-type import file (TTX or IIF) if the user is not licensed for External Order Imports.
Updated on January 3, 2024

Related Articles