No description
VendorContact model - New VendorContact table (name, role, mobile, email, isPrimary) with cascade delete from Vendor - Old single contactName/Mobile/Email fields removed from Vendor model - Migration: 20260514191638_vendor_contacts Vendor form - ContactsEditor: dynamic list of contact rows — add, remove, mark primary - Each contact row: name, role, mobile, email, primary checkbox - Serialised as contacts[i].field form fields; existing single-contact section removed Vendor actions - parseContacts() reads indexed contacts from FormData - createVendor creates VendorContact rows in a nested write - updateVendor deletes all contacts then re-creates them in a transaction Vendor list page - Contact column shows primary contact name + email; "+N more" badge Vendor detail page - Two-column layout: Vendor Details card + Contacts card - Contacts displayed with avatar initials, role badge, primary badge - VendorItemsTable client component: inline search (name, code, description), tabular layout with links to item detail Inventory items page (/inventory/items) - Rebuilt as a searchable table (ItemsTable client component) - Columns: Item name/description, Code, Vendor count, Lowest price - Click any row to inline-expand vendor sub-rows for that item - Vendor sub-rows: vendor name, verified badge, price, distance (if site selected), + Cart button with "Added ✓" feedback - Sort toggle (Distance / Price) shown in toolbar when a row is open Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| App/pelagia-portal | ||
| GstService | ||
| .gitignore | ||