Skip to content

Commit d5f6f0c

Browse files
committed
Update OrderSyncProductInput to properly handle quantity and ids
1 parent 9b49aa1 commit d5f6f0c

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

WooCommerce/Classes/ViewRelated/Orders/Order Creation/Synchronizer/LocalOrderSynchronizer.swift

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -124,30 +124,29 @@ private struct ProductInputTransformer {
124124
///
125125
private static func remove(input: OrderSyncProductInput, from order: Order) -> Order {
126126
var items = order.items
127-
items.removeAll { $0.itemID == input.id.hashValue }
127+
items.removeAll { $0.itemID == input.id }
128128
return order.copy(items: items)
129129
}
130130

131131
/// Creates and order item by using the `input.id` as the `item.itemID`.
132132
///
133133
private static func createOrderItem(using input: OrderSyncProductInput) -> OrderItem {
134-
let quantity = Decimal(input.quantity)
135134
let parameters: OrderItemParameters = {
136135
switch input.product {
137136
case .product(let product):
138137
let price = Decimal(string: product.price) ?? .zero
139-
return OrderItemParameters(quantity: quantity, price: price, productID: product.productID, variationID: nil)
138+
return OrderItemParameters(quantity: input.quantity, price: price, productID: product.productID, variationID: nil)
140139
case .variation(let variation):
141140
let price = Decimal(string: variation.price) ?? .zero
142-
return OrderItemParameters(quantity: quantity, price: price, productID: variation.productID, variationID: variation.productVariationID)
141+
return OrderItemParameters(quantity: input.quantity, price: price, productID: variation.productID, variationID: variation.productVariationID)
143142
}
144143
}()
145144

146-
return OrderItem(itemID: Int64(input.id.hashValue),
145+
return OrderItem(itemID: input.id,
147146
name: "",
148147
productID: parameters.productID,
149148
variationID: parameters.variationID ?? 0,
150-
quantity: quantity,
149+
quantity: parameters.quantity,
151150
price: parameters.price as NSDecimalNumber,
152151
sku: nil,
153152
subtotal: parameters.subtotal,

WooCommerce/Classes/ViewRelated/Orders/Order Creation/Synchronizer/OrderSynchronizer.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ struct OrderSyncProductInput {
1919
case product(Product)
2020
case variation(ProductVariation)
2121
}
22-
let id = UUID().uuidString
22+
var id: Int64 = Int64(UUID().uuidString.hashValue)
2323
let product: ProductType
24-
let quantity: Int
24+
let quantity: Decimal
2525
}
2626

2727
/// Addresses input for an `OrderSynchronizer` type.

0 commit comments

Comments
 (0)