What’s New in Artisan POS 4.0

Change Log



  • Fix Error When Applying Payments with Ctrl-A
  • Add “DELETED” to title for record and record list reports when showing deleted records.
  • Fix “Ends With” price markup rounding method, so it calculates all cases correctly.
  • Close 2nd Copy of Artisan on Duplicate
  • Added Layway / Order Reports under Sales Report Sub-Menu to accommodate the two reports for layaways / order and others that are planned.

4.0.104  –  4.0.105
  • Fix for race condition with “Enter” when search is already in progress on Record Table Screen.
  • Fix null pointer exception when quantity on hand changes without a transaction.
  • Allow deletion of purchase requests for voided special orders.
  • Fix for premature marking of Special Orders as Ready when they have multiple line items. This was also causing an item_check violation once they other items were received, because they no longer were treated as reserved receiving.
  • Add upgrade fix for Waiting Order inconsistencies.
  • Fix Crashes from Keypad Minus when no items are present
  • Improve when to display message for Replacement for Stolen Reservation message during receiving (“This item may be needed to replace existing Layaway reservation(s).”).
  • Fixed A/R Aging Report with various issues including filters and sorting.
  • Fixes for inconsistencies in Customer A/R Account Balance.
  • Daily Sales Summary Report, added Margin % column.

  • Report Engine: Improve aggregate references.
  • Report Engine: Fix use of multi-valued parameters in conditional expressions.
  • A/R Statements: Allow customer selection and range + A/R Aging fixed to work with 3rd-Party-Billing and general fixes and cleanup.
  • Improved PO Form to combine identical items with different request sources such as special order and reorders.
  • PO 101: Fixed to work in Sample Data.
  • Scan mode in Receiving PO.
  • Relax Feature Check to use Basic A/R to allow for A/R Reports.

  • Fix 3.X migration to pick up missing Customer fields “Department”, as “Street 2”, and “Country”, and to NOT copy Vendor “Country” to “Ship-To Country”.
  • Increase VersionCode update number to max 4 digits.
  • Allow import of Tax Type & Tax Exemption Type references.
  • Rename Tax Type “None” to “NT” w/long name “NT (No Tax)” so it can be imported (since “NONE” is treated as blank on import), and also accept “N” or “No Tax” on import. If only some of the tax fields are included in a customer import, provide reasonable defaults for the others; for example, if TAXEXTYPE is provided and TAXTYPE isn’t, set TAXTYPE to “NT”.
  • Fix migration of printer settings to handle “Windows Default Printer” as a special case, and to convert print file to print folder.
  • Rename “A/R Payment” in Sales Slip Style Conditions to the more accurate “Deposit/Payment”.
  • 4.0.101: Change version code storage format to use zero padding so it’s sortable as a string, allowing “select max(version)” to work & prevent repeated upgrading of 4.0.100.
  • Change formula function “str” to use plain formatting (no commas) if the value has a scale of 0 (an integer), and to always use plain formatting for “zstr”. This fixes the comma in the Sales Slips for sales slip numbers > 999.

  • Improved INV-153, Inventory Count Report, to show differences in on quantities and counted quantities.
  • Fix typos in some sales slip form names.
  • Fix failure in post-upgrade step for 4.0.88_42 when Requested Reserve Quantity exceeds Quantity Reserved.
  • Fix to rename user records that conflict with new permanent records, in general, not just for report/form/label records.

