Items like vouchers may have no GTIN at all. Previously, the placeholder
product was only created when there were missing GTINs, causing a NOT NULL
constraint violation for items with gtin=None.
Now we also check for items without GTIN and create a placeholder for them.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>