Addsum web site and general info

Postings here will focus mainly on Advanced Accounting software updates, tips, and related topics. They will also include general comments relating to troubleshooting PC/Windows/network problems and may also include reference to our other software products and projects including any of our various utilities, or to the TAS Premier programming language. We considered setting up separate blogs for different topics so that users/others could subscribe to topics mostly aligned with their interests, but decided that it would be better to keep things simple since some topics cross over into others. We would nonetheless welcome your feedback/input in this regard. Our web site URL is Call us at 800-648-6258 or 801-277-9240. We also maintain so that older Business Tools users in particular have a greater chance to find us.


We highly recommend that accounting software users "follow" this blog via e-mail (enter your address and click on Submit below) or subscribe to a feed (see also below) as a way to keep current on the latest updates and accounting software news and information. You may also want to whitelist this e-mail address:

Friday, November 1, 2019

TAS Premier 7i release 15 published

Yesterday (10/31/19) we published release 15 in the TAS Premier 7i series.

In late May of this year, we outlined some of the new features of this release.

The TAS Premier 7i updates page provides additional details and a download link for this update (which assumes a prior installation through rel. 14).   

For new installs, the TAS Premier 7i download page contains the latest download link.

This release is also what developers should preferably use who are making custom modifications for the recently release Advanced Accounting 8  (Adv 8) and is one of the driving reasons for us to release this now rather than later, although, other recent TAS Premier releases are also compatible for developing Adv 8 programs.  Another reason relates to ongoing enhancements for CodeBase development and because the TAS Premier data dictionary itself uses CodeBase format files.   Advanced Accounting also uses CodeBase format files for all its memo fields (notes) and for other supplemental files.   We are increasingly using it in custom programming projects including several non-accounting software systems that solely use it.  It has more than proven to be a durable option.

An updated TAS Premier 7i PDF is is also on our store page.   The PDF help/reference file is now 780 pages long and is not included in the new install nor or update packages.   However they do include an eBook format help file as well as a standard Windows CHM help file.

Friday, September 20, 2019

Advanced Accounting 8 release

We are pleased to announce the release of Advanced Accounting 8.

As indicated in today's release announcement, this upgrade has literally been in progress for years while the prior version also continued to be developed with unofficial releases and updates for existing users.  It is without question the most extensive single release that we have ever published in the Advanced Accounting series.

An update for existing Advanced Accounting (Adv) 7i users (which requires that all of the Adv 7i releases are first installed) is available and has already been installed at several sites.  There were some seven official (plus one unofficial) releases in the Adv 7i series.  Our preference is to install all needed updates as well as the 7i to 8 update remotely which is a service we provide without any additional cost.   An update path for older users also remains available.

The release announcement also includes some eight pages of "what's new" information. And there are many important new features any one of which could be reason enough to update.  Adv 8 is also now running on the latest internal updates to the underlying runtime engine which we also publish.

Adv 8 main screen - the shortcut icons in he lower 1/3rd can be turned off

Adv 8 runs on every current Windows operating system that has been released so far by Microsoft.

E-mail related enhancements alone will likely be of key interest to many users.  To accommodate increasingly long e-mail addresses, they have been expanded in this release from 40 to 65 characters.  More importantly, they are now fully searchable on a case insensitive basis including in customer/vendor lookups.  

Customer e-mail address lookup/search

But there is more. The ability to e-mail a pack slip or customer aging list (which is different from a statement) are both new features.    A new E-options button in the customer entry screen allows you specify how e-mails should be directed to a given customer.  You can of course still simply use the customer's primary/default e-mail address but you can now also specify whether a different e-mail address should be used for sending SO invoices, sales orders, pack slips, statements/aging and quotes.    For SO invoices (or POS tickets) you can also specify a default CC: address.  

Customer E-options screen

 And you can also specify whether e-mail should be the default output option (applicable to those options have an e-mail check box)  for any given customer.

Customer screen - new options (AR-A)

Unlimited contacts/e-mail addresses per customer and vendor remains fully available.

