diff --git a/classes/Components/Logger/Logger.php b/classes/Components/Logger/Logger.php
index ea3a8b45..6371faba 100644
--- a/classes/Components/Logger/Logger.php
+++ b/classes/Components/Logger/Logger.php
@@ -10,6 +10,15 @@ use Xentral\Components\Logger\Handler\LogHandlerInterface;
final class Logger extends AbstractLogger
{
+ const EMERGENCY = 'emergency';
+ const ALERT = 'alert';
+ const CRITICAL = 'critical';
+ const ERROR = 'error';
+ const WARNING = 'warning';
+ const NOTICE = 'notice';
+ const INFO = 'info';
+ const DEBUG = 'debug';
+
/** @var LogHandlerInterface[] $levelHandlers */
private $logHandlers;
diff --git a/classes/Modules/Onlineshop/Data/Shipment.php b/classes/Modules/Onlineshop/Data/Shipment.php
index 87daeed5..c85959db 100644
--- a/classes/Modules/Onlineshop/Data/Shipment.php
+++ b/classes/Modules/Onlineshop/Data/Shipment.php
@@ -14,17 +14,17 @@ class Shipment
public int $id;
/**
- * @var string plain tracking number
+ * @var ?string plain tracking number
*/
- public string $trackingNumber;
+ public ?string $trackingNumber;
/**
- * @var string URL to view tracking details
+ * @var ?string URL to view tracking details
*/
- public string $trackingUrl;
+ public ?string $trackingUrl;
/**
- * @var string shipping method (after mapping to Shop domain)
+ * @var ?string shipping method (after mapping to Shop domain)
*/
- public string $shippingMethod;
+ public ?string $shippingMethod;
}
\ No newline at end of file
diff --git a/classes/Modules/TOTPLogin/TOTPLoginService.php b/classes/Modules/TOTPLogin/TOTPLoginService.php
index ecfe97ab..09f20803 100644
--- a/classes/Modules/TOTPLogin/TOTPLoginService.php
+++ b/classes/Modules/TOTPLogin/TOTPLoginService.php
@@ -270,7 +270,7 @@ class TOTPLoginService
$secret = $this->getTOTPSecret($userId);
}
- $query = "otpauth://totp/{$label}?secret=" . $secret . '&issuer=Xentral&algorithm=SHA1&digits=6&period=30';
+ $query = "otpauth://totp/{$label}?secret=" . $secret . '&issuer=OpenXE&algorithm=SHA1&digits=6&period=30';
return $this->barcodeService->createQrCode($query);
}
diff --git a/cronjobs/artikeluebertragen.php b/cronjobs/artikeluebertragen.php
index 88e7391f..d23f55f5 100644
--- a/cronjobs/artikeluebertragen.php
+++ b/cronjobs/artikeluebertragen.php
@@ -1,198 +1,270 @@
Container->get('Logger');
-class app_t {
- var $DB;
- var $erp;
- var $user;
- var $remote;
+if (file_exists(dirname(__DIR__) . '/www/lib/class.erpapi_custom.php') && !class_exists('erpAPICustom')) {
+ include_once dirname(__DIR__) . '/www/lib/class.erpapi_custom.php';
}
-*/
-//ENDE
-if(file_exists(dirname(__DIR__).'/www/lib/class.erpapi_custom.php') && !class_exists('erpAPICustom')){
- include_once dirname(__DIR__) . '/www/lib/class.erpapi_custom.php';
+if (empty($app->Conf)) {
+ $conf = new Config();
+ $app->Conf = $conf;
}
-if(empty($app->Conf)) {
- $conf = new Config();
- $app->Conf = $conf;
+if (empty($app->DB) || empty($app->DB->connection)) {
+ $app->DB = new DB($app->Conf->WFdbhost, $app->Conf->WFdbname, $app->Conf->WFdbuser, $app->Conf->WFdbpass, null, $app->Conf->WFdbport);
}
-if(empty($app->DB) || empty($app->DB->connection)) {
- $app->DB = new DB($app->Conf->WFdbhost, $app->Conf->WFdbname, $app->Conf->WFdbuser, $app->Conf->WFdbpass, null, $app->Conf->WFdbport);
-}
-if(!isset($app->erp) || !$app->erp) {
- if (class_exists('erpAPICustom')) {
- $erp = new erpAPICustom($app);
- } else {
- $erp = new erpAPI($app);
- }
-//$remote = new Remote($app);
- $app->erp = $erp;
-//$app->remote= $remote;
-}
-if(empty($app->remote)) {
- if(is_file(dirname(__DIR__) . '/www/lib/class.remote_custom.php')) {
- if(!class_exists('RemoteCustom')){
- require_once dirname(__DIR__) . '/www/lib/class.remote_custom.php';
+if (!isset($app->erp) || !$app->erp) {
+ if (class_exists('erpAPICustom')) {
+ $erp = new erpAPICustom($app);
+ } else {
+ $erp = new erpAPI($app);
+ }
+ $app->erp = $erp;
+}
+if (empty($app->remote)) {
+ if (is_file(dirname(__DIR__) . '/www/lib/class.remote_custom.php')) {
+ if (!class_exists('RemoteCustom')) {
+ require_once dirname(__DIR__) . '/www/lib/class.remote_custom.php';
+ }
+ $app->remote = new RemoteCustom($app);
+ } else {
+ $app->remote = new Remote($app);
}
- $app->remote = new RemoteCustom($app);
- }
- else {
- $app->remote = new Remote($app);
- }
}
-$app->erp->LogFile('Cronjob Artikeluebertragung Start');
+$logger->debug(
+ 'Start'
+);
$app->DB->Update(
- "UPDATE `prozessstarter`
+ "UPDATE `prozessstarter`
SET `mutexcounter` = `mutexcounter` + 1
WHERE `mutex` = 1 AND (`parameter` = 'artikeluebertragen') AND `aktiv` = 1"
);
-if($app->DB->Select("SELECT `mutex` FROM `prozessstarter` WHERE (`parameter` = 'artikeluebertragen') LIMIT 1") == 1){
- return;
+if ($app->DB->Select("SELECT `mutex` FROM `prozessstarter` WHERE (`parameter` = 'artikeluebertragen') LIMIT 1") == 1) {
+ $logger->debug(
+ 'Läuft bereits'
+ );
+ return;
}
$articles = $app->DB->SelectArr(
- 'SELECT `id`,`shop`,`artikel` FROM `shopexport_artikeluebertragen_check` ORDER BY `id` LIMIT 10'
+ 'SELECT `id`,`shop`,`artikel` FROM `shopexport_artikeluebertragen_check` ORDER BY `id`'
);
-if(!empty($articles)) {
- /** @var Shopexport $objShopexport */
- $objShopexport = $app->loadModule('shopexport');
- if($objShopexport !== null && method_exists($objShopexport, 'addChangedArticles')) {
- $objShopexport->addChangedArticles();
- }
+if (!empty($articles)) {
+ /** @var Shopexport $objShopexport */
+ $objShopexport = $app->loadModule('shopexport');
+ if ($objShopexport !== null && method_exists($objShopexport, 'addChangedArticles')) {
+ $objShopexport->addChangedArticles();
+ }
}
+$logger->debug(
+ 'Prepare',
+ [
+ 'articles' => $articles
+ ]
+);
+
$anzChecked = [];
$anzChanged = [];
$lastids = [];
-while(!empty($articles)) {
- foreach($articles as $article) {
- if(empty($anzChanged[$article['shop']])) {
- $anzChanged[$article['shop']] = 0;
+while (!empty($articles)) {
+ foreach ($articles as $article) {
+ if (empty($anzChanged[$article['shop']])) {
+ $anzChanged[$article['shop']] = 0;
+ }
+ if (empty($anzChecked[$article['shop']])) {
+ $anzChecked[$article['shop']] = 0;
+ }
+ if (!isset($lastids[$article['shop']])) {
+ $lastids[$article['shop']] = (int) $app->erp->GetKonfiguration(
+ 'shopexport_artikeluebertragen_check_lastid_' . $article['shop']
+ );
+ }
+ $changed = $objShopexport->hasArticleHashChanged($article['artikel'], $article['shop']);
+ if ($changed['changed']) {
+ $app->DB->Insert(
+ sprintf(
+ 'INSERT INTO `shopexport_artikeluebertragen` (`artikel`, `shop`, `check_nr`) VALUES (%d, %d, %d)',
+ $article['artikel'], $article['shop'], $lastids[$article['shop']]
+ )
+ );
+ $anzChanged[$article['shop']]++;
+ }
+ $anzChecked[$article['shop']]++;
+ $app->DB->Delete(
+ sprintf(
+ 'DELETE FROM `shopexport_artikeluebertragen_check` WHERE `id` = %d',
+ $article['id']
+ )
+ );
+ $app->DB->Update(
+ sprintf(
+ "UPDATE `shopexport` SET `autosendarticle_last` = NOW() WHERE `id` = %d",
+ $article['shop']
+ )
+ );
}
- if(empty($anzChecked[$article['shop']])) {
- $anzChecked[$article['shop']] = 0;
+ $app->erp->SetKonfigurationValue(
+ 'shopexport_artikeluebertragen_check_changed_' . $article['shop'],
+ $anzChanged[$article['shop']]
+ );
+ $app->erp->SetKonfigurationValue(
+ 'shopexport_artikeluebertragen_check_checked_' . $article['shop'],
+ $anzChecked[$article['shop']]
+ );
+ if (method_exists($app->erp, 'canRunCronjob') && !$app->erp->canRunCronjob(['artikeluebertragen'])) {
+ $logger->debug(
+ '!canRunCronjob'
+ );
+ return;
}
- if(!isset($lastids[$article['shop']])) {
- $lastids[$article['shop']] = (int)$app->erp->GetKonfiguration(
- 'shopexport_artikeluebertragen_check_lastid_' . $article['shop']
- );
- }
- $changed = $objShopexport->hasArticleHashChanged($article['artikel'], $article['shop']);
- if($changed['changed']) {
- $app->DB->Insert(
- sprintf(
- 'INSERT INTO `shopexport_artikeluebertragen` (`artikel`, `shop`, `check_nr`) VALUES (%d, %d, %d)',
- $article['artikel'], $article['shop'], $lastids[$article['shop']]
- )
- );
- $anzChanged[$article['shop']]++;
- }
- $anzChecked[$article['shop']]++;
- $app->DB->Delete(
- sprintf(
- 'DELETE FROM `shopexport_artikeluebertragen_check` WHERE `id` = %d',
- $article['id']
- )
+ $articles = $app->DB->SelectArr(
+ 'SELECT `id`,`shop`,`artikel` FROM `shopexport_artikeluebertragen_check` ORDER BY `id` LIMIT 10'
);
$app->DB->Update(
- sprintf(
- "UPDATE `shopexport` SET `autosendarticle_last` = NOW() WHERE `id` = %d",
- $article['shop']
- )
- );
- }
- $app->erp->SetKonfigurationValue(
- 'shopexport_artikeluebertragen_check_changed_'.$article['shop'],
- $anzChanged[$article['shop']]
- );
- $app->erp->SetKonfigurationValue(
- 'shopexport_artikeluebertragen_check_checked_'.$article['shop'],
- $anzChecked[$article['shop']]
- );
- if(method_exists($app->erp, 'canRunCronjob') && !$app->erp->canRunCronjob(['artikeluebertragen'])) {
- return;
- }
- $articles = $app->DB->SelectArr(
- 'SELECT `id`,`shop`,`artikel` FROM `shopexport_artikeluebertragen_check` ORDER BY `id` LIMIT 10'
- );
- $app->DB->Update(
- "UPDATE `prozessstarter`
+ "UPDATE `prozessstarter`
SET `letzteausfuerhung`=NOW(), `mutex` = 1,`mutexcounter`=0
WHERE `parameter` = 'artikeluebertragen'"
- );
+ );
}
$check = $app->DB->Select('SELECT COUNT(`id`) FROM `shopexport_artikeluebertragen`');
$app->DB->Update(
- "UPDATE `prozessstarter`
+ "UPDATE `prozessstarter`
SET `letzteausfuerhung`=NOW(), `mutex` = 1,`mutexcounter`=0
WHERE `parameter` = 'artikeluebertragen'"
);
-while($check > 0) {
- $shopartikel = $app->DB->Query(
- "SELECT `id`,`shop`,`artikel`,`check_nr` FROM `shopexport_artikeluebertragen` ORDER BY `id` LIMIT 10"
- );
- if(!empty($shopartikel)) {
- $anz = 0;
- while ($row = $app->DB->Fetch_Assoc($shopartikel)) {
- if(!isset($lastids[$row['shop']])) {
- $lastids[$row['shop']] = (int)$app->erp->GetKonfiguration('shopexport_artikeluebertragen_check_lastid_' . $row['shop']);
- }
- $anz++;
- try {
- $app->remote->RemoteSendArticleList($row['shop'], array($row['artikel']));
- $app->erp->LagerSync($row['artikel'], true);
- }
- catch (Execption $exception) {
- $app->erp->LogFile($app->DB->real_escape_string($exception->getMessage()));
- }
- $app->DB->Delete(
- sprintf(
- 'DELETE FROM `shopexport_artikeluebertragen` WHERE `id`= %d LIMIT 1',
- $row['id']
- )
- );
+/*
+while ($check > 0) {
+ $shopartikel = $app->DB->Query(
+ "SELECT `id`,`shop`,`artikel`,`check_nr` FROM `shopexport_artikeluebertragen` ORDER BY `id` LIMIT 10"
+ );
+ if (!empty($shopartikel)) {
+ $anz = 0;
+ while ($row = $app->DB->Fetch_Assoc($shopartikel)) {
+ if (!isset($lastids[$row['shop']])) {
+ $lastids[$row['shop']] = (int) $app->erp->GetKonfiguration('shopexport_artikeluebertragen_check_lastid_' . $row['shop']);
+ }
- if(!empty($row['check_nr']) && $row['check_nr'] == $lastids[$row['shop']]) {
- $transfered = 1+(int)$app->erp->GetKonfiguration('shopexport_artikeluebertragen_check_transfered_'.$row['shop']);
- $app->erp->SetKonfigurationValue('shopexport_artikeluebertragen_check_transfered_'.$row['shop'], $transfered);
- }
+ $anz++;
+ try {
+ $app->remote->RemoteSendArticleList($row['shop'], array($row['artikel']));
+ $app->erp->LagerSync($row['artikel'], true);
+ } catch (Execption $exception) {
+ $app->erp->LogFile($app->DB->real_escape_string($exception->getMessage()));
+ }
+ $app->DB->Delete(
+ sprintf(
+ 'DELETE FROM `shopexport_artikeluebertragen` WHERE `id`= %d LIMIT 1',
+ $row['id']
+ )
+ );
- $app->DB->Update(
- "UPDATE `prozessstarter`
+ if (!empty($row['check_nr']) && $row['check_nr'] == $lastids[$row['shop']]) {
+ $transfered = 1 + (int) $app->erp->GetKonfiguration('shopexport_artikeluebertragen_check_transfered_' . $row['shop']);
+ $app->erp->SetKonfigurationValue('shopexport_artikeluebertragen_check_transfered_' . $row['shop'], $transfered);
+ }
+
+ $app->DB->Update(
+ "UPDATE `prozessstarter`
SET `letzteausfuerhung`=NOW(), `mutex` = 1,`mutexcounter`=0
WHERE `parameter` = 'artikeluebertragen'"
- );
+ );
+ }
+
+ $app->DB->free($shopartikel);
}
- $app->DB->free($shopartikel);
- }
+ if (method_exists($app->erp, 'canRunCronjob') && !$app->erp->canRunCronjob(['artikeluebertragen'])) {
+ return;
+ }
- if(method_exists($app->erp, 'canRunCronjob') && !$app->erp->canRunCronjob(['artikeluebertragen'])) {
- return;
- }
+ $check = $app->DB->Select('SELECT COUNT(`id`) FROM `shopexport_artikeluebertragen`');
+}*/
- //sleep(20); // das performance nicht total spinnt
- $check = $app->DB->Select('SELECT COUNT(`id`) FROM `shopexport_artikeluebertragen`');
+
+$sql = "SELECT DISTINCT `shop`, shopexport.`bezeichnung` FROM `shopexport_artikeluebertragen` INNER JOIN shopexport ON shopexport.id = `shop`";
+$shops_to_transmit = $app->DB->SelectArr($sql);
+
+//$app->erp->LogFile('Cronjob artikeluebertragen '.(!empty($shops_to_transmit)?count($shops_to_transmit):0)." shops", print_r($shops_to_transmit, true));
+$logger->debug(
+ '{count} Shops',
+ [
+ 'count' => (!empty($shops_to_transmit)?count($shops_to_transmit):0),
+ 'shops_to_transmit' => $shops_to_transmit
+ ]
+);
+
+foreach ($shops_to_transmit as $shop_to_transmit) {
+ $sql = "SELECT `artikel` FROM `shopexport_artikeluebertragen` WHERE `shop` = '".$shop_to_transmit['shop']."'";
+ $articles_to_transmit = $app->DB->SelectArr($sql);
+
+ $logger->debug(
+ '{bezeichnung} (Shop {shop_to_transmit}) {count} Artikel',
+ [
+ 'shop_to_transmit' => $shop_to_transmit['shop'],
+ 'bezeichnung' => $shop_to_transmit['bezeichnung'],
+ 'count' => (!empty($articles_to_transmit)?count($articles_to_transmit):0),
+ 'articles_to_transmit' => $articles_to_transmit
+ ]
+ );
+
+ if (!empty($articles_to_transmit)) {
+
+ $article_ids_to_transmit = array_column($articles_to_transmit, 'artikel');
+
+ try {
+ $result = $app->remote->RemoteSendArticleList($shop_to_transmit['shop'], $article_ids_to_transmit); // Expected result is array $articles_to_transmit, field status contains transmission status
+ } catch (Execption $exception) {
+ $logger->error(
+ 'Fehler {bezeichnung} (Shop {shop_to_transmit}) {count} Artikel',
+ [
+ 'shop_to_transmit' => $shop_to_transmit['shop'],
+ 'bezeichnung' => $shop_to_transmit['bezeichnung'],
+ 'count' => (!empty($articles_to_transmit)?count($articles_to_transmit):0),
+ 'exception' => $exception
+ ]
+ );
+ }
+
+ $logger->debug(
+ 'Ende {bezeichnung} (Shop {shop_to_transmit}) {count} Artikel',
+ [
+ 'shop_to_transmit' => $shop_to_transmit['shop'],
+ 'bezeichnung' => $shop_to_transmit['bezeichnung'],
+ 'count' => (!empty($articles_to_transmit)?count($articles_to_transmit):0),
+ 'result' => $result
+ ]
+ );
+
+ // See description of return format in function class.remote.php -> RemoteSendArticleList()
+ foreach ($result['articlelist'] as $article) {
+ $app->DB->Delete(
+ sprintf(
+ 'DELETE FROM `shopexport_artikeluebertragen` WHERE `artikel`= %d AND `shop` = %d',
+ $article['artikel'],
+ $shop_to_transmit['shop']
+ )
+ );
+ $app->erp->LagerSync($article['artikel'], true);
+ }
+ } else {
+
+ }
}
+
+$logger->debug(
+ 'Ende'
+);
+
$app->DB->Update(
- "UPDATE `prozessstarter`
+ "UPDATE `prozessstarter`
SET `letzteausfuerhung`= NOW(), `mutex` = 0,`mutexcounter`=0
WHERE `parameter` = 'artikeluebertragen'"
);
-
-
diff --git a/cronjobs/cleaner.php b/cronjobs/cleaner.php
index 4c0759e0..85c4a1ff 100644
--- a/cronjobs/cleaner.php
+++ b/cronjobs/cleaner.php
@@ -148,8 +148,7 @@ $tables = [
'templatemessage',
'shopimport_auftraege',
'versandzentrum_log',
- 'api_request_response_log',
- 'shopimport_amazon_fees',
+ 'api_request_response_log'
];
$minMemoryMb = 1;
$minMemory = $minMemoryMb * 1024 * 1024;
@@ -623,34 +622,11 @@ if($shopExportLogCleanerActive && $tage > 0) {
$shopExportLogCleanerActive = $app->erp->Firmendaten('cleaner_shopexportlog');
$tage = (int)$app->erp->Firmendaten('cleaner_shopexportlog_tage');
-$isToDelete = !empty($tableSchemaByTables['shopimport_amazon_fees'])
- && !empty($tableSchemaByTables['shopimport_amazon_fees']['todelete']);
-if((!$shopExportLogCleanerActive || $tage <= 0 || $tage > 30) && $isToDelete) {
- $shopExportLogCleanerActive = true;
- if($tage <= 0 || $tage > 30) {
- $tage = 30;
- }
-}
+
if($shopExportLogCleanerActive && $tage > 0) {
if($tage < 30) {
$tage = 30;
}
- $app->DB->Delete(
- sprintf(
- "DELETE FROM `shopimport_amazon_fees`
- WHERE DATE_SUB(NOW(), INTERVAL %d DAY) >= `zeitstempel` OR `zeitstempel` = '0000-00-00 00:00:00'",
- $tage
- )
- );
- $affectedRows = $app->DB->affected_rows();
- if(!empty($tableSchemaByTables['shopimport_amazon_fees'])
- && ($tableSchemaByTables['shopimport_amazon_fees']['todelete'] > 0)) {
- $tableSchemaByTables['shopimport_amazon_fees']['todelete'] -= $affectedRows;
- }
- if($affectedRows > 0 && !empty($optimize['shopimport_amazon_fees'])) {
- $app->DB->Query('OPTIMIZE TABLE `shopimport_amazon_fees`');
- unset($optimize['shopimport_amazon_fees']);
- }
$app->DB->Update(
"UPDATE prozessstarter SET letzteausfuerhung=NOW(),mutex=1,mutexcounter=0 WHERE parameter = 'cleaner' AND aktiv = 1"
);
diff --git a/cronjobs/lagerzahlen.php b/cronjobs/lagerzahlen.php
index 4466331e..bd50830c 100644
--- a/cronjobs/lagerzahlen.php
+++ b/cronjobs/lagerzahlen.php
@@ -1,38 +1,37 @@
Conf)) {
- $conf = new Config();
- $app->Conf = $conf;
+if (empty($app->Conf)) {
+ $conf = new Config();
+ $app->Conf = $conf;
}
-if(empty($app->DB)) {
- $app->DB = new DB($app->Conf->WFdbhost,$app->Conf->WFdbname,$app->Conf->WFdbuser,$app->Conf->WFdbpass,null,$app->Conf->WFdbport);
+if (empty($app->DB)) {
+ $app->DB = new DB($app->Conf->WFdbhost, $app->Conf->WFdbname, $app->Conf->WFdbuser, $app->Conf->WFdbpass, null, $app->Conf->WFdbport);
}
-if(empty($app->erp)) {
- if(class_exists('erpAPICustom')) {
- $erp = new erpAPICustom($app);
- }
- else {
- $erp = new erpAPI($app);
- }
- $app->erp = $erp;
-}
-if(empty($app->remote)) {
- if(is_file(dirname(__DIR__) . '/www/lib/class.remote_custom.php')){
- if(!class_exists('RemoteCustom')) {
- require_once dirname(__DIR__) . '/www/lib/class.remote_custom.php';
+if (empty($app->erp)) {
+ if (class_exists('erpAPICustom')) {
+ $erp = new erpAPICustom($app);
+ } else {
+ $erp = new erpAPI($app);
+ }
+ $app->erp = $erp;
+}
+if (empty($app->remote)) {
+ if (is_file(dirname(__DIR__) . '/www/lib/class.remote_custom.php')) {
+ if (!class_exists('RemoteCustom')) {
+ require_once dirname(__DIR__) . '/www/lib/class.remote_custom.php';
+ }
+ $app->remote = new RemoteCustom($app);
+ } else {
+ $app->remote = new Remote($app);
}
- $app->remote = new RemoteCustom($app);
- }
- else {
- $app->remote = new Remote($app);
- }
}
$app->erp->LogFile("Lagerzahlen-Synchronisation Start");
@@ -40,34 +39,33 @@ $app->erp->LogFile("Lagerzahlen-Synchronisation Start");
$firmendatenid = $app->DB->Select("SELECT MAX(id) FROM firmendaten LIMIT 1");
- $app->DB->Update(
+$app->DB->Update(
"UPDATE `prozessstarter`
SET `mutexcounter` = `mutexcounter` + 1
WHERE `mutex` = 1 AND `parameter` = 'lagerzahlen' AND `aktiv` = 1"
- );
- if(!$app->DB->Select(
+);
+if (!$app->DB->Select(
"SELECT `id` FROM `prozessstarter` WHERE `mutex` = 0 AND `parameter` = 'lagerzahlen' AND `aktiv` = 1"
- )) {
+)) {
+ $app->erp->LogFile("Lagerzahlen-Synchronisation Ende: Prozessstarter-Mutex nicht bereit");
return;
- }
-
- $shops = $app->DB->SelectArr('SELECT * FROM `shopexport` WHERE `aktiv` = 1');
- if(empty($shops)) {
+}
+$shops = $app->DB->SelectArr('SELECT * FROM `shopexport` WHERE `aktiv` = 1');
+if (empty($shops)) {
$app->erp->LogFile("Lagerzahlen-Synchronisation Ende: Keine aktiven Shops");
-
return;
- }
- $shopByIds = [];
- foreach($shops as $shop) {
+}
+$shopByIds = [];
+foreach ($shops as $shop) {
$shopByIds[$shop['id']] = $shop;
- }
- $shopIds = array_keys($shopByIds);
- $shopIdsStr = implode(',', $shopIds);
- $hours = 12;
- $hoursShop = 48;
- $lagerartikel = $app->DB->SelectFirstCols(
- "SELECT a.id
+}
+$shopIds = array_keys($shopByIds);
+$shopIdsStr = implode(',', $shopIds);
+$hours = 12;
+$hoursShop = 48;
+$lagerartikel = $app->DB->SelectFirstCols(
+ "SELECT a.id
FROM `artikel` AS `a`
LEFT JOIN (
SELECT ao2.artikel, 1 AS `autolagerlampe`,
@@ -97,91 +95,86 @@ $firmendatenid = $app->DB->Select("SELECT MAX(id) FROM firmendaten LIMIT 1");
ORDER BY a.cache_lagerplatzinhaltmenge = -999 DESC,
ao.cache_reseted DESC,
a.laststorage_sync"
- );
-
- if(empty($lagerartikel)) {
+);
+if (empty($lagerartikel)) {
$app->erp->LogFile("Lagerzahlen-Synchronisation Ende: Keine fälligen Artikel");
-
return;
- }
+}
- try {
+try {
$r = new ReflectionMethod($app->erp, 'LagerSync');
$params = $r->getParameters();
$anzargs = count($params);
- }
- catch(Exception $e) {
+} catch (Exception $e) {
$anzargs = 2;
- }
+}
- $clagerartikel = $lagerartikel?count($lagerartikel):0;
- $app->erp->LogFile('Lagerzahlen-Synchronisation, Artikel gesamt: '.$clagerartikel);
- foreach($lagerartikel as $ij => $articleId) {
+$clagerartikel = $lagerartikel ? count($lagerartikel) : 0;
+$app->erp->LogFile('Lagerzahlen-Synchronisation, Artikel gesamt: ' . $clagerartikel);
+foreach ($lagerartikel as $articleCounter => $articleId) {
$app->DB->Update(
- "UPDATE `prozessstarter`
+ "UPDATE `prozessstarter`
SET `mutex` = 1 , `mutexcounter` = 0, `letzteausfuerhung` = NOW()
WHERE `parameter` = 'lagerzahlen' AND `aktiv` = 1"
);
try {
- if($anzargs > 2){
- $message .= $app->erp->LagerSync($articleId, false, $shopByIds); // 2nd parameter is print_echo -> prints via echo to logfile (big print_r)
- }else{
- $message .= $app->erp->LagerSync($articleId, false);
- }
+ if ($anzargs > 2) {
+ $message .= $app->erp->LagerSync($articleId, false, $shopByIds); // 2nd parameter is print_echo -> prints via echo to logfile (big print_r)
+ } else {
+ $message .= $app->erp->LagerSync($articleId, false);
+ }
+ } catch (Exception $exception) {
+ $message .= ' ' . $exception->getMessage();
}
- catch (Exception $exception) {
- $message .= ' ' . $exception->getMessage();
+ if ($message != '') {
+ $message .= ' ';
}
- if($message!='') {
- $message .=' ';
+ if ($articleCounter % 10 === 0 && method_exists($app->erp, 'canRunCronjob') && !$app->erp->canRunCronjob(['lagerzahlen'])) {
+ $app->DB->Update(
+ "UPDATE `prozessstarter`
+ SET `mutex` = 0 , `mutexcounter` = 0, `letzteausfuerhung` = NOW()
+ WHERE `parameter` = 'lagerzahlen' AND `aktiv` = 1"
+ );
+ $app->erp->LogFile("Lagerzahlen-Synchronisation Ende: lagerzahlen-Job kann nicht geladen werden");
+ return;
}
- if($ij % 10 === 0 && method_exists($app->erp, 'canRunCronjob')
- && !$app->erp->canRunCronjob(['lagerzahlen'])) {
- $app->DB->Update(
- "UPDATE `prozessstarter`
- SET `mutex` = 0 , `mutexcounter` = 0, `letzteausfuerhung` = NOW()
- WHERE `parameter` = 'lagerzahlen' AND `aktiv` = 1"
- );
- return;
- }
- usleep(10000);
- }
- $app->DB->Update(
+// $app->erp->LogFile("Lagerzahlen-Synchronisation: Warte 10 Sekunden");
+// usleep(10000);
+}
+$app->DB->Update(
"UPDATE `prozessstarter`
SET `mutex` = 0 , `mutexcounter` = 0, `letzteausfuerhung` = NOW()
WHERE `parameter` = 'lagerzahlen' AND `aktiv` = 1"
- );
- if($message !='' && $erp->Firmendaten('systemmailsabschalten') == 0 && $erp->GetFirmaMail()!='') {
+);
+if ($message != '' && $erp->Firmendaten('systemmailsabschalten') == 0 && $erp->GetFirmaMail() != '') {
try {
- if($erp->Firmendaten('systemmailsempfaenger') != ''){
- $erp->MailSend(
- $erp->GetFirmaMail(),
- $erp->GetFirmaName(),
- $erp->Firmendaten('systemmailsempfaenger'),
- 'Lagerverwaltung',
- 'Systemmeldung: Auto Update Lagerlampen',
- $message
- );
-
- }else{
- if($erp->GetFirmaBCC1() != ''){
- $erp->MailSend(
- $erp->GetFirmaMail(),
- $erp->GetFirmaName(),
- $erp->GetFirmaBCC1(),
- 'Lagerverwaltung',
- 'Systemmeldung: Auto Update Lagerlampen',
- $message
- );
+ if ($erp->Firmendaten('systemmailsempfaenger') != '') {
+ $erp->MailSend(
+ $erp->GetFirmaMail(),
+ $erp->GetFirmaName(),
+ $erp->Firmendaten('systemmailsempfaenger'),
+ 'Lagerverwaltung',
+ 'Systemmeldung: Auto Update Lagerlampen',
+ $message
+ );
+ } else {
+ if ($erp->GetFirmaBCC1() != '') {
+ $erp->MailSend(
+ $erp->GetFirmaMail(),
+ $erp->GetFirmaName(),
+ $erp->GetFirmaBCC1(),
+ 'Lagerverwaltung',
+ 'Systemmeldung: Auto Update Lagerlampen',
+ $message
+ );
+ }
}
- }
+ } catch (Exception $exception) {
+ $app->erp->LogFile("Lagerzahlen-Synchronisation Exception:" . $app->DB->real_escape_string($exception->getMessage()));
}
- catch (Exception $exception) {
- $app->erp->LogFile("Lagerzahlen-Synchronisation Exception:".$app->DB->real_escape_string($exception->getMessage()));
- }
- }
+}
- $app->erp->LogFile("Lagerzahlen-Synchronisation Ende");
+$app->erp->LogFile("Lagerzahlen-Synchronisation Ende");
diff --git a/cronjobs/shop_rueckmeldungen.php b/cronjobs/shop_rueckmeldungen.php
index 0b01845a..3ec4dc97 100644
--- a/cronjobs/shop_rueckmeldungen.php
+++ b/cronjobs/shop_rueckmeldungen.php
@@ -1,392 +1,388 @@
0) {
- $aes = '2';
+$phpversion = (String) phpversion();
+if ($phpversion[0] == '7' && (int) $phpversion[2] > 0) {
+ $aes = '2';
}
-if($aes == 2 && is_file(dirname(__DIR__).'/www/lib/class.aes2.php')) {
- include_once dirname(__DIR__).'/www/lib/class.aes2.php';
-}
-else{
- include_once dirname(__DIR__) . '/www/lib/class.aes.php';
+if ($aes == 2 && is_file(dirname(__DIR__) . '/www/lib/class.aes2.php')) {
+ include_once dirname(__DIR__) . '/www/lib/class.aes2.php';
+} else {
+ include_once dirname(__DIR__) . '/www/lib/class.aes.php';
}
-$classes = array('briefpapier','lieferschein','auftrag','anfrage','gutschrift','bestellung','rechnung','mahnwesen');
-foreach($classes as $class)
-{
- if(file_exists(dirname(__DIR__).'/www/lib/dokumente/class.'.$class.'_custom.php'))
- {
- include_once dirname(__DIR__).'/www/lib/dokumente/class.'.$class.'_custom.php';
- }
- elseif(file_exists(dirname(__DIR__).'/www/lib/dokumente/class.'.$class.'.php')) {
- include_once dirname(__DIR__).'/www/lib/dokumente/class.'.$class.'.php';
- }
+$classes = array('briefpapier', 'lieferschein', 'auftrag', 'anfrage', 'gutschrift', 'bestellung', 'rechnung', 'mahnwesen');
+foreach ($classes as $class) {
+ if (file_exists(dirname(__DIR__) . '/www/lib/dokumente/class.' . $class . '_custom.php')) {
+ include_once dirname(__DIR__) . '/www/lib/dokumente/class.' . $class . '_custom.php';
+ } elseif (file_exists(dirname(__DIR__) . '/www/lib/dokumente/class.' . $class . '.php')) {
+ include_once dirname(__DIR__) . '/www/lib/dokumente/class.' . $class . '.php';
+ }
}
/*
-include_once(dirname(__FILE__)."/../www/lib/dokumente/class.briefpapier.php");
-include_once(dirname(__FILE__)."/../www/lib/dokumente/class.lieferschein.php");
-include_once(dirname(__FILE__)."/../www/lib/dokumente/class.auftrag.php");
-include_once(dirname(__FILE__)."/../www/lib/dokumente/class.angebot.php");
-if(file_exists(dirname(__FILE__)."/../www/lib/dokumente/class.anfrage.php"))include_once(dirname(__FILE__)."/../www/lib/dokumente/class.anfrage.php");
-include_once(dirname(__FILE__)."/../www/lib/dokumente/class.gutschrift.php");
-include_once(dirname(__FILE__)."/../www/lib/dokumente/class.bestellung.php");
-include_once(dirname(__FILE__)."/../www/lib/dokumente/class.rechnung.php");
-include_once(dirname(__FILE__)."/../www/lib/dokumente/class.mahnwesen.php");*/
-include_once dirname(__DIR__).'/phpwf/plugins/class.string.php';
-if(!class_exists('app_t2'))
-{
- class app_t2 extends ApplicationCore {
- var $DB;
- var $erp;
- var $User;
- var $mail;
- var $remote;
- var $Secure;
-function GetLandLang($isocode)
-{
- $flipped = array_flip($this->GetLaender());
- if(isset($flipped[$isocode]))
- $land = $flipped[$isocode];
- else {
- $land = 'unkown';
- }
- return $land;
-}
+ include_once(dirname(__FILE__)."/../www/lib/dokumente/class.briefpapier.php");
+ include_once(dirname(__FILE__)."/../www/lib/dokumente/class.lieferschein.php");
+ include_once(dirname(__FILE__)."/../www/lib/dokumente/class.auftrag.php");
+ include_once(dirname(__FILE__)."/../www/lib/dokumente/class.angebot.php");
+ if(file_exists(dirname(__FILE__)."/../www/lib/dokumente/class.anfrage.php"))include_once(dirname(__FILE__)."/../www/lib/dokumente/class.anfrage.php");
+ include_once(dirname(__FILE__)."/../www/lib/dokumente/class.gutschrift.php");
+ include_once(dirname(__FILE__)."/../www/lib/dokumente/class.bestellung.php");
+ include_once(dirname(__FILE__)."/../www/lib/dokumente/class.rechnung.php");
+ include_once(dirname(__FILE__)."/../www/lib/dokumente/class.mahnwesen.php"); */
+include_once dirname(__DIR__) . '/phpwf/plugins/class.string.php';
+if (!class_exists('app_t2')) {
+
+ class app_t2 extends ApplicationCore {
+
+ var $DB;
+ var $erp;
+ var $User;
+ var $mail;
+ var $remote;
+ var $Secure;
+
+ function GetLandLang($isocode) {
+ $flipped = array_flip($this->GetLaender());
+ if (isset($flipped[$isocode]))
+ $land = $flipped[$isocode];
+ else {
+ $land = 'unkown';
+ }
+ return $land;
+ }
+
+ 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;
+ }
+ }
-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;
-}
- }
}
//ENDE
- if(empty($app) || !class_exists('ApplicationCore') || !($app instanceof ApplicationCore)) {
+if (empty($app) || !class_exists('ApplicationCore') || !($app instanceof ApplicationCore)) {
$app = new app_t2();
- }
- if(empty($app->Conf)){
+}
+if (empty($app->Conf)) {
$conf = new Config();
$app->Conf = $conf;
- }
- if(empty($app->DB)){
+}
+if (empty($app->DB)) {
$app->DB = new DB($app->Conf->WFdbhost, $app->Conf->WFdbname, $app->Conf->WFdbuser, $app->Conf->WFdbpass, null, $app->Conf->WFdbport);
- }
- if(empty($app->erp)){
+}
+if (empty($app->erp)) {
$erp = new erpAPI($app);
$app->erp = $erp;
- }
- $app->String = new WawiString();
- if(empty($app->remote)){
- if(is_file(dirname(__DIR__) . '/www/lib/class.remote_custom.php')){
- require_once dirname(__DIR__) . '/www/lib/class.remote_custom.php';
- $app->remote = new RemoteCustom($app);
+}
+$app->String = new WawiString();
+if (empty($app->remote)) {
+ if (is_file(dirname(__DIR__) . '/www/lib/class.remote_custom.php')) {
+ require_once dirname(__DIR__) . '/www/lib/class.remote_custom.php';
+ $app->remote = new RemoteCustom($app);
+ } else {
+ $app->remote = new Remote($app);
}
- else{
- $app->remote = new Remote($app);
- }
- }
- //$app->remote = new Remote($app);
- $app->Secure = new Secure($app);
- $app->User = new User($app);
- if(!defined('FPDF_FONTPATH')) {
- define('FPDF_FONTPATH',dirname(__DIR__).'/www/lib/pdf/font/');
- }
-
+}
+//$app->remote = new Remote($app);
+$app->Secure = new Secure($app);
+$app->User = new User($app);
+if (!defined('FPDF_FONTPATH')) {
+ define('FPDF_FONTPATH', dirname(__DIR__) . '/www/lib/pdf/font/');
+}
//ENDE
- const MAXIMUM_NUMBER_OF_TRIES = 10;
+const MAXIMUM_NUMBER_OF_TRIES = 10;
- $shops = $app->DB->SelectFirstCols(
- 'SELECT id FROM shopexport WHERE auftragabgleich = 1 AND aktiv = 1 AND demomodus <> 1 AND sendonlywithtracking = 0'
- );
- if(empty($shops)) {
+$shops = $app->DB->SelectFirstCols(
+ 'SELECT id FROM shopexport WHERE auftragabgleich = 1 AND aktiv = 1 AND demomodus <> 1 AND sendonlywithtracking = 0'
+);
+if (empty($shops)) {
return;
- }
- $app->DB->Update("UPDATE prozessstarter SET mutexcounter = mutexcounter + 1 WHERE mutex = 1 AND (parameter = 'shop_rueckmeldungen' ) AND aktiv = 1");
- if(!$app->DB->Select("SELECT id FROM prozessstarter WHERE mutex = 0 AND (parameter = 'shop_rueckmeldungen') AND aktiv = 1")) {
+}
+$app->DB->Update("UPDATE prozessstarter SET mutexcounter = mutexcounter + 1 WHERE mutex = 1 AND (parameter = 'shop_rueckmeldungen' ) AND aktiv = 1");
+if (!$app->DB->Select("SELECT id FROM prozessstarter WHERE mutex = 0 AND (parameter = 'shop_rueckmeldungen') AND aktiv = 1")) {
return;
- }
- $app->DB->Update("UPDATE prozessstarter SET mutex = 1 , mutexcounter = 0, letzteausfuerhung = now() WHERE (parameter = 'shop_rueckmeldungen' ) AND aktiv = 1");
+}
+$app->DB->Update("UPDATE prozessstarter SET mutex = 1 , mutexcounter = 0, letzteausfuerhung = now() WHERE (parameter = 'shop_rueckmeldungen' ) AND aktiv = 1");
- $subwhere = sprintf(' a.shop IN (%s) ', implode(',', $shops));
- $join = '';
- $where = '';
- $app->erp->RunHook('shop_rueckmeldung', 2, $join, $where);
+$subwhere = sprintf(' a.shop IN (%s) ', implode(',', $shops));
+$join = '';
+$where = '';
+$app->erp->RunHook('shop_rueckmeldung', 2, $join, $where);
$sql = "SELECT DISTINCT a.id, a.shop
FROM auftrag a
LEFT JOIN lieferschein l on l.auftragid = a.id
@@ -404,7 +400,7 @@ function GetLaender()
((pr.kommissionierverfahren = 'lieferschein' OR pr.kommissionierverfahren = 'rechnungsmail') AND isnull(v.id))
)
AND (ISNULL(a.shop_status_update_last_attempt_at) OR a.shop_status_update_last_attempt_at < DATE_SUB(NOW(), INTERVAL 4 HOUR))
- AND a.shop_status_update_attempt <= ".MAXIMUM_NUMBER_OF_TRIES."
+ AND a.shop_status_update_attempt <= " . MAXIMUM_NUMBER_OF_TRIES . "
$where
ORDER BY a.id, l.id DESC, v.id DESC
";
@@ -412,33 +408,33 @@ function GetLaender()
$auftraege = $app->DB->SelectArr($sql);
if(!empty($auftraege)) {
$app->DB->Update(
- "UPDATE prozessstarter
+ "UPDATE prozessstarter
SET mutex = 1 , mutexcounter = 0, letzteausfuerhung = now()
WHERE (parameter = 'shop_rueckmeldungen' ) AND aktiv = 1"
);
$auftragid = null;
$countRequests = 0;
- foreach($auftraege as $auftrag) {
- if($auftrag['id'] != $auftragid) {
- $countRequests++;
- $auftragid = $auftrag['id'];
- $app->remote->RemoteUpdateAuftrag($auftrag['shop'], $auftrag['id']);
- if($countRequests % 10 === 0) {
- $app->DB->Update(
- "UPDATE prozessstarter
+ foreach ($auftraege as $auftrag) {
+ if ($auftrag['id'] != $auftragid) {
+ $countRequests++;
+ $auftragid = $auftrag['id'];
+ $app->remote->RemoteUpdateAuftrag($auftrag['shop'], $auftrag['id']);
+ if ($countRequests % 10 === 0) {
+ $app->DB->Update(
+ "UPDATE prozessstarter
SET mutex = 1 , mutexcounter = 0, letzteausfuerhung = now()
WHERE parameter = 'shop_rueckmeldungen' AND aktiv = 1"
- );
+ );
+ }
}
- }
}
unset($auftraege);
- }
- $app->DB->Update("UPDATE prozessstarter SET mutex = 1 , mutexcounter = 0, letzteausfuerhung = now() WHERE (parameter = 'shop_rueckmeldungen' ) AND aktiv = 1");
+}
+$app->DB->Update("UPDATE prozessstarter SET mutex = 1 , mutexcounter = 0, letzteausfuerhung = now() WHERE (parameter = 'shop_rueckmeldungen' ) AND aktiv = 1");
- //Zahlungsstatus
- $query = $app->DB->Query(
- "SELECT a.id
+//Zahlungsstatus
+$query = $app->DB->Query(
+ "SELECT a.id
FROM `auftrag` AS `a`
LEFT JOIN `rechnung` AS `r1` ON r1.id = a.rechnungid
LEFT JOIN `rechnung` AS `r2` ON r2.auftragid = a.id
@@ -449,21 +445,22 @@ function GetLaender()
AND (r1.zahlungsstatus = 'bezahlt' OR r2.zahlungsstatus = 'bezahlt') AND DATEDIFF(NOW(), a.datum) <= 28
GROUP BY a.id
LIMIT 1000"
- );
- if($query) {
+);
+if ($query) {
$countRequests = 0;
- while($row = $app->DB->Fetch_Assoc($query)) {
- $app->erp->ImportUpdateZahlungsstatus($row['id']);
- $countRequests++;
- if($countRequests % 10 === 0) {
- $app->DB->Update(
- "UPDATE prozessstarter
+ while ($row = $app->DB->Fetch_Assoc($query)) {
+ $app->erp->ImportUpdateZahlungsstatus($row['id']);
+ $countRequests++;
+ if ($countRequests % 10 === 0) {
+ $app->DB->Update(
+ "UPDATE prozessstarter
SET mutex = 1 , mutexcounter = 0, letzteausfuerhung = now()
WHERE parameter = 'shop_rueckmeldungen' AND aktiv = 1"
- );
- }
+ );
+ }
}
$app->DB->free($query);
- }
+}
+
+$app->DB->Update("UPDATE prozessstarter SET mutex = 0, mutexcounter = 0, letzteausfuerhung = now() WHERE (parameter = 'shop_rueckmeldungen' ) AND aktiv = 1");
- $app->DB->Update("UPDATE prozessstarter SET mutex = 0, mutexcounter = 0, letzteausfuerhung = now() WHERE (parameter = 'shop_rueckmeldungen' ) AND aktiv = 1");
diff --git a/database/struktur.sql b/database/struktur.sql
index 03a1c1b1..ff2d9243 100755
--- a/database/struktur.sql
+++ b/database/struktur.sql
@@ -17869,6 +17869,23 @@ INSERT INTO `hook_register` (`hook_action`, `function`, `aktiv`, `position`, `ho
;
/* OpenXE 2024-02-03 für belegvorlagen */
+/* OpenXE 2024-08-11 für TOTP */
+INSERT INTO `hook`(`name`, `aktiv`, `parametercount`, `alias`, `description`) VALUES
+('login_password_check_otp', 1, 3, '', '');
+
+INSERT INTO `hook_register`(
+ `hook_action`, `function`, `aktiv`, `position`, `hook`, `module`, `module_parameter`) VALUES
+ ( 0, 'TOTPCheckLogin', 1, 1, (SELECT id FROM hook WHERE NAME = 'login_password_check_otp' LIMIT 1), 'totp', 0);
+/* OpenXE 2024-08-11 für TOTP */
+
+/* OpenXE 2024-08-11 für Smarty shopimport */
+INSERT INTO `hook` (`name`, `aktiv`, `parametercount`, `alias`, `description`) VALUES
+('ImportAuftragBefore', 1, 4, '', '');
+
+INSERT INTO `hook_register` (`hook_action`, `function`, `aktiv`, `position`, `hook`, `module`, `module_parameter`) VALUES
+(0, 'ImportAuftragBeforeHook', 1, 1, (SELECT id FROM hook WHERE name = 'ImportAuftragBefore' LIMIT 1), 'onlineshops', 0);
+/* OpenXE 2024-08-11 für Smarty shopimport */
+
/*
BelegPositionenButtons
diff --git a/phpwf/plugins/class.templateparser.php b/phpwf/plugins/class.templateparser.php
index 7875200a..8e1def44 100644
--- a/phpwf/plugins/class.templateparser.php
+++ b/phpwf/plugins/class.templateparser.php
@@ -620,7 +620,7 @@ class TemplateParser {
}
}
- if(count($this->VARARRAY)>0)
+ if(!empty($this->VARARRAY))
foreach($this->VARARRAY as $key=>$value)
{
if($key!="")
diff --git a/phpwf/plugins/class.yui.php b/phpwf/plugins/class.yui.php
index 9b17b1ec..cab4ae28 100644
--- a/phpwf/plugins/class.yui.php
+++ b/phpwf/plugins/class.yui.php
@@ -1938,8 +1938,17 @@ class YUI {
}
}
-
$this->app->erp->RunHook('AARLGPositionenSprache', 6, $module, $id, $artikel_id, $sprache, $bezeichnung, $beschreibung);
+
+ // OpenXE artikel_texte
+ $language = $this->app->erp->GetSpracheBeleg($module,$id);
+ $sql = "SELECT * FROM artikel_texte WHERE artikel = '".$artikel_id."' AND sprache = '".$language."'";
+ $uebersetzung = $this->app->DB->SelectRow($sql);
+ if ($uebersetzung) {
+ $bezeichnung = $uebersetzung['name'];
+ $beschreibung = $uebersetzung['beschreibung'];
+ }
+
$bezeichnung = $this->app->DB->real_escape_string($bezeichnung);
$beschreibung = $this->app->DB->real_escape_string($beschreibung);
@@ -5290,6 +5299,25 @@ url:strUrl, success:function(html){strReturn = html;}, async:false
)
";
}
+
+ if(isset($parameter['lieferadresse']) && !empty($parameter['lieferadresse'])) {
+ $paramsArray[] = "
+ (
+ a.id IN
+ (
+ SELECT
+ adresse
+ FROM
+ lieferadressen lfadr
+ WHERE
+ lfadr.name LIKE '%" . $parameter['lieferadresse'] . "%' OR
+ lfadr.strasse LIKE '%" . $parameter['lieferadresse'] . "%' OR
+ lfadr.plz LIKE '%" . $parameter['lieferadresse'] . "%' OR
+ lfadr.ort LIKE '%" . $parameter['lieferadresse'] . "%'
+ )
+ )
+ ";
+ }
if(isset($parameter['abteilung']) && !empty($parameter['abteilung'])) {
$paramsArray[] = "a.abteilung LIKE '%".$parameter['abteilung']."%' ";
@@ -14131,24 +14159,18 @@ source: "index.php?module=ajax&action=filter&filtername=' . $filter . $extendurl
$action = $this->app->Secure->GetGET("action");
$id = $this->app->Secure->GetGET("id");
if($id)$this->app->Tpl->Set('ID',$id);
- if ($speichern != "") {
- $titel = $this->app->Secure->GetPOST("titel");
- $beschreibung = $this->app->Secure->GetPOST("beschreibung");
- $stichwort = $this->app->Secure->GetPOST("stichwort");
- $this->app->Tpl->Set('TITLE', $titel);
- $this->app->Tpl->Set('BESCHREIBUNG', $beschreibung);
-
- if ($_FILES['upload']['tmp_name'] == "") {
- $this->app->Tpl->Set('ERROR', "
Bitte wählen Sie eine Datei aus und laden Sie diese herauf!
");
- $this->app->erp->EnableTab("tabs-2");
- } else {
- //$fileid = $this->app->erp->CreateDatei($_FILES['upload']['name'],$titel,$beschreibung,"",$_FILES['upload']['tmp_name'],$this->app->User->GetName());
- $this->app->erp->AddDateiVersion($datei, $this->app->User->GetName(), $_FILES['upload']['name'], "Neue Version", $_FILES['upload']['tmp_name']);
- header("Location: index.php?module=$module&action=$action&id=$id");
- exit;
+ // Get files here
+ if ($speichern != "") {
+ $retval = $this->FilesFromUploadtoDMS(null, null, $datei);
+ if ($retval !== true) {
+ $this->app->Tpl->Set('ERROR', implode(', ',$retval));
+ $this->app->erp->EnableTab("tabs-2");
+ } else {
+ header("Location: index.php?module=$module&action=$action&id=$id");
}
}
+
$this->app->Tpl->Set('STARTDISABLE', "");
$this->app->Tpl->Parse($parsetarget, "datei_neudirekt.tpl");
@@ -14225,61 +14247,18 @@ source: "index.php?module=ajax&action=filter&filtername=' . $filter . $extendurl
$id = $this->app->Secure->GetGET("id");
$sid = $this->app->Secure->GetGET("sid");
if($id)$this->app->Tpl->Set('ID', $id);
+
+ // Get files here
if ($speichern != "") {
- if($parameter == '')$parameter = $id;
- if(isset($_POST['dateiv']))
- {
- foreach($_POST['dateiv'] as $k => $v)
- {
- $name = $this->app->DB->real_escape_string($_POST['dateiname'][$k]);
- $titel = $this->app->DB->real_escape_string($_POST['dateititel'][$k]);
- $beschreibung = $this->app->DB->real_escape_string($_POST['beschreibung'][$k]);
- $stichwort = $this->app->DB->real_escape_string($_POST['dateistichwort'][$k]);
-
- //$getMime = explode('.', $name);
- //$mime = end($getMime);
-
- $data = explode(',', $v);
-
- $encodedData = str_replace(' ','+',$data[1]);
- $decodedData = base64_decode($encodedData);
-
- $this->app->Tpl->Set('TITLE', $titel);
- $this->app->Tpl->Set('BESCHREIBUNG', $beschreibung);
-
- if ($v == "" ) {
- $this->app->Tpl->Set('ERROR', "Keine Datei ausgewählt!
");
- $this->app->erp->EnableTab("tabs-2");
- } else {
- $fileid = $this->app->erp->CreateDatei($name, $titel, $beschreibung, "", $decodedData, $this->app->User->GetName());
-
- // stichwoerter hinzufuegen
- $this->app->erp->AddDateiStichwort($fileid, $stichwort, $objekt, $parameter);
- }
- }
- if($_FILES['upload']['tmp_name'] == "")
- {
- header("Location: index.php?module=$_module&action=$_action&id=$id&sid=$sid".($typ!=''?"&typ=".$typ:''));
- }
+ if($parameter == '') {
+ $parameter = $id;
}
-
-
-
- $titel = $this->app->Secure->GetPOST("titel");
- $beschreibung = $this->app->Secure->GetPOST("beschreibung");
- $stichwort = $this->app->Secure->GetPOST("stichwort");
- $this->app->Tpl->Set('TITLE', $titel);
- $this->app->Tpl->Set('BESCHREIBUNG', $beschreibung);
-
- if ($_FILES['upload']['tmp_name'] == "" && empty($_POST['dateiv'])) {
- $this->app->Tpl->Set('ERROR', "Keine Datei ausgewählt!
");
- $this->app->erp->EnableTab("tabs-2");
- } elseif($_FILES['upload']['tmp_name'] != '') {
- $fileid = $this->app->erp->CreateDatei($_FILES['upload']['name'], $titel, $beschreibung, "", $_FILES['upload']['tmp_name'], $this->app->User->GetName());
-
- // stichwoerter hinzufuegen
- $this->app->erp->AddDateiStichwort($fileid, $stichwort, $objekt, $parameter);
- header("Location: index.php?module=$_module&action=$_action&id=$id&sid=$sid".($typ!=''?"&typ=".$typ:''));
+ $retval = $this->FilesFromUploadtoDMS($objekt, $parameter);
+ if ($retval !== true) {
+ $this->app->Tpl->Set('ERROR', implode(', ',$retval));
+ $this->app->erp->EnableTab("tabs-2");
+ } else {
+ header("Location: index.php?module=$_module&action=$_action&id=$id&sid=$sid".($typ!=''?"&typ=".$typ:''));
}
}
@@ -14547,6 +14526,87 @@ source: "index.php?module=ajax&action=filter&filtername=' . $filter . $extendurl
}
}
+ /*
+ * Retrieve uploaded files and put them into DMS
+ * $datei: given file, just add a new version
+ * Return array of errors or true
+ */
+ function FilesFromUploadtoDMS($objekt, $parameter, $datei = false) {
+
+ $retval = true;
+ // Files come from drag'n'drop
+ if(isset($_POST['dateiv']))
+ {
+ foreach($_POST['dateiv'] as $k => $v)
+ {
+ $name = $this->app->DB->real_escape_string($_POST['dateiname'][$k]);
+ $titel = $this->app->DB->real_escape_string($_POST['dateititel'][$k]);
+ $beschreibung = $this->app->DB->real_escape_string($_POST['dateibeschreibung'][$k]);
+ $stichwort = $this->app->DB->real_escape_string($_POST['dateistichwort'][$k]);
+
+ $data = explode(',', $v);
+
+ $encodedData = str_replace(' ','+',$data[1]);
+ $decodedData = base64_decode($encodedData);
+
+ $this->app->Tpl->Set('TITLE', $titel);
+ $this->app->Tpl->Set('BESCHREIBUNG', $beschreibung);
+
+ if ($v == "" ) {
+ $this->app->Tpl->Set('ERROR', "Keine Datei ausgewählt!
");
+ $this->app->erp->EnableTab("tabs-2");
+ } else {
+ // Save file to disk first
+ $tempfilename = rtrim($this->app->erp->GetTMP(), '/') . "/" . $name;
+ if($handle = fopen($tempfilename, "wb")){
+ fwrite($handle, $decodedData);
+ fclose($handle);
+ // Add file to DMS
+ if ($datei) {
+ $this->app->erp->AddDateiVersion($datei, $this->app->User->GetName(), $name, "Neue Version", $tempfilename);
+ } else {
+ $fileid = $this->app->erp->CreateDatei($name, $titel, $beschreibung, "", $tempfilename, $this->app->User->GetName());
+ // stichwoerter hinzufuegen
+ $this->app->erp->AddDateiStichwort($fileid, $stichwort, $objekt, $parameter);
+ }
+ } else {
+ if ($retval === true) {
+ $retval = array();
+ }
+ $retval[] = "Datei konnte nicht gespeichert werden: ".$name."
";
+ }
+ }
+ }
+ } // drag'n'drop
+ // Single file comes from browse button
+ else {
+ $titel = $this->app->Secure->GetPOST("titel");
+ $beschreibung = $this->app->Secure->GetPOST("beschreibung");
+ $stichwort = $this->app->Secure->GetPOST("stichwort");
+ $this->app->Tpl->Set('TITLE', $titel);
+ $this->app->Tpl->Set('BESCHREIBUNG', $beschreibung);
+
+ if ($_FILES['upload']['tmp_name'] == "" && empty($_POST['dateiv'])) {
+ $this->app->erp->EnableTab("tabs-2");
+ if ($retval === true) {
+ $retval = array();
+ }
+ $retval[] = "Keine Datei ausgewählt!
";
+
+ } elseif ($_FILES['upload']['tmp_name'] != '') {
+ if ($datei) {
+ $this->app->erp->AddDateiVersion($datei, $this->app->User->GetName(), $_FILES['upload']['name'], "Neue Version", $_FILES['upload']['tmp_name']);
+ }
+ else {
+ $fileid = $this->app->erp->CreateDatei($_FILES['upload']['name'], $titel, $beschreibung, "", $_FILES['upload']['tmp_name'], $this->app->User->GetName());
+ // stichwoerter hinzufuegen
+ $this->app->erp->AddDateiStichwort($fileid, $stichwort, $objekt, $parameter);
+ }
+ }
+ }
+ return($retval);
+ }
+
function SortListAdd($parsetarget, &$ref, $menu, $sql, $sort = true) {
$module = $this->app->Secure->GetGET("module");
diff --git a/tools/module_creator/module_creator_php_template.txt b/tools/module_creator/module_creator_php_template.txt
index e0806214..6bdb7f6d 100644
--- a/tools/module_creator/module_creator_php_template.txt
+++ b/tools/module_creator/module_creator_php_template.txt
@@ -36,7 +36,7 @@ class PLACEHOLDER_MODULECLASSNAME {
// columns that are aligned right (numbers etc)
// $alignright = array(4,5,6,7,8);
- $findcols = array('PLACEHOLDER_ID_COLUMN','PLACEHOLDER_ID_COLUMN',PLACEHOLDER_SQL_COLUMNS);
+ $findcols = array('PLACEHOLDER_ID_COLUMN','PLACEHOLDER_ID_COLUMN',PLACEHOLDER_SQL_COLUMNS); // use 'null' for non-searchable columns
$searchsql = array(PLACEHOLDER_SQL_COLUMNS);
$defaultorder = 1;
@@ -60,6 +60,8 @@ class PLACEHOLDER_MODULECLASSNAME {
$count = "SELECT count(DISTINCT id) FROM PLACEHOLDER_MODULENAME WHERE $where";
// $groupby = "";
+// echo($sql." WHERE ".$where." ".$groupby);
+
break;
}
diff --git a/upgrade/data/db_schema.json b/upgrade/data/db_schema.json
index d12eeb04..635071c2 100644
--- a/upgrade/data/db_schema.json
+++ b/upgrade/data/db_schema.json
@@ -18196,7 +18196,7 @@
},
{
"Field": "sprache",
- "Type": "varchar(11)",
+ "Type": "varchar(30)",
"Collation": "utf8mb3_general_ci",
"Null": "NO",
"Key": "",
@@ -18692,6 +18692,14 @@
"id"
],
"Non_unique": ""
+ },
+ {
+ "Key_name": "eigenschaft_unique",
+ "Index_type": "BTREE",
+ "columns": [
+ "name"
+ ],
+ "Non_unique": "UNIQUE"
}
]
},
@@ -18802,6 +18810,15 @@
"artikel"
],
"Non_unique": ""
+ },
+ {
+ "Key_name": "eigenschaft_artikel_unique",
+ "Index_type": "BTREE",
+ "columns": [
+ "artikel",
+ "artikeleigenschaften"
+ ],
+ "Non_unique": "UNIQUE"
}
]
},
diff --git a/version.php b/version.php
index 2553c804..4a98a0a2 100755
--- a/version.php
+++ b/version.php
@@ -1,7 +1,7 @@
['createarticle' => self::CAN, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
'metakeywords' => ['createarticle' => self::CAN, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
'freifelder' => ['createarticle' => self::CAN, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ ],
+ 'shopimporter_mirakl' => [
+ 'auftrag' => ['createarticle' => self::UNDEFINED, 'updatearticle' => self::UNDEFINED, 'importarticle' => self::UNDEFINED, 'importorder' => self::UNDEFINED],
+ 'artikelname' => ['createarticle' => self::MUST, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CAN],
+ 'artikelnummer' => ['createarticle' => self::MUST, 'updatearticle' => self::MUST, 'importarticle' => self::CANNOT, 'importorder' => self::CAN],
+ 'aktiv' => ['createarticle' => self::MUST, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'restmenge' => ['createarticle' => self::CANNOT, 'updatearticle' => self::CANNOT, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'beschreibung' => ['createarticle' => self::CAN, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CAN],
+ 'ean' => ['createarticle' => self::CAN, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'hersteller' => ['createarticle' => self::CAN, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'herstellerlink' => ['createarticle' => self::CANNOT, 'updatearticle' => self::CANNOT, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'herstellernummer' => ['createarticle' => self::CANNOT, 'updatearticle' => self::CANNOT, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'zolltarifnummer' => ['createarticle' => self::CANNOT, 'updatearticle' => self::CANNOT, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'gewicht' => ['createarticle' => self::CAN, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'einheit' => ['createarticle' => self::CAN, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'laenge' => ['createarticle' => self::CAN, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'hoehe' => ['createarticle' => self::CAN, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'breite' => ['createarticle' => self::CAN, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'verkaufspreis' => ['createarticle' => self::CAN, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CAN],
+ 'pseudopreis' => ['createarticle' => self::CANNOT, 'updatearticle' => self::CANNOT, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'lagerzahlen' => ['createarticle' => self::MUST, 'updatearticle' => self::MUST, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'pseudolager' => ['createarticle' => self::MUST, 'updatearticle' => self::MUST, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'staffelpreise' => ['createarticle' => self::MUST, 'updatearticle' => self::MUST, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'gruppenpreise' => ['createarticle' => self::CANNOT, 'updatearticle' => self::CANNOT, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'fremdsprachen' => ['createarticle' => self::CAN, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'kategorie' => ['createarticle' => self::CAN, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'kategoriebaum' => ['createarticle' => self::CAN, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'bilder' => ['createarticle' => self::CAN, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'varianten' => ['createarticle' => self::CAN, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'matrixeigenschaften' => ['createarticle' => self::CAN, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'über 5000 Varianten' => ['createarticle' => self::CANNOT, 'updatearticle' => self::CANNOT, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'eigenschaften' => ['createarticle' => self::CAN, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'crossselling' => ['createarticle' => self::CANNOT, 'updatearticle' => self::CANNOT, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'kurztext' => ['createarticle' => self::CAN, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'herkunftsland' => ['createarticle' => self::CANNOT, 'updatearticle' => self::CANNOT, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'umsatzsteuer' => ['createarticle' => self::CAN, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'metatitel' => ['createarticle' => self::CANNOT, 'updatearticle' => self::CANNOT, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'metabeschreibung' => ['createarticle' => self::CAN, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'metakeywords' => ['createarticle' => self::CAN, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
+ 'freifelder' => ['createarticle' => self::CAN, 'updatearticle' => self::CAN, 'importarticle' => self::CANNOT, 'importorder' => self::CANNOT],
],
'shopimporter_modified' => [
'auftrag' => ['createarticle' => self::UNDEFINED, 'updatearticle' => self::UNDEFINED, 'importarticle' => self::UNDEFINED, 'importorder' => self::UNDEFINED],
diff --git a/www/lib/class.erpapi.php b/www/lib/class.erpapi.php
index ce30b82d..48380c9a 100644
--- a/www/lib/class.erpapi.php
+++ b/www/lib/class.erpapi.php
@@ -7095,155 +7095,138 @@ title: 'Abschicken',
{
// admin menu
$menu = 0;
+
+ // ------ Stammdaten
$navarray['menu']['admin'][++$menu]['first'] = array('Stammdaten','adresse','list');
$navarray['menu']['admin'][$menu]['sec'][] = array('Adressen','adresse','list');
$navarray['menu']['admin'][$menu]['sec'][] = array('Artikel','artikel','list');
$navarray['menu']['admin'][$menu]['sec'][] = array('Projekte','projekt','list');
+ // ------ Verkauf
$navarray['menu']['admin'][++$menu]['first'] = array('Verkauf','auftrag','list');
if($this->ModulVorhanden("anfrage")){
$navarray['menu']['admin'][$menu]['sec'][] = array('Anfrage', 'anfrage', 'list');
}
-
$navarray['menu']['admin'][$menu]['sec'][] = array('Angebot'.($this->Firmendaten("bezeichnungangebotersatz") && $this->Firmendaten("bezeichnungangebotersatz") != 'Angebot'? ' / '.$this->Firmendaten("bezeichnungangebotersatz"):''),'angebot','list');
$navarray['menu']['admin'][$menu]['sec'][] = array('Auftrag','auftrag','list');
$navarray['menu']['admin'][$menu]['sec'][] = array('POS','pos','list');
- $navarray['menu']['admin'][++$menu]['first'] = array('Einkauf','auftrag','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Preisanfrage','preisanfrage','list');
+ // ------ Beschaffung
+ $navarray['menu']['admin'][++$menu]['first'] = array('Beschaffung','auftrag','list');
$navarray['menu']['admin'][$menu]['sec'][] = array('Bestellung','bestellung','list');
-
$navarray['menu']['admin'][$menu]['sec'][] = array('Bestellvorschlag','bestellvorschlag','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Erweiterter Bestellvorschlag','bestellvorschlagapp','list');
-
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Preisanfrage','preisanfrage','list');
$navarray['menu']['admin'][$menu]['sec'][] = array('Produktion','produktion','list');
+ // ------ Logistik
$navarray['menu']['admin'][++$menu]['first'] = array('Logistik','lager','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Wareneingang','wareneingang','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Lieferschein','lieferschein','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Versand','versandpakete','lieferungen');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Artikelkontingente','artikelkontingente','list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Ein- und auslagern','lager','letztebewegungen');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Inventur','inventur','list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Kommissionieraufkleber','kommissionieraufkleber','list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Kommissionierung','kommissionierung','list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Lagermindestmengen','lagermindestmengen','list');
$navarray['menu']['admin'][$menu]['sec'][] = array('Lagerverwaltung','lager','list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Lieferschein','lieferschein','list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Mindesthaltbarkeit','mhdwarning','list');
if($this->ModulVorhanden('lagermobil')) {
$navarray['menu']['admin'][$menu]['sec'][] = array('Mobile Lagerverwaltung','lagermobil','list');
}
if($this->ModulVorhanden('multiorderpicking')) {
$navarray['menu']['admin'][$menu]['sec'][] = array('Multiorder-Picking','multiorderpicking','list');
}
- $navarray['menu']['admin'][$menu]['sec'][] = array('Reservierung','lager','reservierungen');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Kommissionierung','kommissionierung','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Inventur','inventur','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Versandzentrum','versanderzeugen','offene');
$navarray['menu']['admin'][$menu]['sec'][] = array('Produktionszentrum','produktionszentrum','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Kommissionieraufkleber','kommissionieraufkleber','list');
-
- $navarray['menu']['admin'][$menu]['sec'][] = array('Mindesthaltbarkeit','mhdwarning','list');
-
- $navarray['menu']['admin'][$menu]['sec'][] = array('Lagermindestmengen','lagermindestmengen','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Artikelkontingente','artikelkontingente','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Ein- und auslagern','lager','letztebewegungen');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Reservierung','lager','reservierungen');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Versand','versandpakete','lieferungen');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Versandzentrum','versanderzeugen','offene');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Wareneingang','wareneingang','list');
$navarray['menu']['admin'][$menu]['sec'][] = array('Zwischenlager','lager','buchenzwischenlager');
+ // ------ Buchhaltung
$navarray['menu']['admin'][++$menu]['first'] = array('Buchhaltung','rechnung','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Rechnungen','rechnung','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Zahlungseingang','zahlungseingang','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Reisekosten','reisekosten','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Arbeitsnachweis','arbeitsnachweis','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Gutschrift / '.$this->Firmendaten("bezeichnungstornorechnung"),'gutschrift','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Proformarechnung','proformarechnung','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Kontoauszüge','kontoauszuege','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Buchungen','fibu_buchungen','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Abolauf','rechnungslauf','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Mahnwesen','mahnwesen','list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Abolauf','rechnungslauf','list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Arbeitsnachweis','arbeitsnachweis','list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Buchungen','fibu_buchungen','list');
$navarray['menu']['admin'][$menu]['sec'][] = array('Dokumenten Scanner','docscan','list');
+
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Gutschriften / '.$this->Firmendaten("bezeichnungstornorechnung"),'gutschrift','list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Kontoauszüge','kontoauszuege','list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Lieferantengutschriften','lieferantengutschrift','list');
+
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Mahnwesen','mahnwesen','list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Proformarechnung','proformarechnung','list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Rechnungen','rechnung','list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Reisekosten','reisekosten','list');
$navarray['menu']['admin'][$menu]['sec'][] = array('Finanzbuchhaltung Export','buchhaltungexport','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Zahlungsverkehr','zahlungsverkehr','ueberweisung');
$navarray['menu']['admin'][$menu]['sec'][] = array('Verbandsabrechnungen','verband','offene');
$navarray['menu']['admin'][$menu]['sec'][] = array('Vertreterabrechnungen','vertreter','list');
- if($this->ModulVorhanden('provisionenartikelvertreter'))
+ if ($this->ModulVorhanden('provisionenartikelvertreter'))
{
$navarray['menu']['admin'][$menu]['sec'][] = array('Provisionen','provisionenartikelvertreter','list');
- }else{
+ } else {
$navarray['menu']['admin'][$menu]['sec'][] = array('Provisionen','provisionenartikel','list');
}
-
if($this->Firmendaten("modul_mlm")=="1"){
$navarray['menu']['admin'][$menu]['sec'][] = array('Multilevel', 'multilevel', 'list');
}
-
$navarray['menu']['admin'][$menu]['sec'][] = array('Lohnabrechnung','lohnabrechnung','list');
-
$navarray['menu']['admin'][$menu]['sec'][] = array('Verbindlichkeiten','verbindlichkeit','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Lieferantengutschriften','lieferantengutschrift','list');
-
$navarray['menu']['admin'][$menu]['sec'][] = array('Kassenbuch','kasse','list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Zahlungseingang','zahlungseingang','list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Zahlungsverkehr','zahlungsverkehr','ueberweisung');
+ // ------ Controlling
$navarray['menu']['admin'][++$menu]['first'] = array('Controlling','marketing','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Verkaufszahlen','verkaufszahlen','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Umsatzstatistik','umsatzstatistik','allgemein');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Statistiken','statistiken','dashboard');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Aktionscodes','aktionscodes','list');
$navarray['menu']['admin'][$menu]['sec'][] = array('Berichte','report','list');
$navarray['menu']['admin'][$menu]['sec'][] = array('Management Board','managementboard','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Aktionscodes','aktionscodes','list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Statistiken','statistiken','dashboard');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Umsatzstatistik','umsatzstatistik','allgemein');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Verkaufszahlen','verkaufszahlen','list');
+ // ------ Verwaltung
$navarray['menu']['admin'][++$menu]['first'] = array('Verwaltung','rechnung','list');
-
- $navarray['menu']['admin'][$menu]['sec'][] = array('Ticketregeln','ticketregeln','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Zeitkonten','zeiterfassung','list');
if(!$this->RechteVorhanden('mitarbeiterzeiterfassung','dashboard')){
$navarray['menu']['admin'][$menu]['sec'][] = array('Antrag einreichen','mitarbeiterzeiterfassung','timemanagementrequest');
}
else{
$navarray['menu']['admin'][$menu]['sec'][] = array('Mitarbeiterzeiterfassung','mitarbeiterzeiterfassung','dashboard');
}
-
$navarray['menu']['admin'][$menu]['sec'][] = array('Import/Export Zentrale','importvorlage','uebersicht');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Währungen','waehrungumrechnung','list');
-
$navarray['menu']['admin'][$menu]['sec'][] = array('Seriennummern','seriennummern','list');
$navarray['menu']['admin'][$menu]['sec'][] = array('Chargen','chargen','list');
-
$navarray['menu']['admin'][$menu]['sec'][] = array('RMA Lieferungen','rma','list');
$navarray['menu']['admin'][$menu]['sec'][] = array('Service & Support','service','list');
-
$navarray['menu']['admin'][$menu]['sec'][] = array('Etikettendrucker','etikettendrucker','list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Währungen','waehrungumrechnung','list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Ticketregeln','ticketregeln','list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Zeitkonten','zeiterfassung','list');
+ // ------ System
$navarray['menu']['admin'][++$menu]['first'] = array('System','rechnung','list');
$navarray['menu']['admin'][$menu]['sec'][] = array('Einstellungen','einstellungen','list');
$navarray['menu']['admin'][$menu]['sec'][] = array('Online-Shops / Marktplätze','onlineshops','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Backup','backup','list','recover','delete','reset');
$navarray['menu']['admin'][$menu]['sec'][] = array('Upgrade','upgrade','list','recover','delete','reset');
- //$navarray['menu']['admin'][$menu]['sec'][] = array('AppStore','appstore','list');
+ // ------ Mein Bereich
$navarray['menu']['admin'][++$menu]['first'] = array('Mein Bereich','welcome','main');
$startseite = $this->app->DB->Select("SELECT startseite FROM user WHERE id='".$this->app->User->GetID()."' LIMIT 1");
- if($startseite!="")
- $navarray['menu']['admin'][$menu]['sec'][] = array('Meine Startseite','welcome','startseite');
-
-
- $navarray['menu']['admin'][$menu]['sec'][] = array('Startseite','welcome','start');
-// $navarray['menu']['admin'][$menu]['sec'][] = array('Meine Apps','welcome','meineapps');
- if($this->app->User->GetType() === 'admin') {
- // $navarray['menu']['admin'][$menu]['sec'][] = ['Learning Dashboard', 'learningdashboard', 'list'];
+ if($startseite!="") {
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Meine Startseite','welcome','startseite');
}
-
- $navarray['menu']['admin'][$menu]['sec'][] = array('Tickets','ticket','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Kalender','kalender','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Pinnwand','welcome','pinwand');
$navarray['menu']['admin'][$menu]['sec'][] = array('Aufgaben','aufgaben','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('E-Mail','webmail','list');
-
$navarray['menu']['admin'][$menu]['sec'][] = array('Chat','chat','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Zeiterfassung','zeiterfassung','create');
-
-// $navarray['menu']['admin'][$menu]['sec'][] = array('Stechuhr','stechuhr','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Wiedervorlage','wiedervorlage','list');
-
- $navarray['menu']['admin'][$menu]['sec'][] = array('Wiki','wiki','list');
- $navarray['menu']['admin'][$menu]['sec'][] = array('Interner Support', 'internalsupport', 'list');
$navarray['menu']['admin'][$menu]['sec'][] = array('Einstellungen','welcome','settings');
-// $navarray['menu']['admin'][$menu]['sec'][] = array('Datenschutz', 'dataprotection','list');
-// $navarray['menu']['admin'][$menu]['sec'][] = array('Lizenz','appstore','buy');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('E-Mail','webmail','list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Kalender','kalender','list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Interner Support', 'internalsupport', 'list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Pinnwand','welcome','pinwand');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Startseite','welcome','start');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Tickets','ticket','list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Wiedervorlage','wiedervorlage','list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Wiki','wiki','list');
+ $navarray['menu']['admin'][$menu]['sec'][] = array('Zeiterfassung','zeiterfassung','create');
$navarray['menu']['admin'][$menu]['sec'][] = array('Abmelden','welcome','logout');
return $this->CalculateNavigation($navarray);
@@ -16642,9 +16625,10 @@ function Gegenkonto($ust_befreit,$ustid='', $doctype = '', $doctypeId = 0)
$check = $this->app->DB->Select("SELECT $key FROM adresse WHERE id='$adresse' LIMIT 1");
if($check!=${$key})
{
- $this->app->DB->Update("UPDATE adresse SET $key='".${$key}."' WHERE id='$adresse' LIMIT 1");
+ $val = $this->app->DB->real_escape_string(${$key});
+ $this->app->DB->Update("UPDATE adresse SET $key='$val' WHERE id='$adresse' LIMIT 1");
$logfile = $this->app->DB->Select("SELECT `logfile` FROM adresse WHERE id='$adresse' LIMIT 1");
- $this->app->DB->Update("UPDATE adresse SET `logfile`='".$logfile." Update Feld $key alt:$check neu:".${$key}.";' WHERE id='$adresse' LIMIT 1");
+ $this->app->DB->Update("UPDATE adresse SET `logfile`='".$logfile." Update Feld $key alt:$check neu:".$val.";' WHERE id='$adresse' LIMIT 1");
}
}
@@ -17233,7 +17217,7 @@ function CheckShopTabelle($artikel)
return $taxrates;
}
- function ImportAuftrag($adresse,$warenkorb,$projekt,$shop="",$auftrag=0)
+ function ImportAuftrag($adresse,$warenkorb,$projekt,$shop="",$auftrag=0) : array
{
$this->RunHook('ImportAuftragBefore',4, $adresse,$warenkorb,$projekt,$shop);
if(!empty($this->app->stringcleaner)){
@@ -17745,6 +17729,9 @@ function CheckShopTabelle($artikel)
if($doctype === 'angebot'){
$this->app->DB->Update("UPDATE angebot SET anfrage = '".$this->app->DB->real_escape_string($warenkorb['onlinebestellnummer'])."' WHERE id = '$auftrag' LIMIT 1");
}
+ if($doctype === 'auftrag'){
+ $this->app->DB->Update("UPDATE auftrag SET ihrebestellnummer = '".$this->app->DB->real_escape_string($warenkorb['ihrebestellnummer'])."' WHERE id = '$auftrag' LIMIT 1");
+ }
$this->app->DB->Update("UPDATE $doctype SET
belegnr='$belegnr',
@@ -18708,16 +18695,24 @@ function CheckShopTabelle($artikel)
$artikelporto = $artikelportoermaessigt;
}
- if(empty($artikelporto) && $this->app->DB->Select("SELECT portoartikelanlegen FROM shopexport WHERE id = '$shop' LIMIT 1"))
- {
- if($warenkorb['versandkostennetto'] != 0 || $warenkorb['versandkostenbrutto'] != 0 || $portocheck == 1){
- $portoartikelarr = array('projekt'=>$projekt,'porto'=>1, 'lagerartikel'=>0,'name_de'=>'Porto','umsatzsteuer'=>'normal');
- $artikelporto = $this->app->erp->InsertUpdateArtikel($portoartikelarr);
- if($artikelporto){
- $this->app->DB->Update("UPDATE shopexport SET artikelporto = '$artikelporto' WHERE id = '$shop' AND artikelporto = 0 LIMIT 1");
- }
+ if(empty($artikelporto)) {
+ if ($this->app->DB->Select("SELECT portoartikelanlegen FROM shopexport WHERE id = '$shop' LIMIT 1"))
+ {
+ if($warenkorb['versandkostennetto'] != 0 || $warenkorb['versandkostenbrutto'] != 0 || $portocheck == 1)
+ {
+ $portoartikelarr = array('projekt'=>$projekt,'porto'=>1, 'lagerartikel'=>0,'name_de'=>'Porto','umsatzsteuer'=>'normal');
+ $artikelporto = $this->app->erp->InsertUpdateArtikel($portoartikelarr);
+ if($artikelporto)
+ {
+ $this->app->DB->Update("UPDATE shopexport SET artikelporto = '$artikelporto' WHERE id = '$shop' AND artikelporto = 0 LIMIT 1");
+ }
+ }
+ } else {
+ $error_msg = 'Importauftrag Shop '.$shop.' Fehler: Kein Portoartikel vorhanden';
+ $this->LogFile($error_msg,['Onlinebestellnummer' => $warenkorb['onlinebestellnummer']]);
+ return(array("status" => false, "message" => $error_msg, "onlinebestellnummer" => $warenkorb['onlinebestellnummer']));
+ }
}
- }
$umsatzsteuer_porto = $this->app->DB->Select("SELECT umsatzsteuer FROM artikel WHERE id='$artikelporto' LIMIT 1");
$versandname = '';
@@ -19063,7 +19058,7 @@ function CheckShopTabelle($artikel)
}
}
- return $auftrag;
+ return array("status" => true, "$auftragid" => $auftrag);
}
@@ -21058,7 +21053,7 @@ function ChargenMHDAuslagern($artikel, $menge, $lagerplatztyp, $lpid,$typ,$wert,
$anzges = 0;
$anzfehler = 0;
- $result = null; // 1 on success
+ $result = null; // $result['status'] == 1 on success
if(!empty($extnummer) && is_array($extnummer)) {
foreach($extnummer as $nummer) {
@@ -21089,9 +21084,9 @@ function ChargenMHDAuslagern($artikel, $menge, $lagerplatztyp, $lpid,$typ,$wert,
}
- $this->LogFile('*** UPDATE '.$lagerartikel[$ij]['nummer'].' '.$lagerartikel[$ij]['name_de'].' Shop: '.$shop.' Lagernd: '.$verkaufbare_menge.' Korrektur: '.round((float) ($verkaufbare_menge_korrektur - $verkaufbare_menge),7).' Pseudolager: '.round((float) $pseudolager,8).' Result: '.gettype($result).' '.$result);
+ $this->LogFile('*** UPDATE '.$lagerartikel[$ij]['nummer'].' '.$lagerartikel[$ij]['name_de'].' Shop: '.$shop.' Lagernd: '.$verkaufbare_menge.' Korrektur: '.round((float) ($verkaufbare_menge_korrektur - $verkaufbare_menge),7).' Pseudolager: '.round((float) $pseudolager,8).' Result: '.(is_array($result)?$result['status']:$result), $result);
- if ($result == 1) {
+ if ((is_array($result)?$result['status'] == 1:false) || $result === 1) {
$cacheQuantity = (int) $verkaufbare_menge_korrektur + (int) $pseudolager;
$this->app->DB->Update(
"UPDATE `artikel` SET `cache_lagerplatzinhaltmenge` = '{$cacheQuantity}'
@@ -27594,6 +27589,16 @@ function Firmendaten($field,$projekt="")
return $buchstaben_anteil_string.$neue_nummer;
}
+ function CalcNextArtikelNummer($nummer) {
+ $check = null;
+ do {
+ $nummer = $this->CalcNextNummer($nummer);
+ $sql = "SELECT id FROM artikel WHERE nummer = '".$nummer."'";
+ $check = $this->app->DB->Select($sql);
+ } while (!empty($check));
+ return ($nummer);
+ }
+
function GetNextNummer($type,$projekt="",$data="")
{
$doctype = $type;
@@ -28068,7 +28073,7 @@ function Firmendaten($field,$projekt="")
$nurzahlen = preg_replace("/[^0-9]/","",$next_nummer_alt);
$laenge = strlen($nurzahlen);
- $next_nummer = $this->CalcNextNummer($next_nummer_alt);
+ $next_nummer = $this->CalcNextArtikelNummer($next_nummer_alt);
//$nurbuchstaben.str_pad($nurzahlen+1, $laenge ,'0', STR_PAD_LEFT);
$neue_nummer = $next_nummer;
@@ -28081,12 +28086,12 @@ function Firmendaten($field,$projekt="")
if($eigenernummernkreis=="1")
{
$neue_nummer = $this->app->DB->Select("SELECT next_artikelnummer FROM projekt WHERE id='$projekt' LIMIT 1");
- if($this->app->DB->Select("SELECT id FROM artikel WHERE nummer = '".$this->app->DB->real_escape_string($neue_nummer)."' LIMIT 1"))$neue_nummer = $this->CalcNextNummer($neue_nummer);
- $next_nummer = $this->CalcNextNummer($neue_nummer);
+ if($this->app->DB->Select("SELECT id FROM artikel WHERE nummer = '".$this->app->DB->real_escape_string($neue_nummer)."' LIMIT 1"))$neue_nummer = $this->CalcNextArtikelNummer($neue_nummer);
+ $next_nummer = $this->CalcNextArtikelNummer($neue_nummer);
$this->app->DB->Update("UPDATE projekt SET next_artikelnummer='".$next_nummer."' WHERE id='$projekt' LIMIT 1");
} else {
//zentraler nummernkreis mit prefix
- $next_nummer = $this->CalcNextNummer($this->Firmendaten("next_artikelnummer"));
+ $next_nummer = $this->CalcNextArtikelNummer($this->Firmendaten("next_artikelnummer"));
$this->FirmendatenSet("next_artikelnummer",$next_nummer);
if($next_nummer_alt!="") $neue_nummer=$next_nummer_alt.$next_nummer;
else $neue_nummer = $next_nummer;
@@ -28101,15 +28106,15 @@ function Firmendaten($field,$projekt="")
if($eigenernummernkreis)
{
$neue_nummer = $this->app->DB->Select("SELECT next_artikelnummer FROM projekt WHERE id='$projekt' LIMIT 1");
- if($this->app->DB->Select("SELECT id FROM artikel WHERE nummer = '".$this->app->DB->real_escape_string($neue_nummer)."' LIMIT 1"))$neue_nummer = $this->CalcNextNummer($neue_nummer);
- $next_nummer = $this->CalcNextNummer($neue_nummer);
+ if($this->app->DB->Select("SELECT id FROM artikel WHERE nummer = '".$this->app->DB->real_escape_string($neue_nummer)."' LIMIT 1"))$neue_nummer = $this->CalcNextArtikelNummer($neue_nummer);
+ $next_nummer = $this->CalcNextArtikelNummer($neue_nummer);
$this->app->DB->Update("UPDATE projekt SET next_artikelnummer='".$next_nummer."' WHERE id='$projekt' LIMIT 1");
}else{
$firmennummer = $this->app->erp->Firmendaten('next_artikelnummer');
if($firmennummer)
{
$next_nummer = $firmennummer;
- $neue_nummer = $this->CalcNextNummer($next_nummer);
+ $neue_nummer = $this->CalcNextArtikelNummer($next_nummer);
$this->FirmendatenSet('next_artikelnummer', $neue_nummer);
$neue_nummer = $this->app->erp->Firmendaten('next_artikelnummer');
} else {
@@ -28131,10 +28136,11 @@ function Firmendaten($field,$projekt="")
$neue_nummer = $this->app->DB->Select("SELECT MAX(CAST(nummer AS UNSIGNED)) FROM artikel WHERE nummer LIKE '1%'");
if(($neue_nummer=="" || $neue_nummer=="0")) $neue_nummer = "100000";
}
- $neue_nummer = $this->CalcNextNummer($neue_nummer);//$neue_nummer + 1;
+ $neue_nummer = $this->CalcNextArtikelNummer($neue_nummer);//$neue_nummer + 1;
}
}
}
+
$this->app->erp->ProzessUnlock($process_lock);
$neue_nummer = str_replace('{JAHR}',date('Y'),$neue_nummer);
$neue_nummer = str_replace('{MONAT}',date('m'),$neue_nummer);
@@ -31297,15 +31303,15 @@ function Firmendaten($field,$projekt="")
$variante_von = $this->app->DB->Select("SELECT variante_von FROM artikel WHERE id = '$artikel' LIMIT 1");
if($variante_von)$beschreibung = $this->app->DB->real_escape_string($this->app->DB->Select("SELECT anabregs_text FROM artikel WHERE id='$variante_von' LIMIT 1"));
}
- if($this->ModulVorhanden('artikel_texte')){
- if(array_key_exists($belegsprache,$adresssprachen)){
+
+ if(array_key_exists($belegsprache,$adresssprachen)){
$belegsprache = $adresssprachen[$belegsprache];
- }
- $artikelbeschreibung = $this->app->DB->Select("SELECT beschreibung FROM artikel_texte WHERE artikel=$artikel AND sprache='$belegsprache'");
- if($artikelbeschreibung){
- $beschreibung = $artikelbeschreibung;
- }
}
+ $artikelbeschreibung = $this->app->DB->Select("SELECT beschreibung FROM artikel_texte WHERE artikel=$artikel AND sprache='$belegsprache'");
+ if($artikelbeschreibung){
+ $beschreibung = $artikelbeschreibung;
+ }
+
}
//$vpe = $this->app->DB->Select("SELECT vpe FROM verkaufspreise WHERE id='$verkauf' LIMIT 1");
$sort = $this->app->DB->Select("SELECT MAX(sort) FROM ".$typ."_position WHERE $typ='$id' LIMIT 1");
@@ -31320,20 +31326,19 @@ function Firmendaten($field,$projekt="")
if($this->app->DB->Select("SELECT adr.id FROM auftrag auf INNER JOIN adresse adr ON auf.adresse = adr.id AND adr.sprache = 'englisch' WHERE auf.id = '$id' LIMIT 1"))
$name = $this->app->DB->Select("SELECT name_en FROM artikel WHERE id = '$artikel'");
if($name === '')$name = $this->app->DB->Select("SELECT name_de FROM artikel WHERE id = '$artikel'");
- if($this->ModulVorhanden('artikel_texte')){
- if(array_key_exists($belegsprache,$adresssprachen)){
+
+ if(array_key_exists($belegsprache,$adresssprachen)){
$belegsprache = $adresssprachen[$belegsprache];
- }
- $artikelbezeichnung = $this->app->DB->Select(
+ }
+ $artikelbezeichnung = $this->app->DB->Select(
"SELECT name
FROM artikel_texte
WHERE artikel=$artikel AND sprache='$belegsprache'
ORDER BY name <> '' DESC
LIMIT 1"
- );
- if($artikelbezeichnung){
+ );
+ if($artikelbezeichnung){
$name = $artikelbezeichnung;
- }
}
}
@@ -37456,7 +37461,8 @@ function Firmendaten($field,$projekt="")
SELECT dv.datei AS datei
FROM datei_stichwoerter AS ds
JOIN (SELECT datei, MAX(id) AS id FROM datei_version GROUP BY datei) AS dv ON dv.datei = ds.datei
- WHERE ds.objekt LIKE 'Artikel' AND
+ JOIN datei AS d on ds.datei = d.id
+ WHERE ds.objekt LIKE 'Artikel' AND d.geloescht = 0 AND
ds.parameter = '%d' AND
(ds.subjekt LIKE 'Shopbild' OR ds.subjekt LIKE 'Druckbild' OR ds.subjekt LIKE 'Bild')
ORDER BY ds.subjekt LIKE 'Shopbild' DESC, ds.subjekt LIKE 'Druckbild' DESC, ds.sort
@@ -38124,7 +38130,7 @@ function Firmendaten($field,$projekt="")
$sql_erweiterung = '';
if(!empty($gruppenarr))
{
- $sql_erweiterung .= ' OR v.gruppe IN ('.implode(' ', $gruppenarr).') ';
+ $sql_erweiterung .= ' OR v.gruppe IN ('.implode(', ', $gruppenarr).') ';
}
if(!$guenstigste_vk) {
$vkarr = $this->app->DB->SelectArr("SELECT * FROM verkaufspreise v WHERE v.ab_menge <= '$menge' AND
diff --git a/www/lib/class.remote.php b/www/lib/class.remote.php
index 091a7db2..d1883f32 100644
--- a/www/lib/class.remote.php
+++ b/www/lib/class.remote.php
@@ -1,23 +1,25 @@
app=$app;
- }
+class Remote {
- /**
- * @param int $shopId
- * @param null|bool $extra
- *
- * @return mixed
- * @throws Exception
- */
- public function RemoteConnection($shopId, $extra = null)
- {
- $ret = $this->RemoteCommand($shopId,'auth', $extra);
- if($ret !== 'success' && empty($extra) && method_exists($this->app->erp, 'setSystemHealth')) {
- $this->app->erp->setSystemHealth(
- 'shopexport',
- 'auth',
- 'warning',
- 'Verbindung zu '.
- $this->app->DB->Select(
- sprintf(
- 'SELECT bezeichnung FROM shopexport WHERE id = %d',
- $shopId
- )
- ).' fehlgeschlagen.'
- );
- try {
- /** @var Systemhealth $systemhealth */
- $systemhealth = $this->app->erp->LoadModul('systemhealth');
- if($systemhealth !== null && method_exists($systemhealth, 'createEvent')){
- $systemhealth->createEvent('shopexport', 'auth', 'warning', 'shopexport', $shopId);
+ /** @var ApplicationCore $app */
+ public $app;
+
+ /** @var Logger $logger */
+ public $logger;
+
+ public function __construct($app) {
+ $this->app = $app;
+ $this->logger = $app->Container->get('Logger');
+ }
+
+ /**
+ * @param int $shopId
+ * @param null|bool $extra
+ *
+ * @return mixed
+ * @throws Exception
+ */
+ public function RemoteConnection($shopId, $extra = null) {
+ $ret = $this->RemoteCommand($shopId, 'auth', $extra);
+ if ($ret !== 'success' && empty($extra) && method_exists($this->app->erp, 'setSystemHealth')) {
+ $this->app->erp->setSystemHealth(
+ 'shopexport',
+ 'auth',
+ 'warning',
+ 'Verbindung zu ' .
+ $this->app->DB->Select(
+ sprintf(
+ 'SELECT bezeichnung FROM shopexport WHERE id = %d',
+ $shopId
+ )
+ ) . ' fehlgeschlagen.'
+ );
+ try {
+ /** @var Systemhealth $systemhealth */
+ $systemhealth = $this->app->erp->LoadModul('systemhealth');
+ if ($systemhealth !== null && method_exists($systemhealth, 'createEvent')) {
+ $systemhealth->createEvent('shopexport', 'auth', 'warning', 'shopexport', $shopId);
+ }
+ } catch (Exception $d) {
+
+ }
}
- }
- catch (Exception $d) {
-
- }
- }
- return $ret;
- }
-
- /**
- * @param int $shopId
- *
- * @return mixed
- * @throws Exception
- */
- public function RemoteGetUpdateArticleList($shopId)
- {
- return $this->RemoteCommand($shopId,'getlist');
- }
-
- /**
- * @param int $shopId
- *
- * @return mixed
- * @throws Exception
- */
- public function RemoteGetFileList($shopId)
- {
- return $this->RemoteCommand($shopId,'getfilelist');
- }
-
- /**
- * @param int $shopId
- * @param int|string $articleId
- *
- * @return mixed
- * @throws Exception
- */
- public function RemoteGetFileListArticle($shopId, $article)
- {
- $data['artikel'] = $article;
-
- return $this->RemoteCommand($shopId,'getfilelistarticle', $data);
- }
-
- /**
- * @param int $shopId
- * @param array|string $data
- *
- * @return mixed|string
- * @throws Exception
- */
- public function RemoteGetAuftraegeAnzahl($shopId,$data = '')
- {
- if(!empty($data))
- {
- return $this->RemoteCommand($shopId,'getauftraegeanzahl', $data);
- }
- $data = array();
- $shopexportArr = $this->app->DB->SelectRow(sprintf('SELECT * FROM shopexport WHERE id = %d LIMIT 1', $shopId));
- $holealle = $shopexportArr['holealle'];
- $holeallestati = $shopexportArr['holeallestati'];
- $zeitraum = [
- 'datumvon'=>$shopexportArr['datumvon'],
- 'datumbis'=>$shopexportArr['datumbis'],
- 'tmpdatumvon'=>$shopexportArr['tmpdatumvon'],
- 'tmpdatumbis'=>$shopexportArr['tmpdatumbis'],
- 'anzgleichzeitig'=>$shopexportArr['anzgleichzeitig'],
- ];
- if(!empty($zeitraum))
- {
- $data['datumvon'] = $zeitraum['datumvon'];
- $data['datumbis'] = $zeitraum['datumbis'];
- //if(strtotime($zeitraum[0]['tmpdatumbis']) > 0)$data['datumbis'] = $zeitraum[0]['tmpdatumbis'];
- //if(strtotime($zeitraum[0]['tmpdatumvon']) > 0)$data['datumvon'] = $zeitraum[0]['tmpdatumbis'];
- if($data['datumvon'] === null || $data['datumvon'] === '0000-00-00 00:00:00'|| strtotime($data['datumvon'])<=0) {
- $data['datumvon'] = '2000-01-01 00:00:00';
- }
- if($data['datumbis'] === null || $data['datumbis'] === '0000-00-00 00:00:00'|| strtotime($data['datumbis'])<=0) {
- $data['datumbis'] = date('Y-m-d H:i:s');
- $data['datumbis_utc'] = $this->app->DB->Select('select date_sub(UTC_TIMESTAMP, INTERVAL 0 MINUTE)');
- }
- $data['anzgleichzeitig'] = $zeitraum[0]['anzgleichzeitig'];
- if($holeallestati && $data['anzgleichzeitig'] > 1)
- {
- $data['holeallestati'] = 1;
- }
- }
- if($holealle)
- {
- $ab_nummer = $shopexportArr['ab_nummer'];
- $data = array('ab_nummer' => $ab_nummer);
- if($holeallestati)
- {
- $data['holeallestati'] = 1;
- }
-
- return $this->RemoteCommand($shopId,'getauftraegeanzahl', $data);
+ return $ret;
}
- return $this->RemoteCommand($shopId,'getauftraegeanzahl');
- }
-
- /**
- * @param int $shopId
- * @param string $nummer
- *
- * @return mixed|string
- * @throws Exception
- */
- public function RemoteGetAuftraegeAnzahlNummer($shopId, $nummer)
- {
- $data = array('nummer' => $nummer);
-
- return $this->RemoteCommand($shopId,'getauftraegeanzahl', $data);
- }
-
- /**
- * @param int $shopId
- * @param null|array $data
- *
- * @return mixed|string
- * @throws Exception
- */
- public function RemoteGetAuftrag($shopId, $data = null)
- {
- if(!empty($data)) {
- return $this->RemoteCommand($shopId,'getauftrag', $data);
- }
- $data = array();
-
- $shopexportArr = $this->app->DB->SelectRow(
- sprintf(
- 'SELECT * FROM shopexport WHERE id = %d LIMIT 1',
- $shopId
- )
- );
- $holealle = $shopexportArr['holealle'];
- $holeallestati = $shopexportArr['holeallestati'];
- $zeitraum = [
- 'datumvon'=>$shopexportArr['datumvon'],
- 'datumbis'=>$shopexportArr['datumbis'],
- 'tmpdatumvon'=>$shopexportArr['tmpdatumvon'],
- 'tmpdatumbis'=>$shopexportArr['tmpdatumbis'],
- 'anzgleichzeitig'=>$shopexportArr['anzgleichzeitig'],
- ];
- if(!empty($zeitraum)) {
- $data['datumvon'] = $zeitraum['datumvon'];
- $data['datumbis'] = $zeitraum['datumbis'];
- if($zeitraum['tmpdatumbis'] !== null && $zeitraum['tmpdatumbis'] !== '0000-00-00 00:00:00' &&
- strtotime($zeitraum['tmpdatumbis']) > 0) {
- $data['datumbis'] = $zeitraum['tmpdatumbis'];
- }
- //if(strtotime($zeitraum[0]['tmpdatumvon']) > 0)$data['datumvon'] = $zeitraum[0]['tmpdatumbis'];
- if($data['datumvon'] === null || $data['datumvon'] === '0000-00-00 00:00:00' || strtotime($data['datumvon'])<=0) {
- $data['datumvon'] = '2000-01-01 00:00:00';
- }
- if($data['datumbis'] === null || $data['datumbis'] === '0000-00-00 00:00:00' || strtotime($data['datumbis'])<=0) {
- $data['datumbis'] = date('Y-m-d H:i:s');
- $data['datumbis_utc'] = $this->app->DB->Select('select date_sub(UTC_TIMESTAMP, INTERVAL 0 MINUTE)');
- }
- $data['anzgleichzeitig'] = $zeitraum['anzgleichzeitig'];
- if($data['anzgleichzeitig'] > 1 && $shopexportArr['einzelsync']) {
- $data['anzgleichzeitig'] = 1;
- }
- if($holeallestati) {
- $data['holeallestati'] = 1;
- }
- }
- if($holealle) {
- $ab_nummer = $shopexportArr['ab_nummer'];
- $data['ab_nummer'] = $ab_nummer;
- if($holeallestati) {
- $data['holeallestati'] = 1;
- }
-
- return $this->RemoteCommand($shopId,'getauftrag', $data);
- }
- if(!empty($zeitraum)) {
- return $this->RemoteCommand($shopId,'getauftrag', $data);
- }
-
- return $this->RemoteCommand($shopId,'getauftrag');
- }
-
- /**
- * @param int $shopId
- * @param string $nummer
- *
- * @return mixed|string
- * @throws Exception
- */
- public function RemoteGetAuftragNummer($shopId, $nummer)
- {
- $holealle = $this->app->DB->Select("SELECT holealle FROM shopexport WHERE id = '$shopId' LIMIT 1");
- if($holealle)
- {
- $data = array('nummer' => $nummer);
-
- return $this->RemoteCommand($shopId,'getauftrag', $data);
+ /**
+ * @param int $shopId
+ *
+ * @return mixed
+ * @throws Exception
+ */
+ public function RemoteGetUpdateArticleList($shopId) {
+ return $this->RemoteCommand($shopId, 'getlist');
}
- return '';
- }
+ /**
+ * @param int $shopId
+ *
+ * @return mixed
+ * @throws Exception
+ */
+ public function RemoteGetFileList($shopId) {
+ return $this->RemoteCommand($shopId, 'getfilelist');
+ }
- /**
- * @param int $shopId
- *
- * @return mixed
- * @throws Exception
- */
- public function RemoteSendExportlink($shopId)
- {
- // passwort erzeugen , daten verschluesseln, wenn passwort neu link an kunden senden
- // alternativ artikel umfrage
- // $all = $this->app->DB->SelectArr("SELECT * FROM artikelgruppen WHERE shop='$id'");
+ /**
+ * @param int $shopId
+ * @param int|string $articleId
+ *
+ * @return mixed
+ * @throws Exception
+ */
+ public function RemoteGetFileListArticle($shopId, $article) {
+ $data['artikel'] = $article;
- // alle artikelid = 38 die in einem auftrag sind
+ return $this->RemoteCommand($shopId, 'getfilelistarticle', $data);
+ }
+ /**
+ * @param int $shopId
+ * @param array|string $data
+ *
+ * @return mixed|string
+ * @throws Exception
+ */
+ public function RemoteGetAuftraegeAnzahl($shopId, $data = '') {
+ if (!empty($data)) {
+ return $this->RemoteCommand($shopId, 'getauftraegeanzahl', $data);
+ }
+ $data = array();
+ $shopexportArr = $this->app->DB->SelectRow(sprintf('SELECT * FROM shopexport WHERE id = %d LIMIT 1', $shopId));
+ $holealle = $shopexportArr['holealle'];
+ $holeallestati = $shopexportArr['holeallestati'];
+ $zeitraum = [
+ 'datumvon' => $shopexportArr['datumvon'],
+ 'datumbis' => $shopexportArr['datumbis'],
+ 'tmpdatumvon' => $shopexportArr['tmpdatumvon'],
+ 'tmpdatumbis' => $shopexportArr['tmpdatumbis'],
+ 'anzgleichzeitig' => $shopexportArr['anzgleichzeitig'],
+ ];
+ if (!empty($zeitraum)) {
+ $data['datumvon'] = $zeitraum['datumvon'];
+ $data['datumbis'] = $zeitraum['datumbis'];
+ //if(strtotime($zeitraum[0]['tmpdatumbis']) > 0)$data['datumbis'] = $zeitraum[0]['tmpdatumbis'];
+ //if(strtotime($zeitraum[0]['tmpdatumvon']) > 0)$data['datumvon'] = $zeitraum[0]['tmpdatumbis'];
+ if ($data['datumvon'] === null || $data['datumvon'] === '0000-00-00 00:00:00' || strtotime($data['datumvon']) <= 0) {
+ $data['datumvon'] = '2000-01-01 00:00:00';
+ }
+ if ($data['datumbis'] === null || $data['datumbis'] === '0000-00-00 00:00:00' || strtotime($data['datumbis']) <= 0) {
+ $data['datumbis'] = date('Y-m-d H:i:s');
+ $data['datumbis_utc'] = $this->app->DB->Select('select date_sub(UTC_TIMESTAMP, INTERVAL 0 MINUTE)');
+ }
+ $data['anzgleichzeitig'] = $zeitraum[0]['anzgleichzeitig'];
+ if ($holeallestati && $data['anzgleichzeitig'] > 1) {
+ $data['holeallestati'] = 1;
+ }
+ }
+ if ($holealle) {
+ $ab_nummer = $shopexportArr['ab_nummer'];
+ $data = array('ab_nummer' => $ab_nummer);
+ if ($holeallestati) {
+ $data['holeallestati'] = 1;
+ }
- // usb90key
- $artikelid= 38;
+ return $this->RemoteCommand($shopId, 'getauftraegeanzahl', $data);
+ }
- $all = $this->app->DB->SelectArr("SELECT a.id as auftrag, a.adresse as adresse
+ return $this->RemoteCommand($shopId, 'getauftraegeanzahl');
+ }
+
+ /**
+ * @param int $shopId
+ * @param string $nummer
+ *
+ * @return mixed|string
+ * @throws Exception
+ */
+ public function RemoteGetAuftraegeAnzahlNummer($shopId, $nummer) {
+ $data = array('nummer' => $nummer);
+
+ return $this->RemoteCommand($shopId, 'getauftraegeanzahl', $data);
+ }
+
+ /**
+ * @param int $shopId
+ * @param null|array $data
+ *
+ * @return mixed|string
+ * @throws Exception
+ */
+ public function RemoteGetAuftrag($shopId, $data = null) {
+ if (!empty($data)) {
+ return $this->RemoteCommand($shopId, 'getauftrag', $data);
+ }
+ $data = array();
+
+ $shopexportArr = $this->app->DB->SelectRow(
+ sprintf(
+ 'SELECT * FROM shopexport WHERE id = %d LIMIT 1',
+ $shopId
+ )
+ );
+ $holealle = $shopexportArr['holealle'];
+ $holeallestati = $shopexportArr['holeallestati'];
+ $zeitraum = [
+ 'datumvon' => $shopexportArr['datumvon'],
+ 'datumbis' => $shopexportArr['datumbis'],
+ 'tmpdatumvon' => $shopexportArr['tmpdatumvon'],
+ 'tmpdatumbis' => $shopexportArr['tmpdatumbis'],
+ 'anzgleichzeitig' => $shopexportArr['anzgleichzeitig'],
+ ];
+ if (!empty($zeitraum)) {
+ $data['datumvon'] = $zeitraum['datumvon'];
+ $data['datumbis'] = $zeitraum['datumbis'];
+ if ($zeitraum['tmpdatumbis'] !== null && $zeitraum['tmpdatumbis'] !== '0000-00-00 00:00:00' &&
+ strtotime($zeitraum['tmpdatumbis']) > 0) {
+ $data['datumbis'] = $zeitraum['tmpdatumbis'];
+ }
+ //if(strtotime($zeitraum[0]['tmpdatumvon']) > 0)$data['datumvon'] = $zeitraum[0]['tmpdatumbis'];
+ if ($data['datumvon'] === null || $data['datumvon'] === '0000-00-00 00:00:00' || strtotime($data['datumvon']) <= 0) {
+ $data['datumvon'] = '2000-01-01 00:00:00';
+ }
+ if ($data['datumbis'] === null || $data['datumbis'] === '0000-00-00 00:00:00' || strtotime($data['datumbis']) <= 0) {
+ $data['datumbis'] = date('Y-m-d H:i:s');
+ $data['datumbis_utc'] = $this->app->DB->Select('select date_sub(UTC_TIMESTAMP, INTERVAL 0 MINUTE)');
+ }
+ $data['anzgleichzeitig'] = $zeitraum['anzgleichzeitig'];
+ if ($data['anzgleichzeitig'] > 1 && $shopexportArr['einzelsync']) {
+ $data['anzgleichzeitig'] = 1;
+ }
+ if ($holeallestati) {
+ $data['holeallestati'] = 1;
+ }
+ }
+ if ($holealle) {
+ $ab_nummer = $shopexportArr['ab_nummer'];
+ $data['ab_nummer'] = $ab_nummer;
+ if ($holeallestati) {
+ $data['holeallestati'] = 1;
+ }
+
+ return $this->RemoteCommand($shopId, 'getauftrag', $data);
+ }
+ if (!empty($zeitraum)) {
+ return $this->RemoteCommand($shopId, 'getauftrag', $data);
+ }
+
+ return $this->RemoteCommand($shopId, 'getauftrag');
+ }
+
+ /**
+ * @param int $shopId
+ * @param string $nummer
+ *
+ * @return mixed|string
+ * @throws Exception
+ */
+ public function RemoteGetAuftragNummer($shopId, $nummer) {
+ $holealle = $this->app->DB->Select("SELECT holealle FROM shopexport WHERE id = '$shopId' LIMIT 1");
+ if ($holealle) {
+ $data = array('nummer' => $nummer);
+
+ return $this->RemoteCommand($shopId, 'getauftrag', $data);
+ }
+
+ return '';
+ }
+
+ /**
+ * @param int $shopId
+ *
+ * @return mixed
+ * @throws Exception
+ */
+ public function RemoteSendExportlink($shopId) {
+ // passwort erzeugen , daten verschluesseln, wenn passwort neu link an kunden senden
+ // alternativ artikel umfrage
+ // $all = $this->app->DB->SelectArr("SELECT * FROM artikelgruppen WHERE shop='$id'");
+ // alle artikelid = 38 die in einem auftrag sind
+ // usb90key
+ $artikelid = 38;
+
+ $all = $this->app->DB->SelectArr("SELECT a.id as auftrag, a.adresse as adresse
FROM auftrag_position ap
LEFT JOIN auftrag a ON a.id=ap.auftrag
WHERE ap.artikel='$artikelid' AND ap.geliefert_menge < ap.menge AND a.status!='storniert'
AND a.status!='abgeschlossen'");
- // mail mit url senden
- if(empty($all)) {
- return '';
- }
- $loop = 0;
- $call = (!empty($all)?count($all):0);
- for($i=0;$i<$call;$i++)
- {
- $auftragid = $all[$i]['auftrag'];
- $adresse = $all[$i]['adresse'];
+ // mail mit url senden
+ if (empty($all)) {
+ return '';
+ }
+ $loop = 0;
+ $call = (!empty($all) ? count($all) : 0);
+ for ($i = 0; $i < $call; $i++) {
+ $auftragid = $all[$i]['auftrag'];
+ $adresse = $all[$i]['adresse'];
- $grund = 'artikel';
+ $grund = 'artikel';
- $check = $this->app->DB->Select("SELECT reg FROM exportlink_sent WHERE adresse='$adresse' AND objekt='$artikelid' AND ident='$auftragid' LIMIT 1");
+ $check = $this->app->DB->Select("SELECT reg FROM exportlink_sent WHERE adresse='$adresse' AND objekt='$artikelid' AND ident='$auftragid' LIMIT 1");
- if($check=='')
- {
- $checkreg = 1;
- while($checkreg!='')
- {
- $token1 = md5(uniqid(rand(), true));
- $token2 = md5(uniqid(rand(), true));
+ if ($check == '') {
+ $checkreg = 1;
+ while ($checkreg != '') {
+ $token1 = md5(uniqid(rand(), true));
+ $token2 = md5(uniqid(rand(), true));
- $token3 = md5(uniqid(rand(), true));
- $token4 = md5(uniqid(rand(), true));
+ $token3 = md5(uniqid(rand(), true));
+ $token4 = md5(uniqid(rand(), true));
- $zufall = $token1 . '-' . $token2;
- $zufall = md5($zufall);
+ $zufall = $token1 . '-' . $token2;
+ $zufall = md5($zufall);
- $zufall2 = $token3 . '-' . $token4;
- $zufall2 = md5($zufall2);
+ $zufall2 = $token3 . '-' . $token4;
+ $zufall2 = md5($zufall2);
- $reg = md5($zufall2.$zufall);
+ $reg = md5($zufall2 . $zufall);
- $checkreg = $this->app->DB->Select("SELECT reg FROM exportlink_sent WHERE reg='$reg' LIMIT 1");
+ $checkreg = $this->app->DB->Select("SELECT reg FROM exportlink_sent WHERE reg='$reg' LIMIT 1");
+ }
+
+ // pruefen ob es zahl schon gibt sonst nochmal
+
+ $data[$loop]['reg'] = $reg;
+ $data[$loop]['grund'] = $grund;
+ $data[$loop]['objekt'] = $artikelid; // artikel id
+ $data[$loop]['ident'] = $auftragid; //
+ $loop++;
+
+ $this->app->DB->Insert("INSERT INTO exportlink_sent (reg,grund,objekt,ident,adresse,datum) VALUES ($reg','$grund','$artikelid','$auftragid','$adresse',NOW())");
+ }
}
- // pruefen ob es zahl schon gibt sonst nochmal
-
- $data[$loop]['reg'] = $reg;
- $data[$loop]['grund'] = $grund;
- $data[$loop]['objekt'] = $artikelid; // artikel id
- $data[$loop]['ident'] = $auftragid;//
- $loop++;
-
- $this->app->DB->Insert("INSERT INTO exportlink_sent (reg,grund,objekt,ident,adresse,datum) VALUES ($reg','$grund','$artikelid','$auftragid','$adresse',NOW())");
- }
+ return $this->RemoteCommand($shopId, 'exportlink', $data);
}
- return $this->RemoteCommand($shopId,'exportlink',$data);
- }
+ /**
+ * @param int $shopId
+ *
+ * @return mixed
+ * @throws Exception
+ */
+ public function RemoteSendNavigation($shopId) {
+ //$data[0] = array('aasas','asddd');
- /**
- * @param int $shopId
- *
- * @return mixed
- * @throws Exception
- */
- public function RemoteSendNavigation($shopId)
- {
- //$data[0] = array('aasas','asddd');
+ $all = $this->app->DB->SelectArr("SELECT * FROM shopnavigation WHERE shop='$shopId'");
+ $call = $all ? count($all) : 0;
+ $data = $call > 0 ? array() : null;
+ for ($i = 0; $i < $call; $i++) {
+ $data[$i]['id'] = $all[$i]['id'];
+ $data[$i]['bezeichnung'] = $all[$i]['bezeichnung'];
+ $data[$i]['position'] = $all[$i]['position'];
+ $data[$i]['parent'] = $all[$i]['parent'];
+ $data[$i]['bezeichnung_en'] = $all[$i]['bezeichnung_en'];
+ $data[$i]['plugin'] = $all[$i]['plugin'];
+ $data[$i]['pluginparameter'] = $all[$i]['pluginparameter'];
+ $data[$i]['target'] = $all[$i]['target'];
+ }
- $all = $this->app->DB->SelectArr("SELECT * FROM shopnavigation WHERE shop='$shopId'");
- $call = $all?count($all):0;
- $data = $call > 0?array():null;
- for($i=0;$i<$call;$i++)
- {
- $data[$i]['id'] = $all[$i]['id'];
- $data[$i]['bezeichnung'] = $all[$i]['bezeichnung'];
- $data[$i]['position'] = $all[$i]['position'];
- $data[$i]['parent'] = $all[$i]['parent'];
- $data[$i]['bezeichnung_en'] = $all[$i]['bezeichnung_en'];
- $data[$i]['plugin'] = $all[$i]['plugin'];
- $data[$i]['pluginparameter'] = $all[$i]['pluginparameter'];
- $data[$i]['target'] = $all[$i]['target'];
+ return $this->RemoteCommand($shopId, 'navigation', $data);
}
- return $this->RemoteCommand($shopId,'navigation',$data);
- }
-
- /**
- * @param int $shopId
- *
- * @return mixed|string
- * @throws Exception
- */
- public function RemoteSendArtikelgruppen($shopId)
- {
- $all = $this->app->DB->SelectArr("SELECT id, bezeichnung,bezeichnung_en,beschreibung_de,beschreibung_en
+ /**
+ * @param int $shopId
+ *
+ * @return mixed|string
+ * @throws Exception
+ */
+ public function RemoteSendArtikelgruppen($shopId) {
+ $all = $this->app->DB->SelectArr("SELECT id, bezeichnung,bezeichnung_en,beschreibung_de,beschreibung_en
FROM artikelgruppen WHERE shop='$shopId'");
- if(empty($all)) {
- return '';
+ if (empty($all)) {
+ return '';
+ }
+
+ return $this->RemoteCommand($shopId, 'artikelgruppen', $all);
}
- return $this->RemoteCommand($shopId,'artikelgruppen',$all);
- }
+ /**
+ * @param int $shopId
+ *
+ * @return mixed
+ * @throws Exception
+ */
+ public function RemoteSendInhalt($shopId) {
+ $all = $this->app->DB->SelectArr("SELECT * FROM inhalt WHERE shop='$shopId' AND aktiv=1");
+ if (empty($all)) {
+ return '';
+ }
+ $call = (!empty($all) ? count($all) : 0);
- /**
- * @param int $shopId
- *
- * @return mixed
- * @throws Exception
- */
- public function RemoteSendInhalt($shopId)
- {
- $all = $this->app->DB->SelectArr("SELECT * FROM inhalt WHERE shop='$shopId' AND aktiv=1");
- if(empty($all)) {
- return '';
- }
- $call = (!empty($all)?count($all):0);
+ $data = array();
+ for ($i = 0; $i < $call; $i++) {
+ $data[$i]['sprache'] = $all[$i]['sprache'];
+ $data[$i]['inhalt'] = $all[$i]['inhalt'];
+ $data[$i]['kurztext'] = $all[$i]['kurztext'];
+ $data[$i]['html'] = $all[$i]['html'];
+ $data[$i]['title'] = $all[$i]['title'];
+ $data[$i]['description'] = $all[$i]['description'];
+ $data[$i]['keywords'] = $all[$i]['keywords'];
+ $data[$i]['inhaltstyp'] = $all[$i]['inhaltstyp'];
+ $data[$i]['template'] = $all[$i]['template'];
+ $data[$i]['finalparse'] = $all[$i]['finalparse'];
+ $data[$i]['navigation'] = $all[$i]['navigation'];
+ $data[$i]['sichtbarbis'] = $all[$i]['sichtbarbis'];
+ $data[$i]['datum'] = $all[$i]['datum'];
+ $data[$i]['aktiv'] = $all[$i]['aktiv'];
+ }
- $data = array();
- for ($i = 0; $i < $call; $i++) {
- $data[$i]['sprache'] = $all[$i]['sprache'];
- $data[$i]['inhalt'] = $all[$i]['inhalt'];
- $data[$i]['kurztext'] = $all[$i]['kurztext'];
- $data[$i]['html'] = $all[$i]['html'];
- $data[$i]['title'] = $all[$i]['title'];
- $data[$i]['description'] = $all[$i]['description'];
- $data[$i]['keywords'] = $all[$i]['keywords'];
- $data[$i]['inhaltstyp'] = $all[$i]['inhaltstyp'];
- $data[$i]['template'] = $all[$i]['template'];
- $data[$i]['finalparse'] = $all[$i]['finalparse'];
- $data[$i]['navigation'] = $all[$i]['navigation'];
- $data[$i]['sichtbarbis'] = $all[$i]['sichtbarbis'];
- $data[$i]['datum'] = $all[$i]['datum'];
- $data[$i]['aktiv'] = $all[$i]['aktiv'];
+ return $this->RemoteCommand($shopId, 'inhalt', $data);
}
- return $this->RemoteCommand($shopId, 'inhalt', $data);
- }
+ /**
+ * @param int $shopId
+ *
+ * @return mixed
+ * @throws Exception
+ */
+ public function RemoteSendArtikelArtikelgruppen($shopId) {
+ $all = $this->app->DB->SelectArr('SELECT * FROM artikel_artikelgruppe');
+ $call = $all ? count($all) : 0;
+ if ($call > 0) {
+ $data = array();
+ for ($i = 0; $i < $call; $i++) {
+ $data[$i]['id'] = $all[$i]['id'];
+ $data[$i]['artikel'] = $all[$i]['artikel'];
+ $data[$i]['artikelgruppe'] = $all[$i]['artikelgruppe'];
+ $data[$i]['position'] = $all[$i]['position'];
+ }
- /**
- * @param int $shopId
- *
- * @return mixed
- * @throws Exception
- */
- public function RemoteSendArtikelArtikelgruppen($shopId)
- {
- $all = $this->app->DB->SelectArr('SELECT * FROM artikel_artikelgruppe');
- $call = $all?count($all):0;
- if($call > 0){
- $data = array();
- for ($i = 0; $i < $call; $i++) {
- $data[$i]['id'] = $all[$i]['id'];
- $data[$i]['artikel'] = $all[$i]['artikel'];
- $data[$i]['artikelgruppe'] = $all[$i]['artikelgruppe'];
- $data[$i]['position'] = $all[$i]['position'];
- }
+ return $this->RemoteCommand($shopId, 'artikelartikelgruppen', $data);
+ }
- return $this->RemoteCommand($shopId, 'artikelartikelgruppen', $data);
+ return '';
}
- return '';
- }
-
- /**
- * @param int $shopId
- * @param string $tabelle
- * @param int $intid
- * @param int $intid2
- *
- * @return mixed
- */
- public function GetShopexportMappingExt($shopId, $tabelle, $intid, $intid2 = 0)
- {
- return $this->app->DB->Select("SELECT extid
+ /**
+ * @param int $shopId
+ * @param string $tabelle
+ * @param int $intid
+ * @param int $intid2
+ *
+ * @return mixed
+ */
+ public function GetShopexportMappingExt($shopId, $tabelle, $intid, $intid2 = 0) {
+ return $this->app->DB->Select("SELECT extid
FROM shopexport_mapping
- WHERE shop = '$shopId' AND tabelle = '$tabelle' AND intid = '$intid' ".($intid2?" AND intid2 = '$intid2' ":'')." LIMIT 1");
- }
+ WHERE shop = '$shopId' AND tabelle = '$tabelle' AND intid = '$intid' " . ($intid2 ? " AND intid2 = '$intid2' " : '') . " LIMIT 1");
+ }
- /**
- * @param int $shopId
- * @param string $tabelle
- * @param string $extid
- * @param int $intid2
- *
- * @return mixed
- */
- protected function GetShopexportMappingInt($shopId, $tabelle, $extid, $intid2 = 0)
- {
- return $this->app->DB->Select("SELECT intid
+ /**
+ * @param int $shopId
+ * @param string $tabelle
+ * @param string $extid
+ * @param int $intid2
+ *
+ * @return mixed
+ */
+ protected function GetShopexportMappingInt($shopId, $tabelle, $extid, $intid2 = 0) {
+ return $this->app->DB->Select("SELECT intid
FROM shopexport_mapping
- WHERE shop = '$shopId' AND tabelle = '$tabelle' AND extid = '$extid' ".($intid2?" AND intid2 = '$intid2' ":'')."
+ WHERE shop = '$shopId' AND tabelle = '$tabelle' AND extid = '$extid' " . ($intid2 ? " AND intid2 = '$intid2' " : '') . "
LIMIT 1");
- }
+ }
- /**
- * @param int $shop
- * @param string $tabelle
- * @param int $intid
- * @param string $extid
- * @param int $intid2
- *
- * @return mixed
- */
- public function ShopexportMappingSet($shop, $tabelle, $intid, $extid, $intid2 = 0)
- {
- $check = $this->app->DB->Select("SELECT id FROM shopexport_mapping
+ /**
+ * @param int $shop
+ * @param string $tabelle
+ * @param int $intid
+ * @param string $extid
+ * @param int $intid2
+ *
+ * @return mixed
+ */
+ public function ShopexportMappingSet($shop, $tabelle, $intid, $extid, $intid2 = 0) {
+ $check = $this->app->DB->Select("SELECT id FROM shopexport_mapping
WHERE shop = '$shop' AND tabelle = '$tabelle' AND intid = '$intid' AND intid2 = '$intid2' LIMIT 1");
- if(!$check)
- {
- $this->app->DB->Insert("INSERT INTO shopexport_mapping (shop, tabelle, intid, intid2, extid, zeitstempel)
+ if (!$check) {
+ $this->app->DB->Insert("INSERT INTO shopexport_mapping (shop, tabelle, intid, intid2, extid, zeitstempel)
VALUES ('$shop', '$tabelle', '$intid', '$intid2', '$extid', now())");
- return $this->app->DB->GetInsertID();
- }
- $this->app->DB->Update("UPDATE shopexport_mapping SET extid = '$extid' WHERE id = '$check' LIMIT 1");
+ return $this->app->DB->GetInsertID();
+ }
+ $this->app->DB->Update("UPDATE shopexport_mapping SET extid = '$extid' WHERE id = '$check' LIMIT 1");
- return $check;
- }
+ return $check;
+ }
- /**
- * @param int $id
- * @param string $nummer
- * @param bool $create
- *
- * @return mixed
- * @throws Exception
- */
- public function RemoteGetArticle($id,$nummer, $create = false)
- {
- if($create)
- {
- $data['nummerintern'] = $nummer;
- }else {
- $data['nummer'] = $nummer;
- }
- $ret = $this->RemoteCommand($id,'getarticle',$data);
- $variante_von = null;
- //if(!$create)return $ret;
- $_nummer = null;
- $shopexportArr = $this->app->DB->SelectRow("SELECT * FROM shopexport WHERE id = '$id' LIMIT 1");
- $projekt = $shopexportArr['projekt'];
- $nurneueartikel = $shopexportArr['nurneueartikel'];
- $artikelnummerbeimanlegenausshop = $shopexportArr['artikelnummerbeimanlegenausshop'];
- if(!$create){
- $nurneueartikel = false;
- }
- if(!isset($ret['nummer']) && isset($ret[0]) && isset($ret[0]['nummer']))
- {
- $reta = $ret;
- }elseif(isset($ret['nummer']))
- {
- $reta[] = $ret;
- }elseif(isset($ret[0]) && isset($ret[0]['name'])){
- $ret[0]['nummer'] = '';//$nummer;
- $reta = $ret;
- }elseif(isset($ret['name'])){
- $ret['nummer'] = '';//$nummer;
- $reta[] = $ret;
- }else
- {
- return $ret;
- }
- if(!$reta || !is_array($reta))
- {
- return $ret;
- }
- $stuecklistenmechanik = false;
- $variantevonorig = null;
- $steuersatz_normal = $this->app->erp->Firmendaten('steuersatz_normal');
- $steuersatz_ermaessigt = $this->app->erp->Firmendaten('steuersatz_ermaessigt');
- if(empty($steuersatz_ermaessigt))
- {
- $steuersatz_ermaessigt = 7;
- }
- if(empty($steuersatz_normal))
- {
- $steuersatz_normal = 19;
- }
- $crossellingInstalled = $this->app->erp->ModulVorhanden('crossselling');
- foreach($reta as $k => $ret)
- {
- if(isset($ret['stueckliste'])){
- $stuecklistenmechanik = $ret['stueckliste'];
- }
- $ret['nummer'] = $this->app->DB->real_escape_string(trim($ret['nummer']));
- $articleid = null;
- if($k == 0)
- {
- $articleid = $this->app->erp->GetArticleIDFromShopnumber($id, $nummer,true);
- if($articleid)
- {
- $variantevonorig = $this->app->DB->Select("SELECT variante_von
+ /**
+ * @param int $id
+ * @param string $nummer
+ * @param bool $create
+ *
+ * @return mixed
+ * @throws Exception
+ */
+ public function RemoteGetArticle($id, $nummer, $create = false) {
+ if ($create) {
+ $data['nummerintern'] = $nummer;
+ } else {
+ $data['nummer'] = $nummer;
+ }
+ $ret = $this->RemoteCommand($id, 'getarticle', $data);
+ $variante_von = null;
+ //if(!$create)return $ret;
+ $_nummer = null;
+ $shopexportArr = $this->app->DB->SelectRow("SELECT * FROM shopexport WHERE id = '$id' LIMIT 1");
+ $projekt = $shopexportArr['projekt'];
+ $nurneueartikel = $shopexportArr['nurneueartikel'];
+ $artikelnummerbeimanlegenausshop = $shopexportArr['artikelnummerbeimanlegenausshop'];
+ if (!$create) {
+ $nurneueartikel = false;
+ }
+ if (!isset($ret['nummer']) && isset($ret[0]) && isset($ret[0]['nummer'])) {
+ $reta = $ret;
+ } elseif (isset($ret['nummer'])) {
+ $reta[] = $ret;
+ } elseif (isset($ret[0]) && isset($ret[0]['name'])) {
+ $ret[0]['nummer'] = ''; //$nummer;
+ $reta = $ret;
+ } elseif (isset($ret['name'])) {
+ $ret['nummer'] = ''; //$nummer;
+ $reta[] = $ret;
+ } else {
+ return $ret;
+ }
+ if (!$reta || !is_array($reta)) {
+ return $ret;
+ }
+ $stuecklistenmechanik = false;
+ $variantevonorig = null;
+ $steuersatz_normal = $this->app->erp->Firmendaten('steuersatz_normal');
+ $steuersatz_ermaessigt = $this->app->erp->Firmendaten('steuersatz_ermaessigt');
+ if (empty($steuersatz_ermaessigt)) {
+ $steuersatz_ermaessigt = 7;
+ }
+ if (empty($steuersatz_normal)) {
+ $steuersatz_normal = 19;
+ }
+ $crossellingInstalled = $this->app->erp->ModulVorhanden('crossselling');
+ foreach ($reta as $k => $ret) {
+ if (isset($ret['stueckliste'])) {
+ $stuecklistenmechanik = $ret['stueckliste'];
+ }
+ $ret['nummer'] = $this->app->DB->real_escape_string(trim($ret['nummer']));
+ $articleid = null;
+ if ($k == 0) {
+ $articleid = $this->app->erp->GetArticleIDFromShopnumber($id, $nummer, true);
+ if ($articleid) {
+ $variantevonorig = $this->app->DB->Select("SELECT variante_von
FROM artikel
WHERE id = '$articleid' AND variante = 1
LIMIT 1");
- if(!$variantevonorig)
- {
- $articleid = $this->app->DB->Select("SELECT id
+ if (!$variantevonorig) {
+ $articleid = $this->app->DB->Select("SELECT id
FROM artikel
WHERE id = '$articleid' AND ifnull(geloescht,0) = 0 AND nummer <> 'DEL'
LIMIT 1");
- }
- }
- }
- if((isset($ret['nummerintern']) && $ret['nummerintern'] != '') && !$articleid)
- {
- $articleid = $this->app->erp->GetArticleIDFromShopnumber($id, $ret['nummerintern']);
- }
- if(($ret['nummer'] != '') && !$articleid)
- {
- $articleid = $this->app->erp->GetArticleIDFromShopnumber($id, $ret['nummer']);
- }
- if(($ret['ean'] != '') && !$articleid)
- {
- $articleid = $this->app->erp->GetArticleIDFromShopnumber($id, $ret['ean']);
- }
- if($articleid)
- {
- if(isset($ret['shoparticleid']) && $ret['shoparticleid'] != '' && trim($this->app->DB->real_escape_string($ret['shoparticleid'])) != '')
- {
- if(!$this->app->DB->Select("SELECT id FROM `artikelnummer_fremdnummern` WHERE shopid = '$id' AND artikel = '$articleid' AND nummer = '".trim($this->app->DB->real_escape_string($ret['shoparticleid']))."' LIMIT 1"))
- {
- $this->app->DB->Insert("INSERT INTO `artikelnummer_fremdnummern` (artikel, shopid, aktiv, nummer, bezeichnung)
- VALUES ('$articleid','$id','1','".trim($this->app->DB->real_escape_string($ret['shoparticleid']))."','SHOPID')");
- }
- }
- }
- if(!$articleid && !$create)
- {
- continue;
- }
- if(!$articleid || !$nurneueartikel)
- {
- if($articleid)
- {
- $arr['id'] = $articleid;
- $arr['nummer'] = $this->app->DB->Select("SELECT nummer FROM artikel WHERE id = '$articleid' LIMIT 1");
- }elseif($ret['nummer'] == '')
- {
- $arr['nummer'] = $this->app->erp->GetNextArtikelnummer('',1,$shopexportArr['projekt']);
- }
- /*if(isset($ret['nummer']) && $ret['nummer'] == '' && !is_null($variante_von))
- {
- $ret['nummer'] = $_nummer.'-'.$ret['nummer'];
- $arr['nummer'] = $ret['nummer'];
- }*/
- if(isset($ret['stueckliste']) && empty($variante_von)){
- $arr['stueckliste'] = $ret['stueckliste'];
- }
- $arr['projekt'] = $shopexportArr['projekt'];
- $arr['name_de'] = $ret['name'];
- $arr['uebersicht_de'] = $ret['uebersicht_de'] ?? '';
- $arr['kurztext_de'] = $ret['kurztext_de'] ?? '';
- $arr['name_en'] = $ret['name_en'];
- $arr['uebersicht_en'] = $ret['uebersicht_en'] ?? '';
- $arr['kurztext_en'] = $ret['kurztext_en'] ?? '';
- $arr['metakeywords_de'] = $ret['metakeywords_de'] ?? '';
- $arr['metakeywords_en'] = $ret['metakeywords_en'] ?? '';
- $arr['metatitle_de'] = $ret['metatitle_de'] ?? '';
- $arr['metatitle_en'] = $ret['metatitle_en'] ?? '';
- $arr['metadescription_de'] = $ret['metadescription_de'] ?? '';
- $arr['metadescription_en'] = $ret['metadescription_en'] ?? '';
- //$arr['anabregs_text'] = isset($ret['uebersicht_de'])?$ret['uebersicht_de']:'';
- if(isset($ret['ean']) && $ret['ean'] != '')
- {
- $arr['ean'] = $ret['ean'];
- }
- if(isset($ret['gewicht']) && $ret['gewicht'] !== '')
- {
- $arr['gewicht'] = $ret['gewicht'];
- }
- if(isset($ret['laenge']) && $ret['laenge'] !== '')
- {
- $arr['laenge'] = $ret['laenge'];
- }
- if(isset($ret['hoehe']) && $ret['hoehe'] !== '')
- {
- $arr['hoehe'] = $ret['hoehe'];
- }
- if(isset($ret['breite']) && $ret['breite'] !== '')
- {
- $arr['breite'] = $ret['breite'];
- }
-
- if(!$articleid){
- $arr['lagerartikel'] = 1;
- }
- if(true)
- {
- if(!empty($ret['umsatzsteuer'])){
- if(is_numeric($ret['umsatzsteuer'])){
- if($ret['umsatzsteuer'] == $steuersatz_normal)
- {
- $arr['umsatzsteuer'] = 'normal';
- }elseif($ret['umsatzsteuer'] == $steuersatz_ermaessigt)
- {
- $arr['umsatzsteuer'] = 'ermaessigt';
- }
- }elseif(in_array($ret['umsatzsteuer'], array('normal', 'ermaessigt', 'befreit'))){
- $arr['umsatzsteuer'] = $ret['umsatzsteuer'];
+ }
+ }
}
- }
- }
+ if ((isset($ret['nummerintern']) && $ret['nummerintern'] != '') && !$articleid) {
+ $articleid = $this->app->erp->GetArticleIDFromShopnumber($id, $ret['nummerintern']);
+ }
+ if (($ret['nummer'] != '') && !$articleid) {
+ $articleid = $this->app->erp->GetArticleIDFromShopnumber($id, $ret['nummer']);
+ }
+ if (($ret['ean'] != '') && !$articleid) {
+ $articleid = $this->app->erp->GetArticleIDFromShopnumber($id, $ret['ean']);
+ }
+ if ($articleid) {
+ if (isset($ret['shoparticleid']) && $ret['shoparticleid'] != '' && trim($this->app->DB->real_escape_string($ret['shoparticleid'])) != '') {
+ if (!$this->app->DB->Select("SELECT id FROM `artikelnummer_fremdnummern` WHERE shopid = '$id' AND artikel = '$articleid' AND nummer = '" . trim($this->app->DB->real_escape_string($ret['shoparticleid'])) . "' LIMIT 1")) {
+ $this->app->DB->Insert("INSERT INTO `artikelnummer_fremdnummern` (artikel, shopid, aktiv, nummer, bezeichnung)
+ VALUES ('$articleid','$id','1','" . trim($this->app->DB->real_escape_string($ret['shoparticleid'])) . "','SHOPID')");
+ }
+ }
+ }
+ if (!$articleid && !$create) {
+ continue;
+ }
+ if (!$articleid || !$nurneueartikel) {
+ if ($articleid) {
+ $arr['id'] = $articleid;
+ $arr['nummer'] = $this->app->DB->Select("SELECT nummer FROM artikel WHERE id = '$articleid' LIMIT 1");
+ } elseif ($ret['nummer'] == '') {
+ $arr['nummer'] = $this->app->erp->GetNextArtikelnummer('', 1, $shopexportArr['projekt']);
+ }
+ /* if(isset($ret['nummer']) && $ret['nummer'] == '' && !is_null($variante_von))
+ {
+ $ret['nummer'] = $_nummer.'-'.$ret['nummer'];
+ $arr['nummer'] = $ret['nummer'];
+ } */
+ if (isset($ret['stueckliste']) && empty($variante_von)) {
+ $arr['stueckliste'] = $ret['stueckliste'];
+ }
+ $arr['projekt'] = $shopexportArr['projekt'];
+ $arr['name_de'] = $ret['name'];
+ $arr['uebersicht_de'] = $ret['uebersicht_de'] ?? '';
+ $arr['kurztext_de'] = $ret['kurztext_de'] ?? '';
+ $arr['name_en'] = $ret['name_en'];
+ $arr['uebersicht_en'] = $ret['uebersicht_en'] ?? '';
+ $arr['kurztext_en'] = $ret['kurztext_en'] ?? '';
+ $arr['metakeywords_de'] = $ret['metakeywords_de'] ?? '';
+ $arr['metakeywords_en'] = $ret['metakeywords_en'] ?? '';
+ $arr['metatitle_de'] = $ret['metatitle_de'] ?? '';
+ $arr['metatitle_en'] = $ret['metatitle_en'] ?? '';
+ $arr['metadescription_de'] = $ret['metadescription_de'] ?? '';
+ $arr['metadescription_en'] = $ret['metadescription_en'] ?? '';
+ //$arr['anabregs_text'] = isset($ret['uebersicht_de'])?$ret['uebersicht_de']:'';
+ if (isset($ret['ean']) && $ret['ean'] != '') {
+ $arr['ean'] = $ret['ean'];
+ }
+ if (isset($ret['gewicht']) && $ret['gewicht'] !== '') {
+ $arr['gewicht'] = $ret['gewicht'];
+ }
+ if (isset($ret['laenge']) && $ret['laenge'] !== '') {
+ $arr['laenge'] = $ret['laenge'];
+ }
+ if (isset($ret['hoehe']) && $ret['hoehe'] !== '') {
+ $arr['hoehe'] = $ret['hoehe'];
+ }
+ if (isset($ret['breite']) && $ret['breite'] !== '') {
+ $arr['breite'] = $ret['breite'];
+ }
- $arr['hersteller'] = $ret['hersteller'];
- if(!$stuecklistenmechanik && isset($ret['variante_von']) && !$articleid){
- $variantevon = $this->app->DB->Select("SELECT artikel
+ if (!$articleid) {
+ $arr['lagerartikel'] = 1;
+ }
+ if (true) {
+ if (!empty($ret['umsatzsteuer'])) {
+ if (is_numeric($ret['umsatzsteuer'])) {
+ if ($ret['umsatzsteuer'] == $steuersatz_normal) {
+ $arr['umsatzsteuer'] = 'normal';
+ } elseif ($ret['umsatzsteuer'] == $steuersatz_ermaessigt) {
+ $arr['umsatzsteuer'] = 'ermaessigt';
+ }
+ } elseif (in_array($ret['umsatzsteuer'], array('normal', 'ermaessigt', 'befreit'))) {
+ $arr['umsatzsteuer'] = $ret['umsatzsteuer'];
+ }
+ }
+ }
+
+ $arr['hersteller'] = $ret['hersteller'];
+ if (!$stuecklistenmechanik && isset($ret['variante_von']) && !$articleid) {
+ $variantevon = $this->app->DB->Select("SELECT artikel
FROM `artikelnummer_fremdnummern`
- WHERE shopid = '$id' AND aktiv = 1 AND nummer = '".trim($ret['variante_von'])."' AND nummer <> ''
+ WHERE shopid = '$id' AND aktiv = 1 AND nummer = '" . trim($ret['variante_von']) . "' AND nummer <> ''
LIMIT 1");
- if(empty($variantevon))
- {
- $variantevon = $this->app->DB->Select("SELECT id
+ if (empty($variantevon)) {
+ $variantevon = $this->app->DB->Select("SELECT id
FROM artikel
- WHERE ifnull(geloescht,0) = 0 AND nummer <> 'DEL' AND nummer <> '' AND nummer = '".trim($ret['variante_von'])."'
+ WHERE ifnull(geloescht,0) = 0 AND nummer <> 'DEL' AND nummer <> '' AND nummer = '" . trim($ret['variante_von']) . "'
ORDER BY projekt = '$projekt' DESC
LIMIT 1");
- }
- if(empty($variantevon))
- {
- $variantevon = $variantevonorig;
- }
- if(!empty($variantevon))
- {
- $arr['variante'] = 1;
- $arr['variante_von'] = $variantevon;
- }
- }elseif($variante_von)
- {
- if($variante_von)
- {
- $arr['variante'] = 1;
- }
- if($variante_von)
- {
- $arr['variante_von'] = $variante_von;
- }
- }
- $freifeldmapping = $this->app->DB->SelectArr("SELECT *
+ }
+ if (empty($variantevon)) {
+ $variantevon = $variantevonorig;
+ }
+ if (!empty($variantevon)) {
+ $arr['variante'] = 1;
+ $arr['variante_von'] = $variantevon;
+ }
+ } elseif ($variante_von) {
+ if ($variante_von) {
+ $arr['variante'] = 1;
+ }
+ if ($variante_von) {
+ $arr['variante_von'] = $variante_von;
+ }
+ }
+ $freifeldmapping = $this->app->DB->SelectArr("SELECT *
FROM shopexport_freifelder
WHERE shop = '$id' AND aktiv = 1 AND freifeld_shop <> '' AND freifeld_wawi <> ''");
- if(!empty($freifeldmapping))
- {
- foreach($freifeldmapping as $freifeldval)
- {
- $freifeldShopKey = 'freifeld_'.$freifeldval['freifeld_shop'];
- if(isset($ret[$freifeldShopKey]))
- {
- $arr[$freifeldval['freifeld_wawi']] = $ret[$freifeldShopKey];
- }
- }
- }
- $articleid = $this->app->erp->InsertUpdateArtikel($arr);
- unset($arr);
- if($artikelnummerbeimanlegenausshop && !empty($ret['artikelnummerausshop']))
- {
- $this->app->DB->Update("UPDATE artikel SET nummer = '".$ret['artikelnummerausshop']."' WHERE id = '$articleid'");
- }
-
- $ret['nummer'] = $this->app->DB->Select("SELECT nummer FROM artikel WHERE id = '$articleid' LIMIT 1");
- if(isset($ret['bilder']) && $ret['bilder'] && is_array($ret['bilder']))
- {
- $dateien = $this->app->DB->SelectArr("SELECT * FROM datei_stichwoerter ds INNER JOIN datei_version dv ON ds.datei = dv.datei AND ds.parameter = '$articleid' AND ds.objekt LIKE 'Artikel' ORDER BY ds.sort");
- if(empty($dateien))
- {
- foreach($ret['bilder'] as $v)
- {
- if($v['path'] != '' && $v['content'] != '')
- {
- $path_parts = pathinfo($v['path']);
- $tmpfilename = tempnam($this->app->erp->GetTMP(), 'img');
- file_put_contents($tmpfilename, base64_decode($v['content']));
- $fileid = $this->app->erp->CreateDatei($path_parts['basename'], 'Shopbild', '', '', $tmpfilename, 'Cronjob');
- $this->app->erp->AddDateiStichwort($fileid, 'Shopbild', 'artikel', $articleid);
- if (@is_file($tmpfilename))
- unlink($tmpfilename);
- }
- }
- }elseif($dateien[0]['subjekt'] === 'shopbild'){
- $this->app->DB->Update("UPDATE datei_stichwoerter SET subjekt = 'Shopbild' WHERE id = '".$dateien[0]['id']."' AND subjekt = 'shopbild' LIMIT 1");
- }
- }
- if($variante_von === null)
- {
- $variante_von = $articleid;
- $_nummer = $this->app->DB->Select("SELECT nummer FROM artikel WHERE id = '$articleid' LIMIT 1");
- $nummer = isset($ret['nummerintern'])?$ret['nummerintern']:(isset($ret['nummer'])?$ret['nummer']:'');
- }
- if(!empty($ret['preis_netto']) && $ret['preis_netto'] > 0)
- {
- $this->app->erp->AddVerkaufspreis($articleid,1,0,$ret['preis_netto']);
- }
-
- if(!empty($ret['bilder']) && is_array($ret['bilder']))
- {
- $dateien = $this->app->DB->SelectArr("SELECT *
+ if (!empty($freifeldmapping)) {
+ foreach ($freifeldmapping as $freifeldval) {
+ $freifeldShopKey = 'freifeld_' . $freifeldval['freifeld_shop'];
+ if (isset($ret[$freifeldShopKey])) {
+ $arr[$freifeldval['freifeld_wawi']] = $ret[$freifeldShopKey];
+ }
+ }
+ }
+ $articleid = $this->app->erp->InsertUpdateArtikel($arr);
+ unset($arr);
+ if ($artikelnummerbeimanlegenausshop && !empty($ret['artikelnummerausshop'])) {
+ $this->app->DB->Update("UPDATE artikel SET nummer = '" . $ret['artikelnummerausshop'] . "' WHERE id = '$articleid'");
+ }
+
+ $ret['nummer'] = $this->app->DB->Select("SELECT nummer FROM artikel WHERE id = '$articleid' LIMIT 1");
+ if (isset($ret['bilder']) && $ret['bilder'] && is_array($ret['bilder'])) {
+ $dateien = $this->app->DB->SelectArr("SELECT * FROM datei_stichwoerter ds INNER JOIN datei_version dv ON ds.datei = dv.datei AND ds.parameter = '$articleid' AND ds.objekt LIKE 'Artikel' ORDER BY ds.sort");
+ if (empty($dateien)) {
+ foreach ($ret['bilder'] as $v) {
+ if ($v['path'] != '' && $v['content'] != '') {
+ $path_parts = pathinfo($v['path']);
+ $tmpfilename = tempnam($this->app->erp->GetTMP(), 'img');
+ file_put_contents($tmpfilename, base64_decode($v['content']));
+ $fileid = $this->app->erp->CreateDatei($path_parts['basename'], 'Shopbild', '', '', $tmpfilename, 'Cronjob');
+ $this->app->erp->AddDateiStichwort($fileid, 'Shopbild', 'artikel', $articleid);
+ if (@is_file($tmpfilename))
+ unlink($tmpfilename);
+ }
+ }
+ } elseif ($dateien[0]['subjekt'] === 'shopbild') {
+ $this->app->DB->Update("UPDATE datei_stichwoerter SET subjekt = 'Shopbild' WHERE id = '" . $dateien[0]['id'] . "' AND subjekt = 'shopbild' LIMIT 1");
+ }
+ }
+ if ($variante_von === null) {
+ $variante_von = $articleid;
+ $_nummer = $this->app->DB->Select("SELECT nummer FROM artikel WHERE id = '$articleid' LIMIT 1");
+ $nummer = isset($ret['nummerintern']) ? $ret['nummerintern'] : (isset($ret['nummer']) ? $ret['nummer'] : '');
+ }
+ if (!empty($ret['preis_netto']) && $ret['preis_netto'] > 0) {
+ $this->app->erp->AddVerkaufspreis($articleid, 1, 0, $ret['preis_netto']);
+ }
+
+ if (!empty($ret['bilder']) && is_array($ret['bilder'])) {
+ $dateien = $this->app->DB->SelectArr("SELECT *
FROM datei_stichwoerter ds
INNER JOIN datei_version dv ON ds.datei = dv.datei AND ds.parameter = '$articleid' AND ds.objekt LIKE 'Artikel'
ORDER BY ds.sort");
- if(empty($dateien))
- {
- foreach($ret['bilder'] as $v)
- {
- if($v['path'] != '' && $v['content'] != '')
- {
- $path_parts = pathinfo($v['path']);
- $tmpfilename = tempnam($this->app->erp->GetTMP(), 'img');
- file_put_contents($tmpfilename, base64_decode($v['content']));
- $fileid = $this->app->erp->CreateDatei($path_parts['basename'], 'Shopbild', '', '', $tmpfilename, 'Cronjob');
- if(isset($v['id']))
- {
- $this->ShopexportMappingSet($id, 'datei', $fileid, $v['id'], $articleid);
+ if (empty($dateien)) {
+ foreach ($ret['bilder'] as $v) {
+ if ($v['path'] != '' && $v['content'] != '') {
+ $path_parts = pathinfo($v['path']);
+ $tmpfilename = tempnam($this->app->erp->GetTMP(), 'img');
+ file_put_contents($tmpfilename, base64_decode($v['content']));
+ $fileid = $this->app->erp->CreateDatei($path_parts['basename'], 'Shopbild', '', '', $tmpfilename, 'Cronjob');
+ if (isset($v['id'])) {
+ $this->ShopexportMappingSet($id, 'datei', $fileid, $v['id'], $articleid);
+ }
+ $this->app->erp->AddDateiStichwort($fileid, 'Shopbild', 'artikel', $articleid);
+ if (@is_file($tmpfilename))
+ unlink($tmpfilename);
+ }
+ }
+ }
}
- $this->app->erp->AddDateiStichwort($fileid, 'Shopbild', 'artikel', $articleid);
- if (@is_file($tmpfilename))
- unlink($tmpfilename);
- }
- }
- }
- }
- if($crossellingInstalled){
- if(!empty($ret['crossselling'])){
- if(!empty($ret['crossselling']['similar'])){
- foreach ($ret['crossselling']['similar'] as $cskey => $csvalue) {
- $crosssellingartikel = $this->app->DB->Select("SELECT id from artikel WHERE nummer= '".$csvalue."' and geloescht='0'");
- if($crosssellingartikel){
- if(!$this->app->DB->Select("SELECT id FROM crossselling_artikel WHERE artikel='$articleid' AND crosssellingartikel='$crosssellingartikel' AND shop='$id'")){
- $sort = $this->app->DB->Select("SELECT MAX(sort)+1 from crossselling_artikel WHERE artikel='$articleid' AND shop='$id'");
- $this->app->DB->Insert("INSERT INTO crossselling_artikel (aktiv, art, artikel, crosssellingartikel, shop, sort, bemerkung) VALUES ('1','1','$articleid','$crosssellingartikel','$id','$sort','Über Artikelimport hinzugefügt')");
- }
+ if ($crossellingInstalled) {
+ if (!empty($ret['crossselling'])) {
+ if (!empty($ret['crossselling']['similar'])) {
+ foreach ($ret['crossselling']['similar'] as $cskey => $csvalue) {
+ $crosssellingartikel = $this->app->DB->Select("SELECT id from artikel WHERE nummer= '" . $csvalue . "' and geloescht='0'");
+ if ($crosssellingartikel) {
+ if (!$this->app->DB->Select("SELECT id FROM crossselling_artikel WHERE artikel='$articleid' AND crosssellingartikel='$crosssellingartikel' AND shop='$id'")) {
+ $sort = $this->app->DB->Select("SELECT MAX(sort)+1 from crossselling_artikel WHERE artikel='$articleid' AND shop='$id'");
+ $this->app->DB->Insert("INSERT INTO crossselling_artikel (aktiv, art, artikel, crosssellingartikel, shop, sort, bemerkung) VALUES ('1','1','$articleid','$crosssellingartikel','$id','$sort','Über Artikelimport hinzugefügt')");
+ }
+ }
+ }
+ }
+ if (!empty($ret['crossselling']['related'])) {
+ foreach ($ret['crossselling']['related'] as $cskey => $csvalue) {
+ $crosssellingartikel = $this->app->DB->Select("SELECT id from artikel WHERE nummer= '" . $csvalue . "' and geloescht='0'");
+ if ($crosssellingartikel) {
+ if (!$this->app->DB->Select("SELECT id FROM crossselling_artikel WHERE artikel='$articleid' AND crosssellingartikel='$crosssellingartikel' AND shop='$id'")) {
+ $sort = $this->app->DB->Select("SELECT MAX(sort)+1 from crossselling_artikel WHERE artikel='$articleid' AND shop='$id'");
+ $this->app->DB->Insert("INSERT INTO crossselling_artikel (aktiv, art, artikel, crosssellingartikel, shop, sort, bemerkung) VALUES ('1','2','$articleid','$crosssellingartikel','$id','$sort','Über Artikelimport hinzugefügt')");
+ }
+ }
+ }
+ }
+ }
}
- }
- }
- if(!empty($ret['crossselling']['related'])){
- foreach ($ret['crossselling']['related'] as $cskey => $csvalue) {
- $crosssellingartikel = $this->app->DB->Select("SELECT id from artikel WHERE nummer= '".$csvalue."' and geloescht='0'");
- if($crosssellingartikel){
- if(!$this->app->DB->Select("SELECT id FROM crossselling_artikel WHERE artikel='$articleid' AND crosssellingartikel='$crosssellingartikel' AND shop='$id'")){
- $sort = $this->app->DB->Select("SELECT MAX(sort)+1 from crossselling_artikel WHERE artikel='$articleid' AND shop='$id'");
- $this->app->DB->Insert("INSERT INTO crossselling_artikel (aktiv, art, artikel, crosssellingartikel, shop, sort, bemerkung) VALUES ('1','2','$articleid','$crosssellingartikel','$id','$sort','Über Artikelimport hinzugefügt')");
- }
- }
- }
- }
- }
- }
- $katext = 0;
- if(isset($ret['kategorien_all']) && $ret['kategorien_all'])
- {
- foreach($ret['kategorien_all'] as $v)
- {
- if($katext == 0 && $v['parent'] == 0)
- {
- $katext = $v['id'];
- }
- if(!$this->app->DB->Select("SELECT id
+ $katext = 0;
+ if (isset($ret['kategorien_all']) && $ret['kategorien_all']) {
+ foreach ($ret['kategorien_all'] as $v) {
+ if ($katext == 0 && $v['parent'] == 0) {
+ $katext = $v['id'];
+ }
+ if (!$this->app->DB->Select("SELECT id
FROM shopexport_kategorien
- WHERE shop = '$id' AND extid = '".$this->app->DB->real_escape_string($v['id'])."' LIMIT 1")){
- $this->app->DB->Insert("INSERT INTO shopexport_kategorien (shop, extid, aktiv,extname,extparent,extsort) VALUES
- ('$id','" . $this->app->DB->real_escape_string($v['id']) . "','" . (int)$v['aktiv'] . "','" . $this->app->DB->real_escape_string($v['name']) . "','" . $this->app->DB->real_escape_string($v['parent']) . "','" . (int)$v['sort'] . "')");
- }
- }
- $shopkategorien = $this->getShopKatgeorien($id);
- /** @var Onlineshops $onlineShopObj */
- $onlineShopObj = $this->app->loadModule('onlineshops');
- $categoryRootId = 0;
- if(!empty($onlineShopObj) && method_exists($onlineShopObj, 'getJsonSettings')) {
- $categoryRootId = (int)$onlineShopObj->getJsonSettings($id, 'category_root_id');
- }
- $kategorientoint = [$categoryRootId];
+ WHERE shop = '$id' AND extid = '" . $this->app->DB->real_escape_string($v['id']) . "' LIMIT 1")) {
+ $this->app->DB->Insert("INSERT INTO shopexport_kategorien (shop, extid, aktiv,extname,extparent,extsort) VALUES
+ ('$id','" . $this->app->DB->real_escape_string($v['id']) . "','" . (int) $v['aktiv'] . "','" . $this->app->DB->real_escape_string($v['name']) . "','" . $this->app->DB->real_escape_string($v['parent']) . "','" . (int) $v['sort'] . "')");
+ }
+ }
+ $shopkategorien = $this->getShopKatgeorien($id);
+ /** @var Onlineshops $onlineShopObj */
+ $onlineShopObj = $this->app->loadModule('onlineshops');
+ $categoryRootId = 0;
+ if (!empty($onlineShopObj) && method_exists($onlineShopObj, 'getJsonSettings')) {
+ $categoryRootId = (int) $onlineShopObj->getJsonSettings($id, 'category_root_id');
+ }
+ $kategorientoint = [$categoryRootId];
- if(!empty($shopkategorien))
- {
- foreach($shopkategorien as $v)
- {
- if(!$v['kategorie'])
- {
- $parentInXentral = $kategorientoint[$v['extparent']];
- if(empty($parentInXentral)){
- $parentInXentral = $this->app->DB->Select("SELECT kategorie FROM shopexport_kategorien WHERE shop='$id' AND extid='".$v['extparent']."' LIMIT 1");
+ if (!empty($shopkategorien)) {
+ foreach ($shopkategorien as $v) {
+ if (!$v['kategorie']) {
+ $parentInXentral = $kategorientoint[$v['extparent']];
+ if (empty($parentInXentral)) {
+ $parentInXentral = $this->app->DB->Select("SELECT kategorie FROM shopexport_kategorien WHERE shop='$id' AND extid='" . $v['extparent'] . "' LIMIT 1");
+ }
+ $this->app->DB->Insert("INSERT INTO `artikelkategorien` (bezeichnung,parent)
+ VALUES ('" . $this->app->DB->real_escape_string($v['extname']) . "','$parentInXentral')");
+ $kategorientoint[$v['extid']] = $this->app->DB->GetInsertID();
+ $this->app->DB->Update("UPDATE shopexport_kategorien
+ SET kategorie = '" . $kategorientoint[$v['extid']] . "'
+ WHERE id = '" . $v['id'] . "' LIMIT 1");
+ $v['kategorie'] = $kategorientoint[$v['extid']];
+ }
+ }
+ }
}
- $this->app->DB->Insert("INSERT INTO `artikelkategorien` (bezeichnung,parent)
- VALUES ('".$this->app->DB->real_escape_string($v['extname'])."','$parentInXentral')");
- $kategorientoint[$v['extid']] = $this->app->DB->GetInsertID();
- $this->app->DB->Update("UPDATE shopexport_kategorien
- SET kategorie = '".$kategorientoint[$v['extid']]."'
- WHERE id = '".$v['id']."' LIMIT 1");
- $v['kategorie'] = $kategorientoint[$v['extid']];
- }
- }
- }
- }
- if(!empty($ret['kategorien']))
- {
- $shopkategorien = $this->app->DB->SelectArr("SELECT *
+ if (!empty($ret['kategorien'])) {
+ $shopkategorien = $this->app->DB->SelectArr("SELECT *
FROM shopexport_kategorien
WHERE shop = '$id' AND kategorie > 0
ORDER BY extparent, extsort");
- if(!empty($shopkategorien))
- {
- foreach($shopkategorien as $v)
- {
- $kategorientoint[$v['extid']] = $v['kategorie'];
- }
- $kategoriezugewiesen = false;
- foreach($ret['kategorien'] as $v)
- {
- if(!$kategoriezugewiesen){
- $kategorieid = $this->app->DB->Select("SELECT id FROM artikelkategorien WHERE bezeichnung='".$v['name']."' AND parent=0 AND geloescht=0 LIMIT 1");
- if($kategorieid){
- $this->app->DB->Update("UPDATE artikel SET typ = '".$kategorieid."_kat' WHERE id = '$articleid' LIMIT 1");
- $kategoriezugewiesen = true;
- }
- }
+ if (!empty($shopkategorien)) {
+ foreach ($shopkategorien as $v) {
+ $kategorientoint[$v['extid']] = $v['kategorie'];
+ }
+ $kategoriezugewiesen = false;
+ foreach ($ret['kategorien'] as $v) {
+ if (!$kategoriezugewiesen) {
+ $kategorieid = $this->app->DB->Select("SELECT id FROM artikelkategorien WHERE bezeichnung='" . $v['name'] . "' AND parent=0 AND geloescht=0 LIMIT 1");
+ if ($kategorieid) {
+ $this->app->DB->Update("UPDATE artikel SET typ = '" . $kategorieid . "_kat' WHERE id = '$articleid' LIMIT 1");
+ $kategoriezugewiesen = true;
+ }
+ }
- if(isset($kategorientoint[$v['id']]) && $kategorientoint[$v['id']])
- {
- if(!$this->app->DB->Select("SELECT id FROM artikelbaum_artikel WHERE artikel = '$articleid' AND kategorie = '".$kategorientoint[$v['id']]."' LIMIT 1"))
- {
- $this->app->DB->Insert("INSERT INTO artikelbaum_artikel (artikel, kategorie)
- VALUES ('$articleid', '".$kategorientoint[$v['id']]."')");
+ if (isset($kategorientoint[$v['id']]) && $kategorientoint[$v['id']]) {
+ if (!$this->app->DB->Select("SELECT id FROM artikelbaum_artikel WHERE artikel = '$articleid' AND kategorie = '" . $kategorientoint[$v['id']] . "' LIMIT 1")) {
+ $this->app->DB->Insert("INSERT INTO artikelbaum_artikel (artikel, kategorie)
+ VALUES ('$articleid', '" . $kategorientoint[$v['id']] . "')");
+ }
+ }
+ }
+ }
}
- }
- }
- }
- }
- if(!empty($ret['eigenschaften']))
- {
- foreach($ret['eigenschaften'] as $v)
- {
- if($v['name'] != '')
- {
- $eigenschaft = $this->app->DB->Select("SELECT id
+ if (!empty($ret['eigenschaften'])) {
+ foreach ($ret['eigenschaften'] as $v) {
+ if ($v['name'] != '') {
+ $eigenschaft = $this->app->DB->Select("SELECT id
FROM `artikeleigenschaften`
- WHERE name = '".$this->app->DB->real_escape_string($v['name'])."' AND geloescht = 0
+ WHERE name = '" . $this->app->DB->real_escape_string($v['name']) . "' AND geloescht = 0
LIMIT 1");
- if(!$eigenschaft)
- {
- $this->app->DB->Insert("INSERT INTO `artikeleigenschaften` (name)
- VALUES ('".$this->app->DB->real_escape_string($v['name'])."')");
- $eigenschaft = $this->app->DB->GetInsertID();
- }
- if($eigenschaft)
- {
- $wert = $this->app->DB->Select("SELECT id
+ if (!$eigenschaft) {
+ $this->app->DB->Insert("INSERT INTO `artikeleigenschaften` (name)
+ VALUES ('" . $this->app->DB->real_escape_string($v['name']) . "')");
+ $eigenschaft = $this->app->DB->GetInsertID();
+ }
+ if ($eigenschaft) {
+ $wert = $this->app->DB->Select("SELECT id
FROM artikeleigenschaftenwerte
- WHERE artikel = '$articleid' AND artikeleigenschaften = '$eigenschaft' AND wert = '".$this->app->DB->real_escape_string($v['values'])."'
+ WHERE artikel = '$articleid' AND artikeleigenschaften = '$eigenschaft' AND wert = '" . $this->app->DB->real_escape_string($v['values']) . "'
LIMIT 1");
- if(!$wert)
- {
- $this->app->DB->Insert("INSERT INTO artikeleigenschaftenwerte (artikel,artikeleigenschaften,wert)
- VALUES ('$articleid','$eigenschaft','".$this->app->DB->real_escape_string($v['values'])."')");
+ if (!$wert) {
+ $this->app->DB->Insert("INSERT INTO artikeleigenschaftenwerte (artikel,artikeleigenschaften,wert)
+ VALUES ('$articleid','$eigenschaft','" . $this->app->DB->real_escape_string($v['values']) . "')");
+ }
+ }
+ }
+ }
}
- }
- }
- }
- }
- if(!empty($ret['matrixprodukt_gruppe1'])){
- $query = sprintf("UPDATE artikel SET matrixprodukt=1 WHERE id='%s'",$articleid);
- $this->app->DB->Update($query);
- for($m=1;$m<=3;$m++){
- if(empty($ret['matrixprodukt_gruppe'.$m])){
- continue;
- }
+ if (!empty($ret['matrixprodukt_gruppe1'])) {
+ $query = sprintf("UPDATE artikel SET matrixprodukt=1 WHERE id='%s'", $articleid);
+ $this->app->DB->Update($query);
+ for ($m = 1; $m <= 3; $m++) {
+ if (empty($ret['matrixprodukt_gruppe' . $m])) {
+ continue;
+ }
- $gruppeName = $this->app->DB->real_escape_string($ret['matrixprodukt_gruppe'.$m]);
- $query = sprintf("SELECT id FROM matrixprodukt_eigenschaftengruppen_artikel WHERE artikel='%s' AND name='%s'",
- $articleid, $gruppeName);
- $gruppeId = $this->app->DB->Select($query);
- if(empty($gruppeId)){
- $query = sprintf("SELECT MAX(sort) FROM matrixprodukt_eigenschaftengruppen_artikel WHERE artikel='%s' AND name='%s'",
- $articleid, $gruppeName);
- $sort = $this->app->DB->Select($query);
- if(empty($sort)){
- $sort = '0';
- }
- $query = sprintf("INSERT INTO matrixprodukt_eigenschaftengruppen_artikel
+ $gruppeName = $this->app->DB->real_escape_string($ret['matrixprodukt_gruppe' . $m]);
+ $query = sprintf("SELECT id FROM matrixprodukt_eigenschaftengruppen_artikel WHERE artikel='%s' AND name='%s'",
+ $articleid, $gruppeName);
+ $gruppeId = $this->app->DB->Select($query);
+ if (empty($gruppeId)) {
+ $query = sprintf("SELECT MAX(sort) FROM matrixprodukt_eigenschaftengruppen_artikel WHERE artikel='%s' AND name='%s'",
+ $articleid, $gruppeName);
+ $sort = $this->app->DB->Select($query);
+ if (empty($sort)) {
+ $sort = '0';
+ }
+ $query = sprintf("INSERT INTO matrixprodukt_eigenschaftengruppen_artikel
(artikel, aktiv, name, name_ext,projekt,bearbeiter,erstellt,sort, pflicht, oeffentlich,typ) VALUES
('%s','1','%s','','0','','NOW()','%s','1','0','0')", $articleid, $gruppeName, $sort);
- $this->app->DB->Insert($query);
- $gruppeId = $this->app->DB->GetInsertID();
- }
+ $this->app->DB->Insert($query);
+ $gruppeId = $this->app->DB->GetInsertID();
+ }
- foreach ($ret['matrixprodukt_optionen'.$m] as $optionBezeichnung){
- $optionBezeichnung = $this->app->DB->real_escape_string($optionBezeichnung);
- $query = sprintf("SELECT id FROM matrixprodukt_eigenschaftenoptionen_artikel WHERE artikel='%s' AND name='%s'",
- $articleid, $optionBezeichnung);
- $optionId = $this->app->DB->Select($query);
- if(empty($optionId)){
- $query = sprintf("SELECT MAX(sort) FROM matrixprodukt_eigenschaftenoptionen_artikel WHERE artikel='%s' AND name='%s'",
- $articleid, $optionBezeichnung);
- $sort = $this->app->DB->Select($query);
- if(empty($sort)){
- $sort = '1';
- }
- $query = sprintf("INSERT INTO matrixprodukt_eigenschaftenoptionen_artikel
+ foreach ($ret['matrixprodukt_optionen' . $m] as $optionBezeichnung) {
+ $optionBezeichnung = $this->app->DB->real_escape_string($optionBezeichnung);
+ $query = sprintf("SELECT id FROM matrixprodukt_eigenschaftenoptionen_artikel WHERE artikel='%s' AND name='%s'",
+ $articleid, $optionBezeichnung);
+ $optionId = $this->app->DB->Select($query);
+ if (empty($optionId)) {
+ $query = sprintf("SELECT MAX(sort) FROM matrixprodukt_eigenschaftenoptionen_artikel WHERE artikel='%s' AND name='%s'",
+ $articleid, $optionBezeichnung);
+ $sort = $this->app->DB->Select($query);
+ if (empty($sort)) {
+ $sort = '1';
+ }
+ $query = sprintf("INSERT INTO matrixprodukt_eigenschaftenoptionen_artikel
(artikel, matrixprodukt_eigenschaftenoptionen, aktiv,name,name_ext,sort,erstellt,gruppe,bearbeiter,artikelnummer)
VALUES ('%s','0','1','%s','','%s','NOW()','%s','','')",
- $articleid, $optionBezeichnung, $sort, $gruppeId);
- $this->app->DB->Insert($query);
- }
- }
- }
- }
+ $articleid, $optionBezeichnung, $sort, $gruppeId);
+ $this->app->DB->Insert($query);
+ }
+ }
+ }
+ }
- if(!empty($ret['matrixprodukt_wert1'])){
- for($m=1;$m<=3;$m++){
- if(empty($ret['matrixprodukt_wert'.$m])){
- continue;
+ if (!empty($ret['matrixprodukt_wert1'])) {
+ for ($m = 1; $m <= 3; $m++) {
+ if (empty($ret['matrixprodukt_wert' . $m])) {
+ continue;
+ }
+
+ $optionBezeichnung = $this->app->DB->real_escape_string($ret['matrixprodukt_wert' . $m]);
+ $query = sprintf("SELECT id FROM matrixprodukt_eigenschaftenoptionen_artikel WHERE artikel='%s' AND name='%s'",
+ $variante_von, $optionBezeichnung);
+ $optionId = $this->app->DB->Select($query);
+ if (!empty($optionId)) {
+ $query = sprintf("SELECT id FROM matrixprodukt_optionen_zu_artikel WHERE artikel='%s' AND option_id='%s'",
+ $articleid, $optionId);
+ $zuordnungId = $this->app->DB->Select($query);
+ if (empty($zuordnungId)) {
+ $query = sprintf("INSERT INTO matrixprodukt_optionen_zu_artikel (artikel,option_id) VALUES ('%s','%s')",
+ $articleid, $optionId);
+ $this->app->DB->Insert($query);
+ }
+ }
+ }
+ }
+
+ if (!$this->app->DB->Select("SELECT id FROM `artikel_onlineshops` WHERE artikel = '$articleid' AND shop = '$id' AND aktiv = 1 LIMIT 1")) {
+ $this->app->DB->Insert("INSERT INTO `artikel_onlineshops` (artikel, shop,aktiv, ausartikel) VALUES ('$articleid', '$id',1 ,1)");
+ }
+ if (isset($ret['nummerintern']) && trim($ret['nummerintern']) != '') {
+ $data['nummerintern'] = trim($ret['nummerintern']);
+ }
+ if (($ret['nummer'] != $data['nummerintern']) && $data['nummerintern'] != '' && trim($data['nummerintern']) != '') {
+ $data['nummerintern'] = trim($data['nummerintern']);
+ if (!$this->app->DB->Select("SELECT id FROM `artikelnummer_fremdnummern` WHERE artikel = '$articleid' AND shopid = '$id' AND nummer = '" . $this->app->DB->real_escape_string($data['nummerintern']) . "' AND nummer <> '' LIMIT 1")) {
+ $this->app->DB->Insert("INSERT INTO `artikelnummer_fremdnummern` (artikel, shopid, aktiv, bearbeiter, zeitstempel,nummer) VALUES ('$articleid','$id','1','Cronjob',now(),'" . $this->app->DB->real_escape_string($data['nummerintern']) . "')");
+ }
+ }
+ } elseif ($articleid) {
+ if (isset($ret['ean']) && ($ret['ean'] != '') && $this->app->DB->Select("SELECT id FROM artikel WHERE id = '$articleid' AND ifnull(ean,'') = '' LIMIT 1")) {
+ $this->app->DB->Update("UPDATE artikel SET ean = '" . $this->app->DB->real_escape_string($ret['ean']) . "' WHERE id = '$articleid' AND ifnull(ean,'') = '' LIMIT 1");
+ }
}
- $optionBezeichnung = $this->app->DB->real_escape_string($ret['matrixprodukt_wert'.$m]);
- $query = sprintf("SELECT id FROM matrixprodukt_eigenschaftenoptionen_artikel WHERE artikel='%s' AND name='%s'",
- $variante_von, $optionBezeichnung);
- $optionId = $this->app->DB->Select($query);
- if(!empty($optionId)){
- $query = sprintf("SELECT id FROM matrixprodukt_optionen_zu_artikel WHERE artikel='%s' AND option_id='%s'",
- $articleid, $optionId);
- $zuordnungId = $this->app->DB->Select($query);
- if(empty($zuordnungId)){
- $query = sprintf("INSERT INTO matrixprodukt_optionen_zu_artikel (artikel,option_id) VALUES ('%s','%s')",
- $articleid,$optionId);
- $this->app->DB->Insert($query);
- }
- }
- }
- }
-
- if(!$this->app->DB->Select("SELECT id FROM `artikel_onlineshops` WHERE artikel = '$articleid' AND shop = '$id' AND aktiv = 1 LIMIT 1")) {
- $this->app->DB->Insert("INSERT INTO `artikel_onlineshops` (artikel, shop,aktiv, ausartikel) VALUES ('$articleid', '$id',1 ,1)");
- }
- if(isset($ret['nummerintern']) && trim($ret['nummerintern']) != '')
- {
- $data['nummerintern'] = trim($ret['nummerintern']);
- }
- if(($ret['nummer'] != $data['nummerintern']) && $data['nummerintern'] != '' && trim($data['nummerintern']) != '')
- {
- $data['nummerintern'] = trim($data['nummerintern']);
- if(!$this->app->DB->Select("SELECT id FROM `artikelnummer_fremdnummern` WHERE artikel = '$articleid' AND shopid = '$id' AND nummer = '".$this->app->DB->real_escape_string($data['nummerintern'])."' AND nummer <> '' LIMIT 1"))
- {
- $this->app->DB->Insert("INSERT INTO `artikelnummer_fremdnummern` (artikel, shopid, aktiv, bearbeiter, zeitstempel,nummer) VALUES ('$articleid','$id','1','Cronjob',now(),'".$this->app->DB->real_escape_string($data['nummerintern'])."')");
- }
- }
- }elseif($articleid)
- {
- if(isset($ret['ean']) && ($ret['ean'] != '') && $this->app->DB->Select("SELECT id FROM artikel WHERE id = '$articleid' AND ifnull(ean,'') = '' LIMIT 1"))
- {
- $this->app->DB->Update("UPDATE artikel SET ean = '".$this->app->DB->real_escape_string($ret['ean'])."' WHERE id = '$articleid' AND ifnull(ean,'') = '' LIMIT 1");
- }
- }
-
- if($stuecklistenmechanik && !empty($variante_von) && !$this->app->erp->IstStuecklistenZirkel($articleid,$variante_von)){
- $stuecklistenmenge = 1;
- if(!empty($ret['stuecklistemenge'])){
- $stuecklistenmenge = $ret['stuecklistemenge'];
- }
- $query = sprintf('SELECT MAX(sort) FROM stueckliste WHERE stuecklistevonartikel=%d',$variante_von);
- $sort = $this->app->DB->Select($query);
- if($sort !== NULL){
- $sort++;
- }else{
- $sort = 0;
- }
- $query = sprintf("INSERT INTO stueckliste (sort, artikel, referenz, place, layer, stuecklistevonartikel,
+ if ($stuecklistenmechanik && !empty($variante_von) && !$this->app->erp->IstStuecklistenZirkel($articleid, $variante_von)) {
+ $stuecklistenmenge = 1;
+ if (!empty($ret['stuecklistemenge'])) {
+ $stuecklistenmenge = $ret['stuecklistemenge'];
+ }
+ $query = sprintf('SELECT MAX(sort) FROM stueckliste WHERE stuecklistevonartikel=%d', $variante_von);
+ $sort = $this->app->DB->Select($query);
+ if ($sort !== NULL) {
+ $sort++;
+ } else {
+ $sort = 0;
+ }
+ $query = sprintf("INSERT INTO stueckliste (sort, artikel, referenz, place, layer, stuecklistevonartikel,
menge, firma, wert, bauform, alternative, zachse, xpos, ypos, art)
VALUES (%d, %d, '', 'DP', 'Top', %d, %d, 1, '', '', 0, '', '', '', 'et')",
- $sort,$articleid,$variante_von,$stuecklistenmenge);
- $this->app->DB->Insert($query);
- }
-
- if($variante_von === null) {
- if(!empty($articleid) && $stuecklistenmechanik){
- $query = sprintf('DELETE FROM stueckliste WHERE stuecklistevonartikel=%d',$articleid);
- $this->app->DB->Delete($query);
- }
- $variante_von = $articleid;
- }
-
- if(isset($ret['inaktiv'])){
- $ret['aktiv'] = !$ret['inaktiv'];
- }
-
- if(isset($ret['aktiv']))
- {
- if($ret['aktiv']){
- $this->app->DB->Update("UPDATE artikel SET inaktiv = '0' WHERE id = '$articleid' LIMIT 1");
- }else{
- $this->app->DB->Update("UPDATE artikel SET inaktiv = '1' WHERE id = '$articleid' LIMIT 1");
- }
- }
- if(isset($ret['staffelpreise'])){
- $date = new DateTime();
- $date->sub(new DateInterval('P1D'));
- $gestern = $date->format('Y-m-d');
- $this->app->DB->Update("UPDATE verkaufspreise SET gueltig_bis='$gestern' WHERE artikel='$articleid' AND adresse='0' AND art='Kunde'");
-
- foreach ($ret['staffelpreise'] as $staffelpreis){
- $preis = $staffelpreis['preis'];
- if($staffelpreis['brutto']){
- $umsatzsteuer = $this->app->DB->Select("SELECT umsatzsteuer FROM artikel WHERE id='$articleid' LIMIT 1");
- $steuersatz = 0;
- if($umsatzsteuer === 'ermaessigt')
- {
- $steuersatz = $this->app->erp->Firmendaten('steuersatz_ermaessigt');
+ $sort, $articleid, $variante_von, $stuecklistenmenge);
+ $this->app->DB->Insert($query);
}
- if($umsatzsteuer === 'normal'){
- $steuersatz = $this->app->erp->Firmendaten('steuersatz_normal');
- }
- $preis /= 1+$steuersatz/100;
- }
- $this->app->erp->AddVerkaufspreis($articleid,$staffelpreis['ab_menge'],0,$preis);
- }
- }
- if(isset($ret['fremdnummern']) && !empty($ret['fremdnummern'])){
- foreach ($ret['fremdnummern'] as $fremdnummer){
- $query = sprintf("SELECT id FROM artikelnummer_fremdnummern WHERE shopid=%d AND nummer='%s' AND bezeichnung='%s' AND aktiv=%d AND artikel=%s",
- $id,$this->app->DB->real_escape_string($fremdnummer['nummer']),$this->app->DB->real_escape_string($fremdnummer['bezeichnung']),'1',$articleid);
- $fremdnummerfehlt = empty($this->app->DB->Select($query));
- if($fremdnummerfehlt){
- $query = sprintf("INSERT INTO artikelnummer_fremdnummern
+ if ($variante_von === null) {
+ if (!empty($articleid) && $stuecklistenmechanik) {
+ $query = sprintf('DELETE FROM stueckliste WHERE stuecklistevonartikel=%d', $articleid);
+ $this->app->DB->Delete($query);
+ }
+ $variante_von = $articleid;
+ }
+
+ if (isset($ret['inaktiv'])) {
+ $ret['aktiv'] = !$ret['inaktiv'];
+ }
+
+ if (isset($ret['aktiv'])) {
+ if ($ret['aktiv']) {
+ $this->app->DB->Update("UPDATE artikel SET inaktiv = '0' WHERE id = '$articleid' LIMIT 1");
+ } else {
+ $this->app->DB->Update("UPDATE artikel SET inaktiv = '1' WHERE id = '$articleid' LIMIT 1");
+ }
+ }
+ if (isset($ret['staffelpreise'])) {
+ $date = new DateTime();
+ $date->sub(new DateInterval('P1D'));
+ $gestern = $date->format('Y-m-d');
+ $this->app->DB->Update("UPDATE verkaufspreise SET gueltig_bis='$gestern' WHERE artikel='$articleid' AND adresse='0' AND art='Kunde'");
+
+ foreach ($ret['staffelpreise'] as $staffelpreis) {
+ $preis = $staffelpreis['preis'];
+ if ($staffelpreis['brutto']) {
+ $umsatzsteuer = $this->app->DB->Select("SELECT umsatzsteuer FROM artikel WHERE id='$articleid' LIMIT 1");
+ $steuersatz = 0;
+ if ($umsatzsteuer === 'ermaessigt') {
+ $steuersatz = $this->app->erp->Firmendaten('steuersatz_ermaessigt');
+ }
+ if ($umsatzsteuer === 'normal') {
+ $steuersatz = $this->app->erp->Firmendaten('steuersatz_normal');
+ }
+ $preis /= 1 + $steuersatz / 100;
+ }
+ $this->app->erp->AddVerkaufspreis($articleid, $staffelpreis['ab_menge'], 0, $preis);
+ }
+ }
+ if (isset($ret['fremdnummern']) && !empty($ret['fremdnummern'])) {
+ foreach ($ret['fremdnummern'] as $fremdnummer) {
+ $query = sprintf("SELECT id FROM artikelnummer_fremdnummern WHERE shopid=%d AND nummer='%s' AND bezeichnung='%s' AND aktiv=%d AND artikel=%s",
+ $id, $this->app->DB->real_escape_string($fremdnummer['nummer']), $this->app->DB->real_escape_string($fremdnummer['bezeichnung']), '1', $articleid);
+ $fremdnummerfehlt = empty($this->app->DB->Select($query));
+
+ if ($fremdnummerfehlt) {
+ $query = sprintf("INSERT INTO artikelnummer_fremdnummern
(artikel, bezeichnung, nummer, shopid, bearbeiter, aktiv) VALUES
(%d,'%s','%s',%d,'%s',%d)",
- $articleid,$this->app->DB->real_escape_string($fremdnummer['bezeichnung']),
- $this->app->DB->real_escape_string($fremdnummer['nummer']),$id,$this->app->User->GetName(),1);
- $this->app->DB->Insert($query);
- }
- }
- }
+ $articleid, $this->app->DB->real_escape_string($fremdnummer['bezeichnung']),
+ $this->app->DB->real_escape_string($fremdnummer['nummer']), $id, $this->app->User->GetName(), 1);
+ $this->app->DB->Insert($query);
+ }
+ }
+ }
+
+ if (isset($ret['pseudopreis'])) {
+ $this->app->DB->Update(sprintf("UPDATE artikel SET pseudopreis='%s' WHERE id=%d", $ret['pseudopreis'], $articleid));
+ }
+ if (!$create) {
+ return $ret;
+ }
+ }
- if(isset($ret['pseudopreis'])){
- $this->app->DB->Update(sprintf("UPDATE artikel SET pseudopreis='%s' WHERE id=%d",$ret['pseudopreis'],$articleid));
- }
- if(!$create)
- {
return $ret;
- }
}
- return $ret;
- }
-
- /**
- * @param int $shopId
- * @param int $parent
- * @param int $lvl
- *
- * @return array
- */
- protected function getShopKatgeorien($shopId, $parent = 0, $lvl = 0)
- {
- if($lvl > 20)
- {
- return [];
- }
- $ret = [];
- $shopkategorien = $this->app->DB->SelectArr("SELECT * FROM shopexport_kategorien WHERE shop = '$shopId' AND extparent = '$parent' AND extid <> '' ORDER BY extsort");
- if($shopkategorien)
- {
- foreach($shopkategorien as $v)
- {
- $ret[] = $v;
- $subkategorien = $this->getShopKatgeorien($shopId, $v['extid'], $lvl + 1);
- if(!empty($subkategorien))
- {
- foreach($subkategorien as $v2)
- {
- $ret[] = $v2;
- }
+ /**
+ * @param int $shopId
+ * @param int $parent
+ * @param int $lvl
+ *
+ * @return array
+ */
+ protected function getShopKatgeorien($shopId, $parent = 0, $lvl = 0) {
+ if ($lvl > 20) {
+ return [];
}
- }
- }
-
- return $ret;
- }
-
- /**
- * @param int $id
- * @param array $artikel_arr
- * @param string|array $extnummer
- * @param bool $nurlager
- *
- * @return mixed|null
- * @throws Exception
- */
- public function RemoteSendArticleList($id,$artikel_arr, $extnummer = '', $nurlager = false)
- {
- if(!class_exists('ObjGenArtikel') &&
- is_file(dirname(__DIR__) . '/objectapi/mysql/_gen/object.gen.artikel.php')){
- include_once dirname(__DIR__) . '/objectapi/mysql/_gen/object.gen.artikel.php';
- }
- $shopexportarr = $this->app->DB->SelectRow("SELECT * FROM shopexport WHERE id='$id' LIMIT 1");
- $artikelexport = $shopexportarr['artikelexport'];
- $translationpossible = false;
- if($this->app->erp->ModulVorhanden('artikel_texte'))
- {
- $translationpossible = true;
- }
- $loadElements = [
- 'foreign_numbers' => true,
- 'article_descriptions' => true,
- 'translations' => true,
- 'categories' => true,
- 'properties' => true,
- 'pictures' => true,
- 'cross_selling' => true,
- 'bulk_prices' => true,
- 'standard_price' => true,
- 'variants' => true,
- 'free_fields' => true,
- ];
-
- if(
- ($nurlager || empty($artikelexport))
- && !empty($shopexportarr['modulename'])
- && !is_file(dirname(__DIR__).'/pages/'.$shopexportarr['modulename'].'_custom.php')
- ) {
- $elementsNotNeededByModule = ShopimporterBase::storageNotNeededElements($shopexportarr['modulename']);
- foreach($elementsNotNeededByModule as $element) {
- $loadElements[$element] = false;
- }
- }
-
- //$lagerexport = $shopexportarr['lagerexport'];
- $lagergrundlage = $shopexportarr['lagergrundlage'];
- $shopbilderuebertragen = $shopexportarr['shopbilderuebertragen'];
- $projekt = (int)$shopexportarr['projekt'];
- $projektlager = $this->app->DB->Select("SELECT id FROM projekt WHERE id = $projekt AND projektlager = 1 LIMIT 1");
- $tmp = new ObjGenArtikel($this->app);
- $cartikel_arr = !empty($artikel_arr)?count($artikel_arr):0;
-
- for($i=0;$i<$cartikel_arr;$i++)
- {
-
- $artikel = $artikel_arr[$i];
- $lagerexport = $this->app->erp->GetArtikelShopEinstellung('autolagerlampe', $artikel, $shopexportarr);
- $tmp->Select($artikel);
- $data[$i] = ['artikel' => $artikel,'artikelid' => $artikel];
- $data[$i]['nummer'] = $tmp->GetNummer();
- $projekt = $tmp->GetProjekt();
- if(is_array($extnummer) && (!empty($extnummer)?count($extnummer):0) > $i && !empty($extnummer[$i]) && trim($extnummer[$i]) != '')
- {
- if($data[$i]['nummer'] != trim($extnummer[$i])){
- $data[$i]['fremdnummer'] = trim($extnummer[$i]);
- }
- }
-
- $data[$i]['inaktiv'] = $tmp->GetInaktiv();
-
- if($tmp->GetIntern_Gesperrt()=='1'){
- $data[$i]['inaktiv'] = 1;
- }
-
- $data[$i]['name_de'] = $tmp->GetName_De();
- $data[$i]['name_en'] = $tmp->GetName_En();
- $data[$i]['einheit'] = $tmp->GetEinheit();
- $data[$i]['hersteller'] = $tmp->GetHersteller();
- $data[$i]['herstellernummer'] = $tmp->GetHerstellernummer();
- $data[$i]['ean'] = $tmp->GetEan();
- if(!empty($loadElements['foreign_numbers'])) {
- $data[$i]['artikelnummer_fremdnummern'] = $this->app->DB->SelectArr("SELECT * FROM artikelnummer_fremdnummern WHERE artikel = '" . $tmp->GetId() . "' AND shopid = '$id' AND aktiv = '1' AND nummer <> '' ORDER BY bezeichnung = 'SHOPID' DESC");
- if(!empty($data[$i]['artikelnummer_fremdnummern'])){
- foreach ($data[$i]['artikelnummer_fremdnummern'] as $fkey => $fval) {
- $data[$i]['artikelnummer_fremdnummern'][$fkey]['nummer'] = trim($fval['nummer']);
- }
- }
- }
-
- if(!empty($loadElements['article_descriptions'])) {
- $data[$i]['kurztext_de'] = $tmp->GetKurztext_De();
- $data[$i]['kurztext_en'] = $tmp->GetKurztext_En();
- $data[$i]['anabregs_text'] = htmlspecialchars($tmp->GetAnabregs_Text(),ENT_QUOTES);
- $data[$i]['anabregs_text_en'] = htmlspecialchars($tmp->GetAnabregs_Text_En(),ENT_QUOTES);
- $data[$i]['beschreibung_de'] = $tmp->GetBeschreibung_De();
- $data[$i]['beschreibung_en'] = $tmp->GetBeschreibung_En();
- $data[$i]['uebersicht_de'] = htmlspecialchars($tmp->GetUebersicht_De(),ENT_QUOTES);
- $data[$i]['uebersicht_en'] = htmlspecialchars($tmp->GetUebersicht_En(),ENT_QUOTES);
- $data[$i]['herkunftsland'] = $tmp->GetHerkunftsland();
-
- $data[$i]['texteuebertragen'] = $shopexportarr['texteuebertragen'];
-
- if(method_exists($tmp,'GetMetadescription_De'))
- {
- $data[$i]['metadescription_de'] = $tmp->GetMetadescription_De();
- }
- if(method_exists($tmp,'GetMetadescription_En'))
- {
- $data[$i]['metadescription_en'] = $tmp->GetMetadescription_En();
- }
- if(method_exists($tmp,'GetMetakeywords_De'))
- {
- $data[$i]['metakeywords_de'] = $tmp->GetMetakeywords_De();
- }
- if(method_exists($tmp,'GetMetakeywords_En'))
- {
- $data[$i]['metakeywords_en'] = $tmp->GetMetakeywords_En();
- }
- if(method_exists($tmp,'GetMetatitle_De'))
- {
- $data[$i]['metatitle_de'] = $tmp->GetMetatitle_De();
- }
- if(method_exists($tmp,'GetMetatitle_En'))
- {
- $data[$i]['metatitle_en'] = $tmp->GetMetatitle_En();
- }
- }
- if($tmp->GetVariante())
- {
- $variante_von = $tmp->GetVariante_Von();
- if($variante_von)
- {
- $tmp_2 = new ObjGenArtikel($this->app);
- $tmp_2->Select($variante_von);
- if($data[$i]['kurztext_de'] == '')
- {
- $data[$i]['kurztext_de'] = $tmp_2->GetKurztext_De();
- }
- if($data[$i]['kurztext_en'] == '')
- {
- $data[$i]['kurztext_en'] = $tmp_2->GetKurztext_En();
- }
- if($data[$i]['beschreibung_de'] == '')
- {
- $data[$i]['beschreibung_de'] = $tmp_2->GetBeschreibung_De();
- }
- if($data[$i]['beschreibung_en'] == '')
- {
- $data[$i]['beschreibung_en'] = $tmp_2->GetBeschreibung_En();
- }
- if($data[$i]['uebersicht_de'] == '')
- {
- $data[$i]['uebersicht_de'] = htmlspecialchars($tmp_2->GetUebersicht_De(),ENT_QUOTES);
- }
- if($data[$i]['uebersicht_en'] == '')
- {
- $data[$i]['uebersicht_en'] = htmlspecialchars($tmp_2->GetUebersicht_En(),ENT_QUOTES);
- }
- }
- }
-
- if($data[$i]['uebersicht_de'] == '' && $data[$i]['beschreibung_de'] == '' && $data[$i]['kurztext_de'] == '')
- {
- $data[$i]['uebersicht_de'] = $data[$i]['anabregs_text'];
- }
-
- $data[$i]['links_de'] = $tmp->GetLinks_De();
- $data[$i]['altersfreigabe'] = $tmp->GetAltersfreigabe();
- $data[$i]['links_en'] = $tmp->GetLinks_En();
- $data[$i]['startseite_de'] = $tmp->GetStartseite_De();
- $data[$i]['startseite_en'] = $tmp->GetStartseite_En();
- $data[$i]['restmenge'] = $this->app->erp->GetArtikelShopEinstellung('restmenge', $artikel, $shopexportarr);
- $data[$i]['startseite'] = $tmp->GetStartseite();
- $data[$i]['standardbild'] = $tmp->GetStandardbild();
- $data[$i]['herstellerlink'] = $tmp->GetHerstellerlink();
- $data[$i]['herstellernummer'] = $tmp->GetHerstellernummer();
- $data[$i]['hersteller'] = $tmp->GetHersteller();
- $data[$i]['lieferzeit'] = $tmp->GetLieferzeit();
- $data[$i]['lieferzeitmanuell'] = $this->app->erp->GetArtikelShopEinstellung('lieferzeitmanuell', $artikel, $shopexportarr);
- $data[$i]['gewicht'] = $tmp->GetGewicht();
- $data[$i]['laenge'] = $tmp->GetLaenge();
- $data[$i]['breite'] = $tmp->GetBreite();
- $data[$i]['hoehe'] = $tmp->GetHoehe();
-
- $data[$i]['wichtig'] = $tmp->GetWichtig();
- $data[$i]['porto'] = $tmp->GetPorto();
- $data[$i]['gesperrt'] = $tmp->GetGesperrt();
- $data[$i]['sperrgrund'] = $tmp->GetSperrgrund();
- $data[$i]['gueltigbis'] = $tmp->GetGueltigbis();
- $data[$i]['umsatzsteuer'] = $tmp->GetUmsatzsteuer();
- if($data[$i]['umsatzsteuer']!=='ermaessigt' && $data[$i]['umsatzsteuer']!=='befreit') {
- $data[$i]['umsatzsteuer']="normal";
- }
- $data[$i]['ausverkauft'] = $tmp->GetAusverkauft();
- $data[$i]['variante'] = $tmp->GetVariante();
- $data[$i]['variante_von_id'] = $tmp->GetVariante_Von();
- $data[$i]['variantevon'] = $this->app->DB->Select("SELECT nummer FROM artikel WHERE id='".$tmp->GetVariante_Von()."' LIMIT 1");
- $data[$i]['variantevon_fremdnummer'] = trim($this->app->DB->Select("SELECT nummer FROM `artikelnummer_fremdnummern` WHERE shopid = '$id' AND aktiv = 1 AND artikel = '".$tmp->GetVariante_Von()."' AND trim(nummer) <> '' ORDER BY bezeichnung = 'SHOPID' DESC LIMIT 1"));
- if($data[$i]['variantevon_fremdnummer'] == '')
- {
- unset($data[$i]['variantevon_fremdnummer']);
- }
- //$data[$i]['pseudopreis'] = $tmp->GetPseudopreis();
- $data[$i]['pseudopreis'] = $this->app->erp->GetArtikelShopEinstellung('pseudopreis', $artikel, $shopexportarr);
- $data[$i]['keinrabatterlaubt'] = $tmp->GetKeinrabatterlaubt();
- $data[$i]['einkaufspreis'] = $this->app->erp->GetEinkaufspreis($artikel,1);
- //$data[$i]['pseudolager'] = $tmp->GetPseudolager();
- $data[$i]['pseudolager'] = $this->app->erp->GetArtikelShopEinstellung('pseudolager', $artikel, $shopexportarr);
- $this->app->erp->RunHook('remote_send_article_list_pseudostorage', 3, $id, $artikel, $data[$i]['pseudolager']);
- if(is_numeric($data[$i]['pseudolager']) && $data[$i]['pseudolager'] < 0) {
- $data[$i]['pseudolager'] = 0;
- }
- $data[$i]['downloadartikel'] = $tmp->GetDownloadartikel();
- $data[$i]['zolltarifnummer'] = $tmp->GetZolltarifnummer();
- $preisgruppe = $this->app->DB->Select("SELECT s.preisgruppe FROM shopexport s INNER JOIN gruppen g ON s.preisgruppe = g.id AND g.aktiv = 1 WHERE s.id='$id' LIMIT 1");
-
- if(empty($loadElements['free_fields'])) {
- $freifelder = null;
- }
- else{
- $freifelder = $this->app->DB->SelectArr("SELECT freifeld_wawi, freifeld_shop FROM shopexport_freifelder WHERE shop = '$id' AND aktiv = 1 AND freifeld_wawi <> '' AND freifeld_shop <> ''");
- }
- if($freifelder)
- {
- /**
- * @deprecated 20.1
- * AP
- * Konstrunktion 'freifeld_Mappingname -> Wert' wird ersetzt durch 'Freifelder-> DE -> Mappingname -> Wert'
- */
- foreach($freifelder as $freifeld)
- {
- if(method_exists($tmp,'Get'.ucfirst($freifeld['freifeld_wawi'])))
- {
- $_funktionsname = 'Get'.ucfirst($freifeld['freifeld_wawi']);
- $data[$i]['freifeld_'.$freifeld['freifeld_shop']] = $tmp->$_funktionsname();
- }
- }
- /**
- * @deprecated Ende
- */
-
- foreach($freifelder as $freifeld)
- {
- $_funktionsname = 'Get'.ucfirst($freifeld['freifeld_wawi']);
- if(method_exists($tmp,$_funktionsname))
- {
- $data[$i]['freifelder']['DE'][$freifeld['freifeld_shop']] = $tmp->$_funktionsname();
- }
- }
-
- //Freifeldübersetzungen
- $freifelduebersetzungen = $this->app->DB->SelectArr("SELECT sf.freifeld_shop, af.sprache, af.nummer, af.wert FROM shopexport_freifelder sf JOIN artikel_freifelder af ON sf.freifeld_wawi = CONCAT('freifeld',af.nummer) WHERE sf.shop = '$id' AND af.artikel = '$artikel' AND sf.aktiv = 1 AND sf.freifeld_wawi <> '' AND sf.freifeld_shop <> '' AND af.wert <> ''");
- if(!empty($freifelduebersetzungen)){
- foreach ($freifelduebersetzungen as $ffukey => $ffuvalue) {
- $data[$i]['freifelder'][$ffuvalue['sprache']][] = array('mapping' => $ffuvalue['freifeld_shop'], 'freifeldnummer' => $ffuvalue['nummer'], 'wert' => $ffuvalue['wert']);
- }
- }
- }
-
- $data[$i]['typ'] = $tmp->GetTyp();
- $data[$i]['kategoriename'] = $tmp->GetTyp();
- if(strpos($data[$i]['typ'], '_kat'))
- {
- $data[$i]['kategoriename'] = $this->app->DB->Select("SELECT bezeichnung FROM artikelkategorien WHERE id = '".(int)str_replace('_kat','',$data[$i]['typ'])."' LIMIT 1");
- }
-
- $kategorienuebertragen = $shopexportarr['kategorienuebertragen'];//$this->app->DB->Select("SELECT kategorienuebertragen FROM shopexport WHERE id = '$id' LIMIT 1");
- if(!empty($kategorienuebertragen) && !empty($loadElements['categories']))
- {
- $kategorienbaum = null;
- /** @var Onlineshops $onlineShopObj */
- $onlineShopObj = $this->app->loadModule('onlineshops');
- $categoryRootId = 0;
- if(!empty($onlineShopObj) && method_exists($onlineShopObj, 'getJsonSettings')) {
- $categoryRootId = (int)$onlineShopObj->getJsonSettings($id, 'category_root_id');
- }
- $this->app->erp->GetKategorienbaum($kategorienbaum, $categoryRootId, 0, $id);
- if(!empty($kategorienbaum))
- {
- $kategorien = $this->app->DB->SelectArr("SELECT ak.id, ak.bezeichnung FROM `artikelbaum_artikel` aa INNER JOIN `artikelkategorien` ak ON aa.kategorie = ak.id AND ak.geloescht <> 1 AND aa.artikel = '$artikel' ORDER by ak.bezeichnung");
- if($kategorien)
- {
- foreach($kategorien as $v)
- {
- $katid[$v['id']] = true;
+ $ret = [];
+ $shopkategorien = $this->app->DB->SelectArr("SELECT * FROM shopexport_kategorien WHERE shop = '$shopId' AND extparent = '$parent' AND extid <> '' ORDER BY extsort");
+ if ($shopkategorien) {
+ foreach ($shopkategorien as $v) {
+ $ret[] = $v;
+ $subkategorien = $this->getShopKatgeorien($shopId, $v['extid'], $lvl + 1);
+ if (!empty($subkategorien)) {
+ foreach ($subkategorien as $v2) {
+ $ret[] = $v2;
+ }
+ }
}
- }
- if(!empty($katid))
- {
- foreach($kategorienbaum as $v)
- {
- $data[$i]['kompletter_kategorienbaum'][] = array('name'=>$v['bezeichnung'],'parent'=>$v['parent'],'id'=>$v['id'],'lvl'=>$v['lvl'],'extid'=>$v['extid']);
- if(isset($katid[$v['id']]))
- {
- $data[$i]['kategorien'][] = array('name'=>$v['bezeichnung'],'parent'=>$v['parent'],'id'=>$v['id'],'lvl'=>$v['lvl'],'extid'=>$v['extid']);
- }
- }
- }
}
- }
- $eigenschaftenuebertragen = $shopexportarr['eigenschaftenuebertragen'];//$this->app->DB->Select("SELECT eigenschaftenuebertragen FROM shopexport WHERE id = '$id' LIMIT 1");
- if(!empty($eigenschaftenuebertragen) && !empty($loadElements['properties'])) {
- $eigenschaften = $this->app->DB->SelectArr("SELECT e.name, ew.wert FROM artikeleigenschaften e INNER JOIN artikeleigenschaftenwerte ew ON e.id = ew.artikeleigenschaften
+ return $ret;
+ }
+
+ /**
+ * @param int $id
+ * @param array $artikel_arr
+ * @param string|array $extnummer
+ * @param bool $nurlager
+ *
+ * @return mixed|null
+ * @throws Exception
+ *
+ * (NEW 2024-06-28)
+ *
+ * return value: (comes from Importsendlist or Importsendlistlager inside shopimporter_...)
+ * array (
+ * 'count' => int, // Number of successfully sent articles
+ * 'new' => array (artikelid, fremdnummer), // List of new articles with external number
+ * 'message' => string
+ * 'status' => bool, // false = failed
+ * 'articles' => array(
+ * 'id',
+ * 'status',
+ * 'message',
+ * ...
+ * )
+ * )
+ *
+ */
+ public function RemoteSendArticleList($id, $artikel_arr, $extnummer = '', $nurlager = false) {
+
+ $this->logger->debug(
+ 'RemoteSendArticleList',
+ [
+ 'shop' => $id,
+ 'artikel_arr' => $artikel_arr
+ ]
+ );
+
+ if (!class_exists('ObjGenArtikel') &&
+ is_file(dirname(__DIR__) . '/objectapi/mysql/_gen/object.gen.artikel.php')) {
+ include_once dirname(__DIR__) . '/objectapi/mysql/_gen/object.gen.artikel.php';
+ }
+ $shopexportarr = $this->app->DB->SelectRow("SELECT * FROM shopexport WHERE id='$id' LIMIT 1");
+ $artikelexport = $shopexportarr['artikelexport'];
+ $translationpossible = false;
+ if ($this->app->erp->ModulVorhanden('artikel_texte')) {
+ $translationpossible = true;
+ }
+ $loadElements = [
+ 'foreign_numbers' => true,
+ 'article_descriptions' => true,
+ 'translations' => true,
+ 'categories' => true,
+ 'properties' => true,
+ 'pictures' => true,
+ 'cross_selling' => true,
+ 'bulk_prices' => true,
+ 'standard_price' => true,
+ 'variants' => true,
+ 'free_fields' => true,
+ ];
+
+ if (
+ ($nurlager || empty($artikelexport)) && !empty($shopexportarr['modulename']) && !is_file(dirname(__DIR__) . '/pages/' . $shopexportarr['modulename'] . '_custom.php')
+ ) {
+ $elementsNotNeededByModule = ShopimporterBase::storageNotNeededElements($shopexportarr['modulename']);
+ foreach ($elementsNotNeededByModule as $element) {
+ $loadElements[$element] = false;
+ }
+ }
+
+ //$lagerexport = $shopexportarr['lagerexport'];
+ $lagergrundlage = $shopexportarr['lagergrundlage'];
+ $shopbilderuebertragen = $shopexportarr['shopbilderuebertragen'];
+ $projekt = (int) $shopexportarr['projekt'];
+ $projektlager = $this->app->DB->Select("SELECT id FROM projekt WHERE id = $projekt AND projektlager = 1 LIMIT 1");
+ $tmp = new ObjGenArtikel($this->app);
+ $cartikel_arr = !empty($artikel_arr) ? count($artikel_arr) : 0;
+
+ for ($i = 0; $i < $cartikel_arr; $i++) {
+ $artikel = $artikel_arr[$i];
+ $lagerexport = $this->app->erp->GetArtikelShopEinstellung('autolagerlampe', $artikel, $shopexportarr);
+ $tmp->Select($artikel);
+ $data[$i] = ['artikel' => $artikel, 'artikelid' => $artikel];
+ $data[$i]['nummer'] = $tmp->GetNummer();
+ $projekt = $tmp->GetProjekt();
+ if (is_array($extnummer) && (!empty($extnummer) ? count($extnummer) : 0) > $i && !empty($extnummer[$i]) && trim($extnummer[$i]) != '') {
+ if ($data[$i]['nummer'] != trim($extnummer[$i])) {
+ $data[$i]['fremdnummer'] = trim($extnummer[$i]);
+ }
+ }
+
+ $data[$i]['inaktiv'] = $tmp->GetInaktiv();
+
+ if ($tmp->GetIntern_Gesperrt() == '1') {
+ $data[$i]['inaktiv'] = 1;
+ }
+
+ $data[$i]['name_de'] = $tmp->GetName_De();
+ $data[$i]['name_en'] = $tmp->GetName_En();
+ $data[$i]['einheit'] = $tmp->GetEinheit();
+ $data[$i]['hersteller'] = $tmp->GetHersteller();
+ $data[$i]['herstellernummer'] = $tmp->GetHerstellernummer();
+ $data[$i]['ean'] = $tmp->GetEan();
+ if (!empty($loadElements['foreign_numbers'])) {
+ $data[$i]['artikelnummer_fremdnummern'] = $this->app->DB->SelectArr("SELECT * FROM artikelnummer_fremdnummern WHERE artikel = '" . $tmp->GetId() . "' AND shopid = '$id' AND aktiv = '1' AND nummer <> '' ORDER BY bezeichnung = 'SHOPID' DESC");
+ if (!empty($data[$i]['artikelnummer_fremdnummern'])) {
+ foreach ($data[$i]['artikelnummer_fremdnummern'] as $fkey => $fval) {
+ $data[$i]['artikelnummer_fremdnummern'][$fkey]['nummer'] = trim($fval['nummer']);
+ }
+ }
+ }
+
+ if (!empty($loadElements['article_descriptions'])) {
+ $data[$i]['kurztext_de'] = $tmp->GetKurztext_De();
+ $data[$i]['kurztext_en'] = $tmp->GetKurztext_En();
+ $data[$i]['anabregs_text'] = htmlspecialchars($tmp->GetAnabregs_Text(), ENT_QUOTES);
+ $data[$i]['anabregs_text_en'] = htmlspecialchars($tmp->GetAnabregs_Text_En(), ENT_QUOTES);
+ $data[$i]['beschreibung_de'] = $tmp->GetBeschreibung_De();
+ $data[$i]['beschreibung_en'] = $tmp->GetBeschreibung_En();
+ $data[$i]['uebersicht_de'] = htmlspecialchars($tmp->GetUebersicht_De(), ENT_QUOTES);
+ $data[$i]['uebersicht_en'] = htmlspecialchars($tmp->GetUebersicht_En(), ENT_QUOTES);
+ $data[$i]['herkunftsland'] = $tmp->GetHerkunftsland();
+
+ $data[$i]['texteuebertragen'] = $shopexportarr['texteuebertragen'];
+
+ if (method_exists($tmp, 'GetMetadescription_De')) {
+ $data[$i]['metadescription_de'] = $tmp->GetMetadescription_De();
+ }
+ if (method_exists($tmp, 'GetMetadescription_En')) {
+ $data[$i]['metadescription_en'] = $tmp->GetMetadescription_En();
+ }
+ if (method_exists($tmp, 'GetMetakeywords_De')) {
+ $data[$i]['metakeywords_de'] = $tmp->GetMetakeywords_De();
+ }
+ if (method_exists($tmp, 'GetMetakeywords_En')) {
+ $data[$i]['metakeywords_en'] = $tmp->GetMetakeywords_En();
+ }
+ if (method_exists($tmp, 'GetMetatitle_De')) {
+ $data[$i]['metatitle_de'] = $tmp->GetMetatitle_De();
+ }
+ if (method_exists($tmp, 'GetMetatitle_En')) {
+ $data[$i]['metatitle_en'] = $tmp->GetMetatitle_En();
+ }
+ }
+ if ($tmp->GetVariante()) {
+ $variante_von = $tmp->GetVariante_Von();
+ if ($variante_von) {
+ $tmp_2 = new ObjGenArtikel($this->app);
+ $tmp_2->Select($variante_von);
+ if ($data[$i]['kurztext_de'] == '') {
+ $data[$i]['kurztext_de'] = $tmp_2->GetKurztext_De();
+ }
+ if ($data[$i]['kurztext_en'] == '') {
+ $data[$i]['kurztext_en'] = $tmp_2->GetKurztext_En();
+ }
+ if ($data[$i]['beschreibung_de'] == '') {
+ $data[$i]['beschreibung_de'] = $tmp_2->GetBeschreibung_De();
+ }
+ if ($data[$i]['beschreibung_en'] == '') {
+ $data[$i]['beschreibung_en'] = $tmp_2->GetBeschreibung_En();
+ }
+ if ($data[$i]['uebersicht_de'] == '') {
+ $data[$i]['uebersicht_de'] = htmlspecialchars($tmp_2->GetUebersicht_De(), ENT_QUOTES);
+ }
+ if ($data[$i]['uebersicht_en'] == '') {
+ $data[$i]['uebersicht_en'] = htmlspecialchars($tmp_2->GetUebersicht_En(), ENT_QUOTES);
+ }
+ }
+ }
+
+ if ($data[$i]['uebersicht_de'] == '' && $data[$i]['beschreibung_de'] == '' && $data[$i]['kurztext_de'] == '') {
+ $data[$i]['uebersicht_de'] = $data[$i]['anabregs_text'];
+ }
+
+ $data[$i]['links_de'] = $tmp->GetLinks_De();
+ $data[$i]['altersfreigabe'] = $tmp->GetAltersfreigabe();
+ $data[$i]['links_en'] = $tmp->GetLinks_En();
+ $data[$i]['startseite_de'] = $tmp->GetStartseite_De();
+ $data[$i]['startseite_en'] = $tmp->GetStartseite_En();
+ $data[$i]['restmenge'] = $this->app->erp->GetArtikelShopEinstellung('restmenge', $artikel, $shopexportarr);
+ $data[$i]['startseite'] = $tmp->GetStartseite();
+ $data[$i]['standardbild'] = $tmp->GetStandardbild();
+ $data[$i]['herstellerlink'] = $tmp->GetHerstellerlink();
+ $data[$i]['herstellernummer'] = $tmp->GetHerstellernummer();
+ $data[$i]['hersteller'] = $tmp->GetHersteller();
+ $data[$i]['lieferzeit'] = $tmp->GetLieferzeit();
+ $data[$i]['lieferzeitmanuell'] = $this->app->erp->GetArtikelShopEinstellung('lieferzeitmanuell', $artikel, $shopexportarr);
+ $data[$i]['gewicht'] = $tmp->GetGewicht();
+ $data[$i]['laenge'] = $tmp->GetLaenge();
+ $data[$i]['breite'] = $tmp->GetBreite();
+ $data[$i]['hoehe'] = $tmp->GetHoehe();
+
+ $data[$i]['wichtig'] = $tmp->GetWichtig();
+ $data[$i]['porto'] = $tmp->GetPorto();
+ $data[$i]['gesperrt'] = $tmp->GetGesperrt();
+ $data[$i]['sperrgrund'] = $tmp->GetSperrgrund();
+ $data[$i]['gueltigbis'] = $tmp->GetGueltigbis();
+ $data[$i]['umsatzsteuer'] = $tmp->GetUmsatzsteuer();
+ if ($data[$i]['umsatzsteuer'] !== 'ermaessigt' && $data[$i]['umsatzsteuer'] !== 'befreit') {
+ $data[$i]['umsatzsteuer'] = "normal";
+ }
+ $data[$i]['ausverkauft'] = $tmp->GetAusverkauft();
+ $data[$i]['variante'] = $tmp->GetVariante();
+ $data[$i]['variante_von_id'] = $tmp->GetVariante_Von();
+ $data[$i]['variantevon'] = $this->app->DB->Select("SELECT nummer FROM artikel WHERE id='" . $tmp->GetVariante_Von() . "' LIMIT 1");
+ $data[$i]['variantevon_fremdnummer'] = trim($this->app->DB->Select("SELECT nummer FROM `artikelnummer_fremdnummern` WHERE shopid = '$id' AND aktiv = 1 AND artikel = '" . $tmp->GetVariante_Von() . "' AND trim(nummer) <> '' ORDER BY bezeichnung = 'SHOPID' DESC LIMIT 1"));
+ if ($data[$i]['variantevon_fremdnummer'] == '') {
+ unset($data[$i]['variantevon_fremdnummer']);
+ }
+ //$data[$i]['pseudopreis'] = $tmp->GetPseudopreis();
+ $data[$i]['pseudopreis'] = $this->app->erp->GetArtikelShopEinstellung('pseudopreis', $artikel, $shopexportarr);
+ $data[$i]['keinrabatterlaubt'] = $tmp->GetKeinrabatterlaubt();
+ $data[$i]['einkaufspreis'] = $this->app->erp->GetEinkaufspreis($artikel, 1);
+ //$data[$i]['pseudolager'] = $tmp->GetPseudolager();
+ $data[$i]['pseudolager'] = $this->app->erp->GetArtikelShopEinstellung('pseudolager', $artikel, $shopexportarr);
+ $this->app->erp->RunHook('remote_send_article_list_pseudostorage', 3, $id, $artikel, $data[$i]['pseudolager']);
+ if (is_numeric($data[$i]['pseudolager']) && $data[$i]['pseudolager'] < 0) {
+ $data[$i]['pseudolager'] = 0;
+ }
+ $data[$i]['downloadartikel'] = $tmp->GetDownloadartikel();
+ $data[$i]['zolltarifnummer'] = $tmp->GetZolltarifnummer();
+ $preisgruppe = $this->app->DB->Select("SELECT s.preisgruppe FROM shopexport s INNER JOIN gruppen g ON s.preisgruppe = g.id AND g.aktiv = 1 WHERE s.id='$id' LIMIT 1");
+
+ if (empty($loadElements['free_fields'])) {
+ $freifelder = null;
+ } else {
+ $freifelder = $this->app->DB->SelectArr("SELECT freifeld_wawi, freifeld_shop FROM shopexport_freifelder WHERE shop = '$id' AND aktiv = 1 AND freifeld_wawi <> '' AND freifeld_shop <> ''");
+ }
+ if ($freifelder) {
+ /**
+ * @deprecated 20.1
+ * AP
+ * Konstrunktion 'freifeld_Mappingname -> Wert' wird ersetzt durch 'Freifelder-> DE -> Mappingname -> Wert'
+ */
+ foreach ($freifelder as $freifeld) {
+ if (method_exists($tmp, 'Get' . ucfirst($freifeld['freifeld_wawi']))) {
+ $_funktionsname = 'Get' . ucfirst($freifeld['freifeld_wawi']);
+ $data[$i]['freifeld_' . $freifeld['freifeld_shop']] = $tmp->$_funktionsname();
+ }
+ }
+ /**
+ * @deprecated Ende
+ */
+ foreach ($freifelder as $freifeld) {
+ $_funktionsname = 'Get' . ucfirst($freifeld['freifeld_wawi']);
+ if (method_exists($tmp, $_funktionsname)) {
+ $data[$i]['freifelder']['DE'][$freifeld['freifeld_shop']] = $tmp->$_funktionsname();
+ }
+ }
+
+ //Freifeldübersetzungen
+ $freifelduebersetzungen = $this->app->DB->SelectArr("SELECT sf.freifeld_shop, af.sprache, af.nummer, af.wert FROM shopexport_freifelder sf JOIN artikel_freifelder af ON sf.freifeld_wawi = CONCAT('freifeld',af.nummer) WHERE sf.shop = '$id' AND af.artikel = '$artikel' AND sf.aktiv = 1 AND sf.freifeld_wawi <> '' AND sf.freifeld_shop <> '' AND af.wert <> ''");
+ if (!empty($freifelduebersetzungen)) {
+ foreach ($freifelduebersetzungen as $ffukey => $ffuvalue) {
+ $data[$i]['freifelder'][$ffuvalue['sprache']][] = array('mapping' => $ffuvalue['freifeld_shop'], 'freifeldnummer' => $ffuvalue['nummer'], 'wert' => $ffuvalue['wert']);
+ }
+ }
+ }
+
+ $data[$i]['typ'] = $tmp->GetTyp();
+ $data[$i]['kategoriename'] = $tmp->GetTyp();
+ if (strpos($data[$i]['typ'], '_kat')) {
+ $data[$i]['kategoriename'] = $this->app->DB->Select("SELECT bezeichnung FROM artikelkategorien WHERE id = '" . (int) str_replace('_kat', '', $data[$i]['typ']) . "' LIMIT 1");
+ }
+
+ $kategorienuebertragen = $shopexportarr['kategorienuebertragen']; //$this->app->DB->Select("SELECT kategorienuebertragen FROM shopexport WHERE id = '$id' LIMIT 1");
+ if (!empty($kategorienuebertragen) && !empty($loadElements['categories'])) {
+ $kategorienbaum = null;
+ /** @var Onlineshops $onlineShopObj */
+ $onlineShopObj = $this->app->loadModule('onlineshops');
+ $categoryRootId = 0;
+ if (!empty($onlineShopObj) && method_exists($onlineShopObj, 'getJsonSettings')) {
+ $categoryRootId = (int) $onlineShopObj->getJsonSettings($id, 'category_root_id');
+ }
+ $this->app->erp->GetKategorienbaum($kategorienbaum, $categoryRootId, 0, $id);
+ if (!empty($kategorienbaum)) {
+ $kategorien = $this->app->DB->SelectArr("SELECT ak.id, ak.bezeichnung FROM `artikelbaum_artikel` aa INNER JOIN `artikelkategorien` ak ON aa.kategorie = ak.id AND ak.geloescht <> 1 AND aa.artikel = '$artikel' ORDER by ak.bezeichnung");
+ if ($kategorien) {
+ foreach ($kategorien as $v) {
+ $katid[$v['id']] = true;
+ }
+ }
+ if (!empty($katid)) {
+ foreach ($kategorienbaum as $v) {
+ $data[$i]['kompletter_kategorienbaum'][] = array('name' => $v['bezeichnung'], 'parent' => $v['parent'], 'id' => $v['id'], 'lvl' => $v['lvl'], 'extid' => $v['extid']);
+ if (isset($katid[$v['id']])) {
+ $data[$i]['kategorien'][] = array('name' => $v['bezeichnung'], 'parent' => $v['parent'], 'id' => $v['id'], 'lvl' => $v['lvl'], 'extid' => $v['extid']);
+ }
+ }
+ }
+ }
+ }
+
+ $eigenschaftenuebertragen = $shopexportarr['eigenschaftenuebertragen']; //$this->app->DB->Select("SELECT eigenschaftenuebertragen FROM shopexport WHERE id = '$id' LIMIT 1");
+ if (!empty($eigenschaftenuebertragen) && !empty($loadElements['properties'])) {
+ $eigenschaften = $this->app->DB->SelectArr("SELECT e.name, ew.wert FROM artikeleigenschaften e INNER JOIN artikeleigenschaftenwerte ew ON e.id = ew.artikeleigenschaften
WHERE ew.artikel = '$artikel' AND e.name <> '' AND ew.wert <> '' AND e.geloescht <> 1");
- if(!empty($eigenschaften))
- {
- $eigenschaftind = 0;
- foreach($eigenschaften as $eigenschaft)
- {
- $eigenschaftind++;
- $data[$i]['eigenschaften'][] = array('name'=>$eigenschaft['name'], 'values'=>$eigenschaft['wert']);
- }
- }
+ if (!empty($eigenschaften)) {
+ $eigenschaftind = 0;
+ foreach ($eigenschaften as $eigenschaft) {
+ $eigenschaftind++;
+ $data[$i]['eigenschaften'][] = array('name' => $eigenschaft['name'], 'values' => $eigenschaft['wert']);
+ }
+ }
- $eigenschaftenuebersetzungen = $this->app->DB->SelectArr("SELECT language_from, language_to, property_from, property_to,property_value_from,property_value_to FROM article_property_translation WHERE article_id = '$artikel'");
- $data[$i]['eigenschaftenuebersetzungen'] = $eigenschaftenuebersetzungen;
- }
+ $eigenschaftenuebersetzungen = $this->app->DB->SelectArr("SELECT language_from, language_to, property_from, property_to,property_value_from,property_value_to FROM article_property_translation WHERE article_id = '$artikel'");
+ $data[$i]['eigenschaftenuebersetzungen'] = $eigenschaftenuebersetzungen;
+ }
- //Bilder
- $dateien = null;
- if ($shopbilderuebertragen && !empty($loadElements['pictures'])) {
- $dateien = $this->getImagesForArticle($artikel);
- if (!empty($dateien)) {
- $data[$i]['Dateien'] = [];
- foreach ($dateien as $datei) {
- $filename = $this->app->erp->GetDateiName($datei['id']);
- $path_info = pathinfo($filename);
- $data[$i]['Dateien'][] = array(
- 'datei' => base64_encode($this->app->erp->GetDatei($datei['id'])),
- 'filename' => $filename,
- 'extension' => $path_info['extension'],
- 'titel' => $datei['titel'],
- 'beschreibung' => $datei['beschreibung'],
- 'id' => $datei['id'],
- 'version' => $datei['version'],
- 'stichwort' => $datei['subjekt'],
- 'extid' => $this->GetShopexportMappingExt($id, 'datei', $datei['id']));
- }
- }
- $dateiengeloescht = $this->app->DB->SelectArr("SELECT s.extid FROM shopexport_mapping s LEFT JOIN datei d ON s.intid = d.id AND d.geloescht = 0 WHERE s.shop = '$id' AND s.tabelle = 'datei' AND s.intid2 = '$artikel' AND isnull(d.id)");
- if (!empty($dateiengeloescht)) {
- if (empty($dateien)) {
- $data[$i]['Dateien'] = [];
- }
- foreach ($dateiengeloescht as $datei) {
- $data[$i]['Dateien'][] = array('loeschen' => 1, 'extid' => $datei['extid']);
- }
- }
- }
+ //Bilder
+ $dateien = null;
+ if ($shopbilderuebertragen && !empty($loadElements['pictures'])) {
+ $dateien = $this->getImagesForArticle($artikel);
+ if (!empty($dateien)) {
+ $data[$i]['Dateien'] = [];
+ foreach ($dateien as $datei) {
+ $filename = $this->app->erp->GetDateiName($datei['id']);
+ $path_info = pathinfo($filename);
+ $data[$i]['Dateien'][] = array(
+ 'datei' => base64_encode($this->app->erp->GetDatei($datei['id'])),
+ 'filename' => $filename,
+ 'extension' => $path_info['extension'],
+ 'titel' => $datei['titel'],
+ 'beschreibung' => $datei['beschreibung'],
+ 'id' => $datei['id'],
+ 'version' => $datei['version'],
+ 'stichwort' => $datei['subjekt'],
+ 'extid' => $this->GetShopexportMappingExt($id, 'datei', $datei['id']));
+ }
+ }
+ $dateiengeloescht = $this->app->DB->SelectArr("SELECT s.extid FROM shopexport_mapping s LEFT JOIN datei d ON s.intid = d.id AND d.geloescht = 0 WHERE s.shop = '$id' AND s.tabelle = 'datei' AND s.intid2 = '$artikel' AND isnull(d.id)");
+ if (!empty($dateiengeloescht)) {
+ if (empty($dateien)) {
+ $data[$i]['Dateien'] = [];
+ }
+ foreach ($dateiengeloescht as $datei) {
+ $data[$i]['Dateien'][] = array('loeschen' => 1, 'extid' => $datei['extid']);
+ }
+ }
+ }
- if (method_exists($tmp, 'GetSteuer_Art_Produkt')) {
- $data[$i]['steuer_art_produkt'] = $tmp->GetSteuer_Art_Produkt();
- }
- if (method_exists($tmp, 'GetSteuer_Art_Produkt_Download')) {
- $data[$i]['steuer_art_produkt_download'] = $tmp->GetSteuer_Art_Produkt_Download();
- }
+ if (method_exists($tmp, 'GetSteuer_Art_Produkt')) {
+ $data[$i]['steuer_art_produkt'] = $tmp->GetSteuer_Art_Produkt();
+ }
+ if (method_exists($tmp, 'GetSteuer_Art_Produkt_Download')) {
+ $data[$i]['steuer_art_produkt_download'] = $tmp->GetSteuer_Art_Produkt_Download();
+ }
- $projekt = $tmp->GetProjekt();
- $projektlager = $this->app->DB->Select("SELECT id FROM projekt WHERE id = '$projekt' AND projektlager = 1 LIMIT 1");
- $data[$i]['anzahl_bilder'] = $this->app->DB->Select("SELECT COUNT(datei) FROM datei_stichwoerter WHERE subjekt='Shopbild' AND objekt='Artikel' AND parameter='$artikel'");
+ $projekt = $tmp->GetProjekt();
+ $projektlager = $this->app->DB->Select("SELECT id FROM projekt WHERE id = '$projekt' AND projektlager = 1 LIMIT 1");
+ $data[$i]['anzahl_bilder'] = $this->app->DB->Select("SELECT COUNT(datei) FROM datei_stichwoerter WHERE subjekt='Shopbild' AND objekt='Artikel' AND parameter='$artikel'");
- $bestandalternativartikel = method_exists($tmp, 'GetBestandalternativartikel') ? $tmp->GetBestandalternativartikel() : 0;
+ $bestandalternativartikel = method_exists($tmp, 'GetBestandalternativartikel') ? $tmp->GetBestandalternativartikel() : 0;
- if ($bestandalternativartikel) {
- $data[$i]['anzahl_lager'] = floor($this->app->erp->ArtikelAnzahlVerkaufbar($bestandalternativartikel, 0, $projektlager, $id, $lagergrundlage));
- $data[$i]['lagerkorrekturwert'] = floor(-($this->app->erp->ArtikelAnzahlVerkaufbar($bestandalternativartikel, 0, $projektlager, 0, $lagergrundlage) - $data[$i]['anzahl_lager']));
- } else {
- $data[$i]['anzahl_lager'] = floor($this->app->erp->ArtikelAnzahlVerkaufbar($artikel, 0, $projektlager, $id, $lagergrundlage));
- $data[$i]['lagerkorrekturwert'] = floor(-($this->app->erp->ArtikelAnzahlVerkaufbar($artikel, 0, $projektlager, 0, $lagergrundlage) - $data[$i]['anzahl_lager']));
- }
+ if ($bestandalternativartikel) {
+ $data[$i]['anzahl_lager'] = floor($this->app->erp->ArtikelAnzahlVerkaufbar($bestandalternativartikel, 0, $projektlager, $id, $lagergrundlage));
+ $data[$i]['lagerkorrekturwert'] = floor(-($this->app->erp->ArtikelAnzahlVerkaufbar($bestandalternativartikel, 0, $projektlager, 0, $lagergrundlage) - $data[$i]['anzahl_lager']));
+ } else {
+ $data[$i]['anzahl_lager'] = floor($this->app->erp->ArtikelAnzahlVerkaufbar($artikel, 0, $projektlager, $id, $lagergrundlage));
+ $data[$i]['lagerkorrekturwert'] = floor(-($this->app->erp->ArtikelAnzahlVerkaufbar($artikel, 0, $projektlager, 0, $lagergrundlage) - $data[$i]['anzahl_lager']));
+ }
- $data[$i]['pseudolager'] = $this->app->erp->GetArtikelShopEinstellung('pseudolager', $artikel, $shopexportarr);
- $this->app->erp->RunHook('remote_send_article_list_pseudostorage', 3, $id, $artikel, $data[$i]['pseudolager']);
- if (is_numeric($data[$i]['pseudolager']) && $data[$i]['pseudolager'] < 0) {
- $data[$i]['pseudolager'] = 0;
- $data[$i]['anzahl_lager'] = 0;
- } elseif ($data[$i]['pseudolager'] > 0) {
- $data[$i]['anzahl_lager'] = $data[$i]['pseudolager'];
- }
- if ($data[$i]['anzahl_lager'] < 0) {
- $data[$i]['anzahl_lager'] = 0;
- }
- $data[$i]['autolagerlampe'] = $tmp->GetAutolagerlampe();
- if (method_exists($this->app->erp, 'GetArtikelShopEinstellung')) {
- $data[$i]['autolagerlampe'] = $this->app->erp->GetArtikelShopEinstellung('autolagerlampe', $artikel, $shopexportarr);
- }
- if ($data[$i]['autolagerlampe'] != '1') {
- $data[$i]['anzahl_lager'] = '';
- $data[$i]['pseudolager'] = '';
- $this->app->DB->Update(
- sprintf(
- 'UPDATE `artikel_onlineshops`
+ $data[$i]['pseudolager'] = $this->app->erp->GetArtikelShopEinstellung('pseudolager', $artikel, $shopexportarr);
+ $this->app->erp->RunHook('remote_send_article_list_pseudostorage', 3, $id, $artikel, $data[$i]['pseudolager']);
+ if (is_numeric($data[$i]['pseudolager']) && $data[$i]['pseudolager'] < 0) {
+ $data[$i]['pseudolager'] = 0;
+ $data[$i]['anzahl_lager'] = 0;
+ } elseif ($data[$i]['pseudolager'] > 0) {
+ $data[$i]['anzahl_lager'] = $data[$i]['pseudolager'];
+ }
+ if ($data[$i]['anzahl_lager'] < 0) {
+ $data[$i]['anzahl_lager'] = 0;
+ }
+ $data[$i]['autolagerlampe'] = $tmp->GetAutolagerlampe();
+ if (method_exists($this->app->erp, 'GetArtikelShopEinstellung')) {
+ $data[$i]['autolagerlampe'] = $this->app->erp->GetArtikelShopEinstellung('autolagerlampe', $artikel, $shopexportarr);
+ }
+ if ($data[$i]['autolagerlampe'] != '1') {
+ $data[$i]['anzahl_lager'] = '';
+ $data[$i]['pseudolager'] = '';
+ $this->app->DB->Update(
+ sprintf(
+ 'UPDATE `artikel_onlineshops`
SET `storage_cache` = NULL, `pseudostorage_cache` = NULL
WHERE `artikel` = %d AND `shop` = %d',
- $artikel, $id
- )
- );
- } else {
- $this->app->DB->Update(
- sprintf(
- 'UPDATE `artikel_onlineshops`
+ $artikel, $id
+ )
+ );
+ } else {
+ $this->app->DB->Update(
+ sprintf(
+ 'UPDATE `artikel_onlineshops`
SET `storage_cache` = %d, `pseudostorage_cache` = %s
WHERE `artikel` = %d AND `shop` = %d',
- $data[$i]['anzahl_lager'],
- !isset($data[$i]['pseudolager']) || !is_numeric($data[$i]['pseudolager']) ? 'NULL' : $data[$i]['pseudolager'],
- $artikel,
- $id
- )
- );
- }
+ $data[$i]['anzahl_lager'],
+ !isset($data[$i]['pseudolager']) || !is_numeric($data[$i]['pseudolager']) ? 'NULL' : $data[$i]['pseudolager'],
+ $artikel,
+ $id
+ )
+ );
+ }
- $projekt = $shopexportarr['projekt'];// $this->app->DB->Select("SELECT projekt FROM shopexport WHERE id='$id' LIMIT 1");
- if (!empty($shopexportarr['crosssellingartikeluebertragen']) && !empty($loadElements['cross_selling'])) {
- //if($this->app->DB->Select("SELECT crosssellingartikeluebertragen FROM shopexport WHERE id = '$id' LIMIT 1")){
- $data[$i]['crosssellingartikel'] = $this->app->DB->SelectArr("SELECT a.id, a.nummer, ak.bezeichnung as kategorie, a.name_de, a.name_en, ca.art, ca.gegenseitigzuweisen, af.nummer AS fremdnummer
+ $projekt = $shopexportarr['projekt']; // $this->app->DB->Select("SELECT projekt FROM shopexport WHERE id='$id' LIMIT 1");
+ if (!empty($shopexportarr['crosssellingartikeluebertragen']) && !empty($loadElements['cross_selling'])) {
+ //if($this->app->DB->Select("SELECT crosssellingartikeluebertragen FROM shopexport WHERE id = '$id' LIMIT 1")){
+ $data[$i]['crosssellingartikel'] = $this->app->DB->SelectArr("SELECT a.id, a.nummer, ak.bezeichnung as kategorie, a.name_de, a.name_en, ca.art, ca.gegenseitigzuweisen, af.nummer AS fremdnummer
FROM crossselling_artikel ca
JOIN artikel a ON ca.crosssellingartikel = a.id
LEFT JOIN artikelkategorien ak ON CONCAT(ak.id,'_kat') = a.typ
@@ -1591,14 +1470,12 @@ class Remote
WHERE ca.artikel='" . $tmp->GetId() . "' AND (ca.shop='$id' OR ca.shop='0')
GROUP BY ca.crosssellingartikel, ca.art");
- if (empty($data[$i]['crosssellingartikel'])) {
- $data[$i]['crosssellingartikel'] = [];
- }
+ if (empty($data[$i]['crosssellingartikel'])) {
+ $data[$i]['crosssellingartikel'] = [];
+ }
-
- $sql =
-
- "SELECT a.id, a.nummer, ak.bezeichnung as kategorie, a.name_de, a.name_en, ca.art, ca.gegenseitigzuweisen, af.nummer AS fremdnummer
+
+ $sql = "SELECT a.id, a.nummer, ak.bezeichnung as kategorie, a.name_de, a.name_en, ca.art, ca.gegenseitigzuweisen, af.nummer AS fremdnummer
FROM crossselling_artikel ca
JOIN artikel a ON ca.artikel = a.id
LEFT JOIN artikelkategorien ak ON CONCAT(ak.id,'_kat') = a.typ
@@ -1607,139 +1484,141 @@ class Remote
WHERE ca.crosssellingartikel='" . $tmp->GetId() . "' AND ca.gegenseitigzuweisen=1 AND (ca.shop='$id' OR ca.shop='0')
GROUP BY ca.artikel, ca.art";
- $gegenseitigzugewiesen = $this->app->DB->SelectArr($sql);
+ $gegenseitigzugewiesen = $this->app->DB->SelectArr($sql);
- if (!empty($gegenseitigzugewiesen)) {
- foreach ($gegenseitigzugewiesen as $gegenseitigzugewiesenercrosssellingartikel) {
- $data[$i]['crosssellingartikel'][] = $gegenseitigzugewiesenercrosssellingartikel;
- }
- }
- }
-
- if (!empty($loadElements['article_descriptions']) && $this->app->erp->ModulVorhanden('artikel_texte')) {
- $sprachen = ['de', 'en'];
- foreach ($sprachen as $sprache) {
- $query = sprintf("SELECT * FROM artikel_texte WHERE shop=%d AND sprache='%s' AND artikel=%d AND aktiv=1 LIMIT 1",
- $id, strtoupper($sprache), $artikel);
- $ersetzeStandardbeschreibung = $this->app->DB->SelectRow($query);
- if (!empty($ersetzeStandardbeschreibung)) {
- $data[$i]['name_' . $sprache] = $ersetzeStandardbeschreibung['name'];
- $data[$i]['beschreibung_' . $sprache] = $ersetzeStandardbeschreibung['beschreibung_online'];
- $data[$i]['kurztext_' . $sprache] = $ersetzeStandardbeschreibung['kurztext'];
- $data[$i]['metadescription_' . $sprache] = $ersetzeStandardbeschreibung['meta_description'];
- $data[$i]['metakeywords_' . $sprache] = $ersetzeStandardbeschreibung['meta_keywords'];
- $data[$i]['metatitle_' . $sprache] = $ersetzeStandardbeschreibung['meta_title'];
- if ($sprache === 'de') {
- $data[$i]['anabregs_text'] = $ersetzeStandardbeschreibung['beschreibung'];
- } else {
- $data[$i]['anabregs_text_en'] = $ersetzeStandardbeschreibung['beschreibung'];
+ if (!empty($gegenseitigzugewiesen)) {
+ foreach ($gegenseitigzugewiesen as $gegenseitigzugewiesenercrosssellingartikel) {
+ $data[$i]['crosssellingartikel'][] = $gegenseitigzugewiesenercrosssellingartikel;
+ }
+ }
}
- }
- }
- }
- if(!empty($loadElements['standard_price'])){
+ if (!empty($loadElements['article_descriptions']) && $this->app->erp->ModulVorhanden('artikel_texte')) {
+ $sprachen = ['de', 'en'];
+ foreach ($sprachen as $sprache) {
+ $query = sprintf("SELECT * FROM artikel_texte WHERE shop=%d AND sprache='%s' AND artikel=%d AND aktiv=1 LIMIT 1",
+ $id, strtoupper($sprache), $artikel);
+ $ersetzeStandardbeschreibung = $this->app->DB->SelectRow($query);
+ if (!empty($ersetzeStandardbeschreibung)) {
+ $data[$i]['name_' . $sprache] = $ersetzeStandardbeschreibung['name'];
+ $data[$i]['beschreibung_' . $sprache] = $ersetzeStandardbeschreibung['beschreibung_online'];
+ $data[$i]['kurztext_' . $sprache] = $ersetzeStandardbeschreibung['kurztext'];
+ $data[$i]['metadescription_' . $sprache] = $ersetzeStandardbeschreibung['meta_description'];
+ $data[$i]['metakeywords_' . $sprache] = $ersetzeStandardbeschreibung['meta_keywords'];
+ $data[$i]['metatitle_' . $sprache] = $ersetzeStandardbeschreibung['meta_title'];
+ if ($sprache === 'de') {
+ $data[$i]['anabregs_text'] = $ersetzeStandardbeschreibung['beschreibung'];
+ } else {
+ $data[$i]['anabregs_text_en'] = $ersetzeStandardbeschreibung['beschreibung'];
+ }
+ }
+ }
+ }
- $priceInformation = $this->app->DB->SelectArr("SELECT v.preis AS preis, v.waehrung
+ if (!empty($loadElements['standard_price'])) {
+
+ $priceInformation = $this->app->DB->SelectArr("SELECT v.preis AS preis, v.waehrung
FROM `verkaufspreise` AS `v`
WHERE v.artikel = '{$artikel}' AND v.ab_menge = 1 AND v.geloescht = 0 AND v.art != 'Gruppe'
AND (v.objekt = 'Standard' OR v.objekt = '') AND (v.adresse = '0' OR v.adresse = '')
AND (v.gueltig_bis >= NOW() OR v.gueltig_bis = '0000-00-00')
ORDER BY v.preis DESC LIMIT 1");
- $priceInformation = reset($priceInformation);
- $defaultPrice = $priceInformation['preis'];
- $defaultCurrency = $priceInformation['waehrung'] ?: 'EUR';
- if($preisgruppe && method_exists($this->app->erp, 'GetVerkaufspreisGruppe')){
- $defaultCurrency = 'EUR'; //the follow up function imply EUR as the default currency
- $defaultPrice = $this->app->erp->GetVerkaufspreisGruppe($artikel, 1, $preisgruppe);
- }
- $data[$i]['waehrung'] = $defaultCurrency;
- $data[$i]['preis'] = $defaultPrice;
+ if (!empty($priceInformation)) {
+ $priceInformation = reset($priceInformation);
+ $defaultPrice = $priceInformation['preis'];
+ $defaultCurrency = $priceInformation['waehrung'] ?: 'EUR';
+ if ($preisgruppe && method_exists($this->app->erp, 'GetVerkaufspreisGruppe')) {
+ $defaultCurrency = 'EUR'; //the follow up function imply EUR as the default currency
+ $defaultPrice = $this->app->erp->GetVerkaufspreisGruppe($artikel, 1, $preisgruppe);
+ }
+ $data[$i]['waehrung'] = $defaultCurrency;
+ $data[$i]['preis'] = $defaultPrice;
+ }
- if(!empty($tmp->GetSteuersatz()) && $tmp->GetSteuersatz() != -1){
- $data[$i]['steuersatz'] = (float)$tmp->GetSteuersatz();
- }elseif($data[$i]['umsatzsteuer'] === 'ermaessigt'){
- $data[$i]['steuersatz'] = (float)$this->app->erp->GetStandardSteuersatzErmaessigt($projekt);
- }elseif($data[$i]['umsatzsteuer'] === 'befreit'){
- $data[$i]['steuersatz'] = 0;
- }else{
- $data[$i]['steuersatz'] = (float)$this->app->erp->GetStandardSteuersatzNormal($projekt);
- }
+ if (!empty($tmp->GetSteuersatz()) && $tmp->GetSteuersatz() != -1) {
+ $data[$i]['steuersatz'] = (float) $tmp->GetSteuersatz();
+ } elseif ($data[$i]['umsatzsteuer'] === 'ermaessigt') {
+ $data[$i]['steuersatz'] = (float) $this->app->erp->GetStandardSteuersatzErmaessigt($projekt);
+ } elseif ($data[$i]['umsatzsteuer'] === 'befreit') {
+ $data[$i]['steuersatz'] = 0;
+ } else {
+ $data[$i]['steuersatz'] = (float) $this->app->erp->GetStandardSteuersatzNormal($projekt);
+ }
- $steuer = ($data[$i]['steuersatz'] + 100) / 100.0;
+ $steuer = ($data[$i]['steuersatz'] + 100) / 100.0;
- if(!empty($shopexportarr['staffelpreiseuebertragen']) && !empty($loadElements['bulk_prices'])){
- $preisgruppenzusatz = " AND v.art = 'Kunde' AND v.adresse = 0";
- if(!empty($preisgruppe)){
- $preisgruppenzusatz = " AND v.gruppe = '$preisgruppe'";
- }
- $query = sprintf("SELECT v.adresse, g.name, g.kennziffer, v.ab_menge, v.preis, g.id, v.waehrung
+ if (!empty($shopexportarr['staffelpreiseuebertragen']) && !empty($loadElements['bulk_prices'])) {
+ $preisgruppenzusatz = " AND v.art = 'Kunde' AND v.adresse = 0";
+ if (!empty($preisgruppe)) {
+ $preisgruppenzusatz = " AND v.gruppe = '$preisgruppe'";
+ }
+ $query = sprintf("SELECT v.adresse, g.name, g.kennziffer, v.ab_menge, v.preis, g.id, v.waehrung
FROM `verkaufspreise` AS `v`
LEFT JOIN `gruppen` AS `g` on v.gruppe = g.id
WHERE v.artikel = %d AND v.geloescht = 0 AND (v.gueltig_bis = '0000-00-00' OR curdate() <= v.gueltig_bis OR isnull(v.gueltig_bis))
AND v.adresse = 0 AND (v.gueltig_ab = '0000-00-00' OR curdate() >= v.gueltig_ab OR isnull(v.gueltig_ab)) %s
ORDER by g.id, v.ab_menge", $artikel, $preisgruppenzusatz);
- $standardstaffelpreise = $this->app->DB->SelectArr($query);
- $data[$i]['staffelpreise_standard'] = [];
- if(!empty($standardstaffelpreise)){
- foreach ($standardstaffelpreise as $staffelpreis) {
- $data[$i]['staffelpreise_standard'][] = [
- 'ab_menge' => $staffelpreis['ab_menge'],
- 'preis' => $staffelpreis['preis'],
- 'bruttopreis' => $staffelpreis['preis'] * $steuer,
- 'waehrung' => $staffelpreis['waehrung'] ?: 'EUR'
- ];
- }
- }
+ $standardstaffelpreise = $this->app->DB->SelectArr($query);
+ $data[$i]['staffelpreise_standard'] = [];
+ if (!empty($standardstaffelpreise)) {
+ foreach ($standardstaffelpreise as $staffelpreis) {
+ $data[$i]['staffelpreise_standard'][] = [
+ 'ab_menge' => $staffelpreis['ab_menge'],
+ 'preis' => $staffelpreis['preis'],
+ 'bruttopreis' => $staffelpreis['preis'] * $steuer,
+ 'waehrung' => $staffelpreis['waehrung'] ?: 'EUR'
+ ];
+ }
+ }
- $query = sprintf("SELECT a.name AS `kundenname`, a.email, v.adresse, v.ab_menge, v.preis, v.waehrung
+ $query = sprintf("SELECT a.name AS `kundenname`, a.email, v.adresse, v.ab_menge, v.preis, v.waehrung
FROM `verkaufspreise` AS `v`
JOIN `adresse` AS `a` ON v.adresse = a.id AND v.art LIKE 'Kunde'
WHERE v.`artikel` = %d AND v.geloescht = 0 AND (v.gueltig_bis = '0000-00-00' OR curdate() <= v.gueltig_bis OR isnull(v.gueltig_bis))
AND (v.gueltig_ab = '0000-00-00' OR curdate() >= v.gueltig_ab OR isnull(v.gueltig_ab))
ORDER by v.adresse, v.ab_menge", $artikel);
- $staffelpreisekunden = $this->app->DB->SelectArr($query);
- if(!empty($staffelpreisekunden)){
- foreach ($staffelpreisekunden as $staffelpreis) {
- $data[$i]['staffelpreise_kunden'][] = [
- 'ab_menge' => $staffelpreis['ab_menge'],
- 'preis' => $staffelpreis['preis'],
- 'bruttopreis' => $staffelpreis['preis'] * $steuer,
- 'waehrung' => $staffelpreis['waehrung'] ?: 'EUR',
- 'email' => $staffelpreis['email'],
- 'kundenname' => $staffelpreis['kundenname']
- ];
- }
- }
+ $staffelpreisekunden = $this->app->DB->SelectArr($query);
+ if (!empty($staffelpreisekunden)) {
+ foreach ($staffelpreisekunden as $staffelpreis) {
+ $data[$i]['staffelpreise_kunden'][] = [
+ 'ab_menge' => $staffelpreis['ab_menge'],
+ 'preis' => $staffelpreis['preis'],
+ 'bruttopreis' => $staffelpreis['preis'] * $steuer,
+ 'waehrung' => $staffelpreis['waehrung'] ?: 'EUR',
+ 'email' => $staffelpreis['email'],
+ 'kundenname' => $staffelpreis['kundenname']
+ ];
+ }
+ }
- $query = sprintf("SELECT g.name, g.kennziffer, v.ab_menge, v.preis, g.id, v.waehrung, sk.extgruppename
+ $query = sprintf("SELECT g.name, g.kennziffer, v.ab_menge, v.preis, g.id, v.waehrung, sk.extgruppename
FROM `verkaufspreise` AS `v`
JOIN `gruppen` AS `g` on v.gruppe = g.id
JOIN `shopexport_kundengruppen` AS `sk` ON sk.gruppeid = v.gruppe
WHERE v.`artikel` = %d AND v.geloescht = 0 AND (v.gueltig_bis = '0000-00-00' OR curdate() <= v.gueltig_bis OR isnull(v.gueltig_bis))
AND v.art like 'Gruppe' AND v.gruppe <> '%s' AND sk.shopid = %d AND sk.aktiv = 1 AND (v.gueltig_ab = '0000-00-00' OR curdate() >= v.gueltig_ab OR isnull(v.gueltig_ab))
ORDER by g.id, v.ab_menge", $artikel, $preisgruppe, $id);
- $staffelpreisegruppen = $this->app->DB->SelectArr($query);
- if(!empty($staffelpreisegruppen)){
- foreach ($staffelpreisegruppen as $staffelpreis) {
- $data[$i]['staffelpreise_gruppen'][] = [
- 'ab_menge' => $staffelpreis['ab_menge'],
- 'preis' => $staffelpreis['preis'],
- 'bruttopreis' => $staffelpreis['preis'] * $steuer,
- 'waehrung' => $staffelpreis['waehrung'] ?: 'EUR',
- 'kennziffer' => $staffelpreis['kennziffer'],
- 'gruppenname' => $staffelpreis['name'],
- 'gruppeextern' => $staffelpreis['extgruppename']
- ];
- }
- }
+ $staffelpreisegruppen = $this->app->DB->SelectArr($query);
+ if (!empty($staffelpreisegruppen)) {
+ foreach ($staffelpreisegruppen as $staffelpreis) {
+ $data[$i]['staffelpreise_gruppen'][] = [
+ 'ab_menge' => $staffelpreis['ab_menge'],
+ 'preis' => $staffelpreis['preis'],
+ 'bruttopreis' => $staffelpreis['preis'] * $steuer,
+ 'waehrung' => $staffelpreis['waehrung'] ?: 'EUR',
+ 'kennziffer' => $staffelpreis['kennziffer'],
+ 'gruppenname' => $staffelpreis['name'],
+ 'gruppeextern' => $staffelpreis['extgruppename']
+ ];
+ }
+ }
- /**
- * @deprecated 20.3
- * Staffelpreise werden gesondert uebergeben statt in einem sammelarray
- */
- $staffelpreise = $this->app->DB->SelectArr("
+ /**
+ * @deprecated 20.3
+ * Staffelpreise werden gesondert uebergeben statt in einem sammelarray
+ */
+ $staffelpreise = $this->app->DB->SelectArr("
SELECT a.name AS kundenname, a.email, v.adresse, g.name,g.kennziffer, v.ab_menge, v.preis, g.id, v.waehrung, art.umsatzsteuer
FROM `verkaufspreise` AS v
INNER JOIN artikel art ON v.artikel = art.id
@@ -1748,63 +1627,60 @@ class Remote
WHERE v.`artikel` = '$artikel' AND v.geloescht = 0 AND (v.gueltig_bis = '0000-00-00' OR curdate() <= v.gueltig_bis OR isnull(v.gueltig_bis))
AND (v.gueltig_ab = '0000-00-00' OR curdate() >= v.gueltig_ab OR isnull(v.gueltig_ab)) ORDER by g.id, ab_menge");
- if(!empty($staffelpreise)){
- foreach ($staffelpreise as $k => $v) {
- if(empty($v['adresse'])){
- $data[$i]['staffelpreise'][] = array('ab_menge' => $v['ab_menge'], 'preis' => $v['preis'], 'bruttopreis' => $v['preis'] * $steuer, 'waehrung' => ($v['waehrung'] ? $v['waehrung'] : 'EUR'));
- if($v['id']){
- $data[$i]['staffelpreise'][count($data[$i]['staffelpreise']) - 1]['gruppenkennziffer'] = $v['kennziffer'];
- $data[$i]['staffelpreise'][count($data[$i]['staffelpreise']) - 1]['gruppenname'] = $v['name'];
+ if (!empty($staffelpreise)) {
+ foreach ($staffelpreise as $k => $v) {
+ if (empty($v['adresse'])) {
+ $data[$i]['staffelpreise'][] = array('ab_menge' => $v['ab_menge'], 'preis' => $v['preis'], 'bruttopreis' => $v['preis'] * $steuer, 'waehrung' => ($v['waehrung'] ? $v['waehrung'] : 'EUR'));
+ if ($v['id']) {
+ $data[$i]['staffelpreise'][count($data[$i]['staffelpreise']) - 1]['gruppenkennziffer'] = $v['kennziffer'];
+ $data[$i]['staffelpreise'][count($data[$i]['staffelpreise']) - 1]['gruppenname'] = $v['name'];
+ }
+ }
+ }
+ }
+ /**
+ * @deprecated Ende
+ */
+ }
+ $data[$i]['bruttopreis'] = $data[$i]['preis'] * $steuer;
+ }
+ $data[$i]['checksum'] = $tmp->GetChecksum();
+ if ($data[$i]['preis'] == '' && !empty($artikelexport) && !$nurlager) {
+ if ($lagerexport) {
+ $nurlager = true;
+ } else {
+ $this->app->erp->Systemlog(
+ 'Shopexport bei Artikel ' . $data[$i]['nummer'] . ' ' . $data[$i]['name_de'] . ' fehlgeschlagen, da Verkaufspreis fehlt.'
+ );
+ $data[$i]['artikel'] = 'ignore';
}
- }
}
- }
- /**
- * @deprecated Ende
- */
- }
+ $steuerermaessigt = ($this->app->erp->GetStandardSteuersatzErmaessigt($projekt) + 100) / 100.0;
+ $steuernormal = ($this->app->erp->GetStandardSteuersatzNormal($projekt) + 100) / 100.0;
+ $steuermapping = [
+ 'befreit' => 1,
+ 'ermaessigt' => $steuerermaessigt,
+ 'normal' => $steuernormal
+ ];
- $data[$i]['bruttopreis'] = $data[$i]['preis'] * $steuer;
- }
- $data[$i]['checksum'] = $tmp->GetChecksum();
- if ($data[$i]['preis'] == '' && !empty($artikelexport) && !$nurlager) {
- if($lagerexport){
- $nurlager = true;
- } else {
- $this->app->erp->Systemlog(
- 'Shopexport bei Artikel ' . $data[$i]['nummer'] . ' ' . $data[$i]['name_de'] . ' fehlgeschlagen, da Verkaufspreis fehlt.'
- );
- $data[$i]['artikel'] = 'ignore';
- }
- }
+ if (!empty($loadElements['variants']) && !empty($shopexportarr['variantenuebertragen']) && $this->app->erp->ModulVorhanden('matrixprodukt') && $tmp->GetMatrixprodukt()) {
+ $artfreifeld = '';
+ for ($_i = 1; $_i <= 40; $_i++) {
+ $artfreifeld .= sprintf(' art.freifeld%d AS `freifeld%d`, ', $_i, $_i);
+ }
+ $varianten = null;
- $steuerermaessigt = ($this->app->erp->GetStandardSteuersatzErmaessigt($projekt) + 100) / 100.0;
- $steuernormal = ($this->app->erp->GetStandardSteuersatzNormal($projekt) + 100) / 100.0;
- $steuermapping = [
- 'befreit' => 1,
- 'ermaessigt' => $steuerermaessigt,
- 'normal' => $steuernormal
- ];
+ $data[$i]['artikel_varianten'] = [];
+ $db = $this->app->Container->get('Database');
- if (!empty($loadElements['variants']) && !empty($shopexportarr['variantenuebertragen'])
- && $this->app->erp->ModulVorhanden('matrixprodukt') && $tmp->GetMatrixprodukt()) {
- $artfreifeld = '';
- for ($_i = 1; $_i <= 40; $_i++) {
- $artfreifeld .= sprintf(' art.freifeld%d AS `freifeld%d`, ',$_i,$_i);
- }
- $varianten = null;
+ $offset = 0;
+ $eigenschaftind = 0;
- $data[$i]['artikel_varianten'] = [];
- $db = $this->app->Container->get('Database');
+ $gruppenuebersetzung = [];
+ $gruppenwertuebersetzung = [];
- $offset = 0;
- $eigenschaftind = 0;
-
- $gruppenuebersetzung = [];
- $gruppenwertuebersetzung = [];
-
- $query = sprintf('SELECT meoa.name AS wert,meoa.name_ext AS wert_ext, mega.name AS gruppe, mega.name_ext AS gruppe_ext
+ $query = sprintf('SELECT meoa.name AS wert,meoa.name_ext AS wert_ext, mega.name AS gruppe, mega.name_ext AS gruppe_ext
FROM matrixprodukt_optionen_zu_artikel AS moza
JOIN matrixprodukt_eigenschaftenoptionen_artikel AS meoa ON moza.option_id = meoa.id
JOIN matrixprodukt_eigenschaftengruppen_artikel AS mega ON mega.id = meoa.gruppe
@@ -1812,42 +1688,42 @@ class Remote
WHERE art.variante_von=%d ANd art.geloescht=0 AND art.nummer <> "DEL" AND art.intern_gesperrt=0
GROUP BY mega.id, meoa.id
ORDER BY SUM(POW(10,1-mega.sort) * meoa.sort) ASC', $artikel);
- foreach ($db->yieldAll($query) as $matrixdaten) {
- $data[$i]['matrix_varianten']['gruppen'][$matrixdaten['gruppe']][$matrixdaten['wert']] = true;
+ foreach ($db->yieldAll($query) as $matrixdaten) {
+ $data[$i]['matrix_varianten']['gruppen'][$matrixdaten['gruppe']][$matrixdaten['wert']] = true;
- if ($translationpossible && !empty($loadElements['translations'])) {
- if (empty($gruppenuebersetzung[$matrixdaten['gruppe']])) {
- $gruppennamen = $this->app->DB->SelectArr("SELECT
+ if ($translationpossible && !empty($loadElements['translations'])) {
+ if (empty($gruppenuebersetzung[$matrixdaten['gruppe']])) {
+ $gruppennamen = $this->app->DB->SelectArr("SELECT
IF(name_external_from<>'',name_external_from,name_from) AS name_from,
IF(name_external_to<>'',name_external_to,name_to) AS name_to, language_to
FROM `matrix_article_translation`
WHERE name_from='" . $matrixdaten['gruppe'] . "' AND (project=0 OR project='$projekt')");
- $gruppenuebersetzung[$matrixdaten['gruppe']] = true;
- if (!empty($gruppennamen)) {
- foreach ($gruppennamen as $gruppenname) {
- $data[$i]['matrix_varianten']['texte']['gruppen'][$gruppenname['language_to']][$gruppenname['name_from']] = $gruppenname['name_to'];
- }
- }
- }
- if (empty($gruppenwertuebersetzung[$matrixdaten['wert']])) {
- $gruppenwerte = $this->app->DB->SelectArr("SELECT
+ $gruppenuebersetzung[$matrixdaten['gruppe']] = true;
+ if (!empty($gruppennamen)) {
+ foreach ($gruppennamen as $gruppenname) {
+ $data[$i]['matrix_varianten']['texte']['gruppen'][$gruppenname['language_to']][$gruppenname['name_from']] = $gruppenname['name_to'];
+ }
+ }
+ }
+ if (empty($gruppenwertuebersetzung[$matrixdaten['wert']])) {
+ $gruppenwerte = $this->app->DB->SelectArr("SELECT
IF(maot.name_external_from<>'',maot.name_external_from,maot.name_from) AS `name_from`,
IF(maot.name_external_to<>'',maot.name_external_to,maot.name_to) AS `name_to`, maot.language_to
FROM `matrix_article_options_translation` AS `maot`
WHERE maot.name_from='" . $this->app->DB->real_escape_string($matrixdaten['wert']) . "'");
- $gruppenwertuebersetzung[$matrixdaten['wert']] = true;
- foreach ($gruppenwerte as $gruppenwert) {
- $data[$i]['matrix_varianten']['texte']['werte'][$gruppenwert['language_to']][$gruppenwert['name_from']] = $gruppenwert['name_to'];
- }
- }
- }
- }
+ $gruppenwertuebersetzung[$matrixdaten['wert']] = true;
+ foreach ($gruppenwerte as $gruppenwert) {
+ $data[$i]['matrix_varianten']['texte']['werte'][$gruppenwert['language_to']][$gruppenwert['name_from']] = $gruppenwert['name_to'];
+ }
+ }
+ }
+ }
- do {
- unset($data[$i]['matrix_varianten']['artikel']);
- unset($data[$i]['artikel_varianten']);
- //if($this->app->DB->Select("SELECT variantenuebertragen FROM shopexport WHERE id = '$id' LIMIT 1")){
- $varianten = "SELECT art.pseudolager AS `pseudolager`, art.nummer AS `nummer`, art.inaktiv AS `inaktiv`,
+ do {
+ unset($data[$i]['matrix_varianten']['artikel']);
+ unset($data[$i]['artikel_varianten']);
+ //if($this->app->DB->Select("SELECT variantenuebertragen FROM shopexport WHERE id = '$id' LIMIT 1")){
+ $varianten = "SELECT art.pseudolager AS `pseudolager`, art.nummer AS `nummer`, art.inaktiv AS `inaktiv`,
art.id AS `artikel`, art.gewicht AS `gewicht`, art.zolltarifnummer AS `zolltarifnummer`, art.name_en AS `name_en`,
$artfreifeld
art.pseudopreis AS `pseudopreis`, art.lieferzeitmanuell AS `lieferzeitmanuell`, art.altersfreigabe AS `altersfreigabe`,
@@ -1874,77 +1750,76 @@ class Remote
GROUP BY art.id
ORDER BY SUM(POW(10,1-mega.sort) * meoa.sort) ASC
LIMIT 5000 OFFSET $offset";
- $offset += 5000;
+ $offset += 5000;
- foreach ($db->yieldAll($varianten) as $eigenschaft) {
- $eigenschaftind++;
- $steuer = $steuermapping[$eigenschaft['umsatzsteuer']];
- if(!empty($eigenschaft['steuersatz']) && $eigenschaft['steuersatz'] != -1){
- $steuer = ($eigenschaft['steuersatz'] + 100) / 100;
- }
- if (empty($steuer)) {
- $steuer = $steuernormal;
- }
- $matrixPseudoStorage = $eigenschaft['pseudolager'];
- $this->app->erp->RunHook('remote_send_article_list_pseudostorage', 3, $id, $eigenschaft['artikel'], $matrixPseudoStorage);
- if(is_numeric($matrixPseudoStorage) && $matrixPseudoStorage < 0) {
- $matrixPseudoStorage = 0;
- }
- if($matrixStock < 0) {
- $matrixStock = 0;
- }
- $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][] =
- array('zolltarifnummer' => $eigenschaft['zolltarifnummer'], 'gewicht' => $eigenschaft['gewicht'],
- 'artikel' => $eigenschaft['artikel'], 'preis' => $eigenschaft['preis'], 'gesperrt' => $eigenschaft['gesperrt'],
- 'nummer' => $eigenschaft['nummer'], 'lieferzeitmanuell' => $eigenschaft['lieferzeitmanuell'],
- 'altersfreigabe' => $eigenschaft['altersfreigabe'], 'ean' => $eigenschaft['ean'],
- 'lag' => $matrixStock,
- 'pseudolager' => $matrixPseudoStorage, 'pseudopreis' => $eigenschaft['pseudopreis'],
- 'restmenge' => $eigenschaft['restmenge'], 'steuersatz' => ($steuer - 1) * 100, 'umsatzsteuer' => $eigenschaft['umsatzsteuer'],
- 'bruttopreis' => $eigenschaft['preis'] * $steuer, 'inaktiv' => $eigenschaft['inaktiv'],
- 'name_de' => $eigenschaft['name_de'], 'name_en' => $eigenschaft['name_en'],
- 'uebersicht_de' => $eigenschaft['uebersicht_de'], 'uebersicht_en' => $eigenschaft['uebersicht_en']);
- if ($freifelder) {
- foreach ($freifelder as $freifeld) {
- $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][count($data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']]) - 1]['freifelder']['DE'][$freifeld['freifeld_shop']] =
- $this->app->DB->Select('SELECT ' . $freifeld['freifeld_wawi'] . ' FROM artikel WHERE id=' . $eigenschaft['artikel']);
- }
+ foreach ($db->yieldAll($varianten) as $eigenschaft) {
+ $eigenschaftind++;
+ $steuer = $steuermapping[$eigenschaft['umsatzsteuer']];
+ if (!empty($eigenschaft['steuersatz']) && $eigenschaft['steuersatz'] != -1) {
+ $steuer = ($eigenschaft['steuersatz'] + 100) / 100;
+ }
+ if (empty($steuer)) {
+ $steuer = $steuernormal;
+ }
+ $matrixPseudoStorage = $eigenschaft['pseudolager'];
+ $this->app->erp->RunHook('remote_send_article_list_pseudostorage', 3, $id, $eigenschaft['artikel'], $matrixPseudoStorage);
+ if (is_numeric($matrixPseudoStorage) && $matrixPseudoStorage < 0) {
+ $matrixPseudoStorage = 0;
+ }
+ $matrixStock = (float) $this->app->erp->ArtikelAnzahlVerkaufbar($eigenschaft['artikel'], 0, $projektlager, $id, $lagergrundlage);
+ if ($matrixStock < 0) {
+ $matrixStock = 0;
+ }
+ $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][] = array('zolltarifnummer' => $eigenschaft['zolltarifnummer'], 'gewicht' => $eigenschaft['gewicht'],
+ 'artikel' => $eigenschaft['artikel'], 'preis' => $eigenschaft['preis'], 'gesperrt' => $eigenschaft['gesperrt'],
+ 'nummer' => $eigenschaft['nummer'], 'lieferzeitmanuell' => $eigenschaft['lieferzeitmanuell'],
+ 'altersfreigabe' => $eigenschaft['altersfreigabe'], 'ean' => $eigenschaft['ean'],
+ 'lag' => $matrixStock,
+ 'pseudolager' => $matrixPseudoStorage, 'pseudopreis' => $eigenschaft['pseudopreis'],
+ 'restmenge' => $eigenschaft['restmenge'], 'steuersatz' => ($steuer - 1) * 100, 'umsatzsteuer' => $eigenschaft['umsatzsteuer'],
+ 'bruttopreis' => $eigenschaft['preis'] * $steuer, 'inaktiv' => $eigenschaft['inaktiv'],
+ 'name_de' => $eigenschaft['name_de'], 'name_en' => $eigenschaft['name_en'],
+ 'uebersicht_de' => $eigenschaft['uebersicht_de'], 'uebersicht_en' => $eigenschaft['uebersicht_en']);
+ if ($freifelder) {
+ foreach ($freifelder as $freifeld) {
+ $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][count($data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']]) - 1]['freifelder']['DE'][$freifeld['freifeld_shop']] = $this->app->DB->Select('SELECT ' . $freifeld['freifeld_wawi'] . ' FROM artikel WHERE id=' . $eigenschaft['artikel']);
+ }
- //Freifeldübersetzungen
- $freifelduebersetzungen = $this->app->DB->SelectArr("SELECT sf.freifeld_shop, af.sprache, af.nummer, af.wert FROM shopexport_freifelder sf JOIN artikel_freifelder af ON sf.freifeld_wawi = CONCAT('freifeld',af.nummer) WHERE sf.shop = '$id' AND af.artikel = '" . $eigenschaft['artikel'] . "' AND sf.aktiv = 1 AND sf.freifeld_wawi <> '' AND sf.freifeld_shop <> '' AND af.wert <> ''");
- if (!empty($freifelduebersetzungen)) {
- foreach ($freifelduebersetzungen as $ffukey => $ffuvalue) {
- $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][count($data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']]) - 1]['freifelder'][$ffuvalue['sprache']][] = array('mapping' => $ffuvalue['freifeld_shop'], 'freifeldnummer' => $ffuvalue['nummer'], 'wert' => $ffuvalue['wert']);
- }
- }
- }
+ //Freifeldübersetzungen
+ $freifelduebersetzungen = $this->app->DB->SelectArr("SELECT sf.freifeld_shop, af.sprache, af.nummer, af.wert FROM shopexport_freifelder sf JOIN artikel_freifelder af ON sf.freifeld_wawi = CONCAT('freifeld',af.nummer) WHERE sf.shop = '$id' AND af.artikel = '" . $eigenschaft['artikel'] . "' AND sf.aktiv = 1 AND sf.freifeld_wawi <> '' AND sf.freifeld_shop <> '' AND af.wert <> ''");
+ if (!empty($freifelduebersetzungen)) {
+ foreach ($freifelduebersetzungen as $ffukey => $ffuvalue) {
+ $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][count($data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']]) - 1]['freifelder'][$ffuvalue['sprache']][] = array('mapping' => $ffuvalue['freifeld_shop'], 'freifeldnummer' => $ffuvalue['nummer'], 'wert' => $ffuvalue['wert']);
+ }
+ }
+ }
- if ($shopbilderuebertragen && !empty($loadElements['pictures'])) {
- $dateien = $this->getImagesForArticle($eigenschaft['artikel']);
- if (!empty($dateien)) {
- foreach ($dateien as $datei) {
- $filename = $this->app->erp->GetDateiName($datei['id']);
- $path_info = pathinfo($filename);
- $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['Dateien']['datei'][] = base64_encode($this->app->erp->GetDatei($datei['id']));
- $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['Dateien']['filename'][] = $filename;
- $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['Dateien']['extension'][] = $path_info['extension'];
- $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['Dateien']['titel'][] = $datei['titel'];
- $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['Dateien']['beschreibung'][] = $datei['beschreibung'];
- $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['Dateien']['stichwort'][] = $datei['subjekt'];
- $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['Dateien']['id'][] = $datei['id'];
- $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['Dateien']['version'][] = $datei['version'];
- $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['Dateien']['extid'][] = $this->GetShopexportMappingExt($id, 'datei', $datei['id']);
- }
- }
- }
+ if ($shopbilderuebertragen && !empty($loadElements['pictures'])) {
+ $dateien = $this->getImagesForArticle($eigenschaft['artikel']);
+ if (!empty($dateien)) {
+ foreach ($dateien as $datei) {
+ $filename = $this->app->erp->GetDateiName($datei['id']);
+ $path_info = pathinfo($filename);
+ $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['Dateien']['datei'][] = base64_encode($this->app->erp->GetDatei($datei['id']));
+ $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['Dateien']['filename'][] = $filename;
+ $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['Dateien']['extension'][] = $path_info['extension'];
+ $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['Dateien']['titel'][] = $datei['titel'];
+ $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['Dateien']['beschreibung'][] = $datei['beschreibung'];
+ $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['Dateien']['stichwort'][] = $datei['subjekt'];
+ $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['Dateien']['id'][] = $datei['id'];
+ $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['Dateien']['version'][] = $datei['version'];
+ $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['Dateien']['extid'][] = $this->GetShopexportMappingExt($id, 'datei', $datei['id']);
+ }
+ }
+ }
- $standardstaffelpreise = null;
- if(!empty($loadElements['standard_price'])){
- $preisgruppenzusatz = " AND v.art = 'Kunde' AND v.adresse = 0";
- if(!empty($preisgruppe)){
- $preisgruppenzusatz = " AND v.gruppe = '$preisgruppe'";
- }
- $standardstaffelpreise = $this->app->DB->SelectArr("
+ $standardstaffelpreise = null;
+ if (!empty($loadElements['standard_price'])) {
+ $preisgruppenzusatz = " AND v.art = 'Kunde' AND v.adresse = 0";
+ if (!empty($preisgruppe)) {
+ $preisgruppenzusatz = " AND v.gruppe = '$preisgruppe'";
+ }
+ $standardstaffelpreise = $this->app->DB->SelectArr("
SELECT v.adresse, g.name,g.kennziffer, v.ab_menge, v.preis, g.id, v.waehrung, art.umsatzsteuer
FROM `verkaufspreise` AS v
INNER JOIN artikel art ON v.artikel = art.id
@@ -1952,20 +1827,20 @@ class Remote
WHERE v.`artikel` = '" . $eigenschaft['artikel'] . "' AND v.geloescht = 0 AND (v.gueltig_bis = '0000-00-00' OR curdate() <= v.gueltig_bis OR isnull(v.gueltig_bis))
AND v.adresse=0 AND (v.gueltig_ab = '0000-00-00' OR curdate() >= v.gueltig_ab OR isnull(v.gueltig_ab)) $preisgruppenzusatz
ORDER by g.id, ab_menge");
- }
- $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise_standard'] = [];
- if (!empty($standardstaffelpreise)) {
- foreach ($standardstaffelpreise as $staffelpreis) {
- $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise_standard'][] = [
- 'ab_menge' => $staffelpreis['ab_menge'],
- 'preis' => $staffelpreis['preis'],
- 'bruttopreis' => $staffelpreis['preis'] * $steuer,
- 'waehrung' => $staffelpreis['waehrung'] ?: 'EUR'
- ];
- }
- }
- if(!empty($loadElements['bulk_prices'])){
- $staffelpreisekunden = $this->app->DB->SelectArr("
+ }
+ $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise_standard'] = [];
+ if (!empty($standardstaffelpreise)) {
+ foreach ($standardstaffelpreise as $staffelpreis) {
+ $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise_standard'][] = [
+ 'ab_menge' => $staffelpreis['ab_menge'],
+ 'preis' => $staffelpreis['preis'],
+ 'bruttopreis' => $staffelpreis['preis'] * $steuer,
+ 'waehrung' => $staffelpreis['waehrung'] ?: 'EUR'
+ ];
+ }
+ }
+ if (!empty($loadElements['bulk_prices'])) {
+ $staffelpreisekunden = $this->app->DB->SelectArr("
SELECT a.name AS kundenname, a.email, v.adresse, v.ab_menge, v.preis, v.waehrung, art.umsatzsteuer
FROM `verkaufspreise` AS v
INNER JOIN artikel art ON v.artikel = art.id
@@ -1973,20 +1848,20 @@ class Remote
WHERE v.`artikel` = '" . $eigenschaft['artikel'] . "' AND v.geloescht = 0 AND (v.gueltig_bis = '0000-00-00' OR curdate() <= v.gueltig_bis OR isnull(v.gueltig_bis))
AND (v.gueltig_ab = '0000-00-00' OR curdate() >= v.gueltig_ab OR isnull(v.gueltig_ab))
ORDER by v.adresse, ab_menge");
- if(!empty($staffelpreisekunden)){
- foreach ($staffelpreisekunden as $staffelpreis) {
- $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise_kunden'][] = [
- 'ab_menge' => $staffelpreis['ab_menge'],
- 'preis' => $staffelpreis['preis'],
- 'bruttopreis' => $staffelpreis['preis'] * $steuer,
- 'waehrung' => $staffelpreis['waehrung'] ?: 'EUR',
- 'email' => $staffelpreis['email'],
- 'kundenname' => $staffelpreis['kundenname']
- ];
- }
- }
+ if (!empty($staffelpreisekunden)) {
+ foreach ($staffelpreisekunden as $staffelpreis) {
+ $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise_kunden'][] = [
+ 'ab_menge' => $staffelpreis['ab_menge'],
+ 'preis' => $staffelpreis['preis'],
+ 'bruttopreis' => $staffelpreis['preis'] * $steuer,
+ 'waehrung' => $staffelpreis['waehrung'] ?: 'EUR',
+ 'email' => $staffelpreis['email'],
+ 'kundenname' => $staffelpreis['kundenname']
+ ];
+ }
+ }
- $staffelpreisegruppen = $this->app->DB->SelectArr("
+ $staffelpreisegruppen = $this->app->DB->SelectArr("
SELECT g.name,g.kennziffer, v.ab_menge, v.preis, g.id, v.waehrung, art.umsatzsteuer,sk.extgruppename
FROM `verkaufspreise` AS v
INNER JOIN artikel art ON v.artikel = art.id
@@ -1995,218 +1870,215 @@ class Remote
WHERE v.`artikel` = '" . $eigenschaft['artikel'] . "' AND v.geloescht = 0 AND (v.gueltig_bis = '0000-00-00' OR curdate() <= v.gueltig_bis OR isnull(v.gueltig_bis))
AND v.art like 'Gruppe' AND v.gruppe<>'$preisgruppe' AND sk.shopid='$id' AND sk.aktiv=1 AND (v.gueltig_ab = '0000-00-00' OR curdate() >= v.gueltig_ab OR isnull(v.gueltig_ab))
ORDER by g.id, ab_menge");
- if(!empty($staffelpreisegruppen)){
- foreach ($staffelpreisegruppen as $staffelpreis) {
- $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise_gruppen'][] = [
- 'ab_menge' => $staffelpreis['ab_menge'],
- 'preis' => $staffelpreis['preis'],
- 'bruttopreis' => $staffelpreis['preis'] * $steuer,
- 'waehrung' => $staffelpreis['waehrung'] ?: 'EUR',
- 'kennziffer' => $staffelpreis['kennziffer'],
- 'gruppenname' => $staffelpreis['name'],
- 'gruppeextern' => $staffelpreis['extgruppename']
- ];
- }
- }
- }
- $staffelpreisema = null;
- if (!empty($shopexportarr['crosssellingartikeluebertragen']) && !empty($loadElements['cross_selling'])) {
- //if($this->app->DB->Select("SELECT crosssellingartikeluebertragen FROM shopexport WHERE id = '$id' LIMIT 1")){
- $preisgruppenzusatz = '';
- if (!empty($preisgruppe)) {
- $preisgruppenzusatz = " AND v.gruppe = '$preisgruppe'";
- }
- $staffelpreisema = $this->app->DB->SelectArr("
+ if (!empty($staffelpreisegruppen)) {
+ foreach ($staffelpreisegruppen as $staffelpreis) {
+ $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise_gruppen'][] = [
+ 'ab_menge' => $staffelpreis['ab_menge'],
+ 'preis' => $staffelpreis['preis'],
+ 'bruttopreis' => $staffelpreis['preis'] * $steuer,
+ 'waehrung' => $staffelpreis['waehrung'] ?: 'EUR',
+ 'kennziffer' => $staffelpreis['kennziffer'],
+ 'gruppenname' => $staffelpreis['name'],
+ 'gruppeextern' => $staffelpreis['extgruppename']
+ ];
+ }
+ }
+ }
+ $staffelpreisema = null;
+ if (!empty($shopexportarr['crosssellingartikeluebertragen']) && !empty($loadElements['cross_selling'])) {
+ //if($this->app->DB->Select("SELECT crosssellingartikeluebertragen FROM shopexport WHERE id = '$id' LIMIT 1")){
+ $preisgruppenzusatz = '';
+ if (!empty($preisgruppe)) {
+ $preisgruppenzusatz = " AND v.gruppe = '$preisgruppe'";
+ }
+ $staffelpreisema = $this->app->DB->SelectArr("
SELECT g.name, g.kennziffer, v.ab_menge, v.preis, g.id, v.waehrung, v.id, v.adresse, v.art, sk.extgruppename
FROM `verkaufspreise` AS v
LEFT JOIN gruppen g on v.gruppe = g.id AND v.art like 'Gruppe'
LEFT JOIN shopexport_kundengruppen sk ON sk.gruppeid=v.gruppe
WHERE v.`artikel` = '" . $eigenschaft['artikel'] . "' AND v.geloescht = 0 AND (ifnull(v.gueltig_bis,'0000-00-00') = '0000-00-00' OR curdate() <= v.gueltig_bis OR isnull(v.gueltig_bis))
AND (v.gueltig_ab = '0000-00-00' OR curdate() >= v.gueltig_ab OR isnull(v.gueltig_ab)) $preisgruppenzusatz ORDER by g.id, ab_menge");
- }
- if (!empty($staffelpreisema)) {
- foreach ($staffelpreisema as $k => $v) {
- $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise'][] = array('ab_menge' => $v['ab_menge'], 'preis' => $v['preis'], 'bruttopreis' => $v['preis'] * $steuer, 'waehrung' => ($v['waehrung'] ? $v['waehrung'] : 'EUR'));
- if ($v['id']) {
- $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise'][count($data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise']) - 1]['gruppenkennziffer'] = $v['kennziffer'];
- $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise'][count($data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise']) - 1]['gruppenname'] = $v['name'];
- $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise'][count($data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise']) - 1]['adresse'] = $v['adresse'];
- $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise'][count($data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise']) - 1]['art'] = $v['art'];
- $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise'][count($data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise']) - 1]['gruppeextern'] = $v['extgruppename'];
- }
- }
- }
+ }
+ if (!empty($staffelpreisema)) {
+ foreach ($staffelpreisema as $k => $v) {
+ $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise'][] = array('ab_menge' => $v['ab_menge'], 'preis' => $v['preis'], 'bruttopreis' => $v['preis'] * $steuer, 'waehrung' => ($v['waehrung'] ? $v['waehrung'] : 'EUR'));
+ if ($v['id']) {
+ $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise'][count($data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise']) - 1]['gruppenkennziffer'] = $v['kennziffer'];
+ $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise'][count($data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise']) - 1]['gruppenname'] = $v['name'];
+ $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise'][count($data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise']) - 1]['adresse'] = $v['adresse'];
+ $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise'][count($data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise']) - 1]['art'] = $v['art'];
+ $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise'][count($data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['staffelpreise']) - 1]['gruppeextern'] = $v['extgruppename'];
+ }
+ }
+ }
- $articleVariant = $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0];
- $articleVariant['artikel'] = $eigenschaft['artikel'];
- $data[$i]['artikel_varianten'][] = $articleVariant;
- unset($data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['Dateien']);
+ $articleVariant = $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0];
+ $articleVariant['artikel'] = $eigenschaft['artikel'];
+ $data[$i]['artikel_varianten'][] = $articleVariant;
+ unset($data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][0]['Dateien']);
-
- $query = sprintf('SELECT meoa.name AS wert,meoa.name_ext AS wert_ext, mega.name AS gruppe, mega.name_ext AS gruppe_ext
+ $query = sprintf('SELECT meoa.name AS wert,meoa.name_ext AS wert_ext, mega.name AS gruppe, mega.name_ext AS gruppe_ext
FROM matrixprodukt_optionen_zu_artikel AS moza
JOIN matrixprodukt_eigenschaftenoptionen_artikel AS meoa ON moza.option_id = meoa.id
JOIN matrixprodukt_eigenschaftengruppen_artikel AS mega ON mega.id = meoa.gruppe
WHERE moza.artikel=%d
ORDER BY mega.id, moza.id', $eigenschaft['artikel']);
- $matrixdaten = $this->app->DB->SelectArr($query);
+ $matrixdaten = $this->app->DB->SelectArr($query);
- for ($iv = 0, $ivMax = (!empty($matrixdaten)?count($matrixdaten):0); $iv < $ivMax; $iv++) {
- $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][$iv]['name'] = $matrixdaten[$iv]['gruppe'];
- $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][$iv]['values'] = $matrixdaten[$iv]['wert'];
- }
- }
-
- $result = null;
- if(empty($data)) {
- continue;
- }
- if (!empty($lagerexport)) {
- $result = $this->sendlistlager($i, $id, $data);
- }
- if (!empty($artikelexport) && !$nurlager) {
- $result = $this->sendlist($i, $id, $data, true);
- }
+ for ($iv = 0, $ivMax = (!empty($matrixdaten) ? count($matrixdaten) : 0); $iv < $ivMax; $iv++) {
+ $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][$iv]['name'] = $matrixdaten[$iv]['gruppe'];
+ $data[$i]['matrix_varianten']['artikel'][$eigenschaft['artikel']][$iv]['values'] = $matrixdaten[$iv]['wert'];
+ }
+ }
+ if (empty($data)) {
+ continue;
+ }
} while (count($data[$i]['matrix_varianten']['artikel'] ?? [])>=5000);
- return $result;
- }
-
- if(!empty($loadElements['variants']) && $this->app->DB->Select("SELECT id FROM artikel WHERE variante_von = '$artikel' AND variante = 1 AND geloescht <> 1 AND nummer != 'DEL' LIMIT 1")) {
- if($this->app->DB->Select("SELECT id FROM artikel WHERE id = '$artikel' AND variante = 0 AND matrixprodukt=0 AND geloescht <> 1 AND nummer != 'DEL' LIMIT 1")){
- $data[$i]['artikel_varianten'] = [];
- $data[$i]['variantevorhanden'] = 1;
- $varianten = "SELECT * FROM artikel WHERE variante_von = '$artikel' AND variante = 1 AND geloescht <> 1 AND nummer != 'DEL'";
- $db = $this->app->Container->get('Database');
- foreach ($db->yieldAll($varianten) as $v) {
- $steuer = $steuermapping[$v['umsatzsteuer']];
- if($v['steuersatz'] != -1 && !empty($v['steuersatz'])){
- $steuer = ($v['steuersatz'] + 100) / 100;
- }
- if(empty($steuer)) {
- $steuer = $steuernormal;
- }
- $variantennettopreis = null;
- if(!empty($loadElements['standard_price'])){
- if($preisgruppe && method_exists($this->app->erp, 'GetVerkaufspreisGruppe')){
- $variantennettopreis = $this->app->erp->GetVerkaufspreisGruppe($v['id'], 1, $preisgruppe);
- }else{
- $variantennettopreis = $this->app->erp->GetVerkaufspreis($v['id'], 1, 0);
- }
- }
- if(!empty($loadElements['translations']) && $this->app->erp->ModulVorhanden('artikel_texte')){
- $sprachen = ['de','en'];
- foreach ($sprachen as $sprache){
- $query = sprintf("SELECT * FROM artikel_texte WHERE shop=%d AND sprache='%s' AND artikel=%d AND aktiv=1 LIMIT 1",
- $id,strtoupper($sprache),$v['id']);
- $ersetzeStandardbeschreibung = $this->app->DB->SelectRow($query);
- if(!empty($ersetzeStandardbeschreibung)){
- $v['name_'.$sprache] = $ersetzeStandardbeschreibung['name'];
+ // Bulk transfer (new 2024-06-28)
+ $result = null;
+ if (!empty($artikelexport) && !$nurlager) {
+ $result = $this->sendlist($id, $data, true);
}
- }
- }
- $this->app->erp->RunHook('remote_send_article_list_pseudostorage', 3, $id, $v['id'], $v['pseudolager']);
- if(is_numeric($v['pseudolager']) && $v['pseudolager'] < 0) {
- $v['pseudolager'] = 0;
- }
- $projectStockId = $this->app->DB->Select("SELECT `id` FROM `projekt` WHERE `id` = '{$projekt}' AND `projektlager` = 1 LIMIT 1");
- $stock = (float)$this->app->erp->ArtikelAnzahlVerkaufbar(
- $v['id'],
- 0,
- $projectStockId,
- $id,
- $lagergrundlage
- );
- if($stock < 0) {
- $stock = 0;
- }
- $data[$i]['artikel_varianten'][] = array('nummer' => $v['nummer'], 'name_de' => $v['name_de'], 'name_en' => $v['name_en'],'restmenge' => $v['restmenge'], 'gesperrt' => ($v['gesperrt']==1||$v['intern_gesperrt']==1?1:0),
- 'artikel' => $v['id'],'zolltarifnummer' => $v['zolltarifnummer'],'ean' => $v['ean'],'gewicht' => $v['gewicht'], 'inaktiv' => $v['inaktiv'], 'uebersicht_de' => $v['uebersicht_de'],
- 'lag' => $stock,
- 'pseudolager' => $v['pseudolager'], 'pseudopreis' => $v['pseudopreis'], 'preis' => $variantennettopreis, 'bruttopreis' => $variantennettopreis * $steuer,
- 'artikelnummer_fremdnummern' => $this->app->DB->SelectArr("SELECT * FROM artikelnummer_fremdnummern WHERE artikel = '" . $v['id'] . "' AND nummer <> '' AND shopid = '$id' AND aktiv = '1'"),
- 'steuersatz' => ($steuer - 1) * 100);
- if(!empty($data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten'])-1]['artikelnummer_fremdnummern'])) {
- foreach($data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten'])-1]['artikelnummer_fremdnummern'] as $fkey => $fval) {
- $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten'])-1]['artikelnummer_fremdnummern'][$fkey]['nummer'] = trim($fval['nummer']);
- }
- }
- if($eigenschaftenuebertragen && !empty($loadElements['properties'])){
- $varianteneigenschaften = $this->app->DB->SelectArr("SELECT e.name, ew.wert FROM artikeleigenschaften e INNER JOIN artikeleigenschaftenwerte ew ON e.id = ew.artikeleigenschaften
- WHERE ew.artikel = '".$v['id']."' AND e.name <> '' AND ew.wert <> '' AND e.geloescht <> 1 ORDER BY e.name");
- if(!empty($varianteneigenschaften)){
- foreach($varianteneigenschaften as $eigenschaft){
- $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['eigenschaften'][] = array('name'=>$eigenschaft['name'], 'values'=>$eigenschaft['wert']);
+ if (!empty($lagerexport)) {
+ $result = $this->sendlistlager($id, $data);
}
- }
- $eigenschaftenuebersetzungen = $this->app->DB->SelectArr("SELECT language_from, language_to, property_from, property_to,property_value_from,property_value_to FROM article_property_translation WHERE article_id = '".$v['id']."'");
- $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['eigenschaftenuebersetzungen'] = $eigenschaftenuebersetzungen;
+ return $result;
}
- if(!empty($freifelder) && !empty($loadElements['free_fields']))
- {
- foreach($freifelder as $freifeld)
- {
- if(method_exists($tmp,'Get'.ucfirst($freifeld['freifeld_wawi'])))
- {
- $_funktionsname = 'Get'.ucfirst($freifeld['freifeld_wawi']);
- $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['freifelder']['DE'][$freifeld['freifeld_shop']] = $v[$freifeld['freifeld_wawi']];
+ if (!empty($loadElements['variants']) && $this->app->DB->Select("SELECT id FROM artikel WHERE variante_von = '$artikel' AND variante = 1 AND geloescht <> 1 AND nummer != 'DEL' LIMIT 1")) {
+ if ($this->app->DB->Select("SELECT id FROM artikel WHERE id = '$artikel' AND variante = 0 AND matrixprodukt=0 AND geloescht <> 1 AND nummer != 'DEL' LIMIT 1")) {
+ $data[$i]['artikel_varianten'] = [];
+ $data[$i]['variantevorhanden'] = 1;
+ $varianten = "SELECT * FROM artikel WHERE variante_von = '$artikel' AND variante = 1 AND geloescht <> 1 AND nummer != 'DEL'";
+ $db = $this->app->Container->get('Database');
+ foreach ($db->yieldAll($varianten) as $v) {
+ $steuer = $steuermapping[$v['umsatzsteuer']];
+ if ($v['steuersatz'] != -1 && !empty($v['steuersatz'])) {
+ $steuer = ($v['steuersatz'] + 100) / 100;
+ }
+ if (empty($steuer)) {
+ $steuer = $steuernormal;
+ }
+ $variantennettopreis = null;
+ if (!empty($loadElements['standard_price'])) {
+ if ($preisgruppe && method_exists($this->app->erp, 'GetVerkaufspreisGruppe')) {
+ $variantennettopreis = $this->app->erp->GetVerkaufspreisGruppe($v['id'], 1, $preisgruppe);
+ } else {
+ $variantennettopreis = $this->app->erp->GetVerkaufspreis($v['id'], 1, 0);
+ }
+ }
+ if (!empty($loadElements['translations']) && $this->app->erp->ModulVorhanden('artikel_texte')) {
+ $sprachen = ['de', 'en'];
+ foreach ($sprachen as $sprache) {
+ $query = sprintf("SELECT * FROM artikel_texte WHERE shop=%d AND sprache='%s' AND artikel=%d AND aktiv=1 LIMIT 1",
+ $id, strtoupper($sprache), $v['id']);
+ $ersetzeStandardbeschreibung = $this->app->DB->SelectRow($query);
+ if (!empty($ersetzeStandardbeschreibung)) {
+ $v['name_' . $sprache] = $ersetzeStandardbeschreibung['name'];
+ }
+ }
+ }
+ $this->app->erp->RunHook('remote_send_article_list_pseudostorage', 3, $id, $v['id'], $v['pseudolager']);
+ if (is_numeric($v['pseudolager']) && $v['pseudolager'] < 0) {
+ $v['pseudolager'] = 0;
+ }
+ $projectStockId = $this->app->DB->Select("SELECT `id` FROM `projekt` WHERE `id` = '{$projekt}' AND `projektlager` = 1 LIMIT 1");
+ $stock = (float) $this->app->erp->ArtikelAnzahlVerkaufbar(
+ $v['id'],
+ 0,
+ $projectStockId,
+ $id,
+ $lagergrundlage
+ );
+ if ($stock < 0) {
+ $stock = 0;
+ }
+ $data[$i]['artikel_varianten'][] = array('nummer' => $v['nummer'], 'name_de' => $v['name_de'], 'name_en' => $v['name_en'], 'restmenge' => $v['restmenge'], 'gesperrt' => ($v['gesperrt'] == 1 || $v['intern_gesperrt'] == 1 ? 1 : 0),
+ 'artikel' => $v['id'], 'zolltarifnummer' => $v['zolltarifnummer'], 'ean' => $v['ean'], 'gewicht' => $v['gewicht'], 'inaktiv' => $v['inaktiv'], 'uebersicht_de' => $v['uebersicht_de'],
+ 'lag' => $stock,
+ 'pseudolager' => $v['pseudolager'], 'pseudopreis' => $v['pseudopreis'], 'preis' => $variantennettopreis, 'bruttopreis' => $variantennettopreis * $steuer,
+ 'artikelnummer_fremdnummern' => $this->app->DB->SelectArr("SELECT * FROM artikelnummer_fremdnummern WHERE artikel = '" . $v['id'] . "' AND nummer <> '' AND shopid = '$id' AND aktiv = '1'"),
+ 'steuersatz' => ($steuer - 1) * 100);
+ if (!empty($data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['artikelnummer_fremdnummern'])) {
+ foreach ($data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['artikelnummer_fremdnummern'] as $fkey => $fval) {
+ $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['artikelnummer_fremdnummern'][$fkey]['nummer'] = trim($fval['nummer']);
+ }
+ }
+ if ($eigenschaftenuebertragen && !empty($loadElements['properties'])) {
+ $varianteneigenschaften = $this->app->DB->SelectArr("SELECT e.name, ew.wert FROM artikeleigenschaften e INNER JOIN artikeleigenschaftenwerte ew ON e.id = ew.artikeleigenschaften
+ WHERE ew.artikel = '" . $v['id'] . "' AND e.name <> '' AND ew.wert <> '' AND e.geloescht <> 1 ORDER BY e.name");
+ if (!empty($varianteneigenschaften)) {
+ foreach ($varianteneigenschaften as $eigenschaft) {
+ $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['eigenschaften'][] = array('name' => $eigenschaft['name'], 'values' => $eigenschaft['wert']);
+ }
+ }
+ $eigenschaftenuebersetzungen = $this->app->DB->SelectArr("SELECT language_from, language_to, property_from, property_to,property_value_from,property_value_to FROM article_property_translation WHERE article_id = '" . $v['id'] . "'");
+ $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['eigenschaftenuebersetzungen'] = $eigenschaftenuebersetzungen;
+ }
+
+ if (!empty($freifelder) && !empty($loadElements['free_fields'])) {
+ foreach ($freifelder as $freifeld) {
+ if (method_exists($tmp, 'Get' . ucfirst($freifeld['freifeld_wawi']))) {
+ $_funktionsname = 'Get' . ucfirst($freifeld['freifeld_wawi']);
+ $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['freifelder']['DE'][$freifeld['freifeld_shop']] = $v[$freifeld['freifeld_wawi']];
+ }
+ }
+ //Freifeldübersetzungen
+ $freifelduebersetzungen = $this->app->DB->SelectArr("SELECT sf.freifeld_shop, af.sprache, af.nummer, af.wert FROM shopexport_freifelder sf JOIN artikel_freifelder af ON sf.freifeld_wawi = CONCAT('freifeld',af.nummer) WHERE sf.shop = '$id' AND af.artikel = '" . $v['id'] . "' AND sf.aktiv = 1 AND sf.freifeld_wawi <> '' AND sf.freifeld_shop <> '' AND af.wert <> ''");
+ if (!empty($freifelduebersetzungen)) {
+ foreach ($freifelduebersetzungen as $ffukey => $ffuvalue) {
+ $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['freifelder'][$ffuvalue['sprache']][] = array('mapping' => $ffuvalue['freifeld_shop'], 'freifeldnummer' => $ffuvalue['nummer'], 'wert' => $ffuvalue['wert']);
+ }
+ }
+ }
+ if ($shopbilderuebertragen && !empty($loadElements['pictures'])) {
+ $dateien = $this->getImagesForArticle($v['id']);
+ if (!empty($dateien)) {
+ foreach ($dateien as $datei) {
+ $filename = $this->app->erp->GetDateiName($datei['id']);
+ $path_info = pathinfo($filename);
+ $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['Dateien']['datei'][] = base64_encode($this->app->erp->GetDatei($datei['id']));
+ $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['Dateien']['filename'][] = $filename;
+ $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['Dateien']['extension'][] = $path_info['extension'];
+ $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['Dateien']['titel'][] = $datei['titel'];
+ $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['Dateien']['beschreibung'][] = $datei['beschreibung'];
+ $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['Dateien']['stichwort'][] = $datei['subjekt'];
+ $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['Dateien']['id'][] = $datei['id'];
+ $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['Dateien']['version'][] = $datei['version'];
+ $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['Dateien']['extid'][] = $this->GetShopexportMappingExt($id, 'datei', $datei['id']);
+ }
+ }
+ }
+ }
}
- }
- //Freifeldübersetzungen
- $freifelduebersetzungen = $this->app->DB->SelectArr("SELECT sf.freifeld_shop, af.sprache, af.nummer, af.wert FROM shopexport_freifelder sf JOIN artikel_freifelder af ON sf.freifeld_wawi = CONCAT('freifeld',af.nummer) WHERE sf.shop = '$id' AND af.artikel = '".$v['id']."' AND sf.aktiv = 1 AND sf.freifeld_wawi <> '' AND sf.freifeld_shop <> '' AND af.wert <> ''");
- if(!empty($freifelduebersetzungen)){
- foreach ($freifelduebersetzungen as $ffukey => $ffuvalue) {
- $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['freifelder'][$ffuvalue['sprache']][] = array('mapping' => $ffuvalue['freifeld_shop'], 'freifeldnummer' => $ffuvalue['nummer'], 'wert' => $ffuvalue['wert']);
- }
- }
+ } else {
+ $data[$i]['variantevorhanden'] = 0;
}
- if ($shopbilderuebertragen && !empty($loadElements['pictures'])) {
- $dateien = $this->getImagesForArticle($v['id']);
- if (!empty($dateien)) {
- foreach ($dateien as $datei) {
- $filename = $this->app->erp->GetDateiName($datei['id']);
- $path_info = pathinfo($filename);
- $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['Dateien']['datei'][] = base64_encode($this->app->erp->GetDatei($datei['id']));
- $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['Dateien']['filename'][] = $filename;
- $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['Dateien']['extension'][] = $path_info['extension'];
- $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['Dateien']['titel'][] = $datei['titel'];
- $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['Dateien']['beschreibung'][] = $datei['beschreibung'];
- $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['Dateien']['stichwort'][] = $datei['subjekt'];
- $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['Dateien']['id'][] = $datei['id'];
- $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['Dateien']['version'][] = $datei['version'];
- $data[$i]['artikel_varianten'][count($data[$i]['artikel_varianten']) - 1]['Dateien']['extid'][] = $this->GetShopexportMappingExt($id, 'datei', $datei['id']);
- }
- }
+
+ if (empty($data)) {
+ continue;
}
- }
}
- }else{
- $data[$i]['variantevorhanden'] = 0;
- }
- $result = null;
- if(empty($data)){
- continue;
- }
- if(!empty($lagerexport)) {
- $result = $this->sendlistlager($i, $id, $data);
- }
- if (!empty($artikelexport) && !$nurlager) {
- $result = $this->sendlist($i, $id, $data, true);
- }
+ // Bulk transfer (new 2024-06-28)
+ $result = null;
+ if (!empty($artikelexport) && !$nurlager) {
+ $result = $this->sendlist($id, $data, true);
+ }
+ if (!empty($lagerexport)) {
+ $result = $this->sendlistlager($id, $data);
+ }
+ return $result;
}
- return $result;
- }
-
/**
* @param int $articleId
* @return array|null
*/
- protected function getImagesForArticle($articleId){
- $query = sprintf("SELECT d.id AS `id`, dv.id AS `vid`, d.titel, d.beschreibung, ds.subjekt, ds.sort, dv.version AS `version`
+ protected function getImagesForArticle($articleId) {
+ $query = sprintf("SELECT d.id AS `id`, dv.id AS `vid`, d.titel, d.beschreibung, ds.subjekt, ds.sort, dv.version AS `version`
FROM `datei_stichwoerter` AS `ds`
INNER JOIN `datei` AS `d` ON ds.datei = d.id
INNER JOIN `datei_version` AS `dv` ON dv.datei = ds.datei
@@ -2214,95 +2086,78 @@ class Remote
WHERE ds.parameter = %d AND ds.objekt like 'Artikel' AND ds.subjekt LIKE 'Shopbild' AND d.geloescht = 0
ORDER BY ds.sort", $articleId);
- return $this->app->DB->SelectArr($query);
- }
-
- protected function sendlistlager($i,$id,$data){
- $data2 = $data;
- foreach ($data2 as $key => $value){
- $data2[$key]['artikel'] = $value['artikelid'];
+ return $this->app->DB->SelectArr($query);
}
- $result = $this->RemoteCommand($id,'sendlistlager',$data2);
- $this->app->DB->Update(
- sprintf(
- 'UPDATE artikel_onlineshops SET last_storage_transfer = NOW() WHERE artikel = %d AND shop = %d',
- $data2[$i]['artikel'], $id
- )
- );
- return $result;
- }
- protected function sendlist($i,$id,$data,$isLagerExported){
- /** @var Shopexport $objShopexport */
- $objShopexport = $this->app->loadModule('shopexport');
- $changedHash = $objShopexport->hasArticleHashChanged($data[0]['artikel'], $id);
- $hash = $changedHash['hash'];
- //$changedHash = $changedHash['changed'];
-
- $result = $this->RemoteCommand($id,'sendlist',$data);
- $checkAo = $this->app->DB->Select(
- sprintf(
- 'SELECT id FROM artikel_onlineshops WHERE artikel = %d AND shop=%d LIMIT 1',
- $data[0]['artikel'], $id
- )
- );
- if(empty($checkAo)) {
- $this->app->DB->Insert(
- sprintf(
- 'INSERT INTO artikel_onlineshops (artikel, shop, aktiv, ausartikel)
- VALUES (%d, %d, 1, 1) ',
- $data[0]['artikel'], $id
- )
- );
+ protected function sendlistlager(int $shop_id, array $data) {
+ $result = $this->RemoteCommand($shop_id, 'sendlistlager', $data);
+ return $result;
}
- $this->app->DB->Update(
- sprintf(
- "UPDATE artikel_onlineshops
- SET last_article_transfer = NOW(), last_article_hash = '%s'
- WHERE artikel = %d AND shop = %d",
- $this->app->DB->real_escape_string($hash) ,$data[0]['artikel'], $id
- )
- );
- if(!empty($result) && is_array($result) && !empty($result['new']))
- {
- foreach($result['new'] as $artikelid => $fremdnummer)
- {
- $artikelid = (int)$artikelid;
- $artikelnummer = $this->app->DB->Select("SELECT nummer FROM artikel WHERE id = '$artikelid' LIMIT 1");
- if($artikelid > 0 && $artikelnummer != trim($fremdnummer) &&
- ($this->app->DB->Select("SELECT id FROM artikel WHERE id = '$artikelid' AND (shop = '$id' OR shop2 = '$id' OR shop3 = '$id') LIMIT 1") ||
- $this->app->DB->Select("SELECT id FROM artikel_onlineshops WHERE artikel = '$artikelid' AND aktiv = 1")
- ) && trim($fremdnummer) !== '')
- {
- //Nur falls Artikel zum Shop passt und keine aktive Fremdnummer exisitert.
- if(!$this->app->DB->Select("SELECT id FROM `artikelnummer_fremdnummern` WHERE artikel = '$artikelid' AND shopid = '$id' AND nummer <> '' AND (aktiv = 1 OR nummer = '".trim($this->app->DB->real_escape_string($fremdnummer))."') LIMIT 1 "))
- {
- $this->app->DB->Insert("INSERT INTO `artikelnummer_fremdnummern` (artikel, bezeichnung, nummer, shopid, bearbeiter, zeitstempel, aktiv)
- VALUES ('$artikelid','Erstellt durch Artikelexport','".trim($this->app->DB->real_escape_string($fremdnummer))."','$id','".((isset($this->app->User)&& method_exists($this->app->User,'GetName'))?$this->app->DB->real_escape_string($this->app->User->GetName()):'Cronjob') ."',now(),0)
- ");
- }
+
+ protected function sendlist(int $shop_id, array $data, $isLagerExported) {
+
+ // See description of return format in function RemoteSendArticleList()
+ $result = $this->RemoteCommand($shop_id, 'sendlist', $data);
+
+ if (!empty($result) && is_array($result)) {
+ foreach ($result['articles'] as $artikelid) {
+ /** @var Shopexport $objShopexport */
+ $objShopexport = $this->app->loadModule('shopexport');
+ $changedHash = $objShopexport->hasArticleHashChanged($artikelid, $shop_id);
+ $hash = $changedHash['hash'];
+
+ $checkAo = $this->app->DB->Select(
+ sprintf(
+ 'SELECT id FROM artikel_onlineshops WHERE artikel = %d AND shop=%d LIMIT 1',
+ $artikelid, $shop_id
+ )
+ );
+ if (empty($checkAo)) {
+ $this->app->DB->Insert(
+ sprintf(
+ 'INSERT INTO artikel_onlineshops (artikel, shop, aktiv, ausartikel)
+ VALUES (%d, %d, 1, 1) ',
+ $artikelid, $shop_id
+ )
+ );
+ }
+ $this->app->DB->Update(
+ sprintf(
+ "UPDATE artikel_onlineshops
+ SET last_article_transfer = NOW(), last_article_hash = '%s'
+ WHERE artikel = %d AND shop = %d",
+ $this->app->DB->real_escape_string($hash), $artikelid, $shop_id
+ )
+ );
+ }
}
- }
- if(isset($result['anzahl']))
- {
- $result = $result['anzahl'];
- }//Altes Verhalten
+
+ if (!empty($result) && is_array($result)) {
+ foreach ($result['new'] as $artikelid => $fremdnummer) {
+ $artikelid = (int) $artikelid;
+ $artikelnummer = $this->app->DB->Select("SELECT nummer FROM artikel WHERE id = '$artikelid' LIMIT 1");
+ if ($artikelid > 0 && $artikelnummer != trim($fremdnummer) &&
+ ($this->app->DB->Select("SELECT id FROM artikel WHERE id = '$artikelid' AND (shop = '$shop_id' OR shop2 = '$shop_id' OR shop3 = '$shop_id') LIMIT 1") ||
+ $this->app->DB->Select("SELECT id FROM artikel_onlineshops WHERE artikel = '$artikelid' AND aktiv = 1")
+ ) && trim($fremdnummer) !== '') {
+ //Nur falls Artikel zum Shop passt und keine aktive Fremdnummer exisitert.
+ if (!$this->app->DB->Select("SELECT id FROM `artikelnummer_fremdnummern` WHERE artikel = '$artikelid' AND shopid = '$shop_id' AND nummer <> '' AND (aktiv = 1 OR nummer = '" . trim($this->app->DB->real_escape_string($fremdnummer)) . "') LIMIT 1 ")) {
+ $this->app->DB->Insert("INSERT INTO `artikelnummer_fremdnummern` (artikel, bezeichnung, nummer, shopid, bearbeiter, zeitstempel, aktiv)
+ VALUES ('$artikelid','Erstellt durch Artikelexport','" . trim($this->app->DB->real_escape_string($fremdnummer)) . "','$shop_id','" . ((isset($this->app->User) && method_exists($this->app->User, 'GetName')) ? $this->app->DB->real_escape_string($this->app->User->GetName()) : 'Cronjob') . "',now(),0)
+ ");
+ }
+ }
+ }
+ if (isset($result['anzahl'])) {
+ $result['count'] = $result['anzahl'];
+ }//Altes Verhalten
+ }
+
+ if (!$isLagerExported) {
+ $this->sendlistlager($shop_id, $data);
+ }
+ return $result;
}
- if(!$isLagerExported){
- $data2 = $data;
- foreach ($data2 as $key => $value){
- $data2[$key]['artikel'] = $value['artikelid'];
- }
- $this->RemoteCommand($id,'sendlistlager',$data2);
- $this->app->DB->Update(
- sprintf(
- 'UPDATE artikel_onlineshops SET last_storage_transfer = NOW() WHERE artikel = %d AND shop = %d',
- $data2[$i]['artikel'], $id
- )
- );
- }
- return $result;
- }
public function getDataToSendForUpdateOrder(int $shopId, int $orderId): ?OrderStatusUpdateRequest
{
@@ -2342,7 +2197,7 @@ class Remote
vlp.versandpaket = v.id OR v.lieferschein_ohne_pos = l.id
LEFT JOIN shopexport_versandarten sv ON
sv.versandart_wawision = v.versandart AND sv.shop = $shopId
- WHERE a.id = $orderId OR a.teillieferungvon = $orderId
+ WHERE (a.id = $orderId OR a.teillieferungvon = $orderId) AND v.id IS NOT NULL
ORDER BY v.id";
$shipments = $this->app->DB->SelectArr($sql);
@@ -2356,519 +2211,491 @@ class Remote
}
return $data;
- }
+ }
- /**
- * @param int $shopId
- * @param int $orderId
- *
- * @throws Exception
- */
- public function RemoteUpdateAuftrag($shopId, $orderId)
- {
+ /**
+ * @param int $shopId
+ * @param int $orderId
+ *
+ * @throws Exception
+ */
+ public function RemoteUpdateAuftrag($shopId, $orderId) {
$data = $this->getDataToSendForUpdateOrder((int)$shopId, (int)$orderId);
if($data?->orderStatus !== OrderStatus::Completed)
return;
- $bearbeiter = 'Cronjob';
- if(isset($this->app->User)){
- $bearbeiter = $this->app->DB->real_escape_string($this->app->User->GetName());
- }
+ $bearbeiter = 'Cronjob';
+ if (isset($this->app->User)) {
+ $bearbeiter = $this->app->DB->real_escape_string($this->app->User->GetName());
+ }
- $response = $this->RemoteCommand($shopId, 'updateauftrag', $data);
- if($response instanceOf ShopConnectorResponseInterface && !$response->isSuccessful()){
- $query = sprintf('UPDATE `auftrag`
+ $response = $this->RemoteCommand($shopId, 'updateauftrag', $data);
+ if ($response instanceOf ShopConnectorResponseInterface && !$response->isSuccessful()) {
+ $query = sprintf('UPDATE `auftrag`
SET `shop_status_update_attempt` = `shop_status_update_attempt` + 1,
`shop_status_update_last_attempt_at` = NOW()
WHERE `id` = %d', $orderId);
- $this->app->DB->Update($query);
+ $this->app->DB->Update($query);
- $this->app->erp->AuftragProtokoll($orderId, 'Versandmeldung an Shop fehlgeschlagen', $bearbeiter);
- $this->app->erp->Logfile('Versandmeldung an Shop fehlgeschlagen', print_r([
- 'orderId' => $orderId,
- 'shopId' => $shopId,
- 'message' => $response->getMessage()],true));
+ $this->app->erp->AuftragProtokoll($orderId, 'Versandmeldung an Shop fehlgeschlagen', $bearbeiter);
- return;
- }
+ $this->logger->error('Versandmeldung an Shop fehlgeschlagen',
+ [
+ 'orderId' => $orderId,
+ 'shopId' => $shopId,
+ 'message' => $response->getMessage()
+ ]
+ );
- $this->app->erp->AuftragProtokoll($orderId, 'Versandmeldung an Shop übertragen', $bearbeiter);
- $this->app->DB->Update("UPDATE `auftrag` SET `shopextstatus` = 'abgeschlossen' WHERE `id` = $orderId LIMIT 1");
- }
+ return;
+ }
- /**
- * @param int $shopId
- * @param string $auftrag
- *
- * @param string $internet
- *
- * @throws Exception
- */
- public function RemoteDeleteAuftrag($shopId, $auftrag, $internet='')
- {
- $data['auftrag'] = $auftrag;
- $data['internet'] = $internet;
- $this->RemoteCommand($shopId,'deleteauftrag',$data);
- }
+ $this->app->erp->AuftragProtokoll($orderId, 'Versandmeldung an Shop übertragen', $bearbeiter);
+ $this->app->DB->Update("UPDATE `auftrag` SET `shopextstatus` = 'abgeschlossen' WHERE `id` = $orderId LIMIT 1");
+ }
- /**
- * @param int $shopId
- * @param int $orderId
- *
- * @throws Exception
- */
- public function RemoteStorniereAuftrag($shopId, $orderId)
- {
- $orderArr = $this->app->DB->SelectRow("SELECT shopextid, internet FROM auftrag WHERE id='$orderId' LIMIT 1");
- if(empty($orderArr)) {
- return;
+ /**
+ * @param int $shopId
+ * @param string $auftrag
+ *
+ * @param string $internet
+ *
+ * @throws Exception
+ */
+ public function RemoteDeleteAuftrag($shopId, $auftrag, $internet = '') {
+ $data['auftrag'] = $auftrag;
+ $data['internet'] = $internet;
+ $this->RemoteCommand($shopId, 'deleteauftrag', $data);
}
- $shopextid = $orderArr['shopextid'];
- $internet = $orderArr['internet'];
- $data['auftrag'] = $shopextid;
- $data['internet'] = $internet;
-
- $this->app->DB->Insert("
+
+ /**
+ * @param int $shopId
+ * @param int $orderId
+ *
+ * @throws Exception
+ */
+ public function RemoteStorniereAuftrag($shopId, $orderId) {
+ $orderArr = $this->app->DB->SelectRow("SELECT shopextid, internet FROM auftrag WHERE id='$orderId' LIMIT 1");
+ if (empty($orderArr)) {
+ return;
+ }
+ $shopextid = $orderArr['shopextid'];
+ $internet = $orderArr['internet'];
+ $data['auftrag'] = $shopextid;
+ $data['internet'] = $internet;
+
+ $this->app->DB->Insert("
INSERT INTO auftrag_protokoll (auftrag, zeit, bearbeiter, grund)
- VALUES ($orderId,now(),'".(isset($this->app->User)?$this->app->DB->real_escape_string($this->app->User->GetName()):'Cronjob')."',
+ VALUES ($orderId,now(),'" . (isset($this->app->User) ? $this->app->DB->real_escape_string($this->app->User->GetName()) : 'Cronjob') . "',
'Stonierung an Shop übertragen')"
- );
- $this->RemoteCommand($shopId,'storniereauftrag',$data);
- $shopextstatus='storniert';
- $this->app->DB->Update("UPDATE auftrag SET shopextstatus='$shopextstatus' WHERE id='$orderId' LIMIT 1");
- }
+ );
+ $this->RemoteCommand($shopId, 'storniereauftrag', $data);
+ $shopextstatus = 'storniert';
+ $this->app->DB->Update("UPDATE auftrag SET shopextstatus='$shopextstatus' WHERE id='$orderId' LIMIT 1");
+ }
- /**
- * @param int $shopId
- * @param int $fileId
- *
- * @return mixed
- * @throws Exception
- */
- public function RemoteDeleteFile($shopId, $fileId)
- {
- $inhalt = $this->app->erp->GetDatei($fileId);
- $fileArr = $this->app->DB->SelectRow("SELECT titel,beschreibung FROM datei WHERE id='$fileId' LIMIT 1");
- $titel = $fileArr['titel'];
- $beschreibung = $fileArr['beschreibung'];
+ /**
+ * @param int $shopId
+ * @param int $fileId
+ *
+ * @return mixed
+ * @throws Exception
+ */
+ public function RemoteDeleteFile($shopId, $fileId) {
+ $inhalt = $this->app->erp->GetDatei($fileId);
+ $fileArr = $this->app->DB->SelectRow("SELECT titel,beschreibung FROM datei WHERE id='$fileId' LIMIT 1");
+ $titel = $fileArr['titel'];
+ $beschreibung = $fileArr['beschreibung'];
- $data['datei'] = $fileId;
- //$data['checksum'] = md5($inhalt);
- $data['checksum'] = md5($inhalt.$titel.$beschreibung);
- return $this->RemoteCommand($shopId,'deletefile',$data);
- }
+ $data['datei'] = $fileId;
+ //$data['checksum'] = md5($inhalt);
+ $data['checksum'] = md5($inhalt . $titel . $beschreibung);
+ return $this->RemoteCommand($shopId, 'deletefile', $data);
+ }
- /**
- * @param int $articleId
- * @param int $shopId
- */
- public function RemoteUpdateFilesArtikel($articleId, $shopId)
- {
- $files = $this->app->DB->SelectArr("SELECT DISTINCT ds.datei
+ /**
+ * @param int $articleId
+ * @param int $shopId
+ */
+ public function RemoteUpdateFilesArtikel($articleId, $shopId) {
+ $files = $this->app->DB->SelectArr("SELECT DISTINCT ds.datei
FROM datei_stichwoerter ds, datei d, artikel a
WHERE d.id=ds.datei AND (ds.subjekt='Shopbild' OR ds.subjekt='Gruppenbild') AND ((ds.objekt='Artikel' AND
ds.parameter=a.id) OR (ds.objekt='Kampangen' AND ds.parameter='$shopId')) AND
- d.firma='".$this->app->User->GetFirma()."' AND a.shop='$shopId' AND a.id='$articleId'"
- );
+ d.firma='" . $this->app->User->GetFirma() . "' AND a.shop='$shopId' AND a.id='$articleId'"
+ );
- $tmp = $this->app->remote->RemoteGetFileListArticle($shopId,$articleId);
- if(!empty($tmp)){
- foreach ($tmp as $row) {
- $checkarray[$row['datei']] = $row['checksum'];
- }
- }
-
- if(!empty($files)){
- foreach($files as $file) {
- $fid = $file['datei'];
- $geloescht = $this->app->DB->Select("SELECT geloescht FROM datei WHERE id='$fid' LIMIT 1");
- if($geloescht){
- $this->app->remote->RemoteDeleteFile($shopId, $fid);
- $checkarray[$fid] = 'delete';
- }else{
- $md5 = !empty($checkarray[$fid]) ? (String)$checkarray[$fid] : '';
- $md5file = md5($this->app->erp->GetDatei($fid));
- if($md5 !== $md5file){
- $this->app->remote->RemoteSendFile($shopId, $fid);
- $this->app->remote->RemoteAddFileSubject($shopId, $fid);
- $checkarray[$fid] = 'update';
- }
+ $tmp = $this->app->remote->RemoteGetFileListArticle($shopId, $articleId);
+ if (!empty($tmp)) {
+ foreach ($tmp as $row) {
+ $checkarray[$row['datei']] = $row['checksum'];
+ }
}
- $checkarray[$fid] = 'mark';
- }
- }
- if(!empty($checkarray))
- {
- foreach($checkarray as $key=>$value)
- {
- if($checkarray[$key]!=='mark' && $checkarray[$key]!=='delete' && $checkarray[$key]!=='update')
- {
- $this->app->remote->RemoteDeleteFile($shopId,$key);
+
+ if (!empty($files)) {
+ foreach ($files as $file) {
+ $fid = $file['datei'];
+ $geloescht = $this->app->DB->Select("SELECT geloescht FROM datei WHERE id='$fid' LIMIT 1");
+ if ($geloescht) {
+ $this->app->remote->RemoteDeleteFile($shopId, $fid);
+ $checkarray[$fid] = 'delete';
+ } else {
+ $md5 = !empty($checkarray[$fid]) ? (String) $checkarray[$fid] : '';
+ $md5file = md5($this->app->erp->GetDatei($fid));
+ if ($md5 !== $md5file) {
+ $this->app->remote->RemoteSendFile($shopId, $fid);
+ $this->app->remote->RemoteAddFileSubject($shopId, $fid);
+ $checkarray[$fid] = 'update';
+ }
+ }
+ $checkarray[$fid] = 'mark';
+ }
+ }
+ if (!empty($checkarray)) {
+ foreach ($checkarray as $key => $value) {
+ if ($checkarray[$key] !== 'mark' && $checkarray[$key] !== 'delete' && $checkarray[$key] !== 'update') {
+ $this->app->remote->RemoteDeleteFile($shopId, $key);
+ }
+ }
}
- }
}
- }
+ /**
+ * @param int $shopId
+ * @param int $fileId
+ *
+ * @return mixed|string
+ * @throws Exception
+ */
+ public function RemoteSendFile($shopId, $fileId) {
+ // sende stichwoerter
+ $fileArr = $this->app->DB->SelectRow("SELECT geloescht, titel, beschreibung FROM datei WHERE id='$fileId' LIMIT 1");
+ if (empty($fileArr)) {
+ return '';
+ }
+ $geloescht = $fileArr['geloescht'];
+ $titel = $fileArr['titel'];
+ $beschreibung = $fileArr['beschreibung'];
- /**
- * @param int $shopId
- * @param int $fileId
- *
- * @return mixed|string
- * @throws Exception
- */
- public function RemoteSendFile($shopId, $fileId)
- {
- // sende stichwoerter
- $fileArr = $this->app->DB->SelectRow("SELECT geloescht, titel, beschreibung FROM datei WHERE id='$fileId' LIMIT 1");
- if(empty($fileArr)) {
- return '';
+ $inhalt = $this->app->erp->GetDatei($fileId);
+ $data['datei'] = $fileId;
+ $data['titel'] = $titel;
+ $data['beschreibung'] = $beschreibung;
+ $data['inhalt'] = base64_encode($inhalt);
+ $data['checksum'] = md5($inhalt . $titel . $beschreibung);
+ if (!$geloescht) {
+ return $this->RemoteCommand($shopId, 'sendfile', $data);
+ }
+ return '';
}
- $geloescht = $fileArr['geloescht'];
- $titel = $fileArr['titel'];
- $beschreibung = $fileArr['beschreibung'];
- $inhalt = $this->app->erp->GetDatei($fileId);
- $data['datei'] = $fileId;
- $data['titel'] = $titel;
- $data['beschreibung'] =$beschreibung;
- $data['inhalt'] = base64_encode($inhalt);
- $data['checksum'] = md5($inhalt.$titel.$beschreibung);
- if(!$geloescht){
- return $this->RemoteCommand($shopId, 'sendfile', $data);
- }
- return '';
- }
-
- /**
- * @param int $shopId
- * @param int $fileId
- *
- * @throws Exception
- */
- public function RemoteAddFileSubject($shopId, $fileId)
- {
- // sende stichwoerter
- $fileList = $this->app->DB->SelectArr("SELECT subjekt, parameter
+ /**
+ * @param int $shopId
+ * @param int $fileId
+ *
+ * @throws Exception
+ */
+ public function RemoteAddFileSubject($shopId, $fileId) {
+ // sende stichwoerter
+ $fileList = $this->app->DB->SelectArr("SELECT subjekt, parameter
FROM datei_stichwoerter
WHERE (objekt='Artikel' OR objekt='Kampangen') AND datei='$fileId'"
- );
- if(empty($fileList)) {
- return;
- }
-
- foreach($fileList as $fileRow) {
- $geloescht = $this->app->DB->Select("SELECT geloescht FROM datei WHERE id='$fileId' LIMIT 1");
- $stichwort['subjekt'] = $fileRow['subjekt'];
- $stichwort['artikel'] = $fileRow['parameter'];
- $stichwort['datei'] = $fileId;
- if(!$geloescht){
- $this->RemoteCommand($shopId, 'addfilesubjekt', $stichwort);
- }
- }
- }
-
- /**
- * @param int $shopId
- * @param array $artikel
- *
- * @return mixed
- * @throws Exception
- */
- public function RemoteDeleteArticle($shopId,$artikel)
- {
- return $this->RemoteCommand($shopId,'deletearticle',$artikel);
- }
-
- /**
- * @param int $shopId
- * @param array $partner
- *
- * @return mixed
- * @throws Exception
- */
- public function RemoteSendPartner($shopId, $partner)
- {
- return $this->RemoteCommand($shopId, 'partnerlist', $partner);
- }
-
- /**
- * @param object $obj
- * @param string $methodname
- *
- * @return string
- */
- public function getMethod($obj, $methodname)
- {
- $methodname = trim((String)$methodname);
- if($methodname === '')
- {
- return '';
- }
- if(!$obj)
- {
- return '';
- }
- if(method_exists($obj, $methodname))
- {
- return $methodname;
- }
- $methods = get_class_methods($obj);
- $classname = get_class($obj);
- foreach($methods as $v)
- {
- if(strtolower($v) === 'import'.strtolower($methodname))
- {
- return $v;
- }
- if(strtolower($v) === strtolower($classname.$methodname))
- {
- return $v;
- }
- }
- foreach($methods as $v)
- {
- if(strtolower($v) === strtolower($methodname))
- {
- return $v;
- }
- }
- return '';
- }
-
- /**
- * @param int $id
- * @param string $action
- * @param string|array $data
- *
- * @return mixed
- * @throws Exception
- */
- public function RemoteCommand($id,$action,$data='')
- {
- $challenge = '';
- $shoptyp = $this->app->DB->Select("SELECT shoptyp FROM shopexport WHERE id='$id' LIMIT 1");
- $modulename = trim($this->app->DB->Select("SELECT modulename FROM shopexport WHERE id='$id' LIMIT 1"),'.');
- $isActionAuth = $action === 'auth';
- if($shoptyp === 'custom')
- {
- if($modulename != '')
- {
-
- $file = dirname(__DIR__) . '/plugins/external/shopimporter/'.$modulename;
- $classa = explode('_',str_replace('_'.$id.'.php','', $modulename));
- foreach($classa as $k => $v)
- {
- $classa[$k] = ucfirst($v);
+ );
+ if (empty($fileList)) {
+ return;
}
- $class = implode('_', $classa);
- if($this->app->DB->Select("SELECT aktiv FROM shopexport WHERE id = '$id' LIMIT 1"))
- {
- if(file_exists($file))
- {
- include_once($file);
- if(class_exists($class)){
- $obj = new $class($this->app, true);
- if($obj){
- if(method_exists($obj,'getKonfig'))
- {
- $obj->getKonfig($id, $data);
- }
- $method = $this->getMethod($obj, $action);
- if(method_exists($obj,$method))
- {
- $ret = $obj->$method();
- if(!empty($this->app->stringcleaner)){
- $this->app->stringcleaner->XMLArray_clean($ret);
- }
- }elseif($isActionAuth)
- {
- return 'Fehler: Importer konnte nicht initialisiert werden';
- }
- }elseif($isActionAuth)
- {
- return 'Fehler: Importer konnte nicht initialisiert werden';
- }
- }elseif($isActionAuth)
- {
- return 'Fehler: Importer konnte nicht initialisiert werden';
+
+ foreach ($fileList as $fileRow) {
+ $geloescht = $this->app->DB->Select("SELECT geloescht FROM datei WHERE id='$fileId' LIMIT 1");
+ $stichwort['subjekt'] = $fileRow['subjekt'];
+ $stichwort['artikel'] = $fileRow['parameter'];
+ $stichwort['datei'] = $fileId;
+ if (!$geloescht) {
+ $this->RemoteCommand($shopId, 'addfilesubjekt', $stichwort);
}
- }elseif($isActionAuth)
- {
- return 'Fehler: Datei '.$file.' existiert nicht';
- }
- }elseif($isActionAuth) {
- return 'Fehler: Schnittstelle nicht aktiv';
}
- }
- return '';
}
- if($shoptyp === 'intern')
- {
- if($modulename != '')
- {
- if($this->app->erp->ModulVorhanden($modulename))
- {
- $obj = $this->app->erp->LoadModul($modulename);
- if($obj){
- if(method_exists($obj,'getKonfig'))
- {
- $obj->getKonfig($id, $data);
+
+ /**
+ * @param int $shopId
+ * @param array $artikel
+ *
+ * @return mixed
+ * @throws Exception
+ */
+ public function RemoteDeleteArticle($shopId, $artikel) {
+ return $this->RemoteCommand($shopId, 'deletearticle', $artikel);
+ }
+
+ /**
+ * @param int $shopId
+ * @param array $partner
+ *
+ * @return mixed
+ * @throws Exception
+ */
+ public function RemoteSendPartner($shopId, $partner) {
+ return $this->RemoteCommand($shopId, 'partnerlist', $partner);
+ }
+
+ /**
+ * @param object $obj
+ * @param string $methodname
+ *
+ * @return string
+ */
+ public function getMethod($obj, $methodname) {
+ $methodname = trim((String) $methodname);
+ if ($methodname === '') {
+ return '';
+ }
+ if (!$obj) {
+ return '';
+ }
+ if (method_exists($obj, $methodname)) {
+ return $methodname;
+ }
+ $methods = get_class_methods($obj);
+ $classname = get_class($obj);
+ foreach ($methods as $v) {
+ if (strtolower($v) === 'import' . strtolower($methodname)) {
+ return $v;
}
- $method = 'Import'.$action;
- if(method_exists($obj,$method)) {
- try {
- $ret = $obj->$method();
- }
- catch(Exception $e) {
- if($isActionAuth) {
- return 'Fehler: '.$e->getMessage();
+ if (strtolower($v) === strtolower($classname . $methodname)) {
+ return $v;
+ }
+ }
+ foreach ($methods as $v) {
+ if (strtolower($v) === strtolower($methodname)) {
+ return $v;
+ }
+ }
+ return '';
+ }
+
+ /**
+ * @param int $id
+ * @param string $action
+ * @param string|array $data
+ *
+ * @return mixed
+ * @throws Exception
+ */
+ public function RemoteCommand($id, $action, $data = '') {
+ $challenge = '';
+ $shoptyp = $this->app->DB->Select("SELECT shoptyp FROM shopexport WHERE id='$id' LIMIT 1");
+ $modulename = trim($this->app->DB->Select("SELECT modulename FROM shopexport WHERE id='$id' LIMIT 1"), '.');
+ $isActionAuth = $action === 'auth';
+ if ($shoptyp === 'custom') {
+ if ($modulename != '') {
+
+ $file = dirname(__DIR__) . '/plugins/external/shopimporter/' . $modulename;
+ $classa = explode('_', str_replace('_' . $id . '.php', '', $modulename));
+ foreach ($classa as $k => $v) {
+ $classa[$k] = ucfirst($v);
}
+ $class = implode('_', $classa);
+ if ($this->app->DB->Select("SELECT aktiv FROM shopexport WHERE id = '$id' LIMIT 1")) {
+ if (file_exists($file)) {
+ include_once($file);
+ if (class_exists($class)) {
+ $obj = new $class($this->app, true);
+ if ($obj) {
+ if (method_exists($obj, 'getKonfig')) {
+ $obj->getKonfig($id, $data);
+ }
+ $method = $this->getMethod($obj, $action);
+ if (method_exists($obj, $method)) {
+ $ret = $obj->$method();
+ if (!empty($this->app->stringcleaner)) {
+ $this->app->stringcleaner->XMLArray_clean($ret);
+ }
+ } elseif ($isActionAuth) {
+ return 'Fehler: Importer konnte nicht initialisiert werden';
+ }
+ } elseif ($isActionAuth) {
+ return 'Fehler: Importer konnte nicht initialisiert werden';
+ }
+ } elseif ($isActionAuth) {
+ return 'Fehler: Importer konnte nicht initialisiert werden';
+ }
+ } elseif ($isActionAuth) {
+ return 'Fehler: Datei ' . $file . ' existiert nicht';
+ }
+ } elseif ($isActionAuth) {
+ return 'Fehler: Schnittstelle nicht aktiv';
+ }
+ }
+ return '';
+ }
+
+ if ($shoptyp === 'intern') {
+ if ($modulename != '') {
+ if ($this->app->erp->ModulVorhanden($modulename)) {
+ $obj = $this->app->erp->LoadModul($modulename);
+ if ($obj) {
+ if (method_exists($obj, 'getKonfig')) {
+ $obj->getKonfig($id, $data);
+ }
+ $method = 'Import' . $action;
+
+ if (method_exists($obj, $method)) {
+ try {
+ $ret = $obj->$method();
+ } catch (Exception $e) {
+ if ($isActionAuth) {
+ return 'Fehler Auth: ' . $e->getMessage();
+ }
+ return 'Fehler: ' . $e->getMessage();
+ }
+
+ if (!empty($this->app->stringcleaner)) {
+ $this->app->stringcleaner->XMLArray_clean($ret);
+ }
+ $this->parseReturn($ret, $id, $action);
+ return $ret;
+ } else {
+ return 'Fehler: Funktion nicht implementiert: ' . $method;
+ }
+ } elseif ($isActionAuth) {
+ return 'Fehler: Importer konnte nicht initialisiert werden';
+ }
+ } elseif ($isActionAuth) {
+ return 'Fehler: Dieses Modul ist nicht verfügbar';
+ }
+ } elseif ($isActionAuth) {
+ return 'Fehler: Kein Modul vorhanden';
+ }
+ return '';
+ }
+ $shopexport = $this->app->DB->SelectRow("SELECT * FROM shopexport WHERE id='$id' LIMIT 1");
+ if ($shopexport) {
+ if ($shopexport['shoptyp'] === 'intern' || $shopexport['shoptyp'] === 'custom') {
return '';
- }
-
- if(!empty($this->app->stringcleaner)){
- $this->app->stringcleaner->XMLArray_clean($ret);
- }
- $this->parseReturn($ret, $id, $action);
- return $ret;
}
- }elseif($isActionAuth)
- {
- return 'Fehler: Importer konnte nicht initialisiert werden';
- }
- }elseif($isActionAuth)
- {
- return 'Fehler: Dieses Modul ist nicht verfügbar';
+ $token = $shopexport['token'];
+ $url = $shopexport['url'];
+ $z = $shopexport['passwort'];
+ $bezeichnung = $shopexport['bezeichnung'];
+ } else {
+ $token = '';
+ $z = '';
+ $url = '';
}
- }elseif($isActionAuth)
- {
- return 'Fehler: Kein Modul vorhanden';
- }
- return '';
- }
- $shopexport = $this->app->DB->SelectRow("SELECT * FROM shopexport WHERE id='$id' LIMIT 1");
- if($shopexport){
- if($shopexport['shoptyp'] === 'intern' || $shopexport['shoptyp'] === 'custom'){
- return '';
- }
- $token = $shopexport['token'];
- $url = $shopexport['url'];
- $z = $shopexport['passwort'];
- $bezeichnung = $shopexport['bezeichnung'];
- }
- else {
- $token = '';
- $z = '';
- $url = '';
- }
- if($isActionAuth) {
- if($token === '' || strlen($z) < 32 || $url === '') {
- return 'Fehler: Bitte Zugangsdaten prüfen';
- }
- }
- elseif($token === '' || strlen($z) < 32 || $url === '' || !$this->app->DB->Select("SELECT id FROM shopexport WHERE id = '$id' AND aktiv = 1 LIMIT 1")){
- return '';
- }
-
- $tmp = parse_url($url);
- $tmp['host'] = rtrim($tmp['host'],'/');
- $tmp['path'] = rtrim($tmp['path'],'/').'/';
-
- $aes = new AES($z);
- $token = base64_encode($aes->encrypt(serialize($token)));
- $client = new HttpClient($tmp['host'], stripos($url,'https') === 0?443:80);
- $geturl = $tmp['path'].'index.php?module=import&action='.$action.'&challenge='.(isset($challenge)?$challenge:'');
- //Kein Fragezeichen vor module=import...
- if(false !== stripos($bezeichnung, 'woocommerce')) {
- $geturl = $tmp['path'].'module=import&action='.$action.'&challenge='.(isset($challenge)?$challenge:'');
- }
- if(false !== stripos($bezeichnung, 'shopware plugin')) {
- $geturl = $tmp['path'].'wawisionimporter/?smodule=import&saction='.$action.'&challenge='.(isset($challenge)?$challenge:'');
- }
-
- $post_data['token'] = $token;
- $post_data['data'] = base64_encode(serialize($data));
- $client->timeout = 120;
- if(!$client->post($geturl,$post_data)) {
- $this->app->erp->LogFile(mysqli_real_escape_string($this->app->DB->connection,'An error occurred: '.$client->getError()));
- throw new Exception('An error occurred: '.$client->getError());
- //return 'Netzwerkverbindung von WaWison zu Shopimporter fehlgeschlagen: '.$client->getError();
- }
- $ret = unserialize(base64_decode($client->getContent()));
- if(!empty($this->app->stringcleaner)){
- $this->app->stringcleaner->XMLArray_clean($ret);
- }
- $this->parseReturn($ret, $id, $action);
- return $ret;
- }
-
- /**
- * @param mixed $ret
- * @param int $id
- * @param string $action
- */
- public function parseReturn($ret, $id, $action)
- {
- if($action === 'getarticlelist') {
- if(empty($ret)) {
- return;
- }
- $anz = 0;
- if(empty($ret['errors'])) {
- 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 ($isActionAuth) {
+ if ($token === '' || strlen($z) < 32 || $url === '') {
+ return 'Fehler: Bitte Zugangsdaten prüfen';
+ }
+ } elseif ($token === '' || strlen($z) < 32 || $url === '' || !$this->app->DB->Select("SELECT id FROM shopexport WHERE id = '$id' AND aktiv = 1 LIMIT 1")) {
+ return '';
}
- 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");
+
+ $tmp = parse_url($url);
+ $tmp['host'] = rtrim($tmp['host'], '/');
+ $tmp['path'] = rtrim($tmp['path'], '/') . '/';
+
+ $aes = new AES($z);
+ $token = base64_encode($aes->encrypt(serialize($token)));
+ $client = new HttpClient($tmp['host'], stripos($url, 'https') === 0 ? 443 : 80);
+ $geturl = $tmp['path'] . 'index.php?module=import&action=' . $action . '&challenge=' . (isset($challenge) ? $challenge : '');
+ //Kein Fragezeichen vor module=import...
+ if (false !== stripos($bezeichnung, 'woocommerce')) {
+ $geturl = $tmp['path'] . 'module=import&action=' . $action . '&challenge=' . (isset($challenge) ? $challenge : '');
}
- $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->erp->SetKonfigurationValue('artikelimportanzahl_'.$id, $anz);
+ if (false !== stripos($bezeichnung, 'shopware plugin')) {
+ $geturl = $tmp['path'] . 'wawisionimporter/?smodule=import&saction=' . $action . '&challenge=' . (isset($challenge) ? $challenge : '');
+ }
+
+ $post_data['token'] = $token;
+ $post_data['data'] = base64_encode(serialize($data));
+ $client->timeout = 120;
+ if (!$client->post($geturl, $post_data)) {
+
+ $this->logger->error('An error occurred',
+ [
+ 'error' => $client->getError()
+ ]
+ );
+
+ throw new Exception('An error occurred: ' . $client->getError());
+ //return 'Netzwerkverbindung von WaWison zu Shopimporter fehlgeschlagen: '.$client->getError();
+ }
+ $ret = unserialize(base64_decode($client->getContent()));
+ if (!empty($this->app->stringcleaner)) {
+ $this->app->stringcleaner->XMLArray_clean($ret);
+ }
+ $this->parseReturn($ret, $id, $action);
+ return $ret;
}
- }
- /**
- * @param int $id
- * @param string $action
- * @param string|array $data
- *
- * @return mixed|string
- * @throws Exception
- */
- public function RemoteCommandAES($id,$action,$data='')
- {
- $challenge = '';
- $shopexport = $this->app->DB->SelectRow("SELECT * FROM shopexport WHERE id='$id' LIMIT 1");
- if(!empty($shopexport)){
- if($shopexport['shoptyp'] === 'intern' || $shopexport['shoptyp'] === 'custom'){
- return '';
- }
- $token = $shopexport['token'];
- $url = $shopexport['url'];
- $z = $shopexport['passwort'];
- if($z === '' || $token === '' || $url === '')
- {
- throw new Exception('Der ImportKey/ImportToken/ImportUrl ist leer');
- }
+ /**
+ * @param mixed $ret
+ * @param int $id
+ * @param string $action
+ */
+ public function parseReturn($ret, $id, $action) {
+ if ($action === 'getarticlelist') {
+ if (empty($ret)) {
+ return;
+ }
+ $anz = 0;
+ if (empty($ret['errors'])) {
+ 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->erp->SetKonfigurationValue('artikelimportanzahl_' . $id, $anz);
+ }
}
- $tmp = parse_url($url);
- $aes = new AES($z);
- $token = base64_encode($aes->encrypt(serialize($token)));
+ /**
+ * @param int $id
+ * @param string $action
+ * @param string|array $data
+ *
+ * @return mixed|string
+ * @throws Exception
+ */
+ public function RemoteCommandAES($id, $action, $data = '') {
+ $challenge = '';
+ $shopexport = $this->app->DB->SelectRow("SELECT * FROM shopexport WHERE id='$id' LIMIT 1");
+ if (!empty($shopexport)) {
+ if ($shopexport['shoptyp'] === 'intern' || $shopexport['shoptyp'] === 'custom') {
+ return '';
+ }
+ $token = $shopexport['token'];
+ $url = $shopexport['url'];
+ $z = $shopexport['passwort'];
+ if ($z === '' || $token === '' || $url === '') {
+ throw new Exception('Der ImportKey/ImportToken/ImportUrl ist leer');
+ }
+ }
+ $tmp = parse_url($url);
- $client = new HttpClient($tmp['host']);
- $geturl = $tmp['path'].'index.php?module=import&action='.$action.'&challenge='.$challenge;
+ $aes = new AES($z);
+ $token = base64_encode($aes->encrypt(serialize($token)));
- $post_data['token'] = $token;
- $post_data['data'] = base64_encode($aes->encrypt(serialize($data)));
+ $client = new HttpClient($tmp['host']);
+ $geturl = $tmp['path'] . 'index.php?module=import&action=' . $action . '&challenge=' . $challenge;
- if(!$client->post($geturl,$post_data))
- {
- $this->app->erp->LogFile(mysqli_real_escape_string($this->app->DB->connection,'An error occurred: '.$client->getError()));
- throw new Exception('An error occurred: '.$client->getError());
+ $post_data['token'] = $token;
+ $post_data['data'] = base64_encode($aes->encrypt(serialize($data)));
+
+ if (!$client->post($geturl, $post_data)) {
+ $this->logger->error('An error occurred',
+ [
+ 'error' => $client->getError()
+ ]
+ );
+
+ throw new Exception('An error occurred: ' . $client->getError());
+ }
+ return unserialize($aes->decrypt(base64_decode($client->getContent())));
}
- return unserialize($aes->decrypt(base64_decode($client->getContent())));
- }
}
+
diff --git a/www/lib/class.versanddienstleister.php b/www/lib/class.versanddienstleister.php
index 73fd1d16..d9aa1b82 100644
--- a/www/lib/class.versanddienstleister.php
+++ b/www/lib/class.versanddienstleister.php
@@ -62,6 +62,9 @@ abstract class Versanddienstleister
$auftragId = $this->app->DB->Select("SELECT auftragid FROM rechnung WHERE id=$rechnungId LIMIT 1");
if ($sid === 'rechnung' || $sid === 'lieferschein' || $sid === 'adresse') {
+
+ $ret['addresstype'] = 0; // 0 = firma, 1 = packstation, 2 = postfiliale, 3 = privatadresse
+
$docArr = $this->app->DB->SelectRow("SELECT * FROM `$sid` WHERE id = $id LIMIT 1");
$ret['addressId'] = $docArr['adresse'];
$ret['auftragId'] = $auftragId;
@@ -73,12 +76,28 @@ abstract class Versanddienstleister
$ret['original'] = array_filter($docArr, fn($key) => in_array($key, $addressfields), ARRAY_FILTER_USE_KEY);
- $ret['name'] = empty(trim($docArr['ansprechpartner'])) ? trim($docArr['name']) : trim($docArr['ansprechpartner']);
- $ret['name2'] = !empty(trim($docArr['ansprechpartner'])) ? trim($docArr['name']) : '';
- $ret['name3'] = join(';', array_filter([
- $docArr['abteilung'],
- $docArr['unterabteilung']
- ], fn(string $item) => !empty(trim($item))));
+ if ($docArr['typ'] == "firma") {
+ $ret['company_name'] = $docArr['name'];
+ $ret['addresstype'] = 0;
+ } else {
+ $ret['addresstype'] = 3;
+ }
+
+ $ret['contact_name'] = $docArr['ansprechpartner'];
+
+ $ret['company_division'] = join(
+ ';',
+ array_filter(
+ [
+ $docArr['abteilung'],
+ $docArr['unterabteilung']
+ ],
+ fn(string $item) => !empty(trim($item))
+ )
+ );
+
+ $ret['name'] = $docArr['name'];
+
$ret['address2'] = $docArr['adresszusatz'];
$ret['city'] = $docArr['ort'];
@@ -86,7 +105,6 @@ abstract class Versanddienstleister
$ret['country'] = $docArr['land'];
$ret['phone'] = $docArr['telefon'];
$ret['email'] = $docArr['email'];
- $ret['addresstype'] = 0;
$strasse = trim($docArr['strasse']);
$ret['streetwithnumber'] = $strasse;
diff --git a/www/lib/dokumente/class.adressstammblatt.php b/www/lib/dokumente/class.adressstammblatt.php
index 93904637..2a7c8507 100644
--- a/www/lib/dokumente/class.adressstammblatt.php
+++ b/www/lib/dokumente/class.adressstammblatt.php
@@ -1,235 +1,236 @@
-app=$app;
- //parent::Dokumentenvorlage();
- $this->doctype="adresse";
- $this->doctypeOrig="Adressstammblatt";
- parent::__construct($this->app,$projekt);
- }
-
- public function renderDocument() {
- // prepare page details
- SuperFPDF::__construct('P','mm','A4');
-
-
- $this->AddPage();
- $this->SetDisplayMode("real","single");
-
- $this->SetMargins(15,50);
- $this->SetAutoPageBreak(true,40);
- $this->AliasNbPages('{nb}');
-
-
- // Bei Adressstammblatt immer oben beginnen
- $this->abstand_betreffzeileoben=0;
- $this->logofile = "";//$this->app->erp->GetTMP()."/".$this->app->Conf->WFdbname."_logo.jpg";
- $this->briefpapier="";
-
-
- $schrift = $this->app->erp->Firmendaten('schriftgroesse');
-
- $this->SetFontSize($schrift);
- $this->SetFont($this->GetFont(),'','10');
- $this->SetX($this->GetX()+160);
- $this->Cell(10,0,date("d.m.Y"),"","","L");
-
- $this->renderDoctype();
-
- $adresse = $this->app->DB->SelectArr("SELECT * FROM adresse WHERE id='".$this->id."'");
- $adresse = reset($adresse);
-
- if($adresse['typ']=="firma")
- {
- $infofields[]=array("Firma",$adresse['name']);
- if($adresse['ansprechpartner']!="")
- $infofields[]=array("Ansprechpartner",$adresse['ansprechpartner']);
- } else {
- $infofields[]=array("Name",$adresse['name']);
- }
-
- $infofields[]=array("Anschrift",$adresse['land']."-".$adresse['plz']." ".$adresse['ort'].", ".$adresse['strasse']);
-
- $felder = array('telefon','telefax','mobil','email','web');
- foreach($felder as $feldname)
- {
- $infofields[]=array(ucfirst($feldname),$adresse[$feldname=='web'?'internetseite':$feldname]);
- }
-
-
- if($this->app->erp->Firmendaten("modul_mlm")==1)
- {
- $mlmvertragsbeginn = $this->app->DB->Select("SELECT DATE_FORMAT(mlmvertragsbeginn,'%d.%m.%Y') FROM adresse WHERE id='".$adresse['id']."' LIMIT 1");
- if($mlmvertragsbeginn=="00.00.0000") $mlmvertragsbeginn = "kein Vertragsbeginn eingestellt";
- $sponsorid = $this->app->DB->Select("SELECT sponsor FROM adresse WHERE id='".$adresse['id']."' LIMIT 1");
- if($sponsorid> 0)
- $sponsor = $this->app->DB->Select("SELECT CONCAT(kundennummer,' ',name) FROM adresse WHERE id='$sponsorid' LIMIT 1");
- else
- $sponsor = "Kein Sponsor vorhanden";
-
- $erfasstam = $this->app->DB->Select("SELECT DATE_FORMAT(zeitstempel,'%d.%m.%Y') FROM objekt_protokoll WHERE objekt='adresse' AND objektid='".$adresse['id']."' AND action_long='adresse_create' LIMIT 1");
-
- $infofields[]=array("Sponsor",$sponsor);
- $infofields[]=array("Erfasst am",$erfasstam);
- $infofields[]=array("Vertragsbeginn am",$mlmvertragsbeginn);
- }
-
-
-
- $infofields[]=array("UST-ID",$adresse['ustid']);
-
-
- if($adresse['kundennummer']!="")
- $numbers[] = array("Kunden Nr.",$adresse['kundennummer']);
-
- if($adresse['lieferantennummer']!="")
- $numbers[] = array("Lieferanten Nr.",$adresse['lieferantennummer']);
-
- if($adresse['mitarbeiternummer']!="")
- $numbers[] = array("Mitarbeiter Nr.",$adresse['mitarbeiternummer']);
-
- if(count($numbers)>0)
- $this->renderInfoBox($numbers);
-
- $this->Ln(5);
- $this->renderHeading("Adressstammblatt",8);
- $this->renderInfoBox($infofields);
-
-
-
- $ansprechpartner_tmp = $this->app->DB->SelectArr("SELECT CONCAT(name,', ',if(bereich='','-',bereich),
- ', Telefon: ',telefon,
- ', Mobil: ',mobil,
- ', E-Mail: ',email
- ) as 'value' FROM ansprechpartner WHERE adresse='".$adresse['id']."'");
-
- for($i=0;$i 0)
- {
- $this->Ln(5);
- $this->renderHeading("Ansprechpartner",8);
- $this->renderInfoBoxSingle($ansprechpartner);
- }
-
- $lieferadressen_tmp = $this->app->DB->SelectArr("SELECT name,abteilung,unterabteilung,adresszusatz,strasse,plz,ort,land,
- telefon,email
- FROM lieferadressen WHERE adresse='".$adresse['id']."' ORDER by standardlieferadresse DESC");
-
- for($i=0;$i$value)
- {
- switch($key)
- {
- case "email":
- $lieferadressen_tmp[$i]['value'] .= "E-Mail: $value, ";
- break;
-
- case "telefon":
- $lieferadressen_tmp[$i]['value'] .= "Telefon: $value, ";
- break;
- case "telefax":
- $lieferadressen_tmp[$i]['value'] .= "Telefax: $value, ";
- break;
-
- default:
- if($value!="")
- $lieferadressen_tmp[$i]['value'] .= "$value, ";
- }
- }
-
- $lieferadressen_tmp[$i]['value'] = trim($lieferadressen_tmp[$i]['value'],', ');
- if($i==0) $standard = " (Standard)"; else $standard="";
-
- $lieferadressen[] = $lieferadressen_tmp[$i]['value'].$standard;
- }
-
- if(count($lieferadressen) > 0)
- {
- $this->Ln(5);
- $this->renderHeading("Lieferadressen",8);
- $this->renderInfoBoxSingle($lieferadressen);
- }
-
-
- $this->Ln(5);
-
- if($adresse['sonstiges']!="")
- {
- $this->renderHeading("Sonstiges",8);
- $this->SetFont($this->GetFont(),'',7);
- $this->MultiCell(180,4,$this->WriteHTML($adresse['sonstiges']));
- }
-
- $this->renderFooter();
- }
-
-
- function GetAdressstammblatt($id,$info="",$extrafreitext="")
- {
- $this->id = $id;
- // das muss vom reisekosten sein!!!!
- //$this->setRecipientLieferadresse($id,"reisekosten");
-
- // OfferNo, customerId, OfferDate
- /*$auftrag = $this->app->DB->Select("SELECT auftragid FROM reisekosten WHERE id='$id' LIMIT 1");
- $auftrag = $this->app->DB->Select("SELECT belegnr FROM auftrag WHERE id='$auftrag' LIMIT 1");
- $bearbeiter = $this->app->DB->Select("SELECT bearbeiter FROM reisekosten WHERE id='$id' LIMIT 1");
- $prefix = $this->app->DB->Select("SELECT prefix FROM reisekosten WHERE id='$id' LIMIT 1");
- $bestellbestaetigung = $this->app->DB->Select("SELECT bestellbestaetigung FROM reisekosten WHERE id='$id' LIMIT 1");
- $this->datum = $this->app->DB->Select("SELECT DATE_FORMAT(datum,'%d.%m.%Y') FROM reisekosten WHERE id='$id' LIMIT 1");
-
- $this->von = $this->app->DB->Select("SELECT DATE_FORMAT(von,'%d.%m.%Y') FROM reisekosten WHERE id='$id' LIMIT 1");
- $this->bis = $this->app->DB->Select("SELECT DATE_FORMAT(bis,'%d.%m.%Y') FROM reisekosten WHERE id='$id' LIMIT 1");
- $this->von_zeit = $this->app->DB->Select("SELECT von_zeit FROM reisekosten WHERE id='$id' LIMIT 1");
- $this->bis_zeit = $this->app->DB->Select("SELECT bis_zeit FROM reisekosten WHERE id='$id' LIMIT 1");
- $belegnr = $this->app->DB->Select("SELECT belegnr FROM reisekosten WHERE id='$id' LIMIT 1");
- $this->anlass = $this->app->DB->Select("SELECT anlass FROM reisekosten WHERE id='$id' LIMIT 1");
- $this->freitext = $this->app->DB->Select("SELECT freitext FROM reisekosten WHERE id='$id' LIMIT 1");
- $projekt = $this->app->DB->Select("SELECT projekt FROM reisekosten WHERE id='$id' LIMIT 1");
- $mitarbeiter = $this->app->DB->Select("SELECT mitarbeiter FROM reisekosten WHERE id='$id' LIMIT 1");*/
- $kunde= $this->app->DB->SelectArr("SELECT name,kundennummer,lieferantennummer FROM adresse WHERE id='$id' LIMIT 1");
- $kunde = reset($kunde);
-
- $kundennummer = $kunde['kundennummer'];
- $this->name = $kunde['name'];
-
- $this->projektabkuerzung = $this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id='$projekt'");
- $this->firmenname = $this->app->erp->Firmendaten('name');
- $this->doctypeOrig="Adresse: ".$kunde['name'];
- $this->barcode=$belegnr;
-
- //$ohne_briefpapier = $this->app->DB->Select("SELECT ohne_briefpapier FROM reisekosten WHERE id='$id' LIMIT 1");
-
-
-
-
- //$artikel = $this->app->DB->SelectArr("SELECT *,DATE_FORMAT(datum,'%d.%m.%Y') as datum, CONCAT(rk.nummer,'- ',rk.beschreibung) as reisekostenart FROM reisekosten_position rp LEFT JOIN reisekostenart rk ON rk.id=rp.reisekostenart WHERE rp.reisekosten='$id' ORDER By rp.sort");
-
- //$waehrung = $this->app->DB->Select("SELECT waehrung FROM reisekosten_position WHERE reisekosten='$id' LIMIT 1");
-
- /* Dateiname */
- $this->filename = date('Ymd')."_STAMMDATEN_ADRESSE_".$this->app->erp->Dateinamen($kunde['name']).".pdf";
-
- $this->setBarcode($id);
- }
-
-
-}
+app=$app;
+ //parent::Dokumentenvorlage();
+ $this->doctype="adresse";
+ $this->table="adresse";
+ $this->doctypeOrig="Adressstammblatt";
+ parent::__construct($this->app,$projekt);
+ }
+
+ public function renderDocument() {
+ // prepare page details
+ SuperFPDF::__construct('P','mm','A4');
+
+
+ $this->AddPage();
+ $this->SetDisplayMode("real","single");
+
+ $this->SetMargins(15,50);
+ $this->SetAutoPageBreak(true,40);
+ $this->AliasNbPages('{nb}');
+
+
+ // Bei Adressstammblatt immer oben beginnen
+ $this->abstand_betreffzeileoben=0;
+ $this->logofile = "";//$this->app->erp->GetTMP()."/".$this->app->Conf->WFdbname."_logo.jpg";
+ $this->briefpapier="";
+
+
+ $schrift = $this->app->erp->Firmendaten('schriftgroesse');
+
+ $this->SetFontSize($schrift);
+ $this->SetFont($this->GetFont(),'','10');
+ $this->SetX($this->GetX()+160);
+ $this->Cell(10,0,date("d.m.Y"),"","","L");
+
+ $this->renderDoctype();
+
+ $adresse = $this->app->DB->SelectArr("SELECT * FROM adresse WHERE id='".$this->id."'");
+ $adresse = reset($adresse);
+
+ if($adresse['typ']=="firma")
+ {
+ $infofields[]=array("Firma",$adresse['name']);
+ if($adresse['ansprechpartner']!="")
+ $infofields[]=array("Ansprechpartner",$adresse['ansprechpartner']);
+ } else {
+ $infofields[]=array("Name",$adresse['name']);
+ }
+
+ $infofields[]=array("Anschrift",$adresse['land']."-".$adresse['plz']." ".$adresse['ort'].", ".$adresse['strasse']);
+
+ $felder = array('telefon','telefax','mobil','email','web');
+ foreach($felder as $feldname)
+ {
+ $infofields[]=array(ucfirst($feldname),$adresse[$feldname=='web'?'internetseite':$feldname]);
+ }
+
+
+ if($this->app->erp->Firmendaten("modul_mlm")==1)
+ {
+ $mlmvertragsbeginn = $this->app->DB->Select("SELECT DATE_FORMAT(mlmvertragsbeginn,'%d.%m.%Y') FROM adresse WHERE id='".$adresse['id']."' LIMIT 1");
+ if($mlmvertragsbeginn=="00.00.0000") $mlmvertragsbeginn = "kein Vertragsbeginn eingestellt";
+ $sponsorid = $this->app->DB->Select("SELECT sponsor FROM adresse WHERE id='".$adresse['id']."' LIMIT 1");
+ if($sponsorid> 0)
+ $sponsor = $this->app->DB->Select("SELECT CONCAT(kundennummer,' ',name) FROM adresse WHERE id='$sponsorid' LIMIT 1");
+ else
+ $sponsor = "Kein Sponsor vorhanden";
+
+ $erfasstam = $this->app->DB->Select("SELECT DATE_FORMAT(zeitstempel,'%d.%m.%Y') FROM objekt_protokoll WHERE objekt='adresse' AND objektid='".$adresse['id']."' AND action_long='adresse_create' LIMIT 1");
+
+ $infofields[]=array("Sponsor",$sponsor);
+ $infofields[]=array("Erfasst am",$erfasstam);
+ $infofields[]=array("Vertragsbeginn am",$mlmvertragsbeginn);
+ }
+
+
+
+ $infofields[]=array("UST-ID",$adresse['ustid']);
+
+
+ if($adresse['kundennummer']!="")
+ $numbers[] = array("Kunden Nr.",$adresse['kundennummer']);
+
+ if($adresse['lieferantennummer']!="")
+ $numbers[] = array("Lieferanten Nr.",$adresse['lieferantennummer']);
+
+ if($adresse['mitarbeiternummer']!="")
+ $numbers[] = array("Mitarbeiter Nr.",$adresse['mitarbeiternummer']);
+
+ if($numbers?count($numbers):0>0)
+ $this->renderInfoBox($numbers);
+
+ $this->Ln(5);
+ $this->renderHeading("Adressstammblatt",8);
+ $this->renderInfoBox($infofields);
+
+
+
+ $ansprechpartner_tmp = $this->app->DB->SelectArr("SELECT CONCAT(name,', ',if(bereich='','-',bereich),
+ ', Telefon: ',telefon,
+ ', Mobil: ',mobil,
+ ', E-Mail: ',email
+ ) as 'value' FROM ansprechpartner WHERE adresse='".$adresse['id']."'");
+
+ for($i=0;$i<($ansprechpartner_tmp?count($ansprechpartner_tmp):0);$i++) $ansprechpartner[] = $ansprechpartner_tmp[$i]['value'];
+ if($ansprechpartner_tmp?count($ansprechpartner):0 > 0)
+ {
+ $this->Ln(5);
+ $this->renderHeading("Ansprechpartner",8);
+ $this->renderInfoBoxSingle($ansprechpartner);
+ }
+
+ $lieferadressen_tmp = $this->app->DB->SelectArr("SELECT name,abteilung,unterabteilung,adresszusatz,strasse,plz,ort,land,
+ telefon,email
+ FROM lieferadressen WHERE adresse='".$adresse['id']."' ORDER by standardlieferadresse DESC");
+
+ for($i=0;$i<($lieferadressen_tmp?count($lieferadressen_tmp):0);$i++) {
+ $lieferadressen_tmp[$i]['value']="";
+ foreach($lieferadressen_tmp[$i] as $key=>$value)
+ {
+ switch($key)
+ {
+ case "email":
+ $lieferadressen_tmp[$i]['value'] .= "E-Mail: $value, ";
+ break;
+
+ case "telefon":
+ $lieferadressen_tmp[$i]['value'] .= "Telefon: $value, ";
+ break;
+ case "telefax":
+ $lieferadressen_tmp[$i]['value'] .= "Telefax: $value, ";
+ break;
+
+ default:
+ if($value!="")
+ $lieferadressen_tmp[$i]['value'] .= "$value, ";
+ }
+ }
+
+ $lieferadressen_tmp[$i]['value'] = trim($lieferadressen_tmp[$i]['value'],', ');
+ if($i==0) $standard = " (Standard)"; else $standard="";
+
+ $lieferadressen[] = $lieferadressen_tmp[$i]['value'].$standard;
+ }
+
+ if($lieferadressen?count($lieferadressen):0 > 0)
+ {
+ $this->Ln(5);
+ $this->renderHeading("Lieferadressen",8);
+ $this->renderInfoBoxSingle($lieferadressen);
+ }
+
+
+ $this->Ln(5);
+
+ if($adresse['sonstiges']!="")
+ {
+ $this->renderHeading("Sonstiges",8);
+ $this->SetFont($this->GetFont(),'',7);
+ $this->MultiCell(180,4,$this->WriteHTML($adresse['sonstiges']));
+ }
+
+ $this->renderFooter();
+ }
+
+
+ function GetAdressstammblatt($id,$info="",$extrafreitext="")
+ {
+ $this->id = $id;
+ // das muss vom reisekosten sein!!!!
+ //$this->setRecipientLieferadresse($id,"reisekosten");
+
+ // OfferNo, customerId, OfferDate
+ /*$auftrag = $this->app->DB->Select("SELECT auftragid FROM reisekosten WHERE id='$id' LIMIT 1");
+ $auftrag = $this->app->DB->Select("SELECT belegnr FROM auftrag WHERE id='$auftrag' LIMIT 1");
+ $bearbeiter = $this->app->DB->Select("SELECT bearbeiter FROM reisekosten WHERE id='$id' LIMIT 1");
+ $prefix = $this->app->DB->Select("SELECT prefix FROM reisekosten WHERE id='$id' LIMIT 1");
+ $bestellbestaetigung = $this->app->DB->Select("SELECT bestellbestaetigung FROM reisekosten WHERE id='$id' LIMIT 1");
+ $this->datum = $this->app->DB->Select("SELECT DATE_FORMAT(datum,'%d.%m.%Y') FROM reisekosten WHERE id='$id' LIMIT 1");
+
+ $this->von = $this->app->DB->Select("SELECT DATE_FORMAT(von,'%d.%m.%Y') FROM reisekosten WHERE id='$id' LIMIT 1");
+ $this->bis = $this->app->DB->Select("SELECT DATE_FORMAT(bis,'%d.%m.%Y') FROM reisekosten WHERE id='$id' LIMIT 1");
+ $this->von_zeit = $this->app->DB->Select("SELECT von_zeit FROM reisekosten WHERE id='$id' LIMIT 1");
+ $this->bis_zeit = $this->app->DB->Select("SELECT bis_zeit FROM reisekosten WHERE id='$id' LIMIT 1");
+ $belegnr = $this->app->DB->Select("SELECT belegnr FROM reisekosten WHERE id='$id' LIMIT 1");
+ $this->anlass = $this->app->DB->Select("SELECT anlass FROM reisekosten WHERE id='$id' LIMIT 1");
+ $this->freitext = $this->app->DB->Select("SELECT freitext FROM reisekosten WHERE id='$id' LIMIT 1");
+ $projekt = $this->app->DB->Select("SELECT projekt FROM reisekosten WHERE id='$id' LIMIT 1");
+ $mitarbeiter = $this->app->DB->Select("SELECT mitarbeiter FROM reisekosten WHERE id='$id' LIMIT 1");*/
+ $kunde= $this->app->DB->SelectArr("SELECT name,kundennummer,lieferantennummer FROM adresse WHERE id='$id' LIMIT 1");
+ $kunde = reset($kunde);
+
+ $kundennummer = $kunde['kundennummer'];
+ $this->name = $kunde['name'];
+
+ $this->projektabkuerzung = $this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id='$projekt'");
+ $this->firmenname = $this->app->erp->Firmendaten('name');
+ $this->doctypeOrig="Adresse: ".$kunde['name'];
+ $this->barcode=$belegnr;
+
+ //$ohne_briefpapier = $this->app->DB->Select("SELECT ohne_briefpapier FROM reisekosten WHERE id='$id' LIMIT 1");
+
+
+
+
+ //$artikel = $this->app->DB->SelectArr("SELECT *,DATE_FORMAT(datum,'%d.%m.%Y') as datum, CONCAT(rk.nummer,'- ',rk.beschreibung) as reisekostenart FROM reisekosten_position rp LEFT JOIN reisekostenart rk ON rk.id=rp.reisekostenart WHERE rp.reisekosten='$id' ORDER By rp.sort");
+
+ //$waehrung = $this->app->DB->Select("SELECT waehrung FROM reisekosten_position WHERE reisekosten='$id' LIMIT 1");
+
+ /* Dateiname */
+ $this->filename = date('Ymd')."_STAMMDATEN_ADRESSE_".$this->app->erp->Dateinamen($kunde['name']).".pdf";
+
+ $this->setBarcode($id);
+ }
+
+
+}
diff --git a/www/lib/dokumente/class.briefpapier.php b/www/lib/dokumente/class.briefpapier.php
index 5a40fdae..8dc3b0a7 100644
--- a/www/lib/dokumente/class.briefpapier.php
+++ b/www/lib/dokumente/class.briefpapier.php
@@ -3560,7 +3560,7 @@ class Briefpapier extends SuperFPDF {
($this->doctype == "gutschrift" && $this->getStyleElement("gutschrift_artikelbild")) ||
($this->doctype == "angebot" && $this->getStyleElement("angebot_artikelbild"))
){
- $datei = $this->app->DB->Select("SELECT datei FROM `datei_stichwoerter` WHERE subjekt='Shopbild' AND objekt='Artikel' AND parameter='" . $item['artikel'] . "' ORDER by sort ASC LIMIT 1");
+ $datei = $this->app->erp->GetArtikelStandardbild($item['artikel'],true);
if(!empty($datei)){
$datei = $this->app->DB->Select("SELECT id FROM datei_version WHERE datei = '$datei' ORDER BY id DESC LIMIT 1");
}
diff --git a/www/lib/dokumente/class.dokumentenvorlage.php b/www/lib/dokumente/class.dokumentenvorlage.php
index 1c14dcd3..f2a024f9 100644
--- a/www/lib/dokumente/class.dokumentenvorlage.php
+++ b/www/lib/dokumente/class.dokumentenvorlage.php
@@ -474,9 +474,11 @@ class Dokumentenvorlage extends SuperFPDF {
$this->Output($dir."/".$this->table."/".$this->id."_".$this->filename,'F');
}
- public function displayDocument() {
+ public function displayDocument($archive = true) {
$this->renderDocument();
- $this->archiveDocument();
+ if ($archive) {
+ $this->archiveDocument();
+ }
$this->Output($this->filename,'D');
exit;
}
diff --git a/www/lib/versandarten/content/createshipment.tpl b/www/lib/versandarten/content/createshipment.tpl
index d524c75f..db8e88da 100644
--- a/www/lib/versandarten/content/createshipment.tpl
+++ b/www/lib/versandarten/content/createshipment.tpl
@@ -18,29 +18,34 @@ SPDX-License-Identifier: LicenseRef-EGPL-3.1
{|Adresstyp|}:
- Haus
+ Firma
Packstation
Filiale
+ Privatadresse
-
- {|Name / Zeile 1|}:
-
+
+ {|Firma|}:
+
- {|Firmenname / Zeile 2|}:
-
+ {|Abteilung|}:
+
+
+
+ {|Name|}:
+
+
+
+ {|Ansprechpartner|}:
+
{|Postnummer|}:
-
- {|Firmenname / Zeile 3|}:
-
-
-
+
{|Strasse/Hausnummer|}:
@@ -55,7 +60,7 @@ SPDX-License-Identifier: LicenseRef-EGPL-3.1
{|Postfilialnummer|}:
-
+
{|Adresszeile 2|}:
@@ -77,10 +82,6 @@ SPDX-License-Identifier: LicenseRef-EGPL-3.1
-
- {|Ansprechpartner|}:
-
-
{|E-Mail|}:
diff --git a/www/lib/versandarten/dhl.php b/www/lib/versandarten/dhl.php
index ad065d86..9ed5e7ee 100644
--- a/www/lib/versandarten/dhl.php
+++ b/www/lib/versandarten/dhl.php
@@ -102,7 +102,19 @@ class Versandart_dhl extends Versanddienstleister{
switch ($json->addresstype) {
case 0:
$shipment->Receiver->Address = new ReceiverNativeAddress();
- $shipment->Receiver->Address->name2 = $json->name2;
+
+ $shipment->Receiver->name1 = $json->company_name;
+ $shipment->Receiver->Address->name2 = join(
+ ';',
+ array_filter(
+ [
+ $json->contact_name,
+ $json->company_division
+ ],
+ fn(string $item) => !empty(trim($item))
+ )
+ );
+
$shipment->Receiver->Address->streetName = $json->street ?? '';
$shipment->Receiver->Address->streetNumber = $json->streetnumber;
$shipment->Receiver->Address->city = $json->city ?? '';
@@ -127,6 +139,20 @@ class Versandart_dhl extends Versanddienstleister{
$shipment->Receiver->Postfiliale->zip = $json->zip ?? '';
$shipment->Receiver->Postfiliale->Origin = Country::Create($json->country ?? 'DE', $json->state);
break;
+ case 3:
+ $shipment->Receiver->Address = new ReceiverNativeAddress();
+
+ $shipment->Receiver->name1 = $json->name;
+ $shipment->Receiver->Address->name2 = $json->contact_name;
+
+ $shipment->Receiver->Address->streetName = $json->street ?? '';
+ $shipment->Receiver->Address->streetNumber = $json->streetnumber;
+ $shipment->Receiver->Address->city = $json->city ?? '';
+ $shipment->Receiver->Address->zip = $json->zip ?? '';
+ $shipment->Receiver->Address->Origin = Country::Create($json->country ?? 'DE', $json->state);
+ if (isset($json->address2) && !empty($json->address2))
+ $shipment->Receiver->Address->addressAddition[] = $json->address2;
+ break;
}
$shipment->Receiver->Communication = new Communication();
$shipment->Receiver->Communication->email = $json->email;
diff --git a/www/lib/versandarten/sendcloud.php b/www/lib/versandarten/sendcloud.php
index cdda1cce..172a3116 100644
--- a/www/lib/versandarten/sendcloud.php
+++ b/www/lib/versandarten/sendcloud.php
@@ -82,8 +82,18 @@ class Versandart_sendcloud extends Versanddienstleister
$parcel->ShippingMethodId = $json->product;
$parcel->Name = $json->name;
switch ($json->addresstype) {
- case 0:
- $parcel->CompanyName = trim("$json->name2 $json->name3");
+ case 0:
+ $parcel->CompanyName = $json->company_name;
+ $parcel->Name = join(
+ ';',
+ array_filter(
+ [
+ $json->contact_name,
+ $json->company_division
+ ],
+ fn(string $item) => !empty(trim($item))
+ )
+ );
$parcel->Address = $json->street;
$parcel->Address2 = $json->address2;
$parcel->HouseNumber = $json->streetnumber;
@@ -98,6 +108,23 @@ class Versandart_sendcloud extends Versanddienstleister
$parcel->Address = "Postfiliale";
$parcel->HouseNumber = $json->postofficeNumber;
break;
+ case 3:
+ $parcel->Name = join(
+ ';',
+ array_filter(
+ [
+ $json->name,
+ $json->contact_name
+ ],
+ fn(string $item) => !empty(trim($item))
+ )
+ );
+
+ $parcel->Address = $json->street;
+ $parcel->Address2 = $json->address2;
+ $parcel->HouseNumber = $json->streetnumber;
+ break;
+
}
$parcel->Country = $json->country;
$parcel->PostalCode = $json->zip;
@@ -164,4 +191,4 @@ class Versandart_sendcloud extends Versanddienstleister
}
-}
\ No newline at end of file
+}
diff --git a/www/pages/adresse.php b/www/pages/adresse.php
index ca86ff8d..82c3a957 100644
--- a/www/pages/adresse.php
+++ b/www/pages/adresse.php
@@ -780,7 +780,7 @@ class Adresse extends GenAdresse {
}
$Brief->GetAdressstammblatt($id);
- $Brief->displayDocument();
+ $Brief->displayDocument(archive: false);
$this->app->ExitXentral();
}
diff --git a/www/pages/appstore.php b/www/pages/appstore.php
index 6c9c7c89..c118ecaf 100644
--- a/www/pages/appstore.php
+++ b/www/pages/appstore.php
@@ -2628,6 +2628,10 @@ class Appstore {
'Link'=>'index.php?module=onlineshops&action=create&cmd=shopimporter_presta',
'Icon'=>'Icons_dunkel_1.gif',
'Versionen'=>'ALL','install'=>true, 'beta' => false,'kategorie'=>'{|Shop Schnittstelle|}')
+ ,'shopimporter_mirakl'=>array('Bezeichnung'=>'Mirakl',
+ 'Link'=>'index.php?module=onlineshops&action=create&cmd=shopimporter_mirakl',
+ 'Icon'=>'Icons_dunkel_1.gif',
+ 'Versionen'=>'ALL','install'=>true, 'beta' => false,'kategorie'=>'{|Shop Schnittstelle|}')
,'shopimporter_shopify'=>array(
'Bezeichnung'=>'Shopify API Advanced',
'Link'=>'index.php?module=onlineshops&action=create&cmd=shopimporter_shopify',
@@ -3967,7 +3971,6 @@ class Appstore {
}
}
-
if(isset($module['installiert'])) {
foreach($module['installiert'] as $k => $v) {
$moduleInstallKey = $module['installiert'][$k]['key'];
diff --git a/www/pages/artikel.php b/www/pages/artikel.php
index 62986378..1d201002 100644
--- a/www/pages/artikel.php
+++ b/www/pages/artikel.php
@@ -2841,100 +2841,82 @@ class Artikel extends GenArtikel {
return ['status'=>$isOk, 'info'=>$info, 'msg_encoded' => $msg, 'error' => $error];
}
- public function ArtikelShopexport()
- {
- $id = $this->app->Secure->GetGET('id');
- $shop = $this->app->Secure->GetGET('shop');
- $artikel = array($id);
- $artikelshopid = (int)$this->app->Secure->GetGET('artikelshopid');
-
- if($artikelshopid > 0)
- {
- $shop = $this->app->DB->Select("SELECT shop FROM artikel_onlineshops WHERE id = '$artikelshopid' AND artikel = '$id' AND aktiv = 1 LIMIT 1");
- $this->app->User->SetParameter('artikel_shopexport_shop', '');
- }else{
- if($shop=='1'){
- $shop = $this->app->DB->Select("SELECT shop FROM artikel WHERE id='$id' LIMIT 1");
- }
- elseif($shop=='2'){
- $shop = $this->app->DB->Select("SELECT shop2 FROM artikel WHERE id='$id' LIMIT 1");
- }
- elseif($shop=='3'){
- $shop = $this->app->DB->Select("SELECT shop3 FROM artikel WHERE id='$id' LIMIT 1");
- }
- }
-
- $artikelexport = $this->app->DB->Select("SELECT artikelexport FROM shopexport WHERE id='$shop' LIMIT 1");
- $lagerexport = $this->app->DB->Select("SELECT lagerexport FROM shopexport WHERE id='$shop' LIMIT 1");
+ public function ArtikelShopexport() {
+ $id = $this->app->Secure->GetGET('id');
+ $shop = $this->app->Secure->GetGET('shop');
+ $artikel = array($id);
+ $artikelshopid = (int) $this->app->Secure->GetGET('artikelshopid');
- $externenummer = $this->app->DB->Select("SELECT nummer FROM artikelnummer_fremdnummern WHERE artikel = '$id' AND aktiv = 1 AND shopid = '$shop' AND nummer <> '' ORDER BY bezeichnung = 'SHOPID' DESC LIMIT 1");
-
- if($externenummer)
- {
- $extartikelnummer = array($externenummer);
- }else{
- $extartikelnummer = '';
- }
-
- $pageContents = $this->app->remote->RemoteSendArticleList($shop,$artikel,$extartikelnummer);
- $check = strpos($pageContents ,'error:');
- $msg = '';
- if(!empty($pageContents) && is_array($pageContents)) {
- if(!empty($pageContents['status']) && !empty($pageContents['message'])) {
- $msg = $this->app->erp->base64_url_encode(''.$pageContents['message'].'
');
- }
- elseif(isset($pageContents['status']) && !empty($pageContents['message'])) {
- $msg = $this->app->erp->base64_url_encode(''.$pageContents['message'].'
');
- }
- }
- elseif($pageContents=='1') {
- $pageContents='success';
- }
-
- if(empty($msg) && $pageContents!='') {
- $pageContents = " ($pageContents)";
- }
-
- $this->app->erp->LogFile($this->app->DB->real_escape_string('manueller Shopexport Artikel: '.$this->app->DB->Select("SELECT nummer FROM artikel WHERE id = '$id' LIMIT 1").' Shop: '.$shop.' Status: '.$pageContents));
- // keine fehlermeldung vom shop
- if(empty($msg)) {
- $linkToImporterSettings = '';
- if($this->app->erp->RechteVorhanden('onlineshops', 'edit')){
- $url = 'index.php?module=onlineshops&action=edit&id='.$shop;
- $linkToImporterSettings = "Zu den Shopeinstellungen ";
- }
-
- if($check === 0){
- $msg = $this->app->erp->base64_url_encode("Es gab einen Fehler beim Aktualisieren des Artikels im Shop!$pageContents
");
- }
- else if($pageContents == ''){
- if($artikelexport != 1 && $lagerexport != 1){
- $msg = $this->app->erp->base64_url_encode("Der Artikel konnte nicht zum Shop übertragen werden! In den Shopeinstellungen ist festgelegt, dass die Artikelinformation- und Lagerbestandsübertragung nicht erlaubt ist!$pageContents $linkToImporterSettings
");
+ if ($artikelshopid > 0) {
+ $shop = $this->app->DB->Select("SELECT shop FROM artikel_onlineshops WHERE id = '$artikelshopid' AND artikel = '$id' AND aktiv = 1 LIMIT 1");
+ $this->app->User->SetParameter('artikel_shopexport_shop', '');
+ } else {
+ if ($shop == '1') {
+ $shop = $this->app->DB->Select("SELECT shop FROM artikel WHERE id='$id' LIMIT 1");
+ } elseif ($shop == '2') {
+ $shop = $this->app->DB->Select("SELECT shop2 FROM artikel WHERE id='$id' LIMIT 1");
+ } elseif ($shop == '3') {
+ $shop = $this->app->DB->Select("SELECT shop3 FROM artikel WHERE id='$id' LIMIT 1");
+ }
}
- else{
- if($pageContents === '0' || $pageContents === 0){
- $msg = $this->app->erp->base64_url_encode("Es gab einen Fehler beim Aktualisieren des Artikels im Shop! Stellen Sie sicher, dass die Zugangsdaten und URL's korrekt sind! Möglicherweise kein Artikelpreis hinterlegt
");
- }else{
- $msg = $this->app->erp->base64_url_encode("Es gab einen Fehler beim Aktualisieren des Artikels im Shop! Stellen Sie sicher, dass die Zugangsdaten und URL's korrekt sind!$pageContents $linkToImporterSettings
");
- }
- }
- }
- else{
- if($artikelexport != 1 && $lagerexport == 1){
- $msg = $this->app->erp->base64_url_encode("Es wurde nur der Lagerbestand (nicht die Artikelinfos entsprechend der Einstellungen) im Shop aktualisiert!$pageContents $linkToImporterSettings
");
- }
- else if($lagerexport != 1 && $artikelexport == 1){
- $msg = $this->app->erp->base64_url_encode("Es wurde nur der Artikel (nicht der Lagerbestand entsprechend der Einstellungen) im Shop aktualisiert!$pageContents $linkToImporterSettings
");
- }
- else{
- $msg = $this->app->erp->base64_url_encode("Der Artikel wurde im Shop aktualisiert!$pageContents
");
- }
- }
- }
- $this->app->erp->LagerSync($artikel);
- $this->app->Location->execute("index.php?module=artikel&action=edit&id=$id&msg=$msg#tabs-4");
- }
+ $artikelexport = $this->app->DB->Select("SELECT artikelexport FROM shopexport WHERE id='$shop' LIMIT 1");
+ $lagerexport = $this->app->DB->Select("SELECT lagerexport FROM shopexport WHERE id='$shop' LIMIT 1");
+
+ $externenummer = $this->app->DB->Select("SELECT nummer FROM artikelnummer_fremdnummern WHERE artikel = '$id' AND aktiv = 1 AND shopid = '$shop' AND nummer <> '' ORDER BY bezeichnung = 'SHOPID' DESC LIMIT 1");
+
+ if ($externenummer) {
+ $extartikelnummer = array($externenummer);
+ } else {
+ $extartikelnummer = '';
+ }
+
+ $remote_result = $this->app->remote->RemoteSendArticleList($shop, $artikel, $extartikelnummer);
+
+ if (is_array($remote_result)) {
+ $remote_status = $remote_result['status'];
+ $remote_message = $remote_result['message'];
+ } else if (is_numeric($remote_result)) {
+ if ($remote_result == 1) {
+ $remote_status = true;
+ } else {
+ $remote_status = false;
+ $remote_message = "Der Artikel konnte nicht zum Shop übertragen werden!";
+ }
+ } else if ($remote_result === null) {
+ $remote_status = false;
+ $remote_message = "Keine Aktion durchgeführt";
+ } else {
+ $remote_message = $remote_result;
+ if (strpos((string) $remote_result, 'error:') === 0) {
+ $remote_status = false;
+ } else {
+ $remote_status = true;
+ }
+ }
+
+ if ($remote_status) {
+ $msg = $this->app->erp->base64_url_encode('' . $remote_message . '
');
+ } else {
+ $msg = $this->app->erp->base64_url_encode('' . $remote_message . '
');
+ }
+
+ $this->app->erp->LogFile($this->app->DB->real_escape_string('manueller Shopexport Artikel: '.$this->app->DB->Select("SELECT nummer FROM artikel WHERE id = '$id' LIMIT 1").' Shop: '.$shop.' Status: '.((int) $remote_status)), $remote_message);
+
+ // keine fehlermeldung vom shop
+ if ($remote_status) {
+ $linkToImporterSettings = '';
+ if ($this->app->erp->RechteVorhanden('onlineshops', 'edit')) {
+ $url = 'index.php?module=onlineshops&action=edit&id=' . $shop;
+ $linkToImporterSettings = "Zu den Shopeinstellungen ";
+ }
+ }
+
+ $this->app->erp->LagerSync($artikel);
+
+ $this->app->Location->execute("index.php?module=artikel&action=edit&id=$id&msg=$msg#tabs-4");
+ }
+
public function ArtikelShopexportFiles()
{
@@ -7200,6 +7182,9 @@ class Artikel extends GenArtikel {
if ($tmp[0]['matrixprodukt']==1) {
$this->app->erp->MenuEintrag("index.php?module=matrixprodukt&action=artikel&id=$id", 'Matrixprodukt');
}
+ $this->app->erp->MenuEintrag("index.php?module=artikeltexte&action=list&artikel=$id",'Übersetzung');
+
+ $this->app->erp->MenuEintrag("index.php?module=artikel&action=baum&id=$id",'Artikelbaum');
if($rabatt!='1'){
$this->app->erp->MenuEintrag("index.php?module=artikel&action=einkauf&id=$id",'Einkauf');
@@ -7261,7 +7246,7 @@ class Artikel extends GenArtikel {
}
$this->app->erp->MenuEintrag('index.php?module=artikel&action=list','Zurück zur Übersicht');
- $this->app->erp->InsertMenuAfter("index.php?module=artikel&action=baum&id=$id",'Artikelbaum','artikel','eigenschaften');
+
}
}
$this->app->erp->MenuEintrag('index.php?module=artikel&action=create','Neuen Artikel anlegen');
@@ -8432,7 +8417,7 @@ padding: 10px;\">
FROM `datei_stichwoerter` AS `ds`
INNER JOIN `datei_version` AS `dv` ON dv.datei = ds.datei
INNER JOIN `datei` AS `d` ON dv.datei = d.id AND IFNULL(d.geloescht, 0) = 0
- WHERE ds.objekt LIKE 'artikel' AND ds.parameter = '%d'
+ WHERE ds.objekt LIKE 'artikel' AND ds.parameter = '%d' AND d.geloescht = 0
AND
(
ds.subjekt like 'Shopbild'
diff --git a/www/pages/artikeltexte.php b/www/pages/artikeltexte.php
new file mode 100644
index 00000000..ceb89e4a
--- /dev/null
+++ b/www/pages/artikeltexte.php
@@ -0,0 +1,289 @@
+app = $app;
+ if ($intern)
+ return;
+
+ $this->app->ActionHandlerInit($this);
+ $this->app->ActionHandler("list", "artikel_texte_list");
+ $this->app->ActionHandler("create", "artikel_texte_edit"); // This automatically adds a "New" button
+ $this->app->ActionHandler("edit", "artikel_texte_edit");
+ $this->app->ActionHandler("delete", "artikel_texte_delete");
+ $this->app->DefaultActionHandler("list");
+ $this->app->ActionHandlerListen($app);
+ }
+
+ public function Install() {
+ /* Fill out manually later */
+ }
+
+ static function TableSearch(&$app, $name, $erlaubtevars) {
+ switch ($name) {
+ case "artikel_texte_list":
+ $allowed['artikel_texte_list'] = array('list');
+ $heading = array('','','Nummer','Artikel','Sprache', 'Aktiv', 'Name', 'Kurztext', 'Beschreibung', 'Beschreibung online', 'Meta title', 'Meta description', 'Meta keywords', 'Katalogartikel', 'Katalogbezeichnung', 'Katalogtext', 'Shop', 'Menü');
+ $width = array('1%','1%','1%'); // Fill out manually later
+
+ $artikel = $app->User->GetParameter('artikeltexte_artikel');
+
+ // columns that are aligned right (numbers etc)
+ // $alignright = array(4,5,6,7,8);
+
+ $findcols = array('a.id','a.id','art.nummer', 'art.name_de', 'a.sprache', 'a.aktiv', 'a.name', 'a.kurztext', 'a.beschreibung', 'a.beschreibung_online', 'a.meta_title', 'a.meta_description', 'a.meta_keywords', 'a.katalogartikel', 'a.katalog_bezeichnung', 'a.katalog_text', 'a.shop' );
+ $searchsql = array('a.artikel', 'a.sprache', 'a.name', 'a.kurztext', 'a.beschreibung', 'a.beschreibung_online', 'a.meta_title', 'a.meta_description', 'a.meta_keywords', 'a.katalog_bezeichnung', 'a.katalog_text');
+
+ $defaultorder = 1;
+ $defaultorderdesc = 0;
+ $aligncenter = array();
+ $alignright = array();
+ $numbercols = array();
+ $sumcol = array();
+
+ $dropnbox = "' ' AS `open`, CONCAT(' ') AS `auswahl`";
+
+// $moreinfo = true; // Allow drop down details
+// $moreinfoaction = "lieferschein"; // specify suffix for minidetail-URL to allow different minidetails
+// $mencol = 11; // Set id col for moredata/menu
+
+ $menu = "";
+
+ $sql = "
+ SELECT SQL_CALC_FOUND_ROWS a.id, $dropnbox,
+ art.nummer,
+ art.name_de,
+ a.sprache,
+ a.aktiv,
+ a.name,
+ a.kurztext,
+ a.beschreibung,
+ a.beschreibung_online,
+ a.meta_title,
+ a.meta_description,
+ a.meta_keywords,
+ a.katalogartikel,
+ a.katalog_bezeichnung,
+ a.katalog_text,
+ shopexport.bezeichnung as shop,
+ a.id FROM artikel_texte a
+ INNER JOIN artikel art ON art.id = a.artikel
+ LEFT JOIN shopexport ON shopexport.id = a.shop
+ ";
+
+ $where = "1";
+
+ if ($artikel) {
+ $where .= " AND a.artikel = '".$artikel."'";
+ }
+
+ $count = "SELECT count(DISTINCT id) FROM artikel_texte a WHERE $where";
+// $groupby = "";
+
+ break;
+ }
+
+ $erg = false;
+
+ foreach ($erlaubtevars as $k => $v) {
+ if (isset($$v)) {
+ $erg[$v] = $$v;
+ }
+ }
+ return $erg;
+ }
+
+ function artikel_texte_list() {
+
+ $artikel = $this->app->Secure->GetGET('artikel');
+ if ($artikel) {
+ $this->app->erp->MenuEintrag("index.php?module=artikeltexte&action=create&artikel=".$artikel, "Neu anlegen");
+ $this->app->erp->MenuEintrag("index.php?module=artikel&action=edit&id=".$artikel."#tabs-2", "Zurück");
+ }
+
+ $this->app->erp->MenuEintrag("index.php?module=artikeltexte&action=list&artikel=".$artikel, "Übersicht");
+
+ $this->app->User->SetParameter('artikeltexte_artikel', $artikel);
+
+ $this->app->YUI->TableSearch('TAB1', 'artikel_texte_list', "show", "", "", basename(__FILE__), __CLASS__);
+ $this->app->Tpl->Parse('PAGE', "artikeltexte_list.tpl");
+ }
+
+ public function artikel_texte_delete() {
+ $id = (int) $this->app->Secure->GetGET('id');
+ $artikel = $this->app->DB->Select("SELECT artikel FROM `artikel_texte` WHERE `id` = '{$id}'");
+ $this->app->DB->Delete("DELETE FROM `artikel_texte` WHERE `id` = '{$id}'");
+ $msg = $this->app->erp->base64_url_encode("Der Eintrag wurde gelöscht.
");
+ header("Location: index.php?module=artikeltexte&action=list&artikel=".$artikel."&msg=".$msg);
+ }
+
+ /*
+ * Edit artikel_texte item
+ * If id is empty, create a new one
+ */
+
+ function artikel_texte_edit() {
+ $id = $this->app->Secure->GetGET('id');
+ $artikel = $this->app->Secure->GetGET('artikel');
+ // Check if other users are editing this id
+/* if($this->app->erp->DisableModul('artikel_texte',$id))
+ {
+ return;
+ } */
+
+ $this->app->Tpl->Set('ID', $id);
+
+ $this->app->erp->MenuEintrag("index.php?module=artikeltexte&action=edit&id=$id", "Details");
+
+ $id = $this->app->Secure->GetGET('id');
+ $input = $this->GetInput();
+ $submit = $this->app->Secure->GetPOST('submit');
+
+ if (empty($id)) {
+ // New item
+ $id = 'NULL';
+ $input['artikel'] = $artikel;
+ $input['aktiv'] = 1;
+ }
+
+ if ($submit != '' || $id == 'NULL')
+ {
+
+ // Write to database
+
+ // Add checks here
+
+ // $input['projekt'] = $this->app->erp->ReplaceProjekt(true,$input['projekt'],true); // Parameters: Target db?, value, from form?
+
+ $columns = "id, ";
+ $values = "$id, ";
+ $update = "";
+
+ $fix = "";
+
+ foreach ($input as $key => $value) {
+ $columns = $columns.$fix.$key;
+ $values = $values.$fix."'".$value."'";
+ $update = $update.$fix.$key." = '$value'";
+
+ $fix = ", ";
+ }
+
+// echo($columns." ");
+// echo($values." ");
+// echo($update." ");
+
+ $sql = "INSERT INTO artikel_texte (".$columns.") VALUES (".$values.") ON DUPLICATE KEY UPDATE ".$update;
+
+// echo($sql);
+
+ $this->app->DB->Update($sql);
+
+ if ($id == 'NULL') {
+ $msg = $this->app->erp->base64_url_encode("Das Element wurde erfolgreich angelegt.
");
+ header("Location: index.php?module=artikeltexte&action=list&artikel=".$artikel."&msg=".$msg);
+ } else {
+ $this->app->Tpl->addMessage('success', 'Die Einstellungen wurden erfolgreich übernommen.');
+ }
+ }
+
+
+ // Load values again from database
+ if ($id != 'NULL') {
+
+ $dropnbox = "' ' AS `open`, CONCAT(' ') AS `auswahl`";
+ $result = $this->app->DB->SelectArr("
+ SELECT SQL_CALC_FOUND_ROWS
+ a.id,
+ $dropnbox,
+ art.name_de,
+ a.sprache,
+ a.aktiv,
+ a.name,
+ a.kurztext,
+ a.beschreibung,
+ a.beschreibung_online,
+ a.meta_title,
+ a.meta_description,
+ a.meta_keywords,
+ a.katalogartikel,
+ a.katalog_bezeichnung,
+ a.katalog_text,
+ a.shop,
+ a.id,
+ a.artikel
+ FROM
+ artikel_texte a
+ INNER JOIN artikel art ON a.artikel = art.id
+ WHERE a.id=$id
+ ");
+
+
+ foreach ($result[0] as $key => $value) {
+ $this->app->Tpl->Set(strtoupper($key), $value);
+ }
+
+ if (!empty($result)) {
+ $artikel_texte_from_db = $result[0];
+ } else {
+ return;
+ }
+ }
+
+ if ($artikel_texte_from_db['artikel']) {
+ $this->app->erp->MenuEintrag("index.php?module=artikeltexte&action=create&artikel=".$artikel_texte_from_db['artikel'], "Neu anlegen");
+ $this->app->erp->MenuEintrag("index.php?module=artikeltexte&action=list&artikel=".$artikel_texte_from_db['artikel'], "Zurück");
+ }
+
+
+ /*
+ * Add displayed items later
+ *
+ $this->app->Tpl->Add('EMAIL', $email);
+ $this->app->Tpl->Add('ANGEZEIGTERNAME', $angezeigtername);
+
+ $this->app->YUI->AutoComplete("artikel", "artikelnummer");
+
+ */
+
+ $this->app->Tpl->Set('AKTIV', $artikel_texte_from_db['aktiv']?'checked':'');
+ $this->app->Tpl->Set('KATALOGARTIKEL', $artikel_texte_from_db['katalogartikel']?'checked':'');
+
+ $this->app->YUI->AutoComplete('shop','shopnameid');
+
+ $sprachenOptions = $this->app->erp->GetSprachenSelect();
+ $this->app->Tpl->Set('SPRACHE', $this->app->erp->GetSelectAsso($sprachenOptions, $artikel_texte_from_db['sprache']));
+ $this->app->Tpl->Parse('PAGE', "artikeltexte_edit.tpl");
+ }
+
+ /**
+ * Get all paramters from html form and save into $input
+ */
+ public function GetInput(): array {
+ $input = array();
+ //$input['EMAIL'] = $this->app->Secure->GetPOST('email');
+
+ $input['sprache'] = $this->app->Secure->GetPOST('sprache');
+ $input['name'] = $this->app->Secure->GetPOST('name');
+ $input['kurztext'] = $this->app->Secure->GetPOST('kurztext');
+ $input['beschreibung'] = $this->app->Secure->GetPOST('beschreibung');
+ $input['beschreibung_online'] = $this->app->Secure->GetPOST('beschreibung_online');
+ $input['meta_title'] = $this->app->Secure->GetPOST('meta_title');
+ $input['meta_description'] = $this->app->Secure->GetPOST('meta_description');
+ $input['meta_keywords'] = $this->app->Secure->GetPOST('meta_keywords');
+ $input['katalogartikel'] = $this->app->Secure->GetPOST('katalogartikel')?'1':'0';
+ $input['katalog_bezeichnung'] = $this->app->Secure->GetPOST('katalog_bezeichnung');
+ $input['katalog_text'] = $this->app->Secure->GetPOST('katalog_text');
+ $input['shop'] = $this->app->Secure->GetPOST('shop');
+ $input['aktiv'] = $this->app->Secure->GetPOST('aktiv')?'1':'0';
+
+ return $input;
+ }
+ }
diff --git a/www/pages/bundesstaaten.php b/www/pages/bundesstaaten.php
index c4d75973..1437a176 100644
--- a/www/pages/bundesstaaten.php
+++ b/www/pages/bundesstaaten.php
@@ -1,408 +1,410 @@
-";
- $menu .= " ";
- $menu .= "";
- $menu .= '';
- $menu .= " Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">";
- $menu .= " ";
- $menu .= '';
- $menu .= " Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">";
- $menu .= " ";
- $menu .= " ";
- $menu .= " ";
- $menu .= "";
-
- $finaktiv = $app->YUI->TableSearchFilter($name, 5, 'inaktiv', '0', 0, 'checkbox');
- $subwhere = '';
- if($finaktiv == 0){
- $subwhere .= ' AND b.aktiv = 1';
- }
-
- $where = " b.id > 0".$subwhere;
-
- $sql = "SELECT SQL_CALC_FOUND_ROWS b.id, l.bezeichnung_de, b.iso, b.bundesstaat, if(b.aktiv, 'ja', '-') as aktiv, b.id FROM bundesstaaten b LEFT JOIN laender l ON b.land = l.iso";
-
- $count = "SELECT count(b.id) FROM bundesstaaten b WHERE $where";
- break;
-
- }
-
- $erg = [];
-
- foreach($erlaubtevars as $k => $v)
- {
- if(isset($$v))$erg[$v] = $$v;
- }
- return $erg;
- }
-
-
- function __construct($app, $intern = false) {
- $this->app=$app;
- if($intern)return;
- $this->app->ActionHandlerInit($this);
-
- // ab hier alle Action Handler definieren die das Modul hat
- $this->app->ActionHandler("list", "BundesstaatenList");
- $this->app->ActionHandler("edit", "BundesstaatenEdit");
- $this->app->ActionHandler("save", "BundesstaatenSave");
- $this->app->ActionHandler("delete", "BundesstaatenDelete");
-
- $this->app->ActionHandlerListen($app);
-
- $this->Install();
-
- }
-
- function Install(){
- $this->app->erp->CheckTable("bundesstaaten");
- $this->app->erp->CheckColumn("id", "int(11)", "bundesstaaten", "NOT NULL AUTO_INCREMENT");
- $this->app->erp->CheckColumn("land", "varchar(255)", "bundesstaaten", "NOT NULL");
- $this->app->erp->CheckColumn("iso", "varchar(255)", "bundesstaaten", "NOT NULL");
- $this->app->erp->CheckColumn("bundesstaat", "varchar(255)", "bundesstaaten", "NOT NULL");
- $this->app->erp->CheckColumn("aktiv", "int(11)", "bundesstaaten", "NOT NULL DEFAULT 0");
- }
-
- /**
- * @param $target
- * @param $landid
- * @param $bundeslandid
- * @param string $valueland
- * @param string $valuebundesland
- * @param bool $disabled
- */
- function BundeslaenderSelect($target, $landid, $bundeslandid, $valueland = '', $valuebundesland = '', $disabled = false)
- {
- if($valueland == '')$valueland = $this->app->erp->Firmendaten('land');
- $arr = $this->app->DB->SelectArr("SELECT * FROM bundesstaaten WHERE land <> '' AND iso <> '' AND ( aktiv = 1 OR (land = '$valueland' AND iso = '$valuebundesland')) ORDER BY land, bundesstaat");
- $this->app->Tpl->Add($target,' ');
- if($arr)
- {
- foreach($arr as $i => $v)
- {
- if($v['land'] == $valueland)
- {
- $this->app->Tpl->Add($target,''.htmlspecialchars($v['bundesstaat']).' ');
- }
- }
- }
- $this->app->Tpl->Add($target,' ');
- $this->app->Tpl->Add($target,'');
- }
-
- function BundesstaatenMenu()
- {
-
- $this->app->erp->MenuEintrag("index.php?module=bundesstaaten&action=list","Zurück zur Übersicht");
- $this->app->erp->MenuEintrag("index.php?module=bundesstaaten&action=list","Details");
- $this->app->erp->MenuEintrag("BundesstaatenEdit(0)","Neuer Eintrag");
- }
-
- /**
- * @param string $needle
- * @param $haystack
- * @param bool $strict
- * @return bool
- */
- function in_array_r($needle, $haystack, $strict = false){
- foreach($haystack as $item){
- if(($strict ? $item === $needle : $item == $needle) || (is_array($item) && $this->in_array_r($needle, $item, $strict))){
- return true;
- }
- }
-
- return false;
- }
-
- function BundesstaatenList()
- {
- $this->BundesstaatenMenu();
- $this->app->Tpl->Set("KURZUEBERSCHRIFT","Bundesstaaten");
-
- $bundesstaatende = $this->app->erp->GetSelectStaatenliste('DE');
- $bundesstaatendedb = $this->app->DB->SelectArr("SELECT bundesstaat, iso FROM bundesstaaten WHERE land = 'DE'");
- $fehlende = array();
- foreach($bundesstaatende as $key=>$value){
- if($this->in_array_r($value,$bundesstaatendedb)){
- }else{
- $fehlende[$key] = $value;
- }
- }
-
- $bundesstaatenat = $this->app->erp->GetSelectStaatenliste('AT');
- $bundesstaatenatdb = $this->app->DB->SelectArr("SELECT bundesstaat, iso FROM bundesstaaten WHERE land = 'AT'");
- $fehlenat = array();
- foreach($bundesstaatenat as $key=>$value){
- if($this->in_array_r($value,$bundesstaatenatdb)){
- }else{
- $fehlenat[$key] = $value;
- }
- }
-
- $bundesstaatench = $this->app->erp->GetSelectStaatenliste('CH');
- $bundesstaatenchdb = $this->app->DB->SelectArr("SELECT bundesstaat, iso FROM bundesstaaten WHERE land = 'CH'");
- $fehlench = array();
- foreach($bundesstaatench as $key=>$value){
- if($this->in_array_r($value,$bundesstaatenchdb)){
- }else{
- $fehlench[$key] = $value;
- }
- }
-
- $bundesstaatenus = $this->app->erp->GetSelectStaatenliste('US');
- $bundesstaatenusdb = $this->app->DB->SelectArr("SELECT bundesstaat, iso FROM bundesstaaten WHERE land = 'US'");
- $fehlenus = array();
- foreach($bundesstaatenus as $key=>$value){
- if($this->in_array_r($value,$bundesstaatenusdb)){
- }else{
- $fehlenus[$key] = $value;
- }
- }
-
- $bundesstaatenca = $this->app->erp->GetSelectStaatenliste('CA');
- $bundesstaatencadb = $this->app->DB->SelectArr("SELECT bundesstaat, iso FROM bundesstaaten WHERE land = 'CA'");
- $fehlenca = array();
- foreach($bundesstaatenca as $key=>$value){
- if($this->in_array_r($value,$bundesstaatencadb)){
- }else{
- $fehlenca[$key] = $value;
- }
- }
-
- $anzahlfehlen = (!empty($fehlende)?count($fehlende):0) + (!empty($fehlenat)?count($fehlenat):0) + (!empty($fehlench)?count($fehlench):0) + (!empty($fehlenus)?count($fehlenus):0) + (!empty($fehlenca)?count($fehlenca):0);
-
-
- if($anzahlfehlen > 0){
- if($anzahlfehlen == 1){
- $info = "Es steht ".$anzahlfehlen." neuer Bundesstaaten Eintrag in Xentral zur Verfügung.";
- }else{
- $info = "Es stehen ".$anzahlfehlen." neue Bundesstaaten Einträge in Xentral zur Verfügung.";
- }
- $nachladebutton = " ";
- $info .= $nachladebutton;
- $this->app->Tpl->Set('MESSAGE',"$info
");
- }
-
- $nachladen = $this->app->Secure->GetPOST("nachladen");
- if($nachladen != ""){
- if((!empty($fehlende)?count($fehlende):0) > 0){
- foreach($fehlende as $key=>$value){
- $this->app->DB->Insert("INSERT INTO bundesstaaten (land, iso, bundesstaat, aktiv) VALUES ('DE', '$key', '$value', 1)");
- }
- }
-
- if((!empty($fehlenat)?count($fehlenat):0) > 0){
- foreach($fehlenat as $key=>$value){
- $this->app->DB->Insert("INSERT INTO bundesstaaten (land, iso, bundesstaat, aktiv) VALUES ('AT', '$key', '$value', 1)");
- }
- }
-
- if((!empty($fehlench)?count($fehlench):0) > 0){
- foreach($fehlench as $key=>$value){
- $this->app->DB->Insert("INSERT INTO bundesstaaten (land, iso, bundesstaat, aktiv) VALUES ('CH', '$key', '$value', 1)");
- }
- }
-
- if((!empty($fehlenus)?count($fehlenus):0) > 0){
- foreach($fehlenus as $key=>$value){
- $this->app->DB->Insert("INSERT INTO bundesstaaten (land, iso, bundesstaat, aktiv) VALUES ('US', '$key', '$value', 1)");
- }
- }
-
- if((!empty($fehlenca)?count($fehlenca):0) > 0){
- foreach($fehlenca as $key=>$value){
- $this->app->DB->Insert("INSERT INTO bundesstaaten (land, iso, bundesstaat, aktiv) VALUES ('CA', '$key', '$value', 1)");
- }
- }
-
- header("Location:index.php?module=bundesstaaten&action=list");
- exit;
- }
-
- $laenderanzahl = $this->app->DB->Select("SELECT COUNT(id) FROM laender");
- //if($laenderanzahl <= 0){
- $select = '';
- $laender = $this->app->erp->GetSelectLaenderliste();
- foreach($laender as $key=>$value){
- if(trim($key) != "" && trim($key) != "0"){
- $select .= "".htmlspecialchars($value)." ";
- }
-
- }
- //}else{
- //$laender = $this->app->DB->SelectArr("SELECT iso, bezeichnung_de FROM laender");
- //foreach($laender as $key=>$value){
- //$select .= "".$value['bezeichnung_de']." ";
- //}
-
- $this->app->Tpl->Add("LAENDER", $select);
- //}
-
- $this->app->YUI->TableSearch('TAB1','bundesstaaten_list', "show","","",basename(__FILE__), __CLASS__);
- $this->app->Tpl->Parse("PAGE","bundesstaaten_list.tpl");
- }
-
- function BundesstaatenEdit()
- {
- if($this->app->Secure->GetGET('cmd')=='get'){
- $id = (int)$this->app->Secure->GetPOST('id');
-
- $data = $this->app->DB->SelectArr("SELECT b.id, b.land, b.iso, b.bundesstaat, b.aktiv FROM bundesstaaten b WHERE b.id = '$id' LIMIT 1");
-
- if($data){
- $data = reset($data);
-
- }else{
- $data['id'] = 0;
- $data['land'] = '';
- $data['iso'] = '';
- $data['bundesstaat'] = '';
- $data['aktiv'] = 1;
-
- }
- echo json_encode($data);
- exit;
- }
-
- $this->app->Tpl->Parse('PAGE', "bundesstaaten_list.tpl");
- }
-
- function BundesstaatenSave()
- {
- $id = (int)$this->app->Secure->GetPOST('id');
- $land = trim($this->app->Secure->GetPOST('land'));
- $iso = trim($this->app->Secure->GetPOST('iso'));
- $bundesstaat = trim($this->app->Secure->GetPOST('bundesstaat'));
- $aktiv = $this->app->Secure->GetPOST('aktiv');
-
- $error = "";
-
- if($land == ""){
- $error .= "Bitte Land ausfüllen\n";
- }
-
- if($iso == ""){
- $error .= "Bitte ISO-Code ausfüllen"."\n";
- }
-
- if(strlen($iso) > 2){
- $error .= "Bitte 2-stelligen ISO-Code für den Bundesstaat ausfüllen"."\n";
- }
-
- if($bundesstaat == ""){
- $error .= "Bitte Bundesstaat ausfüllen"."\n";
- }
-
- if($land != "" && $bundesstaat != ""){
- $isovorhanden = $this->app->DB->Select("SELECT id FROM bundesstaaten WHERE land = '$land' AND iso = '$iso' AND id != '$id' LIMIT 1");
- if($isovorhanden != ""){
- $error .= "Es gibt diesen ISO-Code bereits für dieses Land"."\n";
- }else{
- $schonvorhanden = $this->app->DB->Select("SELECT id FROM bundesstaaten WHERE land = '$land' AND iso = '$iso' AND bundesstaat = '$bundesstaat' AND id != '$id' LIMIT 1");
- if($schonvorhanden != ""){
- $error .= "Diesen Eintrag gibt es bereits"."\n";
- }
- }
-
- }
-
- if($error == ""){
- if($id){
- $this->app->DB->Update("UPDATE bundesstaaten SET land = '$land', iso = '$iso', bundesstaat = '$bundesstaat', aktiv = '$aktiv' WHERE id = '$id'");
-
- echo json_encode(array('status'=>1));
- exit;
- }else{
- $this->app->DB->Insert("INSERT INTO bundesstaaten (land, iso, bundesstaat, aktiv) VALUES ('$land', '$iso', '$bundesstaat', '$aktiv')");
-
- echo json_encode(array('status'=>1));
- exit;
-
- }
- }else{
- echo json_encode(array('status'=>0,'statusText'=>$error));
- exit;
-
- }
-
- }
-
- function BundesstaatenDelete()
- {
- $id = (int) $this->app->Secure->GetPOST('id');
- if($id)
- $this->app->DB->Update("DELETE FROM bundesstaaten WHERE id = '$id'");
-
- echo json_encode(array('status'=>1));
- exit;
-
- }
-
-}
+";
+ $menu .= "";
+ $menu .= "";
+ $menu .= '';
+ $menu .= " Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">";
+ $menu .= " ";
+ $menu .= '';
+ $menu .= " Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">";
+ $menu .= " ";
+ $menu .= " ";
+ $menu .= " ";
+ $menu .= "";
+
+ $finaktiv = $app->YUI->TableSearchFilter($name, 5, 'inaktiv', '0', 0, 'checkbox');
+ $subwhere = '';
+ if($finaktiv == 0){
+ $subwhere .= ' AND b.aktiv = 1';
+ }
+
+ $where = " b.id > 0".$subwhere;
+
+ $sql = "SELECT SQL_CALC_FOUND_ROWS b.id, l.bezeichnung_de, b.iso, b.bundesstaat, if(b.aktiv, 'ja', '-') as aktiv, b.id FROM bundesstaaten b LEFT JOIN laender l ON b.land = l.iso";
+
+ $count = "SELECT count(b.id) FROM bundesstaaten b WHERE $where";
+ break;
+
+ }
+
+ $erg = [];
+
+ foreach($erlaubtevars as $k => $v)
+ {
+ if(isset($$v))$erg[$v] = $$v;
+ }
+ return $erg;
+ }
+
+
+ function __construct($app, $intern = false) {
+ $this->app=$app;
+ if($intern)return;
+ $this->app->ActionHandlerInit($this);
+
+ // ab hier alle Action Handler definieren die das Modul hat
+ $this->app->ActionHandler("list", "BundesstaatenList");
+ $this->app->ActionHandler("edit", "BundesstaatenEdit");
+ $this->app->ActionHandler("save", "BundesstaatenSave");
+ $this->app->ActionHandler("delete", "BundesstaatenDelete");
+
+ $this->app->ActionHandlerListen($app);
+
+ $this->Install();
+
+ }
+
+ function Install(){
+ $this->app->erp->CheckTable("bundesstaaten");
+ $this->app->erp->CheckColumn("id", "int(11)", "bundesstaaten", "NOT NULL AUTO_INCREMENT");
+ $this->app->erp->CheckColumn("land", "varchar(255)", "bundesstaaten", "NOT NULL");
+ $this->app->erp->CheckColumn("iso", "varchar(255)", "bundesstaaten", "NOT NULL");
+ $this->app->erp->CheckColumn("bundesstaat", "varchar(255)", "bundesstaaten", "NOT NULL");
+ $this->app->erp->CheckColumn("aktiv", "int(11)", "bundesstaaten", "NOT NULL DEFAULT 0");
+ }
+
+ /**
+ * @param $target
+ * @param $landid
+ * @param $bundeslandid
+ * @param string $valueland
+ * @param string $valuebundesland
+ * @param bool $disabled
+ */
+ function BundeslaenderSelect($target, $landid, $bundeslandid, $valueland = '', $valuebundesland = '', $disabled = false)
+ {
+ if($valueland == '')$valueland = $this->app->erp->Firmendaten('land');
+ $arr = $this->app->DB->SelectArr("SELECT * FROM bundesstaaten WHERE land <> '' AND iso <> '' AND ( aktiv = 1 OR (land = '$valueland' AND iso = '$valuebundesland')) ORDER BY land, bundesstaat");
+ $this->app->Tpl->Add($target,' ');
+ if($arr)
+ {
+ foreach($arr as $i => $v)
+ {
+ if($v['land'] == $valueland)
+ {
+ $this->app->Tpl->Add($target,''.htmlspecialchars($v['bundesstaat']).' ');
+ }
+ }
+ }
+ $this->app->Tpl->Add($target,' ');
+ $this->app->Tpl->Add($target,'');
+ }
+
+ function BundesstaatenMenu()
+ {
+
+ $this->app->erp->MenuEintrag("index.php?module=bundesstaaten&action=list","Zurück zur Übersicht");
+ $this->app->erp->MenuEintrag("index.php?module=bundesstaaten&action=list","Details");
+ $this->app->erp->MenuEintrag("BundesstaatenEdit(0)","Neuer Eintrag");
+ }
+
+ /**
+ * @param string $needle
+ * @param $haystack
+ * @param bool $strict
+ * @return bool
+ */
+ function in_array_r($needle, $haystack, $strict = false){
+ foreach($haystack as $item){
+ if(($strict ? $item === $needle : $item == $needle) || (is_array($item) && $this->in_array_r($needle, $item, $strict))){
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ function BundesstaatenList()
+ {
+ $this->BundesstaatenMenu();
+ $this->app->Tpl->Set("KURZUEBERSCHRIFT","Bundesstaaten");
+
+ $bundesstaatende = $this->app->erp->GetSelectStaatenliste('DE');
+ $bundesstaatendedb = $this->app->DB->SelectArr("SELECT bundesstaat, iso FROM bundesstaaten WHERE land = 'DE'");
+ $fehlende = array();
+ foreach($bundesstaatende as $key=>$value){
+ if($this->in_array_r($value,$bundesstaatendedb)){
+ }else{
+ $fehlende[$key] = $value;
+ }
+ }
+
+ $bundesstaatenat = $this->app->erp->GetSelectStaatenliste('AT');
+ $bundesstaatenatdb = $this->app->DB->SelectArr("SELECT bundesstaat, iso FROM bundesstaaten WHERE land = 'AT'");
+ $fehlenat = array();
+ foreach($bundesstaatenat as $key=>$value){
+ if($this->in_array_r($value,$bundesstaatenatdb)){
+ }else{
+ $fehlenat[$key] = $value;
+ }
+ }
+
+ $bundesstaatench = $this->app->erp->GetSelectStaatenliste('CH');
+ $bundesstaatenchdb = $this->app->DB->SelectArr("SELECT bundesstaat, iso FROM bundesstaaten WHERE land = 'CH'");
+ $fehlench = array();
+ foreach($bundesstaatench as $key=>$value){
+ if($this->in_array_r($value,$bundesstaatenchdb)){
+ }else{
+ $fehlench[$key] = $value;
+ }
+ }
+
+ $bundesstaatenus = $this->app->erp->GetSelectStaatenliste('US');
+ $bundesstaatenusdb = $this->app->DB->SelectArr("SELECT bundesstaat, iso FROM bundesstaaten WHERE land = 'US'");
+ $fehlenus = array();
+ foreach($bundesstaatenus as $key=>$value){
+ if($this->in_array_r($value,$bundesstaatenusdb)){
+ }else{
+ $fehlenus[$key] = $value;
+ }
+ }
+
+ $bundesstaatenca = $this->app->erp->GetSelectStaatenliste('CA');
+ $bundesstaatencadb = $this->app->DB->SelectArr("SELECT bundesstaat, iso FROM bundesstaaten WHERE land = 'CA'");
+ $fehlenca = array();
+ foreach($bundesstaatenca as $key=>$value){
+ if($this->in_array_r($value,$bundesstaatencadb)){
+ }else{
+ $fehlenca[$key] = $value;
+ }
+ }
+
+ $anzahlfehlen = (!empty($fehlende)?count($fehlende):0) + (!empty($fehlenat)?count($fehlenat):0) + (!empty($fehlench)?count($fehlench):0) + (!empty($fehlenus)?count($fehlenus):0) + (!empty($fehlenca)?count($fehlenca):0);
+
+
+ if($anzahlfehlen > 0){
+ if($anzahlfehlen == 1){
+ $info = "Es steht ".$anzahlfehlen." neuer Bundesstaaten Eintrag in Xentral zur Verfügung.";
+ }else{
+ $info = "Es stehen ".$anzahlfehlen." neue Bundesstaaten Einträge in Xentral zur Verfügung.";
+ }
+ $nachladebutton = " ";
+ $info .= $nachladebutton;
+ $this->app->Tpl->Set('MESSAGE',"$info
");
+ }
+
+ $nachladen = $this->app->Secure->GetPOST("nachladen");
+ if($nachladen != ""){
+ if((!empty($fehlende)?count($fehlende):0) > 0){
+ foreach($fehlende as $key=>$value){
+ $this->app->DB->Insert("INSERT INTO bundesstaaten (land, iso, bundesstaat, aktiv) VALUES ('DE', '$key', '$value', 1)");
+ }
+ }
+
+ if((!empty($fehlenat)?count($fehlenat):0) > 0){
+ foreach($fehlenat as $key=>$value){
+ $this->app->DB->Insert("INSERT INTO bundesstaaten (land, iso, bundesstaat, aktiv) VALUES ('AT', '$key', '$value', 1)");
+ }
+ }
+
+ if((!empty($fehlench)?count($fehlench):0) > 0){
+ foreach($fehlench as $key=>$value){
+ $this->app->DB->Insert("INSERT INTO bundesstaaten (land, iso, bundesstaat, aktiv) VALUES ('CH', '$key', '$value', 1)");
+ }
+ }
+
+ if((!empty($fehlenus)?count($fehlenus):0) > 0){
+ foreach($fehlenus as $key=>$value){
+ $this->app->DB->Insert("INSERT INTO bundesstaaten (land, iso, bundesstaat, aktiv) VALUES ('US', '$key', '$value', 1)");
+ }
+ }
+
+ if((!empty($fehlenca)?count($fehlenca):0) > 0){
+ foreach($fehlenca as $key=>$value){
+ $this->app->DB->Insert("INSERT INTO bundesstaaten (land, iso, bundesstaat, aktiv) VALUES ('CA', '$key', '$value', 1)");
+ }
+ }
+
+ header("Location:index.php?module=bundesstaaten&action=list");
+ exit;
+ }
+
+ $laenderanzahl = $this->app->DB->Select("SELECT COUNT(id) FROM laender");
+ //if($laenderanzahl <= 0){
+ $select = '';
+ $laender = $this->app->erp->GetSelectLaenderliste();
+ foreach($laender as $key=>$value){
+ if(trim($key) != "" && trim($key) != "0"){
+ $select .= "".htmlspecialchars($value)." ";
+ }
+
+ }
+ //}else{
+ //$laender = $this->app->DB->SelectArr("SELECT iso, bezeichnung_de FROM laender");
+ //foreach($laender as $key=>$value){
+ //$select .= "".$value['bezeichnung_de']." ";
+ //}
+
+ $this->app->Tpl->Add("LAENDER", $select);
+ //}
+
+ $this->app->YUI->TableSearch('TAB1','bundesstaaten_list', "show","","",basename(__FILE__), __CLASS__);
+ $this->app->Tpl->Parse("PAGE","bundesstaaten_list.tpl");
+ }
+
+ function BundesstaatenEdit()
+ {
+ if($this->app->Secure->GetGET('cmd')=='get'){
+ $id = (int)$this->app->Secure->GetPOST('id');
+
+ $data = $this->app->DB->SelectArr("SELECT b.id, b.land, b.iso, b.bundesstaat, b.aktiv FROM bundesstaaten b WHERE b.id = '$id' LIMIT 1");
+
+ if($data){
+ $data = reset($data);
+
+ }else{
+ $data['id'] = 0;
+ $data['land'] = '';
+ $data['iso'] = '';
+ $data['bundesstaat'] = '';
+ $data['aktiv'] = 1;
+
+ }
+ echo json_encode($data);
+ exit;
+ }
+
+ $this->app->Tpl->Parse('PAGE', "bundesstaaten_list.tpl");
+ }
+
+ function BundesstaatenSave()
+ {
+ $id = (int)$this->app->Secure->GetPOST('id');
+ $land = trim($this->app->Secure->GetPOST('land'));
+ $iso = trim($this->app->Secure->GetPOST('iso'));
+ $bundesstaat = trim($this->app->Secure->GetPOST('bundesstaat'));
+ $aktiv = $this->app->Secure->GetPOST('aktiv');
+
+ $error = "";
+
+ if($land == ""){
+ $error .= "Bitte Land ausfüllen\n";
+ }
+
+ if($iso == ""){
+ $error .= "Bitte ISO-Code ausfüllen"."\n";
+ }
+
+ if(strlen($iso) > 2){
+ $error .= "Bitte 2-stelligen ISO-Code für den Bundesstaat ausfüllen"."\n";
+ }
+
+ if($bundesstaat == ""){
+ $error .= "Bitte Bundesstaat ausfüllen"."\n";
+ }
+
+ if($land != "" && $bundesstaat != ""){
+ $isovorhanden = $this->app->DB->Select("SELECT id FROM bundesstaaten WHERE land = '$land' AND iso = '$iso' AND id != '$id' LIMIT 1");
+ if($isovorhanden != ""){
+ $error .= "Es gibt diesen ISO-Code bereits für dieses Land"."\n";
+ }else{
+ $schonvorhanden = $this->app->DB->Select("SELECT id FROM bundesstaaten WHERE land = '$land' AND iso = '$iso' AND bundesstaat = '$bundesstaat' AND id != '$id' LIMIT 1");
+ if($schonvorhanden != ""){
+ $error .= "Diesen Eintrag gibt es bereits"."\n";
+ }
+ }
+
+ }
+
+ if($error == ""){
+ if($id){
+ $this->app->DB->Update("UPDATE bundesstaaten SET land = '$land', iso = '$iso', bundesstaat = '$bundesstaat', aktiv = '$aktiv' WHERE id = '$id'");
+
+ echo json_encode(array('status'=>1));
+ exit;
+ }else{
+ $this->app->DB->Insert("INSERT INTO bundesstaaten (land, iso, bundesstaat, aktiv) VALUES ('$land', '$iso', '$bundesstaat', '$aktiv')");
+
+ echo json_encode(array('status'=>1));
+ exit;
+
+ }
+ }else{
+ echo json_encode(array('status'=>0,'statusText'=>$error));
+ exit;
+
+ }
+
+ }
+
+ function BundesstaatenDelete()
+ {
+ $id = (int) $this->app->Secure->GetPOST('id');
+ if($id)
+ $this->app->DB->Update("DELETE FROM bundesstaaten WHERE id = '$id'");
+
+ echo json_encode(array('status'=>1));
+ exit;
+
+ }
+
+}
diff --git a/www/pages/content/adresse_table_filter.tpl b/www/pages/content/adresse_table_filter.tpl
index 28437af7..551aaecb 100644
--- a/www/pages/content/adresse_table_filter.tpl
+++ b/www/pages/content/adresse_table_filter.tpl
@@ -62,10 +62,14 @@
{|E-Mail|}:
-
- {|Kunde hat Abo|} {|Marketingsperre|}: {|Lead|}:
-
-
+
+ {|Lieferadresse|}:
+
+
+
+ {|Kunde hat Abo|} {|Marketingsperre|}: {|Lead|}:
+
+
@@ -150,13 +154,15 @@
[ROLLEN]
- Gruppen:
-
+
+
+ Gruppen:
+
{|Alle|}
[GRUPPEN]
-
+
diff --git a/www/pages/content/artikeltexte_edit.tpl b/www/pages/content/artikeltexte_edit.tpl
new file mode 100644
index 00000000..bb5a967c
--- /dev/null
+++ b/www/pages/content/artikeltexte_edit.tpl
@@ -0,0 +1,145 @@
+
+
diff --git a/www/pages/content/artikeltexte_list.tpl b/www/pages/content/artikeltexte_list.tpl
new file mode 100644
index 00000000..394c103a
--- /dev/null
+++ b/www/pages/content/artikeltexte_list.tpl
@@ -0,0 +1,10 @@
+
+
+
+ [MESSAGE]
+ [TAB1]
+ [TAB1NEXT]
+
+
diff --git a/www/pages/content/datei_neudirekt.tpl b/www/pages/content/datei_neudirekt.tpl
index f7200905..3321a05d 100644
--- a/www/pages/content/datei_neudirekt.tpl
+++ b/www/pages/content/datei_neudirekt.tpl
@@ -11,7 +11,7 @@
[ERROR]
-
+
{|Dateien hier einfügen|}
@@ -333,8 +333,8 @@ $(document).ready(function() {
}
}
- $('#trdatei').before(' Datei '+vorschau+' '+filenameEncoded+'Titel: '+$('#stichwort').html()+' ');
- };
+ $('#trdatei').before(' Datei '+vorschau+' '+filenameEncoded+' Titel: {|Beschreibung|}: '+$('#stichwort').html()+' ');
+ };
})(files[index]);
fileReader.readAsDataURL(file);
diff --git a/www/pages/content/exportbuchhaltung_export.tpl b/www/pages/content/exportbuchhaltung_export.tpl
index 9cf337f7..980863de 100644
--- a/www/pages/content/exportbuchhaltung_export.tpl
+++ b/www/pages/content/exportbuchhaltung_export.tpl
@@ -51,7 +51,21 @@
Konto für Differenzen:
-
+
+ Format:
+
+
+ ISO-8859-1
+ UTF-8
+ UTF-8 mit BOM
+
+
+
+
+ {|PDF-Dateien exportieren:|}
+
+
+
diff --git a/www/pages/content/gruppen_edit.tpl b/www/pages/content/gruppen_edit.tpl
new file mode 100644
index 00000000..f0738929
--- /dev/null
+++ b/www/pages/content/gruppen_edit.tpl
@@ -0,0 +1,784 @@
+
+
+
+
+ [MESSAGE]
+
+ [FORMHANDLEREVENT]
+
+
+
+
+
+ {|Gruppe|} Gruppe für die Zuordnung zu Preislisten, Onlineshop-Preislisten oder Adressgruppen
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/www/pages/content/gruppen_list.tpl b/www/pages/content/gruppen_list.tpl
index 860568d6..394c103a 100644
--- a/www/pages/content/gruppen_list.tpl
+++ b/www/pages/content/gruppen_list.tpl
@@ -1,661 +1,10 @@
-
-
-
- [MESSAGE]
-
-
-
-[TAB1]
+
+
+ [MESSAGE]
+ [TAB1]
+ [TAB1NEXT]
+
-
-
-[TAB3]
-
-
-
-
-[EXTRA]
-
-
-
-
-
-
-
-
-
diff --git a/www/pages/content/laender_edit.tpl b/www/pages/content/laender_edit.tpl
index 802be0f3..978e1eba 100644
--- a/www/pages/content/laender_edit.tpl
+++ b/www/pages/content/laender_edit.tpl
@@ -22,6 +22,7 @@
{|Land|}
Zweistelliger ISO Code:
+ Dreistelliger ISO Code:
Bezeichnung Deutsch:
Bezeichnung Englisch:
EU:
diff --git a/www/pages/content/lieferantengutschrift_list.tpl b/www/pages/content/lieferantengutschrift_list.tpl
index 381fa508..7757490e 100644
--- a/www/pages/content/lieferantengutschrift_list.tpl
+++ b/www/pages/content/lieferantengutschrift_list.tpl
@@ -75,7 +75,9 @@
[MANUELLFREIGABEEINKAUF]
[MANUELLFREIGABEBUCHHALTUNG]
[ALSBEZAHLTMARKIEREN]
+ {|drucken|}
+ {|Drucker|}: [SELDRUCKER]
{|Ausführen|}
diff --git a/www/pages/content/verbindlichkeit_edit.tpl b/www/pages/content/verbindlichkeit_edit.tpl
index 319ca0c1..83a20a37 100644
--- a/www/pages/content/verbindlichkeit_edit.tpl
+++ b/www/pages/content/verbindlichkeit_edit.tpl
@@ -62,7 +62,7 @@
{|Rechnungsdatum|}:
-
+
@@ -103,7 +103,7 @@
{|Zahlbar bis|}:
-
+ Tage
@@ -119,7 +119,7 @@
{|Skonto bis|}:
-
+ Tage
diff --git a/www/pages/content/verbindlichkeit_list.tpl b/www/pages/content/verbindlichkeit_list.tpl
index 3db69445..066b0350 100644
--- a/www/pages/content/verbindlichkeit_list.tpl
+++ b/www/pages/content/verbindlichkeit_list.tpl
@@ -75,8 +75,10 @@
[MANUELLFREIGABEEINKAUF]
[MANUELLFREIGABEBUCHHALTUNG]
[ALSBEZAHLTMARKIEREN]
+ {|drucken|}
- {|Ausführen|}
+ {|Drucker|}: [SELDRUCKER]
+ {|Ausführen|}
[TAB1NEXT]
diff --git a/www/pages/exportbuchhaltung.php b/www/pages/exportbuchhaltung.php
index ec3f2912..afa25dfa 100644
--- a/www/pages/exportbuchhaltung.php
+++ b/www/pages/exportbuchhaltung.php
@@ -1,13 +1,13 @@
_data = $data;
parent::__construct($message);
@@ -46,6 +46,91 @@ class Exportbuchhaltung
var $belegnummer;
var $headerwritten = false;
+ function typen($rechnung, $gutschrift, $verbindlichkeit, $lieferantengutschrift) : array {
+ return(
+ array(
+ array(
+ 'typ' => 'rechnung',
+ 'subtable' => 'rechnung_position',
+ 'kennzeichen' => 'S',
+ 'kennzeichen_negativ' => 'H',
+ 'field_belegnr' => 'b.belegnr',
+ 'field_name' => 'b.name',
+ 'field_date' => 'datum',
+ 'field_auftrag' => 'MAKE_SET(3,b.auftrag,(SELECT auftrag.internet FROM auftrag WHERE auftrag.id = auftragid))',
+ 'field_zahlweise' => 'CONCAT(UCASE(LEFT(b.zahlungsweise, 1)),SUBSTRING(b.zahlungsweise, 2))',
+ 'field_kontonummer' => 'a.kundennummer_buchhaltung',
+ 'field_kundennummer' => 'b.kundennummer',
+ 'field_betrag_gesamt' => 'b.soll',
+ 'field_betrag' => 'p.umsatz_brutto_gesamt',
+ 'condition_where' => ' AND b.status IN (\'freigegeben\',\'versendet\',\'storniert\')',
+ 'Buchungstyp' => 'SR',
+ 'do' => $rechnung,
+ 'pdf' => 'print'
+ ),
+ array(
+ 'typ' => 'gutschrift',
+ 'subtable' => 'gutschrift_position',
+ 'kennzeichen' => 'H',
+ 'kennzeichen_negativ' => 'S',
+ 'field_belegnr' => 'b.belegnr',
+ 'field_name' => 'b.name',
+ 'field_date' => 'datum',
+ 'field_auftrag' => '\'\'',
+ 'field_zahlweise' => '\'\'',
+ 'field_kontonummer' => 'a.kundennummer_buchhaltung',
+ 'field_kundennummer' => 'b.kundennummer',
+ 'field_betrag_gesamt' => 'b.soll',
+ 'field_betrag' => 'p.umsatz_brutto_gesamt',
+ 'condition_where' => ' AND b.status IN (\'freigegeben\',\'versendet\')',
+ 'Buchungstyp' => '',
+ 'do' => $gutschrift,
+ 'pdf' => 'print'
+ ),
+ array(
+ 'typ' => 'verbindlichkeit',
+ 'subtable' => 'verbindlichkeit_position',
+ 'kennzeichen' => 'H',
+ 'kennzeichen_negativ' => 'S',
+ 'field_belegnr' => 'b.rechnung',
+ 'field_name' => 'a.name',
+ 'field_date' => 'rechnungsdatum',
+ 'field_auftrag' => 'b.auftrag',
+ 'field_zahlweise' => '\'\'',
+ 'field_kontonummer' => 'a.lieferantennummer_buchhaltung',
+ 'field_kundennummer' => 'a.lieferantennummer',
+ 'field_betrag_gesamt' => 'b.betrag',
+ 'field_betrag' => 'p.preis*p.menge*((100+p.steuersatz)/100)',
+ 'field_gegenkonto' => '(SELECT sachkonto FROM kontorahmen k WHERE k.id = p.kontorahmen)',
+ 'condition_where' => ' AND b.status IN (\'freigegeben\', \'abgeschlossen\')',
+ 'Buchungstyp' => '',
+ 'do' => $verbindlichkeit,
+ 'pdf' => 'load'
+ ),
+ array(
+ 'typ' => 'lieferantengutschrift',
+ 'subtable' => 'lieferantengutschrift_position',
+ 'kennzeichen' => 'S',
+ 'kennzeichen_negativ' => 'H',
+ 'field_belegnr' => 'b.rechnung',
+ 'field_name' => 'a.name',
+ 'field_date' => 'rechnungsdatum',
+ 'field_auftrag' => '\'\'',
+ 'field_zahlweise' => '\'\'',
+ 'field_kontonummer' => 'a.lieferantennummer_buchhaltung',
+ 'field_kundennummer' => 'a.lieferantennummer',
+ 'field_betrag_gesamt' => 'b.betrag',
+ 'field_betrag' => 'p.preis*p.menge*((100+p.steuersatz)/100)',
+ 'field_gegenkonto' => '(SELECT sachkonto FROM kontorahmen k WHERE k.id = p.kontorahmen)',
+ 'condition_where' => ' AND b.status IN (\'freigegeben\', \'abgeschlossen\')',
+ 'Buchungstyp' => '',
+ 'do' => $lieferantengutschrift,
+ 'pdf' => 'load'
+ )
+ )
+ );
+ }
+
/**
* Exportbelegepositionen constructor.
*
@@ -57,12 +142,12 @@ class Exportbuchhaltung
$this->app = $app;
if ($intern == true) {
return;
- }
+ }
$this->app->ActionHandlerInit($this);
$this->app->ActionHandler("export", "ExportBuchhaltungList");
$this->app->ActionHandlerListen($app);
- $this->app->erp->Headlines('Buchhaltung Export DATEV');
+ $this->app->erp->Headlines('Buchhaltung Export DATEV');
}
function ExportBuchhaltungList() {
@@ -70,7 +155,7 @@ class Exportbuchhaltung
$von_form = $this->app->Secure->GetPOST("von");
$bis_form = $this->app->Secure->GetPOST("bis");
$von = date_create($this->app->erp->ReplaceDatum(true, $von_form, true));
- $bis = date_create($this->app->erp->ReplaceDatum(true, $bis_form, true));
+ $bis = date_create($this->app->erp->ReplaceDatum(true, $bis_form, true));
$projektkuerzel = $this->app->Secure->GetPOST("projekt");
$projekt = $this->app->erp->ReplaceProjekt(true, $projektkuerzel, true);
@@ -80,12 +165,14 @@ class Exportbuchhaltung
$lgchecked = $this->app->Secure->GetPOST("lieferantengutschrift");
$diffignore = $this->app->Secure->GetPOST("diffignore");
$sachkonto = $this->app->Secure->GetPOST('sachkonto');
+ $format = $this->app->Secure->GetPOST('format');
+ $pdfexport = $this->app->Secure->GetPOST("pdfexport");
$account_id = null;
if (!empty($sachkonto)) {
$sachkonto_kennung = explode(' ',$sachkonto)[0];
- $account_id = $this->app->DB->SelectArr("SELECT id from kontorahmen WHERE sachkonto = '".$sachkonto_kennung."'")[0]['id'];
- }
+ $account_id = $this->app->DB->SelectArr("SELECT id from kontorahmen WHERE sachkonto = '".$sachkonto_kennung."'")[0]['id'];
+ }
$msg = "";
@@ -100,13 +187,13 @@ class Exportbuchhaltung
$vbchecked = true;
$lgchecked = true;
}
-
+
$missing_obligatory = array();
$buchhaltung_berater = $this->app->erp->Firmendaten('buchhaltung_berater');
$buchhaltung_mandant = $this->app->erp->Firmendaten('buchhaltung_mandant');
$buchhaltung_wj_beginn = $this->app->erp->Firmendaten('buchhaltung_wj_beginn');
- $buchhaltung_sachkontenlaenge = $this->app->erp->Firmendaten('buchhaltung_sachkontenlaenge');
+ $buchhaltung_sachkontenlaenge = $this->app->erp->Firmendaten('buchhaltung_sachkontenlaenge');
$buchhaltung_berater = $this->app->erp->Firmendaten('buchhaltung_berater');
if (empty($buchhaltung_berater)) {
@@ -123,15 +210,15 @@ class Exportbuchhaltung
$buchhaltung_sachkontenlaenge = $this->app->erp->Firmendaten('buchhaltung_sachkontenlaenge');
if (empty($buchhaltung_sachkontenlaenge)) {
$missing_obligatory[] = "Sachkontenlänge";
- }
+ }
if (!empty($missing_obligatory)) {
$msg = "Angaben in den Grundeinstellungen fehlen: ".implode(", ",$missing_obligatory).".
";
- }
+ }
//---------- DOWNLOAD HERE
if ($submit == 'Download') {
- $dataok = true;
+ $dataok = true;
if (
!$rgchecked &&
@@ -147,7 +234,7 @@ class Exportbuchhaltung
$von_next_year = $von_next_year->modify("+1 year");;
$buchhaltung_wj_beginn = date_create(date_format($von,'Y').$buchhaltung_wj_beginn);
- if ($buchhaltung_wj_beginn > $von) {
+ if ($buchhaltung_wj_beginn > $von) {
$buchhaltung_wj_beginn = $buchhaltung_wj_beginn->modify("-1 year");
}
@@ -160,20 +247,100 @@ class Exportbuchhaltung
}
if ($dataok) {
- $filename = "EXTF_".date('Ymd') . "_Buchungsstapel_DATEV_export.csv";
+ $filename_csv = "EXTF_".date('Ymd') . "_Buchungsstapel_DATEV_export.csv";
try {
- $csv = $this->DATEV_Buchuchungsstapel($rgchecked, $gschecked, $vbchecked, $lgchecked, $buchhaltung_berater, $buchhaltung_mandant, $buchhaltung_wj_beginn, $buchhaltung_sachkontenlaenge, $von, $bis, $projekt, $filename, $diffignore, $sachkonto_kennung);
- header("Content-Disposition: attachment; filename=" . $filename);
- header("Pragma: no-cache");
- header("Expires: 0");
- echo($csv);
+ $csv = $this->DATEV_Buchuchungsstapel($rgchecked, $gschecked, $vbchecked, $lgchecked, $buchhaltung_berater, $buchhaltung_mandant, $buchhaltung_wj_beginn, $buchhaltung_sachkontenlaenge, $von, $bis, $projekt, $filename_csv, $diffignore, $sachkonto_kennung, $format);
+ if ($pdfexport) {
+
+ $dateinamezip = 'Export_Buchhaltung_'.date('Y-m-d').'.zip';
+
+ $zip = new ZipArchive;
+ $zip->open($dateinamezip, ZipArchive::CREATE);
+
+ $zip->addFromString($typ['typ']."/".$filename_csv, $csv);
+
+ $typen = $this->typen($rgchecked, $gschecked, $vbchecked, $lgchecked);
+
+ foreach ($typen as $typ) {
+ $sql = "
+ SELECT id, ".$typ['field_belegnr']." belegnr FROM ".$typ['typ']." b
+ WHERE
+ b.".$typ['field_date']." BETWEEN '".date_format($von,"Y-m-d")."' AND '".date_format($bis,"Y-m-d")."' AND (b.projekt=$projekt OR $projekt=0)".$typ['condition_where'];
+ $belege = $this->app->DB->SelectArr($sql);
+ foreach ($belege as $beleg) {
+
+ if (!$typ['do']) {
+ continue;
+ }
+
+ switch ($typ['pdf']) {
+ case 'print':
+ switch ($typ['typ']) {
+ case 'rechnung':
+ if(class_exists('GutschriftPDFCustom')) {
+ $Brief = new RechnungPDFCustom($this->app,$projekt);
+ }
+ else{
+ $Brief = new RechnungPDF($this->app,$projekt);
+ }
+ $Brief->GetRechnung($beleg['id']);
+ break;
+ case 'gutschrift':
+ if(class_exists('RechnungPDFCustom')) {
+ $Brief = new GutschriftPDFCustom($this->app,$projekt);
+ }
+ else{
+ $Brief = new GutschriftPDF($this->app,$projekt);
+ }
+ $Brief->GetGutschrift($beleg['id']);
+ break;
+ default:
+ exit();
+ break;
+ }
+ $tmpfile = $Brief->displayTMP();
+ $file_name = $beleg['belegnr'].".pdf";
+ $zip->addFromString($typ['typ']."/".$file_name, file_get_contents($tmpfile));
+ break;
+ case 'load':
+ $file_attachments = $this->app->erp->GetDateiSubjektObjekt('%',$typ['typ'],$beleg['id']);
+ $suffix = "";
+ $count = 0;
+ foreach ($file_attachments as $file_attachment) {
+ if ($this->app->erp->GetDateiEndung($file_attachment) == 'pdf') {
+ $file_contents = $this->app->erp->GetDatei($file_attachment);
+ $file_name = filter_var($beleg['belegnr'],FILTER_SANITIZE_EMAIL).$suffix.".pdf";
+ $zip->addFromString($typ['typ']."/".$file_name, $file_contents);
+ $count++;
+ $suffix = "_".$count;
+ }
+ }
+ break;
+ }
+ }
+ }
+ $zip->close();
+
+ // download
+ header('Content-Type: application/zip');
+ header("Content-Disposition: attachment; filename=$dateinamezip");
+ header('Content-Length: ' . filesize($dateinamezip));
+
+ readfile($dateinamezip);
+ unlink($dateinamezip);
+ } else {
+ header("Content-Disposition: attachment; filename=" . $filename_csv);
+ header("Pragma: no-cache");
+ header("Expires: 0");
+ echo($csv);
+ }
$this->app->ExitXentral();
- }
+ }
catch (ConsistencyException $e) {
$msg = "Inkonsistente Daten (".$e->getMessage()."): ";
$data = $e->getData();
-
+
$count = 0;
foreach($data as $item) {
$msg .= $item['typ']." ".$item['belegnr']." (Kopf ".$this->app->erp->ReplaceMengeBetrag(false,$item['betrag_gesamt'],false)." Positionen ".$this->app->erp->ReplaceMengeBetrag(false,$item['betrag_summe'],false).") ";
@@ -186,7 +353,7 @@ class Exportbuchhaltung
$msg .= "
";
}
}
- }
+ }
//---------- DOWNLOAD HERE
$this->app->erp->MenuEintrag("index.php?module=exportbuchhaltung&action=export", "Übersicht");
@@ -203,20 +370,22 @@ class Exportbuchhaltung
$this->app->Tpl->SET('VBCHECKED',$vbchecked?'checked':'');
$this->app->Tpl->SET('LGCHECKED',$lgchecked?'checked':'');
$this->app->Tpl->SET('DIFFIGNORE',$diffignore?'checked':'');
+ $this->app->Tpl->SET('PDFEXPORT',$pdfexport?'checked':'');
+
+ $this->app->Tpl->SET('VON', $von_form);
+ $this->app->Tpl->SET('BIS', $bis_form);
+ $this->app->Tpl->SET('PROJEKT', $projektkuerzel);
+ $this->app->Tpl->SET('SACHKONTO', $sachkonto);
- $this->app->Tpl->SET('VON', $von_form);
- $this->app->Tpl->SET('BIS', $bis_form);
- $this->app->Tpl->SET('PROJEKT', $projektkuerzel);
- $this->app->Tpl->SET('SACHKONTO', $sachkonto);
-
$this->app->Tpl->Parse('PAGE', "exportbuchhaltung_export.tpl");
}
/*
* Create DATEV Buchhungsstapel
- * @throws ConsistencyException with string (list of items) if consistency check fails and no sachkonto for differences is given
- */
- function DATEV_Buchuchungsstapel(bool $rechnung, bool $gutschrift, bool $verbindlichkeit, bool $lieferantengutschrift, string $berater, string $mandant, datetime $wj_beginn, int $sachkontenlaenge, datetime $von, datetime $bis, int $projekt = 0, string $filename = 'EXTF_Buchungsstapel_DATEV_export.csv', $diffignore = false, $sachkonto_differences) : string {
+ * format: "ISO-8859-1", "UTF-8", "UTF-8-BOM"
+ * @throws ConsistencyException with string (list of items) if consistency check fails and no sachkonto for differences is given
+ */
+ function DATEV_Buchuchungsstapel(bool $rechnung, bool $gutschrift, bool $verbindlichkeit, bool $lieferantengutschrift, string $berater, string $mandant, datetime $wj_beginn, int $sachkontenlaenge, datetime $von, datetime $bis, int $projekt = 0, string $filename = 'EXTF_Buchungsstapel_DATEV_export.csv', $diffignore = false, $sachkonto_differences, string $format = "ISO-8859-1") : string {
$datev_header_definition = array (
'1' => 'Kennzeichen',
@@ -252,7 +421,7 @@ class Exportbuchhaltung
'31' => 'Anwendungs- information'
);
- $datev_buchungsstapel_definition = array (
+ $datev_buchungsstapel_definition = array (
'1' => 'Umsatz',
'2' => 'Soll-/Haben-Kennzeichen',
'3' => 'WKZ Umsatz',
@@ -385,7 +554,7 @@ class Exportbuchhaltung
}
else {
$kuerzel = $usernamearr[0][0].$usernamearr[1][0];
- }
+ }
$data['Kennzeichen'] = 'EXTF';
$data['Versionsnummer'] = '700';
@@ -422,12 +591,12 @@ class Exportbuchhaltung
// Start
$csv = "";
- // Output data header row
+ // Output data header row
$comma = "";
foreach ($datev_header_definition as $key => $value) {
if (!isset($data[$value])) {
$data[$value] = '';
- }
+ }
$csv .= $comma.'"'.$data[$value].'"';
$comma = ";";
}
@@ -436,104 +605,27 @@ class Exportbuchhaltung
// Output column captions
$comma = "";
foreach ($datev_buchungsstapel_definition as $key => $value) {
- $csv .= $comma.'"'.$value.'"';
+ $csv .= $comma.'"'.$value.'"';
$comma = ";";
}
$csv .= "\r\n";
- // Collate data and transform in RAM
- $typen = array(
- array(
- 'typ' => 'rechnung',
- 'subtable' => 'rechnung_position',
- 'kennzeichen' => 'S',
- 'kennzeichen_negativ' => 'H',
- 'field_belegnr' => 'b.belegnr',
- 'field_name' => 'b.name',
- 'field_date' => 'datum',
- 'field_auftrag' => 'MAKE_SET(3,b.auftrag,(SELECT auftrag.internet FROM auftrag WHERE auftrag.id = auftragid))',
- 'field_zahlweise' => 'CONCAT(UCASE(LEFT(b.zahlungsweise, 1)),SUBSTRING(b.zahlungsweise, 2))',
- 'field_kontonummer' => 'a.kundennummer_buchhaltung',
- 'field_kundennummer' => 'b.kundennummer',
- 'field_betrag_gesamt' => 'b.soll',
- 'field_betrag' => 'p.umsatz_brutto_gesamt',
- 'condition_where' => ' AND b.status IN (\'freigegeben\',\'versendet\',\'storniert\')',
- 'Buchungstyp' => 'SR',
- 'do' => $rechnung
- ),
- array(
- 'typ' => 'gutschrift',
- 'subtable' => 'gutschrift_position',
- 'kennzeichen' => 'H',
- 'kennzeichen_negativ' => 'S',
- 'field_belegnr' => 'b.belegnr',
- 'field_name' => 'b.name',
- 'field_date' => 'datum',
- 'field_auftrag' => '\'\'',
- 'field_zahlweise' => '\'\'',
- 'field_kontonummer' => 'a.kundennummer_buchhaltung',
- 'field_kundennummer' => 'b.kundennummer',
- 'field_betrag_gesamt' => 'b.soll',
- 'field_betrag' => 'p.umsatz_brutto_gesamt',
- 'condition_where' => ' AND b.status IN (\'freigegeben\',\'versendet\')',
- 'Buchungstyp' => '',
- 'do' => $gutschrift
- ),
- array(
- 'typ' => 'verbindlichkeit',
- 'subtable' => 'verbindlichkeit_position',
- 'kennzeichen' => 'H',
- 'kennzeichen_negativ' => 'S',
- 'field_belegnr' => 'b.rechnung',
- 'field_name' => 'a.name',
- 'field_date' => 'rechnungsdatum',
- 'field_auftrag' => 'b.auftrag',
- 'field_zahlweise' => '\'\'',
- 'field_kontonummer' => 'a.lieferantennummer_buchhaltung',
- 'field_kundennummer' => 'a.lieferantennummer',
- 'field_betrag_gesamt' => 'b.betrag',
- 'field_betrag' => 'p.preis*p.menge*((100+p.steuersatz)/100)',
- 'field_gegenkonto' => '(SELECT sachkonto FROM kontorahmen k WHERE k.id = p.kontorahmen)',
- 'condition_where' => ' AND b.status IN (\'freigegeben\')',
- 'Buchungstyp' => '',
- 'do' => $verbindlichkeit
- ),
- array(
- 'typ' => 'lieferantengutschrift',
- 'subtable' => 'lieferantengutschrift_position',
- 'kennzeichen' => 'S',
- 'kennzeichen_negativ' => 'H',
- 'field_belegnr' => 'b.rechnung',
- 'field_name' => 'a.name',
- 'field_date' => 'rechnungsdatum',
- 'field_auftrag' => '\'\'',
- 'field_zahlweise' => '\'\'',
- 'field_kontonummer' => 'a.lieferantennummer_buchhaltung',
- 'field_kundennummer' => 'a.lieferantennummer',
- 'field_betrag_gesamt' => 'b.betrag',
- 'field_betrag' => 'p.preis*p.menge*((100+p.steuersatz)/100)',
- 'field_gegenkonto' => '(SELECT sachkonto FROM kontorahmen k WHERE k.id = p.kontorahmen)',
- 'condition_where' => ' AND b.status IN (\'freigegeben\')',
- 'Buchungstyp' => '',
- 'do' => $lieferantengutschrift
- )
- );
-
- foreach ($typen as $typ) {
+ // Collate data and transform in RAM
+ $typen = $this->typen($rechnung, $gutschrift, $verbindlichkeit, $lieferantengutschrift);
+ foreach ($typen as $typ) {
if (!$typ['do']) {
continue;
}
-
if (!empty($typ['field_gegenkonto'])) {
$sql_gegenkonto = $typ['field_gegenkonto'];
- } else
+ } else
{
$sql_gegenkonto = "NULL";
}
-
- $sql = "SELECT
+
+ $sql = "SELECT
".$typ['typ']." id,
".$typ['field_belegnr']." as belegnr,
".$typ['field_auftrag']." as auftrag,
@@ -548,18 +640,18 @@ class Exportbuchhaltung
ROUND(".$typ['field_betrag'].",2) as betrag,
".$sql_gegenkonto." as gegenkonto,
b.waehrung as pos_waehrung
- FROM
- ".$typ['typ']." b
- LEFT JOIN
- ".$typ['subtable']." p
- ON
- b.id = p.".$typ['typ']."
- INNER JOIN
- adresse a ON a.id = b.adresse
- WHERE
- b.".$typ['field_date']." BETWEEN '".date_format($von,"Y-m-d")."' AND '".date_format($bis,"Y-m-d")."' AND (b.projekt=$projekt OR $projekt=0)".$typ['condition_where'];
+ FROM
+ ".$typ['typ']." b
+ LEFT JOIN
+ ".$typ['subtable']." p
+ ON
+ b.id = p.".$typ['typ']."
+ INNER JOIN
+ adresse a ON a.id = b.adresse
+ WHERE
+ b.".$typ['field_date']." BETWEEN '".date_format($von,"Y-m-d")."' AND '".date_format($bis,"Y-m-d")."' AND (b.projekt=$projekt OR $projekt=0)".$typ['condition_where'];
- // Check consistency of positions
+ // Check consistency of positions
if (!$diffignore) {
$sql_check = "SELECT *
FROM
@@ -579,52 +671,52 @@ class Exportbuchhaltung
GROUP BY
id
) summen
- WHERE betrag_gesamt <> betrag_summe OR betrag_summe IS NULL";
-
+ WHERE betrag_gesamt <> betrag_summe OR betrag_summe IS NULL";
+
$result = $this->app->DB->SelectArr($sql_check);
- if (!empty($result)) {
-
- if (!$sachkonto_differences) {
+ if (!empty($result)) {
+
+ if (!$sachkonto_differences) {
$e = new ConsistencyException(ucfirst($typ['typ']),$result);
throw $e;
} else {
- // Create differences entries
+ // Create differences entries
foreach ($result as $row) {
-
+
$posid = $row['pos_id'];
$tmpsteuersatz = 0;
$tmpsteuertext = '';
$erloes = '';
$result = array();
- $this->app->erp->GetSteuerPosition($typ['typ'], $posid, $tmpsteuersatz, $tmpsteuertext, $erloes);
-
- $data = array();
-
- $difference = $row['betrag_gesamt']-$row['betrag_summe'];
-
+ $this->app->erp->GetSteuerPosition($typ['typ'], $posid, $tmpsteuersatz, $tmpsteuertext, $erloes);
+
+ $data = array();
+
+ $difference = $row['betrag_gesamt']-$row['betrag_summe'];
+
$data['Umsatz'] = number_format(abs($difference), 2, ',', ''); // obligatory
$data['EU-Steuersatz (Bestimmung)'] = 0;
$data['WKZ Umsatz'] = $row['waehrung'];
$data['Belegfeld 1'] = mb_strimwidth($row['belegnr'],0,36);
$data['Konto'] = $row['kundennummer'];
- $data['Soll-/Haben-Kennzeichen'] = ($difference < 0)?'S':'H'; // obligatory
-
- $data['Gegenkonto (ohne BU-Schlüssel)'] = $sachkonto_differences; // obligatory
-
- $data['Belegdatum'] = date_format(date_create($row['datum']),"dm"); // obligatory
+ $data['Soll-/Haben-Kennzeichen'] = ($difference < 0)?'S':'H'; // obligatory
+
+ $data['Gegenkonto (ohne BU-Schlüssel)'] = $sachkonto_differences; // obligatory
+
+ $data['Belegdatum'] = date_format(date_create($row['datum']),"dm"); // obligatory
$data['Buchungstext'] = "Differenz";
$data['EU-Mitgliedstaat u. UStID (Bestimmung)'] = $row['ustid'];
$data['Auftragsnummer'] = $row['auftrag'];
$data['Zahlweise'] = $row['zahlweise'];
$csv .= $this->create_line($datev_buchungsstapel_definition,$data);
- }
- }
+ }
+ }
}
- } // diffignore
+ } // diffignore
// Query position data
- $arr = $this->app->DB->Query($sql);
- while ($row = $this->app->DB->Fetch_Assoc($arr)) {
+ $arr = $this->app->DB->Query($sql);
+ while ($row = $this->app->DB->Fetch_Assoc($arr)) {
//print_r($row);
@@ -633,7 +725,7 @@ class Exportbuchhaltung
$tmpsteuertext = '';
$erloes = '';
$result = array();
- $this->app->erp->GetSteuerPosition($typ['typ'], $posid, $tmpsteuersatz, $tmpsteuertext, $erloes);
+ $this->app->erp->GetSteuerPosition($typ['typ'], $posid, $tmpsteuersatz, $tmpsteuertext, $erloes);
$data = array();
@@ -642,7 +734,7 @@ class Exportbuchhaltung
$data['Soll-/Haben-Kennzeichen'] = $typ['kennzeichen']; // obligatory
} else if ($row['betrag'] < 0) {
$data['Umsatz'] = number_format(-$row['betrag'], 2, ',', ''); // obligatory
- $data['Soll-/Haben-Kennzeichen'] = $typ['kennzeichen_negativ']; // obligatory
+ $data['Soll-/Haben-Kennzeichen'] = $typ['kennzeichen_negativ']; // obligatory
} else {
continue;
}
@@ -651,44 +743,54 @@ class Exportbuchhaltung
$data['WKZ Umsatz'] = $row['pos_waehrung'];
$data['Belegfeld 1'] = mb_strimwidth($row['belegnr'],0,36);
$data['Konto'] = $row['kundennummer']; // obligatory
-
+
if (!empty($typ['field_gegenkonto'])) {
- $data['Gegenkonto (ohne BU-Schlüssel)'] = $row['gegenkonto']; // obligatory
+ $data['Gegenkonto (ohne BU-Schlüssel)'] = $row['gegenkonto']; // obligatory
} else {
$data['Gegenkonto (ohne BU-Schlüssel)'] = $erloes; // obligatory
}
-
+
$data['Belegdatum'] = date_format(date_create($row['datum']),"dm"); // obligatory
$data['Buchungstext'] = mb_strimwidth($row['name'],0,60);
$data['EU-Mitgliedstaat u. UStID (Bestimmung)'] = $row['ustid'];
-
+
$data['Auftragsnummer'] = ($row['auftrag']!=0)?$row['auftrag']:'';
$data['Zahlweise'] = $row['zahlweise'];
-
+
$csv .= $this->create_line($datev_buchungsstapel_definition,$data);
}
- }
+ }
$csv .= '"0";"S";"EUR";"0";"";"";"1234";"1370";"";"101";"";"";"";"Testbuchung";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"0";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";""'; // Testbuchung
- $csv = mb_convert_encoding($csv, "ISO-8859-1", "UTF-8");
+ switch ($format) {
+ case "UTF-8":
+ break;
+ case "UTF-8-BOM":
+ $csv = "\xef\xbb\xbf".$csv;
+ break;
+ default:
+ $csv = mb_convert_encoding($csv, "ISO-8859-1", "UTF-8");
+ break;
+ }
+
return($csv);
- }
-
- function create_line($definition, $data) : string {
+ }
+
+ function create_line($definition, $data) : string {
$csv = "";
- $comma = "";
+ $comma = "";
foreach ($definition as $key => $value) {
if (!isset($data[$value])) {
$data[$value] = '';
- }
+ }
$csv .= $comma.'"'.$data[$value].'"';
$comma = ";";
}
- $csv .= "\r\n";
- return($csv);
+ $csv .= "\r\n";
+ return($csv);
}
-
+
}
/*
diff --git a/www/pages/gruppen.php b/www/pages/gruppen.php
index 6fd22eab..41b52b5c 100644
--- a/www/pages/gruppen.php
+++ b/www/pages/gruppen.php
@@ -1,43 +1,322 @@
-
app=$app;
- if($intern) {
- return;
- }
- $this->app->ActionHandlerInit($this);
+/*
+ * Copyright (c) 2022 OpenXE project
+ */
- $this->app->ActionHandler("list","GruppenList");
- $this->app->DefaultActionHandler("list");
+use Xentral\Components\Database\Exception\QueryFailureException;
+class Gruppen {
- $this->app->ActionHandlerListen($app);
- }
- function GruppenList()
- {
- $this->app->Tpl->Set('VERS','Professional');
- $this->app->Tpl->Set('MODUL','Professional');
- $this->app->Tpl->Parse('PAGE', "only_version.tpl");
+ function __construct($app, $intern = false) {
+ $this->app = $app;
+ if ($intern)
+ return;
+
+ $this->app->ActionHandlerInit($this);
+ $this->app->ActionHandler("list", "gruppen_list");
+ $this->app->ActionHandler("create", "gruppen_edit"); // This automatically adds a "New" button
+ $this->app->ActionHandler("edit", "gruppen_edit");
+ $this->app->ActionHandler("delete", "gruppen_delete");
+ $this->app->DefaultActionHandler("list");
+ $this->app->ActionHandlerListen($app);
}
- }
-}
+ public function Install() {
+ /* Fill out manually later */
+ }
+
+ static function TableSearch(&$app, $name, $erlaubtevars) {
+ switch ($name) {
+ case "gruppen_list":
+ $allowed['gruppen_list'] = array('list');
+ $heading = array(
+ '',
+ '',
+ 'Kennziffer',
+ 'Name',
+ 'Art',
+ 'Internebemerkung',
+ 'Projekt',
+ 'Aktiv',
+ 'Menü');
+ $width = array('1%','1%','10%'); // Fill out manually later
+
+ // columns that are aligned right (numbers etc)
+ // $alignright = array(4,5,6,7,8);
+
+ $findcols = array(
+ 'g.id',
+ 'g.id',
+ 'g.kennziffer',
+ 'g.name',
+ 'g.art',
+ 'g.internebemerkung',
+ 'p.abkuerzung',
+ 'g.aktiv',
+ 'g.id'
+ );
+ $searchsql = array('g.name', 'g.art', 'g.kennziffer', 'g.internebemerkung');
+
+ $defaultorder = 1;
+ $defaultorderdesc = 0;
+ $aligncenter = array();
+ $alignright = array();
+ $numbercols = array();
+ $sumcol = array();
+
+ $dropnbox = "' ' AS `open`, CONCAT(' ') AS `auswahl`";
+
+// $moreinfo = true; // Allow drop down details
+// $moreinfoaction = "lieferschein"; // specify suffix for minidetail-URL to allow different minidetails
+// $menucol = 11; // Set id col for moredata/menu
+
+ $menu = "";
+
+ $sql = "SELECT SQL_CALC_FOUND_ROWS g.id, $dropnbox, g.kennziffer, g.name, g.art, g.internebemerkung, p.abkuerzung, g.aktiv, g.id FROM gruppen g LEFT JOIN projekt p ON g.projekt = p.id";
+
+ $where = "1";
+ $count = "SELECT count(DISTINCT id) FROM gruppen WHERE $where";
+// $groupby = "";
+
+ break;
+ }
+
+ $erg = false;
+
+ foreach ($erlaubtevars as $k => $v) {
+ if (isset($$v)) {
+ $erg[$v] = $$v;
+ }
+ }
+ return $erg;
+ }
+
+ function gruppen_list() {
+ $this->app->erp->MenuEintrag("index.php?module=gruppen&action=list", "Übersicht");
+ $this->app->erp->MenuEintrag("index.php?module=gruppen&action=create", "Neu anlegen");
+
+ $this->app->erp->MenuEintrag("index.php", "Zurück");
+
+ $this->app->YUI->TableSearch('TAB1', 'gruppen_list', "show", "", "", basename(__FILE__), __CLASS__);
+ $this->app->Tpl->Parse('PAGE', "gruppen_list.tpl");
+ }
+
+ public function gruppen_delete() {
+ $id = (int) $this->app->Secure->GetGET('id');
+
+ $this->app->DB->Delete("DELETE FROM `gruppen` WHERE `id` = '{$id}'");
+ $this->app->Tpl->Set('MESSAGE', "Der Eintrag wurde gelöscht.
");
+
+ $this->gruppen_list();
+ }
+
+ /*
+ * Edit gruppen item
+ * If id is empty, create a new one
+ */
+
+ function gruppen_edit() {
+ $id = $this->app->Secure->GetGET('id');
+
+ // Check if other users are editing this id
+/* if($this->app->erp->DisableModul('gruppen',$id))
+ {
+ return;
+ } */
+
+ $this->app->Tpl->Set('ID', $id);
+
+ $this->app->erp->MenuEintrag("index.php?module=gruppen&action=edit&id=$id", "Details");
+ $this->app->erp->MenuEintrag("index.php?module=gruppen&action=list", "Zurück zur Übersicht");
+ $id = $this->app->Secure->GetGET('id');
+ $input = $this->GetInput();
+
+ // Convert here
+ $input['aktiv'] = !empty($this->app->Secure->GetPOST('aktiv'))?"1":"0";
+
+ $submit = $this->app->Secure->GetPOST('submit');
+
+ if (empty($id)) {
+ // New item
+ $id = 'NULL';
+ }
+
+ if ($submit != '')
+ {
+
+ // Write to database
+
+ // Add checks here
+
+ $input['projekt'] = $this->app->erp->ReplaceProjekt(true,$input['projekt'],true); // Parameters: Target db?, value, from form?
+
+ $columns = "id, ";
+ $values = "$id, ";
+ $update = "";
+
+ $fix = "";
+
+ foreach ($input as $key => $value) {
+ $columns = $columns.$fix.$key;
+ $values = $values.$fix."'".$value."'";
+ $update = $update.$fix.$key." = '$value'";
+
+ $fix = ", ";
+ }
+
+// echo($columns." ");
+// echo($values." ");
+// echo($update." ");
+
+ $sql = "INSERT INTO gruppen (".$columns.") VALUES (".$values.") ON DUPLICATE KEY UPDATE ".$update;
+
+// echo($sql);
+
+ $this->app->DB->Update($sql);
+
+ if ($id == 'NULL') {
+ $msg = $this->app->erp->base64_url_encode("Das Element wurde erfolgreich angelegt.
");
+ header("Location: index.php?module=gruppen&action=list&msg=$msg");
+ } else {
+ $this->app->Tpl->Set('MESSAGE', "Die Einstellungen wurden erfolgreich übernommen.
");
+ }
+ }
+
+
+ // Load values again from database
+ $dropnbox = "' ' AS `open`, CONCAT(' ') AS `auswahl`";
+ $result = $this->app->DB->SelectArr("SELECT SQL_CALC_FOUND_ROWS g.id, $dropnbox, g.name, g.art, g.kennziffer, g.internebemerkung, g.grundrabatt, g.rabatt1, g.rabatt2, g.rabatt3, g.rabatt4, g.rabatt5, g.sonderrabatt_skonto, g.provision, g.kundennummer, g.partnerid, g.dta_aktiv, g.dta_periode, g.dta_dateiname, g.dta_mail, g.dta_mail_betreff, g.dta_mail_text, g.dtavariablen, g.dta_variante, g.bonus1, g.bonus1_ab, g.bonus2, g.bonus2_ab, g.bonus3, g.bonus3_ab, g.bonus4, g.bonus4_ab, g.bonus5, g.bonus5_ab, g.bonus6, g.bonus6_ab, g.bonus7, g.bonus7_ab, g.bonus8, g.bonus8_ab, g.bonus9, g.bonus9_ab, g.bonus10, g.bonus10_ab, g.zahlungszieltage, g.zahlungszielskonto, g.zahlungszieltageskonto, g.portoartikel, g.portofreiab, g.erweiterteoptionen, g.zentralerechnung, g.zentralregulierung, g.gruppe, g.preisgruppe, g.verbandsgruppe, g.rechnung_name, g.rechnung_strasse, g.rechnung_ort, g.rechnung_plz, g.rechnung_abteilung, g.rechnung_land, g.rechnung_email, g.rechnung_periode, g.rechnung_anzahlpapier, g.rechnung_permail, g.webid, g.portofrei_aktiv, g.projekt, g.objektname, g.objekttyp, g.parameter, g.objektname2, g.objekttyp2, g.parameter2, g.objektname3, g.objekttyp3, g.parameter3, g.kategorie, g.aktiv, g.id FROM gruppen g"." WHERE id=$id");
+
+ foreach ($result[0] as $key => $value) {
+ $this->app->Tpl->Set(strtoupper($key), $value);
+ }
+
+ if (!empty($result)) {
+ $gruppen_from_db = $result[0];
+ } else {
+
+ }
+
+ /*
+ * Add displayed items later
+ *
+
+ $this->app->Tpl->Add('KURZUEBERSCHRIFT2', $email);
+ $this->app->Tpl->Add('EMAIL', $email);
+ $this->app->Tpl->Add('ANGEZEIGTERNAME', $angezeigtername);
+
+ $this->app->YUI->AutoComplete("artikel", "artikelnummer");
+
+ */
+
+ $this->app->YUI->AutoComplete("kennziffer", "gruppekennziffer");
+
+ if ($gruppen_from_db['art'] != 'preisgruppe') {
+ $this->app->Tpl->Set('PREISGRUPPEHIDDEN','hidden');
+ }
+
+ $art_select = Array(
+ 'gruppe' => 'Gruppe',
+ 'preisgruppe' => 'Preisgruppe'
+ );
+ $art_select = $this->app->erp->GetSelectAsso($art_select,$gruppen_from_db['art']);
+ $this->app->Tpl->Set('ARTSELECT',$art_select);
+
+ $this->app->YUI->AutoComplete("projekt","projektname",1);
+ $this->app->Tpl->Set('PROJEKT',$this->app->erp->ReplaceProjekt(false,$gruppen_from_db['projekt'],false));
+
+ $this->app->Tpl->Set('AKTIV', $gruppen_from_db['aktiv']==1?"checked":"");
+
+ $this->app->Tpl->Parse('PAGE', "gruppen_edit.tpl");
+ }
+
+ /**
+ * Get all paramters from html form and save into $input
+ */
+ public function GetInput(): array {
+ $input = array();
+ //$input['EMAIL'] = $this->app->Secure->GetPOST('email');
+
+ $input['name'] = $this->app->Secure->GetPOST('name');
+ $input['art'] = $this->app->Secure->GetPOST('art');
+ $input['kennziffer'] = $this->app->Secure->GetPOST('kennziffer');
+ $input['internebemerkung'] = $this->app->Secure->GetPOST('internebemerkung');
+ $input['grundrabatt'] = $this->app->Secure->GetPOST('grundrabatt');
+ $input['rabatt1'] = $this->app->Secure->GetPOST('rabatt1');
+ $input['rabatt2'] = $this->app->Secure->GetPOST('rabatt2');
+ $input['rabatt3'] = $this->app->Secure->GetPOST('rabatt3');
+ $input['rabatt4'] = $this->app->Secure->GetPOST('rabatt4');
+ $input['rabatt5'] = $this->app->Secure->GetPOST('rabatt5');
+ $input['sonderrabatt_skonto'] = $this->app->Secure->GetPOST('sonderrabatt_skonto');
+ $input['provision'] = $this->app->Secure->GetPOST('provision');
+ $input['kundennummer'] = $this->app->Secure->GetPOST('kundennummer');
+ $input['partnerid'] = $this->app->Secure->GetPOST('partnerid');
+ $input['dta_aktiv'] = $this->app->Secure->GetPOST('dta_aktiv');
+ $input['dta_periode'] = $this->app->Secure->GetPOST('dta_periode');
+ $input['dta_dateiname'] = $this->app->Secure->GetPOST('dta_dateiname');
+ $input['dta_mail'] = $this->app->Secure->GetPOST('dta_mail');
+ $input['dta_mail_betreff'] = $this->app->Secure->GetPOST('dta_mail_betreff');
+ $input['dta_mail_text'] = $this->app->Secure->GetPOST('dta_mail_text');
+ $input['dtavariablen'] = $this->app->Secure->GetPOST('dtavariablen');
+ $input['dta_variante'] = $this->app->Secure->GetPOST('dta_variante');
+ $input['bonus1'] = $this->app->Secure->GetPOST('bonus1');
+ $input['bonus1_ab'] = $this->app->Secure->GetPOST('bonus1_ab');
+ $input['bonus2'] = $this->app->Secure->GetPOST('bonus2');
+ $input['bonus2_ab'] = $this->app->Secure->GetPOST('bonus2_ab');
+ $input['bonus3'] = $this->app->Secure->GetPOST('bonus3');
+ $input['bonus3_ab'] = $this->app->Secure->GetPOST('bonus3_ab');
+ $input['bonus4'] = $this->app->Secure->GetPOST('bonus4');
+ $input['bonus4_ab'] = $this->app->Secure->GetPOST('bonus4_ab');
+ $input['bonus5'] = $this->app->Secure->GetPOST('bonus5');
+ $input['bonus5_ab'] = $this->app->Secure->GetPOST('bonus5_ab');
+ $input['bonus6'] = $this->app->Secure->GetPOST('bonus6');
+ $input['bonus6_ab'] = $this->app->Secure->GetPOST('bonus6_ab');
+ $input['bonus7'] = $this->app->Secure->GetPOST('bonus7');
+ $input['bonus7_ab'] = $this->app->Secure->GetPOST('bonus7_ab');
+ $input['bonus8'] = $this->app->Secure->GetPOST('bonus8');
+ $input['bonus8_ab'] = $this->app->Secure->GetPOST('bonus8_ab');
+ $input['bonus9'] = $this->app->Secure->GetPOST('bonus9');
+ $input['bonus9_ab'] = $this->app->Secure->GetPOST('bonus9_ab');
+ $input['bonus10'] = $this->app->Secure->GetPOST('bonus10');
+ $input['bonus10_ab'] = $this->app->Secure->GetPOST('bonus10_ab');
+ $input['zahlungszieltage'] = $this->app->Secure->GetPOST('zahlungszieltage');
+ $input['zahlungszielskonto'] = $this->app->Secure->GetPOST('zahlungszielskonto');
+ $input['zahlungszieltageskonto'] = $this->app->Secure->GetPOST('zahlungszieltageskonto');
+ $input['portoartikel'] = $this->app->Secure->GetPOST('portoartikel');
+ $input['portofreiab'] = $this->app->Secure->GetPOST('portofreiab');
+ $input['erweiterteoptionen'] = $this->app->Secure->GetPOST('erweiterteoptionen');
+ $input['zentralerechnung'] = $this->app->Secure->GetPOST('zentralerechnung');
+ $input['zentralregulierung'] = $this->app->Secure->GetPOST('zentralregulierung');
+ $input['gruppe'] = $this->app->Secure->GetPOST('gruppe');
+ $input['preisgruppe'] = $this->app->Secure->GetPOST('preisgruppe');
+ $input['verbandsgruppe'] = $this->app->Secure->GetPOST('verbandsgruppe');
+ $input['rechnung_name'] = $this->app->Secure->GetPOST('rechnung_name');
+ $input['rechnung_strasse'] = $this->app->Secure->GetPOST('rechnung_strasse');
+ $input['rechnung_ort'] = $this->app->Secure->GetPOST('rechnung_ort');
+ $input['rechnung_plz'] = $this->app->Secure->GetPOST('rechnung_plz');
+ $input['rechnung_abteilung'] = $this->app->Secure->GetPOST('rechnung_abteilung');
+ $input['rechnung_land'] = $this->app->Secure->GetPOST('rechnung_land');
+ $input['rechnung_email'] = $this->app->Secure->GetPOST('rechnung_email');
+ $input['rechnung_periode'] = $this->app->Secure->GetPOST('rechnung_periode');
+ $input['rechnung_anzahlpapier'] = $this->app->Secure->GetPOST('rechnung_anzahlpapier');
+ $input['rechnung_permail'] = $this->app->Secure->GetPOST('rechnung_permail');
+ $input['webid'] = $this->app->Secure->GetPOST('webid');
+ $input['portofrei_aktiv'] = $this->app->Secure->GetPOST('portofrei_aktiv');
+ $input['projekt'] = $this->app->Secure->GetPOST('projekt');
+ $input['objektname'] = $this->app->Secure->GetPOST('objektname');
+ $input['objekttyp'] = $this->app->Secure->GetPOST('objekttyp');
+ $input['parameter'] = $this->app->Secure->GetPOST('parameter');
+ $input['objektname2'] = $this->app->Secure->GetPOST('objektname2');
+ $input['objekttyp2'] = $this->app->Secure->GetPOST('objekttyp2');
+ $input['parameter2'] = $this->app->Secure->GetPOST('parameter2');
+ $input['objektname3'] = $this->app->Secure->GetPOST('objektname3');
+ $input['objekttyp3'] = $this->app->Secure->GetPOST('objekttyp3');
+ $input['parameter3'] = $this->app->Secure->GetPOST('parameter3');
+ $input['kategorie'] = $this->app->Secure->GetPOST('kategorie');
+ $input['aktiv'] = $this->app->Secure->GetPOST('aktiv');
+
+
+ return $input;
+ }
+ }
diff --git a/www/pages/importvorlage.php b/www/pages/importvorlage.php
index a096fb1d..a7aec0e7 100644
--- a/www/pages/importvorlage.php
+++ b/www/pages/importvorlage.php
@@ -3990,7 +3990,6 @@ class Importvorlage extends GenImportvorlage {
if($this->app->DB->Select("SELECT id FROM artikel WHERE id ='$artikelid' LIMIT 1")){
//Sprachen
- if($this->app->erp->ModulVorhanden('artikel_texte')){
$erlaubtefelder= array('name','kurztext','beschreibung','beschreibung_online','meta_title',
'meta_description','meta_keywords','katalog_bezeichnung','katalog_text','katalogartikel','shop','aktiv');
$zuImportierendeSprachen = [];
@@ -4066,8 +4065,26 @@ class Importvorlage extends GenImportvorlage {
}
}
}
- }
- }
+ } // Sprachen
+
+ // Artikeleigenschaften
+ // leer = löschen
+
+ $artikeleigenschaften = array();
+ foreach ($tmp as $feldname => $feldwerte) {
+ if (strpos($feldname,'eigenschaftname') !== false) {
+ $eigenschaftspaltennummer = substr($feldname,strlen('eigenschaftname'));
+ $artikeleigenschaften[$feldwerte[$i]] = $tmp['eigenschaftwert'.$eigenschaftspaltennummer][$i];
+ }
+ }
+ foreach ($artikeleigenschaften as $key => $value) {
+ $sql = "INSERT INTO artikeleigenschaften (name) VALUES ('".$key."') ON DUPLICATE KEY UPDATE name = '".$key."'";
+ $this->app->DB->Update($sql);
+ $sql = "INSERT INTO artikeleigenschaftenwerte (artikel, artikeleigenschaften, wert) VALUES ('".$artikelid."' ,(SELECT id FROM artikeleigenschaften WHERE name = '".$key."'), '".$value."') ON DUPLICATE KEY UPDATE wert = '".$value."'";
+ $this->app->DB->Update($sql);
+ }
+ $sql = "DELETE FROM artikeleigenschaftenwerte WHERE wert = ''";
+ $this->app->DB->Delete($sql);
//freifelduebersetzungen
foreach ($tmp as $feldname => $feldwerte) {
diff --git a/www/pages/laender.php b/www/pages/laender.php
index 4870a83f..45550818 100644
--- a/www/pages/laender.php
+++ b/www/pages/laender.php
@@ -1,215 +1,219 @@
- Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"> Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"> ";
-
- $where = " l.id > 0 ";
-
- $sql = "SELECT SQL_CALC_FOUND_ROWS l.id, l.iso, l.bezeichnung_de, l.bezeichnung_en, if(l.eu,'EU',''), l.id FROM laender l";
-
- $count = "SELECT count(l.id) FROM laender l WHERE $where";
- break;
-
- }
-
- $erg = false;
-
- foreach($erlaubtevars as $k => $v)
- {
- if(isset($$v))$erg[$v] = $$v;
- }
- return $erg;
- }
-
- function __construct($app, $intern = false) {
- $this->app=$app;
- if($intern)return;
- $this->app->ActionHandlerInit($this);
-
- // ab hier alle Action Handler definieren die das Modul hat
- $this->app->ActionHandler("list", "LaenderList");
- $this->app->ActionHandler("create", "LaenderCreate");
- $this->app->ActionHandler("edit", "LaenderEdit");
- $this->app->ActionHandler("delete", "LaenderDelete");
- $this->app->ActionHandler('test', 'LaenderTest');
-
- $this->app->ActionHandlerListen($app);
- }
-
- function LaenderTest(){
- $countryModule = $this->app->Container->get('CountryMigrationService');
- if($countryModule->needsMigration()){
- $countryModule->doMigration();
- }
- }
-
- function LaenderMenu()
- {
- $this->app->erp->MenuEintrag("index.php?module=laender&action=list","Zurück zur Übersicht");
- }
-
- function LaenderList()
- {
- $this->app->erp->MenuEintrag("index.php?module=laender&action=create","Neues Land");
- $this->app->erp->MenuEintrag("index.php?module=laender&action=list","Übersicht");
-
- $this->app->YUI->TableSearch('TAB1','laender_list', "show","","",basename(__FILE__), __CLASS__);
- $this->app->Tpl->Parse("PAGE","laender_list.tpl");
- }
-
- function LaenderEdit()
- {
- $id = (int)$this->app->Secure->GetGET('id');
- $submit = $this->app->Secure->GetPOST('submitland');
-
- $this->app->Tpl->Add('KURZUEBERSCHRIFT2',$bezeichnung_de);
-
-
-
- $input = array();
-
- $this->app->erp->MenuEintrag("index.php?module=laender&action=edit&id=$id","Details");
-
- $this->app->erp->MenuEintrag("index.php?module=laender&action=list","Zurück zur Übersicht");
-
- $input = $this->GetInput();
-
- if(is_numeric($id) && $submit!=''){
-
- $error = '';
- if($input['iso']=='' || strlen(trim($input['iso'])) > 2) $error .= 'Geben Sie bitte einen zweistelligen ISO-Code ein. ';
- if($input['bezeichnung_de'] == '') $error .= 'Geben Sie bitte eine deutsche Länderbezeichnung ein. ';
- if($input['bezeichnung_en'] =='') $error .= 'Geben Sie bitte eine englische Länderbezeichnung ein. ';
-
- if($error!=''){
- $this->app->Tpl->Set('MESSAGE', "$error
");
- }else{
- if($error == ""){
- $this->app->DB->Update("UPDATE laender SET iso='{$input['iso']}', bezeichnung_de='{$input['bezeichnung_de']}', bezeichnung_en='{$input['bezeichnung_en']}', eu='{$input['eu']}' WHERE id = '$id' LIMIT 1");
- if($input['eu']==1){
- $this->app->Tpl->Set('EU', "checked");
- }
- $this->app->Tpl->Set('MESSAGE', "Die Einstellungen wurden erfolgreich übernommen.
");
- }
- }
- }
- $iso = $this->app->DB->Select("SELECT iso FROM laender WHERE id = '$id'");
- $bezeichnung_de = $this->app->DB->Select("SELECT bezeichnung_de FROM laender WHERE id = '$id'");
- $bezeichnung_en = $this->app->DB->Select("SELECT bezeichnung_en FROM laender WHERE id = '$id'");
- $eu = $this->app->DB->Select("SELECT eu FROM laender WHERE id = '$id'");
-
-
- $this->app->Tpl->Set('ISO', $iso);
- $this->app->Tpl->Set('BEZEICHNUNG_DE', $bezeichnung_de);
- $this->app->Tpl->Set('BEZEICHNUNG_EN', $bezeichnung_en);
- if($eu == 1){
- $this->app->Tpl->Set('EU', "checked");
- }
-
-
- //$this->SetInput($input);
-
- $this->app->Tpl->Parse('PAGE', "laender_edit.tpl");
- }
-
- function LaenderDelete()
- {
- $ref = $_SERVER['HTTP_REFERER'];
- $id = $this->app->Secure->GetGET("id");
- $this->app->DB->DELETE("DELETE FROM laender WHERE id = '$id' LIMIT 1");
-
- //$this->VorlageList();
- header("Location: $ref");
- exit;
- }
-
- function LaenderCreate(){
- // $this->app->Tpl->Add(KURZUEBERSCHRIFT,"Benutzer");
- $this->app->erp->MenuEintrag("index.php?module=laender&action=list","Zurück zur Übersicht");
-
- $input = $this->GetInput();
- $submit = $this->app->Secure->GetPOST('submitland');
-
- if($submit!='') {
-
- $error = '';
-
- if($input['iso']=='' || strlen(trim($input['iso'])) > 2) $error .= 'Geben Sie bitte einen zweistelligen ISO-Code ein. ';
- if($input['bezeichnung_de']=='') $error .= 'Geben Sie bitte eine deutsche Länderbezeichnung ein. ';
- if($input['bezeichnung_en']=='') $error .= 'Geben Sie bitte eine englische Länderbezeichnung ein. ';
-
- if($this->app->DB->Select("SELECT '1' FROM laender WHERE iso='{$input['iso']}' LIMIT 1")=='1')
- $error .= "Es existiert bereits ein ISO-Code mit diesem Namen. ";
-
- if($error!=''){
- $this->app->Tpl->Set('MESSAGE', "$error
");
- }else {
- $this->app->DB->Insert("INSERT INTO laender (iso, bezeichnung_de, bezeichnung_en, eu) VALUES ('{$input['iso']}', '{$input['bezeichnung_de']}', '{$input['bezeichnung_en']}', '{$input['eu']}')");
- $newid = $this->app->DB->GetInsertID();
- $msg = $this->app->erp->base64_url_encode("Der Ländereintrag wurde erfolgreich angelegt.
");
- header("Location: index.php?module=laender&action=edit&id=$newid&msg=$msg");
- exit;
- }
- }
-
- $this->SetInput($input);
-
- $this->app->Tpl->Parse('PAGE', "laender_edit.tpl");
- }
-
-
- function GetInput(){
- $input = array();
- $input['iso'] = $this->app->Secure->GetPOST('iso');
- $input['bezeichnung_de'] = $this->app->Secure->GetPOST('bezeichnung_de');
- $input['bezeichnung_en'] = $this->app->Secure->GetPOST('bezeichnung_en');
- $input['eu'] = (int)$this->app->Secure->GetPOST('eu');
- return $input;
-
- }
-
- function SetInput($input){
- $this->app->Tpl->Set('ISO', $input['iso']);
- $this->app->Tpl->Set('BEZEICHNUNG_DE', $input['bezeichnung_de']);
- $this->app->Tpl->Set('BEZEICHNUNG_EN', $input['bezeichnung_en']);
- if($input['eu']==1){
- $this->app->Tpl->Set('EU', "checked");
- }
-
-
- }
-
-}
+ Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"> Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"> ";
+
+ $where = " l.id > 0 ";
+
+ $sql = "SELECT SQL_CALC_FOUND_ROWS l.id, l.iso, l.iso3, l.bezeichnung_de, l.bezeichnung_en, if(l.eu,'EU',''), l.id FROM laender l";
+
+ $count = "SELECT count(l.id) FROM laender l WHERE $where";
+ break;
+
+ }
+
+ $erg = false;
+
+ foreach($erlaubtevars as $k => $v)
+ {
+ if(isset($$v))$erg[$v] = $$v;
+ }
+ return $erg;
+ }
+
+ function __construct($app, $intern = false) {
+ $this->app=$app;
+ if($intern)return;
+ $this->app->ActionHandlerInit($this);
+
+ // ab hier alle Action Handler definieren die das Modul hat
+ $this->app->ActionHandler("list", "LaenderList");
+ $this->app->ActionHandler("create", "LaenderCreate");
+ $this->app->ActionHandler("edit", "LaenderEdit");
+ $this->app->ActionHandler("delete", "LaenderDelete");
+ $this->app->ActionHandler('test', 'LaenderTest');
+
+ $this->app->ActionHandlerListen($app);
+ }
+
+ function LaenderTest(){
+ $countryModule = $this->app->Container->get('CountryMigrationService');
+ if($countryModule->needsMigration()){
+ $countryModule->doMigration();
+ }
+ }
+
+ function LaenderMenu()
+ {
+ $this->app->erp->MenuEintrag("index.php?module=laender&action=list","Zurück zur Übersicht");
+ }
+
+ function LaenderList()
+ {
+ $this->app->erp->MenuEintrag("index.php?module=laender&action=create","Neues Land");
+ $this->app->erp->MenuEintrag("index.php?module=laender&action=list","Übersicht");
+
+ $this->app->YUI->TableSearch('TAB1','laender_list', "show","","",basename(__FILE__), __CLASS__);
+ $this->app->Tpl->Parse("PAGE","laender_list.tpl");
+ }
+
+ function LaenderEdit()
+ {
+ $id = (int)$this->app->Secure->GetGET('id');
+ $submit = $this->app->Secure->GetPOST('submitland');
+
+ $this->app->Tpl->Add('KURZUEBERSCHRIFT2',$bezeichnung_de);
+
+
+
+ $input = array();
+
+ $this->app->erp->MenuEintrag("index.php?module=laender&action=edit&id=$id","Details");
+
+ $this->app->erp->MenuEintrag("index.php?module=laender&action=list","Zurück zur Übersicht");
+
+ $input = $this->GetInput();
+
+ if(is_numeric($id) && $submit!=''){
+
+ $error = '';
+ if($input['iso']=='' || strlen(trim($input['iso'])) > 2) $error .= 'Geben Sie bitte einen zweistelligen ISO-Code ein. ';
+ if($input['bezeichnung_de'] == '') $error .= 'Geben Sie bitte eine deutsche Länderbezeichnung ein. ';
+ if($input['bezeichnung_en'] =='') $error .= 'Geben Sie bitte eine englische Länderbezeichnung ein. ';
+
+ if($error!=''){
+ $this->app->Tpl->Set('MESSAGE', "$error
");
+ }else{
+ if($error == ""){
+ $this->app->DB->Update("UPDATE laender SET iso='{$input['iso']}', iso3='{$input['iso3']}', bezeichnung_de='{$input['bezeichnung_de']}', bezeichnung_en='{$input['bezeichnung_en']}', eu='{$input['eu']}' WHERE id = '$id' LIMIT 1");
+ if($input['eu']==1){
+ $this->app->Tpl->Set('EU', "checked");
+ }
+ $this->app->Tpl->Set('MESSAGE', "Die Einstellungen wurden erfolgreich übernommen.
");
+ }
+ }
+ }
+ $iso = $this->app->DB->Select("SELECT iso FROM laender WHERE id = '$id'");
+ $iso3 = $this->app->DB->Select("SELECT iso3 FROM laender WHERE id = '$id'");
+ $bezeichnung_de = $this->app->DB->Select("SELECT bezeichnung_de FROM laender WHERE id = '$id'");
+ $bezeichnung_en = $this->app->DB->Select("SELECT bezeichnung_en FROM laender WHERE id = '$id'");
+ $eu = $this->app->DB->Select("SELECT eu FROM laender WHERE id = '$id'");
+
+
+ $this->app->Tpl->Set('ISO', $iso);
+ $this->app->Tpl->Set('ISO3', $iso3);
+ $this->app->Tpl->Set('BEZEICHNUNG_DE', $bezeichnung_de);
+ $this->app->Tpl->Set('BEZEICHNUNG_EN', $bezeichnung_en);
+ if($eu == 1){
+ $this->app->Tpl->Set('EU', "checked");
+ }
+
+
+ //$this->SetInput($input);
+
+ $this->app->Tpl->Parse('PAGE', "laender_edit.tpl");
+ }
+
+ function LaenderDelete()
+ {
+ $ref = $_SERVER['HTTP_REFERER'];
+ $id = $this->app->Secure->GetGET("id");
+ $this->app->DB->DELETE("DELETE FROM laender WHERE id = '$id' LIMIT 1");
+
+ //$this->VorlageList();
+ header("Location: $ref");
+ exit;
+ }
+
+ function LaenderCreate(){
+ // $this->app->Tpl->Add(KURZUEBERSCHRIFT,"Benutzer");
+ $this->app->erp->MenuEintrag("index.php?module=laender&action=list","Zurück zur Übersicht");
+
+ $input = $this->GetInput();
+ $submit = $this->app->Secure->GetPOST('submitland');
+
+ if($submit!='') {
+
+ $error = '';
+
+ if($input['iso']=='' || strlen(trim($input['iso'])) > 2) $error .= 'Geben Sie bitte einen zweistelligen ISO-Code ein. ';
+ if($input['bezeichnung_de']=='') $error .= 'Geben Sie bitte eine deutsche Länderbezeichnung ein. ';
+ if($input['bezeichnung_en']=='') $error .= 'Geben Sie bitte eine englische Länderbezeichnung ein. ';
+
+ if($this->app->DB->Select("SELECT '1' FROM laender WHERE iso='{$input['iso']}' LIMIT 1")=='1')
+ $error .= "Es existiert bereits ein ISO-Code mit diesem Namen. ";
+
+ if($error!=''){
+ $this->app->Tpl->Set('MESSAGE', "$error
");
+ }else {
+ $this->app->DB->Insert("INSERT INTO laender (iso, iso3, bezeichnung_de, bezeichnung_en, eu) VALUES ('{$input['iso']}', '{$input['iso3']}', '{$input['bezeichnung_de']}', '{$input['bezeichnung_en']}', '{$input['eu']}')");
+ $newid = $this->app->DB->GetInsertID();
+ $msg = $this->app->erp->base64_url_encode("Der Ländereintrag wurde erfolgreich angelegt.
");
+ header("Location: index.php?module=laender&action=edit&id=$newid&msg=$msg");
+ exit;
+ }
+ }
+
+ $this->SetInput($input);
+
+ $this->app->Tpl->Parse('PAGE', "laender_edit.tpl");
+ }
+
+
+ function GetInput(){
+ $input = array();
+ $input['iso'] = $this->app->Secure->GetPOST('iso');
+ $input['iso3'] = $this->app->Secure->GetPOST('iso3');
+ $input['bezeichnung_de'] = $this->app->Secure->GetPOST('bezeichnung_de');
+ $input['bezeichnung_en'] = $this->app->Secure->GetPOST('bezeichnung_en');
+ $input['eu'] = (int)$this->app->Secure->GetPOST('eu');
+ return $input;
+
+ }
+
+ function SetInput($input){
+ $this->app->Tpl->Set('ISO', $input['iso']);
+ $this->app->Tpl->Set('ISO3', $input['iso3']);
+ $this->app->Tpl->Set('BEZEICHNUNG_DE', $input['bezeichnung_de']);
+ $this->app->Tpl->Set('BEZEICHNUNG_EN', $input['bezeichnung_en']);
+ if($input['eu']==1){
+ $this->app->Tpl->Set('EU', "checked");
+ }
+
+
+ }
+
+}
diff --git a/www/pages/lieferantengutschrift.php b/www/pages/lieferantengutschrift.php
index ae321994..0bc5ffa5 100644
--- a/www/pages/lieferantengutschrift.php
+++ b/www/pages/lieferantengutschrift.php
@@ -514,6 +514,31 @@ class lieferantengutschrift {
}
}
break;
+ case 'drucken':
+ $drucker = $this->app->Secure->GetPOST('seldrucker');
+ foreach ($selectedIds as $id) {
+ $file_attachments = $this->app->erp->GetDateiSubjektObjekt('%','lieferantengutschrift',$id);
+ if (!empty($file_attachments)) {
+ foreach ($file_attachments as $file_attachment) {
+ if ($this->app->erp->GetDateiEndung($file_attachment) == 'pdf') {
+ $file_contents = $this->app->erp->GetDatei($file_attachment);
+ $lieferantengutschrift = $this->app->DB->SelectRow("SELECT DATE_FORMAT(rechnungsdatum, '%Y%m%d') rechnungsdatum, belegnr FROM lieferantengutschrift WHERE id = ".$id." LIMIT 1");
+ $file_name = $lieferantengutschrift['rechnungsdatum']."_LG".$lieferantengutschrift['belegnr'].".pdf";
+ $file_path = rtrim($this->app->erp->GetTMP(),'/')."/".$file_name;
+ $handle = fopen ($file_path, "wb");
+ if ($handle)
+ {
+ fwrite($handle, $file_contents);
+ fclose($handle);
+ $this->app->printer->Drucken($drucker,$file_path);
+ } else {
+ $this->app->YUI->Message('error',"Drucken fehlgeschlagen!");
+ }
+ }
+ }
+ }
+ }
+ break;
}
}
break;
@@ -542,6 +567,8 @@ class lieferantengutschrift {
$this->app->User->SetParameter('table_lieferantengutschrift_list_zahlbarbis', '');
$this->app->User->SetParameter('table_lieferantengutschrift_list_skontobis', '');
+ $this->app->Tpl->Set('SELDRUCKER', $this->app->erp->GetSelectDrucker());
+
$this->app->Tpl->Parse('PAGE', "lieferantengutschrift_list.tpl");
}
diff --git a/www/pages/onlineshops.php b/www/pages/onlineshops.php
index 9cfda337..bccf47ed 100644
--- a/www/pages/onlineshops.php
+++ b/www/pages/onlineshops.php
@@ -3339,7 +3339,7 @@ INNER JOIN shopexport s ON
}
if($this->app->Secure->GetPOST('pruefen')) {
-
+
$className = 'Remote';
$methodName = 'RemoteConnection';
$r = new ReflectionMethod($className, $methodName);
diff --git a/www/pages/shopimport.php b/www/pages/shopimport.php
index e093318d..576ffdf9 100644
--- a/www/pages/shopimport.php
+++ b/www/pages/shopimport.php
@@ -1,4 +1,5 @@
app=$app;
- if($intern) {
- return;
- }
- $this->app->ActionHandlerInit($this);
+ const MODULE_NAME = 'Shopimport';
- $this->app->ActionHandler("login","ShopimportLogin");
- $this->app->ActionHandler("main","ShopimportMain");
- $this->app->ActionHandler("list","ShopimportList");
- $this->app->ActionHandler("alle","ShopimportAlle");
- $this->app->ActionHandler("import","ShopimportImport");
- $this->app->ActionHandler("einzelimport","ShopimportEinzelimport");
- $this->app->ActionHandler("navigation","ShopimportNavigation");
- $this->app->ActionHandler("logout","ShopimportLogout");
- $this->app->ActionHandler("archiv","ShopimportArchiv");
+ public $javascript = [
+ './classes/Modules/Shopimport/www/js/shopimport.js'
+ ];
- $this->app->DefaultActionHandler("list");
+ /**
+ * Shopimport constructor.
+ *
+ * @param Application $app
+ * @param bool $intern
+ */
+ public function __construct($app, $intern = false) {
+ $this->app = $app;
+ if ($intern) {
+ return;
+ }
+ $this->app->ActionHandlerInit($this);
+ $this->app->ActionHandler("login", "ShopimportLogin");
+ $this->app->ActionHandler("main", "ShopimportMain");
+ $this->app->ActionHandler("list", "ShopimportList");
+ $this->app->ActionHandler("alle", "ShopimportAlle");
+ $this->app->ActionHandler("import", "ShopimportImport");
+ $this->app->ActionHandler("view", "ShopimportView");
+ $this->app->ActionHandler("einzelimport", "ShopimportEinzelimport");
+ $this->app->ActionHandler("navigation", "ShopimportNavigation");
+ $this->app->ActionHandler("logout", "ShopimportLogout");
+ $this->app->ActionHandler("archiv", "ShopimportArchiv");
- $this->app->Tpl->Set('UEBERSCHRIFT','Shop Import');
- $this->app->ActionHandlerListen($app);
- }
+ $this->app->DefaultActionHandler("list");
- /**
- * @param int $shopId
- * @param array $data
- *
- * @return int
- *
- * @throws Exception
- */
- public function Refund($shopId, $data)
- {
- if(empty($shopId)) {
- throw new Exception('no Shop given');
- }
- if(empty($data)) {
- throw new Exception('no Data given');
+ $this->app->Tpl->Set('UEBERSCHRIFT', 'Shop Import');
+ $this->app->ActionHandlerListen($app);
}
- $shop = $this->app->DB->SelectRow(
- sprintf(
- 'SELECT `aktiv`, `id`, `artikelrabatt` FROM `shopexport` WHERE `id` = %d',
- $shopId
- )
- );
- if(empty($shop)) {
- throw new Exception('Shop not found');
- }
- if(empty($shop['aktiv'])) {
- throw new Exception('Shop is not active');
- }
+ /**
+ * @param int $shopId
+ * @param array $data
+ *
+ * @return int
+ *
+ * @throws Exception
+ */
+ public function Refund($shopId, $data) {
+ if (empty($shopId)) {
+ throw new Exception('no Shop given');
+ }
+ if (empty($data)) {
+ throw new Exception('no Data given');
+ }
- if(!empty($data->extid)) {
- $order = $this->app->DB->SelectRow(
- sprintf(
- "SELECT *
+ $shop = $this->app->DB->SelectRow(
+ sprintf(
+ 'SELECT `aktiv`, `id`, `artikelrabatt` FROM `shopexport` WHERE `id` = %d',
+ $shopId
+ )
+ );
+ if (empty($shop)) {
+ throw new Exception('Shop not found');
+ }
+ if (empty($shop['aktiv'])) {
+ throw new Exception('Shop is not active');
+ }
+
+ if (!empty($data->extid)) {
+ $order = $this->app->DB->SelectRow(
+ sprintf(
+ "SELECT *
FROM `auftrag`
WHERE `shop` = %d AND `shopextid` = '%s' AND `shopextid` <> ''
AND `status` <> 'storniert'
LIMIT 1",
- $shopId, $this->app->DB->real_escape_string((string)$data->extid)
- )
- );
- }
- elseif(!empty($data->internet)) {
- $order = $this->app->DB->SelectRow(
- sprintf(
- "SELECT *
+ $shopId, $this->app->DB->real_escape_string((string) $data->extid)
+ )
+ );
+ } elseif (!empty($data->internet)) {
+ $order = $this->app->DB->SelectRow(
+ sprintf(
+ "SELECT *
FROM `auftrag`
WHERE `shop` = %d AND `internet` = '%s' AND `internet` <> ''
AND `status` <> 'storniert'
LIMIT 1",
- $shopId, $this->app->DB->real_escape_string((string)$data->extid)
- )
- );
- }
- else {
- throw new Exception('No order given');
- }
+ $shopId, $this->app->DB->real_escape_string((string) $data->extid)
+ )
+ );
+ } else {
+ throw new Exception('No order given');
+ }
- if(empty($order)) {
- throw new Exception('order not found');
- }
+ if (empty($order)) {
+ throw new Exception('order not found');
+ }
- $invoice = $this->app->DB->SelectRow(
- sprintf(
- "SELECT * FROM `rechnung` WHERE `auftragid` = %d ORDER BY `status` = 'storniert' LIMIT 1",
- $order['id']
- )
- );
+ $invoice = $this->app->DB->SelectRow(
+ sprintf(
+ "SELECT * FROM `rechnung` WHERE `auftragid` = %d ORDER BY `status` = 'storniert' LIMIT 1",
+ $order['id']
+ )
+ );
- if(empty($invoice)) {
- if(empty($data->createinvoice)){
- throw new Exception('order has no invoice');
- }
- $invoiceId = $this->app->erp->WeiterfuehrenAuftragZuRechnung($order['id']);
- $this->app->erp->AuftragProtokoll($order['id'], 'Rechnung erstellt durch Shop-Trigger');
- $this->app->erp->RechnungProtokoll($invoiceId, 'Rechnung erstellt durch Shop-Trigger');
- $this->app->erp->BelegFreigabe('rechnung', $invoiceId);
- $this->app->erp->RechnungNeuberechnen($invoiceId);
- $invoice = $this->app->DB->SelectRow(
- sprintf(
- "SELECT * FROM `rechnung` WHERE `auftragid` = %d ORDER BY `status` = 'storniert' LIMIT 1",
- $order['id']
- )
- );
- }
+ if (empty($invoice)) {
+ if (empty($data->createinvoice)) {
+ throw new Exception('order has no invoice');
+ }
+ $invoiceId = $this->app->erp->WeiterfuehrenAuftragZuRechnung($order['id']);
+ $this->app->erp->AuftragProtokoll($order['id'], 'Rechnung erstellt durch Shop-Trigger');
+ $this->app->erp->RechnungProtokoll($invoiceId, 'Rechnung erstellt durch Shop-Trigger');
+ $this->app->erp->BelegFreigabe('rechnung', $invoiceId);
+ $this->app->erp->RechnungNeuberechnen($invoiceId);
+ $invoice = $this->app->DB->SelectRow(
+ sprintf(
+ "SELECT * FROM `rechnung` WHERE `auftragid` = %d ORDER BY `status` = 'storniert' LIMIT 1",
+ $order['id']
+ )
+ );
+ }
- if($invoice['status'] === 'storniert') {
- throw new Exception('order invoice is already cancelled');
- }
- if(!empty($data->positions)) {
- $positions = $this->app->DB->SelectArr(
- sprintf(
- "SELECT `op`.webid, ip.artikel, ip.menge,ip.preis, ip.rabatt, ip.auftrag_position_id
+ if ($invoice['status'] === 'storniert') {
+ throw new Exception('order invoice is already cancelled');
+ }
+ if (!empty($data->positions)) {
+ $positions = $this->app->DB->SelectArr(
+ sprintf(
+ "SELECT `op`.webid, ip.artikel, ip.menge,ip.preis, ip.rabatt, ip.auftrag_position_id
FROM `rechnung_position` AS `ip`
INNER JOIN `auftrag_position` AS `op` ON ip.auftrag_position_id = op.id
WHERE `ip`.rechnung = %d",
- $invoice['id']
- )
- );
- if(empty($positions)) {
- throw new Exception('invoice has no positions');
- }
- $webIds = [];
- $foundWebIds = [];
- foreach($positions as $position) {
- if(!empty($position['webid'])) {
- $webIds[] = $position['webid'];
- }
- }
+ $invoice['id']
+ )
+ );
+ if (empty($positions)) {
+ throw new Exception('invoice has no positions');
+ }
+ $webIds = [];
+ $foundWebIds = [];
+ foreach ($positions as $position) {
+ if (!empty($position['webid'])) {
+ $webIds[] = $position['webid'];
+ }
+ }
- $webIdToPosition = [];
+ $webIdToPosition = [];
- foreach($data->positions as $position) {
- if(!empty($position->webid)){
- if(!in_array((string)$position->webid, $webIds)){
- throw new Exception(sprintf('position %s not found', (string)$position->webid));
- }
- $foundWebIds[] = (string)$position->webid;
- $webIdToPosition[$position->webid] = $position;
- }
- else {
- throw new Exception('no webId given');
- }
- }
+ foreach ($data->positions as $position) {
+ if (!empty($position->webid)) {
+ if (!in_array((string) $position->webid, $webIds)) {
+ throw new Exception(sprintf('position %s not found', (string) $position->webid));
+ }
+ $foundWebIds[] = (string) $position->webid;
+ $webIdToPosition[$position->webid] = $position;
+ } else {
+ throw new Exception('no webId given');
+ }
+ }
- if(empty($foundWebIds)) {
- throw new Exception('positions empty');
- }
+ if (empty($foundWebIds)) {
+ throw new Exception('positions empty');
+ }
- $toDeleteInvoicePositionIds = [0];
- foreach($positions as $position) {
- if(empty($position['webid']) || !in_array($position['webid'], $foundWebIds)) {
- $toDeleteInvoicePositionIds[] = (int)$position['auftrag_position_id'];
- }
- }
+ $toDeleteInvoicePositionIds = [0];
+ foreach ($positions as $position) {
+ if (empty($position['webid']) || !in_array($position['webid'], $foundWebIds)) {
+ $toDeleteInvoicePositionIds[] = (int) $position['auftrag_position_id'];
+ }
+ }
- $creditNoteId = $this->app->erp->WeiterfuehrenRechnungZuGutschrift($invoice['id']);
- $this->app->erp->RechnungProtokoll($invoice['id'], 'Rechnung durch Shop-Trigger storniert');
- $this->app->erp->GutschriftProtokoll($creditNoteId, 'Gutschrift durch Shop-Trigger angelegt');
- $this->app->erp->BelegFreigabe('gutschrift', $creditNoteId);
- $this->app->DB->Delete(
- sprintf(
- "DELETE FROM `gutschrift_position` WHERE `gutschrift` = %d AND `auftrag_position_id` IN (%s)",
- $creditNoteId, implode(',', $toDeleteInvoicePositionIds)
- )
- );
- $hasCreditNoteTax = !empty($this->app->erp->GutschriftMitUmsatzeuer($creditNoteId));
- $this->app->erp->GutschriftNeuberechnen($creditNoteId);
- $creditNote = $this->app->DB->SelectRow(
- sprintf(
- 'SELECT * FROM `gutschrift` WHERE `id` = %d',
- $creditNoteId
- )
- );
- $creditNotePositions = $this->app->DB->SelectArr(
- sprintf(
- "SELECT op.webid, cnp.id, cnp.menge, cnp.preis, cnp.rabatt, cnp.umsatzsteuer,
+ $creditNoteId = $this->app->erp->WeiterfuehrenRechnungZuGutschrift($invoice['id']);
+ $this->app->erp->RechnungProtokoll($invoice['id'], 'Rechnung durch Shop-Trigger storniert');
+ $this->app->erp->GutschriftProtokoll($creditNoteId, 'Gutschrift durch Shop-Trigger angelegt');
+ $this->app->erp->BelegFreigabe('gutschrift', $creditNoteId);
+ $this->app->DB->Delete(
+ sprintf(
+ "DELETE FROM `gutschrift_position` WHERE `gutschrift` = %d AND `auftrag_position_id` IN (%s)",
+ $creditNoteId, implode(',', $toDeleteInvoicePositionIds)
+ )
+ );
+ $hasCreditNoteTax = !empty($this->app->erp->GutschriftMitUmsatzeuer($creditNoteId));
+ $this->app->erp->GutschriftNeuberechnen($creditNoteId);
+ $creditNote = $this->app->DB->SelectRow(
+ sprintf(
+ 'SELECT * FROM `gutschrift` WHERE `id` = %d',
+ $creditNoteId
+ )
+ );
+ $creditNotePositions = $this->app->DB->SelectArr(
+ sprintf(
+ "SELECT op.webid, cnp.id, cnp.menge, cnp.preis, cnp.rabatt, cnp.umsatzsteuer,
cnp.steuersatz
FROM `gutschrift_position` AS `cnp`
INNER JOIN `auftrag_position` AS `op` ON cnp.auftrag_position_id = op.id
WHERE cnp.gutschrift = %d",
- $creditNoteId
- )
- );
- foreach($creditNotePositions as $creditNotePosition) {
- if(isset($webIdToPosition[$creditNotePosition['webid']])) {
- $position = $webIdToPosition[$creditNotePosition['webid']];
- if(!empty($position->quantity)) {
- $this->app->DB->Update(
- sprintf(
- "UPDATE `gutschrift_position` SET `menge` = %f WHERE `id` = %d",
- (float)$position->quantity, $creditNotePosition['id']
- )
+ $creditNoteId
+ )
);
- }
- elseif(!empty($position->menge)) {
- $this->app->DB->Update(
- sprintf(
- "UPDATE `gutschrift_position` SET `menge` = %f WHERE `id` = %d",
- (float)$position->menge, $creditNotePosition['id']
- )
- );
- }
- $preis = null;
- if(isset($position->price)) {
- $preis = (float)$position->price;
- }
- elseif(isset($position->preis)) {
- $preis = (float)$position->preis;
- }
- elseif(isset($position->amount)) {
- $preis = (float)$position->amount;
- }
- if($preis !== null) {
- if($hasCreditNoteTax) {
- if($creditNotePosition['steuersatz'] !== null && $creditNotePosition['steuersatz'] >= 0) {
- $preis /= 1+ $creditNotePosition['steuersatz'] / 100;
- }
- elseif($creditNotePosition['umsatzsteuer'] === 'ermaessigt') {
- $preis /= 1+ $creditNote['steuersatz_ermaessigt'] / 100;
- }
- elseif($creditNotePosition['umsatzsteuer'] !== 'befreit') {
- $preis /= 1+ $creditNote['steuersatz_normal'] / 100;
- }
+ foreach ($creditNotePositions as $creditNotePosition) {
+ if (isset($webIdToPosition[$creditNotePosition['webid']])) {
+ $position = $webIdToPosition[$creditNotePosition['webid']];
+ if (!empty($position->quantity)) {
+ $this->app->DB->Update(
+ sprintf(
+ "UPDATE `gutschrift_position` SET `menge` = %f WHERE `id` = %d",
+ (float) $position->quantity, $creditNotePosition['id']
+ )
+ );
+ } elseif (!empty($position->menge)) {
+ $this->app->DB->Update(
+ sprintf(
+ "UPDATE `gutschrift_position` SET `menge` = %f WHERE `id` = %d",
+ (float) $position->menge, $creditNotePosition['id']
+ )
+ );
+ }
+ $preis = null;
+ if (isset($position->price)) {
+ $preis = (float) $position->price;
+ } elseif (isset($position->preis)) {
+ $preis = (float) $position->preis;
+ } elseif (isset($position->amount)) {
+ $preis = (float) $position->amount;
+ }
+ if ($preis !== null) {
+ if ($hasCreditNoteTax) {
+ if ($creditNotePosition['steuersatz'] !== null && $creditNotePosition['steuersatz'] >= 0) {
+ $preis /= 1 + $creditNotePosition['steuersatz'] / 100;
+ } elseif ($creditNotePosition['umsatzsteuer'] === 'ermaessigt') {
+ $preis /= 1 + $creditNote['steuersatz_ermaessigt'] / 100;
+ } elseif ($creditNotePosition['umsatzsteuer'] !== 'befreit') {
+ $preis /= 1 + $creditNote['steuersatz_normal'] / 100;
+ }
+ }
+ $this->app->DB->Update(
+ sprintf(
+ 'UPDATE `gutschrift_position` SET `preis` = %f, `rabatt` = 0 WHERE `id` = %d',
+ $preis, $creditNotePosition['id']
+ )
+ );
+ }
+ }
}
- $this->app->DB->Update(
- sprintf(
- 'UPDATE `gutschrift_position` SET `preis` = %f, `rabatt` = 0 WHERE `id` = %d',
- $preis, $creditNotePosition['id']
- )
+
+ $this->app->erp->GutschriftNeuberechnen($creditNoteId);
+
+ if (!empty($data->amount)) {
+ $soll = $this->app->DB->Select(sprintf('SELECT `soll` FROM `gutschrift` WHERE `id` = %d', $creditNoteId));
+ $diff = round($soll, 2) - round((float) $data->amount, 2);
+ if ($diff == 0) {
+ return $creditNoteId;
+ }
+ $this->app->erp->AddPositionManuellPreis(
+ 'gutschrift', $creditNoteId, $shop['artikelrabatt'], 1, 'Differenz', -$diff, 'befreit', $invoice['waehrung']
+ );
+ }
+
+ return (int) $creditNoteId;
+ }
+ $creditNoteId = $this->app->erp->WeiterfuehrenRechnungZuGutschrift($invoice['id']);
+ $this->app->erp->RechnungProtokoll($invoice['id'], 'Rechnung durch Shop-Trigger storniert');
+ $this->app->erp->GutschriftProtokoll($creditNoteId, 'Gutschrift durch Shop-Trigger angelegt');
+ $this->app->erp->BelegFreigabe('gutschrift', $creditNoteId);
+ $this->app->erp->GutschriftNeuberechnen($creditNoteId);
+ if (!empty($data->amount)) {
+ $soll = $this->app->DB->Select(sprintf('SELECT `soll` FROM `gutschrift` WHERE `id` = %d', $creditNoteId));
+ $diff = round($soll, 2) - round((float) $data->amount, 2);
+ if ($diff == 0) {
+ return $creditNoteId;
+ }
+ $this->app->erp->AddPositionManuellPreis(
+ 'gutschrift', $creditNoteId, $shop['artikelrabatt'], 1, 'Differenz', -$diff, 'befreit', $invoice['waehrung']
);
- }
}
- }
- $this->app->erp->GutschriftNeuberechnen($creditNoteId);
+ return (int) $creditNoteId;
+ }
- if(!empty($data->amount)) {
- $soll = $this->app->DB->Select(sprintf('SELECT `soll` FROM `gutschrift` WHERE `id` = %d', $creditNoteId));
- $diff = round($soll,2) - round((float)$data->amount, 2);
- if($diff == 0) {
- return $creditNoteId;
+ public function ShopimportList() {
+ $msg = $this->app->Secure->GetGET('msg');
+ if (!empty($msg)) {
+ $msg = $this->app->erp->base64_url_decode($msg);
+ $this->app->Tpl->Set('MESSAGE', $msg);
}
- $this->app->erp->AddPositionManuellPreis(
- 'gutschrift', $creditNoteId, $shop['artikelrabatt'], 1, 'Differenz', -$diff,'befreit', $invoice['waehrung']
- );
- }
+ $this->app->erp->MenuEintrag('index.php?module=importvorlage&action=uebersicht', 'Zurück zur Übersicht');
- return (int)$creditNoteId;
- }
- $creditNoteId = $this->app->erp->WeiterfuehrenRechnungZuGutschrift($invoice['id']);
- $this->app->erp->RechnungProtokoll($invoice['id'], 'Rechnung durch Shop-Trigger storniert');
- $this->app->erp->GutschriftProtokoll($creditNoteId, 'Gutschrift durch Shop-Trigger angelegt');
- $this->app->erp->BelegFreigabe('gutschrift', $creditNoteId);
- $this->app->erp->GutschriftNeuberechnen($creditNoteId);
- if(!empty($data->amount)) {
- $soll = $this->app->DB->Select(sprintf('SELECT `soll` FROM `gutschrift` WHERE `id` = %d', $creditNoteId));
- $diff = round($soll,2) - round((float)$data->amount, 2);
- if($diff == 0) {
- return $creditNoteId;
- }
- $this->app->erp->AddPositionManuellPreis(
- 'gutschrift', $creditNoteId, $shop['artikelrabatt'], 1, 'Differenz', -$diff,'befreit', $invoice['waehrung']
- );
- }
+ //$this->app->Tpl->Add(TABS,"Shopimport ");
+ $this->app->erp->Headlines('Shopimport');
+ //$this->app->erp->MenuEintrag("index.php?module=shopimport&action=alle","Alle importieren");
+ $this->app->erp->MenuEintrag('index.php?module=shopimport&action=list', 'Übersicht');
- return (int)$creditNoteId;
- }
-
- public function ShopimportList()
- {
- $msg = $this->app->Secure->GetGET('msg');
- if(!empty($msg))
- {
- $msg = $this->app->erp->base64_url_decode($msg);
- $this->app->Tpl->Set('MESSAGE',$msg);
- }
- $this->app->erp->MenuEintrag('index.php?module=importvorlage&action=uebersicht','Zurück zur Übersicht');
-
- //$this->app->Tpl->Add(TABS,"Shopimport ");
- $this->app->erp->Headlines('Shopimport');
- //$this->app->erp->MenuEintrag("index.php?module=shopimport&action=alle","Alle importieren");
- $this->app->erp->MenuEintrag('index.php?module=shopimport&action=list','Übersicht');
-
- if($this->app->erp->RechteVorhanden('shopimport','alle')){
- $this->app->Tpl->Add('INHALT', " ");
- }
- //$this->app->Tpl->Set('SUBHEADING',"Imports");
- //Jeder der in Nachbesserung war egal ob auto oder manuell wandert anschliessend in Manuelle-Freigabe");
- $runningcronjob = $this->app->DB->Select("SELECT id FROM prozessstarter WHERE parameter = 'shopimport' AND aktiv=1 AND mutex = 1 AND UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(letzteausfuerhung) < 300 LIMIT 1");
- if($runningcronjob)
- {
- $this->app->Tpl->Set('TAB1','Es läuft gerade ein Cronjob der Aufträge abholt. Die manuelle Auftragsabholung ist in dieser Zeit gesperrt. Bitte warten Sie ein paar Minuten und versuchen Sie es erneut.
');
- }else{
- $table = new EasyTable($this->app);
- $table->Query("SELECT ae.bezeichnung,p.abkuerzung,
+ if ($this->app->erp->RechteVorhanden('shopimport', 'alle')) {
+ $this->app->Tpl->Add('INHALT', " ");
+ }
+ //$this->app->Tpl->Set('SUBHEADING',"Imports");
+ //Jeder der in Nachbesserung war egal ob auto oder manuell wandert anschliessend in Manuelle-Freigabe");
+ $runningcronjob = $this->app->DB->Select("SELECT id FROM prozessstarter WHERE parameter = 'shopimport' AND aktiv=1 AND mutex = 1 AND UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(letzteausfuerhung) < 300 LIMIT 1");
+ if ($runningcronjob) {
+ $this->app->Tpl->Set('TAB1', 'Es läuft gerade ein Cronjob der Aufträge abholt. Die manuelle Auftragsabholung ist in dieser Zeit gesperrt. Bitte warten Sie ein paar Minuten und versuchen Sie es erneut.
');
+ } else {
+ $table = new EasyTable($this->app);
+ $table->Query("SELECT ae.bezeichnung,p.abkuerzung as Projekt,
ae.id FROM shopexport ae LEFT JOIN projekt p ON p.id=ae.projekt WHERE ae.aktiv='1'");
- $table->DisplayNew('INHALT'," ");
- $this->app->Tpl->Parse('TAB1','rahmen.tpl');
- }
- $this->app->Tpl->Set('INHALT','');
+ $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
+ // 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\"> ");
+ $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','');
+ $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
+ $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
+ $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->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');
+ $this->app->Tpl->Set('SUBHEADING', '');
+ $this->app->Tpl->Parse('PAGE', 'shopimport_list.tpl');
}
- $result = $this->app->DB->SelectArr("SELECT * FROM shopimport_auftraege WHERE DATE_FORMAT(logdatei,'%Y-%m-%d') = '$datum'");
+ 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');
- $table = '';
+ //$this->app->YUI->TableSearch('TAB1',"shopimportarchiv");
+ //$this->app->Tpl->Set('TAB1',"Shopimport - Archiv");
- if(is_array($result))
- {
- foreach($result as $key=>$row)
- {
- //$table = $row['imported'];
- if(isset($row['jsonencoded']) && $row['jsonencoded'])
- {
- $warenkorb = json_decode(base64_decode($row['warenkorb']), true);
- }else{
- $warenkorb = unserialize(base64_decode($row['warenkorb']));
- }
- $this->app->stringcleaner->XMLArray_clean($warenkorb);
-
- $table .= "".$warenkorb["onlinebestellnummer"]."/".$warenkorb["transaktionsnummer"]." ".$warenkorb["name"]." ".$warenkorb["email"]." ".$warenkorb["gesamtsumme"]."
- mehr Informationen ";
-
- }
- }
-
- $table .= '
';
-
- if($more > 0)
- {
- $result = $this->app->DB->Select("SELECT warenkorb FROM shopimport_auftraege WHERE id='$more' LIMIT 1");
- if($this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE id='$more' AND jsonencoded = 1 LIMIT 1"))
- {
- $warenkorb = json_decode(base64_decode($result), true);
- }else{
- $warenkorb = unserialize(base64_decode($result));
- }
-
- ob_start();
- var_dump($warenkorb);
- $var_dump_result = ob_get_clean();
-
- $table .=''.$var_dump_result.' ';
-
- }
-
- $this->app->Tpl->Set('TAB1',$table);
- $this->app->Tpl->Parse('PAGE','tabview.tpl');
- }
-
-
- public function ShopimportAlle()
- {
- $runningcronjob = $this->app->DB->Select("SELECT id FROM prozessstarter WHERE parameter = 'shopimport' AND aktiv=1 AND mutex = 1 AND UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(letzteausfuerhung) < 300 LIMIT 1");
- if(!empty($runningcronjob))
- {
- $this->app->Location->execute('index.php?module=shopimport&action=list');
- }
- $lastshop = false;
- $shops = $this->app->DB->SelectArr("SELECT ae.id as id FROM shopexport ae LEFT JOIN projekt p ON p.id=ae.projekt WHERE ae.aktiv='1' and ae.demomodus <> '1'");
- if(!empty($shops))
- {
- $anz = 0;
- $fp = $this->app->erp->ProzessLock('shopimport_alle');
- $cshops = (!empty($shops)?count($shops):0);
- for($i=0;$i<$cshops-1;$i++)
- {
- $anz += $this->ShopimportImport($shops[$i]['id'],$anz,true);
- }
- $lastshop=$shops[(!empty($shops)?count($shops):0)-1]['id'];
- $this->app->erp->ProzessUnlock($fp);
- }
- if($lastshop && is_numeric($lastshop)){
- $this->app->Location->execute('index.php?module=shopimport&action=import&id='.$lastshop);
- }
- else{
- $this->app->Location->execute('index.php?module=shopimport&action=list');
- }
- }
-
- /**
- * @param int $shopId
- * @param string $shopOrderNumber
- * @param bool $changeShopOrderStatus
- * @param int $projectId
- * @param bool $allStati
- *
- * @return array
- */
- public function importSingleOrder($shopId, $shopOrderNumber, $changeShopOrderStatus, $projectId, $allStati = false)
- {
- $pageContents = $this->app->remote->RemoteConnection($shopId);
- if($pageContents==='success')
- {
- $orderCount = $this->app->remote->RemoteGetAuftraegeAnzahlNummer($shopId, $shopOrderNumber);
-
- if($orderCount > 0)
- {
- if($allStati){
- $result = $this->app->remote->RemoteCommand($shopId, 'getauftrag', ['nummer' => $shopOrderNumber]);
- }
- else {
- $result = $this->app->remote->RemoteGetAuftragNummer($shopId, $shopOrderNumber);
+ if ($datum == '') {
+ $datum = date('Y-m-d');
}
- if(is_array($result))
- {
- $result = reset($result);
- $shopExtId = $result['id'];
- $sessionid = $result['sessionid'];
- $jsonEncoded = 0;
- if(empty(!$result['warenkorbjson'])) {
- $jsonEncoded = 1;
- $warenkorb = $result['warenkorbjson'];
- } else{
- $warenkorb = $result['warenkorb'];
- }
- $logdatei = $result['logdatei'];
- $username = !empty($this->app->User)?$this->app->User->GetName():'Cronjob';
- $this->app->DB->Insert(
- sprintf(
- "INSERT INTO shopimport_auftraege (extid,sessionid,warenkorb,imported,projekt,bearbeiter,logdatei, jsonencoded, shopid)
+ $result = $this->app->DB->SelectArr("SELECT * FROM shopimport_auftraege WHERE DATE_FORMAT(logdatei,'%Y-%m-%d') = '$datum'");
+
+ $table = '';
+
+ if (is_array($result)) {
+ foreach ($result as $key => $row) {
+ //$table = $row['imported'];
+ if (isset($row['jsonencoded']) && $row['jsonencoded']) {
+ $warenkorb = json_decode(base64_decode($row['warenkorb']), true);
+ } else {
+ $warenkorb = unserialize(base64_decode($row['warenkorb']));
+ }
+ $this->app->stringcleaner->XMLArray_clean($warenkorb);
+
+ $table .= "" . $warenkorb["onlinebestellnummer"] . "/" . $warenkorb["transaktionsnummer"] . " " . $warenkorb["name"] . " " . $warenkorb["email"] . " " . $warenkorb["gesamtsumme"] . "
+ mehr Informationen ";
+ }
+ }
+
+ $table .= '
';
+
+ if ($more > 0) {
+ $result = $this->app->DB->Select("SELECT warenkorb FROM shopimport_auftraege WHERE id='$more' LIMIT 1");
+ if ($this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE id='$more' AND jsonencoded = 1 LIMIT 1")) {
+ $warenkorb = json_decode(base64_decode($result), true);
+ } else {
+ $warenkorb = unserialize(base64_decode($result));
+ }
+
+ ob_start();
+ var_dump($warenkorb);
+ $var_dump_result = ob_get_clean();
+
+ $table .= '' . $var_dump_result . ' ';
+ }
+
+ $this->app->Tpl->Set('TAB1', $table);
+ $this->app->Tpl->Parse('PAGE', 'tabview.tpl');
+ }
+
+ public function ShopimportAlle() {
+ $runningcronjob = $this->app->DB->Select("SELECT id FROM prozessstarter WHERE parameter = 'shopimport' AND aktiv=1 AND mutex = 1 AND UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(letzteausfuerhung) < 300 LIMIT 1");
+ if (!empty($runningcronjob)) {
+ $this->app->Location->execute('index.php?module=shopimport&action=list');
+ }
+ $lastshop = false;
+ $shops = $this->app->DB->SelectArr("SELECT ae.id as id FROM shopexport ae LEFT JOIN projekt p ON p.id=ae.projekt WHERE ae.aktiv='1' and ae.demomodus <> '1'");
+ if (!empty($shops)) {
+ $anz = 0;
+ $fp = $this->app->erp->ProzessLock('shopimport_alle');
+ $cshops = (!empty($shops) ? count($shops) : 0);
+ for ($i = 0; $i < $cshops - 1; $i++) {
+ $anz += $this->ShopimportImport($shops[$i]['id'], $anz, true);
+ }
+ $lastshop = $shops[(!empty($shops) ? count($shops) : 0) - 1]['id'];
+ $this->app->erp->ProzessUnlock($fp);
+ }
+ if ($lastshop && is_numeric($lastshop)) {
+ $this->app->Location->execute('index.php?module=shopimport&action=import&id=' . $lastshop);
+ } else {
+ $this->app->Location->execute('index.php?module=shopimport&action=list');
+ }
+ }
+
+ /**
+ * @param int $shopId
+ * @param string $shopOrderNumber
+ * @param bool $changeShopOrderStatus
+ * @param int $projectId
+ * @param bool $allStati
+ *
+ * @return array
+ */
+ public function importSingleOrder($shopId, $shopOrderNumber, $changeShopOrderStatus, $projectId, $allStati = false) {
+ $pageContents = $this->app->remote->RemoteConnection($shopId);
+ if ($pageContents === 'success') {
+ $orderCount = $this->app->remote->RemoteGetAuftraegeAnzahlNummer($shopId, $shopOrderNumber);
+
+ if ($orderCount > 0) {
+ if ($allStati) {
+ $result = $this->app->remote->RemoteCommand($shopId, 'getauftrag', ['nummer' => $shopOrderNumber]);
+ } else {
+ $result = $this->app->remote->RemoteGetAuftragNummer($shopId, $shopOrderNumber);
+ }
+
+ if (is_array($result)) {
+ $result = reset($result);
+ $shopExtId = $result['id'];
+ $sessionid = $result['sessionid'];
+ $jsonEncoded = 0;
+ if (empty(!$result['warenkorbjson'])) {
+ $jsonEncoded = 1;
+ $warenkorb = $result['warenkorbjson'];
+ } else {
+ $warenkorb = $result['warenkorb'];
+ }
+ $logdatei = $result['logdatei'];
+ $username = !empty($this->app->User) ? $this->app->User->GetName() : 'Cronjob';
+ $this->app->DB->Insert(
+ sprintf(
+ "INSERT INTO shopimport_auftraege (extid,sessionid,warenkorb,imported,projekt,bearbeiter,logdatei, jsonencoded, shopid)
VALUES('%s','%s','%s',0,%d, '%s','%s', %d, %d)",
- $this->app->DB->real_escape_string($shopExtId),
- $this->app->DB->real_escape_string($sessionid),
- $this->app->DB->real_escape_string($warenkorb),
- (int)$projectId,
- $this->app->DB->real_escape_string($username),
- $this->app->DB->real_escape_string($logdatei),
- $jsonEncoded,
- (int)$shopId
- )
- );
- $insid = $this->app->DB->GetInsertID();
- if($changeShopOrderStatus && (String)$shopExtId !== '')
- {
- $this->app->remote->RemoteDeleteAuftrag($shopId, $shopExtId);
- }
- return ['status'=>1,'id'=>$insid,'info'=>'Auftrag wurde abgeholt.'];
+ $this->app->DB->real_escape_string($shopExtId),
+ $this->app->DB->real_escape_string($sessionid),
+ $this->app->DB->real_escape_string($warenkorb),
+ (int) $projectId,
+ $this->app->DB->real_escape_string($username),
+ $this->app->DB->real_escape_string($logdatei),
+ $jsonEncoded,
+ (int) $shopId
+ )
+ );
+ $insid = $this->app->DB->GetInsertID();
+ if ($changeShopOrderStatus && (String) $shopExtId !== '') {
+ $this->app->remote->RemoteDeleteAuftrag($shopId, $shopExtId);
+ }
+ return ['status' => 1, 'id' => $insid, 'info' => 'Auftrag wurde abgeholt.'];
+ }
+ }
+ return ['status' => 0, 'error' => 'Auftrag wurde nicht gefunden!'];
}
- }
- return ['status'=>0,'error'=>'Auftrag wurde nicht gefunden!'];
+ return ['status' => 0, 'error' => 'Verbindung fehlgeschlagen!'];
}
- return ['status'=>0,'error'=>'Verbindung fehlgeschlagen!'];
- }
- public function ShopimportEinzelimport()
- {
- $runningcronjob = $this->app->DB->Select("SELECT id FROM prozessstarter WHERE parameter = 'shopimport' AND aktiv=1 AND mutex = 1 AND UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(letzteausfuerhung) < 300 LIMIT 1");
- if(!empty($runningcronjob))
- {
- $this->app->Location->execute('index.php?module=shopimport&action=list');
- }
- $id = (int)$this->app->Secure->GetGET('id');
- $nummer = (String)$this->app->Secure->GetGET('nummer');
- if($nummer === '')
- {
- $nummer = (String)$this->app->Secure->GetPOST('nummer');
- }
- $deleteauftrag = (int)$this->app->Secure->GetPOST('deleteauftrag');
- if(!empty($id) && !empty($nummer))
- {
- $shoparr = $this->app->DB->SelectRow("SELECT projekt,holealle FROM shopexport WHERE id = '$id' LIMIT 1");
- $projekt = $shoparr['projekt'];//$this->app->DB->Select("SELECT projekt FROM shopexport WHERE id = '$id' LIMIT 1");
- $holealle = $shoparr['holealle'];//$this->app->DB->Select("SELECT holealle FROM shopexport WHERE id = '$id' LIMIT 1");
- if($holealle)
- {
+ public function ShopimportEinzelimport() {
+ $runningcronjob = $this->app->DB->Select("SELECT id FROM prozessstarter WHERE parameter = 'shopimport' AND aktiv=1 AND mutex = 1 AND UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(letzteausfuerhung) < 300 LIMIT 1");
+ if (!empty($runningcronjob)) {
+ $this->app->Location->execute('index.php?module=shopimport&action=list');
+ }
+ $id = (int) $this->app->Secure->GetGET('id');
+ $nummer = (String) $this->app->Secure->GetGET('nummer');
+ if ($nummer === '') {
+ $nummer = (String) $this->app->Secure->GetPOST('nummer');
+ }
+ $deleteauftrag = (int) $this->app->Secure->GetPOST('deleteauftrag');
+ if (!empty($id) && !empty($nummer)) {
+ $shoparr = $this->app->DB->SelectRow("SELECT projekt,holealle FROM shopexport WHERE id = '$id' LIMIT 1");
+ $projekt = $shoparr['projekt']; //$this->app->DB->Select("SELECT projekt FROM shopexport WHERE id = '$id' LIMIT 1");
+ $holealle = $shoparr['holealle']; //$this->app->DB->Select("SELECT holealle FROM shopexport WHERE id = '$id' LIMIT 1");
+ if ($holealle) {
- $res = $this->importSingleOrder($id, $nummer, $deleteauftrag, $projekt);
- if($res['status'] == 1){
- $this->app->Tpl->Add('MESSAGE',''.$res['info'].'
');
+ $res = $this->importSingleOrder($id, $nummer, $deleteauftrag, $projekt);
+ if ($res['status'] == 1) {
+ $this->app->Tpl->Add('MESSAGE', '' . $res['info'] . '
');
+ } else {
+ $this->app->Tpl->Add('MESSAGE', '' . $res['error'] . '
');
+ }
+ } else {
+ $this->app->Tpl->Add('MESSAGE', 'Shop nicht auf alle Aufträge eingstellt!
');
+ }
+ } elseif ($id <= 0) {
+ $msg = $this->app->erp->base64_url_encode('Kein Shop gewählt!
');
+ $this->app->Location->execute('index.php?module=shopimport&action=list&msg=' . $msg);
} else {
- $this->app->Tpl->Add('MESSAGE',''.$res['error'].'
');
+ $this->app->Tpl->Add('MESSAGE', 'Keine Nummer angegeben!
');
}
- }else{
- $this->app->Tpl->Add('MESSAGE','Shop nicht auf alle Aufträge eingstellt!
');
- }
- } elseif($id <= 0) {
- $msg = $this->app->erp->base64_url_encode('Kein Shop gewählt!
');
- $this->app->Location->execute('index.php?module=shopimport&action=list&msg='.$msg);
- } else {
- $this->app->Tpl->Add('MESSAGE','Keine Nummer angegeben!
');
- }
- $this->app->erp->MenuEintrag('index.php?module=shopimport&action=einzelimport&id='.$id,'Einzelimport');
- $this->app->erp->MenuEintrag('index.php?module=shopimport&action=import','Shopauftrag-Liste');
- $this->app->Tpl->Parse('PAGE','shopimport_einzelimport.tpl');
- }
-
- public function KundeAnlegenUpdate($shopimportid,$shopextid, $warenkorb, $kundennummer = 0, $import_kundennummer, &$unbekanntezahlungsweisen)
- {
- if(empty($warenkorb)) {
- return 0;
- }
- if(!empty($this->app->stringcleaner)){
- $this->app->stringcleaner->XMLArray_clean($warenkorb);
- }
- $i = 0;
- $sucess_import = 0;
- $shopid = $this->app->DB->Select("SELECT shopid FROM shopimport_auftraege WHERE id='$shopimportid' LIMIT 1");
- $shopexportArr = $this->app->DB->SelectRow(sprintf('SELECT * FROM shopexport WHERE id=%d', $shopid));
- $projekt = $shopexportArr['projekt'];//$this->app->DB->Select("SELECT projekt FROM shopexport WHERE id='$shopid'");
- if(!empty($warenkorb['projekt']) && $this->app->DB->Select("SELECT id FROM projekt WHERE id = '".(int)$warenkorb['projekt']."' LIMIT 1"))
- {
- $projekt = (int)$warenkorb['projekt'];
- }
- $adresseprojekt = '';
- $kundenurvonprojekt = $shopexportArr['kundenurvonprojekt'];//$this->app->DB->Select("SELECT kundenurvonprojekt FROM shopexport WHERE id = '".$shopid."' LIMIT 1");
- if($kundenurvonprojekt)
- {
- $adresseprojekt = $projekt;
+ $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');
}
- 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");
+ public function KundeAnlegenUpdate($shopimportid, $shopextid, $warenkorb, $kundennummer = 0, $import_kundennummer, &$unbekanntezahlungsweisen) {
+ if (empty($warenkorb)) {
+ return 0;
}
- 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;
+ 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')");
+ }
}
- }
- else{
- if(empty($warenkorb['kunde_sprache']))
- {
- $warenkorb['kunde_sprache'] = $defaultsprache;
+ }
+
+ $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(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')");
- }
- }
- }
+ 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");
+ }
- $kundenurvonprojekt = $this->app->DB->Select("SELECT kundenurvonprojekt FROM shopexport WHERE id = '$shopid' LIMIT 1");
- if($kundenurvonprojekt)
- {
- $adresseprojekt = " AND projekt = '".$adresseprojekt."' ";
- }else{
- $adresseprojekt = '';
- }
+ $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(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 (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($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 (!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");
+ }
+ }
}
- }
- 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']))
- {
+ } else {
+ //echo "import als Neu-Kunde $shopimportid ";
$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']))
- {
+ $name = $warenkorb['name'];
$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']))
- {
+ $ansprechpartner = $warenkorb['ansprechpartner'];
+ $adresszusatz = $warenkorb['adresszusatz'];
+ $strasse = $warenkorb['strasse'];
+ $land = $warenkorb['land'];
+ $plz = $warenkorb['plz'];
+ $ort = $warenkorb['ort'];
$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");
- }
+ // 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($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");
+ if (empty($adresse)) {
+ $adresse = $this->app->DB->Select("SELECT id FROM adresse WHERE email='{$warenkorb['email']}' and email <> '' $adresseprojekt AND geloescht!=1 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
+
+ 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
+ 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');
+ //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();
+ $bekanntezahlungsweisen = $this->app->erp->GetZahlungsweise();
- $tmpauftragid = $this->app->erp->ImportAuftrag($adresse,$warenkorb,$projekt,$shopid);
- $doctype = 'auftrag';
- if($this->app->DB->Select("SELECT angeboteanlegen FROM shopexport WHERE id = '$shopid' LIMIT 1"))
- {
- $doctype = 'angebot';
- }
+ $import_result = $this->app->erp->ImportAuftrag($adresse, $warenkorb, $projekt, $shopid);
- if(isset($warenkorb['doctype']) && $warenkorb['doctype']==='angebot'){
- $doctype = 'angebot';
- }
+ if ($import_result['status']) {
+ $tmpauftragid = $import_result['auftragid'];
+ $success_import = true;
- $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;
+ $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...
}
- }
-
- if($shopimportid)
- {
- $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 ='';
- $sucess_import++;
-
- return $sucess_import;
- }
-
- /**
- * @param String $gruppenBezeichnung im Shop
- * @param int $adresseId
- * @param int $shopId
- * @param int $projektId
- *
- * @return string
- */
- private function shopimportAdresseGruppenMapping($gruppenBezeichnung, $adresseId, $shopId, $projektId){
- $kundenGruppen = $this->getShopimportKundenGruppenZuordnungen($gruppenBezeichnung, $shopId, $projektId);
- if(empty($kundenGruppen)) {
- return '';
- }
- foreach ($kundenGruppen as $gruppe => $rolle){
- $this->app->erp->AddRolleZuAdresse($adresseId, $rolle, 'von', 'Gruppe', $gruppe);
+ return $success_import;
}
- return '';
- }
+ /**
+ * @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);
+ }
- /**
- * @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'");
+ return '';
}
- if(empty($gefundeneGruppen)) {
- 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;
}
- $kundenGruppen = [];
- foreach ($gefundeneGruppen as $gruppe){
- $kundenGruppen[$gruppe['gruppeid']] = $gruppe['type'];
+ /**
+ * @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;
}
- return $kundenGruppen;
- }
+ 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];
+ }
- /**
- * @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;
- }
+ if (isset($shopImportedOrder['jsonencoded']) && $shopImportedOrder['jsonencoded']) {
+ $shopOrder = json_decode(base64_decode($shopImportedOrder['warenkorb']), true);
+ } else {
+ $shopOrder = unserialize(base64_decode($shopImportedOrder['warenkorb']));
+ }
- 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];
+ //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];
}
- if(isset($shopImportedOrder['jsonencoded']) && $shopImportedOrder['jsonencoded'])
- {
- $shopOrder = json_decode(base64_decode($shopImportedOrder['warenkorb']), true);
- }else{
- $shopOrder = unserialize(base64_decode($shopImportedOrder['warenkorb']));
+ public function ShopimportView() {
+ $this->ShopimportImport(showonly: true);
}
- //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 ShopimportImport($id='', $count = 0, $returncount = false, $showonly = false)
- {
- $deletedRows = 0;
- if(!is_numeric($id) && $this->app->Secure->GetPOST('deletedouble')) {
- $id = (int)$this->app->Secure->GetGET('id');
- $this->app->DB->Update(
- sprintf(
- 'UPDATE shopimport_auftraege AS sa
+ 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');
-
- $sucess_import = 0;
- $insgs_import = 0;
- $unbekanntezahlungsweisen = null;
- $cauftraege = $auftraege?count($auftraege):0;
- for($i=0;$i<$cauftraege;$i++)
- {
- $adresse = '';
- $shopimportid = $auftraege[$i];
- $shopid = $this->app->DB->Select("SELECT shopid FROM shopimport_auftraege WHERE id='$shopimportid' LIMIT 1");
- if($shopid)
- {
- $demomodus = $this->app->DB->Select("SELECT demomodus FROM shopexport WHERE id='$shopid'");
- $einzelsync = $this->app->DB->Select("SELECT einzelsync FROM shopexport WHERE id='$shopid'");
- $utf8codierung = $this->app->DB->Select("SELECT utf8codierung FROM shopexport WHERE id='$shopid'");
- }
- $projekt = $this->app->DB->Select("SELECT projekt FROM shopimport_auftraege WHERE id='$shopimportid' LIMIT 1");
- if($import[$shopimportid]==='warten')
- {
-
- }
- else if($import[$shopimportid]==='muell')
- {
- $this->setShopImportedOrderTrash($shopimportid);
- } else if($import[$shopimportid]==='import') {
-
- $res = $this->importShopOrder($shopimportid, $utf8codierung, $kundennummer[$shopimportid], $import_kundennummer[$shopimportid], $unbekanntezahlungsweisen);
- if($res['codingerror']) {
- $umlautefehler = true;
- }
- if($res['success']) {
- $sucess_import += $res['success'];
- }
- $insgs_import++;
- }
- } // ende for
-
-
- if($unbekanntezahlungsweisen)
- {
- $meldung = '';
- foreach($unbekanntezahlungsweisen as $k => $v)
- {
- $meldung .= 'Unbekannte Zahlungsart: '.$k.' in Bestellung(en): ';
- $first = true;
- foreach($v as $k2 => $v2)
- {
- if(!$first)
- {
- $meldung .= ', ';
- }
- $first = false;
- $meldung .= $v2['bestellnummer'];
-
- }
- $meldung .= " \r\n";
-
- }
-
- if(isset($this->app->User) && method_exists($this->app->User,'GetID') && $this->app->User->GetID())
- {
- $this->app->erp->EventMitSystemLog($this->app->User->GetID(), $meldung, -1,'', 'warning', 1);
- }
- }
- if(!empty($umlautefehler))
- {
- $msg = $this->app->erp->base64_url_encode("$sucess_import".($sucess_import != $insgs_import?" von $insgs_import ":'')." Aufträge importiert. Aufträge mit Kodierungsprobleme. Bitte prüfen Sie sie UTF8-Einstellung in der Shopschnittstelle!
");
- }else{
- $msg = $this->app->erp->base64_url_encode("$sucess_import".($sucess_import != $insgs_import?" von $insgs_import ":'')." Aufträge importiert!
");
- }
- $this->app->Location->execute('index.php?module=shopimport&action=list&msg='.$msg);
- }
-
-
- if(!$showonly && $id)
- {
- try {
- $pageContents = $this->app->remote->RemoteConnection($id);
- }catch(Exception $e){
- $pageContents = $e->getMessage();
- }
- if($pageContents==='success')
- {
- $shopexportarr = $this->app->DB->SelectRow("SELECT * FROM shopexport WHERE id = '$id' LIMIT 1");
- $holealle = $shopexportarr['holealle'];//$this->app->DB->Select("SELECT holealle FROM shopexport WHERE id = '$id' LIMIT 1");
- $statusaendern = $shopexportarr['nummersyncstatusaendern'];//$this->app->DB->Select("SELECT nummersyncstatusaendern FROM shopexport WHERE id = '$id' LIMIT 1");
- $auftragabgleich = $shopexportarr['auftragabgleich'];//$this->app->DB->Select("SELECT auftragabgleich FROM shopexport WHERE id = '$id' LIMIT 1");
- $zeitraum = array('datumvon'=>$shopexportarr['datumvon'], 'datumbis'=>$shopexportarr['datumbis'],'tmpdatumvon'=>$shopexportarr['tmpdatumvon'], 'tmpdatumbis'=>$shopexportarr['tmpdatumbis'], 'anzgleichzeitig'=>$shopexportarr['anzgleichzeitig']);
- //$this->app->DB->SelectArr("SELECT datumvon, datumbis,tmpdatumvon, tmpdatumbis, anzgleichzeitig FROM shopexport WHERE id = '$id' LIMIT 1");
- /*if(!empty($zeitraum))
- {
- $zeitraum = reset($zeitraum);
- }*/
- $anzgleichzeitig = 1;
- if(isset($zeitraum['anzgleichzeitig'])){
- $anzgleichzeitig = (int)$zeitraum['anzgleichzeitig'];
- }
-
- if($anzgleichzeitig > 1)
- {
- $result = $this->app->remote->RemoteGetAuftrag($id);
- if(!empty($result) && is_array($result) && isset($result[0]))
- {
- $maxtime = false;
- $mintime = false;
- $gesamtanzahl = (!empty($result)?count($result):0);
- for($i = 0; $i < $gesamtanzahl; $i++)
- {
- $projekt = $this->app->DB->Select("SELECT projekt FROM shopexport WHERE id = '$id' LIMIT 1");
- $auftrag = $result[$i]['id'];
- if(isset($result[$i]['warenkorbjson']))
- {
- $isjson = true;
- $tmpwarenkorb = json_decode(base64_decode($result[$i]['warenkorbjson']), true);
- }else{
- $isjson = false;
- $tmpwarenkorb = unserialize(base64_decode($result[$i]['warenkorb']));
- }
- if(!empty($tmpwarenkorb['projekt']) && $this->app->DB->Select("SELECT id FROM projekt WHERE id = '".(int)$tmpwarenkorb['projekt']."' LIMIT 1"))
- {
- $projekt = (int)$tmpwarenkorb['projekt'];
- }
- if(!empty($tmpwarenkorb['zeitstempel']))
- {
- $time = strtotime($tmpwarenkorb['zeitstempel']);
- if($time < 0)
- {
- $time = 0;
- }
- if($maxtime === false)
- {
- $maxtime = $time;
- }
- if($mintime === false)
- {
- $mintime = $time;
- }
- if($time > $maxtime)
- {
- $maxtime = $time;
- }
- if($time < $mintime)
- {
- $mintime = $time;
- }
- }
- $onlinebestellnummer = $tmpwarenkorb['onlinebestellnummer'];
- if(!empty($tmpwarenkorb['useorderid']) ||
- (!is_numeric($onlinebestellnummer) && trim((String)$onlinebestellnummer) !== ''))
- {
- $onlinebestellnummer = $tmpwarenkorb['auftrag'];
- }
-
- if($holealle && $onlinebestellnummer)
- {
- $neue_nummer = (int)$onlinebestellnummer+1;
- $this->app->DB->Update("UPDATE shopexport SET ab_nummer = '$neue_nummer' WHERE id = '$id'");
- }
- $sessionid = isset($result[$i]['sessionid'])?$result[$i]['sessionid']:'';
- if($isjson)
- {
- $warenkorb = $result[$i]['warenkorbjson'];
- }else{
- $warenkorb = $result[$i]['warenkorb'];
- }
- $logdatei = isset($result[$i]['logdatei'])?$result[$i]['logdatei']:null;
- if(empty($logdatei))
- {
- $logdatei = date('Y-m-d H:i:s');
- }
- if(isset($tmpwarenkorb['subshop']) && $tmpwarenkorb['subshop'])
- {
- $subshopprojekt = $this->app->DB->Select("SELECT projekt FROM shopexport_subshop WHERE shop = '$id' AND aktiv = 1 AND subshopkennung = '".$this->app->DB->real_escape_string($tmpwarenkorb['subshop'])."' LIMIT 1");
- if($subshopprojekt)
- {
- $projekt = $subshopprojekt;
- }
- }
- $letzteonlinebestellnummer = $tmpwarenkorb['onlinebestellnummer'];
- unset($tmpwarenkorb);
-
- //globalerauftragsnummernkreis
- $standardcheck = true;
- $modulename = $this->app->DB->Select(
- sprintf(
- "SELECT modulename FROM shopexport WHERE id = %d AND modulename <> '' AND (shoptyp = 'intern')",
- $id
- )
- );
- $shopIds = [$id];
- $otherModules= empty($modulename)?null:
- $this->app->DB->SelectFirstCols(
- sprintf(
- "SELECT id
- FROM shopexport
- WHERE modulename = '%s' AND id <> %d",
- $this->app->DB->real_escape_string($modulename), $id
- )
- );
- if(!empty($otherModules) && $this->app->erp->ModulVorhanden($modulename)) {
- $obj = $this->app->erp->LoadModul($modulename);
- if(!empty($obj) && method_exists($obj, 'EinstellungenStruktur')){
- $konfiguration = $obj->EinstellungenStruktur();
- if($konfiguration && isset($konfiguration['globalerauftragsnummernkreis']) && $konfiguration['globalerauftragsnummernkreis']) {
- $shopIds = array_merge([$id], $otherModules);
- $standardcheck = false;
- /*$checkdoppeltimported = $this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE extid = '".$this->app->DB->real_escape_string($auftrag)."' and ((modulename = '".$this->app->DB->real_escape_string($modulename)."' AND shoptyp = 'intern') OR shopid = '$id') and warenkorb = '".$this->app->DB->real_escape_string($warenkorb)."' AND trash = 0
- AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei ))
- LIMIT 1");*/
- /*$checkdoppeltimported = $this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE extid = '".$this->app->DB->real_escape_string($auftrag)."' and ((modulename = '".$this->app->DB->real_escape_string($modulename)."' AND shoptyp = 'intern') OR shopid = '$id') AND trash = 0
- AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei ))
- LIMIT 1");*/
- }
- }
- }
- $checkdoppeltimported = $this->app->DB->Select(
- sprintf(
- "SELECT id
- FROM shopimport_auftraege
- WHERE extid = '%s' and shopid IN (%s) AND trash = 0
- AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei ))
- LIMIT 1",
- $this->app->DB->real_escape_string($auftrag), implode(',', $shopIds)
- )
- );
- /*if($standardcheck)
- {*/
- /*$checkdoppeltimported = $this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE extid = '".$this->app->DB->real_escape_string($auftrag)."' and shopid = '$id' and warenkorb = '".$this->app->DB->real_escape_string($warenkorb)."' AND trash = 0
- AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei ))
- LIMIT 1");*/
- /*$checkdoppeltimported = $this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE extid = '".$this->app->DB->real_escape_string($auftrag)."' and shopid = '$id' AND trash = 0
- AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei ))
- LIMIT 1");
- }*/
- $insid = null;
- if(empty($checkdoppeltimported))
- {
- $this->app->DB->Insert("INSERT INTO shopimport_auftraege (id,extid,sessionid,warenkorb,imported,projekt,bearbeiter,logdatei)
- VALUES('','".$this->app->DB->real_escape_string($auftrag)."','".$this->app->DB->real_escape_string($sessionid)."','".$this->app->DB->real_escape_string($warenkorb)."','0','$projekt','".$this->app->DB->real_escape_string($this->app->User->GetName())."','".$this->app->DB->real_escape_string($logdatei)."')");
- $insid = $this->app->DB->GetInsertID();
- if($insid)
- {
- if($isjson)
- {
- $this->app->DB->Update("UPDATE shopimport_auftraege set jsonencoded = 1 where id = '$insid'");
- }
- $this->app->DB->Update("UPDATE shopimport_auftraege set shopid = '$id' where id = '$insid'");
- $this->app->DB->Update("UPDATE shopimport_auftraege set bestellnummer = '".$this->app->DB->real_escape_string($letzteonlinebestellnummer)."' where id = '$insid'");
- }
- }
- if($demomodus!='1')
- {
- $this->app->remote->RemoteDeleteAuftrag($id,$auftrag,$letzteonlinebestellnummer);
- }
- elseif($demomodus == '1')
- {
- break;
- }
- unset($letzteonlinebestellnummer);
-
- }
- if(!$demomodus)
- {
- if(empty($maxtime))
- {
- $maxtime = strtotime(date('Y-m-d H:i:s'));
- }
- $datumvon = strtotime($zeitraum['datumvon']);
- $datumbis = strtotime($zeitraum['datumbis']);
- $tmpdatumvon = strtotime($zeitraum['tmpdatumvon']);
- $tmpdatumbis = strtotime($zeitraum['tmpdatumbis']);
- if($datumvon < 0){
- $datumvon = 0;
- }
- if($datumbis < 0){
- $datumbis = 0;
- }
- if($tmpdatumvon < 0){
- $tmpdatumvon = 0;
- }
- if($tmpdatumbis < 0)
- {
- $tmpdatumbis = 0;
- }
- $this->app->DB->Update("UPDATE shopexport SET datumvon = '".date('Y-m-d H:i:s',$maxtime)."', tmpdatumbis = '0000-00-00' WHERE id = '$id' LIMIT 1");
- }
- }else{
- if(!$demomodus)
- {
- if(is_array($result) && !empty($result['zeitstempel']))
- {
- $this->app->DB->Update("UPDATE shopexport SET datumvon = '".date('Y-m-d H:i:s',strtotime($result['zeitstempel']))."', tmpdatumbis = '0000-00-00' WHERE id = '$id' AND datumvon < '".date('Y-m-d H:i:s',strtotime($result['zeitstempel']))."' LIMIT 1");
- }
- if(empty($maxtime))
- {
- $maxtime = strtotime(date('Y-m-d H:i:s'));
- }
- $datumvon = strtotime($zeitraum['datumvon']);
- $datumbis = strtotime($zeitraum['datumbis']);
- $tmpdatumvon = strtotime($zeitraum['tmpdatumvon']);
- $tmpdatumbis = strtotime($zeitraum['tmpdatumbis']);
- if($datumvon < 0){
- $datumvon = 0;
- }
- if($datumbis < 0){
- $datumbis = 0;
- }
- if($tmpdatumvon < 0){
- $tmpdatumvon = 0;
- }
- if($tmpdatumbis < 0){
- $tmpdatumbis = 0;
- }
- if($tmpdatumbis)
- {
- $this->app->DB->Update("UPDATE shopexport SET tmpdatumbis = '0000-00-00' WHERE id = '$id' LIMIT 1");
- }
- }
- }
- }else{
- $gesamtanzahl = $this->app->remote->RemoteGetAuftraegeAnzahl($id);
- $maxmanuell = (int)$this->app->DB->Select("SELECT maxmanuell FROM shopexport WHERE id = '$id' LIMIT 1");
- if($maxmanuell <= 0){
- $maxmanuell = 100;
- }
- if($gesamtanzahl > $maxmanuell){
- $gesamtanzahl = $maxmanuell;
- }
- if($einzelsync=='1' && $gesamtanzahl > 1 && $maxmanuell <= 1){
- $gesamtanzahl = 1;
- }
- if($gesamtanzahl > 0)
- {
- for($i=0;$i<$gesamtanzahl;$i++)
- {
- //import au
- $result = $this->app->remote->RemoteGetAuftrag($id);
-
- if(is_array($result))
- {
- $auftrag = $result[0]['id'];
- if(isset($result[0]['warenkorbjson']))
- {
- $isjson = true;
- $tmpwarenkorb = json_decode(base64_decode($result[0]['warenkorbjson']), true);
- }else{
- $isjson = false;
- $tmpwarenkorb = unserialize(base64_decode($result[0]['warenkorb']));
- }
- $onlinebestellnummer = $tmpwarenkorb['onlinebestellnummer'];
- if(!empty($tmpwarenkorb['useorderid']) || (!is_numeric($onlinebestellnummer) && trim((String)$onlinebestellnummer) !== ''))
- {
- $onlinebestellnummer = $tmpwarenkorb['auftrag'];
- }
- if($holealle && $onlinebestellnummer)
- {
- $neue_nummer = (int)$onlinebestellnummer+1;
- $this->app->DB->Update("UPDATE shopexport SET ab_nummer = '$neue_nummer' WHERE id = '$id'");
- }
- $sessionid = $result[0]['sessionid'];
- if($isjson)
- {
- $warenkorb = $result[0]['warenkorbjson'];
- }else{
- $warenkorb = $result[0]['warenkorb'];
- }
- $logdatei = $result[0]['logdatei'];
- if(empty($logdatei))
- {
- $logdatei = date('Y-m-d H:i:s');
- }
- $projekt = $this->app->DB->Select("SELECT projekt FROM shopexport WHERE id = '$id' LIMIT 1");
- if(!empty($tmpwarenkorb['projekt']) && $this->app->DB->Select("SELECT id FROM projekt WHERE id = '".(int)$tmpwarenkorb['projekt']."' LIMIT 1"))
- {
- $projekt = (int)$tmpwarenkorb['projekt'];
- }
- if(isset($tmpwarenkorb['subshop']) && $tmpwarenkorb['subshop'])
- {
- $subshopprojekt = $this->app->DB->Select("SELECT projekt FROM shopexport_subshop WHERE shop = '$id' AND aktiv = 1 AND subshopkennung = '".$this->app->DB->real_escape_string($tmpwarenkorb['subshop'])."' LIMIT 1");
- if($subshopprojekt)
- {
- $projekt = $subshopprojekt;
- }
- }
- unset($tmpwarenkorb);
-
- $standardcheck = true;
- $modulename = $this->app->DB->Select(
- sprintf(
- "SELECT modulename FROM shopexport WHERE id = %d AND modulename <> '' AND (shoptyp = 'intern')",
- $id
- )
- );
- $shopIds = [$id];
- $otherModules= empty($modulename)?null:
- $this->app->DB->SelectFirstCols(
- sprintf(
- "SELECT id
- FROM shopexport
- WHERE modulename = '%s' AND id <> %d",
- $this->app->DB->real_escape_string($modulename), $id
+ $id, $id
)
- );
- if(!empty($otherModules) && $this->app->erp->ModulVorhanden($modulename)) {
- $obj = $this->app->erp->LoadModul($modulename);
- if(!empty($obj) && method_exists($obj, 'EinstellungenStruktur')){
- $konfiguration = $obj->EinstellungenStruktur();
- if($konfiguration && isset($konfiguration['globalerauftragsnummernkreis']) && $konfiguration['globalerauftragsnummernkreis']) {
- $shopIds = array_merge([$id], $otherModules);
- $standardcheck = false;
- /*$checkdoppeltimported = $this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE extid = '".$this->app->DB->real_escape_string($auftrag)."' and ((modulename = '".$this->app->DB->real_escape_string($modulename)."' AND shoptyp = 'intern') OR shopid = '$id') and warenkorb = '".$this->app->DB->real_escape_string($warenkorb)."' AND trash = 0
- AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei ))
- LIMIT 1");*/
- /*$checkdoppeltimported = $this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE extid = '".$this->app->DB->real_escape_string($auftrag)."' and ((modulename = '".$this->app->DB->real_escape_string($modulename)."' AND shoptyp = 'intern') OR shopid = '$id') AND trash = 0
- AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei ))
- LIMIT 1");*/
- }
- }
+ );
+ $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'");
}
- $checkdoppeltimported = $this->app->DB->Select(
- sprintf(
- "SELECT id
+ $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!
");
+ } else {
+ $msg = $this->app->erp->base64_url_encode("$success_import" . ($success_import != $insgs_import ? " von $insgs_import " : '') . " Aufträge importiert!
");
+ }
+ $this->app->Location->execute('index.php?module=shopimport&action=list&msg=' . $msg);
+ }
+
+
+ if (!$showonly && $id) {
+ try {
+ $pageContents = $this->app->remote->RemoteConnection($id);
+ } catch (Exception $e) {
+ $pageContents = $e->getMessage();
+ }
+ if ($pageContents === 'success') {
+ $shopexportarr = $this->app->DB->SelectRow("SELECT * FROM shopexport WHERE id = '$id' LIMIT 1");
+ $holealle = $shopexportarr['holealle']; //$this->app->DB->Select("SELECT holealle FROM shopexport WHERE id = '$id' LIMIT 1");
+ $statusaendern = $shopexportarr['nummersyncstatusaendern']; //$this->app->DB->Select("SELECT nummersyncstatusaendern FROM shopexport WHERE id = '$id' LIMIT 1");
+ $auftragabgleich = $shopexportarr['auftragabgleich']; //$this->app->DB->Select("SELECT auftragabgleich FROM shopexport WHERE id = '$id' LIMIT 1");
+ $zeitraum = array('datumvon' => $shopexportarr['datumvon'], 'datumbis' => $shopexportarr['datumbis'], 'tmpdatumvon' => $shopexportarr['tmpdatumvon'], 'tmpdatumbis' => $shopexportarr['tmpdatumbis'], 'anzgleichzeitig' => $shopexportarr['anzgleichzeitig']);
+ //$this->app->DB->SelectArr("SELECT datumvon, datumbis,tmpdatumvon, tmpdatumbis, anzgleichzeitig FROM shopexport WHERE id = '$id' LIMIT 1");
+ /* if(!empty($zeitraum))
+ {
+ $zeitraum = reset($zeitraum);
+ } */
+ $anzgleichzeitig = 1;
+ if (isset($zeitraum['anzgleichzeitig'])) {
+ $anzgleichzeitig = (int) $zeitraum['anzgleichzeitig'];
+ }
+
+ if ($anzgleichzeitig > 1) {
+ $result = $this->app->remote->RemoteGetAuftrag($id);
+ if (!empty($result) && is_array($result) && isset($result[0])) {
+ $maxtime = false;
+ $mintime = false;
+ $gesamtanzahl = (!empty($result) ? count($result) : 0);
+ for ($i = 0; $i < $gesamtanzahl; $i++) {
+ $projekt = $this->app->DB->Select("SELECT projekt FROM shopexport WHERE id = '$id' LIMIT 1");
+ $auftrag = $result[$i]['id'];
+ if (isset($result[$i]['warenkorbjson'])) {
+ $isjson = true;
+ $tmpwarenkorb = json_decode(base64_decode($result[$i]['warenkorbjson']), true);
+ } else {
+ $isjson = false;
+ $tmpwarenkorb = unserialize(base64_decode($result[$i]['warenkorb']));
+ }
+ if (!empty($tmpwarenkorb['projekt']) && $this->app->DB->Select("SELECT id FROM projekt WHERE id = '" . (int) $tmpwarenkorb['projekt'] . "' LIMIT 1")) {
+ $projekt = (int) $tmpwarenkorb['projekt'];
+ }
+ if (!empty($tmpwarenkorb['zeitstempel'])) {
+ $time = strtotime($tmpwarenkorb['zeitstempel']);
+ if ($time < 0) {
+ $time = 0;
+ }
+ if ($maxtime === false) {
+ $maxtime = $time;
+ }
+ if ($mintime === false) {
+ $mintime = $time;
+ }
+ if ($time > $maxtime) {
+ $maxtime = $time;
+ }
+ if ($time < $mintime) {
+ $mintime = $time;
+ }
+ }
+ $onlinebestellnummer = $tmpwarenkorb['onlinebestellnummer'];
+ if (!empty($tmpwarenkorb['useorderid']) ||
+ (!is_numeric($onlinebestellnummer) && trim((String) $onlinebestellnummer) !== '')) {
+ $onlinebestellnummer = $tmpwarenkorb['auftrag'];
+ }
+
+ if ($holealle && $onlinebestellnummer) {
+ $neue_nummer = (int) $onlinebestellnummer + 1;
+ $this->app->DB->Update("UPDATE shopexport SET ab_nummer = '$neue_nummer' WHERE id = '$id'");
+ }
+ $sessionid = isset($result[$i]['sessionid']) ? $result[$i]['sessionid'] : '';
+ if ($isjson) {
+ $warenkorb = $result[$i]['warenkorbjson'];
+ } else {
+ $warenkorb = $result[$i]['warenkorb'];
+ }
+ $logdatei = isset($result[$i]['logdatei']) ? $result[$i]['logdatei'] : null;
+ if (empty($logdatei)) {
+ $logdatei = date('Y-m-d H:i:s');
+ }
+ if (isset($tmpwarenkorb['subshop']) && $tmpwarenkorb['subshop']) {
+ $subshopprojekt = $this->app->DB->Select("SELECT projekt FROM shopexport_subshop WHERE shop = '$id' AND aktiv = 1 AND subshopkennung = '" . $this->app->DB->real_escape_string($tmpwarenkorb['subshop']) . "' LIMIT 1");
+ if ($subshopprojekt) {
+ $projekt = $subshopprojekt;
+ }
+ }
+ $letzteonlinebestellnummer = $tmpwarenkorb['onlinebestellnummer'];
+ unset($tmpwarenkorb);
+
+ //globalerauftragsnummernkreis
+ $standardcheck = true;
+ $modulename = $this->app->DB->Select(
+ sprintf(
+ "SELECT modulename FROM shopexport WHERE id = %d AND modulename <> '' AND (shoptyp = 'intern')",
+ $id
+ )
+ );
+ $shopIds = [$id];
+ $otherModules = empty($modulename) ? null :
+ $this->app->DB->SelectFirstCols(
+ sprintf(
+ "SELECT id
+ FROM shopexport
+ WHERE modulename = '%s' AND id <> %d",
+ $this->app->DB->real_escape_string($modulename), $id
+ )
+ );
+ if (!empty($otherModules) && $this->app->erp->ModulVorhanden($modulename)) {
+ $obj = $this->app->erp->LoadModul($modulename);
+ if (!empty($obj) && method_exists($obj, 'EinstellungenStruktur')) {
+ $konfiguration = $obj->EinstellungenStruktur();
+ if ($konfiguration && isset($konfiguration['globalerauftragsnummernkreis']) && $konfiguration['globalerauftragsnummernkreis']) {
+ $shopIds = array_merge([$id], $otherModules);
+ $standardcheck = false;
+ /* $checkdoppeltimported = $this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE extid = '".$this->app->DB->real_escape_string($auftrag)."' and ((modulename = '".$this->app->DB->real_escape_string($modulename)."' AND shoptyp = 'intern') OR shopid = '$id') and warenkorb = '".$this->app->DB->real_escape_string($warenkorb)."' AND trash = 0
+ AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei ))
+ LIMIT 1"); */
+ /* $checkdoppeltimported = $this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE extid = '".$this->app->DB->real_escape_string($auftrag)."' and ((modulename = '".$this->app->DB->real_escape_string($modulename)."' AND shoptyp = 'intern') OR shopid = '$id') AND trash = 0
+ AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei ))
+ LIMIT 1"); */
+ }
+ }
+ }
+ $checkdoppeltimported = $this->app->DB->Select(
+ sprintf(
+ "SELECT id
FROM shopimport_auftraege
WHERE extid = '%s' and shopid IN (%s) AND trash = 0
AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei ))
LIMIT 1",
- $this->app->DB->real_escape_string($auftrag), implode(',', $shopIds)
- )
- );
-
- /*if($standardcheck){*/
- /*$checkdoppeltimported = $this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE extid = '" . $this->app->DB->real_escape_string($auftrag) . "' and shopid = '$id' and warenkorb = '" . $this->app->DB->real_escape_string($warenkorb) . "' AND trash = 0
- AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei ))
- LIMIT 1");*/
- /*$checkdoppeltimported = $this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE extid = '" . $this->app->DB->real_escape_string($auftrag) . "' and shopid = '$id' AND trash = 0
- AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei ))
- LIMIT 1");
- }*/
-
- $insid = null;
- if($demomodus == '1')
- {
- $checkdoppeltimported = null;
- }
- if(!$checkdoppeltimported)
- {
- $this->app->DB->Insert("INSERT INTO shopimport_auftraege (id,extid,sessionid,warenkorb,imported,projekt,bearbeiter,logdatei)
- VALUES('','$auftrag','$sessionid','$warenkorb','0','$projekt','".$this->app->User->GetName()."','$logdatei')");
- $insid = $this->app->DB->GetInsertID();
- if($insid){
- $this->app->DB->Update("UPDATE shopimport_auftraege set shopid = '$id' where id = '$insid'");
- $this->app->DB->Update("UPDATE shopimport_auftraege set logdatei = now() where id = '$insid' AND logdatei = '0000-00-00' OR logdatei > now()");
- if($isjson){
- $this->app->DB->Update("UPDATE shopimport_auftraege set jsonencoded = 1 where id = '$insid'");
+ $this->app->DB->real_escape_string($auftrag), implode(',', $shopIds)
+ )
+ );
+ /* if($standardcheck)
+ { */
+ /* $checkdoppeltimported = $this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE extid = '".$this->app->DB->real_escape_string($auftrag)."' and shopid = '$id' and warenkorb = '".$this->app->DB->real_escape_string($warenkorb)."' AND trash = 0
+ AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei ))
+ LIMIT 1"); */
+ /* $checkdoppeltimported = $this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE extid = '".$this->app->DB->real_escape_string($auftrag)."' and shopid = '$id' AND trash = 0
+ AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei ))
+ LIMIT 1");
+ } */
+ $insid = null;
+ if (empty($checkdoppeltimported)) {
+ $this->app->DB->Insert("INSERT INTO shopimport_auftraege (id,extid,sessionid,warenkorb,imported,projekt,bearbeiter,logdatei)
+ VALUES('','" . $this->app->DB->real_escape_string($auftrag) . "','" . $this->app->DB->real_escape_string($sessionid) . "','" . $this->app->DB->real_escape_string($warenkorb) . "','0','$projekt','" . $this->app->DB->real_escape_string($this->app->User->GetName()) . "','" . $this->app->DB->real_escape_string($logdatei) . "')");
+ $insid = $this->app->DB->GetInsertID();
+ if ($insid) {
+ if ($isjson) {
+ $this->app->DB->Update("UPDATE shopimport_auftraege set jsonencoded = 1 where id = '$insid'");
+ }
+ $this->app->DB->Update("UPDATE shopimport_auftraege set shopid = '$id' where id = '$insid'");
+ $this->app->DB->Update("UPDATE shopimport_auftraege set bestellnummer = '" . $this->app->DB->real_escape_string($letzteonlinebestellnummer) . "' where id = '$insid'");
+ }
+ }
+ if ($demomodus != '1') {
+ $this->app->remote->RemoteDeleteAuftrag($id, $auftrag, $letzteonlinebestellnummer);
+ } elseif ($demomodus == '1') {
+ break;
+ }
+ unset($letzteonlinebestellnummer);
+ }
+ if (!$demomodus) {
+ if (empty($maxtime)) {
+ $maxtime = strtotime(date('Y-m-d H:i:s'));
+ }
+ $datumvon = strtotime($zeitraum['datumvon']);
+ $datumbis = strtotime($zeitraum['datumbis']);
+ $tmpdatumvon = strtotime($zeitraum['tmpdatumvon']);
+ $tmpdatumbis = strtotime($zeitraum['tmpdatumbis']);
+ if ($datumvon < 0) {
+ $datumvon = 0;
+ }
+ if ($datumbis < 0) {
+ $datumbis = 0;
+ }
+ if ($tmpdatumvon < 0) {
+ $tmpdatumvon = 0;
+ }
+ if ($tmpdatumbis < 0) {
+ $tmpdatumbis = 0;
+ }
+ $this->app->DB->Update("UPDATE shopexport SET datumvon = '" . date('Y-m-d H:i:s', $maxtime) . "', tmpdatumbis = '0000-00-00' WHERE id = '$id' LIMIT 1");
+ }
+ } else {
+ if (!$demomodus) {
+ if (is_array($result) && !empty($result['zeitstempel'])) {
+ $this->app->DB->Update("UPDATE shopexport SET datumvon = '" . date('Y-m-d H:i:s', strtotime($result['zeitstempel'])) . "', tmpdatumbis = '0000-00-00' WHERE id = '$id' AND datumvon < '" . date('Y-m-d H:i:s', strtotime($result['zeitstempel'])) . "' LIMIT 1");
+ }
+ if (empty($maxtime)) {
+ $maxtime = strtotime(date('Y-m-d H:i:s'));
+ }
+ $datumvon = strtotime($zeitraum['datumvon']);
+ $datumbis = strtotime($zeitraum['datumbis']);
+ $tmpdatumvon = strtotime($zeitraum['tmpdatumvon']);
+ $tmpdatumbis = strtotime($zeitraum['tmpdatumbis']);
+ if ($datumvon < 0) {
+ $datumvon = 0;
+ }
+ if ($datumbis < 0) {
+ $datumbis = 0;
+ }
+ if ($tmpdatumvon < 0) {
+ $tmpdatumvon = 0;
+ }
+ if ($tmpdatumbis < 0) {
+ $tmpdatumbis = 0;
+ }
+ if ($tmpdatumbis) {
+ $this->app->DB->Update("UPDATE shopexport SET tmpdatumbis = '0000-00-00' WHERE id = '$id' LIMIT 1");
+ }
+ }
}
- }
- }
+ } else {
+ $gesamtanzahl = $this->app->remote->RemoteGetAuftraegeAnzahl($id);
+ $maxmanuell = (int) $this->app->DB->Select("SELECT maxmanuell FROM shopexport WHERE id = '$id' LIMIT 1");
+ if ($maxmanuell <= 0) {
+ $maxmanuell = 100;
+ }
+ if ($gesamtanzahl > $maxmanuell) {
+ $gesamtanzahl = $maxmanuell;
+ }
+ if ($einzelsync == '1' && $gesamtanzahl > 1 && $maxmanuell <= 1) {
+ $gesamtanzahl = 1;
+ }
+ if ($gesamtanzahl > 0) {
+ for ($i = 0; $i < $gesamtanzahl; $i++) {
+ //import au
+ $result = $this->app->remote->RemoteGetAuftrag($id);
- if($demomodus!='1')
- {
- $this->app->remote->RemoteDeleteAuftrag($id,$auftrag);
+ if (is_array($result)) {
+ $auftrag = $result[0]['id'];
+ if (isset($result[0]['warenkorbjson'])) {
+ $isjson = true;
+ $tmpwarenkorb = json_decode(base64_decode($result[0]['warenkorbjson']), true);
+ } else {
+ $isjson = false;
+ $tmpwarenkorb = unserialize(base64_decode($result[0]['warenkorb']));
+ }
+ $onlinebestellnummer = $tmpwarenkorb['onlinebestellnummer'];
+ if (!empty($tmpwarenkorb['useorderid']) || (!is_numeric($onlinebestellnummer) && trim((String) $onlinebestellnummer) !== '')) {
+ $onlinebestellnummer = $tmpwarenkorb['auftrag'];
+ }
+ if ($holealle && $onlinebestellnummer) {
+ $neue_nummer = (int) $onlinebestellnummer + 1;
+ $this->app->DB->Update("UPDATE shopexport SET ab_nummer = '$neue_nummer' WHERE id = '$id'");
+ }
+ $sessionid = $result[0]['sessionid'];
+ if ($isjson) {
+ $warenkorb = $result[0]['warenkorbjson'];
+ } else {
+ $warenkorb = $result[0]['warenkorb'];
+ }
+ $logdatei = $result[0]['logdatei'];
+ if (empty($logdatei)) {
+ $logdatei = date('Y-m-d H:i:s');
+ }
+ $projekt = $this->app->DB->Select("SELECT projekt FROM shopexport WHERE id = '$id' LIMIT 1");
+ if (!empty($tmpwarenkorb['projekt']) && $this->app->DB->Select("SELECT id FROM projekt WHERE id = '" . (int) $tmpwarenkorb['projekt'] . "' LIMIT 1")) {
+ $projekt = (int) $tmpwarenkorb['projekt'];
+ }
+ if (isset($tmpwarenkorb['subshop']) && $tmpwarenkorb['subshop']) {
+ $subshopprojekt = $this->app->DB->Select("SELECT projekt FROM shopexport_subshop WHERE shop = '$id' AND aktiv = 1 AND subshopkennung = '" . $this->app->DB->real_escape_string($tmpwarenkorb['subshop']) . "' LIMIT 1");
+ if ($subshopprojekt) {
+ $projekt = $subshopprojekt;
+ }
+ }
+ unset($tmpwarenkorb);
+
+ $standardcheck = true;
+ $modulename = $this->app->DB->Select(
+ sprintf(
+ "SELECT modulename FROM shopexport WHERE id = %d AND modulename <> '' AND (shoptyp = 'intern')",
+ $id
+ )
+ );
+ $shopIds = [$id];
+ $otherModules = empty($modulename) ? null :
+ $this->app->DB->SelectFirstCols(
+ sprintf(
+ "SELECT id
+ FROM shopexport
+ WHERE modulename = '%s' AND id <> %d",
+ $this->app->DB->real_escape_string($modulename), $id
+ )
+ );
+ if (!empty($otherModules) && $this->app->erp->ModulVorhanden($modulename)) {
+ $obj = $this->app->erp->LoadModul($modulename);
+ if (!empty($obj) && method_exists($obj, 'EinstellungenStruktur')) {
+ $konfiguration = $obj->EinstellungenStruktur();
+ if ($konfiguration && isset($konfiguration['globalerauftragsnummernkreis']) && $konfiguration['globalerauftragsnummernkreis']) {
+ $shopIds = array_merge([$id], $otherModules);
+ $standardcheck = false;
+ /* $checkdoppeltimported = $this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE extid = '".$this->app->DB->real_escape_string($auftrag)."' and ((modulename = '".$this->app->DB->real_escape_string($modulename)."' AND shoptyp = 'intern') OR shopid = '$id') and warenkorb = '".$this->app->DB->real_escape_string($warenkorb)."' AND trash = 0
+ AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei ))
+ LIMIT 1"); */
+ /* $checkdoppeltimported = $this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE extid = '".$this->app->DB->real_escape_string($auftrag)."' and ((modulename = '".$this->app->DB->real_escape_string($modulename)."' AND shoptyp = 'intern') OR shopid = '$id') AND trash = 0
+ AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei ))
+ LIMIT 1"); */
+ }
+ }
+ }
+ $checkdoppeltimported = $this->app->DB->Select(
+ sprintf(
+ "SELECT id
+ FROM shopimport_auftraege
+ WHERE extid = '%s' and shopid IN (%s) AND trash = 0
+ AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei ))
+ LIMIT 1",
+ $this->app->DB->real_escape_string($auftrag), implode(',', $shopIds)
+ )
+ );
+
+ /* if($standardcheck){ */
+ /* $checkdoppeltimported = $this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE extid = '" . $this->app->DB->real_escape_string($auftrag) . "' and shopid = '$id' and warenkorb = '" . $this->app->DB->real_escape_string($warenkorb) . "' AND trash = 0
+ AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei ))
+ LIMIT 1"); */
+ /* $checkdoppeltimported = $this->app->DB->Select("SELECT id FROM shopimport_auftraege WHERE extid = '" . $this->app->DB->real_escape_string($auftrag) . "' and shopid = '$id' AND trash = 0
+ AND (imported = 0 OR (imported = 1 AND DATE_SUB(NOW(),INTERVAL 10 MINUTE)>logdatei ))
+ LIMIT 1");
+ } */
+
+ $insid = null;
+ if ($demomodus == '1') {
+ $checkdoppeltimported = null;
+ }
+ if (!$checkdoppeltimported) {
+ $this->app->DB->Insert("INSERT INTO shopimport_auftraege (id,extid,sessionid,warenkorb,imported,projekt,bearbeiter,logdatei)
+ VALUES('','$auftrag','$sessionid','$warenkorb','0','$projekt','" . $this->app->User->GetName() . "','$logdatei')");
+ $insid = $this->app->DB->GetInsertID();
+ if ($insid) {
+ $this->app->DB->Update("UPDATE shopimport_auftraege set shopid = '$id' where id = '$insid'");
+ $this->app->DB->Update("UPDATE shopimport_auftraege set logdatei = now() where id = '$insid' AND logdatei = '0000-00-00' OR logdatei > now()");
+ if ($isjson) {
+ $this->app->DB->Update("UPDATE shopimport_auftraege set jsonencoded = 1 where id = '$insid'");
+ }
+ }
+ }
+
+ if ($demomodus != '1') {
+ $this->app->remote->RemoteDeleteAuftrag($id, $auftrag);
+ } elseif ($demomodus == '1') {
+ $i = $gesamtanzahl;
+ }
+ }
+ }
+ }
}
- elseif($demomodus == '1')
- {
- $i=$gesamtanzahl;
+ } else {
+ if (!$returncount) {
+ $this->app->Tpl->Set('IMPORT', "Verbindungsprobleme! Bitte Administrator kontaktieren! ($pageContents)
");
+ } else {
+ $this->error = "Verbindungsprobleme! Bitte Administrator kontaktieren! ($pageContents)
";
}
- }
}
- }
}
- } else {
- if(!$returncount)
- {
- $this->app->Tpl->Set('IMPORT',"Verbindungsprobleme! Bitte Administrator kontaktieren! ($pageContents)
");
- }else {
- $this->error = "Verbindungsprobleme! Bitte Administrator kontaktieren! ($pageContents)
";
+
+ if (!$returncount) {
+ $this->drawShopOrderTable($deletedRows);
+ } else {
+ return $count + (is_numeric($gesamtanzahl) ? $gesamtanzahl : 0);
}
- }
}
- if(!$returncount)
- {
- $this->drawShopOrderTable($deletedRows);
- } else
- {
- return $count+(is_numeric($gesamtanzahl)?$gesamtanzahl:0);
- }
- }
-
- /**
- * @param array $arr
- *
- * @return array
- */
- public function getCustomerNumberFromShopCart($arr)
- {
- $validkundennummer = '';
- if(!empty($arr['jsonencoded']))
- {
- $warenkorb = json_decode(base64_decode($arr['warenkorb']),true);
- }else{
- $warenkorb = unserialize(base64_decode($arr['warenkorb']));
- }
- foreach($warenkorb as $key=>$value) {
- if(is_string($warenkorb[$key])){
- $warenkorb[$key] = trim($warenkorb[$key]);
- }
- }
- foreach($warenkorb as $k => $v) {
- $warenkorb[$k] = $this->app->erp->fixeUmlaute($v);
- }
-
- $kundenurvonprojekt = $this->app->DB->Select("SELECT kundenurvonprojekt FROM shopexport WHERE id = '".$arr['shopid']."' LIMIT 1");
- $adresseprojekt = '';
- if($kundenurvonprojekt)
- {
- $adresseprojekt = $this->app->DB->Select("SELECT projekt FROM shopexport WHERE id = '".$arr['shopid']."' LIMIT 1");
- }
- if(!empty($warenkorb['kundennummer'])) {
- $validkundennummer = $this->app->DB->Select(
- "SELECT kundennummer
- FROM adresse
- WHERE kundennummer='".$warenkorb['kundennummer']."' and email <> '' $adresseprojekt AND geloescht!=1 AND kundennummer <> ''
- LIMIT 1"
- );
- }
- if(isset($warenkorb['subshop']) && $warenkorb['subshop'])
- {
- $subshopprojekt = $this->app->DB->Select("SELECT projekt FROM shopexport_subshop WHERE shop = '".$arr['shopid']."' AND aktiv = 1 AND subshopkennung = '".$this->app->DB->real_escape_string($warenkorb['subshop'])."' LIMIT 1");
- if($subshopprojekt)
- {
- if(!$kundenurvonprojekt)
- {
- $adresseprojekt = $subshopprojekt;
+ /**
+ * @param array $arr
+ *
+ * @return array
+ */
+ public function getCustomerNumberFromShopCart($arr) {
+ $validkundennummer = '';
+ if (!empty($arr['jsonencoded'])) {
+ $warenkorb = json_decode(base64_decode($arr['warenkorb']), true);
+ } else {
+ $warenkorb = unserialize(base64_decode($arr['warenkorb']));
}
- $arr['abkuerzung'] = $this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id = '$adresseprojekt' LIMIT 1");
- }
- }
- if($kundenurvonprojekt)
- {
- $adresseprojekt = " AND projekt = '".$adresseprojekt."' ";
- }else {
- $adresseprojekt = '';
- }
-
- $checkid = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE `name`='".$this->app->DB->real_escape_string($warenkorb['name'])."' AND abteilung='".$this->app->DB->real_escape_string($warenkorb['abteilung'])."'
- AND strasse='".$this->app->DB->real_escape_string($warenkorb['strasse'])."' AND plz='".$this->app->DB->real_escape_string($warenkorb['plz'])."' AND ort='".$this->app->DB->real_escape_string($warenkorb['ort'])."' AND kundennummer <> '' AND geloescht!=1 $adresseprojekt
- ORDER BY email='".$this->app->DB->real_escape_string($warenkorb['email'])."' DESC
- LIMIT 1");
-
-
- if($warenkorb['email'] != '')
- {
- if($warenkorb['email']!=='amazon_import_bounce@nfxmedia.de')
- {
- $checkidemail = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE email='".$warenkorb['email']."' and email <> '' $adresseprojekt AND geloescht!=1 AND kundennummer <> '' LIMIT 1");
- }
- if((String)$checkidemail === ''){
- $checkidemail = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE name LIKE '" . $warenkorb['name'] . "' AND ort LIKE '" . $warenkorb['ort'] . "' AND geloescht!=1 $adresseprojekt AND kundennummer <> '' LIMIT 1");
- }
- }else{
- $checkidemail = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE name='".$this->app->DB->real_escape_string($warenkorb['name'])."' AND strasse='".$this->app->DB->real_escape_string($warenkorb['strasse'])."' AND plz='".$this->app->DB->real_escape_string($warenkorb['plz'])."' AND ort='".$this->app->DB->real_escape_string($warenkorb['ort'])."' $adresseprojekt AND geloescht!=1 AND kundennummer <> '' LIMIT 1");
- }
-
- if($warenkorb['kundennummer']!='' && !empty($validkundennummer) && $validkundennummer==$warenkorb['kundennummer'])
- {
- $kdrnummer = $warenkorb['kundennummer'];
- }
- elseif ($checkid!='')
- {
- $kdrnummer = $checkid;
- }
- elseif ($checkidemail!='')
- {
- $kdrnummer = $checkidemail;
- }
- else {
- $kdrnummer='';
- $checkidemail='';
- }
-
- return [$checkidemail, $kdrnummer];
- }
-
- public function drawShopOrderTable($deletedRows) {
- $checkglobal = null;
- $htmltable = new HTMLTable(0,'100%','',3,1,'font-size:85%');
- $htmltable->AddRowAsHeading(array('Import','Müll','Später','Projekt','Internet','Name','Bemerkung','Strasse','PLZ','Ort','Kd.Nr.','vorhanden','Land','Betrag','Offen','Zahlung','Partner'));
- $htmltable->ChangingRowColors('#e0e0e0','#fff');
-
- $shopid = $this->app->Secure->GetGET('shopid');
- $where = '';
- if(!empty($shopid)){
- $where = 'AND sa.shopid='.(int)$shopid;
- }
-
- $bestellnummer = $this->app->Secure->GetGET('bestellnummer');
- if(!empty($bestellnummer)){
- $bestellnummer = preg_replace('/[^\w-]/', '', $bestellnummer);
- $where .= " AND sa.bestellnummer='$bestellnummer'";
- }
-
- $arr = $this->app->DB->SelectArr("SELECT sa.*, p.abkuerzung FROM shopimport_auftraege sa left join projekt p on sa.projekt = p.id WHERE sa.imported='0' AND sa.trash='0' $where ORDER BY sa.logdatei LIMIT 100");
- if(is_array($arr) && (!empty($arr)?count($arr):0) > 0)
- {
-
- //Alte Auftraege prüfen
- $alteauftraegeohnebestellnummer = $this->app->DB->Query("SELECT sa.* FROM shopimport_auftraege sa WHERE isnull(bestellnummer) AND sa.trash='0' LIMIT 100");
- while($row = $this->app->DB->Fetch_Assoc($alteauftraegeohnebestellnummer))
- {
- if($row['warenkorb'] != '')
- {
- if(!empty($row['jsonencoded']))
- {
- $warenkorb = json_decode(base64_decode($row['warenkorb']),true);
- }else{
- $warenkorb = unserialize(base64_decode($row['warenkorb']));
- }
- $this->app->DB->Update("UPDATE shopimport_auftraege set bestellnummer = '".(isset($warenkorb['onlinebestellnummer'])?$warenkorb['onlinebestellnummer']:'')."' where id = '".$row['id']."'");
- }else{
- $this->app->DB->Update("UPDATE shopimport_auftraege set bestellnummer = '' where id = '".$row['id']."'");
- }
- }
- $this->app->DB->free($alteauftraegeohnebestellnummer);
-
- $unbekanntezahlungsweisen = null;
- $enthaeltdoppeltenummern = false;
- $carr = $arr?count($arr):0;
- for($i=0;$i<$carr;$i++)
- {
- if(empty($checkglobal) || !isset($checkglobal[$arr[$i]['shopid']]))
- {
- $checkglobal[$arr[$i]['shopid']] = null;
-
- if(($modulename = $this->app->DB->Select("SELECT modulename FROM shopexport WHERE id = '".$arr[$i]['shopid']."' AND modulename <> '' AND shoptyp = 'intern'"))
- && $this->app->DB->Select("SELECT id FROM shopexport WHERE modulename = '".$this->app->DB->real_escape_string($modulename)."' AND id <> '".$arr[$i]['shopid']."' LIMIT 1")
- )
- {
- $shopsintern = $this->app->DB->SelectArr("SELECT id FROM shopexport WHERE id = '".$arr[$i]['shopid']."' OR (modulename = '".$this->app->DB->real_escape_string($modulename)."' AND shoptyp = 'intern')");
- if($shopsintern)
- {
- foreach($shopsintern as $vs)
- {
- $checkglobal[$arr[$i]['shopid']][] = " shopid = '". $vs['id']."' ";
- }
- if($this->app->erp->ModulVorhanden($modulename))
- {
- /** @var ShopimporterBase $obj */
- $obj = $this->app->erp->LoadModul($modulename);
- if($obj && method_exists($obj, 'EinstellungenStruktur')){
- $konfiguration = $obj->EinstellungenStruktur();
- if($konfiguration && isset($konfiguration['globalerauftragsnummernkreis']) && $konfiguration['globalerauftragsnummernkreis'])
- {
-
- }else
- {
- $checkglobal[$arr[$i]['shopid']] = null;
- }
- }else {
- $checkglobal[$arr[$i]['shopid']] = null;
- }
- }else {
- $checkglobal[$arr[$i]['shopid']] = null;
- }
+ foreach ($warenkorb as $key => $value) {
+ if (is_string($warenkorb[$key])) {
+ $warenkorb[$key] = trim($warenkorb[$key]);
}
- }
}
- }
+ foreach ($warenkorb as $k => $v) {
+ $warenkorb[$k] = $this->app->erp->fixeUmlaute($v);
+ }
- $carr = $arr?count($arr):0;
- for($i=0;$i<$carr;$i++)
- {
- $projekt = $this->app->DB->Select("SELECT projekt FROM shopexport WHERE id = '".$arr[$i]['shopid']."' LIMIT 1");
- $auftraegeaufspaeter = $this->app->DB->Select("SELECT auftraegeaufspaeter FROM shopexport WHERE id='".$arr[$i]['shopid']."'");
- if(!empty($arr[$i]['jsonencoded']))
- {
- $warenkorb = json_decode(base64_decode($arr[$i]['warenkorb']),true);
- }else{
- $warenkorb = unserialize(base64_decode($arr[$i]['warenkorb']));
- }
- foreach($warenkorb as $key=>$value) {
- if(is_string($warenkorb[$key])){
- $warenkorb[$key] = trim($warenkorb[$key]);
- }
- }
- foreach($warenkorb as $k => $v) {
- $warenkorb[$k] = $this->app->erp->fixeUmlaute($v);
- }
- $kundenurvonprojekt = $this->app->DB->Select("SELECT kundenurvonprojekt FROM shopexport WHERE id = '".$arr[$i]['shopid']."' LIMIT 1");
+ $kundenurvonprojekt = $this->app->DB->Select("SELECT kundenurvonprojekt FROM shopexport WHERE id = '" . $arr['shopid'] . "' LIMIT 1");
$adresseprojekt = '';
- if($kundenurvonprojekt)
- {
- $adresseprojekt = $this->app->DB->Select("SELECT projekt FROM shopexport WHERE id = '".$arr[$i]['shopid']."' LIMIT 1");
+ if ($kundenurvonprojekt) {
+ $adresseprojekt = $this->app->DB->Select("SELECT projekt FROM shopexport WHERE id = '" . $arr['shopid'] . "' LIMIT 1");
}
- if(isset($warenkorb['subshop']) && $warenkorb['subshop'])
- {
- $subshopprojekt = $this->app->DB->Select("SELECT projekt FROM shopexport_subshop WHERE shop = '".$arr[$i]['shopid']."' AND aktiv = 1 AND subshopkennung = '".$this->app->DB->real_escape_string($warenkorb['subshop'])."' LIMIT 1");
- if($subshopprojekt)
- {
- if(!$kundenurvonprojekt)
- {
- $adresseprojekt = $subshopprojekt;
+ if (!empty($warenkorb['kundennummer'])) {
+ $validkundennummer = $this->app->DB->Select(
+ "SELECT kundennummer
+ FROM adresse
+ WHERE kundennummer='" . $warenkorb['kundennummer'] . "' and email <> '' $adresseprojekt AND geloescht!=1 AND kundennummer <> ''
+ LIMIT 1"
+ );
+ }
+ if (isset($warenkorb['subshop']) && $warenkorb['subshop']) {
+ $subshopprojekt = $this->app->DB->Select("SELECT projekt FROM shopexport_subshop WHERE shop = '" . $arr['shopid'] . "' AND aktiv = 1 AND subshopkennung = '" . $this->app->DB->real_escape_string($warenkorb['subshop']) . "' LIMIT 1");
+ if ($subshopprojekt) {
+ if (!$kundenurvonprojekt) {
+ $adresseprojekt = $subshopprojekt;
+ }
+ $arr['abkuerzung'] = $this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id = '$adresseprojekt' LIMIT 1");
}
- $arr[$i]['abkuerzung'] = $this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id = '$adresseprojekt' LIMIT 1");
- }
}
- if($kundenurvonprojekt)
- {
- $adresseprojekt = " AND projekt = '".$adresseprojekt."' ";
- }else {
- $adresseprojekt = '';
+ if ($kundenurvonprojekt) {
+ $adresseprojekt = " AND projekt = '" . $adresseprojekt . "' ";
+ } else {
+ $adresseprojekt = '';
}
- $checkid = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE `name`='".$this->app->DB->real_escape_string($warenkorb['name'])."' AND abteilung='".$this->app->DB->real_escape_string($warenkorb['abteilung'])."'
- AND strasse='".$this->app->DB->real_escape_string($warenkorb['strasse'])."' AND plz='".$this->app->DB->real_escape_string($warenkorb['plz'])."' AND ort='".$this->app->DB->real_escape_string($warenkorb['ort'])."' AND kundennummer <> '' AND geloescht!=1 $adresseprojekt
- ORDER BY email='".$this->app->DB->real_escape_string($warenkorb['email'])."' DESC
+ $checkid = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE `name`='" . $this->app->DB->real_escape_string($warenkorb['name']) . "' AND abteilung='" . $this->app->DB->real_escape_string($warenkorb['abteilung']) . "'
+ AND strasse='" . $this->app->DB->real_escape_string($warenkorb['strasse']) . "' AND plz='" . $this->app->DB->real_escape_string($warenkorb['plz']) . "' AND ort='" . $this->app->DB->real_escape_string($warenkorb['ort']) . "' AND kundennummer <> '' AND geloescht!=1 $adresseprojekt
+ ORDER BY email='" . $this->app->DB->real_escape_string($warenkorb['email']) . "' DESC
LIMIT 1");
+ if ($warenkorb['email'] != '') {
+ if ($warenkorb['email'] !== 'amazon_import_bounce@nfxmedia.de') {
+ $checkidemail = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE email='" . $warenkorb['email'] . "' and email <> '' $adresseprojekt AND geloescht!=1 AND kundennummer <> '' LIMIT 1");
+ }
+ if ((String) $checkidemail === '') {
+ $checkidemail = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE name LIKE '" . $warenkorb['name'] . "' AND ort LIKE '" . $warenkorb['ort'] . "' AND geloescht!=1 $adresseprojekt AND kundennummer <> '' LIMIT 1");
+ }
+ } else {
+ $checkidemail = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE name='" . $this->app->DB->real_escape_string($warenkorb['name']) . "' AND strasse='" . $this->app->DB->real_escape_string($warenkorb['strasse']) . "' AND plz='" . $this->app->DB->real_escape_string($warenkorb['plz']) . "' AND ort='" . $this->app->DB->real_escape_string($warenkorb['ort']) . "' $adresseprojekt AND geloescht!=1 AND kundennummer <> '' LIMIT 1");
+ }
- if($warenkorb['email'] != '')
- {
- if($warenkorb['email']!=='amazon_import_bounce@nfxmedia.de')
- {
+ if ($warenkorb['kundennummer'] != '' && !empty($validkundennummer) && $validkundennummer == $warenkorb['kundennummer']) {
+ $kdrnummer = $warenkorb['kundennummer'];
+ } elseif ($checkid != '') {
+ $kdrnummer = $checkid;
+ } elseif ($checkidemail != '') {
+ $kdrnummer = $checkidemail;
+ } else {
+ $kdrnummer = '';
+ $checkidemail = '';
+ }
+
+ return [$checkidemail, $kdrnummer];
+ }
+
+ public function drawShopOrderTable($deletedRows) {
+ $checkglobal = null;
+ $htmltable = new HTMLTable(0, '100%', '', 3, 1, 'font-size:85%');
+ $htmltable->AddRowAsHeading(array('Import', 'Müll', 'Später', 'Projekt', 'Internet', 'Name', 'Bemerkung', 'Strasse', 'PLZ', 'Ort', 'Kd.Nr.', 'vorhanden', 'Land', 'Betrag', 'Offen', 'Zahlung', 'Partner'));
+ $htmltable->ChangingRowColors('#e0e0e0', '#fff');
+
+ $shopid = $this->app->Secure->GetGET('shopid');
+ $where = '';
+ if (!empty($shopid)) {
+ $where = 'AND sa.shopid=' . (int) $shopid;
+ }
+
+ $bestellnummer = $this->app->Secure->GetGET('bestellnummer');
+ if (!empty($bestellnummer)) {
+ $bestellnummer = preg_replace('/[^\w-]/', '', $bestellnummer);
+ $where .= " AND sa.bestellnummer='$bestellnummer'";
+ }
+
+ $arr = $this->app->DB->SelectArr("SELECT sa.*, p.abkuerzung FROM shopimport_auftraege sa left join projekt p on sa.projekt = p.id WHERE sa.imported='0' AND sa.trash='0' $where ORDER BY sa.logdatei LIMIT 100");
+ if (is_array($arr) && (!empty($arr) ? count($arr) : 0) > 0) {
+
+ //Alte Auftraege prüfen
+ $alteauftraegeohnebestellnummer = $this->app->DB->Query("SELECT sa.* FROM shopimport_auftraege sa WHERE isnull(bestellnummer) AND sa.trash='0' LIMIT 100");
+ while ($row = $this->app->DB->Fetch_Assoc($alteauftraegeohnebestellnummer)) {
+ if ($row['warenkorb'] != '') {
+ if (!empty($row['jsonencoded'])) {
+ $warenkorb = json_decode(base64_decode($row['warenkorb']), true);
+ } else {
+ $warenkorb = unserialize(base64_decode($row['warenkorb']));
+ }
+ $this->app->DB->Update("UPDATE shopimport_auftraege set bestellnummer = '" . (isset($warenkorb['onlinebestellnummer']) ? $warenkorb['onlinebestellnummer'] : '') . "' where id = '" . $row['id'] . "'");
+ } else {
+ $this->app->DB->Update("UPDATE shopimport_auftraege set bestellnummer = '' where id = '" . $row['id'] . "'");
+ }
+ }
+ $this->app->DB->free($alteauftraegeohnebestellnummer);
+
+ $unbekanntezahlungsweisen = null;
+ $enthaeltdoppeltenummern = false;
+ $carr = $arr ? count($arr) : 0;
+ for ($i = 0; $i < $carr; $i++) {
+ if (empty($checkglobal) || !isset($checkglobal[$arr[$i]['shopid']])) {
+ $checkglobal[$arr[$i]['shopid']] = null;
+
+ if (($modulename = $this->app->DB->Select("SELECT modulename FROM shopexport WHERE id = '" . $arr[$i]['shopid'] . "' AND modulename <> '' AND shoptyp = 'intern'")) && $this->app->DB->Select("SELECT id FROM shopexport WHERE modulename = '" . $this->app->DB->real_escape_string($modulename) . "' AND id <> '" . $arr[$i]['shopid'] . "' LIMIT 1")
+ ) {
+ $shopsintern = $this->app->DB->SelectArr("SELECT id FROM shopexport WHERE id = '" . $arr[$i]['shopid'] . "' OR (modulename = '" . $this->app->DB->real_escape_string($modulename) . "' AND shoptyp = 'intern')");
+ if ($shopsintern) {
+ foreach ($shopsintern as $vs) {
+ $checkglobal[$arr[$i]['shopid']][] = " shopid = '" . $vs['id'] . "' ";
+ }
+ if ($this->app->erp->ModulVorhanden($modulename)) {
+ /** @var ShopimporterBase $obj */
+ $obj = $this->app->erp->LoadModul($modulename);
+ if ($obj && method_exists($obj, 'EinstellungenStruktur')) {
+ $konfiguration = $obj->EinstellungenStruktur();
+ if ($konfiguration && isset($konfiguration['globalerauftragsnummernkreis']) && $konfiguration['globalerauftragsnummernkreis']) {
+
+ } else {
+ $checkglobal[$arr[$i]['shopid']] = null;
+ }
+ } else {
+ $checkglobal[$arr[$i]['shopid']] = null;
+ }
+ } else {
+ $checkglobal[$arr[$i]['shopid']] = null;
+ }
+ }
+ }
+ }
+ }
+
+ $carr = $arr ? count($arr) : 0;
+ for ($i = 0; $i < $carr; $i++) {
+ $projekt = $this->app->DB->Select("SELECT projekt FROM shopexport WHERE id = '" . $arr[$i]['shopid'] . "' LIMIT 1");
+ $auftraegeaufspaeter = $this->app->DB->Select("SELECT auftraegeaufspaeter FROM shopexport WHERE id='" . $arr[$i]['shopid'] . "'");
+ if (!empty($arr[$i]['jsonencoded'])) {
+ $warenkorb = json_decode(base64_decode($arr[$i]['warenkorb']), true);
+ } else {
+ $warenkorb = unserialize(base64_decode($arr[$i]['warenkorb']));
+ }
+ foreach ($warenkorb as $key => $value) {
+ if (is_string($warenkorb[$key])) {
+ $warenkorb[$key] = trim($warenkorb[$key]);
+ }
+ }
+ foreach ($warenkorb as $k => $v) {
+ $warenkorb[$k] = $this->app->erp->fixeUmlaute($v);
+ }
+ $kundenurvonprojekt = $this->app->DB->Select("SELECT kundenurvonprojekt FROM shopexport WHERE id = '" . $arr[$i]['shopid'] . "' LIMIT 1");
+ $adresseprojekt = '';
+ if ($kundenurvonprojekt) {
+ $adresseprojekt = $this->app->DB->Select("SELECT projekt FROM shopexport WHERE id = '" . $arr[$i]['shopid'] . "' LIMIT 1");
+ }
+ if (isset($warenkorb['subshop']) && $warenkorb['subshop']) {
+ $subshopprojekt = $this->app->DB->Select("SELECT projekt FROM shopexport_subshop WHERE shop = '" . $arr[$i]['shopid'] . "' AND aktiv = 1 AND subshopkennung = '" . $this->app->DB->real_escape_string($warenkorb['subshop']) . "' LIMIT 1");
+ if ($subshopprojekt) {
+ if (!$kundenurvonprojekt) {
+ $adresseprojekt = $subshopprojekt;
+ }
+ $arr[$i]['abkuerzung'] = $this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id = '$adresseprojekt' LIMIT 1");
+ }
+ }
+ if ($kundenurvonprojekt) {
+ $adresseprojekt = " AND projekt = '" . $adresseprojekt . "' ";
+ } else {
+ $adresseprojekt = '';
+ }
+
+ $checkid = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE `name`='" . $this->app->DB->real_escape_string($warenkorb['name']) . "' AND abteilung='" . $this->app->DB->real_escape_string($warenkorb['abteilung']) . "'
+ AND strasse='" . $this->app->DB->real_escape_string($warenkorb['strasse']) . "' AND plz='" . $this->app->DB->real_escape_string($warenkorb['plz']) . "' AND ort='" . $this->app->DB->real_escape_string($warenkorb['ort']) . "' AND kundennummer <> '' AND geloescht!=1 $adresseprojekt
+ ORDER BY email='" . $this->app->DB->real_escape_string($warenkorb['email']) . "' DESC
+ LIMIT 1");
+
+ if ($warenkorb['email'] != '') {
+ if ((String) $checkidemail === '') {
$checkidemail = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE email='".$this->app->DB->real_escape_string($warenkorb['email'])."' and email <> '' $adresseprojekt AND geloescht!=1 AND kundennummer <> '' LIMIT 1");
- }
- if((String)$checkidemail === ''){
$checkidemail = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE name LIKE '" . $this->app->DB->real_escape_string($warenkorb['name']) . "' AND ort LIKE '" . $this->app->DB->real_escape_string($warenkorb['ort']) . "' AND geloescht!=1 $adresseprojekt AND kundennummer <> '' LIMIT 1");
- }
- }else{
- $checkidemail = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE name='".$this->app->DB->real_escape_string($warenkorb['name'])."' AND strasse='".$this->app->DB->real_escape_string($warenkorb['strasse'])."' AND plz='".$this->app->DB->real_escape_string($warenkorb['plz'])."' AND ort='".$this->app->DB->real_escape_string($warenkorb['ort'])."' $adresseprojekt AND geloescht!=1 AND kundennummer <> '' LIMIT 1");
+ }
+ } else {
+ $checkidemail = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE name='" . $this->app->DB->real_escape_string($warenkorb['name']) . "' AND strasse='" . $this->app->DB->real_escape_string($warenkorb['strasse']) . "' AND plz='" . $this->app->DB->real_escape_string($warenkorb['plz']) . "' AND ort='" . $this->app->DB->real_escape_string($warenkorb['ort']) . "' $adresseprojekt AND geloescht!=1 AND kundennummer <> '' LIMIT 1");
+ }
+
+ if ($warenkorb['kundennummer'] != '' && !empty($validkundennummer) && $validkundennummer == $warenkorb['kundennummer']) {
+ $kdrnummer = $warenkorb['kundennummer'];
+ $kdr_name = $this->app->DB->Select("SELECT name FROM adresse WHERE kundennummer='$kdrnummer' $adresseprojekt AND geloescht!=1 LIMIT 1");
+ $email = $this->app->DB->Select("SELECT email FROM adresse WHERE kundennummer='$kdrnummer' $adresseprojekt AND geloescht!=1 LIMIT 1");
+ $parts = explode("\n", wordwrap($kdr_name, 20, "\n"));
+ $kdr_name = $parts[0];
+ $kdr_name = '' . $kdr_name . ' ';
+ $email = '' . $email . ' ';
+
+ $kdr_strasse = $this->app->DB->Select("SELECT strasse FROM adresse WHERE kundennummer='$kdrnummer' AND geloescht!=1 $adresseprojekt LIMIT 1");
+ $parts = explode("\n", wordwrap($kdr_strasse, 20, "\n"));
+ $kdr_strasse = $parts[0];
+ $kdr_strasse = '' . $kdr_strasse . ' ';
+
+ $kdr_plz = '' . $this->app->DB->Select("SELECT plz FROM adresse WHERE kundennummer='$kdrnummer' AND geloescht!=1 $adresseprojekt LIMIT 1") . ' ';
+ $kdr_ort = '' . $this->app->DB->Select("SELECT ort FROM adresse WHERE kundennummer='$kdrnummer' AND geloescht!=1 $adresseprojekt LIMIT 1") . ' ';
+ $checked = '';
+ } elseif ($checkid != '') {
+ $checked = 'checked';
+ $kdrnummer = $checkid;
+ //$kdr_name = "".$this->app->DB->Select("SELECT name FROM adresse WHERE kundennummer='$kdrnummer' AND firma='".$this->app->User->GetFirma()."' LIMIT 1")." ";
+ $kdrArr = $this->app->DB->SelectRow("SELECT name, email, strasse, ort, plz FROM adresse WHERE kundennummer='$kdrnummer' AND geloescht!=1 $adresseprojekt LIMIT 1");
+ $kdr_name = $kdrArr['name'];
+ $email = $kdrArr['email'];
+ $parts = explode("\n", wordwrap($kdr_name, 20, "\n"));
+ $kdr_name = $parts[0];
+ $kdr_name = '' . $kdr_name . ' ';
+ $email = '' . $email . ' ';
+
+ $kdr_strasse = $kdrArr['strasse'];
+ $parts = explode("\n", wordwrap($kdr_strasse, 20, "\n"));
+ $kdr_strasse = $parts[0];
+ $kdr_strasse = '' . $kdr_strasse . ' ';
+
+ $kdr_plz = '' . $kdrArr['plz'] . ' ';
+ $kdr_ort = '' . $kdrArr['or'] . ' ';
+ } elseif ($checkidemail != '') {
+ $checked = 'checked';
+ $kdrnummer = $checkidemail;
+ $warenkorb['kundennummer'] = $kdrnummer;
+ //$kdr_name = "".$this->app->DB->Select("SELECT name FROM adresse WHERE kundennummer='$kdrnummer' AND firma='".$this->app->User->GetFirma()."' LIMIT 1")." ";
+ $kdrArr = $this->app->DB->SelectRow("SELECT name, email, strasse, ort, plz FROM adresse WHERE kundennummer='$kdrnummer' AND geloescht!=1 $adresseprojekt LIMIT 1");
+ $kdr_name = $kdrArr['name'];
+ $email = $kdrArr['email'];
+ $parts = explode("\n", wordwrap($kdr_name, 20, "\n"));
+ $kdr_name = $parts[0];
+ $kdr_name = '' . $kdr_name . ' ';
+ $email = '' . $email . ' ';
+
+ $kdr_strasse = $kdrArr['strasse'];
+ $parts = explode("\n", wordwrap($kdr_strasse, 40, "\n"));
+ $kdr_strasse = $parts[0];
+ $kdr_strasse = '' . $kdr_strasse . ' ';
+
+ $kdr_plz = '' . $kdrArr['plz'] . ' ';
+ $kdr_ort = '' . $kdrArr['ort'] . ' ';
+ } else {
+ $checked = '';
+ $checkid = '';
+ $kdrnummer = '';
+ $checkidemail = '';
+ $kdr_name = '';
+ $kdr_strasse = '';
+ $kdr_plz = '';
+ $kdr_ort = '';
+ $email = '';
+ }
+ if ($kdrnummer != '') {
+ $kdr_addresse_id = $this->app->DB->Select("SELECT id FROM adresse WHERE kundennummer='$kdrnummer' AND geloescht!=1 $adresseprojekt LIMIT 1");
+ } else {
+ $kdr_addresse_id = '';
+ }
+
+ $warenkorb['name'] = $this->app->erp->LimitWord($warenkorb['name'], 20);
+ $warenkorb['strasse'] = $this->app->erp->LimitWord($warenkorb['strasse'], 20);
+
+ $htmltable->NewRow();
+
+ $doppelteonlinebestellnummer = false;
+ if (!empty($warenkorb['onlinebestellnummer'])) {
+ $check = $this->app->DB->Select("SELECT id from shopimport_auftraege where id <> '" . $arr[$i]['id'] . "' and shopid = '" . $arr[$i]['shopid'] . "' and bestellnummer = '" . $warenkorb['onlinebestellnummer'] . "' and trash = '0' LIMIT 1");
+ if ($check) {
+ $doppelteonlinebestellnummer = true;
+ $enthaeltdoppeltenummern = true;
+ } elseif (!empty($checkglobal) && isset($checkglobal[$arr[$i]['shopid']]) && $checkglobal[$arr[$i]['shopid']]) {
+ $check = $this->app->DB->Select("SELECT id from shopimport_auftraege where id <> '" . $arr[$i]['id'] . "' and (shopid = '" . $arr[$i]['shopid'] . "' OR " . (implode(" OR ", $checkglobal[$arr[$i]['shopid']])) . ") and bestellnummer = '" . $warenkorb['onlinebestellnummer'] . "' and trash = '0' LIMIT 1");
+ if ($check) {
+ $doppelteonlinebestellnummer = true;
+ $enthaeltdoppeltenummern = true;
+ }
+ }
+ }
+
+ $htmltable->AddCol(' ');
+ $htmltable->AddCol(' ');
+ $htmltable->AddCol(' ');
+ $htmltable->AddCol($arr[$i]['abkuerzung']);
+
+ $htmltable->AddCol(($doppelteonlinebestellnummer ? '' : '') . $warenkorb['onlinebestellnummer'] . ($doppelteonlinebestellnummer ? ' ' : ''));
+ $htmltable->AddCol($warenkorb['name'] . $kdr_name . ' ' . $warenkorb['email'] . $email);
+ $htmltable->AddCol($warenkorb['internebezeichnung']);
+
+ $htmltable->AddCol($warenkorb['strasse'] . $kdr_strasse);
+ $htmltable->AddCol($warenkorb['plz'] . $kdr_plz);
+ $htmltable->AddCol($warenkorb['ort'] . $kdr_ort);
+ if ($checkid != '') {
+ $htmltable->AddCol(' ');
+ } else {
+ $htmltable->AddCol(' ');
+ }
+
+ $htmltable->AddCol(' ');
+ //$htmltable->AddCol(' ');
+ $htmltable->AddCol($warenkorb['land']);
+ $htmltable->AddCol(number_format($warenkorb['gesamtsumme'], 2, ',', '.'));
+ $saldo_kunde = round($this->app->erp->SaldoAdresse($kdr_addresse_id), 2);
+ if ($saldo_kunde > 0) {
+ $saldo_kunde = '' . number_format($saldo_kunde, 2, ',', '.') . ' ';
+ } else {
+ $saldo_kunde = '-';
+ }
+ $htmltable->AddCol($saldo_kunde);
+ $htmltable->AddCol($warenkorb['zahlungsweise']);
+
+ $htmltable->AddCol($warenkorb['affiliate_ref']);
+ //$htmltable->AddCol('Einzelimport verwerfen ');
+ //$warenkorb[gesamtsumme] = str_replace(".","",$warenkorb[gesamtsumme]);
+ $gesamtsumme = (isset($gesamtsumme) ? $gesamtsumme : 0) + $warenkorb['gesamtsumme'];
+ $checkid = '';
+ $checkidemail = '';
+ $validkundennummer = '';
+ //$this->app->Tpl->Add('INHALT'," {$warenkorb[onlinebestellnummer]} {$warenkorb[name]} {$warenkorb[land]} {$warenkorb[gesamtsumme]} ");
+ }
+ } else {
+ if ($deletedRows > 0) {
+ $msg = $this->app->erp->base64_url_encode('Es wurden ' . $deletedRows . ' bereits importierte Datensätze entfernt.
');
+ } else {
+ $msg = $this->app->erp->base64_url_encode('Aktuell sind keine Aufträge in den Online-Shops vorhanden!
');
+ }
+ $this->app->Location->execute('Location: index.php?module=shopimport&action=list&msg=' . $msg);
}
- if($warenkorb['kundennummer']!='' && !empty($validkundennummer) && $validkundennummer==$warenkorb['kundennummer'])
- {
- $kdrnummer = $warenkorb['kundennummer'];
- $kdr_name = $this->app->DB->Select("SELECT name FROM adresse WHERE kundennummer='$kdrnummer' $adresseprojekt AND geloescht!=1 LIMIT 1");
- $email = $this->app->DB->Select("SELECT email FROM adresse WHERE kundennummer='$kdrnummer' $adresseprojekt AND geloescht!=1 LIMIT 1");
- $parts= explode("\n", wordwrap($kdr_name, 20, "\n"));
- $kdr_name = $parts[0];
- $kdr_name = ''.$kdr_name.' ';
- $email = ''.$email.' ';
-
- $kdr_strasse = $this->app->DB->Select("SELECT strasse FROM adresse WHERE kundennummer='$kdrnummer' AND geloescht!=1 $adresseprojekt LIMIT 1");
- $parts= explode("\n", wordwrap($kdr_strasse, 20, "\n"));
- $kdr_strasse = $parts[0];
- $kdr_strasse = ''.$kdr_strasse.' ';
-
- $kdr_plz = ''.$this->app->DB->Select("SELECT plz FROM adresse WHERE kundennummer='$kdrnummer' AND geloescht!=1 $adresseprojekt LIMIT 1").' ';
- $kdr_ort = ''.$this->app->DB->Select("SELECT ort FROM adresse WHERE kundennummer='$kdrnummer' AND geloescht!=1 $adresseprojekt LIMIT 1").' ';
- $checked='';
- }
- elseif ($checkid!='')
- {
- $checked='checked';
- $kdrnummer = $checkid;
- //$kdr_name = "".$this->app->DB->Select("SELECT name FROM adresse WHERE kundennummer='$kdrnummer' AND firma='".$this->app->User->GetFirma()."' LIMIT 1")." ";
- $kdrArr = $this->app->DB->SelectRow("SELECT name, email, strasse, ort, plz FROM adresse WHERE kundennummer='$kdrnummer' AND geloescht!=1 $adresseprojekt LIMIT 1");
- $kdr_name = $kdrArr['name'];
- $email = $kdrArr['email'];
- $parts= explode("\n", wordwrap($kdr_name, 20, "\n"));
- $kdr_name = $parts[0];
- $kdr_name = ''.$kdr_name.' ';
- $email = ''.$email.' ';
-
- $kdr_strasse = $kdrArr['strasse'];
- $parts= explode("\n", wordwrap($kdr_strasse, 20, "\n"));
- $kdr_strasse = $parts[0];
- $kdr_strasse = ''.$kdr_strasse.' ';
-
- $kdr_plz = ''.$kdrArr['plz'].' ';
- $kdr_ort = ''.$kdrArr['or'].' ';
-
- }
- elseif ($checkidemail!='')
- {
- $checked='checked';
- $kdrnummer = $checkidemail;
- $warenkorb['kundennummer'] = $kdrnummer;
- //$kdr_name = "".$this->app->DB->Select("SELECT name FROM adresse WHERE kundennummer='$kdrnummer' AND firma='".$this->app->User->GetFirma()."' LIMIT 1")." ";
- $kdrArr = $this->app->DB->SelectRow("SELECT name, email, strasse, ort, plz FROM adresse WHERE kundennummer='$kdrnummer' AND geloescht!=1 $adresseprojekt LIMIT 1");
- $kdr_name = $kdrArr['name'];
- $email = $kdrArr['email'];
- $parts= explode("\n", wordwrap($kdr_name, 20, "\n"));
- $kdr_name = $parts[0];
- $kdr_name = ''.$kdr_name.' ';
- $email = ''.$email.' ';
-
- $kdr_strasse = $kdrArr['strasse'];
- $parts= explode("\n", wordwrap($kdr_strasse, 40, "\n"));
- $kdr_strasse = $parts[0];
- $kdr_strasse = ''.$kdr_strasse.' ';
-
- $kdr_plz = ''.$kdrArr['plz'].' ';
- $kdr_ort = ''.$kdrArr['ort'].' ';
- }
-
-
- else {
- $checked='';
- $checkid='';
- $kdrnummer='';
- $checkidemail='';
- $kdr_name='';
- $kdr_strasse='';
- $kdr_plz='';
- $kdr_ort='';
- $email='';
- }
- if($kdrnummer != ''){
- $kdr_addresse_id = $this->app->DB->Select("SELECT id FROM adresse WHERE kundennummer='$kdrnummer' AND geloescht!=1 $adresseprojekt LIMIT 1");
- }
- else {
- $kdr_addresse_id = '';
- }
-
- $warenkorb['name'] = $this->app->erp->LimitWord($warenkorb['name'],20);
- $warenkorb['strasse'] = $this->app->erp->LimitWord($warenkorb['strasse'],20);
$htmltable->NewRow();
+ $htmltable->AddCol(' ');
+ $htmltable->AddCol(' ');
+ $htmltable->AddCol(' ');
+ $htmltable->AddCol('');
+ $htmltable->AddCol('');
+ $htmltable->AddCol('');
+ $htmltable->AddCol('');
+ $htmltable->AddCol('');
+ $htmltable->AddCol('');
+ $htmltable->AddCol('');
+ $htmltable->AddCol('');
+ $htmltable->AddCol('');
+ $htmltable->AddCol('');
+ $htmltable->AddCol(number_format($gesamtsumme, 2, ',', '.'));
+ $htmltable->AddCol('');
+ $htmltable->AddCol('');
- $doppelteonlinebestellnummer = false;
- if(!empty($warenkorb['onlinebestellnummer']))
- {
- $check = $this->app->DB->Select("SELECT id from shopimport_auftraege where id <> '".$arr[$i]['id']."' and shopid = '".$arr[$i]['shopid']."' and bestellnummer = '".$warenkorb['onlinebestellnummer']."' and trash = '0' LIMIT 1");
- if($check)
- {
- $doppelteonlinebestellnummer = true;
- $enthaeltdoppeltenummern = true;
- }elseif(!empty($checkglobal) && isset($checkglobal[$arr[$i]['shopid']]) && $checkglobal[$arr[$i]['shopid']])
- {
- $check = $this->app->DB->Select("SELECT id from shopimport_auftraege where id <> '".$arr[$i]['id']."' and (shopid = '".$arr[$i]['shopid']."' OR ".(implode( " OR ", $checkglobal[$arr[$i]['shopid']])).") and bestellnummer = '".$warenkorb['onlinebestellnummer']."' and trash = '0' LIMIT 1");
- if($check)
- {
- $doppelteonlinebestellnummer = true;
- $enthaeltdoppeltenummern = true;
- }
- }
+ if ($enthaeltdoppeltenummern) {
+ $this->app->Tpl->Add('INHALT', 'Es wurde ein Auftrag aus einem Shop geholt, der bereits importiert wurde!
');
}
+ $this->app->Tpl->Add('INHALT', $htmltable->Get());
- $htmltable->AddCol(' ');
- $htmltable->AddCol(' ');
- $htmltable->AddCol(' ');
- $htmltable->AddCol($arr[$i]['abkuerzung']);
-
-
- $htmltable->AddCol(($doppelteonlinebestellnummer?'':'').$warenkorb['onlinebestellnummer'].($doppelteonlinebestellnummer?' ':''));
- $htmltable->AddCol($warenkorb['name'].$kdr_name.' '.$warenkorb['email'].$email);
- $htmltable->AddCol($warenkorb['internebezeichnung']);
-
- $htmltable->AddCol($warenkorb['strasse'].$kdr_strasse);
- $htmltable->AddCol($warenkorb['plz'].$kdr_plz);
- $htmltable->AddCol($warenkorb['ort'].$kdr_ort);
- if($checkid!=''){
- $htmltable->AddCol(' ');
- }
- else{
- $htmltable->AddCol(' ');
- }
-
- $htmltable->AddCol(' ');
- //$htmltable->AddCol(' ');
- $htmltable->AddCol($warenkorb['land']);
- $htmltable->AddCol(number_format($warenkorb['gesamtsumme'],2,',','.'));
- $saldo_kunde = round($this->app->erp->SaldoAdresse($kdr_addresse_id),2);
- if($saldo_kunde > 0){
- $saldo_kunde = '' . number_format($saldo_kunde, 2, ',','.') . ' ';
- }
- else{
- $saldo_kunde = '-';
- }
- $htmltable->AddCol($saldo_kunde);
- $htmltable->AddCol($warenkorb['zahlungsweise']);
-
-
- $htmltable->AddCol($warenkorb['affiliate_ref']);
- //$htmltable->AddCol('Einzelimport verwerfen ');
- //$warenkorb[gesamtsumme] = str_replace(".","",$warenkorb[gesamtsumme]);
- $gesamtsumme = (isset($gesamtsumme)?$gesamtsumme:0) + $warenkorb['gesamtsumme'];
- $checkid = '';
- $checkidemail = '';
- $validkundennummer = '';
- //$this->app->Tpl->Add('INHALT',"{$warenkorb[onlinebestellnummer]} {$warenkorb[name]} {$warenkorb[land]} {$warenkorb[gesamtsumme]} ");
- }
-
-
- } else {
- if($deletedRows > 0){
- $msg = $this->app->erp->base64_url_encode('Es wurden ' . $deletedRows . ' bereits importierte Datensätze entfernt.
');
- }else{
- $msg = $this->app->erp->base64_url_encode('Aktuell sind keine Aufträge in den Online-Shops vorhanden!
');
- }
- $this->app->Location->execute('Location: index.php?module=shopimport&action=list&msg='.$msg);
- }
-
-
- $htmltable->NewRow();
- $htmltable->AddCol(' ');
- $htmltable->AddCol(' ');
- $htmltable->AddCol(' ');
- $htmltable->AddCol('');
- $htmltable->AddCol('');
- $htmltable->AddCol('');
- $htmltable->AddCol('');
- $htmltable->AddCol('');
- $htmltable->AddCol('');
- $htmltable->AddCol('');
- $htmltable->AddCol('');
- $htmltable->AddCol('');
- $htmltable->AddCol('');
- $htmltable->AddCol(number_format($gesamtsumme,2,',','.'));
- $htmltable->AddCol('');
- $htmltable->AddCol('');
-
- if($enthaeltdoppeltenummern)
- {
- $this->app->Tpl->Add('INHALT','Es wurde ein Auftrag aus einem Shop geholt, der bereits importiert wurde!
');
- }
- $this->app->Tpl->Add('INHALT',$htmltable->Get());
-
- $this->app->Tpl->Add('INHALT'," Bedeutung:
+ $this->app->Tpl->Add('INHALT', " Bedeutung:
Kundennummer von Kunde angegeben, eventuell ist diese falsch!
Doppelte Internetbestellnummer!
Kundennummer bitte manuell prüfen!
Kundennummer aufgrund Felder Ort, Strasse, Name, Abteilung und E-Mail eindeutig gefunden!
");
- $this->app->Tpl->Set('EXTEND',' ');
- $this->app->Tpl->Parse('IMPORT','rahmen70.tpl');
+ $this->app->Tpl->Set('EXTEND', ' ');
+ $this->app->Tpl->Parse('IMPORT', 'rahmen70.tpl');
+ $this->app->Tpl->Parse('PAGE', 'shopimport_import.tpl');
+ }
- $this->app->Tpl->Parse('PAGE','shopimport_import.tpl');
- }
-
- public function ShopimportNavigation()
- {
- $id = $this->app->Secure->GetGET('id');
- $tmp = new Navigation($this->app, $id);
- $this->app->Tpl->Set('ID',$id);
- $this->app->Tpl->Set('PAGE',$tmp->Get());
- $this->app->BuildNavigation=false;
- }
-
+ public function ShopimportNavigation() {
+ $id = $this->app->Secure->GetGET('id');
+ $tmp = new Navigation($this->app, $id);
+ $this->app->Tpl->Set('ID', $id);
+ $this->app->Tpl->Set('PAGE', $tmp->Get());
+ $this->app->BuildNavigation = false;
+ }
}
diff --git a/www/pages/totp.php b/www/pages/totp.php
index 8d382bd2..420238e5 100644
--- a/www/pages/totp.php
+++ b/www/pages/totp.php
@@ -1,134 +1,133 @@
-app = $app;
-
- if($intern) return;
-
- $app->ActionHandlerInit($this);
-
- $app->ActionHandler('generate', 'TOTPGenerateSecretJSON');
- $app->ActionHandler('enable', 'TOTPEnable');
- $app->ActionHandler('disable', 'TOTPDisable');
-
- $app->ActionHandlerListen($app);
- }
-
- public function Install()
- {
- $tableName = 'user_totp';
- $this->app->erp->CheckTable($tableName);
- $this->app->erp->CheckColumn('id', 'UNSIGNED INT', $tableName, 'NOT NULL AUTO_INCREMENT');
- $this->app->erp->CheckColumn('user_id', 'INT', $tableName, 'UNSIGNED NOT NULL');
- $this->app->erp->CheckColumn('active', 'TINYINT(1)', $tableName, 'UNSIGNED DEFAULT 0');
- $this->app->erp->CheckColumn('secret', 'VARCHAR(100)', $tableName, 'NOT NULL');
- $this->app->erp->CheckColumn('created_at', 'TIMESTAMP', $tableName, 'DEFAULT NOW()');
- $this->app->erp->CheckColumn('modified_at', 'TIMESTAMP', $tableName);
- $this->app->erp->CheckIndex($tableName, 'user_id', true);
-
- $this->app->erp->RegisterHook('login_password_check_otp', 'totp', 'TOTPCheckLogin', 1, false, null, 3);
- }
-
- function TOTPDisable(){
- $action = $this->app->Secure->GetPOST('action');
-
- if($action !== 'disable'){
- return new JsonResponse(['status' => 'error', 'msg' => 'muss POST sein'], 400);
- }
-
- /** @var TOTPLoginService $totpLoginService */
- $totpLoginService = $this->app->Container->get('TOTPLoginService');
-
- $userId = $this->app->User->GetID();
-
- $totpLoginService->disableTotp($userId);
-
- return new JsonResponse(['status' => 'success']);
- }
-
- function TOTPEnable(){
- $secret = $this->app->Secure->GetPOST('secret');
-
- if(empty($secret)){
- return new JsonResponse(['status' => 'error', 'msg' => 'Secret Empty'], 400);
- }
-
- /** @var TOTPLoginService $totpLoginService */
- $totpLoginService = $this->app->Container->get('TOTPLoginService');
-
- $userId = $this->app->User->GetID();
-
- $totpLoginService->enableTotp($userId);
- $totpLoginService->setUserSecret($userId, $secret);
-
- return new JsonResponse(['status' => 'success']);
- }
-
- /**
- * @param $userID
- * @param $token
- * @param $passwordValid
- *
- * @throws Exception
- */
- public function TOTPCheckLogin($userID, $token, &$passwordValid)
- {
- /** @var TOTPLoginService $totpLoginService */
- $totpLoginService = $this->app->Container->get('TOTPLoginService');
-
- if(!$totpLoginService->isTOTPEnabled($userID)){
- return;
- }
- $passwordValid = $totpLoginService->isTokenValid($userID, $token);
- }
-
- public function TOTPGenerateSecretJSON(){
- /** @var TOTPLoginService $totpLoginService */
- $totpLoginService = $this->app->Container->get('TOTPLoginService');
-
- /** @var \Xentral\Components\Token\TOTPTokenManager $tokenManager */
- $tokenManager = $this->app->Container->get('TOTPTokenManager');
-
- $secret = $tokenManager->generateBase32Secret();
-
- $label = 'Xentral' . ' | ' . $this->app->erp->GetFirmaName();
-
- $qr = $totpLoginService->generatePairingQrCode($this->app->User->GetID(), $label, $secret);
-
- return new JsonResponse(
- [
- 'secret' => $secret,
- 'qr' => $qr->toHtml(4, 4)
- ]
- );
- }
-}
+app = $app;
+
+ if($intern) return;
+
+ $app->ActionHandlerInit($this);
+
+ $app->ActionHandler('generate', 'TOTPGenerateSecretJSON');
+ $app->ActionHandler('enable', 'TOTPEnable');
+ $app->ActionHandler('disable', 'TOTPDisable');
+
+ $app->ActionHandlerListen($app);
+ }
+
+ public function Install()
+ {
+ $tableName = 'user_totp';
+ $this->app->erp->CheckTable($tableName);
+ $this->app->erp->CheckColumn('id', 'UNSIGNED INT', $tableName, 'NOT NULL AUTO_INCREMENT');
+ $this->app->erp->CheckColumn('user_id', 'INT', $tableName, 'UNSIGNED NOT NULL');
+ $this->app->erp->CheckColumn('active', 'TINYINT(1)', $tableName, 'UNSIGNED DEFAULT 0');
+ $this->app->erp->CheckColumn('secret', 'VARCHAR(100)', $tableName, 'NOT NULL');
+ $this->app->erp->CheckColumn('created_at', 'TIMESTAMP', $tableName, 'DEFAULT NOW()');
+ $this->app->erp->CheckColumn('modified_at', 'TIMESTAMP', $tableName);
+ $this->app->erp->CheckIndex($tableName, 'user_id', true);
+
+ $this->app->erp->RegisterHook('login_password_check_otp', 'totp', 'TOTPCheckLogin', 1, false, null, 3);
+ }
+
+ function TOTPDisable(){
+ $action = $this->app->Secure->GetPOST('action');
+
+ if($action !== 'disable'){
+ return new JsonResponse(['status' => 'error', 'msg' => 'muss POST sein'], 400);
+ }
+
+ /** @var TOTPLoginService $totpLoginService */
+ $totpLoginService = $this->app->Container->get('TOTPLoginService');
+
+ $userId = $this->app->User->GetID();
+
+ $totpLoginService->disableTotp($userId);
+
+ return new JsonResponse(['status' => 'success']);
+ }
+
+ function TOTPEnable(){
+ $secret = $this->app->Secure->GetPOST('secret');
+
+ if(empty($secret)){
+ return new JsonResponse(['status' => 'error', 'msg' => 'Secret Empty'], 400);
+ }
+
+ /** @var TOTPLoginService $totpLoginService */
+ $totpLoginService = $this->app->Container->get('TOTPLoginService');
+
+ $userId = $this->app->User->GetID();
+
+ $totpLoginService->enableTotp($userId);
+ $totpLoginService->setUserSecret($userId, $secret);
+
+ return new JsonResponse(['status' => 'success']);
+ }
+
+ /**
+ * @param $userID
+ * @param $token
+ * @param $passwordValid
+ *
+ * @throws Exception
+ */
+ public function TOTPCheckLogin($userID, $token, &$passwordValid)
+ {
+ /** @var TOTPLoginService $totpLoginService */
+ $totpLoginService = $this->app->Container->get('TOTPLoginService');
+ if(!$totpLoginService->isTOTPEnabled($userID)){
+ return;
+ }
+ $passwordValid = $totpLoginService->isTokenValid($userID, $token);
+ }
+
+ public function TOTPGenerateSecretJSON(){
+ /** @var TOTPLoginService $totpLoginService */
+ $totpLoginService = $this->app->Container->get('TOTPLoginService');
+
+ /** @var \Xentral\Components\Token\TOTPTokenManager $tokenManager */
+ $tokenManager = $this->app->Container->get('TOTPTokenManager');
+
+ $secret = $tokenManager->generateBase32Secret();
+
+ $label = 'OpenXE' . ':' . $this->app->User->Getname();
+
+ $qr = $totpLoginService->generatePairingQrCode($this->app->User->GetID(), $label, $secret);
+
+ return new JsonResponse(
+ [
+ 'secret' => $secret,
+ 'qr' => $qr->toHtml(4, 4)
+ ]
+ );
+ }
+}
diff --git a/www/pages/verbindlichkeit.php b/www/pages/verbindlichkeit.php
index 45a559e0..dd22f79a 100644
--- a/www/pages/verbindlichkeit.php
+++ b/www/pages/verbindlichkeit.php
@@ -15,7 +15,7 @@ class Verbindlichkeit {
return;
$this->app->ActionHandlerInit($this);
- $this->app->ActionHandler("list", "verbindlichkeit_list");
+ $this->app->ActionHandler("list", "verbindlichkeit_list");
$this->app->ActionHandler("create", "verbindlichkeit_edit"); // This automatically adds a "New" button
$this->app->ActionHandler("edit", "verbindlichkeit_edit");
$this->app->ActionHandler("positionen", "verbindlichkeit_positionen");
@@ -28,10 +28,10 @@ class Verbindlichkeit {
$this->app->ActionHandler("freigabe", "verbindlichkeit_freigabe");
$this->app->ActionHandler("freigabeeinkauf", "verbindlichkeit_freigabeeinkauf");
$this->app->ActionHandler("freigabebuchhaltung", "verbindlichkeit_freigabebuchhaltung");
- $this->app->ActionHandler("freigabebezahlt", "verbindlichkeit_freigabebezahlt");
+ $this->app->ActionHandler("freigabebezahlt", "verbindlichkeit_freigabebezahlt");
$this->app->ActionHandler("ruecksetzeneinkauf", "verbindlichkeit_ruecksetzeneinkauf");
$this->app->ActionHandler("ruecksetzenbuchhaltung", "verbindlichkeit_ruecksetzenbuchhaltung");
- $this->app->ActionHandler("ruecksetzenbezahlt", "verbindlichkeit_ruecksetzenbezahlt");
+ $this->app->ActionHandler("ruecksetzenbezahlt", "verbindlichkeit_ruecksetzenbezahlt");
$this->app->ActionHandler("minidetail", "verbindlichkeit_minidetail");
$this->app->DefaultActionHandler("list");
@@ -50,14 +50,14 @@ class Verbindlichkeit {
$width = array('1%','1%','10%'); // Fill out manually later
// columns that are aligned right (numbers etc)
- // $alignright = array(4,5,6,7,8);
+ // $alignright = array(4,5,6,7,8);
$findcols = array(
'v.id',
'v.id',
'v.belegnr',
'a.name',
- 'a.lieferantennummer',
+ 'a.lieferantennummer',
'v.rechnung',
'v.rechnungsdatum',
'v.betrag',
@@ -70,10 +70,10 @@ class Verbindlichkeit {
'v.status_beleg',
'v.id'
);
-
- $searchsql = array(
+
+ $searchsql = array(
'a.name',
- 'a.lieferantennummer',
+ 'a.lieferantennummer',
'v.rechnung',
'v.internebemerkung'
);
@@ -91,7 +91,7 @@ class Verbindlichkeit {
$menu = "";
- $sql = "SELECT SQL_CALC_FOUND_ROWS
+ $sql = "SELECT SQL_CALC_FOUND_ROWS
v.id,
$dropnbox,
v.belegnr,
@@ -103,8 +103,8 @@ class Verbindlichkeit {
v.waehrung,
if(v.bezahlt,'bezahlt','offen'),
".$app->erp->FormatDate("v.zahlbarbis").",
- IF(v.skonto <> 0,".$app->erp->FormatDate("v.skontobis").",''),
- IF(v.skonto <> 0,CONCAT(".$app->erp->FormatMenge('v.skonto',0).",'%'),''),
+ IF(v.skonto <> 0,".$app->erp->FormatDate("v.skontobis").",''),
+ IF(v.skonto <> 0,CONCAT(".$app->erp->FormatMenge('v.skonto',0).",'%'),''),
v.status,
".$app->YUI->IconsSQLVerbindlichkeit().",
v.id FROM verbindlichkeit v
@@ -134,9 +134,9 @@ class Verbindlichkeit {
else
oMoreData' . $r . $name . ' = 1;
- $(\'#' . $name . '\').dataTable().fnFilter(
+ $(\'#' . $name . '\').dataTable().fnFilter(
\'\',
- i,
+ i,
0,0
);
}
@@ -145,7 +145,7 @@ class Verbindlichkeit {
$more_data1 = $this->app->Secure->GetGET("more_data1");
if ($more_data1 == 1) {
- $where .= " AND datei_anzahl IS NULL";
+ $where .= " AND datei_anzahl IS NULL";
} else {
}
@@ -154,36 +154,36 @@ class Verbindlichkeit {
$where .= " AND v.freigabe <> '1'";
}
else {
- }
+ }
$more_data3 = $this->app->Secure->GetGET("more_data3");
if ($more_data3 == 1) {
$where .= " AND v.rechnungsfreigabe <> '1'";
}
- else {
- }
-
+ else {
+ }
+
$more_data4 = $this->app->Secure->GetGET("more_data4");
if ($more_data4 == 1) {
- $where .= " AND v.bezahlt <> 1";
+ $where .= " AND v.bezahlt <> 1";
+ }
+ else {
}
- else {
- }
$more_data5 = $this->app->Secure->GetGET("more_data5");
if ($more_data5 == 1) {
}
- else {
- $where .= " AND v.status <> 'storniert'";
- }
+ else {
+ $where .= " AND v.status <> 'storniert'";
+ }
$more_data6 = $this->app->Secure->GetGET("more_data6");
if ($more_data6 == 1) {
}
- else {
- $where .= " AND v.status <> 'abgeschlossen'";
- }
-
+ else {
+ $where .= " AND v.status <> 'abgeschlossen'";
+ }
+
$this->app->YUI->DatePicker('zahlbarbis');
$filterzahlbarbis = $this->app->YUI->TableSearchFilter($name, 7,'zahlbarbis');
if (!empty($filterzahlbarbis)) {
@@ -204,7 +204,7 @@ class Verbindlichkeit {
break;
case 'verbindlichkeit_paketdistribution_list':
- $allowed['verbindlichkeit_paketdistribution_list'] = array('list');
+ $allowed['verbindlichkeit_paketdistribution_list'] = array('list');
$id = $app->Secure->GetGET('id');
if (empty($id)) {
@@ -212,13 +212,13 @@ class Verbindlichkeit {
}
$verbindlichkeit = $app->DB->SelectArr("SELECT v.adresse, v.rechnung, b.belegnr FROM verbindlichkeit v LEFT JOIN bestellung b ON b.id = v.bestellung WHERE v.id = ".$id)[0];
-
+
$lieferant = $verbindlichkeit['adresse'];
$bestellnummer = $verbindlichkeit['belegnr'];
$rechnung = $verbindlichkeit['rechnung'];
-
+
$heading = array('', 'Paket-Nr.','Paket-Pos.', 'Bestellung', 'Lieferschein', 'Rechnung', 'Artikel-Nr.','Artikel','Bemerkung','Menge','Menge offen','Eingabe','Preis','Steuer','Sachkonto','');
- $width = array( '1%','1%', '1%', '5%', '5%', '5%', '5%', '20%', '20%', '2%', '1%', '1%', '1%', '1%', '1%', '1%');
+ $width = array( '1%','1%', '1%', '5%', '5%', '5%', '5%', '20%', '20%', '2%', '1%', '1%', '1%', '1%', '1%', '1%');
$findcols = array('id','pa','id','belegnr','lsnr','renr','artikelnummer','name_de','bemerkung','menge','offen_menge','offen_menge','preis','steuer','sachkonto','pa');
$searchsql = array('p.nummer', 'p.name', 'p.bemerkung');
@@ -226,7 +226,7 @@ class Verbindlichkeit {
$alignright = array(9,10);
$defaultorder = 1;
- $defaultorderdesc = 0;
+ $defaultorderdesc = 0;
$offen_menge = "TRIM(IF(
pd.menge > COALESCE(vp.menge,0),
@@ -235,10 +235,10 @@ class Verbindlichkeit {
))+0";
$auswahl = array (
- ' 'pd.id'],
'"/>'
- );
+ );
$werte = array (
' $offen_menge],
'"/>'
- );
+ );
$preise = array (
' '
- );
-
+ );
+
$artikellink = array (
'',
+ '">',
['sql' => 'art.nummer'],
' '
);
@@ -267,16 +267,16 @@ class Verbindlichkeit {
$paketlink = array (
'',
+ '">',
['sql' => 'pa.id'],
' '
);
-
+
$where = "offen_menge > 0";
// Toggle filters
$this->app->Tpl->Add('JQUERYREADY', "$('#passende').click( function() { fnFilterColumn1( 0 ); } );");
-
+
for ($r = 1;$r <= 1;$r++) {
$this->app->Tpl->Add('JAVASCRIPT', '
function fnFilterColumn' . $r . ' ( i )
@@ -286,9 +286,9 @@ class Verbindlichkeit {
else
oMoreData' . $r . $name . ' = 1;
- $(\'#' . $name . '\').dataTable().fnFilter(
+ $(\'#' . $name . '\').dataTable().fnFilter(
\'\',
- i,
+ i,
0,0
);
}
@@ -299,12 +299,12 @@ class Verbindlichkeit {
if ($more_data1 == 1) {
$innerwhere .= " AND ((b.belegnr LIKE '%".$bestellnummer."%' AND '".$bestellnummer."' <> '') OR (pa.renr LIKE '%".$rechnung."%' AND pa.renr <> ''))";
} else {
- }
- // END Toggle filters
+ }
+ // END Toggle filters
$sql = "
SELECT SQL_CALC_FOUND_ROWS * FROM (
- SELECT
+ SELECT
pa.id pa_id,
".$this->app->erp->ConcatSQL($auswahl)." AS auswahl,
".$this->app->erp->ConcatSQL($paketlink)." pa,
@@ -326,7 +326,7 @@ class Verbindlichkeit {
if(art.umsatzsteuer = '',art.steuersatz,art.umsatzsteuer) steuer,
if (skart.id <> 0,
CONCAT(skart.sachkonto,' ',skart.beschriftung),
- CONCAT(skadr.sachkonto,' ',skadr.beschriftung)
+ CONCAT(skadr.sachkonto,' ',skadr.beschriftung)
) AS sachkonto
FROM
paketannahme pa
@@ -339,7 +339,7 @@ class Verbindlichkeit {
LEFT JOIN bestellung_position bp ON
bp.id = pd.bestellung_position
LEFT JOIN bestellung b ON
- b.id = bp.bestellung
+ b.id = bp.bestellung
LEFT JOIN(
SELECT
paketdistribution,
@@ -350,11 +350,11 @@ class Verbindlichkeit {
paketdistribution
) vp
ON
- vp.paketdistribution = pd.id
- LEFT JOIN
+ vp.paketdistribution = pd.id
+ LEFT JOIN
kontorahmen skart ON skart.id = art.kontorahmen
- LEFT JOIN
- kontorahmen skadr ON skadr.id = adr.kontorahmen
+ LEFT JOIN
+ kontorahmen skadr ON skadr.id = adr.kontorahmen
WHERE pa.adresse = ".$lieferant." AND pd.vorlaeufig IS NULL".$innerwhere."
) temp
";
@@ -365,24 +365,24 @@ class Verbindlichkeit {
break;
case 'verbindlichkeit_positionen':
- $allowed['verbindlichkeit_positionen'] = array('list');
+ $allowed['verbindlichkeit_positionen'] = array('list');
$id = $app->Secure->GetGET('id');
$freigabe = $app->DB->Select("SELECT freigabe FROM verbindlichkeit WHERE id = '".$id."'");
$rechnungsfreigabe = $app->DB->Select("SELECT rechnungsfreigabe FROM verbindlichkeit WHERE id = '".$id."'");
$heading = array('', 'Paket-Nr.','Paket-Pos.', 'Bestellung', 'Artikel-Nr.','Artikel','Bemerkung','Menge','Preis','Steuersatz','Sachkonto');
- $width = array( '1%','1%', '1%' , '2%', '2%', '20%', '20%', '1%', '1%', '3%', '1%', '1%');
+ $width = array( '1%','1%', '1%' , '2%', '2%', '20%', '20%', '1%', '1%', '3%', '1%', '1%');
$findcols = array('vp.id','pd.paketannahme','pd.id','b.belegnr','art.nummer','art.name_de','pd.bemerkung','vp.menge','vp.preis','vp.steuersatz',"CONCAT(skv.sachkonto,' ',skv.beschriftung)",'vp.id');
$searchsql = array('p.nummer', 'p.name', 'p.bemerkung');
- $alignright = array(8,9,10);
+ $alignright = array(8,9,10);
$defaultorder = 1;
- $defaultorderdesc = 0;
+ $defaultorderdesc = 0;
- if (empty($freigabe)) {
+ if (empty($freigabe)) {
$menu="";
} else if (empty($rechnungsfreigabe)) {
$menu="";
@@ -390,20 +390,20 @@ class Verbindlichkeit {
else {
$deletepos = array('');
}
- $heading[] = '';
-
+ $heading[] = '';
+
$box = "CONCAT(' ') AS `auswahl`";
$paketlink = array (
'',
+ '">',
['sql' => 'pd.paketannahme'],
' '
);
$sql = "
- SELECT SQL_CALC_FOUND_ROWS
+ SELECT SQL_CALC_FOUND_ROWS
vp.id,
$box,
".$this->app->erp->ConcatSQL($paketlink)." pa,
@@ -429,7 +429,7 @@ class Verbindlichkeit {
adr.id = v.adresse
LEFT JOIN bestellung_position bp ON pd.bestellung_position = bp.id
LEFT JOIN bestellung b ON b.id = bp.bestellung
- LEFT JOIN kontorahmen skv ON skv.id = vp.kontorahmen
+ LEFT JOIN kontorahmen skv ON skv.id = vp.kontorahmen
";
$where = "vp.verbindlichkeit = ".$id;
@@ -448,26 +448,26 @@ class Verbindlichkeit {
}
return $erg;
}
-
+
function verbindlichkeit_list() {
// Process multi action
$submit = $this->app->Secure->GetPOST('submit');
switch($submit) {
case 'status_berechnen':
-
+
$sql = "SELECT id FROM verbindlichkeit WHERE status <> 'abgeschlossen' AND status <> 'storniert'";
$ids = $this->app->DB->SelectArr($sql);
-
+
foreach ($ids as $verbindlichkeit) {
$this->verbindlichkeit_abschliessen($verbindlichkeit['id']);
}
-
+
break;
case 'ausfuehren':
$auswahl = $this->app->Secure->GetPOST('auswahl');
$aktion = $this->app->Secure->GetPOST('sel_aktion');
-
+
$selectedIds = [];
if(!empty($auswahl)) {
foreach($auswahl as $selectedId) {
@@ -475,7 +475,7 @@ class Verbindlichkeit {
if($selectedId > 0) {
$selectedIds[] = $selectedId;
}
- }
+ }
switch ($aktion) {
case 'freigabeeinkauf':
@@ -487,7 +487,7 @@ class Verbindlichkeit {
}
break;
case 'freigabebuchhaltung':
- foreach ($selectedIds as $id) {
+ foreach ($selectedIds as $id) {
$result = $this->verbindlichkeit_freigabebuchhaltung($id);
if ($result !== true) {
$this->app->YUI->Message('warning',$result);
@@ -502,9 +502,34 @@ class Verbindlichkeit {
}
}
break;
- }
- }
- break;
+ case 'drucken':
+ $drucker = $this->app->Secure->GetPOST('seldrucker');
+ foreach ($selectedIds as $id) {
+ $file_attachments = $this->app->erp->GetDateiSubjektObjekt('%','verbindlichkeit',$id);
+ if (!empty($file_attachments)) {
+ foreach ($file_attachments as $file_attachment) {
+ if ($this->app->erp->GetDateiEndung($file_attachment) == 'pdf') {
+ $file_contents = $this->app->erp->GetDatei($file_attachment);
+ $verbindlichkeit = $this->app->DB->SelectRow("SELECT DATE_FORMAT(rechnungsdatum, '%Y%m%d') rechnungsdatum, belegnr FROM verbindlichkeit WHERE id = ".$id." LIMIT 1");
+ $file_name = $verbindlichkeit['rechnungsdatum']."_VB".$verbindlichkeit['belegnr'].".pdf";
+ $file_path = rtrim($this->app->erp->GetTMP(),'/')."/".$file_name;
+ $handle = fopen ($file_path, "wb");
+ if ($handle)
+ {
+ fwrite($handle, $file_contents);
+ fclose($handle);
+ $this->app->printer->Drucken($drucker,$file_path);
+ } else {
+ $this->app->YUI->Message('error',"Drucken fehlgeschlagen!");
+ }
+ }
+ }
+ }
+ }
+ break;
+ }
+ }
+ break;
}
$this->app->erp->MenuEintrag("index.php?module=verbindlichkeit&action=list", "Übersicht");
@@ -530,52 +555,54 @@ class Verbindlichkeit {
$this->app->User->SetParameter('table_verbindlichkeit_list_zahlbarbis', '');
$this->app->User->SetParameter('table_verbindlichkeit_list_skontobis', '');
+ $this->app->Tpl->Set('SELDRUCKER', $this->app->erp->GetSelectDrucker());
+
$this->app->Tpl->Parse('PAGE', "verbindlichkeit_list.tpl");
- }
+ }
public function verbindlichkeit_delete() {
$id = (int) $this->app->Secure->GetGET('id');
-
- $this->app->DB->Delete("UPDATE `verbindlichkeit` SET status='storniert' WHERE `id` = '{$id}'");
- $this->app->Tpl->Set('MESSAGE', "Der Eintrag wurde storniert.
");
+
+ $this->app->DB->Delete("UPDATE `verbindlichkeit` SET status='storniert' WHERE `id` = '{$id}'");
+ $this->app->Tpl->Set('MESSAGE', "Der Eintrag wurde storniert.
");
$this->verbindlichkeit_list();
- }
+ }
public function verbindlichkeit_deletepos() {
$posid = (int) $this->app->Secure->GetGET('posid');
- $id = (int) $this->app->Secure->GetGET('id');
+ $id = (int) $this->app->Secure->GetGET('id');
$verbindlichkeit = $this->app->DB->Select("SELECT verbindlichkeit FROM verbindlichkeit_position WHERE id ='{$posid}'");
- $this->app->DB->Delete("DELETE vp FROM verbindlichkeit_position vp INNER JOIN verbindlichkeit v ON v.id = vp.verbindlichkeit WHERE vp.id = '{$posid}' AND v.freigabe <> 1");
+ $this->app->DB->Delete("DELETE vp FROM verbindlichkeit_position vp INNER JOIN verbindlichkeit v ON v.id = vp.verbindlichkeit WHERE vp.id = '{$posid}' AND v.freigabe <> 1");
header("Location: index.php?module=verbindlichkeit&action=edit&id=$id#tabs-2");
- }
+ }
/*
* Edit verbindlichkeit item
* If id is empty, create a new one
*/
-
+
function verbindlichkeit_edit($einkauf_automatik_aus = false) {
$id = $this->app->Secure->GetGET('id');
-
+
// Check if other users are editing this id
if($this->app->erp->DisableModul('verbindlichkeit',$id))
{
return;
- }
-
+ }
+
$this->app->Tpl->Set('ID', $id);
$this->verbindlichkeit_menu($id);
$input = $this->GetInput();
$submit = $this->app->Secure->GetPOST('submit');
-
+
if (empty($id)) {
// New item
$id = 'NULL';
$input['status'] = 'angelegt';
- }
+ }
if (!empty($submit)) {
$einkauf_automatik_aus = false;
@@ -584,7 +611,7 @@ class Verbindlichkeit {
switch($submit)
{
case 'speichern':
- // Write to database
+ // Write to database
// Add checks here
$freigabe = $this->app->DB->SelectArr("SELECT rechnungsfreigabe, freigabe FROM verbindlichkeit WHERE id =".$id)[0];
@@ -597,21 +624,36 @@ class Verbindlichkeit {
$input['projekt'] = $this->app->erp->ReplaceProjekt(true,$projekt,true);
$input['kostenstelle'] = $this->app->DB->Select("SELECT id FROM kostenstellen WHERE nummer = '".$kostenstelle."'");
} else {
- $input['adresse'] = $this->app->erp->ReplaceLieferantennummer(true,$input['adresse'],true); // Parameters: Target db?, value, from form?
+
$input['rechnungsdatum'] = $this->app->erp->ReplaceDatum(true,$input['rechnungsdatum'],true); // Parameters: Target db?, value, from form?
$input['eingangsdatum'] = $this->app->erp->ReplaceDatum(true,$input['eingangsdatum'],true); // Parameters: Target db?, value, from form?
$input['skontobis'] = $this->app->erp->ReplaceDatum(true,$input['skontobis'],true); // Parameters: Target db?, value, from form?
$input['zahlbarbis'] = $this->app->erp->ReplaceDatum(true,$input['zahlbarbis'],true); // Parameters: Target db?, value, from form?
+
+ if($input['zahlbarbis_tage'] != '') {
+ $zahlbarbis = date_create_from_format('Y-m-d', $input['rechnungsdatum']);
+ date_add($zahlbarbis,date_interval_create_from_date_string($input['zahlbarbis_tage']." days"));
+ $input['zahlbarbis'] = date_format($zahlbarbis, 'Y-m-d');
+ }
+ unset($input['zahlbarbis_tage']);
+ if($input['skontobis_tage'] != '') {
+ $skontobis = date_create_from_format('Y-m-d', $input['rechnungsdatum']);
+ date_add($skontobis,date_interval_create_from_date_string($input['skontobis_tage']." days"));
+ $input['skontobis'] = date_format($skontobis, 'Y-m-d');
+ }
+ unset($input['skontobis_tage']);
+
+ $input['adresse'] = $this->app->erp->ReplaceLieferantennummer(true,$input['adresse'],true); // Parameters: Target db?, value, from form?
$input['projekt'] = $this->app->erp->ReplaceProjekt(true,$input['projekt'],true);
$input['kostenstelle'] = $this->app->DB->Select("SELECT id FROM kostenstellen WHERE nummer = '".$input['kostenstelle']."'");
$input['bestellung'] = $this->app->erp->ReplaceBestellung(true,$input['bestellung'],true);
if(empty($input['projekt']) && !empty($input['adresse'])) {
- $input['projekt'] = $this->app->erp->GetCreateProjekt($input['adresse']);
+ $input['projekt'] = $this->app->erp->GetCreateProjekt($input['adresse']);
}
if (!empty($input['adresse'])) {
$adressdaten = $this->app->DB->SelectRow("
- SELECT
+ SELECT
zahlungszieltagelieferant,
zahlungszieltageskontolieferant,
zahlungszielskontolieferant,
@@ -619,7 +661,7 @@ class Verbindlichkeit {
FROM adresse WHERE id = ".$input['adresse']
);
-
+
if ($input['zahlbarbis'] == '0000-00-00' && $input['rechnungsdatum'] != '0000-00-00' && !empty($adressdaten['zahlungszieltagelieferant'])) {
$input['zahlbarbis'] = date('Y-m-d',strtotime($input['rechnungsdatum']." + ".$adressdaten['zahlungszieltagelieferant']." days"));
}
@@ -630,12 +672,12 @@ class Verbindlichkeit {
}
- }
+ }
$columns = "id, ";
$values = "$id, ";
$update = "";
-
+
$fix = "";
foreach ($input as $key => $value) {
@@ -662,7 +704,7 @@ class Verbindlichkeit {
header("Location: index.php?module=verbindlichkeit&action=edit&id=$id&msg=$msg");
} else {
$this->app->Tpl->Set('MESSAGE', "Die Einstellungen wurden erfolgreich übernommen.
");
- }
+ }
break;
case 'positionen_hinzufuegen':
@@ -676,7 +718,7 @@ class Verbindlichkeit {
$werte = $this->app->Secure->GetPOST('werte');
$preise = $this->app->Secure->GetPOST('preise');
- $bruttoeingabe = $this->app->Secure->GetPOST('bruttoeingabe');
+ $bruttoeingabe = $this->app->Secure->GetPOST('bruttoeingabe');
foreach ($ids as $key => $paketdistribution) {
$menge = $werte[$key];
@@ -687,13 +729,13 @@ class Verbindlichkeit {
// Check available number
$sql = "
- SELECT
+ SELECT
IF(
pd.menge > COALESCE(vp.menge,0),
pd.menge - COALESCE(vp.menge,0),
0
) offen_menge
- FROM
+ FROM
paketdistribution pd
LEFT JOIN(
SELECT
@@ -705,7 +747,7 @@ class Verbindlichkeit {
paketdistribution
) vp
ON
- vp.paketdistribution = pd.id
+ vp.paketdistribution = pd.id
WHERE pd.id = ".$paketdistribution."
";
$offen_menge = $this->app->DB->Select($sql);
@@ -719,27 +761,27 @@ class Verbindlichkeit {
}
$preis = $preise[$key];
- $sql = "SELECT
+ $sql = "SELECT
a.id,
a.umsatzsteuer,
a.steuersatz,
COALESCE(if (skart.id <> 0,skart.id,skadr.id),0) AS kontorahmen
- FROM
- paketdistribution pd
+ FROM
+ paketdistribution pd
INNER JOIN
paketannahme pa ON pa.id = pd.paketannahme
- INNER JOIN
+ INNER JOIN
artikel a ON a.id = pd.artikel
- INNER JOIN
+ INNER JOIN
adresse adr ON pa.adresse = adr.id
- LEFT JOIN
+ LEFT JOIN
kontorahmen skart ON skart.id = a.kontorahmen
- LEFT JOIN
- kontorahmen skadr ON skadr.id = adr.kontorahmen
+ LEFT JOIN
+ kontorahmen skadr ON skadr.id = adr.kontorahmen
WHERE pd.id =".$paketdistribution;
$artikel = $this->app->DB->SelectRow($sql);
-
+
$einartikel = $artikel['id'];
$umsatzsteuer = $artikel['umsatzsteuer'];
$kontorahmen = $artikel['kontorahmen'];
@@ -752,13 +794,13 @@ class Verbindlichkeit {
if ($bruttoeingabe) {
$preis = $preis / (1+($steuersatz/100));
- }
+ }
$sql = "INSERT INTO verbindlichkeit_position (verbindlichkeit,paketdistribution, menge, preis, steuersatz, artikel, kontorahmen) VALUES ($id, $paketdistribution, $menge, $preis, $steuersatz, $einartikel, $kontorahmen)";
$this->app->DB->Insert($sql);
}
- break;
- case 'positionen_entfernen':
+ break;
+ case 'positionen_entfernen':
$freigabe = $this->app->DB->SelectArr("SELECT rechnungsfreigabe, freigabe FROM verbindlichkeit WHERE id =".$id)[0];
if ($freigabe['rechnungsfreigabe'] || $freigabe['freigabe']) {
@@ -769,10 +811,10 @@ class Verbindlichkeit {
if (!is_array($ids)) {
break;
}
- $this->app->DB->Delete("DELETE vp FROM verbindlichkeit_position vp INNER JOIN verbindlichkeit v ON v.id = vp.verbindlichkeit WHERE vp.id IN (".implode(',',$ids).") AND v.freigabe <> 1");
+ $this->app->DB->Delete("DELETE vp FROM verbindlichkeit_position vp INNER JOIN verbindlichkeit v ON v.id = vp.verbindlichkeit WHERE vp.id IN (".implode(',',$ids).") AND v.freigabe <> 1");
- break;
- case 'positionen_steuersatz_zu_netto':
+ break;
+ case 'positionen_steuersatz_zu_netto':
$freigabe = $this->app->DB->SelectArr("SELECT rechnungsfreigabe, freigabe FROM verbindlichkeit WHERE id =".$id)[0];
if ($freigabe['rechnungsfreigabe'] || $freigabe['freigabe']) {
@@ -792,12 +834,12 @@ class Verbindlichkeit {
$faktor = 1+($tmpsteuersatz/100);
- $sql = "UPDATE verbindlichkeit_position SET preis = preis / ".$faktor." WHERE id = $posid";
+ $sql = "UPDATE verbindlichkeit_position SET preis = preis / ".$faktor." WHERE id = $posid";
$this->app->DB->Update($sql);
- }
+ }
break;
- case 'positionen_kontorahmen_setzen':
+ case 'positionen_kontorahmen_setzen':
$freigabe = $this->app->DB->SelectArr("SELECT rechnungsfreigabe, freigabe FROM verbindlichkeit WHERE id =".$id)[0];
if ($freigabe['rechnungsfreigabe']) {
break;
@@ -811,14 +853,14 @@ class Verbindlichkeit {
$positionen_sachkonto = $this->app->Secure->GetPOST('positionen_sachkonto');
$positionen_kontorahmen = $this->app->erp->ReplaceKontorahmen(true,$positionen_sachkonto,false);
- foreach ($ids as $posid) {
- $sql = "UPDATE verbindlichkeit_position SET kontorahmen = '".$positionen_kontorahmen."' WHERE id =".$posid;
+ foreach ($ids as $posid) {
+ $sql = "UPDATE verbindlichkeit_position SET kontorahmen = '".$positionen_kontorahmen."' WHERE id =".$posid;
$this->app->DB->Update($sql);
- }
+ }
break;
}
-
+
// Load values again from database
$dropnbox = "' ' AS `open`, CONCAT(' ') AS `auswahl`";
$result = $this->app->DB->SelectArr("SELECT SQL_CALC_FOUND_ROWS v.id,
@@ -851,7 +893,7 @@ class Verbindlichkeit {
v.bezahlt,
v.kontoauszuege,
v.firma,
- v.logdatei,
+ v.logdatei,
v.waehrung,
v.zahlungsweise,
v.eingangsdatum,
@@ -896,40 +938,40 @@ class Verbindlichkeit {
a.name AS adresse_name FROM verbindlichkeit v LEFT JOIN adresse a ON a.id = v.adresse"." WHERE v.id=$id");
foreach ($result[0] as $key => $value) {
- $this->app->Tpl->Set(strtoupper($key), $value);
+ $this->app->Tpl->Set(strtoupper($key), $value);
}
if (!empty($result[0])) {
$verbindlichkeit_from_db = $result[0];
}
- // Check positions
- $pos_check = $this->check_positions($verbindlichkeit_from_db['id'],$verbindlichkeit_from_db['betrag']);
-
+ // Check positions
+ $pos_check = $this->check_positions($verbindlichkeit_from_db['id'],$verbindlichkeit_from_db['betrag']);
+
$this->app->Tpl->Set('BETRAGNETTO', $pos_check['betrag_netto']);
$this->app->Tpl->Set('BETRAGBRUTTOPOS', $pos_check['betrag_brutto']);
-
+
if (empty($pos_check['rundungsdifferenz'])) {
- $this->app->Tpl->Set('RUNDUNGSDIFFERENZICONHIDDEN', 'hidden');
+ $this->app->Tpl->Set('RUNDUNGSDIFFERENZICONHIDDEN', 'hidden');
} else {
- $this->app->Tpl->Set('RUNDUNGSDIFFERENZ', $pos_check['rundungsdifferenz']);
+ $this->app->Tpl->Set('RUNDUNGSDIFFERENZ', $pos_check['rundungsdifferenz']);
}
- if ($pos_check['pos_ok']) {
+ if ($pos_check['pos_ok']) {
if (!$verbindlichkeit_from_db['freigabe'] && !$einkauf_automatik_aus) {
if ($this->verbindlichkeit_freigabeeinkauf($id,"Verbindlichkeit automatisch freigegeben (Einkauf)") === true) {
$this->app->YUI->Message('success',"Verbindlichkeit automatisch freigegeben (Einkauf)");
$verbindlichkeit_from_db['freigabe'] = 1;
} else {
- $this->app->YUI->Message('warning','Waren-/Leistungsprüfung (Einkauf) nicht abgeschlossen');
+ $this->app->YUI->Message('warning','Waren-/Leistungsprüfung (Einkauf) nicht abgeschlossen');
}
- }
- $this->app->Tpl->Set('POSITIONENMESSAGE', 'Positionen vollständig
');
-
+ }
+ $this->app->Tpl->Set('POSITIONENMESSAGE', 'Positionen vollständig
');
+
if ($verbindlichkeit_from_db['status'] != 'abgeschlossen' && $verbindlichkeit_from_db['status'] != 'storniert') {
- $this->verbindlichkeit_abschliessen($id);
- }
-
+ $this->verbindlichkeit_abschliessen($id);
+ }
+
} else {
$this->app->Tpl->Set('
POSITIONENMESSAGE', 'Positionen nicht vollständig. Bruttobetrag '.
@@ -939,30 +981,30 @@ class Verbindlichkeit {
', Differenz '.
round($pos_check['betrag_brutto']-$verbindlichkeit_from_db['betrag'],2).
'
'
- );
+ );
if ($verbindlichkeit_from_db['freigabe']) {
$this->app->DB->Update("UPDATE verbindlichkeit SET freigabe = 0 WHERE id = ".$id);
$verbindlichkeit_from_db['freigabe'] = 0;
- $this->app->YUI->Message('warning',"Verbindlichkeit rückgesetzt (Einkauf)");
+ $this->app->YUI->Message('warning',"Verbindlichkeit rückgesetzt (Einkauf)");
}
- }
-
+ }
+
/*
* Add displayed items later
- *
+ *
$this->app->Tpl->Add('KURZUEBERSCHRIFT2', $email);
$this->app->Tpl->Add('EMAIL', $email);
- $this->app->Tpl->Add('ANGEZEIGTERNAME', $angezeigtername);
+ $this->app->Tpl->Add('ANGEZEIGTERNAME', $angezeigtername);
$this->app->YUI->AutoComplete("artikel", "artikelnummer");
*/
- $this->app->Tpl->Set('FREIGABEEINKAUFHIDDEN','hidden'); // prevent manual setting
+ $this->app->Tpl->Set('FREIGABEEINKAUFHIDDEN','hidden'); // prevent manual setting
if (empty($verbindlichkeit_from_db['adresse']) || $verbindlichkeit_from_db['status'] == 'angelegt') {
- $this->app->Tpl->Set('FREIGABEBUCHHALTUNGHIDDEN','hidden');
- $this->app->Tpl->Set('FREIGABEBEZAHLTHIDDEN','hidden');
+ $this->app->Tpl->Set('FREIGABEBUCHHALTUNGHIDDEN','hidden');
+ $this->app->Tpl->Set('FREIGABEBEZAHLTHIDDEN','hidden');
$this->app->Tpl->Set('POSITIONHINZUFUEGENHIDDEN','hidden');
$this->app->Tpl->Set('POSITIONENHIDDEN','hidden');
}
@@ -980,19 +1022,19 @@ class Verbindlichkeit {
if (!empty($positionen)) {
$this->app->Tpl->Set('FREIGABEEINKAUFHIDDEN','hidden');
}
-
+
if ($verbindlichkeit_from_db['rechnungsfreigabe']) {
$this->app->Tpl->Set('FREIGABEBUCHHALTUNGHIDDEN','hidden');
$this->app->Tpl->Set('RUECKSETZENEINKAUFHIDDEN','hidden');
- $this->app->Tpl->Set('SACHKONTOCHANGEHIDDEN','hidden');
+ $this->app->Tpl->Set('SACHKONTOCHANGEHIDDEN','hidden');
} else {
$this->app->Tpl->Set('RUECKSETZENBUCHHALTUNGHIDDEN','hidden');
- }
+ }
if ($verbindlichkeit_from_db['bezahlt'] == '1') {
$this->app->Tpl->Set('FREIGABEBEZAHLTHIDDEN','hidden');
} else {
$this->app->Tpl->Set('RUECKSETZENBEZAHLTHIDDEN','hidden');
- }
+ }
$this->app->Tpl->Set('WARENEINGANGCHECKED', $verbindlichkeit_from_db['freigabe']==1?"checked":"");
$this->app->Tpl->Set('RECHNUNGSFREIGABECHECKED', $verbindlichkeit_from_db['rechnungsfreigabe']==1?"checked":"");
@@ -1007,9 +1049,9 @@ class Verbindlichkeit {
$this->app->Tpl->Set('ZAHLBARBIS',$this->app->erp->ReplaceDatum(false,$verbindlichkeit_from_db['zahlbarbis'],false));
$this->app->YUI->DatePicker("zahlbarbis");
- $sql = "SELECT
- ".$this->app->YUI->IconsSQLVerbindlichkeit() . " AS `icons`
- FROM verbindlichkeit v
+ $sql = "SELECT
+ ".$this->app->YUI->IconsSQLVerbindlichkeit() . " AS `icons`
+ FROM verbindlichkeit v
LEFT JOIN (
SELECT ds.parameter, COUNT(ds.objekt) datei_anzahl FROM datei_stichwoerter ds INNER JOIN datei d ON d.id = ds.datei WHERE ds.objekt='verbindlichkeit' AND d.geloescht <> 1 GROUP BY ds.parameter
) d ON d.parameter = v.id
@@ -1017,7 +1059,8 @@ class Verbindlichkeit {
$icons = $this->app->DB->SelectArr($sql);
$this->app->Tpl->Add('STATUSICONS', $icons[0]['icons']);
- $this->app->YUI->AutoComplete("adresse", "lieferant");
+ $this->app->YUI->DatePicker("rechnungsdatum");
+ $this->app->YUI->AutoComplete("adresse", "lieferant");
$this->app->YUI->AutoComplete("projekt", "projektname", 1);
$this->app->Tpl->Set('PROJEKT',$this->app->erp->ReplaceProjekt(false,$verbindlichkeit_from_db['projekt'],false));
$this->app->YUI->AutoComplete("kostenstelle", "kostenstelle", 1);
@@ -1028,16 +1071,16 @@ class Verbindlichkeit {
$this->app->Tpl->Set('ADRESSE_ID', $verbindlichkeit_from_db['adresse']);
- $this->app->Tpl->Set('ADRESSE', $this->app->erp->ReplaceLieferantennummer(false,$verbindlichkeit_from_db['adresse'],false)); // Convert ID to form display
+ $this->app->Tpl->Set('ADRESSE', $this->app->erp->ReplaceLieferantennummer(false,$verbindlichkeit_from_db['adresse'],false)); // Convert ID to form display
$this->app->Tpl->Set('BESTELLUNG',$this->app->erp->ReplaceBestellung(false,$verbindlichkeit_from_db['bestellung'],false));
- $this->app->YUI->AutoComplete("bestellung", "lieferantenbestellung",0,"&adresse=".$verbindlichkeit_from_db['adresse']);
+ $this->app->YUI->AutoComplete("bestellung", "lieferantenbestellung",0,"&adresse=".$verbindlichkeit_from_db['adresse']);
$this->app->YUI->CkEditor("internebemerkung");
$anzahldateien = $this->app->erp->AnzahlDateien("verbindlichkeit",$id);
if ($anzahldateien > 0) {
- $file = urlencode("../../../../index.php?module=verbindlichkeit&action=inlinepdf&id=$id");
+ $file = urlencode("../../../../index.php?module=verbindlichkeit&action=inlinepdf&id=$id");
$iframe = "";
$this->app->Tpl->Set('INLINEPDF', $iframe);
} else {
@@ -1047,29 +1090,32 @@ class Verbindlichkeit {
if (empty($verbindlichkeit_from_db['freigabe'])) {
$this->app->YUI->TableSearch('PAKETDISTRIBUTION', 'verbindlichkeit_paketdistribution_list', "show", "", "", basename(__FILE__), __CLASS__);
}
-
- // -- POSITIONEN
- $this->app->YUI->AutoComplete("positionen_sachkonto", "sachkonto", 1);
- $this->app->YUI->TableSearch('POSITIONEN', 'verbindlichkeit_positionen', "show", "", "", basename(__FILE__), __CLASS__);
- $this->app->Tpl->Parse('POSITIONENTAB', "verbindlichkeit_positionen.tpl");
- // -- POSITIONEN
- $this->verbindlichkeit_minidetail('MINIDETAIL',false);
+ if (!empty($verbindlichkeit_from_db)) {
+ // -- POSITIONEN
+ $this->app->YUI->AutoComplete("positionen_sachkonto", "sachkonto", 1);
+ $this->app->YUI->TableSearch('POSITIONEN', 'verbindlichkeit_positionen', "show", "", "", basename(__FILE__), __CLASS__);
+ $this->app->Tpl->Parse('POSITIONENTAB', "verbindlichkeit_positionen.tpl");
+ // -- POSITIONEN
+
+ $this->verbindlichkeit_minidetail('MINIDETAIL',false);
+ }
+
$this->app->Tpl->Parse('PAGE', "verbindlichkeit_edit.tpl");
}
function verbindlichkeit_editpos() {
$id = $this->app->Secure->GetGET('id');
- $posid = $this->app->Secure->GetGET('posid');
-
+ $posid = $this->app->Secure->GetGET('posid');
+
$this->app->Tpl->Set('ID', $id);
$this->app->erp->MenuEintrag("index.php?module=verbindlichkeit&action=edit&id=$id#tabs-2", "Zurück");
$sachkonto = $this->app->Secure->GetPOST('sachkonto');
- $menge = $this->app->Secure->GetPOST('menge');
- $preis = $this->app->Secure->GetPOST('preis');
- $steuersatz = $this->app->Secure->GetPOST('steuersatz');
+ $menge = $this->app->Secure->GetPOST('menge');
+ $preis = $this->app->Secure->GetPOST('preis');
+ $steuersatz = $this->app->Secure->GetPOST('steuersatz');
$kontorahmen = $this->app->erp->ReplaceKontorahmen(true,$sachkonto,false);
if ($menge < 0) {
@@ -1081,20 +1127,20 @@ class Verbindlichkeit {
if ($steuersatz < 0) {
$steuersatz = 0;
}
- $submit = $this->app->Secure->GetPOST('submit');
+ $submit = $this->app->Secure->GetPOST('submit');
- $freigabe = $this->app->DB->SelectArr("SELECT rechnungsfreigabe, freigabe FROM verbindlichkeit WHERE id =".$id)[0];
+ $freigabe = $this->app->DB->SelectArr("SELECT rechnungsfreigabe, freigabe FROM verbindlichkeit WHERE id =".$id)[0];
if ($freigabe['rechnungsfreigabe'] && $freigabe['freigabe']) {
$this->app->Tpl->Set('SAVEDISABLED','disabled');
$this->app->Tpl->Set('SACHKONTOSAVEDISABLED','disabled');
} else if ($freigabe['freigabe']) {
- $this->app->Tpl->Set('SAVEDISABLED','disabled');
+ $this->app->Tpl->Set('SAVEDISABLED','disabled');
if ($submit != '')
- {
+ {
$sql = "
- UPDATE verbindlichkeit_position SET
+ UPDATE verbindlichkeit_position SET
kontorahmen = '$kontorahmen'
- WHERE id = ".$posid."
+ WHERE id = ".$posid."
";
$this->app->DB->Update($sql);
$this->app->Tpl->Set('MESSAGE', "Die Einstellungen wurden erfolgreich übernommen.
");
@@ -1102,14 +1148,14 @@ class Verbindlichkeit {
}
} else {
if ($submit != '')
- {
+ {
$sql = "
- UPDATE verbindlichkeit_position SET
+ UPDATE verbindlichkeit_position SET
menge = '$menge',
preis = '$preis',
steuersatz = '$steuersatz',
kontorahmen = '$kontorahmen'
- WHERE id = ".$posid."
+ WHERE id = ".$posid."
";
$this->app->DB->Update($sql);
@@ -1117,13 +1163,13 @@ class Verbindlichkeit {
header("Location: index.php?module=verbindlichkeit&action=edit&id=$id&msg=$msg#tabs-2");
}
}
-
+
// Load values again from database
$dropnbox = "' ' AS `open`, CONCAT(' ') AS `auswahl`";
- $result = $this->app->DB->SelectArr("SELECT SQL_CALC_FOUND_ROWS v.id, $dropnbox, v.steuersatz, v.preis, v.menge, v.kontorahmen, v.id FROM verbindlichkeit_position v"." WHERE id=$posid");
+ $result = $this->app->DB->SelectArr("SELECT SQL_CALC_FOUND_ROWS v.id, $dropnbox, v.steuersatz, v.preis, v.menge, v.kontorahmen, v.id FROM verbindlichkeit_position v"." WHERE id=$posid");
foreach ($result[0] as $key => $value) {
- $this->app->Tpl->Set(strtoupper($key), $value);
+ $this->app->Tpl->Set(strtoupper($key), $value);
}
if (!empty($result)) {
@@ -1131,14 +1177,14 @@ class Verbindlichkeit {
} else {
return;
}
-
+
/*
* Add displayed items later
- *
+ *
$this->app->Tpl->Add('KURZUEBERSCHRIFT2', $email);
$this->app->Tpl->Add('EMAIL', $email);
- $this->app->Tpl->Add('ANGEZEIGTERNAME', $angezeigtername);
+ $this->app->Tpl->Add('ANGEZEIGTERNAME', $angezeigtername);
$this->app->YUI->AutoComplete("artikel", "artikelnummer");
@@ -1159,10 +1205,12 @@ class Verbindlichkeit {
$input['adresse'] = $this->app->Secure->GetPOST('adresse');
$input['rechnung'] = $this->app->Secure->GetPOST('rechnung');
$input['zahlbarbis'] = $this->app->Secure->GetPOST('zahlbarbis');
+ $input['zahlbarbis_tage'] = $this->app->Secure->GetPOST('zahlbarbis_tage');
$input['betrag'] = $this->app->Secure->GetPOST('betrag');
$input['waehrung'] = $this->app->Secure->GetPOST('waehrung');
$input['skonto'] = $this->app->Secure->GetPOST('skonto');
$input['skontobis'] = $this->app->Secure->GetPOST('skontobis');
+ $input['skontobis_tage'] = $this->app->Secure->GetPOST('skontobis_tage');
$input['projekt'] = $this->app->Secure->GetPOST('projekt');
$input['zahlungsweise'] = $this->app->Secure->GetPOST('zahlungsweise');
$input['eingangsdatum'] = $this->app->Secure->GetPOST('eingangsdatum');
@@ -1173,14 +1221,14 @@ class Verbindlichkeit {
return $input;
}
- function verbindlichkeit_menu($id) {
+ function verbindlichkeit_menu($id) {
$this->app->erp->MenuEintrag("index.php?module=verbindlichkeit&action=edit&id=$id", "Details");
$this->app->erp->MenuEintrag("index.php?module=verbindlichkeit&action=list", "Zurück zur Übersicht");
$anzahldateien = $this->app->erp->AnzahlDateien("verbindlichkeit",$id);
if ($anzahldateien > 0) {
- $anzahldateien = " (".$anzahldateien.")";
+ $anzahldateien = " (".$anzahldateien.")";
} else {
$anzahldateien="";
}
@@ -1199,7 +1247,7 @@ class Verbindlichkeit {
if ($invoiceArr['status'] === 'angelegt' || empty($invoiceArr['status'])) {
$this->app->erp->MenuEintrag("index.php?module=verbindlichkeit&action=freigabe&id=$id",'Freigabe');
- }
+ }
}
function verbindlichkeit_dateien()
@@ -1211,9 +1259,9 @@ class Verbindlichkeit {
}
function verbindlichkeit_inlinepdf() {
- $id = $this->app->Secure->GetGET('id');
+ $id = $this->app->Secure->GetGET('id');
- $file_attachments = $this->app->erp->GetDateiSubjektObjekt('%','verbindlichkeit',$id);
+ $file_attachments = $this->app->erp->GetDateiSubjektObjekt('%','verbindlichkeit',$id);
if (!empty($file_attachments)) {
@@ -1242,14 +1290,14 @@ class Verbindlichkeit {
echo($file_contents);
$this->app->ExitXentral();
}
- }
- }
- }
+ }
+ }
+ }
$this->app->ExitXentral();
}
-
+
function verbindlichkeit_freigabe()
- {
+ {
$id = $this->app->Secure->GetGET('id');
$this->app->erp->BelegFreigabe('verbindlichkeit',$id);
$this->app->erp->BelegProtokoll("verbindlichkeit",$id,"Verbindlichkeit freigegeben");
@@ -1258,7 +1306,7 @@ class Verbindlichkeit {
// Returns true or error message
function verbindlichkeit_freigabeeinkauf($id = null, $text = null)
- {
+ {
if (empty($id)) {
$id = $this->app->Secure->GetGET('id');
$gotoedit = true;
@@ -1266,35 +1314,35 @@ class Verbindlichkeit {
$error = false;
- if (!$this->verbindlichkeit_is_freigegeben($id)) {
+ if (!$this->verbindlichkeit_is_freigegeben($id)) {
if ($gotoedit) {
- $this->app->YUI->Message('warning','Verbindlichkeit nicht freigebeben');
+ $this->app->YUI->Message('warning','Verbindlichkeit nicht freigebeben');
$error = true;
} else {
return('Verbindlichkeit nicht freigebeben '.$this->verbindlichkeit_get_belegnr($id));
- }
- }
+ }
+ }
- // Check wareneingang status
- $sql = "SELECT
- pa.id
- FROM verbindlichkeit_position vp
+ // Check wareneingang status
+ $sql = "SELECT
+ pa.id
+ FROM verbindlichkeit_position vp
INNER JOIN paketdistribution pd ON pd.id = vp.paketdistribution
- INNER JOIN paketannahme pa ON pa.id = pd.paketannahme
+ INNER JOIN paketannahme pa ON pa.id = pd.paketannahme
WHERE
- verbindlichkeit='$id'
+ verbindlichkeit='$id'
AND
- pa.status = 'abgeschlossen'
+ pa.status = 'abgeschlossen'
";
- $check = $this->app->DB->SelectArr($sql);
+ $check = $this->app->DB->SelectArr($sql);
if (empty($check)) {
if ($gotoedit) {
- $this->app->YUI->Message('warning','Waren-/Leistungsprüfung (Einkauf) nicht abgeschlossen');
+ $this->app->YUI->Message('warning','Waren-/Leistungsprüfung (Einkauf) nicht abgeschlossen');
} else {
return('Waren-/Leistungsprüfung (Einkauf) nicht abgeschlossen '.$this->verbindlichkeit_get_belegnr($id));
- }
+ }
} else {
$sql = "UPDATE verbindlichkeit SET freigabe = 1 WHERE id=".$id;
$this->app->DB->Update($sql);
@@ -1309,57 +1357,57 @@ class Verbindlichkeit {
}
else {
return(true);
- }
+ }
}
// Returns true or error message
function verbindlichkeit_freigabebuchhaltung($id = null)
- {
+ {
if (empty($id)) {
$id = $this->app->Secure->GetGET('id');
$gotoedit = true;
- }
+ }
$error = false;
- if (!$this->verbindlichkeit_is_freigegeben($id)) {
+ if (!$this->verbindlichkeit_is_freigegeben($id)) {
if ($gotoedit) {
$this->app->YUI->Message('warning','Verbindlichkeit nicht freigebeben');
$error = true;
} else {
return('Verbindlichkeit nicht freigebeben '.$this->verbindlichkeit_get_belegnr($id));
- }
+ }
}
if (!$error) {
// Check accounting
$sql = "
- SELECT
+ SELECT
vp.id,
- v.belegnr
- FROM verbindlichkeit_position vp
+ v.belegnr
+ FROM verbindlichkeit_position vp
LEFT JOIN verbindlichkeit v ON v.id = vp.verbindlichkeit
- WHERE
+ WHERE
verbindlichkeit='$id'
AND vp.kontorahmen = 0
";
- $check = $this->app->DB->SelectArr($sql);
+ $check = $this->app->DB->SelectArr($sql);
- if (!empty($check)) {
+ if (!empty($check)) {
if ($gotoedit) {
- $this->app->YUI->Message('warning','Kontierung unvollständig');
+ $this->app->YUI->Message('warning','Kontierung unvollständig');
$error = true;
} else {
return('Kontierung unvollständig '.$this->verbindlichkeit_get_belegnr($id));
}
}
}
-
- if (!$error) {
+
+ if (!$error) {
$sql = "UPDATE verbindlichkeit SET rechnungsfreigabe = 1 WHERE freigabe = 1 AND id=".$id;
$this->app->DB->Update($sql);
- $this->app->erp->BelegProtokoll("verbindlichkeit",$id,"Verbindlichkeit freigegeben (Buchhaltung)");
+ $this->app->erp->BelegProtokoll("verbindlichkeit",$id,"Verbindlichkeit freigegeben (Buchhaltung)");
}
if ($gotoedit) {
@@ -1371,21 +1419,21 @@ class Verbindlichkeit {
// Returns true or error message
function verbindlichkeit_freigabebezahlt($id = null)
- {
+ {
if (empty($id)) {
$id = $this->app->Secure->GetGET('id');
$gotoedit = true;
}
- if (!$this->verbindlichkeit_is_freigegeben($id)) {
+ if (!$this->verbindlichkeit_is_freigegeben($id)) {
if ($gotoedit) {
- $this->app->YUI->Message('warning','Verbindlichkeit nicht freigebeben');
+ $this->app->YUI->Message('warning','Verbindlichkeit nicht freigebeben');
$error = true;
} else {
return('Verbindlichkeit nicht freigebeben '.$this->verbindlichkeit_get_belegnr($id));
- }
+ }
}
-
+
if (!$error) {
$sql = "UPDATE verbindlichkeit SET bezahlt = 1 WHERE id=".$id;
$this->app->DB->Update($sql);
@@ -1394,20 +1442,20 @@ class Verbindlichkeit {
$this->verbindlichkeit_edit();
} else {
return(true);
- }
+ }
}
- }
-
+ }
+
function verbindlichkeit_abschliessen($id = null)
- {
+ {
if (empty($id)) {
$id = $this->app->Secure->GetGET('id');
$gotoedit = true;
}
-
- $sql = "SELECT freigabe, rechnungsfreigabe, bezahlt, betrag FROM verbindlichkeit WHERE id =".$id;
+
+ $sql = "SELECT freigabe, rechnungsfreigabe, bezahlt, betrag FROM verbindlichkeit WHERE id =".$id;
$verbindlichkeit = $this->app->DB->SelectRow($sql);
-
+
if ($verbindlichkeit['freigabe'] != 1) {
$einkauf_check = $this->check_positions($id,$verbindlichkeit['betrag']);
if ($einkauf_check['pos_ok']) {
@@ -1415,20 +1463,20 @@ class Verbindlichkeit {
$verbindlichkeit['freigabe'] = 1;
}
}
-
- $anzahldateien = $this->app->erp->AnzahlDateien("verbindlichkeit",$id);
+
+ $anzahldateien = $this->app->erp->AnzahlDateien("verbindlichkeit",$id);
if (!empty($anzahldateien) && $verbindlichkeit['freigabe'] && $verbindlichkeit['rechnungsfreigabe'] && $verbindlichkeit['bezahlt']) {
$sql = "UPDATE verbindlichkeit SET status = 'abgeschlossen' WHERE id=".$id;
$this->app->DB->Update($sql);
- $this->app->erp->BelegProtokoll("verbindlichkeit",$id,"Verbindlichkeit abgeschlossen");
+ $this->app->erp->BelegProtokoll("verbindlichkeit",$id,"Verbindlichkeit abgeschlossen");
if ($gotoedit) {
$this->verbindlichkeit_edit();
- }
- }
- }
+ }
+ }
+ }
function verbindlichkeit_ruecksetzeneinkauf($id = null)
- {
+ {
if (empty($id)) {
$id = $this->app->Secure->GetGET('id');
$gotoedit = true;
@@ -1442,7 +1490,7 @@ class Verbindlichkeit {
}
function verbindlichkeit_ruecksetzenbuchhaltung($id = null)
- {
+ {
if (empty($id)) {
$id = $this->app->Secure->GetGET('id');
$gotoedit = true;
@@ -1456,7 +1504,7 @@ class Verbindlichkeit {
}
function verbindlichkeit_ruecksetzenbezahlt($id = null)
- {
+ {
if (empty($id)) {
$id = $this->app->Secure->GetGET('id');
$gotoedit = true;
@@ -1466,11 +1514,11 @@ class Verbindlichkeit {
$this->app->erp->BelegProtokoll("verbindlichkeit",$id,"Verbindlichkeit bezahlt rückgesetzt");
if ($gotoedit) {
$this->verbindlichkeit_edit();
- }
- }
-
+ }
+ }
+
/* function verbindlichkeit_schreibschutz($id = null)
- {
+ {
if (empty($id)) {
$id = $this->app->Secure->GetGET('id');
$gotoedit = true;
@@ -1480,14 +1528,14 @@ class Verbindlichkeit {
$this->app->erp->BelegProtokoll("verbindlichkeit",$id,"Verbindlichkeit Schreibschutz entfernt");
if ($gotoedit) {
$this->verbindlichkeit_edit();
- }
+ }
} */
public function verbindlichkeit_minidetail($parsetarget='',$menu=true) {
- $id = $this->app->Secure->GetGET('id');
+ $id = $this->app->Secure->GetGET('id');
- $result = $this->app->DB->SelectArr("SELECT SQL_CALC_FOUND_ROWS
+ $result = $this->app->DB->SelectArr("SELECT SQL_CALC_FOUND_ROWS
v.id,
v.belegnr,
v.status_beleg,
@@ -1542,14 +1590,14 @@ class Verbindlichkeit {
v.sprache,
v.id,
CONCAT(a.lieferantennummer,' ',a.name) AS adresse
- FROM verbindlichkeit v
+ FROM verbindlichkeit v
LEFT JOIN adresse a ON a.id = v.adresse
LEFT JOIN projekt p ON a.projekt = p.id
LEFT JOIN kostenstellen k ON v.kostenstelle = k.id
- WHERE v.id='$id'");
+ WHERE v.id='$id'");
foreach ($result[0] as $key => $value) {
- $this->app->Tpl->Set(strtoupper($key), $value);
+ $this->app->Tpl->Set(strtoupper($key), $value);
}
if (!empty($result[0])) {
@@ -1564,11 +1612,11 @@ class Verbindlichkeit {
vp.preis,
vp.steuersatz,
CONCAT(skv.sachkonto,' ',skv.beschriftung) AS sachkonto,
- ''
- FROM verbindlichkeit_position vp
- INNER JOIN artikel art ON art.id = vp.artikel
+ ''
+ FROM verbindlichkeit_position vp
+ INNER JOIN artikel art ON art.id = vp.artikel
LEFT JOIN verbindlichkeit v ON v.id = vp.verbindlichkeit
- LEFT JOIN adresse adr ON adr.id = v.adresse
+ LEFT JOIN adresse adr ON adr.id = v.adresse
LEFT JOIN kontorahmen skv ON skv.id = vp.kontorahmen
WHERE verbindlichkeit='$id'
ORDER by vp.sort ASC");
@@ -1612,7 +1660,7 @@ class Verbindlichkeit {
'',
'',
'Betrag Positionen netto ',
- 'Betrag Positionen brutto '
+ 'Betrag Positionen brutto '
);
$tmp->AddRow($row);
$row = array(
@@ -1639,20 +1687,20 @@ class Verbindlichkeit {
}
function verbindlichkeit_is_freigegeben($id) {
- $sql = "SELECT
- belegnr
- FROM
+ $sql = "SELECT
+ belegnr
+ FROM
verbindlichkeit
WHERE
- id='$id'
+ id='$id'
AND
- status IN ('freigegeben')
+ status IN ('freigegeben')
";
- $check = $this->app->DB->SelectArr($sql);
+ $check = $this->app->DB->SelectArr($sql);
if (empty($check)) {
return(false);
- } else
+ } else
{
return(true);
}
@@ -1663,7 +1711,7 @@ class Verbindlichkeit {
}
/* Calculate steuersatz
- Get from
+ Get from
Check address first, if foreign, then steuersatz = 0
if not foreign there are three cases: befreit = 0, ermaessigt, normal
if not befreit, get from projekt or firmendaten
@@ -1676,19 +1724,19 @@ class Verbindlichkeit {
if ($umsatzsteuer == 'befreit') {
return(0);
}
-
+
$adresse = $this->app->DB->Select("SELECT adresse FROM verbindlichkeit WHERE id=".$verbindlichkeit);
$umsatzsteuer_lieferant = $this->app->DB->Select("SELECT umsatzsteuer_lieferant FROM adresse WHERE id=".$adresse); /* inland, eu-lieferung, import*/
if (in_array($umsatzsteuer_lieferant,array('import','eulieferung'))) {
return(0);
}
-
+
$projekt = $this->app->DB->Select("SELECT projekt FROM verbindlichkeit WHERE id=".$verbindlichkeit);
$steuersatz_projekt = $this->app->DB->SelectRow("SELECT steuersatz_normal, steuersatz_ermaessigt FROM projekt WHERE id ='".$projekt."'");
$steuersatz_normal_projekt = $steuersatz_projekt['steuer_normal'];
$steuersatz_ermaessigt_projekt = $steuersatz_projekt['steuer_ermaessigt'];
-
+
$steuersatz_normal = $this->app->erp->Firmendaten('steuersatz_normal');
$steuersatz_ermaessigt = $this->app->erp->Firmendaten('steuersatz_ermaessigt');
@@ -1698,22 +1746,22 @@ class Verbindlichkeit {
return($steuersatz_normal_projekt);
} else {
return($steuersatz_normal);
- }
+ }
break;
case 'ermaessigt':
if (!empty($steuersatz_ermaessigt_projekt)) {
return($steuersatz_ermaessigt_projekt);
} else {
return($steuersatz_ermaessigt);
- }
+ }
break;
- default:
+ default:
return(0);
break;
}
}
-
+
// Check positions and return status and values
function check_positions($id, $bruttobetrag_verbindlichkeit) : array {
@@ -1723,7 +1771,7 @@ class Verbindlichkeit {
"betrag_brutto" => 0,
"rundungsdifferenz" => 0,
"bruttobetrag_verbindlichkeit" => $bruttobetrag_verbindlichkeit
- );
+ );
if (empty($id)) {
return($result);
@@ -1731,7 +1779,7 @@ class Verbindlichkeit {
// Summarize positions
$sql = "SELECT * FROM verbindlichkeit_position WHERE verbindlichkeit = ".$id;
- $positionen = $this->app->DB->SelectArr($sql);
+ $positionen = $this->app->DB->SelectArr($sql);
if (!empty($positionen)) {
$betrag_netto = 0;
@@ -1739,13 +1787,17 @@ class Verbindlichkeit {
$betrag_brutto_pos_summe = 0;
$steuer_normal = 0;
$steuer_ermaessigt = 0;
+ $betrag_brutto_alternativ = 0;
- /*
+ /*
Normal: umsatzsteuer leer, steuersatz = leer
Ermäßigt: umsatzsteuer ermaessigt, steuersatz = -1
Befreit: umsatzsteuer befreit, steursatz = -1
Individuell: umsatzsteuer leer, steuersatz = wert
*/
+
+ $betrag_brutto_pro_steuersatz = array();
+
foreach ($positionen as $position) {
$tmpsteuersatz = null;
@@ -1757,27 +1809,35 @@ class Verbindlichkeit {
$position['steuersatz_berechnet'] = $tmpsteuersatz;
$position['steuertext_berechnet'] = $tmpsteuertext;
$position['steuererloes_berechnet'] = $erloes;
-
- $betrag_netto += ($position['menge']*$position['preis']);
- $betrag_brutto += ($position['menge']*$position['preis'])*(1+($tmpsteuersatz/100));
- $betrag_brutto_pos_summe += round(($position['menge']*$position['preis'])*(1+($tmpsteuersatz/100)),2);
+
+ $betrag_netto_pos = ($position['menge']*$position['preis']);
+ $betrag_netto += $betrag_netto_pos;
+ $betrag_brutto_pos = ($position['menge']*$position['preis'])*(1+($tmpsteuersatz/100));
+ $betrag_brutto += $betrag_brutto_pos;
+ $betrag_brutto_pos_summe += round($betrag_brutto_pos,2);
+ $betrag_netto_pro_steuersatz[$tmpsteuersatz] += round($betrag_netto_pos,2);
}
-
+
$result['betrag_netto'] = round($betrag_netto,2);
$result['betrag_brutto'] = round($betrag_brutto,2);
-
+
+ foreach ($betrag_netto_pro_steuersatz as $steuersatz => $betrag_netto) {
+ $betrag_brutto_alternativ += round($betrag_netto*(1+($steuersatz/100)),2);
+ }
+
if ($bruttobetrag_verbindlichkeit == round($betrag_brutto,2)) {
- $result['pos_ok'] = true;
+ $result['pos_ok'] = true;
}
else if (round($bruttobetrag_verbindlichkeit,2) == round($betrag_brutto_pos_summe,2)) {
- $result['pos_ok'] = true;
- if (round($bruttobetrag_verbindlichkeit,2) != round($betrag_brutto_pos_summe,2)) {
- $result['rundungsdifferenz'] = round(round($betrag_brutto,2) - $betrag_brutto_pos_summe,2);
- }
- }
- }
-
+ $result['pos_ok'] = true;
+ $result['rundungsdifferenz'] = round($bruttobetrag_verbindlichkeit-$result['betrag_brutto'],2);
+ } else if (round($bruttobetrag_verbindlichkeit,2) == $betrag_brutto_alternativ) {
+ $result['pos_ok'] = true;
+ $result['rundungsdifferenz'] = round($bruttobetrag_verbindlichkeit-$result['betrag_brutto'],2);
+ }
+ }
+
return($result);
}
}
diff --git a/www/themes/new/images/sidebar/beschaffung.svg b/www/themes/new/images/sidebar/beschaffung.svg
new file mode 100644
index 00000000..7447e4fc
--- /dev/null
+++ b/www/themes/new/images/sidebar/beschaffung.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/www/widgets/templates/_gen/artikel.tpl b/www/widgets/templates/_gen/artikel.tpl
index a7cc327e..3230ce71 100644
--- a/www/widgets/templates/_gen/artikel.tpl
+++ b/www/widgets/templates/_gen/artikel.tpl
@@ -566,11 +566,13 @@
-
{|Beschreibung|}
+
+ {|Beschreibung|}