");
}
//$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 = '
');
}
$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;
$success_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();
$import_result = $this->app->erp->ImportAuftrag($adresse, $warenkorb, $projekt, $shopid);
if ($import_result['status']) {
$tmpauftragid = $import_result['auftragid'];
$success_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 = '';
} else {
// Error...
}
return $success_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')) {
$showonly = true;
$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');
$success_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']) {
$success_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("
$success_import" . ($success_import != $insgs_import ? " von $insgs_import " : '') . " Aufträge importiert. Aufträge mit Kodierungsprobleme. Bitte prüfen Sie sie UTF8-Einstellung in der Shopschnittstelle!