Compare commits

...

72 Commits

Author SHA1 Message Date
OpenXE
aac159bcb0 Merge branch 'onlineshops' 2024-09-11 10:01:47 +02:00
OpenXE-ERP
0df7600eb4
Merge pull request #154 from exciler/onlineshops
Re-add previous fix
2024-09-11 09:56:45 +02:00
OpenXE
616e3e8ee7 Bugfix add lieferadresse 2024-09-11 09:54:43 +02:00
Andreas Palm
f725281d7e Re-add previous fix 2024-09-10 23:09:39 +02:00
OpenXE
e40e543a7d bugfix remotesendlistlager result 2024-09-06 20:12:37 +02:00
OpenXE
014481d455 Merge branch 'master' into onlineshops 2024-09-04 16:14:41 +02:00
OpenXE
b7cf1dd04a exportbuchhaltung filter for pdfs 2024-09-04 16:01:12 +02:00
OpenXE
e81e404763 bugfix exportbuchhaltung abgeschlossen 2024-09-04 14:12:04 +02:00
OpenXE
e51e1db15c bugfix GetNextArtikelNummer skip existing numbers 2024-09-04 11:13:38 +02:00
OpenXE
1ff2878d06 exportbuchhaltung PDFs 2024-09-03 19:13:17 +02:00
OpenXE
b8d412ba93 Merge branch 'master' into onlineshops 2024-09-02 21:02:42 +02:00
OpenXE
04de0df0b6 lieferantengutschrift drucken 2024-09-02 21:00:16 +02:00
OpenXE
00da78e863 verbindlichkeit drucken 2024-09-02 20:33:50 +02:00
OpenXE
6afedcd423 Merge onlineshops development into onlineshops 2024-08-31 13:17:22 +02:00
OpenXE
1cc50d5cd7 class.remote.php improvements 2024-08-31 13:13:08 +02:00
OpenXE
8c3442c73d class.remote.php formatting 2024-08-31 13:12:37 +02:00
OpenXE
389a29793a mirakl auftrag import additional info 2024-08-29 18:43:26 +02:00
OpenXE
9fbc4e2f6b mirakl configuration_order_fetch_status 2024-08-29 18:09:04 +02:00
OpenXE
b6b08f74b6 Merge branch 'master' into mirakl 2024-08-27 12:04:46 +02:00
OpenXE
26e6d773a9 Lagersync bugfix result array 2024-08-26 11:03:59 +02:00
OpenXE
4351fd7b9d Merge branch 'master' into mirakl 2024-08-25 20:16:38 +02:00
OpenXE
3eb4d6bc3a lagerzahlen removed 10 sec. wait 2024-08-22 12:45:59 +02:00
OpenXE
fbe266c97c bugfix mirakl auftragsimport country code 2024-08-01 14:12:06 +02:00
OpenXE
4fe1440dd0 Merge branch 'master' into mirakl 2024-07-25 12:32:37 +02:00
OpenXE
cd77b75df9 Merge branch 'master' into mirakl 2024-07-24 18:20:32 +02:00
OpenXE
9a9e34a32a erpapi bugfix result of RemoteSendArticleList, new array format 2024-07-24 16:01:17 +02:00
OpenXE
58174a8eef mirakl volume pricing 2024-07-23 13:12:34 +02:00
OpenXE
1c8d64f3be revert faulty commit verbindlichkeit.php 2024-07-23 11:32:45 +02:00
OpenXE
f1400c4892 mirakl bugfix protokoll, taxes 2024-07-23 11:32:31 +02:00
OpenXE
22620698a1 Merge branch 'master' into mirakl 2024-07-23 11:27:45 +02:00
OpenXE
ea515b0727 cronjobs/shop_rueckmeldungen.php format 2024-07-02 13:54:50 +02:00
OpenXE
4ed783a7ca mirakl logging bugfix 2024-07-02 11:40:34 +02:00
OpenXE
4337a6503c class.remote.php send articles before stock (lagersync) 2024-07-02 10:33:35 +02:00
OpenXE
6e834b6df2 mirakl export products per configuration 2024-07-01 15:25:04 +02:00
OpenXE
01561960ec class.remote.php sendlist changed to work on arrays 2024-06-30 13:50:59 +02:00
OpenXE
d0d9c4150b mirakl logging improvements 2024-06-28 15:52:36 +02:00
OpenXE
448d49ad6d Logger added log levels public 2024-06-28 15:48:39 +02:00
OpenXE
eead996759 remote changed return values and behaviour WIP 2024-06-28 13:14:57 +02:00
OpenXE
48dbbd1a8b class.remote.php fixed formatting 2024-06-28 08:38:26 +02:00
OpenXE
8ebfc49ad2 artikeluebertragen WIP bulk transfer, switch to logger 2024-06-27 21:39:49 +02:00
OpenXE
7d18234567 cronjob artikeluebertragen format 2024-06-26 17:01:40 +02:00
OpenXE
35add7d292 mirakl rework product export configuration 2024-06-24 14:45:19 +02:00
OpenXE
8e950b5185 artikel rework artikelexport returncode messages 2024-06-24 14:44:34 +02:00
OpenXE
ef8825faa8 importvorlage artikeleigenschaften 2024-06-23 12:45:26 +02:00
OpenXE
29f76aa9d9 mirakle configuration improvements 2024-06-21 18:11:48 +02:00
OpenXE
f1bd502044 laender 3-letter codes 2024-06-20 14:23:51 +02:00
OpenXE
610ed35218 shopimport improvements 2024-06-20 14:18:20 +02:00
OpenXE
04daacb227 mirakl importauftrag steuer, iso3 country code 2024-06-19 21:33:49 +02:00
OpenXE
4b7f3e19e7 erpapi ImportAuftrag abort with logfile if porto is not defined 2024-06-19 21:33:05 +02:00
OpenXE
15c36925a2 shopimport preview table 2024-06-19 21:31:40 +02:00
OpenXE
471bceb060 mirakl fetch orders 2024-06-18 15:19:19 +02:00
OpenXE
9b3950e3aa shopimport ajax submit vs. submit 2024-06-18 15:18:45 +02:00
OpenXE
bb4538498a mirakl reworked logging and functions 2024-06-17 13:09:30 +02:00
OpenXE
b06e0aa3e4 mirakl create product initial 2024-06-16 11:33:35 +02:00
OpenXE
f95918647a reworked shop configuration fields and mapping 2024-06-13 15:51:30 +02:00
OpenXE
99b6a7c671 Merge branch 'master' into mirakl 2024-06-12 17:26:36 +02:00
OpenXE
31b2d95ed1 Merge branch 'master' into mirakl 2024-06-01 18:11:12 +02:00
OpenXE
5b9a04031a cronjob lagerzahlen added information 2024-05-24 18:59:43 +02:00
OpenXE
57a9aa23ff class.remote sendlistlager condensed 2024-05-24 18:58:32 +02:00
OpenXE
d20bbe79b3 mirakl lagersync removed storageNotNeededElements 2024-05-24 18:57:37 +02:00
OpenXE
4f106028c9 mirakl send shop_id 2024-05-24 10:53:49 +02:00
OpenXE
7f61cad921 3540153c41 2024-05-24 10:18:26 +02:00
OpenXE
e71da793a3 mirakl angebotskonfiguration multiple categories 2024-05-24 10:10:59 +02:00
OpenXE
35e2feee2e mirakl field mapping for multiple categories 2024-05-23 20:12:05 +02:00
OpenXE
365b87f734 mirakl required fields 2024-05-22 13:37:30 +02:00
OpenXE
f479a12c84 mirakl offer export 2024-05-22 11:25:35 +02:00
OpenXE
5c96cff8c3 onlineshops changed options layout 2024-05-22 11:25:13 +02:00
OpenXE
823f35e44d Bugfix shop error message 2024-05-22 11:23:49 +02:00
OpenXE
bcc2f8f879 Merge remote-tracking branch 'origin/mirakl' into mirakl 2024-05-17 16:50:19 +02:00
OpenXE
55e7934fe4 mirakl Zwischenstand 2024-05-16 20:39:44 +02:00
OpenXE
9d71d9812f mirakl Zwischenstand 2024-05-14 11:00:56 +02:00
OpenXE
9d547c6e52 Shop Mirakl initial copied from Presta 2024-05-13 14:43:33 +02:00
25 changed files with 5902 additions and 5920 deletions

View File

@ -10,6 +10,15 @@ use Xentral\Components\Logger\Handler\LogHandlerInterface;
final class Logger extends AbstractLogger 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 */ /** @var LogHandlerInterface[] $levelHandlers */
private $logHandlers; private $logHandlers;

View File

