account && !$user->account->country_id){ abort(403, 'Error: User hat kein Land!'); } $ShippingCountry = ShippingCountry::findOrFail($shipping_country_id); self::$user_tax_free = self::performUserTaxShippingCountry($user, $ShippingCountry); /* dump( self::$user_price_code ); dump( self::$user_tax_free ); dump( self::$user_reverse_charge ); */ } public static function performUserTaxShippingCountry($user, $ShippingCountry){ //preise für das Land self::$user_country = $user->account->country; self::$shipping_country = $ShippingCountry->country; //ausgehend vom Land des Rechnungsempfänger $user->account->country //ist der Rechnungsempfänger im Drittland? if($user->account->country->supply_country){ if($ShippingCountry->country->supply_country){ //Lieferadresse im Drittland? return true; } } //Rechnungsempfänger in der EU //Lieferland mit RSV if($ShippingCountry->country->eu_country){ //Rechnungsempfänger mit valid aktiv RSV if($user->account->reverse_charge && $user->account->reverse_charge_valid){ //Rechnungsland ist auch Lieferland, dann RSV if(strtolower($user->account->reverse_charge_code) == strtolower($ShippingCountry->country->code)){ self::$user_reverse_charge = true; return true; } } } //Lieferland ohne RSV return false; } public static function getYardInfo(){ return [ 'shipping_free' => false, 'user_tax_free' => self::$user_tax_free, 'user_reverse_charge' => self::$user_reverse_charge, 'user_country_id' => self::$user_country->id, 'shipping_country_id' => self::$shipping_country->id, ]; } public static function getTaxFree(){ return self::$user_tax_free ? true : false; } public static function getUserPriceInfos(){ return [ 'user_tax_free' => self::$user_tax_free, 'user_reverse_charge' => self::$user_reverse_charge, 'user_country_id' => self::$user_country->id, ]; } public static function getOrderInfo($key = false){ switch ($key) { case 'billing_state': return self::$user_country->getLocated(); break; case 'shipping_state': return self::$shipping_country->getLocated(); break; case 'tax_free': return self::$user_tax_free ? 'Nein' : 'Ja'; break; case 'user_reverse_charge': return self::$user_reverse_charge ? 'Ja' : 'Nein'; break; } } public static function createConfirmationCode() { $unique = false; do{ $confirmation_code = str_random(30); if(User::where('confirmation_code', '=', $confirmation_code)->count() == 0){ $unique = true; } } while(!$unique); return $confirmation_code; } }