fixed tax
This commit is contained in:
parent
46b9f9b967
commit
1596c985b8
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace Beike\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
|
||||
class Cart extends Base
|
||||
|
|
@ -11,4 +12,19 @@ class Cart extends Base
|
|||
protected $fillable = [
|
||||
'customer_id', 'shipping_address_id', 'shipping_method_code', 'payment_address_id', 'payment_method_code'
|
||||
];
|
||||
|
||||
public function customer(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Customer::class, 'customer_id', 'id');
|
||||
}
|
||||
|
||||
public function shippingAddress(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Address::class, 'shipping_address_id', 'id');
|
||||
}
|
||||
|
||||
public function paymentAddress(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Address::class, 'payment_address_id', 'id');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,6 +55,7 @@ class CartRepo
|
|||
}
|
||||
$cart->save();
|
||||
}
|
||||
$cart->loadMissing(['shippingAddress', 'paymentAddress']);
|
||||
return $cart;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -163,20 +163,23 @@ class CheckoutService
|
|||
public function checkoutData(): array
|
||||
{
|
||||
$customer = $this->customer;
|
||||
$currentCart = $this->cart;
|
||||
|
||||
$addresses = AddressRepo::listByCustomer($customer);
|
||||
$shipments = ShippingMethodItem::collection(PluginRepo::getShippingMethods())->jsonSerialize();
|
||||
$payments = PaymentMethodItem::collection(PluginRepo::getPaymentMethods())->jsonSerialize();
|
||||
|
||||
$cartList = CartService::list($customer, true);
|
||||
$carts = CartService::reloadData($cartList);
|
||||
$totalService = (new TotalService($cartList))->setShippingMethod($this->cart->shipping_method_code);
|
||||
|
||||
$totalService = (new TotalService($currentCart, $cartList));
|
||||
|
||||
$data = [
|
||||
'current' => [
|
||||
'shipping_address_id' => $this->cart->shipping_address_id,
|
||||
'shipping_method_code' => $this->cart->shipping_method_code,
|
||||
'payment_address_id' => $this->cart->payment_address_id,
|
||||
'payment_method_code' => $this->cart->payment_method_code,
|
||||
'shipping_address_id' => $currentCart->shipping_address_id,
|
||||
'shipping_method_code' => $currentCart->shipping_method_code,
|
||||
'payment_address_id' => $currentCart->payment_address_id,
|
||||
'payment_method_code' => $currentCart->payment_method_code,
|
||||
],
|
||||
'country_id' => (int)system_setting('base.country_id'),
|
||||
'customer_id' => $customer->id ?? null,
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
namespace Beike\Shop\Services;
|
||||
|
||||
use Beike\Libraries\Tax;
|
||||
use Beike\Models\Cart;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class TotalService
|
||||
|
|
@ -23,15 +24,17 @@ class TotalService
|
|||
'order_total'
|
||||
];
|
||||
|
||||
public array $carts;
|
||||
public Cart $currentCart;
|
||||
public array $cartProducts;
|
||||
public array $taxes = [];
|
||||
public array $totals;
|
||||
public float $amount = 0;
|
||||
public string $shippingMethod = '';
|
||||
|
||||
public function __construct($carts)
|
||||
public function __construct($currentCart, $cartProducts)
|
||||
{
|
||||
$this->carts = $carts;
|
||||
$this->currentCart = $currentCart;
|
||||
$this->cartProducts = $cartProducts;
|
||||
$this->getTaxes();
|
||||
}
|
||||
|
||||
|
|
@ -53,8 +56,13 @@ class TotalService
|
|||
*/
|
||||
public function getTaxes(): array
|
||||
{
|
||||
$taxLib = Tax::getInstance();
|
||||
foreach ($this->carts as $product) {
|
||||
$addressInfo = [
|
||||
'shipping_address' => $this->currentCart->shippingAddress,
|
||||
'payment_address' => $this->currentCart->paymentAddress,
|
||||
];
|
||||
$taxLib = Tax::getInstance($addressInfo);
|
||||
|
||||
foreach ($this->cartProducts as $product) {
|
||||
if (empty($product['tax_class_id'])) {
|
||||
continue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ class SubtotalService
|
|||
{
|
||||
public static function getTotal(TotalService $totalService)
|
||||
{
|
||||
$carts = $totalService->carts;
|
||||
$carts = $totalService->cartProducts;
|
||||
$amount = collect($carts)->sum('subtotal');
|
||||
$totalData = [
|
||||
'code' => 'sub_total',
|
||||
|
|
|
|||
Loading…
Reference in New Issue