# RFQ/EOI — UI and Modules

Goal: Provide a clear, efficient internal UI for procurement and a vendor portal for submissions. Interfaces are delivered via modules (not ui_modals) and follow Tailwind and DaisyUI.

Internal RFQs Module
- Header controls
  - New RFQ or EOI button (opens wizard)
  - Filters: status, due range, type, category, department
  - Search: rfq_number, title, vendor name
- Tabs
  - Overview: table of RFQs with columns rfq_number, type, title, status badge, due date chip, invited, responded, actions (Publish, Pause or Resume, Close, Award, Archive)
  - Build (wizard steps)
    1) Details: type, numbering preview, title, category, department, currency, incoterms, due_at, publish_at, summary; template picker with preview
    2) Items: inline editable table with description, qty, uom, optional flag; CSV import; item attachments
    3) Sections: preview and edit instantiated sections; toggle include in email or print; order by drag
    4) Vendors: shortlist builder using capability filters and lifecycle status; pick primary contacts; show counts and validity checks
    5) Review and Publish: summary cards; select distribution channels; confirm publish and send invitations
  - Invitations: table rfq_invites with statuses (invited, delivered, opened, responded, declined); row actions Resend, Remind, Copy portal link; bulk Remind pending
  - Responses: list vendor quotes; open quote detail (header and items) with attachments and notes
  - Compare: matrix items as rows and vendors as columns; unit price, extended, taxes, lead time, compliance; highlight best values; export CSV and PDF
  - Timeline: audit events with actor, time, and payload summary

Vendor Portal (login required)
- My RFQs list: rfq_number, type, title, due date, status, submission status
- RFQ detail: sections and attachments; Q and A; addenda acknowledgments
- Submit quote: per-item pricing table, alternates, notes, attachments; quote-level terms, delivery days, validity date; save draft or submit; revise until due
- Decline to quote: reason capture; status updated

Compare Matrix Details
- Totals row per vendor and per item; option to include taxes
- Sorting by best unit price or by lead time
- Optional scoring weights surfaced (e.g., price 70 percent, lead time 30 percent)
- Sticky headers and responsive layout

Accessibility and UX
- Keyboard navigation for editable tables
- Confirmation modals for publish, close, award, and destructive actions
- Clear empty states and helper texts

Config Surface
- RFQs module configuration stored in modules table as JSON config
- Links to manage templates, vendor directory, and procurement settings

