Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
68965e87cd | ||
|
|
89671797a1 | ||
|
|
0ed0cc8bbb | ||
|
|
e9e292c2e2 | ||
|
|
bd556796e2 | ||
|
|
ba1157dbfc | ||
|
|
e3e9e52ff5 | ||
|
|
70e3289df5 | ||
|
|
b27b5d155e | ||
|
|
3b03a9e684 | ||
|
|
49c912cb45 | ||
|
|
5b6062f9be | ||
|
|
d9240e184d | ||
|
|
fc64ced7ea | ||
|
|
99bbbdca42 | ||
|
|
02bf9af08e | ||
|
|
bb3e18d7b4 | ||
|
|
032b03a6c9 | ||
|
|
ee4f7ab88a | ||
|
|
989974d556 | ||
|
|
6ff92c0900 | ||
|
|
b52354b1ad | ||
|
|
90de642685 | ||
|
|
b14c419f3f | ||
|
|
eff711a539 | ||
|
|
ff7f9160e4 | ||
|
|
3ef58b681f | ||
|
|
2a5f01004b | ||
|
|
b618ea78d4 | ||
|
|
161e6ea929 | ||
|
|
9eb590f7ba | ||
|
|
c4e0494417 | ||
|
|
c15fa08427 | ||
|
|
d937436f9e | ||
|
|
8e4b58b7cc | ||
|
|
d0ebab936a | ||
|
|
ba9307f01c | ||
|
|
298b88331b | ||
|
|
e7f01f7e10 | ||
|
|
ffd58bb196 | ||
|
|
0b5fa939d5 | ||
|
|
758328a8ef |
@@ -1,10 +1,27 @@
|
|||||||
# Xentral Installation
|
# Xenomporio installation
|
||||||
|
|
||||||
1. aktuelle .tar.gz entpacken in einem Ordner
|
## Place the installation files into a folder in /var/www/html/.
|
||||||
2. per Browser auf auf Verzeichnis gehen
|
|
||||||
3. setup durchfuehren (trotz Hinweis der Rechte (diese muessen passen) weiter klicken)
|
|
||||||
4. Der Webserver-Pfad sollte dringend auf www gesetzte werden, sodass die
|
|
||||||
Firmen kritischen Dateien auf keinen Fall durch eine fehlerhafte .htaccess
|
|
||||||
Datei jemals online stehen (es geht primaer um den Ordner userdata und conf).
|
|
||||||
|
|
||||||
|
`cd /var/www/html`
|
||||||
|
|
||||||
|
e.g. Release 1.0:
|
||||||
|
|
||||||
|
`sudo wget https://github.com/xenomporio-org/Xenomporio/archive/refs/tags/V.1.0.zip`
|
||||||
|
|
||||||
|
`unzip V.1.0.zip`
|
||||||
|
|
||||||
|
## Set folder permissions:
|
||||||
|
|
||||||
|
`sudo chown www-data:www-data Xenomporio-V.1.0 -R`
|
||||||
|
|
||||||
|
## Fire up the setup page in a browser
|
||||||
|
|
||||||
|
http://yourserverip/Xenomporio-V.1.0 (watch out, its case sensitive)
|
||||||
|
|
||||||
|
<img src="doc/Install-10.png" width="800px">
|
||||||
|
<img src="doc/Install-20.png" width="800px">
|
||||||
|
<img src="doc/Install-30.png" width="800px">
|
||||||
|
<img src="doc/Install-40.png" width="800px">
|
||||||
|
<img src="doc/Install-50.png" width="800px">
|
||||||
|
<img src="doc/Install-60.png" width="800px">
|
||||||
|
<img src="doc/Install-done.png" width="800px">
|
||||||
|
|||||||
@@ -13,4 +13,9 @@ Xenomporio ist eine umfassende webbasierte Anwendung zur Abwicklung aller kaufm
|
|||||||
* Aufgaben- und Terminverwaltung
|
* Aufgaben- und Terminverwaltung
|
||||||
* Zeitabrechnung
|
* Zeitabrechnung
|
||||||
|
|
||||||
|
|
||||||
|
[Hier gehts zur Server Installation](SERVER_INSTALL.md)
|
||||||
|
|
||||||
|
[Hier gehts zur Xenomporio Installation](INSTALL.md)
|
||||||
|
|
||||||
Xenomporio ist freie Software, lizensiert unter AGPL 3 und basiert auf der Open Source Version von Xentral https://xentral.com/
|
Xenomporio ist freie Software, lizensiert unter AGPL 3 und basiert auf der Open Source Version von Xentral https://xentral.com/
|
||||||
|
|||||||
@@ -0,0 +1,188 @@
|
|||||||
|
# Server Install (Example for ubuntu-22.04-live-server-amd64.iso)
|
||||||
|
|
||||||
|
## Create new server instance
|
||||||
|
e.g. 8 GB RAM, 128 GB hard drive, 4 CPUs.
|
||||||
|
|
||||||
|
## Install the operating system
|
||||||
|
|
||||||
|
(...)
|
||||||
|
It is recommended install OpenSSH during install.
|
||||||
|
|
||||||
|
## Refresh the update system
|
||||||
|
`sudo apt-get update`
|
||||||
|
|
||||||
|
## Install the webserver
|
||||||
|
`sudo apt-get install apache2`
|
||||||
|
|
||||||
|
-> Test the webserver (http://IP_ADDRESS)
|
||||||
|
|
||||||
|
It should show the "Apache2 Default Page".
|
||||||
|
|
||||||
|
## Install PHP (8.1)
|
||||||
|
`sudo apt-get install php libapache2-mod-php`
|
||||||
|
|
||||||
|
`php -v` should output:
|
||||||
|
|
||||||
|
```PHP 8.1.2 (cli) (built: Jun 13 2022 13:52:54) (NTS)
|
||||||
|
Copyright (c) The PHP Group
|
||||||
|
Zend Engine v4.1.2, Copyright (c) Zend Technologies
|
||||||
|
with Zend OPcache v8.1.2, Copyright (c), by Zend Technologies
|
||||||
|
```
|
||||||
|
|
||||||
|
## Install PHP modules
|
||||||
|
`sudo apt-get install php-mysql php-cli php-imap php-curl php-xml php-soap php-zip php-mbstring php-gd`
|
||||||
|
|
||||||
|
## Configure PHP
|
||||||
|
|
||||||
|
Add the following lines to `/etc/php/8.1/apache2/php.ini` and `/etc/php/8.1/cli/php.ini`:
|
||||||
|
|
||||||
|
```
|
||||||
|
disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,dl,highlight_file,show_source,proc_open,popen
|
||||||
|
post_max_size = 100M
|
||||||
|
upload_max_filesize = 100M
|
||||||
|
|
||||||
|
max_execution_time = 3600
|
||||||
|
max_input_time = 3600
|
||||||
|
magic_quotes_gpc = Off
|
||||||
|
file_uploads = Yes (gesetzt: file_uploads = On)
|
||||||
|
max_file_uploads = 20
|
||||||
|
short_open_tag = On
|
||||||
|
max_input_vars=3000
|
||||||
|
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`
|
||||||
|
```
|
||||||
|
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
|
||||||
|
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
|
||||||
|
|
||||||
|
In order to log into MariaDB to secure it, we'll need the current
|
||||||
|
password for the root user. If you've just installed MariaDB, and
|
||||||
|
haven't set the root password yet, you should just press enter here.
|
||||||
|
|
||||||
|
Enter current password for root (enter for none):
|
||||||
|
OK, successfully used password, moving on...
|
||||||
|
|
||||||
|
Setting the root password or using the unix_socket ensures that nobody
|
||||||
|
can log into the MariaDB root user without the proper authorisation.
|
||||||
|
|
||||||
|
You already have your root account protected, so you can safely answer 'n'.
|
||||||
|
|
||||||
|
Switch to unix_socket authentication [Y/n] n
|
||||||
|
... skipping.
|
||||||
|
|
||||||
|
You already have your root account protected, so you can safely answer 'n'.
|
||||||
|
|
||||||
|
Change the root password? [Y/n] y
|
||||||
|
New password:
|
||||||
|
Re-enter new password:
|
||||||
|
Password updated successfully!
|
||||||
|
Reloading privilege tables..
|
||||||
|
... Success!
|
||||||
|
|
||||||
|
|
||||||
|
By default, a MariaDB installation has an anonymous user, allowing anyone
|
||||||
|
to log into MariaDB without having to have a user account created for
|
||||||
|
them. This is intended only for testing, and to make the installation
|
||||||
|
go a bit smoother. You should remove them before moving into a
|
||||||
|
production environment.
|
||||||
|
|
||||||
|
Remove anonymous users? [Y/n] y
|
||||||
|
... Success!
|
||||||
|
|
||||||
|
Normally, root should only be allowed to connect from 'localhost'. This
|
||||||
|
ensures that someone cannot guess at the root password from the network.
|
||||||
|
|
||||||
|
Disallow root login remotely? [Y/n] y
|
||||||
|
... Success!
|
||||||
|
|
||||||
|
By default, MariaDB comes with a database named 'test' that anyone can
|
||||||
|
access. This is also intended only for testing, and should be removed
|
||||||
|
before moving into a production environment.
|
||||||
|
|
||||||
|
Remove test database and access to it? [Y/n] y
|
||||||
|
- Dropping test database...
|
||||||
|
... Success!
|
||||||
|
- Removing privileges on test database...
|
||||||
|
... Success!
|
||||||
|
|
||||||
|
Reloading the privilege tables will ensure that all changes made so far
|
||||||
|
will take effect immediately.
|
||||||
|
|
||||||
|
Reload privilege tables now? [Y/n] y
|
||||||
|
... Success!
|
||||||
|
|
||||||
|
Cleaning up...
|
||||||
|
|
||||||
|
All done! If you've completed all of the above steps, your MariaDB
|
||||||
|
installation should now be secure.
|
||||||
|
|
||||||
|
Thanks for using MariaDB!
|
||||||
|
```
|
||||||
|
## Create database for xenomporio
|
||||||
|
`mysql -u root -p`
|
||||||
|
|
||||||
|
```
|
||||||
|
Welcome to the MariaDB monitor. Commands end with ; or \g.
|
||||||
|
Your MariaDB connection id is 41
|
||||||
|
Server version: 10.6.7-MariaDB-2ubuntu1 Ubuntu 22.04
|
||||||
|
|
||||||
|
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
|
||||||
|
|
||||||
|
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
|
||||||
|
|
||||||
|
MariaDB [(none)]> CREATE DATABASE xenomporio;
|
||||||
|
Query OK, 1 row affected (0.001 sec)
|
||||||
|
|
||||||
|
MariaDB [(none)]> CREATE USER 'xenomporio'@'localhost' IDENTIFIED BY 'enteryourpasswordhere';
|
||||||
|
Query OK, 0 rows affected (0.015 sec)
|
||||||
|
|
||||||
|
MariaDB [(none)]> GRANT ALL PRIVILEGES ON xenomporio.* TO 'xenomporio'@'localhost' WITH GRANT OPTION;
|
||||||
|
Query OK, 0 rows affected (0.012 sec)
|
||||||
|
|
||||||
|
MariaDB [(none)]> FLUSH PRIVILEGES;
|
||||||
|
Query OK, 0 rows affected (0.002 sec)
|
||||||
|
|
||||||
|
MariaDB [(none)]> quit
|
||||||
|
Bye
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
You can test your database like this:
|
||||||
|
`mysql -u xenomporio -p`
|
||||||
|
|
||||||
|
```
|
||||||
|
Enter password:
|
||||||
|
Welcome to the MariaDB monitor. Commands end with ; or \g.
|
||||||
|
Your MariaDB connection id is 44
|
||||||
|
Server version: 10.6.7-MariaDB-2ubuntu1 Ubuntu 22.04
|
||||||
|
|
||||||
|
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
|
||||||
|
|
||||||
|
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
|
||||||
|
|
||||||
|
MariaDB [(none)]> show databases;
|
||||||
|
+--------------------+
|
||||||
|
| Database |
|
||||||
|
+--------------------+
|
||||||
|
| information_schema |
|
||||||
|
| xenomporio |
|
||||||
|
+--------------------+
|
||||||
|
2 rows in set (0.001 sec)
|
||||||
|
|
||||||
|
MariaDB [(none)]> quit
|
||||||
|
Bye
|
||||||
|
```
|
||||||
|
## --> Reset your server
|
||||||
|
|
||||||
|
Continue with [Xenomporio Installation](INSTALL.md)
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
class Config
|
class Config
|
||||||
{
|
{
|
||||||
/** @var string */
|
/** @var string */
|
||||||
public $updateHost = 'update.xentral.biz';
|
public $updateHost = 'removed.upgrade.host';
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,114 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
include(dirname(__FILE__)."/../conf/main.conf.php");
|
||||||
|
include(dirname(__FILE__)."/../phpwf/plugins/class.mysql.php");
|
||||||
|
include(dirname(__FILE__)."/../www/lib/imap.inc.php");
|
||||||
|
include(dirname(__FILE__)."/../www/lib/class.erpapi.php");
|
||||||
|
|
||||||
|
class app_t {
|
||||||
|
var $DB;
|
||||||
|
var $user;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
// ende debug
|
||||||
|
|
||||||
|
/*
|
||||||
|
$debugfile = "/var/www/html/Xenomporio/debug.txt";
|
||||||
|
|
||||||
|
function file_append($filename,$text) {
|
||||||
|
$oldtext = file_get_contents($filename);
|
||||||
|
file_put_contents($filename,$oldtext.$text);
|
||||||
|
}
|
||||||
|
|
||||||
|
file_put_contents($debugfile,"1");
|
||||||
|
*/
|
||||||
|
|
||||||
|
if(empty($app)){
|
||||||
|
$app = new app_t();
|
||||||
|
}
|
||||||
|
$DEBUG = 0;
|
||||||
|
|
||||||
|
if(empty($app->Conf)){
|
||||||
|
$conf = new Config();
|
||||||
|
$app->Conf = $conf;
|
||||||
|
}
|
||||||
|
if(empty($app->DB) || empty($app->DB->connection)){
|
||||||
|
$app->DB = new DB($app->Conf->WFdbhost, $app->Conf->WFdbname, $app->Conf->WFdbuser, $app->Conf->WFdbpass, null, $app->Conf->WFdbport);
|
||||||
|
}
|
||||||
|
if(empty($app->erp)){
|
||||||
|
if(class_exists('erpAPICustom')){
|
||||||
|
$erp = new erpAPICustom($app);
|
||||||
|
}else{
|
||||||
|
$erp = new erpAPI($app);
|
||||||
|
}
|
||||||
|
$app->erp = $erp;
|
||||||
|
}
|
||||||
|
$app->String = new WawiString();
|
||||||
|
if(class_exists('RemoteCustom'))
|
||||||
|
{
|
||||||
|
$app->remote = new RemoteCustom($app);
|
||||||
|
}else{
|
||||||
|
$app->remote = new Remote($app);
|
||||||
|
}
|
||||||
|
$app->Secure = new Secure($app);
|
||||||
|
$app->User = new User($app);
|
||||||
|
if(!defined('FPDF_FONTPATH'))
|
||||||
|
{
|
||||||
|
define('FPDF_FONTPATH',dirname(__DIR__) . '/www/lib/pdf/font/');
|
||||||
|
}
|
||||||
|
|
||||||
|
$cronjobname = 'autoversand_manuell';
|
||||||
|
|
||||||
|
$mutex = $app->DB->Select(
|
||||||
|
"SELECT MAX(`mutex`) FROM `prozessstarter` WHERE (`parameter` = '".$cronjobname."')"
|
||||||
|
);
|
||||||
|
if($mutex){
|
||||||
|
$app->DB->Update(
|
||||||
|
"UPDATE `prozessstarter`
|
||||||
|
SET `mutexcounter`=`mutexcounter`+1
|
||||||
|
WHERE `mutex` = 1 AND (`parameter` = '".$cronjobname."')"
|
||||||
|
);
|
||||||
|
|
||||||
|
file_append($debugfile,"MUTEX");
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$app->DB->Update(
|
||||||
|
"UPDATE `prozessstarter` SET `mutex`='1', `mutexcounter` = 0 WHERE (`parameter` = '".$cronjobname."')"
|
||||||
|
);
|
||||||
|
|
||||||
|
// START APPLICATION
|
||||||
|
|
||||||
|
$objAuftrag = $app->loadModule('auftrag');
|
||||||
|
if($objAuftrag == null || !method_exists($objAuftrag, 'AuftragVersand')) {
|
||||||
|
$app->erp->LogFile($cronjobname." failed. Error while loading module 'auftrag'.");
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
$pendingorders = $app->DB->SelectArr(
|
||||||
|
"SELECT id
|
||||||
|
FROM auftrag AS a
|
||||||
|
WHERE a.id!='' AND (a.belegnr!=0 OR a.belegnr!='')
|
||||||
|
AND a.status='freigegeben' AND a.cronjobkommissionierung > 0"
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!is_null($pendingorders)) {
|
||||||
|
|
||||||
|
$processed_orders_num = 0;
|
||||||
|
foreach ($pendingorders as $pendingorder) {
|
||||||
|
/* Process each order */
|
||||||
|
|
||||||
|
if($objAuftrag->AuftragVersand($pendingorder['id'],true)) { // Ignore shipdate -> The order has been marked, send it
|
||||||
|
$processed_orders_num++;
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
// Limit to 10 per call
|
||||||
|
if ($processed_orders_num > 10) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// END APPLICATION
|
||||||
|
|
||||||
|
$app->DB->Update("UPDATE prozessstarter SET mutex = 0 , mutexcounter = 0, letzteausfuerhung = now() WHERE (parameter = '".$cronjobname."' ) AND aktiv = 1");
|
||||||
@@ -0,0 +1,212 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Fetch all mails for accounts with ticket function
|
||||||
|
* Create tickets or sort mails to existing tickets
|
||||||
|
*/
|
||||||
|
|
||||||
|
use Xentral\Components\Logger\Logger;
|
||||||
|
use Xentral\Components\MailClient\MailClientFactory;
|
||||||
|
use Xentral\Modules\SystemMailClient\MailClientConfigProvider;
|
||||||
|
use Xentral\Modules\SystemMailer\Service\EmailAccountGateway;
|
||||||
|
use Xentral\Modules\Ticket\Importer\TicketFormatter;
|
||||||
|
use Xentral\Modules\Ticket\Task\TicketImportHelperFactory;
|
||||||
|
|
||||||
|
$DEBUG = 0;
|
||||||
|
|
||||||
|
|
||||||
|
$debugfile = "/var/www/html/Xenomporio/debug.txt";
|
||||||
|
|
||||||
|
function file_append($filename,$text) {
|
||||||
|
$oldtext = file_get_contents($filename);
|
||||||
|
file_put_contents($filename,$oldtext.$text);
|
||||||
|
}
|
||||||
|
|
||||||
|
file_put_contents($debugfile,"0");
|
||||||
|
|
||||||
|
/** @var ApplicationCore $app */
|
||||||
|
|
||||||
|
$erp = $app->erp;
|
||||||
|
$conf = $app->Conf;
|
||||||
|
|
||||||
|
/** @var Logger $logger */
|
||||||
|
$logger = $app->Container->get('Logger');
|
||||||
|
|
||||||
|
$cronjobname = 'tickets';
|
||||||
|
/*
|
||||||
|
$mutex = $app->DB->Select(
|
||||||
|
"SELECT MAX(`mutex`) FROM `prozessstarter` WHERE (`parameter` = '".$cronjobname."')"
|
||||||
|
);
|
||||||
|
if($mutex){
|
||||||
|
$app->DB->Update(
|
||||||
|
"UPDATE `prozessstarter`
|
||||||
|
SET `mutexcounter`=`mutexcounter`+1
|
||||||
|
WHERE `mutex` = 1 AND (`parameter` = '".$cronjobname."')"
|
||||||
|
);
|
||||||
|
|
||||||
|
file_append($debugfile,"MUTEX");
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$app->DB->Update(
|
||||||
|
"UPDATE `prozessstarter` SET `mutex`='1', `mutexcounter` = 0 WHERE (`parameter` = '".$cronjobname."')"
|
||||||
|
);
|
||||||
|
*/
|
||||||
|
|
||||||
|
// get all email Accounts that have the ticket system active
|
||||||
|
/** @var EmailAccountGateway $accountGateway */
|
||||||
|
$accountGateway = $app->Container->get('EmailAccountGateway');
|
||||||
|
$accounts = $accountGateway->getAccountsWithTicketActive();
|
||||||
|
|
||||||
|
file_append($debugfile,"Accs:".count($accounts).";");
|
||||||
|
|
||||||
|
|
||||||
|
// only load services if there is at least one account to import (performance)
|
||||||
|
$ticketModule = null;
|
||||||
|
$factory = null;
|
||||||
|
$configProvider = null;
|
||||||
|
$formatHelper = null;
|
||||||
|
$importHelperFactory = null;
|
||||||
|
if(!empty($accounts)){
|
||||||
|
/** @var Ticket $ticketModule */
|
||||||
|
$ticketModule = $app->erp->LoadModul('ticket');
|
||||||
|
/** @var MailClientFactory $factory */
|
||||||
|
$factory = $app->Container->get('MailClientFactory');
|
||||||
|
/** @var MailClientConfigProvider $configProvider */
|
||||||
|
$configProvider = $app->Container->get('MailClientConfigProvider');
|
||||||
|
/** @var TicketFormatter $formatHelper */
|
||||||
|
$formatHelper = $app->Container->get('TicketFormatter');
|
||||||
|
/** @var TicketImportHelperFactory $importHelperFactory */
|
||||||
|
$importHelperFactory = $app->Container->get('TicketImportHelperFactory');
|
||||||
|
}
|
||||||
|
|
||||||
|
$totalEmailsImportCount = 0;
|
||||||
|
foreach ($accounts as $account) {
|
||||||
|
$logger->debug(
|
||||||
|
'Start imap ticket import for {email}',
|
||||||
|
['email' => $account->getEmailAddress(), 'account' => $account]
|
||||||
|
);
|
||||||
|
|
||||||
|
file_append($debugfile,"Account ".$account->getemailAddress());
|
||||||
|
|
||||||
|
// create mail client
|
||||||
|
try {
|
||||||
|
$mailConfig = $configProvider->createImapConfigFromAccount($account);
|
||||||
|
$mailClient = $factory->createImapClient($mailConfig);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$logger->error('Failed to create email client', ['error' => (string)$e, 'account' => $account]);
|
||||||
|
|
||||||
|
file_append($debugfile,"Failed 1");
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
file_append($debugfile,"Connect to ".."SSL: ".$configProvider->isSslEnabled()." auth ".getAuthType()."\n");
|
||||||
|
|
||||||
|
// connect mail client
|
||||||
|
try {
|
||||||
|
try {
|
||||||
|
$mailClient->connect();
|
||||||
|
|
||||||
|
file_append($debugfile,"Meh");
|
||||||
|
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$logger->error('Error during imap connection', ['error' => (string)$e, 'account' => $account]);
|
||||||
|
|
||||||
|
file_append($debugfile,"Error ".(string)$e);
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
file_append($debugfile,"2");
|
||||||
|
|
||||||
|
// connet to INBOX folder
|
||||||
|
try {
|
||||||
|
$mailClient->selectFolder('INBOX');
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$logger->error('Failed to select INBOX folder', ['error' => (string)$e, 'account' => $account]);
|
||||||
|
|
||||||
|
|
||||||
|
file_append($debugfile,"Failed 2");
|
||||||
|
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$projectId = $account->getProjectId() > 0 ? $account->getProjectId() : 1;
|
||||||
|
$delete_msg = 0;
|
||||||
|
$daysold = $account->getBackupDeleteAfterDays();
|
||||||
|
|
||||||
|
// determine search criteria for new messages
|
||||||
|
$datet = '2012-12-24';
|
||||||
|
if ($account->getImportStartDateAsString() !== '0000-00-00') {
|
||||||
|
$datesince = date('d-M-Y', strtotime($account->getImportStartDateAsString()));
|
||||||
|
$criteria = 'UNSEEN SINCE ' . $datesince;
|
||||||
|
} else {
|
||||||
|
$criteria = 'UNSEEN';
|
||||||
|
}
|
||||||
|
|
||||||
|
file_append($debugfile,"3");
|
||||||
|
|
||||||
|
// search new messages
|
||||||
|
try {
|
||||||
|
$searchResult = $mailClient->searchMessages($criteria);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$logger->error('Error during imap search', ['exception' => $e]);
|
||||||
|
|
||||||
|
file_append($debugfile,"Failed 3");
|
||||||
|
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$logger->debug('unread emails to import: {message_count}', ['message_count' => count($searchResult)]);
|
||||||
|
|
||||||
|
// set mutex if there is more than 5 emails to import
|
||||||
|
if (count($searchResult) > 5) {
|
||||||
|
$app->DB->Update(
|
||||||
|
"UPDATE `prozessstarter`
|
||||||
|
SET `mutex`=1, `mutexcounter` = 0, `letzteausfuerhung` = NOW()
|
||||||
|
WHERE (`parameter` = '".$cronjobname."')"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
$importer = $importHelperFactory->create($mailClient, $account, $projectId);
|
||||||
|
$insertedMailsCount = $importer->importMessages($searchResult);
|
||||||
|
$totalEmailsImportCount += $insertedMailsCount;
|
||||||
|
|
||||||
|
// set mutex if the total amount of imported emails is more than 10
|
||||||
|
if ($totalEmailsImportCount > 10) {
|
||||||
|
$app->DB->Update(
|
||||||
|
"UPDATE `prozessstarter`
|
||||||
|
SET `mutex`=1, `mutexcounter` = 0, `letzteausfuerhung` = NOW()
|
||||||
|
WHERE (`parameter` = '".$cronjobname."')"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$mailClient->expunge();
|
||||||
|
$mailClient->disconnect();
|
||||||
|
|
||||||
|
if (
|
||||||
|
method_exists($app->erp, 'canRunCronjob')
|
||||||
|
&& !$app->erp->canRunCronjob(['supportmails', 'tickets'])
|
||||||
|
) {
|
||||||
|
|
||||||
|
$logger->error('Tickets error');
|
||||||
|
|
||||||
|
file_append($debugfile,"Failed 5");
|
||||||
|
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$app->DB->Update(
|
||||||
|
"UPDATE `prozessstarter`
|
||||||
|
SET `mutex`=1, `mutexcounter` = 0, `letzteausfuerhung` = NOW()
|
||||||
|
WHERE (`parameter` = '".$cronjobname."')"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$app->DB->Update(
|
||||||
|
"UPDATE `prozessstarter` SET `mutex`=0,`mutexcounter`=0 WHERE (`parameter` = '".$cronjobname."')"
|
||||||
|
);
|
||||||
|
|
||||||
|
file_append($debugfile,"END");
|
||||||
@@ -10365,7 +10365,7 @@ CREATE TABLE IF NOT EXISTS `proformarechnung_protokoll` (
|
|||||||
CREATE TABLE IF NOT EXISTS `projekt` (
|
CREATE TABLE IF NOT EXISTS `projekt` (
|
||||||
`id` int(10) NOT NULL AUTO_INCREMENT,
|
`id` int(10) NOT NULL AUTO_INCREMENT,
|
||||||
`name` text NOT NULL,
|
`name` text NOT NULL,
|
||||||
`abkuerzung` text NOT NULL,
|
`abkuerzung` varchar(128) NOT NULL,
|
||||||
`verantwortlicher` text NOT NULL,
|
`verantwortlicher` text NOT NULL,
|
||||||
`beschreibung` text NOT NULL,
|
`beschreibung` text NOT NULL,
|
||||||
`sonstiges` text NOT NULL,
|
`sonstiges` text NOT NULL,
|
||||||
|
|||||||
|
After Width: | Height: | Size: 80 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 116 KiB |
|
After Width: | Height: | Size: 71 KiB |
|
After Width: | Height: | Size: 74 KiB |
|
After Width: | Height: | Size: 147 KiB |
@@ -2089,7 +2089,7 @@ public function NavigationHooks(&$menu)
|
|||||||
// @refactor FileLock Komponente
|
// @refactor FileLock Komponente
|
||||||
function ProzessUnlock($fp)
|
function ProzessUnlock($fp)
|
||||||
{
|
{
|
||||||
if(!$fp)return;
|
if(gettype($fp) != 'resource') return;
|
||||||
fflush($fp); // leere Ausgabepuffer bevor die Sperre frei gegeben wird
|
fflush($fp); // leere Ausgabepuffer bevor die Sperre frei gegeben wird
|
||||||
flock($fp, LOCK_UN); // Gib Sperre frei
|
flock($fp, LOCK_UN); // Gib Sperre frei
|
||||||
fclose($fp);
|
fclose($fp);
|
||||||
@@ -7018,12 +7018,28 @@ title: 'Abschicken',
|
|||||||
|
|
||||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Produktion','produktion','list');
|
$navarray['menu']['admin'][$menu]['sec'][] = array('Produktion','produktion','list');
|
||||||
|
|
||||||
$navarray['menu']['admin'][++$menu]['first'] = array('Wareneingang','wareneingang','paketannahme');
|
$navarray['menu']['admin'][++$menu]['first'] = array('Lager','lager','list');
|
||||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Paket Annahme','wareneingang','paketannahme');
|
$navarray['menu']['admin'][$menu]['sec'][] = array('Wareneingang','wareneingang','list');
|
||||||
|
$navarray['menu']['admin'][$menu]['sec'][] = array('Lieferschein','lieferschein','list');
|
||||||
if($this->Firmendaten("wareneingang_gross")=="1"){
|
$navarray['menu']['admin'][$menu]['sec'][] = array('Lagerverwaltung','lager','list');
|
||||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Paket Distribution', 'wareneingang', 'distribution');
|
if($this->ModulVorhanden('lagermobil')) {
|
||||||
|
$navarray['menu']['admin'][$menu]['sec'][] = array('Mobile Lagerverwaltung','lagermobil','list');
|
||||||
}
|
}
|
||||||
|
if($this->ModulVorhanden('multiorderpicking')) {
|
||||||
|
$navarray['menu']['admin'][$menu]['sec'][] = array('Multiorder-Picking','multiorderpicking','list');
|
||||||
|
}
|
||||||
|
$navarray['menu']['admin'][$menu]['sec'][] = array('Reservierungen','lager','reservierungen');
|
||||||
|
$navarray['menu']['admin'][$menu]['sec'][] = array('Inventur','inventur','list');
|
||||||
|
$navarray['menu']['admin'][$menu]['sec'][] = array('Versandzentrum','versanderzeugen','offene');
|
||||||
|
$navarray['menu']['admin'][$menu]['sec'][] = array('Produktionszentrum','produktionszentrum','list');
|
||||||
|
$navarray['menu']['admin'][$menu]['sec'][] = array('Kommissionieraufkleber','kommissionieraufkleber','list');
|
||||||
|
|
||||||
|
$navarray['menu']['admin'][$menu]['sec'][] = array('Mindesthaltbarkeit','mhdwarning','list');
|
||||||
|
|
||||||
|
$navarray['menu']['admin'][$menu]['sec'][] = array('Lagermindestmengen','lagermindestmengen','list');
|
||||||
|
$navarray['menu']['admin'][$menu]['sec'][] = array('Artikelkontingente','artikelkontingente','list');
|
||||||
|
$navarray['menu']['admin'][$menu]['sec'][] = array('Ein- und auslagern','lager','bucheneinlagern');
|
||||||
|
$navarray['menu']['admin'][$menu]['sec'][] = array('Zwischenlager','lager','buchenzwischenlager');
|
||||||
|
|
||||||
$navarray['menu']['admin'][++$menu]['first'] = array('Buchhaltung','rechnung','list');
|
$navarray['menu']['admin'][++$menu]['first'] = array('Buchhaltung','rechnung','list');
|
||||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Rechnungen','rechnung','list');
|
$navarray['menu']['admin'][$menu]['sec'][] = array('Rechnungen','rechnung','list');
|
||||||
@@ -7085,28 +7101,6 @@ title: 'Abschicken',
|
|||||||
|
|
||||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Etikettendrucker','etikettendrucker','list');
|
$navarray['menu']['admin'][$menu]['sec'][] = array('Etikettendrucker','etikettendrucker','list');
|
||||||
|
|
||||||
$navarray['menu']['admin'][++$menu]['first'] = array('Lager','lager','list');
|
|
||||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Lieferschein','lieferschein','list');
|
|
||||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Lagerverwaltung','lager','list');
|
|
||||||
if($this->ModulVorhanden('lagermobil')) {
|
|
||||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Mobile Lagerverwaltung','lagermobil','list');
|
|
||||||
}
|
|
||||||
if($this->ModulVorhanden('multiorderpicking')) {
|
|
||||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Multiorder-Picking','multiorderpicking','list');
|
|
||||||
}
|
|
||||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Reservierungen','lager','reservierungen');
|
|
||||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Inventur','inventur','list');
|
|
||||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Versandzentrum','versanderzeugen','offene');
|
|
||||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Produktionszentrum','produktionszentrum','list');
|
|
||||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Kommissionieraufkleber','kommissionieraufkleber','list');
|
|
||||||
|
|
||||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Mindesthaltbarkeit','mhdwarning','list');
|
|
||||||
|
|
||||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Lagermindestmengen','lagermindestmengen','list');
|
|
||||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Artikelkontingente','artikelkontingente','list');
|
|
||||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Ein- und auslagern','lager','bucheneinlagern');
|
|
||||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Zwischenlager','lager','buchenzwischenlager');
|
|
||||||
|
|
||||||
$navarray['menu']['admin'][++$menu]['first'] = array('System','rechnung','list');
|
$navarray['menu']['admin'][++$menu]['first'] = array('System','rechnung','list');
|
||||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Einstellungen','einstellungen','list');
|
$navarray['menu']['admin'][$menu]['sec'][] = array('Einstellungen','einstellungen','list');
|
||||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Online-Shops / Marktplätze','onlineshops','list');
|
$navarray['menu']['admin'][$menu]['sec'][] = array('Online-Shops / Marktplätze','onlineshops','list');
|
||||||
@@ -18981,14 +18975,14 @@ function SendPaypalFromAuftrag($auftrag, $test = false)
|
|||||||
$dbformat = 1;
|
$dbformat = 1;
|
||||||
$id = $value;
|
$id = $value;
|
||||||
if($id > 0){
|
if($id > 0){
|
||||||
$abkuerzung = $this->app->DB->Select("SELECT bezeichnung FROM steuerregelngruppe WHERE id='$id' LIMIT 1");
|
// Removed, table does not exist $abkuerzung = $this->app->DB->Select("SELECT bezeichnung FROM steuerregelngruppe WHERE id='$id' LIMIT 1");
|
||||||
}else{
|
}else{
|
||||||
$abkuerzung = '';
|
$abkuerzung = '';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$dbformat = 0;
|
$dbformat = 0;
|
||||||
$value = $this->app->DB->real_escape_string($value);
|
$value = $this->app->DB->real_escape_string($value);
|
||||||
$id = $this->app->DB->Select("SELECT id FROM steuerregelngruppe WHERE bezeichnung = '$value' ORDER BY aktiv = 1 DESC LIMIT 1");
|
// Removed, table does not exist $id = $this->app->DB->Select("SELECT id FROM steuerregelngruppe WHERE bezeichnung = '$value' ORDER BY aktiv = 1 DESC LIMIT 1");
|
||||||
if($id <=0) $id=0;
|
if($id <=0) $id=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -22154,19 +22148,17 @@ function Gegenkonto($ust_befreit,$ustid='', $doctype = '', $doctypeId = 0)
|
|||||||
function GetGeschaeftsBriefText($subjekt,$sprache='',$projekt='',$dokument='',$dokumentid=0)
|
function GetGeschaeftsBriefText($subjekt,$sprache='',$projekt='',$dokument='',$dokumentid=0)
|
||||||
{
|
{
|
||||||
|
|
||||||
$dbcheck = $this->app->DB->Select("SHOW TABLES LIKE '$dokument'");
|
$text = '';
|
||||||
|
if ($dokument != '') {
|
||||||
if ($dbcheck) {
|
$dbcheck = $this->app->DB->Select("SHOW TABLES LIKE '$dokument'");
|
||||||
$abweichend = $this->app->DB->Select("SELECT abweichendebezeichnung FROM $dokument WHERE id='$dokumentid' LIMIT 1");
|
if (!empty($dbcheck)) {
|
||||||
|
$abweichend = $this->app->DB->Select("SELECT abweichendebezeichnung FROM $dokument WHERE id='$dokumentid' LIMIT 1");
|
||||||
|
}
|
||||||
|
if($abweichend>0 && !preg_match('/_Abweichend/',$subjekt))
|
||||||
|
{
|
||||||
|
$text = $this->GetGeschaeftsBriefText($subjekt."_Abweichend",$sprache,$projekt,$dokument,$dokumentid);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if($abweichend>0 && !preg_match('/_Abweichend/',$subjekt))
|
|
||||||
{
|
|
||||||
$text = $this->GetGeschaeftsBriefText($subjekt."_Abweichend",$sprache,$projekt,$dokument,$dokumentid);
|
|
||||||
}else{
|
|
||||||
$text = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if($text=='')
|
if($text=='')
|
||||||
{
|
{
|
||||||
@@ -22200,14 +22192,16 @@ function Gegenkonto($ust_befreit,$ustid='', $doctype = '', $doctypeId = 0)
|
|||||||
function GetGeschaeftsBriefBetreff($subjekt,$sprache="",$projekt="",$dokument="",$dokumentid=0)
|
function GetGeschaeftsBriefBetreff($subjekt,$sprache="",$projekt="",$dokument="",$dokumentid=0)
|
||||||
{
|
{
|
||||||
|
|
||||||
$dbcheck = $this->app->DB->Select("SHOW TABLES LIKE '$dokument'");
|
$text = '';
|
||||||
|
if ($dokument != '') {
|
||||||
if ($dbcheck) {
|
$dbcheck = $this->app->DB->Select("SHOW TABLES LIKE '$dokument'");
|
||||||
$abweichend = $this->app->DB->Select("SELECT abweichendebezeichnung FROM $dokument WHERE id='$dokumentid' LIMIT 1");
|
if ($dbcheck) {
|
||||||
}
|
$abweichend = $this->app->DB->Select("SELECT abweichendebezeichnung FROM $dokument WHERE id='$dokumentid' LIMIT 1");
|
||||||
if($abweichend>0 && !preg_match('/_Abweichend/',$subjekt))
|
}
|
||||||
{
|
if($abweichend>0 && !preg_match('/_Abweichend/',$subjekt))
|
||||||
$text = $this->GetGeschaeftsBriefBetreff($subjekt."_Abweichend",$sprache,$projekt,$dokument,$dokumentid);
|
{
|
||||||
|
$text = $this->GetGeschaeftsBriefBetreff($subjekt."_Abweichend",$sprache,$projekt,$dokument,$dokumentid);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if($text=="")
|
if($text=="")
|
||||||
@@ -32659,7 +32653,6 @@ function MailSendFinal($from,$from_name,$to,$to_name,$betreff,$text,$files="",$p
|
|||||||
$sendmail_error
|
$sendmail_error
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if($sysMailerSent === false) {
|
if($sysMailerSent === false) {
|
||||||
$this->app->erp->LogFile("Mailer Error: " . $sendmail_error);
|
$this->app->erp->LogFile("Mailer Error: " . $sendmail_error);
|
||||||
$this->MailLogFile($from,$from_name,$to,$to_name,$betreff,$text,$files,$projekt,$signature,$cc,$bcc,$system);
|
$this->MailLogFile($from,$from_name,$to,$to_name,$betreff,$text,$files,$projekt,$signature,$cc,$bcc,$system);
|
||||||
@@ -32673,7 +32666,7 @@ function MailSendFinal($from,$from_name,$to,$to_name,$betreff,$text,$files="",$p
|
|||||||
}
|
}
|
||||||
// schreiben in post ausgang
|
// schreiben in post ausgang
|
||||||
$this->MailLogFile($from,$from_name,$to,$to_name,$betreff,$text,$files,$projekt,$signature,$cc,$bcc,$system);
|
$this->MailLogFile($from,$from_name,$to,$to_name,$betreff,$text,$files,$projekt,$signature,$cc,$bcc,$system);
|
||||||
$imap_aktiv = $this->app->DB->Select("SELECT imap_sentfolder_aktiv FROM emailbackup WHERE email='".$fromm."' AND imap_sentfolder!='' AND geloescht!=1 LIMIT 1");
|
$imap_aktiv = $this->app->DB->Select("SELECT imap_sentfolder_aktiv FROM emailbackup WHERE email='".$from."' AND imap_sentfolder!='' AND geloescht!=1 LIMIT 1");
|
||||||
if($imap_aktiv=="1" && !preg_match("/Xentral Kopie/",$to_name) && !preg_match("/WaWision Kopie/",$to_name))
|
if($imap_aktiv=="1" && !preg_match("/Xentral Kopie/",$to_name) && !preg_match("/WaWision Kopie/",$to_name))
|
||||||
{
|
{
|
||||||
$imap_data = $this->app->DB->SelectRow("SELECT * FROM emailbackup WHERE email='".$from."' AND geloescht!=1 LIMIT 1");
|
$imap_data = $this->app->DB->SelectRow("SELECT * FROM emailbackup WHERE email='".$from."' AND geloescht!=1 LIMIT 1");
|
||||||
@@ -32693,7 +32686,9 @@ function MailSendFinal($from,$from_name,$to,$to_name,$betreff,$text,$files="",$p
|
|||||||
$client = $clientProvider->createMailClientFromAccount($account);
|
$client = $clientProvider->createMailClientFromAccount($account);
|
||||||
$client->connect();
|
$client->connect();
|
||||||
$client->appendMessage($imapCopyMessage, $account->getImapOutgoingFolder());
|
$client->appendMessage($imapCopyMessage, $account->getImapOutgoingFolder());
|
||||||
} catch (Exception $e) {}
|
} catch (Exception $e) {
|
||||||
|
$this->app->erp->LogFile("Mailer Error: " . (string)$e);
|
||||||
|
}
|
||||||
|
|
||||||
$this->app->erp->LogFile("IMAP Ausgang FROM ".$from." S $server P $port T $type SP $server_path B ".$imap_data['benutzername']." SF ".$imap_data['imap_sentfolder']);
|
$this->app->erp->LogFile("IMAP Ausgang FROM ".$from." S $server P $port T $type SP $server_path B ".$imap_data['benutzername']." SF ".$imap_data['imap_sentfolder']);
|
||||||
}
|
}
|
||||||
@@ -33040,20 +33035,23 @@ function MailSendFinal($from,$from_name,$to,$to_name,$betreff,$text,$files="",$p
|
|||||||
if($field === 'mysql55') {
|
if($field === 'mysql55') {
|
||||||
return '1';
|
return '1';
|
||||||
}
|
}
|
||||||
if(strpos($field,'next') !== false)
|
|
||||||
|
if(strpos($field,'next') != false)
|
||||||
{
|
{
|
||||||
$firmendatenid = (int)$this->app->DB->Select('SELECT MAX(id) FROM firmendaten LIMIT 1');
|
$firmendatenid = (int)$this->app->DB->Select('SELECT MAX(id) FROM firmendaten LIMIT 1');
|
||||||
|
|
||||||
if ($this->app->DB->Select("SHOW COLUMNS FROM firmendaten LIKE '$field'")) {
|
if ($this->app->DB->Select("SHOW COLUMNS FROM firmendaten LIKE '$field'")) {
|
||||||
$firmendaten_value = $this->app->DB->Select(
|
$firmendaten_value = $this->app->DB->Select(
|
||||||
sprintf(
|
sprintf(
|
||||||
'SELECT `%s` FROM firmendaten WHERE id = %d LIMIT 1',
|
'SELECT `%s` FROM firmendaten WHERE id = %d LIMIT 1',
|
||||||
$field, $firmendatenid)
|
$field, $firmendatenid)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!$this->app->DB->error()) {
|
if(!$this->app->DB->error()) {
|
||||||
return $firmendaten_value;
|
return $firmendaten_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
$firmendaten_value = $this->app->DB->SelectRow(
|
$firmendaten_value = $this->app->DB->SelectRow(
|
||||||
sprintf('SELECT id, wert FROM firmendaten_werte WHERE `name` = \'%s\' LIMIT 1', $field)
|
sprintf('SELECT id, wert FROM firmendaten_werte WHERE `name` = \'%s\' LIMIT 1', $field)
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -204,9 +204,6 @@ class Auftrag extends GenAuftrag
|
|||||||
$heading[] = 'Monitor';
|
$heading[] = 'Monitor';
|
||||||
$heading[] = 'Menü';
|
$heading[] = 'Menü';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$parameter = $this->app->User->GetParameter('table_filter_auftrag');
|
$parameter = $this->app->User->GetParameter('table_filter_auftrag');
|
||||||
$parameter = base64_decode($parameter);
|
$parameter = base64_decode($parameter);
|
||||||
$parameter = json_decode($parameter, true);
|
$parameter = json_decode($parameter, true);
|
||||||
@@ -507,10 +504,7 @@ class Auftrag extends GenAuftrag
|
|||||||
$paramsArray[] = "a.email LIKE '%".$parameter['email']."%' ";
|
$paramsArray[] = "a.email LIKE '%".$parameter['email']."%' ";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* XXX */
|
|
||||||
if(isset($parameter['datumVon']) && !empty($parameter['datumVon'])) {
|
if(isset($parameter['datumVon']) && !empty($parameter['datumVon'])) {
|
||||||
|
|
||||||
$paramsArray[] = "a.datum >= '" . date('Y-m-d',strtotime($parameter['datumVon']))."' ";
|
$paramsArray[] = "a.datum >= '" . date('Y-m-d',strtotime($parameter['datumVon']))."' ";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -582,6 +576,142 @@ class Auftrag extends GenAuftrag
|
|||||||
$moreinfo = true; // EXTRA
|
$moreinfo = true; // EXTRA
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
case 'auftraegeoffeneauto':
|
||||||
|
|
||||||
|
$allowed['auftraegeoffeneauto'] = array('list');
|
||||||
|
|
||||||
|
$heading = array('','', 'Auftrag', 'Vom', 'Kd-Nr.', 'Kunde','Lieferdatum', 'Land', 'Zahlung', 'Betrag (brutto)','Monitor','Menü');
|
||||||
|
$width = array('1%','1%','1%', '10%', '10%', '10%', '31%', '5%', '1%', '1%', '1%', '1%');
|
||||||
|
$findcols = array('open','a.belegnr', 'a.belegnr', 'a.datum', 'a.lieferantkdrnummer', 'a.name','a.tatsaechlicheslieferdatum', 'a.land', 'a.zahlungsweise', 'a.gesamtsumme');
|
||||||
|
|
||||||
|
$defaultorder = 1;
|
||||||
|
$defaultorderdesc = 0;
|
||||||
|
|
||||||
|
$menu = "";
|
||||||
|
|
||||||
|
$sql = "SELECT
|
||||||
|
a.id,
|
||||||
|
'<img src=./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' AS `open`,
|
||||||
|
CONCAT('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',a.id,'\" />') AS `auswahl`,
|
||||||
|
IF(a.fastlane=1,CONCAT(a.belegnr,' (FL)'),a.belegnr) AS `belegnr`,
|
||||||
|
DATE_FORMAT(a.datum,'%d.%m.%Y') AS `datum`,
|
||||||
|
lieferantkdrnummer,
|
||||||
|
name,
|
||||||
|
DATE_FORMAT(a.tatsaechlicheslieferdatum,'%d.%m.%Y') as `tatsaechlicheslieferdatum`,
|
||||||
|
land,
|
||||||
|
zahlungsweise,
|
||||||
|
gesamtsumme,
|
||||||
|
(" . $this->app->YUI->IconsSQL() . ") AS icons,
|
||||||
|
a.id
|
||||||
|
FROM
|
||||||
|
auftrag a";
|
||||||
|
|
||||||
|
$where = "a.status = 'freigegeben' AND a.cronjobkommissionierung = 0 AND a.lager_ok=1 AND a.porto_ok=1 AND a.ust_ok=1 AND a.vorkasse_ok=1 AND a.nachnahme_ok=1 AND a.autoversand=1 AND a.check_ok=1 AND a.kreditlimit_ok=1 AND a.liefersperre_ok=1"; // liefertermin_ok special treatment
|
||||||
|
|
||||||
|
$count = "SELECT count(DISTINCT id) FROM auftrag a WHERE $where";
|
||||||
|
|
||||||
|
// $groupby = "";
|
||||||
|
|
||||||
|
$moreinfo = true; // Allow drop down details
|
||||||
|
|
||||||
|
// Toggle filters
|
||||||
|
$this->app->Tpl->Add('JQUERYREADY', "$('#fastlane').click( function() { fnFilterColumn1( 0 ); } );");
|
||||||
|
$this->app->Tpl->Add('JQUERYREADY', "$('#auftrag_kundemehrereauftraege').click( function() { fnFilterColumn2( 0 ); } );");
|
||||||
|
$this->app->Tpl->Add('JQUERYREADY', "$('#auftrag_lieferdatum').click( function() { fnFilterColumn3( 0 ); } );");
|
||||||
|
|
||||||
|
for ($r = 1;$r <= 3;$r++) {
|
||||||
|
$this->app->Tpl->Add('JAVASCRIPT', '
|
||||||
|
function fnFilterColumn' . $r . ' ( i )
|
||||||
|
{
|
||||||
|
if(oMoreData' . $r . $name . '==1)
|
||||||
|
oMoreData' . $r . $name . ' = 0;
|
||||||
|
else
|
||||||
|
oMoreData' . $r . $name . ' = 1;
|
||||||
|
|
||||||
|
$(\'#' . $name . '\').dataTable().fnFilter(
|
||||||
|
\'\',
|
||||||
|
i,
|
||||||
|
0,0
|
||||||
|
);
|
||||||
|
}
|
||||||
|
');
|
||||||
|
}
|
||||||
|
|
||||||
|
$more_data1 = $this->app->Secure->GetGET("more_data1");
|
||||||
|
|
||||||
|
if ($more_data1 == 1) {
|
||||||
|
$where .= " AND a.fastlane=1";
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
|
||||||
|
$more_data3 = $this->app->Secure->GetGET("more_data3");
|
||||||
|
if ($more_data3 == 1) {
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$where .= " AND a.liefertermin_ok=1";
|
||||||
|
}
|
||||||
|
|
||||||
|
$more_data2 = $this->app->Secure->GetGET("more_data2");
|
||||||
|
if ($more_data2 == 1) $where .= " AND a.adresse in (SELECT adresse FROM `auftrag` a WHERE ".$where." GROUP BY adresse HAVING count(id) > 1)"; // More than 1 order per address
|
||||||
|
|
||||||
|
// END Toggle filters
|
||||||
|
|
||||||
|
$menu .= "<a href=\"index.php?module=auftrag&action=edit&id=%value%\">";
|
||||||
|
$menu .= "<img src=\"themes/{$this->app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">";
|
||||||
|
$menu .= "</a>";
|
||||||
|
|
||||||
|
$moreinfo = true; // Minidetail active
|
||||||
|
$menucol = 9; // For minidetail
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 'auftraegeoffeneautowartend':
|
||||||
|
|
||||||
|
// Show list for cronjob commissioning
|
||||||
|
$allowed['auftraegeoffeneautowartend'] = array('list');
|
||||||
|
|
||||||
|
$heading = array('','', 'Auftrag', 'Vom', 'Kd-Nr.', 'Kunde','Lieferdatum', 'Land', 'Zahlung', 'Betrag (brutto)','Monitor','Menü');
|
||||||
|
$width = array('1%','1%','1%', '10%', '10%', '10%', '31%', '5%', '1%', '1%', '1%', '1%', '1%','0%','0%');
|
||||||
|
$findcols = array('open','a.belegnr', 'a.belegnr', 'a.datum', 'a.lieferantkdrnummer', 'a.name','a.tatsaechlicheslieferdatum', 'a.land', 'a.zahlungsweise', 'a.gesamtsumme');
|
||||||
|
|
||||||
|
$defaultorder = 1;
|
||||||
|
$defaultorderdesc = 0;
|
||||||
|
|
||||||
|
$menu = "";
|
||||||
|
|
||||||
|
$sql = "SELECT
|
||||||
|
a.id,
|
||||||
|
'<img src=./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' AS `open`,
|
||||||
|
CONCAT('<input type=\"checkbox\" name=\"auswahlcronjob[]\" value=\"',a.id,'\" />') AS `auswahl`,
|
||||||
|
IF(a.fastlane=1,CONCAT(a.belegnr,' (FL)'),a.belegnr) AS `belegnr`,
|
||||||
|
DATE_FORMAT(a.datum,'%d.%m.%Y') AS `datum`,
|
||||||
|
lieferantkdrnummer,
|
||||||
|
name,
|
||||||
|
DATE_FORMAT(a.tatsaechlicheslieferdatum,'%d.%m.%Y') as `tatsaechlicheslieferdatum`,
|
||||||
|
land,
|
||||||
|
zahlungsweise,
|
||||||
|
gesamtsumme,
|
||||||
|
(" . $this->app->YUI->IconsSQL() . ") AS icons,
|
||||||
|
a.id
|
||||||
|
FROM
|
||||||
|
auftrag a";
|
||||||
|
|
||||||
|
$status_where = 'a.cronjobkommissionierung > 0';
|
||||||
|
|
||||||
|
$where = "a.status = 'freigegeben' AND ".$status_where;
|
||||||
|
// $groupby = "";
|
||||||
|
|
||||||
|
$moreinfo = true; // Allow drop down details
|
||||||
|
|
||||||
|
$count = "SELECT count(DISTINCT id) FROM auftrag a WHERE $where";
|
||||||
|
|
||||||
|
$menu .= "<a href=\"index.php?module=auftrag&action=edit&id=%value%\">";
|
||||||
|
$menu .= "<img src=\"themes/{$this->app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">";
|
||||||
|
$menu .= "</a>";
|
||||||
|
$menucol = 9; // For moredata
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
$erg = [];
|
$erg = [];
|
||||||
foreach($erlaubtevars as $k => $v) {
|
foreach($erlaubtevars as $k => $v) {
|
||||||
@@ -666,6 +796,8 @@ class Auftrag extends GenAuftrag
|
|||||||
$this->app->ActionHandler("einkaufspreise", "AuftragEinkaufspreise");
|
$this->app->ActionHandler("einkaufspreise", "AuftragEinkaufspreise");
|
||||||
$this->app->ActionHandler("alsfreigegeben", "AuftragAlsfreigegeben");
|
$this->app->ActionHandler("alsfreigegeben", "AuftragAlsfreigegeben");
|
||||||
$this->app->ActionHandler("steuer", "AuftragSteuer");
|
$this->app->ActionHandler("steuer", "AuftragSteuer");
|
||||||
|
$this->app->ActionHandler("berechnen", "Auftraegeberechnen");
|
||||||
|
|
||||||
$this->app->DefaultActionHandler("list");
|
$this->app->DefaultActionHandler("list");
|
||||||
|
|
||||||
$id = $this->app->Secure->GetGET('id');
|
$id = $this->app->Secure->GetGET('id');
|
||||||
@@ -2852,7 +2984,6 @@ class Auftrag extends GenAuftrag
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$vorkasse_ok = $this->app->DB->Select("SELECT vorkasse_ok FROM auftrag WHERE id='$id' LIMIT 1");
|
$vorkasse_ok = $this->app->DB->Select("SELECT vorkasse_ok FROM auftrag WHERE id='$id' LIMIT 1");
|
||||||
$zahlungsweise = $auftragArr[0]['zahlungsweise'];
|
$zahlungsweise = $auftragArr[0]['zahlungsweise'];
|
||||||
if($vorkasse_ok==1){
|
if($vorkasse_ok==1){
|
||||||
@@ -3151,7 +3282,7 @@ class Auftrag extends GenAuftrag
|
|||||||
if($suchwort!="")
|
if($suchwort!="")
|
||||||
{
|
{
|
||||||
$table->Query("SELECT DATE_FORMAT(a.datum,'%d.%m.%Y') as datum, a.name, a.belegnr as auftrag, adr.kundennummer, a.internet, a.plz, a.ort, a.strasse, a.zahlungsweise, a.status, a.id FROM auftrag a
|
$table->Query("SELECT DATE_FORMAT(a.datum,'%d.%m.%Y') as datum, a.name, a.belegnr as auftrag, adr.kundennummer, a.internet, a.plz, a.ort, a.strasse, a.zahlungsweise, a.status, a.id FROM auftrag a
|
||||||
LEFT JOIN adresse adr ON adr.id = a.adresse WHERE (a.name LIKE '%$suchwort%' OR a.email LIKE '%$suchwort%' OR a.plz LIKE '$suchwort%' OR a.internet LIKE '%$suchwort%' OR (adr.kundennummer='$suchwort' AND adr.kundennummer!=0)
|
LEFT JOIN adresse adr ON adr.id = b.adresse WHERE (a.name LIKE '%$suchwort%' OR a.email LIKE '%$suchwort%' OR a.plz LIKE '$suchwort%' OR a.internet LIKE '%$suchwort%' OR (adr.kundennummer='$suchwort' AND adr.kundennummer!=0)
|
||||||
OR (a.gesamtsumme='$suchwort' AND a.gesamtsumme!=0) OR (a.belegnr='$suchwort' AND a.belegnr!='' ))");
|
OR (a.gesamtsumme='$suchwort' AND a.gesamtsumme!=0) OR (a.belegnr='$suchwort' AND a.belegnr!='' ))");
|
||||||
} else {
|
} else {
|
||||||
if($name!="")
|
if($name!="")
|
||||||
@@ -5203,6 +5334,10 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
|||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
order processed true or false
|
||||||
|
*/
|
||||||
|
|
||||||
public function AuftragVersand($id='', $ignoriereliefertermin = false, &$ergebnis = null, $paketmarkedrucken = false)
|
public function AuftragVersand($id='', $ignoriereliefertermin = false, &$ergebnis = null, $paketmarkedrucken = false)
|
||||||
{
|
{
|
||||||
if(!$this->kommissionierung)
|
if(!$this->kommissionierung)
|
||||||
@@ -5720,10 +5855,7 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
|||||||
$this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable;
|
$this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable;
|
||||||
}
|
}
|
||||||
|
|
||||||
if($autodruckrechnungstufe1mail && $rechnung > 0)
|
// Rechnungsmail was here, but now at the end to prioritise processing and printing over mail
|
||||||
{
|
|
||||||
$this->app->erp->Rechnungsmail($rechnung);
|
|
||||||
}
|
|
||||||
|
|
||||||
// auftrag abschliessen
|
// auftrag abschliessen
|
||||||
$this->app->DB->Update("UPDATE auftrag SET status='abgeschlossen',schreibschutz='1' WHERE id='$id' LIMIT 1");
|
$this->app->DB->Update("UPDATE auftrag SET status='abgeschlossen',schreibschutz='1' WHERE id='$id' LIMIT 1");
|
||||||
@@ -5841,6 +5973,12 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
|||||||
unlink($tmpfile);
|
unlink($tmpfile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Send the invoice as last step
|
||||||
|
if($autodruckrechnungstufe1mail && $rechnung > 0)
|
||||||
|
{
|
||||||
|
$this->app->erp->Rechnungsmail($rechnung);
|
||||||
|
}
|
||||||
|
|
||||||
$this->app->erp->RunHook('auftrag_versand_ende', 1, $id);
|
$this->app->erp->RunHook('auftrag_versand_ende', 1, $id);
|
||||||
|
|
||||||
// wenn per URL aufgerufen
|
// wenn per URL aufgerufen
|
||||||
@@ -5990,6 +6128,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=list','Übersicht');
|
||||||
$this->app->erp->MenuEintrag('index.php?module=auftrag&action=create','Neuen Auftrag anlegen');
|
$this->app->erp->MenuEintrag('index.php?module=auftrag&action=create','Neuen Auftrag anlegen');
|
||||||
|
$this->app->erp->MenuEintrag('index.php?module=auftrag&action=versandzentrum','Versandzentrum');
|
||||||
|
|
||||||
if(strlen($backurl)>5){
|
if(strlen($backurl)>5){
|
||||||
$this->app->erp->MenuEintrag("$backurl", 'Zurück zur Übersicht');
|
$this->app->erp->MenuEintrag("$backurl", 'Zurück zur Übersicht');
|
||||||
@@ -6013,7 +6152,7 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
|||||||
'SELECT MAX(`cronjobkommissionierung`) FROM `auftrag`'
|
'SELECT MAX(`cronjobkommissionierung`) FROM `auftrag`'
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->app->DB->Insert(
|
/* $this->app->DB->Insert(
|
||||||
"INSERT INTO `cronjob_kommissionierung` (`id`, `bezeichnung`)
|
"INSERT INTO `cronjob_kommissionierung` (`id`, `bezeichnung`)
|
||||||
VALUES ({$nextCronjobCommissionId}, '{$description}') "
|
VALUES ({$nextCronjobCommissionId}, '{$description}') "
|
||||||
);
|
);
|
||||||
@@ -6024,7 +6163,7 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
|||||||
"UPDATE `cronjob_kommissionierung`
|
"UPDATE `cronjob_kommissionierung`
|
||||||
SET `bezeichnung` = '{$description}'
|
SET `bezeichnung` = '{$description}'
|
||||||
WHERE `id` = {$nextCronjobCommissionId}"
|
WHERE `id` = {$nextCronjobCommissionId}"
|
||||||
);
|
);*/
|
||||||
|
|
||||||
return $nextCronjobCommissionId;
|
return $nextCronjobCommissionId;
|
||||||
}
|
}
|
||||||
@@ -6033,6 +6172,9 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
|||||||
{
|
{
|
||||||
$this->AuftraguebersichtMenu();
|
$this->AuftraguebersichtMenu();
|
||||||
$targetMessage = 'AUTOVERSANDBERECHNEN';
|
$targetMessage = 'AUTOVERSANDBERECHNEN';
|
||||||
|
|
||||||
|
$this->app->Tpl->Add('MESSAGE','<div class="info">Aufträge an Versand übergeben mit automatischem Druck und Mailversand.</div>');
|
||||||
|
|
||||||
$autoshipmentEnabled = true;
|
$autoshipmentEnabled = true;
|
||||||
$this->app->erp->RunHook('OrderAutoShipment', 2, $targetMessage, $autoshipmentEnabled);
|
$this->app->erp->RunHook('OrderAutoShipment', 2, $targetMessage, $autoshipmentEnabled);
|
||||||
|
|
||||||
@@ -6066,7 +6208,7 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
|||||||
|
|
||||||
// AUFTAEGE ABSCHLIESSEN!
|
// AUFTAEGE ABSCHLIESSEN!
|
||||||
$submit = $this->app->Secure->GetPOST('submit');
|
$submit = $this->app->Secure->GetPOST('submit');
|
||||||
$auftraegemarkiert = $this->app->Secure->GetPOST('auftraegemarkiert');
|
$auftraegemarkiert = $this->app->Secure->GetPOST('auswahlcronjob');
|
||||||
$entfernen = $this->app->Secure->GetPOST('entfernen');
|
$entfernen = $this->app->Secure->GetPOST('entfernen');
|
||||||
$bezeichnung = (string)$this->app->Secure->GetPOST('bezeichnung');
|
$bezeichnung = (string)$this->app->Secure->GetPOST('bezeichnung');
|
||||||
if($entfernen && $auftraegemarkiert){
|
if($entfernen && $auftraegemarkiert){
|
||||||
@@ -6077,9 +6219,11 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
|||||||
}
|
}
|
||||||
|
|
||||||
if($this->app->Secure->GetPOST('ausfuehren')){
|
if($this->app->Secure->GetPOST('ausfuehren')){
|
||||||
|
|
||||||
$drucker = $this->app->Secure->GetPOST('seldruckerversand');
|
$drucker = $this->app->Secure->GetPOST('seldruckerversand');
|
||||||
$aktion = $this->app->Secure->GetPOST('auftrag_versandauswahl');
|
$aktion = $this->app->Secure->GetPOST('auftrag_versandauswahl');
|
||||||
$auftraegemarkiert = $this->app->Secure->GetPOST('auftraegemarkiert');
|
// $auftraegemarkiert = $this->app->Secure->GetPOST('auftraegemarkiert');
|
||||||
|
$auftraegemarkiert = $this->app->Secure->GetPOST('auswahl');
|
||||||
$bezeichnung = (string)$this->app->Secure->GetPOST('bezeichnung');
|
$bezeichnung = (string)$this->app->Secure->GetPOST('bezeichnung');
|
||||||
|
|
||||||
$selectedIds = [];
|
$selectedIds = [];
|
||||||
@@ -6098,6 +6242,12 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
|||||||
|
|
||||||
switch($aktion){
|
switch($aktion){
|
||||||
case 'versandstarten':
|
case 'versandstarten':
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If one of the cronjobs is active, orders only get marked. Sending will be handled by the cronjob.
|
||||||
|
* If not, sending will be done here.
|
||||||
|
*/
|
||||||
|
|
||||||
$cronjobActive = $this->app->DB->Select(
|
$cronjobActive = $this->app->DB->Select(
|
||||||
"SELECT ps.id
|
"SELECT ps.id
|
||||||
FROM `prozessstarter` AS `ps`
|
FROM `prozessstarter` AS `ps`
|
||||||
@@ -6134,6 +6284,9 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
|||||||
//sort($auftraegemarkiert);
|
//sort($auftraegemarkiert);
|
||||||
}
|
}
|
||||||
if($check){
|
if($check){
|
||||||
|
|
||||||
|
/* Send all to cronjob */
|
||||||
|
|
||||||
$maxcronjobkommissionierung = $this->createCronjobCommission((string)$bezeichnung);
|
$maxcronjobkommissionierung = $this->createCronjobCommission((string)$bezeichnung);
|
||||||
|
|
||||||
$cauftraegemarkiert = $auftraegemarkiert ? count($auftraegemarkiert) : 0;
|
$cauftraegemarkiert = $auftraegemarkiert ? count($auftraegemarkiert) : 0;
|
||||||
@@ -6150,6 +6303,9 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
||||||
|
/* Process here now */
|
||||||
|
|
||||||
$cauftraegemarkiert = $auftraegemarkiert ? count($auftraegemarkiert) : 0;
|
$cauftraegemarkiert = $auftraegemarkiert ? count($auftraegemarkiert) : 0;
|
||||||
for ($i = 0; $i < $cauftraegemarkiert; $i++) {
|
for ($i = 0; $i < $cauftraegemarkiert; $i++) {
|
||||||
$projekt = (int)$this->app->DB->Select(
|
$projekt = (int)$this->app->DB->Select(
|
||||||
@@ -6166,9 +6322,20 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$this->kommissionierung = $this->app->erp->GetNextKommissionierung($bezeichnung);
|
$this->kommissionierung = $this->app->erp->GetNextKommissionierung($bezeichnung);
|
||||||
|
|
||||||
|
$processed_orders_num = 0;
|
||||||
|
|
||||||
foreach ($auftraege as $auftrag) {
|
foreach ($auftraege as $auftrag) {
|
||||||
$this->AuftragVersand($auftrag);
|
|
||||||
|
/* Process each order */
|
||||||
|
if($this->AuftragVersand($auftrag)) {
|
||||||
|
$processed_orders_num++;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->app->Tpl->Set('MESSAGE','<div class="info">'.$processed_orders_num.' Aufträge wurden verarbeitet.</div>');
|
||||||
|
|
||||||
if(empty($this->kommissionierung)) {
|
if(empty($this->kommissionierung)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -6271,42 +6438,36 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if($check || $cronjobActive) {
|
$unversendet = $this->app->DB->Select("SELECT count(a.id) FROM auftrag as a LEFT JOIN projekt p ON p.id=a.projekt WHERE a.id!='' AND (a.belegnr!=0 OR a.belegnr!='') AND a.status='freigegeben' AND a.inbearbeitung=0 AND a.nachlieferung!='1' AND a.autoversand='1' AND a.cronjobkommissionierung = 0 AND a.liefertermin_ok='1' AND kreditlimit_ok='1' AND liefersperre_ok='1'
|
||||||
$unversendet = $this->app->DB->Select("SELECT count(a.id) FROM auftrag as a LEFT JOIN projekt p ON p.id=a.projekt WHERE a.id!='' AND (a.belegnr!=0 OR a.belegnr!='') AND a.status='freigegeben' AND a.inbearbeitung=0 AND a.nachlieferung!='1' AND a.autoversand='1' AND a.cronjobkommissionierung = 0 AND a.liefertermin_ok='1' AND kreditlimit_ok='1' AND liefersperre_ok='1'
|
AND a.vorkasse_ok='1' AND a.porto_ok='1' AND a.lager_ok='1' AND a.check_ok='1' AND a.ust_ok='1' " . $this->app->erp->ProjektRechte('p.id', true, 'a.vertriebid'));
|
||||||
AND a.vorkasse_ok='1' AND a.porto_ok='1' AND a.lager_ok='1' AND a.check_ok='1' AND a.ust_ok='1' " . $this->app->erp->ProjektRechte('p.id', true, 'a.vertriebid'));
|
|
||||||
|
|
||||||
$warteschleife = $this->app->DB->Select("SELECT count(a.id) FROM auftrag as a LEFT JOIN projekt p ON p.id=a.projekt WHERE a.id!='' AND (a.belegnr!=0 OR a.belegnr!='') AND a.status='freigegeben' AND a.inbearbeitung=0 AND a.nachlieferung!='1' AND a.autoversand='1' AND a.liefertermin_ok='1' AND kreditlimit_ok='1' AND liefersperre_ok='1'
|
$warteschleife = $this->app->DB->Select("SELECT count(a.id) FROM auftrag as a LEFT JOIN projekt p ON p.id=a.projekt WHERE a.id!='' AND (a.belegnr!=0 OR a.belegnr!='') AND a.status='freigegeben' AND a.cronjobkommissionierung > 0 " . $this->app->erp->ProjektRechte('p.id', true, "a.vertriebid"));
|
||||||
AND a.vorkasse_ok='1' AND a.porto_ok='1' AND a.lager_ok='1' AND a.check_ok='1' AND a.ust_ok='1' AND a.cronjobkommissionierung > 0 " . $this->app->erp->ProjektRechte('p.id', true, "a.vertriebid"));
|
|
||||||
|
|
||||||
if($unversendet > 0) {
|
if($unversendet > 0) {
|
||||||
$unversendet ='('.$unversendet.')';
|
$unversendet ='('.$unversendet.')';
|
||||||
}
|
|
||||||
else {
|
|
||||||
$unversendet='';
|
|
||||||
}
|
|
||||||
if($warteschleife > 0) {
|
|
||||||
$warteschleife ='('.$warteschleife.')';
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$warteschleife='';
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->app->Tpl->Set('TABTEXT2','Unversendet '.$unversendet);
|
|
||||||
$this->app->Tpl->Set('TABTEXT3','Warteschleife '.$warteschleife);
|
|
||||||
$this->app->YUI->TableSearch('TAB3','auftraegeoffeneautowartend');
|
|
||||||
if($warteschleife > 0 && !$cronjobActive) {
|
|
||||||
$this->app->Tpl->Add(
|
|
||||||
'AUTOVERSANDBERECHNEN',
|
|
||||||
'<div class="warning">Der Prozessstarter "Autoversand Manuell" ist deaktivert,
|
|
||||||
es befinden sich aber Aufträge in der Warteschlange.
|
|
||||||
Bitte aktieren Sie den Prozessstarter
|
|
||||||
oder entfernen Sie die betreffenden Aufträge in der Warteschlange</div>'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else{
|
else {
|
||||||
$this->app->Tpl->Set('VORTABS3UEBERSCHRIFT','<!--');
|
$unversendet='';
|
||||||
$this->app->Tpl->Set('NACHTABS3UEBERSCHRIFT','-->');
|
}
|
||||||
|
if($warteschleife > 0) {
|
||||||
|
$warteschleife ='('.$warteschleife.')';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$warteschleife='';
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->app->Tpl->Set('TABTEXT1','Bereit '.$unversendet);
|
||||||
|
$this->app->Tpl->Set('TABTEXT2','Ausstehend '.$warteschleife);
|
||||||
|
|
||||||
|
if($warteschleife != '' && is_null($cronjobActive)) {
|
||||||
|
|
||||||
|
$this->app->Tpl->Add(
|
||||||
|
'MESSAGE',
|
||||||
|
'<div class="warning">Der Prozessstarter "Autoversand Manuell" ist deaktivert,
|
||||||
|
es befinden sich aber ausstehende Aufträge in der Warteschlange.
|
||||||
|
Bitte aktieren Sie den Prozessstarter
|
||||||
|
oder entfernen Sie die betreffenden Aufträge in der Warteschlange</div>'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->app->Tpl->Set('SELDRUCKERVERSAND', $this->app->erp->GetSelectDrucker($this->app->User->GetParameter('rechnung_list_drucker')));
|
$this->app->Tpl->Set('SELDRUCKERVERSAND', $this->app->erp->GetSelectDrucker($this->app->User->GetParameter('rechnung_list_drucker')));
|
||||||
@@ -6315,13 +6476,15 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
|||||||
$this->app->Tpl->Parse('PAGE','auftraguebersicht.tpl');
|
$this->app->Tpl->Parse('PAGE','auftraguebersicht.tpl');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if($this->app->erp->RechteVorhanden('auftrag','berechnen'))
|
// if($this->app->erp->RechteVorhanden('auftrag','berechnen'))
|
||||||
{
|
{
|
||||||
$this->app->Tpl->Set('AUTOBERECHNEN','<input type="button" class="btnGreen" value="Auto-Versand berechnen" onclick="window.location.href=\'index.php?module=auftrag&action=berechnen\'">');
|
$this->app->Tpl->Set('AUTOBERECHNEN','<input type="button" class="btnGreen" value="Auto-Versand berechnen" onclick="window.location.href=\'index.php?module=auftrag&action=berechnen\'">');
|
||||||
}else{
|
// }else{
|
||||||
$this->app->Tpl->Set('AUTOBERECHNEN2','');
|
// $this->app->Tpl->Set('AUTOBERECHNEN2','');
|
||||||
}
|
}
|
||||||
$infolink = '<a href="https://xentral.biz/helpdesk/kurzanleitung-ablauf-des-versands-von-auftraegen#nav-autoversand-mit-prozessstarter-berechnen" target="_blank">(Information)</a>';
|
$infolink = '<a href="https://xentral.biz/helpdesk/kurzanleitung-ablauf-des-versands-von-auftraegen#nav-autoversand-mit-prozessstarter-berechnen" target="_blank">(Information)</a>';
|
||||||
|
|
||||||
|
/*
|
||||||
$last_order_calc = $this->app->erp->GetKonfiguration('last_order_calc');
|
$last_order_calc = $this->app->erp->GetKonfiguration('last_order_calc');
|
||||||
if(!empty($last_order_calc)) {
|
if(!empty($last_order_calc)) {
|
||||||
$this->app->Tpl->Add('AUTOVERSANDBERECHNEN','<div class="info">Die letzte Berechnung der Auftragsampeln war am '.$last_order_calc.'. '.$infolink.' [AUTOBERECHNEN]</div>');
|
$this->app->Tpl->Add('AUTOVERSANDBERECHNEN','<div class="info">Die letzte Berechnung der Auftragsampeln war am '.$last_order_calc.'. '.$infolink.' [AUTOBERECHNEN]</div>');
|
||||||
@@ -6329,10 +6492,12 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
|||||||
else{
|
else{
|
||||||
$this->app->Tpl->Add('AUTOVERSANDBERECHNEN','<div class="info">Die letzte Berechnung der Auftragsampeln wurde noch nicht ermittelt. '.$infolink.' [AUTOBERECHNEN]</div>');
|
$this->app->Tpl->Add('AUTOVERSANDBERECHNEN','<div class="info">Die letzte Berechnung der Auftragsampeln wurde noch nicht ermittelt. '.$infolink.' [AUTOBERECHNEN]</div>');
|
||||||
}
|
}
|
||||||
$this->app->YUI->TableSearch('TAB2','auftraegeoffeneauto');
|
*/
|
||||||
$this->app->Tpl->Parse('PAGE','auftrag_versandzentrum.tpl');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
$this->app->YUI->TableSearch('TAB1','auftraegeoffeneauto', 'show','','',basename(__FILE__), __CLASS__);
|
||||||
|
$this->app->YUI->TableSearch('TAB2','auftraegeoffeneautowartend', 'show','','',basename(__FILE__), __CLASS__);
|
||||||
|
$this->app->Tpl->Parse('PAGE','auftrag_versandzentrum.tpl');
|
||||||
|
} // Ende
|
||||||
|
|
||||||
public function AuftragList()
|
public function AuftragList()
|
||||||
{
|
{
|
||||||
@@ -6778,11 +6943,25 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
|||||||
$this->app->Tpl->Add('LAENDER',$laenderStr);
|
$this->app->Tpl->Add('LAENDER',$laenderStr);
|
||||||
$this->app->Tpl->Parse('TAB1',"auftrag_table_filter.tpl");
|
$this->app->Tpl->Parse('TAB1',"auftrag_table_filter.tpl");
|
||||||
|
|
||||||
$this->app->YUI->TableSearch('TAB2',"auftraegeoffeneauto");
|
|
||||||
$this->app->YUI->TableSearch('TAB1','auftraege', 'show','','',basename(__FILE__), __CLASS__);
|
$this->app->YUI->TableSearch('TAB1','auftraege', 'show','','',basename(__FILE__), __CLASS__);
|
||||||
|
// $this->app->YUI->TableSearch('TAB2',"auftraegeoffeneauto");
|
||||||
$this->app->YUI->TableSearch('TAB3',"auftraegeoffene");
|
$this->app->YUI->TableSearch('TAB3',"auftraegeoffene");
|
||||||
|
|
||||||
$this->app->Tpl->Set('SELDRUCKER', $this->app->erp->GetSelectDrucker($this->app->User->GetParameter('rechnung_list_drucker')));
|
$this->app->Tpl->Set('SELDRUCKER', $this->app->erp->GetSelectDrucker($this->app->User->GetParameter('rechnung_list_drucker')));
|
||||||
|
|
||||||
|
|
||||||
|
$inbearbeitung = $this->app->DB->Select("SELECT count(a.id) FROM auftrag a WHERE a.id!='' AND a.status='angelegt'");
|
||||||
|
|
||||||
|
if($inbearbeitung > 0) {
|
||||||
|
$inbearbeitung =' ('.$inbearbeitung.')';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$inbearbeitung='';
|
||||||
|
}
|
||||||
|
|
||||||
|
// $this->app->Tpl->Set('MESSAGE','<div class="error">Cronjob order processing not yet implemented!</div>');
|
||||||
|
|
||||||
|
$this->app->Tpl->Set('TABTEXT5',$inbearbeitung);
|
||||||
|
|
||||||
$this->app->YUI->TableSearch('TAB5',"auftraegeinbearbeitung");
|
$this->app->YUI->TableSearch('TAB5',"auftraegeinbearbeitung");
|
||||||
$this->app->erp->RunHook('auftraguebersicht_filter', 0);
|
$this->app->erp->RunHook('auftraguebersicht_filter', 0);
|
||||||
$this->app->Tpl->Parse('PAGE',"auftraguebersicht.tpl");
|
$this->app->Tpl->Parse('PAGE',"auftraguebersicht.tpl");
|
||||||
@@ -6816,4 +6995,13 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Calculate order auto status for all open orders
|
||||||
|
*/
|
||||||
|
public function Auftraegeberechnen() {
|
||||||
|
$this->app->erp->AuftraegeBerechnen();
|
||||||
|
header('Location: index.php?module=auftrag&action=versandzentrum');
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,14 @@
|
|||||||
|
|
||||||
<div id="tabs">
|
<div id="tabs">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#tabs-2">[TABTEXT2]</a></li>
|
<li><a href="#tabs-1">[TABTEXT1]</a></li>
|
||||||
[VORTABS3UEBERSCHRIFT]<li><a href="#tabs-3">[TABTEXT3]</a></li>[NACHTABS3UEBERSCHRIFT]
|
[VORTABS2UEBERSCHRIFT]<li><a href="#tabs-2">[TABTEXT2]</a></li>[NACHTABS2UEBERSCHRIFT]
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
<div id="tabs-1">
|
||||||
<div id="tabs-2">
|
[MESSAGE]
|
||||||
[AUTOVERSANDBERECHNEN]
|
[AUTOVERSANDBERECHNEN]
|
||||||
|
<form action="#tabs-1" id="frmauto" name="frmauto" method="post">
|
||||||
<form action="#tabs-2" id="frmauto" name="frmauto" method="post">
|
|
||||||
|
|
||||||
<div class="filter-box filter-usersave">
|
<div class="filter-box filter-usersave">
|
||||||
<div class="filter-block filter-inline">
|
<div class="filter-block filter-inline">
|
||||||
<div class="filter-title">{|Filter|}</div>
|
<div class="filter-title">{|Filter|}</div>
|
||||||
@@ -34,13 +32,12 @@
|
|||||||
<input type="checkbox" id="auftrag_lieferdatum">
|
<input type="checkbox" id="auftrag_lieferdatum">
|
||||||
<span class="slider round"></span>
|
<span class="slider round"></span>
|
||||||
</label>
|
</label>
|
||||||
<label for="auftrag_lieferdatum">{|nur Aufträge mit zukünftigem Lieferdatum|}</label>
|
<label for="auftrag_lieferdatum">{|inkl. Aufträge mit zukünftigem Lieferdatum|}</label>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
[TAB1]
|
||||||
[TAB2]
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>Stapelverarbeitung</legend>
|
<legend>Stapelverarbeitung</legend>
|
||||||
<input type="checkbox" value="1" id="autoalle" checked="checked" /> alle markieren
|
<input type="checkbox" value="1" id="autoalle" checked="checked" /> alle markieren
|
||||||
@@ -59,32 +56,17 @@
|
|||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div id="tabs-3">
|
|
||||||
[VORTABS3UEBERSCHRIFT]
|
|
||||||
<form action="#tabs-3" method="post">
|
|
||||||
|
|
||||||
<div class="filter-box filter-usersave">
|
|
||||||
<div class="filter-block filter-inline">
|
|
||||||
<div class="filter-title">{|Filter|}</div>
|
|
||||||
<ul class="filter-list">
|
|
||||||
<li class="filter-item">
|
|
||||||
<label for="autoallewartend" class="switch">
|
|
||||||
<input type="checkbox" value="1" id="autoallewartend" checked="checked" />
|
|
||||||
<span class="slider round"></span>
|
|
||||||
</label>
|
|
||||||
<label for="autoallewartend">{|Alle|}</label>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
[TAB3]
|
<div id="tabs-2">
|
||||||
<table width="100%"><tr><td><input type="submit" value="Aufträge aus Liste entfernen" name="entfernen"></td>
|
[VORTABS2UEBERSCHRIFT]
|
||||||
|
<form action="#tabs-2" method="post">
|
||||||
|
[TAB2]
|
||||||
|
<table width="100%"><tr><td><input type="submit" value="Gewählte Aufträge zurücksetzen" name="entfernen"></td>
|
||||||
</tr></table>
|
</tr></table>
|
||||||
</form>
|
</form>
|
||||||
[NACHTABS3UEBERSCHRIFT]
|
[NACHTABS2UEBERSCHRIFT]
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ document.onkeydown = function(evt) {
|
|||||||
<div id="tabs">
|
<div id="tabs">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#tabs-1">{|Aufträge|}</a></li>
|
<li><a href="#tabs-1">{|Aufträge|}</a></li>
|
||||||
<li><a href="#tabs-5">{|in Bearbeitung|}</a></li>
|
<li><a href="#tabs-5">{|in Bearbeitung|}[TABTEXT5]</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<div id="tabs-1">
|
<div id="tabs-1">
|
||||||
|
|
||||||
@@ -113,10 +113,6 @@ document.onkeydown = function(evt) {
|
|||||||
<div id="tabs-5">
|
<div id="tabs-5">
|
||||||
[TAB5]
|
[TAB5]
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div id="lagermehrpopup" style="display:none;">
|
<div id="lagermehrpopup" style="display:none;">
|
||||||
<div id="lagermehrpopupinhalt">
|
<div id="lagermehrpopupinhalt">
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
<tr valign="top"><td><b>{|Nummer|}:</b></td><td>[NUMMER]</td></tr>
|
<tr valign="top"><td><b>{|Nummer|}:</b></td><td>[NUMMER]</td></tr>
|
||||||
[BILDERFASSENSTART]
|
[BILDERFASSENSTART]
|
||||||
<tr valign="top"><td><br></td><td align="center"></td></tr>
|
<tr valign="top"><td><br></td><td align="center"></td></tr>
|
||||||
<tr valign="top"><td><b>{|Bild erfassen|}:</b></td><td> <input name="wareneingangartikelbild" type="file" /></td></tr>
|
<tr valign="top"><td><b>{|Bild für Artikelstammdaten erfassen|}:</b></td><td> <input name="wareneingangartikelbild" type="file" /></td></tr>
|
||||||
<tr valign="top"><td><b>{|Bildtyp|}:</b></td><td><select name="bildtyp">[BILDTYPEN]</select></td></tr>
|
<tr valign="top"><td><b>{|Bildtyp|}:</b></td><td><select name="bildtyp">[BILDTYPEN]</select></td></tr>
|
||||||
[BILDERFASSENENDE]
|
[BILDERFASSENENDE]
|
||||||
<tr valign="top"><td><br></td><td align="center"></td></tr>
|
<tr valign="top"><td><br></td><td align="center"></td></tr>
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<div id="tabs-1">
|
||||||
|
[MESSAGE]
|
||||||
|
[TAB1]
|
||||||
|
[TAB1NEXT]
|
||||||
|
</div>
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
<tr valign="top" colspan="3">
|
<tr valign="top" colspan="3">
|
||||||
<td>
|
<td>
|
||||||
|
|
||||||
<div class="info">Der Artikel ist für einen Mitarbeiter.</div>
|
<div class="info">Dies ist kein Lagerartikel.</div>
|
||||||
[MESSAGE]
|
[MESSAGE]
|
||||||
<br><br>
|
<br><br>
|
||||||
<table width="60%" style="background-color: #fff; border: solid 1px #000;" align="center">
|
<table width="60%" style="background-color: #fff; border: solid 1px #000;" align="center">
|
||||||
@@ -15,12 +15,12 @@
|
|||||||
|
|
||||||
<table height="200" border="0" width="450">
|
<table height="200" border="0" width="450">
|
||||||
<tr valign="top"><td><b>Artikel:</b></td><td><u>[NAME]</u></td></tr>
|
<tr valign="top"><td><b>Artikel:</b></td><td><u>[NAME]</u></td></tr>
|
||||||
<tr valign="top"><td>Lieferant:</td><td>[LIEFERANT]</td></tr>
|
<!--<tr valign="top"><td>Lieferant:</td><td>[LIEFERANT]</td></tr> -->
|
||||||
<tr valign="top"><td><br></td><td align="center"></td></tr>
|
<tr valign="top"><td><br></td><td align="center"></td></tr>
|
||||||
<tr valign="top"><td><b>Bemerkung:</b></td><td><textarea cols="35" rows="2" name="bemerkung">[BEMERKUNG]</textarea>
|
<tr valign="top"><td><b>Bemerkung:</b></td><td><textarea cols="35" rows="2" name="bemerkung">[BEMERKUNG]</textarea>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
<tr valign="top"><td><br></td><td align="center"></td></tr>
|
<tr valign="top"><td><br></td><td align="center"></td></tr>
|
||||||
<tr valign="top"><td nowrap><b>1. Schritt:</b></td><td>Artikel zu Mitarbeiter [MITARBEITER] bringen
|
<tr valign="top"><td nowrap><b>Anmerkung:</b></td><td>Artikel zu Mitarbeiter [MITARBEITER] bringen
|
||||||
[DISPLAY_WARENEINGANG_RMA_HOOK1]
|
[DISPLAY_WARENEINGANG_RMA_HOOK1]
|
||||||
<tr valign="top"><td><br></td><td align="center"><input type="submit" name="submit" value="Speichern" /> <input type="button" onclick="window.location.href='index.php?module=wareneingang&action=distriinhalt&id=[ID]'" value="Abbrechen" /></td></tr>
|
<tr valign="top"><td><br></td><td align="center"><input type="submit" name="submit" value="Speichern" /> <input type="button" onclick="window.location.href='index.php?module=wareneingang&action=distriinhalt&id=[ID]'" value="Abbrechen" /></td></tr>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
@@ -15,34 +15,60 @@
|
|||||||
[TAB1START]
|
[TAB1START]
|
||||||
|
|
||||||
[MESSAGE1]
|
[MESSAGE1]
|
||||||
<div class="row">
|
<form action="" method="post">
|
||||||
<div class="row-height">
|
<div class="row">
|
||||||
<div class="col-xs-12 col-md-10 col-md-height">
|
<div class="row-height">
|
||||||
<div class="inside-white inside-full-height">
|
<div class="col-xs-12 col-md-10 col-md-height">
|
||||||
[TAB1]
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{|[LEGENDE]|}</legend>
|
||||||
|
<table>
|
||||||
|
<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>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="col-xs-12 col-md-2 col-md-height">
|
||||||
<div class="col-xs-12 col-md-2 col-md-height">
|
<div class="inside inside-full-height">
|
||||||
<div class="inside inside-full-height">
|
<fieldset>
|
||||||
<fieldset>
|
<legend>{|Aktionen|}</legend>
|
||||||
<legend>{|Aktionen|}</legend>
|
[BUTTONS]
|
||||||
[BUTTONS]
|
[BEFOREFRM]
|
||||||
[BEFOREFRM]
|
[AFTERFRM]
|
||||||
<form action="" method="post">
|
[DISTRIINHALTBUTTONS]
|
||||||
[AFTERFRM]
|
<input type="submit" name="abschliessen" id="btnabschliessen" class="btnGreenNew" value="Paketinhalt ist erfasst">
|
||||||
[DISTRIINHALTBUTTONS]
|
[BEFOREMANUELLERFASSEN]
|
||||||
<input type="submit" name="abschliessen" id="btnabschliessen" class="btnGreenNew" value="Paketinhalt ist erfasst">
|
<input type="submit" name="manuellerfassen" class="btnBlueNew" value="Artikel manuell erfassen">
|
||||||
[BEFOREMANUELLERFASSEN]
|
[AFTERMANUELLERFASSEN]
|
||||||
<input type="submit" name="manuellerfassen" class="btnBlueNew" value="Artikel manuell erfassen">
|
[BEFOREFRM]
|
||||||
[AFTERMANUELLERFASSEN]
|
[AFTERFRM]
|
||||||
[BEFOREFRM]
|
</fieldset>
|
||||||
</form>
|
</div>
|
||||||
[AFTERFRM]
|
|
||||||
</fieldset>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-12 col-md-10 col-md-height">
|
||||||
|
<div class="inside-white inside-full-height">
|
||||||
|
[TAB1]
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-12 col-md-10 col-md-height">
|
||||||
|
<div class="inside-white inside-full-height">
|
||||||
|
[TAB1_SECOND]
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
[TAB1ENDE]
|
[TAB1ENDE]
|
||||||
</div>
|
</div>
|
||||||
[AFTERTAB1]
|
[AFTERTAB1]
|
||||||
@@ -283,8 +283,8 @@ $width = array('10%'); // Fill out manually later
|
|||||||
$result[0]['email'],
|
$result[0]['email'],
|
||||||
$result[0]['angezeigtername'],
|
$result[0]['angezeigtername'],
|
||||||
'Xenomporio ERP: Testmail',
|
'Xenomporio ERP: Testmail',
|
||||||
'Dies ist eine Testmail',
|
'Dies ist eine Testmail für Account "'.$result[0]['email'].'".',
|
||||||
'',0,true,'','',
|
'',0,false,'','',
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
@@ -294,7 +294,7 @@ $width = array('10%'); // Fill out manually later
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$msg = $this->app->erp->base64_url_encode(
|
$msg = $this->app->erp->base64_url_encode(
|
||||||
'<div class="error">Die Testmail wurde nicht versendet: '.$this->app->erp->mail_error.'</div>'
|
'<div class="error">Fehler beim Versende der Testmail: '.$this->app->erp->mail_error.'</div>'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
$this->app->Location->execute("index.php?module=emailbackup&id=$id&action=edit&msg=$msg");
|
$this->app->Location->execute("index.php?module=emailbackup&id=$id&action=edit&msg=$msg");
|
||||||
|
|||||||
@@ -480,7 +480,7 @@ class Firmendaten {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$msg = $this->app->erp->base64_url_encode(
|
$msg = $this->app->erp->base64_url_encode(
|
||||||
'<div class="error">Die Testmail wurde nicht versendet: '.$this->app->erp->mail_error.'</div>'
|
'<div class="error">Fehler beim Versenden der Testmail: '.$this->app->erp->mail_error.'</div>'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
$this->app->Location->execute("index.php?module=firmendaten&action=edit&msg=$msg#tabs-4");
|
$this->app->Location->execute("index.php?module=firmendaten&action=edit&msg=$msg#tabs-4");
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ class Wareneingang
|
|||||||
$wareneingangauftragzubestellung = $this->app->erp->Firmendaten('wareneingangauftragzubestellung');
|
$wareneingangauftragzubestellung = $this->app->erp->Firmendaten('wareneingangauftragzubestellung');
|
||||||
if($wareneingangauftragzubestellung)
|
if($wareneingangauftragzubestellung)
|
||||||
{
|
{
|
||||||
$heading = array('Bestellnummer', 'Nummer', 'Bestellung', 'Beschreibung', 'Lieferdatum', 'Projekt', 'Menge', 'Geliefert', 'Offen', 'Auftrag', 'Menge', 'Aktion');
|
$heading = array('Lieferant-Art.-Nr.', 'Art.-Nummer', 'Bestellung', 'Beschreibung', 'Lieferdatum', 'Projekt', 'Menge', 'Geliefert', 'Offen', 'Auftrag', 'Menge', 'Aktion');
|
||||||
$width = array('5%', '5%', '5%', '30%', '5%', '5%', '5%', '5%', '5%', '5%', '5%', '5%');
|
$width = array('5%', '5%', '5%', '30%', '5%', '5%', '5%', '5%', '5%', '5%', '5%', '5%');
|
||||||
$findcols = array('bp.bestellnummer', 'art.nummer', 'b.belegnr',
|
$findcols = array('bp.bestellnummer', 'art.nummer', 'b.belegnr',
|
||||||
"CONCAT(art.name_de,'<br>Bei Lieferant: ',bp.bezeichnunglieferant,
|
"CONCAT(art.name_de,'<br>Bei Lieferant: ',bp.bezeichnunglieferant,
|
||||||
@@ -133,7 +133,7 @@ class Wareneingang
|
|||||||
IF(b.bestaetigteslieferdatum != '' AND b.bestaetigteslieferdatum IS NOT NULL AND b.bestaetigteslieferdatum != '0000-00-00', CONCAT('<br>Best. Lieferdatum: ',DATE_FORMAT(b.bestaetigteslieferdatum, '%d.%m.%Y')),'')
|
IF(b.bestaetigteslieferdatum != '' AND b.bestaetigteslieferdatum IS NOT NULL AND b.bestaetigteslieferdatum != '0000-00-00', CONCAT('<br>Best. Lieferdatum: ',DATE_FORMAT(b.bestaetigteslieferdatum, '%d.%m.%Y')),'')
|
||||||
)", "if(bp.lieferdatum,DATE_FORMAT(bp.lieferdatum,'%d.%m.%Y'),'sofort')", 'p.abkuerzung', 'bp.menge', 'bp.geliefert',"if((SELECT COUNT(auf2.id) FROM auftrag auf2 INNER JOIN auftrag_position ap2 ON auf2.id = ap2.auftrag WHERE bp.auftrag_position_id = ap2.id ) > 0,(SELECT auf2.belegnr FROM auftrag auf2 INNER JOIN auftrag_position ap2 ON auf2.id = ap2.auftrag WHERE bp.auftrag_position_id = ap2.id ORDER BY belegnr LIMIT 1),'-' )");
|
)", "if(bp.lieferdatum,DATE_FORMAT(bp.lieferdatum,'%d.%m.%Y'),'sofort')", 'p.abkuerzung', 'bp.menge', 'bp.geliefert',"if((SELECT COUNT(auf2.id) FROM auftrag auf2 INNER JOIN auftrag_position ap2 ON auf2.id = ap2.auftrag WHERE bp.auftrag_position_id = ap2.id ) > 0,(SELECT auf2.belegnr FROM auftrag auf2 INNER JOIN auftrag_position ap2 ON auf2.id = ap2.auftrag WHERE bp.auftrag_position_id = ap2.id ORDER BY belegnr LIMIT 1),'-' )");
|
||||||
}else{
|
}else{
|
||||||
$heading = array('Bestellnummer', 'Nummer', 'Bestellung', 'Beschreibung', 'Lieferdatum', 'Projekt', 'Menge', 'Geliefert', 'Offen', 'Aktion');
|
$heading = array('Lieferant-Art.-Nr.', 'Art.-Nummer', 'Bestellung', 'Beschreibung', 'Lieferdatum', 'Projekt', 'Menge', 'Geliefert', 'Offen', 'Aktion');
|
||||||
$width = array('5%', '5%', '5%', '30%', '5%', '5%', '5%', '5%', '5%', '5%');
|
$width = array('5%', '5%', '5%', '30%', '5%', '5%', '5%', '5%', '5%', '5%');
|
||||||
$findcols = array('bp.bestellnummer', 'art.nummer', 'b.belegnr',
|
$findcols = array('bp.bestellnummer', 'art.nummer', 'b.belegnr',
|
||||||
"CONCAT(art.name_de,'<br>Bei Lieferant: ',bp.bezeichnunglieferant,
|
"CONCAT(art.name_de,'<br>Bei Lieferant: ',bp.bezeichnunglieferant,
|
||||||
@@ -970,6 +970,124 @@ class Wareneingang
|
|||||||
LEFT JOIN lieferschein l ON lp.lieferschein=l.id LEFT JOIN projekt p ON l.projekt=p.id LEFT JOIN artikel a ON a.id=lp.artikel WHERE ($where)";
|
LEFT JOIN lieferschein l ON lp.lieferschein=l.id LEFT JOIN projekt p ON l.projekt=p.id LEFT JOIN artikel a ON a.id=lp.artikel WHERE ($where)";
|
||||||
$moreinfo = false;
|
$moreinfo = false;
|
||||||
break;
|
break;
|
||||||
|
case 'paketdistribution_list':
|
||||||
|
$allowed['paketdistribution_list'] = array('list');
|
||||||
|
/* $heading = array('bearbeiter', 'zeit', 'paketannahme', 'adresse', 'artikel', 'menge', 'vpe', 'etiketten', 'bemerkung', 'bestellung_position', 'logdatei', 'retoure_position', 'Menü');
|
||||||
|
$width = array('10%'); // Fill out manually later
|
||||||
|
|
||||||
|
$findcols = array('bearbeiter', 'zeit', 'paketannahme', 'adresse', 'artikel', 'menge', 'vpe', 'etiketten', 'bemerkung', 'bestellung_position', 'logdatei', 'retoure_position');
|
||||||
|
$searchsql = array('bearbeiter', 'zeit', 'paketannahme', 'adresse', 'artikel', 'menge', 'vpe', 'etiketten', 'bemerkung', 'bestellung_position', 'logdatei', 'retoure_position');
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
$heading = array('Lieferant-Art.-Nr.','Art.-Nummer','Bestellung', 'Beschreibung', 'Menge','Bemerkung','');
|
||||||
|
$width = array('5%', '5%', '5%', '30%', '5%','5%','45%');
|
||||||
|
|
||||||
|
$findcols = array('p.nummer','p.bestellbezug','p.name', 'p.menge','p.bemerkung');
|
||||||
|
$searchsql = array('p.nummer','p.name','p.bemerkung');
|
||||||
|
|
||||||
|
$defaultorder = 1;
|
||||||
|
$defaultorderdesc = 0;
|
||||||
|
|
||||||
|
/*$sql = "SELECT p.nummer,p.lieferantnummer, p.nummer, p.bestellbezug, p.name, p.menge, p.bemerkung from
|
||||||
|
(SELECT bestellung.belegnr as bestellbezug, bestellung_position.bestellnummer as lieferantnummer ,artikel.nummer as nummer, artikel.name_de as name, ".$this->app->erp->FormatMenge("sum(paketdistribution.menge)")." as menge, paketdistribution.bemerkung
|
||||||
|
FROM paketdistribution
|
||||||
|
INNER JOIN artikel ON artikel.id = paketdistribution.artikel
|
||||||
|
LEFT JOIN bestellung_position ON bestellung_position = bestellung_position.id
|
||||||
|
LEFT JOIN bestellung on bestellung_position.bestellung = bestellung.id
|
||||||
|
where paketannahme = $id GROUP BY bestellung_position, paketdistribution.artikel) as p";*/
|
||||||
|
|
||||||
|
$sql = "SELECT p.nummer,p.lieferantnummer, p.nummer, p.bestellbezug, p.name, p.menge, p.bemerkung from
|
||||||
|
(SELECT bestellung.belegnr as bestellbezug, bestellung_position.bestellnummer as lieferantnummer ,artikel.nummer as nummer, artikel.name_de as name, ".$this->app->erp->FormatMenge("paketdistribution.menge")." as menge, paketdistribution.bemerkung
|
||||||
|
FROM paketdistribution
|
||||||
|
INNER JOIN artikel ON artikel.id = paketdistribution.artikel
|
||||||
|
LEFT JOIN bestellung_position ON bestellung_position = bestellung_position.id
|
||||||
|
LEFT JOIN bestellung on bestellung_position.bestellung = bestellung.id
|
||||||
|
where paketannahme = $id) as p";
|
||||||
|
|
||||||
|
$where = "";
|
||||||
|
$count = "SELECT count(DISTINCT artikel) FROM paketdistribution p WHERE paketannahme = $id";
|
||||||
|
// $groupby = "";
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "paketannahme_list":
|
||||||
|
/* $allowed['paketdistribution_list'] = array('list');
|
||||||
|
$heading = array('bearbeiter', 'zeit', 'paketannahme', 'adresse', 'artikel', 'menge', 'vpe', 'etiketten', 'bemerkung', 'bestellung_position', 'logdatei', 'retoure_position', 'Menü');
|
||||||
|
$width = array('10%'); // Fill out manually later
|
||||||
|
|
||||||
|
$findcols = array('bearbeiter', 'zeit', 'paketannahme', 'adresse', 'artikel', 'menge', 'vpe', 'etiketten', 'bemerkung', 'bestellung_position', 'logdatei', 'retoure_position');
|
||||||
|
$searchsql = array('bearbeiter', 'zeit', 'paketannahme', 'adresse', 'artikel', 'menge', 'vpe', 'etiketten', 'bemerkung', 'bestellung_position', 'logdatei', 'retoure_position');
|
||||||
|
|
||||||
|
$defaultorder = 1;
|
||||||
|
$defaultorderdesc = 0;
|
||||||
|
|
||||||
|
$menu = "<table cellpadding=0 cellspacing=0><tr><td nowrap>" . "<a href=\"index.php?module=paketdistribution&action=edit&id=%value%\"><img src=\"./themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.png\" border=\"0\"></a> <a href=\"#\" onclick=DeleteDialog(\"index.php?module=paketdistribution&action=delete&id=%value%\");>" . "<img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"></a>" . "</td></tr></table>";
|
||||||
|
|
||||||
|
$sql = "SELECT id, bearbeiter, zeit, paketannahme, adresse, artikel, menge, vpe, etiketten, bemerkung, bestellung_position, logdatei, retoure_position, id FROM paketdistribution";
|
||||||
|
|
||||||
|
$where = "1";
|
||||||
|
$count = "SELECT count(DISTINCT id) FROM paketdistribution WHERE $where";
|
||||||
|
// $groupby = "";
|
||||||
|
*/
|
||||||
|
$allowed['paketannahme_list'] = array('list');
|
||||||
|
$heading = array('Paket-Nr.','Datum','Status','Name', 'Kunde', 'Lieferant','LS-Nr.','RE-Nr.', 'Bearbeiter','Bemerkung', 'Menü');
|
||||||
|
$width = array('5%','10%','10%','10%','10%','10%','10%','10%','10%'); // Fill out manually later
|
||||||
|
|
||||||
|
$findcols = array(
|
||||||
|
'paketannahme.id',
|
||||||
|
'paketannahme.datum',
|
||||||
|
'paketannahme.status',
|
||||||
|
'adresse.name',
|
||||||
|
'adresse.kundennummer',
|
||||||
|
'adresse.lieferantennummer',
|
||||||
|
'paketannahme.lsnr',
|
||||||
|
'paketannahme.renr',
|
||||||
|
'paketannahme.bearbeiter',
|
||||||
|
'paketannahme.datum',
|
||||||
|
'paketannahme.bemerkung',
|
||||||
|
'paketannahme.id');
|
||||||
|
|
||||||
|
$searchsql = array(
|
||||||
|
'paketannahme.status',
|
||||||
|
'paketannahme.datum',
|
||||||
|
'adresse.name',
|
||||||
|
'adresse.kundennummer',
|
||||||
|
'adresse.lieferantennummer',
|
||||||
|
'paketannahme.lsnr',
|
||||||
|
'paketannahme.renr',
|
||||||
|
'paketannahme.bearbeiter',
|
||||||
|
'paketannahme.bemerkung');
|
||||||
|
|
||||||
|
$defaultorder = 6;
|
||||||
|
$defaultorderdesc = 0;
|
||||||
|
|
||||||
|
$menu = "<table cellpadding=0 cellspacing=0><tr><td nowrap>" . "<a href=\"index.php?module=wareneingang&action=distriinhalt&id=%value%\"><img src=\"./themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.png\" border=\"0\"></a> </td></tr></table>";
|
||||||
|
|
||||||
|
$sql = "SELECT
|
||||||
|
paketannahme.id,
|
||||||
|
paketannahme.id,
|
||||||
|
DATE_FORMAT(paketannahme.datum, '%d.%m.%Y %H:%i'),
|
||||||
|
paketannahme.status,
|
||||||
|
adresse.name,
|
||||||
|
adresse.kundennummer,
|
||||||
|
adresse.lieferantennummer,
|
||||||
|
paketannahme.lsnr,
|
||||||
|
paketannahme.renr,
|
||||||
|
paketannahme.bearbeiter,
|
||||||
|
paketannahme.bemerkung,
|
||||||
|
paketannahme.id
|
||||||
|
FROM paketannahme
|
||||||
|
INNER JOIN adresse
|
||||||
|
ON paketannahme.adresse = adresse.id";
|
||||||
|
|
||||||
|
$where = "1";
|
||||||
|
$count = "SELECT count(paketannahme.id) FROM paketannahme
|
||||||
|
INNER JOIN adresse
|
||||||
|
ON paketannahme.adresse = adresse.id";
|
||||||
|
// $groupby = "";
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
$erg = [];
|
$erg = [];
|
||||||
@@ -1001,12 +1119,13 @@ class Wareneingang
|
|||||||
}
|
}
|
||||||
$this->app->ActionHandlerInit($this);
|
$this->app->ActionHandlerInit($this);
|
||||||
|
|
||||||
$this->app->ActionHandler("main","WareneingangMain");
|
// $this->app->ActionHandler("main","WareneingangMain");
|
||||||
$this->app->ActionHandler("list","WareneingangList");
|
$this->app->ActionHandler("list","WareneingangList");
|
||||||
$this->app->ActionHandler("help","WareneingangHelp");
|
// $this->app->ActionHandler("help","WareneingangHelp");
|
||||||
$this->app->ActionHandler("vorgang","VorgangAnlegen");
|
// $this->app->ActionHandler("vorgang","VorgangAnlegen");
|
||||||
$this->app->ActionHandler("removevorgang","VorgangEntfernen");
|
// $this->app->ActionHandler("removevorgang","VorgangEntfernen");
|
||||||
//$this->app->ActionHandler("create","WareneingangCreate");
|
//$this->app->ActionHandler("create","WareneingangCreate");
|
||||||
|
$this->app->ActionHandler("create","WareneingangPaketannahme");
|
||||||
$this->app->ActionHandler("paketannahme","WareneingangPaketannahme");
|
$this->app->ActionHandler("paketannahme","WareneingangPaketannahme");
|
||||||
$this->app->ActionHandler("paketzustand","WareneingangPaketZustand");
|
$this->app->ActionHandler("paketzustand","WareneingangPaketZustand");
|
||||||
$this->app->ActionHandler("paketetikett","WareneingangPaketEtikett");
|
$this->app->ActionHandler("paketetikett","WareneingangPaketEtikett");
|
||||||
@@ -1020,7 +1139,7 @@ class Wareneingang
|
|||||||
$this->app->ActionHandler("stornieren","WareneingangStornieren");
|
$this->app->ActionHandler("stornieren","WareneingangStornieren");
|
||||||
$this->app->ActionHandler("settings","WareneingangSettings");
|
$this->app->ActionHandler("settings","WareneingangSettings");
|
||||||
|
|
||||||
$this->app->DefaultActionHandler("login");
|
$this->app->DefaultActionHandler("list");
|
||||||
$this->app->erp->Headlines('Wareneinang');
|
$this->app->erp->Headlines('Wareneinang');
|
||||||
|
|
||||||
$this->app->ActionHandlerListen($app);
|
$this->app->ActionHandlerListen($app);
|
||||||
@@ -1102,7 +1221,8 @@ class Wareneingang
|
|||||||
$action = $this->app->Secure->GetGET('action');
|
$action = $this->app->Secure->GetGET('action');
|
||||||
$this->app->Tpl->Set('ID',$id);
|
$this->app->Tpl->Set('ID',$id);
|
||||||
$this->app->Tpl->Add('KURZUEBERSCHRIFT',' Paketannahme');
|
$this->app->Tpl->Add('KURZUEBERSCHRIFT',' Paketannahme');
|
||||||
$this->app->erp->MenuEintrag('index.php?module=wareneingang&action=paketannahme','Paketannahme');
|
$this->app->erp->MenuEintrag('index.php?module=wareneingang&action=paketannahme','Neu');
|
||||||
|
$this->app->erp->MenuEintrag('index.php?module=wareneingang&action=list','Übersicht');
|
||||||
$this->app->erp->RunMenuHook('wareneingangpaket');
|
$this->app->erp->RunMenuHook('wareneingangpaket');
|
||||||
$this->app->erp->MenuEintrag(
|
$this->app->erp->MenuEintrag(
|
||||||
'index.php?module=wareneingang&action=settings&menu=paket',
|
'index.php?module=wareneingang&action=settings&menu=paket',
|
||||||
@@ -1572,13 +1692,47 @@ class Wareneingang
|
|||||||
|
|
||||||
public function WareneingangPaketDistriInhalt()
|
public function WareneingangPaketDistriInhalt()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
$this->WareneingangPaketMenu();
|
||||||
|
|
||||||
|
$id = $this->app->Secure->GetGET('id');
|
||||||
$cmd = $this->app->Secure->GetGET('cmd');
|
$cmd = $this->app->Secure->GetGET('cmd');
|
||||||
|
$lsnr = $this->app->Secure->GetPOST('lsnr');
|
||||||
|
$renr = $this->app->Secure->GetPOST('renr');
|
||||||
|
$bemerkung = $this->app->Secure->GetPOST('bemerkung');
|
||||||
|
|
||||||
|
// Load from DB
|
||||||
|
if (($lsnr == '' && $renr == '' && $bemerkung == '') && $id != '') {
|
||||||
|
$fields = $this->app->DB->SelectArr(
|
||||||
|
sprintf(
|
||||||
|
'SELECT `lsnr`, `renr`,`bemerkung` FROM `paketannahme` WHERE `id` = %d LIMIT 1',
|
||||||
|
$id
|
||||||
|
));
|
||||||
|
|
||||||
|
$lsnr = $fields[0]['lsnr'];
|
||||||
|
$renr = $fields[0]['renr'];
|
||||||
|
$bemerkung = $fields[0]['bemerkung'];
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// Save header
|
||||||
|
$this->app->DB->Update(
|
||||||
|
"UPDATE paketannahme SET
|
||||||
|
lsnr='".$lsnr."',
|
||||||
|
renr='".$renr."',
|
||||||
|
bemerkung='".$bemerkung."'
|
||||||
|
WHERE id='$id' LIMIT 1");
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->app->Tpl->Set('LSNR', $lsnr);
|
||||||
|
$this->app->Tpl->Set('RENR', $renr);
|
||||||
|
$this->app->Tpl->Set('BEMERKUNG', $bemerkung);
|
||||||
|
|
||||||
$isCmdFromReturnOrder = $cmd === 'fromreturnorder';
|
$isCmdFromReturnOrder = $cmd === 'fromreturnorder';
|
||||||
if($isCmdFromReturnOrder) {
|
if($isCmdFromReturnOrder) {
|
||||||
/** @var Retoure $returnOrderObj */
|
/** @var Retoure $returnOrderObj */
|
||||||
$returnOrderObj = $this->app->loadModule('retoure');
|
$returnOrderObj = $this->app->loadModule('retoure');
|
||||||
if(!empty($returnOrderObj)) {
|
if(!empty($returnOrderObj)) {
|
||||||
$id = $this->app->Secure->GetGET('id');
|
|
||||||
$receiptDocument = $returnOrderObj->getReceiptDocumentArrByParcelId($id);
|
$receiptDocument = $returnOrderObj->getReceiptDocumentArrByParcelId($id);
|
||||||
if(!empty($receiptDocument['return_order_id'])) {
|
if(!empty($receiptDocument['return_order_id'])) {
|
||||||
$this->LocatateToReturnOrderPosition($receiptDocument['return_order_id']);
|
$this->LocatateToReturnOrderPosition($receiptDocument['return_order_id']);
|
||||||
@@ -1596,14 +1750,11 @@ class Wareneingang
|
|||||||
$response->send();
|
$response->send();
|
||||||
$this->app->ExitXentral();
|
$this->app->ExitXentral();
|
||||||
}
|
}
|
||||||
$id = $this->app->Secure->GetGET('id');
|
|
||||||
$this->app->erp->RunHook('wareneingang_distriinhalt_start', 1, $id);
|
$this->app->erp->RunHook('wareneingang_distriinhalt_start', 1, $id);
|
||||||
|
|
||||||
$submit = $this->app->Secure->GetPOST('submit');
|
$submit = $this->app->Secure->GetPOST('submit');
|
||||||
$submitkunde = $this->app->Secure->GetPOST('submitkunde');
|
$submitkunde = $this->app->Secure->GetPOST('submitkunde');
|
||||||
|
|
||||||
$this->WareneingangPaketDistriMenu();
|
|
||||||
|
|
||||||
if($submit!='') {
|
if($submit!='') {
|
||||||
$tmp = $this->app->Secure->GetPOST('pos');
|
$tmp = $this->app->Secure->GetPOST('pos');
|
||||||
$tmpRetoure = $this->app->Secure->GetPOST('retourepos');
|
$tmpRetoure = $this->app->Secure->GetPOST('retourepos');
|
||||||
@@ -1707,12 +1858,10 @@ class Wareneingang
|
|||||||
$this->app->Tpl->Set('TAB1ENDE','-->');*/
|
$this->app->Tpl->Set('TAB1ENDE','-->');*/
|
||||||
$this->app->Tpl->Set('TAB1START','');
|
$this->app->Tpl->Set('TAB1START','');
|
||||||
$this->app->Tpl->Set('TAB1ENDE','');
|
$this->app->Tpl->Set('TAB1ENDE','');
|
||||||
$this->app->Tpl->Set('BEFORETAB1', '<!--');
|
// $this->app->Tpl->Set('BEFORETAB1', '<!--');
|
||||||
$this->app->Tpl->Set('AFTERTAB1', '-->');
|
// $this->app->Tpl->Set('AFTERTAB1', '-->');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(!$isSupplier && !$isCustomer) {
|
if(!$isSupplier && !$isCustomer) {
|
||||||
$this->app->Tpl->Set('TAB1START','');
|
$this->app->Tpl->Set('TAB1START','');
|
||||||
$this->app->Tpl->Set('TAB1ENDE','');
|
$this->app->Tpl->Set('TAB1ENDE','');
|
||||||
@@ -1725,6 +1874,14 @@ class Wareneingang
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (!empty($addressRow['name'])) {
|
||||||
|
$this->app->Tpl->Set('LEGENDE',"Paket <b>Nr.$id</b> erfassen für Adresse '".$addressRow['name']."':");
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->app->Tpl->Add('TAB1_SECOND',"<br><h1>Paketinhalt (eingebucht):</h1><br>");
|
||||||
|
$this->app->YUI->TableSearch('TAB1_SECOND', 'paketdistribution_list', "show", "", "", basename(__FILE__), __CLASS__);
|
||||||
|
|
||||||
$this->app->erp->RunHook('wareneingang_distriinhalt', 1, $id);
|
$this->app->erp->RunHook('wareneingang_distriinhalt', 1, $id);
|
||||||
if($showcreateReturnOrder) {
|
if($showcreateReturnOrder) {
|
||||||
$this->app->Tpl->addButton(
|
$this->app->Tpl->addButton(
|
||||||
@@ -1745,12 +1902,12 @@ class Wareneingang
|
|||||||
'zurück zur Übersicht'
|
'zurück zur Übersicht'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if($isSupplier){
|
// if($isSupplier){
|
||||||
$this->app->Tpl->Parse('PAGE', 'wareneingangpaketdistribution.tpl');
|
$this->app->Tpl->Parse('PAGE', 'wareneingang_paketinhalt.tpl');
|
||||||
}
|
// }
|
||||||
else {
|
// else {
|
||||||
$this->app->Tpl->Parse('PAGE', 'wareneingangpaketdistribution2.tpl');
|
// $this->app->Tpl->Parse('PAGE', 'wareneingangpaketdistribution2.tpl');
|
||||||
}
|
// }
|
||||||
$returnordergeprueft = $this->app->Secure->GetPOST('returnordergeprueft');
|
$returnordergeprueft = $this->app->Secure->GetPOST('returnordergeprueft');
|
||||||
$abschliessen = $this->app->Secure->GetPOST('abschliessen');
|
$abschliessen = $this->app->Secure->GetPOST('abschliessen');
|
||||||
if($abschliessen!='' || $returnordergeprueft != '') {
|
if($abschliessen!='' || $returnordergeprueft != '') {
|
||||||
@@ -1762,18 +1919,27 @@ class Wareneingang
|
|||||||
$id
|
$id
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
$this->app->DB->Update("UPDATE paketannahme SET status='abgeschlossen' WHERE id='$id' LIMIT 1");
|
|
||||||
|
|
||||||
|
// Save header and finish
|
||||||
|
$this->app->DB->Update(
|
||||||
|
"UPDATE paketannahme SET
|
||||||
|
status='abgeschlossen',
|
||||||
|
lsnr='".$lsnr."',
|
||||||
|
renr='".$renr."',
|
||||||
|
bemerkung='".$bemerkung."'
|
||||||
|
WHERE id='$id' LIMIT 1");
|
||||||
|
|
||||||
$this->app->erp->RunHook('wareneinang_paketannahme_abschliessen',1, $id);
|
$this->app->erp->RunHook('wareneinang_paketannahme_abschliessen',1, $id);
|
||||||
$this->app->Location->execute('index.php?module=wareneingang&action=paketannahme');
|
$this->app->Location->execute('index.php?module=wareneingang&action=list');
|
||||||
}
|
}
|
||||||
|
|
||||||
$manuellerfassen = $this->app->Secure->GetPOST('manuellerfassen');
|
$manuellerfassen = $this->app->Secure->GetPOST('manuellerfassen');
|
||||||
if($manuellerfassen!='') {
|
if($manuellerfassen!='') {
|
||||||
$this->app->Location->execute('index.php?module=wareneingang&action=manuellerfassen&id='.$id);
|
$this->app->Location->execute('index.php?module=wareneingang&action=manuellerfassen&id='.$id);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
// END WareneingangPaketDistriInhalt
|
||||||
|
|
||||||
public function WareneingangMiniDetail()
|
public function WareneingangMiniDetail()
|
||||||
{
|
{
|
||||||
@@ -2160,7 +2326,7 @@ class Wareneingang
|
|||||||
//$this->app->Tpl->Add(TAB1TEXT,"<li><a>Lagerartikel</a></li>");
|
//$this->app->Tpl->Add(TAB1TEXT,"<li><a>Lagerartikel</a></li>");
|
||||||
|
|
||||||
$this->app->YUI->AutoComplete('lager','lagerplatz',0,'&zwischenlager='.$withZwischenlager.'&withstandardlager='.$withStandardlager);
|
$this->app->YUI->AutoComplete('lager','lagerplatz',0,'&zwischenlager='.$withZwischenlager.'&withstandardlager='.$withStandardlager);
|
||||||
$this->app->Tpl->Parse('TAB1','wareneingangpaketdistribution_tab3_lager.tpl');
|
$this->app->Tpl->Parse('TAB1','wareneingang_lager.tpl');
|
||||||
}
|
}
|
||||||
else if($artikelcheckliste || $funktionstest || $endmontage) {
|
else if($artikelcheckliste || $funktionstest || $endmontage) {
|
||||||
}
|
}
|
||||||
@@ -2168,8 +2334,8 @@ class Wareneingang
|
|||||||
{
|
{
|
||||||
$typ = 'mitarbeiter';
|
$typ = 'mitarbeiter';
|
||||||
$this->app->erp->RunHook('wareneingang_display_hook_rma1', 3, $id, $pos, $menge);
|
$this->app->erp->RunHook('wareneingang_display_hook_rma1', 3, $id, $pos, $menge);
|
||||||
$this->app->Tpl->Add('TAB1TEXT','<li><a>Artikel für Mitarbeiter</a></li>');
|
$this->app->Tpl->Add('TAB1TEXT','<li><a>Kein Lagerartikel</a></li>');
|
||||||
$this->app->Tpl->Parse('TAB1','wareneingangpaketdistribution_tab3_mitarbeiter.tpl');
|
$this->app->Tpl->Parse('TAB1','wareneingang_mitarbeiter.tpl');
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
echo 'Diesen Fall gibt es nicht. Xentral Entwicklung kontaktieren!';
|
echo 'Diesen Fall gibt es nicht. Xentral Entwicklung kontaktieren!';
|
||||||
@@ -2444,12 +2610,16 @@ class Wareneingang
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if($cmd === 'manuell') {
|
if($cmd === 'manuell') {
|
||||||
$this->app->erp->LagerEinlagern($artikel, $menge, $lager, '', 'Wareneingang manuell', '', $id);
|
$this->app->erp->LagerEinlagern($artikel, $menge, $lager, '', "Wareneingang Paket $id", '', $id);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
$this->app->erp->LagerEinlagern($artikel, $menge, $lager, '', "Wareneingang von Bestellung $bestellung_belegnr", '', $id);
|
$this->app->erp->LagerEinlagern($artikel, $menge, $lager, '', "Wareneingang Paket $id, Bestellung $bestellung_belegnr", '', $id);
|
||||||
$this->app->erp->RunHook('wareneingang_bestellung', 5, $bparr, $artikel, $menge, $lager, $id);
|
$this->app->erp->RunHook('wareneingang_bestellung', 5, $bparr, $artikel, $menge, $lager, $id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$lagerplatz_name = $this->app->DB->Select("SELECT kurzbezeichnung FROM lager_platz WHERE lager_platz.id = $lager LIMIT 1");
|
||||||
|
$bemerkung = $lagerplatz_name;
|
||||||
|
|
||||||
}
|
}
|
||||||
$typ2 = 'lager_platz';
|
$typ2 = 'lager_platz';
|
||||||
$tmpid2 = array('artikel'=>$artikel,'lager_platz'=>$lager,'menge'=>$menge);
|
$tmpid2 = array('artikel'=>$artikel,'lager_platz'=>$lager,'menge'=>$menge);
|
||||||
@@ -2512,7 +2682,15 @@ class Wareneingang
|
|||||||
$geliefert += $menge;
|
$geliefert += $menge;
|
||||||
$this->app->DB->Update("UPDATE bestellung_position SET geliefert='$geliefert' WHERE id='$pos' LIMIT 1");
|
$this->app->DB->Update("UPDATE bestellung_position SET geliefert='$geliefert' WHERE id='$pos' LIMIT 1");
|
||||||
}
|
}
|
||||||
|
} else if ($cmd == 'manuell') {
|
||||||
|
// Save the manually added entries to paketdistribution
|
||||||
|
$this->app->DB->Insert("INSERT INTO paketdistribution
|
||||||
|
(id,bearbeiter,zeit,paketannahme,adresse,artikel,menge,vpe,etiketten,bemerkung)
|
||||||
|
VALUES ('','".$this->app->User->GetName()."',NOW(),'$id','$adresse','$artikel','$menge','$vpe','$etiketten','$bemerkung')");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// alles passt weiter im abschluss
|
// alles passt weiter im abschluss
|
||||||
if($weiterleitung) {
|
if($weiterleitung) {
|
||||||
$this->app->Location->execute($weiterleitung);
|
$this->app->Location->execute($weiterleitung);
|
||||||
@@ -2821,23 +2999,11 @@ public function WareneingangPaketAbschliessen()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public function WareneingangList()
|
public function WareneingangList()
|
||||||
{
|
{
|
||||||
$this->WareneingangMenu();
|
$this->WareneingangPaketMenu();
|
||||||
|
$this->app->YUI->TableSearch('TAB1', 'paketannahme_list', "show", "", "", basename(__FILE__), __CLASS__);
|
||||||
$this->app->Tpl->Set('SUBHEADING','Lieferungen');
|
$this->app->Tpl->Parse('PAGE', "wareneingang_list.tpl");
|
||||||
//Jeder der in Nachbesserung war egal ob auto oder manuell wandert anschliessend in Manuelle-Freigabe");
|
|
||||||
$table = new EasyTable($this->app);
|
|
||||||
$table->Query("SELECT '23.11.2009' as datum, 'Olimex' as lieferant,id FROM aufgabe LIMIT 3");
|
|
||||||
$table->DisplayNew('INHALT','<a href="index.php?module=ticket&action=assistent&id=%value%">Lesen</a>');
|
|
||||||
$this->app->Tpl->Parse('TAB1','rahmen.tpl');
|
|
||||||
$this->app->Tpl->Set('INHALT','');
|
|
||||||
|
|
||||||
$this->app->Tpl->Set('AKTIV_TAB1','tabs-1');
|
|
||||||
$this->app->Tpl->Parse('PAGE','wareneinganguebersicht.tpl');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -3041,7 +3207,7 @@ public function WareneingangPaketannahme()
|
|||||||
|
|
||||||
$this->app->Tpl->Set('AKTIV_TAB1','tabs-1');
|
$this->app->Tpl->Set('AKTIV_TAB1','tabs-1');
|
||||||
$this->app->User->SetParameter('wareneingang_action', 'paketannahme');
|
$this->app->User->SetParameter('wareneingang_action', 'paketannahme');
|
||||||
$this->app->Tpl->Parse('PAGE','wareneingangpaketannahme.tpl');
|
$this->app->Tpl->Parse('PAGE','wareneingang_paketannahme.tpl');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,7 +56,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="tabs-3">
|
<div id="tabs-3">
|
||||||
<div class="row">
|
<!-- <div class="row">
|
||||||
<div class="row-height">
|
<div class="row-height">
|
||||||
<div class="col-xs-12 col-sm-height">
|
<div class="col-xs-12 col-sm-height">
|
||||||
<div class="inside_white inside-full-height">
|
<div class="inside_white inside-full-height">
|
||||||
@@ -78,7 +78,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div> -->
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="row-height">
|
<div class="row-height">
|
||||||
@@ -148,7 +148,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-xs-12 col-sm-6 col-sm-height">
|
<div class="col-xs-12 col-sm-6 col-sm-height">
|
||||||
<div class="inside inside-full-height">
|
<div class="inside inside-full-height">
|
||||||
<fieldset>
|
<fieldset disabled>
|
||||||
<legend>{|Stufe 2 (Pack) an Versandstation|}</legend>
|
<legend>{|Stufe 2 (Pack) an Versandstation|}</legend>
|
||||||
<table border="0" width="100%" class="mkTable">
|
<table border="0" width="100%" class="mkTable">
|
||||||
<tr><td width="300"></td><td>{|Drucker|}</td><td width="30%">{|Anzahl Exemplare|}</td><td width="30%">{|E-Mail|}</td></tr>
|
<tr><td width="300"></td><td>{|Drucker|}</td><td width="30%">{|Anzahl Exemplare|}</td><td width="30%">{|E-Mail|}</td></tr>
|
||||||
|
|||||||
@@ -19,7 +19,12 @@ class WidgetProjekt extends WidgetGenProjekt
|
|||||||
$id = $this->app->Secure->GetGET("id");
|
$id = $this->app->Secure->GetGET("id");
|
||||||
$kommissionierverfahren = array(
|
$kommissionierverfahren = array(
|
||||||
'rechnungsmail'=>'Ohne Lagerbuchung',
|
'rechnungsmail'=>'Ohne Lagerbuchung',
|
||||||
'lieferschein'=>'Einfache Lagerbuchung ohne weiteren Prozess');
|
'lieferschein'=>'Einfache Lagerbuchung ohne weiteren Prozess'
|
||||||
|
// 'lieferscheinscan'=>'Lieferscheinscan',
|
||||||
|
// 'lieferscheinlagerscan'=>'Lieferscheinlagerscan',
|
||||||
|
// 'lieferscheinlager'=>'Lieferscheinlager',
|
||||||
|
// 'zweistufig'=>'Zweistufig'
|
||||||
|
);
|
||||||
$field = new HTMLSelect("kommissionierverfahren",0);
|
$field = new HTMLSelect("kommissionierverfahren",0);
|
||||||
$field->AddOptionsAsocSimpleArray($kommissionierverfahren);
|
$field->AddOptionsAsocSimpleArray($kommissionierverfahren);
|
||||||
$this->form->NewField($field);
|
$this->form->NewField($field);
|
||||||
|
|||||||