I notice from the xTuple source that you insert the poitem_itemsite_id column into the poitem table.
When I was testing changing the item for an existing poitem; I received an error saying
SQL Error [P0001]: ERROR: You may not change the item site for a line item.
Where: PL/pgSQL function _poitemtrigger() line 156 at RAISE
So I went back to check your update statement and noticed that you DO NOT update the poitem_itemsite_id column.
Why do you insert but not update?
Is this column obsolete?