feat(125): invoice_requested import fix + drop legacy is_invoice column
- shopPRO: ShopproOrderMapper jako jedyne zrodlo heurystyki detekcji faktury; mapOrderAggregate() zwraca top-level invoice_detected (transient). - ShopproOrdersSyncService: usunieta wlasna shouldRequestInvoice(); propagacja aggregate['invoice_detected'] do setInvoiceRequested() tylko przy created=true. - Allegro: nowa shouldRequestInvoice(payload) z 4 wzorcami (invoice.required, naturalPerson=false, address.taxId, companyName/address.company.name). Wczesniej tylko invoice.required -> analogiczna luka jak shopPRO. - Migracja 20260513_000113: idempotentny backfill (UPDATE invoice_requested=1 WHERE is_invoice=1 AND invoice_requested=0) + DROP COLUMN orders.is_invoice. Guard przez information_schema.COLUMNS + PREPARE/EXECUTE z ALTER TABLE COMMENT no-op fallbackiem (portable MySQL/MariaDB). - Cleanup is_invoice z OrderImportRepository (INSERT cols/values/params, docstring Phase 112) i OrdersRepository (paginate SELECT, transformOrderRow hydrate). AllegroOrderImportService mapping w mapCheckoutFormPayload tez usuniety (wymuszone konsekwencja DROP COLUMN). - Bugfix #1089: zamowienie shopPRO z firm_nip (bez wants_invoice/invoice.required) ustawia teraz invoice_requested=1 -> UI w zakladce Platnosci zaznacza checkbox, przycisk "Wystaw fakture" widoczny. Pending operator: php bin/migrate.php (XAMPP MySQL online) -> backfill 7 zamowien. Smoke test: re-import shopPRO + nowe Allegro z NIP.
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
-- Phase 125-01: backfill invoice_requested z is_invoice + DROP COLUMN is_invoice
|
||||
-- Idempotentna: guard przez information_schema.COLUMNS; no-op po pierwszym uruchomieniu.
|
||||
-- Pattern z Key Decision 2026-05-10: migracje no-op zawsze jako DDL (ALTER TABLE COMMENT),
|
||||
-- nigdy SELECT 1; (PDO unbuffered + result set -> SQLSTATE 2014).
|
||||
|
||||
SET @col_exists := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'orders'
|
||||
AND COLUMN_NAME = 'is_invoice'
|
||||
);
|
||||
|
||||
SET @sql_backfill := IF(@col_exists > 0,
|
||||
'UPDATE orders SET invoice_requested = 1 WHERE is_invoice = 1 AND invoice_requested = 0',
|
||||
'ALTER TABLE orders COMMENT = ''phase-125 backfill no-op'''
|
||||
);
|
||||
PREPARE stmt_backfill FROM @sql_backfill;
|
||||
EXECUTE stmt_backfill;
|
||||
DEALLOCATE PREPARE stmt_backfill;
|
||||
|
||||
SET @sql_drop := IF(@col_exists > 0,
|
||||
'ALTER TABLE orders DROP COLUMN is_invoice',
|
||||
'ALTER TABLE orders COMMENT = ''phase-125 drop no-op'''
|
||||
);
|
||||
PREPARE stmt_drop FROM @sql_drop;
|
||||
EXECUTE stmt_drop;
|
||||
DEALLOCATE PREPARE stmt_drop;
|
||||
Reference in New Issue
Block a user