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 sales / RS-26-038

RS-26-038

Retail sale · Herbs & Health PJ · 2026-07-03
Unpaid — due 17 Jul Partially paid — outstanding Paid — 07 Jul B2B — own e-invoice
Print receipt / DO
Customer
Herbs & Health PJ · Petaling Jaya
Channel
both B2B e-invoice
Sold by / date
2026-07-03 by Kevin Wong
Entity / series
NVMSB (RS-{yy}-{seq} — separate from OEM SO series)
Payment terms
14 days credit — no COD
Due date
2026-07-17 in 10 days
Total
793.20 MYR
e-Invoice path
Individual → QBO not in July consolidation

Lines

2 lines · FEFO-picked from FG at 11, Balakong Jaya
# Product Qty Unit price Line total Lot shipped (FEFO)
1 Yes Global AlphaMax V+ / 2024-04 End Product 60 pcs 10.50 MYR band 9.80–11.00 · floor 9.50 630.00 MYR AMX-2604-01 ×60
2 Sunrise / 2023-02 End Product 24 pcs 6.80 MYR band 6.50–7.20 · floor 6.00 163.20 MYR SNR-2602-11 ×24
Subtotal 793.20 MYR
Total 793.20 MYR 60×10.50 + 24×6.80

Payment

Unpaid Partially paid Paid
  1. Sold on 14-day terms

    03 Jul · by Kevin Wong · invoice copy sent with DO

  2. Reminder — auto 10 Jul

    WhatsApp nudge queues automatically if still unpaid at day 7

    cancelled — paid before day 7

Record payment

Writes a retail_sale_payments row; partial amounts leave the sale Partially paid. Operational flag only — accounting stays in QuickBooks.

Delivery

same shipment engine as OEM
RD-26-056 Lalamove Failed — 04 Jul office closed · goods held in Van/Transit custody bin
RD-26-060 Own van Scheduled — today 07 Jul redelivery of RD-26-056 · stop 3 on today's run · Petaling Jaya
COD
n/a — credit terms, driver collects nothing
Stock custody
Van / Transit until POD — no silent restock

Lots left FG when the shipment was packed (retail_sale movement, FEFO). A failed attempt keeps the batch split intact — the redelivery re-uses the same picked cartons.

e-Invoice

Pending Exported ✓ QBO stays the accounting system — Gaia never talks to MyInvois directly
B2B flagged — this sale exports individually to QuickBooks → MyInvois and is excluded from the July consolidation (which covers the other open B2C sales: 1,337.40 MYR).
Exported 07 Jul — QBO invoice created, awaiting MyInvois validation · by Kevin Wong

status → Exported ✓ once QBO confirms

Project Gaia — static mockup in Filament v3 idiom. No backend. Retail module; customer data shared with OEM underneath (channel-flagged), screens separated. RS-26-038 is the July B2B exception: everything else this month rolls into one consolidated e-invoice.

Retail sale detail — field manifest

FieldFilament componentTypeSourceFK target
PageRetailSaleResource ViewRecord + Infolistdocstored: retail_sales (customer_id, sold_by, sold_at, payment_terms_days, due_date, b2b_einvoice bool, entity/series) — RS- numbering, separate from OEM SO seriescustomers / users
LinesLinesRelationManagerrowsstored: retail_sale_lines (variant_id, qty, unit_price, line_total); band/floor sub-line derived live from sale history + variant_prices (SHARED with OEM)variants / variant_prices
Lot chipsBadge per batch split, derivedderivedread from the shipment's retail_sale stock movements (FEFO batch splits) — NOT stored on the line; links into batch tracestock_movements / batches
PaymentsPaymentsRelationManager + Actionchild rowsstored: retail_sale_payments (amount, method cash/transfer, reference, received_at); payment_status derived: unpaid → partially paid → paid; due_date = sold_at + termsretail_sales
DeliveryInfolist section, linked rowsFK rowsretail_deliveries for this sale incl. failed + redelivery chain (redelivery_of_id); COD fields empty on credit-term salesretail_deliveries
e-InvoiceBadge + Actionenum + boolb2b_einvoice=true ROUTES e-invoicing: sale exports individually to QBO/MyInvois and is excluded from consolidation_runs; B2C sales instead reference the month's runconsolidation_runs

Engine notes

  • Shared-data doctrine: ONE customers table (channel enum oem / retail / both) and ONE variant_prices table — data shared, views scoped. What separates Retail from Sell: screens, numbering series (RS- vs SO-), CRM shape (book vs pipeline), e-invoicing path (consolidated vs per-order).
  • The lot chips prove trace continuity: a retail sale spends FG batches through the same stock-movement ledger as OEM shipments, so a recall query (batch → who got it) covers kedai sales too.
  • Record payment is an operational flag + child row, not accounting — QuickBooks remains the ledger of record; the B2B export carries the same total (793.20).
  • channel=both customers (like Herbs & Health PJ) keep ONE history across Retail and Sell screens; flipping this sale to per-order e-invoice does not move the customer out of the retail book.