Blame | Letzte Änderung | Log anzeigen | RSS feed
<?phpnamespace App\Http\Controllers;use App\Console\Commands\dump;use App\Models\Shipping;use Illuminate\Contracts\Foundation\Application;use Illuminate\Contracts\View\Factory;use Illuminate\Contracts\View\View;use Illuminate\Http\Request;use Illuminate\Support\Facades\DB;class ShippingController extends Controller{public function index(): Factory|View|Application{$shipping = Shipping::with("shipping_group")->orderBy("rank")->get();return View( "shipping", [ "shipping" => $shipping ] );}public function getShippingOptions(): array|bool{$Land = 47;if ( isset( $_GET["Land"] ) ){$Land = $_GET["Land"];}$buffer = array();$rufnamen = array();$sql = "SELECTz.id,z.internal_nameFROMpayment_methods zJOINshipping_payment_methods vzONvz.payment_method_id=z.id";$r = DB::connection( 'mysql' )->select( $sql );$rufnamen[] = "- Bezahlarten -";foreach ( $r as $row ){$ini_name = $row->internal_name;if ( $row->internal_name == "sofortueberweisung" ){$ini_name = "ueberweisung";}if ( !isset( $_SESSION["zahlarten"][$ini_name] ) ){$_SESSION["zahlarten"][$ini_name] = true;}if ( ( isset( $GLOBALS["INI"][$ini_name]["aktiv"] ) && $GLOBALS["INI"][$ini_name]["aktiv"] == 1 && $_SESSION["zahlarten"][$ini_name] !== false ) || !in_array( $row->internal_name, $GLOBALS["zahlsysteme"] ) ){$rufnamen[$row->id] = $row->internal_name;}}if ( $_SESSION["SHOP"]["BASKET"]->items ){$vgruppen = array();$preis = $_SESSION["SHOP"]["BASKET"]->paymentInfo["Total"];$gewicht = $_SESSION["SHOP"]["BASKET"]->weight;foreach ( $_SESSION["SHOP"]["BASKET"]->items as $artikel ){if ( $artikel->spedId ){$vgruppen[] = $artikel->spedId;}elseif ( $artikel->shipping_group_id ){$vgruppen[] = $artikel->shipping_group_id;}}$vgruppen = array_unique( $vgruppen );$sql = "SELECTMAX(rank) AS rankFROMshipping_groupsWHEREid IN(" . implode( ",", $vgruppen ) . ")";$r = DB::select( $sql );$row = $r[0];$rang = $row->rank;$sql = "SELECTid,name,conditions,shipping_text AS versandtextbaustein-- zahlart_indexFROMshipping_groups vgWHERErank=" . $rang . "";$r = DB::select( $sql );$row = $r[0];$vgId = $row->id;$bedingungen = explode( ";", $row->conditions );$sqlCondArr = array();if ( in_array( "preis", $bedingungen ) ){$sqlCondArr[] = "((" . $preis . " >= calc_price_from AND " . $preis . " <= calc_price_to) OR (calc_price_from=calc_price_to))";}if ( in_array( "gewicht", $bedingungen ) ){$sqlCondArr[] = "((" . $gewicht . " >= calc_weight_from AND " . $gewicht . " <= calc_weight_to)OR (calc_weight_from = calc_weight_to))";}$sql = "SELECTv.*FROMshippings vJOINshipping_countries vlONvl.shipping_id=v.idWHEREshipping_group_id=" . $vgId . "ANDstatus = 0ANDcountry_id=" . $Land . "";if ( isset( $_SESSION["SHOP"]["vIsland"] ) && $_SESSION["SHOP"]["vIsland"] ){//Insel ausgewählt ==> Versandoption darf NICHT auf "kein Inselversand" (Wert: 1) stehen!$sqlCondArr [] = " island_shipping IN (0,2) ";}else{$sqlCondArr [] = " island_shipping IN (0,1) ";}if ( $sqlCondArr ){$sqlCond = implode( " AND ", $sqlCondArr );$sql .= "AND" . $sqlCond . "";}$vR = DB::select( $sql );if ( !count( $vR ) ){$_SESSION["versandFehler"] = "Wir versenden NICHT an diese Adresse! Bitte geben Sie eine andere Adresse ein!";}$shippingIds = array();foreach ( $vR as $vRow ){$shippingIds[] = $vRow->id;if ( $vRow->additions ){$vRow->additions = unserialize( $vRow->additions );}if ( isset( $_GET["param"] ) && $_GET["param"] == "single" ){if ( $vRow->name && $_SESSION['SHOP']['BASKET']->paymentInfo["Total"] ){$summeInklVersand = $vRow->price + $_SESSION['SHOP']['BASKET']->paymentInfo["Total"];$vkSummeLaender['price'] = $vRow->price;$vkSummeLaender['name'] = $vRow->name;$fmt = new \NumberFormatter( "de_DE.UTF-8", \NumberFormatter::CURRENCY );$vkSummeLaender['price_formatted'] = $fmt->formatCurrency( $vRow->price, "EUR" );$vkSummeLaender['summe_formatted'] = $fmt->formatCurrency( $summeInklVersand, "EUR" );echo view( "vkSummeLaender", [ "vkSummeLaender" => $vkSummeLaender, ] );}else{echo "<div class=''>Fehler: Keine Versandart gefunden!</div>\n";}return true;}$sql = "SELECTz.id,z.name,z.internal_name,z.discount,z.shipping_text AS versandtextbaustein,z.info_in_shopFROMshipping_payment_methods vzJOINpayment_methods zONz.id=vz.payment_method_idWHEREshipping_id =" . $vRow->id . "";if ( isset( $_GET['vRufname'] ) && is_numeric( $_GET['vRufname'] ) ){$sql .= " AND z.id = " . $_GET['vRufname'];}$zR = DB::select( $sql );foreach ( $zR as $zRow ){if ( $zRow->internal_name != "nicht_belegt" ){$ini_name = $zRow->internal_name;if ( $ini_name == "sofortueberweisung" ){$ini_name = "ueberweisung";}if ( $GLOBALS["INI"]["PayPalPlus"]["aktiv"] != 1 ){$row->name = ( str_replace( "\r\n", "<br>", $row->name ) );}if ( ( isset( $GLOBALS["INI"][$ini_name]["aktiv"] ) && $GLOBALS["INI"][$ini_name]["aktiv"] == 1 && $_SESSION["zahlarten"][$ini_name] !== false ) || !in_array( $zRow->internal_name, $GLOBALS["zahlsysteme"] ) ){$preis = $vRow->price;$name = $vRow->name . " - " . $zRow->name;if ( isset( $_SESSION["SHOP"]["Lieferadresse"] ) && $_SESSION["SHOP"]["Lieferadresse"] == "abholung" ){$name = "Abholung - " . $zRow->name;$preis = 0;}$beschreibung = $zRow->info_in_shop;if ( $beschreibung && $vRow->info_shop ){$beschreibung .= "<br/><br/>";}if ( $vRow->info_shop ){$beschreibung .= $vRow->info_shop;}$beschreibung2 = $zRow->versandtextbaustein;if ( $beschreibung2 && $row->versandtextbaustein ){$beschreibung2 .= "<br><br/>";}if ( $row->versandtextbaustein ){$beschreibung2 .= $row->versandtextbaustein;}if ( $beschreibung2 && $vRow->info_mail ){$beschreibung2 .= "<br/><br/>";}if ( $vRow->info_mail ){$beschreibung2 .= $vRow->info_mail;}$buffer[$zRow->internal_name . "_" . $vRow->id] = array("additions" => $vRow->additions,"ID" => $zRow->internal_name . "_" . $vRow->id,"beschreibung" => $beschreibung,"beschreibung2" => $beschreibung2,"kurz" => $name,"ultrakurz" => $zRow->name,"preis" => $preis,"gesamt" => $preis,"rufname" => $zRow->internal_name,"versand_abschlag" => $zRow->discount,"versandgruppe" => $vgId,//"zahlart_index" => $row->zahlart_index,);}}}}if ( is_countable( $vRow->additions ) ){$zusaetze = array();foreach ( $vRow->additions as $zId => $zusatz ){$sql = "SELECTbeschreibungFROMartikelWHEREid=" . $zId . "";$res = DB::select( $sql );$row = $res[0];$zusaetze[$zId] = $row->beschreibung;}}}else{$sql = "SELECTv.*FROMshippings vJOINshipping_countries vlONvl.shipping_id=v.idWHEREcountry_id=" . $Land . "";$res = DB::select( $sql );foreach ( $res as $vRow ){$vgId = $vRow->shipping_group_id;$sql = "SELECTz.name,z.internal_name,z.info_in_shop,z.discount,z.shipping_text AS versand_textbausteinFROMpayment_methods zJOINshipping_payment_methods vzONvz.payment_method_id=z.idWHEREvz.shipping_id=" . $vRow->id . "";if ( isset( $_GET['vRufname'] ) && is_numeric( $_GET['vRufname'] ) ){$sql .= " AND z.id = " . $_GET['vRufname'];}$resZ = DB::select( $sql );foreach ( $resZ as $vzRow ){if ( $vzRow->internal_name != "nicht_belegt" ){$ini_name = $vzRow->internal_name;if ( $ini_name == "sofortueberweisung" ){$ini_name = "ueberweisung";}if ( $GLOBALS["INI"]["PayPalPlus"]["aktiv"] != 1 ){//$row->description = ( str_replace( "\r\n", "<br>", $row->description ) );}if ( ( isset( $GLOBALS["INI"][$ini_name]["aktiv"] ) && $GLOBALS["INI"][$ini_name]["aktiv"] == 1 && $_SESSION["zahlarten"][$ini_name] !== false ) || !in_array( $vzRow->internal_name, $GLOBALS["zahlsysteme"] ) ){$preis = $vRow->price;$name = $vRow->name . " - " . $vzRow->name;if ( isset( $_SESSION["SHOP"]["Lieferadresse"] ) && $_SESSION["SHOP"]["Lieferadresse"] == "abholung" ){$name = "Abholung - " . $vzRow->name;$preis = 0;}$beschreibung = $vzRow->info_in_shop;if ( $beschreibung && $vRow->info_in_shop ){$beschreibung .= "<br/><br/>";}if ( $vRow->info_shop ){$beschreibung .= $vRow->info_shop;}/*$beschreibung2 = $vzRow->versandtextbaustein;if ( $beschreibung2 && $vRow->versandtextbaustein ){$beschreibung2 .= "<br><br/>";}if ( $vRow->versandtextbaustein ){$beschreibung2 .= $vRow->versandtextbaustein;}if ( $beschreibung2 && $vRow->info_mail ){$beschreibung2 .= "<br/><br/>";}*//*if ( $vRow->info_mail ){$beschreibung2 .= $vRow->info_mail;}*/$buffer[$vzRow->internal_name . "_" . $vRow->id] = array("additions" => $vRow->additions,"ID" => $vzRow->internal_name . "_" . $vRow->id,"beschreibung" => $beschreibung,//"beschreibung2" => $beschreibung2,"kurz" => $name,"ultrakurz" => $vzRow->name,"preis" => $preis,"gesamt" => $preis,"rufname" => $vzRow->internal_name,"versand_abschlag" => $vzRow->discount,"versandgruppe" => $vgId,//"zahlart_index" => $vRow->zahlart_index,"berechnung_preis_von" => $vRow->calc_price_from,"berechnung_preis_bis" => $vRow->calc_price_to,"berechnung_kg_von" => $vRow->calc_weight_from,"berechnung_kg_bis" => $vRow->calc_weight_to,);}}}}ksort( $buffer );}return $buffer;}public function updateShipping(){if ( isset( $_GET["param"] ) && $_GET['param'] == "single" ){$_SESSION['versand_laenderauswahl'] = $_GET['Land'];}if ( $_GET["Land"] ){if ( isset( $_SESSION["SHOP"]["Lieferadresse"] ) && $_SESSION["SHOP"]["Lieferadresse"] !== "false" ){$_SESSION['SHOP']['buy']['Persdata']['liefer_Land'] = $_GET["Land"];}else{$_SESSION['SHOP']['buy']['Persdata']['Land'] = $_GET["Land"];}}/*trigger_error( $_GET["Land"] );trigger_error( $_SESSION['SHOP']['buy']['Persdata']['liefer_Land'] );trigger_error( $_SESSION['SHOP']['buy']['Persdata']['Land'] );*/if ( isset( $_GET["packstation"] ) && $_GET["packstation"] == 1 ){$_SESSION['SHOP']['buy']['Persdata']['liefer_Land'] = 47;}$pppVersand = "";if ( isset( $_SESSION["SHOP"]["BASKET"]->items ) ){$versandOptionen = $this->getShippingOptions();$v_opt = array();$wunschzustellung = 0;if ( is_countable( $versandOptionen ) ){$oId = 0;foreach ( $versandOptionen as $o_id => $opt ){if ( $opt["rufname"] == "amazon" || $opt["rufname"] == "PayPalExpress" || $opt["rufname"] == "klarna" ){continue;}elseif ( isset( $_GET["packstation"] ) && $_GET["packstation"] == 1 && !stristr( $opt["kurz"], "DHL" ) ){continue;}/*if ( $_GET["kurier"] == 1 && ( $opt->express != 1 || stristr( $opt->kurz, "selbstabholung" ) ) ){continue;}*/if ( !key_exists( "beschr", $opt ) ){$opt["beschr"] = $opt["beschreibung"];}$opt['beschr'] = str_replace( "\r\n", "<br>", $opt['beschr'] );if ( ( isset( $_SESSION["SHOP"]["buy"]["Versand_selected"] ) && $_SESSION["SHOP"]["buy"]["Versand_selected"] == $opt["ID"] ) || ( !isset( $_SESSION["SHOP"]["buy"]["Versand_selected"] ) && $oId == 0 ) ){$opt["checked"] = 'checked="checked"';}$wunschzustellung = 0;if ( $GLOBALS["INI"]["modules"]["versandgruppen"] == 1 && isset( $GLOBALS["INI"]["wunschzustellung"]["aktiv"] ) && $GLOBALS["INI"]["wunschzustellung"]["aktiv"] == 1 ){$wzVersandGruppen = array();if ( isset( $GLOBALS["INI"]["wunschzustellung"]["versandgruppen"] ) && $GLOBALS["INI"]["wunschzustellung"]["versandgruppen"] ){$wzVersandGruppen = explode( ",", $GLOBALS["INI"]["wunschzustellung"]["versandgruppen"] );}if ( in_array( $opt["versandgruppe"], $wzVersandGruppen ) || !$wzVersandGruppen ){$wunschzustellung = 1;}}$v_opt[] = $opt;$oId++;}/*$GLOBALS["ui"]->assign( "wunschzustellung", $wunschzustellung );$GLOBALS["ui"]->assign( "versandOptionen", $v_opt );*/\View::share( "wunschzustellung", $wunschzustellung );\View::share( "versandOptionen", $v_opt );}if ( $GLOBALS["INI"]["PayPalPlus"]["aktiv"] != 1 && $GLOBALS["INI"]["PayPalCheckout"]["aktiv"] != 1 ){echo view( "update_versand" );}elseif ( isset( $GLOBALS["INI"]["weban_vk"]["aktiv"] ) && $GLOBALS["INI"]["weban_vk"]["aktiv"] == 1 && $_SESSION["is_b2b"] == 1 ){if ( is_array( $versandOptionen ) ){foreach ( $versandOptionen as $o_id => $opt ){if ( strtolower( $opt["rufname"] ) == "paypalplus" || strtolower( $opt["rufname"] ) == "klarna" || strtolower( $opt["rufname"] ) == "paypalcheckout" ){$pppVersand = $opt["ID"];break;}}if ( $_GET["Land"] || $_GET["liefer"] ){echo $pppVersand;}else{\View::share( "ppplusVersand", $pppVersand );}}}else{if ( isset( $_SESSION["SHOP"]["hash"] ) && $_SESSION["SHOP"]["hash"] ){$thirdPartyMethods = array();$customMethods = array("vorkasse","selbstabholung","ratenzahlung","nachnahme","sofortueberweisung",);$buy_link_base = $GLOBALS["INI"]["absoluteURL"];$buy_link_base = str_replace( "http:", "https:", $buy_link_base );$url = $buy_link_base . "/bestellen_seite_2.html";$methodNameField = "kurz";if ( $GLOBALS["INI"]["PayPalPlus"]["methodNameField"] ){$methodNameField = $GLOBALS["INI"]["PayPalPlus"]["methodNameField"];}foreach ( $versandOptionen as $o_id => $opt ){$rufname = strtolower( $opt["rufname"] );$opt["beschr"] = $opt["beschreibung"];if ( in_array( $rufname, $customMethods ) ){if ( $methodNameField == "rufname" ){$methodName = $GLOBALS["rufnamen"][$opt[$methodNameField]];}else{$methodName = $opt["kurz"];}$method = array("redirectUrl" => $url,"methodName" => $methodName,"description" => $opt["beschr"],);$imgBase = "/images/webelemente/versand_";$imgName = $imgBase . $rufname . ".jpg";$imgUrl = "https://" . $_SERVER["SERVER_NAME"] . $imgName;$imgNameFull = $_SERVER["DOCUMENT_ROOT"] . $imgName;if ( $GLOBALS["INI"]["ssl_buy"] == 1 ){if ( file_exists( $imgNameFull ) ){$method["imageUrl"] = $imgUrl;}}$thirdPartyMethods[] = $method;}}$payPal3rdParty = json_encode( $thirdPartyMethods );require_once "module/creditcard/paypalPlus.php";$c = new paypalPlus();$apporvalUrl = $c->getCreditcardStatus( null );$GLOBALS["ui"]->assign( "paymentMethods", $payPal3rdParty );$GLOBALS["ui"]->assign( "approvalUrl", $apporvalUrl );if ( $_GET['account'] ){$GLOBALS["ui"]->assign( "account", "?account=" . $_GET['account'] );}}if ( is_array( $versandOptionen ) ){foreach ( $versandOptionen as $o_id => $opt ){if ( strtolower( $opt["rufname"] ) == "paypalplus" || strtolower( $opt["rufname"] ) == "klarna" || strtolower( $opt["rufname"] ) == "paypalcheckout" ){$pppVersand = $opt["ID"];break;}}if ( $_GET["Land"] || $_GET["liefer"] ){return $pppVersand;}else{\View::share( "ppplusVersand", $pppVersand );return view( "update_versand" );}}}}}}