One of my customers reported an issue this morning, they cannot apply a payment to its vendor invoice, the got the message shown below:
Well, my fast "stupid!" answer to this was "Go to batch recovery and recover your batch from there", but when I thought about it, it couldn't be un-posted if it was here to be applied!
My next advise -following the book!- was to check-links and reconcile the vendor transactions, but again non of them resolved the issue, so I did further investigations and went through the database, the transactions that couldn't be applied posted by one user, and exists in both PM10000 and PM20000 which made me confused, as the posted transactions should only be in PM20000 and should not exist in PM10000.
It seems the issue with that user is sudden corruption for GP Dictionaries or lose in the connectivity between the client and the server, or it could be a spam that generates huge amount of requests that affects the pockets sent to the server or bla bla bla, it could be thousands.
The transactions will not be applied while it exists in the both tables, so it has to be deleted from the open transactions table "PM10000", with the following SQL Query:
DELETE FROM PM10000 WHERE VCHNUMWK = '07000000000003964'
Replace the text in RED with the voucher number you have, you could modify the query to delete all the transactions that exist in the PM20000 and PM10000, but it's for sure not safe.
If you been in this issue, you need to make sure that you following the following rules to get your system fixed:
1. Fix current transactions by running the above Query on all transaction that has the issue.
2. Do not post any transactions from the infected PC until fixing its problem.
3. Reinstall GP on that PC.
4. Validate that his PC is not infected with any spam's or viruses.
5. Make sure that the PC is properly connected to the network with no timeout returns in-between.
6. After finalizing all steps above, perform check-links on the database and reconcile your vendors to correct other affects for the changes you did.