But there is yet more just with respect to e-mail.   The way that e-mail is processed in certain options (such as printing an invoice) has been enhanced and in a number of other options in terms of how/when it is sent. The underlying setup programs have been significantly enhanced as well as the technology used to actually send e-mails.  The setup has been enhanced to include the ability to test e-mail settings without having to log in using that person's credentials.   Employees now have a field for e-mail (which can be used when filing federal or state W-2's).  Contact e-mails when accessed from customer and vendor maintenance can now be copied even when in read only mode, and there is now a e-mail option to trigger and send e-mail after posting a POS (point-of-sale) ticket which then works in the same way as elsewhere.

New POS configuration options

And, a new e-mail export option is also available.

Finally there is a new and very powerful capability to batch e-mail customer statements.  Previously statements could only be e-mailed to a customer one at a time.  Now you can globally send statements and still also print statements for customers with no e-mail address that still want their statement to be printed and mailed.

AR statements new batch statements option (under AR-E)

The above e-mail enhancements only scratch the surface of what is included in Advanced Accounting 8.

For our long-time users that have run into some of the old sales order/invoice number, employee/salesperson, and checking account limitations, those are now gone.   For those users this will be a must have update.  For other users, know that you will never hit the prior 999,999 SO/invoice number limit.  For users that like to separate SO/Invoice number ranges by location or POS register, the new expanded limit of 999,999,999 offers unlimited new possibilities.  We have had users hit the 999 employee limit and that upper limit is now 99999.   Checking accounts have similarly been expanded from 99 to 999.  And all of the foregoing without any change to the existing data of current users.

The list of new features goes on.  Every time that a general ledger (GL) transaction is posted anywhere in the system, an audit record is now saved into a new data file which includes  the actual date and time of the transaction (tied to the assigned transaction number) with the posting date, the program ID that the transaction was saved in, the Adv logon code, the Windows computer name, user name and IP address, and even whether the transaction was made remotely using remote services (RDP); and there is now a powerful new report that can be used to analyze those audit records.  The audit report can also include the full GL transaction details within the report if desired.  This will be another must have feature for many users.

New GL-E-E transaction audit report

Adv 8 also incorporates the enhancements to the Change in Financial Position (Cash Flow) statement was discussed in a blog earlier this year.

There are powerful new sales tax reporting options and new sales reports.  The general ledger module workhorse options that print the detailed trial balance and journals have been modernized.  You can now import general journal entries.  There are new job costing options and capabilities.   Inventory items now have a floor price option.   Inventory transfers are again available for on-the-fly transfers during sales order entry, and you can even transfer one item to a completely different item (product code).  Sales orders now show the initial portion of any attached notes without having to click on the attached notes button, and include the optional auto complete option (see our prior blog on that topic).   Purchase order receiving has a completely new option that may also be invaluable for users and represent the sole reason for wanting to update.   Purchase order receiving reports can also be generated after receiving purchase orders from either the new (PO-D-A) or prior existing (now PO-D-B) option, a critical feature for some users.  Tthey can also be generated for inventoriable items after the fact.

The new PO-D-A option that has been in waiting since 2015

And then there are the new payroll (PR) options.  To accommodate some of the new options including provision for those needing PTO (paid or personal time off) tracking, we completely redesigned the employee payroll screen and added a number of new fields.    We have many users who use Advanced Accounting solely for its payroll module and so we continue to give the PR module the attention it deserves, and also for our many other users who also use the PR module as part of their overall accounting system, providing a complete solution.

The new PR-A enter employee information screen with many new fields and features

There is more.  See the release announcement for more information and contact us if you have any questions.

We are very excited about this new release, and all of the new features that we have planned for future updates!

Saturday, August 31, 2019

Running 16-bit Adv/TAS programs under newer 32-bit operating systems

By now, users of older versions of Advanced Accounting and TAS (5.1 and prior) are aware that they cannot run these legacy programs under 64-bit versions of various Windows operating systems absent setting up a virtual PC or running in an environment like vDOS.  The better solution for users needing to replace older PC's that need to continue to run 16-bit programs on a daily basis and in multi-user environments is to simply use a 32-bit version of the newer operating system.

Even Windows 10 is available as 32-bit (sometimes referred to as "Win32") but it does present new obstacles and setup considerations that weren't an issue with, for example, Windows 7.   Win32 versions have not been the default operating system included on newer PC's for quite some time, so if running a 16-bit application is a requirement, be very careful when planning the replacement of an older PC.

