Skip to content

Commit 18d83c0

Browse files
committed
Populate items for shipments
1 parent cb2e10f commit 18d83c0

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

WooCommerce/Classes/ViewModels/Order Details/OrderDetailsDataSource.swift

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1705,13 +1705,18 @@ extension OrderDetailsDataSource {
17051705
struct Shipment {
17061706
let index: String
17071707
let shippingLabel: ShippingLabel?
1708+
let items: [ShippingLabelPackageItem]
17081709
}
17091710

17101711
func populateShipments(labels: [ShippingLabel], shipments: WooShippingShipments) {
1712+
let itemsDataSource = DefaultWooShippingItemsDataSource(order: order)
1713+
let packageItems = itemsDataSource.items
17111714
var contents = [Shipment]()
17121715

17131716
for key in shipments.keys.sorted(by: { $0.localizedStandardCompare($1) == .orderedAscending }) {
1714-
1717+
guard let shipmentItems = shipments[key] else {
1718+
continue
1719+
}
17151720
let label: ShippingLabel? = {
17161721
let purchasedLabels = labels.filter {
17171722
$0.shipmentID == key && $0.status == .purchased
@@ -1724,7 +1729,19 @@ extension OrderDetailsDataSource {
17241729
}
17251730
}()
17261731

1727-
let shipment = Shipment(index: key, shippingLabel: label)
1732+
var shipmentContents: [ShippingLabelPackageItem] = []
1733+
for shipmentItem in shipmentItems {
1734+
guard let packageItem = packageItems.first(where: { $0.orderItemID == shipmentItem.id }),
1735+
let subItems = shipmentItem.subItems else {
1736+
continue
1737+
}
1738+
1739+
let quantity = subItems.count > 0 ? subItems.count : 1
1740+
let updatedItem = ShippingLabelPackageItem(copy: packageItem, quantity: Decimal(quantity))
1741+
shipmentContents.append(updatedItem)
1742+
}
1743+
1744+
let shipment = Shipment(index: key, shippingLabel: label, items: shipmentContents)
17281745
contents.append(shipment)
17291746
}
17301747
self.wooShippingShipments = contents

WooCommerce/Classes/ViewModels/Order Details/OrderDetailsViewModel.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ extension OrderDetailsViewModel {
280280
dataSource.isEligibleForShippingLabelCreation = isEligible
281281
}
282282

283-
taskGroup.addTask { [weak self] in
283+
taskGroup.addTask { @MainActor [weak self] in
284284
guard let self else { return }
285285
// Sync shipping labels and update order with the result if available
286286
let syncResult = await syncShippingLabels()

0 commit comments

Comments
 (0)