destroy(); self::$customer_detail = self::makeCustomerDetail($user_abo); if($user_abo->is_for === 'me'){ self::$is_for = 'abo-me'; if($user_abo->user && $user_abo->user->account->same_as_billing){ $country_id = $user_abo->user->account->country_id; }else{ $country_id = $user_abo->user->account->shipping_country_id; } if($country_id && $shipping_country = ShippingCountry::whereCountryId($country_id)->first()){ if($shipping_country->shipping && $shipping_country->shipping->active){ UserService::initUserYard($user_abo->user, $shipping_country->id, 'abo-me'); return true; } } abort(403, 'Fehler: Versandland nicht gefunden'); } if($user_abo->is_for === 'ot'){ self::$is_for = 'abo-ot-customer'; UserService::initCustomerYard(self::$customer_detail, 'abo-ot-customer'); return true; } return false; } public static function makeOrderYard($user_abo) { self::$user_abo = $user_abo; if($user_abo->is_for === 'ot'){ self::$is_for = 'abo-ot-customer'; } if($user_abo->is_for === 'me'){ self::$is_for = 'abo-me'; } foreach($user_abo->user_abo_items as $abo_item){ self::addProductToCart($abo_item); } Yard::instance('shopping')->reCalculateShippingPrice(); $user_abo->amount = Yard::instance('shopping')->totalWithShipping(2, '.', '')*100; $user_abo->save(); } private static function addProductToCart($item){ $product = Product::find($item->product_id); $tax_free = Yard::instance('shopping')->getUserTaxFree(); $user_country = Yard::instance('shopping')->getUserCountry(); if($product){ if($item->comp){ $cartItem = Yard::instance('shopping')->add($product->id, $product->getLang('name'), 1, 0, false, false, ['image' => '', 'slug' => $product->slug, 'weight' => 0, 'points' => 0, 'comp' => $item->comp, 'product_id' => $product->id]); Yard::setTax($cartItem->rowId, 0); return true; } if(self::$is_for === 'ot-customer' || self::$is_for === 'abo-ot-customer'){ $cartItem = Yard::instance('shopping') ->add($product->id, $product->getLang('name'), $item->qty, round($product->getPriceWith($tax_free, false, $user_country, false, self::$user_abo->user), 1), false, false, ['image' => '', 'slug' => $product->slug, 'weight' => $product->weight, 'points' => $product->points, 'no_commission' => $product->no_commission, 'show_on' => $product->show_on]); }else{ $cartItem = Yard::instance('shopping') ->add($product->id, $product->getLang('name'), $item->qty, $product->getPriceWith($tax_free, true, $user_country, false, self::$user_abo->user), false, false, ['image' => '', 'slug' => $product->slug, 'weight' => $product->weight, 'points' => $product->points, 'no_commission' => $product->no_commission, 'show_on' => $product->show_on]); } if($tax_free){ Yard::setTax($cartItem->rowId, 0); }else{ Yard::setTax($cartItem->rowId, $product->getTaxWith($user_country)); } } } public static function checkNumOfCompProducts($user_abo){ if($user_abo->is_for === 'me'){ $needNumComp = Yard::instance('shopping')->getNumComp(); if($needNumComp > 0){ $UserAboItems = UserAboItem::where('user_abo_id', $user_abo->id)->where('comp', '>', 0)->get(); if(count($UserAboItems) === $needNumComp){ return true; } //need to add if(count($UserAboItems) < $needNumComp){ $product = Product::whereActive(true)->where('shipping_addon', true)->whereJsonContains('show_on', '12')->orderBy('pos', 'DESC')->first(); for($i = count($UserAboItems); $i <= $needNumComp; $i++){ $UserAboItem = UserAboItem::create([ 'user_abo_id' => $user_abo->id, 'product_id' => $product->id, 'comp' => $i + 1, 'qty' => 1, 'status' => 1, ]); self::addProductToCart($UserAboItem); } } //need to remove if(count($UserAboItems) > $needNumComp){ foreach($UserAboItems as $UserAboItem){ if($UserAboItem->comp > $needNumComp){ $UserAboItem->delete(); } } foreach (Yard::instance('shopping')->content() as $row) { if($row->options->comp > $needNumComp) { Yard::instance('shopping')->remove($row->rowId); } } } } } } public static function getCustomerDetail(){ return self::$customer_detail; } /* Need this, can change the address */ public static function makeCustomerDetail($user_abo){ if($user_abo->is_for === 'me'){ //only on Abo! $user = $user_abo->user; $shopping_user = new ShoppingUser(); $shopping_user->billing_salutation = $user->account->salutation; $shopping_user->billing_company = $user->account->company; $shopping_user->billing_firstname = $user->account->first_name; $shopping_user->billing_lastname = $user->account->last_name; $shopping_user->billing_address = $user->account->address; $shopping_user->billing_address_2 = $user->account->address_2; $shopping_user->billing_zipcode = $user->account->zipcode; $shopping_user->billing_city = $user->account->city; $shopping_user->billing_country_id = $user->account->country_id; $shopping_user->billing_phone = $user->account->phone; if($user->account->same_as_billing){ $shopping_user->shipping_salutation = $user->account->salutation; $shopping_user->shipping_company = $user->account->company; $shopping_user->shipping_firstname = $user->account->first_name; $shopping_user->shipping_lastname = $user->account->last_name; $shopping_user->shipping_address = $user->account->address; $shopping_user->shipping_address_2 = $user->account->address_2; $shopping_user->shipping_zipcode = $user->account->zipcode; $shopping_user->shipping_city = $user->account->city; $shopping_user->shipping_country_id = $user->account->country_id; $shopping_user->shipping_phone = $user->account->phone; }else{ $shopping_user->shipping_salutation = $user->account->shipping_salutation; $shopping_user->shipping_company = $user->account->shipping_company; $shopping_user->shipping_firstname = $user->account->shipping_firstname; $shopping_user->shipping_lastname = $user->account->shipping_lastname; $shopping_user->shipping_address = $user->account->shipping_address; $shopping_user->shipping_address_2 = $user->account->shipping_address_2; $shopping_user->shipping_zipcode = $user->account->shipping_zipcode; $shopping_user->shipping_city = $user->account->shipping_city; $shopping_user->shipping_country_id = $user->account->shipping_country_id; $shopping_user->shipping_phone = $user->account->shipping_phone; } } if($user_abo->is_for === 'ot'){ //look for the primary user of this abo $shopping_user = $user_abo->shopping_user->replicate(); } return $shopping_user; } }