Skip to content

Orders & Parcels ​

Order processing in Basalam involves customer orders and vendor parcels (shipping packages).

Access via:

php
use Eamirgh\Basalam\Facades\Basalam;

$orders = Basalam::orders();
$parcels = Basalam::parcels();

1. List Customer Orders ​

Use OrderFilter for structured filtering and pagination:

php
use Eamirgh\Basalam\DTOs\OrderFilter;
use Eamirgh\Basalam\Facades\Basalam;

$filter = new OrderFilter(
    page: 1,
    perPage: 15,
    status: 'paid',
    sort: 'DESC'
);

$orders = Basalam::orders()->list($filter);

foreach ($orders as $order) {
    echo "Order #{$order->getId()} ({$order->getHashId()}): {$order->getPayableAmount()} Toman\n";
    echo "Status: {$order->getStatus()}\n";
    echo "Customer: {$order->getCustomer()?->getName()} ({$order->getCustomer()?->getMobile()})\n";
}

2. Get Single Order Details ​

php
$order = Basalam::orders()->get(orderId: 54321);

// Line items
foreach ($order->getItems() as $item) {
    echo "- {$item->getTitle()}: {$item->getQuantity()} x {$item->getPrice()} Toman\n";
}

// Shipping parcels
foreach ($order->getParcels() as $parcel) {
    echo "Parcel #{$parcel->getId()}: Status {$parcel->getStatus()}\n";
}

3. Order Items Search & Hints ​

Retrieve specific customer order items:

php
use Eamirgh\Basalam\DTOs\ItemFilter;

$items = Basalam::orders()->getItems(new ItemFilter(
    productId: 24018670,
    status: 'paid'
));

Get parcel packing hints:

php
$hints = Basalam::orders()->getParcelHints(orderId: 54321);

4. Vendor Parcels & Logistics ​

As a vendor, shipments are tracked in parcels.

List Vendor Parcels ​

php
use Eamirgh\Basalam\DTOs\OrderParcelFilter;

$parcels = Basalam::parcels()->list(new OrderParcelFilter(
    vendorId: 78910,
    status: 'ready_to_send'
));

foreach ($parcels as $parcel) {
    echo "Parcel #{$parcel->getId()} for Order #{$parcel->getOrderId()}\n";
}

Update Parcel Preparation Status ​

Mark that parcel packaging has begun:

php
Basalam::parcels()->setPreparation(parcelId: 98765);

Mark Parcel as Shipped with Postal Tracking Code ​

Once shipped via Iran Post or courier, register the tracking code:

php
Basalam::parcels()->setPosted(
    parcelId: 98765,
    trackingCode: '109876543210987654321098',
    carrier: 'پست پیشتاز'
);

Released under the MIT License.