Skip to content

Commit 41e67d2

Browse files
[7.x] Fix use_shipping_address_for_billing option when using Database Orders (#1213)
* Fix to setting Order use_shipping_address_for_billing in eloquent This appears to happen before the casts() method and if the value property on the html element hydrating this is set to anything other than "true" this was setting this to bool false. IIRC the default for HTML checkbox inputs is the string "on" if checked and "off" if not. * Add failing test * Keep the `== 'true'` check * Also, value should be true when value is "on" --------- Co-authored-by: Duncan McClean <duncan@duncanmcclean.com>
1 parent aa9c702 commit 41e67d2

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

src/Orders/EloquentOrderRepository.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ public function save($order): void
171171
$model->billing_region = $order->get('billing_region');
172172
$model->billing_country = $order->get('billing_country');
173173

174-
$model->use_shipping_address_for_billing = $order->get('use_shipping_address_for_billing') == 'true';
174+
$model->use_shipping_address_for_billing = $order->get('use_shipping_address_for_billing') == 'true' || $order->get('use_shipping_address_for_billing') == 'on';
175175

176176
// If anything in the order data has it's own column, save it
177177
// there, rather than in the data column.

tests/Orders/EloquentOrderRepositoryTest.php

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,32 @@
349349
]);
350350
});
351351

352+
it('can save use_shipping_address_for_billing column', function () {
353+
$orderRecord = OrderModel::create();
354+
$order = Order::find($orderRecord->id);
355+
356+
$order->set('use_shipping_address_for_billing', true)->save();
357+
$this->assertDatabaseHas('orders', ['id' => $orderRecord->id, 'use_shipping_address_for_billing' => true]);
358+
359+
$order->set('use_shipping_address_for_billing', 'true')->save();
360+
$this->assertDatabaseHas('orders', ['id' => $orderRecord->id, 'use_shipping_address_for_billing' => true]);
361+
362+
$order->set('use_shipping_address_for_billing', 'on')->save();
363+
$this->assertDatabaseHas('orders', ['id' => $orderRecord->id, 'use_shipping_address_for_billing' => true]);
364+
365+
$order->set('use_shipping_address_for_billing', false)->save();
366+
$this->assertDatabaseHas('orders', ['id' => $orderRecord->id, 'use_shipping_address_for_billing' => false]);
367+
368+
$order->set('use_shipping_address_for_billing', 'false')->save();
369+
$this->assertDatabaseHas('orders', ['id' => $orderRecord->id, 'use_shipping_address_for_billing' => false]);
370+
371+
$order->set('use_shipping_address_for_billing', 'off')->save();
372+
$this->assertDatabaseHas('orders', ['id' => $orderRecord->id, 'use_shipping_address_for_billing' => false]);
373+
374+
$order->set('use_shipping_address_for_billing', null)->save();
375+
$this->assertDatabaseHas('orders', ['id' => $orderRecord->id, 'use_shipping_address_for_billing' => false]);
376+
});
377+
352378
it('can save order with status log events', function () {
353379
$product = Product::make()->price(1000);
354380
$product->save();

0 commit comments

Comments
 (0)