# Entity relationships

Marketplace core. Roles and permissions use the standard `spatie/laravel-permission` tables.

```mermaid
erDiagram
    users ||--o| supplier_profiles : has
    users ||--o| seller_profiles : has
    users ||--o{ business_documents : uploads
    users ||--o{ bank_accounts : owns
    users ||--o{ wallets : owns
    users ||--o{ products : "supplies (supplier_id)"
    users ||--o{ seller_products : "lists (seller_id)"
    users ||--o{ orders : "places (customer_id)"
    users ||--o{ marketplace_connections : connects

    product_categories ||--o{ products : groups
    products ||--o{ product_images : has
    products ||--o{ product_variants : has
    product_variants ||--o{ inventory_movements : logs
    products ||--o{ seller_products : "imported as"
    seller_products ||--o{ seller_product_variants : prices
    product_variants ||--o{ seller_product_variants : "linked to"
    seller_products ||--o{ product_sync_logs : logs

    orders ||--|| order_addresses : "ships to"
    orders ||--o{ supplier_orders : "splits into"
    orders ||--o{ order_items : contains
    orders ||--o{ order_status_histories : logs
    orders ||--o{ payment_transactions : "paid by"
    orders ||--o{ refunds : "refunded by"
    supplier_orders ||--o{ order_items : fulfils
    supplier_orders ||--o| shipments : "ships as"
    supplier_orders ||--o| refunds : "closed with"
    shipments ||--o{ shipment_tracking_events : logs
    order_items ||--o| commissions : earns

    wallets ||--o{ wallet_transactions : ledger
    wallets ||--o{ payout_requests : funds
    bank_accounts ||--o{ payout_requests : receives

    marketplace_connections ||--o{ marketplace_products : publishes
    seller_products ||--o{ marketplace_products : "published as"
    marketplace_connections ||--o{ marketplace_sync_logs : logs
```

`supplier_orders` is the spec's "supplier purchase order": the two proposed table groups described one concept, so there is one table.

Standalone: `commission_rules` (matched by scope and id), `audit_logs` (polymorphic).
