app = $app; $this->parsetarget = $parsetarget; parent::__construct($app,$parsetarget); $this->ExtendsForm(); } function ExtendsForm() { //firma $id = (int)$this->app->Secure->GetGET('id'); $this->app->Tpl->Set('NURPREISESTYLE',' style="display:none;" '); $this->app->Secure->POST["firma"]=$this->app->User->GetFirma(); $field = new HTMLInput("firma","hidden",$this->app->User->GetFirma()); $this->form->NewField($field); $this->app->YUI->AutoComplete("projekt","projektname",1); $this->form->ReplaceFunction("projekt",$this,"ReplaceProjekt"); $this->app->YUI->AutoComplete("artikelrabattsteuer","steuersatz",1); $this->form->ReplaceFunction("artikelrabattsteuer",$this,"ReplaceSteuersatz"); $this->app->YUI->AutoComplete("artikelporto","artikelnummer",1); $this->form->ReplaceFunction("artikelporto",$this,"ReplaceArtikel"); $this->app->YUI->AutoComplete("preisgruppe","preisgruppekennziffer"); $this->form->ReplaceFunction("preisgruppe",$this,"ReplacePreisgruppe"); $this->app->YUI->AutoComplete("artikelportoermaessigt","artikelnummer",1); $this->form->ReplaceFunction("artikelportoermaessigt",$this,"ReplaceArtikel"); $this->app->YUI->AutoComplete("artikelrabatt","artikelnummer",1); $this->form->ReplaceFunction("artikelrabatt",$this,"ReplaceArtikel"); $this->app->YUI->AutoComplete('vertrieb','adressemitvertrieb'); $this->form->ReplaceFunction('vertrieb',$this,'ReplaceVertrieb'); $this->app->YUI->AutoComplete("artikelnachnahme","artikelnummer",1); $this->form->ReplaceFunction("artikelnachnahme",$this,"ReplaceArtikel"); $this->app->YUI->DatePicker('vondatum'); $this->app->YUI->TimePicker('vonzeit'); $this->app->YUI->DatePicker('startdate'); $this->form->ReplaceFunction('startdate',$this,'ReplaceDatum'); if($id > 0 && $this->app->Secure->GetPOST('resetarchiv')) { $this->app->DB->Update("UPDATE shopexport_archiv SET status = 'abgebrochen' WHERE shop = '$id' LIMIT 1"); $this->app->Tpl->Add('MESSAGE','
{|Alte Aufträge abholen abgebrochen.|}
'); } elseif($id > 0 && $this->app->Secure->GetPOST('resetgetarticlelist')) { $this->app->DB->Delete("DELETE FROM shopexport_getarticles WHERE shop = '$id'"); $this->app->Tpl->Add('MESSAGE','
{|Artikel abholen abgebrochen.|}
'); } elseif($id > 0 && $this->app->Secure->GetPOST('getarticlelist')) { if($this->app->DB->Select(sprintf("SELECT id FROM prozessstarter WHERE parameter = 'onlineshops_tasks' AND aktiv = 1 LIMIT 1"))){ $command = 'getarticlelist'; $task = $this->app->DB->SelectRow('SELECT * FROM onlineshops_tasks WHERE shop_id=\'' . $id . '\' AND command=\'' . $command . '\' LIMIT 1'); if(!empty($task['id'])){ if($task['status'] !== 'running'){ $this->app->DB->Update('UPDATE onlineshops_tasks SET status=\'inactive\',counter=0 WHERE id=' . $task['id']); } }else{ $this->app->DB->Insert('INSERT INTO onlineshops_tasks (shop_id, command) VALUES (' . $id . ',\'' . $command . '\')'); } $status = $this->app->DB->Select("SELECT status FROM onlineshops_tasks WHERE shop_id=$id AND command='$command'"); if($status === 'running'){ $this->app->Tpl->Add('MESSAGE', '
{|Anzahl abzuholender Artikel wird ermittelt|}.
'); }else{ $this->app->Tpl->Add('MESSAGE', '
{|Aufgabe wurde zu Shoptasks hinzugefügt und wird im Hintergrund ausgeführt|}.
'); } } else { $ret = $this->app->remote->RemoteCommand($id,'getarticlelist'); if($ret) { $anz = 0; if(isset($ret['errors']) && $ret['errors']) { if(is_array($ret['errors'])) { $this->app->Tpl->Add('MESSAGE', '
'.implode('
',$ret['errors']).'
'); } else { $this->app->Tpl->Add('MESSAGE', '
'.$ret['errors'].'
'); } } else{ foreach($ret as $v) { $anz++; $this->app->DB->Insert("INSERT INTO shopexport_getarticles (shop, nummer) VALUES ('$id', '".$this->app->DB->real_escape_string($v)."')"); } if(!$this->app->DB->Select("SELECT id FROM `prozessstarter` WHERE aktiv = 1 AND parameter = 'getarticles' LIMIT 1")) { $this->app->DB->Update("UPDATE `prozessstarter` SET aktiv = 1 WHERE parameter = 'getarticles' LIMIT 1"); } $this->app->DB->Update("UPDATE `prozessstarter` SET letzteausfuerhung = DATE_SUB(now(), INTERVAL periode MINUTE) WHERE aktiv = 1 AND parameter = 'getarticles' AND mutex = 0 LIMIT 1"); $this->app->Tpl->Add('MESSAGE', '
'.$anz.' {|Artikel gefunden. Diese werden im Hintergrund importiert.|}
'); } $this->app->erp->SetKonfigurationValue('artikelimportanzahl_'.$id, $anz); unset($ret); } } // $this->app->erp->SetKonfigurationValue('artikelimportanzahl_'.$id, $anz); /* $ret = $this->app->remote->RemoteCommand($id,"getarticlelist"); if($ret) { $anz = 0; if(isset($ret['errors']) && $ret['errors']) { if(is_array($ret['errors'])) { $this->app->Tpl->Add('MESSAGE', '
'.implode('
',$ret['errors']).'
'); }else { $this->app->Tpl->Add('MESSAGE', '
'.$ret['errors'].'
'); } }else{ foreach($ret as $v) { $anz++; $this->app->DB->Insert("INSERT INTO shopexport_getarticles (shop, nummer) VALUES ('$id', '".$this->app->DB->real_escape_string($v)."')"); } if(!$this->app->DB->Select("SELECT id FROM `prozessstarter` WHERE aktiv = 1 AND parameter = 'getarticles' LIMIT 1"))$this->app->DB->Update("UPDATE `prozessstarter` SET aktiv = 1 WHERE parameter = 'getarticles' LIMIT 1"); $this->app->DB->Update("UPDATE `prozessstarter` SET letzteausfuerhung = DATE_SUB(now(), INTERVAL periode MINUTE) WHERE aktiv = 1 AND parameter = 'getarticles' AND mutex = 0 LIMIT 1"); $this->app->Tpl->Add('MESSAGE', '
'.$anz.' {|Artikel gefunden. Diese werden im Hintergrund importiert.|}
'); } $this->app->erp->SetKonfigurationValue('artikelimportanzahl_'.$id, $anz); unset($ret); } */ } if($this->app->Secure->GetGET('action') === 'create') { $field = new HTMLInput("versandartenmapping","checkbox",1,'','','','','checked'); $this->form->NewField($field); $field = new HTMLInput("zahlungsweisenmapping","checkbox",1,'','','','','checked'); $this->form->NewField($field); $field = new HTMLInput("artikeltexteuebernehmen","checkbox",1,'','','','','checked'); $this->form->NewField($field); $field = new HTMLInput("artikelimport","checkbox",1,'','','','','checked'); $this->form->NewField($field); }else{ if($this->app->Secure->GetPOST('speichern')) { $this->app->erp->StartChangeLog('shopexport'); $altedaten = $this->app->DB->SelectArr("SELECT * FROM shopexport WHERE aktiv = 0 AND (shoptyp = 'intern' OR shoptyp = 'custom') AND modulename <> '' AND id = '$id' LIMIT 1"); $altedaten2 = $this->app->DB->SelectArr("SELECT * FROM shopexport WHERE id = '$id' LIMIT 1"); if(true || $this->form->CallbackAndMandatorycheck(true)) { $data = $this->app->DB->SelectArr("SELECT * FROM shopexport WHERE id = '$id' LIMIT 1"); if($data)$data = reset($data); /*$bezeichnung = $this->app->Secure->GetPOST('frm_bezeichnung'); //$this->app->DB->Update("UPDATE shopexport SET bezeichnung = '$bezeichnung' WHERE id = '$id' LIMIT 1"); $projekt = (String)reset(explode(' ',$this->app->Secure->GetPOST('frm_projekt'))); if($projekt !== '') { $projekt = $this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung <> '' AND abkuerzung = '".$projekt."' ORDER BY geloescht LIMIT 1"); } $this->app->DB->Update("UPDATE shopexport SET projekt = '$projekt' WHERE id = '$id' LIMIT 1");*/ if($this->app->Secure->GetPOST('modulename') != $altedaten2[0]['modulename']) { $modulename = $this->app->Secure->GetPOST('modulename'); if($modulename == '') { $this->app->DB->Update("UPDATE shopexport SET shoptyp = 'extern' WHERE id = '$id' LIMIT 1"); $data['shoptyp'] = 'extern'; }else { $found = false; $obj = $this->app->erp->LoadModul('onlineshops'); $modulesel = array(''=>'Extern'); if($obj) { $module = $obj->getApps(); if(isset($module['installiert'])) { foreach($module['installiert'] as $k => $v) { if(strpos($v['key'],'shopimporter_') !== 0)continue; if($v['key'] == $modulename) { $this->app->DB->Update("UPDATE shopexport SET shoptyp = 'intern' WHERE id = '$id' LIMIT 1"); $data['shoptyp'] = 'intern'; $found = true; break; } } } } } } $einzelnabholen = $this->app->Secure->GetPOST('einzelnabholen'); $inwarteschlange = $this->app->Secure->GetPOST('inwarteschlange'); $modus = $this->app->Secure->GetPOST('modus'); $abholmodus = $this->app->Secure->GetPOST('abholmodus'); $vondatum = (String)$this->app->Secure->GetPOST('vondatum'); $vonzeit = (String)$this->app->Secure->GetPOST('vonzeit'); $this->form->HTMLList['datumvon']->htmlvalue = '0000-00-00 00:00:00'; $this->form->HTMLList['datumvon']->dbvalue = '0000-00-00 00:00:00'; if($vondatum !== '') { $this->form->HTMLList['datumvon']->htmlvalue = $this->app->String->Convert($vondatum, '%1.%2.%3', '%3-%2-%1'); if($vonzeit !== '')$this->form->HTMLList['datumvon']->htmlvalue = $this->form->HTMLList['datumvon']->htmlvalue.' '.$vonzeit.':00'; $this->form->HTMLList['datumvon']->dbvalue = $this->form->HTMLList['datumvon']->htmlvalue; } if($abholmodus !== 'zeitbereich' && $this->app->Secure->GetPOST('maxmanuell') == 1) { $this->form->HTMLList['einzelsync']->dbvalue = 1; $this->form->HTMLList['einzelsync']->htmlvalue = 1; } /*switch($abholmodus) { case 'ab_nummer': $this->app->DB->Update("UPDATE shopexport SET holealle = 1, anzgleichzeitig = 0 WHERE id = '$id' LIMIT 1"); break; case 'zeitbereich': $this->app->DB->Update("UPDATE shopexport SET anzgleichzeitig = 50 WHERE id = '$id' AND anzgleichzeitig < 2 LIMIT 1"); break; default: $this->app->DB->Update("UPDATE shopexport SET holealle = 0, anzgleichzeitig = 0 WHERE id = '$id' LIMIT 1"); break; }*/ $aktivhaken = $this->app->Secure->GetPOST('aktivhaken'); $frmarr = array('ab_nummer','holeallestati','datumvon','datumbis','nummersyncstatusaendern'); //foreach($frmarr as $v)$this->app->DB->Update("UPDATE shopexport SET $v = '".$this->app->Secure->GetPOST($v)."' WHERE id = '$id' LIMIT 1"); switch($modus) { case 'demomodus': //$this->app->DB->Update("UPDATE shopexport SET demomodus = 1 WHERE id = '$id' LIMIT 1"); //$this->app->DB->Update("UPDATE shopexport SET cronjobaktiv = 0 WHERE id = '$id' LIMIT 1"); break; case 'manuell': //$this->app->DB->Update("UPDATE shopexport SET demomodus = 0 WHERE id = '$id' LIMIT 1"); //$this->app->DB->Update("UPDATE shopexport SET cronjobaktiv = 0 WHERE id = '$id' LIMIT 1"); break; case 'automatisch': //$this->app->DB->Update("UPDATE shopexport SET demomodus = 0 WHERE id = '$id' LIMIT 1"); //$this->app->DB->Update("UPDATE shopexport SET cronjobaktiv = 1 WHERE id = '$id' LIMIT 1"); if(!$this->app->DB->Select("SELECT id FROM `prozessstarter` WHERE parameter = 'shopimport' AND aktiv = 1")) { if($this->app->DB->Select("SELECT id FROM `prozessstarter` WHERE parameter = 'shopimport' AND aktiv = 0")) { $this->app->DB->Update("UPDATE `prozessstarter` SET aktiv = 1 WHERE parameter = 'shopimport' LIMIT 1"); }else{ $this->app->erp->CheckProzessstarter("Shopimporter","periodisch","15","2017-01-01 00:00:00","cronjob","shopimport",1); } } break; } /* if($einzelnabholen) { $this->app->DB->Update("UPDATE shopexport SET einzelsync = 1 WHERE id = '$id' LIMIT 1"); }else{ $this->app->DB->Update("UPDATE shopexport SET einzelsync = 0 WHERE id = '$id' LIMIT 1"); } if($inwarteschlange) { $this->app->DB->Update("UPDATE shopexport SET direktimport = 0 WHERE id = '$id' LIMIT 1"); }else{ $this->app->DB->Update("UPDATE shopexport SET direktimport = 1 WHERE id = '$id' LIMIT 1"); }*/ if($data['shoptyp'] !== 'custom') { $this->app->DB->Update("UPDATE shopexport SET aktiv = '$aktivhaken' WHERE id = '$id' LIMIT 1"); }else{ $this->app->DB->Update("UPDATE shopexport SET aktiv = '0' WHERE id = '$id' LIMIT 1"); $data['modulename'] = trim($data['modulename'],'.'); if($data['modulename'] !== '') { $file = __DIR__ .'/../plugins/external/shopimporter/'.$data['modulename']; if(is_file($file)) { include_once($file); $this->app->DB->Update("UPDATE shopexport SET aktiv = '$aktivhaken' WHERE id = '$id' LIMIT 1"); } } } $err = null; if($altedaten && $this->app->Secure->GetPOST('aktiv') && method_exists($this->app->erp, 'OnlineshopsLizenzFehler')) { if($err = $this->app->erp->OnlineshopsLizenzFehler($data['modulename'])) { $this->app->DB->Update("UPDATE shopexport SET aktiv = '0' WHERE id = '$id' LIMIT 1"); $this->form->HTMLList['aktiv']->dbvalue = 0; $this->form->HTMLList['aktiv']->htmlvalue = 0; $this->app->User->SetParameter('shopexport_meldung', '
'.$err['Error'].'
'); } } $this->app->erp->RunHook('shopexport_speichern',1, $id); } }else { $meldung = $this->app->User->GetParameter('shopexport_meldung'); if($meldung <> '') { $this->app->User->SetParameter('shopexport_meldung',''); $this->app->Tpl->Set('MESSAGE', $meldung); } } $this->app->erp->RunHook('shopexport_widget', 1, $id); $this->app->Tpl->Set('ID', $id); $data = $this->app->DB->SelectRow( sprintf( 'SELECT * FROM shopexport WHERE id = %d LIMIT 1', $id ) ); if($data['aktiv']) { //$this->app->Tpl->Set('AKTIVHAKEN', ' checked="checked" '); }else{ } if($data['projekt']) { //$this->app->Tpl->Set('FRM_PROJEKT', $this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id = '".$data['projekt']."' LIMIT 1")); } //$this->app->YUI->AutoComplete('projekt',"projektname", 1); //$this->app->Tpl->Set('FRM_BEZEICHNUNG', $data['bezeichnung']); if($data['demomodus']) { $status = 'demomodus'; }elseif($data['cronjobaktiv']) { $status = 'automatisch'; }else{ $status = 'manuell'; } if($data['anzgleichzeitig'] > 1) { $abbholstatus = 'zeitbereich'; }elseif($data['holealle']){ $abbholstatus = 'ab_nummer'; }else{ $abbholstatus = 'status'; } if($data['datumvon'] !== '0000-00-00 00:00:00') { $vondatum = $this->app->String->Convert($data['datumvon'],'%1-%2-%3 %4:%5:%6', '%3.%2.%1'); $vonzeit = $this->app->String->Convert($data['datumvon'],'%1-%2-%3 %4:%5:%6', '%4:%5'); }else{ $vonzeit = ''; $vondatum = ''; } $field = new HTMLInput('vonzeit','text',$vonzeit,'10','','','',''); $this->form->NewField($field); $field = new HTMLInput('vondatum','text',$vondatum,'12','','','',''); $this->form->NewField($field); $this->app->YUI->HideFormular('abholmodus',array('status'=>'ab_nummer zeitraum','ab_nummer'=>'zeitraum','zeitbereich'=>'ab_nummer manuellebegrenzung')); //$this->app->YUI->HideFormular('abholmodus',array('status'=>'dummy','zeitbereich'=>'manuellebegrenzung')); //$this->app->Tpl->Set('CBINWARTESCHLANGE', ''); //if($data['holeallestati'])$this->app->Tpl->Set('HOLEALLESTATI',' checked="checked" '); //if($data['nummersyncstatusaendern'])$this->app->Tpl->Set('NUMMERSYNCSTATUSAENDERN',' checked="checked" '); $this->app->Tpl->Set('AB_NUMMER', $data['ab_nummer']); $this->app->Tpl->Set('DATUMVON', $data['datumvon']); $this->app->Tpl->Set('DATUMBIS', $data['datumbis']); $this->app->Tpl->Add('AKTIONBUTTONS',''); $this->app->YUI->HideFormular('modulename', [''=>'trstartderschnittstelle','shopimporter_amazon' => 'dummy','shopimporter_shopify'=>'dummy']); $this->app->YUI->HideFormular('ueberschreibe_lagerkorrekturwert',['checked'=>'dummy','unchecked'=>'lagerkorrektur']); $tab = 10; switch($data['shoptyp']) { case 'intern': $this->app->Tpl->Set('SHOPTYP', 'Intern'); break; case 'custom': $this->app->Tpl->Set('SHOPTYP', 'Custom'); $data['modulename'] = trim($data['modulename'],'.'); $this->app->Tpl->Set('DATEINAME',$data['modulename']); $file = __DIR__ .'/../plugins/external/shopimporter/'.$data['modulename']; if(is_file($file))$this->app->Tpl->Set('CUSTOMDATEI', htmlspecialchars(file_get_contents($file))); $this->app->Tpl->Add('HOOKLITABS','
  • Custom
  • '); $this->app->Tpl->Parse('HOOKTABS','shopexport_datei.tpl'); $tab++; break; default: $this->app->Tpl->Set('SHOPTYP', 'Extern'); break; } $struktur = null; if($data['shoptyp'] === 'intern' || ($data['shoptyp'] === 'custom' && $data['aktiv'])) { if($data['modulename'] !== '') { $obj = null; if($data['shoptyp'] === 'intern') { $obj = $this->app->erp->LoadModul($data['modulename']); }else{ $file = __DIR__ .'/../plugins/external/shopimporter/'.$data['modulename']; if(is_file($file)) { include_once($file); $classa = explode('_',str_replace('_'.$id.'.php','', $data['modulename'])); foreach($classa as $k => $v)$classa[$k] = ucfirst($v); $class = implode('_', $classa); $obj = new $class($this->app, true); } } if($obj) { $this->ShowExtraeinstellungen($id, $obj, 'EXTRAEINSTELLUNGEN', $struktur); $this->app->erp->RunHook('shopexport_show', 3, $id, $obj, $tab); $shopCapabilities = ShopimporterBase::shopCapabilities(); if( !empty($shopCapabilities[$data['modulename']]) && !empty($shopCapabilities[$data['modulename']]['kategoriebaum']) && $shopCapabilities[$data['modulename']]['kategoriebaum']['updatearticle'] === ShopimporterBase::CAN ) { $this->showCategoryTree($id, $tab); } } }else{ $this->app->Tpl->Set('VOREXTRA', ''); } } elseif($data['shoptyp'] === 'custom') { $this->app->Tpl->Set('EXTRAEINSTELLUNGEN','Für weitere Einstellungen den Importer aktivieren'); }else{ $this->app->Tpl->Set('VOREXTRA', ''); } $statusarr = array('demomodus'=>'{|Demo (zum Testen)|}','manuell'=>'{|Manuell (mit Importzentrale)|}','automatisch'=>'{|Automatisch (per Prozessstarter)|}'); $abholarr = array('status'=>'{|nach Status|}','ab_nummer'=>'{|ab Nummer|}','zeitbereich'=>'{|ab Datum|}'); if($struktur && isset($struktur['ausblenden'])) { if(isset($struktur['ausblenden']['abholmodus']) && is_array($struktur['ausblenden']['abholmodus'])) { foreach($struktur['ausblenden']['abholmodus'] as $k)unset($abholarr[$k]); } } $this->app->Tpl->Add('SELABHOLMODUS',''); $this->app->Tpl->Add('SELMODUS',''); $this->app->Tpl->Set('WARTESCHLANGE',''); /*if(!$data['direktimport']) { $this->app->Tpl->Set('INWARTESCHLANGE', ' checked="checked" '); }*/ /* if($data['einzelsync']) { $this->app->Tpl->Set('EINZELNABHOLEN', ' checked="checked" '); }*/ //$this->app->Tpl->Parse('TAB1', 'shopexport_detail.tpl'); $json = $data['json']; if($json) { $json = @json_decode($json, true); if($json && is_array($json)) { if(isset($json['erlaubtefunktionen'])) { if(isset($json['erlaubtefunktionen']['rabattartikel']) && !$json['erlaubtefunktionen']['rabattartikel']) { $this->app->Tpl->Add('MSGARTIKELRABATT',' wird von diesem Importer nicht unterstützt '); } if(isset($json['erlaubtefunktionen']['zeitbereich']) && !$json['erlaubtefunktionen']['zeitbereich']) { $this->app->Tpl->Add('MSGANZGLEICHZEITIG',' wird von diesem Importer nicht unterstützt '); } if(isset($json['erlaubtefunktionen']['auftragabnummer']) && !$json['erlaubtefunktionen']['auftragabnummer']) { $this->app->Tpl->Add('MSGHOLEALLE',' wird von diesem Importer nicht unterstützt '); } if(isset($json['erlaubtefunktionen']['eigenschaften']) && !$json['erlaubtefunktionen']['eigenschaften']) { $this->app->Tpl->Add('MSGEIGENSCHAFTENUEBERTRAGEN',' wird von diesem Importer nicht unterstützt '); } if(isset($json['erlaubtefunktionen']['texte']) && !$json['erlaubtefunktionen']['texte']) { $this->app->Tpl->Add('MSGTEXTEUEBERTRAGEN',' wird von diesem Importer nicht unterstützt '); } if(isset($json['erlaubtefunktionen']['artikelbilder']) && !$json['erlaubtefunktionen']['artikelbilder']) { $this->app->Tpl->Add('MSGSHOPBILDERUEBERTRAGEN',' wird von diesem Importer nicht unterstützt '); } if(isset($json['erlaubtefunktionen']['kategorien']) && !$json['erlaubtefunktionen']['kategorien']) { $this->app->Tpl->Add('MSGKATEGORIENUEBERTRAGEN',' wird von diesem Importer nicht unterstützt '); } } } } if($this->app->erp->RechteVorhanden('shopexport','artikeluebertragen')){ $this->app->Tpl->Add('AKTIONBUTTONS', ''); } if($struktur && isset($struktur['functions']) && is_array($struktur['functions']) && in_array('exportartikelbaum',$struktur['functions'])) { $this->app->Tpl->Add('AKTIONBUTTONS',''); } if($struktur && isset($struktur['functions']) && is_array($struktur['functions']) && in_array('getarticlelist',$struktur['functions'])) { $anzahl = $this->app->DB->Select("SELECT COUNT(id) FROM shopexport_getarticles WHERE shop = '$id' AND nummer <> ''"); if($anzahl > 0) { $this->app->Tpl->Add('VORFORMULAR','
    '); $gesamtAnzahlAbgeholteArtikel = $this->app->erp->GetKonfiguration('artikelimportanzahl_'.$id); $anzahlstring = '('.$anzahl.' von '.$gesamtAnzahlAbgeholteArtikel.')'; $this->app->Tpl->Add('AKTIONBUTTONS',''); }else { $buttoninfo = ''; if(!empty($struktur['buttoninfo']) && !empty($struktur['buttoninfo']['getarticlelist'])) { $buttoninfo = $struktur['buttoninfo']['getarticlelist']; } $this->app->Tpl->Add('VORFORMULAR','
    '); $this->app->Tpl->Add('AKTIONBUTTONS',''); } }else{ $this->app->Tpl->Set('NURARTIKELLISTESTYLE',' style="display:none;" '); } if($struktur && isset($struktur['archiv']) && is_array($struktur['archiv'])) { if($this->app->DB->Select("SELECT id FROM shopexport_archiv WHERE shop='$id' AND status = 'aktiv' LIMIT 1")) { $this->app->Tpl->Add('VORFORMULAR','
    '); $this->app->Tpl->Add('AKTIONBUTTONS',''); }else{ if(in_array('zeitraum', $struktur['archiv'])) { $this->app->Tpl->Set('ARCHIVTYP', 'Zeitraum'); $this->app->Tpl->Set('ARCHIVTYPVAL', 'zeitraum'); $this->app->YUI->DatePicker('archiv_von'); $this->app->YUI->DatePicker('archiv_bis'); $this->app->YUI->TimePicker('archiv_zeitvon'); $this->app->YUI->TimePicker('archiv_zeitbis'); }elseif(in_array('ab_nummer', $struktur['archiv'])){ $this->app->Tpl->Set('ARCHIVTYP', 'Nummer'); $this->app->Tpl->Set('ARCHIVTYPVAL', 'ab_nummer'); $this->app->Tpl->Set('ARCHIVZEITSTYPE','display:none;'); } $this->app->Tpl->Parse('VORFORMULAR', 'shopexport_archiv.tpl'); $this->app->Tpl->Add('AKTIONBUTTONS',''); } } } $this->app->YUI->HideFormular('artikelimport',array('unchecked'=>'dummy','checked'=>'hinweisartikelimport')); $this->app->YUI->HideFormular('cronjobaktiv',array('unchecked'=>'direktimport','checked'=>'dummy')); $aktmodule = (String)$this->app->DB->Select("SELECT modulename FROM shopexport WHERE id = '$id' LIMIT 1"); $found = false; if($aktmodule === '') { $found = true; } $obj = $this->app->erp->LoadModul('onlineshops'); $modulesel = array(''=>'Extern'); if($obj){ $module = $obj->getApps(); if(isset($module['installiert'])){ foreach($module['installiert'] as $k => $v) { if(strpos($v['key'],'shopimporter_') !== 0) { continue; } if($v['key'] == $aktmodule){ $found = true; } $modulesel[$v['key']] = $v['Bezeichnung'].(!empty($v['beta'])?' (Beta)':''); } } } if(!$found)$modulesel[$aktmodule] = 'Custom'; $field = new HTMLSelect("modulename",0); $field->onchange = 'selectmodule(this);'; //$field->onchange="onchange_typ(this.form.typ.options[this.form.typ.selectedIndex].value);"; $field->AddOptionsSimpleArray($modulesel); $this->form->NewField($field); //$this->app->Tpl->Set(DATUM_BUCHUNG, // ""); } function ShowExtraeinstellungen($id, $obj, $target, &$struktur) { $target2 = $target.'2'; if(method_exists($obj, 'EinstellungenStruktur')) { $r = new ReflectionMethod(get_class($obj), 'EinstellungenStruktur'); $params = $r->getParameters(); $anzargs = count($params); if($anzargs > 0) { $struktur = $obj->EinstellungenStruktur($id); }else{ $struktur = $obj->EinstellungenStruktur(); } if(empty($struktur['felder']['category_root_id'])) { $struktur['felder']['category_root_id'] = [ 'typ' => 'hidden', ]; } if(empty($struktur['felder']['transform_cart_active'])) { $struktur['felder']['transform_cart_active'] = [ 'typ' => 'hidden', ]; $struktur['felder']['transform_cart_data'] = [ 'typ' => 'hidden', 'bezeichnung' => '', ]; $struktur['felder']['transform_cart'] = [ 'typ' => 'hidden', ]; $struktur['felder']['transform_cart_replace'] = [ 'typ' => 'hidden', ]; $struktur['felder']['transform_cart_format'] = [ 'typ' => 'hidden', ]; $this->app->YUI->AutoComplete('cart', 'shopimport_auftraege', 1, '&id='.$id); $this->app->Tpl->Set('SHOPID', $id); //$this->app->Tpl->Parse('EXTRAEINSTELLUNGEN', 'shopexport_carttransformation.tpl'); } if($struktur && isset($struktur['erlauben']) && is_array($struktur['erlauben']) && in_array('nurpreise',$struktur['erlauben'])) { $this->app->Tpl->Set('NURPREISESTYLE',''); } if($this->app->Secure->GetPOST('speichern')) { if(isset($struktur['felder'])) { $json = array(); $ok = false; foreach($struktur['felder'] as $name => $val) { if(isset($_POST[$name])){ $ok = true; } $json['felder'][$name] = $this->app->Secure->GetPOST($name, '','', 1); if(isset($val['replace'])) { switch($val['replace']) { case 'lieferantennummer': $json['felder'][$name] = $this->app->erp->ReplaceLieferantennummer(1,$json['felder'][$name],1); break; case 'projekt': $json['felder'][$name] = $this->app->erp->ReplaceProjekt(1,$json['felder'][$name],1); break; case 'artikel': $json['felder'][$name] = $this->app->erp->ReplaceArtikel(1,$json['felder'][$name],1); break; case 'preisgruppekennziffer': $json['felder'][$name] = $this->app->erp->ReplacePreisgruppe(1,$json['felder'][$name],1); break; } } if(isset($val['autocomplete'])) { switch($val['autocomplete']) { case 'kunde': $json['felder'][$name] = $this->app->erp->ReplaceKundennummer(1,$json['felder'][$name],1); break; } } $typ = 'text'; if(!empty($val['typ'])){ $typ = $val['typ']; } switch($typ) { case 'datum': case 'date': $this->app->YUI->DatePicker($name); if(isset($json['felder'][$name]) && strpos($json['felder'][$name], '.') !== false) { $json['felder'][$name] = $this->app->String->Convert($json['felder'][$name],'%3.%2.%1','%1-%2-%3'); } break; case 'password': if($json['felder'][$name] === '***************'){ $oldData = json_decode($this->app->DB->Select('SELECT einstellungen_json FROM shopexport WHERE id='.$id),true); $json['felder'][$name] = $oldData['felder'][$name]; } } } $json_str = $this->app->DB->real_escape_string(json_encode($json)); if(json_decode(json_encode($json),true) && $ok) { $this->app->DB->Update("UPDATE shopexport SET einstellungen_json = '$json_str' WHERE id = '".$id."' LIMIT 1"); } } } $html = ''; $html2 = ''; $cols1 = null; $cols2 = null; $aktcol = null; $hidden = ''; $json = $this->app->DB->Select("SELECT einstellungen_json FROM shopexport WHERE id = '$id' LIMIT 1"); if($json == '' && isset($struktur['felder'])) { $json = null; foreach($struktur['felder'] as $k => $v) { if(!empty($v['defaultcreate'])) { $json['felder'][$k] = $v['defaultcreate']; }elseif(!empty($v['default'])) { $json['felder'][$k] = $v['default']; } } $json = json_encode($json); } if($json){ $json = json_decode($json, true); } $this->app->Tpl->Set( 'TEXTAREASMARTYINCOMMING', !isset($json['felder']['transform_cart'])?'': htmlspecialchars(trim($json['felder']['transform_cart'])) ); if(!empty($json['felder']['transform_cart_active'])) { $this->app->Tpl->Set('TRANSFERACTIVE', ' checked="checked" '); } if(!empty($json['felder']['transform_cart_replace'])) { $this->app->Tpl->Set('REPLACECART', ' checked="checked" '); } if(!empty($json['felder']['transform_cart_format'])) { if($json['felder']['transform_cart_format'] === 'xml') { $this->app->Tpl->Set('OPTIONXML', ' selected="selected" '); } elseif($json['felder']['transform_cart_format'] === 'json') { $this->app->Tpl->Set('OPTIONJSON', ' selected="selected" '); } } if(!is_array($json)) { $json = ['felder' => []]; } if(!is_array($json['felder'])) { $json['felder'] = []; } foreach($struktur['felder'] as $name => $val) { if(!isset($json['felder'][$name])) { if(isset($val['default'])) { $json['felder'][$name] = $val['default']; }else{ $json['felder'][$name] = ''; } } $typ = 'text'; if(!empty($val['typ'])){ $typ = $val['typ']; } if($typ === 'hidden') { $hidden .= ''; continue; } $aktcol = ''; //$aktcol .= ''.(empty($val['bezeichnung'])?$name:$val['bezeichnung']).''; $aktcol .= ''.(empty($val['bezeichnung'])?$name:$val['bezeichnung']).''; if(isset($val['replace'])) { switch($val['replace']) { case 'lieferantennummer': $json['felder'][$name] = $this->app->erp->ReplaceLieferantennummer(0,$json['felder'][$name],0); if($target !== 'return'){ $this->app->YUI->AutoComplete($name, 'lieferant', 1); } break; case 'projekt': $json['felder'][$name] = $this->app->erp->ReplaceProjekt(0,$json['felder'][$name],0); if($target !== 'return'){ $this->app->YUI->AutoComplete($name, 'projektname', 1); } break; case 'artikel': $json['felder'][$name] = $this->app->erp->ReplaceArtikel(0,$json['felder'][$name],0); if($target !== 'return'){ $this->app->YUI->AutoComplete($name, 'artikelnummer', 1); } break; case 'preisgruppekennziffer': $json['felder'][$name] = $this->app->erp->ReplacePreisgruppe(0,$json['felder'][$name],0); if($target !== 'return'){ $this->app->YUI->AutoComplete($name, 'preisgruppekennziffer', 1); } break; } } if(isset($val['autocomplete'])) { switch($val['autocomplete']) { case 'kunde': $json['felder'][$name] = $this->app->erp->ReplaceKundennummer(0,$json['felder'][$name],0); $this->app->YUI->AutoComplete($name, 'kunde'); break; case 'adresse': $this->app->YUI->AutoComplete($name, 'adresse'); break; case 'artikel': $this->app->YUI->AutoComplete($name, 'artikelnummer'); break; } } switch($typ) { case 'textarea': $aktcol .= ''; break; case 'checkbox': $aktcol .= ''; break; case 'password': $aktcol .= ''; break; case 'select': $aktcol .= ''; break; case 'submit': if(isset($val['text'])){ $aktcol .= '
    '; } break; case 'custom': if(isset($val['function'])) { $tmpfunction = $val['function']; if(method_exists($this, $tmpfunction)){ $aktcol .= $this->$tmpfunction(); } } break; default: switch($typ) { case 'datum': case 'date': $this->app->YUI->DatePicker($name); if(isset($json['felder'][$name]) && strpos($json['felder'][$name], '-') !== false) { $json['felder'][$name] = $this->app->String->Convert($json['felder'][$name],'%1-%2-%3','%3.%2.%1'); } break; } $aktcol .= ''; break; } if(isset($val['vorschlag']) && $val['vorschlag'] != '') { $aktcol .= ' '; } if(isset($val['info']) && $val['info']){ $aktcol .= ' '.$val['info'].''; } if(isset($val['col']) && $val['col'] == 2) { if(isset($val['heading'])) { $cols2[] = ''.$val['heading'].''; } $cols2[] = $aktcol; }else{ if(isset($val['heading'])) { $cols1[] = ''.$val['heading'].''; } $cols1[] = $aktcol; } $aktcol .= ''; //$aktcol .= ''; //$htmlname = 'html'; //if(isset($val['col']) && $val['col'] == 2)$htmlname = 'html2'; } /*if($cols1) { foreach($cols1 as $k => $v) { $html .= ''.$cols1[$k].''; } } if($cols2) { $html2 .= ''; foreach($cols2 as $k => $v) { $html2 .= ''.$cols2[$k].''; } $html2 .= '
    '; }*/ $rows = 0; if($cols1){ $rows = count($cols1); } if($cols2 && count($cols2) > $rows){ $rows = count($cols2); } if($rows == 0) { $this->app->Tpl->Set('VOREXTRA', ''); } for($i = 0; $i < $rows; $i++) { if($i == 0) { $html .= ''; }else { $html .= ''; } if($cols1 && isset($cols1[$i])) { $html .= $cols1[$i]; }else{ $html .= '  '; } if($cols2 && isset($cols2[$i])) { $html .= $cols2[$i]; }else{ $html .= '  '; } $html .= ''; } $html .= $hidden; $this->app->Tpl->Parse('TAB9', 'shopexport_smarty.tpl'); if($target === 'return'){ return $html; } $this->app->Tpl->Add($target, $html); $this->app->Tpl->Add($target2, $html2); } } function ReplaceProjekt($db,$value,$fromform) { return $this->app->erp->ReplaceProjekt($db,$value,$fromform); } function ReplaceArtikel($db,$value,$fromform) { return $this->app->erp->ReplaceArtikel($db,$value,$fromform); } function ReplaceDecimal($db,$value,$fromform) { //value muss hier vom format ueberprueft werden return str_replace(",",".",$value); } function ReplaceDatum($db,$value,$fromform) { //value muss hier vom format ueberprueft werden $dbformat = 0; if(strpos($value,'-') > 0) $dbformat = 1; // wenn ziel datenbank if($db) { if($dbformat) return $value; else return $this->app->String->Convert($value,"%1.%2.%3","%3-%2-%1"); } // wenn ziel formular else { if($dbformat) return $this->app->String->Convert($value,"%1-%2-%3","%3.%2.%1"); else return $value; } } /** * @param int|bool $db * @param int|string $value * @param int|bool $fromform * * @return array|mixed|string|null */ public function ReplaceVertrieb($db,$value,$fromform) { if(!$fromform) { $id = $value; $abkuerzung = $this->app->DB->Select(sprintf("SELECT CONCAT(id, ' ', name) FROM adresse WHERE id=%d AND geloescht=0 LIMIT 1", $id)); } else { $abkuerzung = explode(' ', $value); $id = reset($abkuerzung); $id = $this->app->DB->Select(sprintf('SELECT id FROM adresse WHERE id = %d AND geloescht=0 LIMIT 1', $id)); } // wenn ziel datenbank if($db) { return $id; } // wenn ziel formular return $abkuerzung; } function ReplaceAdresse($db,$value,$fromform) { //value muss hier vom format ueberprueft werden if(!$fromform) { $id = $value; $abkuerzung = $this->app->DB->Select("SELECT name FROM adresse WHERE id='$id' AND geloescht=0 LIMIT 1"); } else { $abkuerzung = $value; $id = $this->app->DB->Select("SELECT id FROM adresse WHERE name='$value' AND name <> '' AND geloescht=0 LIMIT 1"); } // wenn ziel datenbank if($db) { return $id; } // wenn ziel formular return $abkuerzung; } public function Table() { $this->app->YUI->TableSearch('INHALT',"onlineshopslist"); $this->app->Tpl->Parse($this->parsetarget,"rahmen70.tpl"); } public function Search() { //$this->app->Tpl->Set($this->parsetarget,"suchmaske"); //$this->app->Table( //$table = new OrderTable("veranstalter"); //$table->Heading(array('Name','Homepage','Telefon')); } function ReplaceSteuersatz($db,$value,$fromform) { if($db) { if($value === "" || $value === null)return -1; return str_replace(',','.', $value); }else{ if($value < 0)return ""; return $value; } } function ReplacePreisgruppe($db,$value,$fromform) { //value muss hier vom format ueberprueft werden $dbformat = 0; if(!$fromform) { $dbformat = 1; $id = $value; $abkuerzung = $this->app->DB->Select("SELECT CONCAT(kennziffer,' ',name) as name FROM gruppen WHERE id='$id' LIMIT 1"); } else { $dbformat = 0; $abkuerzung = $value; $id = $this->app->DB->Select("SELECT id FROM gruppen WHERE CONCAT(kennziffer,' ',name)='$value' OR (kennziffer='$value' AND kennziffer!='') AND art LIKE 'preisgruppe' LIMIT 1"); if($id <=0) $id=0; } // wenn ziel datenbank if($db) { return $id; } // wenn ziel formular else { return $abkuerzung; } } /** * @param int $shopId * @param string $tab */ protected function showCategoryTree($shopId, $tab) { $this->app->Tpl->Set('SHOPID', $shopId); $this->app->Tpl->Add('TAB'.$tab,$this->app->Tpl->OutputAsString('shopexport_tree.tpl')); $this->app->Tpl->Add('HOOKLITABS','
  • {|Artikelbaum|}
  • '); $this->app->Tpl->Add('HOOKTABS', '
    [TAB'.$tab.']
    '); } }