where('id', $item->id)->first(); $prices = Offers::getPrice($item->id, $item->quantity, $saleChannelId); $weight = $offer->weight * $item->quantity; $detail[] = self::getRowDetail($item, $offer, $prices, $weight); $total += $prices ? self::getTotal($item->quantity, $prices->price) : false; $totalTaxed += $prices ? self::getTotal($item->quantity, $prices->price_taxed) : false; $totalWeight += $weight; } $shipping = DeliveryTypeCalculations::getPriceByDeliveryType($deliveryTypeId, $totalWeight); $data = [ 'detail' => $detail, 'total' => $total, 'taxes' => $totalTaxed - $total, 'total_taxed' => $totalTaxed, 'shipping' => $shipping, 'total_shipped' => $totalTaxed + $shipping, 'count' => ShopCart::count(), 'quantity' => ShopCart::getTotalQuantity(), 'weight' => $totalWeight, 'sale_channel' => SaleChannels::getArray($saleChannelId), ]; return $data ?? false; } public static function getRowDetail($item, $offer, $prices, $weight) { return [ 'offer_id' => (int) $item->id, 'name' => $offer->article->name.' ('.$offer->variation->name.')', 'quantity' => (int) $item->quantity, 'price' => $prices ? (float) $prices->price : false, 'tax' => $prices ? $prices->price_taxed - $prices->price : false, 'price_taxed' => $prices ? (float) $prices->price_taxed : false, 'total' => $prices ? self::getTotal($item->quantity, $prices->price) : false, 'total_tax' => $prices ? self::getTotal($item->quantity, $prices->price_taxed - $prices->price) : false, 'total_taxed' => $prices ? self::getTotal($item->quantity, $prices->price_taxed) : false, 'weight' => $weight, ]; } public static function getWeight() { $basket = ShopCart::getContent(); $offers = Offers::getWithVariationByIds(ShopCart::keys()); $totalWeight = 0; foreach ($basket as $item) { $offer = $offers->where('id', $item->id)->first(); $weight = $offer->weight * $item->quantity; $totalWeight += $weight; } return $totalWeight; } public static function getTotal($quantity, $price) { return $quantity * $price; } public static function getBasket($saleChannelId = false) { $saleChannelId = $saleChannelId ? $saleChannelId : SaleChannels::getDefaultID(); $basket = ShopCart::getContent(); $offers = Offers::getWithPricesByIds(self::getIds(), $saleChannelId); foreach ($basket as $item) { $offer = $offers->where('id', $item->id)->first(); $article_nature = strtolower($offer->article->article_nature->name); $data[$article_nature][] = [ 'id' => (int) $item->id, 'name' => $item->name, 'quantity' => (int) $item->quantity, 'price' => $item->price, 'variation' => $offer->variation->name, 'image' => Articles::getPreviewSrc(Articles::getFullImageByArticle($offer->article)), 'latin' => $offer->article->product->specie->latin ?? false, ]; } $data['sale_channel'] = Customers::getSaleChannel(); return $data ?? false; } public static function getBasketData($id, $quantity = 1) { $offer = Offers::get($id, ['article', 'variation']); return [ 'id' => $id, 'name' => self::getArticleName($offer), 'price' => Offers::getPrice($id, $quantity)->price_taxed, 'quantity' => $quantity, 'attributes' => [], ]; } public static function getArticleName(&$offer) { return $offer->article->name; // return $offer->article->name . ' (' . $offer->variation->name . ')'; } public static function getIds() { return ShopCart::keys(); } }