Hi AngusMaynard
I sort of get the gist of what you are doing but not fully.
I understand the reasoning and think I can answer your query when I have further info.
I have a client who has web carts just like you - but these are purpose built and MYOB is fully integrated upwards and back to these webcarts.
The live MYOB file runs a perpetual inventory and the site sells only what is available.
The biggest problem we faced as you have is MYOB does not allow negative inventory - so you essentially have to run either perpetual as you do or actual - but occassionally the MYOB internal file (which supplies other branches) uses what was supposed to be in stock and MYOB spits it back (insufficient quantity) - at present this errors but some new code by me will capture this strip off the 5% waste we apply try again (and 85% go through) if not send it through as an Order.
However we upload last purchase price (which is an average anyway) from which a sale price is calculated in the web.
As the MYOB is a perpetual inventory system - a sale correctly journals a CoS entry in the background.
Your explanation sort of misses a few things in the middle - does the WooCooCommerce site send through a sales invoice or a journal - can you elaborate - the only way to get a CoS journal on a sales invoice is if you have an inventory item that you purchase and sell.
So I am a little unclear as to your question to be able to give a good answer.
The Doc