/** * @param bool $priceIncludesTax * @param int $cartItemQuantity * @return Cart */ protected function makeCart2($priceIncludesTax = true, $cartItemQuantity = 1) { $params = ['priceIncludesTax' => $priceIncludesTax, 'chargeTaxOnShipping' => true, 'defaultTaxRate' => 20]; $cart = new Cart($params); $variationParams = ['id' => 55, 'name' => 'Test Three', 'price' => 2500, 'sku' => '123x']; $product = new Product(['id' => 1, 'productName' => '', 'productType' => '', 'shortDescription' => '', 'longDescription' => '', 'shipping' => [new ProductShippingOption(300, 15, 'Standard Shipping', 2, [79])], 'tax' => [new ProductTaxOption(20, [79], true)], 'variations' => [new ProductVariation($variationParams)]]); $cartItem = new CartItem(['productVariationId' => 55, 'quantity' => $cartItemQuantity, 'product' => $product, 'basePrice' => 2500, 'taxRate' => 20, 'shippingType' => 'Standard Shipping', 'countryId' => 79, 'priceIncludesTax' => $priceIncludesTax]); $cart->add($cartItem); $variationParams['name'] = 'Test Two'; $variationParams['id'] = 56; $variationParams['price'] = 1500; $product = new Product(['id' => 2, 'productName' => '', 'productType' => '', 'shortDescription' => '', 'longDescription' => '', 'shipping' => [new ProductShippingOption(200, 25, 'Standard Shipping', 1, [79])], 'tax' => [new ProductTaxOption(20, [79], true)], 'variations' => [new ProductVariation($variationParams)]]); $cartItem = new CartItem(['productVariationId' => 56, 'quantity' => $cartItemQuantity, 'product' => $product, 'basePrice' => 1500, 'taxRate' => 20, 'shippingType' => 'Standard Shipping', 'countryId' => 79, 'priceIncludesTax' => $priceIncludesTax]); $cart->add($cartItem); $variationParams['name'] = 'Test One'; $variationParams['id'] = 57; $variationParams['price'] = 1200; $product = new Product(['id' => 3, 'productName' => '', 'productType' => '', 'shortDescription' => '', 'longDescription' => '', 'shipping' => [new ProductShippingOption(100, 50, 'Standard Shipping', null, [79])], 'tax' => [new ProductTaxOption(20, [79], true)], 'variations' => [new ProductVariation($variationParams)]]); $cartItem = new CartItem(['productVariationId' => 57, 'quantity' => $cartItemQuantity, 'product' => $product, 'basePrice' => 1200, 'taxRate' => 20, 'shippingType' => 'Standard Shipping', 'countryId' => 79, 'priceIncludesTax' => $priceIncludesTax]); $cart->add($cartItem); return $cart; }
/** * @param $items * @param null $countryId * @param string $shippingType * @return Cart */ public function makeFromIds($items, $countryId = null, $shippingType = '') { $clientInfo = Config::get('clientInfo'); $priceIncludesTax = $clientInfo->business_settings->tax->price_includes_tax; $taxes = ProductTaxOptionFactory::makeFromApi($clientInfo->business_settings->tax->country_tax_rates); $defaultTaxRate = TaxCalculator::calculateProductTaxRate($taxes, $countryId, $clientInfo->business_settings->tax->default_tax_rate); $params = ['ids' => $items, 'priceIncludesTax' => $priceIncludesTax, 'chargeTaxOnShipping' => $clientInfo->business_settings->tax->charge_tax_on_shipping, 'defaultTaxRate' => $defaultTaxRate, 'countryId' => $countryId, 'shippingType' => $shippingType ? $shippingType : null]; $cart = new Cart($params); $cartItemFactory = new CartItemFactory($this->cartRepository, $cart); foreach ($cartItemFactory->makeFromIds($items, $priceIncludesTax, $cart->getDefaultTaxRate()) as $item) { $cart->add($item); } $cart->checkIdList(); // check for free shipping if (isset($clientInfo->business_settings->free_shipping) && $clientInfo->business_settings->free_shipping->free_shipping_enabled) { $cart->updateForFreeShipping($this->cartValuesTransformer, $clientInfo->business_settings->free_shipping->free_shipping_minimum_order, $clientInfo->business_settings->free_shipping->free_shipping_countries); } return $cart; }