Skip to content

Commit 759ae5d

Browse files
committed
Merge branch 'release/4.0.0'
2 parents aa56782 + 5873b3a commit 759ae5d

File tree

4 files changed

+11
-4
lines changed

4 files changed

+11
-4
lines changed

.phpunit.cache/test-results

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"version":1,"defects":[],"times":{"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_get_cart_manager_from_config":0.1,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_load_facade":0.012,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_get_cart_instances#session":0.164,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_get_cart_instances#cache":0.022,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_get_cart_instances#eloquent":0.209,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_generate_cart_items_ids_consistently":0.143,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_add_to_cart#session":0.01,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_add_to_cart#cache":0.011,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_add_to_cart#eloquent":0.164,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_check_if_item_is_in_cart#session":0.019,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_check_if_item_is_in_cart#cache":0.011,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_check_if_item_is_in_cart#eloquent":0.012,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_remove_from_cart#session":0.012,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_remove_from_cart#cache":0.011,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_remove_from_cart#eloquent":0.014,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_calculate_total#session":0.148,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_calculate_total#cache":0.011,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_calculate_total#eloquent":0.014,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_calculate_tax#session":0.047,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_calculate_tax#cache":0.011,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_calculate_tax#eloquent":0.015,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_calculate_item_discounts#session":0.069,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_calculate_item_discounts#cache":0.01,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_calculate_item_discounts#eloquent":0.014,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_calculate_subtotal_discounts#session":0.011,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_calculate_subtotal_discounts#cache":0.011,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_calculate_subtotal_discounts#eloquent":0.013,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_calculate_items_discounts#session":0.01,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_calculate_items_discounts#cache":0.01,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_calculate_items_discounts#eloquent":0.012,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_attach_customer_to_cart#session":0.122,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_attach_customer_to_cart#cache":0.014,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_attach_customer_to_cart#eloquent":0.022,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_add_to_cart_storing_in_db":0.014,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::user_add_to_cart_storing_in_db":0.05,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::cart_stored_storing_in_db_for_different_users":0.016,"Weble\\LaravelEcommerce\\Tests\\Cart\\CartTest::can_add_discount_to_cart_storing_in_db":0.013,"Weble\\LaravelEcommerce\\Tests\\Cart\\MultipleCartsTest::stores_different_carts_in_db":0.015,"Weble\\LaravelEcommerce\\Tests\\Cart\\CustomerTest::can_add_to_cart_storing_in_db":0.041,"Weble\\LaravelEcommerce\\Tests\\Cart\\CustomerTest::can_add_to_cart_for_user_storing_in_db":0.015,"Weble\\LaravelEcommerce\\Tests\\Cart\\CustomerTest::can_add_to_cart_for_user_storing_in_db_multiple_times":0.012,"Weble\\LaravelEcommerce\\Tests\\Order\\OrderTest::can_create_order_from_cart":0.067,"Weble\\LaravelEcommerce\\Tests\\Order\\OrderTest::order_has_unique_hash":0.022,"Weble\\LaravelEcommerce\\Tests\\Order\\OrderTest::order_items_are_stored_correctly":0.064,"Weble\\LaravelEcommerce\\Tests\\Order\\OrderTest::uses_state_machine_to_manage_order":0.155,"Weble\\LaravelEcommerce\\Tests\\Order\\OrderTest::order_history_is_stored_correctly":0.019,"Weble\\LaravelEcommerce\\Tests\\Order\\OrderTest::order_creates_payment":0.042,"Weble\\LaravelEcommerce\\Tests\\Tax\\TaxTest::can_get_tax_resolver":0.013,"Weble\\LaravelEcommerce\\Tests\\Tax\\TaxTest::can_get_tax_manager":0.01,"Weble\\LaravelEcommerce\\Tests\\Tax\\TaxTest::can_calculate_tax_for_physical_product":0.032,"Weble\\LaravelEcommerce\\Tests\\Tax\\TaxTest::can_calculate_tax_for_physical_product_with_different_country_eu_private_customer":0.01,"Weble\\LaravelEcommerce\\Tests\\Tax\\TaxTest::can_calculate_tax_for_physical_product_with_different_country_eu_company":0.01}}

src/Cart/Cart.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,16 @@ public function clear(): self
7979
return $this;
8080
}
8181

82-
public function add(Purchasable $purchasable, float $quantity = 1, ?Collection $attributes = null): CartItem
82+
public function add(Purchasable $purchasable, float $quantity = 1, ?Collection $attributes = null, ?Money $price = null): CartItem
8383
{
8484
if ($attributes === null) {
8585
$attributes = collect([]);
8686
}
8787

8888
$cartItem = CartItem::fromPurchasable($purchasable, $quantity, $attributes);
89+
if ($price !== null) {
90+
$cartItem->price = $price;
91+
}
8992

9093
if ($this->items()->has($cartItem->getId())) {
9194
$cartItem->quantity += $this->items()->get($cartItem->getId())->quantity;

src/Cart/CartInterface.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use Illuminate\Support\Collection;
77
use Weble\LaravelEcommerce\Price\HasTotals;
88
use Weble\LaravelEcommerce\Purchasable;
9+
use Cknow\Money\Money;
910

1011
interface CartInterface extends HasTotals, Arrayable
1112
{
@@ -17,7 +18,7 @@ public function has(string $cartItemId): bool;
1718

1819
public function clear(): CartInterface;
1920

20-
public function add(Purchasable $purchasable, float $quantity = 1, ?Collection $attributes = null): CartItem;
21+
public function add(Purchasable $purchasable, float $quantity = 1, ?Collection $attributes = null, ?Money $price = null): CartItem;
2122

2223
public function remove(CartItem $cartItem): CartInterface;
2324

src/Cart/CartItem.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,17 +46,19 @@ public function toJson($options = 0): string
4646
return json_encode($this->toArray(), $options);
4747
}
4848

49-
public static function fromPurchasable(Purchasable $purchasable, float $quantity = 1, ?Collection $attributes = null): self
49+
public static function fromPurchasable(Purchasable $purchasable, float $quantity = 1, ?Collection $attributes = null, ?Money $price = null): self
5050
{
5151
if ($attributes === null) {
5252
$attributes = collect([]);
5353
}
5454

55+
$price ??= $purchasable->cartPrice($attributes);
56+
5557
return new static([
5658
'product' => $purchasable,
5759
'attributes' => $attributes,
5860
'quantity' => $quantity,
59-
'price' => $purchasable->cartPrice($attributes),
61+
'price' => $price,
6062
'discounts' => DiscountCollection::make([]),
6163
]);
6264
}

0 commit comments

Comments
 (0)