Some of our users have for reasons of performance and other issues elected to use newer versions of Btrieve (referred to under a variety of names including Pervasive, PSQL, Actian, and Actian Zen) with their 16-bit software which has been possible due to backward compatiblity these engines have offered.  Ironically however that newer record manager engine component has created issues when moving to different operating systems.

The 16-bit version of Btrieve that came standard with legacy Advanced Accounting and TAS as well as the DOS4G introduced in the version 5 series work without issues in 32-bit versions of the Windows 7, 8,  and 10 operating systems.  And the 16-bit Btrieve 5.x (which only coincidentally has a similar version and file format number as the Advanced Acccounting and TAS products) scales up fairly well for multi-user access and at no additional cost.  It isn't however client-server capable and can have limitations (although we've had users with upwards of 20 concurrent users utilize it, both back in the older 16-bit OS days but also currently using Windows 10).

Users however that were using the modern engines and then moved to Windows 7 and especially to Windows 8 and now 10 have encountered some new challenges.  They can however still be made to work (and even with Pervasive v9).

After moving to a newer operating system and installing Pervasive and making other setup changes, users have found that they may still be greeted with an error response such as:

Recently we've seen this happen with both Windows 7 and Windows 10 involving 16-bit accounting software users using Pervasive/PSQL engines.

The problem seems to be caused by Windows not fully recognizing established path environments when running 16-bit applications and DLL's are called.  This problem has become worse in Windows 8 and 10.

The solution for Windows 7 is to COPY the btrdrvr.sys and btrvdd.dll files from your Pervasive BIN folder to c:\windows\system32 folder on each PC.

In Windows 8 and 10, all of the DLL's in the Pervasive BIN folder need to be copied to c:\windows\system32.   In essence these newer operating systems can't find the DLL's they need to call even though they are sitting in an established path.

The Pervasive BIN folder in versions 9 was typically found at:


In newer Pervasive versions, they can be found instead at:

C:\Program Files\Pervasive Software\PSQL\bin

or somewhere similar.

Additional Windows 10 specific issues:

(1) Legacy options must be enabled and NTVDM made active. For an example see:

(2)  Enable CMD's legacy console (this is different than enabling NTVDM).  See for example:

Checklist for other issues involving 16-bit Adv/TAS programs running under 32-bit operating systems:

In addition to dealing with the Pervasive DLL issues, here are some additional items that need to be checked (some of which also apply to using the 16-bit version of Btrieve):

(1) The pvsw\bin or "PSQL"\bin folder must be in  the user's path (it probably already is).

(2)  The users PATH= can't be longer than 255 characters which is 16-bit program limitation - if it is (and on any given modern Windows PC it often is), it will prevent the application from running (on even XP Pro as well as Win 7 and above.).  So you may have to create an "ADV.BAT" unique for the user that explicitly setting the path, e.g.

PATH=c:\windows\system32; c:\pvsw\bin; 

along with any others that are needed/desired. You could then restore the path at the end of the batch file if necessary (probably not) and even create separate batch files per user if different users require different paths.   We discussed this issue in greater detail here:

This issue applies to all versions regardless of whether Pervasive is being used.

(3) Run NOTEPAD as administrator and retrieve: 


Change the default FILES=40 to:


and save.  This too applies to all situations involving 16-bit Adv/TAS applications including running under XP-Pro.

(4) If you are using Pervasive, also in c:\windows\system32\config.nt make sure that the line:


(or whatever the appropriate path is to the installed Pervasive engine - the above is a version 9 example)

has not been REMmed out or removed.  That's the line that gives Pervasive engine "DOS Box" support for older applications. Without that, programs using Pervasive won't run.

NOTE:  we've had a least one report that a Windows 10 update completely removed this DEVICE= line in CONFIG.NT thereby disabling the application from being able to run.  Users are advised to make CONFIG.BAK back-up copies or equivalent that can be easily restored.

(5)  To make NET USE statements for LPT ports, you'll need to run CMD as administrator in order to make them (and if the ADV.BAT is making any NET USE statements, then the icon's property would have to be set to "run as administrator").  The user must have some kind of LPT1 connection.  You can NET USE LPT1 to a USB connected printer as long as that printer can receive/output characters directly without a Windows printer dialog box (such as some monochrome laser printers, dot matrix printers, etc.)  To do that on a local PC, you would have to create a share to that printer on the local PC.  Or just NET USE to some other printer on the network as LPT1 even if the user won't be printing to it.  Note that the legacy versions require an LPT1 port of some kind in order to print.  Newer versions of course simply use whatever is installed in Windows and don't require any special printer setup.

