QuickBooks has set restrictions on which transactions can or cannot be modified. This is done via the ClosingDate
field within the Preferences table.
If you update a transaction with a transaction date before the closing date in Method, an error will occur as well as a sync conflict. This is even more problematic if you are updating a number of transactions in batch.
In order to do safely perform a batch update of multiple transactions:
Retrieve the
ClosingDate
field from the Preferences table.Only update the transaction if its
TxnDate
field is greater than the closing date, or the closing date is empty.
Batch update of invoices example
In the below image, a number of invoices in a grid will be selected with a checkbox column.
A button (not shown) will be used to update the selected records. Within the click event of that button, recreate the following actions.
1. Show Message action: First confirm the user wishes to update the invoices.
2. Retrieve Values From Table action: Retrieve the closing date field and put it into an action result.
Table: Preferences
Where:
RecordID
=1
Field to retrieve:
ClosingDate
Placed into action result:
resultClosingDate
4. Loop Through Grid action: In this example, we only want to update the invoices which are selected in the grid.
5. Conditional Statement action: Make sure this action is embedded within the Loop Through Grid action. Note that we want either of the two conditions to be true before updating the record.
Make sure first dropdown is changed from
All
toAny
.resultClosingDate
is emptyTxnDate
greater thanresultClosingDate
. Note that the TxnDate is a field from the Loop.
From here, make sure any changes you wish to make to the transaction is embedded within the above conditional statement. Also make sure you are updating the record within the loop.
Your action list should look similar to this:
Note: This is just one way to do this. The point of this document is to highlight the need to pull the |