# ListOutboundShipments

## Overview

ListOutboundShipments lists OutboundShipment records and includes their OutboundShipmentLine rows.

## Business Rules

- Accepts optional filters for status, line sourceDocumentType, line sourceDocumentId, and effectiveDate range
- Results are ordered by createdAt descending
- Supports limit and offset pagination
- Returns hasNextPage when more records are available
- Returns an empty list when no records match

## Process Flow

```mermaid
flowchart TD
    A[Receive optional filters] --> B[Build OutboundShipment query]
    B --> C[Apply optional filters and pagination]
    C --> D[Load page of shipments]
    D --> E{Any shipments?}
    E -->|No| F[Return empty items]
    E -->|Yes| G[Load OutboundShipmentLine rows]
    G --> H[Group lines by shipment]
    H --> I[Return items and hasNextPage]
```

## External Dependencies

- None

## Error Scenarios

- Returns empty list if no matching records exist

## Test Cases

- lists outbound shipments with lines
- returns empty list when no matches
- filters by status and effective date range
- filters by line-level source references via a subquery
- paginates and reports the next page
