The dodavatele modal is now an exact mirror of the customers modal (minus the PDF field-order picker): Nazev+ARES, Ulice, Mesto+PSC, Zeme, ICO+ARES, DIC, and the same "Vlastni pole" editor (maxWidth md). Two migrations on sklad_suppliers: - structured street/city/postal_code/country replace the free-text address blob (best-effort split: street / PSC regex / city) - custom_fields LONGTEXT replaces contact_person/email/phone/notes; existing values are preserved as labeled custom fields The encode/decode of the custom_fields blob is shared with customers via the new utils/custom-fields.ts. The PO PDF supplier block renders the structured address + custom-field lines like the customer block; the supplier picker/detail selects and types follow. Legacy clients sending the dropped keys are silently stripped (tested). Suppliers list shows Ulice/Mesto instead of the dropped contact columns; search covers name/ico/city. BREAKING CHANGE: sklad_suppliers.address, contact_person, email, phone, notes columns dropped (data migrated); deploy must run prisma migrate deploy + generate. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
44 lines
1.8 KiB
SQL
44 lines
1.8 KiB
SQL
-- Suppliers become a full mirror of the customers model: dedicated
|
|
-- contact_person/email/phone/notes columns are replaced by the same
|
|
-- custom_fields JSON blob customers use ({"fields":[{name,value,showLabel}],
|
|
-- "field_order":[]}). Existing contact data is preserved as custom fields.
|
|
|
|
-- AlterTable: add the custom_fields blob
|
|
ALTER TABLE `sklad_suppliers` ADD COLUMN `custom_fields` LONGTEXT NULL AFTER `country`;
|
|
|
|
-- Seed an empty container for rows that carry any contact data
|
|
UPDATE `sklad_suppliers`
|
|
SET `custom_fields` = JSON_OBJECT('fields', JSON_ARRAY(), 'field_order', JSON_ARRAY())
|
|
WHERE COALESCE(`contact_person`, '') <> ''
|
|
OR COALESCE(`email`, '') <> ''
|
|
OR COALESCE(`phone`, '') <> ''
|
|
OR COALESCE(`notes`, '') <> '';
|
|
|
|
-- Preserve data: each legacy column becomes one labeled custom field
|
|
UPDATE `sklad_suppliers`
|
|
SET `custom_fields` = JSON_ARRAY_APPEND(`custom_fields`, '$.fields',
|
|
JSON_OBJECT('name', 'Kontaktní osoba', 'value', `contact_person`, 'showLabel', TRUE))
|
|
WHERE COALESCE(`contact_person`, '') <> '';
|
|
|
|
UPDATE `sklad_suppliers`
|
|
SET `custom_fields` = JSON_ARRAY_APPEND(`custom_fields`, '$.fields',
|
|
JSON_OBJECT('name', 'E-mail', 'value', `email`, 'showLabel', TRUE))
|
|
WHERE COALESCE(`email`, '') <> '';
|
|
|
|
UPDATE `sklad_suppliers`
|
|
SET `custom_fields` = JSON_ARRAY_APPEND(`custom_fields`, '$.fields',
|
|
JSON_OBJECT('name', 'Telefon', 'value', `phone`, 'showLabel', TRUE))
|
|
WHERE COALESCE(`phone`, '') <> '';
|
|
|
|
UPDATE `sklad_suppliers`
|
|
SET `custom_fields` = JSON_ARRAY_APPEND(`custom_fields`, '$.fields',
|
|
JSON_OBJECT('name', 'Poznámky', 'value', `notes`, 'showLabel', TRUE))
|
|
WHERE COALESCE(`notes`, '') <> '';
|
|
|
|
-- AlterTable: drop the dedicated columns
|
|
ALTER TABLE `sklad_suppliers`
|
|
DROP COLUMN `contact_person`,
|
|
DROP COLUMN `email`,
|
|
DROP COLUMN `phone`,
|
|
DROP COLUMN `notes`;
|