FRO-241 · VAT Exclude Item

design canvas fixture data only
This canvas shows the look only — it is not the contract. The contract is the FRO-241 description in Linear. Every colour, radius, control height and class here is copied from frontline-forwarding-client/src/styles/theme.css and the real components/ui/*.tsx. Sample values come from docs/reference/demo-data.md — no real client, vessel, invoice or MRN appears on this page.
New component — does not exist in the client today 1 a business rule decided in the grill — see the notes panel under each board teal = interactive / active (never “success”)

A · VAT Exemption list

The tab an operator lives in. Patterned on purchase-orders/index.tsx + purchase-order-table.tsx: sticky bg-surface-2 header, 11px uppercase column labels, mono IDs and dates, StatusPill with a mandatory dot and text, selection toolbar on check.

SecuredΑσφαλές / VAT exemptionΑπαλλαγή ΦΠΑ Frontline onlyΜόνο Frontline8

VAT exemptionΑπαλλαγή ΦΠΑ

Supplier invoices passing through a vessel's VAT-exemption process.Τιμολόγια προμηθευτών που περνούν από τη διαδικασία απαλλαγής ΦΠΑ πλοίου.

Cancelled hidden by defaultΤα ακυρωμένα κρυφά εξ ορισμού4
2 selectedεπιλεγμένα
ID6 Invoice #Αρ. τιμολογίου6 ClientΕταιρεία πελάτη Invoice vesselΠλοίο τιμολογίου SupplierΕταιρεία προμηθευτή MRN AWBNew field10 NetΚαθαρή VATΦΠΑ StatusΚατάσταση Stock IDStock ID1
VAT-000118 INV-4471 Demo Client Company MV Aegean Star Aegean Marine Supplies 25GR0000FAKE0001 020-11111116 4.820,00 1.156,80 Under processΣε εξέλιξη PO-DEMO-STOCK-A
VAT-000117 INV-4468 Demo Client Company MV Frontline Trader Demo Supplier Company 25GR0000FAKE0002 020-11111120 1.240,50 297,72 PendingΣε εκκρεμότητα PO-DEMO-STOCK-B
VAT-000116 INV-4460 Oceanic Shipping Company MV Oceanic Dawn Global Parts Logistics 25GR0000FAKE0003 020-11111134 9.075,00 2.178,00 ExemptedΑπαλλαγμένο PO-DEMO-HUB
VAT-000115 INV-4455 Demo Commercial Client Company MV Demo Horizon Aegean Marine Supplies 612,00 PendingΣε εκκρεμότητα PO-DEMO-LATE
VAT-000114 INV-4450 Oceanic Shipping Company MV Oceanic Spirit Global Parts Logistics 3.300,00 792,00 CancelledΑκυρωμένο PO-DEMO-MIX-A
LifecycleΚύκλος ζωής Pending Under process Exempted · Cancelled 4

Business notes — board A

  1. 1
    Stock ID is mandatory and is always a real link to exactly one Order. Every VAT Exclude Item can be opened from its Order and the Order can show all of its VAT items. An Order may have several VAT items, but no VAT item can be saved without an Order. ADR-0001 · required FK to freight_purchase_order
  2. 4
    Cancelled rows stay in the list but drop out of everything else. They are hidden by the default filter, cannot be selected for printing, and their checkbox is disabled. Nothing is ever deleted, so a cancelled exemption can still be found and read. grill decision · mirrors freight_delivery_note CANCELLED
  3. 6
    Two different numbers, and staff use both. ID (VAT-000118) is generated by the portal and identifies the VAT item. Stock ID identifies its required Order. The supplier's Invoice # remains mandatory as printed on the physical invoice. grill decision
  4. 8
    Only Frontline staff see this tab at all. Clients and suppliers have no access, the same way shipments and delivery notes work today. Three new permissions are needed: view, create, edit. docs/architecture/authorization.md
  5. 10
    AWB does not exist in the system yet. It is the waybill number an order is imported with, or a shipment exported with — one shared field. It has to be added to the order and to the shipment first; until then this column has nothing to show. two follow-up tickets · grep of database.md found no awb column
  6. 11
    Printing follows the six templates already attached to FRO-241. Which options accept several selected rows and which need exactly one is defined by those templates, not by this ticket. deliberately left to the templates

B · New VAT exemption — direction 1: tabs

Copies the production order form exactly: one rounded-lg border bg-surface p-5 shadow-card card, a TabList across the top, a group heading per block, and a grid gap-4 md:grid-cols-2 lg:grid-cols-3 field grid.

VAT exemptionΑπαλλαγή ΦΠΑ / NewΝέα

New VAT exemptionΝέα απαλλαγή ΦΠΑ

One supplier invoice passing through a vessel's exemption process.Ένα τιμολόγιο προμηθευτή στη διαδικασία απαλλαγής πλοίου.

Parties and statusΕμπλεκόμενα μέρη και κατάσταση

* Required fieldsΥποχρεωτικά πεδία2

Required Stock IDΥποχρεωτικό Stock ID * · PO-DEMO-STOCK-A · locked after creation · copied values will not follow later Order changes κλειδώνει μετά τη δημιουργία · οι αντιγραμμένες τιμές δεν ακολουθούν μελλοντικές αλλαγές New3
PartiesΕμπλεκόμενα μέρη

Copied from the selected Order; read-only.Αντιγράφεται από την επιλεγμένη εντολή· μόνο για ανάγνωση.5

Copied from the Order; VAT creation is blocked if it is missing.Αντιγράφεται από την εντολή· η δημιουργία μπλοκάρεται αν λείπει.

Under process comes from a submitted Protocol Row; Exempted may be corrected back to Under process.Το Σε εξέλιξη προκύπτει από υποβλημένη σειρά πρωτοκόλλου· το Απαλλαγμένο μπορεί να διορθωθεί πίσω σε Σε εξέλιξη.4

VesselsΠλοία

The vessel as written on the supplier's invoice.Το πλοίο όπως γράφεται στο τιμολόγιο του προμηθευτή.

Where the goods actually went. May differ.Όπου πήγαν τελικά τα εμπορεύματα. Μπορεί να διαφέρει.5

Order contextΠλαίσιο εντολής
Not KTA — goes through VAT exemptionΌχι KTA — περνά από απαλλαγή ΦΠΑ 7

Read-only. Shown so you know why this invoice is here.Μόνο ανάγνωση. Εμφανίζεται για να ξέρετε γιατί είναι εδώ.

Trade-off. Identical to the order form, so an operator who knows one knows the other, and the form scales if fields get added later. Against it: a VAT exemption has roughly a third of an order's fields, so tabs hide three or four fields behind a click that would have fitted on one screen — and the two money fields end up on a different tab from the invoice number they belong to.

C · New VAT exemption — direction 2: one scroll, grouped

Same card, same primitives, same group headings — no tabs. Every field of the record is visible in one pass, which is how the office actually fills it: from one piece of paper.

VAT exemptionΑπαλλαγή ΦΠΑ / NewΝέα

New VAT exemptionΝέα απαλλαγή ΦΠΑ

VAT-000119 · assigned on saveαποδίδεται στην αποθήκευση

OverviewΕπισκόπηση

* Required — Stock ID and invoice numberΥποχρεωτικά — Stock ID και αρ. τιμολογίου2

Stock IDStock ID * · PO-DEMO-STOCK-A · required, linked permanently and locked after saveυποχρεωτικό, μόνιμα συνδεδεμένο και κλειδωμένο μετά την αποθήκευση 3
PartiesΕμπλεκόμενα μέρη

Copied from the selected Order; read-only.Αντιγράφεται από την επιλεγμένη εντολή· μόνο για ανάγνωση.

Copied from the Order; creation is blocked when missing.Αντιγράφεται από την εντολή· η δημιουργία μπλοκάρεται όταν λείπει.

InvoiceΤιμολόγιο

As printed on the supplier's invoice.Όπως αναγράφεται στο τιμολόγιο του προμηθευτή.6

“No VAT” greys out the VAT amount and prints “—”.Το «No VAT» απενεργοποιεί το ποσό ΦΠΑ και τυπώνει «—».

One currency for the whole invoice.Ένα νόμισμα για όλο το τιμολόγιο.9

Currency follows the field above.Το νόμισμα ακολουθεί το πεδίο πάνω.

Ignored when the type is “No VAT”.Αγνοείται όταν ο τύπος είναι «No VAT».

Customs & protocolΤελωνείο & πρωτόκολλο

Copied when the AWB field exists on the Order.Αντιγράφεται όταν το πεδίο AWB υπάρχει στην εντολή.10

Derived from the submitted Protocol Row.Προκύπτει από την υποβλημένη σειρά πρωτοκόλλου.

FilesΑρχεία
supplier-invoice-4471.pdf INVOICE from the orderαπό την εντολή 3
packing-list-4471.pdf DOCUMENT
needs the INVOICE attachment kind to exist firstαπαιτεί να υπάρχει πρώτα το είδος INVOICE

Trade-off. Nothing is hidden: the operator sees the whole record at once and can fill it straight off the supplier's invoice, top to bottom, with the money fields next to the invoice number they belong to. Against it: it breaks step with the order form, and it is one long scroll on a laptop — if this record grows the way the order did, it will eventually need the tabs anyway.

Business notes — boards B and C

  1. 2
    Stock ID and Invoice number are required to save. Selecting the Order supplies the Client and Supplier automatically. The VAT item cannot be created if the Order has no Supplier; MRN, protocol and delivery details may still arrive later. grill decision
  2. 3
    The Order link is permanent; copied values are a snapshot. One Order may have several VAT items. The Stock ID cannot change after save, later Order edits do not rewrite the VAT item, and a later Order split does not move it to the new Order. There is deliberately no “re-sync” action. ADR-0001 · same pattern as freight_delivery_note
  3. 4
    Protocol membership controls the lifecycle. Pending → Under process occurs only through a submitted Protocol Row. An operator with edit rights may move Exempted back to Under process as a correction; returning to Pending happens only when the Protocol Row is cancelled. ADR-0004 · ticket lifecycle
  4. 5
    Both vessel fields only show ships owned by the copied Client. Invoice vessel is what the supplier wrote; Delivered vessel is where the goods actually went, and they may differ. database.md · vessel.company_id NOT NULL
  5. 7
    KTA is shown, never acted on. It already exists on the order and means the goods arrive without VAT. It is displayed read-only so the operator understands why this invoice is in front of them; it blocks nothing and triggers nothing. database.md · freight_purchase_order.kta · FRO-256
  6. 9
    One currency for the whole invoice. Chosen once and applied to both the net and the VAT amount, because a single supplier invoice is never in two currencies. The production order table stores a currency per amount; this record deliberately does not. grill decision · differs from freight_purchase_order
  7. 10
    AWB must be added to the Order. The Shipment already stores the same concept as its transport document number, so this VAT field waits only for the Order-side field in FRO-310. FRO-310 · database.md

D · Required Stock ID — the Order picker

Every VAT item starts by selecting exactly one Order. The searchable picker includes every non-cancelled Order regardless of lifecycle stage and shows the fields needed to avoid a wrong match.

Select required Stock IDΕπιλογή υποχρεωτικού Stock ID

Pick the Order this physical supplier invoice belongs to. Client and Supplier become read-only snapshots.Επιλέξτε την εντολή στην οποία ανήκει το φυσικό τιμολόγιο. Πελάτης και Προμηθευτής γίνονται στιγμιότυπα μόνο για ανάγνωση.

New
Stock IDStock ID ClientΠελάτης VesselΠλοίο SupplierΠρομηθευτής MRN StatusΚατάσταση KTA
PO-DEMO-STOCK-ADemo Client CompanyMV Aegean StarAegean Marine Supplies25GR0000FAKE0001In stockNo
PO-DEMO-STOCK-BDemo Client CompanyMV Frontline TraderDemo Supplier Company25GR0000FAKE0002ReadyNo
PO-DEMO-LATEDemo Commercial Client CompanyMV Demo HorizonAegean Marine SuppliesArrived at destinationNo
PO-DEMO-MIX-AOceanic Shipping CompanyMV Oceanic DawnGlobal Parts Logistics25GR0000FAKE0003ShippedNo
Will link Stock ID permanently; Client and Supplier are read-only snapshots. Vessel, MRN, AWB and INVOICE files are copied once.Το Stock ID συνδέεται μόνιμα· Πελάτης και Προμηθευτής είναι στιγμιότυπα μόνο για ανάγνωση. Πλοίο, MRN, AWB και αρχεία INVOICE αντιγράφονται μία φορά. 3

Selection rules. Every non-cancelled Order is searchable because a physical invoice may arrive late, including after the operational journey has completed. An Order without a Supplier is visible but cannot be selected; the operator is directed to complete the Supplier on the Order first.

E · Everything on these boards that does not exist yet

Checked against client/src/components/ui/ (21 primitives), client/src/app/config/routes.ts and docs/reference/database.md.

PartStatus todayWhat is needed
The whole entityNo table, no route, no permission, nowhere in the clientNew table, new /secured/vat-exemptions route, three new permissions
Sidebar item “VAT exemption”routes.ts has 6 entries, none for VATOne route + one nav item — the Sidebar component itself is reused as is
Required Stock-ID pickerΥποχρεωτικός επιλογέας Stock IDModal exists; this content does notNew: searchable Order table, status and KTA columns, cancelled exclusion, and missing-Supplier validation
Permanent Order linkΜόνιμη σύνδεση εντολήςNothing shows an immutable source link anywhere in the clientNew: required link, bidirectional navigation, and a warning that snapshots will not follow later Order changes
Money + currency pairΖεύγος ποσού + νομίσματοςSelect and Input exist separatelyA composition, not a new primitive — one currency drives both amounts
AWB fieldNo awb column on the Order; Shipment already has the same concept as transport_document_numberAdded to the Order by FRO-310; this ticket's AWB prefill is blocked until it lands
INVOICE attachment kindKinds are DOCUMENT and PHOTO onlyA precondition the dev creates before this ticket starts — not specified here
VAT status tonesStatusPill has 11 tones; none mapped to these four statesA mapping only: neutral / warning / success / danger. Dot plus text stays mandatory