Compare commits
67
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3c8588562b | ||
|
|
3e2b5f6ee8 | ||
|
|
7ffb9a86a5 | ||
|
|
5816dedbc0 | ||
|
|
12f5ca8211 | ||
|
|
8b9969176c | ||
|
|
a6f742ccc0 | ||
|
|
2129627a5b | ||
|
|
22e411a6cc | ||
|
|
d7db78489c | ||
|
|
088ad4555c | ||
|
|
2cb1f91a43 | ||
|
|
dff342276e | ||
|
|
c76cb43bac | ||
|
|
72684cb092 | ||
|
|
7624e01de4 | ||
|
|
9ebd5d2b2b | ||
|
|
bf3dad7e83 | ||
|
|
b7f8c7b359 | ||
|
|
54fe339c65 | ||
|
|
7d0a5a0eee | ||
|
|
7cfb87c2c5 | ||
|
|
2ae5e9f44a | ||
|
|
c106282b13 | ||
|
|
e737d69a77 | ||
|
|
2f646a7715 | ||
|
|
c67d91a7dd | ||
|
|
3e69b8d7e0 | ||
|
|
77092171c3 | ||
|
|
a03d28ac69 | ||
|
|
f55f801cee | ||
|
|
1fe0aea620 | ||
|
|
e474014b8c | ||
|
|
3e70af8466 | ||
|
|
662410fdc8 | ||
|
|
7dcaae7fbb | ||
|
|
18397a03c8 | ||
|
|
504f0beb54 | ||
|
|
ecf986d33b | ||
|
|
eb00034a79 | ||
|
|
a5be2e984a | ||
|
|
fb32cda643 | ||
|
|
ca73f3dda5 | ||
|
|
4488cf8688 | ||
|
|
ec7dc7b8a6 | ||
|
|
6e857e6567 | ||
|
|
a35ab21f7c | ||
|
|
f794b4db74 | ||
|
|
e899b1c389 | ||
|
|
b171dd7760 | ||
|
|
4f7eb4049b | ||
|
|
b838b63258 | ||
|
|
5e1359f770 | ||
|
|
1bb701322b | ||
|
|
1e55ca1b3d | ||
|
|
b34ba86421 | ||
|
|
b2bf2f14f2 | ||
|
|
bdb05c747a | ||
|
|
b613a99791 | ||
|
|
1dba7e9d7e | ||
|
|
60e21956ad | ||
|
|
545a39bbdc | ||
|
|
5ed516f9da | ||
|
|
76c770aba3 | ||
|
|
c9aee26df7 | ||
|
|
91c2dc88ba | ||
|
|
be222cc581 |
+1
-4
@@ -54,14 +54,11 @@ memory_limit = 256M
|
||||
## Install additional zip
|
||||
`sudo apt-get install zip`
|
||||
|
||||
## Install mysql client
|
||||
`sudo apt-get install mysql-client`
|
||||
|
||||
## Install database server
|
||||
`sudo apt-get install mariadb-server`
|
||||
|
||||
## Configure database server
|
||||
`sudo mysql_secure_installation`
|
||||
`sudo mariadb-secure-installation`
|
||||
```
|
||||
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
|
||||
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
|
||||
|
||||
@@ -285,6 +285,7 @@ class TicketImportHelper
|
||||
tr.dsgvo AS `is_gdpr_relevant`,
|
||||
tr.prio AS `priority`,
|
||||
tr.persoenlich AS `is_private`,
|
||||
tr.adresse,
|
||||
tr.warteschlange AS `queue_id`
|
||||
FROM `ticket_regeln` AS `tr`
|
||||
WHERE
|
||||
@@ -464,7 +465,7 @@ class TicketImportHelper
|
||||
$status = 'neu';
|
||||
}
|
||||
|
||||
$sql = "UPDATE `ticket` SET `dsgvo` = '".$rule['is_gdpr_relevant']."', `privat` = '".$rule['is_private']."', `prio` = '".$rule['priority']."', `warteschlange` = '".$rule['queue_id']."', `status` = '".$status."' WHERE `id` = '".$ticketId."'";
|
||||
$sql = "UPDATE `ticket` SET `dsgvo` = '".$rule['is_gdpr_relevant']."', `privat` = '".$rule['is_private']."', `prio` = '".$rule['priority']."',`adresse` = '".$rule['adresse']."', `warteschlange` = '".$rule['queue_id']."', `status` = '".$status."' WHERE `id` = '".$ticketId."'";
|
||||
|
||||
$this->logger->debug('ticket rule sql',['sql' => $sql]);
|
||||
|
||||
|
||||
@@ -1,451 +1,453 @@
|
||||
<?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 ****
|
||||
/*
|
||||
**** 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
|
||||
|
||||
class StringCleaner
|
||||
{
|
||||
private $elements;
|
||||
private $htmlpuriferconfig;
|
||||
private $htmlpurifer;
|
||||
private $ruleregexps;
|
||||
/** @var Application */
|
||||
private $app;
|
||||
|
||||
/**
|
||||
* StringCleaner constructor.
|
||||
*
|
||||
* @param null|Application $app
|
||||
*/
|
||||
public function __construct($app = null)
|
||||
{
|
||||
$this->app = $app;
|
||||
if(class_exists('HTMLPurifier_Config')) {
|
||||
$this->htmlpuriferconfig = HTMLPurifier_Config::createDefault();
|
||||
$this->htmlpuriferconfig->set('Core.Encoding', 'UTF-8');
|
||||
$this->htmlpuriferconfig->set('Attr.AllowedFrameTargets', ['_blank']); // Allow hyperlinks with target="_blank"
|
||||
//$this->htmlpuriferconfig->set('HTML.AllowedElements', 'h1,h2,h3,h4,h5,h6,p,a,strong,em,ol,ul,li,img,param,div,br,form,label,fieldset,input,textarea,select,option');
|
||||
$this->htmlpurifer = new HTMLPurifier($this->htmlpuriferconfig);
|
||||
}
|
||||
$this->elements = array('nohtml'=> array('ust_befreit','abweichendelieferadresse','bestellungsart','bearbeiter','datum','lieferdatum','name','anrede','partner','packstation_inhaber','packstation_station','packstation_ident','packstation_plz','packstation_ort','partnerid','kennen','ihrebestellnummer'
|
||||
,'abteilung','unterabteilung','ansprechpartner','adresszusatz','strasse','land','bundesstaat','plz','ort','versandart','internet','transaktionsnummer','vertrieb','zahlungsweise'
|
||||
,'lieferabteilung','lieferunterabteilung','lieferansprechpartner','lieferadresszusatz','lieferstrasse','lieferland','lieferbundesstaat','lieferplz','lieferort'
|
||||
,'bank_inhaber','bank_institut','bank_blz','bank_konto'
|
||||
,'email','telefon','telefax','ustid','partner','projekt','herstellernummer','ean','nummer','name_de','name_ean'),
|
||||
'nojs' => array('anabregstext','anabregstext_en','uebersicht_de','uebersicht_en','kurztext_de','kurztext_en','internebemerkung','internebezeichnung','freitext'));
|
||||
|
||||
$this->rulechecks = array('digit'=>'/^[0-9]+$/'
|
||||
,'alpha'=>'/^[a-zA-Z]+$/'
|
||||
,'alphadigit'=>'/^[0-9a-zA-Z]+$/'
|
||||
,'username'=>'/^[0-9a-zA-Z\.\-]+$/'
|
||||
,'space'=>'/^[\x20]+$/'
|
||||
,'module'=>'/^[0-9a-zA-Z\_]$/'
|
||||
,'password'=>'/^[^\s\n]{1}[^\n]{5}.*$/'
|
||||
,'email'=>'/^[^@\s\x00-\x20]+@[^@\s\x00-\x20\.]+\.[^@\s\x00-\x20\.]+[^@\s\x00-\x20]*$/'
|
||||
);
|
||||
|
||||
$this->ruleregexps = array(
|
||||
'digit'=>'/[^0-9]/'
|
||||
,'username'=>'/[^0-9a-zA-Z\.\-]/'
|
||||
,'alpha'=>'/[^a-zA-Z]/'
|
||||
,'alphadigits'=>'/[^0-9a-zA-Z]/'
|
||||
,'module'=>'/[^0-9a-zA-Z\_]/'
|
||||
,'moduleminus'=>'/[^0-9a-zA-Z\_\-]/'
|
||||
,'alphadigitsspecial'=>'/[^0-9a-zA-Z\_\.\(\)]/'
|
||||
,'base64'=>'/[^0-9a-zA-Z\=\+\-\_\/]/'
|
||||
);
|
||||
}
|
||||
|
||||
function SyntaxByElement($key, $default = '')
|
||||
{
|
||||
foreach($this->elements as $type => $arr) {
|
||||
if(in_array($key, $arr)) {
|
||||
return $type;
|
||||
}
|
||||
}
|
||||
return $default;
|
||||
}
|
||||
|
||||
function CleanSQLReturn($value, $columnname, $default = '')
|
||||
{
|
||||
if($value == '' || is_numeric($value))
|
||||
{
|
||||
return $value;
|
||||
}
|
||||
if(in_array($columnname, array('nummer','name','kundennummer','bezeichnung','bezeichnunglieferant','lieferantennummer','mitarbeiternummer','name_de','name_en',
|
||||
'kurzbezeichnung','abkuerzung',
|
||||
'strasse','plz','ort','land','ansprechpartner','abteilung','unterabteilung',
|
||||
'liefername','lieferstrasse','lieferplz','lieferort','lieferland','lieferansprechpartner','lieferabteilung','lieferunterabteilung'))){
|
||||
return strip_tags($value);
|
||||
}
|
||||
if($default == 'xss_clean')
|
||||
{
|
||||
return $this->xss_clean($value, false);
|
||||
}
|
||||
if($this->htmlpurifer)
|
||||
{
|
||||
return $this->htmlpurifer->purify($value);
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
function RuleCheck($string, $rule = null, &$found = false)
|
||||
{
|
||||
if(isset($this->rulechecks[$rule]))
|
||||
{
|
||||
$found = true;
|
||||
return preg_match_all($this->rulechecks[$rule], $string, $dummy);
|
||||
}
|
||||
switch($rule)
|
||||
{
|
||||
case 'datum':
|
||||
$found = true;
|
||||
|
||||
if(preg_match_all('/([0-9]+)\.([0-9]+)\.$/', $string, $matches))
|
||||
{
|
||||
$string = $matches[1][0].'.'.$matches[2][0].'.'.date('Y');
|
||||
}
|
||||
|
||||
try {
|
||||
if($x = new DateTime($string)) {
|
||||
return $x->format('Y') > 0;
|
||||
}
|
||||
}
|
||||
catch (Exception $e) {
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function CheckSQLHtml($sql)
|
||||
{
|
||||
$start = 0;
|
||||
$len = strlen($sql);
|
||||
$lvl = 0;
|
||||
$col = 0;
|
||||
$ret = array(0);
|
||||
$instring = false;
|
||||
for($i = $start; $i < $len; $i++)
|
||||
{
|
||||
$char = $sql[$i];
|
||||
switch($char)
|
||||
{
|
||||
case "'":
|
||||
if($instring)
|
||||
{
|
||||
if($sql[$i-1] != '\\')
|
||||
{
|
||||
$instring = false;
|
||||
}
|
||||
}else{
|
||||
if($sql[$i-1] != '\\'){
|
||||
$instring = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "(":
|
||||
if($instring)
|
||||
{
|
||||
|
||||
}else{
|
||||
$lvl++;
|
||||
}
|
||||
break;
|
||||
case ")":
|
||||
if($instring)
|
||||
{
|
||||
|
||||
}else{
|
||||
$lvl--;
|
||||
}
|
||||
break;
|
||||
case "<":
|
||||
if($instring)
|
||||
{
|
||||
if(preg_match('/<[a-zA-Z]/',$char.$sql[$i+1]))
|
||||
{
|
||||
if($ret[$col] != 2)
|
||||
{
|
||||
$ret[$col] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ',':
|
||||
if($instring)
|
||||
{
|
||||
|
||||
}else{
|
||||
if($lvl == 0)
|
||||
{
|
||||
$col++;
|
||||
$ret[$col] = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'o':
|
||||
case 'O':
|
||||
if($instring)
|
||||
{
|
||||
if($i < $len -4)
|
||||
{
|
||||
if(strtolower(substr($sql, $i, 2)) == 'on')
|
||||
{
|
||||
if(preg_match('/^on[a-z]+(\s*)=/', substr($sql, $i)))
|
||||
{
|
||||
$ret[$col] = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'F':
|
||||
case 'f':
|
||||
if($instring)
|
||||
{
|
||||
|
||||
}else{
|
||||
if($lvl == 0)
|
||||
{
|
||||
if($i < $len - 4)
|
||||
{
|
||||
if(strtolower(substr($sql, $i, 4)) == 'from')
|
||||
{
|
||||
break 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
$where = strripos($sql, 'where');
|
||||
$restsql = substr($sql, $i, $where - $i);
|
||||
if(preg_match('/<[a-zA-Z]/', $restsql))
|
||||
{
|
||||
if(preg_match('/on[a-z]+(\s*)=/',$restsql))
|
||||
{
|
||||
if($ret)
|
||||
{
|
||||
foreach($ret as $k => $v)
|
||||
{
|
||||
$ret[$k] = 2;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if($ret)
|
||||
{
|
||||
foreach($ret as $k => $v)
|
||||
{
|
||||
if($v != 2)
|
||||
{
|
||||
$ret[$k] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
public function CleanString($string, $rule = null, &$found = false)
|
||||
{
|
||||
if(is_null($rule))
|
||||
{
|
||||
$rule = 'nothml';
|
||||
}
|
||||
switch($rule)
|
||||
{
|
||||
case 'email':
|
||||
if($this->RuleCheck($string, $rule))
|
||||
{
|
||||
return $string;
|
||||
}
|
||||
return '';
|
||||
break;
|
||||
case 'nohtml':
|
||||
$found = true;
|
||||
if($string == '' || is_numeric($string))
|
||||
{
|
||||
return $string;
|
||||
}
|
||||
if(strpos($string,'<') === false)
|
||||
{
|
||||
return $string;
|
||||
}
|
||||
return strip_tags($string);
|
||||
break;
|
||||
case 'datum':
|
||||
$found = true;
|
||||
$string_ = $string;
|
||||
if(preg_match_all('/([0-9]+)\.([0-9]+)\.$/', $string, $matches))
|
||||
{
|
||||
$string_ = $matches[1][0].'.'.$matches[2][0].'.'.date('Y');
|
||||
}
|
||||
try
|
||||
{
|
||||
if($x = new DateTime($string_))
|
||||
{
|
||||
if($x->format('Y') <= 0)
|
||||
{
|
||||
return '';
|
||||
}
|
||||
return $string;
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
return '';
|
||||
}
|
||||
return '';
|
||||
break;
|
||||
case 'xss_clean':
|
||||
$found = true;
|
||||
if($string == '' || is_numeric($string))
|
||||
{
|
||||
return $string;
|
||||
}
|
||||
if(strpos($string,'<') === false){
|
||||
return $string;
|
||||
}
|
||||
return $this->xss_clean($string, false);
|
||||
break;
|
||||
case 'nojs':
|
||||
$found = true;
|
||||
if($string == '' || is_numeric($string))return $string;
|
||||
if(strpos($string,'<') === false)return $string;
|
||||
if($this->htmlpurifer)
|
||||
{
|
||||
return $this->htmlpurifer->purify($string);
|
||||
}
|
||||
return $this->xss_clean($string);
|
||||
break;
|
||||
case 'id':
|
||||
$found = true;
|
||||
if((String)$string === '')
|
||||
{
|
||||
return $string;
|
||||
}
|
||||
return (int)$string;
|
||||
break;
|
||||
case 'doppelid':
|
||||
$found = true;
|
||||
if((String)$string === '')
|
||||
{
|
||||
return $string;
|
||||
}
|
||||
$stringa = explode('-', $string, 2);
|
||||
if(count($stringa) == 1)return (int)$stringa[0];
|
||||
return ($stringa[0]===''?'':(int)$stringa[0]).'-'.(int)$stringa[1];
|
||||
break;
|
||||
case 'module':
|
||||
$found = true;
|
||||
return preg_replace ($this->ruleregexps[$rule], '' , $string);
|
||||
break;
|
||||
default:
|
||||
if(isset($this->ruleregexps[$rule]))
|
||||
{
|
||||
$found = true;
|
||||
return preg_replace ($this->ruleregexps[$rule], '' , $string);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return $string;
|
||||
}
|
||||
|
||||
public function xss_clean($data, $usepurify = true)
|
||||
{
|
||||
if($usepurify && !empty($this->htmlpurifer))
|
||||
{
|
||||
return $this->htmlpurifer->purify($data);
|
||||
}
|
||||
// Fix &entity\n;
|
||||
$data = str_replace(array('&','<','>'), array('&amp;','&lt;','&gt;'), $data);
|
||||
$data = preg_replace('/(&#*\w+)[\x00-\x20]+;/u', '$1;', $data);
|
||||
$data = preg_replace('/(&#x*[0-9A-F]+);*/iu', '$1;', $data);
|
||||
$data = html_entity_decode($data, ENT_COMPAT, 'UTF-8');
|
||||
return $data;
|
||||
// Remove any attribute starting with "on" or xmlns
|
||||
$data = preg_replace('#(<[^>]+?[\x00-\x20"\'])(?:on|xmlns)[^>]*+>#iu', '$1>', $data);
|
||||
|
||||
// Remove javascript: and vbscript: protocols
|
||||
$data = preg_replace('#([a-z]*)[\x00-\x20]*=[\x00-\x20]*([`\'"]*)[\x00-\x20]*j[\x00-\x20]*a[\x00-\x20]*v[\x00-\x20]*a[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iu', '$1=$2nojavascript...', $data);
|
||||
$data = preg_replace('#([a-z]*)[\x00-\x20]*=([\'"]*)[\x00-\x20]*v[\x00-\x20]*b[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iu', '$1=$2novbscript...', $data);
|
||||
$data = preg_replace('#([a-z]*)[\x00-\x20]*=([\'"]*)[\x00-\x20]*-moz-binding[\x00-\x20]*:#u', '$1=$2nomozbinding...', $data);
|
||||
|
||||
// Only works in IE: <span style="width: expression(alert('Ping!'));"></span>
|
||||
$data = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?expression[\x00-\x20]*\([^>]*+>#i', '$1>', $data);
|
||||
$data = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?behaviour[\x00-\x20]*\([^>]*+>#i', '$1>', $data);
|
||||
$data = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:*[^>]*+>#iu', '$1>', $data);
|
||||
|
||||
// Remove namespaced elements (we do not need them)
|
||||
$data = preg_replace('#</*\w+:\w[^>]*+>#i', '', $data);
|
||||
|
||||
do
|
||||
{
|
||||
// Remove really unwanted tags
|
||||
$old_data = $data;
|
||||
$data = preg_replace('#</*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|i(?:frame|layer)|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|title|xml)[^>]*+>#i', '', $data);
|
||||
}
|
||||
while ($old_data !== $data);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
function XMLArray_clean(&$xml, $lvl = 0)
|
||||
{
|
||||
if(is_string($xml))
|
||||
{
|
||||
|
||||
}elseif(is_array($xml))
|
||||
{
|
||||
if(count($xml) > 0)
|
||||
{
|
||||
foreach($xml as $k => $v)
|
||||
{
|
||||
if(is_string($v))
|
||||
{
|
||||
$xml[$k] = $this->CleanString($v, $this->SyntaxByElement($k,'nojs'));
|
||||
}
|
||||
if($lvl < 10)
|
||||
{
|
||||
$this->XMLArray_clean($v, $lvl + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}elseif(is_object($xml))
|
||||
{
|
||||
if(count($xml) > 0)
|
||||
{
|
||||
foreach($xml as $k => $v)
|
||||
{
|
||||
if(count($v) > 0)
|
||||
{
|
||||
if($lvl < 10)
|
||||
{
|
||||
$this->XMLArray_clean($v, $lvl + 1);
|
||||
}
|
||||
}elseif((String)$v != '')
|
||||
{
|
||||
if(isset($xml->$k))
|
||||
{
|
||||
//$xml->$k = $this->CleanString($v, $this->SyntaxByElement($k,'nojs'));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $xml;
|
||||
}
|
||||
}
|
||||
<?php
|
||||
|
||||
class StringCleaner
|
||||
{
|
||||
private $elements;
|
||||
private $htmlpuriferconfig;
|
||||
private $htmlpurifer;
|
||||
private $ruleregexps;
|
||||
/** @var Application */
|
||||
private $app;
|
||||
|
||||
/**
|
||||
* StringCleaner constructor.
|
||||
*
|
||||
* @param null|Application $app
|
||||
*/
|
||||
public function __construct($app = null)
|
||||
{
|
||||
$this->app = $app;
|
||||
if(class_exists('HTMLPurifier_Config')) {
|
||||
$this->htmlpuriferconfig = HTMLPurifier_Config::createDefault();
|
||||
$this->htmlpuriferconfig->set('Core.Encoding', 'UTF-8');
|
||||
$this->htmlpuriferconfig->set('Attr.AllowedFrameTargets', ['_blank']); // Allow hyperlinks with target="_blank"
|
||||
//$this->htmlpuriferconfig->set('HTML.AllowedElements', 'h1,h2,h3,h4,h5,h6,p,a,strong,em,ol,ul,li,img,param,div,br,form,label,fieldset,input,textarea,select,option');
|
||||
$this->htmlpurifer = new HTMLPurifier($this->htmlpuriferconfig);
|
||||
}
|
||||
$this->elements = array('nohtml'=> array('ust_befreit','abweichendelieferadresse','bestellungsart','bearbeiter','datum','lieferdatum','name','anrede','partner','packstation_inhaber','packstation_station','packstation_ident','packstation_plz','packstation_ort','partnerid','kennen','ihrebestellnummer'
|
||||
,'abteilung','unterabteilung','ansprechpartner','adresszusatz','strasse','land','bundesstaat','plz','ort','versandart','internet','transaktionsnummer','vertrieb','zahlungsweise'
|
||||
,'lieferabteilung','lieferunterabteilung','lieferansprechpartner','lieferadresszusatz','lieferstrasse','lieferland','lieferbundesstaat','lieferplz','lieferort'
|
||||
,'bank_inhaber','bank_institut','bank_blz','bank_konto'
|
||||
,'email','telefon','telefax','ustid','partner','projekt','herstellernummer','ean','nummer','name_de','name_ean'),
|
||||
'nojs' => array('anabregstext','anabregstext_en','uebersicht_de','uebersicht_en','kurztext_de','kurztext_en','internebemerkung','internebezeichnung','freitext'));
|
||||
|
||||
$this->rulechecks = array('digit'=>'/^[0-9]+$/'
|
||||
,'alpha'=>'/^[a-zA-Z]+$/'
|
||||
,'alphadigit'=>'/^[0-9a-zA-Z]+$/'
|
||||
,'username'=>'/^[0-9a-zA-Z\.\-]+$/'
|
||||
,'space'=>'/^[\x20]+$/'
|
||||
,'module'=>'/^[0-9a-zA-Z\_]$/'
|
||||
,'password'=>'/^[^\s\n]{1}[^\n]{5}.*$/'
|
||||
,'email'=>'/^[^@\s\x00-\x20]+@[^@\s\x00-\x20\.]+\.[^@\s\x00-\x20\.]+[^@\s\x00-\x20]*$/'
|
||||
);
|
||||
|
||||
$this->ruleregexps = array(
|
||||
'digit'=>'/[^0-9]/'
|
||||
,'username'=>'/[^0-9a-zA-Z\.\-]/'
|
||||
,'alpha'=>'/[^a-zA-Z]/'
|
||||
,'alphadigits'=>'/[^0-9a-zA-Z]/'
|
||||
,'module'=>'/[^0-9a-zA-Z\_]/'
|
||||
,'moduleminus'=>'/[^0-9a-zA-Z\_\-]/'
|
||||
,'alphadigitsspecial'=>'/[^0-9a-zA-Z\_\.\(\)]/'
|
||||
,'base64'=>'/[^0-9a-zA-Z\=\+\-\_\/]/'
|
||||
);
|
||||
}
|
||||
|
||||
function SyntaxByElement($key, $default = '')
|
||||
{
|
||||
foreach($this->elements as $type => $arr) {
|
||||
if(in_array($key, $arr)) {
|
||||
return $type;
|
||||
}
|
||||
}
|
||||
return $default;
|
||||
}
|
||||
|
||||
function CleanSQLReturn($value, $columnname, $default = '')
|
||||
{
|
||||
if($value == '' || is_numeric($value))
|
||||
{
|
||||
return $value;
|
||||
}
|
||||
if(in_array($columnname, array('nummer','name','kundennummer','bezeichnung','bezeichnunglieferant','lieferantennummer','mitarbeiternummer','name_de','name_en',
|
||||
'kurzbezeichnung','abkuerzung',
|
||||
'strasse','plz','ort','land','ansprechpartner','abteilung','unterabteilung',
|
||||
'liefername','lieferstrasse','lieferplz','lieferort','lieferland','lieferansprechpartner','lieferabteilung','lieferunterabteilung'))){
|
||||
return strip_tags($value);
|
||||
}
|
||||
if($default == 'xss_clean')
|
||||
{
|
||||
return $this->xss_clean($value, false);
|
||||
}
|
||||
if($this->htmlpurifer)
|
||||
{
|
||||
return $this->htmlpurifer->purify($value);
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
function RuleCheck($string, $rule = null, &$found = false)
|
||||
{
|
||||
if(isset($this->rulechecks[$rule]))
|
||||
{
|
||||
$found = true;
|
||||
return preg_match_all($this->rulechecks[$rule], $string, $dummy);
|
||||
}
|
||||
switch($rule)
|
||||
{
|
||||
case 'datum':
|
||||
$found = true;
|
||||
|
||||
if(preg_match_all('/([0-9]+)\.([0-9]+)\.$/', $string, $matches))
|
||||
{
|
||||
$string = $matches[1][0].'.'.$matches[2][0].'.'.date('Y');
|
||||
}
|
||||
|
||||
try {
|
||||
if($x = new DateTime($string)) {
|
||||
return $x->format('Y') > 0;
|
||||
}
|
||||
}
|
||||
catch (Exception $e) {
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function CheckSQLHtml($sql)
|
||||
{
|
||||
$start = 0;
|
||||
$len = strlen($sql);
|
||||
$lvl = 0;
|
||||
$col = 0;
|
||||
$ret = array(0);
|
||||
$instring = false;
|
||||
for($i = $start; $i < $len; $i++)
|
||||
{
|
||||
$char = $sql[$i];
|
||||
switch($char)
|
||||
{
|
||||
case "'":
|
||||
if($instring)
|
||||
{
|
||||
if($sql[$i-1] != '\\')
|
||||
{
|
||||
$instring = false;
|
||||
}
|
||||
}else{
|
||||
if($sql[$i-1] != '\\'){
|
||||
$instring = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "(":
|
||||
if($instring)
|
||||
{
|
||||
|
||||
}else{
|
||||
$lvl++;
|
||||
}
|
||||
break;
|
||||
case ")":
|
||||
if($instring)
|
||||
{
|
||||
|
||||
}else{
|
||||
$lvl--;
|
||||
}
|
||||
break;
|
||||
case "<":
|
||||
if($instring)
|
||||
{
|
||||
if(preg_match('/<[a-zA-Z]/',$char.$sql[$i+1]))
|
||||
{
|
||||
if($ret[$col] != 2)
|
||||
{
|
||||
$ret[$col] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ',':
|
||||
if($instring)
|
||||
{
|
||||
|
||||
}else{
|
||||
if($lvl == 0)
|
||||
{
|
||||
$col++;
|
||||
$ret[$col] = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'o':
|
||||
case 'O':
|
||||
if($instring)
|
||||
{
|
||||
if($i < $len -4)
|
||||
{
|
||||
if(strtolower(substr($sql, $i, 2)) == 'on')
|
||||
{
|
||||
if(preg_match('/^on[a-z]+(\s*)=/', substr($sql, $i)))
|
||||
{
|
||||
$ret[$col] = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'F':
|
||||
case 'f':
|
||||
if($instring)
|
||||
{
|
||||
|
||||
}else{
|
||||
if($lvl == 0)
|
||||
{
|
||||
if($i < $len - 4)
|
||||
{
|
||||
if(strtolower(substr($sql, $i, 4)) == 'from')
|
||||
{
|
||||
break 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
$where = strripos($sql, 'where');
|
||||
$restsql = substr($sql, $i, $where - $i);
|
||||
if(preg_match('/<[a-zA-Z]/', $restsql))
|
||||
{
|
||||
if(preg_match('/on[a-z]+(\s*)=/',$restsql))
|
||||
{
|
||||
if($ret)
|
||||
{
|
||||
foreach($ret as $k => $v)
|
||||
{
|
||||
$ret[$k] = 2;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if($ret)
|
||||
{
|
||||
foreach($ret as $k => $v)
|
||||
{
|
||||
if($v != 2)
|
||||
{
|
||||
$ret[$k] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
public function CleanString($string, $rule = null, &$found = false)
|
||||
{
|
||||
if(is_null($rule))
|
||||
{
|
||||
$rule = 'nothml';
|
||||
}
|
||||
switch($rule)
|
||||
{
|
||||
case 'email':
|
||||
if($this->RuleCheck($string, $rule))
|
||||
{
|
||||
return $string;
|
||||
}
|
||||
return '';
|
||||
break;
|
||||
case 'nohtml':
|
||||
$found = true;
|
||||
if($string == '' || is_numeric($string))
|
||||
{
|
||||
return $string;
|
||||
}
|
||||
if(strpos($string,'<') === false)
|
||||
{
|
||||
return $string;
|
||||
}
|
||||
return strip_tags($string);
|
||||
break;
|
||||
case 'datum':
|
||||
$found = true;
|
||||
$string_ = $string;
|
||||
if(preg_match_all('/([0-9]+)\.([0-9]+)\.$/', $string, $matches))
|
||||
{
|
||||
$string_ = $matches[1][0].'.'.$matches[2][0].'.'.date('Y');
|
||||
}
|
||||
try
|
||||
{
|
||||
if($x = new DateTime($string_))
|
||||
{
|
||||
if($x->format('Y') <= 0)
|
||||
{
|
||||
return '';
|
||||
}
|
||||
return $string;
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
return '';
|
||||
}
|
||||
return '';
|
||||
break;
|
||||
case 'xss_clean':
|
||||
$found = true;
|
||||
if($string == '' || is_numeric($string))
|
||||
{
|
||||
return $string;
|
||||
}
|
||||
if(strpos($string,'<') === false){
|
||||
return $string;
|
||||
}
|
||||
return $this->xss_clean($string, false);
|
||||
break;
|
||||
case 'nojs':
|
||||
$found = true;
|
||||
if($string == '' || is_numeric($string))return $string;
|
||||
if(strpos($string,'<') === false)return $string;
|
||||
if($this->htmlpurifer)
|
||||
{
|
||||
return $this->htmlpurifer->purify($string);
|
||||
}
|
||||
return $this->xss_clean($string);
|
||||
break;
|
||||
case 'id':
|
||||
$found = true;
|
||||
if((String)$string === '')
|
||||
{
|
||||
return $string;
|
||||
}
|
||||
return (int)$string;
|
||||
break;
|
||||
case 'doppelid':
|
||||
$found = true;
|
||||
if((String)$string === '')
|
||||
{
|
||||
return $string;
|
||||
}
|
||||
$stringa = explode('-', $string, 2);
|
||||
if(count($stringa) == 1)return (int)$stringa[0];
|
||||
return ($stringa[0]===''?'':(int)$stringa[0]).'-'.(int)$stringa[1];
|
||||
break;
|
||||
case 'module':
|
||||
$found = true;
|
||||
return preg_replace ($this->ruleregexps[$rule], '' , $string);
|
||||
break;
|
||||
default:
|
||||
if(isset($this->ruleregexps[$rule]))
|
||||
{
|
||||
$found = true;
|
||||
return preg_replace ($this->ruleregexps[$rule], '' , $string);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return $string;
|
||||
}
|
||||
|
||||
public function xss_clean($data, $usepurify = true)
|
||||
{
|
||||
if($usepurify && !empty($this->htmlpurifer))
|
||||
{
|
||||
return $this->htmlpurifer->purify($data);
|
||||
}
|
||||
// Fix &entity\n;
|
||||
$data = str_replace(array('&','<','>'), array('&amp;','&lt;','&gt;'), $data);
|
||||
$data = preg_replace('/(&#*\w+)[\x00-\x20]+;/u', '$1;', $data);
|
||||
$data = preg_replace('/(&#x*[0-9A-F]+);*/iu', '$1;', $data);
|
||||
$data = html_entity_decode($data, ENT_COMPAT, 'UTF-8');
|
||||
return $data;
|
||||
// Remove any attribute starting with "on" or xmlns
|
||||
$data = preg_replace('#(<[^>]+?[\x00-\x20"\'])(?:on|xmlns)[^>]*+>#iu', '$1>', $data);
|
||||
|
||||
// Remove javascript: and vbscript: protocols
|
||||
$data = preg_replace('#([a-z]*)[\x00-\x20]*=[\x00-\x20]*([`\'"]*)[\x00-\x20]*j[\x00-\x20]*a[\x00-\x20]*v[\x00-\x20]*a[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iu', '$1=$2nojavascript...', $data);
|
||||
$data = preg_replace('#([a-z]*)[\x00-\x20]*=([\'"]*)[\x00-\x20]*v[\x00-\x20]*b[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iu', '$1=$2novbscript...', $data);
|
||||
$data = preg_replace('#([a-z]*)[\x00-\x20]*=([\'"]*)[\x00-\x20]*-moz-binding[\x00-\x20]*:#u', '$1=$2nomozbinding...', $data);
|
||||
|
||||
// Only works in IE: <span style="width: expression(alert('Ping!'));"></span>
|
||||
$data = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?expression[\x00-\x20]*\([^>]*+>#i', '$1>', $data);
|
||||
$data = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?behaviour[\x00-\x20]*\([^>]*+>#i', '$1>', $data);
|
||||
$data = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:*[^>]*+>#iu', '$1>', $data);
|
||||
|
||||
// Remove namespaced elements (we do not need them)
|
||||
$data = preg_replace('#</*\w+:\w[^>]*+>#i', '', $data);
|
||||
|
||||
do
|
||||
{
|
||||
// Remove really unwanted tags
|
||||
$old_data = $data;
|
||||
$data = preg_replace('#</*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|i(?:frame|layer)|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|title|xml)[^>]*+>#i', '', $data);
|
||||
}
|
||||
while ($old_data !== $data);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
function XMLArray_clean(&$xml, $lvl = 0)
|
||||
{
|
||||
if(is_string($xml))
|
||||
{
|
||||
|
||||
}elseif(is_array($xml))
|
||||
{
|
||||
if(count($xml) > 0)
|
||||
{
|
||||
foreach($xml as $k => $v)
|
||||
{
|
||||
if(is_string($v))
|
||||
{
|
||||
$xml[$k] = $this->CleanString($v, $this->SyntaxByElement($k,'nojs'));
|
||||
}
|
||||
if($lvl < 10)
|
||||
{
|
||||
$this->XMLArray_clean($v, $lvl + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}elseif(is_object($xml))
|
||||
{
|
||||
$xml = (array) $xml;
|
||||
if(count($xml) > 0)
|
||||
{
|
||||
foreach($xml as $k => $v)
|
||||
{
|
||||
$v = (array) $v;
|
||||
if(count($v) > 0)
|
||||
{
|
||||
if($lvl < 10)
|
||||
{
|
||||
$this->XMLArray_clean($v, $lvl + 1);
|
||||
}
|
||||
}elseif((String)$v != '')
|
||||
{
|
||||
if(isset($xml->$k))
|
||||
{
|
||||
//$xml->$k = $this->CleanString($v, $this->SyntaxByElement($k,'nojs'));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $xml;
|
||||
}
|
||||
}
|
||||
|
||||
+166
-36
@@ -28,6 +28,15 @@ class YUI {
|
||||
$this->app = $app;
|
||||
}
|
||||
|
||||
function dateien_module_objekt_map($module) : string {
|
||||
$dateien_module_objekt_map_array = array(
|
||||
'adresse' => 'adressen',
|
||||
'ticket' => 'ticket_header'
|
||||
);
|
||||
|
||||
return (isset($dateien_module_objekt_map_array[$module]) ? $dateien_module_objekt_map_array[$module] : $module);
|
||||
}
|
||||
|
||||
function PasswordCheck($passwordFieldID, $repassFieldID, $accountNameFieldID, $submitButtonID, $extra = ''){
|
||||
$this->app->Tpl->Add('JQUERYREADY', "
|
||||
function checkPassword(){
|
||||
@@ -2578,11 +2587,19 @@ class YUI {
|
||||
if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(b.bezeichnung,1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),b.bezeichnung))
|
||||
) $erweiterte_ansicht)
|
||||
as Artikel,
|
||||
p.abkuerzung as projekt,
|
||||
b.nummer as nummer,
|
||||
DATE_FORMAT(lieferdatum,'%d.%m.%Y') as lieferdatum,
|
||||
trim(b.menge)+0 as menge,
|
||||
".$this->FormatPreis($preiscell)." as preis,
|
||||
b.waehrung,
|
||||
".$this->FormatPreis('b.rabatt')." as rabatt,";
|
||||
|
||||
|
||||
|
||||
p.abkuerzung as projekt, b.nummer as nummer, DATE_FORMAT(lieferdatum,'%d.%m.%Y') as lieferdatum, trim(b.menge)+0 as menge, ".$this->FormatPreis($preiscell)." as preis,b.waehrung, ".$this->FormatPreis('b.rabatt')." as rabatt, ";
|
||||
|
||||
if ($this->app->erp->RechteVorhanden('auftrag','einkaufspreise')) {
|
||||
$sql .= $this->FormatPreis('einkaufspreis')." as einkaufspreis,
|
||||
CONCAT(".$this->app->erp->FormatPreis("ROUND(deckungsbeitrag*100,2)",2).",'%') AS DB,
|
||||
";
|
||||
}
|
||||
|
||||
$sql .= "b.id as id
|
||||
FROM $table b
|
||||
@@ -3614,6 +3631,121 @@ class YUI {
|
||||
'</td></tr></table>')";
|
||||
}
|
||||
|
||||
function IconsSQL_versandpaket() {
|
||||
/*
|
||||
status:
|
||||
neu ->
|
||||
|
||||
Lagergo
|
||||
lagergo_stop
|
||||
lagerstop
|
||||
|
||||
Schein
|
||||
summe_go
|
||||
summe_stop
|
||||
|
||||
Auto
|
||||
liefersperrego
|
||||
liefersperrestop
|
||||
|
||||
marke
|
||||
portogo
|
||||
portostop
|
||||
|
||||
produktion_usn_gut
|
||||
storno*/
|
||||
|
||||
|
||||
$lieferschein_kein = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/summe_stop.png\" title=\"Kein Lieferschein\" border=\"0\" style=\"margin-right:1px\">";
|
||||
$lieferschein_ohne_pos = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/summe_go.png\" title=\"Lieferschein ohne Positionen\" border=\"0\" style=\"margin-right:1px\">";
|
||||
$lieferschein_voll = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/lagergo.png\" title=\"Lieferschein vollständig\" border=\"0\" style=\"margin-right:1px\">";
|
||||
$lieferschein_teil = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/lagergo_teil.png\" title=\"Lieferschein teilweise\" border=\"0\" style=\"margin-right:1px\">";
|
||||
|
||||
$versendet = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/liefersperrego.png\" title=\"Versendet\" border=\"0\" style=\"margin-right:1px\">";
|
||||
$versendet_nicht = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/liefersperrestop.png\" title=\"Nicht versendet\" border=\"0\" style=\"margin-right:1px\">";
|
||||
|
||||
$paketmarke = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/portogo.png\" style=\"margin-right:1px\" title=\"Paketmarke\" border=\"0\">";
|
||||
$paketmarke_keine = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/portostop.png\" style=\"margin-right:1px\" title=\"Keine Paketmarke\" border=\"0\">";
|
||||
|
||||
$ausgeliefert = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/delivery_ok.png\" style=\"margin-right:1px\" title=\"Ausgeliefert\" border=\"0\">";
|
||||
$ausgeliefert_nicht = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/delivery.png\" style=\"margin-right:1px\" title=\"Nicht ausgeliefert\" border=\"0\">";
|
||||
|
||||
$storno = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/storno.png\" style=\"margin-right:1px\" title=\"Storniert\" border=\"0\">";
|
||||
|
||||
for ($z = 0;$z < 4;$z++) {
|
||||
$abgeschlossen .= $ausgeliefert;
|
||||
$storniert .= $storno;
|
||||
}
|
||||
|
||||
return "CONCAT('<table><tr><td nowrap>',
|
||||
CASE
|
||||
WHEN status = 'storniert' THEN '$storniert'
|
||||
ELSE CONCAT(
|
||||
CASE
|
||||
WHEN lieferscheine <> '' AND vmenge = lmenge THEN '$lieferschein_voll'
|
||||
WHEN lieferschein_ohne_pos <> '' AND vmenge IS NULL THEN '$lieferschein_ohne_pos'
|
||||
WHEN lieferscheine <> '' THEN '$lieferschein_teil'
|
||||
ELSE
|
||||
'$lieferschein_kein'
|
||||
END,
|
||||
CASE
|
||||
WHEN tracking <> '' THEN '$paketmarke'
|
||||
ELSE
|
||||
'$paketmarke_keine'
|
||||
END,
|
||||
CASE
|
||||
WHEN status = 'versendet' THEN '$versendet'
|
||||
WHEN status = 'abgeschlossen' THEN '$versendet'
|
||||
ELSE
|
||||
'$versendet_nicht'
|
||||
END,
|
||||
CASE
|
||||
WHEN status = 'abgeschlossen' THEN '$ausgeliefert'
|
||||
ELSE
|
||||
'$ausgeliefert_nicht'
|
||||
END
|
||||
)
|
||||
END,
|
||||
'</td></tr></table>')";
|
||||
}
|
||||
function IconsSQL_lieferung() {
|
||||
|
||||
$lieferschein_kein = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/lagerstop.png\" title=\"Keine Artikel in Versandpaketen\" border=\"0\" style=\"margin-right:1px\">";
|
||||
$lieferschein_ohne_pos = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/summe_go.png\" title=\"Lieferschein ohne Positionen\" border=\"0\" style=\"margin-right:1px\">";
|
||||
$lieferschein_voll = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/lagergo.png\" title=\"Artikel vollständig in Versandpaketen\" border=\"0\" style=\"margin-right:1px\">";
|
||||
$lieferschein_teil = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/lagergo_stop.png\" title=\"Artikel teilweise in Versandpaketen\" border=\"0\" style=\"margin-right:1px\">";
|
||||
|
||||
$versendet = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/liefersperrego.png\" title=\"Versendet\" border=\"0\" style=\"margin-right:1px\">";
|
||||
$versendet_nicht = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/liefersperrestop.png\" title=\"Nicht versendet\" border=\"0\" style=\"margin-right:1px\">";
|
||||
$versendet_teil = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/liefersperregostop.png\" title=\"Teilweise versendet\" border=\"0\" style=\"margin-right:1px\">";
|
||||
|
||||
$ausgeliefert = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/delivery_ok.png\" style=\"margin-right:1px\" title=\"Ausgeliefert\" border=\"0\">";
|
||||
$ausgeliefert_nicht = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/delivery.png\" style=\"margin-right:1px\" title=\"Nicht ausgeliefert\" border=\"0\">";
|
||||
$ausgeliefert_teil = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/delivery_pending.png\" style=\"margin-right:1px\" title=\"Teilweise ausgeliefert\" border=\"0\">";
|
||||
|
||||
$storno = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/storno.png\" style=\"margin-right:1px\" title=\"Storniert\" border=\"0\">";
|
||||
|
||||
return "CONCAT(
|
||||
'<table><tr><td nowrap>',
|
||||
CASE
|
||||
WHEN vmenge >= lmenge THEN '$lieferschein_voll'
|
||||
WHEN vmenge < lmenge AND vmenge <> 0 THEN '$lieferschein_teil'
|
||||
ELSE '$lieferschein_kein'
|
||||
END,
|
||||
CASE
|
||||
WHEN alle_abgeschlossen THEN '$versendet'
|
||||
WHEN alle_versendet THEN '$versendet'
|
||||
WHEN eins_versendet THEN '$versendet_teil'
|
||||
ELSE '$versendet_nicht'
|
||||
END,
|
||||
CASE
|
||||
WHEN alle_abgeschlossen THEN '$ausgeliefert'
|
||||
WHEN eins_abgeschlossen THEN '$ausgeliefert_teil'
|
||||
ELSE '$ausgeliefert_nicht'
|
||||
END,
|
||||
'</td></tr></table>')";
|
||||
}
|
||||
|
||||
function TablePositionSearch($parsetarget, $name, $callback = "show", $gener) {
|
||||
|
||||
$id = $this->app->Secure->GetGET("id");
|
||||
@@ -3951,6 +4083,7 @@ url:strUrl, success:function(html){strReturn = html;}, async:false
|
||||
$allowed['wiki'] = array('dateien');
|
||||
$allowed['geschaeftsbrief_vorlagen'] = array('dateien');
|
||||
$allowed['kasse'] = array('dateien');
|
||||
$allowed['ticket'] = array('dateien');
|
||||
|
||||
$id = $this->app->Secure->GetGET("id");
|
||||
$sid = $this->app->Secure->GetGET("sid");
|
||||
@@ -3959,13 +4092,8 @@ url:strUrl, success:function(html){strReturn = html;}, async:false
|
||||
}
|
||||
|
||||
parse_str(parse_url($_SERVER['HTTP_REFERER'], PHP_URL_QUERY), $queries);
|
||||
switch($queries['module'])
|
||||
{
|
||||
case "adresse": $objekt="adressen"; break;
|
||||
default: $objekt=$queries['module'];
|
||||
}
|
||||
|
||||
//if(!ctype_alpha($objekt))$objekt="";
|
||||
$objekt = $this->dateien_module_objekt_map($queries['module']);
|
||||
|
||||
if(!preg_match('/[A-Za-z_]/', $objekt)) {
|
||||
$objekt='';
|
||||
@@ -5702,12 +5830,8 @@ url:strUrl, success:function(html){strReturn = html;}, async:false
|
||||
}
|
||||
}
|
||||
// Fester filter
|
||||
$more_data6 = $this->app->Secure->GetGET("more_data6");
|
||||
$more_data7 = $this->app->Secure->GetGET("more_data7");
|
||||
$more_data8 = $this->app->Secure->GetGET("more_data8");
|
||||
|
||||
$more_data4 = $this->app->Secure->GetGET("more_data4");
|
||||
|
||||
/*
|
||||
$versandjoin = "";
|
||||
if(isset($parameter['offenversandzentrum']) && !empty($parameter['offenversandzentrum']))
|
||||
{
|
||||
@@ -5741,8 +5865,8 @@ url:strUrl, success:function(html){strReturn = html;}, async:false
|
||||
}
|
||||
|
||||
if($versandjoin)$sql .= $versandjoin;
|
||||
|
||||
|
||||
*/
|
||||
|
||||
if($more_data4 || (isset($parameter['ohnerechnung']) && !empty($parameter['ohnerechnung']))) {
|
||||
|
||||
$paramsArray[] = " l.status !='storniert' ";
|
||||
@@ -5817,6 +5941,21 @@ url:strUrl, success:function(html){strReturn = html;}, async:false
|
||||
if ($more_data3 == 1) $subwhere[] = " l.lieferantenretoure=1 ";
|
||||
|
||||
// ENDE EXTRA more
|
||||
$more_data6 = $this->app->Secure->GetGET("more_data6");
|
||||
$more_data7 = $this->app->Secure->GetGET("more_data7");
|
||||
$more_data8 = $this->app->Secure->GetGET("more_data8");
|
||||
|
||||
if ($more_data6) {
|
||||
$subwhere[] = "l.versand_status = 3";
|
||||
}
|
||||
if ($more_data7) {
|
||||
$subwhere[] = "l.versand_status = 1";
|
||||
}
|
||||
if ($more_data8) {
|
||||
$subwhere[] = "l.versand_status IN (2,3)";
|
||||
}
|
||||
|
||||
|
||||
for ($j = 0;$j < (empty($subwhere)?0:count($subwhere));$j++) $tmp.= " AND " . $subwhere[$j];
|
||||
$where = " l.id!='' AND l.status!='angelegt' $tmp " . $this->app->erp->ProjektRechte('p.id', true, 'l.vertriebid');
|
||||
|
||||
@@ -12108,9 +12247,6 @@ url:strUrl, success:function(html){strReturn = html;}, async:false
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table></div>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
');
|
||||
|
||||
if((empty($disableautosavefilter)) && $this->anzusersaves < 2) {
|
||||
@@ -13936,11 +14072,7 @@ source: "index.php?module=ajax&action=filter&filtername=' . $filter . $extendurl
|
||||
$sid = (int)$this->app->Secure->GetPOST("sid");
|
||||
$sort = $this->app->DB->Select("SELECT sort FROM datei_stichwoerter WHERE id = '$sid' LIMIT 1");
|
||||
$id = (int)$this->app->Secure->GetGET("id");
|
||||
switch($module)
|
||||
{
|
||||
case "adresse": $objekt="adressen"; break;
|
||||
default: $objekt=$module;
|
||||
}
|
||||
$objekt = $this->dateien_module_objekt_map($module);
|
||||
|
||||
if(!preg_match('/[A-Za-z_]/', $objekt))$objekt="";
|
||||
$parameter=$id;
|
||||
@@ -13969,11 +14101,7 @@ source: "index.php?module=ajax&action=filter&filtername=' . $filter . $extendurl
|
||||
$sid = (int)$this->app->Secure->GetPOST("sid");
|
||||
$sort = $this->app->DB->Select("SELECT sort FROM datei_stichwoerter WHERE id = '$sid' LIMIT 1");
|
||||
$id = (int)$this->app->Secure->GetGET("id");
|
||||
switch($module)
|
||||
{
|
||||
case "adresse": $objekt="adressen"; break;
|
||||
default: $objekt=$module;
|
||||
}
|
||||
$objekt = $this->dateien_module_objekt_map($module);
|
||||
|
||||
if(!preg_match('/[A-Za-z_]/', $objekt))$objekt="";
|
||||
$parameter=$id;
|
||||
@@ -14072,7 +14200,7 @@ source: "index.php?module=ajax&action=filter&filtername=' . $filter . $extendurl
|
||||
$this->app->Tpl->Add('MESSAGE','<div class="error">Keine Dateien ausgewählt!</div>');
|
||||
}else{
|
||||
$objekt = $this->app->Secure->GetGET('module');
|
||||
if($objekt == 'adresse')$objekt = 'adressen';
|
||||
$objekt = $this->dateien_module_objekt_map($objekt);
|
||||
$parameter = (int)$this->app->Secure->GetGET('id');
|
||||
$alledateien = $this->app->DB->SelectArr("SELECT v.datei, v.id FROM
|
||||
datei d INNER JOIN datei_stichwoerter s ON d.id=s.datei INNER JOIN datei_version v ON v.datei=d.id WHERE s.objekt LIKE '$objekt' AND s.parameter='$parameter' AND d.geloescht=0 ");
|
||||
@@ -14139,7 +14267,7 @@ source: "index.php?module=ajax&action=filter&filtername=' . $filter . $extendurl
|
||||
$this->app->Tpl->Add('MESSAGE','<div class="error">Keine Dateien ausgewählt!</div>');
|
||||
}else{
|
||||
$objekt = $this->app->Secure->GetGET('module');
|
||||
if($objekt == 'adresse')$objekt = 'adressen';
|
||||
$objekt = $this->dateien_module_objekt_map($objekt);
|
||||
$typmodul = $this->app->Secure->GetPOST('typ');
|
||||
if($objekt == 'dateien' && $typmodul == 'geschaeftsbrief_vorlagen'){
|
||||
$objekt = $typmodul;
|
||||
@@ -14595,7 +14723,7 @@ source: "index.php?module=ajax&action=filter&filtername=' . $filter . $extendurl
|
||||
if ($module == "angebot" || $module == "auftrag" || $module == "rechnung" || $module == "gutschrift" || $module == "proformarechnung") {
|
||||
|
||||
if ($schreibschutz != 1) {
|
||||
$addrow = array('<form action="" method="post" id="myform">', '[ARTIKELSTART]<input type="text" size="30" name="artikel" id="artikel" onblur="window.setTimeout(\'selectafterblur()\',200);">[ARTIKELENDE]', '<input type="text" name="projekt" id="projekt" size="10" readonly onclick="checkhere()" >', '<input type="text" name="nummer" id="nummer" size="7">', '<input type="text" size="8" name="lieferdatum" id="lieferdatum">', '<input type="text" name="menge" id="menge" size="5" onblur="window.setTimeout(\'selectafterblurmenge()\',200); document.getElementById(\'preis\').style.background =\'none\';">', '<input type="text" name="preis" id="preis" size="10" onclick="checkhere();">', '<input type="text" name="waehrung" id="waehrung" size="10" onclick="checkhere();">' ,'<input type="text" name="rabatt" id="rabatt" size="7">');
|
||||
$addrow = array('<form action="" method="post" id="myform">', '[ARTIKELSTART]<input type="text" size="30" name="artikel" id="artikel" onblur="window.setTimeout(\'selectafterblur()\',200);">[ARTIKELENDE]', '<input type="text" name="projekt" id="projekt" size="10" readonly onclick="checkhere()" >', '<input type="text" name="nummer" id="nummer" size="7">', '<input type="text" size="8" name="lieferdatum" id="lieferdatum">', '<input type="text" name="menge" id="menge" size="5" onblur="window.setTimeout(\'selectafterblurmenge()\',200); document.getElementById(\'preis\').style.background =\'none\';">', '<input type="text" name="preis" id="preis" size="10" onclick="checkhere();">', '<input type="text" name="waehrung" id="waehrung" size="10" onclick="checkhere();">' ,'<input type="text" name="rabatt" id="rabatt" size="7">','','');
|
||||
$addrow[] = '<input type="submit" value="einfügen" name="ajaxbuchen">
|
||||
<script type="text/javascript">
|
||||
document.onkeydown = function(evt) {
|
||||
@@ -14758,9 +14886,11 @@ source: "index.php?module=ajax&action=filter&filtername=' . $filter . $extendurl
|
||||
}
|
||||
$table->headings[6] = 'Preis';
|
||||
$mengencol = 5;
|
||||
if ($module == "angebot" || $module == "auftrag" || $module == "rechnung" || $module == "gutschrift") $table->headings[7] = 'Währung';
|
||||
if ($module == "angebot" || $module == "auftrag" || $module == "rechnung" || $module == "gutschrift") $table->headings[8] = 'Rabatt';
|
||||
if ($module == "angebot" || $module == "auftrag" || $module == "rechnung" || $module == "gutschrift") $rabattcol = 8;
|
||||
if ($module == "angebot" || $module == "auftrag" || $module == "rechnung" || $module == "gutschrift") {
|
||||
$table->headings[7] = 'Währung';
|
||||
$table->headings[8] = 'Rabatt';
|
||||
$rabattcol = 8;
|
||||
}
|
||||
}
|
||||
$__arr = array($summencol, $mengencol, $rabattcol, $ecol, $dcol,$zwischensumme);
|
||||
$this->app->erp->RunHook('yui_sortlistadd_draw', 2,$table,$__arr);
|
||||
|
||||
@@ -42,7 +42,11 @@ class PLACEHOLDER_MODULECLASSNAME {
|
||||
$defaultorder = 1;
|
||||
$defaultorderdesc = 0;
|
||||
|
||||
$dropnbox = "PLACEHOLDER_DROPNBOX";
|
||||
$dropnbox = "PLACEHOLDER_DROPNBOX";
|
||||
|
||||
// $moreinfo = true; // Allow drop down details
|
||||
// $moreinfoaction = "lieferschein"; // specify suffix for minidetail-URL to allow different minidetails
|
||||
// $menucol = 11; // Set id col for moredata/menu
|
||||
|
||||
$menu = "<table cellpadding=0 cellspacing=0><tr><td nowrap>" . "<a href=\"index.php?module=PLACEHOLDER_MODULENAME&action=edit&id=%value%\"><img src=\"./themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a> <a href=\"#\" onclick=DeleteDialog(\"index.php?module=PLACEHOLDER_MODULENAME&action=delete&id=%value%\");>" . "<img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"></a>" . "</td></tr></table>";
|
||||
|
||||
@@ -118,6 +122,8 @@ class PLACEHOLDER_MODULECLASSNAME {
|
||||
|
||||
// Add checks here
|
||||
|
||||
// $input['projekt'] = $this->app->erp->ReplaceProjekt(true,$input['projekt'],true); // Parameters: Target db?, value, from form?
|
||||
|
||||
$columns = "id, ";
|
||||
$values = "$id, ";
|
||||
$update = "";
|
||||
@@ -166,6 +172,9 @@ class PLACEHOLDER_MODULECLASSNAME {
|
||||
$this->app->Tpl->Add('KURZUEBERSCHRIFT2', $email);
|
||||
$this->app->Tpl->Add('EMAIL', $email);
|
||||
$this->app->Tpl->Add('ANGEZEIGTERNAME', $angezeigtername);
|
||||
|
||||
$this->app->YUI->AutoComplete("artikel", "artikelnummer");
|
||||
|
||||
*/
|
||||
|
||||
// $this->SetInput($input);
|
||||
@@ -183,14 +192,4 @@ class PLACEHOLDER_MODULECLASSNAME {
|
||||
|
||||
return $input;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set all fields in the page corresponding to $input
|
||||
*/
|
||||
function SetInput($input) {
|
||||
// $this->app->Tpl->Set('EMAIL', $input['email']);
|
||||
|
||||
PLACEHOLDER_SET_INPUT
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57169,6 +57169,28 @@
|
||||
"Extra": "",
|
||||
"Privileges": "select,insert,update,references",
|
||||
"Comment": ""
|
||||
},
|
||||
{
|
||||
"Field": "versand_status",
|
||||
"Type": "int(11)",
|
||||
"Collation": null,
|
||||
"Null": "NO",
|
||||
"Key": "",
|
||||
"Default": "0",
|
||||
"Extra": "",
|
||||
"Privileges": "select,insert,update,references",
|
||||
"Comment": ""
|
||||
},
|
||||
{
|
||||
"Field": "umgelagert",
|
||||
"Type": "int(1)",
|
||||
"Collation": null,
|
||||
"Null": "NO",
|
||||
"Key": "",
|
||||
"Default": "0",
|
||||
"Extra": "",
|
||||
"Privileges": "select,insert,update,references",
|
||||
"Comment": ""
|
||||
}
|
||||
],
|
||||
"keys": [
|
||||
@@ -64785,6 +64807,17 @@
|
||||
"Extra": "",
|
||||
"Privileges": "select,insert,update,references",
|
||||
"Comment": ""
|
||||
},
|
||||
{
|
||||
"Field": "vorlaeufig",
|
||||
"Type": "int(1)",
|
||||
"Collation": null,
|
||||
"Null": "YES",
|
||||
"Key": "",
|
||||
"Default": "",
|
||||
"Extra": "",
|
||||
"Privileges": "select,insert,update,references",
|
||||
"Comment": ""
|
||||
}
|
||||
],
|
||||
"keys": [
|
||||
@@ -104749,6 +104782,17 @@
|
||||
"Privileges": "select,insert,update,references",
|
||||
"Comment": ""
|
||||
},
|
||||
{
|
||||
"Field": "adresse",
|
||||
"Type": "int(11)",
|
||||
"Collation": null,
|
||||
"Null": "NO",
|
||||
"Key": "",
|
||||
"Default": "0",
|
||||
"Extra": "",
|
||||
"Privileges": "select,insert,update,references",
|
||||
"Comment": ""
|
||||
},
|
||||
{
|
||||
"Field": "warteschlange",
|
||||
"Type": "text",
|
||||
@@ -112651,6 +112695,76 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "versandpaket_lieferschein_position",
|
||||
"collation": "utf8mb3_general_ci",
|
||||
"type": "BASE TABLE",
|
||||
"columns": [
|
||||
{
|
||||
"Field": "id",
|
||||
"Type": "int(11)",
|
||||
"Collation": null,
|
||||
"Null": "NO",
|
||||
"Key": "PRI",
|
||||
"Default": null,
|
||||
"Extra": "auto_increment",
|
||||
"Privileges": "select,insert,update,references",
|
||||
"Comment": ""
|
||||
},
|
||||
{
|
||||
"Field": "versandpaket",
|
||||
"Type": "int(11)",
|
||||
"Collation": null,
|
||||
"Null": "NO",
|
||||
"Key": "",
|
||||
"Default": null,
|
||||
"Extra": "",
|
||||
"Privileges": "select,insert,update,references",
|
||||
"Comment": ""
|
||||
},
|
||||
{
|
||||
"Field": "lieferschein_position",
|
||||
"Type": "int(11)",
|
||||
"Collation": null,
|
||||
"Null": "NO",
|
||||
"Key": "",
|
||||
"Default": null,
|
||||
"Extra": "",
|
||||
"Privileges": "select,insert,update,references",
|
||||
"Comment": ""
|
||||
},
|
||||
{
|
||||
"Field": "menge",
|
||||
"Type": "decimal(14,4)",
|
||||
"Collation": null,
|
||||
"Null": "NO",
|
||||
"Key": "",
|
||||
"Default": null,
|
||||
"Extra": "",
|
||||
"Privileges": "select,insert,update,references",
|
||||
"Comment": ""
|
||||
}
|
||||
],
|
||||
"keys": [
|
||||
{
|
||||
"Key_name": "PRIMARY",
|
||||
"Index_type": "BTREE",
|
||||
"columns": [
|
||||
"id"
|
||||
],
|
||||
"Non_unique": ""
|
||||
},
|
||||
{
|
||||
"Key_name": "versandpaket_lieferschein_position",
|
||||
"Index_type": "BTREE",
|
||||
"columns": [
|
||||
"versandpaket",
|
||||
"lieferschein_position"
|
||||
],
|
||||
"Non_unique": "UNIQUE"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "versandarten",
|
||||
"collation": "utf8mb3_general_ci",
|
||||
@@ -112838,6 +112952,17 @@
|
||||
"Privileges": "select,insert,update,references",
|
||||
"Comment": ""
|
||||
},
|
||||
{
|
||||
"Field": "datum",
|
||||
"Type": "datetime",
|
||||
"Collation": null,
|
||||
"Null": "NO",
|
||||
"Key": "",
|
||||
"Default": "current_timestamp()",
|
||||
"Extra": "",
|
||||
"Privileges": "select,insert,update,references",
|
||||
"Comment": ""
|
||||
},
|
||||
{
|
||||
"Field": "versand",
|
||||
"Type": "int(11)",
|
||||
@@ -112860,6 +112985,28 @@
|
||||
"Privileges": "select,insert,update,references",
|
||||
"Comment": ""
|
||||
},
|
||||
{
|
||||
"Field": "versandart",
|
||||
"Type": "varchar(64)",
|
||||
"Collation": "utf8mb3_general_ci",
|
||||
"Null": "NO",
|
||||
"Key": "",
|
||||
"Default": "",
|
||||
"Extra": "",
|
||||
"Privileges": "select,insert,update,references",
|
||||
"Comment": ""
|
||||
},
|
||||
{
|
||||
"Field": "lieferschein_ohne_pos",
|
||||
"Type": "int(11)",
|
||||
"Collation": null,
|
||||
"Null": "YES",
|
||||
"Key": "",
|
||||
"Default": null,
|
||||
"Extra": "",
|
||||
"Privileges": "select,insert,update,references",
|
||||
"Comment": ""
|
||||
},
|
||||
{
|
||||
"Field": "tracking",
|
||||
"Type": "varchar(255)",
|
||||
@@ -112871,6 +113018,17 @@
|
||||
"Privileges": "select,insert,update,references",
|
||||
"Comment": ""
|
||||
},
|
||||
{
|
||||
"Field": "tracking_link",
|
||||
"Type": "text",
|
||||
"Collation": "utf8mb3_general_ci",
|
||||
"Null": "NO",
|
||||
"Key": "",
|
||||
"Default": "",
|
||||
"Extra": "",
|
||||
"Privileges": "select,insert,update,references",
|
||||
"Comment": ""
|
||||
},
|
||||
{
|
||||
"Field": "versender",
|
||||
"Type": "varchar(255)",
|
||||
@@ -112903,6 +113061,28 @@
|
||||
"Extra": "",
|
||||
"Privileges": "select,insert,update,references",
|
||||
"Comment": ""
|
||||
},
|
||||
{
|
||||
"Field": "status",
|
||||
"Type": "varchar(64)",
|
||||
"Collation": "utf8mb3_general_ci",
|
||||
"Null": "NO",
|
||||
"Key": "",
|
||||
"Default": null,
|
||||
"Extra": "",
|
||||
"Privileges": "select,insert,update,references",
|
||||
"Comment": ""
|
||||
},
|
||||
{
|
||||
"Field": "usereditid",
|
||||
"Type": "int(11)",
|
||||
"Collation": null,
|
||||
"Null": "YES",
|
||||
"Key": "MUL",
|
||||
"Default": null,
|
||||
"Extra": "",
|
||||
"Privileges": "select,insert,update,references",
|
||||
"Comment": ""
|
||||
}
|
||||
],
|
||||
"keys": [
|
||||
|
||||
@@ -112,6 +112,12 @@ if (php_sapi_name() == "cli") {
|
||||
$check_db = true;
|
||||
} else {
|
||||
}
|
||||
|
||||
if (in_array('-strict', $argv)) {
|
||||
$strict_db = true;
|
||||
} else {
|
||||
$strict_db = false;
|
||||
}
|
||||
|
||||
if (in_array('-do', $argv)) {
|
||||
if (!$check_git && !$check_db) {
|
||||
@@ -127,7 +133,17 @@ if (php_sapi_name() == "cli") {
|
||||
}
|
||||
|
||||
if ($check_git || $check_db || $do_git || $do_db) {
|
||||
upgrade_main($directory,$verbose,$check_git,$do_git,$export_db,$check_db,$do_db,$force,$connection,$origin);
|
||||
upgrade_main( directory: $directory,
|
||||
verbose: $verbose,
|
||||
check_git: $check_git,
|
||||
do_git: $do_git,
|
||||
export_db: $export_db,
|
||||
check_db: $check_db,
|
||||
strict_db: $strict_db,
|
||||
do_db: $do_db,
|
||||
force: $force,
|
||||
connection: $connection,
|
||||
origin: $origin);
|
||||
} else {
|
||||
info();
|
||||
}
|
||||
@@ -139,7 +155,7 @@ if (php_sapi_name() == "cli") {
|
||||
}
|
||||
// -------------------------------- END
|
||||
|
||||
function upgrade_main(string $directory,bool $verbose, bool $check_git, bool $do_git, bool $export_db, bool $check_db, bool $do_db, bool $force, bool $connection, bool $origin) {
|
||||
function upgrade_main(string $directory,bool $verbose, bool $check_git, bool $do_git, bool $export_db, bool $check_db, bool $strict_db, bool $do_db, bool $force, bool $connection, bool $origin) {
|
||||
|
||||
$mainfolder = dirname($directory);
|
||||
$datafolder = $directory."/data";
|
||||
@@ -379,7 +395,7 @@ function upgrade_main(string $directory,bool $verbose, bool $check_git, bool $do
|
||||
echo_out("--------------- Calculating database upgrade for '$schema@$host'... ---------------\n");
|
||||
|
||||
$upgrade_sql = array();
|
||||
$result = mustal_calculate_db_upgrade($compare_def, $db_def, $upgrade_sql, $mustal_replacers);
|
||||
$result = mustal_calculate_db_upgrade($compare_def, $db_def, $upgrade_sql, $mustal_replacers, $strict_db);
|
||||
|
||||
if (!empty($result)) {
|
||||
abort(count($result)." errors.\n");
|
||||
@@ -482,6 +498,7 @@ function info() {
|
||||
echo_out("\t-f: force override of existing files\n");
|
||||
echo_out("\t-o: update from origin instead of remote.json\n");
|
||||
echo_out("\t-connection use connection.json in data folder instead of user.inc.php\n");
|
||||
echo_out("\t-strict: innodb_strict_mode=ON\n");
|
||||
echo_out("\t-clean: (not yet implemented) create the needed SQL to remove items from the database not in the JSON\n");
|
||||
echo_out("\n");
|
||||
}
|
||||
|
||||
+6
-4
@@ -21,7 +21,7 @@ function mustal_compare_table_array(array $nominal, string $nominal_name, array
|
||||
Compare two database structures
|
||||
Returns a structured array containing information on all the differences.
|
||||
|
||||
function mustal_calculate_db_upgrade(array $compare_def, array $db_def, array &$upgrade_sql) : int
|
||||
function mustal_calculate_db_upgrade(array $compare_def, array $db_def, array &$upgrade_sql, bool $strict) : int
|
||||
Generate the SQL needed to upgrade the database to match the definition, based on a comparison.
|
||||
|
||||
Data structure in Array and JSON
|
||||
@@ -542,7 +542,7 @@ function mustal_implode_with_quote(string $quote, string $delimiter, array $arra
|
||||
// 11 Table type upgrade not supported
|
||||
// 12 Upgrade type not supported
|
||||
|
||||
function mustal_calculate_db_upgrade(array $compare_def, array $db_def, array &$upgrade_sql, array $replacers) : array {
|
||||
function mustal_calculate_db_upgrade(array $compare_def, array $db_def, array &$upgrade_sql, array $replacers, bool $strict) : array {
|
||||
|
||||
$result = array();
|
||||
$upgrade_sql = array();
|
||||
@@ -752,8 +752,10 @@ function mustal_calculate_db_upgrade(array $compare_def, array $db_def, array &$
|
||||
$upgrade_sql = array_unique($upgrade_sql);
|
||||
|
||||
if (count($upgrade_sql) > 0) {
|
||||
|
||||
array_unshift($upgrade_sql,"SET SQL_MODE='ALLOW_INVALID_DATES';","SET SESSION innodb_strict_mode=OFF;");
|
||||
array_unshift($upgrade_sql,"SET SQL_MODE='ALLOW_INVALID_DATES';");
|
||||
if (!$strict) {
|
||||
array_unshift($upgrade_sql,"SET SESSION innodb_strict_mode=OFF;");
|
||||
}
|
||||
}
|
||||
|
||||
return($result);
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
$version="OSS";
|
||||
$version_revision="1.10";
|
||||
$version_revision="1.11";
|
||||
$githash = file_get_contents("../githash.txt");
|
||||
if (!empty($githash)) {
|
||||
$version_revision .= " (".substr($githash,0,8).")";
|
||||
|
||||
+44
-1479
File diff suppressed because it is too large
Load Diff
@@ -75,7 +75,8 @@ abstract class Versanddienstleister
|
||||
$ret['lieferscheinId'] = $lieferscheinId;
|
||||
|
||||
$addressfields = ['name', 'adresszusatz', 'abteilung', 'ansprechpartner', 'unterabteilung', 'ort', 'plz',
|
||||
'strasse', 'land'];
|
||||
'strasse', 'land'];
|
||||
|
||||
$ret['original'] = array_filter($docArr, fn($key) => in_array($key, $addressfields), ARRAY_FILTER_USE_KEY);
|
||||
|
||||
$ret['name'] = empty(trim($docArr['ansprechpartner'])) ? trim($docArr['name']) : trim($docArr['ansprechpartner']);
|
||||
@@ -127,7 +128,7 @@ abstract class Versanddienstleister
|
||||
if (!empty($docArr['ihrebestellnummer'])) {
|
||||
$orderNumberParts[] = $docArr['ihrebestellnummer'];
|
||||
}
|
||||
$orderNumberParts[] = $docArr['belegnr'];
|
||||
$orderNumberParts[] = ucfirst($sid)." ".$docArr['belegnr'];
|
||||
$ret['order_number'] = implode(' / ', $orderNumberParts);
|
||||
}
|
||||
|
||||
@@ -369,7 +370,7 @@ abstract class Versanddienstleister
|
||||
return true;
|
||||
}
|
||||
|
||||
public function Paketmarke(string $target, string $docType, int $docId): void
|
||||
public function Paketmarke(string $target, string $docType, int $docId, $versandpaket = null): void
|
||||
{
|
||||
$address = $this->GetAdressdaten($docId, $docType);
|
||||
if (isset($_SERVER['CONTENT_TYPE']) && ($_SERVER['CONTENT_TYPE'] === 'application/json')) {
|
||||
@@ -378,25 +379,65 @@ abstract class Versanddienstleister
|
||||
if ($json->submit == 'print') {
|
||||
$result = $this->CreateShipment($json, $address);
|
||||
if ($result->Success) {
|
||||
$sql = "INSERT INTO versand
|
||||
(adresse, lieferschein, versandunternehmen, gewicht, tracking, tracking_link, anzahlpakete)
|
||||
VALUES
|
||||
({$address['addressId']}, {$address['lieferscheinId']}, '$this->type',
|
||||
'$json->weight', '$result->TrackingNumber', '$result->TrackingUrl', 1)";
|
||||
$this->app->DB->Insert($sql);
|
||||
if (empty($versandpaket)) {
|
||||
$sql = "INSERT INTO versandpakete
|
||||
(
|
||||
lieferschein_ohne_pos,
|
||||
gewicht,
|
||||
tracking,
|
||||
tracking_link,
|
||||
status,
|
||||
versandart,
|
||||
versender
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
{$address['lieferscheinId']},
|
||||
'$json->weight',
|
||||
'$result->TrackingNumber',
|
||||
'$result->TrackingUrl',
|
||||
'neu',
|
||||
'$this->type',
|
||||
'".$this->app->User->GetName()."'
|
||||
)";
|
||||
$this->app->DB->Insert($sql);
|
||||
$versandpaket = $this->app->DB->GetInsertID();
|
||||
}
|
||||
else {
|
||||
$sql = "UPDATE versandpakete SET
|
||||
gewicht = '".$json->weight."',
|
||||
tracking = '".$result->TrackingNumber."',
|
||||
tracking_link = '".$result->TrackingUrl."'
|
||||
WHERE id = '".$versandpaket."'
|
||||
";
|
||||
$this->app->DB->Update($sql);
|
||||
}
|
||||
|
||||
$filename = $this->app->erp->GetTMP() . join('_', [$this->type, 'Label', $result->TrackingNumber]) . '.pdf';
|
||||
file_put_contents($filename, $result->Label);
|
||||
$this->app->printer->Drucken($this->labelPrinterId, $filename);
|
||||
$filename = join('_', [$this->type, 'Label', $result->TrackingNumber]) . '.pdf';
|
||||
$filefullpath = $this->app->erp->GetTMP() . $filename;
|
||||
file_put_contents($filefullpath, $result->Label);
|
||||
$this->app->erp->CreateDateiWithStichwort(
|
||||
$filename,
|
||||
'Paketmarke '.$this->type.' '.$result->TrackingNumber,
|
||||
'Paketmarke Versandpaket Nr. '.$versandpaket,
|
||||
'',
|
||||
$filefullpath,
|
||||
$this->app->User->GetName(),
|
||||
'paketmarke',
|
||||
'versandpaket',
|
||||
$versandpaket
|
||||
);
|
||||
|
||||
if (isset($result->ExportDocuments)) {
|
||||
$filename = $this->app->erp->GetTMP() . join('_', [$this->type, 'ExportDoc', $result->TrackingNumber]) . '.pdf';
|
||||
file_put_contents($filename, $result->ExportDocuments);
|
||||
$this->app->printer->Drucken($this->documentPrinterId, $filename);
|
||||
}
|
||||
$ret['messages'][] = ['class' => 'info', 'text' => "Paketmarke wurde erfolgreich erstellt: $result->TrackingNumber"];
|
||||
$this->app->printer->Drucken($this->labelPrinterId, $filefullpath);
|
||||
|
||||
if (isset($result->ExportDocuments)) {
|
||||
$filefullpath = $this->app->erp->GetTMP() . join('_', [$this->type, 'ExportDoc', $result->TrackingNumber]) . '.pdf';
|
||||
file_put_contents($filefullpath, $result->ExportDocuments);
|
||||
$this->app->printer->Drucken($this->documentPrinterId, $filefullpath);
|
||||
}
|
||||
$ret['messages'][] = ['class' => 'info', 'text' => "Paketmarke wurde erfolgreich erstellt: $result->TrackingNumber"];
|
||||
} else {
|
||||
$ret['messages'] = array_map(fn(string $item) => ['class' => 'error', 'text' => $item], array_unique($result->Errors));
|
||||
$ret['messages'] = array_map(fn(string $item) => ['class' => 'error', 'text' => $item], array_unique($result->Errors));
|
||||
}
|
||||
}
|
||||
header('Content-Type: application/json');
|
||||
@@ -410,7 +451,12 @@ abstract class Versanddienstleister
|
||||
$address['product'] = $products[0]->Id ?? '';
|
||||
|
||||
$countries = $this->app->DB->SelectArr("SELECT iso, bezeichnung_de name, eu FROM laender ORDER BY bezeichnung_de");
|
||||
$countries = array_combine(array_column($countries, 'iso'), $countries);
|
||||
if(!empty($countries)) {
|
||||
$countries = array_combine(array_column($countries, 'iso'), $countries);
|
||||
} else {
|
||||
$countries = Array();
|
||||
$this->app->Tpl->addMessage('error', 'Länderliste ist leer. Siehe Einstellungen -> Länderliste.', false, 'PAGE');
|
||||
}
|
||||
|
||||
$json['form'] = $address;
|
||||
$json['countries'] = $countries;
|
||||
|
||||
@@ -137,7 +137,7 @@ SPDX-License-Identifier: LicenseRef-EGPL-3.1
|
||||
<h2>{|Paket|}</h2>
|
||||
<table>
|
||||
<tr>
|
||||
<td>{|Gewicht (in kg)|}:</td>
|
||||
<td>{|Gewicht (in kg)</b>|}:</td>
|
||||
<td><input type="text" v-model.number="form.weight"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -157,7 +157,7 @@ SPDX-License-Identifier: LicenseRef-EGPL-3.1
|
||||
<td>
|
||||
<select v-model="form.product" required>
|
||||
<option v-for="prod in products" :value="prod.Id" v-if="productAvailable(prod)">{{prod.Name}}</option>
|
||||
</select>
|
||||
</select><i>Für Produktwahl Gewicht eingeben!</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-if="serviceAvailable('premium')">
|
||||
@@ -168,11 +168,11 @@ SPDX-License-Identifier: LicenseRef-EGPL-3.1
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
<div class="col-md-12">
|
||||
<h2>{|Bestellung|}</h2>
|
||||
<h2>{|Sonstiges|}</h2>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>{|Bestellnummer|}:</td>
|
||||
<td>{|Referenzen|}:</td>
|
||||
<td><input type="text" size="36" v-model="form.order_number"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -300,4 +300,4 @@ SPDX-License-Identifier: LicenseRef-EGPL-3.1
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</script>
|
||||
|
||||
+22
-19
@@ -350,9 +350,9 @@ class Ajax {
|
||||
$id = $this->app->Secure->GetPOST('id');
|
||||
$objekt = $this->app->Secure->GetPOST('typ');
|
||||
$parameter = $this->app->Secure->GetPOST('parameter');
|
||||
if($objekt === 'adresse'){
|
||||
$objekt = 'Adressen';
|
||||
}
|
||||
|
||||
$module = strtolower($objekt);
|
||||
$objekt = $this->app->YUI->dateien_module_objekt_map($objekt);
|
||||
|
||||
$data = $this->app->DB->SelectRow(
|
||||
"SELECT d.*, s.subjekt
|
||||
@@ -363,12 +363,6 @@ class Ajax {
|
||||
LIMIT 1"
|
||||
);
|
||||
|
||||
|
||||
$module = strtolower($objekt);
|
||||
if($module === 'adressen'){
|
||||
$module = 'adresse';
|
||||
}
|
||||
|
||||
$typen = $this->app->erp->getDateiTypen($module);
|
||||
$found = false;
|
||||
foreach($typen as $typ) {
|
||||
@@ -431,10 +425,10 @@ class Ajax {
|
||||
$titel = $this->app->Secure->GetPOST('titel');
|
||||
$beschreibung = $this->app->Secure->GetPOST('beschreibung');
|
||||
$subjekt = $this->app->Secure->GetPOST('subjekt');
|
||||
if($objekt == 'adresse')
|
||||
{
|
||||
$objekt = 'Adressen';
|
||||
}
|
||||
|
||||
$module = strtolower($objekt);
|
||||
$objekt = $this->app->YUI->dateien_module_objekt_map($module);
|
||||
|
||||
$ersteller = $this->app->DB->real_escape_string($this->app->User->GetName());
|
||||
$datei = $this->app->DB->SelectArr("SELECT d.id, s.id as sid FROM datei d LEFT JOIN datei_stichwoerter s ON d.id=s.datei LEFT JOIN datei_version v ON v.datei=d.id WHERE s.objekt LIKE '$objekt' AND s.parameter='$parameter' AND d.geloescht=0 AND d.id = '$id' LIMIT 1");
|
||||
if($datei)
|
||||
@@ -654,6 +648,9 @@ class Ajax {
|
||||
$cmd = trim($this->app->Secure->GetGET('cmd'));
|
||||
$id = (int)$this->app->Secure->GetGET('id');
|
||||
|
||||
$module = strtolower($cmd);
|
||||
$cmd = $this->app->YUI->dateien_module_objekt_map($cmd);
|
||||
|
||||
if(!empty($cmd) && $id
|
||||
&& (!in_array($cmd, $cmds) || (in_array($cmd, $cmds) && $this->app->erp->RechteVorhanden($cmd,'dateien')))) {
|
||||
$datei = $this->app->DB->SelectRow(
|
||||
@@ -661,7 +658,7 @@ class Ajax {
|
||||
"SELECT dv.id, ds.parameter, dv.dateiname
|
||||
FROM datei_version AS dv
|
||||
INNER JOIN datei_stichwoerter ds ON ds.datei = dv.datei
|
||||
WHERE dv.datei = %d AND (ds.objekt like '%s'".($cmd === 'adresse'?" OR ds.objekt like 'Adressen' ":'').")
|
||||
WHERE dv.datei = %d AND (ds.objekt like '%s')
|
||||
ORDER BY dv.datei DESC, dv.version DESC
|
||||
LIMIT 1",
|
||||
$id, $cmd
|
||||
@@ -694,7 +691,7 @@ class Ajax {
|
||||
$projekt = $this->app->DB->Select(
|
||||
sprintf(
|
||||
'SELECT `projekt` FROM `%s` WHERE `id` = %d LIMIT 1',
|
||||
$cmd, $datei[0]['parameter']
|
||||
$module, $datei[0]['parameter']
|
||||
)
|
||||
);
|
||||
if(!$this->app->erp->UserProjektRecht($projekt)) {
|
||||
@@ -1597,11 +1594,17 @@ select a.kundennummer, (SELECT name FROM adresse a2 WHERE a2.kundennummer = a.ku
|
||||
if($artikel_freitext1_suche)
|
||||
{
|
||||
$felder[] = 'art.freifeld1';
|
||||
} else {
|
||||
$artikel_freitext1_suche = 'true';
|
||||
}
|
||||
$subwhere = $this->AjaxFilterWhere($termorig,$felder);
|
||||
$arr = $this->app->DB->SelectArr("SELECT CONCAT(art.nummer,' ',art.name_de) as name FROM artikel art
|
||||
$subwhere = $this->AjaxFilterWhere($termorig,$felder);
|
||||
$sql = "SELECT CONCAT(art.nummer,' ',art.name_de) as name FROM artikel art
|
||||
INNER JOIN $doctype"."_position ap ON ap.artikel = art.id AND $doctype = '$doctypeid'
|
||||
WHERE art.geloescht=0 AND ($artikel_freitext1_suche) AND art.geloescht=0 AND art.intern_gesperrt!=1 LIMIT 20");
|
||||
WHERE
|
||||
art.geloescht=0 AND ($artikel_freitext1_suche) AND art.geloescht=0 AND art.intern_gesperrt!=1 AND
|
||||
(name_de LIKE '%$term%' OR art.nummer LIKE '%$term%')
|
||||
LIMIT 20";
|
||||
$arr = $this->app->DB->SelectArr($sql);
|
||||
$carr = !empty($arr)?count($arr):0;
|
||||
for($i = 0; $i < $carr; $i++) {
|
||||
$newarr[] = $arr[$i]['name'];
|
||||
@@ -2479,7 +2482,7 @@ select a.kundennummer, (SELECT name FROM adresse a2 WHERE a2.kundennummer = a.ku
|
||||
$adresse = $this->app->DB->Select("SELECT id FROM adresse WHERE kundennummer = '".$kunde[0]."' AND kundennummer <> '' LIMIT 1");
|
||||
}
|
||||
$beleg = str_replace('kunden','',$filtername);
|
||||
$arr = $this->app->DB->SelectArr("SELECT CONCAT(id,' ',if(belegnr <> '',belegnr,'ENTWURF'),' ',kundennummer,' ',name) as name FROM $beleg WHERE (belegnr LIKE '%$term%' OR name LIKE '%$term%' OR kundennummer LIKE '$%term%') AND (status = 'angelegt' OR status = 'freigegeben')
|
||||
$arr = $this->app->DB->SelectArr("SELECT CONCAT(belegnr,' ',kundennummer,' ',name) as name FROM $beleg WHERE (belegnr <> '') AND (belegnr LIKE '%$term%' OR name LIKE '%$term%' OR kundennummer LIKE '$%term%') AND (status IN ('angelegt','freigegeben','versendet'))
|
||||
".($adresse?" AND adresse = '$adresse' ":'')." ".$this->app->erp->ProjektRechte('projekt')."
|
||||
ORDER by belegnr LIMIT 20");
|
||||
$carr = !empty($arr)?count($arr):0;
|
||||
|
||||
+93
-7
@@ -1990,8 +1990,52 @@ class Auftrag extends GenAuftrag
|
||||
$gebuchtezeit = str_replace(".", ",", round($gebuchtezeit,2));
|
||||
}
|
||||
$summebrutto = $this->app->DB->Select("SELECT gesamtsumme FROM auftrag WHERE id='$id' LIMIT 1");
|
||||
$this->app->Tpl->Set('DECKUNGSBEITRAG',0);
|
||||
$this->app->Tpl->Set('DBPROZENT',0);
|
||||
|
||||
// Deckungsbeitrag
|
||||
if (!$this->app->erp->RechteVorhanden('auftrag','einkaufspreise')) {
|
||||
$this->app->Tpl->Set('DBHIDDEN','hidden');
|
||||
} else {
|
||||
$sql = "
|
||||
SELECT
|
||||
umsatz_netto_gesamt,
|
||||
artikel,
|
||||
menge,
|
||||
einkaufspreis
|
||||
FROM
|
||||
`auftrag_position`
|
||||
WHERE
|
||||
`auftrag` = ".$id."
|
||||
";
|
||||
|
||||
$positionen = $this->app->DB->SelectArr($sql);
|
||||
|
||||
$umsatz_gesamt = 0;
|
||||
$kosten_gesamt = 0;
|
||||
$db_gesamt = 0;
|
||||
foreach ($positionen as $position) {
|
||||
if (empty($position['einkaufspreis'])) {
|
||||
$position['einkaufspreis'] = $this->app->erp->GetEinkaufspreis($position['artikel'],$position['menge']);
|
||||
}
|
||||
$kosten = ($position['einkaufspreis']*$position['menge']);
|
||||
$db_gesamt += $position['umsatz_netto_gesamt']-$kosten;
|
||||
$kosten_gesamt += $kosten;
|
||||
$umsatz_gesamt += $position['umsatz_netto_gesamt'];
|
||||
}
|
||||
|
||||
$this->app->Tpl->Set('NETTOGESAMT',$this->app->erp->number_format_variable($umsatz_gesamt,2));
|
||||
$this->app->Tpl->Set('KOSTEN',$this->app->erp->number_format_variable($kosten_gesamt,2));
|
||||
$this->app->Tpl->Set('DECKUNGSBEITRAG',$this->app->erp->number_format_variable($db_gesamt,2));
|
||||
$this->app->Tpl->Set( 'DBPROZENT',
|
||||
$umsatz_gesamt==0?
|
||||
"-":
|
||||
$this->app->erp->number_format_variable(
|
||||
round(
|
||||
$db_gesamt/$umsatz_gesamt*100,2
|
||||
)
|
||||
)."%"
|
||||
);
|
||||
}
|
||||
|
||||
$this->app->Tpl->Set('GEBUCHTEZEIT',0);
|
||||
|
||||
if($auftragArr[0]['ust_befreit']==0){
|
||||
@@ -2270,7 +2314,7 @@ class Auftrag extends GenAuftrag
|
||||
}
|
||||
$this->app->Tpl->Set('PREISANFRAGE', implode('<br />', $priceRequestsHtml));
|
||||
}
|
||||
|
||||
/*
|
||||
$tmpVersand = !$hasDeliveryNotes?[]: $this->app->DB->SelectFirstCols(
|
||||
"SELECT if(v.versendet_am!='0000-00-00',
|
||||
CONCAT(DATE_FORMAT( v.versendet_am,'%d.%m.%Y'),' ',v.versandunternehmen),
|
||||
@@ -2353,6 +2397,39 @@ class Auftrag extends GenAuftrag
|
||||
else {
|
||||
$this->app->Tpl->Set('TRACKING',$tmpVersand);
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
$sql = "SELECT SQL_CALC_FOUND_ROWS
|
||||
v.id,
|
||||
v.tracking as tracking,
|
||||
v.tracking_link
|
||||
FROM
|
||||
versandpakete v
|
||||
LEFT JOIN
|
||||
versandpaket_lieferschein_position vlp ON v.id = vlp.versandpaket
|
||||
LEFT JOIN
|
||||
lieferschein_position lp ON lp.id = vlp.lieferschein_position
|
||||
LEFT JOIN
|
||||
lieferschein l ON lp.lieferschein = l.id
|
||||
LEFT JOIN
|
||||
lieferschein lop ON lop.id = v.lieferschein_ohne_pos
|
||||
WHERE
|
||||
l.auftragid = ".$id." OR lop.auftragid = ".$id."
|
||||
GROUP BY
|
||||
v.id
|
||||
";
|
||||
$tracking = $this->app->DB->SelectArr($sql);
|
||||
|
||||
$tracking_list = array();
|
||||
foreach ($tracking as $single_tracking) {
|
||||
$tracking_list[] = '<a href="index.php?module=versandpakete&action=edit&id='.$single_tracking['id'].'">Paket Nr.'.$single_tracking['id'].'</a>'.
|
||||
' ('.'<a href="'.$single_tracking['tracking_link'].'">'.$single_tracking['tracking'].'</a>'.')';
|
||||
}
|
||||
|
||||
$this->app->Tpl->Set('TRACKING',implode('<br>',$tracking_list));
|
||||
|
||||
|
||||
|
||||
|
||||
$icons = $this->app->YUI->IconsSQL();
|
||||
@@ -4916,6 +4993,10 @@ class Auftrag extends GenAuftrag
|
||||
$this->app->erp->AdresseAlsLieferadresseButton($adresse);
|
||||
}
|
||||
|
||||
if ($schreibschutz != 1 AND $status != 'abgeschlossen') {
|
||||
$this->app->erp->BerechneDeckungsbeitrag($id,'auftrag');
|
||||
}
|
||||
|
||||
if($nummer!='') {
|
||||
$this->app->Tpl->Set('NUMMER',$nummer);
|
||||
if($this->app->erp->RechteVorhanden('adresse','edit')){
|
||||
@@ -5694,8 +5775,13 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
||||
}
|
||||
|
||||
$this->app->DB->Update("UPDATE lieferschein SET
|
||||
belegnr='$ls_belegnr', status='freigegeben', versand='".$this->app->User->GetDescription()."'
|
||||
WHERE id='$lieferschein' LIMIT 1");
|
||||
belegnr='$ls_belegnr',
|
||||
status='freigegeben',
|
||||
versand='".$this->app->User->GetDescription()."',
|
||||
versand_status = 1
|
||||
WHERE id='$lieferschein' LIMIT 1");
|
||||
|
||||
// Versand_status: 1 = process in versandpakete, 2 = finished, 3 = finished manually
|
||||
|
||||
$this->app->erp->LieferscheinProtokoll($lieferschein, 'Lieferschein freigegeben');
|
||||
|
||||
@@ -6342,7 +6428,7 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
||||
$this->app->erp->MenuEintrag('index.php?module=auftrag&action=list','Übersicht');
|
||||
$this->app->erp->MenuEintrag('index.php?module=auftrag&action=create','Neuen Auftrag anlegen');
|
||||
$this->app->erp->MenuEintrag('index.php?module=auftrag&action=offene','Offene Positionen');
|
||||
$this->app->erp->MenuEintrag('index.php?module=auftrag&action=versandzentrum','Versandzentrum');
|
||||
$this->app->erp->MenuEintrag('index.php?module=auftrag&action=versandzentrum','Versandübergabe');
|
||||
|
||||
if(strlen($backurl)>5){
|
||||
$this->app->erp->MenuEintrag("$backurl", 'Zurück zur Übersicht');
|
||||
@@ -6387,7 +6473,7 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
||||
$this->AuftraguebersichtMenu();
|
||||
$targetMessage = 'AUTOVERSANDBERECHNEN';
|
||||
|
||||
$this->app->Tpl->Add('MESSAGE','<div class="info">Aufträge an Versand übergeben mit automatischem Druck und Mailversand.</div>');
|
||||
$this->app->Tpl->Add('MESSAGE','<div class="info">Aufträge an Versand übergeben mit automatischem Druck und Mailversand. <a class="button" href="index.php?module=versandpakete&action=lieferungen">Zum Versand</a></div>');
|
||||
|
||||
$autoshipmentEnabled = true;
|
||||
$this->app->erp->RunHook('OrderAutoShipment', 2, $targetMessage, $autoshipmentEnabled);
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
<tr><td class="auftraginfo_cell">{|Bestellung|}:</td><td class="auftraginfo_cell" >[BESTELLUNG]</td><td class="auftraginfo_cell">{|Eigene Umsatzsteuer ID|}:</td><td class="auftraginfo_cell">[DELIVERYTHRESHOLDVATID]</td></tr>
|
||||
<tr><td class="auftraginfo_cell">{|Retoure|}:</td><td class="auftraginfo_cell" >[RETOURE]</td><td class="auftraginfo_cell"></td><td class="auftraginfo_cell"></td></tr>
|
||||
<tr><td class="auftraginfo_cell">{|Preisanfrage|}:</td><td class="auftraginfo_cell" >[PREISANFRAGE]</td><td class="auftraginfo_cell"></td><td class="auftraginfo_cell"></td></tr>
|
||||
<tr><td class="auftraginfo_cell">{|Tracking|}:</td><td class="auftraginfo_cell" >[TRACKING]</td><td class="auftraginfo_cell"></td><td class="auftraginfo_cell"></td></tr>
|
||||
<tr><td class="auftraginfo_cell">{|Pakete|}:</td><td class="auftraginfo_cell" >[TRACKING]</td><td class="auftraginfo_cell"></td><td class="auftraginfo_cell"></td></tr>
|
||||
</table>
|
||||
|
||||
<table width="100%">
|
||||
@@ -48,19 +48,14 @@
|
||||
<td style="" width="50%">[VERSANDTEXT]</td>
|
||||
[RMAENDIF]
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<div style="background-color:white">
|
||||
<div style="padding:10px">
|
||||
[RECHNUNGLIEFERADRESSE]
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div style="float:left; width:50%">
|
||||
|
||||
<div style="overflow:auto;max-height:550px;">
|
||||
<div style="background-color:white;">
|
||||
<h2 class="greyh2">Artikel</h2>
|
||||
@@ -69,63 +64,55 @@
|
||||
<i style="color:#999">* Die linke Zahl zeigt die für den Kunden reservierten Einheiten und die rechte Zahl die global reservierte Anzahl.</i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
[MINIDETAILNACHARTIKEL]
|
||||
<!--
|
||||
<div style="background-color:white;">
|
||||
<h2 class="greyh2">Lieferkette</h2>
|
||||
<div style="padding:10px">
|
||||
<table class="mkTable">
|
||||
<tr><th>Art</th><th>Beleg</th><th>Datum</th><th>Lieferant</th><th>Status</th></tr>
|
||||
<tr><td>Bestellung</td><td>ENTWURF</td><td></td><td>In-Circuit<br>200 x 777777 SMT USBprog 1)</td><td>-</td></tr>
|
||||
<tr><td>Anlieferung</td><td>200000</td><td></td><td>In-Circuit<br>200 x 777777 ATMEGA32</td><td>offen</td></tr>
|
||||
<tr><td>Bestellung</td><td>100023</td><td></td><td>Instanet<br>200 x USBprog 5.0 Spezial Elektor<br>200 x 777777 Flashen + Montieren</td><td>offen</td></tr>
|
||||
<tr><td>Anlieferung</td><td>200002</td><td></td><td>Instanet<br>200 x 777777 SMT USBprog 1)<br>200 x 122222 Gehäuse</td><td>offen</td></tr>
|
||||
</table>
|
||||
<div style="background-color:white" [DBHIDDEN]>
|
||||
<h2 class="greyh2">{|Deckungsbeitrag (netto)|}</h2>
|
||||
<table width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Umsatz EUR</td>
|
||||
<td>Kosten EUR</td>
|
||||
<td>Deckungsbeitrag EUR</td>
|
||||
<td>DB %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="greybox" width="25%">[NETTOGESAMT]</td>
|
||||
<td class="greybox" width="25%">[KOSTEN]</td>
|
||||
<td class="greybox" width="25%">[DECKUNGSBEITRAG]</td>
|
||||
<td class="greybox" width="25%">[DBPROZENT]</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
|
||||
<div style="background-color:white">
|
||||
<h2 class="greyh2">{|Zahlungen|}</h2>
|
||||
<div style="padding:10px">
|
||||
[ZAHLUNGEN]
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="background-color:white">
|
||||
<h2 class="greyh2">{|Protokoll|}</h2>
|
||||
<div style="padding:10px;">
|
||||
[PROTOKOLL]
|
||||
</div>
|
||||
</div>
|
||||
|
||||
[VORPRODUKTIONPROTOKOLL]
|
||||
[PRODUKTIONPROTOKOLL]
|
||||
[NACHPRODUKTIONPROTOKOLL]
|
||||
|
||||
<!--
|
||||
<div style="background-color:white">
|
||||
<h2 class="greyh2">{|RMA Prozess|}</h2>
|
||||
<div style="padding:10px">
|
||||
[RMA]
|
||||
</div>
|
||||
<h2 class="greyh2">{|RMA Prozess|}</h2>
|
||||
<div style="padding:10px">
|
||||
[RMA]
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
<div style="background-color:white">
|
||||
<h2 class="greyh2">{|PDF-Archiv|}</h2>
|
||||
<div style="padding:10px;overflow:auto;">
|
||||
[PDFARCHIV]
|
||||
</div>
|
||||
</div>
|
||||
<div style="background-color:white">
|
||||
<h2 class="greyh2">{|Deckungsbeitrag|}</h2>
|
||||
<div style="padding:10px">
|
||||
|
||||
<div class="info">{|Dieses Modul ist erst ab Version Professional verfügbar|}</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
[INTERNEBEMERKUNGEDIT]
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
<li>{|Stornierung|} <i>{|Variablen|}: {AUFTRAG}, {DATUM}, {INTERNET}</i></li>
|
||||
<li>{|ZahlungMiss|} <i>{|Variablen|}: {AUFTRAG}, {DATUM}, {GESAMT}, {REST}, {ANSCHREIBEN}, {INTERNET}</i></li>
|
||||
<li>Mahnung <i>Variablen: {BELEGNR}, {DATUM}, {OFFEN}, {MAHNGEBUEHR}, {HEUTE}</i></li>
|
||||
<li>{|Versand|} <i>{|Variablen|}: {VERSAND}, {VERSANDTYPE}, {VERSANDBEZEICHNUNG}, {TRACKINGNUMMER}, {NAME}, {ANSCHREIBEN}, {BELEGNR}, {IHREBESTELLNUMMER}, {INTERNET}, {AUFTRAGDATUM}, {LIEFERADRESSE}, {LIEFERADRESSELANG}</i></li>
|
||||
<li>{|Versand|} <i>{|Variablen|}: {VERSAND}, {VERSANDTYPE}, {VERSANDBEZEICHNUNG}, {TRACKINGNUMMER}, {TRACKINGLINK}, {NAME}, {ANSCHREIBEN}, {BELEGNR}, {IHREBESTELLNUMMER}, {INTERNET}, {AUFTRAGDATUM}, {LIEFERADRESSE}, {LIEFERADRESSELANG}</i></li>
|
||||
<li>{|VersandMailDokumente|} <i>{|Variablen|}: {NAME}, {ANSCHREIBEN}, {BELEGNR}, {IHREBESTELLNUMMER}, {INTERNET}, {AUFTRAGDATUM}</i></li>
|
||||
<li>{|Erweiterte Freigabe|} <i>{|Variablen|}: {REQUESTER}, {LINK}, {LINKFREIGABEUEBERSICHT}, {DOCTYPE}, {DOCTYPE_ID}</i></li>
|
||||
<li>{|Selbstabholer|}</li>
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
<div id="tabs">
|
||||
<ul>
|
||||
<li><a href="#tabs-1">[TABTEXT1]</a></li>
|
||||
</ul>
|
||||
<div id="tabs-1">
|
||||
[MESSAGE]
|
||||
[MESSAGETABLE]
|
||||
<fieldset>
|
||||
<form action="" method="post" id="eprooform" name="eprooform">
|
||||
<table class="tableborder" border="0" cellpadding="3" cellspacing="0" width="100%">
|
||||
<tbody>
|
||||
<tr valign="top" colspan="3">
|
||||
<td>
|
||||
<table width="80%" align="center">
|
||||
<tr valign="top">
|
||||
<td align="center">
|
||||
<table width="90%">
|
||||
<tr><td><b>{|Quelllager|}:</b></td><td><input type="text" id="quelllager" name="quelllager" value="[QUELLLAGER]" size="27" style="width:200px"></td></tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
<button name="submit" value="lieferschein" class="ui-button-icon" style="width:200px;">
|
||||
Lieferschein erzeugen
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<br>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr><td class="auftraginfo_cell">Projekt:</td><td class="auftraginfo_cell">[PROJEKT]</td><td class="auftraginfo_cell">Angebotssumme:</td><td class="auftraginfo_cell">[GESAMTSUMME]</td></tr>
|
||||
<tr><td class="auftraginfo_cell">Auftrag:</td><td class="auftraginfo_cell">[AUFTRAG]</td><td class="auftraginfo_cell">Versteuerung:</td><td class="auftraginfo_cell">[STEUER]</td></tr>
|
||||
<tr><td class="auftraginfo_cell">Rechnung:</td><td class="auftraginfo_cell">[RECHNUNG]</td><td class="auftraginfo_cell">Gewicht (netto):</td><td class="auftraginfo_cell">[GEWICHT]</td></tr>
|
||||
<tr><td class="auftraginfo_cell">Tracking:</td><td class="auftraginfo_cell">[TRACKING]</td><td class="auftraginfo_cell">Versandart:</td><td class="auftraginfo_cell">[VERSANDART]</td></tr>
|
||||
<tr><td class="auftraginfo_cell">Pakete:</td><td class="auftraginfo_cell">[TRACKING]</td><td class="auftraginfo_cell">Versandart:</td><td class="auftraginfo_cell">[VERSANDART]</td></tr>
|
||||
<tr><td class="auftraginfo_cell">Retoure:</td><td class="auftraginfo_cell">[RETOURE]</td><td class="auftraginfo_cell"></td><td class="auftraginfo_cell"></td></tr>
|
||||
</table>
|
||||
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
<div id="tabs">
|
||||
<ul>
|
||||
<li><a href="#tabs-1">[TABTEXT1]</a></li>
|
||||
</ul>
|
||||
<div id="tabs-1">
|
||||
[MESSAGE]
|
||||
[MESSAGETABLE]
|
||||
<fieldset>
|
||||
<form action="" method="post" id="eprooform" name="eprooform">
|
||||
<table class="tableborder" border="0" cellpadding="3" cellspacing="0" width="100%">
|
||||
<tbody>
|
||||
<tr valign="top" colspan="3">
|
||||
<td>
|
||||
<table width="80%" align="center">
|
||||
<tr valign="top">
|
||||
<td align="center">
|
||||
<table width="90%">
|
||||
<tr><td><b>{|Quelllager|}:</b></td><td><input type="text" id="quelllager" name="quelllager" value="[QUELLLAGER]" size="27" style="width:200px"></td></tr>
|
||||
<tr><td><b>{|Ziellager|}:</b></td><td><input type="text" id="ziellager" name="ziellager" value="[ZIELLAGER]" size="27" style="width:200px"></td></tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p [ERNEUT_UMLAGERN_HIDDEN]><input type="checkbox" name="erneut" id="erneut" value="1" size="20" [ERNEUT_CHECKED]>{|Erneut umlagern|}</input></p>
|
||||
</td>
|
||||
<td>
|
||||
<button name="submit" value="umlagern" class="ui-button-icon" style="width:200px;">
|
||||
Umlagern
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<br>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
@@ -17,33 +17,6 @@
|
||||
<li class="filter-item"><input type="checkbox" id="anlieferanten"><label for="anlieferanten">{|an Lieferanten|}</label></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="filter-block filter-inline">
|
||||
<div class="filter-title">{|Filter Versandzentrum|}</div>
|
||||
<ul class="filter-list">
|
||||
<li class="filter-item">
|
||||
<label for="abgeschlossenlogistik" class="switch">
|
||||
<input type="checkbox" id="abgeschlossenlogistik">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
<label for="abgeschlossenlogistik">{|abgeschlossen über Logistik|}</label>
|
||||
</li>
|
||||
<li class="filter-item">
|
||||
<label for="nochinlogistik" class="switch">
|
||||
<input type="checkbox" id="nochinlogistik">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
<label for="nochinlogistik">{|noch in Logistik|}</label>
|
||||
</li>
|
||||
<li class="filter-item">
|
||||
<label for="manuellabgeschlossen" class="switch">
|
||||
<input type="checkbox" id="manuellabgeschlossen">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
<label for="manuellabgeschlossen">{|manuell abgeschlossen|}</label>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
[MESSAGE]
|
||||
@@ -56,6 +29,7 @@
|
||||
<option value="offen">{|als offen markieren|}</option>
|
||||
<option value="versendet">{|als versendet markieren|}</option>
|
||||
<option value="storniert">{|als storniert markieren|}</option>
|
||||
<option value="versanduebergabe">{|in Versand geben|}</option>
|
||||
<option value="pdf">{|Sammel-PDF|}</option>
|
||||
<option value="drucken">{|drucken|}</option>
|
||||
</select> {|Drucker|}: <select name="seldrucker">[SELDRUCKER]</select> <input type="submit" class="btnBlue" name="ausfuehren" value="{|ausführen|}" />
|
||||
|
||||
@@ -19,12 +19,13 @@
|
||||
<fieldset>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<legend>{|[STATUSICON]<b>Ticket <font color="blue">#[SCHLUESSEL]</font></b>|}</legend>
|
||||
<tr><td>{|Betreff|}:</td><td><input type="text" name="betreff" id="betreff" value="[BETREFF]" size="20"></td></tr>
|
||||
<tr><td>{|Betreff|}:</td><td><input type="text" name="betreff" id="betreff" value="[BETREFF]" style="width: 100%;"></td></tr>
|
||||
<tr><td>{|Von|}:</td><td>[KUNDE] [MAILADRESSE]</td></tr>
|
||||
<tr><td>{|Projekt|}:</td><td><input type="text" name="projekt" id="projekt" value="[PROJEKT]" size="20"></td></tr>
|
||||
<tr><td>{|Adresse|}:</td><td><input type="text" name="adresse" id="adresse" value="[ADRESSE]" size="20"><a href="index.php?module=adresse&action=edit&id=[ADRESSE_ID]"><img src="./themes/new/images/forward.svg" border="0" style="top:6px; position:relative"></a></td></tr>
|
||||
<tr><td>{|Tags|}:</td><td><input type="text" name="tags" id="tags" value="[TAGS]" size="20"></td></tr>
|
||||
<tr><td>{|Letzte Aktion|}:</td><td>[ZEIT]</td></tr>
|
||||
[TICKET_ANHANG]
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
@@ -49,6 +50,7 @@
|
||||
<legend>{|Aktionen|}</legend>
|
||||
<td><button name="submit" value="speichern" class="ui-button-icon" style="width:100%;">Speichern</button></td></tr>
|
||||
<td><button name="submit" value="neue_email" class="ui-button-icon" style="width:100%;">Neue E-Mail</button></td></tr>
|
||||
<td><button name="submit" value="neue_email_alle" class="ui-button-icon" style="width:100%;">Neue E-Mail an alle</button></td></tr>
|
||||
<td><button name="submit" formaction="index.php?module=ticketregeln&action=create" value="regel" class="ui-button-icon" style="width:100%;">Ticketregel erstellen</button><input hidden type="text" name="ticketid" value="[ID]"></td></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
@@ -49,7 +49,19 @@
|
||||
<tr><td>{|Status|}:</td><td><select name="status">[STATUS]</select></td></tr>
|
||||
<tr><td>{|Verantwortlich|}:</td><td><input type="text" name="warteschlange" id="warteschlange" value="[WARTESCHLANGE]" size="20"></td></tr>
|
||||
<tr>
|
||||
<td><input type="checkbox" value="1" id="autoalle" /> alle markieren </td><td><input type="submit" class="btnBlue" name="ausfuehren" value="{|Zuordnen|}" /></td>
|
||||
<td>
|
||||
<input type="checkbox" value="1" id="autoalle" /> alle markieren
|
||||
</td>
|
||||
<td>
|
||||
<button name="submit" value="zuordnen" class="ui-button-icon" style="width:100%;">{|Zuordnen|}</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr [SPAM_HIDDEN]>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
<button name="submit" value="spam_filter" class="ui-button-icon" title="Ticket auf Status 'Papierkorb' setzen und Absender-Adresse in Ticketregel eintragen" style="width:100%;">{|Spamregel erstellen|}</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
@@ -23,10 +23,12 @@
|
||||
<tr><td>{|E-Mail Verfasser|}:</td><td><input type="text" name="sender_email" value="[SENDER_EMAIL]" size="40"></td></tr>
|
||||
<tr><td>{|Verfasser Name|}:</td><td><input type="text" name="name" value="[NAME]" size="40"></td></tr>
|
||||
<tr><td>{|Betreff|}:</td><td><input type="text" name="betreff" value="[BETREFF]" size="40"></td></tr>
|
||||
<tr><td colspan="2"><hr style="border-style:solid; border-width:1px"></td></tr>
|
||||
<tr><td>{|Papierkorb|}:</td><td><input type="checkbox" name="spam" value="1" [SPAM] size="40"></td></tr>
|
||||
<tr><td>{|Persönlich|}:</td><td><input type="checkbox" name="persoenlich" value="1" [PERSOENLICH] size="40"></td></tr>
|
||||
<tr><td>{|Prio|}:</td><td><input type="checkbox" name="prio" value="1" [PRIO] size="40"></td></tr>
|
||||
<tr><td>{|DSGVO|}:</td><td><input type="checkbox" name="dsgvo" value="1" [DSGVO] size="40"></td></tr>
|
||||
<tr><td>{|Adresse|}:</td><td><input type="text" name="adresse" id="adresse" value="[ADRESSE]" size="40"></td></tr>
|
||||
<tr><td>{|Verantwortliche Warteschlange|}:</td><td><input type="text" name="warteschlange" id="warteschlange" value="[WARTESCHLANGE]" size="40"></td></tr>
|
||||
<tr><td>{|Aktiv|}:</td><td><input type="checkbox" name="aktiv" value="1" [AKTIV] size="40"></td></tr>
|
||||
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
<div id="tabs-1">
|
||||
[MESSAGE]
|
||||
[TAB1]
|
||||
[TAB1NEXT]
|
||||
<div id="tabs">
|
||||
<ul>
|
||||
<li><a href="#tabs-1">[TABTEXT1]</a></li>
|
||||
</ul>
|
||||
<div id="tabs-1">
|
||||
[MESSAGE]
|
||||
[TAB1]
|
||||
[TAB1NEXT]
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -23,6 +23,9 @@ SPDX-License-Identifier: LicenseRef-EGPL-3.1
|
||||
[MODULEINSTALLIERT]
|
||||
</fieldset>
|
||||
[TAB1NEXT]
|
||||
<form id="neu" action="index.php?module=versandarten&action=neusonstige" method="post">
|
||||
<button name="submit" value="neusonstige" class="ui-button-icon">Versandart ohne Modul anlegen</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!-- tab view schließen -->
|
||||
@@ -35,4 +38,4 @@ SPDX-License-Identifier: LicenseRef-EGPL-3.1
|
||||
:pages="pages"
|
||||
:allowClose="allowClose"
|
||||
:pagination="pagination">
|
||||
</click-by-click-assistant>
|
||||
</click-by-click-assistant>
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
<div id="tabs">
|
||||
<ul>
|
||||
<li><a href="#tabs-1"></a></li>
|
||||
</ul>
|
||||
<div id="tabs-1">
|
||||
[MESSAGE]
|
||||
<form action="index.php?module=versandpakete&action=add&id=[ID]&lieferschein=[LIEFERSCHEIN_ID]" method="post">
|
||||
[FORMHANDLEREVENT]
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-14 col-md-10 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|Hinzufügen von Artikeln aus <a href="index.php?module=lieferschein&action=edit&id=[LIEFERSCHEIN_ID]"><b>Lieferschein [LIEFERSCHEIN]</b></a> zu Versandpaket <b>Nr. [ID]</b>|}</legend>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr>
|
||||
<td>
|
||||
{|Artikel|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="artikel" id="artikel" value="" size="40" autofocus>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Menge|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" name="menge" id="menge" value="" min="1" size="40">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-14 col-md-2 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|Aktionen|}</legend>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr><td><button name="submit" value="hinzufuegen" class="ui-button-icon" style="width:100%;">Hinzufügen</button></td></tr>
|
||||
<tr><td><button name="submit" value="lieferschein_komplett_hinzufuegen" class="ui-button-icon" style="width:100%;">Alle hinzufügen</button></td></tr>
|
||||
<tr><td><button form="back" name="submit" value="fertig" class="ui-button-icon" style="width:100%;">Fertig</button></td></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-12 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|Lieferscheininhalt|}</legend>
|
||||
[LIEFERSCHEININHALT]
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-12 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|Paketinhalt|}</legend>
|
||||
[PAKETINHALT]
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<input type="text" name="lieferschein" id="lieferschein" value="[LIEFERSCHEIN]" size="40" hidden>
|
||||
</form>
|
||||
<form action="index.php?module=versandpakete&action=edit&id=[VERSANDPAKET_ID]" id="back" method="post">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,147 @@
|
||||
<div id="tabs">
|
||||
<ul>
|
||||
<li><a href="#tabs-1"></a></li>
|
||||
</ul>
|
||||
<div id="tabs-1">
|
||||
[MESSAGE]
|
||||
[FORMHANDLEREVENT]
|
||||
<form id="save" action="" method="post">
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-14 col-md-6 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>
|
||||
{|<b>Versandpaket Nr. [ID]</b> vom [DATUM]<span [NO_ADDRESS_HIDDEN]> für Adresse '[ADRESSE]'|}</span>
|
||||
</legend>
|
||||
[ICONS]
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr>
|
||||
<td>
|
||||
{|Status|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="" id="" value="[STATUS]" size="40" disabled>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Versender|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="" id="" value="[VERSENDER]" size="40" disabled>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Versandart|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="" id="" value="[VERSANDART]" size="40" disabled>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Tracking|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="tracking" id="tracking" value="[TRACKING]" size="40" [TRACKING_DISABLED]>
|
||||
<a href="[PAKETMARKE_LINK]" [PAKETMARKE_HIDDEN]>
|
||||
<img src="themes/new/images/portogo.png" border="0" title="Zur Paketmarke" style="top:6px; position:relative">
|
||||
</a>
|
||||
<a href="[TRACKING_LINK]" [TRACKING_LINK_HIDDEN]>
|
||||
<img src="themes/new/images/forward.svg" border="0" title="Zum Tracking" style="top:6px; position:relative">
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr [TRACKING_LINK_EDIT_HIDDEN]>
|
||||
<td>
|
||||
{|Tracking link|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="tracking_link" id="tracking_link" value="[TRACKING_LINK]" size="40" [TRACKING_DISABLED]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Gewicht Kg|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" name="" id="" value="[GEWICHT]" size="40" disabled>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Bemerkung|}:
|
||||
</td>
|
||||
<td>
|
||||
<textarea name="bemerkung" id="bemerkung" rows="3" style="width:100%;">[BEMERKUNG]</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-14 col-md-6 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset >
|
||||
<legend>{|Lieferschein|}</legend>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr [LIEFERSCHEIN_OHNE_POS_HIDDEN]>
|
||||
<td>
|
||||
{|Zugeordnet|}:
|
||||
</td>
|
||||
<td>
|
||||
<input form="add" type="text" name="" id="" value="[LIEFERSCHEIN_OHNE_POS]" size="40" disabled>
|
||||
<a href="index.php?module=lieferschein&action=edit&id=[LIEFERSCHEIN_OHNE_POS_ID]"><img src="themes/new/images/forward.svg" title="Zum Lieferschein" border="0" style="top:6px; position:relative"></a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr [LIEFERSCHEIN_ADD_POS_HIDDEN]>
|
||||
<td>
|
||||
{|Lieferschein für Artikel hinzufügen|}:
|
||||
</td>
|
||||
<td>
|
||||
<input form="add" type="text" name="lieferschein" id="lieferschein" value="[LIEFERSCHEIN]" autofocus size="40">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-14 col-md-2 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|Aktionen|}</legend>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr><td><button form="save" name="submit" value="speichern" class="ui-button-icon" style="width:100%;">Speichern</button></td></tr>
|
||||
<tr [LIEFERSCHEIN_ADD_POS_HIDDEN]><td><button form="add" name="submit" value="lieferschein_hinzufuegen" class="ui-button-icon" style="width:100%;">Artikel hinzufügen</button></td></tr>
|
||||
<tr [LIEFERSCHEIN_ADD_POS_HIDDEN]><td><button form="add" name="submit" value="lieferschein_komplett_hinzufuegen" class="ui-button-icon" style="width:100%;">Alle Artikel hinzufügen</button></td></tr>
|
||||
<tr [PAKETMARKE_ADD_HIDDEN]><td><button form="paketmarke" name="submit" value="paketmarke" class="ui-button-icon" style="width:100%;">Paketmarke drucken</button></td></tr>
|
||||
<tr [ABSENDEN_HIDDEN]><td><button name="submit" value="absenden" class="ui-button-icon" style="width:100%;">Absenden</button></td></tr>
|
||||
<tr [ABSCHLIESSEN_HIDDEN]><td><button name="submit" value="abschliessen" class="ui-button-icon" style="width:100%;">Abschließen</button></td></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<form id="add" action="index.php?module=versandpakete&action=add&id=[ID]" method="post">
|
||||
</form>
|
||||
<form id="paketmarke" action="index.php?module=versandpakete&action=paketmarke&id=[ID]" method="post">
|
||||
</form>
|
||||
<div class="row" [LIEFERSCHEIN_POS_HIDDEN]>
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-12 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|Paketinhalt|}</legend>
|
||||
[PAKETINHALT]
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
<div id="tabs">
|
||||
<ul>
|
||||
<li><a href="#tabs-1">[TABTEXT1]</a></li>
|
||||
</ul>
|
||||
<div id="tabs-1">
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-12 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|<b>Lieferung zu <font color="blue"><a href="index.php?module=lieferschein&action=edit&id=[BELEGID]">Lieferschein [BELEGNR]</a></font></b>|}</legend>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
[MESSAGE]
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-12 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<form action="index.php?module=versandpakete&action=stapelverarbeitung&from=lieferung&id=[FROMID]" id="frmauto" name="frmauto" method="post">
|
||||
[TAB1]
|
||||
<fieldset>
|
||||
<table>
|
||||
<legend>Stapelverarbeitung</legend>
|
||||
<tr>
|
||||
<tr><td>{|Status|}:</td><td><select name="status">[STATUS_OPTIONS]</select></td></tr>
|
||||
<td><input type="checkbox" value="1" id="autoalle" /> alle markieren </td><td><input type="submit" class="btnBlue" name="status_setzen" value="{|Status setzen|}" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
[TAB1NEXT]
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
$('#autoalle').on('change',function(){
|
||||
var wert = $(this).prop('checked');
|
||||
$('#versandpakete_list').find('input[type="checkbox"]').prop('checked',wert);
|
||||
$('#versandpakete_list').find('input[type="checkbox"]').first().trigger('change');
|
||||
});
|
||||
|
||||
</script>
|
||||
@@ -0,0 +1,32 @@
|
||||
<div id="tabs">
|
||||
<ul>
|
||||
<li><a href="#tabs-1">[TABTEXT1]</a></li>
|
||||
</ul>
|
||||
<div id="tabs-1">
|
||||
[MESSAGE]
|
||||
<div class="filter-box filter-usersave">
|
||||
<div class="filter-block filter-inline">
|
||||
<div class="filter-title">{|Filter|}</div>
|
||||
<ul class="filter-list">
|
||||
[STATUSFILTER]
|
||||
<li class="filter-item">
|
||||
<label for="unterwegs" class="switch">
|
||||
<input type="checkbox" id="unterwegs">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
<label for="unterwegs">{|Unterwegs|}</label>
|
||||
</li>
|
||||
<li class="filter-item">
|
||||
<label for="geschlossene" class="switch">
|
||||
<input type="checkbox" id="geschlossene">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
<label for="geschlossene">{|Zzgl. abgeschlossen|}</label>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
[TAB1]
|
||||
[TAB1NEXT]
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,53 @@
|
||||
<div id="tabs">
|
||||
<ul>
|
||||
<li><a href="#tabs-1">[TABTEXT1]</a></li>
|
||||
</ul>
|
||||
<div id="tabs-1">
|
||||
[MESSAGE]
|
||||
<div class="filter-box filter-usersave">
|
||||
<div class="filter-block filter-inline">
|
||||
<div class="filter-title">{|Filter|}</div>
|
||||
<ul class="filter-list">
|
||||
[STATUSFILTER]
|
||||
<li class="filter-item">
|
||||
<label for="geschlossene" class="switch">
|
||||
<input type="checkbox" id="geschlossene">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
<label for="geschlossene">{|Zzgl. abgeschlossen|}</label>
|
||||
</li>
|
||||
<li class="filter-item">
|
||||
<label for="stornierte" class="switch">
|
||||
<input type="checkbox" id="stornierte">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
<label for="stornierte">{|Zzgl. Papierkorb|}</label>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<form action="index.php?module=versandpakete&action=stapelverarbeitung" id="frmauto" name="frmauto" method="post">
|
||||
[TAB1]
|
||||
<fieldset>
|
||||
<table>
|
||||
<legend>Stapelverarbeitung</legend>
|
||||
<tr>
|
||||
<tr><td>{|Status|}:</td><td><select name="status">[STATUS_OPTIONS]</select></td></tr>
|
||||
<td><input type="checkbox" value="1" id="autoalle" /> alle markieren </td><td><input type="submit" class="btnBlue" name="status_setzen" value="{|Status setzen|}" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</form>
|
||||
[TAB1NEXT]
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
$('#autoalle').on('change',function(){
|
||||
var wert = $(this).prop('checked');
|
||||
$('#versandpakete_list').find('input[type="checkbox"]').prop('checked',wert);
|
||||
$('#versandpakete_list').find('input[type="checkbox"]').first().trigger('change');
|
||||
});
|
||||
|
||||
</script>
|
||||
@@ -1,7 +1,11 @@
|
||||
<!--
|
||||
<table id="table[MD5]">
|
||||
<tr><td>{|Lieferschein|}:</td><td><input type="checkbox" onchange="lsclick[MD5]();" id="beiback_lieferschein[MD5]" disabled value="1" [BEIPACK_LIEFERSCHEIN] /></td><td><span id="lsnr[MD5]">[LSNR]</span></td><td><input type="button" value="{|Belege ändern|}" style="cursor:hand;" onclick="editclick[MD5]();" /></td></tr>
|
||||
<tr><td>{|Lieferschein|}:</td><td><input type="checkbox" onchange="lsclick[MD5]();" id="beiback_lieferschein[MD5]" disabled value="1" [BEIPACK_LIEFERSCHEIN] /></td><td><span id="lsnr[MD5]">[LSNR]</span></td>
|
||||
<td><input type="button" value="{|Belege ändern|}" style="cursor:hand;" onclick="editclick[MD5]();" /></td>
|
||||
</tr>
|
||||
<tr><td>{|Rechnung|}:</td><td><input type="checkbox" onchange="reclick[MD5]();" id="beiback_rechnung[MD5]" disabled value="1" [BEIPACK_RECHNUNG] /></td><td><span id="renr[MD5]">[RENR]</span></td><td></td></tr>
|
||||
</table>
|
||||
-->
|
||||
|
||||
<table width="100%">
|
||||
<tr><td width="100%">[ARTIKEL]</td></tr>
|
||||
@@ -110,4 +114,4 @@ $(document).ready(function() {
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
</script>
|
||||
|
||||
@@ -12,10 +12,10 @@
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-8 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
|
||||
<div class="filter-box filter-usersave">
|
||||
<div class="filter-block filter-inline">
|
||||
<div class="filter-block filter-inline">
|
||||
<fieldset>
|
||||
<legend>{|Neuen Wareneingang erzeugen|}</legend>
|
||||
<div class="filter-title">{|Filter|}</div>
|
||||
<ul class="filter-list">
|
||||
<li class="filter-item">
|
||||
|
||||
@@ -11,9 +11,7 @@
|
||||
<input type="hidden" id="paketannahme_id" value="[ID]" />
|
||||
[BEFORETAB1]
|
||||
<div id="tabs-1">
|
||||
|
||||
[TAB1START]
|
||||
|
||||
[MESSAGE1]
|
||||
<form action="" method="post">
|
||||
<div class="row">
|
||||
@@ -26,25 +24,50 @@
|
||||
<tr><td>{|Lieferschein-Nr.|}:</td><td><input type=text size="40" name="lsnr" value=[LSNR]></td></tr>
|
||||
<tr><td>{|Rechnung-Nr.|}:</td><td><input type=text size="40" name="renr" value=[RENR]></td></tr>
|
||||
<tr><td>{|Bemerkung|}:</td><td><textarea rows="5" cols="40" name="bemerkung">[BEMERKUNG]</textarea></td></tr>
|
||||
<tr><td><input type="submit" name="speichern" class="btnGreenNew" value="Speichern"></td>
|
||||
[ISLIEFERANTSTART]
|
||||
<tr><td>{|Ziellager|}:</td><td><input type=text size="40" name="ziellager" id="ziellager" value=[LAGER]><br><i>Wenn nicht angegeben, wird das Standardlager des Artikels bebucht.</i></td></tr>
|
||||
[ISLIEFERANTENDE]
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-2 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|Aktionen|}</legend>
|
||||
[BUTTONS]
|
||||
[BEFOREFRM]
|
||||
[AFTERFRM]
|
||||
[DISTRIINHALTBUTTONS]
|
||||
<input type="submit" name="abschliessen" id="btnabschliessen" class="btnGreenNew" value="Paketinhalt ist erfasst">
|
||||
[BEFOREMANUELLERFASSEN]
|
||||
<input type="submit" name="manuellerfassen" class="btnBlueNew" value="Artikel manuell erfassen">
|
||||
[AFTERMANUELLERFASSEN]
|
||||
[BEFOREFRM]
|
||||
[AFTERFRM]
|
||||
<fieldset>
|
||||
[BUTTONS]
|
||||
[BEFOREFRM]
|
||||
[AFTERFRM]
|
||||
[DISTRIINHALTBUTTONS]
|
||||
[BEFOREFRM]
|
||||
[AFTERFRM]
|
||||
<button name="submit" class="ui-button-icon" style="width:100%;" value="speichern" hidden="true"></button>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<legend>{|Aktionen|}</legend>
|
||||
[BEFOREMANUELLERFASSEN]
|
||||
<tr><td>
|
||||
<button name="submit" class="ui-button-icon" style="width:100%;" value="manuellerfassen">{|Artikel manuell erfassen|}</button>
|
||||
</td></tr>
|
||||
[AFTERMANUELLERFASSEN]
|
||||
[ISLIEFERANTSTART]
|
||||
<tr><td>
|
||||
<button name="submit" class="ui-button-icon" style="width:100%;" value="fuellen">{|Aus Bestellungen füllen|}</button>
|
||||
</td></tr>
|
||||
<tr><td>
|
||||
<button name="submit" class="ui-button-icon" style="width:100%;" value="leeren">{|Leeren|}</button>
|
||||
</td></tr>
|
||||
[ISLIEFERANTENDE]
|
||||
<tr><td>
|
||||
<button name="submit" class="ui-button-icon" style="width:100%;" value="speichern">{|Speichern|}</button>
|
||||
</td></tr>
|
||||
[ISLIEFERANTSTART]
|
||||
<tr><td>
|
||||
<button name="submit" class="ui-button-icon" style="width:100%;" value="buchen">{|Buchen|}</button>
|
||||
</td></tr>
|
||||
[ISLIEFERANTENDE]
|
||||
<tr><td>
|
||||
<button name="submit" class="ui-button-icon" style="width:100%;" value="abschliessen">{|Abschließen|}</button>
|
||||
</td></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
@@ -54,7 +77,7 @@
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-10 col-md-height">
|
||||
<div class="inside-white inside-full-height">
|
||||
[TAB1]
|
||||
[TAB1]
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -300,7 +300,7 @@ $width = array('10%'); // Fill out manually later
|
||||
$result[0]['email'],
|
||||
$result[0]['angezeigtername'],
|
||||
'OpenXE ERP: Testmail',
|
||||
'Dies ist eine Testmail für Account "'.$result[0]['email'].'".',
|
||||
utf8_encode('Dies ist eine Testmail für Account "'.$result[0]['email'].'".'),
|
||||
'',0,false,'','',
|
||||
true
|
||||
)
|
||||
|
||||
@@ -609,7 +609,7 @@ class Exportbuchhaltung
|
||||
$data['Soll-/Haben-Kennzeichen'] = $typ['kennzeichen_negativ']; // obligatory
|
||||
}
|
||||
|
||||
$data['EU-Steuersatz (Bestimmung)'] = number_format($$tmpsteuersatz, 2, ',', '');
|
||||
$data['EU-Steuersatz (Bestimmung)'] = number_format($tmpsteuersatz, 2, ',', '');
|
||||
$data['WKZ Umsatz'] = $row['pos_waehrung'];
|
||||
$data['Belegfeld 1'] = mb_strimwidth($row['belegnr'],0,12);
|
||||
$data['Konto'] = $row['kundennummer']; // obligatory
|
||||
|
||||
+61
-29
@@ -174,31 +174,7 @@ class Lager extends GenLager {
|
||||
// fester filter
|
||||
$where = " l.geloescht=0 AND l.id!=0 AND l.lager='$id' ";
|
||||
$count = "SELECT COUNT(id) FROM lager_platz WHERE geloescht=0 AND lager='$id' ";
|
||||
break;
|
||||
case 'lagerletztebewegungen':
|
||||
$allowed['lager'] = array('letztebewegungen');
|
||||
|
||||
// headings
|
||||
|
||||
// headings
|
||||
|
||||
$heading = array('Datum', 'Lager', 'Menge', 'Nummer', 'Artikel', 'Richtung', 'Referenz', 'Bearbeiter', 'Projekt', 'Menü');
|
||||
$width = array('1%', '5%', '5%', '5%', '5%', '5%', '40%', '20%', '5%', '1%');
|
||||
$findcols = array('zeit', 'lager', 'menge', 'nummer', 'name_de', 'Richtung', 'referenz', 'bearbeiter', 'projekt', 'id');
|
||||
$searchsql = array('lpi.referenz', 'lpi.bearbeiter', 'p.abkuerzung', 'DATE_FORMAT(lpi.zeit,\'%d.%m.%Y\')', 'lp.kurzbezeichnung', 'a.name_de', 'a.nummer');
|
||||
$defaultorder = 10; //Optional wenn andere Reihenfolge gewuenscht
|
||||
$alignright = array(3);
|
||||
$defaultorderdesc = 1;
|
||||
$menu = "-";
|
||||
|
||||
$sql = "SELECT SQL_CALC_FOUND_ROWS lpi.id,
|
||||
DATE_FORMAT(lpi.zeit,'%d.%m.%Y') as datum, lp.kurzbezeichnung as lager, trim(lpi.menge)+0 as menge,
|
||||
a.nummer, a.name_de, if(lpi.eingang,'Eingang','Ausgang') as Richtung, substring(lpi.referenz,1,60) as referenz, lpi.bearbeiter as bearbeiter, p.abkuerzung as projekt,
|
||||
lpi.id FROM lager_bewegung lpi LEFT JOIN lager_platz as lp ON lpi.lager_platz=lp.id LEFT JOIN projekt p ON lpi.projekt=p.id LEFT JOIN artikel a ON a.id=lpi.artikel";
|
||||
|
||||
|
||||
$count = "SELECT COUNT(lpi.id) FROM lager_bewegung lpi LEFT JOIN lager_platz as lp ON lpi.lager_platz=lp.id LEFT JOIN projekt p ON lpi.projekt=p.id ";
|
||||
break;
|
||||
break;
|
||||
case 'lagertabelle':
|
||||
$allowed['lager'] = array('list');
|
||||
$defaultCountry = $app->erp->Firmendaten('land');
|
||||
@@ -832,7 +808,23 @@ class Lager extends GenLager {
|
||||
|
||||
$datecols = array(6);
|
||||
|
||||
$sql = "SELECT SQL_CALC_FOUND_ROWS i.id, l.bezeichnung, lp.kurzbezeichnung as regal, a.nummer, a.name_de, IF(i.eingang, 'Eingang', 'Ausgang'), if(i.eingang, CONCAT('+', ' ', trim(i.menge)+0), CONCAT('-', ' ', trim(i.menge)+0)) as menge, DATE_FORMAT(i.zeit,'%d.%m.%Y') as datum, i.referenz, i.bearbeiter, p.abkuerzung AS projektbewegung, i.id FROM lager_bewegung i LEFT JOIN lager_platz lp ON lp.id=i.lager_platz LEFT JOIN lager l ON lp.lager = l.id LEFT JOIN artikel a ON i.artikel=a.id LEFT JOIN projekt p ON l.projekt = p.id";
|
||||
$sql = "SELECT SQL_CALC_FOUND_ROWS
|
||||
i.id,
|
||||
l.bezeichnung,
|
||||
lp.kurzbezeichnung as regal,
|
||||
a.nummer,
|
||||
a.name_de,
|
||||
IF(i.eingang,
|
||||
'Eingang',
|
||||
'Ausgang'),
|
||||
if(i.eingang,
|
||||
CONCAT('+',' ',trim(i.menge)+0),CONCAT('-',' ',trim(i.menge)+0)) as menge,
|
||||
".$app->erp->FormatDateTimeShort('i.zeit')." as datum,
|
||||
i.referenz,
|
||||
i.bearbeiter,
|
||||
p.abkuerzung AS projektbewegung,
|
||||
i.id
|
||||
FROM lager_bewegung i LEFT JOIN lager_platz lp ON lp.id=i.lager_platz LEFT JOIN lager l ON lp.lager = l.id LEFT JOIN artikel a ON i.artikel=a.id LEFT JOIN projekt p ON l.projekt = p.id";
|
||||
|
||||
|
||||
$lager = $app->User->GetParameter("lager_bewegungalle_lager");
|
||||
@@ -1107,6 +1099,7 @@ class Lager extends GenLager {
|
||||
$this->app->ActionHandler("buchenzwischenlagerdelete", "LagerBuchenZwischenlagerDelete");
|
||||
$this->app->ActionHandler("bucheneinlagern", "LagerBuchenEinlagern");
|
||||
$this->app->ActionHandler("buchenauslagern", "LagerBuchenAuslagern");
|
||||
$this->app->ActionHandler("umlagernlieferschein", "LagerBuchenUmlagernLieferschein");
|
||||
$this->app->ActionHandler("artikelentfernenreserviert", "LagerArtikelEntfernenReserviert");
|
||||
$this->app->ActionHandler("letztebewegungen", "LagerLetzteBewegungen");
|
||||
$this->app->ActionHandler("schnelleinlagern", "LagerSchnellEinlagern");
|
||||
@@ -3156,12 +3149,50 @@ class Lager extends GenLager {
|
||||
$this->app->Tpl->Parse('PAGE', 'tabview.tpl');
|
||||
}
|
||||
|
||||
function LagerBuchenUmlagernLieferschein() {
|
||||
$this->LagerBuchenMenu();
|
||||
$this->app->Tpl->AddMessage('info',"Gesamten Lagerplatz in einen neuen Lieferschein zur Umlagerung geben.");
|
||||
$this->app->YUI->AutoComplete("quelllager", "lagerplatz");
|
||||
$quelllager = $this->app->Secure->GetPOST('quelllager');
|
||||
|
||||
$submit = $this->app->Secure->GetPOST('submit');
|
||||
if ($submit == 'lieferschein') {
|
||||
$quellager_id = $this->app->erp->ReplaceLagerPlatz(true, $quelllager, true);
|
||||
if (empty($quellager_id)) {
|
||||
$this->app->Tpl->AddMessage('error',"Bitte Quelllager angeben.");
|
||||
} else {
|
||||
$sql = "SELECT artikel, SUM(menge) as menge FROM lager_platz_inhalt WHERE lager_platz=$quellager_id AND menge > 0 GROUP BY artikel";
|
||||
$positionen = $this->app->DB->SelectArr($sql);
|
||||
|
||||
if (empty($positionen)) {
|
||||
$this->app->Tpl->AddMessage('error',"Lager ist leer.");
|
||||
} else {
|
||||
$id = $this->app->erp->ImportCreateLieferschein(null);
|
||||
if (!empty($id)) {
|
||||
$this->app->erp->LieferscheinProtokoll($id,"Lieferschein aus Lager ".$quelllager." erstellt");
|
||||
$this->app->DB->Update("UPDATE lieferschein SET standardlager = '$quellager_id' WHERE id = '$id' LIMIT 1");
|
||||
|
||||
foreach ($positionen as $position) {
|
||||
// public function AddLieferscheinPositionArtikelID($lieferschein, $artikel,$menge,$bezeichnung,$beschreibung,$datum)
|
||||
$this->app->erp->AddLieferscheinPositionArtikelID($id, $position['artikel'],$position['menge'],null,null,null);
|
||||
}
|
||||
|
||||
$this->app->Location->execute("index.php?module=lieferschein&action=edit&id=$id");
|
||||
} else {
|
||||
$this->app->Tpl->AddMessage('error',"Lieferschein konnte nicht erzeugt werden.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->app->Tpl->Set('QUELLLAGER',$this->app->erp->ReplaceLagerPlatz(false, $quellager_id, false));
|
||||
$this->app->Tpl->Parse('PAGE', 'lager_umlagern_lieferschein.tpl');
|
||||
}
|
||||
|
||||
function LagerLetzteBewegungen()
|
||||
{
|
||||
$this->LagerBuchenMenu();
|
||||
|
||||
$this->app->YUI->TableSearch('TAB1', 'lagerletztebewegungen','show','','',basename(__FILE__), __CLASS__);
|
||||
|
||||
$this->app->YUI->TableSearch('TAB1', 'lager_allebewegungenlist','show','','',basename(__FILE__), __CLASS__);
|
||||
$this->app->Tpl->Parse('PAGE', 'tabview.tpl');
|
||||
}
|
||||
|
||||
@@ -3171,6 +3202,7 @@ class Lager extends GenLager {
|
||||
$this->app->erp->Headlines('Lager');
|
||||
if($this->app->erp->Version()!=='stock') {
|
||||
$this->app->erp->MenuEintrag("index.php?module=lager&action=buchenauslagern&cmd=umlagern&id=$id", 'Umlagern');
|
||||
$this->app->erp->MenuEintrag("index.php?module=lager&action=umlagernlieferschein&id=$id", 'Umlagern mit Lieferschein');
|
||||
$this->app->erp->MenuEintrag("index.php?module=lager&action=buchenauslagern&id=$id", 'Auslagern');
|
||||
$this->app->erp->MenuEintrag("index.php?module=lager&action=bucheneinlagern&id=$id", 'Einlagern');
|
||||
$this->app->erp->MenuEintrag("index.php?module=lager&action=buchenzwischenlager&id=$id", 'Zwischenlager');
|
||||
|
||||
+173
-23
@@ -194,6 +194,7 @@ class Lieferschein extends GenLieferschein
|
||||
$this->app->ActionHandler("abschicken","LieferscheinAbschicken");
|
||||
$this->app->ActionHandler("abschliessen","LieferscheinAbschliessen");
|
||||
$this->app->ActionHandler("auslagern","LieferscheinAuslagern");
|
||||
$this->app->ActionHandler("umlagern","LieferscheinUmlagern");
|
||||
$this->app->ActionHandler("pdf","LieferscheinPDF");
|
||||
$this->app->ActionHandler("inlinepdf","LieferscheinInlinePDF");
|
||||
$this->app->ActionHandler("protokoll","LieferscheinProtokoll");
|
||||
@@ -453,6 +454,107 @@ class Lieferschein extends GenLieferschein
|
||||
exit;
|
||||
}
|
||||
|
||||
function LieferscheinUmlagern()
|
||||
{
|
||||
$id = (int)$this->app->Secure->GetGET("id");
|
||||
$sql = "SELECT belegnr, name, status, umgelagert, standardlager FROM lieferschein WHERE id='$id'";
|
||||
$lieferschein = $this->app->DB->SelectArr($sql)[0];
|
||||
$belegnr = $lieferschein['belegnr'];
|
||||
$name = $lieferschein['name'];
|
||||
$status = $lieferschein['status'];
|
||||
$umgelagert = $lieferschein['umgelagert'];
|
||||
|
||||
$quelllager = $this->app->Secure->GetPOST('quelllager');
|
||||
$ziellager = $this->app->Secure->GetPOST('ziellager');
|
||||
|
||||
$quellager_id = $this->app->erp->ReplaceLagerPlatz(true, $quelllager, true);
|
||||
$ziellager_id = $this->app->erp->ReplaceLagerPlatz(true, $ziellager, true);
|
||||
|
||||
if (empty($quellager_id)) {
|
||||
$quellager_id = $lieferschein['standardlager'];
|
||||
}
|
||||
|
||||
if ($status != "versendet" && $status != "freigegeben") {
|
||||
exit();
|
||||
}
|
||||
|
||||
$submit = $this->app->Secure->GetPOST('submit');
|
||||
$erneut = $this->app->Secure->GetPOST('erneut');
|
||||
|
||||
if ($umgelagert && !$erneut) {
|
||||
$this->app->Tpl->AddMessage('warning',"Lieferschein wurde bereits umgelagert.");
|
||||
} else {
|
||||
$this->app->Tpl->Set('ERNEUT_UMLAGERN_HIDDEN','hidden');
|
||||
$submit = $this->app->Secure->GetPOST('submit');
|
||||
if ($submit == 'umlagern') {
|
||||
|
||||
if (empty($quellager_id) || empty($ziellager_id)) {
|
||||
$this->app->Tpl->AddMessage('error',"Bitte Quell- und Ziellager angeben.");
|
||||
} else {
|
||||
$sql = "SELECT artikel, name_de, a.nummer AS artikelnummer, SUM(menge) AS menge FROM lieferschein_position lp INNER JOIN artikel a ON a.id = lp.artikel WHERE lp.lieferschein = $id GROUP BY lp.artikel";
|
||||
$positionen = $this->app->DB->SelectArr($sql);
|
||||
|
||||
$menge_ok = true;
|
||||
$fehlt = array();
|
||||
|
||||
foreach ($positionen as $position) {
|
||||
$sql = "SELECT SUM(menge) as menge FROM lager_platz_inhalt WHERE lager_platz=$quellager_id AND artikel = ".$position['artikel'];
|
||||
$menge_lager = $this->app->DB->SelectArr($sql)[0]['menge'];
|
||||
|
||||
if ($menge_lager < $position['menge']) {
|
||||
$menge_ok = false;
|
||||
$fehlt[] = array('Nummer' => $position['artikelnummer'],'Artikel' => $position['name_de'],'Lieferschein Menge' => (int) $position['menge'],'Lager Menge' => empty($menge_lager)?'-':(int) $menge_lager);
|
||||
}
|
||||
}
|
||||
|
||||
if ($menge_ok) {
|
||||
foreach ($positionen as $position) {
|
||||
|
||||
$artikel = $position['artikel'];
|
||||
$menge = $position['menge'];
|
||||
$projekt = 0;
|
||||
$grund = "Umlagern Lieferschein ".$belegnr;
|
||||
$importer = "";
|
||||
$paketannahme = "";
|
||||
$doctype = "lieferschein";
|
||||
$doctypeId = $id;
|
||||
|
||||
$this->app->erp->LagerAuslagernRegal($artikel,$quellager_id,$menge,$projekt,$grund,$importer,$doctype,$doctypeid);
|
||||
$this->app->erp->LagerEinlagern($artikel,$menge,$ziellager_id,$projekt,$grund,$importer,$paketannahme,$doctype,$doctypeid);
|
||||
}
|
||||
$sql = "UPDATE lieferschein SET umgelagert = 1 WHERE id = ".$id;
|
||||
$this->app->DB->Update($sql);
|
||||
$this->app->erp->LieferscheinProtokoll($id,"Lieferschein umgelagert von ".$quelllager." nach ".$ziellager);
|
||||
$this->app->Tpl->AddMessage('success','Erfolgreich umgelagert.');
|
||||
$erneut = null;
|
||||
} else {
|
||||
$this->app->Tpl->AddMessage('error',"Mengen im Quelllager nicht ausreichend.");
|
||||
$tmp = new EasyTable($this->app);
|
||||
$tmp->headings = array('Nummer','Artikel','Lieferschein Menge','Lager Menge','');
|
||||
$tmp->datasets = $fehlt;
|
||||
$tmp->DisplayNew('MESSAGETABLE',null,"noAction");
|
||||
} // Menge ok
|
||||
} // Lager ok
|
||||
} // umlagern
|
||||
} // $umgelagert
|
||||
|
||||
$this->LieferscheinMenu();
|
||||
|
||||
$this->app->YUI->AutoComplete("quelllager", "lagerplatz");
|
||||
$this->app->YUI->AutoComplete("ziellager", "lagerplatz");
|
||||
|
||||
$this->app->Tpl->Set('KURZUEBERSCHRIFT2',"Lieferschein $belegnr umlagern");
|
||||
$this->app->Tpl->Set('TABTEXT',"Umlagern");
|
||||
|
||||
$this->app->Tpl->Set('QUELLLAGER',$this->app->erp->ReplaceLagerPlatz(false, $quellager_id, false));
|
||||
|
||||
$this->app->Tpl->Set('ZIELLAGER',$this->app->erp->ReplaceLagerPlatz(false, $ziellager_id, false));
|
||||
|
||||
$this->app->Tpl->Set('ERNEUT_CHECKED',$erneut?'checked':'');
|
||||
|
||||
$this->app->Tpl->Parse('PAGE',"lieferschein_umlagern.tpl");
|
||||
}
|
||||
|
||||
function LieferscheinPaketmarke()
|
||||
{
|
||||
$id = (int)$this->app->Secure->GetGET("id");
|
||||
@@ -468,7 +570,8 @@ class Lieferschein extends GenLieferschein
|
||||
AND v.aktiv = 1 AND v.ausprojekt = 0 AND v.modul != ''
|
||||
ORDER BY v.projekt DESC LIMIT 1");
|
||||
if (empty($result['modul']) || empty($result['id'])) {
|
||||
$this->app->Tpl->addMessage('error', 'Bitte zuerst eine gültige Versandart auswählen', false, 'PAGE');
|
||||
// $this->app->Tpl->addMessage('error', 'Bitte zuerst eine gültige Versandart auswählen', false, 'PAGE');
|
||||
$this->app->Location->execute("index.php?module=versandpakete&action=add&lieferschein=".$id);
|
||||
return;
|
||||
}
|
||||
$versandmodul = $this->app->erp->LoadVersandModul($result['modul'], $result['id']);
|
||||
@@ -536,16 +639,16 @@ class Lieferschein extends GenLieferschein
|
||||
function LieferscheinIconMenu($id,$prefix="")
|
||||
{
|
||||
$status = $this->app->DB->Select("SELECT status FROM lieferschein WHERE id='$id' LIMIT 1");
|
||||
$adresse = $this->app->DB->Select("SELECT adresse FROM lieferschein WHERE id='$id' LIMIT 1");
|
||||
$lieferantenretoure = $this->app->DB->Select("SELECT lieferantenretoure FROM lieferschein WHERE id='$id' LIMIT 1");
|
||||
|
||||
if($status=="angelegt" || $status=="")
|
||||
if($adresse > 0 && ($status=="angelegt" || $status==""))
|
||||
$freigabe = "<option value=\"freigabe\">Lieferschein freigeben</option>";
|
||||
|
||||
|
||||
if(($status=="versendet" || $status=="freigegeben") && $lieferantenretoure=="1")
|
||||
$abschliessen = "<option value=\"abschliessen\">Lieferschein abschliessen</option>";
|
||||
|
||||
|
||||
$checkifrgexists = $this->app->DB->Select("SELECT id FROM rechnung WHERE lieferschein='$id' LIMIT 1");
|
||||
|
||||
$optioncustom = $this->Custom('option');
|
||||
@@ -573,27 +676,34 @@ class Lieferschein extends GenLieferschein
|
||||
|
||||
$mengegeliefert = $mengegeliefert + $this->app->DB->Select("SELECT ifnull(sum(olp.menge),0)+0 FROM objekt_lager_platz olp INNER JOIN lieferschein_position lp ON olp.objekt='lieferschein' AND olp.parameter=lp.id AND lp.lieferschein = '$id'");
|
||||
|
||||
if($mengegeliefert <= 0 && $liefermengelagerartikel > 0 && $schreibschutz=="1" && $status!='angelegt' && $status!='storniert') {
|
||||
$auslagern = '<option value="auslagern">Lieferschein auslagern</option>';
|
||||
}else{
|
||||
//12.07.19 LG lieferscheinlager als kommissionierverfahren zum if hinzugefuegt
|
||||
$projektkommissionierverfahren = $this->app->DB->Select("SELECT kommissionierverfahren FROM projekt where id = '$projekt'");
|
||||
if($projekt && ($projektkommissionierverfahren == "" || $projektkommissionierverfahren == "rechnungsmail" || $projektkommissionierverfahren == "lieferschein" || $projektkommissionierverfahren == "lieferscheinscan" || $projektkommissionierverfahren == "lieferscheinlager" || $projektkommissionierverfahren == "lieferscheinlagerscan"))
|
||||
{
|
||||
if(($bestellmengelagerartikel != $liefermengelagerartikel && $bestellmengelagerartikel != $liefermengelagerartikel2) && $status!='angelegt' && $status!='storniert') {
|
||||
$auslagern = '<option value="auslagern">Lieferschein auslagern</option>';
|
||||
if ($status == "versendet" || $status == "freigegeben") {
|
||||
|
||||
if($mengegeliefert <= 0 && $liefermengelagerartikel > 0 && $schreibschutz=="1" && $status!='angelegt' && $status!='storniert') {
|
||||
$auslagern = '<option value="auslagern">Lieferschein auslagern</option>';
|
||||
}else{
|
||||
//12.07.19 LG lieferscheinlager als kommissionierverfahren zum if hinzugefuegt
|
||||
$projektkommissionierverfahren = $this->app->DB->Select("SELECT kommissionierverfahren FROM projekt where id = '$projekt'");
|
||||
if($projekt && ($projektkommissionierverfahren == "" || $projektkommissionierverfahren == "rechnungsmail" || $projektkommissionierverfahren == "lieferschein" || $projektkommissionierverfahren == "lieferscheinscan" || $projektkommissionierverfahren == "lieferscheinlager" || $projektkommissionierverfahren == "lieferscheinlagerscan"))
|
||||
{
|
||||
if(($bestellmengelagerartikel != $liefermengelagerartikel && $bestellmengelagerartikel != $liefermengelagerartikel2) && $status!='angelegt' && $status!='storniert') {
|
||||
$auslagern = '<option value="auslagern">Lieferschein auslagern</option>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$optionumlagern = "<option value=\"umlagern\">Lieferschein umlagern</option>";
|
||||
$abschicken = "<option value=\"abschicken\">Lieferschein abschicken</option>";
|
||||
|
||||
if($status!="angelegt" && $lieferantenretoure!="1")
|
||||
{
|
||||
$alsrechnung = "<option value=\"rechnung\">als Rechnung weiterführen</option>";
|
||||
if($this->app->erp->RechteVorhanden('lieferschein', 'proformarechnung') && $this->app->erp->ModulVorhanden('proformarechnung'))
|
||||
{
|
||||
$alsrechnung .= "<option value=\"proformarechnung\">als Proformarechnung weiterführen</option>";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($status!="angelegt" && $lieferantenretoure!="1")
|
||||
{
|
||||
$alsrechnung = "<option value=\"rechnung\">als Rechnung weiterführen</option>";
|
||||
if($this->app->erp->RechteVorhanden('lieferschein', 'proformarechnung') && $this->app->erp->ModulVorhanden('proformarechnung'))
|
||||
{
|
||||
$alsrechnung .= "<option value=\"proformarechnung\">als Proformarechnung weiterführen</option>";
|
||||
}
|
||||
}
|
||||
|
||||
if($this->app->erp->RechteVorhanden('belegeimport', 'belegcsvexport'))
|
||||
{
|
||||
@@ -628,6 +738,7 @@ class Lieferschein extends GenLieferschein
|
||||
$casehook
|
||||
$hookcase
|
||||
$casebelegeimport
|
||||
case 'umlagern': window.location.href='index.php?module=lieferschein&action=umlagern&id=%value%'; break;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -638,16 +749,17 @@ class Lieferschein extends GenLieferschein
|
||||
<option value=\"storno\">Lieferschein stornieren</option>
|
||||
<option value=\"copy\">Lieferschein kopieren</option>
|
||||
$freigabe
|
||||
<option value=\"abschicken\">Lieferschein abschicken</option>
|
||||
$abschicken
|
||||
$abschliessen
|
||||
$auslagern
|
||||
$optionumlagern
|
||||
$alsrechnung
|
||||
$optionbelegeimport
|
||||
<option value=\"pdf\">PDF öffnen</option>
|
||||
$etiketten
|
||||
$optioncustom
|
||||
$optionhook
|
||||
$hookoption
|
||||
$hookoption
|
||||
</select>
|
||||
|
||||
<a href=\"index.php?module=lieferschein&action=pdf&id=%value%\" title=\"PDF\"><img border=\"0\" src=\"./themes/new/images/pdf.svg\"></a>
|
||||
@@ -960,6 +1072,7 @@ class Lieferschein extends GenLieferschein
|
||||
|
||||
$this->app->Tpl->Set('VERSANDART',$auftragArr[0]['versandart']);
|
||||
|
||||
/*
|
||||
$tracking = $this->app->DB->SelectArr("SELECT
|
||||
if(v.tracking_link IS NOT NULL AND v.tracking_link != '', CONCAT(UPPER(versandunternehmen), ':<a href=\"', v.tracking_link, '\">', v.tracking, '</a>'),
|
||||
if(versandunternehmen = 'dhlexpress' AND l.land = 'DE' AND v.tracking != '', CONCAT(UPPER(versandunternehmen), ':<a href=\"https://www.dhl.de/de/privatkunden/pakete-empfangen/verfolgen.html?piececode=', v.tracking, '\" target=\"_blank\">', v.tracking, '</a>'),
|
||||
@@ -1018,7 +1131,32 @@ class Lieferschein extends GenLieferschein
|
||||
if (!is_null($tmp)) {
|
||||
$this->app->Tpl->Set('TRACKING',implode(', ',$tmp));
|
||||
}
|
||||
*/
|
||||
|
||||
$sql = "SELECT SQL_CALC_FOUND_ROWS
|
||||
v.id,
|
||||
v.tracking as tracking,
|
||||
v.tracking_link
|
||||
FROM
|
||||
versandpakete v
|
||||
LEFT JOIN
|
||||
versandpaket_lieferschein_position vlp ON v.id = vlp.versandpaket
|
||||
LEFT JOIN
|
||||
lieferschein_position lp ON lp.id = vlp.lieferschein_position
|
||||
LEFT JOIN
|
||||
lieferschein l ON lp.lieferschein = l.id
|
||||
WHERE l.id = ".$id." OR v.lieferschein_ohne_pos = ".$id."
|
||||
GROUP BY
|
||||
v.id
|
||||
";
|
||||
$tracking = $this->app->DB->SelectArr($sql);
|
||||
$tracking_list = array();
|
||||
foreach ($tracking as $single_tracking) {
|
||||
$tracking_list[] = '<a href="index.php?module=versandpakete&action=edit&id='.$single_tracking['id'].'">Paket Nr.'.$single_tracking['id'].'</a>'.
|
||||
' ('.'<a href="'.$single_tracking['tracking_link'].'">'.$single_tracking['tracking'].'</a>'.')';
|
||||
}
|
||||
|
||||
$this->app->Tpl->Set('TRACKING',implode('<br>',$tracking_list));
|
||||
|
||||
$returnOrders = (array)$this->app->DB->SelectArr(
|
||||
sprintf(
|
||||
@@ -2259,6 +2397,18 @@ class Lieferschein extends GenLieferschein
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'versanduebergabe':
|
||||
if(!empty($selectedIds)) {
|
||||
$this->app->DB->Update(
|
||||
sprintf(
|
||||
"UPDATE `lieferschein`
|
||||
SET `versand_status` = 1
|
||||
WHERE `id` IN (%s) AND `versand_status` = 0",
|
||||
implode(',' , $selectedIds)
|
||||
)
|
||||
);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -401,7 +401,8 @@ class Managementboard
|
||||
/** @var Rechnungslauf $obj */
|
||||
$obj = $this->app->erp->LoadModul('rechnungslauf');
|
||||
if($obj){
|
||||
$w[24] = $obj->RechnungslaufRechnungslauf(true);
|
||||
// $w[24] = $obj->RechnungslaufRechnungslauf(true); // This does not exist, presumably old xentral function
|
||||
$w[24] = 0;
|
||||
}
|
||||
else {
|
||||
$w[24] = 0;
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
<?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
|
||||
class Paketmarke {
|
||||
/** @var Application $app */
|
||||
var $app;
|
||||
|
||||
/**
|
||||
* Paketmarke constructor.
|
||||
*
|
||||
* @param Application $app
|
||||
* @param bool $intern
|
||||
*/
|
||||
public function __construct($app, $intern = false) {
|
||||
//parent::GenPaketmarke($app);
|
||||
$this->app=$app;
|
||||
if($intern) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->app->ActionHandlerInit($this);
|
||||
|
||||
$this->app->ActionHandler("create","PaketmarkeCreatePopup");
|
||||
$this->app->ActionHandler("tracking","PaketmarkeTracking");
|
||||
|
||||
$this->app->ActionHandlerListen($app);
|
||||
|
||||
}
|
||||
|
||||
function PaketmarkeTracking()
|
||||
{
|
||||
$this->app->erp->Headlines('Paketmarken Drucker');
|
||||
|
||||
$this->app->Tpl->Set('PAGE',"Tracking-Nummer: <input type=\"text\" id=\"tracking\"><script type=\"text/javascript\">document.getElementById(\"tracking\").focus(); </script>");
|
||||
//$this->app->BuildNavigation=false;
|
||||
}
|
||||
|
||||
function PaketmarkeCreatePopup()
|
||||
{
|
||||
$this->app->erp->Headlines('Paketmarken Drucker');
|
||||
$this->app->erp->PaketmarkeDHLEmbedded('PAGE','lieferschein');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2727,6 +2727,8 @@ class Projekt extends GenProjekt {
|
||||
|
||||
if($oldProjectId > 0){
|
||||
$this->createAdditionalInputForCopyProjects($oldProjectId,$check);
|
||||
$msg = $this->app->erp->base64_url_encode("<div class=\"info\">Das Projekt wurde erfolgreich kopiert.</div>");
|
||||
$this->app->Location->execute("index.php?module=projekt&action=uebersicht&id=$check&msg=$msg");
|
||||
return;
|
||||
}
|
||||
$msg = $this->app->erp->base64_url_encode("<div class=\"info\">Das Projekt wurde erfolgreich angelegt.</div>");
|
||||
@@ -2848,7 +2850,7 @@ class Projekt extends GenProjekt {
|
||||
* @param int $copyProjectId
|
||||
* @return bool
|
||||
*/
|
||||
public function createAdditionalInputForCopyProjects(int $oldProjectId, int $copyProjectId): bool
|
||||
public function createAdditionalInputForCopyProjects(int $oldProjectId, int $copyProjectId)
|
||||
{
|
||||
$hasAdditionalInput = false;
|
||||
$this->app->Tpl->Set('TOID',$copyProjectId);
|
||||
|
||||
+135
-25
@@ -23,6 +23,7 @@ class Ticket {
|
||||
$this->app->ActionHandler("text_ausgang", "ticket_text_ausgang"); // Output text for iframe display
|
||||
$this->app->ActionHandler("statusfix", "ticket_statusfix"); // Xentral 20 compatibility set all ticket status to latest ticket_nachricht status
|
||||
$this->app->ActionHandler("datefix", "ticket_datefix"); // Xentral 20 compatibility set all ticket dates to latest ticket_nachricht date
|
||||
$this->app->ActionHandler("dateien", "ticket_dateien");
|
||||
$this->app->DefaultActionHandler("list");
|
||||
$this->app->ActionHandlerListen($app);
|
||||
}
|
||||
@@ -68,7 +69,7 @@ class Ticket {
|
||||
$dropnbox = "'<img src=./themes/new/images/details_open.png class=details>' AS `open`,
|
||||
CONCAT('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',t.id,'\" />') AS `auswahl`";
|
||||
|
||||
$priobetreff = "if(t.prio!=1,t.betreff,CONCAT('<b><font color=red>',t.betreff,'</font></b>'))";
|
||||
$priobetreff = "if(t.prio!=1,REGEXP_REPLACE(t.betreff, '<[^>]*>+', ''),CONCAT('<b><font color=red>',REGEXP_REPLACE(t.betreff, '<[^>]*>+', ''),'</font></b>'))"; //+ #20230916 XSS
|
||||
|
||||
$anzahlnachrichten = "(SELECT COUNT(n.id) FROM ticket_nachricht n WHERE n.ticket = t.schluessel)";
|
||||
|
||||
@@ -186,6 +187,7 @@ class Ticket {
|
||||
|
||||
// Process multi action
|
||||
$auswahl = $this->app->Secure->GetPOST('auswahl');
|
||||
$submit = $this->app->Secure->GetPOST('submit');
|
||||
$selectedIds = [];
|
||||
if(!empty($auswahl)) {
|
||||
foreach($auswahl as $selectedId) {
|
||||
@@ -195,19 +197,71 @@ class Ticket {
|
||||
}
|
||||
}
|
||||
|
||||
$status = $this->app->Secure->GetPOST('status');
|
||||
$warteschlange = $this->app->Secure->GetPOST('warteschlange');
|
||||
switch ($submit) {
|
||||
case 'zuordnen':
|
||||
$status = $this->app->Secure->GetPOST('status');
|
||||
$warteschlange = $this->app->Secure->GetPOST('warteschlange');
|
||||
|
||||
$sql = "UPDATE ticket SET status = '".$status."', zeit = NOW()";
|
||||
if ($warteschlange != '') {
|
||||
$sql .= ", warteschlange = '".explode(" ",$warteschlange)[0]."'";
|
||||
}
|
||||
$sql = "UPDATE ticket SET status = '".$status."', zeit = NOW()";
|
||||
if ($warteschlange != '') {
|
||||
$sql .= ", warteschlange = '".explode(" ",$warteschlange)[0]."'";
|
||||
}
|
||||
|
||||
$sql .= " WHERE id IN (".implode(",",$selectedIds).")";
|
||||
$this->app->DB->Update($sql);
|
||||
$sql .= " WHERE id IN (".implode(",",$selectedIds).")";
|
||||
$this->app->DB->Update($sql);
|
||||
$this->ticket_set_self_assigned_status($selectedIds);
|
||||
break;
|
||||
case 'spam_filter':
|
||||
if($this->app->erp->RechteVorhanden('ticketregeln','create')) {
|
||||
$sql = "UPDATE ticket SET status = 'spam', zeit = NOW()";
|
||||
$sql .= " WHERE id IN (".implode(",",$selectedIds).")";
|
||||
$this->app->DB->Update($sql);
|
||||
|
||||
$this->ticket_set_self_assigned_status($selectedIds);
|
||||
foreach ($selectedIds as $selectedId) {
|
||||
|
||||
// Check existing
|
||||
$sql = "SELECT id FROM ticket_regeln WHERE
|
||||
empfaenger_email = '' AND
|
||||
sender_email = (SELECT mailadresse FROM ticket WHERE id = ".$selectedId." LIMIT 1) AND
|
||||
name = '' AND
|
||||
betreff = '' AND
|
||||
spam = 1 AND
|
||||
aktiv = 1
|
||||
";
|
||||
|
||||
if (!$this->app->DB->Select($sql)) {
|
||||
$sql = "INSERT IGNORE INTO ticket_regeln (
|
||||
empfaenger_email,
|
||||
sender_email,
|
||||
name,
|
||||
betreff,
|
||||
spam,
|
||||
persoenlich,
|
||||
prio,
|
||||
dsgvo,
|
||||
adresse,
|
||||
warteschlange,
|
||||
aktiv
|
||||
) VALUES (
|
||||
'',
|
||||
(SELECT mailadresse FROM ticket WHERE id = ".$selectedId." LIMIT 1),
|
||||
'',
|
||||
'',
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
'',
|
||||
1
|
||||
)";
|
||||
$this->app->DB->Insert($sql);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// List
|
||||
@@ -222,6 +276,10 @@ class Ticket {
|
||||
$this->app->Tpl->Set('STATUS', $this->app->erp->GetStatusTicketSelect('neu'));
|
||||
$this->app->YUI->AutoComplete("warteschlange","warteschlangename");
|
||||
|
||||
if(!$this->app->erp->RechteVorhanden('ticketregeln','create')) {
|
||||
$this->app->Tpl->Set('SPAM_HIDDEN', 'hidden');
|
||||
}
|
||||
|
||||
$this->app->YUI->TableSearch('TAB1', 'ticket_list', "show", "", "", basename(__FILE__), __CLASS__);
|
||||
$this->app->Tpl->Parse('PAGE', "ticket_list.tpl");
|
||||
}
|
||||
@@ -305,11 +363,34 @@ class Ticket {
|
||||
}
|
||||
}
|
||||
|
||||
function add_attachments_header_html($ticket_id, $templatepos) {
|
||||
$file_attachments = $this->app->erp->GetDateiSubjektObjekt('%','ticket_header',$ticket_id);
|
||||
|
||||
if (!empty($file_attachments)) {
|
||||
$this->app->Tpl->Add($templatepos,"<tr><td>{|Anhänge|}:</td><td><div class=\"ticket_attachments\">");
|
||||
foreach ($file_attachments as $file_attachment) {
|
||||
|
||||
$this->app->Tpl->Add($templatepos,
|
||||
"<a href=\"index.php?module=dateien&action=send&id=".$file_attachment.
|
||||
"\">".
|
||||
htmlentities($this->app->erp->GetDateiName($file_attachment)).
|
||||
" (".
|
||||
$this->app->erp->GetDateiSize($file_attachment).
|
||||
")".
|
||||
"</a>".
|
||||
"<br>");
|
||||
}
|
||||
$this->app->Tpl->Add($templatepos,"</div></td></tr>");
|
||||
}
|
||||
}
|
||||
|
||||
function add_messages_tpl($messages, $showdrafts) {
|
||||
|
||||
// Add Messages now
|
||||
foreach ($messages as $message) {
|
||||
|
||||
$message['betreff'] = strip_tags($message['betreff']); //+ #20230916 XSS
|
||||
|
||||
// Clear this first
|
||||
$this->app->Tpl->Set('NACHRICHT_ANHANG',"");
|
||||
|
||||
@@ -588,6 +669,19 @@ class Ticket {
|
||||
$this->app->Tpl->Parse('PAGE', "ticket_create.tpl");
|
||||
}
|
||||
|
||||
|
||||
function ticket_menu($id) {
|
||||
$this->app->erp->MenuEintrag("index.php?module=ticket&action=edit&id=$id", "Details");
|
||||
$this->app->erp->MenuEintrag("index.php?module=ticket&action=list", "Zurück zur Übersicht");
|
||||
$anzahldateien = $this->app->erp->AnzahlDateien("ticket_header",$id);
|
||||
if ($anzahldateien > 0) {
|
||||
$anzahldateien = " (".$anzahldateien.")";
|
||||
} else {
|
||||
$anzahldateien="";
|
||||
}
|
||||
$this->app->erp->MenuEintrag("index.php?module=ticket&action=dateien&id=$id", "Dateien".$anzahldateien);
|
||||
}
|
||||
|
||||
function ticket_edit() {
|
||||
$id = $this->app->Secure->GetGET('id');
|
||||
|
||||
@@ -595,10 +689,10 @@ class Ticket {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->ticket_menu($id);
|
||||
|
||||
$this->app->Tpl->Set('ID', $id);
|
||||
|
||||
$this->app->erp->MenuEintrag("index.php?module=ticket&action=edit&id=$id", "Details");
|
||||
$this->app->erp->MenuEintrag("index.php?module=ticket&action=list", "Zurück zur Übersicht");
|
||||
$id = $this->app->Secure->GetGET('id');
|
||||
$cmd = $this->app->Secure->GetGET('cmd');
|
||||
$input = $this->GetInput();
|
||||
@@ -622,6 +716,8 @@ class Ticket {
|
||||
|
||||
$ticket_from_db = $this->app->DB->SelectArr($sql)[0];
|
||||
|
||||
$ticket_from_db['betreff'] = htmlentities(strip_tags($ticket_from_db['betreff'])); //+ #20230916 XSS
|
||||
|
||||
foreach ($ticket_from_db as $key => $value) {
|
||||
$this->app->Tpl->Set(strtoupper($key), $value);
|
||||
}
|
||||
@@ -717,7 +813,12 @@ class Ticket {
|
||||
$messages = $this->get_messages_of_ticket($id, 1, NULL);
|
||||
$recv_messages = $this->get_messages_of_ticket($id,"n.versendet != 1",NULL);
|
||||
|
||||
$an_alle = false;
|
||||
|
||||
switch ($submit) {
|
||||
case 'neue_email_alle':
|
||||
$an_alle = true;
|
||||
// break omitted
|
||||
case 'neue_email':
|
||||
|
||||
$senderName = $this->app->User->GetName()." (".$this->app->erp->GetFirmaAbsender().")";
|
||||
@@ -733,23 +834,24 @@ class Ticket {
|
||||
|
||||
if (!empty($recv_messages)) {
|
||||
if (!str_starts_with(strtoupper($recv_messages[0]['betreff']),"RE:")) {
|
||||
$betreff = "RE: ".$recv_messages[0]['betreff'];
|
||||
$betreff = "RE: ".strip_tags($recv_messages[0]['betreff']); //+ #20230916 XSS
|
||||
}
|
||||
else {
|
||||
$betreff = $recv_messages[0]['betreff'];
|
||||
$betreff = strip_tags($recv_messages[0]['betreff']); //+ #20230916 XSS
|
||||
}
|
||||
|
||||
$sql = "SELECT GROUP_CONCAT(DISTINCT `value` ORDER BY `value` SEPARATOR ', ') FROM ticket_header th WHERE th.ticket_nachricht = ".$recv_messages[0]['id']." AND `value` <> '".$senderAddress."' AND type='to'";
|
||||
|
||||
$to = $recv_messages[0]['mail'];
|
||||
$to_additional = $this->app->DB->Select($sql);
|
||||
|
||||
if (!empty($to_additional)) {
|
||||
$to .= ", ".$to_additional;
|
||||
}
|
||||
|
||||
$sql = "SELECT GROUP_CONCAT(DISTINCT `value` ORDER BY `value` SEPARATOR ', ') FROM ticket_header th WHERE th.ticket_nachricht = ".$recv_messages[0]['id']." AND `value` <> '".$senderAddress."' AND type='cc'";
|
||||
$cc = $this->app->DB->Select($sql);
|
||||
if ($an_alle) {
|
||||
$sql = "SELECT GROUP_CONCAT(DISTINCT `value` ORDER BY `value` SEPARATOR ', ') FROM ticket_header th WHERE th.ticket_nachricht = ".$recv_messages[0]['id']." AND `value` <> '".$senderAddress."' AND type='to'";
|
||||
$to_additional = $this->app->DB->Select($sql);
|
||||
if (!empty($to_additional)) {
|
||||
$to .= ", ".$to_additional;
|
||||
}
|
||||
$sql = "SELECT GROUP_CONCAT(DISTINCT `value` ORDER BY `value` SEPARATOR ', ') FROM ticket_header th WHERE th.ticket_nachricht = ".$recv_messages[0]['id']." AND `value` <> '".$senderAddress."' AND type='cc'";
|
||||
$cc = $this->app->DB->Select($sql);
|
||||
} else {
|
||||
$cc = null;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$betreff = $ticket_from_db['betreff'];
|
||||
@@ -891,11 +993,19 @@ class Ticket {
|
||||
}
|
||||
|
||||
$this->add_messages_tpl($messages, false);
|
||||
|
||||
$this->add_attachments_header_html($id,'TICKET_ANHANG');
|
||||
$this->app->Tpl->Set('MESSAGE', $msg);
|
||||
$this->app->Tpl->Parse('PAGE', "ticket_edit.tpl");
|
||||
}
|
||||
|
||||
function ticket_dateien()
|
||||
{
|
||||
$id = $this->app->Secure->GetGET("id");
|
||||
$this->ticket_menu($id);
|
||||
$this->app->Tpl->Add('UEBERSCHRIFT'," (Dateien)");
|
||||
$this->app->YUI->DateiUpload('PAGE',"ticket_header",$id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all paramters from html form and save into $input
|
||||
*/
|
||||
|
||||
+56
-14
@@ -30,18 +30,36 @@ class Ticketregeln {
|
||||
switch ($name) {
|
||||
case "ticketregeln_list":
|
||||
$allowed['ticketregeln_list'] = array('list');
|
||||
$heading = array('E-Mail Empfänger', 'E-Mail Verfasser', 'Verfasser Name', 'Betreff', 'Papierkorb', 'Persönlich', 'Prio', 'DSGVO', 'Verantw.', 'Aktiv', 'Menü');
|
||||
$heading = array('E-Mail Empfänger', 'E-Mail Verfasser', 'Verfasser Name', 'Betreff', 'Papierkorb', 'Persönlich', 'Prio', 'DSGVO','Adresse', 'Verantw.', 'Aktiv', 'Menü');
|
||||
$width = array('10%'); // Fill out manually later
|
||||
|
||||
$findcols = array('t.empfaenger_email', 't.sender_email', 't.name', 't.betreff', 't.spam', 't.persoenlich', 't.prio', 't.dsgvo', 't.warteschlange', 't.aktiv');
|
||||
$searchsql = array('t.empfaenger_email', 't.sender_email', 't.name', 't.betreff', 't.spam', 't.persoenlich', 't.prio', 't.dsgvo', 't.warteschlange', 't.aktiv');
|
||||
$findcols = array('t.empfaenger_email', 't.sender_email', 't.name', 't.betreff', 't.spam', 't.persoenlich', 't.prio', 't.dsgvo', 'a.name', 't.warteschlange', 't.aktiv');
|
||||
$searchsql = array('t.empfaenger_email', 't.sender_email', 't.name', 't.betreff', 't.spam', 't.persoenlich', 't.prio', 't.dsgvo', 'a.name', 't.warteschlange', 't.aktiv');
|
||||
|
||||
$defaultorder = 1;
|
||||
$defaultorderdesc = 0;
|
||||
|
||||
$menu = "<table cellpadding=0 cellspacing=0><tr><td nowrap>" . "<a href=\"index.php?module=ticketregeln&action=edit&id=%value%\"><img src=\"./themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a> <a href=\"#\" onclick=DeleteDialog(\"index.php?module=ticketregeln&action=delete&id=%value%\");>" . "<img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"></a>" . "</td></tr></table>";
|
||||
|
||||
$sql = "SELECT SQL_CALC_FOUND_ROWS t.id, t.empfaenger_email, t.sender_email, t.name, t.betreff, t.spam, t.persoenlich, t.prio, t.dsgvo, w.warteschlange, t.aktiv, t.id FROM ticket_regeln t LEFT JOIN warteschlangen w ON t.warteschlange = w.label";
|
||||
$sql = "SELECT SQL_CALC_FOUND_ROWS t.id,
|
||||
t.empfaenger_email,
|
||||
t.sender_email,
|
||||
t.name,
|
||||
t.betreff,
|
||||
t.spam,
|
||||
t.persoenlich,
|
||||
t.prio,
|
||||
t.dsgvo,
|
||||
a.name,
|
||||
w.warteschlange,
|
||||
t.aktiv,
|
||||
t.id
|
||||
FROM
|
||||
ticket_regeln t
|
||||
LEFT JOIN warteschlangen w ON t.warteschlange = w.label
|
||||
LEFT JOIN adresse a ON t.adresse = a.id
|
||||
|
||||
";
|
||||
|
||||
$where = "1";
|
||||
$count = "SELECT count(DISTINCT id) FROM ticket_regeln WHERE $where";
|
||||
@@ -111,6 +129,7 @@ class Ticketregeln {
|
||||
n.mail,
|
||||
t.quelle,
|
||||
t.warteschlange,
|
||||
t.adresse,
|
||||
".$this->app->erp->FormatDateTimeShort('n.zeit','zeit').",
|
||||
".$this->app->erp->FormatDateTimeShort('n.zeitausgang','zeitausgang').",
|
||||
n.versendet,
|
||||
@@ -130,6 +149,7 @@ class Ticketregeln {
|
||||
$input['sender_email'] = $last_message['mail'];
|
||||
$input['name'] = $last_message['verfasser'];
|
||||
$input['betreff'] = $last_message['betreff'];
|
||||
$input['adresse'] = $last_message['adresse'];
|
||||
$input['warteschlange'] = $last_message['warteschlange'];
|
||||
|
||||
$from_ticket = true;
|
||||
@@ -139,6 +159,7 @@ class Ticketregeln {
|
||||
'sender_email' => $last_message['mail'],
|
||||
'name' => $last_message['verfasser'],
|
||||
'betreff' => $last_message['betreff'],
|
||||
'adresse' => $last_message['adresse'],
|
||||
'warteschlange' => $last_message['warteschlange'],
|
||||
'aktiv' => 1
|
||||
);
|
||||
@@ -156,6 +177,7 @@ class Ticketregeln {
|
||||
|
||||
// Add checks here
|
||||
$input['warteschlange'] = explode(" ",$input['warteschlange'])[0]; // Just the label
|
||||
$input['adresse'] = $this->app->erp->ReplaceAdresse(true,$input['adresse'],true); // Parameters: Target db?, value, from form?
|
||||
|
||||
$columns = "id, ";
|
||||
$values = "$id, ";
|
||||
@@ -193,7 +215,22 @@ class Ticketregeln {
|
||||
|
||||
|
||||
// Load values again from database
|
||||
$result = $this->app->DB->SelectArr("SELECT t.id, t.empfaenger_email, t.sender_email, t.name, t.betreff, t.spam, t.persoenlich, t.prio, t.dsgvo, CONCAT(w.label,' ',w.warteschlange) as warteschlange, t.aktiv, t.id FROM ticket_regeln t LEFT JOIN warteschlangen w on t.warteschlange = w.label WHERE t.id=$id")[0];
|
||||
$result = $this->app->DB->SelectArr("SELECT t.id,
|
||||
t.empfaenger_email,
|
||||
t.sender_email,
|
||||
t.name,
|
||||
t.betreff,
|
||||
t.spam,
|
||||
t.persoenlich,
|
||||
t.prio,
|
||||
t.dsgvo,
|
||||
t.adresse,
|
||||
CONCAT(w.label,' ',w.warteschlange) as warteschlange,
|
||||
t.aktiv,
|
||||
t.id
|
||||
FROM ticket_regeln t
|
||||
LEFT JOIN warteschlangen w on t.warteschlange = w.label
|
||||
WHERE t.id=$id")[0];
|
||||
}
|
||||
|
||||
|
||||
@@ -206,12 +243,16 @@ class Ticketregeln {
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
|
||||
$this->app->Tpl->Set('PRIO', $result['prio']==1?"checked":"");
|
||||
$this->app->Tpl->Set('SPAM', $result['spam']==1?"checked":"");
|
||||
$this->app->Tpl->Set('PERSOENLICH', $result['persoenlich']==1?"checked":"");
|
||||
$this->app->Tpl->Set('DSGVO', $result['dsgvo']==1?"checked":"");
|
||||
$this->app->Tpl->Set('AKTIV', $result['aktiv']==1?"checked":"");
|
||||
|
||||
$this->app->Tpl->Set('ADRESSE', $this->app->erp->ReplaceAdresse(false,$result['adresse'],false));
|
||||
$this->app->YUI->AutoComplete("adresse","adresse");
|
||||
$this->app->YUI->AutoComplete("warteschlange","warteschlangename");
|
||||
|
||||
// $this->SetInput($input);
|
||||
@@ -226,15 +267,16 @@ class Ticketregeln {
|
||||
//$input['EMAIL'] = $this->app->Secure->GetPOST('email');
|
||||
|
||||
$input['empfaenger_email'] = $this->app->Secure->GetPOST('empfaenger_email');
|
||||
$input['sender_email'] = $this->app->Secure->GetPOST('sender_email');
|
||||
$input['name'] = $this->app->Secure->GetPOST('name');
|
||||
$input['betreff'] = $this->app->Secure->GetPOST('betreff');
|
||||
$input['spam'] = $this->app->Secure->GetPOST('spam');
|
||||
$input['persoenlich'] = $this->app->Secure->GetPOST('persoenlich');
|
||||
$input['prio'] = $this->app->Secure->GetPOST('prio');
|
||||
$input['dsgvo'] = $this->app->Secure->GetPOST('dsgvo');
|
||||
$input['warteschlange'] = $this->app->Secure->GetPOST('warteschlange');
|
||||
$input['aktiv'] = $this->app->Secure->GetPOST('aktiv');
|
||||
$input['sender_email'] = $this->app->Secure->GetPOST('sender_email');
|
||||
$input['name'] = $this->app->Secure->GetPOST('name');
|
||||
$input['betreff'] = $this->app->Secure->GetPOST('betreff');
|
||||
$input['spam'] = $this->app->Secure->GetPOST('spam');
|
||||
$input['persoenlich'] = $this->app->Secure->GetPOST('persoenlich');
|
||||
$input['prio'] = $this->app->Secure->GetPOST('prio');
|
||||
$input['dsgvo'] = $this->app->Secure->GetPOST('dsgvo');
|
||||
$input['adresse'] = $this->app->Secure->GetPOST('adresse');
|
||||
$input['warteschlange'] = $this->app->Secure->GetPOST('warteschlange');
|
||||
$input['aktiv'] = $this->app->Secure->GetPOST('aktiv');
|
||||
|
||||
|
||||
return $input;
|
||||
|
||||
+48
-6
@@ -41,29 +41,71 @@ class upgrade {
|
||||
$this->app->Tpl->Set('UPGRADE_VISIBLE', "hidden");
|
||||
$this->app->Tpl->Set('UPGRADE_DB_VISIBLE', "hidden");
|
||||
|
||||
//function upgrade_main(string $directory,bool $verbose, bool $check_git, bool $do_git, bool $export_db, bool $check_db, bool $do_db, bool $force, bool $connection, bool $origin) {
|
||||
|
||||
$directory = dirname(getcwd())."/upgrade";
|
||||
|
||||
switch ($submit) {
|
||||
case 'check_upgrade':
|
||||
$this->app->Tpl->Set('UPGRADE_VISIBLE', "");
|
||||
unlink($logfile);
|
||||
upgrade_main($directory,$verbose,true,false,false,true,false,$force,false,false);
|
||||
upgrade_main( directory: $directory,
|
||||
verbose: $verbose,
|
||||
check_git: true,
|
||||
do_git: false,
|
||||
export_db: false,
|
||||
check_db: true,
|
||||
strict_db: false,
|
||||
do_db: false,
|
||||
force: $force,
|
||||
connection: false,
|
||||
origin: false
|
||||
);
|
||||
break;
|
||||
case 'do_upgrade':
|
||||
unlink($logfile);
|
||||
upgrade_main($directory,$verbose,true,true,false,true,true,$force,false,false);
|
||||
upgrade_main( directory: $directory,
|
||||
verbose: $verbose,
|
||||
check_git: true,
|
||||
do_git: true,
|
||||
export_db: false,
|
||||
check_db: true,
|
||||
strict_db: false,
|
||||
do_db: true,
|
||||
force: $force,
|
||||
connection: false,
|
||||
origin: false
|
||||
);
|
||||
break;
|
||||
case 'check_db':
|
||||
$this->app->Tpl->Set('UPGRADE_DB_VISIBLE', "");
|
||||
unlink($logfile);
|
||||
upgrade_main($directory,$db_verbose,false,false,false,true,false,$force,false,false);
|
||||
upgrade_main( directory: $directory,
|
||||
verbose: $db_verbose,
|
||||
check_git: false,
|
||||
do_git: false,
|
||||
export_db: false,
|
||||
check_db: true,
|
||||
strict_db: false,
|
||||
do_db: false,
|
||||
force: $force,
|
||||
connection: false,
|
||||
origin: false
|
||||
);
|
||||
break;
|
||||
case 'do_db_upgrade':
|
||||
$this->app->Tpl->Set('UPGRADE_DB_VISIBLE', "");
|
||||
unlink($logfile);
|
||||
upgrade_main($directory,$db_verbose,false,false,false,true,true,$force,false,false);
|
||||
upgrade_main( directory: $directory,
|
||||
verbose: $db_verbose,
|
||||
check_git: false,
|
||||
do_git: false,
|
||||
export_db: false,
|
||||
check_db: true,
|
||||
strict_db: false,
|
||||
do_db: true,
|
||||
force: $force,
|
||||
connection: false,
|
||||
origin: false
|
||||
);
|
||||
break;
|
||||
case 'refresh':
|
||||
break;
|
||||
|
||||
@@ -56,6 +56,7 @@ class Versandarten {
|
||||
|
||||
// ab hier alle Action Handler definieren die das Modul hat
|
||||
$this->app->ActionHandler("create", "VersandartenCreate");
|
||||
$this->app->ActionHandler("neusonstige", "VersandartenNeuSonstige");
|
||||
$this->app->ActionHandler("edit", "VersandartenEdit");
|
||||
$this->app->ActionHandler("list", "VersandartenList");
|
||||
$this->app->ActionHandler("delete", "VersandartenDelete");
|
||||
@@ -153,6 +154,13 @@ class Versandarten {
|
||||
return $erg;
|
||||
}
|
||||
|
||||
public function VersandartenNeuSonstige() {
|
||||
$sql = "INSERT INTO versandarten (aktiv) VALUES (1)";
|
||||
$this->app->DB->Insert($sql);
|
||||
$id = $this->app->DB->GetInsertID();
|
||||
$this->app->Location->execute('index.php?module=versandarten&action=edit&id='.$id);
|
||||
}
|
||||
|
||||
/** @noinspection PhpUnused */
|
||||
public function VersandartenEdit(): void
|
||||
{
|
||||
@@ -169,8 +177,8 @@ class Versandarten {
|
||||
if($submit != '') { // handle form submit
|
||||
$form = $this->GetInput();
|
||||
$obj = $this->loadModule($form['modul'], $id);
|
||||
if ($obj === null)
|
||||
$error[] = sprintf('Versandart "%s" existiert nicht.', $form['selmodul']);
|
||||
/* if ($obj === null)
|
||||
$error[] = sprintf('Versandart "%s" existiert nicht.', $form['selmodul']); */
|
||||
|
||||
if(trim($form['bezeichnung']) == '')
|
||||
$error[] = 'Bitte eine Bezeichnung angeben!';
|
||||
@@ -834,4 +842,4 @@ class Versandarten {
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+2387
-2358
File diff suppressed because it is too large
Load Diff
@@ -1,37 +1,3 @@
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: url('../themes/new/fonts/Inter-Regular.woff2?v=3.13') format("woff2"),
|
||||
url('../themes/new/fonts/Inter-Regular.woff?v=3.13') format("woff");
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: url('../themes/new/fonts/Inter-Italic.woff2?v=3.13') format("woff2"),
|
||||
url('../themes/new/fonts/Inter-Italic.woff?v=3.13') format("woff");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: url('../themes/new/fonts/Inter-Bold.woff2?v=3.13') format("woff2"),
|
||||
url('../themes/new/fonts/Inter-Bold.woff?v=3.13') format("woff");
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: italic;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: url('../themes/new/fonts/Inter-BoldItalic.woff2?v=3.13') format("woff2"),
|
||||
url('../themes/new/fonts/Inter-BoldItalic.woff?v=3.13') format("woff");
|
||||
}
|
||||
|
||||
body {
|
||||
font-size: 16px;
|
||||
font-family: 'Inter', Arial, Helvetica, sans-serif;
|
||||
|
||||
@@ -64,5 +64,6 @@
|
||||
--error: #F05A5C;
|
||||
--error-color: #fff;
|
||||
--important: #68D4D0;
|
||||
--success: #92EFB4;
|
||||
/* --success: #92EFB4;*/
|
||||
--success: #2DCA73;
|
||||
}
|
||||
|
||||
@@ -1,38 +1,3 @@
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: url('../themes/new/fonts/Inter-Regular.woff2?v=3.13') format("woff2"),
|
||||
url('../fonts/Inter-Regular.woff?v=3.13') format("woff");
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: url('../themes/new/fonts/Inter-Italic.woff2?v=3.13') format("woff2"),
|
||||
url('../fonts/Inter-Italic.woff?v=3.13') format("woff");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: url('../fonts/Inter-Bold.woff2?v=3.13') format("woff2"),
|
||||
url('../fonts/Inter-Bold.woff?v=3.13') format("woff");
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: italic;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: url('../fonts/Inter-BoldItalic.woff2?v=3.13') format("woff2"),
|
||||
url('../fonts/Inter-BoldItalic.woff?v=3.13') format("woff");
|
||||
}
|
||||
|
||||
|
||||
html {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
@@ -1,39 +1,3 @@
|
||||
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: url('../fonts/Inter-Regular.woff2?v=3.13') format("woff2"),
|
||||
url('../fonts/Inter-Regular.woff?v=3.13') format("woff");
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: url('../fonts/Inter-Italic.woff2?v=3.13') format("woff2"),
|
||||
url('../fonts/Inter-Italic.woff?v=3.13') format("woff");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: url('../fonts/Inter-Bold.woff2?v=3.13') format("woff2"),
|
||||
url('../fonts/Inter-Bold.woff?v=3.13') format("woff");
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: italic;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: url('../themes/new/fonts/Inter-BoldItalic.woff2?v=3.13') format("woff2"),
|
||||
url('../themes/new/fonts/Inter-BoldItalic.woff?v=3.13') format("woff");
|
||||
}
|
||||
|
||||
|
||||
html {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
@@ -1,71 +1,3 @@
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: url('../fonts/Inter-Regular.woff2?v=3.13') format("woff2"),
|
||||
url('../fonts/Inter-Regular.woff?v=3.13') format("woff");
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: url('../fonts/Inter-Italic.woff2?v=3.13') format("woff2"),
|
||||
url('../fonts/Inter-Italic.woff?v=3.13') format("woff");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
font-display: swap;
|
||||
src: url("../fonts/Inter-Medium.woff2?v=3.13") format("woff2"),
|
||||
url("../fonts/Inter-Medium.woff?v=3.13") format("woff");
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: italic;
|
||||
font-weight: 500;
|
||||
font-display: swap;
|
||||
src: url("../fonts/Inter-MediumItalic.woff2?v=3.13") format("woff2"),
|
||||
url("../fonts/Inter-MediumItalic.woff?v=3.13") format("woff");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
font-display: swap;
|
||||
src: url("../fonts/Inter-SemiBold.woff2?v=3.13") format("woff2"),
|
||||
url("../fonts/Inter-SemiBold.woff?v=3.13") format("woff");
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: italic;
|
||||
font-weight: 600;
|
||||
font-display: swap;
|
||||
src: url("../fonts/Inter-SemiBoldItalic.woff2?v=3.13") format("woff2"),
|
||||
url("../fonts/Inter-SemiBoldItalic.woff?v=3.13") format("woff");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: url('../fonts/Inter-Bold.woff2?v=3.13') format("woff2"),
|
||||
url('../fonts/Inter-Bold.woff?v=3.13') format("woff");
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: italic;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: url('../fonts/Inter-BoldItalic.woff2?v=3.13') format("woff2"),
|
||||
url('../fonts/Inter-BoldItalic.woff?v=3.13') format("woff");
|
||||
}
|
||||
|
||||
body {
|
||||
font-size: 12px;
|
||||
font-family: 'Inter', Arial, Helvetica, sans-serif;
|
||||
@@ -3029,7 +2961,6 @@ div.error > input[type=submit] {
|
||||
}
|
||||
|
||||
.info,
|
||||
.success,
|
||||
.error2 {
|
||||
background-color: var(--info);
|
||||
color: var(--info-color);
|
||||
@@ -3044,6 +2975,14 @@ div.error > input[type=submit] {
|
||||
background-size: 30px 30px;
|
||||
}
|
||||
|
||||
.success {
|
||||
background-color: var(--success);
|
||||
color: var(--info-color);
|
||||
background-image: url('../images/info.png');
|
||||
background-size: 30px 30px;
|
||||
}
|
||||
|
||||
|
||||
.pull-right {
|
||||
float: right !important;
|
||||
}
|
||||
@@ -3108,7 +3047,7 @@ div.error > input[type=submit] {
|
||||
#header div.headererror > input {
|
||||
padding: 5px;
|
||||
margin: 3px;
|
||||
background-color: var(--info);
|
||||
background-color: var(--success);
|
||||
color: var(--info-color);
|
||||
}
|
||||
|
||||
@@ -3724,9 +3663,8 @@ a.ui-tabs-anchor:hover {
|
||||
|
||||
.greybox {
|
||||
background-color: lightgrey;
|
||||
color: white;
|
||||
padding: 10px;
|
||||
font-size: 1.8em;
|
||||
font-size: 1.2em;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
@@ -0,0 +1,6 @@
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.06267 11.2331H4.76674C4.5067 11.2331 4.2959 11.4439 4.2959 11.7039V14.529C4.2959 14.7891 4.5067 14.9999 4.76674 14.9999H7.59182C7.85186 14.9999 8.06267 14.7891 8.06267 14.529V11.2331Z" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.3584 11.2331H8.0625V14.529C8.0625 14.7891 8.27331 14.9999 8.53335 14.9999H11.3584C11.6185 14.9999 11.8293 14.7891 11.8293 14.529V11.7039C11.8293 11.4439 11.6185 11.2331 11.3584 11.2331Z" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.47512 7.46631H6.65005C6.39 7.46631 6.1792 7.67711 6.1792 7.93716V11.2331H9.94597V7.93716C9.94597 7.67711 9.73517 7.46631 9.47512 7.46631Z" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M15.1254 15V5.2064C15.1255 4.85853 14.9339 4.53892 14.6269 4.37519L8.50592 1.11066C8.22908 0.963114 7.89694 0.963114 7.6201 1.11066L1.4991 4.37519C1.19193 4.53876 1 4.85839 1 5.2064V15" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -40,7 +40,7 @@
|
||||
<div class="copyright">
|
||||
© [YEAR] by OpenXE-org & Xentral ERP Software GmbH.<br>
|
||||
OpenXE is free open source software under AGPL/EGPL license, based on <a href="https://xentral.com" target="_blank">Xentral®</a>.<br>
|
||||
[XENTRALVERSION]
|
||||
<a href="https://github.com/OpenXE-org/OpenXE/commits/master">[XENTRALVERSION]</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,308 +1,312 @@
|
||||
<?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 ****
|
||||
/*
|
||||
**** 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
|
||||
|
||||
class WidgetGenauftrag_position
|
||||
{
|
||||
|
||||
private $app; //application object
|
||||
public $form; //store form object
|
||||
protected $parsetarget; //target for content
|
||||
|
||||
public function __construct($app,$parsetarget)
|
||||
{
|
||||
$this->app = $app;
|
||||
$this->parsetarget = $parsetarget;
|
||||
$this->Form();
|
||||
}
|
||||
|
||||
public function auftrag_positionDelete()
|
||||
{
|
||||
|
||||
$this->form->Execute("auftrag_position","delete");
|
||||
|
||||
$this->auftrag_positionList();
|
||||
}
|
||||
|
||||
function Edit()
|
||||
{
|
||||
$this->form->Edit();
|
||||
}
|
||||
|
||||
function Copy()
|
||||
{
|
||||
$this->form->Copy();
|
||||
}
|
||||
|
||||
public function Create()
|
||||
{
|
||||
$this->form->Create();
|
||||
}
|
||||
|
||||
public function Search()
|
||||
{
|
||||
$this->app->Tpl->Set($this->parsetarget,"SUUUCHEEE");
|
||||
}
|
||||
|
||||
public function Summary()
|
||||
{
|
||||
$this->app->Tpl->Set($this->parsetarget,"grosse Tabelle");
|
||||
}
|
||||
|
||||
function Form()
|
||||
{
|
||||
$this->form = $this->app->FormHandler->CreateNew("auftrag_position");
|
||||
$this->form->UseTable("auftrag_position");
|
||||
$this->form->UseTemplate("auftrag_position.tpl",$this->parsetarget);
|
||||
|
||||
$field = new HTMLInput("nummer","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("bezeichnung","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
$this->form->AddMandatory("bezeichnung","notempty","Pflichtfeld!","MSGBEZEICHNUNG");
|
||||
|
||||
$field = new HTMLTextarea("beschreibung",8,48,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("menge","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
$this->form->AddMandatory("menge","notempty","Pflichtfeld!","MSGMENGE");
|
||||
|
||||
$field = new HTMLInput("preis","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLTextarea("formelmenge",2,48,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLTextarea("formelpreis",2,48,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("ohnepreis","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("ausblenden_im_pdf","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("waehrung","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLSelect("umsatzsteuer",0,"umsatzsteuer","","","0");
|
||||
$field->AddOption('Standard','');
|
||||
$field->AddOption('Ermäßigt','ermaessigt');
|
||||
$field->AddOption('Befreit','befreit');
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("anderersteuersatz","","","","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("steuersatz","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLTextarea("steuertext",3,50,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("grundrabatt","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("rabatt1","text","","5","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("rabatt2","text","","5","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("rabatt3","text","","5","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("rabatt4","text","","5","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("rabatt5","text","","5","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("keinrabatterlaubt","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("rabatt","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("einheit","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("vpe","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("lieferdatum","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("lieferdatumkw","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("artikelnummerkunde","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("zolltarifnummer","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("herkunftsland","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld1","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld2","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld3","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld4","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld5","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld6","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld7","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld8","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld9","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld10","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld11","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld12","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld13","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld14","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld15","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld16","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld17","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld18","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld19","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld20","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld21","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld22","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld23","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld24","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld25","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld26","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld27","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld28","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld29","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld30","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld31","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld32","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld33","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld34","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld35","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld36","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld37","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld38","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld39","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld40","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("punkte","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("bonuspunkte","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("mlmdirektpraemie","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
|
||||
$field = new HTMLInput("kostenstelle","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("erloese","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("erloesefestschreiben","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLTextarea("bemerkung",3,40,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
<?php
|
||||
|
||||
class WidgetGenauftrag_position
|
||||
{
|
||||
|
||||
private $app; //application object
|
||||
public $form; //store form object
|
||||
protected $parsetarget; //target for content
|
||||
|
||||
public function __construct($app,$parsetarget)
|
||||
{
|
||||
$this->app = $app;
|
||||
$this->parsetarget = $parsetarget;
|
||||
$this->Form();
|
||||
}
|
||||
|
||||
public function auftrag_positionDelete()
|
||||
{
|
||||
|
||||
$this->form->Execute("auftrag_position","delete");
|
||||
|
||||
$this->auftrag_positionList();
|
||||
}
|
||||
|
||||
function Edit()
|
||||
{
|
||||
$this->form->Edit();
|
||||
}
|
||||
|
||||
function Copy()
|
||||
{
|
||||
$this->form->Copy();
|
||||
}
|
||||
|
||||
public function Create()
|
||||
{
|
||||
$this->form->Create();
|
||||
}
|
||||
|
||||
public function Search()
|
||||
{
|
||||
$this->app->Tpl->Set($this->parsetarget,"SUUUCHEEE");
|
||||
}
|
||||
|
||||
public function Summary()
|
||||
{
|
||||
$this->app->Tpl->Set($this->parsetarget,"grosse Tabelle");
|
||||
}
|
||||
|
||||
function Form()
|
||||
{
|
||||
$this->form = $this->app->FormHandler->CreateNew("auftrag_position");
|
||||
$this->form->UseTable("auftrag_position");
|
||||
$this->form->UseTemplate("auftrag_position.tpl",$this->parsetarget);
|
||||
|
||||
$field = new HTMLInput("nummer","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("bezeichnung","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
$this->form->AddMandatory("bezeichnung","notempty","Pflichtfeld!","MSGBEZEICHNUNG");
|
||||
|
||||
$field = new HTMLTextarea("beschreibung",8,48,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("menge","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
$this->form->AddMandatory("menge","notempty","Pflichtfeld!","MSGMENGE");
|
||||
|
||||
$field = new HTMLInput("preis","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLTextarea("formelmenge",2,48,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLTextarea("formelpreis",2,48,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("ohnepreis","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("ausblenden_im_pdf","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("waehrung","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLSelect("umsatzsteuer",0,"umsatzsteuer","","","0");
|
||||
$field->AddOption('Standard','');
|
||||
$field->AddOption('Ermäßigt','ermaessigt');
|
||||
$field->AddOption('Befreit','befreit');
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("anderersteuersatz","","","","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("steuersatz","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLTextarea("steuertext",3,50,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("grundrabatt","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("rabatt1","text","","5","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("rabatt2","text","","5","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("rabatt3","text","","5","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("rabatt4","text","","5","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("rabatt5","text","","5","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("keinrabatterlaubt","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("rabatt","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("einheit","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("vpe","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("lieferdatum","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("lieferdatumkw","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("artikelnummerkunde","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("zolltarifnummer","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("herkunftsland","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld1","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld2","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld3","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld4","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld5","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld6","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld7","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld8","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld9","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld10","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld11","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld12","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld13","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld14","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld15","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld16","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld17","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld18","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld19","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld20","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld21","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld22","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld23","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld24","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld25","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld26","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld27","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld28","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld29","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld30","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld31","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld32","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld33","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld34","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld35","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld36","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld37","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld38","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld39","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld40","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("punkte","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("bonuspunkte","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("mlmdirektpraemie","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("kostenstelle","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("erloese","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("erloesefestschreiben","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
if ($this->app->erp->RechteVorhanden('auftrag','einkaufspreise')) {
|
||||
$field = new HTMLInput("einkaufspreis","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
}
|
||||
|
||||
$field = new HTMLTextarea("bemerkung",3,40,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -1,212 +1,212 @@
|
||||
<?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 ****
|
||||
/*
|
||||
**** 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
|
||||
|
||||
class WidgetGenlieferschein
|
||||
{
|
||||
|
||||
private $app; //application object
|
||||
public $form; //store form object
|
||||
protected $parsetarget; //target for content
|
||||
|
||||
public function __construct($app,$parsetarget)
|
||||
{
|
||||
$this->app = $app;
|
||||
$this->parsetarget = $parsetarget;
|
||||
$this->Form();
|
||||
}
|
||||
|
||||
public function lieferscheinDelete()
|
||||
{
|
||||
|
||||
$this->form->Execute("lieferschein","delete");
|
||||
|
||||
$this->lieferscheinList();
|
||||
}
|
||||
|
||||
function Edit()
|
||||
{
|
||||
$this->form->Edit();
|
||||
}
|
||||
|
||||
function Copy()
|
||||
{
|
||||
$this->form->Copy();
|
||||
}
|
||||
|
||||
public function Create()
|
||||
{
|
||||
$this->form->Create();
|
||||
}
|
||||
|
||||
public function Search()
|
||||
{
|
||||
$this->app->Tpl->Set($this->parsetarget,"SUUUCHEEE");
|
||||
}
|
||||
|
||||
public function Summary()
|
||||
{
|
||||
$this->app->Tpl->Set($this->parsetarget,"grosse Tabelle");
|
||||
}
|
||||
|
||||
function Form()
|
||||
{
|
||||
$this->form = $this->app->FormHandler->CreateNew("lieferschein");
|
||||
$this->form->UseTable("lieferschein");
|
||||
$this->form->UseTemplate("lieferschein.tpl",$this->parsetarget);
|
||||
|
||||
$field = new HTMLInput("lieferid","hidden","","","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("ansprechpartnerid","hidden","","","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("adresse","text","","20","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("lieferant","text","","20","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("lieferantenretoure","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("projekt","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("auftragid","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("ihrebestellnummer","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("internebezeichnung","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("datum","text","","","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("standardlager","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("kommissionskonsignationslager","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("schreibschutz","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("abweichendebezeichnung","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLSelect("typ",0,"typ","","","0");
|
||||
$field->AddOption('Firma','firma');
|
||||
$field->AddOption('Herr','herr');
|
||||
$field->AddOption('Frau','frau');
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("name","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
$this->form->AddMandatory("name","notempty","Pflichfeld!","MSGNAME");
|
||||
|
||||
$field = new HTMLInput("titel","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("ansprechpartner","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("abteilung","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("unterabteilung","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("adresszusatz","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("strasse","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("plz","text","","5","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("ort","text","","19","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("telefon","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("telefax","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("email","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("anschreiben","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLTextarea("freitext",5,110,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLTextarea("bodyzusatz",5,110,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLSelect("versandart",0,"versandart","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("lieferbedingung","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("vertrieb","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("bearbeiter","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("keinerechnung","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("ohne_briefpapier","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("ohne_artikeltext","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("gln","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLTextarea("internebemerkung",2,110,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("ustid","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLSelect("ust_befreit",0,"ust_befreit","","","0");
|
||||
$field->AddOption('Inland','0');
|
||||
$field->AddOption('EU-Lieferung','1');
|
||||
$field->AddOption('Export','2');
|
||||
$field->AddOption('Steuerfrei Inland','3');
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("sprache","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("kostenstelle","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
<?php
|
||||
|
||||
class WidgetGenlieferschein
|
||||
{
|
||||
|
||||
private $app; //application object
|
||||
public $form; //store form object
|
||||
protected $parsetarget; //target for content
|
||||
|
||||
public function __construct($app,$parsetarget)
|
||||
{
|
||||
$this->app = $app;
|
||||
$this->parsetarget = $parsetarget;
|
||||
$this->Form();
|
||||
}
|
||||
|
||||
public function lieferscheinDelete()
|
||||
{
|
||||
|
||||
$this->form->Execute("lieferschein","delete");
|
||||
|
||||
$this->lieferscheinList();
|
||||
}
|
||||
|
||||
function Edit()
|
||||
{
|
||||
$this->form->Edit();
|
||||
}
|
||||
|
||||
function Copy()
|
||||
{
|
||||
$this->form->Copy();
|
||||
}
|
||||
|
||||
public function Create()
|
||||
{
|
||||
$this->form->Create();
|
||||
}
|
||||
|
||||
public function Search()
|
||||
{
|
||||
$this->app->Tpl->Set($this->parsetarget,"SUUUCHEEE");
|
||||
}
|
||||
|
||||
public function Summary()
|
||||
{
|
||||
$this->app->Tpl->Set($this->parsetarget,"grosse Tabelle");
|
||||
}
|
||||
|
||||
function Form()
|
||||
{
|
||||
$this->form = $this->app->FormHandler->CreateNew("lieferschein");
|
||||
$this->form->UseTable("lieferschein");
|
||||
$this->form->UseTemplate("lieferschein.tpl",$this->parsetarget);
|
||||
|
||||
$field = new HTMLInput("lieferid","hidden","","","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("ansprechpartnerid","hidden","","","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("adresse","text","","20","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("lieferant","text","","20","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("lieferantenretoure","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("projekt","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("auftragid","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("ihrebestellnummer","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("internebezeichnung","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("datum","text","","","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("standardlager","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("kommissionskonsignationslager","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("schreibschutz","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("abweichendebezeichnung","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLSelect("typ",0,"typ","","","0");
|
||||
$field->AddOption('Firma','firma');
|
||||
$field->AddOption('Herr','herr');
|
||||
$field->AddOption('Frau','frau');
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("name","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
$this->form->AddMandatory("name","notempty","Pflichfeld!","MSGNAME");
|
||||
|
||||
$field = new HTMLInput("titel","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("ansprechpartner","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("abteilung","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("unterabteilung","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("adresszusatz","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("strasse","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("plz","text","","5","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("ort","text","","19","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("telefon","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("telefax","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("email","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("anschreiben","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLTextarea("freitext",5,110,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLTextarea("bodyzusatz",5,110,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLSelect("versandart",0,"versandart","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("lieferbedingung","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("vertrieb","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("bearbeiter","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("keinerechnung","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("ohne_briefpapier","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("ohne_artikeltext","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("gln","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLTextarea("internebemerkung",2,110,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("ustid","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLSelect("ust_befreit",0,"ust_befreit","","","0");
|
||||
$field->AddOption('Inland','0');
|
||||
$field->AddOption('EU-Lieferung','1');
|
||||
$field->AddOption('Export','2');
|
||||
$field->AddOption('Steuerfrei Inland','3');
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("sprache","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("kostenstelle","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -222,34 +222,47 @@ $( document ).ready(function() {
|
||||
</table>
|
||||
</td>
|
||||
<td width="30%" [STYLERECHTS]>
|
||||
<table width="100%"><tr><td align="right"><input type="submit" value="Speichern" ></td></tr></table>
|
||||
<div id="positionaccordion">
|
||||
[ANZEIGEEINKAUFLAGER]
|
||||
|
||||
<h3>{|Steuer|}</h3>
|
||||
<div class="table-responsive">
|
||||
<table>
|
||||
<tbody>
|
||||
[VORSTEUER]
|
||||
<tr><td>{|Kostenstelle|}:</td><td>[KOSTENSTELLE][MSGKOSTENSTELLE]</td></tr>
|
||||
<tr><td>{|Erlöse|}:</td><td>[ERLOESE][MSGERLOESE]</td></tr>
|
||||
<tr><td>{|festschreiben|}:</td><td>[ERLOESEFESTSCHREIBEN][MSGERLOESEFESTSCHREIBEN]</td></tr>
|
||||
[NACHSTEUER]
|
||||
</tbody>
|
||||
</table>
|
||||
<table width="100%"><tr><td align="right"><input type="submit" value="Speichern" ></td></tr></table>
|
||||
<div id="positionaccordion"> [ANZEIGEEINKAUFLAGER]
|
||||
<h3>{|Steuer|}</h3>
|
||||
<div class="table-responsive">
|
||||
<table>
|
||||
<tbody> [VORSTEUER]
|
||||
<tr>
|
||||
<td>{|Kostenstelle|}:</td>
|
||||
<td>[KOSTENSTELLE][MSGKOSTENSTELLE]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Erlöse|}:</td>
|
||||
<td>[ERLOESE][MSGERLOESE]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|festschreiben|}:</td>
|
||||
<td>[ERLOESEFESTSCHREIBEN][MSGERLOESEFESTSCHREIBEN]</td>
|
||||
</tr> [NACHSTEUER] </tbody>
|
||||
</table>
|
||||
</div>
|
||||
<h3>{|Einkaufspreis für Deckungsbeitrag|}</h3>
|
||||
<div class="table-responsive">
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>[EINKAUFSPREIS][MSGEINKAUFSPREIS]</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<h3>{|Bemerkung|}</h3>
|
||||
<div class="table-responsive">
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td> [BEMERKUNG][MSGBEMERKUNG] </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h3>{|Bemerkung|}</h3>
|
||||
<div class="table-responsive">
|
||||
<table>
|
||||
<tbody>
|
||||
<tr><td>
|
||||
[BEMERKUNG][MSGBEMERKUNG]
|
||||
</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
@@ -75,7 +75,7 @@ $(document).ready(function(){
|
||||
<tr><td>{|Ihre Bestellnummer|}:</td><td>[IHREBESTELLNUMMER][MSGIHREBESTELLNUMMER]</td></tr>
|
||||
<tr><td>{|Interne Bezeichnung|}:</td><td>[INTERNEBEZEICHNUNG][MSGINTERNEBEZEICHNUNG]</td></tr>
|
||||
<tr><td>{|Datum|}:</td><td>[DATUM][MSGDATUM]</td></tr>
|
||||
<tr><td>[VORWUNSCHLAGER]Bevorzugtes Lager:[NACHWUNSCHLAGER]<br></td><td>[VORWUNSCHLAGER][STANDARDLAGER][MSGSTANDARDLAGER][NACHWUNSCHLAGER]</td></tr>
|
||||
<tr><td>{|Standardlagerplatz|}:</td><td>[STANDARDLAGER][MSGSTANDARDLAGER]</td></tr>
|
||||
[VORKOMMISSIONSKONSIGNATIONSLAGER]<tr><td>[KOMMISSIONIERLAGER]:<br></td><td>[KOMMISSIONSKONSIGNATIONSLAGER][MSGKOMMISSIONSKONSIGNATIONSLAGER]</td></tr>[NACHKOMMISSIONSKONSIGNATIONSLAGER]
|
||||
<tr><td>Schreibschutz:</td><td>[SCHREIBSCHUTZ][MSGSCHREIBSCHUTZ] </td></tr>
|
||||
<tr><td>[ABWEICHENDEBEZEICHNUNGBESCHRIFTUNG]:</td><td>[ABWEICHENDEBEZEICHNUNG][MSGABWEICHENDEBEZEICHNUNG] </td></tr>
|
||||
|
||||
@@ -43,6 +43,7 @@ class WidgetAuftrag_position extends WidgetGenAuftrag_position
|
||||
$this->app->YUI->DatePicker("lieferdatum");
|
||||
$this->form->ReplaceFunction("lieferdatum",$this,"ReplaceDatum");
|
||||
$this->form->ReplaceFunction("preis",$this,"ReplaceMengeBetrag");
|
||||
$this->form->ReplaceFunction("einkaufspreis",$this,"ReplaceMengeBetrag");
|
||||
$this->form->ReplaceFunction("steuersatz",$this,"ReplaceSteuersatz");
|
||||
$this->form->ReplaceFunction("menge",$this,"ReplaceMenge");
|
||||
$this->form->ReplaceFunction("grundrabatt",$this,"ReplaceDecimal");
|
||||
|
||||
@@ -15,6 +15,7 @@ class WidgetLieferschein extends WidgetGenlieferschein
|
||||
function ExtendsForm()
|
||||
{
|
||||
$id = $this->app->Secure->GetGET("id");
|
||||
|
||||
if($this->app->Secure->GetPOST("speichern")!="")
|
||||
{
|
||||
$deliveryNote = $this->app->DB->SelectRow("SELECT `projekt`, `schreibschutz` FROM `lieferschein` WHERE `id` = {$id}");
|
||||
@@ -36,6 +37,7 @@ class WidgetLieferschein extends WidgetGenlieferschein
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($this->app->Secure->GetGET("action")=="edit")
|
||||
{
|
||||
$this->app->Tpl->Add('FURTHERTABS','<li><a href="index.php?module=lieferschein&action=minidetail&id=[ID]&frame=true#tabs-4">Protokoll</a></li>');
|
||||
@@ -49,7 +51,7 @@ class WidgetLieferschein extends WidgetGenlieferschein
|
||||
$this->app->YUI->AutoComplete("projekt","projektname",1);
|
||||
$this->app->YUI->AutoComplete("auftragid","auftrag",1);
|
||||
$this->app->YUI->AutoComplete("aktion","aktionscode",1);
|
||||
$this->app->YUI->AutoComplete("standardlager","lager");
|
||||
$this->app->YUI->AutoComplete("standardlager","lagerplatz");
|
||||
|
||||
$this->app->YUI->AutoComplete("lieferbedingung","lieferbedingungen");
|
||||
|
||||
@@ -62,7 +64,7 @@ class WidgetLieferschein extends WidgetGenlieferschein
|
||||
$this->form->ReplaceFunction("adresse",$this,"ReplaceKunde");
|
||||
$this->form->ReplaceFunction("lieferant",$this,"ReplaceLieferant");
|
||||
$this->form->ReplaceFunction("auftragid",$this,"ReplaceAuftrag");
|
||||
$this->form->ReplaceFunction("standardlager",$this,"ReplaceLager");
|
||||
$this->form->ReplaceFunction("standardlager",$this,"ReplaceLagerPlatz");
|
||||
|
||||
if($this->app->erp->ModulVorhanden('kommissionskonsignationslager'))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user