Live profit ledger
Per-line selling and buying prices with real-time profit and margin on every line and every document, across the entire quote-to-cash chain.
Bilingual (EN/AR), VAT-ready ERP for Saudi metal traders — the full quote-to-cash cycle on a live profit ledger, evolved into a multi-company platform with per-tenant data isolation, numbering, and access control.
Metal Flow runs the full commercial cycle of a metal-trading company on one transparent, profit-aware ledger: a deal starts as a quotation, is approved into a sales order, fulfilled through partial delivery notes, and sourced via purchase orders — while payments, a cash/bank ledger, and petty cash keep the money side reconciled. Every printable document is a branded, bilingual, VAT-compliant PDF.
Metal FlowMetal traders typically juggle quotations, orders, deliveries, supplier POs, and cash across spreadsheets and disconnected tools — with no live view of profit per line or outstanding balances, and no bilingual, VAT-ready paperwork. Metal Flow replaces that with a single system that keeps the quote-to-cash chain linked and auditable end-to-end, computes profit and margin per line and per document in real time, and tracks every receipt, payment, bank transfer, and petty-cash movement against the documents that generated it. Built for Saudi operations: every screen and document is bilingual English/Arabic with full RTL support, 15% VAT is first-class, and invoices render the grand total in words.
Per-line selling and buying prices with real-time profit and margin on every line and every document, across the entire quote-to-cash chain.
Every label, field, and document is English/Arabic. A reusable bilingual field component offers inline machine translation, and the layout direction flips with the chosen locale.
Quotations, sales orders, delivery notes, and purchase orders render as branded A4 print/PDF views with per-company letterhead bands and "grand total in words".
Multiple delivery notes per sales order with per-line reconciliation. Orders stay editable after delivery, but a delivered line can never be reduced below what shipped or removed.
All balances derive from a single transactions table, so cash, bank, and per-account views never drift. Funds transfers are linked leg pairs; petty cash tracks per-employee floats with overdraw guards.
Company profiles with isolated data, per-tenant numbering and branding, color-coded profile chips in listings, and per-user profile access — cross-profile record access safely returns a 404.
Retrofit multi-tenancy onto a live production system without downtime or data loss.
A global Eloquent scope transparently filters every read on the twelve per-profile models while a companion trait auto-stamps the active profile on insert. An additive, backfilling migration added the profile key everywhere and re-pointed uniqueness to composite (profile, number) keys.
Sales orders must stay editable after partial delivery without corrupting delivery-note links.
Edits reconcile line items by id — update, insert, delete — instead of delete-and-recreate, so downstream delivery-note links are never orphaned.
Shared PHP hosting with no Node runtime or build step.
Server-driven UI with Livewire + Volt single-file components, hand-authored CSS with cache-busting, and additive live-data migrations run over a token-guarded maintenance route — no CLI required on the host.
Brute-force login attempts on an internet-facing business system.
Escalating per-email+IP throttling: a handful of free attempts, then exponentially growing lockouts capped at one hour, with counters reset on success — so brute force can't be sustained by waiting out a fixed window.
The platform was later evolved from a single-company app into a true multi-tenant system — with no downtime and no data loss. A single deployment now hosts several independent businesses, each with isolated data, its own document numbering (two tenants can both have an SO-0001), and its own branding, with per-user control over which businesses each user may access.
Drop us a message or call us directly. We reply to every enquiry — usually the same day.