0) { $aes = '2'; } if($aes === '2' && is_file(dirname(__DIR__) . '/www/lib/class.aes' . $aes . '.php')){ include_once dirname(__DIR__) . '/www/lib/class.aes' . $aes . '.php'; }else{ include_once dirname(__DIR__) . '/www/lib/class.aes.php'; } } if(!class_exists('Shopimport')){ include_once dirname(__DIR__) . '/www/pages/shopimport.php'; } if(!class_exists('ShopimportCustom') && file_exists(dirname(__DIR__) . '/www/pages/shopimport_custom.php')) { include_once dirname(__DIR__) . '/www/pages/shopimport_custom.php'; } if(!class_exists('PHPMailer')){ include_once dirname(__DIR__) . '/www/plugins/phpmailer/class.phpmailer.php'; } if(!class_exists('SMTP')){ include_once dirname(__DIR__) . '/www/plugins/phpmailer/class.smtp.php'; } if(!class_exists('Secure')){ include_once dirname(__DIR__) . '/phpwf/plugins/class.secure.php'; } if(!class_exists('StringCleaner') && file_exists(dirname(__DIR__) . '/phpwf/plugins/class.stringcleaner.php')) { include_once dirname(__DIR__) . '/phpwf/plugins/class.stringcleaner.php'; } if(!class_exists('FormHandler')){ include_once dirname(__DIR__) . '/phpwf/plugins/class.formhandler.php'; } if(!class_exists('image')){ include_once dirname(__DIR__) . '/www/lib/class.image.php'; } if(!class_exists('FPDFWAWISION')){ if(file_exists(dirname(__DIR__).'/conf/user_defined.php')){ include_once dirname(__DIR__) . '/conf/user_defined.php'; } if(defined('USEFPDF3') && USEFPDF3 && file_exists(dirname(__DIR__) . '/www/lib/pdf/fpdf_3.php')){ require_once dirname(__DIR__) . '/www/lib/pdf/fpdf_3.php'; }else if(defined('USEFPDF2') && USEFPDF2 && file_exists(dirname(__DIR__) . '/www/lib/pdf/fpdf_2.php')){ require_once dirname(__DIR__) . '/www/lib/pdf/fpdf_2.php'; }else{ require_once dirname(__DIR__) . '/www/lib/pdf/fpdf.php'; } } if(!class_exists('PDF_EPS')){ include_once dirname(__DIR__) . '/www/lib/pdf/fpdf_final.php'; } if(!class_exists('SuperFPDF')){ include_once dirname(__DIR__) . '/www/lib/dokumente/class.superfpdf.php'; } $classes = array('briefpapier','auftrag','angebot','rechnung','gutschrift','lieferschein'); foreach($classes as $class) { if(file_exists(dirname(__DIR__).'/www/lib/dokumente/class.'.$class.'_custom.php') && !class_exists(ucfirst($class).($class != 'briefpapier'?'PDF':'').'Custom')) { include_once dirname(__DIR__).'/www/lib/dokumente/class.'.$class.'_custom.php'; }elseif(file_exists(dirname(__DIR__).'/www/lib/dokumente/class.'.$class.'.php') && !class_exists(ucfirst($class).($class != 'briefpapier'?'PDF':''))) { include_once dirname(__DIR__).'/www/lib/dokumente/class.'.$class.'.php'; } } if(!class_exists('WawiString')){ include_once dirname(__DIR__) . '/phpwf/plugins/class.string.php'; } if(!defined('FPDF_FONTPATH')) { define('FPDF_FONTPATH',dirname(__DIR__).'/www/lib/pdf/font/'); } if(!class_exists('app_t')) { class app_t { var $DB; var $erp; var $user; var $remote; public function GetLandLang($isocode) { $flipped = array_flip($this->GetLaender()); if(isset($flipped[$isocode])){ $land = $flipped[$isocode]; } else { $land = 'unkown'; } return $land; } public function GetLaender() { $laender = array( 'Afghanistan' => 'AF', 'Ägypten' => 'EG', 'Albanien' => 'AL', 'Algerien' => 'DZ', 'Andorra' => 'AD', 'Angola' => 'AO', 'Anguilla' => 'AI', 'Antarktis' => 'AQ', 'Antigua und Barbuda' => 'AG', 'Äquatorial Guinea' => 'GQ', 'Argentinien' => 'AR', 'Armenien' => 'AM', 'Aruba' => 'AW', 'Aserbaidschan' => 'AZ', 'Äthiopien' => 'ET', 'Australien' => 'AU', 'Bahamas' => 'BS', 'Bahrain' => 'BH', 'Bangladesh' => 'BD', 'Barbados' => 'BB', 'Belgien' => 'BE', 'Belize' => 'BZ', 'Benin' => 'BJ', 'Bermudas' => 'BM', 'Bhutan' => 'BT', 'Birma' => 'MM', 'Bolivien' => 'BO', 'Bosnien-Herzegowina' => 'BA', 'Botswana' => 'BW', 'Bouvet Inseln' => 'BV', 'Brasilien' => 'BR', 'Britisch-Indischer Ozean' => 'IO', 'Brunei' => 'BN', 'Bulgarien' => 'BG', 'Burkina Faso' => 'BF', 'Burundi' => 'BI', 'Chile' => 'CL', 'China' => 'CN', 'Christmas Island' => 'CX', 'Cook Inseln' => 'CK', 'Costa Rica' => 'CR', 'Dänemark' => 'DK', 'Deutschland' => 'DE', 'Djibuti' => 'DJ', 'Dominika' => 'DM', 'Dominikanische Republik' => 'DO', 'Ecuador' => 'EC', 'El Salvador' => 'SV', 'Elfenbeinküste' => 'CI', 'Eritrea' => 'ER', 'Estland' => 'EE', 'Falkland Inseln' => 'FK', 'Färöer Inseln' => 'FO', 'Fidschi' => 'FJ', 'Finnland' => 'FI', 'Frankreich' => 'FR', 'Französisch Guyana' => 'GF', 'Französisch Polynesien' => 'PF', 'Französisches Süd-Territorium' => 'TF', 'Gabun' => 'GA', 'Gambia' => 'GM', 'Georgien' => 'GE', 'Ghana' => 'GH', 'Gibraltar' => 'GI', 'Grenada' => 'GD', 'Griechenland' => 'GR', 'Grönland' => 'GL', 'Großbritannien' => 'UK', 'Großbritannien (UK)' => 'GB', 'Guadeloupe' => 'GP', 'Guam' => 'GU', 'Guatemala' => 'GT', 'Guinea' => 'GN', 'Guinea Bissau' => 'GW', 'Guyana' => 'GY', 'Haiti' => 'HT', 'Heard und McDonald Islands' => 'HM', 'Honduras' => 'HN', 'Hong Kong' => 'HK', 'Indien' => 'IN', 'Indonesien' => 'ID', 'Irak' => 'IQ', 'Iran' => 'IR', 'Irland' => 'IE', 'Island' => 'IS', 'Israel' => 'IL', 'Italien' => 'IT', 'Jamaika' => 'JM', 'Japan' => 'JP', 'Jemen' => 'YE', 'Jordanien' => 'JO', 'Jugoslawien' => 'YU', 'Kaiman Inseln' => 'KY', 'Kambodscha' => 'KH', 'Kamerun' => 'CM', 'Kanada' => 'CA', 'Kap Verde' => 'CV', 'Kasachstan' => 'KZ', 'Kenia' => 'KE', 'Kirgisistan' => 'KG', 'Kiribati' => 'KI', 'Kokosinseln' => 'CC', 'Kolumbien' => 'CO', 'Komoren' => 'KM', 'Kongo' => 'CG', 'Kongo, Demokratische Republik' => 'CD', 'Kosovo' => 'KO', 'Kroatien' => 'HR', 'Kuba' => 'CU', 'Kuwait' => 'KW', 'Laos' => 'LA', 'Lesotho' => 'LS', 'Lettland' => 'LV', 'Libanon' => 'LB', 'Liberia' => 'LR', 'Libyen' => 'LY', 'Liechtenstein' => 'LI', 'Litauen' => 'LT', 'Luxemburg' => 'LU', 'Macao' => 'MO', 'Madagaskar' => 'MG', 'Malawi' => 'MW', 'Malaysia' => 'MY', 'Malediven' => 'MV', 'Mali' => 'ML', 'Malta' => 'MT', 'Marianen' => 'MP', 'Marokko' => 'MA', 'Marshall Inseln' => 'MH', 'Martinique' => 'MQ', 'Mauretanien' => 'MR', 'Mauritius' => 'MU', 'Mayotte' => 'YT', 'Mazedonien' => 'MK', 'Mexiko' => 'MX', 'Mikronesien' => 'FM', 'Mocambique' => 'MZ', 'Moldavien' => 'MD', 'Monaco' => 'MC', 'Mongolei' => 'MN', 'Montenegro' => 'ME', 'Montserrat' => 'MS', 'Namibia' => 'NA', 'Nauru' => 'NR', 'Nepal' => 'NP', 'Neukaledonien' => 'NC', 'Neuseeland' => 'NZ', 'Nicaragua' => 'NI', 'Niederlande' => 'NL', 'Niederländische Antillen' => 'AN', 'Niger' => 'NE', 'Nigeria' => 'NG', 'Niue' => 'NU', 'Nord Korea' => 'KP', 'Norfolk Inseln' => 'NF', 'Norwegen' => 'NO', 'Oman' => 'OM', 'Österreich' => 'AT', 'Pakistan' => 'PK', 'Palästina' => 'PS', 'Palau' => 'PW', 'Panama' => 'PA', 'Papua Neuguinea' => 'PG', 'Paraguay' => 'PY', 'Peru' => 'PE', 'Philippinen' => 'PH', 'Pitcairn' => 'PN', 'Polen' => 'PL', 'Portugal' => 'PT', 'Puerto Rico' => 'PR', 'Qatar' => 'QA', 'Reunion' => 'RE', 'Ruanda' => 'RW', 'Rumänien' => 'RO', 'Rußland' => 'RU', 'Saint Lucia' => 'LC', 'Sambia' => 'ZM', 'Samoa' => 'AS', 'Samoa' => 'WS', 'San Marino' => 'SM', 'Sao Tome' => 'ST', 'Saudi Arabien' => 'SA', 'Schweden' => 'SE', 'Schweiz' => 'CH', 'Senegal' => 'SN', 'Serbien' => 'RS', 'Seychellen' => 'SC', 'Sierra Leone' => 'SL', 'Singapur' => 'SG', 'Slowakei -slowakische Republik-' => 'SK', 'Slowenien' => 'SI', 'Solomon Inseln' => 'SB', 'Somalia' => 'SO', 'South Georgia, South Sandwich Isl.' => 'GS', 'Spanien' => 'ES', 'Sri Lanka' => 'LK', 'St. Helena' => 'SH', 'St. Kitts Nevis Anguilla' => 'KN', 'St. Pierre und Miquelon' => 'PM', 'St. Vincent' => 'VC', 'Süd Korea' => 'KR', 'Südafrika' => 'ZA', 'Sudan' => 'SD', 'Surinam' => 'SR', 'Svalbard und Jan Mayen Islands' => 'SJ', 'Swasiland' => 'SZ', 'Syrien' => 'SY', 'Tadschikistan' => 'TJ', 'Taiwan' => 'TW', 'Tansania' => 'TZ', 'Thailand' => 'TH', 'Timor' => 'TP', 'Togo' => 'TG', 'Tokelau' => 'TK', 'Tonga' => 'TO', 'Trinidad Tobago' => 'TT', 'Tschad' => 'TD', 'Tschechische Republik' => 'CZ', 'Tunesien' => 'TN', 'Türkei' => 'TR', 'Turkmenistan' => 'TM', 'Turks und Kaikos Inseln' => 'TC', 'Tuvalu' => 'TV', 'Uganda' => 'UG', 'Ukraine' => 'UA', 'Ungarn' => 'HU', 'Uruguay' => 'UY', 'Usbekistan' => 'UZ', 'Vanuatu' => 'VU', 'Vatikan' => 'VA', 'Venezuela' => 'VE', 'Vereinigte Arabische Emirate' => 'AE', 'Vereinigte Staaten von Amerika' => 'US', 'Vietnam' => 'VN', 'Virgin Island (Brit.)' => 'VG', 'Virgin Island (USA)' => 'VI', 'Wallis et Futuna' => 'WF', 'Weißrußland' => 'BY', 'Westsahara' => 'EH', 'Zentralafrikanische Republik' => 'CF', 'Zimbabwe' => 'ZW', 'Zypern' => 'CY' ); return $laender; } } } if(!class_exists('User')) { class User { var $app; public function __construct($app) { $this->app = $app; } public function GetName() { return 'Cronjob'; } public function GetID() { return 0; } public function GetFirma() { return 1; } public function GetType() { return 'admin'; } public function DefaultProjekt() { return $this->app->DB->Select("SELECT standardprojekt FROM firma WHERE id='1' LIMIT 1"); } public function GetAdresse() { return 0; } public function GetUsername() { return 'Cronjob'; } public function GetParameter() { return 0; } } } //ENDE if(!isset($app)) { $app = new app_t(); } if(empty($app->Conf)){ $conf = new Config(); $app->Conf = $conf; } if(empty($app->DB)){ $app->DB = new DB($conf->WFdbhost, $conf->WFdbname, $conf->WFdbuser, $conf->WFdbpass, $app, $conf->WFdbport); } if(class_exists('erpAPICustom')) { $erp = new erpAPICustom($app); }else{ $erp = new erpAPI($app); } $app->erp = $erp; $app->String = new WawiString(); if(class_exists('RemoteCustom')) { $remote = new RemoteCustom($app); }else{ $remote = new Remote($app); } $app->remote = $remote; $app->Secure = new Secure($app); $app->User = new User($app); $app->FormHandler = new FormHandler($app); /*if(false){ $auftraege = $app->DB->Query("SELECT a.id as auftrag, s.* FROM auftrag a INNER JOIN shopimport_auftraege s ON a.shop =s.shopid AND a.internet = s.extid WHERE a.datum = '2018-10-29'"); if($auftraege){ while ($row = $app->DB->Fetch_Assoc($auftraege)) { $auftragcheck = $row['auftrag']; if(!empty($row['jsonencoded'])) { $warenkorb = json_decode(base64_decode($row['warenkorb']), true); }else{ $warenkorb = unserialize(base64_decode($row['warenkorb'])); } if(!empty($warenkorb['bestelldatum'])){ $app->DB->Update("UPDATE auftrag SET datum = '" . $app->DB->real_escape_string($warenkorb['bestelldatum']) . "' WHERE id = '$auftragcheck' LIMIT 1"); $rechnungid = $app->DB->Select("SELECT id FROM rechnung WHERE auftragid = '$auftragcheck' AND status != 'storniert' LIMIT 1"); if($rechnungid){ $app->DB->Update("UPDATE rechnung SET datum = '" . $app->DB->real_escape_string($warenkorb['bestelldatum']) . "' WHERE id = '$rechnungid' AND datum > '" . $app->DB->real_escape_string($warenkorb['bestelldatum']) . "' LIMIT 1"); } } } $app->DB->free($auftraege); } }*/ $app->DB->Update( "UPDATE prozessstarter SET mutexcounter = mutexcounter + 1 WHERE mutex = 1 AND (parameter = 'shopimport_auftragarchiv') AND aktiv = 1" ); if( !$app->DB->Select( "SELECT id FROM prozessstarter WHERE mutex = 0 AND parameter = 'shopimport_auftragarchiv' AND aktiv = 1" ) ){ return; } usleep(mt_rand(100000,1000000)); if( !$app->DB->Select( "SELECT id FROM prozessstarter WHERE mutex = 0 AND parameter = 'shopimport_auftragarchiv' AND aktiv = 1" ) ){ return; } $app->DB->Update( "UPDATE prozessstarter SET letzteausfuerhung=NOW(), mutex = 1,mutexcounter=0 WHERE parameter = 'shopimport_auftragarchiv'" ); $break = false; $throttledIds = [0]; $cronjobTmpIds = $app->DB->SelectFirstCols( "SELECT `id` FROM `prozessstarter` WHERE `aktiv` = 1 AND `parameter` = 'shopimport_auftragarchiv'" ); $autoThrottle = false; if(count($cronjobTmpIds) !== 1) { $cronjobTmpId = (int)reset($throttledIds); $periode = $app->DB->SelectRow(sprintf( "SELECT `periode` FROM `prozessstarter` WHERE `id` = %d AND `art` = 'periodisch'", $cronjobTmpId )); if(!empty($periode)) { $autoThrottle = true; if($periode['periode'] > 15) { $app->DB->Update(sprintf("UPDATE `prozessstarter` SET `periode` = 15 WHERE `id` = %d", $cronjobTmpId)); } } } else { $cronjobTmpId = null; } while(!$break) { $break = true; $archivauftraege = $app->DB->SelectArr( sprintf( "SELECT sa.*, UNIX_TIMESTAMP(sa.datumvon) as datumvon_timestamp, UNIX_TIMESTAMP(sa.datumbis) as datumbis_timestamp, se.modulename FROM `shopexport_archiv` AS `sa` INNER JOIN `shopexport` AS `se` ON sa.shop = se.id AND (se.geloescht IS NULL OR se.geloescht = 0) AND se.aktiv = 1 WHERE sa.status = 'aktiv' AND sa.id NOT IN (%s) ", implode(',', $throttledIds) ) ); if(empty($archivauftraege)) { break; } $carchivauftraege = !empty($archivauftraege) ? count($archivauftraege) : 0; if($carchivauftraege > 0) { if($autoThrottle && $carchivauftraege === 1 && $archivauftraege[0]['modulename'] === 'shopimporter_amazon') { $app->DB->Update( sprintf( "UPDATE `prozessstarter` SET `periode` = 30 WHERE `id` = %d AND `art` = 'periodisch' AND `aktiv` = 1 AND `parameter` = 'shopimport_auftragarchiv'", $cronjobTmpId ) ); } for ($i = 0; $i < $carchivauftraege; $i++) { if($autoThrottle) { $throttledIds[] = $archivauftraege[$i]['id']; } $donotimport = $archivauftraege[$i]['donotimport']; $app->DB->Update( "UPDATE `prozessstarter` SET `letzteausfuerhung`=NOW(), `mutex` = 1,`mutexcounter`=0 WHERE `parameter` = 'shopimport_auftragarchiv'" ); $shopdaten = $app->DB->SelectRow( sprintf( 'SELECT * FROM `shopexport` WHERE `id` = %d', $archivauftraege[$i]['shop'] ) ); $shopid = $shopdaten['id']; try { $pageContents = $app->remote->RemoteConnection($shopid); } catch (Exception $e) { $app->erp->LogFile(['RemoteConnection Error'=>$e->getMessage()]); $pageContents = 'failed'; } $app->erp->LogFile( $app->DB->real_escape_string( 'shopimport_auftragarchiv Shop: '.$shopid.' Auth: '. print_r($pageContents,true).' arr: '.print_r($archivauftraege[$i],true) ) ); if($pageContents === 'success') { //Kommunikation steht $anzahlauftraege = (int)$archivauftraege[$i]['anzahl']; if($anzahlauftraege == 0){ if($archivauftraege[$i]['nummervon']) { $data = [ 'ab_nummer' => $archivauftraege[$i]['nummervon'], 'bis_nummer' => $archivauftraege[$i]['nummerbis'], ]; } if($archivauftraege[$i]['type'] !== 'zeitraum') { try { $anzahlauftraege = (int)$app->remote->RemoteGetAuftraegeAnzahl($shopid, $data); $app->DB->Update( "UPDATE `prozessstarter` SET `letzteausfuerhung`=NOW(), `mutex` = 1,`mutexcounter`=0 WHERE `parameter` = 'shopimport_auftragarchiv'" ); } catch (Exception $e) { $app->erp->LogFile(['RemoteGetAuftraegeAnzahl Error'=>$e->getMessage()]); $anzahlauftraege = 0; } $app->erp->LogFile('shopimport_auftragarchiv Shop: '.$shopid.' gefundene Auftraege: '.$anzahlauftraege); if($anzahlauftraege > 0) { $app->DB->Update( sprintf( "UPDATE `shopexport_archiv` SET `anzahl` = %d WHERE `id` = %d", $anzahlauftraege, $archivauftraege[$i]['id'] ) ); } else { $app->DB->Update( sprintf( "UPDATE `shopexport_archiv` SET `status` = 'abgeschlossen' WHERE `id` = %d", $archivauftraege[$i]['id'] ) ); continue; } } else{ $anzahlauftraege = 1; } } if($archivauftraege[$i]['type'] === 'zeitraum') { //Datumsbereich hinzufügen $data = array(); $data['datumvon'] = $archivauftraege[$i]['datumvon']; $data['datumbis'] = $archivauftraege[$i]['datumbis']; //if(strtotime($zeitraum[0]['tmpdatumvon']) > 0)$data['datumvon'] = $zeitraum[0]['tmpdatumbis']; if(strtotime($data['datumvon']) <= 0) { $data['datumvon'] = '2000-01-01 00:00:00'; } if(strtotime($data['datumbis']) <= 0) { $data['datumbis'] = date('Y-m-d H:i:s'); } if(strtotime($data['datumvon']) >= strtotime($data['datumbis'])) { $app->DB->Update("UPDATE `shopexport_archiv` SET `status` = 'abgeschlossen' WHERE `id` = " . $archivauftraege[$i]['id']); continue; } $data['anzgleichzeitig'] = 50; $data['holeallestati'] = 1; $data['archive'] = 1; $app->erp->LogFile($app->DB->real_escape_string('shopimport_auftragarchiv Shop: '.$shopid.' Zeitraum: '.print_r($data,true))); } $shopimp = new Shopimport($app, true); $erfolgreich = 0; $letzteabgeholtenummer = $archivauftraege[$i]['letzteabgeholtenummer']; for ($nummerinkrement = 0; $nummerinkrement < $anzahlauftraege; $nummerinkrement++) { $app->DB->Update( "UPDATE `prozessstarter` SET `letzteausfuerhung` = NOW(), `mutex` = 1, `mutexcounter`=0 WHERE `parameter` = 'shopimport_auftragarchiv'" ); if($archivauftraege[$i]['type'] !== 'zeitraum'){ if($letzteabgeholtenummer != 0){ $nummervon = $letzteabgeholtenummer; }else{ $nummervon = (int)$archivauftraege[$i]['nummervon'] + $nummerinkrement-1; } $data = array('ab_nummer' => $nummervon+1, 'bis_nummer' => $archivauftraege[$i]['nummerbis']); } $data['stornierte_abholen'] = !isset($archivauftraege[$i]['stornierte_abholen'])?null:$archivauftraege[$i]['stornierte_abholen']; try { $result = $app->remote->RemoteGetAuftrag($shopid, $data); $app->DB->Update( "UPDATE `prozessstarter` SET `letzteausfuerhung` = NOW(), `mutex` = 1, `mutexcounter` = 0 WHERE `parameter` = 'shopimport_auftragarchiv'" ); } catch(Exception $e) { $app->erp->LogFile(['RemoteGetAuftrag Error'=>$e->getMessage()]); $result = ''; } if(!is_array($result)) { if(is_string($result) && stripos($result, 'Throttled') === 0) { $throttledIds[] = $archivauftraege[$i]['id']; $app->erp->ProzessstarterStatus('Id '.$shopid.' Throttled', $cronjobTmpId); continue; } $app->erp->ProzessstarterStatus('Id '.$shopid.' keine (weiteren) Auftraege gefunden', $cronjobTmpId); $app->erp->LogFile('shopimport_auftragarchiv Shop: '.$shopid.' keine (weiteren) Auftraege gefunden'); $app->DB->Update("UPDATE `shopexport_archiv` SET `status` = 'abgeschlossen' WHERE `id` = " . $archivauftraege[$i]['id']); break; } if(!isset($result[0]) && $archivauftraege[$i]['type'] === 'zeitraum'){ if(is_array($result) && !empty($result['zeitstempel'])){ $app->erp->ProzessstarterStatus('Id '.$shopid.' '. $result['zeitstempel'].' empty arr', $cronjobTmpId); if($app->DB->Select( "SELECT `id` FROM `shopexport_archiv` WHERE `id` = '" . $archivauftraege[$i]['id'] . "' AND `datumvon` < '" . date('Y-m-d H:i:s', strtotime($result['zeitstempel'])) . "' LIMIT 1")){ $app->DB->Update( "UPDATE `shopexport_archiv` SET `datumvon` = '" . date('Y-m-d H:i:s', strtotime($result['zeitstempel'])) . "' WHERE `id` = '" . $archivauftraege[$i]['id'] . "' AND `datumvon` < '" . date('Y-m-d H:i:s', strtotime($result['zeitstempel'])) . "' LIMIT 1" ); } else{ $app->DB->Update( "UPDATE `shopexport_archiv` SET `datumvon` = DATE_ADD(`datumvon`, INTERVAL 1 SECOND) WHERE `id` = '" . $archivauftraege[$i]['id'] . "' LIMIT 1" ); } } else{ $app->erp->ProzessstarterStatus('Id '.$shopid.' no array', $cronjobTmpId); $app->DB->Update( "UPDATE `shopexport_archiv` SET `datumvon` = DATE_ADD(`datumvon`, INTERVAL 1 SECOND) WHERE `id` = '" . $archivauftraege[$i]['id'] . "' LIMIT 1" ); } } $maxtime = false; $mintime = false; $cw = count($result); if($archivauftraege[$i]['type'] === 'zeitraum') { $app->erp->LogFile('shopimport_auftragarchiv Shop: '.$shopid.' gefundene Auftraege: '.$cw); $app->erp->ProzessstarterStatus('Id '.$shopid.' anz '.$cw, $cronjobTmpId); } for ($ii = 0; $ii < $cw; $ii++) { $app->DB->Update( "UPDATE `prozessstarter` SET `letzteausfuerhung` = NOW(), `mutex` = 1,`mutexcounter`=0 WHERE `parameter` = 'shopimport_auftragarchiv'" ); if(isset($result[$ii])){ $sessionid = $result[$ii]['sessionid']; if(!empty($result[$ii]['warenkorbjson'])) { $isjson = true; $warenkorb = json_decode(base64_decode($result[$ii]['warenkorbjson']), true); } else { $isjson = false; $warenkorb = unserialize(base64_decode($result[$ii]['warenkorb'])); } if(!empty($warenkorb['zeitstempel'])) { if(!empty($warenkorb['zeitstempel_raw'])) { $time = strtotime($warenkorb['zeitstempel_raw']); }else{ $time = strtotime($warenkorb['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; } if($time > strtotime($data['datumbis'])) { continue; } } $kundenurvonprojekt = $app->DB->Select( "SELECT `kundenurvonprojekt` FROM `shopexport` WHERE `id` = '$shopid' LIMIT 1" ); $adresseprojekt = ''; if($kundenurvonprojekt) { $adresseprojekt = $app->DB->Select("SELECT `projekt` FROM `shopexport` WHERE `id` = '$shopid' LIMIT 1"); if(isset($warenkorb['subshop']) && $warenkorb['subshop']) { $subshopprojekt = $app->DB->Select( "SELECT `projekt` FROM `shopexport_subshop` WHERE `shop` = '".$shopid."' AND `aktiv` = 1 AND `subshopkennung` = '". $app->DB->real_escape_string($warenkorb['subshop'])."' LIMIT 1" ); if($subshopprojekt) { $adresseprojekt = $subshopprojekt; } } } if($adresseprojekt) { $adresseprojekt = " AND projekt = '".$adresseprojekt."' "; } $onlinebestellnummer = $warenkorb['onlinebestellnummer']; $letzteabgeholtenummer = $onlinebestellnummer; if(isset($warenkorb['onlinebestellnummerueberschreiben'])){ $letzteabgeholtenummer = $warenkorb['onlinebestellnummerueberschreiben']; } $auftrag = $warenkorb['auftrag']; $auftragcheck = $app->DB->Select( sprintf( "SELECT `id` FROM `auftrag` WHERE `internet` = '%s' AND `internet`<>'' AND `status` <> 'storniert' LIMIT 1", $onlinebestellnummer ) ); //Wenn Auftrag bereits vorhanden, dann überspringen if(!$auftragcheck) { $app->DB->Insert( "INSERT INTO `shopimport_auftraege` (`extid`,`sessionid`,`warenkorb`,`imported`,`projekt`,`bearbeiter`,`logdatei`) VALUES('" . $app->DB->real_escape_string($auftrag) . "','" . $app->DB->real_escape_string($sessionid) . "','" . $app->DB->real_escape_string($isjson?$result[$ii]['warenkorbjson']:$result[$ii]['warenkorb']) . "','0','$projekt','Cronjob',NOW())"); $insid = $app->DB->GetInsertID(); if($insid) { $app->DB->Update("UPDATE `shopimport_auftraege` set `shopid` = '$shopid' WHERE `id` = '$insid'"); if($isjson) { $app->DB->Update("UPDATE `shopimport_auftraege` set `jsonencoded` = 1 WHERE `id` = '$insid'"); } } if(empty($warenkorb['name']) && !empty($warenkorb['ansprechpartner'])){ $warenkorb['name']=$warenkorb['ansprechpartner']; $warenkorb['ansprechpartner'] = ''; } if(empty($warenkorb['name']) && !empty($warenkorb['lieferadresse_name'])) { $warenkorb['name'] = $warenkorb['lieferadresse_name']; } if(empty($warenkorb['lieferadresse_name']) && !empty($warenkorb['lieferadresse_ansprechpartner'])){ $warenkorb['lieferadresse_name']=$warenkorb['lieferadresse_ansprechpartner']; $warenkorb['lieferadresse_ansprechpartner'] = ''; } /* if($shopdaten['utf8codierung']=="1") { $warenkorb = $app->erp->CleanDataBeforImportUTF8($warenkorb, false); } else { $warenkorb = $app->erp->CleanDataBeforImport($warenkorb, false); }*/ foreach($warenkorb as $k => $v) { $warenkorb[$k] = $app->erp->fixeUmlaute($v); } $projekt = $app->DB->Select( "SELECT `projekt` FROM `shopexport` WHERE `id` = '$shopid' LIMIT 1" ); $subshopprojekt = $app->DB->Select( "SELECT `projekt` FROM `shopexport_subshop` WHERE `shop` = '" . $shopid . "' AND `aktiv` = 1 AND `subshopkennung` = '" . $app->DB->real_escape_string($warenkorb['subshop']) . "' LIMIT 1" ); $projekt = $subshopprojekt; $checkkundennummer = ''; $checkidemail = ''; $checkid = $app->DB->Select( sprintf( "SELECT `id` FROM `adresse` WHERE IFNULL(`name`,'')='%s' AND IFNULL(`email`,'')='%s' AND IFNULL(abteilung,'')='%s' AND IFNULL(strasse,'')='%s' AND IFNULL(plz,'')='%s' AND IFNULL(ort,'')='%s' AND geloescht!=1 LIMIT 1", $app->erp->ReadyForPDF($warenkorb['name']), $app->erp->ReadyForPDF($warenkorb['email']), $app->erp->ReadyForPDF($warenkorb['abteilung']), $app->erp->ReadyForPDF($warenkorb['strasse']), $app->erp->ReadyForPDF($warenkorb['plz']), $app->erp->ReadyForPDF($warenkorb['ort']) ) ); //CleanString if(!$checkid){ $checkid = $app->DB->Select( sprintf( "SELECT id FROM adresse WHERE IFNULL(name,'')='%s' AND IFNULL(email,'')='%s' AND IFNULL(abteilung,'')='%s' AND IFNULL(strasse,'')='%s' AND IFNULL(plz,'')='%s' AND IFNULL(ort,'')='%s' AND geloescht!=1 LIMIT 1", $app->DB->real_escape_string($warenkorb['name']), $app->DB->real_escape_string($warenkorb['email']), $app->DB->real_escape_string($warenkorb['abteilung']), $app->DB->real_escape_string($warenkorb['strasse']), $app->DB->real_escape_string($warenkorb['plz']), $app->DB->real_escape_string($warenkorb['ort']) ) ); } if(!$checkid && $app->erp->CleanStringUTF8($warenkorb['name'], false) != ''){ $checkid = $app->DB->Select( sprintf( "SELECT id FROM adresse WHERE IFNULL(name,'')='%s' AND IFNULL(name,'') <> '' AND IFNULL(email,'')='%s' AND IFNULL(abteilung,'')='%s' AND IFNULL(strasse,'')='%s' AND IFNULL(plz,'')='%s' AND IFNULL(ort,'')='%s' AND geloescht!=1 LIMIT 1", $app->erp->CleanStringUTF8($warenkorb['name'], false), $app->erp->CleanStringUTF8($warenkorb['email'], false), $app->erp->CleanStringUTF8($warenkorb['abteilung'], false), $app->erp->CleanStringUTF8($warenkorb['strasse'], false), $app->erp->CleanStringUTF8($warenkorb['plz'], false), $app->erp->CleanStringUTF8($warenkorb['ort'], false) ) ); } if(!$checkid && $app->erp->CleanString($warenkorb['name'], false) != ''){ $checkid = $app->DB->Select( sprintf( "SELECT id FROM adresse WHERE IFNULL(name,'')='%s' AND IFNULL(name,'') <> '' AND IFNULL(email,'')='%s' AND IFNULL(abteilung,'')='%s' AND IFNULL(strasse,'')='%s' AND IFNULL(plz,'')='%s' AND IFNULL(ort,'')='%s' AND geloescht!=1 LIMIT 1", $app->erp->CleanString($warenkorb['name'], false), $app->erp->CleanString($warenkorb['email'], false), $app->erp->CleanString($warenkorb['abteilung'], false), $app->erp->CleanString($warenkorb['strasse'], false), $app->erp->CleanString($warenkorb['plz'], false), $app->erp->CleanString($warenkorb['ort'], false) ) ); } if(!$donotimport) { if($checkid){ $checkkundennummer = $app->DB->Select("SELECT kundennummer FROM adresse WHERE id = '$checkid' LIMIT 1"); if(!$checkkundennummer){ $app->erp->AddRolleZuAdresse($checkid, 'Kunde', 'von', 'Projekt', $projekt); $checkkundennummer = $app->DB->Select("SELECT kundennummer FROM adresse WHERE id = '$checkid' LIMIT 1"); } $checkid = $checkkundennummer; } if(!$checkid){ if($warenkorb['email'] !== 'amazon_import_bounce@nfxmedia.de'){ if($warenkorb['email'] != ''){ $checkidemailid = $app->DB->Select( sprintf( "SELECT id FROM adresse WHERE email='%s' and email <> '' AND geloescht!=1 $adresseprojekt LIMIT 1", $app->DB->real_escape_string($warenkorb['email']) ) ); if(!$checkidemailid){ $checkidemailid = $app->DB->Select( sprintf( "SELECT id FROM adresse WHERE email='%s' and email <> '' AND geloescht!=1 $adresseprojekt LIMIT 1", $app->erp->ReadyForPDF($warenkorb['email']) ) ); } if($checkidemailid){ $checkidemail = $app->DB->Select("SELECT kundennummer FROM adresse WHERE id = '$checkidemailid' LIMIT 1"); if(!$checkidemail){ $app->erp->AddRolleZuAdresse($checkidemailid, 'Kunde', 'von', 'Projekt', $projekt); $checkidemail = $app->DB->Select("SELECT kundennummer FROM adresse WHERE id = '$checkidemailid' LIMIT 1"); } } }else{ $checkidemailid = $app->DB->Select( sprintf( "SELECT id FROM adresse WHERE IFNULL(name,'')='%s' AND IFNULL(strasse,'')='%s' AND IFNULL(plz,'')='%s' AND IFNULL(ort,'')='%s' AND geloescht!=1 LIMIT 1", $app->erp->ReadyForPDF($warenkorb['name']), $app->erp->ReadyForPDF($warenkorb['strasse']), $app->erp->ReadyForPDF($warenkorb['plz']), $app->erp->ReadyForPDF($warenkorb['ort']) ) ); if(!$checkidemailid){ $checkidemail = $app->DB->Select( sprintf( "SELECT id FROM adresse WHERE IFNULL(name,'')='%s' AND IFNULL(strasse,'')='%s' AND IFNULL(plz,'')='%s' AND IFNULL(ort,'')='%s' AND geloescht!=1 LIMIT 1", $app->DB->real_escape_string($warenkorb['name']), $app->DB->real_escape_string($warenkorb['strasse']), $app->DB->real_escape_string($warenkorb['plz']), $app->DB->real_escape_string($warenkorb['ort']) ) ); } if(!$checkidemailid){ $checkidemailid = $app->DB->Select("SELECT id FROM adresse WHERE name='" . $app->erp->ReadyForPDF($warenkorb['name']) . "' AND strasse='" . $app->erp->ReadyForPDF($warenkorb['strasse']) . "' AND plz='" . $app->erp->ReadyForPDF($warenkorb['plz']) . "' AND ort='" . $app->erp->ReadyForPDF($warenkorb['ort']) . "' AND geloescht!=1 $adresseprojekt LIMIT 1"); } if(!$checkidemailid){ $checkidemailid = $app->DB->Select("SELECT id FROM adresse WHERE name='" . $app->DB->real_escape_string($warenkorb['name']) . "' AND strasse='" . $app->DB->real_escape_string($warenkorb['strasse']) . "' AND plz='" . $app->DB->real_escape_string($warenkorb['plz']) . "' AND ort='" . $app->DB->real_escape_string($warenkorb['ort']) . "' AND geloescht!=1 $adresseprojekt LIMIT 1"); } if($checkidemailid){ $checkidemail = $app->DB->Select("SELECT `kundennummer` FROM `adresse` WHERE `id` = '$checkidemailid' LIMIT 1"); if(!$checkidemail){ $app->erp->AddRolleZuAdresse($checkidemailid, 'Kunde', 'von', 'Projekt', $projekt); $checkidemail = $app->DB->Select("SELECT `kundennummer` FROM `adresse` WHERE `id` = '$checkidemailid' LIMIT 1"); } } } } } $validkundennummer = ''; if(!empty($warenkorb['kundennummer'])){ $validkundennummer = $app->DB->Select("SELECT `kundennummer` FROM `adresse` WHERE `kundennummer`='" . trim($warenkorb['kundennummer']) . "' AND geloescht!=1 LIMIT 1"); } $kundennummer = 0; $import_kundennummer = ''; if(!empty($warenkorb['kundennummer']) && $validkundennummer == $warenkorb['kundennummer']){ $kundennummer = 1; $import_kundennummer = $validkundennummer; } elseif($checkid != ''){ $kundennummer = 1; $import_kundennummer = $checkid; } elseif($checkidemail != ''){ $kundennummer = 1; $import_kundennummer = $checkidemail; } if($shopdaten['utf8codierung'] == '1') { $warenkorb = $app->erp->CleanDataBeforImportUTF8($warenkorb, false); } else{ $warenkorb = $app->erp->CleanDataBeforImport($warenkorb, false); } $unbekanntezahlungsweisen = null; $shopimp->KundeAnlegenUpdate($insid, $auftrag, $warenkorb, $kundennummer, $import_kundennummer, $unbekanntezahlungsweisen); $checkid = ''; $checkidemail = ''; } $app->DB->Update( "UPDATE `shopexport_archiv` SET `erfolgreich` = `erfolgreich` + 1, `letzteabgeholtenummer` = '$letzteabgeholtenummer' WHERE `id` = " . $archivauftraege[$i]['id'] ); $auftragstmp = $app->DB->SelectArr( "SELECT `id` FROM `auftrag` WHERE `internet` = '$onlinebestellnummer' AND `internet` <> ''" ); if(!empty($auftragstmp) && count($auftragstmp) == 1) { $auftragid = $auftragstmp[0]['id']; if($archivauftraege[$i]['abschliessen'] && !$donotimport) { $app->erp->BelegFreigabe('auftrag', $auftragid); if(!empty($warenkorb['bestelldatum']) && strtotime($warenkorb['bestelldatum']) > 1 && strtotime($warenkorb['bestelldatum']) < strtotime(date('Y-m-d'))){ $app->DB->Update( sprintf( "UPDATE `auftrag` SET `datum` = '%s' WHERE `id` = %d LIMIT 1", $app->DB->real_escape_string($warenkorb['bestelldatum']), $auftragid ) ); } $app->DB->Update( "UPDATE `auftrag` SET `status`='abgeschlossen', `schreibschutz`='1' WHERE `id`='$auftragid' LIMIT 1" ); } $rechnungid = ''; if($archivauftraege[$i]['rechnung_erzeugen'] && !$donotimport){ $rechnungid = $app->DB->Select("SELECT `id` FROM `rechnung` WHERE `auftragid` = '$auftragid' AND `status` != 'storniert' LIMIT 1"); if(!$rechnungid){ $rechnungid = $app->erp->WeiterfuehrenAuftragZuRechnung($auftragid); if(!empty($warenkorb['bestelldatum']) && strtotime($warenkorb['bestelldatum']) > 1 && strtotime($warenkorb['bestelldatum']) < strtotime(date('Y-m-d'))){ $app->DB->Update("UPDATE auftrag SET datum = '" . $app->DB->real_escape_string($warenkorb['bestelldatum']) . "' WHERE id = '$auftragid' LIMIT 1"); } $datum = $app->DB->Select("SELECT `datum` FROM `auftrag` WHERE `id` = '$auftragid' LIMIT 1"); if(!empty($datum)) { $app->DB->Update("UPDATE `rechnung` SET `datum` = '$datum' WHERE `id` = '$rechnungid' LIMIT 1"); } $app->erp->BelegFreigabe('rechnung', $rechnungid); $app->DB->Update("UPDATE `rechnung` SET `status`='versendet', `schreibschutz`='1' WHERE `id`='$rechnungid' LIMIT 1"); if(!empty($datum)) { $app->DB->Update("UPDATE `rechnung` SET `datum` = '$datum' WHERE `id` = '$rechnungid' LIMIT 1"); } } } if($archivauftraege[$i]['rechnung_bezahlt'] && $rechnungid != '') { $app->DB->Update("UPDATE `rechnung` SET `ist`=`soll`, `zahlungsstatus`='bezahlt', `mahnwesenfestsetzen`=1 WHERE `id`='$rechnungid' "); } } } elseif(!empty($warenkorb['bestelldatum']) && strtotime($warenkorb['bestelldatum']) > 1 && strtotime($warenkorb['bestelldatum']) < strtotime(date('Y-m-d'))) { $auftragid = $auftragcheck; if(!$donotimport) { $app->DB->Update("UPDATE `auftrag` SET `datum` = '" . $app->DB->real_escape_string($warenkorb['bestelldatum']) . "' WHERE id = '$auftragcheck' LIMIT 1"); $rechnungid = $app->DB->Select("SELECT `id` FROM `rechnung` WHERE `auftragid` = '$auftragid' AND status != 'storniert' LIMIT 1"); if($rechnungid){ $app->DB->Update("UPDATE `rechnung` SET `datum` = '" . $app->DB->real_escape_string($warenkorb['bestelldatum']) . "' WHERE `id` = '$rechnungid' AND `datum` > '" . $app->DB->real_escape_string($warenkorb['bestelldatum']) . "' LIMIT 1"); } } } } } if($archivauftraege[$i]['type'] === 'zeitraum') { if(!$maxtime) { $app->erp->ProzessstarterStatus('Id '.$shopid.' no maxTime', $cronjobTmpId); $maxtime = strtotime(date('Y-m-d H:i:s')); } else { $app->erp->ProzessstarterStatus('Id '.$shopid.' '.$maxtime.' maxTime', $cronjobTmpId); } if(!$mintime) { $app->erp->ProzessstarterStatus('Id '.$shopid.' no minTime', $cronjobTmpId); } else { $app->erp->ProzessstarterStatus('Id '.$shopid.' '.$mintime.' minTime', $cronjobTmpId); } $datumvon = strtotime($archivauftraege[$i]['datumvon']); $datumbis = strtotime($archivauftraege[$i]['datumbis']); if($datumvon < 0) { $datumvon = 0; } if($datumbis < 0) { $datumbis = 0; } $app->DB->Update( sprintf( 'UPDATE `shopexport_archiv` SET `datumvon` = FROM_UNIXTIME(%d) WHERE `id` = %d LIMIT 1', $maxtime ,$archivauftraege[$i]['id'] ) ); if($cw < 1 || strtotime(date('Y-m-d H:i:s', $maxtime)) <= $datumvon){ $app->DB->Update( sprintf( "UPDATE `shopexport_archiv` SET `status` = 'abgeschlossen' WHERE `id` = %d", $archivauftraege[$i]['id'] ) ); } else{ $break = false; } } } } else{ $app->erp->LogFile( $app->DB->real_escape_string( 'shopimport_auftragarchiv Shop: '.$shopid.' Auth: '.print_r($pageContents,true) ) ); } if($archivauftraege[$i]['type'] !== 'zeitraum') { $app->DB->Update( sprintf( "UPDATE `shopexport_archiv` SET `status` ='abgeschlossen' WHERE `id` = %d", $archivauftraege[$i]['id'] ) ); } } } } $app->DB->Update( "UPDATE `prozessstarter` SET `letzteausfuerhung`=NOW(), `mutex` = 0,`mutexcounter`=0 WHERE `parameter` = 'shopimport_auftragarchiv'" ); //Da der Cronjob wohl nie wieder gebraucht wird abschalten wenn es keine weiteren Shops mehr gibt $weitereauftraegevorhanden = $app->DB->Select("SELECT `id` from `shopexport_archiv` WHERE `status` = 'aktiv' LIMIT 1"); if(!$weitereauftraegevorhanden) { $app->DB->Update("UPDATE `prozessstarter` SET `aktiv` = 0 WHERE `parameter` = 'shopimport_auftragarchiv'"); }