We were integrating PO Receipts with Shipment/Invoice type, non-inventoried items (without PO) and manual distributions into GP using eConnect. Things integrate flawlessly into the TEST company. However, once we integrate transactions into a LIVE company we saw some issues. At first impression, the imported transactions looked just fine. Transactions, line items and distributions all look accurate. Things got interesting the moment we run batch edit list. Payables accounts associated with each transactions are reverted back either to a blank account (which leads to "account not found" error) or to the default AP posting account.
We spent time reviewing/comparing setups and transaction data, rebuilding account index table, check links, reconcile, and remove historical transactions - essentially almost everything short of re-installing the company or eConnect. Spent a couple of hours on the phone with Support; they were as puzzled as we were.
After working with Support and debugging through GP Dexterity code, we found the issue. The issue is LIVE Company is registered with multicurrency, and we do not have any items under the item card. Even though we are integrating non-inventoried items, it causes the currencyID on the transaction to be set to blank. Apparently GP will check table IV00105 for the currencyID regardless of the type of line items integrated. And running the batch edit list (or opening the transaction and saving it without making any changes) triggers GP to recalculate the distributions since the currencyID is blank.
The workaround is to create a dummy item number in the inventory module even if we are not using it and then associate it to the functional currency. We didn't see these issues in the TEST Company since some item numbers were created in the beginning for testing which masked this issue. This is a corner case but you may still come across this too.