If a printing delay issues occur, you may have to set:


to a value of 1 or 2.  For more information:

The foregoing applies to all 16-bit environments (but only those environments).

NOTE:  a big advantage in the using the modern Pervasive engines is that you do not have to run the program as administrator (which is also required when running the 32-bit legacy Btrieve 6.15 version with even the newer version of Advanced Accounting).

(6)  Because this is a legacy version, it needs to be drive mapped preferably the same way as on other PC's.  (Since UNC paths are not supported by 16-bit applications.)  This issue is unrelated to whether Pervasive is being used or not.

(7)  If you are using the Pervasive workgroup engine (WGE), it has to be configured to run as a service.  Newer versions of Pervasive normally automatically install this way.  Version 9 did not but a special utility can be run to make that WGE version run as a service. This issue does not apply to client-server installations. however, normally for client-server installations to work properly on newer versions of Windows, you need to be running at least on Pervasive v11 (true for all versions of Advanced Accounting or TAS whether 16-bit or 32-bit).

(8)  If you are using Pervasive (or newer named versions), neither the TSR BTRIEVE.EXE nor any Btrieve 6.15 32-bit legacy components (which shouldn't be the case because the 16-bit versions were not compatible with that particular engine) should be present in the application folder where tpc50.exe or the equivalent is launched.

More references:

Win 8.1:


Pervasive 7/2000 and 2000i issues:

Thursday, May 30, 2019

Next TAS Premier 7i release in progress

Even though we just published release 14 of the TAS Premier 7i series early last month, we've already almost added enough new features for a release 15.  Those changes are  now going into further testing and production and the documentation has already been updated.  While we normally don't publish more than one release each year, this year we are planning a second release by October.

Now that our supported xBase option is available as open source (and has been updated for other platforms) and also because we have been increasingly impressed by its performance, more features to support it have been indicated.  CodeBase files are dBase IV compatible and that driver, included with Windows, can be used to query them using SQL (and which is something that we have previously successfully tested with our own SQL query program). We have therefore added a CBDELETED() function which is able to return the total number of deleted records in the DBF format that we support (CodeBase).  This is important because the normal TRC() (total record count) function, unlike in a Btrieve/Pervasive/Actian ("Btrieve") file, includes deleted records, and so code that relies on that function could fail and/or work unexpectedly without a function that can be used to easily determine the actual number of "live" records in a DBF file.  That function has now been tested and implemented and is already in active use in a number of our projects.

Because the maintain database program uses the TRC() function to show active records, we have now been able to enhance it to show the number of deleted records in the event that a DBF or (*.C* file) is opened in that option.  This then allows the user to know what "net" active records are currently contained in the file, something that was not previously available.

Reindexing or "packing" the file can be used to permanently delete records in a DBF file. The DBF header record however is not decremented when a record is deleted. In order to determine the number of deleted records, the entire file does have to be internally scanned (which the CBDELETED() function automatically accomplishes based on the file handle passed to it) to determine the deleted record count. Use of this new function, therefore, involving DBF files with a large number of records has to be used with some level of care if used in an end user program. For this reason, in the maintain database enhancement, we make obtaining the deleted count an end user option rather than to automatically initiate it after the file is opened.

In the case of a Btrieve file, a deleted record takes up space but all of the fields are in essence blanked out (i.e. set to null values) and the active record count is maintained in the header record of the file.  So TRC() returns the active record count.  

In the course of adding the CBDELETED() function, we noticed that the OPEN_FILE_NAME() function was not returning the FILELOC path when a DBF file handle was passed to it, which it now does.  Previously it was only returning the data file name without any path.  When used with Btrieve files, it continues to return the fully qualified path.

And we also noticed that the GET_FILE_TYPE() function was internally being referenced as FILE_TYPE(), inconsistent with the documentation and the cmdtree.txt.  This has been fixed.

We have also reviewed and made minor updates to both the Btrieve and CodeBase reindex utilities which had not been previously reviewed since 2012, and have also updated the globally change utility to make it more intuitive with respect to changes made to it in release 14.

Also of significance, the EXEC_RB() function which loads the report designer has been enhanced so that developers can optionally pass an RTM name as a parameter.  This can include the full path, a relative path, or just the RTM name.   If a file name is passed, the RTM is then automatically loaded without the user having to take any other action to open it for review/editing.

As we continue to work with and test these latest changes, some additional changes may be added before release 15 is officially published later this year.

Friday, April 5, 2019

TAS Premier 7i release 14 published

Release 14, our 2019 release in the TAS Premier 7i series, is now available.

Addsum TAS Premier 7i r14 about screen

TAS Premier is a fully integrated 4GL programming language designed to work with either Btrieve (more modern versions referred to as Pervasive, PSQL, and/or Actian PSQL) data files or a highly performance optimized xBase derivative.  It includes program, screen and report editors plus data dictionary utilities, data maintenance options, and more.  More information.

The first release of TAS Premier 7i was in 2005.  Since then we have usually released an annual update related to cumulative improvements since the prior release.  This release then marks now some 14 years of 7i series updates.  TAS Premier 7i was in turn based on our 2004 release of TAS Professional 7, building on prior versions released by Business Tools, Inc. including TAS Professional 6 (first released in 2001).  Prior 16-bit versions of the TAS language evolved from Business Tools, Inc. products that date back to 1984.

Release 14 is primarily a maintenance update but includes some important updates and enhancements.

Some of the more notable changes:

The report designer has long had a DisplayFormat option (when right clicking on report objects, most notably numeric objects) which is primarily convenient for end user use (the report designer is a separate executable and can be called from within a licensed runtime).   This option is now available, particularly for numeric format changes; the available numeric and some other formatting options are also displayed and can be selected via the list box (see image below).  Simply click on the desired template (and optionally, manually edit it in the edit text box), click on OK, save the report layout, and then run the report program that uses it to see the results.

TAS Premier 7i r14 report designer

Display Format list box in TAS Premier 7i r14 report designer

The Encrypt File option now "remembers" the last file encrypted as well as the last encryption phase (in the same session and once they are entered the first time).  If the file is successfully encrypted, it no longer provides a "success" confirmation but instead the modal form immediately closes.  

TAS Premier 7i r14 Encrypt File

TP7EXECUTE.EXE has been enhanced and "Runtime" now has two options:  force and not forced.  "Not forced" works the same way as in the past; "forced" will force the runtime to run from the same directory specified and in essence overrides any registry settings (explanatory on-screen help also added);  also, the MRU list of recently chosen directories is now also available under a File menu option that wasn't previously visible, and will remember up to 16 prior entered paths.  For developers with multiple projects/folders, this program saves a significant amount of time, especially as it has now been enhanced.   

TP7EXECUTE.EXE included with TAS Premier 7i r14

The Globally Change utility (Change/Delete Records - called from Utilities then Import File/Globally Change) has been significantly enhanced and now includes record locking support (both when changing and deleting records) and the ability to specify keys and ranges (similar to Export File and Quick Report) allowing for vastly improved data maintenance performance.   Previously, regardless of the filter selected,  both the change/modify and delete options required a scan of the entire file. That is now no longer the case. Other screen enhancements have been made as well.

Other important changes/updates have also been made.

More information and download updates page (for users with a previously installed version)

New installation download (for new users/developers)

Thursday, March 28, 2019

Analyzing cash flows and payments in Advanced Accounting

 One of the financial statements that has long been available in the Advanced Accounting series including its predecessor versions is "Changes in Financial Position (Cash Flow)" sometimes referred to as "Sources and Uses of Cash" (or sometimes the word "Funds" instead of "Cash"), or simply as a Cash Flow Statement.

TAS-Books* 1987

TAS-Books* 1987 manual - Cash Flow Setup

Settings for the cash flow statement have typically followed the same approach as for the other two financial statements (balance sheet and income statement) but with with inclusion of an income/expense and non-cash expense range along with asset and liability sections.  When setting up a GL chart of account, the program has always had a "Non-Cash" flag, the sole use of which is in connection with the cash flow statement.  And this continues to be the case in all versions.

Books 2.0 and Advanced Accounting 3.0 looked and worked substantially the same as in TAS-Books* version, continuing with Advanced 4.0, 5.0 and 5.1. Graphical printing was added in version 6.0.  In 2010 in the 7i version, the suite of financial statements were "re-made" into a fuller graphical version with some additional new features.  The cash flow statement logic however remained basically the same through version 7i.  Starting with Adv 8 (2019 release) however it has been significantly changed.

Advanced Accounting 3.04 Cash Flow Setup

Advanced Accounting 5.1 Cash Flow Setup
While the Advanced Accounting cash flow statement option historically could be used to help predict cash flows and if run correctly could produce an accurate net cash change, it fell somewhat sort of performing as a true cash flow statement.  Using the so-called indirect method of preparing a cash flow statement is really sort of an upside down balance sheet with a twist:  it involves comparing a set of financial account values to some prior period (usually the immediately prior year, quarter, or month).   This was accomplished in past versions by a from to through month approach, and comparing the difference in the net balances in established ranges from the balances at the end of the from month to the end of the through month provided that the user did not "include beginning balances" but with no "proofing" of the change value computed to the actual increase/decrease in cash.

The idea of a cash flow statement is simply to show the increase or decrease of "cash" accounts (checking accounts, actual cash in a cash drawer or petty cash fund, money market accounts, merchant accounts, deposits in transit not yet delivered to the bank,  certificates of deposit, savings accounts and the like) from one period to the next.

The standard cash flow statement using the indirect method can also be thought of as a sort of a crude accrual to cash conversion starting with net income for a selected prior of time, making adjustments based on the differences in usually a prior balance sheet period, leading ultimately to a computed increase or decrease in cash relating to operating activities.

Cash flows from investing and financing activities are also normally identified in a cash flow statement.   This has not been the case with the Advanced Accounting software cash flow statement option, and we have elected to continue to combine those activities into the operating section for now since these are not normally materially significant activities for most of our users.

Since cash flow statements can be somewhat unintuitive to setup properly and confusing at times to read, we have taken steps to try to simplify the setup and to also make our own changes to the format which we think helps to better focus on understanding the increase/decrease in cash from one period to the next.  Further, now, the user cannot cause erroneous values to be computed if they choose "include beginning balances."  Instead, depending on that selection, the Adv 8 version produces either a "net balance" cash flow analysis as it has in the past (but with a new cash summary at the end with actual beginning and ending balances) or a "full balances" method that compares the difference in balances between two different time periods (the only complication with this approach is that an adjustment for the change in retained/current earnings between the two periods has to be made in order to accurately compute the cash change).

Advanced Accounting 8 Cash Flow Setup

Most users in fact would do well to simply always include in their balance sheet and income statements a "one year past" or similar comparison column with a third column that shows the dollar (and optionally percentage) differences.   Appropriately formatted side-by-side balance/income statements with a third "difference" column that Advanced Accounting has always provided are not only easy to read but include all of the information normally that a financial statement reader might require and if correctly formatted, clearly shows the increase or decrease in cash flows.   To some extent the cash flow statement then becomes largely redundant.

However in order to improve the current option, we have significantly redesigned how it works (but remaining in the same place as it always has been):

  • Income/loss is automatically calculated just like it is when printing a balance sheet and so the income/expense range in the setup option has been eliminated - this also solves issues relating to income/expense accounts not all having been establish in a contiguous range
  • A new "cash account" range in the setup has been added so that a full range analysis with or without detail can be provided at the end of the statement
  • Some additional on-screen help has been provided in the format setup to assist with establishing initial settings
  • When generating a cash flow statement, one of two entirely new report layouts are used that utilize different logic.   As in the past, the user can choose the from/through months and whether to include beginning balances (in older versions, that option should not be selected)
  • A new option allows the user to include detail or not.  Normally a cash flow statement is summarized and doesn't include the detail, so by default, "include account detail" is not checked but can be chosen for a higher level of analysis.  This is different than how the income/balance sheet options normally work (they always provide the detail).
  • Beginning and ending cash and other balances are provided in one of two different formats depending on whether the user is included balance forwards or not.  One of these is in a column presentation similar to how they would be viewed in a side-by-side balance sheet comparison which we believe makes them easier to understand.  The other includes not just beginning and ending balances but also the actual change in each account which can be displayed on a detail basis.
  • In the event the cash flow statement is out of balance (i.e. the net actual cash/increase differs from the cash account range) when choosing include beginning balances, the user is notified at the end of the report with some possible causes for the out of balance
  • We have intentionally, for now, limited the cash flow report to two years' worth of columns (plus a third different column if "Include Beginning Balance" is checked that is automatically generated without user interaction).  Income statements/balance sheets continue to be able to have any desired combinations of current to six year past amounts in up to four columns and the ability to specify a difference column.  In a future release we may provide an option for a 12 month column view/analysis for each of the three available financial statements.
Adv 8 GL-G Print Financial Statements - Cash Flow options

Adv 8 GL-G - new option for all statement types if  Edit Columns/Headers or add ending notes is checked

Adv 8 Cash Flow Statement report+ when "include beginning balance" is not checked:  net balances method

Adv 8 Cash Flow Statement report+ when "include beginning balance" is checked: new full balance method

Cash flows and payments can of course be analyzed in other ways.   Besides the obvious options in the general ledger detail for cash receipt and cash disbursement types by posting date or general account, customer payments can be analyzed both in the credit analysis report option as well as in the accounts receivable aging "as of date balance/transaction type history" where the output  can be limited to payments (and in the latest version, pay types can be further limited to one of six different types including checks, credit cards, cash, e-transfers, other and refunds).  Point-of-sale (POS) users of course have the additional POS report options that includes on specifically for payments and that can be narrowed down to not just date but also time and payment type.  On the vendor side, in addition to the accounts payable payment history option (which can include, exclude or only include electronic payments), the AP aging "as of date" option can be used to show only type "P" payments to determine the actual amounts paid to all or a given vendor for a desired date range.

*TAS-Books originated in the United States.  It was co-opted for use overseas and evolved into a completely separate product that was never officially licensed by the original publisher (Business Tools, Inc.).  TAS-Books was developed using the TAS-Plus (TAS+ 2.0) programming language also developed and published by Business Tools, Inc.  Later versions based on the TAS Professional 3.0 language were called Books and Advanced Accounting (which first included multi-location inventory tracking, among other things).   Since version 4.0, the accounting software has been referred to solely under the Advanced Accounting name/trademark but long-time users still sometimes refer to it as "Books."   The data files and program names going back to the TAS-Books version were consistently named starting with the letters "BK" (for example BKSOA.RUN for the sales order runtime program, BKARINV.M for the sales order header data file, later BKARINV.B) referencing the product's early beginnings as "Books."

+The data in the report samples is test data and not based on a real, balanced system, and is being shown solely to show what these reports look like with summarized data.  If the detail option was selected, then the individual account detail within each section would be displayed.

Wednesday, March 13, 2019

Btrieve status code 46

Your users may occasionally experience a Btrieve engine (which here includes the Pervasive and now Actian engines sometimes also referred to as PSQL) status code 46 which indicates that access to a given file ("table") is denied leading to the inability of the software to write to that file.   There are some straightforward reasons for this but also several that are non-intuitive.

A file that is marked as read only whether via user rights or because it was dragged/dropped from media that is read only is the most obvious cause, although usually isn't the cause.  Ensure that the user has both read/write rights (and since in some versions temporary files are created, the user needs delete rights to data folders as well).   Most commonly this happens when a new client PC is added to a network and the user's rights are insufficient.

File forced to be read only and the result when that file is attempted to be written to

Another issue could be an older formatted Btrieve file.  As users move forward to newer versions of the software and deploy newer Pervasive versions, some of their files may be in an older format that starting with Pervasive 9.x (now considered legacy since the latest version currently is v13 released in 2017), Btrieve 5.x and older files can be read but not written to until they are rebuilt (or "reindexed") into a newer format (6.x or above but 9.5 is the usual standard even with later releases).   A rebuild utility is provided with the Actian/Pervasive engines and is the best way to resolve.  Our reindex program, as originally developed by Business Tools, can globally identify the format level of a user's files in a given company.

Older format causing status code 46 format determined via a BUTIL -STAT

Another possibility is the use of an owner name where an incorrect owner name is passed when the file is open.   While the underlying programming language supports owner names, owner names are normally not used in Advanced Accounting programs, and so this cause can normally be ruled out.

A mixture of Btrieve 6.15 and Pervasive/PSQL engines can lead to a status code 46.   The two engines cannot be used to access the same data files simultaneously.    Different PSQL various normally can be used safely together although it is best that all PC's use the same version.

The most difficult situation involves outside applications or processes that may be scanning,  copying or indexing the data files. We previously made brief mention of status code 46 issues with respect to online or live database backups and these are the the most common cause.

This issue has been known for sometime now but can be very difficult to troubleshoot, and it can lead to significant loss of data should it strike.  Typically we have something like four or five support calls every year where the end user has lost data as a result of a status code 46 issue, whether observed as such or not.  

The peculiarity relates to how the Btrieve API reacts to a file that is being copied or scanned and when it then tries to open that file while no other instances of that file are open by anyone.   If the file that is being copied or scanned was already open by the Btrieve engine on some client/workstation prior to initiation of the copying or scanning, there is no issue.   But if no user has the file open, and the copy or scan begins, and then the file is opened through say the accounting sofware, the Btrieve/Pervasive engine opens the file in a read only mode, and  that is not easily detectable.  Only later when typically a record is attempted to be saved to that file will the 46 result and usually in the middle of a posting process.  The user at that point is able to click on OK and continue.  And continue.  And each time OK is pressed, a record in that file is effectively "lost."  And once this starts to happen, a domino effect occurs to other users who try to access the file and write to it, and the 46 status remains until all instances of the file are closed (even though the copying or scanning process may have long since completed).

It is larger files that take longer to copy or scan that are the most vulnerable, and these often are also some of the more important files.  If all files were all opened all of the time, this kind of status code 46 could never  happen (placing all files in continuous operations mode avoids the problem for backup purposes, but places a heavy overhead on a system).  Keeping all of the files open all of the time however is normally very inefficient and isn't what happens in a typical Advanced Accounting program.  Files instead that are needed in a given program option are instead opened at the beginning of that option and they are automatically closed when that individually selected program option ends (or can be closed earlier programmatically).  This normal internal structure combined wiht the behavior of the Btrieve API can, albeit under somewhat rare circumstances,  lead to situations where no files are opened by anyone and then suddenly an online backup or anti-virus scan of some kind starts just before a user than starts a program than opens that same file, and it if is a file that is later written to or deleted (such as in a posting program), status code 46's can result.

Anti-virus software has been suspected of triggering this issue.  Your data file folders should be excluded from real time anti-virus scanning (data files cannot become infected, and  this is something that is desirable in any event because it will improve performance).  In our experience, the 46's have always been tied to some sort of backup or copy operation that was in progress when a user then unknowingly selected a posting program that opened the same file that was being copied, with no prior instances of the file having been opened by a Btrieve engine.

For one user that was having a problem when copying data files off late in the afternoon to laptops and another that was having nighttime backups taking longer and longer and were still running in the early morning hours (including 5.1 versions in fact), we added some logic when records were being saved to detect this issue.  But that doesn't prevent the problem in the first place and further when it happens, the user can't usually easily resolve the problem on their own.  Therefore we have recently implemented some new logic where we test the most exposed/larger files that are going to be written to in advance to detect if the file is being copied or is being accessed in some manner from outside of the software (and if the copy started before the file was opened by any accounting software user).   We have implemented this newer logic in the SO-G posting program in the latest versions of Advanced Accounting, and will be adding it to others. 

Note that when posting sales orders on the fly, the AR invoice header file (BKARHINV) is already open in Advanced Accounting because it is needed to check for previously assigned invoice numbers.  So when that sales order is then posted right after printing or a print preview, a status code 46 would never result but rather only when posting sales orders in a batch (normally a good thing).  The general ledger transaction file (BKGLTRAN) in either case however would still be vulnerable and that is a file that we also "pre-check."

How can you avoid status code 46's in the situation as last discussed above? 

 (1) Exclude data files from being scanned in real-time.   As noted, it can actually be helpful to have other users utilizing the software keep certain files open during posting processes that can, counterintuitively, help with  this access denied status code (although they can create other problems by locking customer or inventory location records).

(2)  Use of continuous operations mode can also help to avoid the issue.  But most importantly, ensure that scheduled backups are taking place well outside of normal operation times and monitor them to ensure they don't start to creep into the early morning hours.

Note: if you are making a manual backup copy of a file on a system that is live and that is fairly large in size and will take more than a few seconds to copy, it is actually safest to first open that file (either in maintain database or in some program that you know opens it)  prior to making the copy.  Otherwise your file copy request, if the file is large enough, could cause a live user to experience a status code 46.