G Gaia

Switch factory

CYTO-11 — Balakong Jaya CTSB CYTO-29 CTSB CYTOWELL-54 — Taming Jaya PIC/S CTWSB CYTOCNGZ-602 — Guangzhou CTCNGZ

Only factories you are granted appear here (Filament tenant menu).

Leo Lim

leo@navi.my · Owner / Admin

Profile settings Change password

Theme

Sign out
RetailSellR&DMakeBuyStockPlanItemsGMPAdminInsights
← Retail shipments / RD-26-060
Delivered ✓ — POD recorded. The sale's payment follow-up (due 17 Jul) continues on RS-26-038.

RD-26-060

Retail delivery · Herbs & Health PJ · redelivery of RD-26-056
Own van Scheduled — today 07 Jul In delivery Delivered — 07 Jul Failed stop 3 on today's run
Sale
RS-26-038 · 793.20 MYR
Customer
Herbs & Health PJ both · B2B e-invoice
Area
Petaling Jaya
Method
Own van — driver Azman · van CYTO-11
Scheduled
2026-07-07 · stop 3 (route_seq)
COD
— n/a · credit 14d, due 17 Jul
Stock custody
Van / Transit until POD
Redelivery of
RD-26-056 Lalamove · Failed 04 Jul — office closed

Package lines

2 lines · sealed cartons for RS-26-038
# Product Qty Lot shipped (FEFO)
1 Yes Global AlphaMax V+ / 2024-04 End Product 60 pcs AMX-2604-01 ×60
2 Sunrise / 2023-02 End Product 24 pcs SNR-2602-11 ×24
Packed value 793.20 MYR
Same picked cartons as the failed attempt — the FEFO batch split posted on 03 Jul is reused, batch trace intact (GMP).

Event log

shipment_events · same log as OEM shipments

Project Gaia — static mockup in Filament v3 idiom. No backend. Retail module; the shipments engine, stock movements and batch trace are shared with OEM (channel-flagged). RD-26-060 is the redelivery of the failed RD-26-056 for sale RS-26-038.

Retail delivery detail — field manifest

FieldFilament componentTypeSourceFK target
PageShipmentResource ViewRecord + Infolistdocstored: shipments.code (RD-{yy}-{seq} series) — SAME shipments table as OEM, channel=retail scopes this view; RD- vs SHP-
SaleTextEntry::url()FKstored: shipments.retail_sale_id (OEM rows use sales_order_id — one engine, two doc FKs)retail_sales.id
MethodBadgeenumstored: shipments.method — own_van / lalamove / grab / pickup / courier (J&T etc); courier rows still set carrier_id + tracking_nocarriers.id
StatusBadge + Action "Advance" / "Mark failed"enumScheduled → In delivery → Delivered / Failed; every change appends shipment_events (status, at, by, note) — same event log as OEMshipment_events
CODTextColumn + Badge; Action "Mark collected"decimal + boolstored: shipments.cod_amount, .cod_collected, .cod_collected_at — empty on this credit-term sale; collecting COD settles the retail sale as Cash → counter cash-float logretail_sales.id
DatesTextEntry::date()datestored: shipments.scheduled_date, .delivered_at, .route_seq (today's van-route ordering)
Redelivery ofTextEntry::url()self-FKstored: shipments.redelivery_of_id — links this row back to the failed RD-26-056; the failed attempt kept the batch split, this row re-uses the same cartonsshipments.id
Event logRelationManager timelinechild rowsstored: shipment_events (status, at, by, note) — newest first; POD text captured on Deliveredshipments.id

Engine notes

  • Stock movement is IDENTICAL to an OEM shipment: confirming a delivery posts a shipment movement with FEFO batch pick — FG stock and batch-trace don't know channels exist.
  • Failed delivery: goods stay in the Van/Transit custody bin (no silent restock); a redelivery row is created with redelivery_of_id linking back (here RD-26-056 → RD-26-060). Stock returns to FG only via an explicit un-pick.
  • COD collection settles the sale as Cash → posts to the counter cash-float log; this row carries no COD (B2B credit, invoice 14d). Courier COD stays "pending" until remit confirmed.
  • Shared-data doctrine: customers is ONE table (channel enum oem/retail/both) and the shipments engine, stock movements and batches are shared. What separates: screens, numbering series (RD-/RS- vs SHP-/SO-), CRM shape, e-invoicing path.