app=$app; if($intern) { return; } $this->app->ActionHandlerInit($this); $this->app->ActionHandler("login","ShopimportLogin"); $this->app->ActionHandler("main","ShopimportMain"); $this->app->ActionHandler("list","ShopimportList"); $this->app->ActionHandler("alle","ShopimportAlle"); $this->app->ActionHandler("import","ShopimportImport"); $this->app->ActionHandler("view","ShopimportView"); $this->app->ActionHandler("einzelimport","ShopimportEinzelimport"); $this->app->ActionHandler("navigation","ShopimportNavigation"); $this->app->ActionHandler("logout","ShopimportLogout"); $this->app->ActionHandler("archiv","ShopimportArchiv"); $this->app->DefaultActionHandler("list"); $this->app->Tpl->Set('UEBERSCHRIFT','Shop Import'); $this->app->ActionHandlerListen($app); } /** * @param int $shopId * @param array $data * * @return int * * @throws Exception */ public function Refund($shopId, $data) { if(empty($shopId)) { throw new Exception('no Shop given'); } if(empty($data)) { throw new Exception('no Data given'); } $shop = $this->app->DB->SelectRow( sprintf( 'SELECT `aktiv`, `id`, `artikelrabatt` FROM `shopexport` WHERE `id` = %d', $shopId ) ); if(empty($shop)) { throw new Exception('Shop not found'); } if(empty($shop['aktiv'])) { throw new Exception('Shop is not active'); } if(!empty($data->extid)) { $order = $this->app->DB->SelectRow( sprintf( "SELECT * FROM `auftrag` WHERE `shop` = %d AND `shopextid` = '%s' AND `shopextid` <> '' AND `status` <> 'storniert' LIMIT 1", $shopId, $this->app->DB->real_escape_string((string)$data->extid) ) ); } elseif(!empty($data->internet)) { $order = $this->app->DB->SelectRow( sprintf( "SELECT * FROM `auftrag` WHERE `shop` = %d AND `internet` = '%s' AND `internet` <> '' AND `status` <> 'storniert' LIMIT 1", $shopId, $this->app->DB->real_escape_string((string)$data->extid) ) ); } else { throw new Exception('No order given'); } if(empty($order)) { throw new Exception('order not found'); } $invoice = $this->app->DB->SelectRow( sprintf( "SELECT * FROM `rechnung` WHERE `auftragid` = %d ORDER BY `status` = 'storniert' LIMIT 1", $order['id'] ) ); if(empty($invoice)) { if(empty($data->createinvoice)){ throw new Exception('order has no invoice'); } $invoiceId = $this->app->erp->WeiterfuehrenAuftragZuRechnung($order['id']); $this->app->erp->AuftragProtokoll($order['id'], 'Rechnung erstellt durch Shop-Trigger'); $this->app->erp->RechnungProtokoll($invoiceId, 'Rechnung erstellt durch Shop-Trigger'); $this->app->erp->BelegFreigabe('rechnung', $invoiceId); $this->app->erp->RechnungNeuberechnen($invoiceId); $invoice = $this->app->DB->SelectRow( sprintf( "SELECT * FROM `rechnung` WHERE `auftragid` = %d ORDER BY `status` = 'storniert' LIMIT 1", $order['id'] ) ); } if($invoice['status'] === 'storniert') { throw new Exception('order invoice is already cancelled'); } if(!empty($data->positions)) { $positions = $this->app->DB->SelectArr( sprintf( "SELECT `op`.webid, ip.artikel, ip.menge,ip.preis, ip.rabatt, ip.auftrag_position_id FROM `rechnung_position` AS `ip` INNER JOIN `auftrag_position` AS `op` ON ip.auftrag_position_id = op.id WHERE `ip`.rechnung = %d", $invoice['id'] ) ); if(empty($positions)) { throw new Exception('invoice has no positions'); } $webIds = []; $foundWebIds = []; foreach($positions as $position) { if(!empty($position['webid'])) { $webIds[] = $position['webid']; } } $webIdToPosition = []; foreach($data->positions as $position) { if(!empty($position->webid)){ if(!in_array((string)$position->webid, $webIds)){ throw new Exception(sprintf('position %s not found', (string)$position->webid)); } $foundWebIds[] = (string)$position->webid; $webIdToPosition[$position->webid] = $position; } else { throw new Exception('no webId given'); } } if(empty($foundWebIds)) { throw new Exception('positions empty'); } $toDeleteInvoicePositionIds = [0]; foreach($positions as $position) { if(empty($position['webid']) || !in_array($position['webid'], $foundWebIds)) { $toDeleteInvoicePositionIds[] = (int)$position['auftrag_position_id']; } } $creditNoteId = $this->app->erp->WeiterfuehrenRechnungZuGutschrift($invoice['id']); $this->app->erp->RechnungProtokoll($invoice['id'], 'Rechnung durch Shop-Trigger storniert'); $this->app->erp->GutschriftProtokoll($creditNoteId, 'Gutschrift durch Shop-Trigger angelegt'); $this->app->erp->BelegFreigabe('gutschrift', $creditNoteId); $this->app->DB->Delete( sprintf( "DELETE FROM `gutschrift_position` WHERE `gutschrift` = %d AND `auftrag_position_id` IN (%s)", $creditNoteId, implode(',', $toDeleteInvoicePositionIds) ) ); $hasCreditNoteTax = !empty($this->app->erp->GutschriftMitUmsatzeuer($creditNoteId)); $this->app->erp->GutschriftNeuberechnen($creditNoteId); $creditNote = $this->app->DB->SelectRow( sprintf( 'SELECT * FROM `gutschrift` WHERE `id` = %d', $creditNoteId ) ); $creditNotePositions = $this->app->DB->SelectArr( sprintf( "SELECT op.webid, cnp.id, cnp.menge, cnp.preis, cnp.rabatt, cnp.umsatzsteuer, cnp.steuersatz FROM `gutschrift_position` AS `cnp` INNER JOIN `auftrag_position` AS `op` ON cnp.auftrag_position_id = op.id WHERE cnp.gutschrift = %d", $creditNoteId ) ); foreach($creditNotePositions as $creditNotePosition) { if(isset($webIdToPosition[$creditNotePosition['webid']])) { $position = $webIdToPosition[$creditNotePosition['webid']]; if(!empty($position->quantity)) { $this->app->DB->Update( sprintf( "UPDATE `gutschrift_position` SET `menge` = %f WHERE `id` = %d", (float)$position->quantity, $creditNotePosition['id'] ) ); } elseif(!empty($position->menge)) { $this->app->DB->Update( sprintf( "UPDATE `gutschrift_position` SET `menge` = %f WHERE `id` = %d", (float)$position->menge, $creditNotePosition['id'] ) ); } $preis = null; if(isset($position->price)) { $preis = (float)$position->price; } elseif(isset($position->preis)) { $preis = (float)$position->preis; } elseif(isset($position->amount)) { $preis = (float)$position->amount; } if($preis !== null) { if($hasCreditNoteTax) { if($creditNotePosition['steuersatz'] !== null && $creditNotePosition['steuersatz'] >= 0) { $preis /= 1+ $creditNotePosition['steuersatz'] / 100; } elseif($creditNotePosition['umsatzsteuer'] === 'ermaessigt') { $preis /= 1+ $creditNote['steuersatz_ermaessigt'] / 100; } elseif($creditNotePosition['umsatzsteuer'] !== 'befreit') { $preis /= 1+ $creditNote['steuersatz_normal'] / 100; } } $this->app->DB->Update( sprintf( 'UPDATE `gutschrift_position` SET `preis` = %f, `rabatt` = 0 WHERE `id` = %d', $preis, $creditNotePosition['id'] ) ); } } } $this->app->erp->GutschriftNeuberechnen($creditNoteId); if(!empty($data->amount)) { $soll = $this->app->DB->Select(sprintf('SELECT `soll` FROM `gutschrift` WHERE `id` = %d', $creditNoteId)); $diff = round($soll,2) - round((float)$data->amount, 2); if($diff == 0) { return $creditNoteId; } $this->app->erp->AddPositionManuellPreis( 'gutschrift', $creditNoteId, $shop['artikelrabatt'], 1, 'Differenz', -$diff,'befreit', $invoice['waehrung'] ); } return (int)$creditNoteId; } $creditNoteId = $this->app->erp->WeiterfuehrenRechnungZuGutschrift($invoice['id']); $this->app->erp->RechnungProtokoll($invoice['id'], 'Rechnung durch Shop-Trigger storniert'); $this->app->erp->GutschriftProtokoll($creditNoteId, 'Gutschrift durch Shop-Trigger angelegt'); $this->app->erp->BelegFreigabe('gutschrift', $creditNoteId); $this->app->erp->GutschriftNeuberechnen($creditNoteId); if(!empty($data->amount)) { $soll = $this->app->DB->Select(sprintf('SELECT `soll` FROM `gutschrift` WHERE `id` = %d', $creditNoteId)); $diff = round($soll,2) - round((float)$data->amount, 2); if($diff == 0) { return $creditNoteId; } $this->app->erp->AddPositionManuellPreis( 'gutschrift', $creditNoteId, $shop['artikelrabatt'], 1, 'Differenz', -$diff,'befreit', $invoice['waehrung'] ); } return (int)$creditNoteId; } public function ShopimportList() { $msg = $this->app->Secure->GetGET('msg'); if(!empty($msg)) { $msg = $this->app->erp->base64_url_decode($msg); $this->app->Tpl->Set('MESSAGE',$msg); } $this->app->erp->MenuEintrag('index.php?module=importvorlage&action=uebersicht','Zurück zur Übersicht'); //$this->app->Tpl->Add(TABS,"
  • Shopimport

  • "); $this->app->erp->Headlines('Shopimport'); //$this->app->erp->MenuEintrag("index.php?module=shopimport&action=alle","Alle importieren"); $this->app->erp->MenuEintrag('index.php?module=shopimport&action=list','Übersicht'); if($this->app->erp->RechteVorhanden('shopimport','alle')){ $this->app->Tpl->Add('INHALT', "


    "); } //$this->app->Tpl->Set('SUBHEADING',"Imports"); //Jeder der in Nachbesserung war egal ob auto oder manuell wandert anschliessend in Manuelle-Freigabe"); $runningcronjob = $this->app->DB->Select("SELECT id FROM prozessstarter WHERE parameter = 'shopimport' AND aktiv=1 AND mutex = 1 AND UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(letzteausfuerhung) < 300 LIMIT 1"); if($runningcronjob) { $this->app->Tpl->Set('TAB1','
    Es läuft gerade ein Cronjob der Aufträge abholt. Die manuelle Auftragsabholung ist in dieser Zeit gesperrt. Bitte warten Sie ein paar Minuten und versuchen Sie es erneut.
    '); }else{ $table = new EasyTable($this->app); $table->Query("SELECT ae.bezeichnung,p.abkuerzung as Projekt, ae.id FROM shopexport ae LEFT JOIN projekt p ON p.id=ae.projekt WHERE ae.aktiv='1'"); $table->DisplayNew('INHALT',"   "); $this->app->Tpl->Parse('TAB1','rahmen.tpl'); } $this->app->Tpl->Set('INHALT',''); // Archiv GESTERN $table = new EasyTable($this->app); $table->Query("SELECT a.datum, a.internet, a.transaktionsnummer,a.name, a.land, a.gesamtsumme as betrag, (SELECT SUM(r.soll) FROM rechnung r WHERE r.adresse=a.adresse AND r.status='offen') as mahnwesen, a.zahlungsweise, a.partnerid as Partner, a.id FROM auftrag a WHERE (datum=DATE_FORMAT( DATE_SUB( NOW() , INTERVAL 1 DAY ) , '%Y-%m-%d' ) OR (datum=DATE_FORMAT( NOW(), '%Y-%m-%d' ))) AND a.internet>0 ORDER by a.id DESC"); $table->DisplayNew('INHALT',"app->Conf->WFconf['defaulttheme']."/images/edit.svg\"> app->Conf->WFconf['defaulttheme']."/images/pdf.svg\">"); $this->app->Tpl->Parse('TAB2','rahmen.tpl'); $this->app->Tpl->Set('INHALT',''); $summe_heute = $this->app->DB->Select("SELECT SUM(a.gesamtsumme) FROM auftrag a WHERE a.datum=DATE_FORMAT( NOW(), '%Y-%m-%d' ) AND a.internet>0 "); $summe_gestern = $this->app->DB->Select("SELECT SUM(a.gesamtsumme) FROM auftrag a WHERE a.datum=DATE_FORMAT( DATE_SUB( NOW() , INTERVAL 1 DAY ) , '%Y-%m-%d' ) AND a.internet>0 "); $this->app->Tpl->Add('TAB2',"
    Heute: $summe_heute EUR (inkl. Steuer und Versand) Umsatz aus den Online-Shop
    "); $this->app->Tpl->Add('TAB2',"
    Gestern: $summe_gestern EUR (inkl. Steuer und Versand) Umsatz aus den Online-Shop
    "); $this->app->Tpl->Set('SUBHEADING',''); $this->app->Tpl->Parse('PAGE','shopimport_list.tpl'); } public function ShopimportArchiv() { $id = $this->app->Secure->GetGET('id'); $more = $this->app->Secure->GetGET('more'); $datum = $this->app->Secure->GetGET('datum'); $this->app->Tpl->Set('TABTEXT','Shopimport - Archiv'); //$this->app->YUI->TableSearch('TAB1',"shopimportarchiv"); //$this->app->Tpl->Set('TAB1',"Shopimport - Archiv"); if($datum=='') { $datum = date('Y-m-d'); } $result = $this->app->DB->SelectArr("SELECT * FROM shopimport_auftraege WHERE DATE_FORMAT(logdatei,'%Y-%m-%d') = '$datum'"); $table = ''; if(is_array($result)) { foreach($result as $key=>$row) { //$table = $row['imported']; if(isset($row['jsonencoded']) && $row['jsonencoded']) { $warenkorb = json_decode(base64_decode($row['warenkorb']), true); }else{ $warenkorb = unserialize(base64_decode($row['warenkorb'])); } $this->app->stringcleaner->XMLArray_clean($warenkorb); $table .= ""; } } $table .= '
    ".$warenkorb["onlinebestellnummer"]."/".$warenkorb["transaktionsnummer"]."".$warenkorb["name"]."".$warenkorb["email"]."".$warenkorb["gesamtsumme"]." mehr Informationen
    '; if($more > 0) { $result = $this->app->DB->Select("SELECT warenkorb FROM shopimport_auftraege WHERE id='$more' LIMIT 1"); if($this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE id='$more' AND jsonencoded = 1 LIMIT 1")) { $warenkorb = json_decode(base64_decode($result), true); }else{ $warenkorb = unserialize(base64_decode($result)); } ob_start(); var_dump($warenkorb); $var_dump_result = ob_get_clean(); $table .='
    '.$var_dump_result.'
    '; } $this->app->Tpl->Set('TAB1',$table); $this->app->Tpl->Parse('PAGE','tabview.tpl'); } public function ShopimportAlle() { $runningcronjob = $this->app->DB->Select("SELECT id FROM prozessstarter WHERE parameter = 'shopimport' AND aktiv=1 AND mutex = 1 AND UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(letzteausfuerhung) < 300 LIMIT 1"); if(!empty($runningcronjob)) { $this->app->Location->execute('index.php?module=shopimport&action=list'); } $lastshop = false; $shops = $this->app->DB->SelectArr("SELECT ae.id as id FROM shopexport ae LEFT JOIN projekt p ON p.id=ae.projekt WHERE ae.aktiv='1' and ae.demomodus <> '1'"); if(!empty($shops)) { $anz = 0; $fp = $this->app->erp->ProzessLock('shopimport_alle'); $cshops = (!empty($shops)?count($shops):0); for($i=0;$i<$cshops-1;$i++) { $anz += $this->ShopimportImport($shops[$i]['id'],$anz,true); } $lastshop=$shops[(!empty($shops)?count($shops):0)-1]['id']; $this->app->erp->ProzessUnlock($fp); } if($lastshop && is_numeric($lastshop)){ $this->app->Location->execute('index.php?module=shopimport&action=import&id='.$lastshop); } else{ $this->app->Location->execute('index.php?module=shopimport&action=list'); } } /** * @param int $shopId * @param string $shopOrderNumber * @param bool $changeShopOrderStatus * @param int $projectId * @param bool $allStati * * @return array */ public function importSingleOrder($shopId, $shopOrderNumber, $changeShopOrderStatus, $projectId, $allStati = false) { $pageContents = $this->app->remote->RemoteConnection($shopId); if($pageContents==='success') { $orderCount = $this->app->remote->RemoteGetAuftraegeAnzahlNummer($shopId, $shopOrderNumber); if($orderCount > 0) { if($allStati){ $result = $this->app->remote->RemoteCommand($shopId, 'getauftrag', ['nummer' => $shopOrderNumber]); } else { $result = $this->app->remote->RemoteGetAuftragNummer($shopId, $shopOrderNumber); } if(is_array($result)) { $result = reset($result); $shopExtId = $result['id']; $sessionid = $result['sessionid']; $jsonEncoded = 0; if(empty(!$result['warenkorbjson'])) { $jsonEncoded = 1; $warenkorb = $result['warenkorbjson']; } else{ $warenkorb = $result['warenkorb']; } $logdatei = $result['logdatei']; $username = !empty($this->app->User)?$this->app->User->GetName():'Cronjob'; $this->app->DB->Insert( sprintf( "INSERT INTO shopimport_auftraege (extid,sessionid,warenkorb,imported,projekt,bearbeiter,logdatei, jsonencoded, shopid) VALUES('%s','%s','%s',0,%d, '%s','%s', %d, %d)", $this->app->DB->real_escape_string($shopExtId), $this->app->DB->real_escape_string($sessionid), $this->app->DB->real_escape_string($warenkorb), (int)$projectId, $this->app->DB->real_escape_string($username), $this->app->DB->real_escape_string($logdatei), $jsonEncoded, (int)$shopId ) ); $insid = $this->app->DB->GetInsertID(); if($changeShopOrderStatus && (String)$shopExtId !== '') { $this->app->remote->RemoteDeleteAuftrag($shopId, $shopExtId); } return ['status'=>1,'id'=>$insid,'info'=>'Auftrag wurde abgeholt.']; } } return ['status'=>0,'error'=>'Auftrag wurde nicht gefunden!']; } return ['status'=>0,'error'=>'Verbindung fehlgeschlagen!']; } public function ShopimportEinzelimport() { $runningcronjob = $this->app->DB->Select("SELECT id FROM prozessstarter WHERE parameter = 'shopimport' AND aktiv=1 AND mutex = 1 AND UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(letzteausfuerhung) < 300 LIMIT 1"); if(!empty($runningcronjob)) { $this->app->Location->execute('index.php?module=shopimport&action=list'); } $id = (int)$this->app->Secure->GetGET('id'); $nummer = (String)$this->app->Secure->GetGET('nummer'); if($nummer === '') { $nummer = (String)$this->app->Secure->GetPOST('nummer'); } $deleteauftrag = (int)$this->app->Secure->GetPOST('deleteauftrag'); if(!empty($id) && !empty($nummer)) { $shoparr = $this->app->DB->SelectRow("SELECT projekt,holealle FROM shopexport WHERE id = '$id' LIMIT 1"); $projekt = $shoparr['projekt'];//$this->app->DB->Select("SELECT projekt FROM shopexport WHERE id = '$id' LIMIT 1"); $holealle = $shoparr['holealle'];//$this->app->DB->Select("SELECT holealle FROM shopexport WHERE id = '$id' LIMIT 1"); if($holealle) { $res = $this->importSingleOrder($id, $nummer, $deleteauftrag, $projekt); if($res['status'] == 1){ $this->app->Tpl->Add('MESSAGE','
    '.$res['info'].'
    '); } else { $this->app->Tpl->Add('MESSAGE','
    '.$res['error'].'
    '); } }else{ $this->app->Tpl->Add('MESSAGE','
    Shop nicht auf alle Aufträge eingstellt!
    '); } } elseif($id <= 0) { $msg = $this->app->erp->base64_url_encode('
    Kein Shop gewählt!
    '); $this->app->Location->execute('index.php?module=shopimport&action=list&msg='.$msg); } else { $this->app->Tpl->Add('MESSAGE','
    Keine Nummer angegeben!
    '); } $this->app->erp->MenuEintrag('index.php?module=shopimport&action=einzelimport&id='.$id,'Einzelimport'); $this->app->erp->MenuEintrag('index.php?module=shopimport&action=import','Shopauftrag-Liste'); $this->app->Tpl->Parse('PAGE','shopimport_einzelimport.tpl'); } public function KundeAnlegenUpdate($shopimportid,$shopextid, $warenkorb, $kundennummer = 0, $import_kundennummer, &$unbekanntezahlungsweisen) { if(empty($warenkorb)) { return 0; } if(!empty($this->app->stringcleaner)){ $this->app->stringcleaner->XMLArray_clean($warenkorb); } $i = 0; $sucess_import = 0; $shopid = $this->app->DB->Select("SELECT shopid FROM shopimport_auftraege WHERE id='$shopimportid' LIMIT 1"); $shopexportArr = $this->app->DB->SelectRow(sprintf('SELECT * FROM shopexport WHERE id=%d', $shopid)); $projekt = $shopexportArr['projekt'];//$this->app->DB->Select("SELECT projekt FROM shopexport WHERE id='$shopid'"); if(!empty($warenkorb['projekt']) && $this->app->DB->Select("SELECT id FROM projekt WHERE id = '".(int)$warenkorb['projekt']."' LIMIT 1")) { $projekt = (int)$warenkorb['projekt']; } $adresseprojekt = ''; $kundenurvonprojekt = $shopexportArr['kundenurvonprojekt'];//$this->app->DB->Select("SELECT kundenurvonprojekt FROM shopexport WHERE id = '".$shopid."' LIMIT 1"); if($kundenurvonprojekt) { $adresseprojekt = $projekt; } if(isset($warenkorb['subshop']) && $warenkorb['subshop']) { $subshopprojekt = $this->app->DB->SelectArr("SELECT * FROM shopexport_subshop WHERE shop = '".$shopid."' AND aktiv = 1 AND subshopkennung = '".$this->app->DB->real_escape_string($warenkorb['subshop'])."' LIMIT 1"); if($subshopprojekt) { if($subshopprojekt[0]['projekt']) { $adresseprojekt = $subshopprojekt[0]['projekt']; $projekt = $subshopprojekt[0]['projekt']; $arr[$i]['abkuerzung'] = $this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id = '$adresseprojekt' LIMIT 1"); } if($subshopprojekt[0]['sprache']) { $defaultsprache = $this->app->DB->Select("SELECT sprache FROM shopexport_sprachen WHERE shop = '$shopid' AND (projekt = '$projekt' OR projekt = 0) AND land = '' ORDER BY projekt = '$projekt' DESC, land = '".$warenkorb['land']."' DESC LIMIT 1"); $checksprache = $this->app->DB->Select("SELECT sprache FROM shopexport_sprachen WHERE shop = '$shopid' AND (projekt = '$projekt' OR projekt = 0) AND land = '".(isset($warenkorb['land'])?$warenkorb['land']:$this->app->erp->Firmendaten('land'))."' ORDER BY projekt = '$projekt' DESC, land = '".$warenkorb['land']."' DESC LIMIT 1"); if($checksprache != ''){ if(empty($warenkorb['kunde_sprache'])) { $warenkorb['kunde_sprache'] = $checksprache; } } else{ if(empty($warenkorb['kunde_sprache'])) { $warenkorb['kunde_sprache'] = $defaultsprache; } } if(empty($warenkorb['kunde_sprache'])) { $warenkorb['kunde_sprache'] = $subshopprojekt[0]['sprache']; } } }else{ if(!$this->app->DB->Select("SELECT id FROM shopexport_subshop WHERE shop = '".$shopid."' AND subshopkennung = '".$this->app->DB->real_escape_string($warenkorb['subshop'])."' LIMIT 1")) { $this->app->DB->Insert("INSERT INTO shopexport_subshop (shop, subshopkennung, aktiv, projekt) VALUES ('".$shopid."','".$this->app->DB->real_escape_string($warenkorb['subshop'])."','0','$projekt')"); } } } $kundenurvonprojekt = $this->app->DB->Select("SELECT kundenurvonprojekt FROM shopexport WHERE id = '$shopid' LIMIT 1"); if($kundenurvonprojekt) { $adresseprojekt = " AND projekt = '".$adresseprojekt."' "; }else{ $adresseprojekt = ''; } if(empty($warenkorb['name'])){ $warenkorb['name']=$warenkorb['ansprechpartner']; $warenkorb['ansprechpartner'] = ''; } if(empty($warenkorb['name']) && !empty($warenkorb['lieferadresse_name'])) { $warenkorb['name'] = $warenkorb['lieferadresse_name']; } if(empty($warenkorb['lieferadresse_name'])){ $warenkorb['lieferadresse_name']=$warenkorb['lieferadresse_ansprechpartner']; $warenkorb['lieferadresse_ansprechpartner'] = ''; } $warenkorb['email'] = trim($warenkorb['email']," \t\n\r\0\x0B\xc2\xa0"); if(empty($warenkorb['name'])) { return 0; } //$projekt = $arr[0][projekt]; if($kundennummer=='1') { $warenkorb['kundennummer']= $import_kundennummer; if(strlen($warenkorb['kundennummer'])!=''){ $adresse = $this->app->DB->Select("SELECT id FROM adresse WHERE kundennummer='{$warenkorb['kundennummer']}' AND geloescht!=1 $adresseprojekt LIMIT 1"); } if($adresse<=0) { $adresse = $this->app->erp->KundeAnlegen($warenkorb['anrede'],$warenkorb['name'],$warenkorb['abteilung'], $warenkorb['unterabteilung'],$warenkorb['ansprechpartner'],$warenkorb['adresszusatz'],$warenkorb['strasse'],$warenkorb['land'],$warenkorb['plz'],$warenkorb['ort'],$warenkorb['email'], $warenkorb['telefon'],$warenkorb['telefax'],$warenkorb['ustid'],$warenkorb['affiliate_ref'],$projekt); $warenkorb['customer_created'] = true; if(isset($warenkorb['kunde_sprache'])) { if($warenkorb['kunde_sprache'] == 'englisch' || $warenkorb['kunde_sprache'] == 'english') { $this->app->DB->Update("UPDATE adresse SET sprache = 'englisch' WHERE id = '$adresse' LIMIT 1"); }elseif($warenkorb['kunde_sprache'] == 'deutsch' || $warenkorb['kunde_sprache'] == 'german') { $this->app->DB->Update("UPDATE adresse SET sprache = 'deutsch' WHERE id = '$adresse' LIMIT 1"); }elseif(method_exists($this->app->erp, 'GetSprachenSelect')){ $sprachen = $this->app->erp->GetSprachenSelect; if(isset($sprachen[strtolower($warenkorb['kunde_sprache'])])) { $this->app->DB->Update("UPDATE adresse SET sprache = '".strtolower($warenkorb['kunde_sprache'])."' WHERE id = '$adresse' LIMIT 1"); } } } if($warenkorb['titel'] != ''){ $this->app->DB->Update("UPDATE adresse SET titel = '".$this->app->DB->real_escape_string($warenkorb['titel'])."' WHERE id = '$adresse' LIMIT 1"); } if(isset($warenkorb['ust_befreit'])) { $this->app->DB->Update("UPDATE adresse SET ust_befreit = '".(int)$warenkorb['ust_befreit']."' WHERE id = '$adresse' LIMIT 1"); } $kundenGruppen = $this->app->DB->SelectArr("SELECT gruppeid,type FROM shopexport_kundengruppen WHERE shopid=$shopid AND aktiv=1 AND apply_to_new_customers=1 AND type<>'Artikel' AND (projekt=0 OR projekt='$projekt')"); if(!empty($kundenGruppen)){ foreach ($kundenGruppen as $gruppe){ $this->app->erp->AddRolleZuAdresse($adresse, $gruppe['type'], 'von', 'Gruppe', $gruppe['gruppeid']); } } if(isset($warenkorb['kundengruppe'])){ $this->shopimportAdresseGruppenMapping($warenkorb['kundengruppe'],$adresse,$shopid,$projekt); } if($shopexportArr['vertrieb']) { $this->app->DB->Update( sprintf( 'UPDATE adresse SET vertrieb = %d WHERE id = %d', $shopexportArr['vertrieb'], $adresse ) ); } $this->app->DB->Update( sprintf( 'UPDATE adresse SET fromshop = %d WHERE fromshop = 0 AND id = %d', $shopexportArr['id'], $adresse ) ); } else { if(!empty($warenkorb['anrede'])) { $typ = $warenkorb['anrede']; }else{ $typ = $this->app->DB->Select("SELECT typ FROM adresse WHERE id = '$adresse' LIMIT 1"); } $name= $warenkorb['name']; if(!empty($warenkorb['abteilung'])) { $abteilung = $warenkorb['abteilung']; }else{ $abteilung = $this->app->DB->Select("SELECT abteilung FROM adresse WHERE id = '$adresse' LIMIT 1"); } if(!empty($warenkorb['unterabteilung'])) { $unterabteilung = $warenkorb['unterabteilung']; }else{ $unterabteilung = $this->app->DB->Select("SELECT unterabteilung FROM adresse WHERE id = '$adresse' LIMIT 1"); } $ansprechpartner = $warenkorb['ansprechpartner']; $adresszusatz = $warenkorb['adresszusatz']; $strasse = $warenkorb['strasse']; $land = $warenkorb['land']; $plz = $warenkorb['plz']; $ort = $warenkorb['ort']; if(!empty($warenkorb['email'])) { $email = $warenkorb['email']; }else{ $email = $this->app->DB->Select("SELECT email FROM adresse WHERE id = '$adresse' LIMIT 1"); } if(!empty($warenkorb['telefon'])) { $telefon = $warenkorb['telefon']; }else{ $telefon = $this->app->DB->Select("SELECT telefon FROM adresse WHERE id = '$adresse' LIMIT 1"); } if(!empty($warenkorb['telefax'])) { $telefax = $warenkorb['telefax']; }else{ $telefax = $this->app->DB->Select("SELECT telefax FROM adresse WHERE id = '$adresse' LIMIT 1"); } if(!empty($warenkorb['ustid'])) { $ustid = $warenkorb['ustid']; }else{ $ustid = $this->app->DB->Select("SELECT ustid FROM adresse WHERE id = '$adresse' LIMIT 1"); } if(!empty($warenkorb['affiliate_ref'])) { $partner = $warenkorb['affiliate_ref']; }else{ $partner = $this->app->DB->Select("SELECT partner FROM adresse WHERE id = '$adresse' LIMIT 1"); } // Update + protokoll if(!$this->app->DB->Select("SELECT adressennichtueberschreiben FROM shopexport WHERE id = '$shopid' LIMIT 1")) { if($warenkorb['mobil'] != ''){ $this->app->DB->Update("UPDATE adresse SET mobil = '".$this->app->DB->real_escape_string($warenkorb['mobil'])."' WHERE id = '$adresse' LIMIT 1"); } if($warenkorb['titel'] != ''){ $this->app->DB->Update("UPDATE adresse SET titel = '".$this->app->DB->real_escape_string($warenkorb['titel'])."' WHERE id = '$adresse' LIMIT 1"); } if($warenkorb['geburtstag'] != ''){ $this->app->DB->Update("UPDATE adresse SET geburtstag = '".$this->app->DB->real_escape_string($warenkorb['geburtstag'])."' WHERE id = '$adresse' AND ISNULL(geburtstag) LIMIT 1"); } if(isset($warenkorb['ust_befreit'])){ $query = sprintf('UPDATE `adresse` SET `ust_befreit` = %d WHERE `id` = %d LIMIT 1', $warenkorb['ust_befreit'], $adresse); $this->app->DB->Update($query); } $this->app->erp->KundeUpdate($adresse,$typ,$name,$abteilung, $unterabteilung,$ansprechpartner,$adresszusatz,$strasse,$land,$plz,$ort,$email,$telefon,$telefax,$ustid,$partner,$projekt); if(!empty($warenkorb['bundesland'])) { $this->app->DB->Update("UPDATE adresse SET bundesland = '".$this->app->DB->real_escape_string($warenkorb['bundesland'])."' WHERE id = '$adresse' LIMIT 1"); } } } } else { //echo "import als Neu-Kunde $shopimportid
    "; $typ = $warenkorb['anrede']; $name= $warenkorb['name']; $abteilung = $warenkorb['abteilung']; $unterabteilung = $warenkorb['unterabteilung']; $ansprechpartner = $warenkorb['ansprechpartner']; $adresszusatz = $warenkorb['adresszusatz']; $strasse = $warenkorb['strasse']; $land = $warenkorb['land']; $plz = $warenkorb['plz']; $ort = $warenkorb['ort']; $email = $warenkorb['email']; $telefon = $warenkorb['telefon']; $telefax = $warenkorb['telefax']; $ustid = $warenkorb['ustid']; $partner = $warenkorb['affiliate_ref']; // denn fall das es kunde 1:1 schon gibt = alte Kundennummer verwenden kommt vor allem vor, wenn ein Kunde an einem Tag oefters bestellt hat // $adresse = $this->app->erp->KundeAnlegen($typ,$name,$abteilung, // $unterabteilung,$ansprechpartner,$adresszusatz,$strasse,$land,$plz,$ort,$email,$telefon,$telefax,$ustid,$partner,$projekt); if(!empty($warenkorb['kundennummer'])){ $adresse = $this->app->DB->Select("SELECT id FROM adresse WHERE kundennummer='{$warenkorb['kundennummer']}' $adresseprojekt AND geloescht!=1 LIMIT 1"); } if(empty($adresse)){ $adresse = $this->app->DB->Select("SELECT id FROM adresse WHERE email='{$warenkorb['email']}' and email <> '' $adresseprojekt AND geloescht!=1 LIMIT 1"); } if($adresse<=0) { $adresse = $this->app->erp->KundeAnlegen($typ,$name,$abteilung, $unterabteilung,$ansprechpartner,$adresszusatz,$strasse,$land,$plz,$ort,$email,$telefon,$telefax,$ustid,$partner,$projekt); $warenkorb['customer_created'] = true; if(!empty($warenkorb['bundesland'])) { $this->app->DB->Update("UPDATE adresse SET bundesland = '".$this->app->DB->real_escape_string($warenkorb['bundesland'])."' WHERE id = '$adresse' LIMIT 1"); } if(isset($warenkorb['kunde_sprache'])) { if($warenkorb['kunde_sprache'] === 'englisch' || $warenkorb['kunde_sprache'] === 'english') { $this->app->DB->Update("UPDATE adresse SET sprache = 'englisch' WHERE id = '$adresse' LIMIT 1"); }elseif($warenkorb['kunde_sprache'] === 'deutsch' || $warenkorb['kunde_sprache'] === 'german') { $this->app->DB->Update("UPDATE adresse SET sprache = 'deutsch' WHERE id = '$adresse' LIMIT 1"); }elseif(method_exists($this->app->erp, 'GetAdressSprachen')){ $sprachen = $this->app->erp->GetAdressSprachen(); if(isset($sprachen[strtolower($warenkorb['kunde_sprache'])])) { $this->app->DB->Update("UPDATE adresse SET sprache = '".strtolower($warenkorb['kunde_sprache'])."' WHERE id = '$adresse' LIMIT 1"); } } } if($warenkorb['titel'] != ''){ $this->app->DB->Update("UPDATE adresse SET titel = '".$this->app->DB->real_escape_string($warenkorb['titel'])."' WHERE id = '$adresse' LIMIT 1"); } if(isset($warenkorb['ust_befreit'])) { $this->app->DB->Update("UPDATE adresse SET ust_befreit = '".(int)$warenkorb['ust_befreit']."' WHERE id = '$adresse' LIMIT 1"); } if($warenkorb['mobil'] != ''){ $this->app->DB->Update("UPDATE adresse SET mobil = '".$this->app->DB->real_escape_string($warenkorb['mobil'])."' WHERE id = '$adresse' LIMIT 1"); } if(!empty($warenkorb['geburtstag'])){ $query = sprintf("UPDATE `adresse` SET `geburtstag` = '%s' WHERE `id` = %d", $this->app->DB->real_escape_string($warenkorb['geburtstag']), $adresse); $this->app->DB->Update($query); } $kundenGruppen = $this->app->DB->SelectArr("SELECT gruppeid,type FROM shopexport_kundengruppen WHERE shopid=$shopid AND aktiv=1 AND apply_to_new_customers=1 AND (projekt=0 OR projekt='$projekt')"); if(!empty($kundenGruppen)){ foreach ($kundenGruppen as $gruppe){ $this->app->erp->AddRolleZuAdresse($adresse, $gruppe['type'], 'von', 'Gruppe', $gruppe['gruppeid']); } } if(isset($warenkorb['kundengruppe'])){ $this->shopimportAdresseGruppenMapping($warenkorb['kundengruppe'],$adresse,$shopid,$projekt); } if($shopexportArr['vertrieb']) { $this->app->DB->Update( sprintf( 'UPDATE adresse SET vertrieb = %d WHERE id = %d AND geloescht <> 1 AND vertrieb = 0', $shopexportArr['vertrieb'], $adresse ) ); } $this->app->DB->Update( sprintf( 'UPDATE adresse SET fromshop = %d WHERE fromshop = 0 AND id = %d', $shopexportArr['id'], $adresse ) ); } else { // Update + protokoll if(!$this->app->DB->Select("SELECT adressennichtueberschreiben FROM shopexport WHERE id = '$shopid' LIMIT 1")) { $this->app->erp->KundeUpdate($adresse,$typ,$name,$abteilung, $unterabteilung,$ansprechpartner,$adresszusatz,$strasse,$land,$plz,$ort,$email,$telefon,$telefax,$ustid,$partner,$projekt); if(!empty($warenkorb['bundesland'])) { $this->app->DB->Update("UPDATE adresse SET bundesland = '".$this->app->DB->real_escape_string($warenkorb['bundesland'])."' WHERE id = '$adresse' LIMIT 1"); } } } // abweichende lieferadresse gleich angelegen? if(strlen($warenkorb['lieferadresse_ansprechpartner'])>3) { $this->app->DB->Insert("INSERT INTO lieferadressen (typ,name,abteilung,unterabteilung,land,strasse,ort,plz,adresszusatz,adresse) VALUES ('','{$warenkorb['lieferadresse_ansprechpartner']}', '{$warenkorb['lieferadresse_abteilung']}','{$warenkorb['lieferadresse_unterabteilung']}','{$warenkorb['lieferadresse_land']}', '{$warenkorb['lieferadresse_strasse']}','{$warenkorb['lieferadresse_ort']}','{$warenkorb['lieferadresse_plz']}','{$warenkorb['lieferadresse_adresszusatz']}','$adresse')"); } if(strlen($warenkorb['lieferadresse_name'])>3 && $warenkorb['lieferadresse_ansprechpartner']=='') { $this->app->DB->Insert("INSERT INTO lieferadressen (typ,name,abteilung,unterabteilung,land,strasse,ort,plz,adresszusatz,adresse) VALUES ('','{$warenkorb['lieferadresse_name']}', '{$warenkorb['lieferadresse_abteilung']}','{$warenkorb['lieferadresse_unterabteilung']}','{$warenkorb['lieferadresse_land']}', '{$warenkorb['lieferadresse_strasse']}','{$warenkorb['lieferadresse_ort']}','{$warenkorb['lieferadresse_plz']}','{$warenkorb['lieferadresse_adresszusatz']}','$adresse')"); } } //print_r($warenkorb); //echo "

    Ende"; //exit; //imort auf kunde //$bekanntezahlungsweisen = array('rechnung','vorkasse','nachnahme','kreditkarte','einzugsermaechtigung','bar','paypal','amazon','amazon_bestellung','sofortueberweisung','amazoncba','secupay','lastschrift'); $bekanntezahlungsweisen = $this->app->erp->GetZahlungsweise(); $tmpauftragid = $this->app->erp->ImportAuftrag($adresse,$warenkorb,$projekt,$shopid); if ($tmpauftragid > 0) { $sucess_import = true; } $doctype = 'auftrag'; if($this->app->DB->Select("SELECT angeboteanlegen FROM shopexport WHERE id = '$shopid' LIMIT 1")) { $doctype = 'angebot'; } if(isset($warenkorb['doctype']) && $warenkorb['doctype']==='angebot'){ $doctype = 'angebot'; } $warenkorb['zahlungsweise'] = $this->app->DB->Select("SELECT zahlungsweise FROM $doctype WHERE id = '$tmpauftragid' LIMIT 1"); if($warenkorb['zahlungsweise'] != ''){ if(!isset($bekanntezahlungsweisen[$warenkorb['zahlungsweise']])){ if(!$unbekanntezahlungsweisen || !isset($unbekanntezahlungsweisen[strtolower($warenkorb['zahlungsweise'])])){ $unbekanntezahlungsweisen[strtolower($warenkorb['zahlungsweise'])] = false; } $tmp = array(); $tmp['bestellnummer'] = $warenkorb['onlinebestellnummer']; $unbekanntezahlungsweisen[strtolower($warenkorb['zahlungsweise'])][] = $tmp; } } if($shopimportid && $tmpauftragid) { $this->app->DB->Update("UPDATE shopimport_auftraege SET imported='1' WHERE id='$shopimportid' LIMIT 1"); } if($shopimportid) { $shopextid = $this->app->DB->real_escape_string($this->app->DB->Select("SELECT extid FROM shopimport_auftraege WHERE id='$shopimportid' LIMIT 1")); } if($shopextid) { $this->app->DB->Select("UPDATE $doctype SET shopextid='$shopextid' WHERE id='$tmpauftragid' LIMIT 1"); } $this->app->erp->RunHook('Shopimportwarenkorb', 4, $doctype, $tmpauftragid, $shopid, $warenkorb); $this->app->erp->RunHook('Shopimport', 3, $doctype, $tmpauftragid, $shopid); $adresse =''; return $sucess_import; } /** * @param String $gruppenBezeichnung im Shop * @param int $adresseId * @param int $shopId * @param int $projektId * * @return string */ private function shopimportAdresseGruppenMapping($gruppenBezeichnung, $adresseId, $shopId, $projektId){ $kundenGruppen = $this->getShopimportKundenGruppenZuordnungen($gruppenBezeichnung, $shopId, $projektId); if(empty($kundenGruppen)) { return ''; } foreach ($kundenGruppen as $gruppe => $rolle){ $this->app->erp->AddRolleZuAdresse($adresseId, $rolle, 'von', 'Gruppe', $gruppe); } return ''; } /** * @param String $gruppenBezeichnung im Shop * @param int $shopId * @param int $projektId * * @return array */ private function getShopimportKundenGruppenZuordnungen($gruppenBezeichnung, $shopId, $projektId){ $gefundeneGruppen = $this->app->DB->SelectArr("SELECT gruppeid, type FROM shopexport_kundengruppen WHERE shopid='$shopId' AND extgruppename='$gruppenBezeichnung' AND projekt='$projektId'"); if(empty($gefundeneGruppen)){ //Fallback, falls kein projektspezifisches Mapping gefunden $gefundeneGruppen = $this->app->DB->SelectArr("SELECT gruppeid, type FROM shopexport_kundengruppen WHERE shopid='$shopId' AND extgruppename='$gruppenBezeichnung' AND projekt='0'"); } if(empty($gefundeneGruppen)) { return []; } $kundenGruppen = []; foreach ($gefundeneGruppen as $gruppe){ $kundenGruppen[$gruppe['gruppeid']] = $gruppe['type']; } return $kundenGruppen; } /** * @param $shopImportedOrderId * * @return bool */ public function setShopImportedOrderTrash($shopImportedOrderId) { $this->app->DB->Update( sprintf( 'UPDATE shopimport_auftraege SET trash=1 WHERE id= %d LIMIT 1', (int)$shopImportedOrderId ) ); return $this->app->DB->affected_rows() > 0; } public function importShopOrder($shopImportedOrderId, $utf8coding, $customerNumber, $custumerNumberImported, &$unknownPaymentTypes) { $shopImportedOrder = $this->app->DB->SelectRow( sprintf( 'SELECT * FROM shopimport_auftraege WHERE imported=0 AND trash=0 AND id=%d LIMIT 1', $shopImportedOrderId ) ); if(empty($shopImportedOrder)) { return ['success' => 0]; } if(isset($shopImportedOrder['jsonencoded']) && $shopImportedOrder['jsonencoded']) { $shopOrder = json_decode(base64_decode($shopImportedOrder['warenkorb']), true); }else{ $shopOrder = unserialize(base64_decode($shopImportedOrder['warenkorb'])); } //alle leerzeichen am amfang und ende entfernen + umbrueche komplett entfernen if($utf8coding=='1') { $shopOrderCleaned = $this->app->erp->CleanDataBeforImportUTF8($shopOrder, false); } else { $shopOrderCleaned = $this->app->erp->CleanDataBeforImport($shopOrder, false); } if($shopOrderCleaned['name']===''){ $shopOrderCleaned['name']=$shopOrderCleaned['ansprechpartner']; $shopOrderCleaned['ansprechpartner'] = ''; } if($shopOrderCleaned['lieferadresse_name']==='') { $shopOrderCleaned['lieferadresse_name']=$shopOrderCleaned['lieferadresse_ansprechpartner']; $shopOrderCleaned['lieferadresse_ansprechpartner'] = ''; } if($shopOrderCleaned['name']==='' && !empty($shopOrderCleaned['lieferadresse_name'])) { $shopOrderCleaned['name'] = $shopOrderCleaned['lieferadresse_name']; } foreach($shopOrderCleaned as $k => $v) { if(!is_array($v)){ $shopOrderCleaned[$k] = $this->app->erp->fixeUmlaute($v); } } $umlautefehler = false; if((String)$shopOrder['name'] !== '' && (String)$shopOrderCleaned['name'] === '') { $umlautefehler = true; $this->app->erp->LogFile('Kodierungsfehler in shopimport_auftraege '.$shopImportedOrderId); } $succes = $this->KundeAnlegenUpdate($shopImportedOrderId,'', $shopOrderCleaned, $customerNumber, $custumerNumberImported,$unknownPaymentTypes); return ['codingerror'=>$umlautefehler, 'success' => $succes]; } public function ShopimportView() { $this->ShopimportImport(showonly: true); } public function ShopimportImport($id='', $count = 0, $returncount = false, $showonly = false) { $deletedRows = 0; if(!is_numeric($id) && $this->app->Secure->GetPOST('deletedouble')) { $id = (int)$this->app->Secure->GetGET('id'); $this->app->DB->Update( sprintf( 'UPDATE shopimport_auftraege AS sa INNER JOIN auftrag a ON sa.bestellnummer = a.internet AND sa.shopid = a.shop SET sa.trash = 1 WHERE IFNULL(a.internet,\'\') <> \'\' AND sa.trash = 0 AND sa.imported = 0 AND (sa.shopid = %d OR %d = 0)', $id, $id ) ); $deletedRows = (int)$this->app->DB->affected_rows(); $this->app->Tpl->Add('IMPORT','
    Es wurden '.$deletedRows.' bereits importierte Datensätze entfernt.
    '); } $runningcronjob = $this->app->DB->Select("SELECT id FROM prozessstarter WHERE parameter = 'shopimport' AND aktiv=1 AND mutex = 1 AND UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(letzteausfuerhung) < 300 LIMIT 1"); if($runningcronjob && !$showonly) { $this->app->Location->execute('index.php?module=shopimport&action=list'); } if(!is_numeric($id)){ $id = $this->app->Secure->GetGET('id'); } $shopexportarr = $this->app->DB->SelectRow("SELECT * FROM shopexport WHERE id='$id'"); $projekt = $shopexportarr['projekt'];//$this->app->DB->Select("SELECT projekt FROM shopexport WHERE id='$id'"); $demomodus = $shopexportarr['demomodus'];//$this->app->DB->Select("SELECT demomodus FROM shopexport WHERE id='$id'"); $einzelsync = $shopexportarr['einzelsync'];//$this->app->DB->Select("SELECT einzelsync FROM shopexport WHERE id='$id'"); $utf8codierung = $shopexportarr['utf8codierung'];//$this->app->DB->Select("SELECT utf8codierung FROM shopexport WHERE id='$id'"); if(!$returncount) { $this->app->erp->Headlines('Shopimport'); $this->app->erp->MenuEintrag('index.php?module=shopimport&action=list','Zurück zur Übersicht'); } //name, strasse, ort, plz und kundenummer, emailadresse oder bestellung kam von login account ==> Kunde aus DB verwenden //ACHTUNG Lieferadresse immer aus Auftrag!!! aber Lieferadresse extra bei Kunden anlegen if($this->app->Secure->GetPOST('submit')!='') { $auftraege = $this->app->Secure->GetPOST('auftrag'); $kundennummer = $this->app->Secure->GetPOST('kundennummer'); $import= $this->app->Secure->GetPOST('import'); $import_kundennummer= $this->app->Secure->GetPOST('import_kundennummer'); $sucess_import = 0; $insgs_import = 0; $unbekanntezahlungsweisen = null; $cauftraege = $auftraege?count($auftraege):0; for($i=0;$i<$cauftraege;$i++) { $adresse = ''; $shopimportid = $auftraege[$i]; $shopid = $this->app->DB->Select("SELECT shopid FROM shopimport_auftraege WHERE id='$shopimportid' LIMIT 1"); if($shopid) { $demomodus = $this->app->DB->Select("SELECT demomodus FROM shopexport WHERE id='$shopid'"); $einzelsync = $this->app->DB->Select("SELECT einzelsync FROM shopexport WHERE id='$shopid'"); $utf8codierung = $this->app->DB->Select("SELECT utf8codierung FROM shopexport WHERE id='$shopid'"); } $projekt = $this->app->DB->Select("SELECT projekt FROM shopimport_auftraege WHERE id='$shopimportid' LIMIT 1"); if($import[$shopimportid]==='warten') { } else if($import[$shopimportid]==='muell') { $this->setShopImportedOrderTrash($shopimportid); } else if($import[$shopimportid]==='import') { $res = $this->importShopOrder($shopimportid, $utf8codierung, $kundennummer[$shopimportid], $import_kundennummer[$shopimportid], $unbekanntezahlungsweisen); if($res['codingerror']) { $umlautefehler = true; } if($res['success']) { $sucess_import += $res['success']; } $insgs_import++; } } // ende for if($unbekanntezahlungsweisen) { $meldung = ''; foreach($unbekanntezahlungsweisen as $k => $v) { $meldung .= 'Unbekannte Zahlungsart: '.$k.' in Bestellung(en): '; $first = true; foreach($v as $k2 => $v2) { if(!$first) { $meldung .= ', '; } $first = false; $meldung .= $v2['bestellnummer']; } $meldung .= "
    \r\n"; } if(isset($this->app->User) && method_exists($this->app->User,'GetID') && $this->app->User->GetID()) { $this->app->erp->EventMitSystemLog($this->app->User->GetID(), $meldung, -1,'', 'warning', 1); } } if(!empty($umlautefehler)) { $msg = $this->app->erp->base64_url_encode("
    $sucess_import".($sucess_import != $insgs_import?" von $insgs_import ":'')." Aufträge importiert. Aufträge mit Kodierungsprobleme. Bitte prüfen Sie sie UTF8-Einstellung in der Shopschnittstelle!
    "); }else{ $msg = $this->app->erp->base64_url_encode("
    $sucess_import".($sucess_import != $insgs_import?" von $insgs_import ":'')." Aufträge importiert!
    "); } $this->app->Location->execute('index.php?module=shopimport&action=list&msg='.$msg); } if(!$showonly && $id) { try { $pageContents = $this->app->remote->RemoteConnection($id); }catch(Exception $e){ $pageContents = $e->getMessage(); } if($pageContents==='success') { $shopexportarr = $this->app->DB->SelectRow("SELECT * FROM shopexport WHERE id = '$id' LIMIT 1"); $holealle = $shopexportarr['holealle'];//$this->app->DB->Select("SELECT holealle FROM shopexport WHERE id = '$id' LIMIT 1"); $statusaendern = $shopexportarr['nummersyncstatusaendern'];//$this->app->DB->Select("SELECT nummersyncstatusaendern FROM shopexport WHERE id = '$id' LIMIT 1"); $auftragabgleich = $shopexportarr['auftragabgleich'];//$this->app->DB->Select("SELECT auftragabgleich FROM shopexport WHERE id = '$id' LIMIT 1"); $zeitraum = array('datumvon'=>$shopexportarr['datumvon'], 'datumbis'=>$shopexportarr['datumbis'],'tmpdatumvon'=>$shopexportarr['tmpdatumvon'], 'tmpdatumbis'=>$shopexportarr['tmpdatumbis'], 'anzgleichzeitig'=>$shopexportarr['anzgleichzeitig']); //$this->app->DB->SelectArr("SELECT datumvon, datumbis,tmpdatumvon, tmpdatumbis, anzgleichzeitig FROM shopexport WHERE id = '$id' LIMIT 1"); /*if(!empty($zeitraum)) { $zeitraum = reset($zeitraum); }*/ $anzgleichzeitig = 1; if(isset($zeitraum['anzgleichzeitig'])){ $anzgleichzeitig = (int)$zeitraum['anzgleichzeitig']; } if($anzgleichzeitig > 1) { $result = $this->app->remote->RemoteGetAuftrag($id); if(!empty($result) && is_array($result) && isset($result[0])) { $maxtime = false; $mintime = false; $gesamtanzahl = (!empty($result)?count($result):0); for($i = 0; $i < $gesamtanzahl; $i++) { $projekt = $this->app->DB->Select("SELECT projekt FROM shopexport WHERE id = '$id' LIMIT 1"); $auftrag = $result[$i]['id']; if(isset($result[$i]['warenkorbjson'])) { $isjson = true; $tmpwarenkorb = json_decode(base64_decode($result[$i]['warenkorbjson']), true); }else{ $isjson = false; $tmpwarenkorb = unserialize(base64_decode($result[$i]['warenkorb'])); } if(!empty($tmpwarenkorb['projekt']) && $this->app->DB->Select("SELECT id FROM projekt WHERE id = '".(int)$tmpwarenkorb['projekt']."' LIMIT 1")) { $projekt = (int)$tmpwarenkorb['projekt']; } if(!empty($tmpwarenkorb['zeitstempel'])) { $time = strtotime($tmpwarenkorb['zeitstempel']); if($time < 0) { $time = 0; } if($maxtime === false) { $maxtime = $time; } if($mintime === false) { $mintime = $time; } if($time > $maxtime) { $maxtime = $time; } if($time < $mintime) { $mintime = $time; } } $onlinebestellnummer = $tmpwarenkorb['onlinebestellnummer']; if(!empty($tmpwarenkorb['useorderid']) || (!is_numeric($onlinebestellnummer) && trim((String)$onlinebestellnummer) !== '')) { $onlinebestellnummer = $tmpwarenkorb['auftrag']; } if($holealle && $onlinebestellnummer) { $neue_nummer = (int)$onlinebestellnummer+1; $this->app->DB->Update("UPDATE shopexport SET ab_nummer = '$neue_nummer' WHERE id = '$id'"); } $sessionid = isset($result[$i]['sessionid'])?$result[$i]['sessionid']:''; if($isjson) { $warenkorb = $result[$i]['warenkorbjson']; }else{ $warenkorb = $result[$i]['warenkorb']; } $logdatei = isset($result[$i]['logdatei'])?$result[$i]['logdatei']:null; if(empty($logdatei)) { $logdatei = date('Y-m-d H:i:s'); } if(isset($tmpwarenkorb['subshop']) && $tmpwarenkorb['subshop']) { $subshopprojekt = $this->app->DB->Select("SELECT projekt FROM shopexport_subshop WHERE shop = '$id' AND aktiv = 1 AND subshopkennung = '".$this->app->DB->real_escape_string($tmpwarenkorb['subshop'])."' LIMIT 1"); if($subshopprojekt) { $projekt = $subshopprojekt; } } $letzteonlinebestellnummer = $tmpwarenkorb['onlinebestellnummer']; unset($tmpwarenkorb); //globalerauftragsnummernkreis $standardcheck = true; $modulename = $this->app->DB->Select( sprintf( "SELECT modulename FROM shopexport WHERE id = %d AND modulename <> '' AND (shoptyp = 'intern')", $id ) ); $shopIds = [$id]; $otherModules= empty($modulename)?null: $this->app->DB->SelectFirstCols( sprintf( "SELECT id FROM shopexport WHERE modulename = '%s' AND id <> %d", $this->app->DB->real_escape_string($modulename), $id ) ); if(!empty($otherModules) && $this->app->erp->ModulVorhanden($modulename)) { $obj = $this->app->erp->LoadModul($modulename); if(!empty($obj) && method_exists($obj, 'EinstellungenStruktur')){ $konfiguration = $obj->EinstellungenStruktur(); if($konfiguration && isset($konfiguration['globalerauftragsnummernkreis']) && $konfiguration['globalerauftragsnummernkreis']) { $shopIds = array_merge([$id], $otherModules); $standardcheck = false; /*$checkdoppeltimported = $this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE extid = '".$this->app->DB->real_escape_string($auftrag)."' and ((modulename = '".$this->app->DB->real_escape_string($modulename)."' AND shoptyp = 'intern') OR shopid = '$id') and warenkorb = '".$this->app->DB->real_escape_string($warenkorb)."' AND trash = 0 AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei )) LIMIT 1");*/ /*$checkdoppeltimported = $this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE extid = '".$this->app->DB->real_escape_string($auftrag)."' and ((modulename = '".$this->app->DB->real_escape_string($modulename)."' AND shoptyp = 'intern') OR shopid = '$id') AND trash = 0 AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei )) LIMIT 1");*/ } } } $checkdoppeltimported = $this->app->DB->Select( sprintf( "SELECT id FROM shopimport_auftraege WHERE extid = '%s' and shopid IN (%s) AND trash = 0 AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei )) LIMIT 1", $this->app->DB->real_escape_string($auftrag), implode(',', $shopIds) ) ); /*if($standardcheck) {*/ /*$checkdoppeltimported = $this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE extid = '".$this->app->DB->real_escape_string($auftrag)."' and shopid = '$id' and warenkorb = '".$this->app->DB->real_escape_string($warenkorb)."' AND trash = 0 AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei )) LIMIT 1");*/ /*$checkdoppeltimported = $this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE extid = '".$this->app->DB->real_escape_string($auftrag)."' and shopid = '$id' AND trash = 0 AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei )) LIMIT 1"); }*/ $insid = null; if(empty($checkdoppeltimported)) { $this->app->DB->Insert("INSERT INTO shopimport_auftraege (id,extid,sessionid,warenkorb,imported,projekt,bearbeiter,logdatei) VALUES('','".$this->app->DB->real_escape_string($auftrag)."','".$this->app->DB->real_escape_string($sessionid)."','".$this->app->DB->real_escape_string($warenkorb)."','0','$projekt','".$this->app->DB->real_escape_string($this->app->User->GetName())."','".$this->app->DB->real_escape_string($logdatei)."')"); $insid = $this->app->DB->GetInsertID(); if($insid) { if($isjson) { $this->app->DB->Update("UPDATE shopimport_auftraege set jsonencoded = 1 where id = '$insid'"); } $this->app->DB->Update("UPDATE shopimport_auftraege set shopid = '$id' where id = '$insid'"); $this->app->DB->Update("UPDATE shopimport_auftraege set bestellnummer = '".$this->app->DB->real_escape_string($letzteonlinebestellnummer)."' where id = '$insid'"); } } if($demomodus!='1') { $this->app->remote->RemoteDeleteAuftrag($id,$auftrag,$letzteonlinebestellnummer); } elseif($demomodus == '1') { break; } unset($letzteonlinebestellnummer); } if(!$demomodus) { if(empty($maxtime)) { $maxtime = strtotime(date('Y-m-d H:i:s')); } $datumvon = strtotime($zeitraum['datumvon']); $datumbis = strtotime($zeitraum['datumbis']); $tmpdatumvon = strtotime($zeitraum['tmpdatumvon']); $tmpdatumbis = strtotime($zeitraum['tmpdatumbis']); if($datumvon < 0){ $datumvon = 0; } if($datumbis < 0){ $datumbis = 0; } if($tmpdatumvon < 0){ $tmpdatumvon = 0; } if($tmpdatumbis < 0) { $tmpdatumbis = 0; } $this->app->DB->Update("UPDATE shopexport SET datumvon = '".date('Y-m-d H:i:s',$maxtime)."', tmpdatumbis = '0000-00-00' WHERE id = '$id' LIMIT 1"); } }else{ if(!$demomodus) { if(is_array($result) && !empty($result['zeitstempel'])) { $this->app->DB->Update("UPDATE shopexport SET datumvon = '".date('Y-m-d H:i:s',strtotime($result['zeitstempel']))."', tmpdatumbis = '0000-00-00' WHERE id = '$id' AND datumvon < '".date('Y-m-d H:i:s',strtotime($result['zeitstempel']))."' LIMIT 1"); } if(empty($maxtime)) { $maxtime = strtotime(date('Y-m-d H:i:s')); } $datumvon = strtotime($zeitraum['datumvon']); $datumbis = strtotime($zeitraum['datumbis']); $tmpdatumvon = strtotime($zeitraum['tmpdatumvon']); $tmpdatumbis = strtotime($zeitraum['tmpdatumbis']); if($datumvon < 0){ $datumvon = 0; } if($datumbis < 0){ $datumbis = 0; } if($tmpdatumvon < 0){ $tmpdatumvon = 0; } if($tmpdatumbis < 0){ $tmpdatumbis = 0; } if($tmpdatumbis) { $this->app->DB->Update("UPDATE shopexport SET tmpdatumbis = '0000-00-00' WHERE id = '$id' LIMIT 1"); } } } }else{ $gesamtanzahl = $this->app->remote->RemoteGetAuftraegeAnzahl($id); $maxmanuell = (int)$this->app->DB->Select("SELECT maxmanuell FROM shopexport WHERE id = '$id' LIMIT 1"); if($maxmanuell <= 0){ $maxmanuell = 100; } if($gesamtanzahl > $maxmanuell){ $gesamtanzahl = $maxmanuell; } if($einzelsync=='1' && $gesamtanzahl > 1 && $maxmanuell <= 1){ $gesamtanzahl = 1; } if($gesamtanzahl > 0) { for($i=0;$i<$gesamtanzahl;$i++) { //import au $result = $this->app->remote->RemoteGetAuftrag($id); if(is_array($result)) { $auftrag = $result[0]['id']; if(isset($result[0]['warenkorbjson'])) { $isjson = true; $tmpwarenkorb = json_decode(base64_decode($result[0]['warenkorbjson']), true); }else{ $isjson = false; $tmpwarenkorb = unserialize(base64_decode($result[0]['warenkorb'])); } $onlinebestellnummer = $tmpwarenkorb['onlinebestellnummer']; if(!empty($tmpwarenkorb['useorderid']) || (!is_numeric($onlinebestellnummer) && trim((String)$onlinebestellnummer) !== '')) { $onlinebestellnummer = $tmpwarenkorb['auftrag']; } if($holealle && $onlinebestellnummer) { $neue_nummer = (int)$onlinebestellnummer+1; $this->app->DB->Update("UPDATE shopexport SET ab_nummer = '$neue_nummer' WHERE id = '$id'"); } $sessionid = $result[0]['sessionid']; if($isjson) { $warenkorb = $result[0]['warenkorbjson']; }else{ $warenkorb = $result[0]['warenkorb']; } $logdatei = $result[0]['logdatei']; if(empty($logdatei)) { $logdatei = date('Y-m-d H:i:s'); } $projekt = $this->app->DB->Select("SELECT projekt FROM shopexport WHERE id = '$id' LIMIT 1"); if(!empty($tmpwarenkorb['projekt']) && $this->app->DB->Select("SELECT id FROM projekt WHERE id = '".(int)$tmpwarenkorb['projekt']."' LIMIT 1")) { $projekt = (int)$tmpwarenkorb['projekt']; } if(isset($tmpwarenkorb['subshop']) && $tmpwarenkorb['subshop']) { $subshopprojekt = $this->app->DB->Select("SELECT projekt FROM shopexport_subshop WHERE shop = '$id' AND aktiv = 1 AND subshopkennung = '".$this->app->DB->real_escape_string($tmpwarenkorb['subshop'])."' LIMIT 1"); if($subshopprojekt) { $projekt = $subshopprojekt; } } unset($tmpwarenkorb); $standardcheck = true; $modulename = $this->app->DB->Select( sprintf( "SELECT modulename FROM shopexport WHERE id = %d AND modulename <> '' AND (shoptyp = 'intern')", $id ) ); $shopIds = [$id]; $otherModules= empty($modulename)?null: $this->app->DB->SelectFirstCols( sprintf( "SELECT id FROM shopexport WHERE modulename = '%s' AND id <> %d", $this->app->DB->real_escape_string($modulename), $id ) ); if(!empty($otherModules) && $this->app->erp->ModulVorhanden($modulename)) { $obj = $this->app->erp->LoadModul($modulename); if(!empty($obj) && method_exists($obj, 'EinstellungenStruktur')){ $konfiguration = $obj->EinstellungenStruktur(); if($konfiguration && isset($konfiguration['globalerauftragsnummernkreis']) && $konfiguration['globalerauftragsnummernkreis']) { $shopIds = array_merge([$id], $otherModules); $standardcheck = false; /*$checkdoppeltimported = $this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE extid = '".$this->app->DB->real_escape_string($auftrag)."' and ((modulename = '".$this->app->DB->real_escape_string($modulename)."' AND shoptyp = 'intern') OR shopid = '$id') and warenkorb = '".$this->app->DB->real_escape_string($warenkorb)."' AND trash = 0 AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei )) LIMIT 1");*/ /*$checkdoppeltimported = $this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE extid = '".$this->app->DB->real_escape_string($auftrag)."' and ((modulename = '".$this->app->DB->real_escape_string($modulename)."' AND shoptyp = 'intern') OR shopid = '$id') AND trash = 0 AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei )) LIMIT 1");*/ } } } $checkdoppeltimported = $this->app->DB->Select( sprintf( "SELECT id FROM shopimport_auftraege WHERE extid = '%s' and shopid IN (%s) AND trash = 0 AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei )) LIMIT 1", $this->app->DB->real_escape_string($auftrag), implode(',', $shopIds) ) ); /*if($standardcheck){*/ /*$checkdoppeltimported = $this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE extid = '" . $this->app->DB->real_escape_string($auftrag) . "' and shopid = '$id' and warenkorb = '" . $this->app->DB->real_escape_string($warenkorb) . "' AND trash = 0 AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei )) LIMIT 1");*/ /*$checkdoppeltimported = $this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE extid = '" . $this->app->DB->real_escape_string($auftrag) . "' and shopid = '$id' AND trash = 0 AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei )) LIMIT 1"); }*/ $insid = null; if($demomodus == '1') { $checkdoppeltimported = null; } if(!$checkdoppeltimported) { $this->app->DB->Insert("INSERT INTO shopimport_auftraege (id,extid,sessionid,warenkorb,imported,projekt,bearbeiter,logdatei) VALUES('','$auftrag','$sessionid','$warenkorb','0','$projekt','".$this->app->User->GetName()."','$logdatei')"); $insid = $this->app->DB->GetInsertID(); if($insid){ $this->app->DB->Update("UPDATE shopimport_auftraege set shopid = '$id' where id = '$insid'"); $this->app->DB->Update("UPDATE shopimport_auftraege set logdatei = now() where id = '$insid' AND logdatei = '0000-00-00' OR logdatei > now()"); if($isjson){ $this->app->DB->Update("UPDATE shopimport_auftraege set jsonencoded = 1 where id = '$insid'"); } } } if($demomodus!='1') { $this->app->remote->RemoteDeleteAuftrag($id,$auftrag); } elseif($demomodus == '1') { $i=$gesamtanzahl; } } } } } } else { if(!$returncount) { $this->app->Tpl->Set('IMPORT',"
    Verbindungsprobleme! Bitte Administrator kontaktieren! ($pageContents)
    "); }else { $this->error = "
    Verbindungsprobleme! Bitte Administrator kontaktieren! ($pageContents)
    "; } } } if(!$returncount) { $this->drawShopOrderTable($deletedRows); } else { return $count+(is_numeric($gesamtanzahl)?$gesamtanzahl:0); } } /** * @param array $arr * * @return array */ public function getCustomerNumberFromShopCart($arr) { $validkundennummer = ''; if(!empty($arr['jsonencoded'])) { $warenkorb = json_decode(base64_decode($arr['warenkorb']),true); }else{ $warenkorb = unserialize(base64_decode($arr['warenkorb'])); } foreach($warenkorb as $key=>$value) { if(is_string($warenkorb[$key])){ $warenkorb[$key] = trim($warenkorb[$key]); } } foreach($warenkorb as $k => $v) { $warenkorb[$k] = $this->app->erp->fixeUmlaute($v); } $kundenurvonprojekt = $this->app->DB->Select("SELECT kundenurvonprojekt FROM shopexport WHERE id = '".$arr['shopid']."' LIMIT 1"); $adresseprojekt = ''; if($kundenurvonprojekt) { $adresseprojekt = $this->app->DB->Select("SELECT projekt FROM shopexport WHERE id = '".$arr['shopid']."' LIMIT 1"); } if(!empty($warenkorb['kundennummer'])) { $validkundennummer = $this->app->DB->Select( "SELECT kundennummer FROM adresse WHERE kundennummer='".$warenkorb['kundennummer']."' and email <> '' $adresseprojekt AND geloescht!=1 AND kundennummer <> '' LIMIT 1" ); } if(isset($warenkorb['subshop']) && $warenkorb['subshop']) { $subshopprojekt = $this->app->DB->Select("SELECT projekt FROM shopexport_subshop WHERE shop = '".$arr['shopid']."' AND aktiv = 1 AND subshopkennung = '".$this->app->DB->real_escape_string($warenkorb['subshop'])."' LIMIT 1"); if($subshopprojekt) { if(!$kundenurvonprojekt) { $adresseprojekt = $subshopprojekt; } $arr['abkuerzung'] = $this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id = '$adresseprojekt' LIMIT 1"); } } if($kundenurvonprojekt) { $adresseprojekt = " AND projekt = '".$adresseprojekt."' "; }else { $adresseprojekt = ''; } $checkid = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE `name`='".$this->app->DB->real_escape_string($warenkorb['name'])."' AND abteilung='".$this->app->DB->real_escape_string($warenkorb['abteilung'])."' AND strasse='".$this->app->DB->real_escape_string($warenkorb['strasse'])."' AND plz='".$this->app->DB->real_escape_string($warenkorb['plz'])."' AND ort='".$this->app->DB->real_escape_string($warenkorb['ort'])."' AND kundennummer <> '' AND geloescht!=1 $adresseprojekt ORDER BY email='".$this->app->DB->real_escape_string($warenkorb['email'])."' DESC LIMIT 1"); if($warenkorb['email'] != '') { if($warenkorb['email']!=='amazon_import_bounce@nfxmedia.de') { $checkidemail = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE email='".$warenkorb['email']."' and email <> '' $adresseprojekt AND geloescht!=1 AND kundennummer <> '' LIMIT 1"); } if((String)$checkidemail === ''){ $checkidemail = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE name LIKE '" . $warenkorb['name'] . "' AND ort LIKE '" . $warenkorb['ort'] . "' AND geloescht!=1 $adresseprojekt AND kundennummer <> '' LIMIT 1"); } }else{ $checkidemail = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE name='".$this->app->DB->real_escape_string($warenkorb['name'])."' AND strasse='".$this->app->DB->real_escape_string($warenkorb['strasse'])."' AND plz='".$this->app->DB->real_escape_string($warenkorb['plz'])."' AND ort='".$this->app->DB->real_escape_string($warenkorb['ort'])."' $adresseprojekt AND geloescht!=1 AND kundennummer <> '' LIMIT 1"); } if($warenkorb['kundennummer']!='' && !empty($validkundennummer) && $validkundennummer==$warenkorb['kundennummer']) { $kdrnummer = $warenkorb['kundennummer']; } elseif ($checkid!='') { $kdrnummer = $checkid; } elseif ($checkidemail!='') { $kdrnummer = $checkidemail; } else { $kdrnummer=''; $checkidemail=''; } return [$checkidemail, $kdrnummer]; } public function drawShopOrderTable($deletedRows) { $checkglobal = null; $htmltable = new HTMLTable(0,'100%','',3,1,'font-size:85%'); $htmltable->AddRowAsHeading(array('Import','Müll','Später','Projekt','Internet','Name','Bemerkung','Strasse','PLZ','Ort','Kd.Nr.','vorhanden','Land','Betrag','Offen','Zahlung','Partner')); $htmltable->ChangingRowColors('#e0e0e0','#fff'); $shopid = $this->app->Secure->GetGET('shopid'); $where = ''; if(!empty($shopid)){ $where = 'AND sa.shopid='.(int)$shopid; } $bestellnummer = $this->app->Secure->GetGET('bestellnummer'); if(!empty($bestellnummer)){ $bestellnummer = preg_replace('/[^\w-]/', '', $bestellnummer); $where .= " AND sa.bestellnummer='$bestellnummer'"; } $arr = $this->app->DB->SelectArr("SELECT sa.*, p.abkuerzung FROM shopimport_auftraege sa left join projekt p on sa.projekt = p.id WHERE sa.imported='0' AND sa.trash='0' $where ORDER BY sa.logdatei LIMIT 100"); if(is_array($arr) && (!empty($arr)?count($arr):0) > 0) { //Alte Auftraege prüfen $alteauftraegeohnebestellnummer = $this->app->DB->Query("SELECT sa.* FROM shopimport_auftraege sa WHERE isnull(bestellnummer) AND sa.trash='0' LIMIT 100"); while($row = $this->app->DB->Fetch_Assoc($alteauftraegeohnebestellnummer)) { if($row['warenkorb'] != '') { if(!empty($row['jsonencoded'])) { $warenkorb = json_decode(base64_decode($row['warenkorb']),true); }else{ $warenkorb = unserialize(base64_decode($row['warenkorb'])); } $this->app->DB->Update("UPDATE shopimport_auftraege set bestellnummer = '".(isset($warenkorb['onlinebestellnummer'])?$warenkorb['onlinebestellnummer']:'')."' where id = '".$row['id']."'"); }else{ $this->app->DB->Update("UPDATE shopimport_auftraege set bestellnummer = '' where id = '".$row['id']."'"); } } $this->app->DB->free($alteauftraegeohnebestellnummer); $unbekanntezahlungsweisen = null; $enthaeltdoppeltenummern = false; $carr = $arr?count($arr):0; for($i=0;$i<$carr;$i++) { if(empty($checkglobal) || !isset($checkglobal[$arr[$i]['shopid']])) { $checkglobal[$arr[$i]['shopid']] = null; if(($modulename = $this->app->DB->Select("SELECT modulename FROM shopexport WHERE id = '".$arr[$i]['shopid']."' AND modulename <> '' AND shoptyp = 'intern'")) && $this->app->DB->Select("SELECT id FROM shopexport WHERE modulename = '".$this->app->DB->real_escape_string($modulename)."' AND id <> '".$arr[$i]['shopid']."' LIMIT 1") ) { $shopsintern = $this->app->DB->SelectArr("SELECT id FROM shopexport WHERE id = '".$arr[$i]['shopid']."' OR (modulename = '".$this->app->DB->real_escape_string($modulename)."' AND shoptyp = 'intern')"); if($shopsintern) { foreach($shopsintern as $vs) { $checkglobal[$arr[$i]['shopid']][] = " shopid = '". $vs['id']."' "; } if($this->app->erp->ModulVorhanden($modulename)) { /** @var ShopimporterBase $obj */ $obj = $this->app->erp->LoadModul($modulename); if($obj && method_exists($obj, 'EinstellungenStruktur')){ $konfiguration = $obj->EinstellungenStruktur(); if($konfiguration && isset($konfiguration['globalerauftragsnummernkreis']) && $konfiguration['globalerauftragsnummernkreis']) { }else { $checkglobal[$arr[$i]['shopid']] = null; } }else { $checkglobal[$arr[$i]['shopid']] = null; } }else { $checkglobal[$arr[$i]['shopid']] = null; } } } } } $carr = $arr?count($arr):0; for($i=0;$i<$carr;$i++) { $projekt = $this->app->DB->Select("SELECT projekt FROM shopexport WHERE id = '".$arr[$i]['shopid']."' LIMIT 1"); $auftraegeaufspaeter = $this->app->DB->Select("SELECT auftraegeaufspaeter FROM shopexport WHERE id='".$arr[$i]['shopid']."'"); if(!empty($arr[$i]['jsonencoded'])) { $warenkorb = json_decode(base64_decode($arr[$i]['warenkorb']),true); }else{ $warenkorb = unserialize(base64_decode($arr[$i]['warenkorb'])); } foreach($warenkorb as $key=>$value) { if(is_string($warenkorb[$key])){ $warenkorb[$key] = trim($warenkorb[$key]); } } foreach($warenkorb as $k => $v) { $warenkorb[$k] = $this->app->erp->fixeUmlaute($v); } $kundenurvonprojekt = $this->app->DB->Select("SELECT kundenurvonprojekt FROM shopexport WHERE id = '".$arr[$i]['shopid']."' LIMIT 1"); $adresseprojekt = ''; if($kundenurvonprojekt) { $adresseprojekt = $this->app->DB->Select("SELECT projekt FROM shopexport WHERE id = '".$arr[$i]['shopid']."' LIMIT 1"); } if(isset($warenkorb['subshop']) && $warenkorb['subshop']) { $subshopprojekt = $this->app->DB->Select("SELECT projekt FROM shopexport_subshop WHERE shop = '".$arr[$i]['shopid']."' AND aktiv = 1 AND subshopkennung = '".$this->app->DB->real_escape_string($warenkorb['subshop'])."' LIMIT 1"); if($subshopprojekt) { if(!$kundenurvonprojekt) { $adresseprojekt = $subshopprojekt; } $arr[$i]['abkuerzung'] = $this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id = '$adresseprojekt' LIMIT 1"); } } if($kundenurvonprojekt) { $adresseprojekt = " AND projekt = '".$adresseprojekt."' "; }else { $adresseprojekt = ''; } $checkid = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE `name`='".$this->app->DB->real_escape_string($warenkorb['name'])."' AND abteilung='".$this->app->DB->real_escape_string($warenkorb['abteilung'])."' AND strasse='".$this->app->DB->real_escape_string($warenkorb['strasse'])."' AND plz='".$this->app->DB->real_escape_string($warenkorb['plz'])."' AND ort='".$this->app->DB->real_escape_string($warenkorb['ort'])."' AND kundennummer <> '' AND geloescht!=1 $adresseprojekt ORDER BY email='".$this->app->DB->real_escape_string($warenkorb['email'])."' DESC LIMIT 1"); if($warenkorb['email'] != '') { if($warenkorb['email']!=='amazon_import_bounce@nfxmedia.de') { $checkidemail = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE email='".$warenkorb['email']."' and email <> '' $adresseprojekt AND geloescht!=1 AND kundennummer <> '' LIMIT 1"); } if((String)$checkidemail === ''){ $checkidemail = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE name LIKE '" . $warenkorb['name'] . "' AND ort LIKE '" . $warenkorb['ort'] . "' AND geloescht!=1 $adresseprojekt AND kundennummer <> '' LIMIT 1"); } }else{ $checkidemail = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE name='".$this->app->DB->real_escape_string($warenkorb['name'])."' AND strasse='".$this->app->DB->real_escape_string($warenkorb['strasse'])."' AND plz='".$this->app->DB->real_escape_string($warenkorb['plz'])."' AND ort='".$this->app->DB->real_escape_string($warenkorb['ort'])."' $adresseprojekt AND geloescht!=1 AND kundennummer <> '' LIMIT 1"); } if($warenkorb['kundennummer']!='' && !empty($validkundennummer) && $validkundennummer==$warenkorb['kundennummer']) { $kdrnummer = $warenkorb['kundennummer']; $kdr_name = $this->app->DB->Select("SELECT name FROM adresse WHERE kundennummer='$kdrnummer' $adresseprojekt AND geloescht!=1 LIMIT 1"); $email = $this->app->DB->Select("SELECT email FROM adresse WHERE kundennummer='$kdrnummer' $adresseprojekt AND geloescht!=1 LIMIT 1"); $parts= explode("\n", wordwrap($kdr_name, 20, "\n")); $kdr_name = $parts[0]; $kdr_name = '
    '.$kdr_name.''; $email = '
    '.$email.''; $kdr_strasse = $this->app->DB->Select("SELECT strasse FROM adresse WHERE kundennummer='$kdrnummer' AND geloescht!=1 $adresseprojekt LIMIT 1"); $parts= explode("\n", wordwrap($kdr_strasse, 20, "\n")); $kdr_strasse = $parts[0]; $kdr_strasse = '
    '.$kdr_strasse.''; $kdr_plz = '
    '.$this->app->DB->Select("SELECT plz FROM adresse WHERE kundennummer='$kdrnummer' AND geloescht!=1 $adresseprojekt LIMIT 1").''; $kdr_ort = '
    '.$this->app->DB->Select("SELECT ort FROM adresse WHERE kundennummer='$kdrnummer' AND geloescht!=1 $adresseprojekt LIMIT 1").''; $checked=''; } elseif ($checkid!='') { $checked='checked'; $kdrnummer = $checkid; //$kdr_name = "
    ".$this->app->DB->Select("SELECT name FROM adresse WHERE kundennummer='$kdrnummer' AND firma='".$this->app->User->GetFirma()."' LIMIT 1").""; $kdrArr = $this->app->DB->SelectRow("SELECT name, email, strasse, ort, plz FROM adresse WHERE kundennummer='$kdrnummer' AND geloescht!=1 $adresseprojekt LIMIT 1"); $kdr_name = $kdrArr['name']; $email = $kdrArr['email']; $parts= explode("\n", wordwrap($kdr_name, 20, "\n")); $kdr_name = $parts[0]; $kdr_name = '
    '.$kdr_name.''; $email = '
    '.$email.''; $kdr_strasse = $kdrArr['strasse']; $parts= explode("\n", wordwrap($kdr_strasse, 20, "\n")); $kdr_strasse = $parts[0]; $kdr_strasse = '
    '.$kdr_strasse.''; $kdr_plz = '
    '.$kdrArr['plz'].''; $kdr_ort = '
    '.$kdrArr['or'].''; } elseif ($checkidemail!='') { $checked='checked'; $kdrnummer = $checkidemail; $warenkorb['kundennummer'] = $kdrnummer; //$kdr_name = "
    ".$this->app->DB->Select("SELECT name FROM adresse WHERE kundennummer='$kdrnummer' AND firma='".$this->app->User->GetFirma()."' LIMIT 1").""; $kdrArr = $this->app->DB->SelectRow("SELECT name, email, strasse, ort, plz FROM adresse WHERE kundennummer='$kdrnummer' AND geloescht!=1 $adresseprojekt LIMIT 1"); $kdr_name = $kdrArr['name']; $email = $kdrArr['email']; $parts= explode("\n", wordwrap($kdr_name, 20, "\n")); $kdr_name = $parts[0]; $kdr_name = '
    '.$kdr_name.''; $email = '
    '.$email.''; $kdr_strasse = $kdrArr['strasse']; $parts= explode("\n", wordwrap($kdr_strasse, 40, "\n")); $kdr_strasse = $parts[0]; $kdr_strasse = '
    '.$kdr_strasse.''; $kdr_plz = '
    '.$kdrArr['plz'].''; $kdr_ort = '
    '.$kdrArr['ort'].''; } else { $checked=''; $checkid=''; $kdrnummer=''; $checkidemail=''; $kdr_name=''; $kdr_strasse=''; $kdr_plz=''; $kdr_ort=''; $email=''; } if($kdrnummer != ''){ $kdr_addresse_id = $this->app->DB->Select("SELECT id FROM adresse WHERE kundennummer='$kdrnummer' AND geloescht!=1 $adresseprojekt LIMIT 1"); } else { $kdr_addresse_id = ''; } $warenkorb['name'] = $this->app->erp->LimitWord($warenkorb['name'],20); $warenkorb['strasse'] = $this->app->erp->LimitWord($warenkorb['strasse'],20); $htmltable->NewRow(); $doppelteonlinebestellnummer = false; if(!empty($warenkorb['onlinebestellnummer'])) { $check = $this->app->DB->Select("SELECT id from shopimport_auftraege where id <> '".$arr[$i]['id']."' and shopid = '".$arr[$i]['shopid']."' and bestellnummer = '".$warenkorb['onlinebestellnummer']."' and trash = '0' LIMIT 1"); if($check) { $doppelteonlinebestellnummer = true; $enthaeltdoppeltenummern = true; }elseif(!empty($checkglobal) && isset($checkglobal[$arr[$i]['shopid']]) && $checkglobal[$arr[$i]['shopid']]) { $check = $this->app->DB->Select("SELECT id from shopimport_auftraege where id <> '".$arr[$i]['id']."' and (shopid = '".$arr[$i]['shopid']."' OR ".(implode( " OR ", $checkglobal[$arr[$i]['shopid']])).") and bestellnummer = '".$warenkorb['onlinebestellnummer']."' and trash = '0' LIMIT 1"); if($check) { $doppelteonlinebestellnummer = true; $enthaeltdoppeltenummern = true; } } } $htmltable->AddCol(''); $htmltable->AddCol(''); $htmltable->AddCol(''); $htmltable->AddCol($arr[$i]['abkuerzung']); $htmltable->AddCol(($doppelteonlinebestellnummer?'':'').$warenkorb['onlinebestellnummer'].($doppelteonlinebestellnummer?'':'')); $htmltable->AddCol($warenkorb['name'].$kdr_name.'
    '.$warenkorb['email'].$email); $htmltable->AddCol($warenkorb['internebezeichnung']); $htmltable->AddCol($warenkorb['strasse'].$kdr_strasse); $htmltable->AddCol($warenkorb['plz'].$kdr_plz); $htmltable->AddCol($warenkorb['ort'].$kdr_ort); if($checkid!=''){ $htmltable->AddCol(''); } else{ $htmltable->AddCol(''); } $htmltable->AddCol(''); //$htmltable->AddCol(' '); $htmltable->AddCol($warenkorb['land']); $htmltable->AddCol(number_format($warenkorb['gesamtsumme'],2,',','.')); $saldo_kunde = round($this->app->erp->SaldoAdresse($kdr_addresse_id),2); if($saldo_kunde > 0){ $saldo_kunde = '' . number_format($saldo_kunde, 2, ',','.') . ''; } else{ $saldo_kunde = '-'; } $htmltable->AddCol($saldo_kunde); $htmltable->AddCol($warenkorb['zahlungsweise']); $htmltable->AddCol($warenkorb['affiliate_ref']); //$htmltable->AddCol('Einzelimport verwerfen'); //$warenkorb[gesamtsumme] = str_replace(".","",$warenkorb[gesamtsumme]); $gesamtsumme = (isset($gesamtsumme)?$gesamtsumme:0) + $warenkorb['gesamtsumme']; $checkid = ''; $checkidemail = ''; $validkundennummer = ''; //$this->app->Tpl->Add('INHALT',"{$warenkorb[onlinebestellnummer]}{$warenkorb[name]}{$warenkorb[land]}{$warenkorb[gesamtsumme]}"); } } else { if($deletedRows > 0){ $msg = $this->app->erp->base64_url_encode('
    Es wurden ' . $deletedRows . ' bereits importierte Datensätze entfernt.
    '); }else{ $msg = $this->app->erp->base64_url_encode('
    Aktuell sind keine Aufträge in den Online-Shops vorhanden!
    '); } $this->app->Location->execute('Location: index.php?module=shopimport&action=list&msg='.$msg); } $htmltable->NewRow(); $htmltable->AddCol(''); $htmltable->AddCol(''); $htmltable->AddCol(''); $htmltable->AddCol(''); $htmltable->AddCol(''); $htmltable->AddCol(''); $htmltable->AddCol(''); $htmltable->AddCol(''); $htmltable->AddCol(''); $htmltable->AddCol(''); $htmltable->AddCol(''); $htmltable->AddCol(''); $htmltable->AddCol(''); $htmltable->AddCol(number_format($gesamtsumme,2,',','.')); $htmltable->AddCol(''); $htmltable->AddCol(''); if($enthaeltdoppeltenummern) { $this->app->Tpl->Add('INHALT','
    Es wurde ein Auftrag aus einem Shop geholt, der bereits importiert wurde!
    '); } $this->app->Tpl->Add('INHALT',$htmltable->Get()); $this->app->Tpl->Add('INHALT',"

    Bedeutung: "); $this->app->Tpl->Set('EXTEND',''); $this->app->Tpl->Parse('IMPORT','rahmen70.tpl'); $this->app->Tpl->Parse('PAGE','shopimport_import.tpl'); } public function ShopimportNavigation() { $id = $this->app->Secure->GetGET('id'); $tmp = new Navigation($this->app, $id); $this->app->Tpl->Set('ID',$id); $this->app->Tpl->Set('PAGE',$tmp->Get()); $this->app->BuildNavigation=false; } }