| name | load-lifecycle-patterns |
| description | Document the critical business logic for load lifecycle and billing workflows in laneweaverTMS. Use when implementing load status transitions, billing workflows, financial calculations, TONU handling, or quick pay features. |
Load Lifecycle Patterns - Business Logic for laneweaverTMS
When to Use This Skill
Use when:
- Implementing load status transitions
- Building billing workflow logic (POD, carrier bills, invoicing)
- Calculating financial metrics (gross profit, margin, net profit)
- Handling load cancellations and TONU scenarios
- Implementing quick pay features for carriers
- Understanding the "life of load" flow from tender to payment
Load Status Transitions
Status Lifecycle
uncovered → assigned → dispatched → at_origin → in_transit → at_destination → delivered
Valid Transitions Table
| Current Status | Valid Next Status | Trigger |
|---|---|---|
uncovered |
assigned, cancelled |
Carrier assignment or cancellation |
assigned |
dispatched, uncovered, cancelled |
Dispatch confirmation or carrier bounce |
dispatched |
at_origin, assigned, cancelled |
Carrier arrives or dispatch cancelled |
at_origin |
in_transit, cancelled |
Pickup completed, load departs |
in_transit |
at_destination, cancelled |
Approaching delivery destination |
at_destination |
delivered, cancelled |
Delivery completed |
delivered |
(terminal state) | No further transitions |
cancelled |
(terminal state) | No further transitions |
Transition Triggers
uncovered → assigned
- Carrier is selected and rate is confirmed
carrier_idis set on the loadcarrier_rateis established
assigned → dispatched
- Carrier confirms pickup commitment
- Driver information may be captured in
load_cognition - Dispatch confirmation timestamp recorded
dispatched → at_origin
- Carrier/driver arrives at pickup facility
- Check-in time recorded on origin stop
at_origin → in_transit
- Loading completed
- Departure time recorded on origin stop
- BOL (Bill of Lading) may be captured
in_transit → at_destination
- Carrier approaching delivery facility
- Optional: ETA updates via tracking
at_destination → delivered
- Delivery completed
- Delivery time recorded on destination stop
- POD (Proof of Delivery) capture begins
Cancellation Rules
Cancellation can happen from ANY non-terminal status:
- Creates a
load_cancellationsrecord - Sets
loads.is_cancelled = true(synced via trigger) - Records cancellation reason and timestamp
- If carrier was assigned, may trigger TONU (see below)
-- Example cancellation logic
INSERT INTO load_cancellations (load_id, reason, cancelled_by)
VALUES ($1, $2, $3);
-- Trigger auto-syncs is_cancelled flag:
UPDATE loads SET is_cancelled = true WHERE id = $1;
Billing Workflow
Post-Delivery Billing Flow
delivered → POD Received → Carrier Bill Received → Invoice Ready → Customer Invoiced → Carrier Paid
Billing Status Tracking
The load_billing table tracks billing milestones for each load:
| Field | Purpose |
|---|---|
pod_received |
Proof of Delivery document received |
pod_received_at |
Timestamp when POD was received |
carrier_bill_received |
Carrier's invoice/rate confirmation received |
carrier_bill_received_at |
Timestamp when carrier bill was received |
invoice_ready |
Generated column: pod_received AND carrier_bill_received |
Invoice Ready Logic
A load is ready for customer invoicing when BOTH:
- POD is received (proof that delivery occurred)
- Carrier bill is received (final carrier charges confirmed)
-- Generated column auto-calculates invoice readiness
invoice_ready BOOLEAN GENERATED ALWAYS AS (pod_received AND carrier_bill_received) STORED
Customer Invoice Creation
After invoice_ready = true:
- Create
customer_invoicesrecord - Link to load via
load_id - Include line items for:
- Base freight rate (
customer_rate) - Customer accessorials
- Fuel surcharges (if applicable)
- Base freight rate (
- Set
invoice_statusto initial state
Carrier Bill Approval and Payment
After carrier bill is received:
- Review carrier charges against agreed rate
- Add carrier accessorials if applicable
- Approve or dispute discrepancies
- Schedule payment based on payment terms
- Handle quick pay if requested (see Quick Pay section)
Financial Calculations
Core Formulas
grossProfit = customerRate - carrierRate
grossMarginPct = (grossProfit / customerRate) * 100
netProfit = (customerRate + customerAccessorials) - (carrierRate + carrierAccessorials)
Calculation Examples
Basic Load:
Customer Rate: $2,500
Carrier Rate: $2,000
Gross Profit: $500
Gross Margin: 20%
Load with Accessorials:
Customer Rate: $2,500
Customer Accessorials: $150 (detention, lumper)
Carrier Rate: $2,000
Carrier Accessorials: $100 (detention)
Revenue: $2,650 ($2,500 + $150)
Cost: $2,100 ($2,000 + $100)
Net Profit: $550
Net Margin: 20.75%
Implementation Pattern
-- View for financial calculations
CREATE OR REPLACE VIEW public.loads_with_financials
WITH (security_invoker = on)
AS
SELECT
l.id,
l.load_number,
l.customer_rate,
l.carrier_rate,
-- Gross profit (base rates only)
(l.customer_rate - COALESCE(l.carrier_rate, 0)) AS gross_profit,
-- Gross margin percentage
CASE
WHEN l.customer_rate > 0
THEN ((l.customer_rate - COALESCE(l.carrier_rate, 0)) / l.customer_rate * 100)
ELSE 0
END AS gross_margin_pct,
-- Accessorial totals
(SELECT COALESCE(SUM(amount), 0)
FROM customer_accessorials
WHERE load_id = l.id AND deleted_at IS NULL) AS customer_accessorials_total,
(SELECT COALESCE(SUM(amount), 0)
FROM carrier_accessorials
WHERE load_id = l.id AND deleted_at IS NULL) AS carrier_accessorials_total,
-- Net profit (including accessorials)
((l.customer_rate + (SELECT COALESCE(SUM(amount), 0) FROM customer_accessorials WHERE load_id = l.id AND deleted_at IS NULL)) -
(COALESCE(l.carrier_rate, 0) + (SELECT COALESCE(SUM(amount), 0) FROM carrier_accessorials WHERE load_id = l.id AND deleted_at IS NULL))) AS net_profit
FROM public.loads l
WHERE l.deleted_at IS NULL;
TONU (Truck Ordered Not Used)
What is TONU?
TONU occurs when a load is cancelled after a carrier has been assigned and has committed resources (dispatched driver, positioned truck, etc.).
When TONU Applies
TONU may be charged when:
- Load is cancelled after carrier assignment (
assignedor later status) - Cancellation is NOT due to carrier fault
- Carrier has incurred costs (deadhead miles, driver time)
TONU Workflow
- Load Cancelled - User initiates cancellation after carrier assignment
- TONU Evaluation - Determine if TONU is warranted
- TONU Amount Set - Negotiate or apply standard TONU rate
- Record Created -
load_cancellationsrecord includes TONU details - Customer Billing - TONU amount billed to customer
- Carrier Payment - TONU amount paid to carrier (minus margin if applicable)
Data Model
-- load_cancellations table captures TONU
CREATE TABLE public.load_cancellations (
id UUID DEFAULT gen_random_uuid() NOT NULL,
load_id UUID NOT NULL,
reason TEXT,
tonu_amount NUMERIC(10,2), -- Amount charged for TONU
cancelled_at TIMESTAMPTZ DEFAULT now() NOT NULL,
cancelled_by INT4,
-- ... audit columns
);
Business Rules
- TONU is typically a flat fee (e.g., $250-$500)
- May be a percentage of the agreed carrier rate
- Should be documented in carrier agreements
- Customer may dispute TONU charges
- TONU still triggers customer invoice (for the TONU amount)
Quick Pay
What is Quick Pay?
Quick Pay is an accelerated payment option where carriers receive payment faster than standard terms (typically net 30) in exchange for a fee.
Quick Pay Terms
| Standard Terms | Quick Pay Terms | Typical Fee |
|---|---|---|
| Net 30 | 1-2 days | 1-2% of payment |
| Net 45 | 1-2 days | 2-3% of payment |
Data Model
-- carrier_bills table tracks quick pay requests
CREATE TABLE public.carrier_bills (
id UUID DEFAULT gen_random_uuid() NOT NULL,
load_id UUID NOT NULL,
carrier_id UUID NOT NULL,
bill_amount NUMERIC(10,2) NOT NULL,
bill_status public.carrier_bill_status NOT NULL,
-- Quick pay fields
quick_pay_requested BOOLEAN DEFAULT false,
quick_pay_fee_pct NUMERIC(5,2), -- e.g., 2.00 for 2%
quick_pay_fee_amount NUMERIC(10,2),
scheduled_payment_date DATE,
paid_at TIMESTAMPTZ,
-- ... audit columns
);
Quick Pay Workflow
- Carrier Requests Quick Pay - Sets
quick_pay_requested = true - Fee Calculation - Calculate quick pay fee
- Net Payment - Deduct fee from carrier payment
- Expedited Processing - Move to front of payment queue
- Payment Execution - Pay within quick pay terms
Fee Calculation
Quick Pay Fee = Bill Amount * Quick Pay Fee Percentage
Net Payment = Bill Amount - Quick Pay Fee
Example:
Bill Amount: $2,000
Quick Pay Fee %: 2%
Quick Pay Fee: $40
Net Payment: $1,960
Implementation Notes
- Index
quick_pay_requested = truefor efficient filtering - Track quick pay fee as revenue (margin improvement)
- Quick pay is optional and carrier-initiated
- Consider automated quick pay for preferred carriers
Related Tables Reference
Core Load Tables
| Table | Purpose |
|---|---|
loads |
Core load record with status, rates |
tenders |
Customer tender/order source |
stops |
Pickup and delivery locations |
load_billing |
POD/carrier bill tracking, invoice ready |
Cancellation & TONU
| Table | Purpose |
|---|---|
load_cancellations |
Cancellation records with TONU amounts |
Invoicing & Payment
| Table | Purpose |
|---|---|
customer_invoices |
Customer invoices for loads |
carrier_bills |
Carrier bills/invoices to pay |
customer_accessorials |
Additional customer charges |
carrier_accessorials |
Additional carrier charges |
Business Logic Checklist
Load Status Management:
[ ] Validate status transitions against allowed transitions table
[ ] Record status change timestamps
[ ] Sync is_cancelled flag via trigger when load_cancellations inserted
[ ] Prevent invalid transitions (e.g., uncovered → delivered)
Billing Workflow:
[ ] Track POD receipt separately from carrier bill receipt
[ ] Use generated column for invoice_ready calculation
[ ] Create customer invoice only when invoice_ready = true
[ ] Link all billing records to load_id
Financial Calculations:
[ ] Always use NUMERIC(10,2) for money fields
[ ] Include accessorials in net profit calculations
[ ] Handle null carrier_rate (uncovered loads)
[ ] Calculate margin percentages safely (avoid division by zero)
TONU Handling:
[ ] Only apply TONU after carrier assignment
[ ] Record TONU amount in load_cancellations
[ ] Bill TONU to customer
[ ] Pay TONU to carrier (if applicable)
Quick Pay:
[ ] Carrier-initiated request only
[ ] Calculate fee based on agreed percentage
[ ] Deduct fee from carrier payment
[ ] Track as revenue/margin improvement
Remember: This skill focuses on business logic patterns. For database schema implementation details (columns, indexes, constraints), refer to the laneweaver-database-design skill.