id = $id; $this->app = $app; $einstellungenArr = $this->app->DB->SelectRow("SELECT einstellungen_json,paketmarke_drucker,export_drucker FROM versandarten WHERE id = '$id' LIMIT 1"); $einstellungen_json = $einstellungenArr['einstellungen_json']; $this->paketmarke_drucker = $einstellungenArr['paketmarke_drucker']; $this->export_drucker = $einstellungenArr['export_drucker']; $this->name="DHL Versenden"; $this->logger = $app->Container->get('Logger'); if($einstellungen_json) { $this->einstellungen = json_decode($einstellungen_json,true); }else{ $this->einstellungen = array(); } $this->einstellungen = $this->einstellungen; if(isset($this->einstellungen['intraship_partnerid']) && $this->einstellungen['intraship_partnerid'] )$this->einstellungen['partnerid'] = $this->einstellungen['intraship_partnerid']; if(!isset($this->einstellungen['partnerid'])) { $this->einstellungen['partnerid'] = '01'; } if(!isset($this->einstellungen['partnerid']) || $this->einstellungen['partnerid']=="") { $this->einstellungen['partnerid'] = '01'; } if($this->einstellungen['intraship_countryISOCode']=="") $this->einstellungen['intraship_countryISOCode'] = "DE"; $this->errors = array(); $data = $this->einstellungen; $this->info = array( 'company_name' => $data['intraship_company_name'], 'street_name' => $data['intraship_street_name'], 'street_number' => $data['intraship_street_number'], 'zip' => $data['intraship_zip'], 'country' => $data['intraship_country'], 'countryISOCode' => $data['intraship_countryISOCode'], 'city' => $data['intraship_city'], 'email' => trim($data['intraship_email']), 'phone' => $data['intraship_phone'], 'internet' => $data['intraship_internet'], 'contact_person' => $data['intraship_contact_person'], 'export_reason' => $data['intraship_exportgrund'] ); if($land!=$this->einstellungen['intraship_countryISOCode']) { if(!empty($data['intraship_partnerid_welt']) && !empty($data['intraship_partnerid_welt']))$einstellungen['partnerid'] = $data['intraship_partnerid_welt']; } if(isset($data['intraship_retourenaccount']) && $data['intraship_retourenaccount'])$einstellungen['intraship_retourenaccount'] = $data['intraship_retourenaccount']; /* $this->einstellungen = $api_einstellungen; $this->info = $customer_info; if($this->einstellungen['partnerid']=="") $this->einstellungen['partnerid'] = '01'; $this->errors = array(); */ } public function GetBezeichnung() { return 'DHL Instrahship'; } function EinstellungenStruktur() { return array( 'user' => array('typ'=>'text','bezeichnung'=>'Benutzer:','info'=>'geschaeftskunden_api (Versenden/Intraship-Benutzername)'), 'signature' => array('typ'=>'text','bezeichnung'=>'Signature:','info'=>'Dhl_ep_test1 (Versenden/IntrashipPasswort)'), 'ekp' => array('typ'=>'text','bezeichnung'=>'EKP','info'=>'5000000000 (gültige DHL Kundennummer)'), 'partnerid' => array('typ'=>'text','bezeichnung'=>'Partner ID Inland:','info'=>'meist 01, manchmal 02, 03 etc. bzw. wenn vier- und drittletzte Stelle anders hier 4-stellig angeben z.B. 8601'), 'partnerid_welt' => array('typ'=>'text','bezeichnung'=>'Partner ID Welt:','info'=>'Versand Welt (vierstellig meist 5301)'), 'partnerid_connect' => array('typ'=>'text','bezeichnung'=>'Partner ID EU oder Connect:','info'=>'Versand von DE nach EU oder von AT in ausgewählte Länder Europas (Komplette EKP mit Endung 5401 in DE oder 8701 in AT)'), 'euistwelt'=>array('typ'=>'checkbox','bezeichnung'=>'Bei EU immer Welt verwenden:'), 'premiumversand'=>array('typ'=>'checkbox','bezeichnung'=>'Premiumversand verwenden:'), 'intraship_retourenaccount' => array('typ'=>'text','bezeichnung'=>'Retouren Account:','info'=>'14 Stellige DHL-Retoure Abrechnungsnummer'), 'intraship_retourenlabel'=>array('typ'=>'checkbox','bezeichnung'=>'Vorauswahl Retourenlabel:','info'=>'Druckt Retourenlabel mit'), 'intraship_company_name' => array('typ'=>'text','bezeichnung'=>'Versender Firma:'), 'intraship_street_name' => array('typ'=>'text','bezeichnung'=>'Versender Strasse:'), 'intraship_street_number' => array('typ'=>'text','bezeichnung'=>'Versender Strasse Nr.:'), //'intraship_name' => array('typ'=>'text','bezeichnung'=>'Versender Ansprechpartner:'), 'intraship_zip' => array('typ'=>'text','bezeichnung'=>'Versender PLZ:'), 'intraship_city' => array('typ'=>'text','bezeichnung'=>'Versender Stadt:'), 'intraship_country' => array('typ'=>'text','bezeichnung'=>'Versender Land:','info'=>'germany'), 'intraship_countryISOCode' => array('typ'=>'text','bezeichnung'=>'Versender ISO Code:','info'=>'DE'), 'intraship_email' => array('typ'=>'text','bezeichnung'=>'Versender E-Mail:'), 'intraship_phone' => array('typ'=>'text','bezeichnung'=>'Versender Telefon:'), 'intraship_internet' => array('typ'=>'text','bezeichnung'=>'Versender Web:'), 'intraship_contact_person' => array('typ'=>'text','bezeichnung'=>'Versender Ansprechpartner:'), 'intraship_account_owner' => array('typ'=>'text','bezeichnung'=>'Nachnahme Bank Inhaber:'), 'intraship_account_number' => array('typ'=>'text','bezeichnung'=>'Nachnahme Kontonummer:'), 'intraship_code' => array('typ'=>'text','bezeichnung'=>'Nachnahme BLZ:'), 'intraship_bank_name' => array('typ'=>'text','bezeichnung'=>'Nachnahme Bank Name:'), 'intraship_iban' => array('typ'=>'text','bezeichnung'=>'Nachnahme IBAN:'), 'intraship_bic' => array('typ'=>'text','bezeichnung'=>'Nachnahme BIC:'), 'nachnahmeextra' => array('typ'=>'checkbox','bezeichnung'=>'Nachnahme Gebühr aktivieren:'), 'nachnahmegebuehr' => array('typ'=>'text','bezeichnung'=>'Nachnahme Gebühr:','info'=>'z.B. 2,00 wird auf Rechnungsbetrag addiert, da DHL dies als extra Gebühr für sich behält'), 'intraship_exportgrund' => array('typ'=>'text','bezeichnung'=>'Export bzw. Sonstiges:','info'=>'z.B. Computer Zubehör'), 'intraship_WeightInKG' => array('typ'=>'text','bezeichnung'=>'Standard Gewicht:','info'=>'in KG'), 'runden' => array('typ'=>'checkbox','bezeichnung'=>'Gewicht runden auf Ganzzahl:'), 'intraship_LengthInCM' => array('typ'=>'text','bezeichnung'=>'Standard Länge:','info'=>'in cm'), 'intraship_WidthInCM' => array('typ'=>'text','bezeichnung'=>'Standard Breite:','info'=>'in cm'), 'intraship_HeightInCM' => array('typ'=>'text','bezeichnung'=>'Standard Höhe:','info'=>'in cm'), 'intraship_PackageType' => array('typ'=>'text','bezeichnung'=>'Standard Paket:','info'=>'z.B. PL'), 'intraship_Product' => array('typ'=>'text','bezeichnung'=>'Standard Produkt:','info'=>'z.B. in DE: V01PAK oder AT: V86PARCEL'), 'intraship_vorausverfuegung'=>array('typ'=>'select','bezeichnung'=>'Vorausverfügung: ', 'optionen' => array('-' => 'keine Vorausverfügung', 'IMMEDIATE' => 'Sofortige Rücksendung an den Absender', 'AFTER_DEADLINE' => 'Rücksenden an den Absender nach Ablauf der Frist', 'ABANDONMENT' => 'Preisgabe des Pakets durch den Absender (entgeltfrei)')), 'sperrgut' => array('typ'=>'checkbox','bezeichnung'=>'Sperrgut:'), 'keineversicherung' => array('typ'=>'checkbox','bezeichnung'=>'Extra Versicherung ausschalten:','info'=>'Option muss von Hand im Paketmarkendialog gesetzt werden.'), 'leitcodierung' => array('typ'=>'checkbox','bezeichnung'=>'Leitcodierung aktivieren:'), 'use_shipping_article_from_order_on_export' => ['typ' => 'checkbox', 'bezeichnung' => 'Bei Export Porto aus Auftrag senden:'], 'autotracking'=>array('typ'=>'checkbox','bezeichnung'=>'Tracking übernehmen:'), 'log'=>array('typ'=>'checkbox','bezeichnung'=>'Logging') ); } public function VersandartMindestgewicht() { if(!isset($this->einstellungen['intraship_WeightInKG']))return 2; if($this->einstellungen['intraship_WeightInKG'] === '')return 2; return str_replace(',','.',$this->einstellungen['intraship_WeightInKG']); } public function PaketmarkeDrucken($id, $sid) { $adressdaten = $this->GetAdressdaten($id, $sid); $ret = $this->Paketmarke($sid, $id, '', false, $adressdaten); if($sid === 'lieferschein'){ $deliverNoteRow = $this->app->DB->SelectRow( sprintf('SELECT adresse, projekt, versandart FROM lieferschein WHERE id = %d LIMIT 1', (int)$id ) ); $adresse = $deliverNoteRow['adresse']; $projekt = $deliverNoteRow['projekt']; $versandart = $deliverNoteRow['versandart']; $adressvalidation = 2; if($ret) { $adressvalidation = 1; } $tracking = ''; if(isset($adressdaten['tracking'])) { $tracking = $adressdaten['tracking']; } if(!isset($adressdaten['versandid'])) { $adressdaten['versandid'] = $this->app->DB->Select("SELECT id FROM versand WHERE abgeschlossen = 0 AND tracking = '' AND lieferschein = '$id' LIMIT 1"); } if(method_exists($this,'deleteTrackingFromUserdata')) { $this->deleteTrackingFromUserdata($tracking); } if(!isset($adressdaten['versandid'])) { $this->app->DB->Insert("INSERT INTO versand (versandunternehmen, tracking, versendet_am,abgeschlossen,lieferschein,freigegeben,firma,adresse,projekt,paketmarkegedruckt,adressvalidation) VALUES ('$versandart','$tracking',NOW(),1,'$id',1,'1','$adresse','$projekt',1,'$adressvalidation') "); $adressdaten['versandid'] = $this->app->DB->GetInsertID(); }elseif($tracking){ $this->app->DB->Update("UPDATE versand SET freigegeben = 1, abgeschlossen = 1, tracking =1, paketmarkegedruckt = 1, tracking= '$tracking',adressvalidation = '$adressvalidation', versendet_am = now() WHERE id = '".$adressdaten['versandid']."' LIMIT 1"); $this->app->DB->Update("UPDATE versand SET versandunternehmen = versandart WHERE id = '".$adressdaten['versandid']."' AND versandunternehmen = '' LIMIT 1"); $this->app->DB->Update("UPDATE versand SET versandunternehmen = '$versandart' WHERE id = '".$adressdaten['versandid']."' AND versandunternehmen = '' LIMIT 1"); } $auftragid = $this->app->DB->Select("SELECT auftragid FROM lieferschein WHERE id = '$id' LIMIT 1"); if($auftragid) { $this->app->DB->Update("UPDATE auftrag SET schreibschutz = 1, status = 'abgeschlossen' WHERE id = '$auftragid' AND status = 'freigegeben' LIMIT 1"); } if($adressvalidation == 1) { $this->app->erp->LieferscheinProtokoll($id, 'Paketmarke automatisch gedruckt'); if($adressdaten['versandid']) { return $adressdaten['versandid']; } }elseif($adressvalidation == 2) { $this->app->erp->LieferscheinProtokoll($id, 'automatisches Paketmarke Drucken fehlgeschlagen'); } } return $ret; } public function GetName3($adressdaten = null) { if($adressdaten === null){ return $this->app->Secure->GetPOST('name3'); } return !empty($adressdaten['name3'])?$adressdaten['name3']:''; } public function Paketmarke($doctyp, $docid, $target = '', $error = false, &$adressdaten = null) { $zusatz = ''; $typ = ''; $id = $docid; $sid = $doctyp; if($adressdaten === null) { $drucken = $this->app->Secure->GetPOST('drucken'); $anders = $this->app->Secure->GetPOST('anders'); $land = $this->app->Secure->GetPOST('land'); $tracking_again = $this->app->Secure->GetGET('tracking_again'); $versandmit = $this->app->Secure->GetPOST('versandmit'); $trackingsubmit = $this->app->Secure->GetPOST('trackingsubmit'); $versandmitbutton = $this->app->Secure->GetPOST('versandmitbutton'); $tracking = $this->app->Secure->GetPOST('tracking'); $trackingsubmitcancel = $this->app->Secure->GetPOST('trackingsubmitcancel'); //$retourenlabel = $this->app->Secure->GetPOST('retourenlabel'); $kg = $this->app->Secure->GetPOST('kg1'); $name = $this->app->Secure->GetPOST('name'); $name2 = $this->app->Secure->GetPOST('name2'); $strasse = $this->app->Secure->GetPOST('strasse'); $hausnummer = $this->app->Secure->GetPOST('hausnummer'); $plz = $this->app->Secure->GetPOST('plz'); $ort = $this->app->Secure->GetPOST('ort'); $email = $this->app->Secure->GetPOST('email'); $phone = $this->app->Secure->GetPOST('telefon'); //$nummeraufbeleg = $this->app->Secure->GetPOST('nummeraufbeleg'); $sid= $this->app->Secure->GetGET('sid'); }else{ $drucken = 1; $anders = ''; $land = $adressdaten['land']; $tracking_again = ''; $versandmit = ''; $trackingsubmit = ''; $versandmitbutton = ''; $tracking = ''; $trackingsubmitcancel = ''; //$retourenlabel = ''; $kg = $adressdaten['standardkg']; $name = $adressdaten['name']; $name2 = $adressdaten['name2']; $strasse = $adressdaten['strasse']; $hausnummer = $adressdaten['hausnummer']; $plz = $adressdaten['plz']; $ort = $adressdaten['ort']; $email = $adressdaten['email']; $phone = $adressdaten['phone']; //$nummeraufbeleg = 1;//$this->app->Secure->GetPOST('nummeraufbeleg'); } $name3 = $this->GetName3($adressdaten); if($adressdaten === null) { if ($zusatz === 'express') $this->app->Tpl->Set('ZUSATZ', 'Express'); if ($zusatz === 'export'){ $this->app->Tpl->Set('ZUSATZ', 'Export'); } if ($this->einstellungen['keineversicherung'] == '1') { $this->app->Tpl->Set('VERSICHERT', ''); $this->app->Tpl->Set('EXTRAVERSICHERT', ''); } if ($this->einstellungen['leitcodierung'] == '1') { $this->app->Tpl->Set('LEITCODIERUNG', ' checked="checked" '); } if ($this->einstellungen['intraship_retourenlabel'] == '1'){ $this->app->Tpl->Add('RETOURENLABEL', ' checked="checked" '); } $id = $this->app->Secure->GetGET('id'); $betrag = $this->app->Secure->GetPOST('betrag'); $nachnahme = $this->app->Secure->GetPOST('nachnahme'); $_altersfreigabe = $this->app->Secure->GetPOST('altersfreigabe'); $versichert = $this->app->Secure->GetPOST('versichert'); $leitcodierung = $this->app->Secure->GetPOST('leitcodierung'); $wunschtermin = $this->app->Secure->GetPOST('wunschtermin'); $wunschzeitraum = $this->app->Secure->GetPOST('wunschzeitraum'); $wunschlieferdatum = $this->app->Secure->GetPOST('wunschlieferdatum'); $versicherungssumme = $this->app->Secure->GetPOST('versicherungssumme'); if($leitcodierung!='1') { $this->einstellungen['leitcodierung']=false; } }else{ $betrag = isset($adressdaten['betrag'])?$adressdaten['betrag']:''; $nachnahme = isset($adressdaten['nachnahme'])?$adressdaten['nachnahme']:''; $_altersfreigabe = isset($adressdaten['altersfreigabe'])?$adressdaten['altersfreigabe']:''; $versichert = isset($adressdaten['altersfreigabe'])?$adressdaten['altersfreigabe']:''; $wunschtermin = isset($adressdaten['wunschtermin'])?$adressdaten['wunschtermin']:''; $wunschzeitraum = isset($adressdaten['wunschzeitraum'])?$adressdaten['wunschzeitraum']:''; $wunschlieferdatum = isset($adressdaten['wunschlieferdatum'])?$adressdaten['wunschlieferdatum']:''; $versicherungssumme = isset($adressdaten['versicherungssumme'])?$adressdaten['versicherungssumme']:''; } if($typ==='DHL' || $typ==='dhl'){ $versand = 'dhl'; } else if($typ==='Intraship'){ $versand = 'intraship'; } else { $versand = $typ; } if($sid === 'versand') { if($adressdaten === null) { $this->app->Tpl->Set("TRACKINGMANUELL",'  '); } //$projekt = $this->app->DB->Select("SELECT projekt FROM versand WHERE id='$id' LIMIT 1"); }else{ //$projekt = $this->app->DB->Select("SELECT projekt FROM lieferschein WHERE id='$id' LIMIT 1"); } /*$intraship_weightinkg = $this->app->DB->Select("SELECT intraship_weightinkg FROM projekt WHERE id='$projekt' LIMIT 1"); if($trackingsubmit == "" && $trackingsubmitcancel=="" && $drucken == "" && $tracking_again=="") { }*/ if($target) { $this->app->YUI->DatePicker('wunschlieferdatum'); } if(!$_POST && $target) { if($adressdaten) { $module = $doctyp; }else{ $module = $this->app->Secure->GetGET('module'); } //TODO Workarrond fuer lieferschein if($module==='lieferschein') { $lieferschein = $id; } else { $lieferschein = $this->app->DB->Select("SELECT lieferschein FROM versand WHERE id='$id' LIMIT 1"); if($lieferschein <=0) { $lieferschein=$id; } } //$projekt = $this->app->DB->Select("SELECT projekt FROM lieferschein WHERE id='$lieferschein' LIMIT 1"); //$lieferscheinnummer = "LS".$this->app->DB->Select("SELECT belegnr FROM lieferschein WHERE id='$lieferschein' LIMIT 1"); //pruefe ob es auftragsnummer gibt dann nehmen diese $auftragid = $this->app->DB->Select("SELECT auftragid FROM lieferschein WHERE id='$lieferschein' LIMIT 1"); if($auftragid > 0) { $versandbeschreibung = (String)$this->app->DB->Select("SELECT ap.beschreibung FROM auftrag_position ap INNER JOIN artikel art ON ap.artikel = art.id AND ap.auftrag = '$auftragid' AND art.porto = 1 LIMIT 1"); if($versandbeschreibung !== '') { if(preg_match_all('/([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{2,4})\s([0-9]{1,2})\:([0-9]{2})/i', $versandbeschreibung,$matches, PREG_OFFSET_CAPTURE)) { $_wunschdatum = $this->app->String->Convert((strlen($matches[3][0][0]) == 2?'20':'').$matches[3][0][0]."-".(strlen($matches[2][0][0]) == 1?'0':'').$matches[2][0][0]."-".(strlen($matches[1][0][0]) == 1?'0':'').$matches[1][0][0],'%1-%2-%3','%3.%2.%1'); $_wunschzeit = (String)(strlen($matches[4][0][0] == 1?'0':'').$matches[4][0][0]); $this->app->Tpl->Set('WUNSCHTERMIN', ' checked="checked" '); $this->app->Tpl->Set('WUNSCHLIEFERDATUM', $_wunschdatum); switch($_wunschzeit) { case '10': $this->app->Tpl->Set('WUNSCH10001200', ' checked="checked" '); break; case '12': $this->app->Tpl->Set('WUNSCH12001400', ' checked="checked" '); break; case '14': $this->app->Tpl->Set('WUNSCH14001600', ' checked="checked" '); break; case '16': $this->app->Tpl->Set('WUNSCH16001800', ' checked="checked" '); break; case '18': $this->app->Tpl->Set('WUNSCH18002000', ' checked="checked" '); break; case '19': $this->app->Tpl->Set('WUNSCH19002100', ' checked="checked" '); break; } } } } }elseif($target && $_POST) { switch(substr($wunschzeitraum,0,2)) { case '10': $this->app->Tpl->Set('WUNSCH10001200', ' checked="checked" '); break; case '12': $this->app->Tpl->Set('WUNSCH12001400', ' checked="checked" '); break; case '14': $this->app->Tpl->Set('WUNSCH14001600', ' checked="checked" '); break; case '16': $this->app->Tpl->Set('WUNSCH16001800', ' checked="checked" '); break; case '18': $this->app->Tpl->Set('WUNSCH18002000', ' checked="checked" '); break; case '19': $this->app->Tpl->Set('WUNSCH19002100', ' checked="checked" '); break; } if($wunschtermin)$this->app->Tpl->Set('WUNSCHTERMIN', ' checked="checked" '); $this->app->Tpl->Set('WUNSCHLIEFERDATUM', $wunschlieferdatum); } if($trackingsubmit!='' || $trackingsubmitcancel!='') { if($sid==='versand') { // falche tracingnummer bei DHL da wir in der Funktion PaketmarkeDHLEmbedded sind if((strlen(trim($tracking)) < 12 || strlen(trim($tracking)) > 21) && $trackingsubmitcancel=="" && ($typ=="DHL" || $typ=="Intraship") && $this->einstellungen['intraship_countryISOCode']=="DE") { header("Location: index.php?module=versanderzeugen&action=frankieren&id=$id&land=$land&tracking_again=1"); exit; } if(method_exists($this,'deleteTrackingFromUserdata')) { $this->deleteTrackingFromUserdata($tracking); } $this->app->DB->Update("UPDATE versand SET versandunternehmen='$versand', tracking='$tracking', versendet_am=NOW(),versendet_am_zeitstempel=NOW(), abgeschlossen='1',logdatei=NOW() WHERE id='$id' LIMIT 1"); $this->app->erp->VersandAbschluss($id); $this->app->erp->RunHook('versanderzeugen_frankieren_hook1', 1, $id); //versand mail an kunden $this->app->erp->Versandmail($id); $weiterespaket=$this->app->Secure->GetPOST('weiterespaket'); $lieferscheinkopie=$this->app->Secure->GetPOST('lieferscheinkopie'); if($weiterespaket=='1') { if($lieferscheinkopie=='1') { $lieferscheinkopie=0; } else { $lieferscheinkopie=1; } //$this->app->erp->LogFile("Lieferscheinkopie $lieferscheinkopie"); $all = $this->app->DB->SelectArr("SELECT * FROM versand WHERE id='$id' LIMIT 1"); $this->app->DB->Insert("INSERT INTO versand (id,adresse,rechnung,lieferschein,versandart,projekt,bearbeiter,versender,versandunternehmen,firma, keinetrackingmail,gelesen,paketmarkegedruckt,papieregedruckt,weitererlieferschein) VALUES ('','{$all[0]['adresse']}','{$all[0]['rechnung']}','{$all[0]['lieferschein']}','{$all[0]['versandart']}','{$all[0]['projekt']}', '{$all[0]['bearbeiter']}','{$all[0]['versender']}','{$all[0]['versandunternehmen']}', '{$all[0]['firma']}','{$all[0]['keinetrackingmail']}','{$all[0]['gelesen']}',0,$lieferscheinkopie,1)"); $newid = $this->app->DB->GetInsertID(); header("Location: index.php?module=versanderzeugen&action=einzel&id=$newid"); } else { header("Location: index.php?module=versanderzeugen&action=offene"); } exit; } //direkt aus dem Lieferschein if($id > 0) { $adresse = $this->app->DB->Select("SELECT adresse FROM lieferschein WHERE id='$id' LIMIT 1"); $projekt = $this->app->DB->Select("SELECT projekt FROM lieferschein WHERE id='$id' LIMIT 1"); $kg = $this->app->Secure->GetPOST('kg1'); if($kg=='') { $kg = $this->app->erp->VersandartMindestgewicht($id); } if(method_exists($this,'deleteTrackingFromUserdata')) { $this->deleteTrackingFromUserdata($tracking); } $this->app->DB->Insert("INSERT INTO versand (id,versandunternehmen, tracking, versendet_am,abgeschlossen,lieferschein, freigegeben,firma,adresse,projekt,gewicht,paketmarkegedruckt,anzahlpakete) VALUES ('','$versand','$tracking',NOW(),1,'$id',1,'".$this->app->User->GetFirma()."','$adresse','$projekt','$kg','1','1') "); $versandId = $this->app->DB->GetInsertID(); $auftrag = $this->app->DB->Select("SELECT auftragid FROM lieferschein WHERE id = '$id'"); $shop = $this->app->DB->Select("SELECT shop FROM auftrag WHERE id = '$auftrag' LIMIT 1"); $auftragabgleich=$this->app->DB->Select("SELECT auftragabgleich FROM shopexport WHERE id='$shop' LIMIT 1"); if($shop > 0 && $auftragabgleich=="1") { //$this->LogFile("Tracking gescannt"); $this->app->remote->RemoteUpdateAuftrag($shop,$auftrag); } $this->app->erp->sendPaymentStatus($versandId); $this->app->Location->execute('index.php?module=lieferschein&action=paketmarke&id='.$id); } } if($versandmitbutton!='') { if($sid==='versand') { $this->app->DB->Update("UPDATE versand SET versandunternehmen='$versandmit', versendet_am=NOW(),versendet_am_zeitstempel=NOW(),abgeschlossen='1' WHERE id='$id' LIMIT 1"); $this->app->erp->VersandAbschluss($id); //versand mail an kunden $this->app->erp->Versandmail($id); header("Location: index.php?module=versanderzeugen&action=offene"); exit; } } if($sid==='versand') { // wenn paketmarke bereits gedruckt nur tracking scannen $paketmarkegedruckt = $this->app->DB->Select("SELECT paketmarkegedruckt FROM versand WHERE id='$id' LIMIT 1"); if($paketmarkegedruckt>=1) $tracking_again=1; } if($anders!='') { } /*if(!($drucken!='' || $tracking_again=='1') || $error) { if($sid==='versand') { $tid = $this->app->DB->Select("SELECT lieferschein FROM versand WHERE id='$id' LIMIT 1"); $rechnung = $this->app->DB->Select("SELECT rechnung FROM versand WHERE id='$id' LIMIT 1"); $sid = 'lieferschein'; } else { $tid = $id; } }*/ else if(($drucken!='' || $tracking_again=='1') && !$error) { if($tracking_again!='1') { $kg = (float)str_replace(',','.',$kg); $abholdatum = $this->app->Secure->GetPOST("abholdatum"); $retourenlabel= $this->app->Secure->GetPOST("retourenlabel"); if($retourenlabel) { $this->app->Tpl->Set('RETOURENLABEL', ' checked="checked" '); $zusaetzlich['retourenlabel'] = 1; } if($abholdatum){ $this->app->Tpl->Set('ABHOLDATUM',$abholdatum); $zusaetzlich['abholdatum'] = date('Y-m-d', strtotime($abholdatum)); $this->app->User->SetParameter("paketmarke_abholdatum",$zusaetzlich['abholdatum']); } $kg = (float)(str_replace(',','.',$kg)); $kg = round($kg,2); $name = mb_substr($this->app->erp->ReadyForPDF($name), 0, 30, 'UTF-8'); $name2 = $this->app->erp->ReadyForPDF($name2); $name3 = $this->app->erp->ReadyForPDF($name3); $strasse = $this->app->erp->ReadyForPDF($strasse); $hausnummer = $this->app->erp->ReadyForPDF($hausnummer); $plz = $this->app->erp->ReadyForPDF($plz); $ort = $this->app->erp->ReadyForPDF(html_entity_decode($ort)); $land = $this->app->erp->ReadyForPDF($land); if(is_numeric($name) && strtolower($strasse)==='packstation' && $name2!='') { $tmp_name = $name; $name = $name2; $name2 =$tmp_name; } //SetKonfigurationValue($name,$value) if($adressdaten === null){ $module = $this->app->Secure->GetGET('module'); }else{ $module = $doctyp; } //TODO Workarrond fuer lieferschein if($module==='lieferschein') { $lieferschein = $id; $projekt = $this->app->DB->Select("SELECT projekt FROM lieferschein WHERE id='$lieferschein' LIMIT 1"); $versandId = 0; } elseif($module === 'retoure') { $lieferschein = $this->app->DB->Select("SELECT lieferschein FROM retoure WHERE id='$id' LIMIT 1"); $projekt = $this->app->DB->Select("SELECT projekt FROM retoure WHERE id='$id' LIMIT 1"); $versandId = 0; } else { $versandId = $id; $lieferschein = $this->app->DB->Select("SELECT lieferschein FROM versand WHERE id='$id' LIMIT 1"); if($lieferschein <=0) { $lieferschein=$id; } $projekt = $this->app->DB->Select("SELECT projekt FROM lieferschein WHERE id='$lieferschein' LIMIT 1"); } $lieferscheinnummer = 'LS'.$this->app->DB->Select("SELECT belegnr FROM lieferschein WHERE id='$lieferschein' LIMIT 1"); //pruefe ob es auftragsnummer gibt dann nehmen diese $auftragid = $this->app->DB->Select("SELECT auftragid FROM lieferschein WHERE id='$lieferschein' LIMIT 1"); if($auftragid > 0) { $nummeraufbeleg = 'AB'.$this->app->DB->Select("SELECT belegnr FROM auftrag WHERE id='$auftragid' LIMIT 1"); } else { $nummeraufbeleg = $lieferscheinnummer; } $rechnung = $this->app->DB->Select("SELECT id FROM rechnung WHERE lieferschein='$lieferschein' LIMIT 1"); $invoiceCurrency = null; $rechnung_data = $this->app->DB->SelectArr("SELECT * FROM rechnung WHERE id='$rechnung' LIMIT 1"); if($rechnung_data) { $rechnungsnummer = $rechnung_data[0]['belegnr']; $invoiceCurrency = $rechnung_data[0]['waehrung']; } // check if proformarechnung exists $proformarechnungsnummer = $this->app->DB->Select("SELECT belegnr FROM proformarechnung WHERE lieferschein='$lieferschein' AND belegnr!='' LIMIT 1"); if($proformarechnungsnummer!="") { $nummeraufbeleg = $proformarechnungsnummer; } $teillieferungvon = $this->app->DB->Select("SELECT teillieferungvon FROM lieferschein WHERE id='$lieferschein' LIMIT 1"); $teillieferungvon2 = $this->app->DB->Select("SELECT id FROM lieferschein WHERE teillieferungvon='$lieferschein' LIMIT 1"); $rechnungssumme = $rechnung_data[0]['soll']; //XXX $shippingFee = 0; if($rechnung && $teillieferungvon <=0 && $teillieferungvon2 <=0){ $invoiceData = $this->app->DB->SelectRow( "SELECT `zahlungsweise`, `soll`, `waehrung` FROM `rechnung` WHERE `id` = '{$rechnung}' LIMIT 1" ); $zahlungsweise = $invoiceData['zahlungsweise']; $soll = $invoiceData['soll']; $invoiceCurrency = $invoiceData['waehrung']; $this->app->Tpl->Set('BETRAG',$soll); if($zahlungsweise==='nachnahme'){ $this->app->Tpl->Set('NACHNAHME', 'checked'); } if($soll >= 500 && $soll <= 2500 && $this->einstellungen['keineversicherung']!='1'){ $this->app->Tpl->Set('VERSICHERT', 'checked'); } if($soll > 2500 && $this->einstellungen['keineversicherung']!='1'){ $this->app->Tpl->Set('EXTRAVERSICHERT', 'checked'); } $artikel_positionen = $this->app->DB->SelectArr( "SELECT rp.*,if(lp.zolltarifnummer!='',lp.zolltarifnummer,rp.zolltarifnummer) as zolltarifnummer FROM rechnung_position rp LEFT JOIN lieferschein_position lp ON lp.auftrag_position_id=rp.auftrag_position_id AND lp.auftrag_position_id > 0 WHERE rp.rechnung='$rechnung'"); if($versicherungssumme==0) { $versicherungssumme = $this->app->DB->Select("SELECT soll FROM rechnung WHERE id = '$rechnung' LIMIT 1"); } } else { // wenn mindestens ein zollwert definiert ist dann nur diese nehmen $checkzoll = $this->app->DB->Select("SELECT lp.id FROM lieferschein_position lp WHERE lp.lieferschein='$lieferschein' AND lp.zolleinzelwert>0 LIMIT 1"); if($checkzoll > 0) { $artikel_positionen = $this->app->DB->SelectArr("SELECT lp.menge, lp.bezeichnung,if(lp.zolleinzelwert>0,lp.zolleinzelwert,(ap.preis-(ap.preis/100*ap.rabatt))) as preis, lp.zolltarifnummer, if(lp.zollwaehrung!='',lp.zollwaehrung,ap.waehrung) as waehrung,lp.artikel, lp.zolltarifnummer FROM lieferschein_position lp LEFT JOIN auftrag_position ap ON ap.id=lp.auftrag_position_id LEFT JOIN artikel a ON a.id=lp.artikel WHERE lp.lieferschein='$lieferschein' AND ap.explodiert!=1 AND a.lagerartikel=1"); $rechnungssumme = $this->app->DB->Select("SELECT SUM(lp.menge*if(lp.zolleinzelwert>0,lp.zolleinzelwert,(ap.preis-(ap.preis/100*ap.rabatt)))) FROM lieferschein_position lp LEFT JOIN auftrag_position ap ON ap.id=lp.auftrag_position_id LEFT JOIN artikel a ON a.id=ap.artikel WHERE lp.lieferschein='$lieferschein' AND ap.explodiert!=1 AND a.porto!=1 "); if($this->app->erp->Export($land) && $this->einstellungen['use_shipping_article_from_order_on_export'] == 1) { $shippingFee = $this->app->DB->Select( "SELECT SUM(ap.menge * IF(ap.zolleinzelwert>0, ap.zolleinzelwert, (ap.preis - (ap.preis / 100 * ap.rabatt)))) FROM `lieferschein` AS `l` INNER JOIN `auftrag_position` AS `ap` ON ap.auftrag=l.auftragid INNER JOIN `artikel` AS `a` ON a.id=ap.artikel WHERE l.id = '{$lieferschein}' AND ap.explodiert != 1 AND a.porto = 1 " ); } else{ $shippingFee = $this->app->DB->Select("SELECT SUM(lp.menge*if(lp.zolleinzelwert>0,lp.zolleinzelwert,(ap.preis-(ap.preis/100*ap.rabatt)))) FROM lieferschein_position lp LEFT JOIN auftrag_position ap ON ap.id=lp.auftrag_position_id LEFT JOIN artikel a ON a.id=ap.artikel WHERE lp.lieferschein='$lieferschein' AND ap.explodiert!=1 AND a.porto=1 "); } } else { $artikel_positionen = $this->app->DB->SelectArr("SELECT lp.menge, lp.bezeichnung,(ap.preis-(ap.preis/100*ap.rabatt)) as preis, lp.zolltarifnummer, if(lp.zollwaehrung!='',lp.zollwaehrung,ap.waehrung) as waehrung,lp.artikel, lp.zolltarifnummer FROM lieferschein_position lp LEFT JOIN auftrag_position ap ON ap.id=lp.auftrag_position_id LEFT JOIN artikel a ON a.id=lp.artikel WHERE lp.lieferschein='$lieferschein' AND a.lagerartikel=1 "); $rechnungssumme = $this->app->DB->Select("SELECT SUM(lp.menge*(ap.preis-(ap.preis/100*ap.rabatt))) FROM lieferschein_position lp LEFT JOIN auftrag_position ap ON ap.id=lp.auftrag_position_id LEFT JOIN artikel a ON a.id=ap.artikel WHERE lp.lieferschein='$lieferschein' AND a.porto!=1 "); if($this->app->erp->Export($land) && $this->einstellungen['use_shipping_article_from_order_on_export'] == 1) { $shippingFee = $this->app->DB->Select( "SELECT SUM(ap.menge * (ap.preis-ap.preis / 100 * ap.rabatt)) FROM `lieferschein` AS `l` INNER JOIN `auftrag_position` AS `ap` ON ap.auftrag=l.auftragid INNER JOIN `artikel` AS `a` ON a.id=ap.artikel WHERE l.id = '{$lieferschein}' AND ap.explodiert != 1 AND a.porto = 1 " ); } else{ $shippingFee = $this->app->DB->Select("SELECT SUM(lp.menge*(ap.preis-(ap.preis/100*ap.rabatt))) FROM lieferschein_position lp LEFT JOIN auftrag_position ap ON ap.id=lp.auftrag_position_id LEFT JOIN artikel a ON a.id=ap.artikel WHERE lp.lieferschein='$lieferschein' AND a.porto=1 "); } } if($versicherungssumme==0) $versicherungssumme = $rechnungssumme; } $gesamtgewichtzoll = $this->app->DB->Select("SELECT SUM(a.gewicht*lp.menge) FROM lieferschein_position lp LEFT JOIN artikel a ON a.id=lp.artikel WHERE lp.lieferschein='$lieferschein' AND a.lagerartikel=1"); $gesamtgewichtzoll = $gesamtgewichtzoll / $this->app->erp->GewichtzuKgFaktor(); if( ($kg>0 && $gesamtgewichtzoll > 0) && ($gesamtgewichtzoll > $kg)) { $gewichtfaktor = $kg/$gesamtgewichtzoll; } else $gewichtfaktor=1; $altersfreigabe = 0; $cartikel_positionen = !empty($artikel_positionen)?count($artikel_positionen):0; for($i=0;$i<$cartikel_positionen;$i++) { $artikelaltersfreigabe = (int)$this->app->DB->Select("SELECT altersfreigabe FROM artikel WHERE id = '".$artikel_positionen[$i]['artikel']."' LIMIT 1"); if($artikelaltersfreigabe > $altersfreigabe)$altersfreigabe = $artikelaltersfreigabe; //$lagerartikel = $this->app->DB->Select("SELECT lagerartikel FROM artikel WHERE id='".$artikel_positionen[$i]['artikel']."' LIMIT 1"); //if($lagerartikel=="1") { if($artikel_positionen[$i]['waehrung'] == ''){ if(!empty($invoiceCurrency)){ $artikel_positionen[$i]['waehrung'] = $invoiceCurrency; }else{ $artikel_positionen[$i]['waehrung'] = 'EUR'; } } $gewicht = $this->app->DB->Select("SELECT gewicht FROM artikel WHERE id='".$artikel_positionen[$i]['artikel']."' LIMIT 1"); //$porto = $this->app->DB->Select("SELECT porto FROM artikel WHERE id='".$artikel_positionen[$i]['artikel']."' LIMIT 1"); $lagerartikel = $this->app->DB->Select("SELECT lagerartikel FROM artikel WHERE id='".$artikel_positionen[$i]['artikel']."' LIMIT 1"); $zolltarifnummer = ($artikel_positionen[$i]['zolltarifnummer']!="" && $artikel_positionen[$i]['zolltarifnummer']!="0"?$artikel_positionen[$i]['zolltarifnummer']:$this->app->DB->Select("SELECT zolltarifnummer FROM artikel WHERE id='".$artikel_positionen[$i]['artikel']."' LIMIT 1")); $herkunftsland = $this->app->DB->Select("SELECT herkunftsland FROM artikel WHERE id='".$artikel_positionen[$i]['artikel']."' LIMIT 1"); if(strlen($herkunftsland) > 2) { $herkunftsland = $this->app->erp->FindISOCountry($herkunftsland); } if(!$herkunftsland || strlen($herkunftsland) > 2) { $herkunftsland = 'DE'; } if($gewicht > 0) { $gewicht = $artikel_positionen[$i]['menge']*$gewicht / $this->app->erp->GewichtzuKgFaktor(); } else { $gewicht = 0.1*$artikel_positionen[$i]['menge']; } //if($gewicht > 0) $gewicht = $artikel_positionen[$i]['menge']*$gewicht; //else $gewicht = 0.1*$artikel_positionen[$i]['menge']; if($lagerartikel!='1') { $gewicht=0; } if( $gewicht > 0) { $artikel[] = array( 'description'=>mb_substr($artikel_positionen[$i]['bezeichnung'], 0, 40, 'UTF-8'), 'countrycode'=>$herkunftsland, 'commodity_code'=>$zolltarifnummer, 'amount'=>$artikel_positionen[$i]['menge'], 'netweightinkg'=>$gewicht*$gewichtfaktor, 'grossweightinkg'=>$gewicht*$gewichtfaktor, 'value'=>$artikel_positionen[$i]['preis'], 'currency'=>$artikel_positionen[$i]['waehrung']); } } } $data = $this->einstellungen; if($land!=$this->einstellungen['intraship_countryISOCode']) { if(!empty($data['partnerid_welt']) && !empty($data['partnerid_welt'])) { $this->einstellungen['partnerid'] = $data['partnerid_welt']; } } if(isset($data['intraship_retourenaccount']) && $data['intraship_retourenaccount']) { $einstellungen['intraship_retourenaccount'] = $data['intraship_retourenaccount']; } // your company info /*$info = array( 'company_name' => $data['intraship_company_name'], 'street_name' => $data['intraship_street_name'], 'street_number' => $data['intraship_street_number'], 'zip' => $data['intraship_zip'], 'country' => $data['intraship_country'], 'city' => $data['intraship_city'], 'email' => trim($data['intraship_email']), 'phone' => $data['intraship_phone'], 'internet' => $data['intraship_internet'], 'contact_person' => $data['intraship_contact_person'], 'export_reason' => $data['intraship_exportgrund'] );*/ // receiver details if (! (float) $rechnungssumme && !empty($artikel_positionen)) { $fullAmount = 0; foreach ($artikel_positionen as $position) { if (is_array($position) && array_key_exists('preis', $position)) { $fullAmount += (float) $position['preis'] * (float) $position['menge']; } } $rechnungssumme = $fullAmount; } $rechnungssumme = max($rechnungssumme, 1); $customer_details = array( 'name1' => $name, 'name2' => $name2, 'c/o' => $name3, 'name3' => $name3, 'street_name' => $strasse, 'street_number' => $hausnummer, // 'country' => 'germany', 'country_code' => $land, 'zip' => $plz, 'city' => $ort, 'email' => trim($email), 'ordernumber' => $nummeraufbeleg, 'invoicenumber' => $rechnungsnummer, 'proformanumber' => $proformarechnungsnummer, 'weight' => $kg, 'amount' => str_replace(",",".",$rechnungssumme), 'shippingFee' => str_replace(",",".",$shippingFee), 'currency' => !empty($artikel_positionen[0]['waehrung']) ? $artikel_positionen[0]['waehrung'] : 'EUR' ); if(!empty($phone)){ $customer_details['phone'] = $phone; } if(!is_null($zusaetzlich) && isset($zusaetzlich['abholdatum'])) { $customer_details['abholdatum'] = $zusaetzlich['abholdatum']; } if(!is_null($zusaetzlich) && isset($zusaetzlich['retourenlabel'])) { $customer_details['intraship_retourenlabel'] = $zusaetzlich['retourenlabel']; } if($altersfreigabe > 0 && $_altersfreigabe) { $customer_details['altersfreigabe'] = $altersfreigabe; } if($versichert && $versicherungssumme) { $customer_details['versichert'] = $versichert; $customer_details['versicherungssumme'] = $versicherungssumme; } if($wunschtermin)$customer_details['wunschtermin'] = $wunschtermin; if($wunschzeitraum)$customer_details['wunschzeitraum'] = $wunschzeitraum; if($wunschlieferdatum) { if(strpos($wunschlieferdatum,'.') !== false) { $customer_details['wunschlieferdatum'] = $this->app->String->Convert($wunschlieferdatum,'%1.%2.%3','%3-%2-%1'); }else{ $customer_details['wunschlieferdatum'] = $wunschlieferdatum; } } //$dhl = new DHLBusinessShipment($einstellungen, $info); $shipment_details['WeightInKG'] = $data['intraship_WeightInKG']; $shipment_details['LengthInCM'] = $data['intraship_LengthInCM']; $shipment_details['WidthInCM'] = $data['intraship_WidthInCM']; $shipment_details['HeightInCM'] = $data['intraship_HeightInCM']; $shipment_details['PackageType'] = $data['intraship_PackageType']; if($data['intraship_note']=='') { $data['intraship_note'] = $rechnungsnummer; } if($nachnahme && $betrag > 0) { $bank_details = array( 'account_owner' => $data['intraship_account_owner'], 'account_number' => $data['intraship_account_number'], 'bank_code' => $data['intraship_bank_code'], 'bank_name' => $data['intraship_bank_name'], 'note' => $data['intraship_note'], 'iban' => $data['intraship_iban'], 'bic' => $data['intraship_bic'] ); //if($this->einstellungen['nachnahmeextra']=="1") $betrag = $betrag + str_replace(',','.',$this->einstellungen['nachnahmegebuehr']); $cod_details = array( 'amount'=>str_replace(',','.',$betrag), 'currency'=> !empty($artikel_positionen[0]['waehrung']) ? $artikel_positionen[0]['waehrung'] : 'EUR' ); } if($land==$this->einstellungen['intraship_countryISOCode']) { if($nachnahme && $betrag > 0) { $response = $this->createNationalShipment($customer_details,$shipment_details,$bank_details,$cod_details); } else { //$customer_details['ordernumber']=""; $response = $this->createNationalShipment($customer_details,$shipment_details); } } else { $customer_details['EU'] = $this->app->erp->IstEU($land)?1:0; $response = $this->createWeltShipment($customer_details,$shipment_details,$bank_details,$cod_details,$artikel); if($response) { // Zoll Papiere //$dhl = new DHLBusinessShipment($einstellungen, $info); $response_export = $this->GetExportDocDD($response['shipment_number']); }else{ $dump = $this->app->erp->VarAsString($this->errors); $this->app->erp->Protokoll("Fehler DHL Versenden API beim Erstellen Label fuer Versand $id LS $lieferschein",$dump); } } $data['intraship_drucker'] = $this->paketmarke_drucker; $data['druckerlogistikstufe2'] = $this->export_drucker; if($this->app->erp->GetStandardPaketmarkendrucker()>0){ $data['intraship_drucker'] = $this->app->erp->GetStandardPaketmarkendrucker(); } if($this->app->erp->GetInstrashipExport($projekt)>0){ $data['druckerlogistikstufe2'] = $this->app->erp->GetInstrashipExport($projekt); } if($response) { //$response['label_url'] //$response['shipment_number'] $tmppdf = $this->app->erp->DownloadFile($response['label_url'],'Intraship_Versand_'.$id.'_','pdf'); if($this->einstellungen['autotracking']=='1'){ $this->SetTracking($response['shipment_number'],$sid==='versand'?$id:0, $lieferschein); } $this->app->erp->Protokoll("Erfolg Paketmarke Drucker ".$data['intraship_drucker']," Datei: $tmppdf URL: ".$response['label_url']); $spoolerId = $this->app->printer->Drucken($data['intraship_drucker'],$tmppdf); if($versandId && $spoolerId) { $this->app->DB->Update( sprintf( 'UPDATE versand SET lastspooler_id = %d, lastprinter = %d WHERE id = %d', $spoolerId, $data['intraship_drucker'], $versandId ) ); } if($module === 'retoure') { if(@is_file($tmppdf) && @filesize($tmppdf)) { $fileid = $this->app->erp->CreateDatei('Paketmarke_'.$this->app->DB->Select("SELECT belegnr FROM retoure WHERE id = '$id' LIMIT 1").'.pdf', 'Anhang', '', "", $tmppdf, $this->app->DB->real_escape_string($this->app->User->GetName())); $this->app->erp->AddDateiStichwort($fileid, 'anhang', 'retoure', $id); } } unlink($tmppdf); } else { $dump = $this->app->erp->VarAsString($this->errors); $this->app->erp->Protokoll("Fehler DHL Versenden API beim Erstellen Label fuer Versand $id LS $lieferschein",$dump); } if($response_export) { $tmppdf = $this->app->erp->DownloadFile($response_export['export_url'],"Export_Intraship_Versand_".$id."_","pdf"); $this->app->erp->Protokoll("Erfolg Export Dokumente Drucker ".$data['druckerlogistikstufe2']," Datei: $tmppdf URL: ".$response_export['export_url']); $spoolerId = $this->app->printer->Drucken($data['druckerlogistikstufe2'],$tmppdf); if($versandId && $spoolerId) { $this->app->DB->Update( sprintf( 'UPDATE versand SET lastexportspooler_id = %d, lastexportprinter = %d WHERE id = %d', $spoolerId, $data['druckerlogistikstufe2'], $versandId ) ); } if($module === 'retoure') { if(@is_file($tmppdf) && @filesize($tmppdf)) { $fileid = $this->app->erp->CreateDatei('Export_'.$this->app->DB->Select("SELECT belegnr FROM retoure WHERE id = '$id' LIMIT 1").'.pdf', 'Anhang', '', "", $tmppdf, $this->app->DB->real_escape_string($this->app->User->GetName())); $this->app->erp->AddDateiStichwort($fileid, 'anhang', 'retoure', $id); } } unlink($tmppdf); } elseif($land!=$this->einstellungen['intraship_countryISOCode']) { $dump = $this->app->erp->VarAsString($this->errors); $this->app->erp->Protokoll("Fehler DHL Versenden Export Dokument API beim Erstellen fuer Versand $id LS $lieferschein",$dump); } if($adressdaten) { if($response) { $adressdaten['tracking'] = $response['shipment_number']; return true; } return false; } if($response){ return false; } return $this->errors; } if($this->app->Secure->GetPOST('drucken') || $this->app->Secure->GetPOST('anders')) { }else{ if(empty($this->einstellungen['retourenaccount']) || !$this->einstellungen['retourenaccount']) { $this->app->Tpl->Add('VORRETOURENLABEL', ''); } if(isset($this->einstellungen['retourenlabel']) && $this->einstellungen['retourenlabel']) { $this->app->Tpl->Add('RETOURENLABEL',' checked="checked" '); } if($target) { $this->app->Tpl->Set('VERSICHERUNGSSUMME',$versicherungssumme); } } }else{ if($adressdaten === null){ $module = $this->app->Secure->GetGET('module'); } else { $module = $doctyp; } //TODO Workarrond fuer lieferschein if($module==='lieferschein') { $lieferschein = $id; //$projekt = $this->app->DB->Select("SELECT projekt FROM lieferschein WHERE id='$lieferschein' LIMIT 1"); }elseif($module === 'retoure') { $lieferschein = $this->app->DB->Select("SELECT lieferschein FROM retoure WHERE id='$id' LIMIT 1"); //$projekt = $this->app->DB->Select("SELECT projekt FROM retoure WHERE id='$id' LIMIT 1"); } else { $lieferschein = $this->app->DB->Select("SELECT lieferschein FROM versand WHERE id='$id' LIMIT 1"); //$projekt = $this->app->DB->Select("SELECT projekt FROM lieferschein WHERE id='$lieferschein' LIMIT 1"); if($lieferschein <=0) { $lieferschein=$id; } } //$lieferscheinnummer = "LS".$this->app->DB->Select("SELECT belegnr FROM lieferschein WHERE id='$lieferschein' LIMIT 1"); //pruefe ob es auftragsnummer gibt dann nehmen diese $auftragid = $this->app->DB->Select("SELECT auftragid FROM lieferschein WHERE id='$lieferschein' LIMIT 1"); if($auftragid > 0) { //$nummeraufbeleg = "AB".$this->app->DB->Select("SELECT belegnr FROM auftrag WHERE id='$auftragid' LIMIT 1"); if($versicherungssumme==0) $versicherungssumme = $this->app->DB->Select("SELECT gesamtsumme FROM auftrag WHERE id='$auftragid' LIMIT 1"); } else { //$nummeraufbeleg = $lieferscheinnummer; } $rechnung = $this->app->DB->Select("SELECT id FROM rechnung WHERE lieferschein='$lieferschein' LIMIT 1"); if($rechnung && $versicherungssumme==0) { $versicherungssumme = $this->app->DB->Select("SELECT soll FROM rechnung WHERE id='$rechnung' LIMIT 1"); } if($target) { $this->app->Tpl->Set('VERSICHERUNGSSUMME',$versicherungssumme); } } // Schutz keine Retouren im Ausland $checkland = $this->app->DB->Select("SELECT land FROM lieferschein WHERE id='$lieferschein' LIMIT 1"); if($checkland!=$this->app->erp->Firmendaten('land')){ $this->app->Tpl->Set('RETOURENLABEL', ''); } //$this->info = $customer_info; if($target) { $this->app->YUI->HideFormular('versichert',array('checked'=>'','unchecked'=>'versicherung')); $this->app->YUI->HideFormular('wunschtermin',array('checked'=>'','unchecked'=>'wunschzeitraum')); $this->app->Tpl->Parse($target,'versandarten_dhlversenden.tpl'); } } public function Export($daten) { } function Trackinglink($tracking, &$notsend, &$link, &$rawlink) { $notsend = 0; $rawlink = 'http://nolp.dhl.de/nextt-online-public/set_identcodes.do?lang=de&idc='.$tracking; $link = 'DHL Versand: '.$tracking.' ('.$rawlink.')'; return true; } private function log($message) { if (isset($this->einstellungen['log'])) { if (is_array($message) || is_object($message)) { $this->logger->debug('DHL parameter', (array) $message); } else { $this->logger->debug($message); } } } function buildClient($retoure='', $altersfreigabe = false) { $header = $this->buildAuthHeader(); $location = self::PRODUCTION_URL; //$location = self::SANDBOX_URL; $auth_params = array( 'login' => 'wawision_1', 'password' => '3KAuCebZmr9bu0ERtNHKcTI8sN5aY9', 'location' => $location, 'trace' => $this->einstellungen['log']?1:0, 'connection_timeout' => 30 ); $this->log($auth_params); try { $this->client = new SoapClient($altersfreigabe?self::API_URL22:($retoure?self::API_URL2:self::API_URL), $auth_params); } catch(SoapFault $exception) { die('Verbindungsfehler: '.$exception->getMessage()); $this->errors[] = 'Verbindungsfehler: '.$exception->getMessage(); return; } try { $this->client->__setSoapHeaders($header); } catch(SoapFault $exception) { die('Verbindungsfehler: '.$exception->getMessage()); $this->errors[] = 'Verbindungsfehler: '.$exception->getMessage(); return; } $this->log($this->client); } function createNationalShipment($customer_details, $shipment_details = null, $bank_details = null, $cod_details = null) { $api2 = false; $api22 = (isset($customer_details['altersfreigabe']) && $customer_details['altersfreigabe']) || (isset($customer_details['wunschtermin']) && $customer_details['wunschtermin']) || (isset($customer_details['versichert']) && $customer_details['versichert'] && isset($customer_details['versicherungssumme']) && $customer_details['versicherungssumme']); if(isset($customer_details['intraship_retourenlabel']) && $customer_details['intraship_retourenlabel'] && isset($this->einstellungen['intraship_retourenaccount']) && $this->einstellungen['intraship_retourenaccount']) { $api2 = true; } if(isset($this->einstellungen['leitcodierung']) && $this->einstellungen['leitcodierung'])$api22 = true; $api22 = true; // immer 26.05.2019 BS $this->buildClient($api2, $api22); $shipment = array(); // Version $shipment['Version'] = array('majorRelease' => '1', 'minorRelease' => '0'); /* if(isset($customer_details['intraship_retourenlabel']) && $customer_details['intraship_retourenlabel'] && isset($this->einstellungen['intraship_retourenaccount']) && $this->einstellungen['intraship_retourenaccount']) { $shipment['Version']['minorRelease'] = '1'; } */ if($api22) { $shipment['Version'] = array('majorRelease' => '2', 'minorRelease' => '0'); } if($customer_details['country_code']=='' || $customer_details['country_code']=='DE') { $customer_details['country_code']='DE'; $customer_details['country_zip']='germany'; } else if ($customer_details['country_code']=='UK'){ $customer_details['country_zip']='england'; } else { $customer_details['country_zip']='other'; } // Order $shipment['ShipmentOrder'] = array(); // Fixme if($api22) { $shipment['ShipmentOrder']['sequenceNumber'] = '01'; }else{ $shipment['ShipmentOrder']['SequenceNumber'] = '1'; } // Shipment $s = array(); if($api22) { if($this->einstellungen['intraship_Product']=="") $this->einstellungen['intraship_Product']="V01PAK"; $s['product'] = $this->einstellungen['intraship_Product']; }else{ $s['ProductCode'] = 'EPN'; } if($customer_details['intraship_retourenlabel']=="1") { if($api22) { $s['returnShipmentAccountNumber'] = $this->einstellungen['intraship_retourenaccount']; $s['returnShipmentReference'] = $customer_details['ordernumber']; } else { $s['ReturnShipmentBillingNumber'] = $this->einstellungen['intraship_retourenaccount']; } } if($api22) { if(!empty($customer_details['abholdatum']) && $customer_details['abholdatum']!="0000-00-00") $s['shipmentDate'] = $customer_details['abholdatum']; else $s['shipmentDate'] = date('Y-m-d'); }else{ if(!empty($customer_details['abholdatum']) && $customer_details['abholdatum']!="0000-00-00") $s['ShipmentDate'] = $customer_details['abholdatum']; else $s['ShipmentDate'] = date('Y-m-d'); } if($this->einstellungen['runden']) { $shipment_details['WeightInKG'] = round($shipment_details['WeightInKG']); $customer_details['weight'] = round($customer_details['weight']); } if($api22) { $s['accountNumber'] = $this->einstellungen['ekp'].(strlen($this->einstellungen['partnerid']) <= 2?"01".$this->einstellungen['partnerid']:$this->einstellungen['partnerid']); if ($shipment_details == null) { $s['ShipmentItem'] = array(); $s['ShipmentItem']['weightInKG'] = '5'; $s['ShipmentItem']['lengthInCM'] = '50'; $s['ShipmentItem']['widthInCM'] = '50'; $s['ShipmentItem']['heightInCM'] = '50'; } else { $s['ShipmentItem'] = array(); $s['ShipmentItem']['weightInKG'] = $shipment_details['WeightInKG']; $s['ShipmentItem']['lengthInCM'] = $shipment_details['LengthInCM']; $s['ShipmentItem']['widthInCM'] = $shipment_details['WidthInCM']; $s['ShipmentItem']['heightInCM'] = $shipment_details['HeightInCM']; } // Falls ein Gewicht angegeben worden ist if($customer_details['weight']!="") $s['ShipmentItem']['weightInKG'] = $customer_details['weight']; }else{ $s['EKP'] = $this->einstellungen['ekp']; $s['Attendance'] = array(); $s['Attendance']['partnerID'] = substr($this->einstellungen['partnerid'],0,2); if ($shipment_details == null) { $s['ShipmentItem'] = array(); $s['ShipmentItem']['WeightInKG'] = '5'; $s['ShipmentItem']['LengthInCM'] = '50'; $s['ShipmentItem']['WidthInCM'] = '50'; $s['ShipmentItem']['HeightInCM'] = '50'; // FIXME: What is this $s['ShipmentItem']['PackageType'] = 'PL'; } else { $s['ShipmentItem'] = array(); $s['ShipmentItem']['WeightInKG'] = $shipment_details['WeightInKG']; $s['ShipmentItem']['LengthInCM'] = $shipment_details['LengthInCM']; $s['ShipmentItem']['WidthInCM'] = $shipment_details['WidthInCM']; $s['ShipmentItem']['HeightInCM'] = $shipment_details['HeightInCM']; // FIXME: What is this $s['ShipmentItem']['PackageType'] = $shipment_details['PackageType']; } // Falls ein Gewicht angegeben worden ist if($customer_details['weight']!="") $s['ShipmentItem']['WeightInKG'] = $customer_details['weight']; } if(isset($this->einstellungen['intraship_vorausverfuegung']) && $this->einstellungen['intraship_vorausverfuegung'] != '' && $this->einstellungen['intraship_vorausverfuegung'] != '-' && $api22){ $s['Service']['Endorsement']['active'] = 1; $s['Service']['Endorsement']['type'] = $this->einstellungen['intraship_vorausverfuegung']; } if($bank_details != null) { $s['BankData'] = array(); $s['BankData']['accountOwner'] = $bank_details['account_owner']; $s['BankData']['accountNumber'] = $bank_details['account_number']; $s['BankData']['bankCode'] = $bank_details['bank_code']; $s['BankData']['bankName'] = $bank_details['bank_name']; $s['BankData']['iban'] = $bank_details['iban']; $s['BankData']['bic'] = $bank_details['bic']; if($api22) { $s['BankData']['note1'] = $bank_details['note']; }else{ $s['BankData']['note'] = $bank_details['note']; } } if($cod_details != null) { if($this->einstellungen['nachnahmeextra']=="1") $cod_details['amount'] = $cod_details['amount'] + str_replace(',','.',$this->einstellungen['nachnahmegebuehr']); if($api22) { if($this->einstellungen['intraship_countryISOCode']=='AT') { if($customer_details['country']=='DE') $s['product']='V87PARCEL.V87COD'; if($customer_details['country']=='AT') $s['product']='V86PARCEL.V86BLNN'; } $s['Service']['CashOnDelivery'] = array(); $s['Service']['CashOnDelivery']['codAmount'] = $cod_details['amount']; $s['Service']['CashOnDelivery']['active'] = 1; }else{ //$s['Service'] = array(); //$s['Service']['ServiceGroupOther'] = array(); $s['Service']['ServiceGroupOther']['COD'] = array(); $s['Service']['ServiceGroupOther']['COD']['CODAmount'] = $cod_details['amount']; $s['Service']['ServiceGroupOther']['COD']['CODCurrency'] = $cod_details['currency']; } } // Auftragnummer auf Label if($api22) { $s['customerReference']=$customer_details['ordernumber']; if(isset($customer_details['altersfreigabe']) && $customer_details['altersfreigabe']) { if($customer_details['altersfreigabe'] >= 16) { $s['Service']['VisualCheckOfAge'] = array(); $s['Service']['VisualCheckOfAge']['active'] = 1; $s['Service']['VisualCheckOfAge']['type'] = $customer_details['altersfreigabe'] > 16?'A18':'A16'; } } if(isset($customer_details['wunschtermin']) && $customer_details['wunschtermin']) { if(isset($customer_details['wunschzeitraum']) && $customer_details['wunschzeitraum']) { $s['Service']['PreferredTime'] = array(); $s['Service']['PreferredTime']['active'] = 1; $s['Service']['PreferredTime']['type'] = $customer_details['wunschzeitraum']; } if(isset($customer_details['wunschlieferdatum']) && $customer_details['wunschlieferdatum']) { $s['Service']['PreferredDay'] = array(); $s['Service']['PreferredDay']['active'] = 1; $s['Service']['PreferredDay']['details'] = $customer_details['wunschlieferdatum']; if($s['product'] !== 'V01PAK' && $s['product'] !== 'V06PAK') { $s['product'] = 'V01PAK'; } } } if(isset($customer_details['versichert']) && $customer_details['versichert'] && isset($customer_details['versicherungssumme']) && $customer_details['versicherungssumme']) { $s['Service']['AdditionalInsurance'] = array(); $s['Service']['AdditionalInsurance']['active'] = 1; $s['Service']['AdditionalInsurance']['insuranceAmount'] = number_format(str_replace(',','.',$customer_details['versicherungssumme']),2,'.',''); } }else{ $s['CustomerReference']=$customer_details['ordernumber']; } if($this->einstellungen['sperrgut'] == '1') { $s['Service']['BulkyGoods'] = array(); $s['Service']['BulkyGoods']['active'] = 1; } $shipment['ShipmentOrder']['Shipment']['ShipmentDetails'] = $s; //$shipment['ShipmentOrder']['Shipment']['ShipmentDetails'] = $s; $shipper = array(); if($api22) { $shipper['Name'] = array(); $shipper['Name']['name1'] = $this->info['company_name']; }else{ $shipper['Company'] = array(); $shipper['Company']['Company'] = array(); $shipper['Company']['Company']['name1'] = $this->info['company_name']; } $shipper['Address'] = array(); $shipper['Address']['streetName'] = $this->info['street_name']; $shipper['Address']['streetNumber'] = $this->info['street_number']; if($api22) { $shipper['Address']['zip'] = $this->info['zip']; }else{ $shipper['Address']['Zip'] = array(); $shipper['Address']['Zip'][strtolower($this->info['country'])] = $this->info['zip']; } $shipper['Address']['city'] = $this->info['city']; $shipper['Address']['Origin'] = array('countryISOCode' => $this->info['countryISOCode']); $shipper['Communication'] = array(); if ($this->info['email']!="") { $shipper['Communication']['email'] = $this->info['email']; } $shipper['Communication']['phone'] = $this->info['phone']; $shipper['Communication']['internet'] = $this->info['internet']; $shipper['Communication']['contactPerson'] = $this->info['contact_person']; $shipment['ShipmentOrder']['Shipment']['Shipper'] = $shipper; if($api22) { if(isset($this->einstellungen['leitcodierung']) && $this->einstellungen['leitcodierung']) { $shipment['ShipmentOrder']['PrintOnlyIfCodeable'] = array(); $shipment['ShipmentOrder']['PrintOnlyIfCodeable']['active'] = "1"; } $receiver = array(); $receiver['name1'] = $customer_details['name1']; $receiver['Address'] = array(); if(stripos($customer_details['street_name'], 'packstation') !== false) { if(is_numeric($customer_details['name1'])) $receiver['Packstation']['postNumber']=$customer_details['name1']; else if(is_numeric($customer_details['name2']) && $receiver['Packstation']['postNumber']=="") $receiver['Packstation']['postNumber']=$customer_details['name2']; $receiver['Packstation']['packstationNumber']=$customer_details['street_number']; $receiver['Packstation']['zip']=$customer_details['zip']; $receiver['Packstation']['city']=$customer_details['city']; $receiver['Packstation']['Origin']=array('countryISOCode' => $customer_details['country_code']); } //else { if($customer_details['name2']!="") $receiver['Address']['name2'] = $customer_details['name2']; if($customer_details['name3']!="") $receiver['Address']['name3'] = $customer_details['name3']; if($customer_details['name2']!="") $receiver['Address']['addressAddition'] = $customer_details['name2']; if($customer_details['name3']!="") $receiver['Address']['dispatchingInformation'] = $customer_details['name3']; $receiver['Address']['streetName'] = $customer_details['street_name']; $receiver['Address']['streetNumber'] = $customer_details['street_number']; $receiver['Address']['zip'] = $customer_details['zip']; $receiver['Address']['city'] = $customer_details['city']; $receiver['Address']['Origin'] = array('countryISOCode' => $customer_details['country_code']); //} $receiver['Communication'] = array(); if($customer_details['c/o']=="") $customer_details['c/o'] = $customer_details['name2']; if($customer_details['c/o']=="") $customer_details['c/o'] = $customer_details['name1']; $receiver['Communication']['contactPerson'] = $customer_details['c/o']; if ($customer_details['email']!="") { $receiver['Communication']['email'] = $customer_details['email']; } if ($customer_details['phone']!="") { $receiver['Communication']['phone'] = $customer_details['phone']; } $shipment['ShipmentOrder']['Shipment']['Receiver'] = $receiver; }else{ $receiver = array(); $receiver['Company'] = array(); /* $receiver['Company']['Person'] = array(); $receiver['Company']['Person']['firstname'] = $customer_details['first_name']; $receiver['Company']['Person']['lastname'] = $customer_details['last_name']; */ $receiver['Company']['Company'] = array(); $receiver['Company']['Company']['name1'] = $customer_details['name1']; $receiver['Company']['Company']['name2'] = $customer_details['name2']; $receiver['Address'] = array(); $receiver['Address']['streetName'] = $customer_details['street_name']; $receiver['Address']['streetNumber'] = $customer_details['street_number']; $receiver['Address']['Zip'] = array(); $receiver['Address']['Zip'][strtolower($customer_details['country_zip'])] = $customer_details['zip']; $receiver['Address']['city'] = $customer_details['city']; $receiver['Communication'] = array(); $receiver['Communication']['contactPerson'] = $customer_details['c/o']; if($customer_details['email']!="") $receiver['Communication']['email'] = $customer_details['email']; $receiver['Address']['Origin'] = array('countryISOCode' => $customer_details['country_code']); $shipment['ShipmentOrder']['Shipment']['Receiver'] = $receiver; } if(isset($customer_details['intraship_retourenlabel']) && $customer_details['intraship_retourenlabel'] && isset($this->einstellungen['intraship_retourenaccount']) && $this->einstellungen['intraship_retourenaccount']) { $ReturnReceiver = array(); if($api22) { $ReturnReceiver['Name'] = array(); $ReturnReceiver['Name']['name1'] = $this->info['company_name']; }else{ $ReturnReceiver['Company'] = array(); $ReturnReceiver['Company']['Company'] = array(); $ReturnReceiver['Company']['Company']['name1'] = $this->info['company_name']; } $ReturnReceiver['Address'] = array(); $ReturnReceiver['Address']['streetName'] = $this->info['street_name']; $ReturnReceiver['Address']['streetNumber'] = $this->info['street_number']; if($api22) { $ReturnReceiver['Address']['zip'] = $this->info['zip']; }else{ $ReturnReceiver['Address']['Zip'] = array(); $ReturnReceiver['Address']['Zip'][strtolower($this->info['country'])] = $this->info['zip']; } $ReturnReceiver['Address']['city'] = $this->info['city']; $ReturnReceiver['Address']['Origin'] = array('countryISOCode' => $this->info['countryISOCode']); $ReturnReceiver['Communication'] = array(); if ($this->info['email']!="") { $shipper['Communication']['email'] = $this->info['email']; } $ReturnReceiver['Communication']['phone'] = $this->info['phone']; $ReturnReceiver['Communication']['internet'] = $this->info['internet']; $ReturnReceiver['Communication']['contactPerson'] = $this->info['contact_person']; $shipment['ShipmentOrder']['Shipment']['ReturnReceiver'] = $ReturnReceiver; // $shipment['ShipmentOrder']['Shipment']['ShipmentDetails']['Service'] = ['PackagingReturn' => ['active' => 1]]; } $this->app->erp->LogFile(['shipment'=>$shipment,'customer_details'=>$customer_details]); try { if(empty($this->client)) { return; } if($api22) { $response = $this->client->createShipmentOrder($shipment); } else{ $response = $this->client->CreateShipmentDD($shipment); } } catch(SoapFault $exception) { if($this->einstellungen['log']) { $this->dumpRequest('request.xml',$this->client->__getLastRequest()); $this->dumpRequest('response.xml',$this->client->__getLastResponse()); } if(trim($exception->getMessage()) == 'Authorization Required') { $this->errors[] = 'Fehlerhafte DHL Versenden Zugangsdaten'; return false; } $this->errors[] = 'Fehler von DHL Versenden: '.$exception->getMessage(); return; } if($this->einstellungen['log']) { $this->dumpRequest('request.xml',$this->client->__getLastRequest()); $this->dumpRequest('response.xml',$this->client->__getLastResponse()); } if (is_soap_fault($response) || (isset($response->status) && $response->status->StatusCode != 0 || isset($response->Status) && $response->Status->statusCode != 0)) { $this->errors[] = "Fehlermeldung von DHL:"; if (is_soap_fault($response)) { $this->errors[] = $response->faultstring; } else { $responsetext = isset($response->status)?$response->status->StatusMessage:$response->Status->statusMessage; if($responsetext=='In der Sendung trat mindestens ein harter Fehler auf.'){ $responsetext = 'Fehler bei der Leitcodierung in Adresse. Bitte korrekte Adresse angeben. '; } if($responsetext=='Die Gewichtsangabe ist kleiner als im CN23-Formular'){ $responsetext = 'Es müssen für alle Artikel das Gewicht in den Stammdaten gepflegt sein. Es fehlt bei Artikeln das Gewicht. '; } if($responsetext=='Der Nutzer des Webservice konnte nicht authentifiziert werden.'){ $responsetext = "DHL Login Failed. Das könnte an einem abgelaufenen Passwort liegen, da DHL in regelmäßigen Abständen ein neues Passwort für den DHL API-User vorschreibt. Mehr Informationen, wie Sie ein neues DHL Passwort vergeben können, finden Sie hier."; } if($responsetext===$response->CreationState->LabelData->Status->statusMessage[1] && $responsetext!=''){ } else { $responsetext .= ' '.$response->CreationState->LabelData->Status->statusMessage[1]; } if($this->einstellungen['log']) { $this->dumpRequest('request.xml',$this->client->__getLastRequest()); $this->dumpRequest('response.xml',$this->client->__getLastResponse()); } $this->errors[] = $responsetext; } if($response->CreationState->StatusMessage) { foreach($response->CreationState->StatusMessage as $v) { $found = false; if($this->errors && is_array($this->errors)) { foreach($this->errors as $err) { if($err == $v)$found = true; } } if(!$found)$this->errors[] = $v; } } return false; } $r = array(); if($api22) { $r['shipment_number'] = (String) $response->CreationState->LabelData->shipmentNumber; $r['piece_number'] = (String) $response->CreationState->LabelData->licensePlate; $r['label_url'] = (String) $response->CreationState->LabelData->labelUrl; $r['gesamt'] = $response; }else{ $r['shipment_number'] = (String) $response->CreationState->ShipmentNumber->shipmentNumber; $r['piece_number'] = (String) $response->CreationState->PieceInformation->PieceNumber->licensePlate; $r['label_url'] = (String) $response->CreationState->Labelurl; } return $r; } function createWeltShipment($customer_details, $shipment_details = null, $bank_details = null, $cod_details = null,$artikel=null) { $api2 = false; if(isset($customer_details['altersfreigabe']) && $customer_details['altersfreigabe']) $api22 = true; if(isset($this->einstellungen['leitcodierung']) && $this->einstellungen['leitcodierung'])$api22 = true; //if(isset($customer_details['intraship_retourenlabel']) && $customer_details['intraship_retourenlabel'] && isset($this->einstellungen['intraship_retourenaccount']) && $this->einstellungen['intraship_retourenaccount'])$api2 = true; // TODO HACK if($this->einstellungen['intraship_countryISOCode']=='AT') { $api22 = true; } $api22 = true; // immer 26.05.2019 BS $this->buildClient($api2, $api22); $shipment = array(); if($customer_details['country_code']=='DE') { $customer_details['country']='germany'; } else if ($customer_details['country_code']=='UK') { $customer_details['country']='england'; } else { $customer_details['country']='other'; } // Version if($api22) { $shipment['Version'] = array('majorRelease' => '2', 'minorRelease' => '0'); }else{ $shipment['Version'] = array('majorRelease' => '1', 'minorRelease' => '0'); /* if(isset($customer_details['intraship_retourenlabel']) && $customer_details['intraship_retourenlabel'] && isset($this->einstellungen['intraship_retourenaccount']) && $this->einstellungen['intraship_retourenaccount']) { $shipment['Version']['minorRelease'] = '1'; } */ } // Order $shipment['ShipmentOrder'] = array(); $s = array(); // Fixme if($api22) { $shipment['ShipmentOrder']['sequenceNumber'] = '01'; if(!empty($customer_details['abholdatum']) && $customer_details['abholdatum']!="0000-00-00") $s['shipmentDate'] = $customer_details['abholdatum']; else $s['shipmentDate'] = date('Y-m-d'); if($this->einstellungen['intraship_countryISOCode']=='AT') { //$s['product'] = isset($customer_details['EU'])&&$customer_details['EU']?"V87PARCEL": "V82PARCEL"; $s['product'] = ($customer_details['country_code']=="DE"||$customer_details['country_code']=="BE"||$customer_details['country_code']=="NL"||$customer_details['country_code']=="LU"||$customer_details['country_code']=="PL"||$customer_details['country_code']=="SK"||$customer_details['country_code']=="CZ")?"V87PARCEL": "V82PARCEL"; $s['accountNumber']= ($customer_details['country_code']=="DE"||$customer_details['country_code']=="BE"||$customer_details['country_code']=="NL"||$customer_details['country_code']=="LU"||$customer_details['country_code']=="PL"||$customer_details['country_code']=="SK"||$customer_details['country_code']=="CZ")?$this->einstellungen['ekp'].$this->einstellungen['partnerid_connect']:$this->einstellungen['ekp'].$this->einstellungen['partnerid_welt']; } else { if($this->einstellungen['euistwelt']) { $s['product'] = "V53WPAK"; $s['accountNumber'] =$this->einstellungen['ekp'].(strlen($this->einstellungen['partnerid_welt'])<=2?"01".$this->einstellungen['partnerid_welt']:$this->einstellungen['partnerid_welt']); } else { if(substr($this->einstellungen['partnerid_connect'], -4)=="5501") $s['product'] = "V55PAK"; else $s['product'] = isset($customer_details['EU'])&&$customer_details['EU']?"V54EPAK": "V53WPAK"; $s['accountNumber'] =$this->einstellungen['ekp'].(isset($customer_details['EU'])&&$customer_details['EU']?$this->einstellungen['partnerid_connect']:$this->einstellungen['partnerid_welt']); } } }else{ $shipment['ShipmentOrder']['SequenceNumber'] = '1'; $s['ProductCode'] = 'BPI'; if(!empty($customer_details['abholdatum']) && $customer_details['abholdatum']!="0000-00-00") $s['ShipmentDate'] = $customer_details['abholdatum']; else $s['ShipmentDate'] = date('Y-m-d'); $s['EKP'] = $this->einstellungen['ekp']; $s['Attendance'] = array(); $s['Attendance']['partnerID'] = $this->einstellungen['partnerid']; } if($customer_details['intraship_retourenlabel']=="1") { if($api22) { // $s['Service']['ReturnReceipt'] = array(); // $s['Service']['ReturnReceipt']['active'] = 1; $s['returnShipmentAccountNumber'] = $this->einstellungen['intraship_retourenaccount']; $s['returnShipmentReference'] = $customer_details['ordernumber']; } else { $s['ReturnShipmentBillingNumber'] = $this->einstellungen['intraship_retourenaccount']; } } if($this->einstellungen['runden'])$customer_details['weight'] = round($customer_details['weight']); if($api22) { if ($shipment_details == null) { $s['ShipmentItem'] = array(); $s['ShipmentItem']['weightInKG'] = '3'; $s['ShipmentItem']['lengthInCM'] = '50'; $s['ShipmentItem']['widthInCM'] = '30'; $s['ShipmentItem']['heightInCM'] = '15'; } else { $s['ShipmentItem'] = array(); $s['ShipmentItem']['weightInKG'] = $shipment_details['WeightInKG']; $s['ShipmentItem']['lengthInCM'] = $shipment_details['LengthInCM']; $s['ShipmentItem']['widthInCM'] = $shipment_details['WidthInCM']; $s['ShipmentItem']['heightInCM'] = $shipment_details['HeightInCM']; $s['ShipmentItem']['PackageType'] = $shipment_details['PackageType']; } // Falls ein Gewicht angegeben worden ist if($customer_details['weight']!="") $s['ShipmentItem']['weightInKG'] = $customer_details['weight']; }else{ if ($shipment_details == null) { $s['ShipmentItem'] = array(); $s['ShipmentItem']['WeightInKG'] = '3'; $s['ShipmentItem']['LengthInCM'] = '50'; $s['ShipmentItem']['WidthInCM'] = '30'; $s['ShipmentItem']['HeightInCM'] = '15'; // FIXME: What is this $s['ShipmentItem']['PackageType'] = 'PK'; } else { $s['ShipmentItem'] = array(); $s['ShipmentItem']['weightInKG'] = $shipment_details['WeightInKG']; $s['ShipmentItem']['lengthInCM'] = $shipment_details['LengthInCM']; $s['ShipmentItem']['widthInCM'] = $shipment_details['WidthInCM']; $s['ShipmentItem']['heightInCM'] = $shipment_details['HeightInCM']; $s['ShipmentItem']['PackageType'] = $shipment_details['PackageType']; } // Falls ein Gewicht angegeben worden ist if($customer_details['weight']!="") $s['ShipmentItem']['WeightInKG'] = $customer_details['weight']; } //$s['Service']['ServiceGroupBusinessPackInternational']['Economy'] = 'true'; $s['Service']['ServiceGroupBusinessPackInternational']['Premium'] = 'true'; if($bank_details != null) { $s['BankData'] = array(); $s['BankData']['accountOwner'] = $bank_details['account_owner']; $s['BankData']['accountNumber'] = $bank_details['account_number']; $s['BankData']['bankCode'] = $bank_details['bank_code']; $s['BankData']['bankName'] = $bank_details['bank_name']; $s['BankData']['iban'] = $bank_details['iban']; $s['BankData']['bic'] = $bank_details['bic']; $s['BankData']['note'] = $bank_details['note']; } if($cod_details != null) { //$s['Service'] = array(); //$s['Service']['ServiceGroupOther'] = array(); if($this->einstellungen['nachnahmeextra']=='1') $cod_details['amount'] = $cod_details['amount'] + str_replace(',','.',$this->einstellungen['nachnahmegebuehr']); if($api22) { if($this->einstellungen['intraship_countryISOCode']=='AT') { if($customer_details['country']=='DE') $s['product']='V87PARCEL.V87COD'; if($customer_details['country']=='AT') $s['product']='V86PARCEL.V86BLNN'; } $s['Service']['CashOnDelivery'] = array(); $s['Service']['CashOnDelivery']['codAmount'] = $cod_details['amount']; $s['Service']['CashOnDelivery']['active'] = 1; } else { $s['Service']['ServiceGroupOther']['COD'] = array(); $s['Service']['ServiceGroupOther']['COD']['CODAmount'] = $cod_details['amount']; $s['Service']['ServiceGroupOther']['COD']['CODCurrency'] = $cod_details['currency']; } } // Auftragnummer auf Label if($api22) { $s['customerReference']=$customer_details['ordernumber']; if($customer_details['altersfreigabe'] >= 16) { $s['Service']['VisualCheckOfAge'] = array(); $s['Service']['VisualCheckOfAge']['active'] = 1; $s['Service']['VisualCheckOfAge']['type'] = $customer_details['altersfreigabe'] > 16?'A18':'A16'; } }else{ $s['CustomerReference']=$customer_details['ordernumber']; } if($this->einstellungen['premiumversand']=='1') { $s['Service']['Premium'] = array(); $s['Service']['Premium']['active'] = 1; } if($this->einstellungen['sperrgut'] == '1') { $s['Service']['BulkyGoods'] = array(); $s['Service']['BulkyGoods']['active'] = 1; } //$s['Service']['ServiceGroupBusinessPackInternational']['Premium'] = 'true'; $shipment['ShipmentOrder']['Shipment']['ShipmentDetails'] = $s; //$shipment['ShipmentOrder']['Shipment']['ShipmentDetails'] = $s; $shipper = array(); if($api22) { $shipper['Name'] = array(); $shipper['Name']['name1'] = $this->info['company_name']; }else{ $shipper['Company'] = array(); $shipper['Company']['Company'] = array(); $shipper['Company']['Company']['name1'] = $this->info['company_name']; } $shipper['Address'] = array(); $shipper['Address']['streetName'] = $this->info['street_name']; $shipper['Address']['streetNumber'] = $this->info['street_number']; if($api22) { $shipper['Address']['zip'] = $this->info['zip']; }else{ $shipper['Address']['Zip'] = array(); $shipper['Address']['Zip'][strtolower($this->info['country'])] = $this->info['zip']; } $shipper['Address']['city'] = $this->info['city']; $shipper['Address']['Origin'] = array('countryISOCode' => $this->info['countryISOCode']); $shipper['Communication'] = array(); if ($this->info['email']!='') { $shipper['Communication']['email'] = $this->info['email']; } if(empty($this->info['phone'])) { $this->info['phone'] = '0'; } $this->info['phone'] = str_replace('+','00',trim($this->info['phone'])); $this->info['phone'] = preg_replace('![^0-9]!', '', $this->info['phone']); if(empty($this->info['phone'])) { $this->info['phone'] = '0'; } $shipper['Communication']['phone'] = $this->info['phone']; $shipper['Communication']['internet'] = $this->info['internet']; $shipper['Communication']['contactPerson'] = $this->info['contact_person']; $shipment['ShipmentOrder']['Shipment']['Shipper'] = $shipper; if($api22) { if(isset($this->einstellungen['leitcodierung']) && $this->einstellungen['leitcodierung']) { $shipment['ShipmentOrder']['PrintOnlyIfCodeable'] = array(); $shipment['ShipmentOrder']['PrintOnlyIfCodeable']['active'] = "1"; } $receiver = array(); $receiver['name1'] = $customer_details['name1']; if(stripos($customer_details['street_name'], 'packstation') !== false) { if(is_numeric($customer_details['name1'])) $receiver['Packstation']['postNumber']=$customer_details['name1']; else if(is_numeric($customer_details['name2']) && $receiver['Packstation']['postNumber']=="") $receiver['Packstation']['postNumber']=$customer_details['name2']; $receiver['Packstation']['packstationNumber']=$customer_details['street_number']; $receiver['Packstation']['zip']=$customer_details['zip']; $receiver['Packstation']['city']=$customer_details['city']; $receiver['Packstation']['Origin']=array('countryISOCode' => $customer_details['country_code']); } else { $receiver['Address'] = array(); if($customer_details['name2']!="") $receiver['Address']['addressAddition'] = $customer_details['name2']; $receiver['Address']['streetName'] = $customer_details['street_name']; $receiver['Address']['streetNumber'] = $customer_details['street_number']; $receiver['Address']['zip'] = $customer_details['zip']; $receiver['Address']['city'] = $customer_details['city']; if($customer_details['country_code']==='AT' && strpos($customer_details['street_number'], '/') !== false ) { $customer_details['street_number'] = str_replace(' ','',$customer_details['street_number']); $tmpstiege = explode('/',$customer_details['street_number']); //if(isset($tmpstiege[0])) // $customer_details['street_number'] = $tmpstiege[0]; if(isset($tmpstiege[1])) $receiver['Address']['addressAddition']=$tmpstiege[1]; if(isset($tmpstiege[2])) $receiver['Address']['addressAddition2']=$tmpstiege[2]; //$customer_details['street_number'] = strstr ($customer_details['street_number'], '/',true); //$receiver['Address']['streetNumber'] = strstr ($receiver['Address']['streetNumber'], '/',true); } $receiver['Address']['Origin'] = array('countryISOCode' => $customer_details['country_code']); } $receiver['Communication'] = array(); if($customer_details['c/o']=='') $customer_details['c/o'] = $customer_details['name2']; if($customer_details['c/o']=='') $customer_details['c/o'] = $customer_details['name1']; $receiver['Communication']['contactPerson'] = $customer_details['c/o']; if ($customer_details['email']!='') { $receiver['Communication']['email'] = $customer_details['email']; } if ($customer_details['phone']!='') { $receiver['Communication']['phone'] = $customer_details['phone']; } $shipment['ShipmentOrder']['Shipment']['Receiver'] = $receiver; }else{ $receiver = array(); $receiver['Company'] = array(); $receiver['Company']['Company'] = array(); $receiver['Company']['Company']['name1'] = $customer_details['name1']; $receiver['Company']['Company']['name2'] = $customer_details['name2']; if($customer_details['name2']!="") $tmp_name = explode(' ',$customer_details['name2'],2); else $tmp_name = explode(' ',$customer_details['name1'],2); if(isset($tmp_name[2]) && $tmp_name[2]){ $receiver['Company']['Person'] = array(); $receiver['Company']['Person']['firstname'] = $tmp_name[0]; $receiver['Company']['Person']['lastname'] = $tmp_name[1]; } $receiver['Address'] = array(); $receiver['Address']['streetName'] = $customer_details['street_name']; $receiver['Address']['streetNumber'] = $customer_details['street_number']; $receiver['Address']['Zip'] = array(); $receiver['Address']['Zip'][strtolower($customer_details['country_zip'])] = $customer_details['zip']; $receiver['Address']['city'] = $customer_details['city']; $receiver['Communication'] = array(); if($customer_details['c/o']=="") $customer_details['c/o'] = $customer_details['name2']; if($customer_details['c/o']=="") $customer_details['c/o'] = $customer_details['name1']; $receiver['Communication']['contactPerson'] = $customer_details['c/o']; if ($customer_details['email']!="") { $receiver['Communication']['email'] = $customer_details['email']; } if(empty($customer_details['phone']))$customer_details['phone'] = '0'; $customer_details['phone'] = str_replace('+','00',trim($customer_details['phone'])); $customer_details['phone'] = preg_replace('![^0-9]!', '', $customer_details['phone']); if(empty($customer_details['phone']))$customer_details['phone'] = '0'; $receiver['Communication']['phone'] = $customer_details['phone']; $receiver['Address']['Origin'] = array('countryISOCode' => $customer_details['country_code']); $shipment['ShipmentOrder']['Shipment']['Receiver'] = $receiver; } if(isset($customer_details['intraship_retourenlabel']) && $customer_details['intraship_retourenlabel'] && isset($this->einstellungen['intraship_retourenaccount']) && $this->einstellungen['intraship_retourenaccount']) { $ReturnReceiver = array(); $ReturnReceiver['Company'] = array(); $ReturnReceiver['Company']['Company'] = array(); $ReturnReceiver['Company']['Company']['name1'] = $this->info['company_name']; $ReturnReceiver['Address'] = array(); $ReturnReceiver['Address']['streetName'] = $this->info['street_name']; $ReturnReceiver['Address']['streetNumber'] = $this->info['street_number']; if($api22) { $ReturnReceiver['Address']['zip'] = $this->info['zip']; }else{ $ReturnReceiver['Address']['Zip'] = array(); $ReturnReceiver['Address']['Zip'][strtolower($this->info['country'])] = $this->info['zip']; } $ReturnReceiver['Address']['city'] = $this->info['city']; $ReturnReceiver['Address']['Origin'] = array('countryISOCode' => $customer_details['country_code']); $ReturnReceiver['Communication'] = array(); if ($this->info['email']!="") { $shipper['Communication']['email'] = $this->info['email']; } $ReturnReceiver['Communication']['phone'] = $this->info['phone']; $ReturnReceiver['Communication']['internet'] = $this->info['internet']; $ReturnReceiver['Communication']['contactPerson'] = $this->info['contact_person']; $shipment['ShipmentOrder']['Shipment']['ReturnReceiver'] = $ReturnReceiver; } $proformarechnungsnummer = $customer_details['proformanumber']; if($proformarechnungsnummer=="") { $proformarechnungsnummer = ($customer_details['invoicenumber']!=""?$customer_details['invoicenumber']:$customer_details['ordernumber']); } if($api22) { //$export['invoiceType'] = "commercial"; //$export['invoiceDate'] = date('Y-m-d'); $export['invoiceNumber'] = $proformarechnungsnummer; $export['exportType'] = "OTHER"; $export['exportTypeDescription'] = $this->info['export_reason']; $export['commodityCode'] = ""; $export['termsOfTrade'] = "DDP"; $export['amount'] = count($artikel); $export['placeOfCommital'] = $customer_details['city']; //$export['Description'] = $this->info['export_reason']; //$export['CountryCodeOrigin'] = "DE"; $export['additionalFee'] = number_format((float)$customer_details['shippingFee'],2,".",""); $export['customsValue'] = number_format($customer_details['amount'],2,".",""); $export['customsCurrency'] = $customer_details['currency']; //$export['permitNumber'] = ""; }else{ $export['InvoiceType'] = "commercial"; $export['InvoiceDate'] = date('Y-m-d'); $export['InvoiceNumber'] = $proformarechnungsnummer; $export['ExportType'] = 0; $export['ExportTypeDescription'] = $this->info['export_reason']; $export['CommodityCode'] = ""; $export['TermsOfTrade'] = "DDP"; $export['Amount'] = count($artikel); $export['Description'] = $this->info['export_reason']; $export['CountryCodeOrigin'] = "DE"; $export['AdditionalFee'] = number_format((float)$customer_details['shippingFee'],2,".",""); $export['CustomsValue'] = number_format($customer_details['value'],2,".",""); $export['CustomsCurrency'] = $customer_details['currency']; $export['PermitNumber'] = ""; } $p=0; $cartikel = !empty($artikel)?count($artikel):0; for($i=0;$i<$cartikel;$i++) { if($artikel[$i]['currency']=="") $artikel[$i]['currency']="EUR"; if($api22) { if($this->info['export_reason']!="") $export['ExportDocPosition'][0]['description'] = $this->info['export_reason']; else $export['ExportDocPosition'][0]['description'] = "Additional Positions"; $export['ExportDocPosition'][0]['countryCodeOrigin'] = $artikel[$i]['countrycode']; $export['ExportDocPosition'][0]['customsTariffNumber'] = $artikel[$i]['commodity_code']; $export['ExportDocPosition'][0]['amount'] = 1;//+= intval($artikel[$i]['amount']); if(!isset($export['ExportDocPosition'][0]['netWeightInKG'])){ $export['ExportDocPosition'][0]['netWeightInKG'] = number_format($artikel[$i]['netweightinkg'], 2, ".", ""); $export['ExportDocPosition'][0]['grossWeightInKG'] = number_format($artikel[$i]['grossweightinkg'], 2, ".", ""); }else{ $export['ExportDocPosition'][0]['netWeightInKG'] = number_format( (float)$export['ExportDocPosition'][0]['netWeightInKG'] + (float)$artikel[$i]['netweightinkg'], 2, ".", "" ); $export['ExportDocPosition'][0]['grossWeightInKG'] = number_format( (float)$export['ExportDocPosition'][0]['grossWeightInKG'] + (float)$artikel[$i]['grossweightinkg'], 2, ".", "" ); } $export['ExportDocPosition'][0]['customsValue'] = number_format($customer_details['amount'],2,".",""); $export['ExportDocPosition'][0]['customsCurrency'] = $customer_details['currency']; $export['ExportDocPosition'][0]['Currency'] = $customer_details['currency']; }else{ if($this->info['export_reason']!="") $export['ExportDocPosition'][0]['Description'] = $this->info['export_reason']; else $export['ExportDocPosition'][0]['Description'] = "Additional Positions"; $export['ExportDocPosition'][0]['CountryCodeOrigin'] = $artikel[$i]['countrycode']; $export['ExportDocPosition'][0]['CommodityCode'] = $artikel[$i]['commodity_code']; $export['ExportDocPosition'][0]['Amount'] = 1;//+= intval($artikel[$i]['amount']); if(!isset($export['ExportDocPosition'][0]['netWeightInKG'])){ $export['ExportDocPosition'][0]['netWeightInKG'] = number_format($artikel[$i]['netweightinkg'], 2, ".", ""); $export['ExportDocPosition'][0]['grossWeightInKG'] = number_format($artikel[$i]['grossweightinkg'], 2, ".", ""); }else{ $export['ExportDocPosition'][0]['netWeightInKG'] = number_format( (float)$export['ExportDocPosition'][0]['netWeightInKG'] + (float)$artikel[$i]['netweightinkg'], 2, ".", "" ); $export['ExportDocPosition'][0]['grossWeightInKG'] = number_format( (float)$export['ExportDocPosition'][0]['grossWeightInKG'] + (float)$artikel[$i]['grossweightinkg'], 2, ".", "" ); } $export['ExportDocPosition'][0]['CustomsValue'] = number_format($customer_details['amount'],2,".",""); $export['ExportDocPosition'][0]['CustomsCurrency'] = $customer_details['currency']; $export['ExportDocPosition'][0]['Currency'] = $customer_details['currency']; } } if(count($artikel)<=0)$this->errors[]="Bei den Artikel fehlen die Gewichte in den Stammdaten!"; $shipment['ShipmentOrder']['Shipment']['ExportDocument'] = $export; try { if(empty($this->client)) { return; } if($api22) { $response = $this->client->createShipmentOrder($shipment); }else{ $response = $this->client->CreateShipmentDD($shipment); } } catch(SoapFault $exception) { if($this->einstellungen['log']) { $this->dumpRequest("request.xml",$this->client->__getLastRequest()); $this->dumpRequest("response.xml",$this->client->__getLastResponse()); } if(trim($exception->getMessage()) == 'Authorization Required') { $this->errors[] = 'Fehlerhafte DHL Versenden Zugangsdaten'; return false; } $this->errors[] = "Fehler von DHL Versenden: ".$exception->getMessage(); return; } if($this->einstellungen['log']) { $this->dumpRequest("request.xml",$this->client->__getLastRequest()); $this->dumpRequest("response.xml",$this->client->__getLastResponse()); } if (((isset($response->status) && $response->status->StatusCode != 0) || (isset($response->Status) && $response->Status->statusCode != 0)) || is_soap_fault($response)) { $this->errors[] = "Fehlermeldung von DHL:"; if (is_soap_fault($response)) { $this->errors[] = $response->faultstring; } else { $responsetext = isset($response->status)?$response->status->StatusMessage:$response->Status->statusMessage; if($responsetext=='In der Sendung trat mindestens ein harter Fehler auf.') $responsetext = 'Fehler bei der Leitcodierung in Adresse. Bitte korrekte Adresse angeben. '; if($responsetext=='Der Nutzer des Webservice konnte nicht authentifiziert werden.') $responsetext = "DHL Login Failed. Das könnte an einem abgelaufenen Passwort liegen, da DHL in regelmäßigen Abständen ein neues Passwort für den DHL API-User vorschreibt. Mehr Informationen, wie Sie ein neues DHL Passwort vergeben können, finden Sie hier."; if($responsetext=='Exception in extension function java.util.MissingResourceException: Couldnt find 3-letter country code for GERMANY') $responsetext = 'Bitte prüfen Sie die Herkunftsländer der Artikel in den Stammdaten. Es müssen 2-stellige ISO Codes angegeben sein.'; $secondMessage = (String)$response->CreationState->LabelData->Status->statusMessage[1]; if($secondMessage!="" && $secondMessage!=$responsetext) { $responsetext .= " ".$response->CreationState->LabelData->Status->statusMessage[1]; } $this->errors[] = $responsetext; } if($response->CreationState->StatusMessage) { foreach($response->CreationState->StatusMessage as $v) { $found = false; if($this->errors && is_array($this->errors)) { foreach($this->errors as $err) { if($err == $v)$found = true; } } if(!$found) { $this->errors[] = $v; } } } return false; } if($api22) { $r['shipment_number'] = (String) $response->CreationState->LabelData->shipmentNumber; $r['piece_number'] = (String) $response->CreationState->LabelData->licensePlate; $r['label_url'] = (String) $response->CreationState->LabelData->labelUrl; $r['gesamt'] = $response; }else{ $r['shipment_number'] = (String) $response->CreationState->ShipmentNumber->shipmentNumber; $r['piece_number'] = (String) $response->CreationState->PieceInformation->PieceNumber->licensePlate; $r['label_url'] = (String) $response->CreationState->Labelurl; } return $r; } function dumpRequest($fileName, $contents){ $dir = $this->app->getTmpFolder(); file_put_contents("{$dir}$fileName", $contents); } function GetExportDocDD($shippment_number, $api22 = false) { $this->buildClient(); $shipment = array(); // Version if($api22) { $shipment['Version'] = array('majorRelease' => '2', 'minorRelease' => '0'); }else{ $shipment['Version'] = array('majorRelease' => '1', 'minorRelease' => '0'); } // Order $shipment['ShipmentNumber'] = array('shipmentNumber'=>$shippment_number); //$shipment['DocType'] = 'PDF'; $shipment['DocType'] = 'URL'; if(empty($this->client))return false; // Fixme try { if($api22) $response = $this->client->getExportDoc($shipment); else $response = $this->client->GetExportDocDD($shipment); } catch(SoapFault $exception) { if(trim($exception->getMessage()) === 'Authorization Required') { $this->errors[] = 'Fehlerhafte DHL Versenden Zugangsdaten'; return false; } $this->errors[] = 'Fehler von DHL Versenden: '.$exception->getMessage(); return false; } if (((isset($response->status) && $response->status->StatusCode != 0) || (isset($response->Status) && $response->Status->statusCode != 0)) || is_soap_fault($response) ) { $this->errors[] = "Fehlermeldung von DHL:"; if (is_soap_fault($response)) { $this->errors[] = $response->faultstring; } else { $this->errors[] = isset($response->status)?$response->status->StatusMessage:$response->Status->statusMessage; } return false; } $r = array(); if($api22) { $r['export_pdf'] = (String) $response->ExportDocData->exportDocData; $r['export_url'] = (String) $response->ExportDocData->exportDocURL; } else { $r['export_pdf'] = (String) $response->ExportDocData->ExportDocPDFData; $r['export_url'] = (String) $response->ExportDocData->ExportDocURL; } return $r; } private function buildAuthHeader() { $head = $this->einstellungen; $auth_params = array( 'user' => $this->einstellungen['user'], 'signature' => $this->einstellungen['signature'], 'type' => 0 ); try{ $erg = new SoapHeader('http://dhl.de/webservice/cisbase','Authentification', $auth_params); } catch(SoapFault $exception) { $erg = false; $this->errors[] = "Authentifizierungsfehler: ".$exception->getMessage(); } return $erg; } }