(Never Released)
  • Implement SAL-223, Retail Planning Report leveraging the Management One Open To Buy (OTB) Export code building a new infrastructure into report engine to accommodate.
  • Fix a bug in the cost calculation for discounted consignment sales when the consignment discount model is “Before Discounts” or “All Discounts”. Upgrade to 4.0.98 will fix existing sales data but only for sales that have not yet been posted to a consignment statement.
  • Implement INV-143, Inventory Change Report.

  • Fix Rounding Error in QuickBooks export.
  • Create missing Line Stock Records from prior stock-splitting bug.
  • Don’t mark station “alive” until ALL startup processing is done, including post-upgrade steps, so it doesn’t leave it “alive” if those final steps cause an exception (resulting in confusion if you try to go back into the same data without restarting the program.)
  • Fix to not mark upgrade complete if an exception occurs during a post-upgrade step.
  • Fix failure to save new Line Stock Record from stock split.
  • Make valid “soft” Access Key Keys take precedence over physical (“hard”) Access Keys (as long as they unlock at least one license key).

  • Fix handling of Include-Non-Inventory power search setting in “All Consignment Items” screen.
  • Fix so F3, F4, etc, work correctly in pre-filtered Item Record Screens like “All Consignment Items”.
  • Fix so keypad +/-/* work as normal text characters in non-editable Item Record Table Screens.
  • Fix for vulnerability in Cost search criteria for certain data.
  • Fix Audit Log to show the 1000 most recent records instead of the 1000 oldest.
  • Fix import matches on secondary fields like Vendor Name to be case-insensitive.
  • Added “(Gift Receipt)” to Ctrl-P Operations Menu button to make it more clear.
  • Fix issues when swiping credit cards into the Tender Info Screen because of a race condition switching windows.
  • Validate emails during migration of customers and vendors; additional fixes for variant and loyalty club migration.
  • Don’t copy UPC, Vendor P/N, or Mfr P/N when copying Item Records.
  • Report exceptions during payment processing as internal errors (rather than silently failing).
  • Data Import Tweaking
  • NEW Report: Inventory Count Report
  • Fix for disappearing Payment Button Menu.
  • Don’t wrap short text (10 characters or less, like “Check Paid”) on buttons with icons.

  • Fix widows in Deleted Records notes
  • Pick up Drivers License / ID bar code fixes for 2015 South Carolina & Michigan licenses. 
  • Allow migrations from Artisan version 3.5.89.
  • Fixed security to check when un-deleting records.
  • Fix null pointer in payment processing when a Query is required.
  • Fix number of digits in some decimal fields, especially Cost Range in Item Power Searches.

  • Prevent stack overflow building menus with large numbers of items
  • Fix chaotic bar code number assignment when there are numeric-only item codes of different lengths.
  • New Sales Form Gift Receipt for All Items printed individually.
  • Completed Sales by Hour portion of the Sales Summary Report. Revealed more of the underlying data on the report and improved the headers. Tweaked selection criteria and added totals on bottom for the Days and Right for the Hours.


  •  Fix so images get copied when records are copied.
  • Prevent migration from trying to write on-order stockunits with missing purchase orders.
  •  Fix 3.X migration problems when coupon items have inventory.

  • More work on physical counts structure to prevent problems updating Item Records.
  • Fix so copying a Category Record doesn’t clear the Category Code when the numbering scheme is Free Format.
  • Change Inventory Numbering Scheme screen to default # of digits upon changing schemes to 3, 3, 4 respectively (for Vendor, Category, Item) rather than 1 digit only.
  • Implement F4 for Receiving *Detail* Screen.
  • Fixed problems with Keyboard Device handling.
  • Fix Null Pointer error in reports. Example SAL-207 Consignment Sales Report

  • Fix problems with duplicate save processing after selecting Yours or Merged for a merge conflict.
  • DataVision: Fix so formula references to aggregates get appropriate values when referenced from group footer sections (rather than getting the value from the next group).
  • Add EMP-163, “Employee Performance & Commissions” Report
  • Add FIN-214, “A/R Aging Report”, and FIN-215, Temporary A/R Statement Report.
  • More work on ColumnLayout issues.
  • Rework physical counts structure to prevent problems saving data.
  • Reduce warnings about your *own* record changes.
  • Updated SAL-101 – Sales by Item Report to not use User Columns, but use User Table instead to improve performance. Also added Inventory Retail value and cleaned up the report, especially when not showing item detail.
  • Fix to copy Item Price Levels (along with Vendor Products and Site Products, once supported) when copying Item Records. Ditto for Category Price Levels.
  • Remove Picture Framing Options from Misc Program Options Screen.

4.0.88_36 ( TESTING, NOT delivered)
  • Avoid “data session already closed” crash trying to update column layout due to a window re-size when a table screen’s session is already closed.
  • Usability: Dim selection in Sale Screen Reference Table when not focused.
  •  Fix hung menu screen after invoking Customer Forms Designer when the feature is disabled.
  • (partial): When choosing to Void Deposits during a void of the target layaway/order, reject “unsafe” cases (processed payments, posted transactions) with an explanatory message and suggestion to void them individually.
  • Include record name in title of Resolve Record Conflicts dialog.
  • Increase widths of value fields in Resolve Record Conflicts dialog to show complete dates.
  • Further refinements to the message for the Early OOS Warning dialog in the Sale Screen.
  • Implement Deposit Voids for the “safe” cases (no processed payments, no posted transactions); the rest are rejected with an explanatory message and suggestion to void them individually.

4.0.88_34 (TESTING, not delivered)
  • Fix PO screen to not hide IT_OFF items on recalled POs.
  • Add “Resume Tracking” entry to Inventory Activity when tracking is turned *back* on for an item. : Fix clearing of Qty On Order and Qty Requested when turning tracking *on*. Fix assertion failure (or incorrect deletion of stock units) turning tracking *off* w/some units On Order.
  • Increase the size of the Audit Log Detail from 200 to 2500 characters.
  • For now (4.0 at least), limit Audit Log search results to 1000 records.
  • Fix problems increasing QOH by Physical Inventory Counting with Pending Stock Corrections.

4.0.88_32 (TESTING, not delivered)
  • Refresh reference table on sales screen when screen is re-activated, such as when customer information changes by editing the customer record such as A/R balance.
  • Enforce one consignment statement per day per vendor; give a warning with a list of vendors not included because already posted. Log fatal error to log.txt in addition to displaying a dialog.
  • Consolidate Out-Of-Stock (OOS) Handling options under Inventory Handling Options and rework them to hopefully be clearer. Change default to enable early OOS warnings on main sale screen, so new users realize something out of the ordinary is happening.
  • Fix unsupported operation exception in range and keyword cases of consignment statement printing. Only effects when printing statements by selecting a RANGE of vendors.
  • Fix duplicate line numbers when receiving *part* of two or more pending stock corrections in the same batch of receiving. Add # of units received from Out of Stock (OOS), if any, to the receiving summary dialog, and make it a warning dialog in that case.
  • Don’t change Item’s inventory tracking when changing its pricing model to or from Fill-in-Price non-interactively (e.g. via Bulk Change or Import).
  • Fix for receiving issues when order from a *non*-preferred vendor.
  • Catch exceptions during import and display as an import error.
  • (partial): Fix Category Code assignment during import, when numbering scheme is Free Format, to use a 3-digit number. (Default was 0, which came out as an (illegal) blank code.)
  • (partial): Fix RecordFilter.isEmpty() to ignore default clauses.
  • Importing Excel File throws error
  • Fixed to honor cost % when IT_OFF, but for IT_ON use actual purchase price, unless rcvd w/o PO, in which case cost must be zero since no price is set. This includes storing the cost % in the tranLine when the item is attached, so later changes to cost % don’t affect existing sales. Fix Receiving Rollup F4 edit screen to disable Vendor’s P/N. Fixed to confirm leaving fill-in-price line on sale at zero price even when it’s the first line on a sale.
  • Fix for syntax error in upgrade step and related cost % handling ).
  • Implement mechanism for printing Forms via Ctrl-P for Coupons, GC, Customer Forms, etc.
  • Add error message display while processing receiving, in addition to sending it to log.txt.
  • Fix race condition that could occasionally cause the Sale Screen payment buttons to disappear.
  • Fix display of Account Number on PO screen.

4.0.88_28 (delivered)
  • Changed database restore to only call removeExclusiveScreen() on failure; otherwise, it is handled automatically by getExclusiveAccess(). It was causing an AssertionError in ScreenManager.
  • After closing a recalled sale go back to the sale list instead of a blank sale screen.
  • Make overriding minimum deposit (or A/R Limits) confirm if not already prompting for authorization.
  •  Fix null pointer making a payment on a layaway/order [from the caching changes on 5/13/15].
  • Remove assert that fails when there are missing Line Stock Records (from prior bug).
  •  Fix errors saving new layaways (“this instance does not yet exist as a row in the database”) an special orders (“refreshRecord record must not be dirty on first refresh”) with initial payments, caused by overzealous record refresh in those cases.
  •  Remove assert that fails when there are missing Line Stock Records (from prior bug).
  • Added test for linestock records to avoid issues when receiving items with pending stock corrections.


  • Edit Item in Voided Sales Artisan
  • More Progress Monitor improvements, especially with Bulk Change Operations.
  • Consignment Payout Forms, 1st round of updates to improve sales detail.

  • POS-12271: Stay in Sale Screen after discarding new or modified sale (unless screen explicitly closed with “Close Screen” or “Close All Screens”).
  • DataVision: Don’t do page breaks between a Group Header and its first nested sub-group or detail section.


  • POS-12268: Disable non-functional Cancel button in Progress dialogs for now, until we get it working in a later release.

  • Consignment Statement Ledger Report – Changed date parameters.
  • New build script to create a single jar file.
  • Minor improvements to error handling, especially w.r.t. records modified by another user.
  • Fix minor issue with cost rounding in updating item receiving summaries.
  •  Closing all screens gets stuck when multiple screens open
  • Odd error when importing item records
  • Added warning for thermal signature copy that does not actually have an AUTHNO or PPSTATE that isn’t ‘PPS_NONE’
  •  Odd error when importing item records
  •  Creating an Time Clock record throws an error
  • () Tighten up some of the payment processing code paths for potential missed steps in obscure cases. These probably don’t explain the original reported problem, but there’s a small chance that they might.
  • () Add last-ditch check for unprocessed credit card tenders when saving a sale; they shouldn’t be able to get that far, but if they do, we don’t want to finish the sale with them still pending.
  • Log Stale Object Exceptions in addition to error dialog.
  • () Log release of unallocated run lock instead of crashing with Null Pointer Exception or assertion.
  •  Fix remaining Column Layout session issues (“Record was updated by another user” in Bulk Changes, for example).
  • Remove automatic disabling of consignment when turning inventory tracking off; instead, confirm save of items with consignment and IT_OFF. [Misc code cleanup related to consignment items. Fix remaining setScale warnings.]

  • Fix to exit cleanly w/o null pointer exception when closing program in the middle of a data upgrade.
  • Fixes to propagate changes from Customer Record back to Sale Screen, Vendor Record to PO Screen, Item Record to Sale Lines and PO Lines, and similar cases with edit buttons in record screens.
  •  Bulk Changes is broken again
  • Migration is affecting totalAmount and totalTax

  • Make findUnTrackedUnit() *not* require a flush, by caching new un-tracked units in the Data Session.
  • () Fix Bulk Reset QOH, which was silently doing nothing since POS-12010 change (on 1/9/15) incorrectly removed its result handler callback when removing prompt for obsolete choice of filtering based on negative QOH.
  • Fix refresh error changing customer’s A/R balance through Customer Record Screen.

  •  More fixes for inventory record caching and refreshing, especially when recording multiple inventory history lines in one transaction, such as saving a new PO with more than one line item.
  • More fixes for inventory record caching and refreshing, especially when reducing quantities on a PO. (Removed overzealous flush in adjustStock() that was messing up deleteStockunit() calls from PO beforeSave(), but watch out for possible side effects from the 15 or so other callers; on initial inspection, they don’t seem to need it, but it’s hard to be sure.)
  • Make number assignment *not* require a flush between calls, by caching change Number records in the Data Session.
  • Minor tweaks to sample data item records.

  • Give cleaner failures (especially in Sale Screen) when trying to save a sale with a duplicate or changed slip #.
  •  Rcv PO issue
  • Eliminate vulnerability to missing line stock records in replaceOOS() [though we still need to find the root cause].
  • Revert change to fix missing linestock issue ().
  • [In transactRecord.finalizeLineStock, assert that the line has at least one Line Stock Record.]
  • Fixed issue with ending time for a date for consignment statements.
  • Consignment Statements: Now includes any vendors with consignment sales pending during the period or into the future. Now more consistently sorts statements by uppercase vendor name for all groups of vendors (All, Range, Keywords).
  • Rework some previous inventory handling changes to fix new or additional related problems including failures saving sales due to attempt to refresh a dirty record. (In general, refreshes need to be *before* making changes to a referenced record, not at the end of the save process). Also fixes additional problems with Line Stock Records and additional cases of Stale Object Exceptions.
  • Consignment Ledger Report not in the menu structure.
  • Fix problems with new appearance profiles during upgrade done on a *new* station.
  •  Fix numerous problems with the new record-cache-based inventory handling. Fix out of order sample transactions for Fireworks Day 12. Minor error handling improvement for miscellaneous exceptions.

  • Be more flexible with syntax of “realSample” environment variable: now case-insensitive, treats “Y” or “Yes” as “ALL”, and skips if “N”, “No”, or “None”; silently ignore unrecognized industry names w/o logging as an error.
  •  Fix so import with *no* primary or secondary match fields imported correctly matches no existing records.
  •  Strengthen auto-numbering by pre-checking for additional conflicts in alternate tables & fields: PaymentLog for slip #s, Alternate Customer IDs for Customer IDs, and both Item Codes and Alternate Codes for bar code assignment.
  • Don’t log non-fatal “record” errors that are already reported to user.
  • Consignment Statements: Fixed issue with ending time for a date for consignment statements.
  • Consignment Statements: Now includes any vendors with consignment sales pending during the period or into the future. Now more consistently sorts statements by uppercase vendor name for all groups of vendors (All, Range, Keywords).
  • Consignment Ledger Report now on the menu.

  • Remove dependency on (possibly missing) Line Stock Records for generating Consignment Statements; instead, ensure consignment tranLines use only units from the same vendor, syncing changes from item.vendor to those tranLines until they’re posted to a statement. Make transact.vendor field accessible to reports (for Consignment Statements).

  • [Add option to log keystroke times (in keylog.txt), excluding password fields, by setting environment variable “logKeyTimes” when any keyboard devices are enabled.]
  • Fix occasional glitches in D/L scanning, especially on Mac, by fine-tuning scan timing to allow for modest pauses in the middle of long scans.

  • Make separate Appearance Profiles for Mac vs Windows, with different defaults for some font details. Make Appearance Settings changes take effect immediately w/o restart.
  • Added optional group by station number to standard tender detail report.

  • Cannot create PO when changing QOH of a Purchase Request item
  • Rework handling of Search Schemes and Column Layouts to be more robust and use a “last save wins” model instead of getting Stale Object Exceptions.
  • Continue Column Layout work.
  • Fix failure to assign a new station number if number 99 is in use, due to capital “S” in “StationNum” in query.
  • Fix for null pointer when using Artisan the very first time, due to toolbar initialization check for feature settings before data is open: now default to include CC Log and exclude Registry regardless of feature settings.
  • New Build: 4.0.88_08
  • Change help line font to not be bold.
  • Fix to honor Go Button font settings.
  • Remove NYI from all Appearance Settings except Color Scheme.
  • Signature copy prints with blank line items in between
  • Add Ship-To-Name field to full-sheet sales slip

  • QB Export – Fixed Non-Sales backwards sign
  • INCOMPLETE: More Work on Cannot create PO when changing QOH of a Purchase Request item

  • Duplicate Linestock issue caused by changing price on sale
  • Fix PO list screen to disallow Delete and not-yet-implemented Copy.

  • Added check for enabled features when initializing Tool Bar Buttons: Gift Register and CC Log. Rcv No PO is now off by default.
  • Inventory Summary Report – Fixed missing = in suppression formula in vertical lines.
  • Make record selection context easier to see, especially when selecting customer for a sale: Highlight waiting parent screen in Open Screens list, add a subtitle to record selection screen stating the purpose for the selection (when appropriate), with different purposes based on the state of a sale, and noting that you can use ESCAPE or Close Screen to cancel (or in some cases, skip). [Make subtitle a general mechanism available to all screens.]


  • Beta designation has been removed.
  • Add missed use of copyAll=true in record conflict “Your Values” case. Misc cleanup.
  • Eliminate “unchecked” warning for LabelQtyHolder registration.
  • When Transact Date is changed on a recalled sale via Sale Screen “Sale Date/Time”, change Finished Date and Sale Date as well, if they started the same.
  • [Project change: Suppress overly-strong-cast warnings when preceded by a matching “instanceof”.]
  • Record Merging Screen Enhancements
  • Load Item Description or Vendor Name when referenced from another record in a record list (via PartialFieldDataProvider) so they’re available to be displayed in the new Label Qty Dialog if needed.
  • Change column headers as per YT.
  • Customer Labels not using User Table Fixed
  • Load Item Description or Vendor Name when referenced from another record in a record list (via PartialFieldDataProvider) so they’re available to be displayed in the new Label Qty Dialog if needed.
  • Item Pop-Up Note pops too often on PO
  • Empty error message
  •  cont. (It was still popping the note in too many cases, such as escaping from entire PO when cursor happened to be on an item with a note.)
  • Fix null pointer moving lines on a PO (from change to disallow modifying already-received lines).
  • Update PO item detail display after changing an item record via Ctrl-F4.
  • Add Report Formula round() function (w/1 or 2 args).
  • Merging reports in updates to Artisan
  • Misc fix in NYI code for Variants.
  • Round up to case size when computing quantities for reorder requests (so PO gets whole numbers). Recompute reorder levels during upgrade. Advance progress bar when recomputing all reorder levels, in general.
  • Delete Reorder Requests when corresponding Item Record is deleted or has Inventory Tracking turned off. (Clean up existing data during upgrade.)
  • Fix failure to disconnect from CBIOS Server if no SAKs are found (possibly building up many open connections over time). Add additional logging of connection failures.

  • Use of “with” clause in HQL join for more complex PurchaseCriteria cases (in Customer Power Search with filter by vendor, for example) proved problematic; revert to using “where” clause to join customer.
  • Improve blank line detection in special gift receipt for items above the blank line.

  • Fix for (most) missing field names
  • Record Merging Screen Additional Enhancements
  • Finish label quantity control, including individual quantity entry.
  • Honor Fiscal Month setting, as default prompt for Reset YTD and for selected reports including SAL-051 & SAL-054. Improvements to Reset YTD dialog.

  • Fix null pointer when saving PO (and other non-sales related inventory changes), due to a recent not-yet-released change.
  • Record Merging Screen Enhancements
  • Duplicate key value violates unique constraint (additional change to handle untracked consignment fill-in-price items)
  • Fix so clearing auto-numbered fields like Item Code displays “<>” as it used to before the strict punctuation checks were added. (Now it’s displayed as a “blank text string” while the value is really still blank.)

  • (partial): Don’t print sales slips for voids when “Print Voids” setting (in Printer Assignments) is not set (unless forced w/explicit Ctrl-P).
  • Fix failure to update Item’s Vendor P/N from change on PO screen in some cases (from new PO lines not from Purchase Requests).
  • Add Sales Screen Option to Record Canceled Sales as Voids, instead of implicitly basing that on Early Slip # Assignment and the Print Voids setting.

  • Hide Framing Activity & Status from Order Status menus, for now at least.
  • Fix so GC is deleted when issuing sale is voided (as well as when individual sales line is voided).
  • Changes to Column Layout handling
  • Record Screen Conflicts
  • Simplify message for miscellaneous exceptions opening database, e.g. when trying to run a second copy of Artisan.
  • Customers birthday data did not migrate correctly into 4.0
  • Fix for error adding or deleting customer types due to order dependency in category price level creation.
  • When finalizing sale, instead of always starting on the first tender, start after last tender or, if paid in full, on the Save or Hold button. Disable payment buttons for non-sales Sale Types like Internal Use.
  • Fix minor font issues with table column headers and blank help lines.

  • Show Ctrl-F6 binding for switching Open Screens: Added text to title.
  • Add explicit cancel button to user selection menu for time-clock and authorizations, and to Quick Pick. For Quick Pick, cancel button cancels entire quick pick operation, even from a nested menu, whereas Escape and Close Screen still go back up one level first.
  • Fix null pointer starting PO with a Special Order, due to unresolved proxy for transact when showing item details, which were in any case being done incorrectly on the data worker thread. Creating PO from purchase request by special order
  • Minor fix to Tax report SAL-213 to show Sale Date, Not Transaction Date

  • Unable to sell some items due to error on payment screen – Fix
  • Rcv w/o PO crashes Artisan on double-click – Fix
  • Report Updates: Custom Consignment Sales Report, now built in. Fix for keyboard shortcuts on various reports. Tracked Coupon Report

  • Added Daily Sales Tax Report
  • Error when Using Ctrl-A on Layaway transactions
  • Finish Tracked Coupon Scanning
  • Payment Buttons Disappear when Sale Total is Zero
  • Improvements to font properties to make Windows more consistent with Mac, and to begin using Appearance Configuration Settings.
  • Change all hard-coded default “SansSerif” fonts to “Tahoma” for now (since they don’t yet all come from ViewConf settings).
  • Row Updated or Deleted in Sales Screen Error. Can’t Save the Sale
  • Error Creating Purchase Order with Full-Size Images
  • Lock Changing PO Line items like Voiding PO
  • Continue new screen font handling, to use Tahoma for both Mac and Windows, but adjust sizes and styles for each component appropriately.
  • Tracked Coupons: When scanning coupon bar code, (a) allow leading zeros in number, (b) don’t set coupon serial # until all validations are done. Add a test coupon bar code (for Coupon #1) to Shift-Ctrl-F11.
  • Minor report cleanup on PUR-006 (Now excludes Voided POs) and RCV-001 (Hides the group sub-total when not used.)
  • Continue new screen font handling, with font settings change tied to version upgrade correctly.
  • Use Tahoma Bold 11 for Function Button Font to counter excessive “thinness” on Windows.
  • Make CerTekButton accelerator font bold.
  • Fine-tune layout for Promised Date on Shipping Panel.
  • Make border spacing for Custom Fields panel the same as other Sale Screen panels (Shipping & Misc Info).
  • Tracked Coupons: Fix to set discount after item has been set on sale line, so it doesn’t get overridden by the zero in the item record. Make sure sale line description includes coupon number. Disallow deletion of a redeemed coupon record. Give back coupon number when new coupon record screen is cancelled. Remove NYIs for tracked coupons.
  • Allow tracked coupons, deposits, entire-sale discounts, and other “restricted edit” lines on sales be voided. Don’t show item details (on sale or PO) for hidden items.
  • Fix major drawing glitches switching from Custom panel to Shipping or Info panel in Sale Screen.

  • Unable to use “*” in Card reader settings
  • new version: Sales not posted when data is migrated from 3.5
  • Fix for missing Balance Note Line on initial Layaway/Order Deposit. (It was correct on subsequent payment transactions.)
  • Fix blank PO message to match that specified in the change request, and count only lines with item records, as specified.
  • Make vertical layout of new Layaway tender lock msg & history button more dynamic. (This reduces Sale Screen button cutoff problem on Windows, but doesn’t fix it entirely.)
  • Fix so blank PO message doesn’t lock out Finalize PO permanently.
  • Fix for Sales Screen Layout to adjust the payments window by reducing the gaps on the Miscellaneous Info panel. There is still work that needs to be done here. Also adjusted the Deposit Tender Panel even further to reduce the vertical height which was pushing and covering part of the Sales Screen main buttons.


  • Add missing callback after a Duplicate Record Error to let the screen re-enable Save/Cancel/Delete buttons.
  • Fix failure to update Item Info display on PO and Sale Screens in some cases (e.g. after recalling a sale).
  • Fix so Purchase Request Detail screen has enough room for full Requesting Order # (for Special Orders).
  • Fix failure to remove special-order Purchase Request when voiding the original Special Order. Remove any such leftover Requests during the upgrade. (This was due to a sign error in the calculations in the core inventory handling for this case, which might also have had some effect on some even more subtle cases.)
  • Show “Excess Payment:” in Payments Panel on Sale Screen instead of “Change Due:” for a recalled Layaway/Order and for non-Cash over-payments.
  • Disable payments menu buttons when sale is read-only or tenders are locked (for recalled layaway/order).
  • Store credits migrated do not show available balance accurately
  • Fix cases where an upgrade was not recorded in the VersionLog after, for example, a license error.
  • Set error log viewers for Import and Migration to wrap lines, so we get more info from screen shots.
  • Various Issues with Saving Column Layout
  • Disallow creation of PO with blank line items
  • Sales not posted when data is migrated from 3.5
  • Work to improve imports for items.

  • Update Thermal Sales Slip to allow blank lines.
  • Fix fatal error entering a code in Scan Mode (due to change in 4.0.87_19).
  • Continue work on label printing: Extend to Receiving Log, Purchase Requests, and other screens; fine-tune label dialog.
  • Improve error handling of SQL exceptions (by reporting down the next-exception chain), especially for imports.
  • Trim whitespace around import column names.
  • More fine-tuning of exception error handling.
  • For debugging, make toString() for ImportFieldSources return the field name and (if available) column number (1-based).
  • Fix so whitespace trimmed versions of column names are used for import field mapping, not just reporting.
  • Make authorization to print a large number (> 100) of records or labels always at least ask.
  • Additional changes for coupon handling.
  • For debugging, make toString() for FieldAccessor return the table and column name.
  • Lock out (and hide) tender table in Sale Screen for Layaways/Orders/Reservations that have been saved beyond Hold. In that case, display a Payment History button instead, to invoke the Payment History for the sale.
  • Link “What’s New” Help Topic to our new KB website.
  • Added Special Gift Receipt form that prints items above the line.

  • Fix WRAP-2 sample item’s description to use “$2” not “2$”.
  •  PO: Error: Row was updated or deleted by another transaction
  • Store credits migrated do not show available balance accurately
  • PO: Error: Row was updated or deleted by another transaction


  • Ignore deleted and hidden records during import.
  • Addressed TODOs related to coupons.
  • Fix escaping of single quotes in UI Strings (when string is a MessageFormat: it also contains a parameter number in curly braces).
  • Fix various kinds of extra info on Payment History Reports SAL-074, SAL-075 (due to insufficient filtering); fine-tune their formatting while we’re at it.
  • Add grand total to Payment History Report SAL-075.
  • Project updates after upgrading to IDEA 14.
  • Eliminate obsolete Slip Types; now just “Normal” and “Single-Line Receipt” (though the latter, a generalization of “Single-Line Gift Receipt”, is still NYI); other distinctions (e.g. “Packing Slip”) will now be handled entirely within the form itself. Add Slip Type to default columns for Forms and Sales Slip Styles.

  • Fix several issues with handling of duplicate/out-of-range line numbers during migration.
  • Remove the now-working M1 OTB support from the incompatibility checks before migration.
  • Alt-S for Save on Sale Screen
  • Ignore import columns with blank names for now. (Once mapping templates are added, user will be able to manually map them as “Column nnn”.)
  • Beep when prompting for initial base key for new data.
  • Fix issues with migration of customer discounts on sales; in particular, fix duplicate line number exception when occurs in conjunction with applied credits that are converted to tenders.
  • Various Issues with Saving Column Layout
  • Increase default max search results
  • Completed tracked coupons.
  • Fix crash searching for customer name after CC swipe due to conflict between built-in Last Name search and new “Customers with Open Accounts”, both using the same search field, by having the device event searches only look for (built-in) search schemes with no advanced filters. Simplify creation of the Open Accounts search scheme and fix it to *replace* the default advanced filter instead of appending to it.
  • Tracked Coupons: Move redemption recording into TransactManager so it’s done/undone as sale state changes. (For example, if sale is on hold, coupon is not redeemed.) [Use more general check for isGenericCoupon() rather than checking for specific couponItem.]
  • Rework Label Printing Dialog to provide additional quantity options, including the still-NYI “Enter Individual Quantities”.
  • DataVision: Fix word wrap of long fields when a single word is longer than the field width. Wrap *after* hyphens, not before.

  • Make it so Enter in RecordListEditDialog acts like OK button and closes the dialog (and selects the highlighted new record, if applicable) instead of moving the selection downward in the table.
  • Basic A/R in A/R Menu
  • Use “with” clause in HQL join for more complex PurchaseCriteria cases, for clarity and perhaps a bit of a performance improvement in some cases.
  • Import enhancement: Un-delete records that are referenced by code from imported fields. (Report the count of un-deleted records.) Change import completion dialog to list only the non-zero counts.
  • Keep RecordLookupPartialKey annotations in final build.
  • Forgotten path if license key not located on database
  • Rename “Store Coupons” feature to “Tracked Coupons” and give it a bypass-able NYI instead of making the whole feature NYI.
  • Audit un-deletions
  • Terminate Import after SQL Exception
  • Version Log out of order after 3.X migration
  • Implement Sort PO Lines and Sort Sale Lines. Fix so other line rearrangements (Alt-Up and Down) mark sale/PO modified and are saved when sale is saved. Show modified recalled sale as “MODIFIED” in header (instead of “RECALLED SALE”, etc.).
  • When creating new (real) data, skip license error message and go directly to prompt for base license key.
  • Fix crash during migration with Customer Type based on MSRP or Cost.
  • Fix crash during migration of stock unit with missing Request Date (from Sale Pre-Receive).
  • Fix crash during migration of tranLines with zero line qty from rental reservations.
  • Fix for side effect of recent line sorting changes to prevent crash when saving line stock changes: now convert line number field name to property name in order to get original value.
  • Actual fix for the last “fix” just checked in: the real problem was that the LineStockDataProvider in TranLineRecord should have been using the line number property name (“index”) rather than its db column name (“idx”).
  • Fix crash from migration of tranLines with missing stock units.
  • Rework to write version log in the same transaction as data creation/upgrade. Removed unused primal initializer in VersionLog.

  • Optimize common cases of Customer Power Search purchase history matching.
  • Test Basic A/R
  • Don’t start a new search after simply adding a new advanced filter (before a match value has been entered. Fine-tune timer handling (but no changes to actual time delays in most cases).
  • Fix drawing glitch after adding an advanced filter that doesn’t fit in the current panel height.
  • For Customer Record searches, defer searches and hide the record table while the (very large) power search panel is open; do the search as soon as that panel is closed (via the hide-search button, renamed for this case as “Show Matches”).
  • Fix crash editing Appearance Profile list from combo box.
  • After adding a record via RecordListEditDialog (such as a Column Layout or Configuration Profile) use the new record as the new value for the original combo box, as long as the cursor is still on that record when the user presses OK.


  • POS-12088 Bulk Change does not work on certain items/vendors
  • Potential fix for additional race conditions that may have been causing the still occasional “Session Already Closed” errors (especially when closing lots of screens at once).

  • File -> Open in Welcome Screens – new direction
  • Make NYI dialog more readable by moving feature description from the title bar into the body.
  • Add back 3.5 “Check Duplicates?” setting in Payment Processing Configuration, to allow Force Duplicates to be disabled, as an extra safety net against duplicate credit card transactions.
  • DataVision: Attempt to avoid crash dragging database fields in the Designer (after running the report from the Designer), by restoring the original data source (with its already-cached metadata) after running the report.
  • Add Tender ID and Replacement Flag to Payment Log Detail Tab.
  • Fill in Payment Log response summary and detail when a query fails.
  • Changed Help to point to new knowledge base and added some of the existing kb articles to link from context sensitive help. There’s still plenty of kb that needs to be completed and then added to Artisan. Added an environment variable “SHOW_MISSING_HELP” to assist with identifying missing help topics. Choosing help from a screen that has no topic will show the screen name and it is copied to the clipboard.
  • Finish details of DevConf migration
  • new version : Corrected @Column overrides.
  • Allow blank PO Lines
  • Fix a new problem with upgrade step 4.0.86 (due to constraints change for 4.0.87_24.
  • Separate “House Charges (Basic A/R)”, included in the Base License, from Full A/R (part of Advanced Billing), and give it its own setting in “Optional Features”. Basic A/R includes A/R charges, prepayments and credits, as well as per-customer account limits and A/R activity reports. Full A/R adds statements, finance charges, late fees, and multiple A/R Terms.

  • Cancel Rcv by PO
  • Minor cleanup in event handling.
  • Fine-tuning for Move visibility check into propertyChange handler (for propertyName == null) so configuration changes take effect immediately; do the setEnabled() on the individual promise date components [as annoying as it is, setEnabled() on a JPanel doesn’t propagate to its components]; preserve enabling relationship between date interval type and date picker.
  • Don’t ask about new standard cost on PO if cost was changed in the Item Record itself (via Ctrl-F4) rather than on the PO screen. Fix various subtle cases related to checks for new standard cost. Disallow replacing an existing Item Code on a PO or Sale with blank (or a failed search or record lookup); make them use Void explicitly.
  • Fix Purchase Order forms (PO-101 & PO-101-L, now version 4.0.1) to include description-only “note” lines and blank lines, and to list the lines in order of PO Line #.
  • Show Received Date (if any) in Item Detail area on PO Screen.
  • Preserve PO line order when splitting stock units, by inserting the new stock unit after the one it was split from, in line # order.

  • Fix migration of PPLOG.TENDERID, which is used in Payment Processing Batch Reconciliation Report
  • Don’t include exceptions from UI cache workaround (UITools.clearNimbusCachedOverrides) in log.txt. In fact, disable that workaround entirely for now; it’s not clear it still even works or is necessary with the latest Java libraries.
  • Make partial matches on record lookups smarter
  • Preserve PO line order on Rcv by PO screen and when printing labels from Rcv by PO. This also means that we disable column sorting for Rcv by PO (but not other Receiving screens).
  • Fix “Negative Qty On Hand” Constraint Violation when adding missing stock units upon sale (or other inventory reduction) of an Item that has Item vs Stock Unit QOH inconsistencies (due to some prior glitch).
  • Move makeSampleTransactions to separate class DataVision: Change File -> Close binding from Ctrl-W to Ctrl-minus so as not to conflict with embedding application. (In Artisan, Ctrl-W cycles between open screens.)
  • Make partial matches on record lookups smarter – reworked
  • Code simplification and clarification for RecordLookupByPartialKey (do property name lookup in one place, in common code). Don’t include alt codes in partial matches (since they’re primarily used for scanned codes or short abbreviations).
  • Eliminate null pointer exceptions.
  • File -> Open in Welcome Screens
  • Fix deprecation warnings in ExcelLE
  • Changed ItemRecord.getPartialLookupField method name to avoid confusion with the one in RecordAccessor.
  • Fix problems with split stock unit calculations in some cases, including in particular receiving part of a pending stock correction amount, which was causing a constraint violation exception; other cases might have just resulted in incorrect quantities in Line Stock Records. (This is now using a much simpler algorithm than 3.X for distributing the split quantities.) Also fix problems with some cases of replacing pending stock corrections that attempted to delete line stock records w/o proper flushing.
  • Include Store Name in window title.
  • Change upgrade check constraint name lookup for Derby.
  • Change upgrade check constraint name lookup for Postgres.
  • More fine-tuning of license check loop, especially after a missing dongle message.
  • Auto prompt for “Promised Date” when shipping

  • Clarifications and increased robustness for core CC processing loop (in transactionWorker), including in particular a fix for failure with all processing methods besides OpenEdge (PayPros) to actually retry the transaction after a retry is requested, and to resume sleeping after a query-retry sleep is interrupted by an event (for OpenEdge only). It’s unclear whether any of this changes or fixes anything that might have caused the duplicate processing seen, but it should at least be an improvement in some scenarios.
  • PayPros is now OpenEdge; update processing method name.
  • Add an extra level of “failsafe” protection against duplicate payment processing, at a lower level, inside Payment Manager.
  • Make “Replaced?” a visible field for Payment Log so we can display it in table for debugging. A lot of fine-tuning of Payment Log column names and default columns.

  • Fix so changes to Store Name actually get saved.
  • Message 2 Migration
  • Payment Processing Batch Reconciliation Report – changed total fields to be rounded
  • Payment Processing Batch Reconciliation Report – formatting changes
  • Payment Processing Batch Reconciliation Report – added check of pplog.replaced
  • Strip all whitespace characters (especially newline) in Message 2 conversion, not just space.

  • Message 2 Migration
  • Fix “bad position” fatal error scanning or swiping credit cards into empty text fields (on Sale Screen or elsewhere). [Caused by an off-by-one error in the fix for POS-11903 on 1/22/15.]
  • Minor robustness fix for Import.

Updated on June 27, 2023

Related Articles