@ -1,198 +1,270 @@
<?php <?php
/*
include(dirname(__FILE__)."/../conf/main.conf.php");
include(dirname(__FILE__)."/../phpwf/plugins/class.mysql.php");
include(dirname(__FILE__)."/../www/lib/imap.inc.php");
include(dirname(__FILE__)."/../www/lib/class.erpapi.php");
include(dirname(__FILE__)."/../www/lib/class.erpapi_custom.php");
include(dirname(__FILE__)."/../www/lib/class.remote.php");
include(dirname(__FILE__)."/../www/lib/class.httpclient.php");
include(dirname(__FILE__)."/../www/lib/class.aes.php");
use Xentral\Components\Logger\Logger;
/** @var Logger $logger */
$logger = $app->Container->get('Logger');
class app_t { if (file_exists(dirname(__DIR__) . '/www/lib/class.erpapi_custom.php') && !class_exists('erpAPICustom')) {
var $DB; include_once dirname(__DIR__) . '/www/lib/class.erpapi_custom.php';
var $erp;
var $user;
var $remote;
} }
*/ if (empty($app->Conf)) {
//ENDE $conf = new Config();
if(file_exists(dirname(__DIR__).'/www/lib/class.erpapi_custom.php') && !class_exists('erpAPICustom')){ $app->Conf = $conf;
include_once dirname(__DIR__) . '/www/lib/class.erpapi_custom.php';
} }
if(empty($app->Conf)) { if (empty($app->DB) || empty($app->DB->connection)) {
$conf = new Config(); $app->DB = new DB($app->Conf->WFdbhost, $app->Conf->WFdbname, $app->Conf->WFdbuser, $app->Conf->WFdbpass, null, $app->Conf->WFdbport);
$app->Conf = $conf;
} }
if(empty($app->DB) || empty($app->DB->connection)) { if (!isset($app->erp) || !$app->erp) {
$app->DB = new DB($app->Conf->WFdbhost, $app->Conf->WFdbname, $app->Conf->WFdbuser, $app->Conf->WFdbpass, null, $app->Conf->WFdbport); if (class_exists('erpAPICustom')) {
} $erp = new erpAPICustom($app);
if(!isset($app->erp) || !$app->erp) { } else {
if (class_exists('erpAPICustom')) { $erp = new erpAPI($app);
$erp = new erpAPICustom($app); }
} else { $app->erp = $erp;
$erp = new erpAPI($app); }
} if (empty($app->remote)) {
//$remote = new Remote($app); if (is_file(dirname(__DIR__) . '/www/lib/class.remote_custom.php')) {
$app->erp = $erp; if (!class_exists('RemoteCustom')) {
//$app->remote= $remote; require_once dirname(__DIR__) . '/www/lib/class.remote_custom.php';
} }
if(empty($app->remote)) { $app->remote = new RemoteCustom($app);
if(is_file(dirname(__DIR__) . '/www/lib/class.remote_custom.php')) { } else {
if(!class_exists('RemoteCustom')){ $app->remote = new Remote($app);
require_once dirname(__DIR__) . '/www/lib/class.remote_custom.php';
} }
$app->remote = new RemoteCustom($app);
}
else {
$app->remote = new Remote($app);
}
} }
$app->erp->LogFile('Cronjob Artikeluebertragung Start'); $logger->debug(
'Start'
);
$app->DB->Update( $app->DB->Update(
"UPDATE `prozessstarter` "UPDATE `prozessstarter`
SET `mutexcounter` = `mutexcounter` + 1 SET `mutexcounter` = `mutexcounter` + 1
WHERE `mutex` = 1 AND (`parameter` = 'artikeluebertragen') AND `aktiv` = 1" WHERE `mutex` = 1 AND (`parameter` = 'artikeluebertragen') AND `aktiv` = 1"
); );
if($app->DB->Select("SELECT `mutex` FROM `prozessstarter` WHERE (`parameter` = 'artikeluebertragen') LIMIT 1") == 1){ if ($app->DB->Select("SELECT `mutex` FROM `prozessstarter` WHERE (`parameter` = 'artikeluebertragen') LIMIT 1") == 1) {
return; $logger->debug(
'Läuft bereits'
);
return;
} }
$articles = $app->DB->SelectArr( $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)) { if (!empty($articles)) {
/** @var Shopexport $objShopexport */ /** @var Shopexport $objShopexport */
$objShopexport = $app->loadModule('shopexport'); $objShopexport = $app->loadModule('shopexport');
if($objShopexport !== null && method_exists($objShopexport, 'addChangedArticles')) { if ($objShopexport !== null && method_exists($objShopexport, 'addChangedArticles')) {
$objShopexport->addChangedArticles(); $objShopexport->addChangedArticles();
} }
} }
$logger->debug(
'Prepare',
[
'articles' => $articles
]
);
$anzChecked = []; $anzChecked = [];
$anzChanged = []; $anzChanged = [];
$lastids = []; $lastids = [];
while(!empty($articles)) { while (!empty($articles)) {
foreach($articles as $article) { foreach ($articles as $article) {
if(empty($anzChanged[$article['shop']])) { if (empty($anzChanged[$article['shop']])) {
$anzChanged[$article['shop']] = 0; $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']])) { $app->erp->SetKonfigurationValue(
$anzChecked[$article['shop']] = 0; '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']])) { $articles = $app->DB->SelectArr(
$lastids[$article['shop']] = (int)$app->erp->GetKonfiguration( 'SELECT `id`,`shop`,`artikel` FROM `shopexport_artikeluebertragen_check` ORDER BY `id` LIMIT 10'
'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( $app->DB->Update(
sprintf( "UPDATE `prozessstarter`
"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`
SET `letzteausfuerhung`=NOW(), `mutex` = 1,`mutexcounter`=0 SET `letzteausfuerhung`=NOW(), `mutex` = 1,`mutexcounter`=0
WHERE `parameter` = 'artikeluebertragen'" WHERE `parameter` = 'artikeluebertragen'"
); );
} }
$check = $app->DB->Select('SELECT COUNT(`id`) FROM `shopexport_artikeluebertragen`'); $check = $app->DB->Select('SELECT COUNT(`id`) FROM `shopexport_artikeluebertragen`');
$app->DB->Update( $app->DB->Update(
"UPDATE `prozessstarter` "UPDATE `prozessstarter`
SET `letzteausfuerhung`=NOW(), `mutex` = 1,`mutexcounter`=0 SET `letzteausfuerhung`=NOW(), `mutex` = 1,`mutexcounter`=0
WHERE `parameter` = 'artikeluebertragen'" 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 { while ($check > 0) {
$app->remote->RemoteSendArticleList($row['shop'], array($row['artikel'])); $shopartikel = $app->DB->Query(
$app->erp->LagerSync($row['artikel'], true); "SELECT `id`,`shop`,`artikel`,`check_nr` FROM `shopexport_artikeluebertragen` ORDER BY `id` LIMIT 10"
} );
catch (Execption $exception) { if (!empty($shopartikel)) {
$app->erp->LogFile($app->DB->real_escape_string($exception->getMessage())); $anz = 0;
} while ($row = $app->DB->Fetch_Assoc($shopartikel)) {
$app->DB->Delete( if (!isset($lastids[$row['shop']])) {
sprintf( $lastids[$row['shop']] = (int) $app->erp->GetKonfiguration('shopexport_artikeluebertragen_check_lastid_' . $row['shop']);
'DELETE FROM `shopexport_artikeluebertragen` WHERE `id`= %d LIMIT 1', }
$row['id']
)
);
if(!empty($row['check_nr']) && $row['check_nr'] == $lastids[$row['shop']]) { $anz++;
$transfered = 1+(int)$app->erp->GetKonfiguration('shopexport_artikeluebertragen_check_transfered_'.$row['shop']); try {
$app->erp->SetKonfigurationValue('shopexport_artikeluebertragen_check_transfered_'.$row['shop'], $transfered); $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( if (!empty($row['check_nr']) && $row['check_nr'] == $lastids[$row['shop']]) {
"UPDATE `prozessstarter` $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 SET `letzteausfuerhung`=NOW(), `mutex` = 1,`mutexcounter`=0
WHERE `parameter` = 'artikeluebertragen'" 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'])) { $check = $app->DB->Select('SELECT COUNT(`id`) FROM `shopexport_artikeluebertragen`');
return; }*/
}
//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( $app->DB->Update(
"UPDATE `prozessstarter` "UPDATE `prozessstarter`
SET `letzteausfuerhung`= NOW(), `mutex` = 0,`mutexcounter`=0 SET `letzteausfuerhung`= NOW(), `mutex` = 0,`mutexcounter`=0
WHERE `parameter` = 'artikeluebertragen'" WHERE `parameter` = 'artikeluebertragen'"
); );

View File

@ -1,38 +1,37 @@
<?php <?php
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 (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) || !class_exists('ApplicationCore') || !($app instanceof ApplicationCore)) { if (empty($app) || !class_exists('ApplicationCore') || !($app instanceof ApplicationCore)) {
$app = new app_t(); $app = new app_t();
} }
if(empty($app->Conf)) { if (empty($app->Conf)) {
$conf = new Config(); $conf = new Config();
$app->Conf = $conf; $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); $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)) {
if(class_exists('erpAPICustom')) { if (class_exists('erpAPICustom')) {
$erp = new erpAPICustom($app); $erp = new erpAPICustom($app);
} } else {
else { $erp = new erpAPI($app);
$erp = new erpAPI($app); }
} $app->erp = $erp;
$app->erp = $erp; }
} if (empty($app->remote)) {
if(empty($app->remote)) { if (is_file(dirname(__DIR__) . '/www/lib/class.remote_custom.php')) {
if(is_file(dirname(__DIR__) . '/www/lib/class.remote_custom.php')){ if (!class_exists('RemoteCustom')) {
if(!class_exists('RemoteCustom')) { require_once 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);
} }
$app->remote = new RemoteCustom($app);
}
else {
$app->remote = new Remote($app);
}
} }
$app->erp->LogFile("Lagerzahlen-Synchronisation Start"); $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"); $firmendatenid = $app->DB->Select("SELECT MAX(id) FROM firmendaten LIMIT 1");
$app->DB->Update( $app->DB->Update(
"UPDATE `prozessstarter` "UPDATE `prozessstarter`
SET `mutexcounter` = `mutexcounter` + 1 SET `mutexcounter` = `mutexcounter` + 1
WHERE `mutex` = 1 AND `parameter` = 'lagerzahlen' AND `aktiv` = 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" "SELECT `id` FROM `prozessstarter` WHERE `mutex` = 0 AND `parameter` = 'lagerzahlen' AND `aktiv` = 1"
)) { )) {
$app->erp->LogFile("Lagerzahlen-Synchronisation Ende: Prozessstarter-Mutex nicht bereit");
return; 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"); $app->erp->LogFile("Lagerzahlen-Synchronisation Ende: Keine aktiven Shops");
return; return;
} }
$shopByIds = []; $shopByIds = [];
foreach($shops as $shop) { foreach ($shops as $shop) {
$shopByIds[$shop['id']] = $shop; $shopByIds[$shop['id']] = $shop;
} }
$shopIds = array_keys($shopByIds); $shopIds = array_keys($shopByIds);
$shopIdsStr = implode(',', $shopIds); $shopIdsStr = implode(',', $shopIds);
$hours = 12; $hours = 12;
$hoursShop = 48; $hoursShop = 48;
$lagerartikel = $app->DB->SelectFirstCols( $lagerartikel = $app->DB->SelectFirstCols(
"SELECT a.id "SELECT a.id
FROM `artikel` AS `a` FROM `artikel` AS `a`
LEFT JOIN ( LEFT JOIN (
SELECT ao2.artikel, 1 AS `autolagerlampe`, 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, ORDER BY a.cache_lagerplatzinhaltmenge = -999 DESC,
ao.cache_reseted DESC, ao.cache_reseted DESC,
a.laststorage_sync" a.laststorage_sync"
); );
if(empty($lagerartikel)) {
if (empty($lagerartikel)) {
$app->erp->LogFile("Lagerzahlen-Synchronisation Ende: Keine fälligen Artikel"); $app->erp->LogFile("Lagerzahlen-Synchronisation Ende: Keine fälligen Artikel");
return; return;
} }
try { try {
$r = new ReflectionMethod($app->erp, 'LagerSync'); $r = new ReflectionMethod($app->erp, 'LagerSync');
$params = $r->getParameters(); $params = $r->getParameters();
$anzargs = count($params); $anzargs = count($params);
} } catch (Exception $e) {
catch(Exception $e) {
$anzargs = 2; $anzargs = 2;
} }
$clagerartikel = $lagerartikel?count($lagerartikel):0; $clagerartikel = $lagerartikel ? count($lagerartikel) : 0;
$app->erp->LogFile('Lagerzahlen-Synchronisation, Artikel gesamt: '.$clagerartikel); $app->erp->LogFile('Lagerzahlen-Synchronisation, Artikel gesamt: ' . $clagerartikel);
foreach($lagerartikel as $ij => $articleId) { foreach ($lagerartikel as $articleCounter => $articleId) {
$app->DB->Update( $app->DB->Update(
"UPDATE `prozessstarter` "UPDATE `prozessstarter`
SET `mutex` = 1 , `mutexcounter` = 0, `letzteausfuerhung` = NOW() SET `mutex` = 1 , `mutexcounter` = 0, `letzteausfuerhung` = NOW()
WHERE `parameter` = 'lagerzahlen' AND `aktiv` = 1" WHERE `parameter` = 'lagerzahlen' AND `aktiv` = 1"
); );
try { try {
if($anzargs > 2){ if ($anzargs > 2) {
$message .= $app->erp->LagerSync($articleId, false, $shopByIds); // 2nd parameter is print_echo -> prints via echo to logfile (big print_r) $message .= $app->erp->LagerSync($articleId, false, $shopByIds); // 2nd parameter is print_echo -> prints via echo to logfile (big print_r)
}else{ } else {
$message .= $app->erp->LagerSync($articleId, false); $message .= $app->erp->LagerSync($articleId, false);
} }
} catch (Exception $exception) {
$message .= '<br>' . $exception->getMessage();
} }
catch (Exception $exception) { if ($message != '') {
$message .= '<br>' . $exception->getMessage(); $message .= '<br>';
} }
if($message!='') { if ($articleCounter % 10 === 0 && method_exists($app->erp, 'canRunCronjob') && !$app->erp->canRunCronjob(['lagerzahlen'])) {
$message .='<br>'; $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->LogFile("Lagerzahlen-Synchronisation: Warte 10 Sekunden");
&& !$app->erp->canRunCronjob(['lagerzahlen'])) { // usleep(10000);
$app->DB->Update( }
"UPDATE `prozessstarter` $app->DB->Update(
SET `mutex` = 0 , `mutexcounter` = 0, `letzteausfuerhung` = NOW()
WHERE `parameter` = 'lagerzahlen' AND `aktiv` = 1"
);
return;
}
usleep(10000);
}
$app->DB->Update(
"UPDATE `prozessstarter` "UPDATE `prozessstarter`
SET `mutex` = 0 , `mutexcounter` = 0, `letzteausfuerhung` = NOW() SET `mutex` = 0 , `mutexcounter` = 0, `letzteausfuerhung` = NOW()
WHERE `parameter` = 'lagerzahlen' AND `aktiv` = 1" WHERE `parameter` = 'lagerzahlen' AND `aktiv` = 1"
); );
if($message !='' && $erp->Firmendaten('systemmailsabschalten') == 0 && $erp->GetFirmaMail()!='') { if ($message != '' && $erp->Firmendaten('systemmailsabschalten') == 0 && $erp->GetFirmaMail() != '') {
try { try {
if($erp->Firmendaten('systemmailsempfaenger') != ''){ if ($erp->Firmendaten('systemmailsempfaenger') != '') {
$erp->MailSend( $erp->MailSend(
$erp->GetFirmaMail(), $erp->GetFirmaMail(),
$erp->GetFirmaName(), $erp->GetFirmaName(),
$erp->Firmendaten('systemmailsempfaenger'), $erp->Firmendaten('systemmailsempfaenger'),
'Lagerverwaltung', 'Lagerverwaltung',
'Systemmeldung: Auto Update Lagerlampen', 'Systemmeldung: Auto Update Lagerlampen',
$message $message
); );
} else {
}else{ if ($erp->GetFirmaBCC1() != '') {
if($erp->GetFirmaBCC1() != ''){ $erp->MailSend(
$erp->MailSend( $erp->GetFirmaMail(),
$erp->GetFirmaMail(), $erp->GetFirmaName(),
$erp->GetFirmaName(), $erp->GetFirmaBCC1(),
$erp->GetFirmaBCC1(), 'Lagerverwaltung',
'Lagerverwaltung', 'Systemmeldung: Auto Update Lagerlampen',
'Systemmeldung: Auto Update Lagerlampen', $message
$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");

View File

@ -1,392 +1,388 @@
<?php <?php
error_reporting(E_ERROR | E_WARNING | E_PARSE); error_reporting(E_ERROR | E_WARNING | E_PARSE);
if(!class_exists('ApplicationCore') && is_file(dirname(__DIR__).'/xentral_autoloader.php')) { if (!class_exists('ApplicationCore') && is_file(dirname(__DIR__) . '/xentral_autoloader.php')) {
include_once dirname(__DIR__).'/xentral_autoloader.php'; include_once dirname(__DIR__) . '/xentral_autoloader.php';
} }
include_once dirname(__DIR__).'/conf/main.conf.php'; include_once dirname(__DIR__) . '/conf/main.conf.php';
include_once dirname(__DIR__).'/phpwf/plugins/class.mysql.php'; include_once dirname(__DIR__) . '/phpwf/plugins/class.mysql.php';
include_once dirname(__DIR__).'/phpwf/plugins/class.secure.php'; include_once dirname(__DIR__) . '/phpwf/plugins/class.secure.php';
include_once dirname(__DIR__).'/phpwf/plugins/class.user.php'; include_once dirname(__DIR__) . '/phpwf/plugins/class.user.php';
if(file_exists(dirname(__DIR__).'/conf/user_defined.php')) { if (file_exists(dirname(__DIR__) . '/conf/user_defined.php')) {
include_once dirname(__DIR__).'/conf/user_defined.php';
}
if(!class_exists('FPDFWAWISION')){
if(file_exists(dirname(__DIR__).'/conf/user_defined.php')){
include_once dirname(__DIR__) . '/conf/user_defined.php'; include_once dirname(__DIR__) . '/conf/user_defined.php';
}
if(defined('USEFPDF3') && USEFPDF3 && file_exists(dirname(__DIR__) . '/www/lib/pdf/fpdf_3.php')){
require_once dirname(__DIR__) . '/www/lib/pdf/fpdf_3.php';
}else if(defined('USEFPDF2') && USEFPDF2 && file_exists(dirname(__DIR__) . '/www/lib/pdf/fpdf_2.php')){
require_once dirname(__DIR__) . '/www/lib/pdf/fpdf_2.php';
}else{
require_once dirname(__DIR__) . '/www/lib/pdf/fpdf.php';
}
} }
include_once dirname(__DIR__).'/www/lib/pdf/fpdf_final.php'; if (!class_exists('FPDFWAWISION')) {
include_once dirname(__DIR__).'/www/lib/imap.inc.php'; if (file_exists(dirname(__DIR__) . '/conf/user_defined.php')) {
include_once dirname(__DIR__).'/www/lib/class.erpapi.php'; include_once dirname(__DIR__) . '/conf/user_defined.php';
include_once dirname(__DIR__).'/www/lib/class.remote.php'; }
include_once dirname(__DIR__).'/www/lib/class.httpclient.php'; if (defined('USEFPDF3') && USEFPDF3 && file_exists(dirname(__DIR__) . '/www/lib/pdf/fpdf_3.php')) {
require_once dirname(__DIR__) . '/www/lib/pdf/fpdf_3.php';
} else if (defined('USEFPDF2') && USEFPDF2 && file_exists(dirname(__DIR__) . '/www/lib/pdf/fpdf_2.php')) {
require_once dirname(__DIR__) . '/www/lib/pdf/fpdf_2.php';
} else {
require_once dirname(__DIR__) . '/www/lib/pdf/fpdf.php';
}
}
include_once dirname(__DIR__) . '/www/lib/pdf/fpdf_final.php';
include_once dirname(__DIR__) . '/www/lib/imap.inc.php';
include_once dirname(__DIR__) . '/www/lib/class.erpapi.php';
include_once dirname(__DIR__) . '/www/lib/class.remote.php';
include_once dirname(__DIR__) . '/www/lib/class.httpclient.php';
$aes = ''; $aes = '';
$phpversion = (String)phpversion(); $phpversion = (String) phpversion();
if($phpversion[0] == '7' && (int)$phpversion[2] > 0) { if ($phpversion[0] == '7' && (int) $phpversion[2] > 0) {
$aes = '2'; $aes = '2';
} }
if($aes == 2 && is_file(dirname(__DIR__).'/www/lib/class.aes2.php')) { if ($aes == 2 && is_file(dirname(__DIR__) . '/www/lib/class.aes2.php')) {
include_once dirname(__DIR__).'/www/lib/class.aes2.php'; include_once dirname(__DIR__) . '/www/lib/class.aes2.php';
} } else {
else{ include_once dirname(__DIR__) . '/www/lib/class.aes.php';
include_once dirname(__DIR__) . '/www/lib/class.aes.php';
} }
$classes = array('briefpapier','lieferschein','auftrag','anfrage','gutschrift','bestellung','rechnung','mahnwesen'); $classes = array('briefpapier', 'lieferschein', 'auftrag', 'anfrage', 'gutschrift', 'bestellung', 'rechnung', 'mahnwesen');
foreach($classes as $class) foreach ($classes as $class) {
{ if (file_exists(dirname(__DIR__) . '/www/lib/dokumente/class.' . $class . '_custom.php')) {
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.'_custom.php'; include_once dirname(__DIR__) . '/www/lib/dokumente/class.' . $class . '.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.briefpapier.php");
include_once(dirname(__FILE__)."/../www/lib/dokumente/class.lieferschein.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.auftrag.php");
include_once(dirname(__FILE__)."/../www/lib/dokumente/class.angebot.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"); 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.gutschrift.php");
include_once(dirname(__FILE__)."/../www/lib/dokumente/class.bestellung.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.rechnung.php");
include_once(dirname(__FILE__)."/../www/lib/dokumente/class.mahnwesen.php");*/ include_once(dirname(__FILE__)."/../www/lib/dokumente/class.mahnwesen.php"); */
include_once dirname(__DIR__).'/phpwf/plugins/class.string.php'; include_once dirname(__DIR__) . '/phpwf/plugins/class.string.php';
if(!class_exists('app_t2')) if (!class_exists('app_t2')) {
{
class app_t2 extends ApplicationCore { class app_t2 extends ApplicationCore {
var $DB;
var $erp; var $DB;
var $User; var $erp;
var $mail; var $User;
var $remote; var $mail;
var $Secure; var $remote;
function GetLandLang($isocode) var $Secure;
{
$flipped = array_flip($this->GetLaender()); function GetLandLang($isocode) {
if(isset($flipped[$isocode])) $flipped = array_flip($this->GetLaender());
$land = $flipped[$isocode]; if (isset($flipped[$isocode]))
else { $land = $flipped[$isocode];
$land = 'unkown'; else {
} $land = 'unkown';
return $land; }
} return $land;
}
function GetLaender() {
$laender = array(
'Afghanistan' => 'AF',
'&Auml;gypten' => 'EG',
'Albanien' => 'AL',
'Algerien' => 'DZ',
'Andorra' => 'AD',
'Angola' => 'AO',
'Anguilla' => 'AI',
'Antarktis' => 'AQ',
'Antigua und Barbuda' => 'AG',
'&Auml;quatorial Guinea' => 'GQ',
'Argentinien' => 'AR',
'Armenien' => 'AM',
'Aruba' => 'AW',
'Aserbaidschan' => 'AZ',
'&Auml;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&auml;nemark' => 'DK',
'Deutschland' => 'DE',
'Djibuti' => 'DJ',
'Dominika' => 'DM',
'Dominikanische Republik' => 'DO',
'Ecuador' => 'EC',
'El Salvador' => 'SV',
'Elfenbeink&uuml;ste' => 'CI',
'Eritrea' => 'ER',
'Estland' => 'EE',
'Falkland Inseln' => 'FK',
'F&auml;r&ouml;er Inseln' => 'FO',
'Fidschi' => 'FJ',
'Finnland' => 'FI',
'Frankreich' => 'FR',
'Franz&ouml;sisch Guyana' => 'GF',
'Franz&ouml;sisch Polynesien' => 'PF',
'Franz&ouml;sisches S&uuml;d-Territorium' => 'TF',
'Gabun' => 'GA',
'Gambia' => 'GM',
'Georgien' => 'GE',
'Ghana' => 'GH',
'Gibraltar' => 'GI',
'Grenada' => 'GD',
'Griechenland' => 'GR',
'Gr&ouml;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&auml;ndische Antillen' => 'AN',
'Niger' => 'NE',
'Nigeria' => 'NG',
'Niue' => 'NU',
'Nord Korea' => 'KP',
'Norfolk Inseln' => 'NF',
'Norwegen' => 'NO',
'Oman' => 'OM',
'&Ouml;sterreich' => 'AT',
'Pakistan' => 'PK',
'Pal&auml;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&auml;nien' => 'RO',
'Ru&szlig;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&uuml;d Korea' => 'KR',
'S&uuml;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&uuml;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&szlig;ru&szlig;land' => 'BY',
'Westsahara' => 'EH',
'Zentralafrikanische Republik' => 'CF',
'Zimbabwe' => 'ZW',
'Zypern' => 'CY'
);
return $laender;
}
}
function GetLaender()
{
$laender = array(
'Afghanistan' => 'AF',
'&Auml;gypten' => 'EG',
'Albanien' => 'AL',
'Algerien' => 'DZ',
'Andorra' => 'AD',
'Angola' => 'AO',
'Anguilla' => 'AI',
'Antarktis' => 'AQ',
'Antigua und Barbuda' => 'AG',
'&Auml;quatorial Guinea' => 'GQ',
'Argentinien' => 'AR',
'Armenien' => 'AM',
'Aruba' => 'AW',
'Aserbaidschan' => 'AZ',
'&Auml;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&auml;nemark' => 'DK',
'Deutschland' => 'DE',
'Djibuti' => 'DJ',
'Dominika' => 'DM',
'Dominikanische Republik' => 'DO',
'Ecuador' => 'EC',
'El Salvador' => 'SV',
'Elfenbeink&uuml;ste' => 'CI',
'Eritrea' => 'ER',
'Estland' => 'EE',
'Falkland Inseln' => 'FK',
'F&auml;r&ouml;er Inseln' => 'FO',
'Fidschi' => 'FJ',
'Finnland' => 'FI',
'Frankreich' => 'FR',
'Franz&ouml;sisch Guyana' => 'GF',
'Franz&ouml;sisch Polynesien' => 'PF',
'Franz&ouml;sisches S&uuml;d-Territorium' => 'TF',
'Gabun' => 'GA',
'Gambia' => 'GM',
'Georgien' => 'GE',
'Ghana' => 'GH',
'Gibraltar' => 'GI',
'Grenada' => 'GD',
'Griechenland' => 'GR',
'Gr&ouml;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&auml;ndische Antillen' => 'AN',
'Niger' => 'NE',
'Nigeria' => 'NG',
'Niue' => 'NU',
'Nord Korea' => 'KP',
'Norfolk Inseln' => 'NF',
'Norwegen' => 'NO',
'Oman' => 'OM',
'&Ouml;sterreich' => 'AT',
'Pakistan' => 'PK',
'Pal&auml;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&auml;nien' => 'RO',
'Ru&szlig;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&uuml;d Korea' => 'KR',
'S&uuml;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&uuml;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&szlig;ru&szlig;land' => 'BY',
'Westsahara' => 'EH',
'Zentralafrikanische Republik' => 'CF',
'Zimbabwe' => 'ZW',
'Zypern' => 'CY'
);
return $laender;
}
}
} }
//ENDE //ENDE
if(empty($app) || !class_exists('ApplicationCore') || !($app instanceof ApplicationCore)) { if (empty($app) || !class_exists('ApplicationCore') || !($app instanceof ApplicationCore)) {
$app = new app_t2(); $app = new app_t2();
} }
if(empty($app->Conf)){ if (empty($app->Conf)) {
$conf = new Config(); $conf = new Config();
$app->Conf = $conf; $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); $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); $erp = new erpAPI($app);
$app->erp = $erp; $app->erp = $erp;
} }
$app->String = new WawiString(); $app->String = new WawiString();
if(empty($app->remote)){ if (empty($app->remote)) {
if(is_file(dirname(__DIR__) . '/www/lib/class.remote_custom.php')){ if (is_file(dirname(__DIR__) . '/www/lib/class.remote_custom.php')) {
require_once dirname(__DIR__) . '/www/lib/class.remote_custom.php'; require_once dirname(__DIR__) . '/www/lib/class.remote_custom.php';
$app->remote = new RemoteCustom($app); $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);
//$app->remote = new Remote($app); if (!defined('FPDF_FONTPATH')) {
$app->Secure = new Secure($app); define('FPDF_FONTPATH', dirname(__DIR__) . '/www/lib/pdf/font/');
$app->User = new User($app); }
if(!defined('FPDF_FONTPATH')) {
define('FPDF_FONTPATH',dirname(__DIR__).'/www/lib/pdf/font/');
}
//ENDE //ENDE
const MAXIMUM_NUMBER_OF_TRIES = 10; const MAXIMUM_NUMBER_OF_TRIES = 10;
$shops = $app->DB->SelectFirstCols( $shops = $app->DB->SelectFirstCols(
'SELECT id FROM shopexport WHERE auftragabgleich = 1 AND aktiv = 1 AND demomodus <> 1 AND sendonlywithtracking = 0' 'SELECT id FROM shopexport WHERE auftragabgleich = 1 AND aktiv = 1 AND demomodus <> 1 AND sendonlywithtracking = 0'
); );
if(empty($shops)) { if (empty($shops)) {
return; return;
} }
$app->DB->Update("UPDATE prozessstarter SET mutexcounter = mutexcounter + 1 WHERE mutex = 1 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")) { if (!$app->DB->Select("SELECT id FROM prozessstarter WHERE mutex = 0 AND (parameter = 'shop_rueckmeldungen') AND aktiv = 1")) {
return; 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)); $subwhere = sprintf(' a.shop IN (%s) ', implode(',', $shops));
$join = ''; $join = '';
$where = ''; $where = '';
$app->erp->RunHook('shop_rueckmeldung', 2, $join, $where); $app->erp->RunHook('shop_rueckmeldung', 2, $join, $where);
$sql = "SELECT DISTINCT a.id, a.shop $sql = "SELECT DISTINCT a.id, a.shop
FROM auftrag a FROM auftrag a
LEFT JOIN lieferschein l on l.auftragid = a.id 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)) ((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 (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 $where
ORDER BY a.id, l.id DESC, v.id DESC ORDER BY a.id, l.id DESC, v.id DESC
"; ";
@ -412,33 +408,33 @@ function GetLaender()
$auftraege = $app->DB->SelectArr($sql); $auftraege = $app->DB->SelectArr($sql);
if(!empty($auftraege)) { if(!empty($auftraege)) {
$app->DB->Update( $app->DB->Update(
"UPDATE prozessstarter "UPDATE prozessstarter
SET mutex = 1 , mutexcounter = 0, letzteausfuerhung = now() SET mutex = 1 , mutexcounter = 0, letzteausfuerhung = now()
WHERE (parameter = 'shop_rueckmeldungen' ) AND aktiv = 1" WHERE (parameter = 'shop_rueckmeldungen' ) AND aktiv = 1"
); );
$auftragid = null; $auftragid = null;
$countRequests = 0; $countRequests = 0;
foreach($auftraege as $auftrag) { foreach ($auftraege as $auftrag) {
if($auftrag['id'] != $auftragid) { if ($auftrag['id'] != $auftragid) {
$countRequests++; $countRequests++;
$auftragid = $auftrag['id']; $auftragid = $auftrag['id'];
$app->remote->RemoteUpdateAuftrag($auftrag['shop'], $auftrag['id']); $app->remote->RemoteUpdateAuftrag($auftrag['shop'], $auftrag['id']);
if($countRequests % 10 === 0) { if ($countRequests % 10 === 0) {
$app->DB->Update( $app->DB->Update(
"UPDATE prozessstarter "UPDATE prozessstarter
SET mutex = 1 , mutexcounter = 0, letzteausfuerhung = now() SET mutex = 1 , mutexcounter = 0, letzteausfuerhung = now()
WHERE parameter = 'shop_rueckmeldungen' AND aktiv = 1" WHERE parameter = 'shop_rueckmeldungen' AND aktiv = 1"
); );
}
} }
}
} }
unset($auftraege); 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 //Zahlungsstatus
$query = $app->DB->Query( $query = $app->DB->Query(
"SELECT a.id "SELECT a.id
FROM `auftrag` AS `a` FROM `auftrag` AS `a`
LEFT JOIN `rechnung` AS `r1` ON r1.id = a.rechnungid LEFT JOIN `rechnung` AS `r1` ON r1.id = a.rechnungid
LEFT JOIN `rechnung` AS `r2` ON r2.auftragid = a.id 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 AND (r1.zahlungsstatus = 'bezahlt' OR r2.zahlungsstatus = 'bezahlt') AND DATEDIFF(NOW(), a.datum) <= 28
GROUP BY a.id GROUP BY a.id
LIMIT 1000" LIMIT 1000"
); );
if($query) { if ($query) {
$countRequests = 0; $countRequests = 0;
while($row = $app->DB->Fetch_Assoc($query)) { while ($row = $app->DB->Fetch_Assoc($query)) {
$app->erp->ImportUpdateZahlungsstatus($row['id']); $app->erp->ImportUpdateZahlungsstatus($row['id']);
$countRequests++; $countRequests++;
if($countRequests % 10 === 0) { if ($countRequests % 10 === 0) {
$app->DB->Update( $app->DB->Update(
"UPDATE prozessstarter "UPDATE prozessstarter
SET mutex = 1 , mutexcounter = 0, letzteausfuerhung = now() SET mutex = 1 , mutexcounter = 0, letzteausfuerhung = now()
WHERE parameter = 'shop_rueckmeldungen' AND aktiv = 1" WHERE parameter = 'shop_rueckmeldungen' AND aktiv = 1"
); );
} }
} }
$app->DB->free($query); $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");

View File

@ -18692,6 +18692,14 @@
"id" "id"
], ],
"Non_unique": "" "Non_unique": ""
},
{
"Key_name": "eigenschaft_unique",
"Index_type": "BTREE",
"columns": [
"name"
],
"Non_unique": "UNIQUE"
} }
] ]
}, },
@ -18802,6 +18810,15 @@
"artikel" "artikel"
], ],
"Non_unique": "" "Non_unique": ""
},
{
"Key_name": "eigenschaft_artikel_unique",
"Index_type": "BTREE",
"columns": [
"artikel",
"artikeleigenschaften"
],
"Non_unique": "UNIQUE"
} }
] ]
}, },

View File

@ -1329,6 +1329,46 @@ Class ShopimporterBase{
'metabeschreibung' => ['createarticle' => self::CAN, 'updatearticle' => self::CAN, '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], '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], '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' => [ 'shopimporter_modified' => [
'auftrag' => ['createarticle' => self::UNDEFINED, 'updatearticle' => self::UNDEFINED, 'importarticle' => self::UNDEFINED, 'importorder' => self::UNDEFINED], 'auftrag' => ['createarticle' => self::UNDEFINED, 'updatearticle' => self::UNDEFINED, 'importarticle' => self::UNDEFINED, 'importorder' => self::UNDEFINED],

View File

@ -17199,7 +17199,7 @@ function CheckShopTabelle($artikel)
return $taxrates; 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); $this->RunHook('ImportAuftragBefore',4, $adresse,$warenkorb,$projekt,$shop);
if(!empty($this->app->stringcleaner)){ if(!empty($this->app->stringcleaner)){
@ -17711,6 +17711,9 @@ function CheckShopTabelle($artikel)
if($doctype === 'angebot'){ if($doctype === 'angebot'){
$this->app->DB->Update("UPDATE angebot SET anfrage = '".$this->app->DB->real_escape_string($warenkorb['onlinebestellnummer'])."' WHERE id = '$auftrag' LIMIT 1"); $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 $this->app->DB->Update("UPDATE $doctype SET
belegnr='$belegnr', belegnr='$belegnr',
@ -18674,16 +18677,24 @@ function CheckShopTabelle($artikel)
$artikelporto = $artikelportoermaessigt; $artikelporto = $artikelportoermaessigt;
} }
if(empty($artikelporto) && $this->app->DB->Select("SELECT portoartikelanlegen FROM shopexport WHERE id = '$shop' 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'); if($warenkorb['versandkostennetto'] != 0 || $warenkorb['versandkostenbrutto'] != 0 || $portocheck == 1)
$artikelporto = $this->app->erp->InsertUpdateArtikel($portoartikelarr); {
if($artikelporto){ $portoartikelarr = array('projekt'=>$projekt,'porto'=>1, 'lagerartikel'=>0,'name_de'=>'Porto','umsatzsteuer'=>'normal');
$this->app->DB->Update("UPDATE shopexport SET artikelporto = '$artikelporto' WHERE id = '$shop' AND artikelporto = 0 LIMIT 1"); $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"); $umsatzsteuer_porto = $this->app->DB->Select("SELECT umsatzsteuer FROM artikel WHERE id='$artikelporto' LIMIT 1");
$versandname = ''; $versandname = '';
@ -19029,7 +19040,7 @@ function CheckShopTabelle($artikel)
} }
} }
return $auftrag; return array("status" => true, "$auftragid" => $auftrag);
} }
@ -21022,7 +21033,7 @@ function ChargenMHDAuslagern($artikel, $menge, $lagerplatztyp, $lpid,$typ,$wert,
$anzges = 0; $anzges = 0;
$anzfehler = 0; $anzfehler = 0;
$result = null; // 1 on success $result = null; // $result['status'] == 1 on success
if(!empty($extnummer) && is_array($extnummer)) { if(!empty($extnummer) && is_array($extnummer)) {
foreach($extnummer as $nummer) { foreach($extnummer as $nummer) {
@ -21053,9 +21064,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; $cacheQuantity = (int) $verkaufbare_menge_korrektur + (int) $pseudolager;
$this->app->DB->Update( $this->app->DB->Update(
"UPDATE `artikel` SET `cache_lagerplatzinhaltmenge` = '{$cacheQuantity}' "UPDATE `artikel` SET `cache_lagerplatzinhaltmenge` = '{$cacheQuantity}'
@ -27558,6 +27569,16 @@ function Firmendaten($field,$projekt="")
return $buchstaben_anteil_string.$neue_nummer; 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="") function GetNextNummer($type,$projekt="",$data="")
{ {
$doctype = $type; $doctype = $type;
@ -28032,7 +28053,7 @@ function Firmendaten($field,$projekt="")
$nurzahlen = preg_replace("/[^0-9]/","",$next_nummer_alt); $nurzahlen = preg_replace("/[^0-9]/","",$next_nummer_alt);
$laenge = strlen($nurzahlen); $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); //$nurbuchstaben.str_pad($nurzahlen+1, $laenge ,'0', STR_PAD_LEFT);
$neue_nummer = $next_nummer; $neue_nummer = $next_nummer;
@ -28045,12 +28066,12 @@ function Firmendaten($field,$projekt="")
if($eigenernummernkreis=="1") if($eigenernummernkreis=="1")
{ {
$neue_nummer = $this->app->DB->Select("SELECT next_artikelnummer FROM projekt WHERE id='$projekt' LIMIT 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); 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->CalcNextNummer($neue_nummer); $next_nummer = $this->CalcNextArtikelNummer($neue_nummer);
$this->app->DB->Update("UPDATE projekt SET next_artikelnummer='".$next_nummer."' WHERE id='$projekt' LIMIT 1"); $this->app->DB->Update("UPDATE projekt SET next_artikelnummer='".$next_nummer."' WHERE id='$projekt' LIMIT 1");
} else { } else {
//zentraler nummernkreis mit prefix //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); $this->FirmendatenSet("next_artikelnummer",$next_nummer);
if($next_nummer_alt!="") $neue_nummer=$next_nummer_alt.$next_nummer; if($next_nummer_alt!="") $neue_nummer=$next_nummer_alt.$next_nummer;
else $neue_nummer = $next_nummer; else $neue_nummer = $next_nummer;
@ -28065,15 +28086,15 @@ function Firmendaten($field,$projekt="")
if($eigenernummernkreis) if($eigenernummernkreis)
{ {
$neue_nummer = $this->app->DB->Select("SELECT next_artikelnummer FROM projekt WHERE id='$projekt' LIMIT 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); 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->CalcNextNummer($neue_nummer); $next_nummer = $this->CalcNextArtikelNummer($neue_nummer);
$this->app->DB->Update("UPDATE projekt SET next_artikelnummer='".$next_nummer."' WHERE id='$projekt' LIMIT 1"); $this->app->DB->Update("UPDATE projekt SET next_artikelnummer='".$next_nummer."' WHERE id='$projekt' LIMIT 1");
}else{ }else{
$firmennummer = $this->app->erp->Firmendaten('next_artikelnummer'); $firmennummer = $this->app->erp->Firmendaten('next_artikelnummer');
if($firmennummer) if($firmennummer)
{ {
$next_nummer = $firmennummer; $next_nummer = $firmennummer;
$neue_nummer = $this->CalcNextNummer($next_nummer); $neue_nummer = $this->CalcNextArtikelNummer($next_nummer);
$this->FirmendatenSet('next_artikelnummer', $neue_nummer); $this->FirmendatenSet('next_artikelnummer', $neue_nummer);
$neue_nummer = $this->app->erp->Firmendaten('next_artikelnummer'); $neue_nummer = $this->app->erp->Firmendaten('next_artikelnummer');
} else { } else {
@ -28095,10 +28116,11 @@ function Firmendaten($field,$projekt="")
$neue_nummer = $this->app->DB->Select("SELECT MAX(CAST(nummer AS UNSIGNED)) FROM artikel WHERE nummer LIKE '1%'"); $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"; 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); $this->app->erp->ProzessUnlock($process_lock);
$neue_nummer = str_replace('{JAHR}',date('Y'),$neue_nummer); $neue_nummer = str_replace('{JAHR}',date('Y'),$neue_nummer);
$neue_nummer = str_replace('{MONAT}',date('m'),$neue_nummer); $neue_nummer = str_replace('{MONAT}',date('m'),$neue_nummer);

File diff suppressed because it is too large Load Diff

View File

@ -2628,6 +2628,10 @@ class Appstore {
'Link'=>'index.php?module=onlineshops&action=create&cmd=shopimporter_presta', 'Link'=>'index.php?module=onlineshops&action=create&cmd=shopimporter_presta',
'Icon'=>'Icons_dunkel_1.gif', 'Icon'=>'Icons_dunkel_1.gif',
'Versionen'=>'ALL','install'=>true, 'beta' => false,'kategorie'=>'{|Shop Schnittstelle|}') '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( ,'shopimporter_shopify'=>array(
'Bezeichnung'=>'Shopify API Advanced', 'Bezeichnung'=>'Shopify API Advanced',
'Link'=>'index.php?module=onlineshops&action=create&cmd=shopimporter_shopify', 'Link'=>'index.php?module=onlineshops&action=create&cmd=shopimporter_shopify',
@ -3967,7 +3971,6 @@ class Appstore {
} }
} }
if(isset($module['installiert'])) { if(isset($module['installiert'])) {
foreach($module['installiert'] as $k => $v) { foreach($module['installiert'] as $k => $v) {
$moduleInstallKey = $module['installiert'][$k]['key']; $moduleInstallKey = $module['installiert'][$k]['key'];

View File

@ -2841,100 +2841,82 @@ class Artikel extends GenArtikel {
return ['status'=>$isOk, 'info'=>$info, 'msg_encoded' => $msg, 'error' => $error]; return ['status'=>$isOk, 'info'=>$info, 'msg_encoded' => $msg, 'error' => $error];
} }
public function ArtikelShopexport() public function ArtikelShopexport() {
{ $id = $this->app->Secure->GetGET('id');
$id = $this->app->Secure->GetGET('id'); $shop = $this->app->Secure->GetGET('shop');
$shop = $this->app->Secure->GetGET('shop'); $artikel = array($id);
$artikel = array($id); $artikelshopid = (int) $this->app->Secure->GetGET('artikelshopid');
$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");
$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 ($artikelshopid > 0) {
$shop = $this->app->DB->Select("SELECT shop FROM artikel_onlineshops WHERE id = '$artikelshopid' AND artikel = '$id' AND aktiv = 1 LIMIT 1");
if($externenummer) $this->app->User->SetParameter('artikel_shopexport_shop', '');
{ } else {
$extartikelnummer = array($externenummer); if ($shop == '1') {
}else{ $shop = $this->app->DB->Select("SELECT shop FROM artikel WHERE id='$id' LIMIT 1");
$extartikelnummer = ''; } elseif ($shop == '2') {
} $shop = $this->app->DB->Select("SELECT shop2 FROM artikel WHERE id='$id' LIMIT 1");
} elseif ($shop == '3') {
$pageContents = $this->app->remote->RemoteSendArticleList($shop,$artikel,$extartikelnummer); $shop = $this->app->DB->Select("SELECT shop3 FROM artikel WHERE id='$id' LIMIT 1");
$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('<div class="info">'.$pageContents['message'].'</div>');
}
elseif(isset($pageContents['status']) && !empty($pageContents['message'])) {
$msg = $this->app->erp->base64_url_encode('<div class="error">'.$pageContents['message'].'</div>');
}
}
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 = "<a href='$url' class='button button-primary'>Zu den Shopeinstellungen</a>";
}
if($check === 0){
$msg = $this->app->erp->base64_url_encode("<div class=\"error\">Es gab einen Fehler beim Aktualisieren des Artikels im Shop!$pageContents</div>");
}
else if($pageContents == ''){
if($artikelexport != 1 && $lagerexport != 1){
$msg = $this->app->erp->base64_url_encode("<div class=\"error\">Der Artikel konnte nicht zum Shop &uuml;bertragen werden! In den Shopeinstellungen ist festgelegt, dass die Artikelinformation- und Lagerbestands&uuml;bertragung nicht erlaubt ist!$pageContents $linkToImporterSettings</div>");
} }
else{
if($pageContents === '0' || $pageContents === 0){
$msg = $this->app->erp->base64_url_encode("<div class=\"error\">Es gab einen Fehler beim Aktualisieren des Artikels im Shop! Stellen Sie sicher, dass die Zugangsdaten und URL's korrekt sind! M&ouml;glicherweise kein Artikelpreis hinterlegt</div>");
}else{
$msg = $this->app->erp->base64_url_encode("<div class=\"error\">Es gab einen Fehler beim Aktualisieren des Artikels im Shop! Stellen Sie sicher, dass die Zugangsdaten und URL's korrekt sind!$pageContents $linkToImporterSettings</div>");
}
}
}
else{
if($artikelexport != 1 && $lagerexport == 1){
$msg = $this->app->erp->base64_url_encode("<div class=info>Es wurde nur der Lagerbestand (nicht die Artikelinfos entsprechend der Einstellungen) im Shop aktualisiert!$pageContents $linkToImporterSettings</div>");
}
else if($lagerexport != 1 && $artikelexport == 1){
$msg = $this->app->erp->base64_url_encode("<div class=info>Es wurde nur der Artikel (nicht der Lagerbestand entsprechend der Einstellungen) im Shop aktualisiert!$pageContents $linkToImporterSettings</div>");
}
else{
$msg = $this->app->erp->base64_url_encode("<div class=info>Der Artikel wurde im Shop aktualisiert!$pageContents</div>");
}
}
}
$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 &uuml;bertragen werden!";
}
} else if ($remote_result === null) {
$remote_status = false;
$remote_message = "Keine Aktion durchgef&uuml;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('<div class="info">' . $remote_message . '</div>');
} else {
$msg = $this->app->erp->base64_url_encode('<div class="error">' . $remote_message . '</div>');
}
$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 = "<a href='$url' class='button button-primary'>Zu den Shopeinstellungen</a>";
}
}
$this->app->erp->LagerSync($artikel);
$this->app->Location->execute("index.php?module=artikel&action=edit&id=$id&msg=$msg#tabs-4");
}
public function ArtikelShopexportFiles() public function ArtikelShopexportFiles()
{ {

View File

@ -1,408 +1,410 @@
<?php <?php
/* /*
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE **** **** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
* *
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019 * Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
* *
* This file is licensed under the Embedded Projects General Public License *Version 3.1. * This file is licensed under the Embedded Projects General Public License *Version 3.1.
* *
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis * You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
* to obtain the text of the corresponding license version. * to obtain the text of the corresponding license version.
* *
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE **** **** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
*/ */
?> ?>
<?php <?php
class Bundesstaaten { class Bundesstaaten {
/** @var erpooSystem $app */ /** @var erpooSystem $app */
var $app; var $app;
static function TableSearch(&$app, $name, $erlaubtevars) static function TableSearch(&$app, $name, $erlaubtevars)
{ {
// in dieses switch alle lokalen Tabellen (diese Live Tabellen mit Suche etc.) für dieses Modul // in dieses switch alle lokalen Tabellen (diese Live Tabellen mit Suche etc.) für dieses Modul
switch($name) switch($name)
{ {
case "bundesstaaten_list": case "bundesstaaten_list":
$allowed['bundesstaaten'] = array('list'); $allowed['bundesstaaten'] = array('list');
$heading = array('Land', 'ISO', 'Bundesstaat', 'Aktiv', 'Men&uuml;'); $heading = array('Land', 'ISO', 'Bundesstaat', 'Aktiv', 'Men&uuml;');
$width = array('20%', '10%', '60%', '10%', '1%'); $width = array('20%', '10%', '60%', '10%', '1%');
$findcols = array('l.bezeichnung_de', 'b.iso', 'b.bundesstaat', "if(b.aktiv, 'ja', '-')", 'b.id'); $findcols = array('l.bezeichnung_de', 'b.iso', 'b.bundesstaat', "if(b.aktiv, 'ja', '-')", 'b.id');
$searchsql = array('l.bezeichnung_de', 'b.iso', 'b.bundesstaat'); $searchsql = array('l.bezeichnung_de', 'b.iso', 'b.bundesstaat');
$defaultorder = 1; $defaultorder = 1;
$defaultorderdesc = 0; $defaultorderdesc = 0;
$menu = "<table cellpadding=0 cellspacing=0>"; $menu = "<table cellpadding=0 cellspacing=0>";
$menu .= "<tr>"; $menu .= "<tr>";
$menu .= "<td nowrap>"; $menu .= "<td nowrap>";
$menu .= '<a href="javascript:;" onclick="BundesstaatenEdit(%value%);">'; $menu .= '<a href="javascript:;" onclick="BundesstaatenEdit(%value%);">';
$menu .= "<img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; $menu .= "<img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">";
$menu .= "</a>&nbsp;"; $menu .= "</a>&nbsp;";
$menu .= '<a href="javascript:;" onclick="BundesstaatenDelete(%value%);">'; $menu .= '<a href="javascript:;" onclick="BundesstaatenDelete(%value%);">';
$menu .= "<img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; $menu .= "<img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">";
$menu .= "</a>"; $menu .= "</a>";
$menu .= "</td>"; $menu .= "</td>";
$menu .= "</tr>"; $menu .= "</tr>";
$menu .= "</table>"; $menu .= "</table>";
$finaktiv = $app->YUI->TableSearchFilter($name, 5, 'inaktiv', '0', 0, 'checkbox'); $finaktiv = $app->YUI->TableSearchFilter($name, 5, 'inaktiv', '0', 0, 'checkbox');
$subwhere = ''; $subwhere = '';
if($finaktiv == 0){ if($finaktiv == 0){
$subwhere .= ' AND b.aktiv = 1'; $subwhere .= ' AND b.aktiv = 1';
} }
$where = " b.id > 0".$subwhere; $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"; $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"; $count = "SELECT count(b.id) FROM bundesstaaten b WHERE $where";
break; break;
} }
$erg = []; $erg = [];
foreach($erlaubtevars as $k => $v) foreach($erlaubtevars as $k => $v)
{ {
if(isset($$v))$erg[$v] = $$v; if(isset($$v))$erg[$v] = $$v;
} }
return $erg; return $erg;
} }
function __construct($app, $intern = false) { function __construct($app, $intern = false) {
$this->app=$app; $this->app=$app;
if($intern)return; if($intern)return;
$this->app->ActionHandlerInit($this); $this->app->ActionHandlerInit($this);
// ab hier alle Action Handler definieren die das Modul hat // ab hier alle Action Handler definieren die das Modul hat
$this->app->ActionHandler("list", "BundesstaatenList"); $this->app->ActionHandler("list", "BundesstaatenList");
$this->app->ActionHandler("edit", "BundesstaatenEdit"); $this->app->ActionHandler("edit", "BundesstaatenEdit");
$this->app->ActionHandler("save", "BundesstaatenSave"); $this->app->ActionHandler("save", "BundesstaatenSave");
$this->app->ActionHandler("delete", "BundesstaatenDelete"); $this->app->ActionHandler("delete", "BundesstaatenDelete");
$this->app->ActionHandlerListen($app); $this->app->ActionHandlerListen($app);
$this->Install(); $this->Install();
} }
function Install(){ function Install(){
$this->app->erp->CheckTable("bundesstaaten"); $this->app->erp->CheckTable("bundesstaaten");
$this->app->erp->CheckColumn("id", "int(11)", "bundesstaaten", "NOT NULL AUTO_INCREMENT"); $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("land", "varchar(255)", "bundesstaaten", "NOT NULL");
$this->app->erp->CheckColumn("iso", "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("bundesstaat", "varchar(255)", "bundesstaaten", "NOT NULL");
$this->app->erp->CheckColumn("aktiv", "int(11)", "bundesstaaten", "NOT NULL DEFAULT 0"); $this->app->erp->CheckColumn("aktiv", "int(11)", "bundesstaaten", "NOT NULL DEFAULT 0");
} }
/** /**
* @param $target * @param $target
* @param $landid * @param $landid
* @param $bundeslandid * @param $bundeslandid
* @param string $valueland * @param string $valueland
* @param string $valuebundesland * @param string $valuebundesland
* @param bool $disabled * @param bool $disabled
*/ */
function BundeslaenderSelect($target, $landid, $bundeslandid, $valueland = '', $valuebundesland = '', $disabled = false) function BundeslaenderSelect($target, $landid, $bundeslandid, $valueland = '', $valuebundesland = '', $disabled = false)
{ {
if($valueland == '')$valueland = $this->app->erp->Firmendaten('land'); 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"); $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,'<select id="'.$bundeslandid.'" name="'.$bundeslandid.'"'.($disabled?' disabled="disabled" ':'').'><option value=""></option>'); $this->app->Tpl->Add($target,'<select id="'.$bundeslandid.'" name="'.$bundeslandid.'"'.($disabled?' disabled="disabled" ':'').'><option value=""></option>');
if($arr) if($arr)
{ {
foreach($arr as $i => $v) foreach($arr as $i => $v)
{ {
if($v['land'] == $valueland) if($v['land'] == $valueland)
{ {
$this->app->Tpl->Add($target,'<option value="'.$v['iso'].'"'.($v['iso'] == $valuebundesland?' selected="selected" ':'').'>'.htmlspecialchars($v['bundesstaat']).'</option>'); $this->app->Tpl->Add($target,'<option value="'.$v['iso'].'"'.($v['iso'] == $valuebundesland?' selected="selected" ':'').'>'.htmlspecialchars($v['bundesstaat']).'</option>');
} }
} }
} }
$this->app->Tpl->Add($target,'</select>'); $this->app->Tpl->Add($target,'</select>');
$this->app->Tpl->Add($target,'<script type="text/javascript">'); $this->app->Tpl->Add($target,'<script type="text/javascript">');
if($arr) if($arr)
{ {
$this->app->Tpl->Add($target,"\r\nvar bundeslaender$bundeslandid = new Array();\r\n"); $this->app->Tpl->Add($target,"\r\nvar bundeslaender$bundeslandid = new Array();\r\n");
$i = 0; $i = 0;
foreach($arr as $i => $v) foreach($arr as $i => $v)
{ {
$this->app->Tpl->Add($target,"\r\n bundeslaender$bundeslandid"."[".$i."] = new Object();\r\n"); $this->app->Tpl->Add($target,"\r\n bundeslaender$bundeslandid"."[".$i."] = new Object();\r\n");
$this->app->Tpl->Add($target,"\r\n bundeslaender$bundeslandid"."[".$i."].land = '".htmlspecialchars($v['land'])."';\r\n"); $this->app->Tpl->Add($target,"\r\n bundeslaender$bundeslandid"."[".$i."].land = '".htmlspecialchars($v['land'])."';\r\n");
$this->app->Tpl->Add($target,"\r\n bundeslaender$bundeslandid"."[".$i."].iso = '".htmlspecialchars($v['iso'])."';\r\n"); $this->app->Tpl->Add($target,"\r\n bundeslaender$bundeslandid"."[".$i."].iso = '".htmlspecialchars($v['iso'])."';\r\n");
$this->app->Tpl->Add($target,"\r\n bundeslaender$bundeslandid"."[".$i."].bundesstaat = '".htmlspecialchars($v['bundesstaat'])."';\r\n"); $this->app->Tpl->Add($target,"\r\n bundeslaender$bundeslandid"."[".$i."].bundesstaat = '".htmlspecialchars($v['bundesstaat'])."';\r\n");
$i++; $i++;
} }
} }
$this->app->Tpl->Add($target,' $this->app->Tpl->Add($target,'
$(document).ready(function() { $(document).ready(function() {
$(\'select[name="'.$landid.'"]\').on(\'change\', function(){ $(\'select[name="'.$landid.'"]\').on(\'change\', function(){
var landsel = $(this).val(); var landsel = $(this).val();
var bundeslandel = $(\'#'.$bundeslandid.'\'); var bundeslandel = $(\'#'.$bundeslandid.'\');
var bundeslandval = $(bundeslandel).val(); var bundeslandval = $(bundeslandel).val();
$(bundeslandel).html(\'<option value=""></option>\'); $(bundeslandel).html(\'<option value=""></option>\');
$(bundeslaender'.$bundeslandid.').each(function(k,v){ if (typeof bundeslaender'.$bundeslandid.' !== \'undefined\') {
if(landsel == v.land) $(bundeslaender'.$bundeslandid.').each(function(k,v){
{ if(landsel == v.land)
$(bundeslandel).html($(bundeslandel).html()+\'<option value="\'+v.iso+\'">\'+v.bundesstaat+\'</option>\'); {
} $(bundeslandel).html($(bundeslandel).html()+\'<option value="\'+v.iso+\'">\'+v.bundesstaat+\'</option>\');
}); }
$(bundeslaender'.$bundeslandid.').val(bundeslandval); });
}); $(bundeslaender'.$bundeslandid.').val(bundeslandval);
}); }
</script>'); });
} });
</script>');
function BundesstaatenMenu() }
{
function BundesstaatenMenu()
$this->app->erp->MenuEintrag("index.php?module=bundesstaaten&action=list","Zur&uuml;ck zur &Uuml;bersicht"); {
$this->app->erp->MenuEintrag("index.php?module=bundesstaaten&action=list","Details");
$this->app->erp->MenuEintrag("BundesstaatenEdit(0)","Neuer Eintrag"); $this->app->erp->MenuEintrag("index.php?module=bundesstaaten&action=list","Zur&uuml;ck zur &Uuml;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 * @param string $needle
* @return bool * @param $haystack
*/ * @param bool $strict
function in_array_r($needle, $haystack, $strict = false){ * @return bool
foreach($haystack as $item){ */
if(($strict ? $item === $needle : $item == $needle) || (is_array($item) && $this->in_array_r($needle, $item, $strict))){ function in_array_r($needle, $haystack, $strict = false){
return true; foreach($haystack as $item){
} if(($strict ? $item === $needle : $item == $needle) || (is_array($item) && $this->in_array_r($needle, $item, $strict))){
} return true;
}
return false; }
}
return false;
function BundesstaatenList() }
{
$this->BundesstaatenMenu(); function BundesstaatenList()
$this->app->Tpl->Set("KURZUEBERSCHRIFT","Bundesstaaten"); {
$this->BundesstaatenMenu();
$bundesstaatende = $this->app->erp->GetSelectStaatenliste('DE'); $this->app->Tpl->Set("KURZUEBERSCHRIFT","Bundesstaaten");
$bundesstaatendedb = $this->app->DB->SelectArr("SELECT bundesstaat, iso FROM bundesstaaten WHERE land = 'DE'");
$fehlende = array(); $bundesstaatende = $this->app->erp->GetSelectStaatenliste('DE');
foreach($bundesstaatende as $key=>$value){ $bundesstaatendedb = $this->app->DB->SelectArr("SELECT bundesstaat, iso FROM bundesstaaten WHERE land = 'DE'");
if($this->in_array_r($value,$bundesstaatendedb)){ $fehlende = array();
}else{ foreach($bundesstaatende as $key=>$value){
$fehlende[$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(); $bundesstaatenat = $this->app->erp->GetSelectStaatenliste('AT');
foreach($bundesstaatenat as $key=>$value){ $bundesstaatenatdb = $this->app->DB->SelectArr("SELECT bundesstaat, iso FROM bundesstaaten WHERE land = 'AT'");
if($this->in_array_r($value,$bundesstaatenatdb)){ $fehlenat = array();
}else{ foreach($bundesstaatenat as $key=>$value){
$fehlenat[$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(); $bundesstaatench = $this->app->erp->GetSelectStaatenliste('CH');
foreach($bundesstaatench as $key=>$value){ $bundesstaatenchdb = $this->app->DB->SelectArr("SELECT bundesstaat, iso FROM bundesstaaten WHERE land = 'CH'");
if($this->in_array_r($value,$bundesstaatenchdb)){ $fehlench = array();
}else{ foreach($bundesstaatench as $key=>$value){
$fehlench[$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(); $bundesstaatenus = $this->app->erp->GetSelectStaatenliste('US');
foreach($bundesstaatenus as $key=>$value){ $bundesstaatenusdb = $this->app->DB->SelectArr("SELECT bundesstaat, iso FROM bundesstaaten WHERE land = 'US'");
if($this->in_array_r($value,$bundesstaatenusdb)){ $fehlenus = array();
}else{ foreach($bundesstaatenus as $key=>$value){
$fehlenus[$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(); $bundesstaatenca = $this->app->erp->GetSelectStaatenliste('CA');
foreach($bundesstaatenca as $key=>$value){ $bundesstaatencadb = $this->app->DB->SelectArr("SELECT bundesstaat, iso FROM bundesstaaten WHERE land = 'CA'");
if($this->in_array_r($value,$bundesstaatencadb)){ $fehlenca = array();
}else{ foreach($bundesstaatenca as $key=>$value){
$fehlenca[$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); }
$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."; if($anzahlfehlen > 0){
}else{ if($anzahlfehlen == 1){
$info = "Es stehen ".$anzahlfehlen." neue Bundesstaaten Einträge in Xentral zur Verfügung."; $info = "Es steht ".$anzahlfehlen." neuer Bundesstaaten Eintrag in Xentral zur Verfügung.";
} }else{
$nachladebutton = "<input type='submit' name='nachladen' id='nachladen' value='Jetzt nachladen'>"; $info = "Es stehen ".$anzahlfehlen." neue Bundesstaaten Einträge in Xentral zur Verfügung.";
$info .= $nachladebutton; }
$this->app->Tpl->Set('MESSAGE',"<div class=\"info\">$info</div>"); $nachladebutton = "<input type='submit' name='nachladen' id='nachladen' value='Jetzt nachladen'>";
} $info .= $nachladebutton;
$this->app->Tpl->Set('MESSAGE',"<div class=\"info\">$info</div>");
$nachladen = $this->app->Secure->GetPOST("nachladen"); }
if($nachladen != ""){
if((!empty($fehlende)?count($fehlende):0) > 0){ $nachladen = $this->app->Secure->GetPOST("nachladen");
foreach($fehlende as $key=>$value){ if($nachladen != ""){
$this->app->DB->Insert("INSERT INTO bundesstaaten (land, iso, bundesstaat, aktiv) VALUES ('DE', '$key', '$value', 1)"); 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($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($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($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)"); 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;
} header("Location:index.php?module=bundesstaaten&action=list");
exit;
$laenderanzahl = $this->app->DB->Select("SELECT COUNT(id) FROM laender"); }
//if($laenderanzahl <= 0){
$select = ''; $laenderanzahl = $this->app->DB->Select("SELECT COUNT(id) FROM laender");
$laender = $this->app->erp->GetSelectLaenderliste(); //if($laenderanzahl <= 0){
foreach($laender as $key=>$value){ $select = '';
if(trim($key) != "" && trim($key) != "0"){ $laender = $this->app->erp->GetSelectLaenderliste();
$select .= "<option value='".$key."'>".htmlspecialchars($value)."</option>"; foreach($laender as $key=>$value){
} if(trim($key) != "" && trim($key) != "0"){
$select .= "<option value='".$key."'>".htmlspecialchars($value)."</option>";
} }
//}else{
//$laender = $this->app->DB->SelectArr("SELECT iso, bezeichnung_de FROM laender"); }
//foreach($laender as $key=>$value){ //}else{
//$select .= "<option value='".$value['iso']."'>".$value['bezeichnung_de']."</option>"; //$laender = $this->app->DB->SelectArr("SELECT iso, bezeichnung_de FROM laender");
//} //foreach($laender as $key=>$value){
//$select .= "<option value='".$value['iso']."'>".$value['bezeichnung_de']."</option>";
$this->app->Tpl->Add("LAENDER", $select); //}
//}
$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");
} $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'){ function BundesstaatenEdit()
$id = (int)$this->app->Secure->GetPOST('id'); {
if($this->app->Secure->GetGET('cmd')=='get'){
$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"); $id = (int)$this->app->Secure->GetPOST('id');
if($data){ $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");
$data = reset($data);
if($data){
}else{ $data = reset($data);
$data['id'] = 0;
$data['land'] = ''; }else{
$data['iso'] = ''; $data['id'] = 0;
$data['bundesstaat'] = ''; $data['land'] = '';
$data['aktiv'] = 1; $data['iso'] = '';
$data['bundesstaat'] = '';
} $data['aktiv'] = 1;
echo json_encode($data);
exit; }
} echo json_encode($data);
exit;
$this->app->Tpl->Parse('PAGE', "bundesstaaten_list.tpl"); }
}
$this->app->Tpl->Parse('PAGE', "bundesstaaten_list.tpl");
function BundesstaatenSave() }
{
$id = (int)$this->app->Secure->GetPOST('id'); function BundesstaatenSave()
$land = trim($this->app->Secure->GetPOST('land')); {
$iso = trim($this->app->Secure->GetPOST('iso')); $id = (int)$this->app->Secure->GetPOST('id');
$bundesstaat = trim($this->app->Secure->GetPOST('bundesstaat')); $land = trim($this->app->Secure->GetPOST('land'));
$aktiv = $this->app->Secure->GetPOST('aktiv'); $iso = trim($this->app->Secure->GetPOST('iso'));
$bundesstaat = trim($this->app->Secure->GetPOST('bundesstaat'));
$error = ""; $aktiv = $this->app->Secure->GetPOST('aktiv');
if($land == ""){ $error = "";
$error .= "Bitte Land ausfüllen\n";
} if($land == ""){
$error .= "Bitte Land ausfüllen\n";
if($iso == ""){ }
$error .= "Bitte ISO-Code 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(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($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 != ""){ if($land != "" && $bundesstaat != ""){
$error .= "Es gibt diesen ISO-Code bereits für dieses Land"."\n"; $isovorhanden = $this->app->DB->Select("SELECT id FROM bundesstaaten WHERE land = '$land' AND iso = '$iso' AND id != '$id' LIMIT 1");
}else{ if($isovorhanden != ""){
$schonvorhanden = $this->app->DB->Select("SELECT id FROM bundesstaaten WHERE land = '$land' AND iso = '$iso' AND bundesstaat = '$bundesstaat' AND id != '$id' LIMIT 1"); $error .= "Es gibt diesen ISO-Code bereits für dieses Land"."\n";
if($schonvorhanden != ""){ }else{
$error .= "Diesen Eintrag gibt es bereits"."\n"; $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'"); if($error == ""){
if($id){
echo json_encode(array('status'=>1)); $this->app->DB->Update("UPDATE bundesstaaten SET land = '$land', iso = '$iso', bundesstaat = '$bundesstaat', aktiv = '$aktiv' WHERE id = '$id'");
exit;
}else{ echo json_encode(array('status'=>1));
$this->app->DB->Insert("INSERT INTO bundesstaaten (land, iso, bundesstaat, aktiv) VALUES ('$land', '$iso', '$bundesstaat', '$aktiv')"); exit;
}else{
echo json_encode(array('status'=>1)); $this->app->DB->Insert("INSERT INTO bundesstaaten (land, iso, bundesstaat, aktiv) VALUES ('$land', '$iso', '$bundesstaat', '$aktiv')");
exit;
echo json_encode(array('status'=>1));
} exit;
}else{
echo json_encode(array('status'=>0,'statusText'=>$error)); }
exit; }else{
echo json_encode(array('status'=>0,'statusText'=>$error));
} exit;
} }
function BundesstaatenDelete() }
{
$id = (int) $this->app->Secure->GetPOST('id'); function BundesstaatenDelete()
if($id) {
$this->app->DB->Update("DELETE FROM bundesstaaten WHERE id = '$id'"); $id = (int) $this->app->Secure->GetPOST('id');
if($id)
echo json_encode(array('status'=>1)); $this->app->DB->Update("DELETE FROM bundesstaaten WHERE id = '$id'");
exit;
echo json_encode(array('status'=>1));
} exit;
} }
}

View File

@ -61,7 +61,11 @@
</select> </select>
</td> </td>
</tr> </tr>
</table> <tr>
<td>{|PDF-Dateien exportieren:|}</td>
<td><input type="checkbox" name="pdfexport" value="1" [PDFEXPORT] /></td>
</tr>
</table>
</fieldset> </fieldset>
</div> </div>
</div> </div>

View File

@ -22,6 +22,7 @@
<legend>{|Land|}</legend> <legend>{|Land|}</legend>
<table width="100%" border="0" class="mkTableFormular"> <table width="100%" border="0" class="mkTableFormular">
<tr><td>Zweistelliger ISO Code:</td><td><input type="text" name="iso" value="[ISO]" size="40"></td></tr> <tr><td>Zweistelliger ISO Code:</td><td><input type="text" name="iso" value="[ISO]" size="40"></td></tr>
<tr><td>Dreistelliger ISO Code:</td><td><input type="text" name="iso3" value="[ISO3]" size="40"></td></tr>
<tr><td>Bezeichnung Deutsch:</td><td><input type="text" name="bezeichnung_de" value="[BEZEICHNUNG_DE]" size="40"></td></tr> <tr><td>Bezeichnung Deutsch:</td><td><input type="text" name="bezeichnung_de" value="[BEZEICHNUNG_DE]" size="40"></td></tr>
<tr><td>Bezeichnung Englisch:</td><td><input type="text" name="bezeichnung_en" value="[BEZEICHNUNG_EN]" size="40"></td></tr> <tr><td>Bezeichnung Englisch:</td><td><input type="text" name="bezeichnung_en" value="[BEZEICHNUNG_EN]" size="40"></td></tr>
<tr><td>EU:</td><td><input type="checkbox" name="eu" value="1" [EU]></td></tr> <tr><td>EU:</td><td><input type="checkbox" name="eu" value="1" [EU]></td></tr>

View File

@ -75,7 +75,9 @@
[MANUELLFREIGABEEINKAUF] [MANUELLFREIGABEEINKAUF]
[MANUELLFREIGABEBUCHHALTUNG] [MANUELLFREIGABEBUCHHALTUNG]
[ALSBEZAHLTMARKIEREN] [ALSBEZAHLTMARKIEREN]
<option value="drucken">{|drucken|}</option>
</select> </select>
&nbsp;{|Drucker|}: <select name="seldrucker">[SELDRUCKER]</select>&nbsp;
<button name="submit" value="ausfuehren" class="ui-button-icon">{|Ausf&uuml;hren|}</button> <button name="submit" value="ausfuehren" class="ui-button-icon">{|Ausf&uuml;hren|}</button>
</fieldset> </fieldset>
</form> </form>

View File

@ -75,8 +75,10 @@
[MANUELLFREIGABEEINKAUF] [MANUELLFREIGABEEINKAUF]
[MANUELLFREIGABEBUCHHALTUNG] [MANUELLFREIGABEBUCHHALTUNG]
[ALSBEZAHLTMARKIEREN] [ALSBEZAHLTMARKIEREN]
<option value="drucken">{|drucken|}</option>
</select> </select>
<button name="submit" value="ausfuehren" class="ui-button-icon">{|Ausf&uuml;hren|}</button> &nbsp;{|Drucker|}: <select name="seldrucker">[SELDRUCKER]</select>&nbsp;
<button name="submit" value="ausfuehren" class="ui-button-icon">{|Ausf&uuml;hren|}</button>
</fieldset> </fieldset>
</form> </form>
[TAB1NEXT] [TAB1NEXT]

View File

@ -1,13 +1,13 @@
<?php <?php
/* /*
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE **** **** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
* *
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019 * Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
* *
* This file is licensed under the Embedded Projects General Public License *Version 3.1. * This file is licensed under the Embedded Projects General Public License *Version 3.1.
* *
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis * You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
* to obtain the text of the corresponding license version. * to obtain the text of the corresponding license version.
* *
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE **** **** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
*/ */
@ -21,13 +21,13 @@
class ConsistencyException extends Exception { class ConsistencyException extends Exception {
/* /*
contains the result data as array(string 'belegnr', float 'betrag_gesamt', float 'betrag_summe')) contains the result data as array(string 'belegnr', float 'betrag_gesamt', float 'betrag_summe'))
*/ */
private $_data = array(); private $_data = array();
public function __construct($message, $data) public function __construct($message, $data)
{ {
$this->_data = $data; $this->_data = $data;
parent::__construct($message); parent::__construct($message);
@ -46,6 +46,91 @@ class Exportbuchhaltung
var $belegnummer; var $belegnummer;
var $headerwritten = false; 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. * Exportbelegepositionen constructor.
* *
@ -57,12 +142,12 @@ class Exportbuchhaltung
$this->app = $app; $this->app = $app;
if ($intern == true) { if ($intern == true) {
return; return;
} }
$this->app->ActionHandlerInit($this); $this->app->ActionHandlerInit($this);
$this->app->ActionHandler("export", "ExportBuchhaltungList"); $this->app->ActionHandler("export", "ExportBuchhaltungList");
$this->app->ActionHandlerListen($app); $this->app->ActionHandlerListen($app);
$this->app->erp->Headlines('Buchhaltung Export DATEV'); $this->app->erp->Headlines('Buchhaltung Export DATEV');
} }
function ExportBuchhaltungList() { function ExportBuchhaltungList() {
@ -70,7 +155,7 @@ class Exportbuchhaltung
$von_form = $this->app->Secure->GetPOST("von"); $von_form = $this->app->Secure->GetPOST("von");
$bis_form = $this->app->Secure->GetPOST("bis"); $bis_form = $this->app->Secure->GetPOST("bis");
$von = date_create($this->app->erp->ReplaceDatum(true, $von_form, true)); $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"); $projektkuerzel = $this->app->Secure->GetPOST("projekt");
$projekt = $this->app->erp->ReplaceProjekt(true, $projektkuerzel, true); $projekt = $this->app->erp->ReplaceProjekt(true, $projektkuerzel, true);
@ -81,12 +166,13 @@ class Exportbuchhaltung
$diffignore = $this->app->Secure->GetPOST("diffignore"); $diffignore = $this->app->Secure->GetPOST("diffignore");
$sachkonto = $this->app->Secure->GetPOST('sachkonto'); $sachkonto = $this->app->Secure->GetPOST('sachkonto');
$format = $this->app->Secure->GetPOST('format'); $format = $this->app->Secure->GetPOST('format');
$pdfexport = $this->app->Secure->GetPOST("pdfexport");
$account_id = null; $account_id = null;
if (!empty($sachkonto)) { if (!empty($sachkonto)) {
$sachkonto_kennung = explode(' ',$sachkonto)[0]; $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 = ""; $msg = "";
@ -101,13 +187,13 @@ class Exportbuchhaltung
$vbchecked = true; $vbchecked = true;
$lgchecked = true; $lgchecked = true;
} }
$missing_obligatory = array(); $missing_obligatory = array();
$buchhaltung_berater = $this->app->erp->Firmendaten('buchhaltung_berater'); $buchhaltung_berater = $this->app->erp->Firmendaten('buchhaltung_berater');
$buchhaltung_mandant = $this->app->erp->Firmendaten('buchhaltung_mandant'); $buchhaltung_mandant = $this->app->erp->Firmendaten('buchhaltung_mandant');
$buchhaltung_wj_beginn = $this->app->erp->Firmendaten('buchhaltung_wj_beginn'); $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'); $buchhaltung_berater = $this->app->erp->Firmendaten('buchhaltung_berater');
if (empty($buchhaltung_berater)) { if (empty($buchhaltung_berater)) {
@ -124,15 +210,15 @@ class Exportbuchhaltung
$buchhaltung_sachkontenlaenge = $this->app->erp->Firmendaten('buchhaltung_sachkontenlaenge'); $buchhaltung_sachkontenlaenge = $this->app->erp->Firmendaten('buchhaltung_sachkontenlaenge');
if (empty($buchhaltung_sachkontenlaenge)) { if (empty($buchhaltung_sachkontenlaenge)) {
$missing_obligatory[] = "Sachkontenl&auml;nge"; $missing_obligatory[] = "Sachkontenl&auml;nge";
} }
if (!empty($missing_obligatory)) { if (!empty($missing_obligatory)) {
$msg = "<div class=warning>Angaben in den Grundeinstellungen fehlen: ".implode(", ",$missing_obligatory).".</div>"; $msg = "<div class=warning>Angaben in den Grundeinstellungen fehlen: ".implode(", ",$missing_obligatory).".</div>";
} }
//---------- DOWNLOAD HERE //---------- DOWNLOAD HERE
if ($submit == 'Download') { if ($submit == 'Download') {
$dataok = true; $dataok = true;
if ( if (
!$rgchecked && !$rgchecked &&
@ -148,7 +234,7 @@ class Exportbuchhaltung
$von_next_year = $von_next_year->modify("+1 year");; $von_next_year = $von_next_year->modify("+1 year");;
$buchhaltung_wj_beginn = date_create(date_format($von,'Y').$buchhaltung_wj_beginn); $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"); $buchhaltung_wj_beginn = $buchhaltung_wj_beginn->modify("-1 year");
} }
@ -161,20 +247,100 @@ class Exportbuchhaltung
} }
if ($dataok) { if ($dataok) {
$filename = "EXTF_".date('Ymd') . "_Buchungsstapel_DATEV_export.csv"; $filename_csv = "EXTF_".date('Ymd') . "_Buchungsstapel_DATEV_export.csv";
try { 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, $format); $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);
header("Content-Disposition: attachment; filename=" . $filename); if ($pdfexport) {
header("Pragma: no-cache");
header("Expires: 0"); $dateinamezip = 'Export_Buchhaltung_'.date('Y-m-d').'.zip';
echo($csv);
$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(); $this->app->ExitXentral();
} }
catch (ConsistencyException $e) { catch (ConsistencyException $e) {
$msg = "<div class=error>Inkonsistente Daten (".$e->getMessage()."): <br>"; $msg = "<div class=error>Inkonsistente Daten (".$e->getMessage()."): <br>";
$data = $e->getData(); $data = $e->getData();
$count = 0; $count = 0;
foreach($data as $item) { 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).")<br>"; $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).")<br>";
@ -187,7 +353,7 @@ class Exportbuchhaltung
$msg .= "</div>"; $msg .= "</div>";
} }
} }
} }
//---------- DOWNLOAD HERE //---------- DOWNLOAD HERE
$this->app->erp->MenuEintrag("index.php?module=exportbuchhaltung&action=export", "&Uuml;bersicht"); $this->app->erp->MenuEintrag("index.php?module=exportbuchhaltung&action=export", "&Uuml;bersicht");
@ -204,21 +370,22 @@ class Exportbuchhaltung
$this->app->Tpl->SET('VBCHECKED',$vbchecked?'checked':''); $this->app->Tpl->SET('VBCHECKED',$vbchecked?'checked':'');
$this->app->Tpl->SET('LGCHECKED',$lgchecked?'checked':''); $this->app->Tpl->SET('LGCHECKED',$lgchecked?'checked':'');
$this->app->Tpl->SET('DIFFIGNORE',$diffignore?'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"); $this->app->Tpl->Parse('PAGE', "exportbuchhaltung_export.tpl");
} }
/* /*
* Create DATEV Buchhungsstapel * Create DATEV Buchhungsstapel
* format: "ISO-8859-1", "UTF-8", "UTF-8-BOM" * 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 * @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 { 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 ( $datev_header_definition = array (
'1' => 'Kennzeichen', '1' => 'Kennzeichen',
@ -254,7 +421,7 @@ class Exportbuchhaltung
'31' => 'Anwendungs- information' '31' => 'Anwendungs- information'
); );
$datev_buchungsstapel_definition = array ( $datev_buchungsstapel_definition = array (
'1' => 'Umsatz', '1' => 'Umsatz',
'2' => 'Soll-/Haben-Kennzeichen', '2' => 'Soll-/Haben-Kennzeichen',
'3' => 'WKZ Umsatz', '3' => 'WKZ Umsatz',
@ -387,7 +554,7 @@ class Exportbuchhaltung
} }
else { else {
$kuerzel = $usernamearr[0][0].$usernamearr[1][0]; $kuerzel = $usernamearr[0][0].$usernamearr[1][0];
} }
$data['Kennzeichen'] = 'EXTF'; $data['Kennzeichen'] = 'EXTF';
$data['Versionsnummer'] = '700'; $data['Versionsnummer'] = '700';
@ -424,12 +591,12 @@ class Exportbuchhaltung
// Start // Start
$csv = ""; $csv = "";
// Output data header row // Output data header row
$comma = ""; $comma = "";
foreach ($datev_header_definition as $key => $value) { foreach ($datev_header_definition as $key => $value) {
if (!isset($data[$value])) { if (!isset($data[$value])) {
$data[$value] = ''; $data[$value] = '';
} }
$csv .= $comma.'"'.$data[$value].'"'; $csv .= $comma.'"'.$data[$value].'"';
$comma = ";"; $comma = ";";
} }
@ -438,104 +605,27 @@ class Exportbuchhaltung
// Output column captions // Output column captions
$comma = ""; $comma = "";
foreach ($datev_buchungsstapel_definition as $key => $value) { foreach ($datev_buchungsstapel_definition as $key => $value) {
$csv .= $comma.'"'.$value.'"'; $csv .= $comma.'"'.$value.'"';
$comma = ";"; $comma = ";";
} }
$csv .= "\r\n"; $csv .= "\r\n";
// Collate data and transform in RAM // Collate data and transform in RAM
$typen = array( $typen = $this->typen($rechnung, $gutschrift, $verbindlichkeit, $lieferantengutschrift);
array( foreach ($typen as $typ) {
'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) {
if (!$typ['do']) { if (!$typ['do']) {
continue; continue;
} }
if (!empty($typ['field_gegenkonto'])) { if (!empty($typ['field_gegenkonto'])) {
$sql_gegenkonto = $typ['field_gegenkonto']; $sql_gegenkonto = $typ['field_gegenkonto'];
} else } else
{ {
$sql_gegenkonto = "NULL"; $sql_gegenkonto = "NULL";
} }
$sql = "SELECT $sql = "SELECT
".$typ['typ']." id, ".$typ['typ']." id,
".$typ['field_belegnr']." as belegnr, ".$typ['field_belegnr']." as belegnr,
".$typ['field_auftrag']." as auftrag, ".$typ['field_auftrag']." as auftrag,
@ -550,18 +640,18 @@ class Exportbuchhaltung
ROUND(".$typ['field_betrag'].",2) as betrag, ROUND(".$typ['field_betrag'].",2) as betrag,
".$sql_gegenkonto." as gegenkonto, ".$sql_gegenkonto." as gegenkonto,
b.waehrung as pos_waehrung b.waehrung as pos_waehrung
FROM FROM
".$typ['typ']." b ".$typ['typ']." b
LEFT JOIN LEFT JOIN
".$typ['subtable']." p ".$typ['subtable']." p
ON ON
b.id = p.".$typ['typ']." b.id = p.".$typ['typ']."
INNER JOIN INNER JOIN
adresse a ON a.id = b.adresse adresse a ON a.id = b.adresse
WHERE 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']; 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) { if (!$diffignore) {
$sql_check = "SELECT * $sql_check = "SELECT *
FROM FROM
@ -581,52 +671,52 @@ class Exportbuchhaltung
GROUP BY GROUP BY
id id
) summen ) 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); $result = $this->app->DB->SelectArr($sql_check);
if (!empty($result)) { if (!empty($result)) {
if (!$sachkonto_differences) { if (!$sachkonto_differences) {
$e = new ConsistencyException(ucfirst($typ['typ']),$result); $e = new ConsistencyException(ucfirst($typ['typ']),$result);
throw $e; throw $e;
} else { } else {
// Create differences entries // Create differences entries
foreach ($result as $row) { foreach ($result as $row) {
$posid = $row['pos_id']; $posid = $row['pos_id'];
$tmpsteuersatz = 0; $tmpsteuersatz = 0;
$tmpsteuertext = ''; $tmpsteuertext = '';
$erloes = ''; $erloes = '';
$result = array(); $result = array();
$this->app->erp->GetSteuerPosition($typ['typ'], $posid, $tmpsteuersatz, $tmpsteuertext, $erloes); $this->app->erp->GetSteuerPosition($typ['typ'], $posid, $tmpsteuersatz, $tmpsteuertext, $erloes);
$data = array(); $data = array();
$difference = $row['betrag_gesamt']-$row['betrag_summe']; $difference = $row['betrag_gesamt']-$row['betrag_summe'];
$data['Umsatz'] = number_format(abs($difference), 2, ',', ''); // obligatory $data['Umsatz'] = number_format(abs($difference), 2, ',', ''); // obligatory
$data['EU-Steuersatz (Bestimmung)'] = 0; $data['EU-Steuersatz (Bestimmung)'] = 0;
$data['WKZ Umsatz'] = $row['waehrung']; $data['WKZ Umsatz'] = $row['waehrung'];
$data['Belegfeld 1'] = mb_strimwidth($row['belegnr'],0,36); $data['Belegfeld 1'] = mb_strimwidth($row['belegnr'],0,36);
$data['Konto'] = $row['kundennummer']; $data['Konto'] = $row['kundennummer'];
$data['Soll-/Haben-Kennzeichen'] = ($difference < 0)?'S':'H'; // obligatory $data['Soll-/Haben-Kennzeichen'] = ($difference < 0)?'S':'H'; // obligatory
$data['Gegenkonto (ohne BU-Schlüssel)'] = $sachkonto_differences; // obligatory $data['Gegenkonto (ohne BU-Schlüssel)'] = $sachkonto_differences; // obligatory
$data['Belegdatum'] = date_format(date_create($row['datum']),"dm"); // obligatory $data['Belegdatum'] = date_format(date_create($row['datum']),"dm"); // obligatory
$data['Buchungstext'] = "Differenz"; $data['Buchungstext'] = "Differenz";
$data['EU-Mitgliedstaat u. UStID (Bestimmung)'] = $row['ustid']; $data['EU-Mitgliedstaat u. UStID (Bestimmung)'] = $row['ustid'];
$data['Auftragsnummer'] = $row['auftrag']; $data['Auftragsnummer'] = $row['auftrag'];
$data['Zahlweise'] = $row['zahlweise']; $data['Zahlweise'] = $row['zahlweise'];
$csv .= $this->create_line($datev_buchungsstapel_definition,$data); $csv .= $this->create_line($datev_buchungsstapel_definition,$data);
} }
} }
} }
} // diffignore } // diffignore
// Query position data // Query position data
$arr = $this->app->DB->Query($sql); $arr = $this->app->DB->Query($sql);
while ($row = $this->app->DB->Fetch_Assoc($arr)) { while ($row = $this->app->DB->Fetch_Assoc($arr)) {
//print_r($row); //print_r($row);
@ -635,7 +725,7 @@ class Exportbuchhaltung
$tmpsteuertext = ''; $tmpsteuertext = '';
$erloes = ''; $erloes = '';
$result = array(); $result = array();
$this->app->erp->GetSteuerPosition($typ['typ'], $posid, $tmpsteuersatz, $tmpsteuertext, $erloes); $this->app->erp->GetSteuerPosition($typ['typ'], $posid, $tmpsteuersatz, $tmpsteuertext, $erloes);
$data = array(); $data = array();
@ -644,7 +734,7 @@ class Exportbuchhaltung
$data['Soll-/Haben-Kennzeichen'] = $typ['kennzeichen']; // obligatory $data['Soll-/Haben-Kennzeichen'] = $typ['kennzeichen']; // obligatory
} else if ($row['betrag'] < 0) { } else if ($row['betrag'] < 0) {
$data['Umsatz'] = number_format(-$row['betrag'], 2, ',', ''); // obligatory $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 { } else {
continue; continue;
} }
@ -653,23 +743,23 @@ class Exportbuchhaltung
$data['WKZ Umsatz'] = $row['pos_waehrung']; $data['WKZ Umsatz'] = $row['pos_waehrung'];
$data['Belegfeld 1'] = mb_strimwidth($row['belegnr'],0,36); $data['Belegfeld 1'] = mb_strimwidth($row['belegnr'],0,36);
$data['Konto'] = $row['kundennummer']; // obligatory $data['Konto'] = $row['kundennummer']; // obligatory
if (!empty($typ['field_gegenkonto'])) { if (!empty($typ['field_gegenkonto'])) {
$data['Gegenkonto (ohne BU-Schlüssel)'] = $row['gegenkonto']; // obligatory $data['Gegenkonto (ohne BU-Schlüssel)'] = $row['gegenkonto']; // obligatory
} else { } else {
$data['Gegenkonto (ohne BU-Schlüssel)'] = $erloes; // obligatory $data['Gegenkonto (ohne BU-Schlüssel)'] = $erloes; // obligatory
} }
$data['Belegdatum'] = date_format(date_create($row['datum']),"dm"); // obligatory $data['Belegdatum'] = date_format(date_create($row['datum']),"dm"); // obligatory
$data['Buchungstext'] = mb_strimwidth($row['name'],0,60); $data['Buchungstext'] = mb_strimwidth($row['name'],0,60);
$data['EU-Mitgliedstaat u. UStID (Bestimmung)'] = $row['ustid']; $data['EU-Mitgliedstaat u. UStID (Bestimmung)'] = $row['ustid'];
$data['Auftragsnummer'] = ($row['auftrag']!=0)?$row['auftrag']:''; $data['Auftragsnummer'] = ($row['auftrag']!=0)?$row['auftrag']:'';
$data['Zahlweise'] = $row['zahlweise']; $data['Zahlweise'] = $row['zahlweise'];
$csv .= $this->create_line($datev_buchungsstapel_definition,$data); $csv .= $this->create_line($datev_buchungsstapel_definition,$data);
} }
} }
$csv .= '"0";"S";"EUR";"0";"";"";"1234";"1370";"";"101";"";"";"";"Testbuchung";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"0";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";""'; // Testbuchung $csv .= '"0";"S";"EUR";"0";"";"";"1234";"1370";"";"101";"";"";"";"Testbuchung";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"0";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";""'; // Testbuchung
@ -685,22 +775,22 @@ class Exportbuchhaltung
} }
return($csv); return($csv);
} }
function create_line($definition, $data) : string { function create_line($definition, $data) : string {
$csv = ""; $csv = "";
$comma = ""; $comma = "";
foreach ($definition as $key => $value) { foreach ($definition as $key => $value) {
if (!isset($data[$value])) { if (!isset($data[$value])) {
$data[$value] = ''; $data[$value] = '';
} }
$csv .= $comma.'"'.$data[$value].'"'; $csv .= $comma.'"'.$data[$value].'"';
$comma = ";"; $comma = ";";
} }
$csv .= "\r\n"; $csv .= "\r\n";
return($csv); return($csv);
} }
} }
/* /*

View File

@ -4067,6 +4067,25 @@ class Importvorlage extends GenImportvorlage {
} }
} // Sprachen } // 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 //freifelduebersetzungen
foreach ($tmp as $feldname => $feldwerte) { foreach ($tmp as $feldname => $feldwerte) {
if(strpos($feldname,'freifeld') !== false && strpos($feldname,'_')>0){ if(strpos($feldname,'freifeld') !== false && strpos($feldname,'_')>0){

View File

@ -1,215 +1,219 @@
<?php <?php
/* /*
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE **** **** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
* *
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019 * Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
* *
* This file is licensed under the Embedded Projects General Public License *Version 3.1. * This file is licensed under the Embedded Projects General Public License *Version 3.1.
* *
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis * You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
* to obtain the text of the corresponding license version. * to obtain the text of the corresponding license version.
* *
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE **** **** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
*/ */
?> ?>
<?php <?php
class Laender { class Laender {
var $app; var $app;
static function TableSearch(&$app, $name, $erlaubtevars) static function TableSearch(&$app, $name, $erlaubtevars)
{ {
// in dieses switch alle lokalen Tabellen (diese Live Tabellen mit Suche etc.) für dieses Modul // in dieses switch alle lokalen Tabellen (diese Live Tabellen mit Suche etc.) für dieses Modul
switch($name) switch($name)
{ {
case "laender_list": case "laender_list":
$allowed['laender'] = array('list'); $allowed['laender'] = array('list');
$heading = array('ISO', 'Bezeichnung DE', 'Bezeichnung EN','EU', 'Men&uuml;'); $heading = array('ISO', 'ISO3','Bezeichnung DE', 'Bezeichnung EN','EU', 'Men&uuml;');
$width = array('9%', '40%', '40%','10%','1%'); $width = array('9%', '9%','40%', '40%','10%','1%');
$findcols = array('l.iso', 'l.bezeichnung_de', 'l.bezeichnung_en', "if(l.eu,'EU','')", 'l.id'); $findcols = array('l.iso', 'l.iso3', 'l.bezeichnung_de', 'l.bezeichnung_en', "if(l.eu,'EU','')", 'l.id');
$searchsql = array('l.iso', 'l.bezeichnung_de', 'l.bezeichnung_en'); $searchsql = array('l.iso','l.iso3', 'l.bezeichnung_de', 'l.bezeichnung_en');
$defaultorder = 1; $defaultorder = 1;
$defaultorderdesc = 0; $defaultorderdesc = 0;
$menu = "<a href=\"index.php?module=laender&action=edit&id=%value%\"><img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a>&nbsp;<a href=\"#\" onclick=DeleteDialog(\"index.php?module=laender&action=delete&id=%value%\")><img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"></a>"; $menu = "<a href=\"index.php?module=laender&action=edit&id=%value%\"><img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a>&nbsp;<a href=\"#\" onclick=DeleteDialog(\"index.php?module=laender&action=delete&id=%value%\")><img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"></a>";
$where = " l.id > 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"; $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"; $count = "SELECT count(l.id) FROM laender l WHERE $where";
break; break;
} }
$erg = false; $erg = false;
foreach($erlaubtevars as $k => $v) foreach($erlaubtevars as $k => $v)
{ {
if(isset($$v))$erg[$v] = $$v; if(isset($$v))$erg[$v] = $$v;
} }
return $erg; return $erg;
} }
function __construct($app, $intern = false) { function __construct($app, $intern = false) {
$this->app=$app; $this->app=$app;
if($intern)return; if($intern)return;
$this->app->ActionHandlerInit($this); $this->app->ActionHandlerInit($this);
// ab hier alle Action Handler definieren die das Modul hat // ab hier alle Action Handler definieren die das Modul hat
$this->app->ActionHandler("list", "LaenderList"); $this->app->ActionHandler("list", "LaenderList");
$this->app->ActionHandler("create", "LaenderCreate"); $this->app->ActionHandler("create", "LaenderCreate");
$this->app->ActionHandler("edit", "LaenderEdit"); $this->app->ActionHandler("edit", "LaenderEdit");
$this->app->ActionHandler("delete", "LaenderDelete"); $this->app->ActionHandler("delete", "LaenderDelete");
$this->app->ActionHandler('test', 'LaenderTest'); $this->app->ActionHandler('test', 'LaenderTest');
$this->app->ActionHandlerListen($app); $this->app->ActionHandlerListen($app);
} }
function LaenderTest(){ function LaenderTest(){
$countryModule = $this->app->Container->get('CountryMigrationService'); $countryModule = $this->app->Container->get('CountryMigrationService');
if($countryModule->needsMigration()){ if($countryModule->needsMigration()){
$countryModule->doMigration(); $countryModule->doMigration();
} }
} }
function LaenderMenu() function LaenderMenu()
{ {
$this->app->erp->MenuEintrag("index.php?module=laender&action=list","Zur&uuml;ck zur &Uuml;bersicht"); $this->app->erp->MenuEintrag("index.php?module=laender&action=list","Zur&uuml;ck zur &Uuml;bersicht");
} }
function LaenderList() function LaenderList()
{ {
$this->app->erp->MenuEintrag("index.php?module=laender&action=create","Neues Land"); $this->app->erp->MenuEintrag("index.php?module=laender&action=create","Neues Land");
$this->app->erp->MenuEintrag("index.php?module=laender&action=list","&Uuml;bersicht"); $this->app->erp->MenuEintrag("index.php?module=laender&action=list","&Uuml;bersicht");
$this->app->YUI->TableSearch('TAB1','laender_list', "show","","",basename(__FILE__), __CLASS__); $this->app->YUI->TableSearch('TAB1','laender_list', "show","","",basename(__FILE__), __CLASS__);
$this->app->Tpl->Parse("PAGE","laender_list.tpl"); $this->app->Tpl->Parse("PAGE","laender_list.tpl");
} }
function LaenderEdit() function LaenderEdit()
{ {
$id = (int)$this->app->Secure->GetGET('id'); $id = (int)$this->app->Secure->GetGET('id');
$submit = $this->app->Secure->GetPOST('submitland'); $submit = $this->app->Secure->GetPOST('submitland');
$this->app->Tpl->Add('KURZUEBERSCHRIFT2',$bezeichnung_de); $this->app->Tpl->Add('KURZUEBERSCHRIFT2',$bezeichnung_de);
$input = array(); $input = array();
$this->app->erp->MenuEintrag("index.php?module=laender&action=edit&id=$id","Details"); $this->app->erp->MenuEintrag("index.php?module=laender&action=edit&id=$id","Details");
$this->app->erp->MenuEintrag("index.php?module=laender&action=list","Zur&uuml;ck zur &Uuml;bersicht"); $this->app->erp->MenuEintrag("index.php?module=laender&action=list","Zur&uuml;ck zur &Uuml;bersicht");
$input = $this->GetInput(); $input = $this->GetInput();
if(is_numeric($id) && $submit!=''){ if(is_numeric($id) && $submit!=''){
$error = ''; $error = '';
if($input['iso']=='' || strlen(trim($input['iso'])) > 2) $error .= 'Geben Sie bitte einen zweistelligen ISO-Code ein.<br>'; if($input['iso']=='' || strlen(trim($input['iso'])) > 2) $error .= 'Geben Sie bitte einen zweistelligen ISO-Code ein.<br>';
if($input['bezeichnung_de'] == '') $error .= 'Geben Sie bitte eine deutsche L&auml;nderbezeichnung ein.<br>'; if($input['bezeichnung_de'] == '') $error .= 'Geben Sie bitte eine deutsche L&auml;nderbezeichnung ein.<br>';
if($input['bezeichnung_en'] =='') $error .= 'Geben Sie bitte eine englische L&auml;nderbezeichnung ein.<br>'; if($input['bezeichnung_en'] =='') $error .= 'Geben Sie bitte eine englische L&auml;nderbezeichnung ein.<br>';
if($error!=''){ if($error!=''){
$this->app->Tpl->Set('MESSAGE', "<div class=\"error\">$error</div>"); $this->app->Tpl->Set('MESSAGE', "<div class=\"error\">$error</div>");
}else{ }else{
if($error == ""){ 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"); $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){ if($input['eu']==1){
$this->app->Tpl->Set('EU', "checked"); $this->app->Tpl->Set('EU', "checked");
} }
$this->app->Tpl->Set('MESSAGE', "<div class=\"success\">Die Einstellungen wurden erfolgreich &uuml;bernommen.</div>"); $this->app->Tpl->Set('MESSAGE', "<div class=\"success\">Die Einstellungen wurden erfolgreich &uuml;bernommen.</div>");
} }
} }
} }
$iso = $this->app->DB->Select("SELECT iso FROM laender WHERE id = '$id'"); $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'"); $iso3 = $this->app->DB->Select("SELECT iso3 FROM laender WHERE id = '$id'");
$bezeichnung_en = $this->app->DB->Select("SELECT bezeichnung_en FROM laender WHERE id = '$id'"); $bezeichnung_de = $this->app->DB->Select("SELECT bezeichnung_de FROM laender WHERE id = '$id'");
$eu = $this->app->DB->Select("SELECT eu 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('ISO', $iso);
$this->app->Tpl->Set('BEZEICHNUNG_EN', $bezeichnung_en); $this->app->Tpl->Set('ISO3', $iso3);
if($eu == 1){ $this->app->Tpl->Set('BEZEICHNUNG_DE', $bezeichnung_de);
$this->app->Tpl->Set('EU', "checked"); $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"); //$this->SetInput($input);
}
$this->app->Tpl->Parse('PAGE', "laender_edit.tpl");
function LaenderDelete() }
{
$ref = $_SERVER['HTTP_REFERER']; function LaenderDelete()
$id = $this->app->Secure->GetGET("id"); {
$this->app->DB->DELETE("DELETE FROM laender WHERE id = '$id' LIMIT 1"); $ref = $_SERVER['HTTP_REFERER'];
$id = $this->app->Secure->GetGET("id");
//$this->VorlageList(); $this->app->DB->DELETE("DELETE FROM laender WHERE id = '$id' LIMIT 1");
header("Location: $ref");
exit; //$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&uuml;ck zur &Uuml;bersicht"); function LaenderCreate(){
// $this->app->Tpl->Add(KURZUEBERSCHRIFT,"Benutzer");
$input = $this->GetInput(); $this->app->erp->MenuEintrag("index.php?module=laender&action=list","Zur&uuml;ck zur &Uuml;bersicht");
$submit = $this->app->Secure->GetPOST('submitland');
$input = $this->GetInput();
if($submit!='') { $submit = $this->app->Secure->GetPOST('submitland');
$error = ''; if($submit!='') {
if($input['iso']=='' || strlen(trim($input['iso'])) > 2) $error .= 'Geben Sie bitte einen zweistelligen ISO-Code ein.<br>'; $error = '';
if($input['bezeichnung_de']=='') $error .= 'Geben Sie bitte eine deutsche L&auml;nderbezeichnung ein.<br>';
if($input['bezeichnung_en']=='') $error .= 'Geben Sie bitte eine englische L&auml;nderbezeichnung ein.<br>'; if($input['iso']=='' || strlen(trim($input['iso'])) > 2) $error .= 'Geben Sie bitte einen zweistelligen ISO-Code ein.<br>';
if($input['bezeichnung_de']=='') $error .= 'Geben Sie bitte eine deutsche L&auml;nderbezeichnung ein.<br>';
if($this->app->DB->Select("SELECT '1' FROM laender WHERE iso='{$input['iso']}' LIMIT 1")=='1') if($input['bezeichnung_en']=='') $error .= 'Geben Sie bitte eine englische L&auml;nderbezeichnung ein.<br>';
$error .= "Es existiert bereits ein ISO-Code mit diesem Namen.<br />";
if($this->app->DB->Select("SELECT '1' FROM laender WHERE iso='{$input['iso']}' LIMIT 1")=='1')
if($error!=''){ $error .= "Es existiert bereits ein ISO-Code mit diesem Namen.<br />";
$this->app->Tpl->Set('MESSAGE', "<div class=\"error\">$error</div>");
}else { if($error!=''){
$this->app->DB->Insert("INSERT INTO laender (iso, bezeichnung_de, bezeichnung_en, eu) VALUES ('{$input['iso']}', '{$input['bezeichnung_de']}', '{$input['bezeichnung_en']}', '{$input['eu']}')"); $this->app->Tpl->Set('MESSAGE', "<div class=\"error\">$error</div>");
$newid = $this->app->DB->GetInsertID(); }else {
$msg = $this->app->erp->base64_url_encode("<div class=\"success\">Der L&auml;ndereintrag wurde erfolgreich angelegt.</div>"); $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']}')");
header("Location: index.php?module=laender&action=edit&id=$newid&msg=$msg"); $newid = $this->app->DB->GetInsertID();
exit; $msg = $this->app->erp->base64_url_encode("<div class=\"success\">Der L&auml;ndereintrag wurde erfolgreich angelegt.</div>");
} header("Location: index.php?module=laender&action=edit&id=$newid&msg=$msg");
} exit;
}
$this->SetInput($input); }
$this->app->Tpl->Parse('PAGE', "laender_edit.tpl"); $this->SetInput($input);
}
$this->app->Tpl->Parse('PAGE', "laender_edit.tpl");
}
function GetInput(){
$input = array();
$input['iso'] = $this->app->Secure->GetPOST('iso'); function GetInput(){
$input['bezeichnung_de'] = $this->app->Secure->GetPOST('bezeichnung_de'); $input = array();
$input['bezeichnung_en'] = $this->app->Secure->GetPOST('bezeichnung_en'); $input['iso'] = $this->app->Secure->GetPOST('iso');
$input['eu'] = (int)$this->app->Secure->GetPOST('eu'); $input['iso3'] = $this->app->Secure->GetPOST('iso3');
return $input; $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']); function SetInput($input){
if($input['eu']==1){ $this->app->Tpl->Set('ISO', $input['iso']);
$this->app->Tpl->Set('EU', "checked"); $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");
}
}
}
}

View File

@ -514,6 +514,31 @@ class lieferantengutschrift {
} }
} }
break; 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; break;
@ -542,6 +567,8 @@ class lieferantengutschrift {
$this->app->User->SetParameter('table_lieferantengutschrift_list_zahlbarbis', ''); $this->app->User->SetParameter('table_lieferantengutschrift_list_zahlbarbis', '');
$this->app->User->SetParameter('table_lieferantengutschrift_list_skontobis', ''); $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"); $this->app->Tpl->Parse('PAGE', "lieferantengutschrift_list.tpl");
} }

View File

@ -3339,7 +3339,7 @@ INNER JOIN shopexport s ON
} }
if($this->app->Secure->GetPOST('pruefen')) { if($this->app->Secure->GetPOST('pruefen')) {
$className = 'Remote'; $className = 'Remote';
$methodName = 'RemoteConnection'; $methodName = 'RemoteConnection';
$r = new ReflectionMethod($className, $methodName); $r = new ReflectionMethod($className, $methodName);

File diff suppressed because it is too large Load Diff

View File

@ -502,6 +502,31 @@ 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; break;
@ -530,6 +555,8 @@ class Verbindlichkeit {
$this->app->User->SetParameter('table_verbindlichkeit_list_zahlbarbis', ''); $this->app->User->SetParameter('table_verbindlichkeit_list_zahlbarbis', '');
$this->app->User->SetParameter('table_verbindlichkeit_list_skontobis', ''); $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"); $this->app->Tpl->Parse('PAGE', "verbindlichkeit_list.tpl");
} }

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="5.56mm" height="5.56mm" fill-rule="evenodd" stroke-linejoin="round" stroke-width="28.222" preserveAspectRatio="xMidYMid" version="1.2" viewBox="0 0 556 556" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
<defs class="ClipPathGroup"><clipPath id="presentation_clip_path">
<rect width="556" height="556"/>
</clipPath></defs>
<g class="Master_Slide">
</g>
<g class="SlideGroup">
<g class="Slide" clip-path="url(#presentation_clip_path)">
<g class="Page">
<g class="com.sun.star.drawing.ClosedBezierShape">
<rect class="BoundingBox" x="175" y="80" width="302" height="302" fill="none"/>
<path d="m421 286c10-17 15-36 15-56 0-19-5-38-15-55s-23-30-40-40-36-15-56-15c-19 0-38 5-55 15s-30 23-40 40-15 36-15 56c0 19 5 38 15 55s23 30 40 40 36 15 56 15c19 0 38-5 55-15s30-23 40-40zm35 20c-13 23-32 42-55 55s-49 20-75 20c-27 0-53-7-76-20s-42-32-55-55-20-49-20-75c0-27 7-53 20-76s32-42 55-55 49-20 75-20c27 0 53 7 76 20s42 32 55 55 20 49 20 75c0 27-7 53-20 76z" fill="#929292"/>
<rect class="BoundingBox" x="78" y="286" width="190" height="191" fill="none"/>
<path d="m195 306c13 23 32 42 55 55 6 3 11 6 17 8l-102 102c-2 3-5 4-8 4h-67c-6 0-11-5-11-11v-67c0-3 1-6 4-8l103-103c2 7 6 14 9 20z" fill="#929292"/>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -53,20 +53,36 @@
<tr> <tr>
<td style="min-width:130px;"><label for="bezeichnung">{|Bezeichnung|}:</label></td> <td style="min-width:130px;"><label for="bezeichnung">{|Bezeichnung|}:</label></td>
<td>[BEZEICHNUNG][MSGBEZEICHNUNG]</td> <td>[BEZEICHNUNG][MSGBEZEICHNUNG]</td>
<td><label for="modus">{|Import-Modus|}:</label></td><td>[SELMODUS]</td>
</tr> </tr>
<tr> <tr>
<td><label for="aktiv">{|Aktiv|}:</label></td> <td><label for="aktiv">{|Aktiv|}:</label></td>
<td>[AKTIV][MSGAKTIV]</td> <td>[AKTIV][MSGAKTIV]</td>
<td><label for="einzelsync">{|Nur 1 Auftrag pro Anfrage|}:</label></td>
<td class="einzelsyncclass">[EINZELSYNC][MSGEINZELSYNC]</td>
</tr> </tr>
<tr> <tr>
<td><label for="projekt">{|Projekt|}:</label></td> <td><label for="projekt">{|Projekt|}:</label></td>
<td>[PROJEKT][MSGPROJEKT]</td> <td>[PROJEKT][MSGPROJEKT]</td>
<td><label for="warteschlange">{|Aufträge in Zwischentabelle|}:</label></td><td>[WARTESCHLANGE] <i>{|Freigabe erfolgt manuell|}</i> </tr>
</td></tr> <tr>
<tr><td><label for="abholmodus">{|Abholmodus|}:</label></td><td>[SELABHOLMODUS]</td><td class="manuellebegrenzung">{|Anzahl abholen begrenzen|}:</td><td class="manuellebegrenzung">[MAXMANUELL][MSGMAXMANUELL]&nbsp;<i>{|0 bedeutet Begrenzung auf 100|}</i></td></tr> <td><label for="abholmodus">{|Abholmodus|}:</label></td><td>[SELABHOLMODUS]</td>
</tr>
<tr>
<td class="manuellebegrenzung">{|Anzahl abholen begrenzen|}:</td>
<td class="manuellebegrenzung">[MAXMANUELL][MSGMAXMANUELL]</td>
<td><i>{|0 bedeutet Begrenzung auf 100|}</i></td>
</tr>
<tr>
<td><label for="modus">{|Import-Modus|}:</label></td><td>[SELMODUS]</td>
</tr>
<tr>
<td><label for="einzelsync">{|Nur 1 Auftrag pro Anfrage|}:</label></td>
<td class="einzelsyncclass">[EINZELSYNC][MSGEINZELSYNC]</td>
</tr>
<tr>
</tr>
<td><label for="warteschlange">{|Aufträge in Zwischentabelle|}:</label></td><td>[WARTESCHLANGE]</td>
<td><i>{|Freigabe erfolgt manuell|}</i></td>
<tr>
</tr>
<tr class="ab_nummerzeitraum zeitraum"> <tr class="ab_nummerzeitraum zeitraum">
<td><label for="vondatum">{|Datum von|}:</label></td> <td><label for="vondatum">{|Datum von|}:</label></td>
<td nowrap> <td nowrap>
@ -98,8 +114,8 @@
<div class="inside inside-full-height"> <div class="inside inside-full-height">
<fieldset><legend>{|Aktion|}</legend> <fieldset><legend>{|Aktion|}</legend>
<table width="100%"> <table width="100%">
<tr><td><input type="button" onclick="verpruefen();" value="{|Verbindung pr&uuml;fen|}" class="aktionbutton" ></td></tr> <tr><td><input type="submit" form="frmpruefen" value="{|Verbindung pr&uuml;fen|}" class="aktionbutton" ></td></tr>
<tr><td width="50%"><input type="button" onclick="Holeauftrag();" value="{|Auftr&auml;ge abholen|}" class="aktionbutton" ></td></tr> <tr><td width="50%"><input type="submit" form="frmabholen" value="{|Auftr&auml;ge abholen|}" class="aktionbutton" ></td></tr>
[AKTIONBUTTONS] [AKTIONBUTTONS]
</table> </table>
</fieldset> </fieldset>

View File

@ -861,7 +861,7 @@ class WidgetShopexport extends WidgetGenShopexport
switch($typ) switch($typ)
{ {
case 'textarea': case 'textarea':
$aktcol .= '<textarea name="'.$name.'" id="'.$name.'">'.(!isset($json['felder'][$name])?'':htmlspecialchars($json['felder'][$name])).'</textarea>'; $aktcol .= '<textarea name="'.$name.'" id="'.$name.'" placeholder = "'.$val['placeholder'].'" cols="'.$val['cols'].'" rows="'.$val['rows'].'">'.(!isset($json['felder'][$name])?'':htmlspecialchars($json['felder'][$name])).'</textarea>';
break; break;
case 'checkbox': case 'checkbox':
$aktcol .= '<input type="checkbox" name="'.$name.'" id="'.$name.'" value="1" '.((isset($json['felder'][$name]) && $json['felder'][$name])?' checked="checked" ':'').' />'; $aktcol .= '<input type="checkbox" name="'.$name.'" id="'.$name.'" value="1" '.((isset($json['felder'][$name]) && $json['felder'][$name])?' checked="checked" ':'').' />';
@ -894,6 +894,9 @@ class WidgetShopexport extends WidgetGenShopexport
} }
} }
break; break;
case 'info':
$aktcol .= $val['text'];
break;
default: default:
switch($typ) { switch($typ) {
case 'datum': case 'datum':
@ -912,7 +915,7 @@ class WidgetShopexport extends WidgetGenShopexport
$aktcol .= '&nbsp;<input type="button" value="'.($val['vorschlag_label']!=''?$val['vorschlag_label']:$val['vorschlag']).'" onclick="$(\'#'.$name.'\').val(\''.$val['vorschlag'].'\');" '.(isset($val['minvorschlagsize']) && $val['minvorschlagsize']?' style="min-width:'.$val['minvorschlagsize'].'px;" ':'').' />'; $aktcol .= '&nbsp;<input type="button" value="'.($val['vorschlag_label']!=''?$val['vorschlag_label']:$val['vorschlag']).'" onclick="$(\'#'.$name.'\').val(\''.$val['vorschlag'].'\');" '.(isset($val['minvorschlagsize']) && $val['minvorschlagsize']?' style="min-width:'.$val['minvorschlagsize'].'px;" ':'').' />';
} }
if(isset($val['info']) && $val['info']){ if(isset($val['info']) && $val['info']){
$aktcol .= ' <i>'.$val['info'].'</i>'; $aktcol .= '<td> <i>'.$val['info'].'</i></td>';
} }
if(isset($val['col']) && $val['col'] == 2) if(isset($val['col']) && $val['col'] == 2)
{ {