RE: How to Void a voucher with $0 value?
Another option would be to use the remove history tool on the transaction. You would need to manually reverse the Journal entry in GL.
when using the remove history tool it is highly important to try it in a test company first and to make sure you have a full backup before using the tool in live (I have seen several times where all PM data was lost when using this tool because a range was not set correctly).
***NOTE*** Please try the following steps in a test company first
Set up a test company that has a copy of live company data by using SQL Server 7.0, SQL Server 2000, SQL Server 2005, SQL Server 2008, or SQL Server 2012
support.microsoft.com/.../871973
1) BACKUP your company DB.
2) To get to the remove history tool (after a backup, I recommend not even opening this window unless everyone is out of the system and you have a backup of the company DB) go to Tools>Utilities>Purchasing>Remove Transaction History.
3) First time through unmark the Two remove options.
4) Enter whatever ranges will be needed (vendor and voucher number for example).
5) Click process.
6) With the output report verify only the needed voucher number is removed.
7) Repeat step 2-5 again but this time leave the remove options marked.
8) Reverse the original journal entry with a GL general entry.
This method does not need SQL at all except for the backup. Also note What Mahmoud said is correct, and to elaborate PM was not designed to function with 0 dollar invoices and by default there is no way to void these documents. For this reason we do not recommend using PM to enter these types of transactions, GL would be a much better fit in most cases when you are just moving funds around however I can see why you are using it this way since it makes it very easy to reference on the vendor.
Joshua