mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-12-27 07:00:29 +01:00
2205 lines
85 KiB
PHP
2205 lines
85 KiB
PHP
<?php
|
|
/*
|
|
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
|
*
|
|
* 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.
|
|
*
|
|
* 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.
|
|
*
|
|
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
|
*/
|
|
?>
|
|
<?php
|
|
/* Author: Benedikt Sauter <sauter@embedded-projetcs.net> 2013
|
|
*
|
|
* Hier werden alle Plugins, Widgets usw instanziert die
|
|
* fuer die Anwendung benoetigt werden.
|
|
* Diese Klasse ist von class.application.php abgleitet.
|
|
* Das hat den Vorteil, dass man dort bereits einiges starten kann,
|
|
* was man eh in jeder Anwendung braucht.
|
|
* - DB Verbindung
|
|
* - Template Parser
|
|
* - Sicherheitsmodul
|
|
* - String Plugin
|
|
* - usw....
|
|
*/
|
|
|
|
date_default_timezone_set('Europe/Berlin');
|
|
ini_set('default_charset', 'UTF-8');
|
|
|
|
ini_set('display_errors', 'on');
|
|
ini_set('magic_quotes_runtime', 0);
|
|
|
|
require_once dirname(__DIR__).'/phpwf/class.application.php';
|
|
|
|
if( WithGUI(true))
|
|
{
|
|
define('FPDF_FONTPATH',__DIR__.'/lib/pdf/font/');
|
|
if(file_exists(__DIR__."/lib/dokumente/class.briefpapier_custom.php"))
|
|
{
|
|
require_once __DIR__.'/lib/dokumente/class.briefpapier_custom.php';
|
|
}else{
|
|
require_once __DIR__.'/lib/dokumente/class.briefpapier.php';
|
|
}
|
|
}
|
|
|
|
include __DIR__.'/function_exists.php';
|
|
|
|
class erpooSystem extends Application
|
|
{
|
|
public $obj;
|
|
public $starttime;
|
|
public $endtime;
|
|
protected $laendercache;
|
|
protected $uselaendercache;
|
|
|
|
/** @var erpAPI $erp
|
|
* @var Config $Conf
|
|
*/
|
|
|
|
public function __construct($config,$group='')
|
|
{
|
|
$this->uselaendercache = false;
|
|
parent::__construct($config, $group);
|
|
|
|
if(WithGUI()){
|
|
$module = $this->Secure->GetGET('module');
|
|
$action = $this->Secure->GetGET('action');
|
|
$this->Tpl->Set('DASHBOARDLINK', 'index.php?module=welcome&action=start');
|
|
|
|
$this->help = new Help($this);
|
|
|
|
$companyletter = strtoupper(substr($this->erp->Firmendaten('name'), 0, 1));
|
|
$this->Tpl->Set('COMPANYLETTER', ($companyletter != '' ? $companyletter : 'W'));
|
|
|
|
|
|
if($this->erp->Firmendaten('modul_mlm') != '1'){
|
|
$this->Tpl->Set('STARTDISABLEMLM', '<!--');
|
|
$this->Tpl->Set('ENDEDISABLEMLM', '-->');
|
|
}
|
|
|
|
if($this->erp->Firmendaten('modul_verband') != '1'){
|
|
$this->Tpl->Set('STARTDISABLEVERBAND', '<!--');
|
|
$this->Tpl->Set('ENDEDISABLEVERBAND', '-->');
|
|
}
|
|
|
|
if($this->erp->Version() === 'stock'){
|
|
$this->Tpl->Set('DISABLEOPENSTOCK', '<!--');
|
|
$this->Tpl->Set('DISABLECLOSESTOCK', '-->');
|
|
}
|
|
|
|
$icons = array('adresse', 'artikel', 'angebot', 'auftrag', 'lieferschein', 'rechnung');
|
|
foreach ($icons as $icon) {
|
|
if(!$this->erp->RechteVorhanden($icon, 'list')){
|
|
$this->Tpl->Set('ICON' . strtoupper($icon) . 'START', '<!--');
|
|
$this->Tpl->Set('ICON' . strtoupper($icon) . 'ENDE', '-->');
|
|
}
|
|
}
|
|
|
|
$this->Tpl->Set(strtoupper($module) . 'ACTIVE', 'active');
|
|
|
|
if(is_file('js/' . $module . '.js')){
|
|
$md5 = md5_file('js/' . $module . '.js');
|
|
if(!is_file('js/' . $module . $md5 . '.js')) {
|
|
@copy('js/' . $module . '.js', 'js/' . $module . $md5 . '.js');
|
|
}
|
|
if(is_file('js/' . $module . $md5 . '.js')){
|
|
$this->Tpl->Set('JSSCRIPTS', '<script type="text/javascript" src="./js/' . $module . $md5 . '.js?v=3"></script>');
|
|
}else{
|
|
$this->Tpl->Set('JSSCRIPTS', '<script type="text/javascript" src="./js/' . $module . '.js?v=3"></script>');
|
|
}
|
|
}
|
|
$this->erp->PrinterIcon();
|
|
$this->Tpl->ReadTemplatesFromPath(__DIR__ . '/widgets/templates/_gen/');
|
|
$this->Tpl->ReadTemplatesFromPath(__DIR__ . '/widgets/templates/');
|
|
$this->Tpl->ReadTemplatesFromPath(__DIR__ . '/themes/' . $this->Conf->WFconf['defaulttheme'] . '/templates/');
|
|
$this->Tpl->ReadTemplatesFromPath(__DIR__ . '/pages/content/_gen/');
|
|
$this->Tpl->ReadTemplatesFromPath(__DIR__ . '/pages/content/');
|
|
if(is_dir(__DIR__ . '/lib/versandarten/content')) {
|
|
$this->Tpl->ReadTemplatesFromPath(__DIR__ . '/lib/versandarten/content/');
|
|
}
|
|
|
|
if(method_exists($this->erp, 'VersionsInfos')){
|
|
$ver = $this->erp->VersionsInfos();
|
|
if(stripos($ver['Info'], 'Beta') !== false
|
|
|| stripos($ver['Info'], 'Alpha') !== false
|
|
|| stripos($ver['Info'], 'DEV') !== false
|
|
) $this->Tpl->Set('VERSIONINFO', strtoupper($ver['Info']));
|
|
}
|
|
|
|
$this->Tpl->Set('ID', $this->Secure->GetGET('id'));
|
|
$this->Tpl->Set('POPUPWIDTH', '1200');
|
|
$this->Tpl->Set('POPUPHEIGHT', '800');
|
|
|
|
$this->Tpl->Set('YEAR', date('Y'));
|
|
$this->Tpl->Set('COMMONREADONLYINPUT', '');
|
|
$this->Tpl->Set('COMMONREADONLYSELECT', '');
|
|
|
|
// templates laden
|
|
|
|
//statisch überladen
|
|
$this->Conf->WFconf['defaulttheme'] = 'new';
|
|
|
|
if(!empty($this->Conf->WFtestmode) && $this->Conf->WFtestmode == true)
|
|
$this->Tpl->Set('BODYSTYLE', 'style=background-color:red');
|
|
}
|
|
|
|
if(WithGUI(true)){
|
|
|
|
$benutzername = $this->erp->Firmendaten('benutzername');
|
|
$passwort = $this->erp->Firmendaten('passwort');
|
|
$host = $this->erp->Firmendaten('host');
|
|
$port = $this->erp->Firmendaten('port');
|
|
$mailssl = $this->erp->Firmendaten('mailssl');
|
|
$mailanstellesmtp = $this->erp->Firmendaten('mailanstellesmtp');
|
|
$noauth = $this->erp->Firmendaten('noauth');
|
|
$overviewpage = $this->Secure->GetGET('overviewpage');
|
|
$overviewpageAction = $this->Secure->GetGET('overviewpageaction');
|
|
$backlinkmodule = $this->Secure->GetGET('backlinkmodule');
|
|
$backlinkParameter = $this->Secure->GetGET('backlinkparameter');
|
|
|
|
// templates
|
|
}
|
|
|
|
if(WithGUI()){
|
|
$this->createSidebarNavigation();
|
|
|
|
|
|
$layout_iconbar = $this->erp->Firmendaten('layout_iconbar');
|
|
|
|
if($this->erp->Version() === 'stock'){
|
|
$this->Tpl->Set('STOCKOPEN', '<!--');
|
|
$this->Tpl->Set('STOCKCLOSE', '-->');
|
|
}
|
|
|
|
//nur wenn leiste nicht deaktiviert ist
|
|
if($layout_iconbar != 1){
|
|
if($this->erp->Firmendaten('iconset_dunkel') == '1'){
|
|
$this->Tpl->Parse('ICONBAR', 'iconbar_dunkel.tpl');
|
|
}
|
|
else{
|
|
$this->Tpl->Parse('ICONBAR', 'iconbar.tpl');
|
|
}
|
|
}else{
|
|
$this->Tpl->Parse('ICONBAR', 'iconbar_empty.tpl');
|
|
}
|
|
|
|
if($module !== 'kalender' && ($module !== 'welcome' && $action !== 'start')){
|
|
$this->Tpl->Add('YUICSS', '.ui-widget-content {}');
|
|
}
|
|
|
|
$overviewLink = null;
|
|
if(!empty($overviewpage)) {
|
|
$obj = $this->loadModule($overviewpage, false);
|
|
if($obj !== null && method_exists($obj, 'getOverViewLink')) {
|
|
$overviewLink = $obj->getOverViewLink($overviewpageAction);
|
|
}
|
|
}
|
|
|
|
$backlink = null;
|
|
if(!empty($backlinkmodule)) {
|
|
$obj = $this->loadModule($backlinkmodule, false);
|
|
if($obj !== null && method_exists($obj, 'getBackLink')) {
|
|
$backlink = $obj->getBackLink($backlinkParameter);
|
|
}
|
|
}
|
|
|
|
// back to overview for case apps/einstellungen
|
|
if($overviewLink !== null){
|
|
$this->Tpl->Set('BACKTOOVERVIEW', '<a href="'. $overviewLink .'" title="Zur Einstellungsübersicht" id="back-to-overview"></a>');
|
|
}
|
|
|
|
$this->Tpl->Set('MODULE', $module);
|
|
$this->Tpl->Set('ACTION', $action);
|
|
|
|
$this->Tpl->Set('THEME', $this->Conf->WFconf['defaulttheme']);
|
|
$doc_root = preg_replace("!{$_SERVER['SCRIPT_NAME']}$!", '', $_SERVER['SCRIPT_FILENAME']); # ex: /var/www
|
|
$path = preg_replace("!^{$doc_root}!", '', __DIR__);
|
|
$this->Tpl->Set('WEBPATH', $path);
|
|
|
|
if(isset($backlink) && strpos($backlink,"index.php?module=") !== false && strpos($backlink, "&action=") !== false){
|
|
$this->Tpl->Set('TABSBACK', $backlink);
|
|
} else {
|
|
if($action === 'list' || $action == ''){
|
|
$this->Tpl->Set('TABSBACK', 'index.php');
|
|
}
|
|
else{
|
|
$this->Tpl->Set('TABSBACK', "index.php?module=$module&action=list");
|
|
}
|
|
}
|
|
$this->Tpl->Set('SAVEBUTTON', '<input type="submit" name="speichern" value="Speichern" class="button-sticky" />');
|
|
|
|
$this->help->Run();
|
|
|
|
$this->Tpl->Set('TMPSCRIPT', '');
|
|
|
|
$msg2 = $this->Secure->GetGET('msg');
|
|
$msgid = (int)$this->Secure->GetGET('msgid');
|
|
if($msgid && method_exists($this->erp, 'GetTmpMessageOut')){
|
|
$msg3 = $this->erp->GetTmpMessageOut($msgid);
|
|
$this->Tpl->Set('MESSAGE', $msg3);
|
|
}elseif($msg2 != ''){
|
|
$msg2 = $this->erp->base64_url_decode($msg2);
|
|
$this->Tpl->Set('MESSAGE', $msg2);
|
|
}
|
|
unset($msg3);
|
|
|
|
|
|
|
|
$module = $this->Secure->GetGET('module');
|
|
$this->Tpl->Set('MODULE', $module);
|
|
if($module == ''){
|
|
$module = 'welcome';
|
|
}
|
|
$this->Tpl->Set('ICON', $module);
|
|
|
|
|
|
$id = $this->Secure->GetGET('id');
|
|
$this->Tpl->Set('KID', $id);
|
|
|
|
// pruefe welche version vorliegt
|
|
include dirname(__DIR__).'/version.php';
|
|
|
|
$this->Tpl->Set('REVISION', $this->erp->Revision() . ' (' . $this->erp->Branch() . ')');
|
|
$this->Tpl->Set('REVISIONID', $this->erp->RevisionPlain());
|
|
$this->Tpl->Set('BRANCH', $this->erp->Branch());
|
|
|
|
$this->Tpl->Set('LIZENZHINWEIS', '| <a href="https://www.xentral.biz/lizenzhinweis" target="_blank">Lizenzhinweis</a>');
|
|
|
|
if($this->erp->Version() === 'OSS'){
|
|
$this->Tpl->Set('WAWIVERSION', 'Open-Source Lizenz AGPLv3.0');
|
|
}
|
|
else if($this->erp->Version() === 'ENT'){
|
|
$this->Tpl->Set('WAWIVERSION', 'Enterprise Version');
|
|
}
|
|
else if($this->erp->Version() === 'PRO'){
|
|
$this->Tpl->Set('WAWIVERSION', 'Professional Version');
|
|
}
|
|
else if($this->erp->Version() === 'PRE'){
|
|
$this->Tpl->Set('WAWIVERSION', 'Premium Version');
|
|
}
|
|
else{
|
|
$this->Tpl->Set('WAWIVERSION', 'Nutzungsbedingungen');
|
|
}
|
|
|
|
|
|
$this->Tpl->Set('TIMESTAMP', time());
|
|
|
|
$this->Tpl->Set('THEME', $this->Conf->WFconf['defaulttheme']);
|
|
$this->Tpl->Set('AKTIV_GEN_TAB1', 'selected');
|
|
|
|
if(file_exists(__DIR__ . '/pages/textvorlagen.php') && $this->Secure->GetGET('cmd') !== 'open'){
|
|
$showing = true;
|
|
|
|
if($action === 'edit' && in_array($module, array('auftrag', 'angebot', 'rechnung', 'bestellung', 'lieferschein'))){
|
|
|
|
$id = (int)$this->Secure->GetGET('id');
|
|
if($id && $this->DB->Select("SELECT count(id) FROM " . $module . "_position WHERE $module = '$id'") > 100) {
|
|
$showing = false;
|
|
}
|
|
}
|
|
|
|
if($showing && $this->erp->RechteVorhanden('textvorlagen', 'show')){
|
|
|
|
/** @var \Xentral\Widgets\DataTable\Service\DataTableService $service */
|
|
$service = $this->Container->get('DataTableService');
|
|
$buildConfig = new \Xentral\Widgets\DataTable\DataTableBuildConfig(
|
|
'texttemplates',
|
|
\Xentral\Modules\TextTemplate\DataTable\TextTemplateDataTable::class,
|
|
'index.php?module=textvorlagen&action=show&cmd=table',
|
|
false
|
|
);
|
|
|
|
$htmlData = $service->renderHtml($buildConfig);
|
|
$this->Tpl->Add('TABTEXTVORLAGEN', $htmlData);
|
|
$this->Tpl->Add('TVFILTERHEADER', '<fieldset><legend>Textvorlage suchen und einfügen</legend></fieldset>');
|
|
|
|
$this->YUI->AutoComplete('textvorlageprojekt', 'projektname', 1);
|
|
$this->YUI->CkEditor('textvorlagetext', 'belege');
|
|
$this->Tpl->Add('JSSCRIPTS', $this->Tpl->OutputAsString('textvorlagen.tpl'));
|
|
}
|
|
}
|
|
|
|
$isTestlizenz = !empty(erpAPI::Ioncube_Property('testlizenz'));
|
|
$isCloud = erpAPI::Ioncube_Property('iscloud');
|
|
$isDemo = $isTestlizenz && $isCloud;
|
|
$activateDoubleClick = false;
|
|
/** @var Dataprotection $dataProtectionModule */
|
|
$dataProtectionModule = $this->loadModule('dataprotection');
|
|
|
|
if($isCloud
|
|
&& $dataProtectionModule !== null
|
|
&& $dataProtectionModule->isGoogleAnalyticsActive()
|
|
){
|
|
$activateDoubleClick = true;
|
|
$this->Tpl->Add(
|
|
'SCRIPTJAVASCRIPT',
|
|
'<!-- Global site tag (gtag.js) - Google Analytics -->
|
|
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-1088253-14"></script>
|
|
<script>
|
|
window.dataLayer = window.dataLayer || [];
|
|
function gtag(){dataLayer.push(arguments);}
|
|
gtag(\'js\', new Date());
|
|
|
|
gtag(\'config\', \'UA-1088253-14\');
|
|
</script>');
|
|
|
|
$this->Tpl->Add('ADDITIONALCSPHEADER', ' www.googletagmanager.com www.google-analytics.com ssl.google-analytics.com stats.g.doubleclick.net ');
|
|
}
|
|
if($dataProtectionModule !== null && $dataProtectionModule->isHubspotActive()) {
|
|
$activateDoubleClick = true;
|
|
$this->Tpl->Add(
|
|
'SCRIPTJAVASCRIPT',
|
|
'<script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/6748263.js"></script>'
|
|
);
|
|
$this->Tpl->Add(
|
|
'ADDITIONALCSPHEADER',
|
|
' js.hs-scripts.com js.hscollectedforms.net js.hsleadflows.net js.hs-banner.com js.hs-analytics.net api.hubapi.com js.hsadspixel.net '
|
|
);
|
|
$this->Tpl->Add(
|
|
'ADDITIONALCSPHEADER',
|
|
'forms.hubspot.com forms.hsforms.com track.hubspot.com www.google.com www.google.de '
|
|
);
|
|
}
|
|
if($activateDoubleClick) {
|
|
$this->Tpl->Add('ADDITIONALCSPHEADER', ' googleads.g.doubleclick.net ' );
|
|
}
|
|
$hooktpl = 'JSSCRIPTS';
|
|
$this->erp->RunHook('eproosystem_ende', 1, $hooktpl);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @param {String} $path
|
|
* @param {String} $category
|
|
*
|
|
* @return String
|
|
*/
|
|
public function getSVG($path, $filename){
|
|
$filename = str_replace(' ', '', strtolower($filename));
|
|
|
|
$iconPath = $path . $filename . '.svg';
|
|
|
|
return file_get_contents($iconPath);
|
|
}
|
|
|
|
protected function getCounterFor(string $type)
|
|
{
|
|
|
|
}
|
|
/**
|
|
* creates and appends sidebar navigation
|
|
*/
|
|
public function createSidebarNavigation(){
|
|
include dirname(__DIR__).'/version.php';
|
|
$appstore = $this->loadModule('appstore');
|
|
|
|
$svgPath = 'themes/new/images/sidebar/';
|
|
|
|
$activeModule = $this->Secure->GetGET('module');
|
|
$activeAction = $this->Secure->GetGET('action');
|
|
|
|
$navigation = $this->Page->CreateNavigation($this->erp->Navigation(), true, $activeModule, $activeAction);
|
|
|
|
$activeCategory = $appstore->GetCategoryByModule($activeModule, $this->Secure->GetGET('id'));
|
|
|
|
$appointmentCount = (int)$this->DB->Select(
|
|
sprintf(
|
|
"SELECT COUNT(ke.id)
|
|
FROM kalender_event AS ke
|
|
LEFT JOIN kalender_user AS ku ON ku.event=ke.id
|
|
WHERE DATE_FORMAT(ke.von,'%%Y-%%m-%%d')=DATE_FORMAT(NOW(),'%%Y-%%m-%%d')
|
|
AND (
|
|
ke.adresse=%d
|
|
OR ke.adresseintern=%d
|
|
OR ku.userid=%d
|
|
)",
|
|
$this->User->GetAdresse(),$this->User->GetAdresse(), $this->User->GetID()
|
|
)
|
|
);
|
|
|
|
if($appointmentCount <=0) {
|
|
$appointmentCount=0;
|
|
}
|
|
|
|
if($this->erp->ModulVorhanden('wiedervorlage') && $this->erp->RechteVorhanden('wiedervorlage','list')) {
|
|
$resubmissionCount = (int)$this->DB->Select(
|
|
sprintf(
|
|
"SELECT count(*)
|
|
FROM `wiedervorlage` AS `w`
|
|
LEFT JOIN `adresse` AS `a` ON w.adresse = a.id
|
|
LEFT JOIN `projekt` AS `p` on p.id = a.projekt
|
|
WHERE w.abgeschlossen = 0
|
|
AND TIMESTAMP(concat(w.datum_erinnerung,' ',w.zeit_erinnerung)) < TIMESTAMP(now())
|
|
AND (w.adresse_mitarbeiter = %d OR (w.adresse_mitarbeiter=0 AND w.bearbeiter=%d)) ",
|
|
$this->User->getAdresse(),$this->User->getAdresse()
|
|
).$this->erp->ProjektRechte('w.projekt')
|
|
);
|
|
}
|
|
|
|
// Creates user specific items
|
|
|
|
$offene_tickets = $this->erp->AnzahlOffeneTickets(false);
|
|
$offene_tickets_user = $this->erp->AnzahlOffeneTickets(true);
|
|
|
|
$possibleUserItems = [
|
|
'Tickets' => [
|
|
'link' => 'index.php?module=ticket&action=list',
|
|
'counter' => ($offene_tickets+$offene_tickets_user > 0)?$offene_tickets_user."/".$offene_tickets:""
|
|
],
|
|
'Aufgaben' => [
|
|
'link' => 'index.php?module=aufgaben&action=list',
|
|
'counter' => $this->erp->AnzahlOffeneAufgaben()
|
|
],
|
|
/* 'Wiedervorlage' => [
|
|
'link' => 'index.php?module=wiedervorlage&action=list',
|
|
'counter' => $resubmissionCount,
|
|
],*/
|
|
'Kalender' => [
|
|
'link' => 'index.php?module=kalender&action=list',
|
|
'counter' => $appointmentCount
|
|
]
|
|
];
|
|
/* $possibleUserItems['Apps'] = [
|
|
'link'=> 'index.php?module=appstore&action=list&cmd=allapps'
|
|
];*/
|
|
|
|
|
|
if(!empty(erpAPI::Ioncube_Property('testlizenz')) && $this->User->GetType() === 'admin'){
|
|
$possibleUserItems['Starte hier!'] = [
|
|
'link' => 'index.php?module=learningdashboard&action=list',
|
|
'type' => 'cta'
|
|
];
|
|
}
|
|
|
|
$userItems = '<div class="sidebar-list small-items separator-bottom">';
|
|
|
|
foreach($possibleUserItems as $title => $data){
|
|
$classList = '';
|
|
$link = $data['link'];
|
|
$counter = isset($data['counter']) && ((is_int($data['counter']) && $data['counter'] >= 1)
|
|
|| (is_string($data['counter']) && $data['counter'] !== ''))
|
|
? '<div class="item-counter">'. $data['counter'] .'</div>'
|
|
: '';
|
|
$svg = $this->getSVG($svgPath, $title);
|
|
$active = '';
|
|
|
|
if(strtolower($title) === strtolower($activeModule)){
|
|
$active = 'current-module';
|
|
}
|
|
|
|
if(isset($data['type']) && $data['type'] === 'cta'){
|
|
$classList .= 'button button-secondary';
|
|
}
|
|
$userItems .=
|
|
'<a href="'. $link .'&top=' .base64_encode($title).'" class="list-item '. $active .' '. $classList .'">'
|
|
. $svg
|
|
. '<div class="title">'. $this->Tpl->pruefeuebersetzung($title) .'</div>'
|
|
. $counter
|
|
.'</a>';
|
|
}
|
|
|
|
$userItems .= '</div>';
|
|
|
|
// Creates main navigation steps
|
|
$naviHtml = '<div class="sidebar-list">';
|
|
|
|
foreach($navigation as $key => $listitem){
|
|
if(!empty($listitem)){
|
|
if (isset($listitem['original_title'])) {
|
|
$svg = $this->getSVG($svgPath, $listitem['original_title']);
|
|
} else {
|
|
$svg = $this->getSVG($svgPath, $listitem['title']);
|
|
}
|
|
$active = '';
|
|
if($listitem['active']) {
|
|
$active = 'current-module';
|
|
}
|
|
|
|
$naviHtml .=
|
|
'<div class="list-item '. $active .'">'
|
|
. $svg .
|
|
'<div class="title">'. $listitem['title'] .'</div>';
|
|
|
|
if(isset($listitem["sec"])){
|
|
$naviHtml .=
|
|
'<div class="sidebar-submenu">
|
|
<div>';
|
|
|
|
foreach($listitem["sec"] as $subkey => $subitem){
|
|
$naviHtml .= '<a href="'. $subitem['link'].'">'. $subitem['title'] .'</a>';
|
|
}
|
|
|
|
$naviHtml .= '</div>
|
|
</div>';
|
|
}
|
|
|
|
$naviHtml .= '</div>';
|
|
}
|
|
}
|
|
|
|
$naviHtml .= '</div>';
|
|
|
|
/** @var Dataprotection $obj */
|
|
$obj = $this->loadModule('dataprotection');
|
|
$showChat = method_exists('erpAPI','Ioncube_Property')
|
|
&& !empty(erpAPI::Ioncube_Property('chatactive'))
|
|
&& !empty(erpAPI::Ioncube_Property('chat'))
|
|
&& $obj !== null
|
|
&& method_exists($obj, 'isZenDeskActive')
|
|
&& $obj->isZenDeskActive();
|
|
|
|
$possibleFixedItems = [];
|
|
if(!$showChat) {
|
|
$possibleFixedItems['Hilfe'] = 'id="showinlinehelplink"';
|
|
}
|
|
|
|
// Creates fixed bottom navigation items
|
|
// $possibleFixedItems['Datenschutz'] = 'index.php?module=dataprotection&action=list';
|
|
|
|
$fixedItems = '<div class="sidebar-list bottom">';
|
|
|
|
foreach($possibleFixedItems as $title => $link){
|
|
$svg = $this->getSVG($svgPath, $title);
|
|
$active = '';
|
|
|
|
if(strtolower($title) === strtolower($activeModule)){
|
|
$active = 'current-module';
|
|
}
|
|
|
|
if(strpos($link, 'index.php?') !== false){
|
|
$fixedItems .=
|
|
'<a href="'. $link .'&top=' .base64_encode($title).'" class="list-item '. $active .'">'
|
|
. $svg .
|
|
'<div class="title">'. $this->Tpl->pruefeuebersetzung($title) .'</div>'
|
|
.'</a>';
|
|
} elseif(strpos($link, 'id="') !== false) {
|
|
$fixedItems .=
|
|
'<div ' . $link . ' class="list-item">'
|
|
. $svg .
|
|
'<div class="title">'. $this->Tpl->pruefeuebersetzung($title) .'</div>'
|
|
.'</div>';
|
|
}
|
|
}
|
|
|
|
$fixedItems .= '</div>';
|
|
|
|
$version = '';
|
|
if(isset($version_revision) && $version_revision != '') {
|
|
$version .= '<div class="sidebar-software-version">OpenXE V.'. $version_revision .'</div>';
|
|
}
|
|
|
|
if($userId = $this->User->GetID()){
|
|
|
|
/** @var \Xentral\Modules\User\Service\UserConfigService $userConfig */
|
|
$userConfig = $this->Container->get('UserConfigService');
|
|
$sidebarCollapsed = $userConfig->tryGet('sidebar_collapsed', $userId);
|
|
$sidebarClasses = $sidebarCollapsed === true ? 'class="collapsed"' : '';
|
|
}else{
|
|
$sidebarClasses = '';
|
|
}
|
|
|
|
// set generated HTML to template
|
|
$this->Tpl->Set('USERITEMS', $userItems);
|
|
$this->Tpl->Set('NAVIGATIONITEMS', $naviHtml);
|
|
$this->Tpl->Set('FIXEDITEMS', $fixedItems);
|
|
$this->Tpl->Set('XENTRALVERSION', $version);
|
|
$this->Tpl->Set('SIDEBAR_CLASSES', $sidebarClasses);
|
|
$isDevelopmentVersion = method_exists('erpAPI','Ioncube_Property')
|
|
&& !empty(erpAPI::Ioncube_Property('isdevelopmentversion'));
|
|
if($isDevelopmentVersion) {
|
|
$this->Tpl->Add(
|
|
'SIDEBARLOGO',
|
|
@file_get_contents(__DIR__ . '/themes/new/templates/sidebar_development_version_logo.svg')
|
|
);
|
|
$this->Tpl->Add(
|
|
'SIDEBARLOGO',
|
|
'<img class="development" src="themes/new/templates/development_version_logo.png" alt="logo" />'
|
|
);
|
|
}
|
|
else{
|
|
// $this->Tpl->Add('SIDEBARLOGO', @file_get_contents(__DIR__ . '/themes/new/templates/sidebar_logo.svg'));
|
|
$this->Tpl->Add('SIDEBARLOGO','<div class="sidebar_logo">'.@file_get_contents(__DIR__ . '/themes/new/templates/sidebar_logo.svg').'</div>');
|
|
$this->Tpl->Add('SIDEBARLOGO','<div class="sidebar_icon_logo">'.@file_get_contents(__DIR__ . '/themes/new/templates/sidebar_icon_logo.svg').'</div>');
|
|
}
|
|
|
|
$this->Tpl->Parse('SIDEBAR', 'sidebar.tpl');
|
|
$this->Tpl->Parse('PROFILE_MENU', 'profile_menu.tpl');
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function CheckUserdata()
|
|
{
|
|
$isSecure = false;
|
|
if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') {
|
|
$isSecure = true;
|
|
}
|
|
elseif ((!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') || (!empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on')) {
|
|
$isSecure = true;
|
|
}
|
|
$REQUEST_PROTOCOL = $isSecure ? 'https' : 'http';
|
|
if(!empty($_SERVER['SCRIPT_URI']))
|
|
{
|
|
$weburl = $_SERVER['SCRIPT_URI'];
|
|
}elseif(!empty($_SERVER['REQUEST_URI']) && !empty($_SERVER['SERVER_ADDR']) && $_SERVER['SERVER_ADDR']!=='::1' && (empty($_SERVER['SERVER_SOFTWARE']) || strpos($_SERVER['SERVER_SOFTWARE'],'nginx')===false))
|
|
{
|
|
$weburl = (isset($_SERVER['SERVER_ADDR']) && $_SERVER['SERVER_ADDR']?$REQUEST_PROTOCOL.'://'.$_SERVER['SERVER_ADDR'].(!empty($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443?':'.$_SERVER['SERVER_PORT']:''):'').$_SERVER['REQUEST_URI'];
|
|
} elseif(!empty($_SERVER['SERVER_NAME'])) //MAMP auf macos
|
|
{
|
|
$weburl = str_replace(array('setup/setup.php?step=5','setup/setup.php'),'',$REQUEST_PROTOCOL.'://'.$_SERVER['SERVER_NAME'].":".$_SERVER['SERVER_PORT'].$_SERVER['REQUEST_URI'].$_SERVER['SCRIPT_NAME']);
|
|
}else{
|
|
$weburl = '';
|
|
}
|
|
$userdatadir = $this->Conf->WFuserdata;
|
|
$tmpfile = md5(microtime(true)).'.html';
|
|
$ret = '';
|
|
if(!file_put_contents(rtrim($userdatadir,'/').'/'.$tmpfile,'TEST')){
|
|
$ret = 'Das Verzeichnis userdata ist nicht schreibbar (Rechte) oder die Festplatte ist voll';
|
|
}
|
|
if(!empty($weburl) && stripos($weburl, 'http') !== 0)
|
|
{
|
|
if(is_file(rtrim($userdatadir,'/').'/'.$tmpfile)){
|
|
unlink(rtrim($userdatadir,'/').'/'.$tmpfile);
|
|
}
|
|
if(method_exists($this->erp, 'setSystemHealth')) {
|
|
$this->erp->setSystemHealth('server', 'userdata_writeable',!empty($ret)?'warning':'ok', $ret);
|
|
}
|
|
return $ret;
|
|
}
|
|
$pos = strpos($weburl,'index.php');
|
|
if($pos){
|
|
$weburl = rtrim(substr($weburl, 0 , $pos),'/');
|
|
}
|
|
$thisfoldera = explode('/',__DIR__);
|
|
$userdataa = explode('/',$this->Conf->WFuserdata);
|
|
foreach($thisfoldera as $k => $v)
|
|
{
|
|
if(isset($userdataa[$k]) && $userdataa[$k] == $v)
|
|
{
|
|
unset($userdataa[$k], $thisfoldera[$k]);
|
|
}
|
|
}
|
|
$userdata = trim(implode('/', $userdataa),'/');
|
|
$thisfolder = trim(implode('/', $thisfoldera),'/');
|
|
if(substr($weburl, - strlen($thisfolder)) == $thisfolder)
|
|
{
|
|
$userdata = substr($weburl , 0, strlen($weburl) - strlen($thisfolder)).$userdata.'/';
|
|
}else
|
|
{
|
|
if(is_file(rtrim($userdatadir,'/').'/'.$tmpfile)){
|
|
unlink(rtrim($userdatadir,'/').'/'.$tmpfile);
|
|
}
|
|
if(method_exists($this->erp, 'setSystemHealth')) {
|
|
$this->erp->setSystemHealth('server', 'userdata_writeable', 'ok');
|
|
}
|
|
return $ret;
|
|
}
|
|
if(is_dir($userdatadir)) {
|
|
$content = @file_get_contents($userdata);
|
|
|
|
if($content != '') {
|
|
if(is_file(rtrim($userdatadir, '/') . '/' . $tmpfile)){
|
|
unlink(rtrim($userdatadir, '/') . '/' . $tmpfile);
|
|
}
|
|
$ret = 'Sicherheitswarnung: Verzeichnis userdata ist von extern einsehbar' . ($ret === '' ? '' : ' und nicht beschreibbar') . '!';
|
|
if(method_exists($this->erp, 'setSystemHealth')){
|
|
$this->erp->setSystemHealth('server', 'userdata_writeable', 'error', $ret);
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
|
|
if(file_put_contents(rtrim($userdatadir,'/').'/'.$tmpfile,'TEST')) {
|
|
if(@file_get_contents($userdata . $tmpfile) === 'TEST') {
|
|
unlink(rtrim($userdatadir, '/') . '/' . $tmpfile);
|
|
$ret = 'Sicherheitswarnung: Verzeichnis userdata ist von extern einsehbar' . ($ret === '' ? '' : ' und nicht beschreibbar') . '!';
|
|
if(method_exists($this->erp, 'setSystemHealth')){
|
|
$this->erp->setSystemHealth('server', 'userdata_writeable', 'error', $ret);
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
unlink(rtrim($userdatadir,'/').'/'.$tmpfile);
|
|
if(method_exists($this->erp, 'setSystemHealth')) {
|
|
$this->erp->setSystemHealth('server', 'userdata_writeable', 'ok');
|
|
}
|
|
return '';
|
|
}
|
|
}
|
|
if(is_file(rtrim($userdatadir,'/').'/'.$tmpfile)){
|
|
unlink(rtrim($userdatadir,'/').'/'.$tmpfile);
|
|
}
|
|
$this->erp->setSystemHealth('server', 'userdata_writeable', 'ok');
|
|
return $ret;
|
|
}
|
|
|
|
public function calledBeforeFinish()
|
|
{
|
|
}
|
|
|
|
public function Laender($module, $action, $id, $lid)
|
|
{
|
|
/*********** select field for projekt ***************/
|
|
$selectid = $this->Secure->GetPOST('projekt');
|
|
if($selectid=='' && $module !== 'projekt') {
|
|
/*
|
|
|
|
Removed because of module tables that have no projekt id
|
|
|
|
if(!empty($this->Conf->WFdbType) && $this->Conf->WFdbType==='postgre')
|
|
{
|
|
//POSTGRE --> dringend bei statements wo es die tabelle gibt machen!
|
|
$selectid = $this->DB->Select("SELECT projekt FROM `$module` WHERE id='$id' LIMIT 1");
|
|
|
|
} else {
|
|
$selectid = $id > 0?$this->DB->Select("SELECT projekt FROM `$module` WHERE id='$id' LIMIT 1"):NULL;
|
|
}*/
|
|
|
|
|
|
}
|
|
|
|
$color_selected = '';
|
|
$options = $this->erp->GetProjektSelect($selectid,'');
|
|
$this->Tpl->Set('EPROO_SELECT_PROJEKT',"<select name=\"projekt\"
|
|
style=\"background-color:$color_selected;\"
|
|
onChange=\"this.style.backgroundColor=this.options[this.selectedIndex].style.backgroundColor\">$options</select>");
|
|
$this->Tpl->Set('EPROO_SELECT_UNTERPROJEKT','<div id="selectunterprojekt">
|
|
<select name="unterprojekt">
|
|
</select>
|
|
</div>');
|
|
|
|
|
|
$this->Tpl->Set('LESEZEICHEN','<a title="Angebot" href="index.php?module=angebot&action=search">Angebotssuche</a> ');
|
|
$this->Tpl->Add('LESEZEICHEN','<a title="Auftrag" href="index.php?module=auftrag&action=search">Auftragssuche</a> ');
|
|
$this->Tpl->Add('LESEZEICHEN','<a title="Rechnung" href="index.php?module=rechnung&action=search">Rechnungssuche</a> ');
|
|
$this->Tpl->Add('LESEZEICHEN','<a title="Adresse" href="index.php?module=adresse&action=search">Adressensuche</a> ');
|
|
$this->Tpl->Add('LESEZEICHEN','<a title="Adresse" href="index.php?module=wareneingang&action=paketannahme">Paket Annahme</a>');
|
|
|
|
$this->Tpl->Set('KURZUEBERSCHRIFT',$module);
|
|
|
|
if($action==='edit'){
|
|
$this->Tpl->Add('KURZUEBERSCHRIFT1', 'BEARBEITEN');
|
|
}
|
|
|
|
$this->Tpl->Set('KURZUEBERSCHRIFTFIRSTUPPER',ucfirst($module));
|
|
|
|
/*********** select field for projekt ***************/
|
|
if($this->Secure->GetPOST('land')=='' && $this->Secure->GetGET('land')=='')
|
|
{
|
|
if(in_array($module, array('adresse', 'adresse_import', 'anfrage', 'angebot', 'ansprechpartner', 'arbeitsnachweis', 'auftrag', 'belege', 'belegegesamt', 'belegeregs', 'bestellung', 'bundesstaaten', 'dokumente', 'gutschrift', 'inventur', 'laendersteuersaetze', 'lieferadressen', 'lieferschein', 'preisanfrage', 'produktion', 'proformarechnung', 'projekt', 'rechnung', 'retoure', 'serviceauftrag', 'shopexport_sprachen', 'shopexport_versandarten', 'spedition', 'spedition_packstuecke', 'steuertexte', 'ustprf', 'verpackungen_details')))
|
|
{
|
|
$countryField = 'land';
|
|
if ($module === 'retoure') {
|
|
$countryField = 'lieferland';
|
|
}
|
|
$sqlCountry = sprintf('SELECT %s FROM `%s` WHERE id = %d LIMIT 1', $countryField, $module, $id);
|
|
$selectid = $id ? $this->DB->Select($sqlCountry) : '';
|
|
}else{
|
|
$selectid = '';
|
|
}
|
|
if(empty($selectid)) {
|
|
$selectid = $lid?$this->DB->Select("SELECT land FROM `lieferadressen` WHERE id='$lid' LIMIT 1"):'';
|
|
}
|
|
}
|
|
else if($this->Secure->GetGET('land')!=''){
|
|
$selectid = $this->Secure->GetGET('land');
|
|
}
|
|
else{
|
|
$selectid = $this->Secure->GetPOST('land');
|
|
}
|
|
|
|
|
|
/*********** select field for projekt ***************/
|
|
if($module==='adresse' && $this->Secure->GetPOST('rechnung_land')=='' && $this->Secure->GetGET('rechnung_land')=='')
|
|
{
|
|
$selectidrechnung = $id?$this->DB->Select("SELECT rechnung_land FROM adresse WHERE id='$id' LIMIT 1"):'';
|
|
}
|
|
else{
|
|
$selectidrechnung = $this->Secure->GetPOST('rechnung_land');
|
|
}
|
|
|
|
/*********** select field for projekt ***************/
|
|
$lid = $this->Secure->GetGET('lid');
|
|
|
|
if($module==='adresse' && $this->Secure->GetPOST('ansprechpartner_land')=='' && $this->Secure->GetGET('ansprechpartner_land')=='')
|
|
{
|
|
$selectidansprechpartner = $lid?$this->DB->Select("SELECT ansprechpartner_land FROM ansprechpartner WHERE id='$lid' LIMIT 1"):'';
|
|
if(empty($selectidansprechpartner)) {
|
|
$selectidansprechpartner = $this->DB->Select("SELECT land FROM adresse WHERE id='$id' LIMIT 1");
|
|
}
|
|
//if($selectid<=0 && $module=="lieferadressepopup") $this->DB->Select("SELECT land FROM `lieferadressen` WHERE id='$id' LIMIT 1");
|
|
}
|
|
else{
|
|
$selectidansprechpartner = $this->Secure->GetPOST('ansprechpartner_land');
|
|
}
|
|
|
|
if($module==='adresse' && $this->Secure->GetPOST('land')=='' && $this->Secure->GetGET('land')=='')
|
|
{
|
|
$selectidlieferadresse = $lid?$this->DB->Select("SELECT land FROM lieferadressen WHERE id='$lid' LIMIT 1"):'';
|
|
if($selectidlieferadresse =='') {
|
|
$selectidlieferadresse = $this->DB->Select("SELECT land FROM adresse WHERE id='$id' LIMIT 1");
|
|
}
|
|
}
|
|
else{
|
|
$selectidlieferadresse = $this->Secure->GetPOST('land');
|
|
}
|
|
|
|
if($module==='proformarechnung' && $this->Secure->GetPOST('verzollungland')=='' && $this->Secure->GetGET('verzollungland')=='')
|
|
{
|
|
$selectidverzollung = $this->DB->Select("SELECT verzollungland FROM proformarechnung WHERE id='$id' LIMIT 1");
|
|
}
|
|
else{
|
|
$selectidverzollung = $this->Secure->GetPOST('land');
|
|
}
|
|
$this->uselaendercache = true;
|
|
$this->Tpl->Set('EPROO_SELECT_LAND',"<select name=\"land\" id=\"land\" [COMMONREADONLYSELECT]>".$this->SelectLaenderliste($selectid)."</select>");
|
|
$this->Tpl->Set('EPROO_SELECT_LIEFERLAND',"<select name=\"lieferland\" id=\"lieferland\" [COMMONREADONLYSELECT]>".$this->SelectLaenderliste($selectid)."</select>");
|
|
$this->Tpl->Set('EPROO_SELECT_LAND_RECHNUNG',"<select name=\"rechnung_land\" id=\"rechnung_land\" [COMMONREADONLYSELECT]>".$this->SelectLaenderliste($selectidrechnung)."</select>");
|
|
$this->Tpl->Set('EPROO_SELECT_LAND_ANSPRECHPARTNER',"<select name=\"ansprechpartner_land\" id=\"ansprechpartner_land\" [COMMONREADONLYSELECT]>".$this->SelectLaenderliste($selectidansprechpartner)."</select>");
|
|
$this->Tpl->Set('EPROO_SELECT_LAND_LIEFERADRESSEN',"<select name=\"land\" id=\"land\" [COMMONREADONLYSELECT]>".$this->SelectLaenderliste($selectidlieferadresse)."</select>");
|
|
$this->Tpl->Set('EPROO_SELECT_LAND_VERZOLLUNG',"<select name=\"verzollungland\" id=\"land\" [COMMONREADONLYSELECT]>".$this->SelectLaenderliste($selectidverzollung)."</select>");
|
|
$this->uselaendercache = false;
|
|
if($this->Secure->GetPOST('lieferland')=='')
|
|
{
|
|
if(in_array($module,array('amazon_inboundshipmentplan', 'angebot', 'auftrag', 'bestellung', 'produktion', 'proformarechnung', 'retoure', 'serviceauftrag', 'spedition')))
|
|
{
|
|
$selectid = $id?$this->DB->Select("SELECT lieferland FROM `$module` WHERE id='$id' LIMIT 1"):'';
|
|
}else {
|
|
$selectid = '';
|
|
}
|
|
}
|
|
else{
|
|
$selectid = $this->Secure->GetPOST('lieferland');
|
|
}
|
|
|
|
$this->Tpl->Set('EPROO_SELECT_LIEFERLAND','<select name="lieferland" id="lieferland" [COMMONREADONLYSELECT]>'.$this->SelectLaenderliste($selectid).'</select>');
|
|
|
|
$this->Tpl->Set('VORGAENGELINK',"<a href=\"#\" onclick=\"var ergebnistext=prompt('Lesezeichen:','".ucfirst($module)."'); if(ergebnistext!='' && ergebnistext!=null) window.location.href='index.php?module=welcome&action=vorgang&titel='+ergebnistext;\">*</a>");
|
|
|
|
|
|
if($module==='adresse' || $module==='artikel' || $module==='angebot' || $module==='rechnung' || $module==='auftrag' || $module==='gutschrift' || $module==='lieferschein'
|
|
|| $module==='onlineshops' || $module==='geschaeftsbrief_vorlagen' || $module==='emailbackup' || $module==='ticket_vorlage')
|
|
{
|
|
// module auf richtige tabellen mappen
|
|
if($module==='onlineshops') {
|
|
$this->erp->Standardprojekt('shopexport',$id);
|
|
}
|
|
else {
|
|
$this->erp->Standardprojekt($module,$id);
|
|
}
|
|
|
|
$bezeichnungaktionscodes = $this->erp->Firmendaten('bezeichnungaktionscodes');
|
|
if((String)$bezeichnungaktionscodes === ''){
|
|
$bezeichnungaktionscodes = 'Aktionscode';
|
|
}
|
|
$this->Tpl->Set('BEZEICHNUNGAKTIONSCODE', $bezeichnungaktionscodes);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @param string $module
|
|
* @param string $action
|
|
* @param int $id
|
|
*/
|
|
public function addPollJs($module, $action, $id)
|
|
{
|
|
$noTimeoutUserEdit = 0;
|
|
$startTime = 3000;
|
|
$repeatTime = 5000;
|
|
$firmendaten_repeattime = 1000*(int)$this->erp->Firmendaten('poll_repeattime');
|
|
if($firmendaten_repeattime > $repeatTime) {
|
|
$repeatTime = $firmendaten_repeattime;
|
|
if($repeatTime > 25000) {
|
|
$repeatTime = 25000;
|
|
}
|
|
}
|
|
$invisibleTime = 25000;
|
|
if(empty($id)
|
|
|| (
|
|
in_array($module, ['auftrag','rechnung','gutschrift','angebot','lieferschein'], false)
|
|
&&
|
|
$this->DB->Select(
|
|
sprintf(
|
|
'SELECT schreibschutz FROM `%s` WHERE id = %d',
|
|
$module,
|
|
$id
|
|
)
|
|
)
|
|
)
|
|
) {
|
|
$noTimeoutUserEdit = 1;
|
|
}
|
|
|
|
|
|
if($action !== 'positionen'){
|
|
$pollUid = sha1(uniqid('poll', true));
|
|
|
|
$this->Tpl->Add('JAVASCRIPT', "
|
|
var logErrorCount = 0;
|
|
var hidden, visibilityChange;
|
|
if (typeof document.hidden !== \"undefined\") { // Opera 12.10 and Firefox 18 and later support
|
|
hidden = \"hidden\";
|
|
visibilityChange = \"visibilitychange\";
|
|
} else if (typeof document.msHidden !== \"undefined\") {
|
|
hidden = \"msHidden\";
|
|
visibilityChange = \"msvisibilitychange\";
|
|
} else if (typeof document.webkitHidden !== \"undefined\") {
|
|
hidden = \"webkitHidden\";
|
|
visibilityChange = \"webkitvisibilitychange\";
|
|
}
|
|
|
|
function showLockScreen(errorMsg) {
|
|
logErrorCount++;
|
|
if (typeof errorMsg !== 'undefined' && errorMsg !== null) {
|
|
console.error('Polling error: ' + errorMsg);
|
|
}
|
|
if (typeof LockScreen === 'undefined') {
|
|
return;
|
|
}
|
|
if(logErrorCount <= 2) {
|
|
return;
|
|
}
|
|
LockScreen.show();
|
|
}
|
|
|
|
function hideLockScreen() {
|
|
if (typeof LockScreen === 'undefined') { return; }
|
|
LockScreen.hide();
|
|
}
|
|
|
|
// Benutzer hat Sperrbildschirm per Button geschlossen
|
|
// => Sperrbildschirm schliessen und Counter zurücksetzen
|
|
function resetLockScreen() {
|
|
if (typeof LockScreen === 'undefined') { return; }
|
|
LockScreen.hide();
|
|
logErrorCount = 0;
|
|
}
|
|
|
|
var isloggedin = true;
|
|
function executeQuery() {
|
|
if(typeof generate == 'undefined'){
|
|
return;
|
|
}
|
|
$.ajax({
|
|
url: 'index.php?module=welcome&action=poll&smodule=$module&cmd=messages&saction=$action&sid=$id&user=" .
|
|
$this->User->GetID().(!empty($noTimeoutUserEdit)?'&nousertimeout=1':'') . "&uid=".$pollUid."',
|
|
type: 'POST',
|
|
data:{
|
|
invisible : typeof document.hidden != 'undefined'?
|
|
(document.hidden?1:0):
|
|
(typeof document.msHidden !== 'undefined'?
|
|
(document.msHidden?1:0):(typeof document.webkitHidden != 'undefined'?(document.webkitHidden?1:0):2))
|
|
},
|
|
success: function(data) {
|
|
if (data === '') {
|
|
showLockScreen('Polling result is empty.');
|
|
return;
|
|
}
|
|
|
|
// do something with the return value here if you like
|
|
try {
|
|
var meinelist = JSON.parse(data);
|
|
} catch (err) {
|
|
showLockScreen('JSON parse error (' + err + ')');
|
|
return;
|
|
}
|
|
logErrorCount = 0;
|
|
// Hide lock screen on successful request
|
|
hideLockScreen();
|
|
|
|
for(var i=0;i<meinelist.length;i++)
|
|
{
|
|
obj = meinelist[i];
|
|
if (typeof obj.event !== 'undefined') {
|
|
switch(obj.event)
|
|
{
|
|
case 'logout':
|
|
isloggedin = false;
|
|
break;
|
|
|
|
case 'chatbox':
|
|
generate('chatbox', obj.message);
|
|
break;
|
|
|
|
case 'notification':
|
|
if (typeof Notify === 'undefined') {
|
|
console.warn('Notify not found.');
|
|
return;
|
|
}
|
|
// Benachrichtigung erstellen
|
|
Notify.create(obj.type, obj.title, obj.message, obj.priority, obj.options);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
},
|
|
error: function(XMLHttpRequest, textStatus, errorThrown) {
|
|
if (XMLHttpRequest.readyState === 4) {
|
|
// HTTP error
|
|
var statusCode = XMLHttpRequest.status;
|
|
var statusText = XMLHttpRequest.statusText;
|
|
showLockScreen('HTTP error (' + statusCode + ' ' + statusText + ')');
|
|
} else if (XMLHttpRequest.readyState === 0) {
|
|
// Network error (connection refused, connection lost, access denied, ...)
|
|
showLockScreen('Network error.');
|
|
} else {
|
|
// Something weird is happening
|
|
showLockScreen('Unknown request error.');
|
|
}
|
|
}
|
|
});
|
|
if(isloggedin){
|
|
setTimeout(executeQuery, (typeof hidden == 'undefined' || !document[hidden])?".$repeatTime.":".$invisibleTime."); // you could choose not to continue on failure...
|
|
}
|
|
else {
|
|
logErrorCount=3;
|
|
showLockScreen('logged out.');
|
|
}
|
|
}
|
|
|
|
$(document).ready(function() {
|
|
// run the first time; all subsequent calls will take care of themselves
|
|
setTimeout(executeQuery, ".$startTime.");
|
|
|
|
// Benutzer kann Sperrbildschirm per Button schliessen
|
|
$(document).on('click', '#lockscreen-close-button', function (e) {
|
|
e.preventDefault();
|
|
resetLockScreen();
|
|
});
|
|
});
|
|
");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
protected function getShortenedUsername(){
|
|
$username = $this->User->GetName();
|
|
$usernameArray = explode(' ', $username);
|
|
$usernameWordsLength = count($usernameArray);
|
|
|
|
// Replace the last part of the username by it's abbreviation; example "Sepp Maier" => "Sepp M."
|
|
if($usernameWordsLength > 1){
|
|
$lastName = array_pop($usernameArray);
|
|
$lastName = mb_substr($lastName, 0, 1) . '.';
|
|
$username = implode(' ', $usernameArray) . ' ' . $lastName;
|
|
}
|
|
|
|
return $username;
|
|
}
|
|
|
|
public function calledWhenAuth($type)
|
|
{
|
|
if(!WithGUI()){
|
|
return;
|
|
}
|
|
$id = $this->Secure->GetGET('id');
|
|
$lid = $this->Secure->GetGET('lid');
|
|
$module = $this->Secure->GetGET('module');
|
|
$action = $this->Secure->GetGET('action');
|
|
|
|
// Check Timeout Users
|
|
$this->DB->Update('UPDATE useronline SET login=0 WHERE DATE_ADD(time,INTERVAL '.(int)$this->Conf->WFconf['logintimeout'].' second) < NOW() AND login=1');
|
|
if($this->DB->affected_rows() > 0) {
|
|
$this->User->createCache();
|
|
}
|
|
|
|
// userd edit ajax call
|
|
// $poll = true;
|
|
if($poll) {
|
|
$this->addPollJs($module, $action, $id);
|
|
}
|
|
|
|
/** @var Ajax $ajax */
|
|
$ajax = $this->loadModule('ajax');
|
|
$this->Tpl->Set('PROFILEPICTURE', $ajax->getProfileHtml($this->User->GetID(), 'Profilbild', null, 38));
|
|
|
|
$this->Tpl->SetText('USERID',$this->User->GetID());
|
|
|
|
$this->Tpl->SetText('USERNAME_SHORTENED',$this->getShortenedUsername());
|
|
$this->Tpl->SetText('BENUTZER',$this->User->GetName());
|
|
$this->Tpl->Set('CALENDERWEEK',date('W'));
|
|
|
|
$this->Tpl->Set('CALENDERWEEKMAX',date('W', date(mktime(0, 0, 0, 1, 1, date('Y')+1) - 4*86400)));
|
|
|
|
$this->Tpl->Set('VERSIONUNDSTATUS','Server: '.$_SERVER['SERVER_NAME'].' | Client: '.$_SERVER [ 'REMOTE_ADDR' ].' | User: '.$this->User->GetDescription());
|
|
$this->Tpl->Set('SERVERDATE','Serverzeit: '.date('d.m.Y H:i').' Uhr');
|
|
|
|
$this->Tpl->SetText('MODUL',ucfirst($module));
|
|
|
|
$this->Tpl->Set('HTMLTITLE','{|[MODUL]|} | OpenXE ');
|
|
|
|
|
|
switch($module)
|
|
{
|
|
case 'artikel':
|
|
switch($action) {
|
|
case 'einkaufeditpopup':
|
|
$artikeltmpid = $this->DB->Select("SELECT artikel FROM einkaufspreise WHERE id='$id' LIMIT 1");
|
|
break;
|
|
case 'verkaufeditpopup':
|
|
$artikeltmpid = $this->DB->Select("SELECT artikel FROM verkaufspreise WHERE id='$id' LIMIT 1");
|
|
break;
|
|
default: $artikeltmpid = $id;
|
|
}
|
|
if (!empty($artikeltmpid)) {
|
|
$this->Tpl->AddText('HTMLTITLE','| '.$this->DB->Select("SELECT CONCAT(nummer,' ',name_de) FROM artikel WHERE id='$artikeltmpid' LIMIT 1"));
|
|
}
|
|
break;
|
|
case 'angebot':
|
|
case 'auftrag':
|
|
case 'rechnung':
|
|
case 'lieferschein':
|
|
case 'gutschrift':
|
|
case 'bestellung':
|
|
case 'anfrage':
|
|
if (!empty($id)) {
|
|
$this->Tpl->AddText('HTMLTITLE','| '.$this->DB->Select("SELECT CONCAT(if(belegnr!='',belegnr,'ENTWURF'),' ',name) FROM $module WHERE id='$id' lIMIT 1"));
|
|
}
|
|
break;
|
|
}
|
|
|
|
$firmenname = $this->erp->Firmendaten('name');
|
|
|
|
$firmenfarbe = $this->erp->Firmendaten('firmenfarbe');
|
|
$this->Tpl->SetText('FIRMENNAME',$firmenname);
|
|
$this->Tpl->Set('NBBREITE','275');
|
|
$this->Tpl->Set('NBPROZ','25');
|
|
|
|
$class = '';
|
|
$checkkommen = $this->DB->Select("SELECT kommen FROM stechuhr WHERE adresse='".$this->User->GetAdresse()."' ORDER by datum DESC LIMIT 1");
|
|
if($checkkommen!=0)
|
|
{
|
|
$kommen = '<a href="#" onclick="if(confirm(\'Status von Arbeit auf Pause / Freizeit ändern?\')) window.location.href=\'index.php?module=stechuhr&action=change&cmd=pause&smodule='.$module.'&saction='.$action.($id?'&sid='.$id:'').'\';"
|
|
> Arbeit </a>';
|
|
}
|
|
else
|
|
{
|
|
$class = 'red';
|
|
$kommen = '<a href="#" onclick="if(confirm(\'Status von Pause / Freizeit auf Arbeit ändern?\')) window.location.href=\'index.php?module=stechuhr&action=change&cmd=arbeit\';"> Pause</a>';
|
|
}
|
|
$this->Tpl->Set('STECHUHRCLASS', $class);
|
|
$this->Tpl->Set('STECHUHR',$kommen);
|
|
|
|
$tmpfirmendatenfkt = 'Firmendaten';
|
|
if(method_exists($this->erp,'TplFirmendaten')){
|
|
$tmpfirmendatenfkt = 'TplFirmendaten';
|
|
}
|
|
$firmenfarbe = $this->erp->$tmpfirmendatenfkt('firmenfarbe');
|
|
if($firmenfarbe ==''){
|
|
$firmenfarbe = '#48494b';
|
|
}
|
|
|
|
$firmenfarbehell = $this->erp->$tmpfirmendatenfkt('firmenfarbehell');
|
|
if($firmenfarbehell ==''){
|
|
$firmenfarbehell = '#c2e3ea';
|
|
}
|
|
|
|
$firmenfarbedunkel = $this->erp->$tmpfirmendatenfkt('firmenfarbedunkel');
|
|
if($firmenfarbedunkel ==''){
|
|
$firmenfarbedunkel = '#53bed0';
|
|
}
|
|
|
|
$firmenfarbeganzdunkel = $this->erp->$tmpfirmendatenfkt('firmenfarbeganzdunkel');
|
|
if($firmenfarbeganzdunkel ==''){
|
|
$firmenfarbeganzdunkel = '#018fa3';
|
|
}
|
|
|
|
$navigationfarbeschrift = $this->erp->$tmpfirmendatenfkt('navigationfarbeschrift');
|
|
if($navigationfarbeschrift ==''){
|
|
$navigationfarbeschrift = '#c9c9cb';
|
|
}
|
|
|
|
$navigationfarbe = $this->erp->$tmpfirmendatenfkt('navigationfarbe');
|
|
if($navigationfarbe ==''){
|
|
$navigationfarbe = $firmenfarbe;
|
|
}
|
|
|
|
$navigationfarbeschrift2 = $this->erp->$tmpfirmendatenfkt('navigationfarbeschrift2');
|
|
if($navigationfarbeschrift2 =='')
|
|
{
|
|
$navigationfarbeschrift2 = $navigationfarbe;
|
|
}
|
|
|
|
$navigationfarbe2 = $this->erp->$tmpfirmendatenfkt('navigationfarbe2');
|
|
if($navigationfarbe2 ==''){
|
|
$navigationfarbe2 = $navigationfarbeschrift;
|
|
}
|
|
|
|
$this->Tpl->Set('COLORCSS','--color1: '.$firmenfarbehell.';'."\r\n");
|
|
$this->Tpl->Add('COLORCSS','--color2: '.$firmenfarbedunkel.';');
|
|
if($this->erp->Firmendaten('firmenhoherformularkontrast'))
|
|
{
|
|
$this->Tpl->Add('COLORCSS','--textfield-border: #666;');
|
|
}else{
|
|
$this->Tpl->Add('COLORCSS','--textfield-border: #d9d9d9;');
|
|
}
|
|
|
|
$this->Tpl->Set('COLORCSSFILE','color3.css');
|
|
|
|
|
|
if(($module!=='welcome' && $action!=='start') && is_file('./themes/new/css/grid_cache.css')){
|
|
$this->Tpl->Add('CSSLINKS', '<link href="./themes/new/css/grid_cache.css" rel="stylesheet" type="text/css" />');
|
|
}
|
|
else{
|
|
$this->Tpl->Add('CSSLINKS', '<link href="./index.php?module=welcome&action=css&file=grid.css" rel="stylesheet" type="text/css" />');
|
|
}
|
|
|
|
if(($module!=='welcome' && $action!=='start') && ($module!=='kalender' && $action!=='list') && is_file('./themes/new/css/style_cache.css')){
|
|
$this->Tpl->Add('CSSLINKS', '<link href="./themes/new/css/style_cache.css" rel="stylesheet" type="text/css" />');
|
|
}
|
|
else{
|
|
$this->Tpl->Add('CSSLINKS', '<link href="./index.php?module=welcome&action=css&file=style.css&submodule=[MODULE]&subaction=[ACTION]&v=2.2" rel="stylesheet" type="text/css" />');
|
|
}
|
|
|
|
if(($module!=='welcome' && $action!=='start') && ($module!=='kalender' && $action!=='list') && is_file('./themes/new/css/popup_cache.css')){
|
|
$this->Tpl->Set('CSSLINKSPOPUP', '<link href="./themes/new/css/popup_cache.css" rel="stylesheet" type="text/css" />');
|
|
}
|
|
else{
|
|
$this->Tpl->Set('CSSLINKSPOPUP', '<link href="./index.php?module=welcome&action=css&file=popup.css&submodule=[MODULE]&subaction=[ACTION]" rel="stylesheet" type="text/css" />');
|
|
}
|
|
|
|
if(is_file('./themes/new/css/custom.css')){
|
|
$this->Tpl->Set('FINALCSSLINKS', '<link href="./themes/new/css/custom.css" rel="stylesheet" type="text/css" />');
|
|
}
|
|
|
|
if(is_file('./js/custom.js')){
|
|
$this->Tpl->Add('CSSLINKS', '<script type="text/javascript" language="javascript" src="./js/custom.js"></script>');
|
|
}
|
|
|
|
|
|
if(is_file('./themes/new/css/custom_popup.css')){
|
|
$this->Tpl->Set('FINALCSSLINKSPOPUP', '<link href="./themes/new/css/custom_popup.css" rel="stylesheet" type="text/css" />');
|
|
}
|
|
|
|
if(!empty($this->Conf->WFtestmode) && $this->Conf->WFtestmode==true)
|
|
{
|
|
$this->Tpl->Set('TPLLOGOFIRMA','./themes/new/images/xentral_logo_testmode.png');
|
|
} elseif(is_file('./themes/new/images/logo_cache.png')){
|
|
$this->Tpl->Set('TPLLOGOFIRMA', './themes/new/images/logo_cache.png');
|
|
}elseif($this->erp->Firmendaten('firmenlogoaktiv')!='1')
|
|
{
|
|
$this->Tpl->Set('TPLLOGOFIRMA', './themes/new/images/openxe_logo.svg');
|
|
}else{
|
|
$this->Tpl->Set('TPLLOGOFIRMA', './index.php?module=welcome&action=logo');
|
|
}
|
|
if($this->erp->Firmendaten('iconset_dunkel')!='1')
|
|
{
|
|
$this->Tpl->Set('HAMBURGERICON','menue_hgr.png');
|
|
$this->Tpl->Set('HAMBURGERICONALT','menue_gr.png');
|
|
}else{
|
|
$this->Tpl->Set('HAMBURGERICON','menue_gr.png');
|
|
$this->Tpl->Set('HAMBURGERICONALT','menue_gr.png');
|
|
}
|
|
$this->Tpl->Set('TPLNAVIGATIONFARBE',$navigationfarbe);
|
|
$this->Tpl->Set('TPLNAVIGATIONFARBE2',$navigationfarbe2);
|
|
$this->Tpl->Set('TPLNAVIGATIONFARBESCHRIFT',$navigationfarbeschrift);
|
|
$this->Tpl->Set('TPLNAVIGATIONFARBESCHRIFT2',$navigationfarbeschrift2);
|
|
$this->Tpl->Set('TPLUNTERNAVIGATIONFARBE',$this->erp->$tmpfirmendatenfkt('unternavigationfarbe'));
|
|
$this->Tpl->Set('TPLUNTERNAVIGATIONFARBESCHRIFT',$this->erp->$tmpfirmendatenfkt('unternavigationfarbeschrift'));
|
|
|
|
$bordertabnav = 0;
|
|
if($this->erp->Firmendaten('bordertabnav')){
|
|
$bordertabnav = 1;
|
|
}
|
|
$this->Tpl->Set('TPLBORDERTABNAV',$bordertabnav);
|
|
}
|
|
|
|
/**
|
|
* Draw Warning and Info-Boxes
|
|
*/
|
|
public function HeaderBoxen()
|
|
{
|
|
$themeheader = '';
|
|
|
|
if($this->User->GetType() === 'admin') {
|
|
if(method_exists($this->erp,'setSystemHealth')) {
|
|
$letzteraufruf = $this->erp->GetKonfiguration('prozessstarter_letzteraufruf');
|
|
$diff = time() - strtotime($letzteraufruf);
|
|
$lastRunning = date('d.m.Y H:i:s', strtotime($letzteraufruf));
|
|
if($diff > 60 * 5 + 1) // mit sicherheitsabstand :-)
|
|
{
|
|
$status = 'warning';
|
|
}
|
|
else{
|
|
$status = 'ok';
|
|
}
|
|
$this->erp->setSystemHealth(
|
|
'cronjobs', 'lastrunning', $status, 'Letzte Ausführung: ' . $lastRunning
|
|
);
|
|
}
|
|
|
|
if($this->erp->GetKonfiguration('eproosystem_skipcheckuserdata') != '1') {
|
|
$time = microtime(true);
|
|
$this->CheckUserdata();
|
|
if(microtime(true) - $time > 5) {
|
|
$this->erp->SetKonfigurationValue('eproosystem_skipcheckuserdata', '1');
|
|
}
|
|
}
|
|
if(!$this->erp->ServerOK()) {
|
|
$serverlist = $this->erp->GetIoncubeServerList();
|
|
if(method_exists($this->erp, 'setSystemHealth')) {
|
|
$this->erp->setSystemHealth(
|
|
'server',
|
|
'ioncube',
|
|
'error',
|
|
'Die Ioncube-Lizenz ist nur gültig für folgene'.
|
|
(count($serverlist) == 1?'n':'').' Server: '.implode(', ',$serverlist)
|
|
);
|
|
}
|
|
}
|
|
else {
|
|
$expDays = erpAPI::Ioncube_ExpireInDays();
|
|
$testLicence = erpAPI::Ioncube_Property('testlizenz');
|
|
if(!$testLicence && $expDays !== false && $expDays < 14) {
|
|
$this->erp->setSystemHealth(
|
|
'server',
|
|
'ioncube',
|
|
'error',
|
|
sprintf(
|
|
'Die Lizenz am %s aus.',
|
|
erpAPI::Ioncube_ExpireDate()
|
|
)
|
|
);
|
|
}
|
|
else{
|
|
$this->erp->setSystemHealth(
|
|
'server',
|
|
'ioncube',
|
|
'ok',
|
|
''
|
|
);
|
|
}
|
|
}
|
|
if ($this->ModuleScriptCache->IsCacheDirWritable() === false) {
|
|
$this->erp->setSystemHealth(
|
|
'server',
|
|
'cache',
|
|
'error',
|
|
'Cache-Verzeichnis ist nicht beschreibbar! Bitte <code>/www/cache/</code> beschreibbar machen.</div >'
|
|
);
|
|
}
|
|
else {
|
|
$this->erp->setSystemHealth(
|
|
'server',
|
|
'cache',
|
|
'ok',
|
|
'Cache-Verzeichnis ist beschreibbar.'
|
|
);
|
|
}
|
|
}
|
|
|
|
$this->Tpl->Add('THEMEHEADER', $themeheader);
|
|
$doppeltenummerncheckCronjob = $this->DB->Select(
|
|
"SELECT id FROM prozessstarter WHERE parameter = 'doppeltenummerncheck' AND aktiv = 1 LIMIT 1"
|
|
);
|
|
if(!$doppeltenummerncheckCronjob
|
|
&& $this->erp->RechteVorhanden('mhdwarning','list') && $this->erp->Firmendaten('modul_mhd')=='1') {
|
|
$checkmhd = $this->DB->SelectArrCache(
|
|
'SELECT ROUND(SUM(menge),0)
|
|
FROM lager_mindesthaltbarkeitsdatum
|
|
WHERE DATEDIFF(NOW(),mhddatum) > 0',
|
|
$doppeltenummerncheckCronjob?86400:300,
|
|
'mhdwarning'
|
|
);
|
|
if(!empty($checkmhd)) {
|
|
$checkmhd = reset($checkmhd);
|
|
if(!empty($checkmhd)) {
|
|
$checkmhd = reset($checkmhd);
|
|
}
|
|
}
|
|
$checkmhd = round($checkmhd);
|
|
|
|
$checkmhdwarnung = $this->DB->SelectArrCache(
|
|
'SELECT ROUND(SUM(menge),0)
|
|
FROM lager_mindesthaltbarkeitsdatum
|
|
WHERE DATEDIFF(NOW(),mhddatum) + '.($this->erp->Firmendaten('mhd_warnung_tage')+1).' > 0',
|
|
$doppeltenummerncheckCronjob?86400:3600,
|
|
'mhdwarning'
|
|
);
|
|
if(!empty($checkmhdwarnung)) {
|
|
$checkmhdwarnung = reset($checkmhdwarnung);
|
|
if(!empty($checkmhdwarnung)) {
|
|
$checkmhdwarnung = reset($checkmhdwarnung);
|
|
}
|
|
}
|
|
$checkmhdwarnung = round($checkmhdwarnung);
|
|
|
|
$checkmhdwarnung -= $checkmhd;
|
|
|
|
if($checkmhd > 0 || $checkmhdwarnung > 0) {
|
|
$this->erp->SetKonfigurationValue('eproosystem_mhdwarning', 1);
|
|
|
|
$module = $this->Secure->GetGET('module');
|
|
if(!$doppeltenummerncheckCronjob) {
|
|
if($module === 'lager' || $module === 'mhdwarning' || $module === 'lagermobil'){
|
|
if($this->erp->GetKonfiguration('eproosystem_mhdwarning')){
|
|
$this->erp->ClearSqlCache('mhdwarning', 120);
|
|
}else{
|
|
$this->erp->ClearSqlCache('mhdwarning', 600);
|
|
}
|
|
}
|
|
}
|
|
if($checkmhd <=0) {
|
|
$checkmhd=0;
|
|
}
|
|
if($checkmhd==1) {
|
|
$ist = 'ist';
|
|
}
|
|
else {
|
|
$ist='sind';
|
|
}
|
|
$type = 'warning';
|
|
$link = '<a href="index.php?module=mhdwarning&action=list">Prüfen</a>';
|
|
if($checkmhdwarnung) {
|
|
$text="$checkmhdwarnung Artikel laufen bald ab.";
|
|
}
|
|
if($checkmhd) {
|
|
$type = 'error';
|
|
$text2="$checkmhd Artikel $ist abgelaufen!";
|
|
}
|
|
if(!empty($text) && !empty($text2)) {
|
|
$text_out = $text.'<br>'.$text2.' '.$link;
|
|
}
|
|
elseif(!empty($text) && empty($text2)) {
|
|
$text_out = $text.' '.$link;
|
|
}
|
|
else {
|
|
$text_out = $text2.' '.$link;
|
|
}
|
|
if(method_exists($this->erp,'setSystemHealth')){
|
|
$this->erp->setSystemHealth(
|
|
'bestbeforebatchsn', 'bestbefore', $type,
|
|
'<b>Mindesthaltbarkeitsdatum:</b> ' . $text_out
|
|
);
|
|
}
|
|
}
|
|
else {
|
|
if(method_exists($this->erp,'setSystemHealth')) {
|
|
$this->erp->setSystemHealth('bestbeforebatchsn', 'bestbefore', 'ok');
|
|
}
|
|
$this->erp->SetKonfigurationValue('eproosystem_mhdwarning', 0);
|
|
}
|
|
}
|
|
|
|
if($this->erp->Firmendaten('warnung_doppelte_nummern')=='1') {
|
|
if(method_exists($this->erp, 'ClearSqlCache')
|
|
&& $this->Secure->GetGET('action') === 'edit'
|
|
&& !$doppeltenummerncheckCronjob
|
|
) {
|
|
$module = $this->Secure->GetGET('module');
|
|
switch($module) {
|
|
case 'artikel':
|
|
case 'rechnung':
|
|
case 'gutschrift':
|
|
case 'adresse':
|
|
if($this->erp->GetKonfiguration('eproosystem_'.$module)) {
|
|
$this->erp->ClearSqlCache($module, 60);
|
|
}
|
|
else {
|
|
$this->erp->ClearSqlCache($module, 120);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
$link = '<a href="index.php?module=doppelte_nummern&action=list" target="_blank">';
|
|
|
|
$belege = '';
|
|
$gutschrift_check = 0;
|
|
$rechnung_check = 0;
|
|
$kundennummer_check = 0;
|
|
if(!$doppeltenummerncheckCronjob){
|
|
$check_double_doppeltekundennummer = $this->DB->SelectArrCache(
|
|
"SELECT adr.kundennummer,count(adr.id) as NumOccurrences
|
|
FROM adresse adr
|
|
LEFT JOIN projekt pr ON adr.projekt = pr.id
|
|
WHERE adr.geloescht = 0 AND (adr.projekt = 0 OR pr.eigenernummernkreis = 0) AND adr.kundennummer <> ''
|
|
GROUP BY adr.kundennummer
|
|
HAVING COUNT(adr.kundennummer) > 1
|
|
LIMIT 100",
|
|
$doppeltenummerncheckCronjob ? 86400 : 300,
|
|
'adresse'
|
|
);
|
|
if($check_double_doppeltekundennummer && count($check_double_doppeltekundennummer)>0) {
|
|
$this->erp->SetKonfigurationValue('eproosystem_adresse', 1);
|
|
$ccheck_double_doppeltekundennummer = count($check_double_doppeltekundennummer);
|
|
for($icheck=0;$icheck<$ccheck_double_doppeltekundennummer;$icheck++) {
|
|
$belege .= ' ' . $check_double_doppeltekundennummer[$icheck]['kundennummer'];
|
|
}
|
|
|
|
$gesamt_gutschrift= count($check_double_doppeltekundennummer);
|
|
if(method_exists($this->erp,'setSystemHealth')) {
|
|
$this->erp->setSystemHealth('masterdata', 'double_customernumber', 'error',
|
|
$link.'<b>Achtung: Doppelte Kundennummern!</b> (Gesamt '.
|
|
$gesamt_gutschrift.') <span title="Kundennummern: '.$belege.'">*</span>'.
|
|
($link?'</a>':'')
|
|
);
|
|
}
|
|
$kundennummer_check=1;
|
|
}
|
|
else {
|
|
$this->erp->SetKonfigurationValue('eproosystem_adresse', 0);
|
|
if(method_exists($this->erp,'setSystemHealth')) {
|
|
$this->erp->setSystemHealth('masterdata', 'double_customernumber', 'ok');
|
|
}
|
|
}
|
|
}
|
|
if(!$doppeltenummerncheckCronjob){
|
|
$check_double_gutschrift = $this->DB->SelectArrCache(
|
|
"SELECT b.belegnr, COUNT(b.belegnr) AS NumOccurrences
|
|
FROM gutschrift b
|
|
LEFT JOIN projekt pr ON b.projekt = pr.id
|
|
WHERE b.status!='angelegt' AND b.belegnr <> ''
|
|
GROUP BY b.belegnr, if(ifnull(pr.eigenernummernkreis,0) = 0,0,pr.id)
|
|
HAVING ( COUNT(b.belegnr) > 1 )",
|
|
$doppeltenummerncheckCronjob ? 86400 : 600,
|
|
'gutschrift'
|
|
);
|
|
|
|
if($check_double_gutschrift && count($check_double_gutschrift) > 0){
|
|
$this->erp->SetKonfigurationValue('eproosystem_gutschrift', 1);
|
|
$ccheck_double_gutschrift = count($check_double_gutschrift);
|
|
for ($icheck = 0; $icheck < $ccheck_double_gutschrift; $icheck++) {
|
|
$belege .= ' ' . $check_double_gutschrift[$icheck]['belegnr'];
|
|
}
|
|
|
|
if(trim($belege) == ''){
|
|
$belege = 'ohne Nummer';
|
|
}
|
|
|
|
$gesamt_gutschrift = count($check_double_gutschrift);
|
|
|
|
if(method_exists($this->erp, 'setSystemHealth')){
|
|
$this->erp->setSystemHealth(
|
|
'masterdata', 'double_return_order', 'error',
|
|
$link . '<b>Achtung: Doppelte Gutschriftsnummern!</b> (Gesamt ' .
|
|
$gesamt_gutschrift . ') <span title="Belege: ' . $belege . '">*</span>' .
|
|
($link ? '</a>' : '')
|
|
);
|
|
}
|
|
$gutschrift_check = 1;
|
|
}else{
|
|
if(method_exists($this->erp, 'setSystemHealth')){
|
|
$this->erp->setSystemHealth('masterdata', 'double_return_order', 'ok', '');
|
|
}
|
|
$this->erp->SetKonfigurationValue('eproosystem_gutschrift', 0);
|
|
}
|
|
$check_double_gutschrift = null;
|
|
|
|
$check_double_rechnungen = $this->DB->SelectArrCache(
|
|
"SELECT b.belegnr, COUNT(b.belegnr) AS NumOccurrences
|
|
FROM rechnung b
|
|
LEFT JOIN projekt pr ON b.projekt = pr.id WHERE b.status!='angelegt' AND b.belegnr <> ''
|
|
GROUP BY b.belegnr, if(ifnull(pr.eigenernummernkreis,0) = 0,0,pr.id)
|
|
HAVING ( COUNT(b.belegnr) > 1 )",
|
|
$doppeltenummerncheckCronjob ? 86400 : 120,
|
|
'rechnung'
|
|
);
|
|
if($check_double_rechnungen && count($check_double_rechnungen) > 0){
|
|
$this->erp->SetKonfigurationValue('eproosystem_rechnung', 1);
|
|
$gesamt_rechnungen = count($check_double_rechnungen);
|
|
for ($icheck = 0; $icheck < $gesamt_rechnungen; $icheck++) {
|
|
$belege .= ' ' . $check_double_rechnungen[$icheck]['belegnr'];
|
|
}
|
|
|
|
if(trim($belege) === ''){
|
|
$belege = 'ohne Nummer';
|
|
}
|
|
if(method_exists($this->erp, 'setSystemHealth')){
|
|
$this->erp->setSystemHealth(
|
|
'masterdata', 'double_invoice', 'error',
|
|
$link . '<b>Achtung: Doppelte Rechnungsnummern!</b> (Gesamt ' .
|
|
$gesamt_rechnungen . ') <span title="Belege: ' . $belege . '">*</span></div>' .
|
|
($link ? '</a>' : '')
|
|
);
|
|
}
|
|
|
|
$rechnung_check = 1;
|
|
}else{
|
|
$this->erp->SetKonfigurationValue('eproosystem_rechnung', 0);
|
|
if(method_exists($this->erp, 'setSystemHealth')){
|
|
$this->erp->setSystemHealth('masterdata', 'double_invoice', 'ok', '');
|
|
}
|
|
}
|
|
$check_double_rechnungen = null;
|
|
|
|
if($this->DB->SelectArrCache("SELECT id FROM artikel WHERE nummer = '' AND ifnull(geloescht,0) = 0 LIMIT 1", 120, 'artikel')){
|
|
if(method_exists($this->erp, 'setSystemHealth')){
|
|
$this->erp->setSystemHealth('masterdata', 'empty_articlenumber', 'error', 'Achtung Es existieren Artikel ohne Artikelnummer');
|
|
}
|
|
}else{
|
|
if(method_exists($this->erp, 'setSystemHealth')){
|
|
$this->erp->setSystemHealth('masterdata', 'empty_articlenumber', 'ok', '');
|
|
}
|
|
}
|
|
|
|
$check_double_artikel = $this->DB->SelectArrCache(
|
|
"SELECT art.nummer, count(art.nummer) as NumOccurrences
|
|
FROM artikel art
|
|
LEFT JOIN projekt pr ON art.projekt = pr.id
|
|
WHERE art.geloescht <> '1' AND art.nummer <> '' AND art.nummer <> 'DEL'
|
|
GROUP BY art.nummer,if(ifnull(pr.eigenernummernkreis,0) = 0,0,pr.id)
|
|
HAVING (COUNT(art.nummer) > 1)
|
|
LIMIT 101",
|
|
$doppeltenummerncheckCronjob ? 86400 : 600,
|
|
'artikel'
|
|
);
|
|
|
|
if(!empty($check_double_artikel) && count($check_double_artikel) > 0){
|
|
$this->erp->SetKonfigurationValue('eproosystem_artikel', 1);
|
|
$gesamt_artikel = count($check_double_artikel);
|
|
$gcount = $gesamt_artikel;
|
|
if($gcount > 10){
|
|
$gcount = 10;
|
|
}
|
|
for ($icheck = 0; $icheck < $gcount; $icheck++) {
|
|
$belege .= ' ' . $check_double_artikel[$icheck]['nummer'];
|
|
}
|
|
if($gesamt_artikel > $gcount){
|
|
$belege .= ' ...';
|
|
}
|
|
|
|
if(method_exists($this->erp, 'setSystemHealth')){
|
|
$this->erp->setSystemHealth('masterdata', 'double_articlenumber', 'error',
|
|
$link . '<b>Achtung: Doppelte Artikelnummern!</b> (Gesamt ' .
|
|
$gesamt_artikel . ') <span title="Artikelnummern: ' . $belege . '">*</span>' .
|
|
($link ? '</a>' : '')
|
|
);
|
|
}
|
|
}else{
|
|
$this->erp->SetKonfigurationValue('eproosystem_artikel', 0);
|
|
if(method_exists($this->erp, 'setSystemHealth')){
|
|
$this->erp->setSystemHealth('masterdata', 'double_articlenumber', 'ok', '');
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if(!$doppeltenummerncheckCronjob && $this->erp->Firmendaten('warnung_doppelte_seriennummern')=='1') {
|
|
$sql = "SELECT art.id,art.nummer,
|
|
s.seriennummer, s.anzahl
|
|
FROM artikel art INNER JOIN (
|
|
(
|
|
SELECT artikel, seriennummer, count(id) as anzahl, 0 as lieferschein, '' as belegnr FROM lager_seriennummern WHERE seriennummer <> ''
|
|
GROUP BY seriennummer, artikel HAVING count(id) > 1
|
|
)
|
|
UNION ALL
|
|
(
|
|
SELECT t3.artikel, t3.wert, sum(t3.anzahl) ,max(t3.lieferschein), max(t3.belegnr) FROM
|
|
(
|
|
(
|
|
SELECT lp.artikel, s.wert , count(s.id) as anzahl, max(l.id) as lieferschein, max(l.belegnr) as belegnr
|
|
FROM `beleg_chargesnmhd` s
|
|
INNER JOIN lieferschein_position lp ON s.doctype = 'lieferschein' AND s.pos = lp.id AND s.type = 'sn' AND s.wert <> ''
|
|
INNER JOIN lieferschein l ON lp.lieferschein = l.id AND l.status <> 'storniert'
|
|
GROUP BY s.wert, lp.artikel
|
|
)
|
|
UNION ALL (
|
|
|
|
|
|
SELECT lp.artikel, s.seriennummer as wert , count(s.id) as anzahl, max(l.id) as lieferschein, max(l.belegnr) as belegnr
|
|
FROM `seriennummern` s
|
|
INNER JOIN lieferschein_position lp ON s.lieferscheinpos = lp.id
|
|
INNER JOIN lieferschein l ON lp.lieferschein = l.id WHERE s.seriennummer <> ''
|
|
GROUP BY s.seriennummer, lp.artikel
|
|
|
|
|
|
)) t3 GROUP BY t3.artikel, t3.wert HAVING sum(t3.anzahl) > 1
|
|
)
|
|
) s ON art.id = s.artikel GROUP BY art.id, s.seriennummer HAVING max(anzahl) > 1 ";
|
|
$doppeltebelege = $this->DB->SelectArrCache($sql,$doppeltenummerncheckCronjob?86400:300,'artikel');
|
|
|
|
if(!empty($doppeltebelege)) {
|
|
$this->erp->SetKonfigurationValue('eproosystem_artikel', 1);
|
|
$gesamt_artikel = 0;
|
|
$gcount = 0;
|
|
|
|
$gesamt_artikel2 = count($doppeltebelege);
|
|
if($gcount < 10) {
|
|
$gcount2 = $gesamt_artikel2;
|
|
if($gesamt_artikel2 + $gcount > 10){
|
|
$gcount2 = 10 - $gcount;
|
|
}
|
|
for($icheck=0;$icheck<$gcount2;$icheck++) {
|
|
if(!isset($arts)){
|
|
$arts = '';
|
|
}
|
|
$arts .=' '.$doppeltebelege[$icheck]['nummer'].':'.$doppeltebelege[$icheck]['seriennummer'];
|
|
}
|
|
}
|
|
|
|
$link = '';
|
|
if($this->erp->RechteVorhanden('doppelte_nummern','list')) {
|
|
$link = '<a href="index.php?module=doppelte_nummern&action=list#tabs-2" target="_blank">';
|
|
}
|
|
|
|
if(method_exists($this->erp,'setSystemHealth')){
|
|
$this->erp->setSystemHealth(
|
|
'bestbeforebatchsn', 'sn', 'error',
|
|
$link.'<b>Achtung: Doppelte Seriennummern!</b> (Gesamt '.
|
|
($gesamt_artikel+$gesamt_artikel2).')'.($link?'</a>':'')
|
|
);
|
|
}
|
|
}
|
|
else {
|
|
if(method_exists($this->erp,'setSystemHealth')){
|
|
$this->erp->setSystemHealth('bestbeforebatchsn', 'sn', 'ok', '');
|
|
}
|
|
}
|
|
}
|
|
|
|
if($this->erp instanceof erpAPICustom
|
|
&& $this->User->GetType() === 'admin'
|
|
&& method_exists('erpAPICustom', 'AllowedVersion')) {
|
|
try {
|
|
$allowedmethod = new ReflectionMethod('erpAPICustom', 'AllowedVersion');
|
|
if($allowedmethod->isStatic()){
|
|
$allowed = erpAPICustom::AllowedVersion();
|
|
$version_revision = null;
|
|
include dirname(__DIR__) . '/version.php';
|
|
if(isset($version_revision) && ((isset($allowed['max']) && ((float)$allowed['max'] < (float)$version_revision))
|
|
||
|
|
(isset($allowed['versionen']) && (
|
|
(is_array($allowed['versionen']) && !in_array($version_revision, $allowed['versionen']))
|
|
|| (!is_array($allowed['versionen']) && $allowed['versionen'] != $version_revision)
|
|
))
|
|
|
|
)){
|
|
$this->Tpl->Add('THEMEHEADER', '<div class="headererror">Die Datei class.erpapi_custom.php auf Ihrem System, ist nicht für Ihre Version geeignet</div>');
|
|
}
|
|
}
|
|
}
|
|
catch (Exception $e) {
|
|
|
|
}
|
|
}
|
|
if($this->Secure->GetPOST('deactivate_maintenance')) {
|
|
$tags = json_encode('update');
|
|
$this->DB->Delete("DELETE FROM notification_message WHERE tags = '$tags'");
|
|
$this->erp->SetKonfigurationValue('update_maintenance',0);
|
|
}
|
|
|
|
$anznachrichtenboxen = 0;
|
|
$this->erp->RunHook('eproosystem_iconboxes_start', 1, $anznachrichtenboxen);
|
|
|
|
if($this->erp->ModulVorhanden('chat') && $this->erp->RechteVorhanden('chat','list')) {
|
|
$userId = $this->User->GetID();
|
|
$registrierDatum = $this->DB->Select("SELECT u.logdatei FROM `user` AS u WHERE u.id='".$userId."'");
|
|
|
|
$ungelesenOeffentlich = (int)$this->DB->Select(
|
|
"SELECT COUNT(c.id)
|
|
FROM chat AS c
|
|
LEFT JOIN chat_gelesen AS g ON c.id = g.message AND (g.user = '".$userId."' OR g.user = 0)
|
|
WHERE c.user_to='0' AND c.zeitstempel > '".$registrierDatum."'
|
|
AND g.id IS NULL"
|
|
);
|
|
$ungelesenPrivat = (int)$this->DB->Select(
|
|
"SELECT COUNT(c.id)
|
|
FROM chat AS c
|
|
INNER JOIN `user` AS u ON c.user_from = u.id
|
|
LEFT JOIN chat_gelesen AS g ON c.id = g.message
|
|
WHERE u.activ = 1 AND c.user_to='".$userId."'
|
|
AND g.id IS NULL"
|
|
);
|
|
$anzchat = $ungelesenOeffentlich + $ungelesenPrivat;
|
|
$this->Tpl->Set('CHATNACHRICHTENBOXCOUNTER',$anzchat > 0?$anzchat:'');
|
|
|
|
if($this->DB->Select("SELECT chat_popup FROM `user` WHERE id = '".$userId."' LIMIT 1")) {
|
|
$this->Tpl->Set('CHATLINK','href="index.php?module=chat&action=list" target="_blank" ');
|
|
}
|
|
else {
|
|
$this->Tpl->Set('CHATLINK','href="index.php?module=chat&action=list"');
|
|
}
|
|
}
|
|
else {
|
|
$this->Tpl->Set('VORCHATNACHRICHTENBOX','<!--');
|
|
$this->Tpl->Set('NACHCHATNACHRICHTENBOX','-->');
|
|
}
|
|
|
|
if(!empty(erpAPI::Ioncube_Property('testlizenz'))){
|
|
$upgradeButton = '<li id="upgrade-licence"><a href="./index.php?module=appstore&action=buy">'.
|
|
'<svg width="18" height="16" viewBox="0 0 18 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
<path d="M4.47287 12.0104C2.04566 9.80074 1.66708 6.11981 3.59372 3.46237C5.52036 0.804943 9.13654 0.0202146 11.9914 1.64005" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
|
|
<path d="M2.21273 11.9649C1.39377 13.3996 1.11966 14.513 1.58214 14.9761C2.2843 15.6776 4.48124 14.6858 7.02522 12.6684" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
|
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.93719 12.1581L7.52014 9.74109L12.8923 4.3689C13.3305 3.93091 13.8797 3.62049 14.481 3.47095L15.863 3.12392C16.0571 3.07558 16.2623 3.1325 16.4037 3.27392C16.5451 3.41534 16.602 3.62054 16.5537 3.8146L16.208 5.19732C16.0578 5.7984 15.7469 6.34731 15.3087 6.78527L9.93719 12.1581Z" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
|
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.51976 9.7409L5.54021 9.08128C5.44619 9.05019 5.37505 8.97252 5.35233 8.87613C5.32961 8.77974 5.35857 8.67847 5.42881 8.60867L6.11882 7.91866C6.7306 7.30697 7.63548 7.09343 8.45619 7.36706L9.53644 7.72625L7.51976 9.7409Z" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
|
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.93713 12.1584L10.5968 14.1386C10.6278 14.2326 10.7055 14.3038 10.8019 14.3265C10.8983 14.3492 10.9996 14.3203 11.0694 14.25L11.7594 13.56C12.3711 12.9482 12.5846 12.0434 12.311 11.2226L11.9518 10.1424L9.93713 12.1584Z" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
|
|
</svg>
|
|
'.
|
|
'<span>Upgrade</span></a></li>';
|
|
|
|
$this->Tpl->Set('UPGRADELICENCECTA', $upgradeButton);
|
|
}
|
|
|
|
if(!$this->erp->ModulVorhanden('aufgaben') || !$this->erp->RechteVorhanden('aufgaben','list')) {
|
|
$this->Tpl->Set('AUFGABENVOR','<!--');
|
|
$this->Tpl->Set('AUFGABENNACH','-->');
|
|
}
|
|
else {
|
|
$anznachrichtenboxen++;
|
|
}
|
|
if($this->erp->ModulVorhanden('ticket') || $this->erp->RechteVorhanden('ticket','offene')) {
|
|
$anznachrichtenboxen++;
|
|
}
|
|
if(!$this->erp->ModulVorhanden('telefonrueckruf') || !$this->erp->RechteVorhanden('telefonrueckruf','list')) {
|
|
$this->Tpl->Set('TELEFONVOR','<!--');
|
|
$this->Tpl->Set('TELEFONNACH','-->');
|
|
}
|
|
else {
|
|
$anznachrichtenboxen++;
|
|
}
|
|
|
|
$this->erp->RunHook('eproosystem_iconboxes', 1, $anznachrichtenboxen);
|
|
|
|
if($anznachrichtenboxen < 3) {
|
|
if($anznachrichtenboxen == 2) {
|
|
$this->Tpl->Set('NBBREITE','207');
|
|
$this->Tpl->Set('NBPROZ','33');
|
|
}
|
|
elseif($anznachrichtenboxen == 1) {
|
|
$this->Tpl->Set('NBBREITE','139');
|
|
$this->Tpl->Set('NBPROZ','50');
|
|
}
|
|
else {
|
|
$this->Tpl->Set('NBBREITE','71');
|
|
$this->Tpl->Set('NBPROZ','100');
|
|
}
|
|
}
|
|
|
|
$anzahltickets = $this->erp->AnzahlOffeneAufgaben();
|
|
if($anzahltickets<=0) {
|
|
$this->Tpl->Set('ANZAHLAUFGABEN','');
|
|
}
|
|
else {
|
|
$this->Tpl->Set('ANZAHLAUFGABEN',$anzahltickets);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* @param string $isocode
|
|
* @param string $sprache
|
|
*
|
|
* @return string
|
|
*/
|
|
public function GetLandLang($isocode,$sprache='')
|
|
{
|
|
$flipped = array_flip($this->GetLaender($sprache));
|
|
if(isset($flipped[$isocode])){
|
|
return $flipped[$isocode];
|
|
}
|
|
|
|
return '';
|
|
}
|
|
|
|
public function GetLaender($sprache='deutsch')
|
|
{
|
|
if($sprache!=='deutsch' && $sprache!=='englisch'){
|
|
$sprache = 'deutsch';
|
|
}
|
|
|
|
if($sprache==='deutsch'){
|
|
if(empty($this->uselaendercache) || empty($this->laendercache['deutsch'])){
|
|
$tmp = $this->DB->SelectArr('SELECT bezeichnung_de,iso FROM laender ORDER by bezeichnung_de');
|
|
$this->laendercache['deutsch'] = $tmp;
|
|
}else{
|
|
$tmp = $this->laendercache['deutsch'];
|
|
}
|
|
}
|
|
elseif(empty($this->uselaendercache) || empty($this->laendercache['englisch'])){
|
|
$tmp = $this->DB->SelectArr('SELECT bezeichnung_en,iso FROM laender ORDER by bezeichnung_en');
|
|
$this->laendercache['englisch'] = $tmp;
|
|
}else{
|
|
$tmp = $this->laendercache['englisch'];
|
|
}
|
|
if(!empty($tmp)){
|
|
$ctmp = count($tmp);
|
|
$laender = [];
|
|
for ($i = 0; $i < $ctmp; $i++) {
|
|
switch ($sprache) {
|
|
case 'deutsch':
|
|
$laender[$tmp[$i]['bezeichnung_de']] = $tmp[$i]['iso'];
|
|
break;
|
|
case 'englisch':
|
|
$laender[$tmp[$i]['bezeichnung_en']] = $tmp[$i]['iso'];
|
|
break;
|
|
default:
|
|
$laender[$tmp[$i]['bezeichnung_de']] = $tmp[$i]['iso'];
|
|
}
|
|
}
|
|
return $laender;
|
|
}
|
|
|
|
$laender = array(
|
|
'Afghanistan' => 'AF',
|
|
'Ägypten' => 'EG',
|
|
'Albanien' => 'AL',
|
|
'Algerien' => 'DZ',
|
|
'Amerikanische Jungferninseln' => 'VI',
|
|
'Andorra' => 'AD',
|
|
'Angola' => 'AO',
|
|
'Anguilla' => 'AI',
|
|
'Antarktis' => 'AQ',
|
|
'Antigua und Barbuda' => 'AG',
|
|
'Äquatorialguinea' => 'GQ',
|
|
'Argentinien' => 'AR',
|
|
'Armenien' => 'AM',
|
|
'Aruba' => 'AW',
|
|
'Aserbaidschan' => 'AZ',
|
|
'Äthiopien' => 'ET',
|
|
'Australien' => 'AU',
|
|
'Bahamas' => 'BS',
|
|
'Bahrain' => 'BH',
|
|
'Bangladesch' => 'BD',
|
|
'Barbados' => 'BB',
|
|
'Belgien' => 'BE',
|
|
'Belize' => 'BZ',
|
|
'Benin' => 'BJ',
|
|
'Bermuda' => 'BM',
|
|
'Bhutan' => 'BT',
|
|
'Bolivien' => 'BO',
|
|
'Bosnien und Herzegowina' => 'BA',
|
|
'Botswana' => 'BW',
|
|
'Bouvetinsel' => 'BV',
|
|
'Brasilien' => 'BR',
|
|
'Britisch-Indischer Ozean' => 'IO',
|
|
'Britische Jungferninseln' => 'VG',
|
|
'Brunei Darussalam' => 'BN',
|
|
'Bulgarien' => 'BG',
|
|
'Burkina Faso' => 'BF',
|
|
'Burundi' => 'BI',
|
|
'Chile' => 'CL',
|
|
'China' => 'CN',
|
|
'Cookinseln' => 'CK',
|
|
'Costa Rica' => 'CR',
|
|
'Dänemark' => 'DK',
|
|
'Deutschland' => 'DE',
|
|
'Dominica' => 'DM',
|
|
'Dominikanische Republik' => 'DO',
|
|
'Dschibuti' => 'DJ',
|
|
'Ecuador' => 'EC',
|
|
'El Salvador' => 'SV',
|
|
'Elfenbeinküste' => 'CI',
|
|
'Eritrea' => 'ER',
|
|
'Estland' => 'EE',
|
|
'Falklandinseln' => 'FK',
|
|
'Färöer Inseln' => 'FO',
|
|
'Fidschi' => 'FJ',
|
|
'Finnland' => 'FI',
|
|
'Frankreich' => 'FR',
|
|
'Französisch-Guayana' => 'GF',
|
|
'Französisch-Polynesien' => 'PF',
|
|
'Französisches Süd-Territorium' => 'TF',
|
|
'Gabun' => 'GA',
|
|
'Gambia' => 'GM',
|
|
'Georgien' => 'GE',
|
|
'Ghana' => 'GH',
|
|
'Gibraltar' => 'GI',
|
|
'Grenada' => 'GD',
|
|
'Griechenland' => 'GR',
|
|
'Grönland' => 'GL',
|
|
'Großbritannien' => 'GB',
|
|
'Guadeloupe' => 'GP',
|
|
'Guam' => 'GU',
|
|
'Guatemala' => 'GT',
|
|
'Guinea' => 'GN',
|
|
'Guinea-Bissau' => 'GW',
|
|
'Guyana' => 'GY',
|
|
'Haiti' => 'HT',
|
|
'Heard und McDonaldinseln' => 'HM',
|
|
'Honduras' => 'HN',
|
|
'Hongkong' => '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',
|
|
'Kaimaninseln' => 'KY',
|
|
'Kambodscha' => 'KH',
|
|
'Kamerun' => 'CM',
|
|
'Kanada' => 'CA',
|
|
'Kap Verde' => 'CV',
|
|
'Kasachstan' => 'KZ',
|
|
'Katar' => 'QA',
|
|
'Kenia' => 'KE',
|
|
'Kirgisistan' => 'KG',
|
|
'Kiribati' => 'KI',
|
|
'Kokosinseln' => 'CC',
|
|
'Kolumbien' => 'CO',
|
|
'Komoren' => 'KM',
|
|
'Kongo' => 'CG',
|
|
'Kongo, Demokratische Republik' => 'CD',
|
|
'Kroatien' => 'HR',
|
|
'Kuba' => 'CU',
|
|
'Kuwait' => 'KW',
|
|
'Laos' => 'LA',
|
|
'Lesotho' => 'LS',
|
|
'Lettland' => 'LV',
|
|
'Libanon' => 'LB',
|
|
'Liberia' => 'LR',
|
|
'Libyen' => 'LY',
|
|
'Liechtenstein' => 'LI',
|
|
'Litauen' => 'LT',
|
|
'Luxemburg' => 'LU',
|
|
'Macau' => 'MO',
|
|
'Madagaskar' => 'MG',
|
|
'Malawi' => 'MW',
|
|
'Malaysia' => 'MY',
|
|
'Malediven' => 'MV',
|
|
'Mali' => 'ML',
|
|
'Malta' => 'MT',
|
|
'Marianen' => 'MP',
|
|
'Marokko' => 'MA',
|
|
'Marshallinseln' => 'MH',
|
|
'Martinique' => 'MQ',
|
|
'Mauretanien' => 'MR',
|
|
'Mauritius' => 'MU',
|
|
'Mayotte' => 'YT',
|
|
'Mazedonien' => 'MK',
|
|
'Mexiko' => 'MX',
|
|
'Mikronesien' => 'FM',
|
|
'Moldawien' => 'MD',
|
|
'Monaco' => 'MC',
|
|
'Mongolei' => 'MN',
|
|
'Montenegro' => 'ME',
|
|
'Montserrat' => 'MS',
|
|
'Mosambik' => 'MZ',
|
|
'Myanmar' => 'MM',
|
|
'Namibia' => 'NA',
|
|
'Nauru' => 'NR',
|
|
'Nepal' => 'NP',
|
|
'Neukaledonien' => 'NC',
|
|
'Neuseeland' => 'NZ',
|
|
'Nicaragua' => 'NI',
|
|
'Niederlande' => 'NL',
|
|
'Niger' => 'NE',
|
|
'Nigeria' => 'NG',
|
|
'Niue' => 'NU',
|
|
'Nordkorea' => 'KP',
|
|
'Norfolkinsel' => 'NF',
|
|
'Norwegen' => 'NO',
|
|
'Oman' => 'OM',
|
|
'Österreich' => 'AT',
|
|
'Pakistan' => 'PK',
|
|
'Palästina' => 'PS',
|
|
'Palau' => 'PW',
|
|
'Panama' => 'PA',
|
|
'Papua-Neuguinea' => 'PG',
|
|
'Paraguay' => 'PY',
|
|
'Peru' => 'PE',
|
|
'Philippinen' => 'PH',
|
|
'Pitcairninseln' => 'PN',
|
|
'Polen' => 'PL',
|
|
'Portugal' => 'PT',
|
|
'Puerto Rico' => 'PR',
|
|
'Réunion' => 'RE',
|
|
'Ruanda' => 'RW',
|
|
'Rumänien' => 'RO',
|
|
'Russland' => 'RU',
|
|
'Salomonen' => 'SB',
|
|
'Sambia' => 'ZM',
|
|
'Samoa, amerikanisch' => 'AS',
|
|
'Samoa' => 'WS',
|
|
'San Marino' => 'SM',
|
|
'São Tomé und Príncipe' => 'ST',
|
|
'Saudi-Arabien' => 'SA',
|
|
'Schweden' => 'SE',
|
|
'Schweiz' => 'CH',
|
|
'Senegal' => 'SN',
|
|
'Serbien' => 'RS',
|
|
'Seychellen' => 'SC',
|
|
'Sierra Leone' => 'SL',
|
|
'Simbabwe' => 'ZW',
|
|
'Singapur' => 'SG',
|
|
'Slowakei' => 'SK',
|
|
'Slowenien' => 'SI',
|
|
'Somalia' => 'SO',
|
|
'Südgeorgien, südliche Sandwichinseln' => 'GS',
|
|
'Spanien' => 'ES',
|
|
'Sri Lanka' => 'LK',
|
|
'St. Helena' => 'SH',
|
|
'St. Kitts und Nevis' => 'KN',
|
|
'St. Lucia' => 'LC',
|
|
'St. Pierre und Miquelon' => 'PM',
|
|
'St. Vincent und die Grenadinen' => 'VC',
|
|
'Südkorea' => 'KR',
|
|
'Südafrika' => 'ZA',
|
|
'Sudan' => 'SD',
|
|
'Suriname' => 'SR',
|
|
'Svalbard und Jan Mayen' => 'SJ',
|
|
'Swasiland' => 'SZ',
|
|
'Syrien' => 'SY',
|
|
'Tadschikistan' => 'TJ',
|
|
'Taiwan' => 'TW',
|
|
'Tansania' => 'TZ',
|
|
'Thailand' => 'TH',
|
|
'Togo' => 'TG',
|
|
'Tokelau' => 'TK',
|
|
'Tonga' => 'TO',
|
|
'Trinidad und Tobago' => 'TT',
|
|
'Tschad' => 'TD',
|
|
'Tschechien' => 'CZ',
|
|
'Tunesien' => 'TN',
|
|
'Türkei' => 'TR',
|
|
'Turkmenistan' => 'TM',
|
|
'Turks- und Caicosinseln' => 'TC',
|
|
'Tuvalu' => 'TV',
|
|
'Uganda' => 'UG',
|
|
'Ukraine' => 'UA',
|
|
'Ungarn' => 'HU',
|
|
'Uruguay' => 'UY',
|
|
'Usbekistan' => 'UZ',
|
|
'Vanuatu' => 'VU',
|
|
'Vatikanstadt' => 'VA',
|
|
'Venezuela' => 'VE',
|
|
'Vereinigte Arabische Emirate' => 'AE',
|
|
'Vereinigtes Königreich' => 'UK',
|
|
'Vereinigte Staaten von Amerika' => 'US',
|
|
'Vietnam' => 'VN',
|
|
'Wallis und Futuna' => 'WF',
|
|
'Weihnachtsinsel' => 'CX',
|
|
'Weißrussland' => 'BY',
|
|
'Westsahara' => 'EH',
|
|
'Zentralafrikanische Republik' => 'CF',
|
|
'Zypern' => 'CY'
|
|
);
|
|
return $laender;
|
|
}
|
|
|
|
|
|
public function SelectLaenderliste($selected='')
|
|
{
|
|
if(empty($selected)) {
|
|
$selected=$this->erp->Firmendaten('land');
|
|
}
|
|
if(empty($selected)) {
|
|
$selected='DE';
|
|
}
|
|
$options = '';
|
|
$laender = $this->GetLaender();
|
|
foreach ($laender as $land => $kuerzel) {
|
|
$options .= '<option value="'.$kuerzel.'"';
|
|
if ($selected === $kuerzel) {
|
|
$options .= ' selected';
|
|
}
|
|
$options .= '>'.$land."</option>\n";
|
|
}
|
|
return $options;
|
|
}
|
|
}
|
|
|