Quite a complicated AP invoice import you have here... It looks like quite a lot of conditional logic associated with InvoiceNo ... It is not clear to me whether or not the perform logic gets called for each variation of the InvoiceNo, but I will hazard a guess that it is. I will also guess that if the last InvoiceNo conditional is met AND and adjustment, that things might work for that particular invoice.
My testing shows that this perform logic also works, at least in my simple import job, as AFTER assign as well ... Likely this might be called after your conditional logic and as such only called once. Could have an impact on processing speed as well.
If you decide to give this a try, let me know how this works out...
Thanks, Randy