Compare commits
234
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9ebd5d2b2b | ||
|
|
bf3dad7e83 | ||
|
|
b7f8c7b359 | ||
|
|
54fe339c65 | ||
|
|
7d0a5a0eee | ||
|
|
7cfb87c2c5 | ||
|
|
2ae5e9f44a | ||
|
|
c106282b13 | ||
|
|
e737d69a77 | ||
|
|
2f646a7715 | ||
|
|
c67d91a7dd | ||
|
|
3e69b8d7e0 | ||
|
|
77092171c3 | ||
|
|
a03d28ac69 | ||
|
|
f55f801cee | ||
|
|
1fe0aea620 | ||
|
|
e474014b8c | ||
|
|
3e70af8466 | ||
|
|
662410fdc8 | ||
|
|
7dcaae7fbb | ||
|
|
18397a03c8 | ||
|
|
504f0beb54 | ||
|
|
ecf986d33b | ||
|
|
eb00034a79 | ||
|
|
a5be2e984a | ||
|
|
fb32cda643 | ||
|
|
ca73f3dda5 | ||
|
|
4488cf8688 | ||
|
|
ec7dc7b8a6 | ||
|
|
6e857e6567 | ||
|
|
a35ab21f7c | ||
|
|
f794b4db74 | ||
|
|
e899b1c389 | ||
|
|
b171dd7760 | ||
|
|
4f7eb4049b | ||
|
|
b838b63258 | ||
|
|
5e1359f770 | ||
|
|
1bb701322b | ||
|
|
1e55ca1b3d | ||
|
|
b34ba86421 | ||
|
|
b2bf2f14f2 | ||
|
|
bdb05c747a | ||
|
|
b613a99791 | ||
|
|
1dba7e9d7e | ||
|
|
60e21956ad | ||
|
|
545a39bbdc | ||
|
|
5ed516f9da | ||
|
|
76c770aba3 | ||
|
|
c9aee26df7 | ||
|
|
91c2dc88ba | ||
|
|
be222cc581 | ||
|
|
a9f3292f8f | ||
|
|
ac723e9fda | ||
|
|
5408f197fd | ||
|
|
c0a9156f0e | ||
|
|
fd0a5a5d4c | ||
|
|
1daf876976 | ||
|
|
7a29151bdd | ||
|
|
623b041a5f | ||
|
|
6242024451 | ||
|
|
0262c31e93 | ||
|
|
5557c54fd6 | ||
|
|
7df897d9d7 | ||
|
|
1a94af6b0b | ||
|
|
fa4125d63b | ||
|
|
ac0048c788 | ||
|
|
f430b7f5ac | ||
|
|
83e739d378 | ||
|
|
a32c201a91 | ||
|
|
cb2b75a3ca | ||
|
|
1f27f9a5f5 | ||
|
|
81e2cdb222 | ||
|
|
5b49171a74 | ||
|
|
869c888947 | ||
|
|
322ca715eb | ||
|
|
ab4e9f001e | ||
|
|
51b70aed0d | ||
|
|
08579804a8 | ||
|
|
64241842f6 | ||
|
|
f5c61ca6eb | ||
|
|
aa32bd1276 | ||
|
|
e6960f0030 | ||
|
|
b02da95c2f | ||
|
|
9994f8c18d | ||
|
|
ce5f359a75 | ||
|
|
57e398e7d4 | ||
|
|
ca5e5c52a1 | ||
|
|
6f5272717f | ||
|
|
2eabd85b91 | ||
|
|
1be7ba66ee | ||
|
|
56e743334a | ||
|
|
e125a29fa9 | ||
|
|
63a99b1a6e | ||
|
|
1ea3d3a175 | ||
|
|
fcb9b0aeb7 | ||
|
|
53bb9fcdf9 | ||
|
|
2b2f84a020 | ||
|
|
f3587501f2 | ||
|
|
4b40c27c84 | ||
|
|
265d815534 | ||
|
|
7c17b2aed9 | ||
|
|
174909c178 | ||
|
|
b8cfa9efbb | ||
|
|
5da0490260 | ||
|
|
9fbd0eb85a | ||
|
|
1c1c7034f1 | ||
|
|
2c7f113d6b | ||
|
|
1f6caa8632 | ||
|
|
73725a31bb | ||
|
|
06686a6020 | ||
|
|
1e04647dae | ||
|
|
62cca6fe3c | ||
|
|
bf10c0d807 | ||
|
|
d9ff872a98 | ||
|
|
05699986eb | ||
|
|
dcedcec0f2 | ||
|
|
6fc74f1bf3 | ||
|
|
33b5c1e171 | ||
|
|
3f7cf88d99 | ||
|
|
1ebaa24473 | ||
|
|
5ca3a7297b | ||
|
|
88e1e2ebc2 | ||
|
|
5a4c73d9b8 | ||
|
|
d294daa08b | ||
|
|
75bd00770c | ||
|
|
674c7b9958 | ||
|
|
60611a2d03 | ||
|
|
2e70e1f2dc | ||
|
|
7548c601f5 | ||
|
|
ac8407faed | ||
|
|
14e727500e | ||
|
|
011f2915c1 | ||
|
|
38cf7c3bc2 | ||
|
|
209364f8c3 | ||
|
|
fea7a173dc | ||
|
|
33d2ca9497 | ||
|
|
9002a66085 | ||
|
|
c8426bcbc0 | ||
|
|
25cf7de75b | ||
|
|
2d938e96a0 | ||
|
|
4ffeafa5ac | ||
|
|
2533e4ca4f | ||
|
|
a144e2183b | ||
|
|
30ce445ac1 | ||
|
|
51d7ad7f17 | ||
|
|
f6d71cbbc8 | ||
|
|
1bf58aa8ba | ||
|
|
63dbedc1a8 | ||
|
|
cd3c0f2113 | ||
|
|
b497d65d81 | ||
|
|
87a884bd8a | ||
|
|
3efbcb82d9 | ||
|
|
f0f468c94e | ||
|
|
b82d17d6f4 | ||
|
|
9db337ce95 | ||
|
|
62f6df1aeb | ||
|
|
828c1b1a75 | ||
|
|
7de88ca3b5 | ||
|
|
5794301826 | ||
|
|
1a28b5d75b | ||
|
|
df292c9c02 | ||
|
|
f0a24b7e5b | ||
|
|
50df55e35e | ||
|
|
4720cc8e94 | ||
|
|
64d6b90312 | ||
|
|
17bdb1c5e1 | ||
|
|
c1d42f6ceb | ||
|
|
c4eaaa966a | ||
|
|
a43ac720b6 | ||
|
|
170a33687f | ||
|
|
ea6a6a5dda | ||
|
|
69172672b2 | ||
|
|
667b70eaf5 | ||
|
|
44af8f3b3d | ||
|
|
82fc367405 | ||
|
|
828af9ab50 | ||
|
|
e79f2839e2 | ||
|
|
7aab51a390 | ||
|
|
3dfba163df | ||
|
|
4a4b1f8320 | ||
|
|
03f0f7217b | ||
|
|
c6a4cf0d23 | ||
|
|
92f016d06b | ||
|
|
222b0ac239 | ||
|
|
1e59009862 | ||
|
|
76740aee02 | ||
|
|
06bc38e66a | ||
|
|
ad4599e381 | ||
|
|
b1349afb6b | ||
|
|
820dc9fec6 | ||
|
|
46f9e0728d | ||
|
|
8bdedcb72f | ||
|
|
ebd50b4f28 | ||
|
|
85094921a0 | ||
|
|
d97f41e293 | ||
|
|
b701a880a4 | ||
|
|
7ee2bfae5b | ||
|
|
2b573268fa | ||
|
|
e79e2e24d2 | ||
|
|
03f51a548a | ||
|
|
b6c23399c6 | ||
|
|
689fdb0490 | ||
|
|
c223e7c956 | ||
|
|
a15d7b0b41 | ||
|
|
ebc7034164 | ||
|
|
3715c2f205 | ||
|
|
95d26d5c6e | ||
|
|
5bc7a64c8c | ||
|
|
b7153c423c | ||
|
|
1637bf965a | ||
|
|
9a6ed1ae75 | ||
|
|
b6b856fd11 | ||
|
|
c361a82583 | ||
|
|
aa93070185 | ||
|
|
7a83c9fd29 | ||
|
|
09039f9d2a | ||
|
|
49dfd255e4 | ||
|
|
791a12b731 | ||
|
|
62e16cfcc1 | ||
|
|
23dc74cd08 | ||
|
|
18f2785abd | ||
|
|
691ad237b5 | ||
|
|
c220639e82 | ||
|
|
51552e7530 | ||
|
|
696e9efc76 | ||
|
|
6a566a99af | ||
|
|
e356051f5a | ||
|
|
1f52278758 | ||
|
|
ab91715c20 | ||
|
|
ecd86d120a | ||
|
|
8dd78dfa55 | ||
|
|
71883d34ae | ||
|
|
73dbbb061a | ||
|
|
5638f18770 |
+1
-4
@@ -54,14 +54,11 @@ memory_limit = 256M
|
|||||||
## Install additional zip
|
## Install additional zip
|
||||||
`sudo apt-get install zip`
|
`sudo apt-get install zip`
|
||||||
|
|
||||||
## Install mysql client
|
|
||||||
`sudo apt-get install mysql-client`
|
|
||||||
|
|
||||||
## Install database server
|
## Install database server
|
||||||
`sudo apt-get install mariadb-server`
|
`sudo apt-get install mariadb-server`
|
||||||
|
|
||||||
## Configure database server
|
## Configure database server
|
||||||
`sudo mysql_secure_installation`
|
`sudo mariadb-secure-installation`
|
||||||
```
|
```
|
||||||
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
|
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
|
||||||
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
|
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
|
||||||
|
|||||||
@@ -12,8 +12,9 @@ class ParcelCreation extends ParcelBase
|
|||||||
{
|
{
|
||||||
public ?int $SenderAddressId = null;
|
public ?int $SenderAddressId = null;
|
||||||
|
|
||||||
public function toApiRequest(): array {
|
public function toApiRequest(): array
|
||||||
return [
|
{
|
||||||
|
$data = [
|
||||||
'name' => $this->Name,
|
'name' => $this->Name,
|
||||||
'company_name' => $this->CompanyName,
|
'company_name' => $this->CompanyName,
|
||||||
'address' => $this->Address,
|
'address' => $this->Address,
|
||||||
@@ -32,8 +33,6 @@ class ParcelCreation extends ParcelBase
|
|||||||
'total_order_value' => number_format($this->TotalOrderValue, 2, '.', null),
|
'total_order_value' => number_format($this->TotalOrderValue, 2, '.', null),
|
||||||
'country_state' => $this->CountryState,
|
'country_state' => $this->CountryState,
|
||||||
'sender_address' => $this->SenderAddressId,
|
'sender_address' => $this->SenderAddressId,
|
||||||
'customs_invoice_nr' => $this->CustomsInvoiceNr,
|
|
||||||
'customs_shipment_type' => $this->CustomsShipmentType,
|
|
||||||
'external_reference' => $this->ExternalReference,
|
'external_reference' => $this->ExternalReference,
|
||||||
'total_insured_value' => $this->TotalInsuredValue ?? 0,
|
'total_insured_value' => $this->TotalInsuredValue ?? 0,
|
||||||
'parcel_items' => array_map(fn(ParcelItem $item) => $item->toApiRequest(), $this->ParcelItems),
|
'parcel_items' => array_map(fn(ParcelItem $item) => $item->toApiRequest(), $this->ParcelItems),
|
||||||
@@ -42,6 +41,11 @@ class ParcelCreation extends ParcelBase
|
|||||||
'width' => $this->Width,
|
'width' => $this->Width,
|
||||||
'height' => $this->Height,
|
'height' => $this->Height,
|
||||||
];
|
];
|
||||||
}
|
if ($this->CustomsInvoiceNr !== null)
|
||||||
|
$data['customs_invoice_nr'] = $this->CustomsInvoiceNr;
|
||||||
|
if ($this->CustomsShipmentType !== null)
|
||||||
|
$data['customs_shipment_type'] = $this->CustomsShipmentType;
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -128,7 +128,7 @@ final class ImapMailClient implements MailClientInterface
|
|||||||
$message = $this->imap->getMessage($msgNumber);
|
$message = $this->imap->getMessage($msgNumber);
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
throw new MessageNotFoundException(
|
throw new MessageNotFoundException(
|
||||||
sprintf('Message number %s not found.', $msgNumber)
|
sprintf("Message number %s could not be fetched.\n\r%s", $msgNumber,print_r($e,true))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ declare(strict_types=1);
|
|||||||
namespace Xentral\Components\MailClient\Data;
|
namespace Xentral\Components\MailClient\Data;
|
||||||
|
|
||||||
use DateTime;
|
use DateTime;
|
||||||
|
use DateTimeImmutable;
|
||||||
use DateTimeInterface;
|
use DateTimeInterface;
|
||||||
use JsonSerializable;
|
use JsonSerializable;
|
||||||
use Throwable;
|
use Throwable;
|
||||||
@@ -307,10 +308,13 @@ final class MailMessageData implements MailMessageInterface, JsonSerializable
|
|||||||
if ($date === null) {
|
if ($date === null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
$dateTime = date_create($date->getValue());
|
/* $dateTime = date_create($date->getValue());
|
||||||
if ($dateTime === false) {
|
if ($dateTime === false) {
|
||||||
|
throw new InvalidArgumentException('Invalid date: '.$date->getValue());
|
||||||
return null;
|
return null;
|
||||||
}
|
}*/
|
||||||
|
|
||||||
|
$dateTime = new DateTimeImmutable($date->getValue());
|
||||||
|
|
||||||
return $dateTime;
|
return $dateTime;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ final class Psr4ClassNameResolver
|
|||||||
{
|
{
|
||||||
// Normalize inputs
|
// Normalize inputs
|
||||||
$prefix = trim($prefix, '\\') . '\\';
|
$prefix = trim($prefix, '\\') . '\\';
|
||||||
$baseDir = rtrim($baseDir, '/') . '/';
|
$baseDir = rtrim($baseDir, '/\\') . DIRECTORY_SEPARATOR;
|
||||||
|
|
||||||
$this->prefixes[$prefix] = $baseDir;
|
$this->prefixes[$prefix] = $baseDir;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -492,6 +492,8 @@ final class ReportService
|
|||||||
$testResult['messagetype'] = 'error';
|
$testResult['messagetype'] = 'error';
|
||||||
$testResult['message'] = sprintf("QUERY FAILED:\n%s", $e->getMessage());
|
$testResult['message'] = sprintf("QUERY FAILED:\n%s", $e->getMessage());
|
||||||
|
|
||||||
|
$testResult['message'] .= "\n\r".$compiled;
|
||||||
|
|
||||||
return $testResult;
|
return $testResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -500,6 +502,9 @@ final class ReportService
|
|||||||
if(count($rows) < 101){
|
if(count($rows) < 101){
|
||||||
$message = sprintf('Query successful: %s datasets found', count($rows));
|
$message = sprintf('Query successful: %s datasets found', count($rows));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$message .= "\n\r".print_r($rows[0],true);
|
||||||
|
|
||||||
$testResult = [
|
$testResult = [
|
||||||
'messagetype' => 'success',
|
'messagetype' => 'success',
|
||||||
'message' => $message,
|
'message' => $message,
|
||||||
|
|||||||
@@ -335,7 +335,7 @@ class TicketImportHelper
|
|||||||
$queue_id = $this->mailAccount->getTicketQueueId();
|
$queue_id = $this->mailAccount->getTicketQueueId();
|
||||||
|
|
||||||
if (!empty($queue_id)) {
|
if (!empty($queue_id)) {
|
||||||
$queue_label = $this->db->Select("SELECT label FROM warteschlangen WHERE id = ".$queue_id." LIMIT 1");
|
$queue_label = $this->db->Select("SELECT label FROM warteschlangen WHERE label = '".$queue_id."' LIMIT 1");
|
||||||
}
|
}
|
||||||
|
|
||||||
$insertTicket = "INSERT INTO `ticket` (
|
$insertTicket = "INSERT INTO `ticket` (
|
||||||
@@ -408,9 +408,6 @@ class TicketImportHelper
|
|||||||
$this->logger->error('Failed to insert ticket message into db', ['exception' => $e]);
|
$this->logger->error('Failed to insert ticket message into db', ['exception' => $e]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$this->applyTicketRules($messageId);
|
|
||||||
|
|
||||||
return($result);
|
return($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -440,7 +437,7 @@ class TicketImportHelper
|
|||||||
|
|
||||||
foreach ($ruleArray as $rule) {
|
foreach ($ruleArray as $rule) {
|
||||||
|
|
||||||
$this->logger->debug('ticket rule applies',['rule_id' => $rule['id']]);
|
$this->logger->debug('ticket rule applies',['rule_id' => $rule['id'],'rule' => print_r($rule,true)]);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
$update = $this->db->update();
|
$update = $this->db->update();
|
||||||
@@ -461,12 +458,16 @@ class TicketImportHelper
|
|||||||
$this->db->perform($sql, ['ticket_id' => $ticketId]);
|
$this->db->perform($sql, ['ticket_id' => $ticketId]);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ($rule['is_spam'] === 1) {
|
if ($rule['is_spam'] == 1) {
|
||||||
$sql = "UPDATE `ticket_nachricht` SET `status` = \'spam\' WHERE `id` = '".$ticketMessageId."'";
|
$status = 'spam';
|
||||||
$this->db->Update($sql);
|
} else {
|
||||||
|
$status = 'neu';
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = "UPDATE `ticket` SET `dsgvo` = '".$rule['is_gdpr_relevant']."', `privat` = '".$rule['is_private']."', `prio` = '".$rule['priority']."', `warteschlange` = '".$rule['queue_id']."' WHERE `id` = '".$ticketId."'";
|
$sql = "UPDATE `ticket` SET `dsgvo` = '".$rule['is_gdpr_relevant']."', `privat` = '".$rule['is_private']."', `prio` = '".$rule['priority']."', `warteschlange` = '".$rule['queue_id']."', `status` = '".$status."' WHERE `id` = '".$ticketId."'";
|
||||||
|
|
||||||
|
$this->logger->debug('ticket rule sql',['sql' => $sql]);
|
||||||
|
|
||||||
$this->db->Update($sql);
|
$this->db->Update($sql);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -511,7 +512,10 @@ class TicketImportHelper
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
} catch (Throwable $e) {
|
} catch (Throwable $e) {
|
||||||
$this->logger->error('Error during email import '.$messageNumber, ['message' => substr(print_r($message,true),0,1000)]);
|
|
||||||
|
$exception_message = $e->getMessage();
|
||||||
|
|
||||||
|
$this->logger->error('Error during email import '.$messageNumber, ['exc-message' => $exception_message ,'message2' => substr(print_r($message,true),0,1000)]);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -573,14 +577,17 @@ class TicketImportHelper
|
|||||||
$this->logger->debug('Text (converted)',['plain' => $action, 'html' => $action_html]);
|
$this->logger->debug('Text (converted)',['plain' => $action, 'html' => $action_html]);
|
||||||
|
|
||||||
// Import database emailbackup
|
// Import database emailbackup
|
||||||
|
try {
|
||||||
$date = $message->getDate();
|
$date = $message->getDate();
|
||||||
if (is_null($date)) { // This should not be happening -> Todo check getDate function
|
}
|
||||||
$this->logger->debug('Null date',['subject' => $message->getSubject(), $message->getHeader('date')->getValue()]);
|
catch (exception $e) {
|
||||||
|
$this->logger->debug('Invalid date',['exc-message' => $e->getMessage(),'subject' => $message->getSubject(), $message->getHeader('date')->getValue()]);
|
||||||
return(false);
|
return(false);
|
||||||
} else {
|
}
|
||||||
|
|
||||||
$timestamp = $date->getTimestamp();
|
$timestamp = $date->getTimestamp();
|
||||||
$frommd5 = md5($from . $subject . $timestamp);
|
$frommd5 = md5($from . $subject . $timestamp);
|
||||||
}
|
|
||||||
$empfang = $date->format('Y-m-d H:i:s');
|
$empfang = $date->format('Y-m-d H:i:s');
|
||||||
$sql = "SELECT COUNT(id)
|
$sql = "SELECT COUNT(id)
|
||||||
FROM `emailbackup_mails`
|
FROM `emailbackup_mails`
|
||||||
@@ -693,6 +700,12 @@ class TicketImportHelper
|
|||||||
$from
|
$from
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Only for new tickets: apply filter rules
|
||||||
|
if (!$ticketexists) {
|
||||||
|
$this->applyTicketRules($ticketnachricht);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if ($ticketnachricht > 0 && $emailbackup_mails_id > 0) {
|
if ($ticketnachricht > 0 && $emailbackup_mails_id > 0) {
|
||||||
$this->db->Update(
|
$this->db->Update(
|
||||||
"UPDATE `emailbackup_mails`
|
"UPDATE `emailbackup_mails`
|
||||||
@@ -837,8 +850,8 @@ class TicketImportHelper
|
|||||||
$this->mailAccount->isAutoresponseEnabled()
|
$this->mailAccount->isAutoresponseEnabled()
|
||||||
&& $this->mailAccount->getAutoresponseText() !== ''
|
&& $this->mailAccount->getAutoresponseText() !== ''
|
||||||
&& (
|
&& (
|
||||||
$this->erpApi->AutoresponderBlacklist($from) !== 1
|
// $this->erpApi->AutoresponderBlacklist($from) !== 1 ||
|
||||||
|| $this->mailAccount->isAutoresponseLimitEnabled() === false
|
$this->mailAccount->isAutoresponseLimitEnabled() === false
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
|||||||
@@ -30,10 +30,10 @@ $factoryServiceMap = @include $serviceCacheFile;
|
|||||||
|
|
||||||
if (!is_file($serviceCacheFile)) {
|
if (!is_file($serviceCacheFile)) {
|
||||||
|
|
||||||
// Installer ausführen wenn ServiceMap nicht vorhanden ist
|
// Installer ausführen, wenn ServiceMap nicht vorhanden ist
|
||||||
$resolver = new Psr4ClassNameResolver();
|
$resolver = new Psr4ClassNameResolver();
|
||||||
$resolver->addNamespace('Xentral\\', __DIR__);
|
$resolver->addNamespace('Xentral\\', __DIR__);
|
||||||
$resolver->excludeFile(__DIR__ . '/bootstrap.php');
|
$resolver->excludeFile(__DIR__ . DIRECTORY_SEPARATOR . 'bootstrap.php');
|
||||||
|
|
||||||
$generator = new ClassMapGenerator($resolver, __DIR__);
|
$generator = new ClassMapGenerator($resolver, __DIR__);
|
||||||
$installer = new Installer($generator, $resolver);
|
$installer = new Installer($generator, $resolver);
|
||||||
|
|||||||
@@ -125,9 +125,9 @@ $firmendatenid = $app->DB->Select("SELECT MAX(id) FROM firmendaten LIMIT 1");
|
|||||||
);
|
);
|
||||||
try {
|
try {
|
||||||
if($anzargs > 2){
|
if($anzargs > 2){
|
||||||
$message .= $app->erp->LagerSync($articleId, true, $shopByIds);
|
$message .= $app->erp->LagerSync($articleId, false, $shopByIds); // 2nd parameter is print_echo -> prints via echo to logfile (big print_r)
|
||||||
}else{
|
}else{
|
||||||
$message .= $app->erp->LagerSync($articleId, true);
|
$message .= $app->erp->LagerSync($articleId, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception $exception) {
|
catch (Exception $exception) {
|
||||||
|
|||||||
@@ -1252,7 +1252,7 @@ Options -Indexes
|
|||||||
# Deny access to all *.php
|
# Deny access to all *.php
|
||||||
Order deny,allow
|
Order deny,allow
|
||||||
Allow from all
|
Allow from all
|
||||||
<FilesMatch "\.(css|jpg|jpeg|gif|png|svg|js)$">
|
<FilesMatch "\.(css|jpg|jpeg|gif|png|svg|js|ico|css.map|js.map)$">
|
||||||
Order Allow,Deny
|
Order Allow,Deny
|
||||||
Allow from all
|
Allow from all
|
||||||
</FilesMatch>
|
</FilesMatch>
|
||||||
@@ -1271,6 +1271,10 @@ Allow from all
|
|||||||
Order Allow,Deny
|
Order Allow,Deny
|
||||||
Allow from all
|
Allow from all
|
||||||
</Files>
|
</Files>
|
||||||
|
<Files robots.txt>
|
||||||
|
Order Allow,Deny
|
||||||
|
Allow from all
|
||||||
|
</Files>
|
||||||
# end
|
# end
|
||||||
');
|
');
|
||||||
|
|
||||||
|
|||||||
@@ -1424,7 +1424,7 @@ class DB{
|
|||||||
if(empty($TableName) || empty($IDFieldName) || empty($IDToDuplicate)) {
|
if(empty($TableName) || empty($IDFieldName) || empty($IDToDuplicate)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
$sql = "SELECT * FROM $TableName WHERE $IDFieldName = $IDToDuplicate";
|
$sql = "SELECT * FROM $TableName WHERE $IDFieldName = $IDToDuplicate";
|
||||||
$result = @mysqli_query($this->connection,$sql);
|
$result = @mysqli_query($this->connection,$sql);
|
||||||
if(empty($result)) {
|
if(empty($result)) {
|
||||||
@@ -1442,6 +1442,23 @@ class DB{
|
|||||||
}
|
}
|
||||||
$sql .= $RowKeys[$i] . " = '" . $this->real_escape_string($RowValues[$i]) . "'";
|
$sql .= $RowKeys[$i] . " = '" . $this->real_escape_string($RowValues[$i]) . "'";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@mysqli_query($this->connection,$sql);
|
||||||
|
*/
|
||||||
|
|
||||||
|
$sql = "INSERT INTO ".$TableName." SELECT ";
|
||||||
|
$fields = $this->GetColAssocArray($TableName);
|
||||||
|
$comma = "";
|
||||||
|
foreach ($fields as $field => $value) {
|
||||||
|
if ($field != $IDFieldName) {
|
||||||
|
$sql .= $comma."`".$field."`";
|
||||||
|
} else {
|
||||||
|
$sql .= "NULL";
|
||||||
|
}
|
||||||
|
$comma = ", ";
|
||||||
|
}
|
||||||
|
$sql .= " FROM ".$TableName." WHERE id = ".$IDToDuplicate;
|
||||||
|
|
||||||
@mysqli_query($this->connection,$sql);
|
@mysqli_query($this->connection,$sql);
|
||||||
|
|
||||||
$id = $this->GetInsertID();
|
$id = $this->GetInsertID();
|
||||||
|
|||||||
@@ -426,10 +426,12 @@
|
|||||||
}
|
}
|
||||||
}elseif(is_object($xml))
|
}elseif(is_object($xml))
|
||||||
{
|
{
|
||||||
|
$xml = (array) $xml;
|
||||||
if(count($xml) > 0)
|
if(count($xml) > 0)
|
||||||
{
|
{
|
||||||
foreach($xml as $k => $v)
|
foreach($xml as $k => $v)
|
||||||
{
|
{
|
||||||
|
$v = (array) $v;
|
||||||
if(count($v) > 0)
|
if(count($v) > 0)
|
||||||
{
|
{
|
||||||
if($lvl < 10)
|
if($lvl < 10)
|
||||||
|
|||||||
+264
-108
@@ -1259,7 +1259,7 @@ class YUI {
|
|||||||
}elseif($check[0]['sort'] < $check2[0]['pos'])
|
}elseif($check[0]['sort'] < $check2[0]['pos'])
|
||||||
{
|
{
|
||||||
$kinderartikel = $this->app->DB->SelectArr("SELECT id,sort FROM ".$module."_position WHERE explodiert_parent ='".$check[0]['id']."' ORDER BY sort ASC");
|
$kinderartikel = $this->app->DB->SelectArr("SELECT id,sort FROM ".$module."_position WHERE explodiert_parent ='".$check[0]['id']."' ORDER BY sort ASC");
|
||||||
if(count($kinderartikel)){
|
if((empty($kinderartikel)?0:count($kinderartikel))){
|
||||||
$maxsortkind = $this->app->DB->Select("SELECT max(sort) FROM ".$module."_position WHERE explodiert_parent ='".$check[0]['id']."'");
|
$maxsortkind = $this->app->DB->Select("SELECT max(sort) FROM ".$module."_position WHERE explodiert_parent ='".$check[0]['id']."'");
|
||||||
$zuverschiebendezwischenpositionen = $this->app->DB->SelectArr("SELECT ID,pos FROM beleg_zwischenpositionen WHERE doctype='$module' AND doctypeid='$id' AND pos <='$maxsortkind' AND pos >= '".$check[0]['sort']."'");
|
$zuverschiebendezwischenpositionen = $this->app->DB->SelectArr("SELECT ID,pos FROM beleg_zwischenpositionen WHERE doctype='$module' AND doctypeid='$id' AND pos <='$maxsortkind' AND pos >= '".$check[0]['sort']."'");
|
||||||
$zwipos = "(".implode(",", $zuverschiebendezwischenpositionen).")";
|
$zwipos = "(".implode(",", $zuverschiebendezwischenpositionen).")";
|
||||||
@@ -1273,13 +1273,13 @@ class YUI {
|
|||||||
$this->app->DB->Update("UPDATE ".$module."_position SET sort = ".$check2[0]['pos']." WHERE $module = '$id' AND id = '".$check[0]['id']."'");
|
$this->app->DB->Update("UPDATE ".$module."_position SET sort = ".$check2[0]['pos']." WHERE $module = '$id' AND id = '".$check[0]['id']."'");
|
||||||
if(!empty($kinderartikel)){
|
if(!empty($kinderartikel)){
|
||||||
$elternsort = $check[0]['sort'];
|
$elternsort = $check[0]['sort'];
|
||||||
$ckinderartikel = count($kinderartikel);
|
$ckinderartikel = (empty($kinderartikel)?0:count($kinderartikel));
|
||||||
for ($i=0; $i < $ckinderartikel; $i++) {
|
for ($i=0; $i < $ckinderartikel; $i++) {
|
||||||
$this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos = pos - 1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos < '".($check2[0]['pos'])."' AND pos >= '".$check[0]['sort']."'");
|
$this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos = pos - 1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos < '".($check2[0]['pos'])."' AND pos >= '".$check[0]['sort']."'");
|
||||||
$this->app->DB->Update("UPDATE ".$module."_position SET sort = sort - 1 WHERE $module = '$id' AND sort > '$elternsort' AND sort <= '".$check2[0]['pos']."'");
|
$this->app->DB->Update("UPDATE ".$module."_position SET sort = sort - 1 WHERE $module = '$id' AND sort > '$elternsort' AND sort <= '".$check2[0]['pos']."'");
|
||||||
$this->app->DB->Update("UPDATE ".$module."_position SET sort = '".($check2[0]['pos']-$i)."' WHERE $module = '$id' AND id = '".$kinderartikel[$i]['id']."' LIMIT 1");
|
$this->app->DB->Update("UPDATE ".$module."_position SET sort = '".($check2[0]['pos']-$i)."' WHERE $module = '$id' AND id = '".$kinderartikel[$i]['id']."' LIMIT 1");
|
||||||
}
|
}
|
||||||
if(count($zuverschiebendezwischenpositionen)){
|
if((empty($zuverschiebendezwischenpositionen)?0:count($zuverschiebendezwischenpositionen))){
|
||||||
$positionsanzahl = $this->app->DB->Select("SELECT sort-".$check[0]['sort']." FROM auftrag_position WHERE id = '".$check[0]['id']."'");
|
$positionsanzahl = $this->app->DB->Select("SELECT sort-".$check[0]['sort']." FROM auftrag_position WHERE id = '".$check[0]['id']."'");
|
||||||
foreach ($zuverschiebendezwischenpositionen as $zkey => $zvalue) {
|
foreach ($zuverschiebendezwischenpositionen as $zkey => $zvalue) {
|
||||||
$this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos = ".$zvalue['pos']." + $positionsanzahl WHERE id = '".$zvalue['ID']."'");
|
$this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos = ".$zvalue['pos']." + $positionsanzahl WHERE id = '".$zvalue['ID']."'");
|
||||||
@@ -1293,7 +1293,7 @@ class YUI {
|
|||||||
{
|
{
|
||||||
$kinderartikel = $this->app->DB->SelectArr("SELECT id,sort FROM ".$module."_position WHERE explodiert_parent ='".$check[0]['id']."' ORDER BY sort ASC");
|
$kinderartikel = $this->app->DB->SelectArr("SELECT id,sort FROM ".$module."_position WHERE explodiert_parent ='".$check[0]['id']."' ORDER BY sort ASC");
|
||||||
$zuverschiebendezwischenpositionen= array(0);
|
$zuverschiebendezwischenpositionen= array(0);
|
||||||
if(count($kinderartikel)){
|
if((empty($kinderartikel)?0:count($kinderartikel))){
|
||||||
$maxsortkind = $this->app->DB->Select("SELECT max(sort) FROM ".$module."_position WHERE explodiert_parent ='".$check[0]['id']."'");
|
$maxsortkind = $this->app->DB->Select("SELECT max(sort) FROM ".$module."_position WHERE explodiert_parent ='".$check[0]['id']."'");
|
||||||
$zuverschiebendezwischenpositionentmp = $this->app->DB->SelectArr("SELECT ID FROM beleg_zwischenpositionen WHERE doctype='$module' AND doctypeid='$id' AND pos <='$maxsortkind' AND pos >= '".$check[0]['sort']."'");
|
$zuverschiebendezwischenpositionentmp = $this->app->DB->SelectArr("SELECT ID FROM beleg_zwischenpositionen WHERE doctype='$module' AND doctypeid='$id' AND pos <='$maxsortkind' AND pos >= '".$check[0]['sort']."'");
|
||||||
$zuverschiebendezwischenpositionen = array(0);
|
$zuverschiebendezwischenpositionen = array(0);
|
||||||
@@ -1319,7 +1319,7 @@ class YUI {
|
|||||||
if(!empty($kinderartikel)){
|
if(!empty($kinderartikel)){
|
||||||
$elternsort = $check2[0]['pos']+1;
|
$elternsort = $check2[0]['pos']+1;
|
||||||
$zielpos = $elternsort+1;
|
$zielpos = $elternsort+1;
|
||||||
$ckinderartikel = count($kinderartikel);
|
$ckinderartikel = (empty($kinderartikel)?0:count($kinderartikel));
|
||||||
for ($i=0; $i < $ckinderartikel; $i++) {
|
for ($i=0; $i < $ckinderartikel; $i++) {
|
||||||
$this->app->DB->Update("UPDATE ".$module."_position SET sort = sort + 1 WHERE $module = '$id' AND sort < '".$kinderartikel[$i]['sort']."' AND sort > '".($elternsort+$i)."'");
|
$this->app->DB->Update("UPDATE ".$module."_position SET sort = sort + 1 WHERE $module = '$id' AND sort < '".$kinderartikel[$i]['sort']."' AND sort > '".($elternsort+$i)."'");
|
||||||
$this->app->DB->Update("UPDATE ".$module."_position SET sort = '".($zielpos+$i)."' WHERE $module = '$id' AND id = '".$kinderartikel[$i]['id']."' LIMIT 1");
|
$this->app->DB->Update("UPDATE ".$module."_position SET sort = '".($zielpos+$i)."' WHERE $module = '$id' AND id = '".$kinderartikel[$i]['id']."' LIMIT 1");
|
||||||
@@ -1355,12 +1355,12 @@ class YUI {
|
|||||||
if($check[0]['sort'] < $check2[0]['sort'])
|
if($check[0]['sort'] < $check2[0]['sort'])
|
||||||
{
|
{
|
||||||
$maxsort = $check[0]['sort'];
|
$maxsort = $check[0]['sort'];
|
||||||
$zuverschiebendezwischenpositionen = '';
|
$zuverschiebendezwischenpositionen = array(0);
|
||||||
$kinderartikel = $this->app->DB->SelectArr("SELECT id,sort FROM ".$module."_position WHERE explodiert_parent ='".$check[0]['id']."' ORDER BY sort ASC");
|
$kinderartikel = $this->app->DB->SelectArr("SELECT id,sort FROM ".$module."_position WHERE explodiert_parent ='".$check[0]['id']."' ORDER BY sort ASC");
|
||||||
if(count($kinderartikel)){
|
if((empty($kinderartikel)?0:count($kinderartikel))){
|
||||||
$maxsortkind = $this->app->DB->Select("SELECT max(sort) FROM ".$module."_position WHERE explodiert_parent ='".$check[0]['id']."'");
|
$maxsortkind = $this->app->DB->Select("SELECT max(sort) FROM ".$module."_position WHERE explodiert_parent ='".$check[0]['id']."'");
|
||||||
$zuverschiebendezwischenpositionentmp = $this->app->DB->SelectArr("SELECT ID FROM beleg_zwischenpositionen WHERE doctype='$module' AND doctypeid='$id' AND pos >='$maxsort' AND pos <= '$maxsortkind'");
|
$zuverschiebendezwischenpositionentmp = $this->app->DB->SelectArr("SELECT ID FROM beleg_zwischenpositionen WHERE doctype='$module' AND doctypeid='$id' AND pos >='$maxsort' AND pos <= '$maxsortkind'");
|
||||||
$zuverschiebendezwischenpositionen = array();
|
$zuverschiebendezwischenpositionen = array(0);
|
||||||
if(is_array($zuverschiebendezwischenpositionentmp)){
|
if(is_array($zuverschiebendezwischenpositionentmp)){
|
||||||
foreach ($zuverschiebendezwischenpositionentmp as $key => $value) {
|
foreach ($zuverschiebendezwischenpositionentmp as $key => $value) {
|
||||||
$zuverschiebendezwischenpositionen[] = $value['ID'];
|
$zuverschiebendezwischenpositionen[] = $value['ID'];
|
||||||
@@ -1376,10 +1376,10 @@ class YUI {
|
|||||||
$this->app->DB->Update("UPDATE ".$module."_position SET sort = '".$check2[0]['sort']."' WHERE $module = '$id' AND id = '".$check[0]['id']."' LIMIT 1");
|
$this->app->DB->Update("UPDATE ".$module."_position SET sort = '".$check2[0]['sort']."' WHERE $module = '$id' AND id = '".$check[0]['id']."' LIMIT 1");
|
||||||
|
|
||||||
if(!empty($kinderartikel)){
|
if(!empty($kinderartikel)){
|
||||||
$differenzwert = $check2[0]['sort'] - $check[0]['sort']-count($kinderartikel);
|
$differenzwert = $check2[0]['sort'] - $check[0]['sort']-(empty($kinderartikel)?0:count($kinderartikel));
|
||||||
$this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos=pos+$differenzwert WHERE id IN $zwipos");
|
$this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos=pos+$differenzwert WHERE id IN $zwipos");
|
||||||
$elternsort = $check2[0]['sort'];
|
$elternsort = $check2[0]['sort'];
|
||||||
$ckinderartikel = count($kinderartikel);
|
$ckinderartikel = (empty($kinderartikel)?0:count($kinderartikel));
|
||||||
for ($i=0; $i < $ckinderartikel; $i++) {
|
for ($i=0; $i < $ckinderartikel; $i++) {
|
||||||
$this->app->DB->Update("UPDATE ".$module."_position SET sort = sort - 1 WHERE $module = '$id' AND sort > '".$kinderartikel[$i]['sort']."' AND sort < '$elternsort'");
|
$this->app->DB->Update("UPDATE ".$module."_position SET sort = sort - 1 WHERE $module = '$id' AND sort > '".$kinderartikel[$i]['sort']."' AND sort < '$elternsort'");
|
||||||
$this->app->DB->Update("UPDATE ".$module."_position SET sort = '$elternsort' WHERE $module = '$id' AND id = '".$kinderartikel[$i]['id']."' LIMIT 1");
|
$this->app->DB->Update("UPDATE ".$module."_position SET sort = '$elternsort' WHERE $module = '$id' AND id = '".$kinderartikel[$i]['id']."' LIMIT 1");
|
||||||
@@ -1412,7 +1412,7 @@ class YUI {
|
|||||||
$differenzwert = $check[0]['sort'] - ($check2[0]['sort'] + 1);
|
$differenzwert = $check[0]['sort'] - ($check2[0]['sort'] + 1);
|
||||||
$this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos=pos-$differenzwert WHERE id IN $zwipos");
|
$this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos=pos-$differenzwert WHERE id IN $zwipos");
|
||||||
$elternsort = $check2[0]['sort']+1;
|
$elternsort = $check2[0]['sort']+1;
|
||||||
$ckinderartikel = count($kinderartikel);
|
$ckinderartikel = (empty($kinderartikel)?0:count($kinderartikel));
|
||||||
for ($i=0; $i < $ckinderartikel; $i++) {
|
for ($i=0; $i < $ckinderartikel; $i++) {
|
||||||
$this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos = pos + 1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos >= '".$check2[0]['sort']."' AND pos <= '$maxsortkind' AND NOT id IN $zwipos");
|
$this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos = pos + 1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos >= '".$check2[0]['sort']."' AND pos <= '$maxsortkind' AND NOT id IN $zwipos");
|
||||||
$this->app->DB->Update("UPDATE ".$module."_position SET sort = sort + 1 WHERE $module = '$id' AND sort < '".$maxsortkind."' AND sort > '$elternsort'");
|
$this->app->DB->Update("UPDATE ".$module."_position SET sort = sort + 1 WHERE $module = '$id' AND sort < '".$maxsortkind."' AND sort > '$elternsort'");
|
||||||
@@ -1455,6 +1455,8 @@ class YUI {
|
|||||||
$cmd = $this->app->Secure->GetGET('cmd');
|
$cmd = $this->app->Secure->GetGET('cmd');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$priceCol = 'b.preis';
|
||||||
|
|
||||||
if($cmd === 'getpreise') {
|
if($cmd === 'getpreise') {
|
||||||
$ret = null;
|
$ret = null;
|
||||||
//$scol = $this->app->Secure->GetPOST('scol');
|
//$scol = $this->app->Secure->GetPOST('scol');
|
||||||
@@ -1472,7 +1474,6 @@ class YUI {
|
|||||||
$projekt = $moduleArr['projekt'];//$this->app->DB->Select("SELECT projekt FROM $module WHERE id = '$id' LIMIT 1");
|
$projekt = $moduleArr['projekt'];//$this->app->DB->Select("SELECT projekt FROM $module WHERE id = '$id' LIMIT 1");
|
||||||
$adresse = $moduleArr['adresse'];//$this->app->DB->Select("SELECT adresse FROM $module WHERE id = '$id' LIMIT 1");
|
$adresse = $moduleArr['adresse'];//$this->app->DB->Select("SELECT adresse FROM $module WHERE id = '$id' LIMIT 1");
|
||||||
$funktion = ucfirst($module).'MitUmsatzeuer';
|
$funktion = ucfirst($module).'MitUmsatzeuer';
|
||||||
$priceCol = 'b.preis';
|
|
||||||
$join = '';
|
$join = '';
|
||||||
$anrede = 'firma';
|
$anrede = 'firma';
|
||||||
if(!$this->app->erp->AnzeigeBelegNettoAdresse($anrede, $module, $projekt, $adresse, $id)
|
if(!$this->app->erp->AnzeigeBelegNettoAdresse($anrede, $module, $projekt, $adresse, $id)
|
||||||
@@ -1507,7 +1508,7 @@ class YUI {
|
|||||||
$positionsIds = [];
|
$positionsIds = [];
|
||||||
foreach($prices as $priceInForm) {
|
foreach($prices as $priceInForm) {
|
||||||
$priceSplit = explode(':', $priceInForm);
|
$priceSplit = explode(':', $priceInForm);
|
||||||
if(count($priceSplit) == 2) {
|
if((empty($priceSplit)?0:count($priceSplit)) == 2) {
|
||||||
$elementId = $priceSplit[0];
|
$elementId = $priceSplit[0];
|
||||||
$price = trim($priceSplit[1]);
|
$price = trim($priceSplit[1]);
|
||||||
$idSplit = explode('split', $elementId);
|
$idSplit = explode('split', $elementId);
|
||||||
@@ -1519,7 +1520,7 @@ class YUI {
|
|||||||
}
|
}
|
||||||
foreach($quantities as $quantityInForm) {
|
foreach($quantities as $quantityInForm) {
|
||||||
$quantitySplittet = explode(':', $quantityInForm);
|
$quantitySplittet = explode(':', $quantityInForm);
|
||||||
if(count($quantitySplittet) == 2) {
|
if((empty($quantitySplittet)?0:count($quantitySplittet)) == 2) {
|
||||||
$elementId = $quantitySplittet[0];
|
$elementId = $quantitySplittet[0];
|
||||||
$quantity = $this->app->erp->ReplaceMenge(1, trim($quantitySplittet[1]), 1);
|
$quantity = $this->app->erp->ReplaceMenge(1, trim($quantitySplittet[1]), 1);
|
||||||
if(!is_numeric($quantity)) {
|
if(!is_numeric($quantity)) {
|
||||||
@@ -1541,7 +1542,7 @@ class YUI {
|
|||||||
if(!empty($positionsIds)) {
|
if(!empty($positionsIds)) {
|
||||||
$positions = $this->app->DB->SelectArr(
|
$positions = $this->app->DB->SelectArr(
|
||||||
sprintf(
|
sprintf(
|
||||||
"SELECT b.id, %s AS `preis`, b.menge
|
"SELECT b.id, %s AS `preis`, trim(b.menge)+0 as menge
|
||||||
FROM `%s` AS `b`
|
FROM `%s` AS `b`
|
||||||
%s
|
%s
|
||||||
WHERE b.`%s` = %d AND b.id IN (%s)",
|
WHERE b.`%s` = %d AND b.id IN (%s)",
|
||||||
@@ -1560,8 +1561,8 @@ class YUI {
|
|||||||
) {
|
) {
|
||||||
$price = rtrim(number_format($position['preis'], 8, ',', '.'), '0');
|
$price = rtrim(number_format($position['preis'], 8, ',', '.'), '0');
|
||||||
$priceSplit = explode(',', $price);
|
$priceSplit = explode(',', $price);
|
||||||
if(strlen($priceSplit[count($priceSplit)-1]) < 2) {
|
if(strlen($priceSplit[(empty($priceSplit)?0:count($priceSplit))-1]) < 2) {
|
||||||
$price .= str_repeat('0',2-strlen($priceSplit[count($priceSplit)-1]));
|
$price .= str_repeat('0',2-strlen($priceSplit[(empty($priceSplit)?0:count($priceSplit))-1]));
|
||||||
}
|
}
|
||||||
$ret[] = ['elid' => $arr[$positionId]['price_id'], 'value' => $price];
|
$ret[] = ['elid' => $arr[$positionId]['price_id'], 'value' => $price];
|
||||||
}
|
}
|
||||||
@@ -2251,7 +2252,7 @@ class YUI {
|
|||||||
$allestaffelpreise = array();
|
$allestaffelpreise = array();
|
||||||
$allestaffelpreise = $this->app->DB->SelectArr("SELECT * FROM verkaufspreise WHERE artikel='$artikel_id' AND geloescht = 0 AND (gueltig_bis >= '".date("Y-m-d")."' OR gueltig_bis = '0000-00-00') AND (gueltig_ab <= '".date("Y-m-d")."' OR gueltig_ab = '0000-00-00') AND (adresse='0' OR adresse='$adresse') AND (gruppe='0') AND inbelegausblenden=0");
|
$allestaffelpreise = $this->app->DB->SelectArr("SELECT * FROM verkaufspreise WHERE artikel='$artikel_id' AND geloescht = 0 AND (gueltig_bis >= '".date("Y-m-d")."' OR gueltig_bis = '0000-00-00') AND (gueltig_ab <= '".date("Y-m-d")."' OR gueltig_ab = '0000-00-00') AND (adresse='0' OR adresse='$adresse') AND (gruppe='0') AND inbelegausblenden=0");
|
||||||
$anzeigepreise = array();
|
$anzeigepreise = array();
|
||||||
for ($i=0; $i < count($allestaffelpreise); $i++) {
|
for ($i=0; $i < (empty($allestaffelpreise)?0:count($allestaffelpreise)); $i++) {
|
||||||
if(!isset($anzeigepreise[$allestaffelpreise[$i]['ab_menge']])){
|
if(!isset($anzeigepreise[$allestaffelpreise[$i]['ab_menge']])){
|
||||||
$anzeigepreise[$allestaffelpreise[$i]['ab_menge']] = $allestaffelpreise[$i];
|
$anzeigepreise[$allestaffelpreise[$i]['ab_menge']] = $allestaffelpreise[$i];
|
||||||
}else{
|
}else{
|
||||||
@@ -2260,7 +2261,7 @@ class YUI {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(count($anzeigepreise)>1){
|
if((empty($anzeigepreise)?0:count($anzeigepreise))>1){
|
||||||
ksort($anzeigepreise);
|
ksort($anzeigepreise);
|
||||||
$staffelpreistext = '';
|
$staffelpreistext = '';
|
||||||
$belegsprache = $this->app->DB->Select("SELECT sprache FROM $module WHERE id='$id' LIMIT 1");
|
$belegsprache = $this->app->DB->Select("SELECT sprache FROM $module WHERE id='$id' LIMIT 1");
|
||||||
@@ -2577,11 +2578,19 @@ class YUI {
|
|||||||
if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(b.bezeichnung,1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),b.bezeichnung))
|
if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(b.bezeichnung,1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),b.bezeichnung))
|
||||||
) $erweiterte_ansicht)
|
) $erweiterte_ansicht)
|
||||||
as Artikel,
|
as Artikel,
|
||||||
|
p.abkuerzung as projekt,
|
||||||
|
b.nummer as nummer,
|
||||||
|
DATE_FORMAT(lieferdatum,'%d.%m.%Y') as lieferdatum,
|
||||||
|
trim(b.menge)+0 as menge,
|
||||||
|
".$this->FormatPreis($preiscell)." as preis,
|
||||||
|
b.waehrung,
|
||||||
|
".$this->FormatPreis('b.rabatt')." as rabatt,";
|
||||||
|
|
||||||
|
if ($this->app->erp->RechteVorhanden('auftrag','einkaufspreise')) {
|
||||||
|
$sql .= $this->FormatPreis('einkaufspreis')." as einkaufspreis,
|
||||||
p.abkuerzung as projekt, b.nummer as nummer, DATE_FORMAT(lieferdatum,'%d.%m.%Y') as lieferdatum, ".$this->app->erp->FormatMenge('b.menge')." as menge, ".$this->FormatPreis($preiscell)." as preis,b.waehrung, ".$this->FormatPreis('b.rabatt')." as rabatt, ";
|
CONCAT(".$this->app->erp->FormatPreis("ROUND(deckungsbeitrag*100,2)",2).",'%') AS DB,
|
||||||
|
";
|
||||||
|
}
|
||||||
|
|
||||||
$sql .= "b.id as id
|
$sql .= "b.id as id
|
||||||
FROM $table b
|
FROM $table b
|
||||||
@@ -2600,7 +2609,7 @@ class YUI {
|
|||||||
as Artikel,
|
as Artikel,
|
||||||
|
|
||||||
|
|
||||||
p.abkuerzung as projekt, b.nummer as nummer, DATE_FORMAT(lieferdatum,'%d.%m.%Y') as lieferdatum, ".$this->app->erp->FormatMenge('b.menge')." as menge, if(b.geliefert, ".$this->app->erp->FormatMenge('b.geliefert')." ,'-') as geliefert, b.id as id
|
p.abkuerzung as projekt, b.nummer as nummer, DATE_FORMAT(lieferdatum,'%d.%m.%Y') as lieferdatum, trim(b.menge)+0 as menge, if(b.geliefert, ".$this->app->erp->FormatMenge('b.geliefert')." ,'-') as geliefert, b.id as id
|
||||||
FROM $table b
|
FROM $table b
|
||||||
LEFT JOIN artikel a ON a.id=b.artikel LEFT JOIN projekt p ON b.projekt=p.id
|
LEFT JOIN artikel a ON a.id=b.artikel LEFT JOIN projekt p ON b.projekt=p.id
|
||||||
WHERE b.$module='$id'";
|
WHERE b.$module='$id'";
|
||||||
@@ -2655,7 +2664,7 @@ class YUI {
|
|||||||
|
|
||||||
|
|
||||||
p.abkuerzung as projekt, b.nummer as nummer, DATE_FORMAT(lieferdatum,'%d.%m.%Y') as lieferdatum,
|
p.abkuerzung as projekt, b.nummer as nummer, DATE_FORMAT(lieferdatum,'%d.%m.%Y') as lieferdatum,
|
||||||
".$this->app->erp->FormatMenge('b.menge')." as menge,
|
trim(b.menge)+0 as menge,
|
||||||
if(b.geliefert, ".$this->app->erp->FormatMenge('b.geliefert')." ,'-') as geliefert,
|
if(b.geliefert, ".$this->app->erp->FormatMenge('b.geliefert')." ,'-') as geliefert,
|
||||||
if(b.menge_eingang, ".$this->app->erp->FormatMenge('b.menge_eingang')." ,'-') as `Eingang`,
|
if(b.menge_eingang, ".$this->app->erp->FormatMenge('b.menge_eingang')." ,'-') as `Eingang`,
|
||||||
if(b.menge_gutschrift, ".$this->app->erp->FormatMenge('b.menge_gutschrift')." ,'-') as `Menge Gutschrift`,
|
if(b.menge_gutschrift, ".$this->app->erp->FormatMenge('b.menge_gutschrift')." ,'-') as `Menge Gutschrift`,
|
||||||
@@ -2677,7 +2686,7 @@ class YUI {
|
|||||||
as Artikel,
|
as Artikel,
|
||||||
|
|
||||||
|
|
||||||
p.abkuerzung as projekt, b.nummer as nummer, ".$this->app->erp->FormatMenge('b.menge')." as menge,
|
p.abkuerzung as projekt, b.nummer as nummer, trim(b.menge)+0 as menge,
|
||||||
".$this->FormatPreis(' b.preis')." as preis,
|
".$this->FormatPreis(' b.preis')." as preis,
|
||||||
|
|
||||||
b.id as id
|
b.id as id
|
||||||
@@ -2694,7 +2703,7 @@ class YUI {
|
|||||||
as Artikel,
|
as Artikel,
|
||||||
|
|
||||||
|
|
||||||
p.abkuerzung as projekt, b.nummer as nummer, DATE_FORMAT(b.lieferdatum,'%d.%m.%Y') as lieferdatum, ".$this->app->erp->FormatMenge('b.menge')." as menge,
|
p.abkuerzung as projekt, b.nummer as nummer, DATE_FORMAT(b.lieferdatum,'%d.%m.%Y') as lieferdatum, trim(b.menge)+0 as menge,
|
||||||
|
|
||||||
b.id as id
|
b.id as id
|
||||||
FROM $table b
|
FROM $table b
|
||||||
@@ -2716,7 +2725,7 @@ class YUI {
|
|||||||
if(CHAR_LENGTH(b.bezeichnunglieferant)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(CONCAT(b.bezeichnunglieferant,' *'),1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),CONCAT(b.bezeichnunglieferant,' *')),
|
if(CHAR_LENGTH(b.bezeichnunglieferant)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(CONCAT(b.bezeichnunglieferant,' *'),1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),CONCAT(b.bezeichnunglieferant,' *')),
|
||||||
if(CHAR_LENGTH(b.bezeichnunglieferant)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(b.bezeichnunglieferant,1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),b.bezeichnunglieferant)))
|
if(CHAR_LENGTH(b.bezeichnunglieferant)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(b.bezeichnunglieferant,1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),b.bezeichnunglieferant)))
|
||||||
as Artikel,
|
as Artikel,
|
||||||
p.abkuerzung as projekt, a.nummer as nummer, DATE_FORMAT(lieferdatum,'%d.%m.%Y') as lieferdatum,".$this->app->erp->FormatMenge('b.menge')." as menge, ".$this->FormatPreis(' b.preis')." as preis, b.waehrung, b.id as id
|
p.abkuerzung as projekt, a.nummer as nummer, DATE_FORMAT(lieferdatum,'%d.%m.%Y') as lieferdatum, trim(b.menge)+0 as menge, ".$this->FormatPreis(' b.preis')." as preis, b.waehrung, b.id as id
|
||||||
FROM $table b
|
FROM $table b
|
||||||
LEFT JOIN artikel a ON a.id=b.artikel LEFT JOIN projekt p ON b.projekt=p.id
|
LEFT JOIN artikel a ON a.id=b.artikel LEFT JOIN projekt p ON b.projekt=p.id
|
||||||
WHERE b.$module='$id'";
|
WHERE b.$module='$id'";
|
||||||
@@ -3419,7 +3428,7 @@ class YUI {
|
|||||||
$check = $this->app->DB->Select("SELECT id FROM `auftragsampel_auftrageinstellungen` LIMIT 1");
|
$check = $this->app->DB->Select("SELECT id FROM `auftragsampel_auftrageinstellungen` LIMIT 1");
|
||||||
$deaktivertok = false;
|
$deaktivertok = false;
|
||||||
if(!$this->app->DB->error())$deaktivertok = true;
|
if(!$this->app->DB->error())$deaktivertok = true;
|
||||||
$anzahl3 = count($auftragsampel);
|
$anzahl3 = (empty($auftragsampel)?0:count($auftragsampel));
|
||||||
$anzahl += $anzahl3;
|
$anzahl += $anzahl3;
|
||||||
$ifextra2a[] = " a.status = 'abgeschlossen' ";
|
$ifextra2a[] = " a.status = 'abgeschlossen' ";
|
||||||
foreach($auftragsampel as $k => $ampel)
|
foreach($auftragsampel as $k => $ampel)
|
||||||
@@ -3440,7 +3449,7 @@ class YUI {
|
|||||||
if($deaktivertok) $_extra2e = "),'<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/abgeschlossen.png\" title=\"Auftragsampel deaktivert\" border=\"0\" style=\"margin-right:1px\">'
|
if($deaktivertok) $_extra2e = "),'<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/abgeschlossen.png\" title=\"Auftragsampel deaktivert\" border=\"0\" style=\"margin-right:1px\">'
|
||||||
|
|
||||||
)";
|
)";
|
||||||
if($deaktivertok) $_extra2e = "),'".str_repeat($_extra2icon,count($auftragsampel))."')";
|
if($deaktivertok) $_extra2e = "),'".str_repeat($_extra2icon,(empty($auftragsampel)?0:count($auftragsampel)))."')";
|
||||||
$extra3 .= ",'".$abgeschlossen."'";
|
$extra3 .= ",'".$abgeschlossen."'";
|
||||||
$ifextra2a[] = "
|
$ifextra2a[] = "
|
||||||
substring(ifnull(aac.status,'".str_repeat('0', $anzahl3)."'),$k2,1) = '1' ";
|
substring(ifnull(aac.status,'".str_repeat('0', $anzahl3)."'),$k2,1) = '1' ";
|
||||||
@@ -3452,7 +3461,7 @@ class YUI {
|
|||||||
$check = $this->app->DB->Select("SELECT id FROM `auftragsampel_auftrageinstellungen` LIMIT 1");
|
$check = $this->app->DB->Select("SELECT id FROM `auftragsampel_auftrageinstellungen` LIMIT 1");
|
||||||
$deaktivertok = false;
|
$deaktivertok = false;
|
||||||
if(!$this->app->DB->error())$deaktivertok = true;
|
if(!$this->app->DB->error())$deaktivertok = true;
|
||||||
$anzahl3 = count($auftragsampel);
|
$anzahl3 = (empty($auftragsampel)?0:count($auftragsampel));
|
||||||
$anzahl += $anzahl3;
|
$anzahl += $anzahl3;
|
||||||
$ifextra2a[] = " a.status = 'abgeschlossen' ";
|
$ifextra2a[] = " a.status = 'abgeschlossen' ";
|
||||||
foreach($auftragsampel as $ampel)
|
foreach($auftragsampel as $ampel)
|
||||||
@@ -3462,7 +3471,7 @@ class YUI {
|
|||||||
if($deaktivertok) $_extra2a = ",if(isnull((SELECT aae.id FROM auftragsampel_auftrageinstellungen aae WHERE aae.auftrag = a.id AND aae.deaktiviert = 1 LIMIT 1)),concat(''";
|
if($deaktivertok) $_extra2a = ",if(isnull((SELECT aae.id FROM auftragsampel_auftrageinstellungen aae WHERE aae.auftrag = a.id AND aae.deaktiviert = 1 LIMIT 1)),concat(''";
|
||||||
$extra2 .= "IF(isnull( (SELECT aampa.id FROM auftragsampel_auftrag aampa WHERE aampa.auftrag = a.id AND aampa.auftragsampel = '".$ampel['id']."' AND aampa.erledigt = 1) ), "."'<img src=\"./pages/icons/".str_replace('_go_','_stop_',$ampel['icon'])."\" title=\"".$ampel['beschriftung']."\" border=\"0\" style=\"margin-right:1px\">'".","."'<img src=\"./pages/icons/".$ampel['icon']."\" title=\"".$ampel['beschriftung']."\" border=\"0\" style=\"margin-right:1px\">'". ") ";
|
$extra2 .= "IF(isnull( (SELECT aampa.id FROM auftragsampel_auftrag aampa WHERE aampa.auftrag = a.id AND aampa.auftragsampel = '".$ampel['id']."' AND aampa.erledigt = 1) ), "."'<img src=\"./pages/icons/".str_replace('_go_','_stop_',$ampel['icon'])."\" title=\"".$ampel['beschriftung']."\" border=\"0\" style=\"margin-right:1px\">'".","."'<img src=\"./pages/icons/".$ampel['icon']."\" title=\"".$ampel['beschriftung']."\" border=\"0\" style=\"margin-right:1px\">'". ") ";
|
||||||
if($deaktivertok) $_extra2e = "),'<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/abgeschlossen.png\" title=\"Auftragsampel deaktivert\" border=\"0\" style=\"margin-right:1px\">')";
|
if($deaktivertok) $_extra2e = "),'<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/abgeschlossen.png\" title=\"Auftragsampel deaktivert\" border=\"0\" style=\"margin-right:1px\">')";
|
||||||
if($deaktivertok) $_extra2e = "),'".str_repeat($_extra2icon,count($auftragsampel))."')";
|
if($deaktivertok) $_extra2e = "),'".str_repeat($_extra2icon,(empty($auftragsampel)?0:count($auftragsampel)))."')";
|
||||||
$extra3 .= ",'".$abgeschlossen."'";
|
$extra3 .= ",'".$abgeschlossen."'";
|
||||||
$ifextra2a[] = "
|
$ifextra2a[] = "
|
||||||
not isnull( (SELECT aampa.id FROM auftragsampel_auftrag aampa WHERE aampa.auftrag = a.id AND aampa.auftragsampel = '".$ampel['id']."' AND aampa.erledigt = 1) ) ";
|
not isnull( (SELECT aampa.id FROM auftragsampel_auftrag aampa WHERE aampa.auftrag = a.id AND aampa.auftragsampel = '".$ampel['id']."' AND aampa.erledigt = 1) ) ";
|
||||||
@@ -3613,6 +3622,121 @@ class YUI {
|
|||||||
'</td></tr></table>')";
|
'</td></tr></table>')";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function IconsSQL_versandpaket() {
|
||||||
|
/*
|
||||||
|
status:
|
||||||
|
neu ->
|
||||||
|
|
||||||
|
Lagergo
|
||||||
|
lagergo_stop
|
||||||
|
lagerstop
|
||||||
|
|
||||||
|
Schein
|
||||||
|
summe_go
|
||||||
|
summe_stop
|
||||||
|
|
||||||
|
Auto
|
||||||
|
liefersperrego
|
||||||
|
liefersperrestop
|
||||||
|
|
||||||
|
marke
|
||||||
|
portogo
|
||||||
|
portostop
|
||||||
|
|
||||||
|
produktion_usn_gut
|
||||||
|
storno*/
|
||||||
|
|
||||||
|
|
||||||
|
$lieferschein_kein = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/summe_stop.png\" title=\"Kein Lieferschein\" border=\"0\" style=\"margin-right:1px\">";
|
||||||
|
$lieferschein_ohne_pos = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/summe_go.png\" title=\"Lieferschein ohne Positionen\" border=\"0\" style=\"margin-right:1px\">";
|
||||||
|
$lieferschein_voll = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/lagergo.png\" title=\"Lieferschein vollständig\" border=\"0\" style=\"margin-right:1px\">";
|
||||||
|
$lieferschein_teil = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/lagergo_teil.png\" title=\"Lieferschein teilweise\" border=\"0\" style=\"margin-right:1px\">";
|
||||||
|
|
||||||
|
$versendet = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/liefersperrego.png\" title=\"Versendet\" border=\"0\" style=\"margin-right:1px\">";
|
||||||
|
$versendet_nicht = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/liefersperrestop.png\" title=\"Nicht versendet\" border=\"0\" style=\"margin-right:1px\">";
|
||||||
|
|
||||||
|
$paketmarke = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/portogo.png\" style=\"margin-right:1px\" title=\"Paketmarke\" border=\"0\">";
|
||||||
|
$paketmarke_keine = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/portostop.png\" style=\"margin-right:1px\" title=\"Keine Paketmarke\" border=\"0\">";
|
||||||
|
|
||||||
|
$ausgeliefert = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/delivery_ok.png\" style=\"margin-right:1px\" title=\"Ausgeliefert\" border=\"0\">";
|
||||||
|
$ausgeliefert_nicht = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/delivery.png\" style=\"margin-right:1px\" title=\"Nicht ausgeliefert\" border=\"0\">";
|
||||||
|
|
||||||
|
$storno = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/storno.png\" style=\"margin-right:1px\" title=\"Storniert\" border=\"0\">";
|
||||||
|
|
||||||
|
for ($z = 0;$z < 4;$z++) {
|
||||||
|
$abgeschlossen .= $ausgeliefert;
|
||||||
|
$storniert .= $storno;
|
||||||
|
}
|
||||||
|
|
||||||
|
return "CONCAT('<table><tr><td nowrap>',
|
||||||
|
CASE
|
||||||
|
WHEN status = 'storniert' THEN '$storniert'
|
||||||
|
ELSE CONCAT(
|
||||||
|
CASE
|
||||||
|
WHEN lieferscheine <> '' AND vmenge = lmenge THEN '$lieferschein_voll'
|
||||||
|
WHEN lieferschein_ohne_pos <> '' AND vmenge IS NULL THEN '$lieferschein_ohne_pos'
|
||||||
|
WHEN lieferscheine <> '' THEN '$lieferschein_teil'
|
||||||
|
ELSE
|
||||||
|
'$lieferschein_kein'
|
||||||
|
END,
|
||||||
|
CASE
|
||||||
|
WHEN tracking <> '' THEN '$paketmarke'
|
||||||
|
ELSE
|
||||||
|
'$paketmarke_keine'
|
||||||
|
END,
|
||||||
|
CASE
|
||||||
|
WHEN status = 'versendet' THEN '$versendet'
|
||||||
|
WHEN status = 'abgeschlossen' THEN '$versendet'
|
||||||
|
ELSE
|
||||||
|
'$versendet_nicht'
|
||||||
|
END,
|
||||||
|
CASE
|
||||||
|
WHEN status = 'abgeschlossen' THEN '$ausgeliefert'
|
||||||
|
ELSE
|
||||||
|
'$ausgeliefert_nicht'
|
||||||
|
END
|
||||||
|
)
|
||||||
|
END,
|
||||||
|
'</td></tr></table>')";
|
||||||
|
}
|
||||||
|
function IconsSQL_lieferung() {
|
||||||
|
|
||||||
|
$lieferschein_kein = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/lagerstop.png\" title=\"Keine Artikel in Versandpaketen\" border=\"0\" style=\"margin-right:1px\">";
|
||||||
|
$lieferschein_ohne_pos = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/summe_go.png\" title=\"Lieferschein ohne Positionen\" border=\"0\" style=\"margin-right:1px\">";
|
||||||
|
$lieferschein_voll = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/lagergo.png\" title=\"Artikel vollständig in Versandpaketen\" border=\"0\" style=\"margin-right:1px\">";
|
||||||
|
$lieferschein_teil = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/lagergo_stop.png\" title=\"Artikel teilweise in Versandpaketen\" border=\"0\" style=\"margin-right:1px\">";
|
||||||
|
|
||||||
|
$versendet = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/liefersperrego.png\" title=\"Versendet\" border=\"0\" style=\"margin-right:1px\">";
|
||||||
|
$versendet_nicht = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/liefersperrestop.png\" title=\"Nicht versendet\" border=\"0\" style=\"margin-right:1px\">";
|
||||||
|
$versendet_teil = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/liefersperregostop.png\" title=\"Teilweise versendet\" border=\"0\" style=\"margin-right:1px\">";
|
||||||
|
|
||||||
|
$ausgeliefert = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/delivery_ok.png\" style=\"margin-right:1px\" title=\"Ausgeliefert\" border=\"0\">";
|
||||||
|
$ausgeliefert_nicht = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/delivery.png\" style=\"margin-right:1px\" title=\"Nicht ausgeliefert\" border=\"0\">";
|
||||||
|
$ausgeliefert_teil = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/delivery_pending.png\" style=\"margin-right:1px\" title=\"Teilweise ausgeliefert\" border=\"0\">";
|
||||||
|
|
||||||
|
$storno = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/storno.png\" style=\"margin-right:1px\" title=\"Storniert\" border=\"0\">";
|
||||||
|
|
||||||
|
return "CONCAT(
|
||||||
|
'<table><tr><td nowrap>',
|
||||||
|
CASE
|
||||||
|
WHEN vmenge >= lmenge THEN '$lieferschein_voll'
|
||||||
|
WHEN vmenge < lmenge AND vmenge <> 0 THEN '$lieferschein_teil'
|
||||||
|
ELSE '$lieferschein_kein'
|
||||||
|
END,
|
||||||
|
CASE
|
||||||
|
WHEN alle_abgeschlossen THEN '$versendet'
|
||||||
|
WHEN alle_versendet THEN '$versendet'
|
||||||
|
WHEN eins_versendet THEN '$versendet_teil'
|
||||||
|
ELSE '$versendet_nicht'
|
||||||
|
END,
|
||||||
|
CASE
|
||||||
|
WHEN alle_abgeschlossen THEN '$ausgeliefert'
|
||||||
|
WHEN eins_abgeschlossen THEN '$ausgeliefert_teil'
|
||||||
|
ELSE '$ausgeliefert_nicht'
|
||||||
|
END,
|
||||||
|
'</td></tr></table>')";
|
||||||
|
}
|
||||||
|
|
||||||
function TablePositionSearch($parsetarget, $name, $callback = "show", $gener) {
|
function TablePositionSearch($parsetarget, $name, $callback = "show", $gener) {
|
||||||
|
|
||||||
$id = $this->app->Secure->GetGET("id");
|
$id = $this->app->Secure->GetGET("id");
|
||||||
@@ -3747,7 +3871,7 @@ class YUI {
|
|||||||
$module = $this->app->Secure->GetGET("module");
|
$module = $this->app->Secure->GetGET("module");
|
||||||
$this->app->Tpl->Add('JAVASCRIPT', 'function ' . $name . 'fnFormatDetails ( nTr ) {
|
$this->app->Tpl->Add('JAVASCRIPT', 'function ' . $name . 'fnFormatDetails ( nTr ) {
|
||||||
//var aData = oTable' . $name . '.fnGetData( nTr );
|
//var aData = oTable' . $name . '.fnGetData( nTr );
|
||||||
var str = aData[' . (isset($menucol)?$menucol:count($heading)-1) . '];
|
var str = aData[' . (isset($menucol)?$menucol:(empty($heading)?0:count($heading))-1) . '];
|
||||||
|
|
||||||
var match = str.match(/[1-9]{1}[0-9]*/);
|
var match = str.match(/[1-9]{1}[0-9]*/);
|
||||||
|
|
||||||
@@ -3770,14 +3894,14 @@ url:strUrl, success:function(html){strReturn = html;}, async:false
|
|||||||
}
|
}
|
||||||
');
|
');
|
||||||
}
|
}
|
||||||
$colspan = count($heading);
|
$colspan = (empty($heading)?0:count($heading));
|
||||||
|
|
||||||
//<tr><th colspan="' . $colspan . '"><br></th></tr>
|
//<tr><th colspan="' . $colspan . '"><br></th></tr>
|
||||||
$this->app->Tpl->Add($parsetarget, '
|
$this->app->Tpl->Add($parsetarget, '
|
||||||
<table cellpadding="0" cellspacing="0" border="0" class="display" id="' . $name . '">
|
<table cellpadding="0" cellspacing="0" border="0" class="display" id="' . $name . '">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>');
|
<tr>');
|
||||||
for ($i = 0;$i < count($heading);$i++) {
|
for ($i = 0;$i < (empty($heading)?0:count($heading));$i++) {
|
||||||
$this->app->Tpl->Add($parsetarget, '<th width="' . $width[$i] . '">' . $heading[$i] . '</th>');
|
$this->app->Tpl->Add($parsetarget, '<th width="' . $width[$i] . '">' . $heading[$i] . '</th>');
|
||||||
}
|
}
|
||||||
$this->app->Tpl->Add($parsetarget, '</tr>
|
$this->app->Tpl->Add($parsetarget, '</tr>
|
||||||
@@ -3791,7 +3915,7 @@ url:strUrl, success:function(html){strReturn = html;}, async:false
|
|||||||
<tfoot>
|
<tfoot>
|
||||||
<tr>
|
<tr>
|
||||||
');
|
');
|
||||||
for ($i = 0;$i < count($heading);$i++) {
|
for ($i = 0;$i < (empty($heading)?0:count($heading));$i++) {
|
||||||
$this->app->Tpl->Add($parsetarget, '<th>' . $heading[$i] . '</th>');
|
$this->app->Tpl->Add($parsetarget, '<th>' . $heading[$i] . '</th>');
|
||||||
}
|
}
|
||||||
$this->app->Tpl->Add($parsetarget, '
|
$this->app->Tpl->Add($parsetarget, '
|
||||||
@@ -5701,12 +5825,8 @@ url:strUrl, success:function(html){strReturn = html;}, async:false
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Fester filter
|
// Fester filter
|
||||||
$more_data6 = $this->app->Secure->GetGET("more_data6");
|
|
||||||
$more_data7 = $this->app->Secure->GetGET("more_data7");
|
|
||||||
$more_data8 = $this->app->Secure->GetGET("more_data8");
|
|
||||||
|
|
||||||
$more_data4 = $this->app->Secure->GetGET("more_data4");
|
$more_data4 = $this->app->Secure->GetGET("more_data4");
|
||||||
|
/*
|
||||||
$versandjoin = "";
|
$versandjoin = "";
|
||||||
if(isset($parameter['offenversandzentrum']) && !empty($parameter['offenversandzentrum']))
|
if(isset($parameter['offenversandzentrum']) && !empty($parameter['offenversandzentrum']))
|
||||||
{
|
{
|
||||||
@@ -5740,7 +5860,7 @@ url:strUrl, success:function(html){strReturn = html;}, async:false
|
|||||||
}
|
}
|
||||||
|
|
||||||
if($versandjoin)$sql .= $versandjoin;
|
if($versandjoin)$sql .= $versandjoin;
|
||||||
|
*/
|
||||||
|
|
||||||
if($more_data4 || (isset($parameter['ohnerechnung']) && !empty($parameter['ohnerechnung']))) {
|
if($more_data4 || (isset($parameter['ohnerechnung']) && !empty($parameter['ohnerechnung']))) {
|
||||||
|
|
||||||
@@ -5816,7 +5936,22 @@ url:strUrl, success:function(html){strReturn = html;}, async:false
|
|||||||
if ($more_data3 == 1) $subwhere[] = " l.lieferantenretoure=1 ";
|
if ($more_data3 == 1) $subwhere[] = " l.lieferantenretoure=1 ";
|
||||||
|
|
||||||
// ENDE EXTRA more
|
// ENDE EXTRA more
|
||||||
for ($j = 0;$j < count($subwhere);$j++) $tmp.= " AND " . $subwhere[$j];
|
$more_data6 = $this->app->Secure->GetGET("more_data6");
|
||||||
|
$more_data7 = $this->app->Secure->GetGET("more_data7");
|
||||||
|
$more_data8 = $this->app->Secure->GetGET("more_data8");
|
||||||
|
|
||||||
|
if ($more_data6) {
|
||||||
|
$subwhere[] = "l.versand_status = 3";
|
||||||
|
}
|
||||||
|
if ($more_data7) {
|
||||||
|
$subwhere[] = "l.versand_status = 1";
|
||||||
|
}
|
||||||
|
if ($more_data8) {
|
||||||
|
$subwhere[] = "l.versand_status IN (2,3)";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
for ($j = 0;$j < (empty($subwhere)?0:count($subwhere));$j++) $tmp.= " AND " . $subwhere[$j];
|
||||||
$where = " l.id!='' AND l.status!='angelegt' $tmp " . $this->app->erp->ProjektRechte('p.id', true, 'l.vertriebid');
|
$where = " l.id!='' AND l.status!='angelegt' $tmp " . $this->app->erp->ProjektRechte('p.id', true, 'l.vertriebid');
|
||||||
|
|
||||||
/* STAMMDATEN */
|
/* STAMMDATEN */
|
||||||
@@ -6081,11 +6216,11 @@ r.land as land, p.abkuerzung as projekt, r.zahlungsweise as zahlungsweise,
|
|||||||
|
|
||||||
|
|
||||||
$heading = array('', '', 'Gutschrift', 'Vom', 'Kd-Nr.', 'Kunde', 'Land', 'Projekt',
|
$heading = array('', '', 'Gutschrift', 'Vom', 'Kd-Nr.', 'Kunde', 'Land', 'Projekt',
|
||||||
'Zahlweise', 'Betrag (brutto)', 'bezahlt','RE-Nr.', 'Status','Monitor' ,'Menü'
|
'Zahlweise', 'Betrag (brutto)', 'Zahlstatus','Differenz','RE-Nr.', 'Status','Monitor' ,'Menü'
|
||||||
);
|
);
|
||||||
|
|
||||||
$width = array('1%', '1%', '10%', '10%', '10%', '25%', '5%', '1%', '1%', '1%', '1%', '1%','5%', '1%','1%', '1%');
|
$width = array('1%', '1%', '10%', '10%', '10%', '25%', '5%', '1%', '1%', '1%', '1%', '1%', '1%','5%', '1%','1%', '1%');
|
||||||
$findcols = array('open', 'r.belegnr', 'r.belegnr', 'r.datum', 'adr.kundennummer', 'r.name', 'r.land', 'p.abkuerzung', 'r.zahlungsweise', 'r.soll','re.belegnr', 'r.zahlungsstatus', 'r.status', 'pt.payement_status' ,'id');
|
$findcols = array('open', 'r.belegnr', 'r.belegnr', 'r.datum', 'adr.kundennummer', 'r.name', 'r.land', 'p.abkuerzung', 'r.zahlungsweise', 'r.soll', 'r.zahlungsstatus','r.soll-r.ist', 're.belegnr', 'r.status', 'id');
|
||||||
$searchsql = array('DATE_FORMAT(r.datum,\'%d.%m.%Y\')', 'r.belegnr', 'adr.kundennummer', 'r.name', 'r.land', 'p.abkuerzung','re.belegnr', 'r.status', "FORMAT(r.soll,2{$extended_mysql55})", 'adr.freifeld1', 'r.ihrebestellnummer','r.internebezeichnung','au.internet');
|
$searchsql = array('DATE_FORMAT(r.datum,\'%d.%m.%Y\')', 'r.belegnr', 'adr.kundennummer', 'r.name', 'r.land', 'p.abkuerzung','re.belegnr', 'r.status', "FORMAT(r.soll,2{$extended_mysql55})", 'adr.freifeld1', 'r.ihrebestellnummer','r.internebezeichnung','au.internet');
|
||||||
$defaultorder = 13; //Optional wenn andere Reihenfolge gewuenscht
|
$defaultorder = 13; //Optional wenn andere Reihenfolge gewuenscht
|
||||||
|
|
||||||
@@ -6127,20 +6262,31 @@ r.land as land, p.abkuerzung as projekt, r.zahlungsweise as zahlungsweise,
|
|||||||
$menu .= "</table>";
|
$menu .= "</table>";
|
||||||
|
|
||||||
|
|
||||||
$menucol = 14;
|
$menucol = 15;
|
||||||
|
|
||||||
$parameter = $this->app->User->GetParameter('table_filter_gutschrift');
|
$parameter = $this->app->User->GetParameter('table_filter_gutschrift');
|
||||||
$parameter = base64_decode($parameter);
|
$parameter = base64_decode($parameter);
|
||||||
$parameter = json_decode($parameter, true);
|
$parameter = json_decode($parameter, true);
|
||||||
|
|
||||||
// SQL statement
|
// SQL statement
|
||||||
$sql = "SELECT SQL_CALC_FOUND_ROWS r.id,'<img src=./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, concat('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',r.id,'\" />')as auswahl,
|
$sql = "SELECT SQL_CALC_FOUND_ROWS
|
||||||
|
r.id,
|
||||||
|
'<img src=./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open,
|
||||||
|
concat('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',r.id,'\" />')as auswahl,
|
||||||
r.belegnr,
|
r.belegnr,
|
||||||
DATE_FORMAT(r.datum,'%d.%m.%Y') as vom, adr.kundennummer as kundennummer,
|
DATE_FORMAT(r.datum,'%d.%m.%Y') as vom,
|
||||||
|
adr.kundennummer as kundennummer,
|
||||||
CONCAT(" . $this->app->erp->MarkerUseredit("r.name", "r.useredittimestamp") . ", if(r.internebezeichnung!='',CONCAT('<br><i style=color:#999>',r.internebezeichnung,'</i>'),'')) as kunde,
|
CONCAT(" . $this->app->erp->MarkerUseredit("r.name", "r.useredittimestamp") . ", if(r.internebezeichnung!='',CONCAT('<br><i style=color:#999>',r.internebezeichnung,'</i>'),'')) as kunde,
|
||||||
r.land as land, p.abkuerzung as projekt, r.zahlungsweise as zahlungsweise,
|
r.land as land,
|
||||||
FORMAT(r.soll,2{$extended_mysql55}) as soll, r.zahlungsstatus as zahlung, re.belegnr as rechnung, UPPER(r.status) as status,
|
p.abkuerzung as projekt,
|
||||||
".$this->IconsSQLReturnOrder()." ,r.id
|
r.zahlungsweise as zahlungsweise,
|
||||||
|
".$this->app->erp->FormatMenge('r.soll',2)." as soll,
|
||||||
|
r.zahlungsstatus as zahlung,
|
||||||
|
".$this->app->erp->FormatMenge('r.soll-r.ist',2)." as differenz,
|
||||||
|
re.belegnr as rechnung,
|
||||||
|
UPPER(r.status) as status,
|
||||||
|
".$this->IconsSQLReturnOrder().",
|
||||||
|
r.id
|
||||||
FROM gutschrift r
|
FROM gutschrift r
|
||||||
LEFT JOIN rechnung re ON re.id=r.rechnungid
|
LEFT JOIN rechnung re ON re.id=r.rechnungid
|
||||||
LEFT JOIN projekt p ON p.id=r.projekt
|
LEFT JOIN projekt p ON p.id=r.projekt
|
||||||
@@ -6173,7 +6319,7 @@ r.land as land, p.abkuerzung as projekt, r.zahlungsweise as zahlungsweise,
|
|||||||
|
|
||||||
$tmp = '';
|
$tmp = '';
|
||||||
if (!is_null($subwhere)) {
|
if (!is_null($subwhere)) {
|
||||||
for ($j = 0;$j < count($subwhere);$j++) $tmp.= " AND " . $subwhere[$j];
|
for ($j = 0;$j < (empty($subwhere)?0:count($subwhere));$j++) $tmp.= " AND " . $subwhere[$j];
|
||||||
}
|
}
|
||||||
|
|
||||||
$where = " r.status!='angelegt' AND r.id!='' ".$tmp ." ". $this->app->erp->ProjektRechte('p.id', true, 'r.vertriebid');
|
$where = " r.status!='angelegt' AND r.id!='' ".$tmp ." ". $this->app->erp->ProjektRechte('p.id', true, 'r.vertriebid');
|
||||||
@@ -6551,13 +6697,24 @@ r.land as land, p.abkuerzung as projekt, r.zahlungsweise as zahlungsweise,
|
|||||||
// $columnfilter = true;
|
// $columnfilter = true;
|
||||||
|
|
||||||
// SQL statement
|
// SQL statement
|
||||||
$sql = "SELECT SQL_CALC_FOUND_ROWS r.id,'<img src=./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open,concat('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',r.id,'\" />')as auswahl, r.belegnr, DATE_FORMAT(r.datum,'%d.%m.%Y') as vom,
|
$sql = "SELECT SQL_CALC_FOUND_ROWS
|
||||||
|
r.id,
|
||||||
|
'<img src=./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open,
|
||||||
|
concat('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',r.id,'\" />') as auswahl,
|
||||||
|
r.belegnr,
|
||||||
|
DATE_FORMAT(r.datum,'%d.%m.%Y') as vom,
|
||||||
if(r.kundennummer <> '',r.kundennummer,adr.kundennummer),
|
if(r.kundennummer <> '',r.kundennummer,adr.kundennummer),
|
||||||
|
|
||||||
CONCAT(" . $this->app->erp->MarkerUseredit("r.name", "r.useredittimestamp") . ", if(r.internebezeichnung!='',CONCAT('<br><i style=color:#999>',r.internebezeichnung,'</i>'),'')) as kunde,
|
CONCAT(" . $this->app->erp->MarkerUseredit("r.name", "r.useredittimestamp") . ", if(r.internebezeichnung!='',CONCAT('<br><i style=color:#999>',r.internebezeichnung,'</i>'),'')) as kunde,
|
||||||
r.land as land, p.abkuerzung as projekt, r.zahlungsweise as zahlungsweise, FORMAT(r.soll,2{$extended_mysql55} ) as soll, ifnull(r.waehrung,'EUR'),
|
r.land as land,
|
||||||
if(r.soll-r.ist+r.skonto_gegeben!=0 AND r.ist > 0 AND r.zahlungsstatus!='bezahlt','teilbezahlt',r.zahlungsstatus) as zahlung,
|
p.abkuerzung as projekt,
|
||||||
if(r.soll-r.ist+r.skonto_gegeben!=0 AND r.ist > 0,FORMAT(r.ist-r.soll+r.skonto_gegeben,2{$extended_mysql55}),FORMAT((r.soll-r.ist+r.skonto_gegeben)*-1,2{$extended_mysql55})) as fehlt, if(r.status = 'storniert' AND r.teilstorno = 1,'TEILSTORNO',UPPER(r.status)) as status, ".(!empty($zusatzcols)?implode(', ',$zusatzcols).',':'')." r.id
|
r.zahlungsweise as zahlungsweise,
|
||||||
|
FORMAT(r.soll,2{$extended_mysql55} ) as soll,
|
||||||
|
ifnull(r.waehrung,'EUR'),
|
||||||
|
r.zahlungsstatus as zahlung,
|
||||||
|
if(r.soll-r.ist!=0 AND r.ist > 0,FORMAT(r.ist-r.soll,2{$extended_mysql55}),FORMAT((r.soll-r.ist)*-1,2{$extended_mysql55})) as fehlt,
|
||||||
|
if(r.status = 'storniert' AND r.teilstorno = 1,'TEILSTORNO',UPPER(r.status)) as status,
|
||||||
|
".(!empty($zusatzcols)?implode(', ',$zusatzcols).',':'')."
|
||||||
|
r.id
|
||||||
FROM rechnung r LEFT JOIN projekt p ON p.id=r.projekt LEFT JOIN adresse adr ON r.adresse=adr.id LEFT JOIN auftrag au ON au.id = r.auftragid ";
|
FROM rechnung r LEFT JOIN projekt p ON p.id=r.projekt LEFT JOIN adresse adr ON r.adresse=adr.id LEFT JOIN auftrag au ON au.id = r.auftragid ";
|
||||||
if(isset($parameter['artikel']) && !empty($parameter['artikel'])) {
|
if(isset($parameter['artikel']) && !empty($parameter['artikel'])) {
|
||||||
$artikelid = $this->app->DB->Select("SELECT id FROM artikel where geloescht != 1 AND nummer != 'DEL' AND nummer != '' AND nummer = '".$this->app->DB->real_escape_string(reset(explode(' ',trim($parameter['artikel']))))."' LIMIT 1");
|
$artikelid = $this->app->DB->Select("SELECT id FROM artikel where geloescht != 1 AND nummer != 'DEL' AND nummer != '' AND nummer = '".$this->app->DB->real_escape_string(reset(explode(' ',trim($parameter['artikel']))))."' LIMIT 1");
|
||||||
@@ -6589,7 +6746,7 @@ r.land as land, p.abkuerzung as projekt, r.zahlungsweise as zahlungsweise,
|
|||||||
if ($more_data4 == 1) {
|
if ($more_data4 == 1) {
|
||||||
$subwhere[] = " r.status='storniert' ";
|
$subwhere[] = " r.status='storniert' ";
|
||||||
}
|
}
|
||||||
$csubwhere = !empty($subwhere)?count($subwhere):0;
|
$csubwhere = !empty($subwhere)?(empty($subwhere)?0:count($subwhere)):0;
|
||||||
for ($j = 0;$j < $csubwhere;$j++) {
|
for ($j = 0;$j < $csubwhere;$j++) {
|
||||||
$tmp.= " AND " . $subwhere[$j];
|
$tmp.= " AND " . $subwhere[$j];
|
||||||
}
|
}
|
||||||
@@ -6858,7 +7015,7 @@ r.land as land, p.abkuerzung as projekt, r.zahlungsweise as zahlungsweise,
|
|||||||
if ($more_data1 == 1) $subwhere[] = " a.lagerartikel='1' ";
|
if ($more_data1 == 1) $subwhere[] = " a.lagerartikel='1' ";
|
||||||
|
|
||||||
$tmp = '';
|
$tmp = '';
|
||||||
$csubwhere = !empty($subwhere)?count($subwhere):0;
|
$csubwhere = !empty($subwhere)?(empty($subwhere)?0:count($subwhere)):0;
|
||||||
for ($j = 0;$j < $csubwhere;$j++) $tmp.= " AND " . $subwhere[$j];
|
for ($j = 0;$j < $csubwhere;$j++) $tmp.= " AND " . $subwhere[$j];
|
||||||
|
|
||||||
if($liefertermine)
|
if($liefertermine)
|
||||||
@@ -7040,7 +7197,7 @@ r.land as land, p.abkuerzung as projekt, r.zahlungsweise as zahlungsweise,
|
|||||||
$more_data7 = $this->app->Secure->GetGET("more_data7");
|
$more_data7 = $this->app->Secure->GetGET("more_data7");
|
||||||
|
|
||||||
// SQL statement
|
// SQL statement
|
||||||
$sql = "SELECT
|
$sql = "SELECT SQL_CALC_FOUND_ROWS
|
||||||
b.id,'<img src=./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' AS `open`,
|
b.id,'<img src=./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' AS `open`,
|
||||||
CONCAT('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',b.id,'\" />') AS `auswahl`,
|
CONCAT('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',b.id,'\" />') AS `auswahl`,
|
||||||
IF(b.status='storniert',CONCAT(b.belegnr),b.belegnr) AS `belegnr`,
|
IF(b.status='storniert',CONCAT(b.belegnr),b.belegnr) AS `belegnr`,
|
||||||
@@ -7195,7 +7352,7 @@ r.land as land, p.abkuerzung as projekt, r.zahlungsweise as zahlungsweise,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!is_null($subwhere)) {
|
if (!is_null($subwhere)) {
|
||||||
for ($j = 0;$j < count($subwhere);$j++) $tmp.= " AND " . $subwhere[$j];
|
for ($j = 0;$j < (empty($subwhere)?0:count($subwhere));$j++) $tmp.= " AND " . $subwhere[$j];
|
||||||
}
|
}
|
||||||
|
|
||||||
// START EXTRA more
|
// START EXTRA more
|
||||||
@@ -7650,7 +7807,7 @@ a.land as land, p.abkuerzung as projekt, a.zahlungsweise as zahlungsweise,
|
|||||||
if($fteilprojektfilter) {
|
if($fteilprojektfilter) {
|
||||||
$subwhere[] = " a.teilprojekt = '$fteilprojektfilter' ";
|
$subwhere[] = " a.teilprojekt = '$fteilprojektfilter' ";
|
||||||
}
|
}
|
||||||
for ($j = 0;$j < count($subwhere);$j++) $tmp.= " AND " . $subwhere[$j];
|
for ($j = 0;$j < (empty($subwhere)?0:count($subwhere));$j++) $tmp.= " AND " . $subwhere[$j];
|
||||||
|
|
||||||
$where = " a.projekt='" . $id."'".$tmp;
|
$where = " a.projekt='" . $id."'".$tmp;
|
||||||
$count = "SELECT COUNT(a.id) FROM aufgabe a WHERE $where ";
|
$count = "SELECT COUNT(a.id) FROM aufgabe a WHERE $where ";
|
||||||
@@ -7738,7 +7895,7 @@ a.land as land, p.abkuerzung as projekt, a.zahlungsweise as zahlungsweise,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
for ($j = 0;$j < count($subwhere);$j++) $tmp.= " AND " . $subwhere[$j];
|
for ($j = 0;$j < (empty($subwhere)?0:count($subwhere));$j++) $tmp.= " AND " . $subwhere[$j];
|
||||||
$where = " (z.adresse_abrechnung='" . $id . "' OR p.kunde='$id') $tmp";
|
$where = " (z.adresse_abrechnung='" . $id . "' OR p.kunde='$id') $tmp";
|
||||||
|
|
||||||
$count = "SELECT COUNT(z.id) FROM zeiterfassung z LEFT JOIN adresse a ON a.id=z.adresse LEFT JOIN projekt p ON p.id=z.projekt WHERE $where";
|
$count = "SELECT COUNT(z.id) FROM zeiterfassung z LEFT JOIN adresse a ON a.id=z.adresse LEFT JOIN projekt p ON p.id=z.projekt WHERE $where";
|
||||||
@@ -7829,7 +7986,7 @@ a.land as land, p.abkuerzung as projekt, a.zahlungsweise as zahlungsweise,
|
|||||||
}else{
|
}else{
|
||||||
$subwhere[] = " z.abgerechnet <> 1 ";
|
$subwhere[] = " z.abgerechnet <> 1 ";
|
||||||
}
|
}
|
||||||
for ($j = 0;$j < count($subwhere);$j++) $tmp.= " AND " . $subwhere[$j];
|
for ($j = 0;$j < (empty($subwhere)?0:count($subwhere));$j++) $tmp.= " AND " . $subwhere[$j];
|
||||||
$where = " z.projekt ='" . $id . "' $tmp";
|
$where = " z.projekt ='" . $id . "' $tmp";
|
||||||
$count = "SELECT COUNT(z.id) FROM zeiterfassung z LEFT JOIN arbeitspaket arb ON z.arbeitspaket = arb.id WHERE $where";
|
$count = "SELECT COUNT(z.id) FROM zeiterfassung z LEFT JOIN arbeitspaket arb ON z.arbeitspaket = arb.id WHERE $where";
|
||||||
|
|
||||||
@@ -7969,7 +8126,7 @@ a.land as land, p.abkuerzung as projekt, a.zahlungsweise as zahlungsweise,
|
|||||||
|
|
||||||
|
|
||||||
$tmp = '';
|
$tmp = '';
|
||||||
$csubwhere = !empty($subwhere)?count($subwhere):0;
|
$csubwhere = !empty($subwhere)?(empty($subwhere)?0:count($subwhere)):0;
|
||||||
for ($j = 0;$j < $csubwhere;$j++) $tmp.= " AND " . $subwhere[$j];
|
for ($j = 0;$j < $csubwhere;$j++) $tmp.= " AND " . $subwhere[$j];
|
||||||
$where = " a.id!='' AND a.status!='angelegt' $tmp " . $this->app->erp->ProjektRechte();
|
$where = " a.id!='' AND a.status!='angelegt' $tmp " . $this->app->erp->ProjektRechte();
|
||||||
|
|
||||||
@@ -8329,7 +8486,7 @@ a.land as land, p.abkuerzung as projekt, a.zahlungsweise as zahlungsweise,
|
|||||||
|
|
||||||
// $more_data2 = $this->app->Secure->GetGET("more_data2"); if($more_data2==1) $subwhere[] = " a.datum=CURDATE() AND a.status='freigegeben'";
|
// $more_data2 = $this->app->Secure->GetGET("more_data2"); if($more_data2==1) $subwhere[] = " a.datum=CURDATE() AND a.status='freigegeben'";
|
||||||
|
|
||||||
for ($j = 0;$j < count($subwhere);$j++) $tmp.= " AND " . $subwhere[$j];
|
for ($j = 0;$j < (empty($subwhere)?0:count($subwhere));$j++) $tmp.= " AND " . $subwhere[$j];
|
||||||
$id = $this->app->Secure->GetGET("id");
|
$id = $this->app->Secure->GetGET("id");
|
||||||
$where = " ap.aufgabe IS NOT NULL $tmp AND ap.projekt='$id' GROUP by Datum,ap.id ";
|
$where = " ap.aufgabe IS NOT NULL $tmp AND ap.projekt='$id' GROUP by Datum,ap.id ";
|
||||||
|
|
||||||
@@ -8392,7 +8549,7 @@ a.land as land, p.abkuerzung as projekt, a.zahlungsweise as zahlungsweise,
|
|||||||
$more_data1 = $this->app->Secure->GetGET("more_data1");
|
$more_data1 = $this->app->Secure->GetGET("more_data1");
|
||||||
|
|
||||||
if ($more_data1 == 1) $subwhere[] = " OR ( ap.abgenommen='1') ";
|
if ($more_data1 == 1) $subwhere[] = " OR ( ap.abgenommen='1') ";
|
||||||
for ($j = 0;$j < count($subwhere);$j++) $tmp.= " " . $subwhere[$j];
|
for ($j = 0;$j < (empty($subwhere)?0:count($subwhere));$j++) $tmp.= " " . $subwhere[$j];
|
||||||
|
|
||||||
// if($tmp!="")$tmp .= " AND e.geloescht='1' ";
|
// if($tmp!="")$tmp .= " AND e.geloescht='1' ";
|
||||||
|
|
||||||
@@ -8611,7 +8768,7 @@ a.land as land, p.abkuerzung as projekt, a.zahlungsweise as zahlungsweise,
|
|||||||
|
|
||||||
if (!is_null($subwhere))
|
if (!is_null($subwhere))
|
||||||
{
|
{
|
||||||
for ($j = 0;$j < count($subwhere);$j++) $tmp.= " AND " . $subwhere[$j];
|
for ($j = 0;$j < (empty($subwhere)?0:count($subwhere));$j++) $tmp.= " AND " . $subwhere[$j];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($more_data1 == 1)
|
if ($more_data1 == 1)
|
||||||
@@ -8677,7 +8834,7 @@ a.land as land, p.abkuerzung as projekt, a.zahlungsweise as zahlungsweise,
|
|||||||
if ($more_data1 == 1) $subwhere[] = " AND ap.status='abgerechnet' ";
|
if ($more_data1 == 1) $subwhere[] = " AND ap.status='abgerechnet' ";
|
||||||
else $subwhere[] = " AND ap.status!='abgerechnet' ";
|
else $subwhere[] = " AND ap.status!='abgerechnet' ";
|
||||||
|
|
||||||
for ($j = 0;$j < count($subwhere);$j++) $tmp.= " " . $subwhere[$j];
|
for ($j = 0;$j < (empty($subwhere)?0:count($subwhere));$j++) $tmp.= " " . $subwhere[$j];
|
||||||
|
|
||||||
|
|
||||||
// Fester filter
|
// Fester filter
|
||||||
@@ -8770,7 +8927,7 @@ a.land as land, p.abkuerzung as projekt, a.zahlungsweise as zahlungsweise,
|
|||||||
if ($more_data1 == 1) $subwhere[] = " z.abrechnen='1' AND z.abgerechnet!='1' ";
|
if ($more_data1 == 1) $subwhere[] = " z.abrechnen='1' AND z.abgerechnet!='1' ";
|
||||||
|
|
||||||
// $more_data2 = $this->app->Secure->GetGET("more_data2"); if($more_data2==1) $subwhere[] = " a.datum=CURDATE() AND a.status='freigegeben'";
|
// $more_data2 = $this->app->Secure->GetGET("more_data2"); if($more_data2==1) $subwhere[] = " a.datum=CURDATE() AND a.status='freigegeben'";
|
||||||
for ($j = 0;$j < count($subwhere);$j++) $tmp.= " AND " . $subwhere[$j];
|
for ($j = 0;$j < (empty($subwhere)?0:count($subwhere));$j++) $tmp.= " AND " . $subwhere[$j];
|
||||||
$where = " z.id!='' AND z.adresse='" . $id . "' $tmp";
|
$where = " z.id!='' AND z.adresse='" . $id . "' $tmp";
|
||||||
$count = "SELECT COUNT(z.id) FROM zeiterfassung z WHERE z.adresse='" . $id . "'";
|
$count = "SELECT COUNT(z.id) FROM zeiterfassung z WHERE z.adresse='" . $id . "'";
|
||||||
$moreinfo = true;
|
$moreinfo = true;
|
||||||
@@ -9455,7 +9612,7 @@ a.land as land, p.abkuerzung as projekt, a.zahlungsweise as zahlungsweise,
|
|||||||
if(bearbeiter!="",bearbeiter,a2.name) as bearbeiter,
|
if(bearbeiter!="",bearbeiter,a2.name) as bearbeiter,
|
||||||
CONCAT(UCASE(LEFT(d.typ, 1)), SUBSTRING(d.typ, 2)) as art,
|
CONCAT(UCASE(LEFT(d.typ, 1)), SUBSTRING(d.typ, 2)) as art,
|
||||||
CONCAT(IF(d.sent = 1, "JA", "NEIN"),"<a data-type=dokumente data-id=", d.id, "></a>") as gesendet,
|
CONCAT(IF(d.sent = 1, "JA", "NEIN"),"<a data-type=dokumente data-id=", d.id, "></a>") as gesendet,
|
||||||
"" as pdf,
|
concat("<a href=\"index.php?module=dateien&action=send&id=",(SELECT datei FROM datei_stichwoerter WHERE subjekt="anhang" AND objekt="dokument" AND parameter = d.id LIMIT 1),"\"><img src=./themes/' . $this->app->Conf->WFconf['defaulttheme'] . '/images/pdf.svg></a>") as pdf,
|
||||||
concat("1","-",d.id) as did,d.content as suchtext,d.internebezeichnung
|
concat("1","-",d.id) as did,d.content as suchtext,d.internebezeichnung
|
||||||
FROM
|
FROM
|
||||||
dokumente d
|
dokumente d
|
||||||
@@ -9799,7 +9956,7 @@ a.land as land, p.abkuerzung as projekt, a.zahlungsweise as zahlungsweise,
|
|||||||
*/
|
*/
|
||||||
$this->app->User->SetParameter('stammdatenbereinigen_list_param', implode(';',$paramsGroupBy));
|
$this->app->User->SetParameter('stammdatenbereinigen_list_param', implode(';',$paramsGroupBy));
|
||||||
|
|
||||||
if(count($groupABy)>0)
|
if((empty($groupABy)?0:count($groupABy))>0)
|
||||||
{
|
{
|
||||||
$groupby = '
|
$groupby = '
|
||||||
GROUP BY ' . implode(',', $groupABy) . '
|
GROUP BY ' . implode(',', $groupABy) . '
|
||||||
@@ -10822,7 +10979,7 @@ a.land as land, p.abkuerzung as projekt, a.zahlungsweise as zahlungsweise,
|
|||||||
}
|
}
|
||||||
if(isset($alignright))
|
if(isset($alignright))
|
||||||
{
|
{
|
||||||
for ($aligni = 0;$aligni < count($alignright);$aligni++) {
|
for ($aligni = 0;$aligni < (empty($alignright)?0:count($alignright));$aligni++) {
|
||||||
$this->app->Tpl->Add('YUICSS', '
|
$this->app->Tpl->Add('YUICSS', '
|
||||||
#' . $name . ' > tbody > tr > td:nth-child(' . $alignright[$aligni] . ') {
|
#' . $name . ' > tbody > tr > td:nth-child(' . $alignright[$aligni] . ') {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
@@ -10832,7 +10989,7 @@ a.land as land, p.abkuerzung as projekt, a.zahlungsweise as zahlungsweise,
|
|||||||
}
|
}
|
||||||
if(isset($aligncenter))
|
if(isset($aligncenter))
|
||||||
{
|
{
|
||||||
for ($aligni = 0;$aligni < count($aligncenter);$aligni++) {
|
for ($aligni = 0;$aligni < (empty($aligncenter)?0:count($aligncenter));$aligni++) {
|
||||||
$this->app->Tpl->Add('YUICSS', '
|
$this->app->Tpl->Add('YUICSS', '
|
||||||
#' . $name . ' > tbody > tr > td:nth-child(' . $aligncenter[$aligni] . ') {
|
#' . $name . ' > tbody > tr > td:nth-child(' . $aligncenter[$aligni] . ') {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@@ -10842,7 +10999,7 @@ a.land as land, p.abkuerzung as projekt, a.zahlungsweise as zahlungsweise,
|
|||||||
}
|
}
|
||||||
if(isset($hide320))
|
if(isset($hide320))
|
||||||
{
|
{
|
||||||
for ($h = 0;$h < count($hide320);$h++) {
|
for ($h = 0;$h < (empty($hide320)?0:count($hide320));$h++) {
|
||||||
$this->app->Tpl->Add('YUICSS', '
|
$this->app->Tpl->Add('YUICSS', '
|
||||||
@media screen and (max-width: 320px){
|
@media screen and (max-width: 320px){
|
||||||
#' . $name . ' > thead > tr > th:nth-child(' . $hide320[$h] . ') {
|
#' . $name . ' > thead > tr > th:nth-child(' . $hide320[$h] . ') {
|
||||||
@@ -10861,7 +11018,7 @@ a.land as land, p.abkuerzung as projekt, a.zahlungsweise as zahlungsweise,
|
|||||||
|
|
||||||
if(isset($nowrap) && is_array($nowrap))
|
if(isset($nowrap) && is_array($nowrap))
|
||||||
{
|
{
|
||||||
for ($h = 0;$h < count($nowrap);$h++) {
|
for ($h = 0;$h < (empty($nowrap)?0:count($nowrap));$h++) {
|
||||||
$this->app->Tpl->Add('YUICSS', '
|
$this->app->Tpl->Add('YUICSS', '
|
||||||
@media screen and (max-width: 767px){
|
@media screen and (max-width: 767px){
|
||||||
#' . $name . ' > tbody > tr > td:nth-child(' . $hide767[$h] . '){
|
#' . $name . ' > tbody > tr > td:nth-child(' . $hide767[$h] . '){
|
||||||
@@ -10875,7 +11032,7 @@ a.land as land, p.abkuerzung as projekt, a.zahlungsweise as zahlungsweise,
|
|||||||
|
|
||||||
if(isset($hide767))
|
if(isset($hide767))
|
||||||
{
|
{
|
||||||
for ($h = 0;$h < count($hide767);$h++) {
|
for ($h = 0;$h < (empty($hide767)?0:count($hide767));$h++) {
|
||||||
$this->app->Tpl->Add('YUICSS', '
|
$this->app->Tpl->Add('YUICSS', '
|
||||||
@media screen and (max-width: 767px){
|
@media screen and (max-width: 767px){
|
||||||
#' . $name . ' > thead > tr > th:nth-child(' . $hide767[$h] . ') {
|
#' . $name . ' > thead > tr > th:nth-child(' . $hide767[$h] . ') {
|
||||||
@@ -10894,7 +11051,7 @@ a.land as land, p.abkuerzung as projekt, a.zahlungsweise as zahlungsweise,
|
|||||||
}
|
}
|
||||||
if(isset($hide480))
|
if(isset($hide480))
|
||||||
{
|
{
|
||||||
for ($h = 0;$h < count($hide480);$h++) {
|
for ($h = 0;$h < (empty($hide480)?0:count($hide480));$h++) {
|
||||||
$this->app->Tpl->Add('YUICSS', '
|
$this->app->Tpl->Add('YUICSS', '
|
||||||
@media screen and (max-width: 479px){
|
@media screen and (max-width: 479px){
|
||||||
#' . $name . ' > thead > tr > th:nth-child(' . $hide480[$h] . ') {
|
#' . $name . ' > thead > tr > th:nth-child(' . $hide480[$h] . ') {
|
||||||
@@ -10939,7 +11096,7 @@ a.land as land, p.abkuerzung as projekt, a.zahlungsweise as zahlungsweise,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(isset($hidecolumns) && $hidecolumns && is_array($hidecolumns) && count($hidecolumns) > 2)
|
if(isset($hidecolumns) && $hidecolumns && is_array($hidecolumns) && (empty($hidecolumns)?0:count($hidecolumns)) > 2)
|
||||||
{
|
{
|
||||||
$hidecolumnsitem = $hidecolumns[0];
|
$hidecolumnsitem = $hidecolumns[0];
|
||||||
if(!is_array($hidecolumns[2]))$hidecolumns[2][0] = $hidecolumns[2];
|
if(!is_array($hidecolumns[2]))$hidecolumns[2][0] = $hidecolumns[2];
|
||||||
@@ -11306,7 +11463,7 @@ $directlink=0;
|
|||||||
if( (($this->app->erp->RechteVorhanden($_module,"edit") && $_action=="list") ||
|
if( (($this->app->erp->RechteVorhanden($_module,"edit") && $_action=="list") ||
|
||||||
(!empty($forcerowclick))) && !empty($rowclick))
|
(!empty($forcerowclick))) && !empty($rowclick))
|
||||||
{
|
{
|
||||||
if($menucol > 0 || count($heading) > 0) {
|
if($menucol > 0 || (empty($heading)?0:count($heading)) > 0) {
|
||||||
if(!empty($doppelteids)){
|
if(!empty($doppelteids)){
|
||||||
$doppelteids = '\-[1-9]{1}[0-9]*';
|
$doppelteids = '\-[1-9]{1}[0-9]*';
|
||||||
}else{
|
}else{
|
||||||
@@ -11316,11 +11473,11 @@ if( (($this->app->erp->RechteVorhanden($_module,"edit") && $_action=="list") ||
|
|||||||
{
|
{
|
||||||
$tmpmenucol=$menucol;
|
$tmpmenucol=$menucol;
|
||||||
} else {
|
} else {
|
||||||
$tmpmenucol=!empty($heading)?count($heading)-1:0;
|
$tmpmenucol=!empty($heading)?(empty($heading)?0:count($heading))-1:0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(!empty($menucol) && $menucol > 0 || count($heading) > 0) {
|
if(!empty($menucol) && $menucol > 0 || (empty($heading)?0:count($heading)) > 0) {
|
||||||
if(isset($doppelteids)&& $doppelteids){
|
if(isset($doppelteids)&& $doppelteids){
|
||||||
$doppelteids = '\-[1-9]{1}[0-9]*';
|
$doppelteids = '\-[1-9]{1}[0-9]*';
|
||||||
}
|
}
|
||||||
@@ -11331,7 +11488,7 @@ if(!empty($menucol) && $menucol > 0 || count($heading) > 0) {
|
|||||||
{
|
{
|
||||||
$tmpmenucol=$menucol;
|
$tmpmenucol=$menucol;
|
||||||
} else {
|
} else {
|
||||||
$tmpmenucol=count($heading)-1;
|
$tmpmenucol=(empty($heading)?0:count($heading))-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(empty($rowclickaction) || $rowclickaction=="")
|
if(empty($rowclickaction) || $rowclickaction=="")
|
||||||
@@ -11389,7 +11546,7 @@ if((isset($extra_anzahl_datensaetze) && (int)$extra_anzahl_datensaetze > 0) || (
|
|||||||
{
|
{
|
||||||
if(!empty($aLengthMenuArr))
|
if(!empty($aLengthMenuArr))
|
||||||
{
|
{
|
||||||
if($aLengthMenuArr[count($aLengthMenuArr)-1] < $maxrows)
|
if($aLengthMenuArr[(empty($aLengthMenuArr)?0:count($aLengthMenuArr))-1] < $maxrows)
|
||||||
{
|
{
|
||||||
$aLengthMenuArr[] = (int)$maxrows;
|
$aLengthMenuArr[] = (int)$maxrows;
|
||||||
break;
|
break;
|
||||||
@@ -12028,7 +12185,7 @@ url:strUrl, success:function(html){strReturn = html;}, async:false
|
|||||||
}
|
}
|
||||||
');
|
');
|
||||||
}
|
}
|
||||||
$colspan = !empty($heading)?count($heading):1;
|
$colspan = !empty($heading)?(empty($heading)?0:count($heading)):1;
|
||||||
//<tr><th colspan="' . $colspan . '"><br></th></tr>
|
//<tr><th colspan="' . $colspan . '"><br></th></tr>
|
||||||
$this->app->Tpl->Add($parsetarget, '
|
$this->app->Tpl->Add($parsetarget, '
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
@@ -12036,7 +12193,7 @@ url:strUrl, success:function(html){strReturn = html;}, async:false
|
|||||||
<thead>
|
<thead>
|
||||||
<tr>');
|
<tr>');
|
||||||
if(!empty($heading)){
|
if(!empty($heading)){
|
||||||
$cHeading = count($heading);
|
$cHeading = (empty($heading)?0:count($heading));
|
||||||
for ($i = 0; $i < $cHeading; $i++) {
|
for ($i = 0; $i < $cHeading; $i++) {
|
||||||
$this->app->Tpl->Add(
|
$this->app->Tpl->Add(
|
||||||
$parsetarget,
|
$parsetarget,
|
||||||
@@ -12050,7 +12207,7 @@ url:strUrl, success:function(html){strReturn = html;}, async:false
|
|||||||
if(empty($columnfilter) && !(isset($columnfilter) && $columnfilter === false)) {
|
if(empty($columnfilter) && !(isset($columnfilter) && $columnfilter === false)) {
|
||||||
$this->app->Tpl->Add($parsetarget, '</tr><tr>');
|
$this->app->Tpl->Add($parsetarget, '</tr><tr>');
|
||||||
if(!empty($heading)){
|
if(!empty($heading)){
|
||||||
$cHeading = count($heading);
|
$cHeading = (empty($heading)?0:count($heading));
|
||||||
for ($i = 0; $i < $cHeading; $i++) {
|
for ($i = 0; $i < $cHeading; $i++) {
|
||||||
$this->app->Tpl->Add(
|
$this->app->Tpl->Add(
|
||||||
$parsetarget,
|
$parsetarget,
|
||||||
@@ -12073,7 +12230,7 @@ url:strUrl, success:function(html){strReturn = html;}, async:false
|
|||||||
<tr>
|
<tr>
|
||||||
');
|
');
|
||||||
if(!empty($heading)){
|
if(!empty($heading)){
|
||||||
$cheader = count($heading);
|
$cheader = (empty($heading)?0:count($heading));
|
||||||
for ($i = 0; $i < $cheader; $i++) {
|
for ($i = 0; $i < $cheader; $i++) {
|
||||||
$this->app->Tpl->Add(
|
$this->app->Tpl->Add(
|
||||||
$parsetarget,
|
$parsetarget,
|
||||||
@@ -12085,9 +12242,6 @@ url:strUrl, success:function(html){strReturn = html;}, async:false
|
|||||||
</tr>
|
</tr>
|
||||||
</tfoot>
|
</tfoot>
|
||||||
</table></div>
|
</table></div>
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
');
|
');
|
||||||
|
|
||||||
if((empty($disableautosavefilter)) && $this->anzusersaves < 2) {
|
if((empty($disableautosavefilter)) && $this->anzusersaves < 2) {
|
||||||
@@ -13815,7 +13969,7 @@ source: "index.php?module=ajax&action=filter&filtername=' . $filter . $extendurl
|
|||||||
function ChartDB($sql, $parsetarget, $width, $height, $limitmin = 0, $limitmax = 100, $gridy = 5) {
|
function ChartDB($sql, $parsetarget, $width, $height, $limitmin = 0, $limitmax = 100, $gridy = 5) {
|
||||||
|
|
||||||
$result = $this->app->DB->SelectArr($sql);
|
$result = $this->app->DB->SelectArr($sql);
|
||||||
for ($i = 0;$i < count($result);$i++) {
|
for ($i = 0;$i < (empty($result)?0:count($result));$i++) {
|
||||||
$lables[] = $result[$i]['legende'];
|
$lables[] = $result[$i]['legende'];
|
||||||
$values[] = $result[$i]['wert'];
|
$values[] = $result[$i]['wert'];
|
||||||
}
|
}
|
||||||
@@ -13828,7 +13982,7 @@ source: "index.php?module=ajax&action=filter&filtername=' . $filter . $extendurl
|
|||||||
function Chart($parsetarget, $labels, $width = 400, $height = 200, $limitmin = 0, $limitmax = 100, $gridy = 5) {
|
function Chart($parsetarget, $labels, $width = 400, $height = 200, $limitmin = 0, $limitmax = 100, $gridy = 5) {
|
||||||
$werte = '';
|
$werte = '';
|
||||||
$values = $labels;
|
$values = $labels;
|
||||||
for ($i = 0;$i < count($values) - 1;$i++) {
|
for ($i = 0;$i < (empty($values)?0:count($values)) - 1;$i++) {
|
||||||
$werte = $werte . "'" . $values[$i] . "',";
|
$werte = $werte . "'" . $values[$i] . "',";
|
||||||
}
|
}
|
||||||
$werte = $werte . "'" . $values[$i + 1] . "'";
|
$werte = $werte . "'" . $values[$i + 1] . "'";
|
||||||
@@ -13837,7 +13991,7 @@ source: "index.php?module=ajax&action=filter&filtername=' . $filter . $extendurl
|
|||||||
$this->app->Tpl->Set('CHART_HEIGHT', $height);
|
$this->app->Tpl->Set('CHART_HEIGHT', $height);
|
||||||
$this->app->Tpl->Set('LIMITMIN', $limitmin);
|
$this->app->Tpl->Set('LIMITMIN', $limitmin);
|
||||||
$this->app->Tpl->Set('LIMITMAX', $limitmax);
|
$this->app->Tpl->Set('LIMITMAX', $limitmax);
|
||||||
$this->app->Tpl->Set('GRIDX', count($values));
|
$this->app->Tpl->Set('GRIDX', (empty($values)?0:count($values)));
|
||||||
$this->app->Tpl->Set('GRIDY', $gridy);
|
$this->app->Tpl->Set('GRIDY', $gridy);
|
||||||
$this->app->Tpl->Parse($parsetarget, "chart.tpl");
|
$this->app->Tpl->Parse($parsetarget, "chart.tpl");
|
||||||
}
|
}
|
||||||
@@ -13866,7 +14020,7 @@ source: "index.php?module=ajax&action=filter&filtername=' . $filter . $extendurl
|
|||||||
|
|
||||||
function ChartAdd($color, $values) {
|
function ChartAdd($color, $values) {
|
||||||
$werte = '';
|
$werte = '';
|
||||||
for ($i = 0;$i < count($values) - 1;$i++) {
|
for ($i = 0;$i < (empty($values)?0:count($values)) - 1;$i++) {
|
||||||
$werte = $werte . $values[$i] . ",";
|
$werte = $werte . $values[$i] . ",";
|
||||||
}
|
}
|
||||||
$werte = $werte . $values[$i + 1];
|
$werte = $werte . $values[$i + 1];
|
||||||
@@ -13931,7 +14085,7 @@ source: "index.php?module=ajax&action=filter&filtername=' . $filter . $extendurl
|
|||||||
LEFT JOIN datei_version v ON v.datei=v2.datei AND v.version = v2.version WHERE $where ORDER BY s.sort DESC LIMIT 2 ";
|
LEFT JOIN datei_version v ON v.datei=v2.datei AND v.version = v2.version WHERE $where ORDER BY s.sort DESC LIMIT 2 ";
|
||||||
$query = $this->app->DB->SelectArr($sql);
|
$query = $this->app->DB->SelectArr($sql);
|
||||||
$status = 0;
|
$status = 0;
|
||||||
if($query && count($query) == 2)
|
if($query && (empty($query)?0:count($query)) == 2)
|
||||||
{
|
{
|
||||||
$status = 1;
|
$status = 1;
|
||||||
$this->app->DB->Update("UPDATE datei_stichwoerter SET sort = '".$query[1]['sort']."' WHERE id = '".$query[0]['id']."' LIMIT 1");
|
$this->app->DB->Update("UPDATE datei_stichwoerter SET sort = '".$query[1]['sort']."' WHERE id = '".$query[0]['id']."' LIMIT 1");
|
||||||
@@ -13964,7 +14118,7 @@ source: "index.php?module=ajax&action=filter&filtername=' . $filter . $extendurl
|
|||||||
LEFT JOIN datei_version v ON v.datei=v2.datei AND v.version = v2.version WHERE $where ORDER BY s.sort LIMIT 2 ";
|
LEFT JOIN datei_version v ON v.datei=v2.datei AND v.version = v2.version WHERE $where ORDER BY s.sort LIMIT 2 ";
|
||||||
$query = $this->app->DB->SelectArr($sql);
|
$query = $this->app->DB->SelectArr($sql);
|
||||||
$status = 0;
|
$status = 0;
|
||||||
if($query && count($query) == 2)
|
if($query && (empty($query)?0:count($query)) == 2)
|
||||||
{
|
{
|
||||||
$status = 1;
|
$status = 1;
|
||||||
$this->app->DB->Update("UPDATE datei_stichwoerter SET sort = '".$query[1]['sort']."' WHERE id = '".$query[0]['id']."' LIMIT 1");
|
$this->app->DB->Update("UPDATE datei_stichwoerter SET sort = '".$query[1]['sort']."' WHERE id = '".$query[0]['id']."' LIMIT 1");
|
||||||
@@ -14075,7 +14229,7 @@ source: "index.php?module=ajax&action=filter&filtername=' . $filter . $extendurl
|
|||||||
}
|
}
|
||||||
if(!$found)unset($auswahl[$k]);
|
if(!$found)unset($auswahl[$k]);
|
||||||
}
|
}
|
||||||
if(!$auswahl || count($auswahl) == 0)
|
if(!$auswahl || (empty($auswahl)?0:count($auswahl)) == 0)
|
||||||
{
|
{
|
||||||
echo 'Keine PDF-Dateien ausgewählt!';
|
echo 'Keine PDF-Dateien ausgewählt!';
|
||||||
exit;
|
exit;
|
||||||
@@ -14146,7 +14300,7 @@ source: "index.php?module=ajax&action=filter&filtername=' . $filter . $extendurl
|
|||||||
}
|
}
|
||||||
if(!$found)unset($auswahl[$k]);
|
if(!$found)unset($auswahl[$k]);
|
||||||
}
|
}
|
||||||
if(!$auswahl || count($auswahl) == 0)
|
if(!$auswahl || (empty($auswahl)?0:count($auswahl)) == 0)
|
||||||
{
|
{
|
||||||
echo 'Keine Dateien ausgewählt!';
|
echo 'Keine Dateien ausgewählt!';
|
||||||
exit;
|
exit;
|
||||||
@@ -14267,7 +14421,7 @@ source: "index.php?module=ajax&action=filter&filtername=' . $filter . $extendurl
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
$tmp = $this->app->DB->SelectArr("SELECT * FROM datei_stichwortvorlagen WHERE modul='' ORDER by beschriftung");
|
$tmp = $this->app->DB->SelectArr("SELECT * FROM datei_stichwortvorlagen WHERE modul='' ORDER by beschriftung");
|
||||||
for($i=0;$i<count($tmp);$i++)
|
for($i=0;$i<(empty($tmp)?0:count($tmp));$i++)
|
||||||
$this->app->Tpl->Add('EXTRASTICHWOERTER','<option value="'.$tmp[$i]['beschriftung'].'">'.$tmp[$i]['beschriftung'].'</option>');
|
$this->app->Tpl->Add('EXTRASTICHWOERTER','<option value="'.$tmp[$i]['beschriftung'].'">'.$tmp[$i]['beschriftung'].'</option>');
|
||||||
*/
|
*/
|
||||||
$maxsize = 0;
|
$maxsize = 0;
|
||||||
@@ -14572,7 +14726,7 @@ source: "index.php?module=ajax&action=filter&filtername=' . $filter . $extendurl
|
|||||||
if ($module == "angebot" || $module == "auftrag" || $module == "rechnung" || $module == "gutschrift" || $module == "proformarechnung") {
|
if ($module == "angebot" || $module == "auftrag" || $module == "rechnung" || $module == "gutschrift" || $module == "proformarechnung") {
|
||||||
|
|
||||||
if ($schreibschutz != 1) {
|
if ($schreibschutz != 1) {
|
||||||
$addrow = array('<form action="" method="post" id="myform">', '[ARTIKELSTART]<input type="text" size="30" name="artikel" id="artikel" onblur="window.setTimeout(\'selectafterblur()\',200);">[ARTIKELENDE]', '<input type="text" name="projekt" id="projekt" size="10" readonly onclick="checkhere()" >', '<input type="text" name="nummer" id="nummer" size="7">', '<input type="text" size="8" name="lieferdatum" id="lieferdatum">', '<input type="text" name="menge" id="menge" size="5" onblur="window.setTimeout(\'selectafterblurmenge()\',200); document.getElementById(\'preis\').style.background =\'none\';">', '<input type="text" name="preis" id="preis" size="10" onclick="checkhere();">', '<input type="text" name="waehrung" id="waehrung" size="10" onclick="checkhere();">' ,'<input type="text" name="rabatt" id="rabatt" size="7">');
|
$addrow = array('<form action="" method="post" id="myform">', '[ARTIKELSTART]<input type="text" size="30" name="artikel" id="artikel" onblur="window.setTimeout(\'selectafterblur()\',200);">[ARTIKELENDE]', '<input type="text" name="projekt" id="projekt" size="10" readonly onclick="checkhere()" >', '<input type="text" name="nummer" id="nummer" size="7">', '<input type="text" size="8" name="lieferdatum" id="lieferdatum">', '<input type="text" name="menge" id="menge" size="5" onblur="window.setTimeout(\'selectafterblurmenge()\',200); document.getElementById(\'preis\').style.background =\'none\';">', '<input type="text" name="preis" id="preis" size="10" onclick="checkhere();">', '<input type="text" name="waehrung" id="waehrung" size="10" onclick="checkhere();">' ,'<input type="text" name="rabatt" id="rabatt" size="7">','','');
|
||||||
$addrow[] = '<input type="submit" value="einfügen" name="ajaxbuchen">
|
$addrow[] = '<input type="submit" value="einfügen" name="ajaxbuchen">
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
document.onkeydown = function(evt) {
|
document.onkeydown = function(evt) {
|
||||||
@@ -14735,9 +14889,11 @@ source: "index.php?module=ajax&action=filter&filtername=' . $filter . $extendurl
|
|||||||
}
|
}
|
||||||
$table->headings[6] = 'Preis';
|
$table->headings[6] = 'Preis';
|
||||||
$mengencol = 5;
|
$mengencol = 5;
|
||||||
if ($module == "angebot" || $module == "auftrag" || $module == "rechnung" || $module == "gutschrift") $table->headings[7] = 'Währung';
|
if ($module == "angebot" || $module == "auftrag" || $module == "rechnung" || $module == "gutschrift") {
|
||||||
if ($module == "angebot" || $module == "auftrag" || $module == "rechnung" || $module == "gutschrift") $table->headings[8] = 'Rabatt';
|
$table->headings[7] = 'Währung';
|
||||||
if ($module == "angebot" || $module == "auftrag" || $module == "rechnung" || $module == "gutschrift") $rabattcol = 8;
|
$table->headings[8] = 'Rabatt';
|
||||||
|
$rabattcol = 8;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$__arr = array($summencol, $mengencol, $rabattcol, $ecol, $dcol,$zwischensumme);
|
$__arr = array($summencol, $mengencol, $rabattcol, $ecol, $dcol,$zwischensumme);
|
||||||
$this->app->erp->RunHook('yui_sortlistadd_draw', 2,$table,$__arr);
|
$this->app->erp->RunHook('yui_sortlistadd_draw', 2,$table,$__arr);
|
||||||
@@ -15080,7 +15236,7 @@ source: "index.php?module=ajax&action=filter&filtername=' . $filter . $extendurl
|
|||||||
$summenarray[] = '<input type="hidden" id="mcol" value="'.$mengencol.'" /><input type="hidden" id="rcol" value="'.$rabattcol.'" /><input type="hidden" id="scol" value="'.$summencol.'" /><span id="zwischensumme">'.number_format($zwischensumme,4,'.','').'</span>';
|
$summenarray[] = '<input type="hidden" id="mcol" value="'.$mengencol.'" /><input type="hidden" id="rcol" value="'.$rabattcol.'" /><input type="hidden" id="scol" value="'.$summencol.'" /><span id="zwischensumme">'.number_format($zwischensumme,4,'.','').'</span>';
|
||||||
if($module != 'verbindlichkeit')$summenarray[] = '';
|
if($module != 'verbindlichkeit')$summenarray[] = '';
|
||||||
$summenarray[] = '';
|
$summenarray[] = '';
|
||||||
$summenarray[count($summenarray)-1] .= $js;
|
$summenarray[(empty($summenarray)?0:count($summenarray))-1] .= $js;
|
||||||
if($mengencol && $summencol && $module!='produktion')$table->AddRow($summenarray);
|
if($mengencol && $summencol && $module!='produktion')$table->AddRow($summenarray);
|
||||||
|
|
||||||
//$this->app->YUI->AutoComplete(ARTIKELAUTO,"artikel",array('name_de','warengruppe'),"nummer");
|
//$this->app->YUI->AutoComplete(ARTIKELAUTO,"artikel",array('name_de','warengruppe'),"nummer");
|
||||||
@@ -15602,11 +15758,11 @@ function IframeDialog($width, $height, $src = "") {
|
|||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<div id=\"preistabellediv\" style=\"display:none;\"><div id=\"preiserror\">".(count($waehrungen) > 1?"":"Bitte legen Sie erst Währungen an!")."</div>
|
<div id=\"preistabellediv\" style=\"display:none;\"><div id=\"preiserror\">".((empty($waehrungen)?0:count($waehrungen)) > 1?"":"Bitte legen Sie erst Währungen an!")."</div>
|
||||||
|
|
||||||
";
|
";
|
||||||
$i = -1;
|
$i = -1;
|
||||||
if(count($waehrungen) > 1)
|
if((empty($waehrungen)?0:count($waehrungen)) > 1)
|
||||||
{
|
{
|
||||||
$htmltabelle .= "<table><tr><th>Währung</th><th>Kurs</th><th>umgerechnter Preis</th><th>Aktion</th></tr>";
|
$htmltabelle .= "<table><tr><th>Währung</th><th>Kurs</th><th>umgerechnter Preis</th><th>Aktion</th></tr>";
|
||||||
foreach($waehrungen as $waehrung => $kurs)
|
foreach($waehrungen as $waehrung => $kurs)
|
||||||
|
|||||||
@@ -44,6 +44,10 @@ class PLACEHOLDER_MODULECLASSNAME {
|
|||||||
|
|
||||||
$dropnbox = "PLACEHOLDER_DROPNBOX";
|
$dropnbox = "PLACEHOLDER_DROPNBOX";
|
||||||
|
|
||||||
|
// $moreinfo = true; // Allow drop down details
|
||||||
|
// $moreinfoaction = "lieferschein"; // specify suffix for minidetail-URL to allow different minidetails
|
||||||
|
// $menucol = 11; // Set id col for moredata/menu
|
||||||
|
|
||||||
$menu = "<table cellpadding=0 cellspacing=0><tr><td nowrap>" . "<a href=\"index.php?module=PLACEHOLDER_MODULENAME&action=edit&id=%value%\"><img src=\"./themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a> <a href=\"#\" onclick=DeleteDialog(\"index.php?module=PLACEHOLDER_MODULENAME&action=delete&id=%value%\");>" . "<img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"></a>" . "</td></tr></table>";
|
$menu = "<table cellpadding=0 cellspacing=0><tr><td nowrap>" . "<a href=\"index.php?module=PLACEHOLDER_MODULENAME&action=edit&id=%value%\"><img src=\"./themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a> <a href=\"#\" onclick=DeleteDialog(\"index.php?module=PLACEHOLDER_MODULENAME&action=delete&id=%value%\");>" . "<img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"></a>" . "</td></tr></table>";
|
||||||
|
|
||||||
$sql = "PLACEHOLDER_SQL_LIST";
|
$sql = "PLACEHOLDER_SQL_LIST";
|
||||||
@@ -118,6 +122,8 @@ class PLACEHOLDER_MODULECLASSNAME {
|
|||||||
|
|
||||||
// Add checks here
|
// Add checks here
|
||||||
|
|
||||||
|
// $input['projekt'] = $this->app->erp->ReplaceProjekt(true,$input['projekt'],true); // Parameters: Target db?, value, from form?
|
||||||
|
|
||||||
$columns = "id, ";
|
$columns = "id, ";
|
||||||
$values = "$id, ";
|
$values = "$id, ";
|
||||||
$update = "";
|
$update = "";
|
||||||
@@ -166,6 +172,9 @@ class PLACEHOLDER_MODULECLASSNAME {
|
|||||||
$this->app->Tpl->Add('KURZUEBERSCHRIFT2', $email);
|
$this->app->Tpl->Add('KURZUEBERSCHRIFT2', $email);
|
||||||
$this->app->Tpl->Add('EMAIL', $email);
|
$this->app->Tpl->Add('EMAIL', $email);
|
||||||
$this->app->Tpl->Add('ANGEZEIGTERNAME', $angezeigtername);
|
$this->app->Tpl->Add('ANGEZEIGTERNAME', $angezeigtername);
|
||||||
|
|
||||||
|
$this->app->YUI->AutoComplete("artikel", "artikelnummer");
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// $this->SetInput($input);
|
// $this->SetInput($input);
|
||||||
@@ -183,14 +192,4 @@ class PLACEHOLDER_MODULECLASSNAME {
|
|||||||
|
|
||||||
return $input;
|
return $input;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Set all fields in the page corresponding to $input
|
|
||||||
*/
|
|
||||||
function SetInput($input) {
|
|
||||||
// $this->app->Tpl->Set('EMAIL', $input['email']);
|
|
||||||
|
|
||||||
PLACEHOLDER_SET_INPUT
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+11264
-7816
File diff suppressed because it is too large
Load Diff
@@ -365,6 +365,9 @@ function upgrade_main(string $directory,bool $verbose, bool $check_git, bool $do
|
|||||||
foreach ($compare_differences as $compare_difference) {
|
foreach ($compare_differences as $compare_difference) {
|
||||||
$comma = "";
|
$comma = "";
|
||||||
foreach ($compare_difference as $key => $value) {
|
foreach ($compare_difference as $key => $value) {
|
||||||
|
if (is_array($value)) {
|
||||||
|
$value = implode(',',$value);
|
||||||
|
}
|
||||||
echo_out($comma."$key => [$value]");
|
echo_out($comma."$key => [$value]");
|
||||||
$comma = ", ";
|
$comma = ", ";
|
||||||
}
|
}
|
||||||
@@ -415,6 +418,10 @@ function upgrade_main(string $directory,bool $verbose, bool $check_git, bool $do
|
|||||||
$counter++;
|
$counter++;
|
||||||
echo_out("\rUpgrade step $counter of $number_of_statements... ");
|
echo_out("\rUpgrade step $counter of $number_of_statements... ");
|
||||||
|
|
||||||
|
if ($verbose) {
|
||||||
|
echo_out("\n".$sql."\n");
|
||||||
|
}
|
||||||
|
|
||||||
$query_result = mysqli_query($mysqli, $sql);
|
$query_result = mysqli_query($mysqli, $sql);
|
||||||
if (!$query_result) {
|
if (!$query_result) {
|
||||||
$error = " not ok: ". mysqli_error($mysqli);
|
$error = " not ok: ". mysqli_error($mysqli);
|
||||||
|
|||||||
+69
-28
@@ -67,6 +67,7 @@ $mustal_replacers = [
|
|||||||
['on update current_timestamp','on update current_timestamp()']
|
['on update current_timestamp','on update current_timestamp()']
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
// Load all db_def from a DB connection into a db_def array
|
// Load all db_def from a DB connection into a db_def array
|
||||||
function mustal_load_tables_from_db(string $host, string $schema, string $user, string $passwd, array $replacers) : array {
|
function mustal_load_tables_from_db(string $host, string $schema, string $user, string $passwd, array $replacers) : array {
|
||||||
|
|
||||||
@@ -79,20 +80,22 @@ function mustal_load_tables_from_db(string $host, string $schema, string $user,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get db_def and views
|
// Get db_def and views
|
||||||
$sql = "SHOW FULL tables WHERE Table_type = 'BASE TABLE'";
|
$sql = "SHOW TABLE STATUS WHERE engine IS NOT NULL";
|
||||||
$query_result = mysqli_query($mysqli, $sql);
|
$query_result = mysqli_query($mysqli, $sql);
|
||||||
if (!$query_result) {
|
if (!$query_result) {
|
||||||
return(array());
|
return(array());
|
||||||
}
|
}
|
||||||
while ($row = mysqli_fetch_assoc($query_result)) {
|
while ($row = mysqli_fetch_assoc($query_result)) {
|
||||||
$table = array();
|
$table = array();
|
||||||
$table['name'] = $row['Tables_in_'.$schema];
|
$table['name'] = $row['Name'];
|
||||||
$table['type'] = $row['Table_type'];
|
$table['collation'] = $row['Collation'];
|
||||||
|
$table['type'] = 'BASE TABLE';
|
||||||
$tables[] = $table; // Add table to list of tables
|
$tables[] = $table; // Add table to list of tables
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get and add columns of the table
|
// Get and add columns of the table
|
||||||
foreach ($tables as &$table) {
|
foreach ($tables as &$table) {
|
||||||
|
|
||||||
$sql = "SHOW FULL COLUMNS FROM ".$table['name'];
|
$sql = "SHOW FULL COLUMNS FROM ".$table['name'];
|
||||||
$query_result = mysqli_query($mysqli, $sql);
|
$query_result = mysqli_query($mysqli, $sql);
|
||||||
|
|
||||||
@@ -109,6 +112,10 @@ function mustal_load_tables_from_db(string $host, string $schema, string $user,
|
|||||||
$column['Default'] = mustal_mysql_put_text_type_in_quotes($column['Type'],$column['Default']);
|
$column['Default'] = mustal_mysql_put_text_type_in_quotes($column['Type'],$column['Default']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (empty($column['Collation']) && mustal_is_string_type($column['Type'])) {
|
||||||
|
$column['Collation'] = $table['collation'];
|
||||||
|
}
|
||||||
|
|
||||||
$columns[] = $column; // Add column to list of columns
|
$columns[] = $column; // Add column to list of columns
|
||||||
}
|
}
|
||||||
$table['columns'] = $columns;
|
$table['columns'] = $columns;
|
||||||
@@ -135,6 +142,13 @@ function mustal_load_tables_from_db(string $host, string $schema, string $user,
|
|||||||
$composed_key['Key_name'] = $key['Key_name'];
|
$composed_key['Key_name'] = $key['Key_name'];
|
||||||
$composed_key['Index_type'] = $key['Index_type'];
|
$composed_key['Index_type'] = $key['Index_type'];
|
||||||
$composed_key['columns'][] = $key['Column_name'];
|
$composed_key['columns'][] = $key['Column_name'];
|
||||||
|
|
||||||
|
if ($key['Key_name'] != 'PRIMARY') {
|
||||||
|
$composed_key['Non_unique'] = ($key['Non_unique'] == 1)?'':'UNIQUE';
|
||||||
|
} else {
|
||||||
|
$composed_key['Non_unique'] = '';
|
||||||
|
}
|
||||||
|
|
||||||
$composed_keys[] = $composed_key;
|
$composed_keys[] = $composed_key;
|
||||||
} else {
|
} else {
|
||||||
// Given key, add column
|
// Given key, add column
|
||||||
@@ -161,9 +175,16 @@ function mustal_load_tables_from_db(string $host, string $schema, string $user,
|
|||||||
|
|
||||||
foreach ($views as &$view) {
|
foreach ($views as &$view) {
|
||||||
$sql = "SHOW CREATE VIEW ".$view['name'];
|
$sql = "SHOW CREATE VIEW ".$view['name'];
|
||||||
|
|
||||||
|
try {
|
||||||
$query_result = mysqli_query($mysqli, $sql);
|
$query_result = mysqli_query($mysqli, $sql);
|
||||||
|
}
|
||||||
|
catch (exception $e) {
|
||||||
|
$query_result = false; // VIEW is erroneous
|
||||||
|
}
|
||||||
if (!$query_result) {
|
if (!$query_result) {
|
||||||
return(array());
|
$view['Create'] = '';
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
$viewdef = mysqli_fetch_assoc($query_result);
|
$viewdef = mysqli_fetch_assoc($query_result);
|
||||||
|
|
||||||
@@ -330,19 +351,17 @@ function mustal_compare_table_array(array $nominal, string $nominal_name, array
|
|||||||
// Compare the properties of the sql_indexs
|
// Compare the properties of the sql_indexs
|
||||||
if ($check_column_definitions) {
|
if ($check_column_definitions) {
|
||||||
$found_sql_index = $found_table['keys'][$sql_index_key];
|
$found_sql_index = $found_table['keys'][$sql_index_key];
|
||||||
|
|
||||||
foreach ($sql_index as $key => $value) {
|
foreach ($sql_index as $key => $value) {
|
||||||
if ($found_sql_index[$key] != $value) {
|
if ($found_sql_index[$key] != $value) {
|
||||||
|
|
||||||
// if ($key != 'permissions') {
|
|
||||||
$compare_difference = array();
|
$compare_difference = array();
|
||||||
$compare_difference['type'] = "Key definition";
|
$compare_difference['type'] = "Key definition";
|
||||||
$compare_difference['table'] = $database_table['name'];
|
$compare_difference['table'] = $database_table['name'];
|
||||||
$compare_difference['key'] = $sql_index['Key_name'];
|
$compare_difference['key'] = $sql_index['Key_name'];
|
||||||
$compare_difference['property'] = $key;
|
$compare_difference['property'] = $key;
|
||||||
$compare_difference[$nominal_name] = implode(',',$value);
|
$compare_difference[$nominal_name] = $value;
|
||||||
$compare_difference[$actual_name] = implode(',',$found_sql_index[$key]);
|
$compare_difference[$actual_name] = $found_sql_index[$key];
|
||||||
$compare_differences[] = $compare_difference;
|
$compare_differences[] = $compare_difference;
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
unset($value);
|
unset($value);
|
||||||
@@ -401,9 +420,11 @@ function mustal_compare_table_array(array $nominal, string $nominal_name, array
|
|||||||
// Generate SQL to create or modify column
|
// Generate SQL to create or modify column
|
||||||
function mustal_column_sql_definition(string $table_name, array $column, array $reserved_words_without_quote) : string {
|
function mustal_column_sql_definition(string $table_name, array $column, array $reserved_words_without_quote) : string {
|
||||||
|
|
||||||
|
$column_is_string_type = mustal_is_string_type($column['Type']);
|
||||||
|
|
||||||
foreach($column as $key => &$value) {
|
foreach($column as $key => &$value) {
|
||||||
$value = (string) $value;
|
$value = (string) $value;
|
||||||
$value = mustal_column_sql_create_property_definition($key,$value,$reserved_words_without_quote);
|
$value = mustal_column_sql_create_property_definition($key,$value,$reserved_words_without_quote,$column_is_string_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Default handling here
|
// Default handling here
|
||||||
@@ -422,7 +443,7 @@ function mustal_column_sql_definition(string $table_name, array $column, array $
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Generate SQL to modify a single column property
|
// Generate SQL to modify a single column property
|
||||||
function mustal_column_sql_create_property_definition(string $property, string $property_value, array $reserved_words_without_quote) : string {
|
function mustal_column_sql_create_property_definition(string $property, string $property_value, array $reserved_words_without_quote, $column_is_string_type) : string {
|
||||||
|
|
||||||
switch ($property) {
|
switch ($property) {
|
||||||
case 'Type':
|
case 'Type':
|
||||||
@@ -453,8 +474,10 @@ function mustal_column_sql_create_property_definition(string $property, string $
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'Collation':
|
case 'Collation':
|
||||||
if ($property_value != '') {
|
if ($property_value != '' && $column_is_string_type) {
|
||||||
$property_value = " COLLATE ".$property_value;
|
$property_value = " COLLATE ".$property_value;
|
||||||
|
} else {
|
||||||
|
$property_value = "";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -468,9 +491,9 @@ function mustal_column_sql_create_property_definition(string $property, string $
|
|||||||
// Replaces different variants of the same function mustal_to allow comparison
|
// Replaces different variants of the same function mustal_to allow comparison
|
||||||
function mustal_sql_replace_reserved_functions(array &$column, array $replacers) {
|
function mustal_sql_replace_reserved_functions(array &$column, array $replacers) {
|
||||||
|
|
||||||
$result = strtolower($column['Default']);
|
$result = $column['Default'];
|
||||||
foreach ($replacers as $replace) {
|
foreach ($replacers as $replace) {
|
||||||
if ($result == $replace[0]) {
|
if (strtolower($column['Default']) == $replace[0]) {
|
||||||
$result = $replace[1];
|
$result = $replace[1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -561,14 +584,7 @@ function mustal_calculate_db_upgrade(array $compare_def, array $db_def, array &$
|
|||||||
if ($key['Key_name'] == 'PRIMARY') {
|
if ($key['Key_name'] == 'PRIMARY') {
|
||||||
$keystring = "PRIMARY KEY ";
|
$keystring = "PRIMARY KEY ";
|
||||||
} else {
|
} else {
|
||||||
|
$keystring = mustal_key_type(" ".$key['Non_unique']." KEY `".$key['Key_name']."` ",$key['Index_type']);
|
||||||
if(array_key_exists('Index_type', $key)) {
|
|
||||||
$index_type = $key['Index_type'];
|
|
||||||
} else {
|
|
||||||
$index_type = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
$keystring = $index_type." KEY `".$key['Key_name']."` ";
|
|
||||||
}
|
}
|
||||||
$sql .= $comma.$keystring."(`".implode("`,`",$key['columns'])."`) ";
|
$sql .= $comma.$keystring."(`".implode("`,`",$key['columns'])."`) ";
|
||||||
}
|
}
|
||||||
@@ -651,10 +667,7 @@ function mustal_calculate_db_upgrade(array $compare_def, array $db_def, array &$
|
|||||||
|
|
||||||
if ($key_key !== false) {
|
if ($key_key !== false) {
|
||||||
$key = $table['keys'][$key_key];
|
$key = $table['keys'][$key_key];
|
||||||
|
$sql = "ALTER TABLE `$table_name` ADD ".mustal_key_type(" ".$key['Non_unique']." KEY `".$key['Key_name']."` "."(`".implode("`,`",$key['columns'])."`)",$key['Index_type']).";";
|
||||||
$sql = "ALTER TABLE `$table_name` ADD KEY `".$key_name."` ";
|
|
||||||
$sql .= "(`".implode("`,`",$key['columns'])."`)";
|
|
||||||
$sql .= ";";
|
|
||||||
$upgrade_sql[] = $sql;
|
$upgrade_sql[] = $sql;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -682,7 +695,7 @@ function mustal_calculate_db_upgrade(array $compare_def, array $db_def, array &$
|
|||||||
$sql = "ALTER TABLE `$table_name` DROP KEY `".$key_name."`;";
|
$sql = "ALTER TABLE `$table_name` DROP KEY `".$key_name."`;";
|
||||||
$upgrade_sql[] = $sql;
|
$upgrade_sql[] = $sql;
|
||||||
|
|
||||||
$sql = "ALTER TABLE `$table_name` ADD KEY `".$key_name."` ";
|
$sql = "ALTER TABLE `$table_name` ADD ".mustal_key_type(" ".$key['Non_unique']." KEY `".$key['Key_name']."` ",$key['Index_type']);
|
||||||
$sql .= "(`".implode("`,`",$key['columns'])."`)";
|
$sql .= "(`".implode("`,`",$key['columns'])."`)";
|
||||||
$sql .= ";";
|
$sql .= ";";
|
||||||
$upgrade_sql[] = $sql;
|
$upgrade_sql[] = $sql;
|
||||||
@@ -743,6 +756,34 @@ function mustal_calculate_db_upgrade(array $compare_def, array $db_def, array &$
|
|||||||
array_unshift($upgrade_sql,"SET SQL_MODE='ALLOW_INVALID_DATES';","SET SESSION innodb_strict_mode=OFF;");
|
array_unshift($upgrade_sql,"SET SQL_MODE='ALLOW_INVALID_DATES';","SET SESSION innodb_strict_mode=OFF;");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return($result);
|
return($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if given type is a string, relevant for collation
|
||||||
|
function mustal_is_string_type(string $type) {
|
||||||
|
$mustal_string_types = array('varchar','char','text','tinytext','mediumtext','longtext');
|
||||||
|
foreach($mustal_string_types as $string_type) {
|
||||||
|
if (stripos($type,$string_type) === 0) {
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// create correct index type syntax
|
||||||
|
function mustal_key_type(string $key_definition_string, string $key_type) {
|
||||||
|
|
||||||
|
// Key types with using syntax
|
||||||
|
$mustal_key_types_using_mapping = [
|
||||||
|
'BTREE',
|
||||||
|
'HASH'
|
||||||
|
];
|
||||||
|
|
||||||
|
if (in_array($key_type,$mustal_key_types_using_mapping)) {
|
||||||
|
return ($key_definition_string." USING ".$key_type);
|
||||||
|
} else {
|
||||||
|
return ($key_type." ".$key_definition_string);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
$version="OSS";
|
$version="OSS";
|
||||||
$version_revision="1.8";
|
$version_revision="1.10";
|
||||||
$githash = file_get_contents("../githash.txt");
|
$githash = file_get_contents("../githash.txt");
|
||||||
if (!empty($githash)) {
|
if (!empty($githash)) {
|
||||||
$version_revision .= " (".substr($githash,0,8).")";
|
$version_revision .= " (".substr($githash,0,8).")";
|
||||||
|
|||||||
+5
-1
@@ -4,7 +4,7 @@ Options -Indexes
|
|||||||
# Deny access to all *.php
|
# Deny access to all *.php
|
||||||
Order deny,allow
|
Order deny,allow
|
||||||
Allow from all
|
Allow from all
|
||||||
<FilesMatch "\.(css|jpg|jpeg|gif|png|svg|js)$">
|
<FilesMatch "\.(css|jpg|jpeg|gif|png|svg|js|ico|css.map|js.map)$">
|
||||||
Order Allow,Deny
|
Order Allow,Deny
|
||||||
Allow from all
|
Allow from all
|
||||||
</FilesMatch>
|
</FilesMatch>
|
||||||
@@ -23,4 +23,8 @@ Allow from all
|
|||||||
Order Allow,Deny
|
Order Allow,Deny
|
||||||
Allow from all
|
Allow from all
|
||||||
</Files>
|
</Files>
|
||||||
|
<Files robots.txt>
|
||||||
|
Order Allow,Deny
|
||||||
|
Allow from all
|
||||||
|
</Files>
|
||||||
# end
|
# end
|
||||||
|
|||||||
+5
-2
@@ -440,12 +440,15 @@ class erpooSystem extends Application
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Creates user specific items
|
// Creates user specific items
|
||||||
|
|
||||||
|
$offene_tickets = $this->erp->AnzahlOffeneTickets(false);
|
||||||
|
$offene_tickets_user = $this->erp->AnzahlOffeneTickets(true);
|
||||||
|
|
||||||
$possibleUserItems = [
|
$possibleUserItems = [
|
||||||
'Tickets' => [
|
'Tickets' => [
|
||||||
'link' => 'index.php?module=ticket&action=list',
|
'link' => 'index.php?module=ticket&action=list',
|
||||||
'counter' => $this->erp->AnzahlOffeneTickets()
|
'counter' => ($offene_tickets+$offene_tickets_user > 0)?$offene_tickets_user."/".$offene_tickets:""
|
||||||
],
|
],
|
||||||
'Aufgaben' => [
|
'Aufgaben' => [
|
||||||
'link' => 'index.php?module=aufgaben&action=list',
|
'link' => 'index.php?module=aufgaben&action=list',
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
/*
|
||||||
|
* Fix scrolling to middle of page bug
|
||||||
|
*/
|
||||||
|
|
||||||
|
$(() => {
|
||||||
|
window.scrollTo(0, 0);
|
||||||
|
})
|
||||||
+389
-1688
File diff suppressed because it is too large
Load Diff
@@ -49,6 +49,7 @@ class image {
|
|||||||
|
|
||||||
$manipulator = new ImageManipulator($str);
|
$manipulator = new ImageManipulator($str);
|
||||||
$type = mime_content_type($path);
|
$type = mime_content_type($path);
|
||||||
|
|
||||||
$manipulator->resample($newwidth, $newheight, true, $upscale);
|
$manipulator->resample($newwidth, $newheight, true, $upscale);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -200,7 +201,7 @@ class ImageManipulator
|
|||||||
public function resample($width, $height, $constrainProportions = true, $upscale = false, $keepformat = false)
|
public function resample($width, $height, $constrainProportions = true, $upscale = false, $keepformat = false)
|
||||||
{
|
{
|
||||||
if (!is_resource($this->image)) {
|
if (!is_resource($this->image)) {
|
||||||
throw new RuntimeException('No image set');
|
// throw new RuntimeException('No image set');
|
||||||
}
|
}
|
||||||
if($keepformat)
|
if($keepformat)
|
||||||
{
|
{
|
||||||
@@ -340,9 +341,9 @@ class ImageManipulator
|
|||||||
*/
|
*/
|
||||||
protected function _replace($res)
|
protected function _replace($res)
|
||||||
{
|
{
|
||||||
if (!is_resource($res)) {
|
/* if (!is_resource($res)) {
|
||||||
throw new UnexpectedValueException('Invalid resource');
|
throw new UnexpectedValueException('Invalid resource');
|
||||||
}
|
}*/
|
||||||
if (is_resource($this->image)) {
|
if (is_resource($this->image)) {
|
||||||
imagedestroy($this->image);
|
imagedestroy($this->image);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -631,8 +631,17 @@ class Remote
|
|||||||
}
|
}
|
||||||
$arr['projekt'] = $shopexportArr['projekt'];
|
$arr['projekt'] = $shopexportArr['projekt'];
|
||||||
$arr['name_de'] = $ret['name'];
|
$arr['name_de'] = $ret['name'];
|
||||||
$arr['uebersicht_de'] = isset($ret['uebersicht_de'])?$ret['uebersicht_de']:'';
|
$arr['uebersicht_de'] = $ret['uebersicht_de'] ?? '';
|
||||||
$arr['kurztext_de'] = isset($ret['kurztext_de'])?$ret['kurztext_de']:'';
|
$arr['kurztext_de'] = $ret['kurztext_de'] ?? '';
|
||||||
|
$arr['name_en'] = $ret['name_en'];
|
||||||
|
$arr['uebersicht_en'] = $ret['uebersicht_en'] ?? '';
|
||||||
|
$arr['kurztext_en'] = $ret['kurztext_en'] ?? '';
|
||||||
|
$arr['metakeywords_de'] = $ret['metakeywords_de'] ?? '';
|
||||||
|
$arr['metakeywords_en'] = $ret['metakeywords_en'] ?? '';
|
||||||
|
$arr['metatitle_de'] = $ret['metatitle_de'] ?? '';
|
||||||
|
$arr['metatitle_en'] = $ret['metatitle_en'] ?? '';
|
||||||
|
$arr['metadescription_de'] = $ret['metadescription_de'] ?? '';
|
||||||
|
$arr['metadescription_en'] = $ret['metadescription_en'] ?? '';
|
||||||
//$arr['anabregs_text'] = isset($ret['uebersicht_de'])?$ret['uebersicht_de']:'';
|
//$arr['anabregs_text'] = isset($ret['uebersicht_de'])?$ret['uebersicht_de']:'';
|
||||||
if(isset($ret['ean']) && $ret['ean'] != '')
|
if(isset($ret['ean']) && $ret['ean'] != '')
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -76,6 +76,7 @@ abstract class Versanddienstleister
|
|||||||
|
|
||||||
$addressfields = ['name', 'adresszusatz', 'abteilung', 'ansprechpartner', 'unterabteilung', 'ort', 'plz',
|
$addressfields = ['name', 'adresszusatz', 'abteilung', 'ansprechpartner', 'unterabteilung', 'ort', 'plz',
|
||||||
'strasse', 'land'];
|
'strasse', 'land'];
|
||||||
|
|
||||||
$ret['original'] = array_filter($docArr, fn($key) => in_array($key, $addressfields), ARRAY_FILTER_USE_KEY);
|
$ret['original'] = array_filter($docArr, fn($key) => in_array($key, $addressfields), ARRAY_FILTER_USE_KEY);
|
||||||
|
|
||||||
$ret['name'] = empty(trim($docArr['ansprechpartner'])) ? trim($docArr['name']) : trim($docArr['ansprechpartner']);
|
$ret['name'] = empty(trim($docArr['ansprechpartner'])) ? trim($docArr['name']) : trim($docArr['ansprechpartner']);
|
||||||
@@ -127,7 +128,7 @@ abstract class Versanddienstleister
|
|||||||
if (!empty($docArr['ihrebestellnummer'])) {
|
if (!empty($docArr['ihrebestellnummer'])) {
|
||||||
$orderNumberParts[] = $docArr['ihrebestellnummer'];
|
$orderNumberParts[] = $docArr['ihrebestellnummer'];
|
||||||
}
|
}
|
||||||
$orderNumberParts[] = $docArr['belegnr'];
|
$orderNumberParts[] = ucfirst($sid)." ".$docArr['belegnr'];
|
||||||
$ret['order_number'] = implode(' / ', $orderNumberParts);
|
$ret['order_number'] = implode(' / ', $orderNumberParts);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -153,14 +154,14 @@ abstract class Versanddienstleister
|
|||||||
lp.zollwaehrung
|
lp.zollwaehrung
|
||||||
FROM lieferschein_position lp
|
FROM lieferschein_position lp
|
||||||
JOIN artikel a on lp.artikel = a.id
|
JOIN artikel a on lp.artikel = a.id
|
||||||
LEFT JOIN auftrag_position ap on lp.auftrag_position_id = ap.id
|
LEFT OUTER JOIN auftrag_position ap on lp.auftrag_position_id = ap.id
|
||||||
LEFT JOIN rechnung_position rp on ap.id = rp.auftrag_position_id
|
LEFT OUTER JOIN rechnung_position rp on ap.id = rp.auftrag_position_id
|
||||||
LEFT JOIN rechnung r on rp.rechnung = r.id
|
LEFT OUTER JOIN rechnung r on rp.rechnung = r.id
|
||||||
WHERE lp.lieferschein = $lieferscheinId
|
WHERE lp.lieferschein = $lieferscheinId
|
||||||
AND a.lagerartikel = 1
|
AND a.lagerartikel = 1
|
||||||
AND r.status != 'storniert'
|
AND r.status != 'storniert'
|
||||||
ORDER BY lp.sort";
|
ORDER BY lp.sort";
|
||||||
$ret['positions'] = $this->app->DB->SelectArr($sql);
|
$ret['positions'] = $this->app->DB->SelectArr($sql) ?? [];
|
||||||
|
|
||||||
if ($sid === "lieferschein") {
|
if ($sid === "lieferschein") {
|
||||||
$standardkg = $this->app->erp->VersandartMindestgewicht($lieferscheinId);
|
$standardkg = $this->app->erp->VersandartMindestgewicht($lieferscheinId);
|
||||||
@@ -369,7 +370,7 @@ abstract class Versanddienstleister
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function Paketmarke(string $target, string $docType, int $docId): void
|
public function Paketmarke(string $target, string $docType, int $docId, $versandpaket = null): void
|
||||||
{
|
{
|
||||||
$address = $this->GetAdressdaten($docId, $docType);
|
$address = $this->GetAdressdaten($docId, $docType);
|
||||||
if (isset($_SERVER['CONTENT_TYPE']) && ($_SERVER['CONTENT_TYPE'] === 'application/json')) {
|
if (isset($_SERVER['CONTENT_TYPE']) && ($_SERVER['CONTENT_TYPE'] === 'application/json')) {
|
||||||
@@ -378,21 +379,61 @@ abstract class Versanddienstleister
|
|||||||
if ($json->submit == 'print') {
|
if ($json->submit == 'print') {
|
||||||
$result = $this->CreateShipment($json, $address);
|
$result = $this->CreateShipment($json, $address);
|
||||||
if ($result->Success) {
|
if ($result->Success) {
|
||||||
$sql = "INSERT INTO versand
|
if (empty($versandpaket)) {
|
||||||
(adresse, lieferschein, versandunternehmen, gewicht, tracking, tracking_link, anzahlpakete)
|
$sql = "INSERT INTO versandpakete
|
||||||
|
(
|
||||||
|
lieferschein_ohne_pos,
|
||||||
|
gewicht,
|
||||||
|
tracking,
|
||||||
|
tracking_link,
|
||||||
|
status,
|
||||||
|
versandart,
|
||||||
|
versender
|
||||||
|
)
|
||||||
VALUES
|
VALUES
|
||||||
({$address['addressId']}, {$address['lieferscheinId']}, '$this->type',
|
(
|
||||||
'$json->weight', '$result->TrackingNumber', '$result->TrackingUrl', 1)";
|
{$address['lieferscheinId']},
|
||||||
|
'$json->weight',
|
||||||
|
'$result->TrackingNumber',
|
||||||
|
'$result->TrackingUrl',
|
||||||
|
'neu',
|
||||||
|
'$this->type',
|
||||||
|
'".$this->app->User->GetName()."'
|
||||||
|
)";
|
||||||
$this->app->DB->Insert($sql);
|
$this->app->DB->Insert($sql);
|
||||||
|
$versandpaket = $this->app->DB->GetInsertID();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$sql = "UPDATE versandpakete SET
|
||||||
|
gewicht = '".$json->weight."',
|
||||||
|
tracking = '".$result->TrackingNumber."',
|
||||||
|
tracking_link = '".$result->TrackingUrl."'
|
||||||
|
WHERE id = '".$versandpaket."'
|
||||||
|
";
|
||||||
|
$this->app->DB->Update($sql);
|
||||||
|
}
|
||||||
|
|
||||||
$filename = $this->app->erp->GetTMP() . join('_', [$this->type, 'Label', $result->TrackingNumber]) . '.pdf';
|
$filename = join('_', [$this->type, 'Label', $result->TrackingNumber]) . '.pdf';
|
||||||
file_put_contents($filename, $result->Label);
|
$filefullpath = $this->app->erp->GetTMP() . $filename;
|
||||||
$this->app->printer->Drucken($this->labelPrinterId, $filename);
|
file_put_contents($filefullpath, $result->Label);
|
||||||
|
$this->app->erp->CreateDateiWithStichwort(
|
||||||
|
$filename,
|
||||||
|
'Paketmarke '.$this->type.' '.$result->TrackingNumber,
|
||||||
|
'Paketmarke Versandpaket Nr. '.$versandpaket,
|
||||||
|
'',
|
||||||
|
$filefullpath,
|
||||||
|
$this->app->User->GetName(),
|
||||||
|
'paketmarke',
|
||||||
|
'versandpaket',
|
||||||
|
$versandpaket
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->app->printer->Drucken($this->labelPrinterId, $filefullpath);
|
||||||
|
|
||||||
if (isset($result->ExportDocuments)) {
|
if (isset($result->ExportDocuments)) {
|
||||||
$filename = $this->app->erp->GetTMP() . join('_', [$this->type, 'ExportDoc', $result->TrackingNumber]) . '.pdf';
|
$filefullpath = $this->app->erp->GetTMP() . join('_', [$this->type, 'ExportDoc', $result->TrackingNumber]) . '.pdf';
|
||||||
file_put_contents($filename, $result->ExportDocuments);
|
file_put_contents($filefullpath, $result->ExportDocuments);
|
||||||
$this->app->printer->Drucken($this->documentPrinterId, $filename);
|
$this->app->printer->Drucken($this->documentPrinterId, $filefullpath);
|
||||||
}
|
}
|
||||||
$ret['messages'][] = ['class' => 'info', 'text' => "Paketmarke wurde erfolgreich erstellt: $result->TrackingNumber"];
|
$ret['messages'][] = ['class' => 'info', 'text' => "Paketmarke wurde erfolgreich erstellt: $result->TrackingNumber"];
|
||||||
} else {
|
} else {
|
||||||
@@ -409,8 +450,16 @@ abstract class Versanddienstleister
|
|||||||
$products = array_combine(array_column($products, 'Id'), $products);
|
$products = array_combine(array_column($products, 'Id'), $products);
|
||||||
$address['product'] = $products[0]->Id ?? '';
|
$address['product'] = $products[0]->Id ?? '';
|
||||||
|
|
||||||
|
$countries = $this->app->DB->SelectArr("SELECT iso, bezeichnung_de name, eu FROM laender ORDER BY bezeichnung_de");
|
||||||
|
if(!empty($countries)) {
|
||||||
|
$countries = array_combine(array_column($countries, 'iso'), $countries);
|
||||||
|
} else {
|
||||||
|
$countries = Array();
|
||||||
|
$this->app->Tpl->addMessage('error', 'Länderliste ist leer. Siehe Einstellungen -> Länderliste.', false, 'PAGE');
|
||||||
|
}
|
||||||
|
|
||||||
$json['form'] = $address;
|
$json['form'] = $address;
|
||||||
$json['countries'] = $this->app->erp->GetSelectLaenderliste();
|
$json['countries'] = $countries;
|
||||||
$json['products'] = $products;
|
$json['products'] = $products;
|
||||||
$json['customs_shipment_types'] = [
|
$json['customs_shipment_types'] = [
|
||||||
CustomsInfo::CUSTOMS_TYPE_GIFT => 'Geschenk',
|
CustomsInfo::CUSTOMS_TYPE_GIFT => 'Geschenk',
|
||||||
|
|||||||
@@ -1800,9 +1800,16 @@ class Briefpapier extends SuperFPDF {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function getStyleElement($key){
|
private function getStyleElement($key){
|
||||||
if(isset($this->styleData[$key]) && !empty($this->styleData[$key])) return $this->styleData[$key];
|
$result = null;
|
||||||
|
if(isset($this->styleData[$key]) && !empty($this->styleData[$key])) {
|
||||||
return $this->app->erp->Firmendaten($key);
|
$result = $this->styleData[$key];
|
||||||
|
} else {
|
||||||
|
$result = $this->app->erp->Firmendaten($key);
|
||||||
|
}
|
||||||
|
if (empty($result)) {
|
||||||
|
$result = 0;
|
||||||
|
}
|
||||||
|
return($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function renderDocument() {
|
public function renderDocument() {
|
||||||
@@ -4023,7 +4030,11 @@ class Briefpapier extends SuperFPDF {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$this->SetX($x+$abstand_links);
|
$this->SetX($x+$abstand_links);
|
||||||
$this->Cell_typed($descWidth,4,$this->WriteHTML($html));
|
|
||||||
|
$text = $this->WriteHTML($html);
|
||||||
|
$text = empty($text)?"":$text;
|
||||||
|
|
||||||
|
$this->Cell_typed($descWidth,4,);
|
||||||
$this->SetX($x+$abstand_links+$descWidth);
|
$this->SetX($x+$abstand_links+$descWidth);
|
||||||
//$this->SetX($x);
|
//$this->SetX($x);
|
||||||
|
|
||||||
|
|||||||
@@ -43,9 +43,9 @@ class RechnungPDF extends BriefpapierCustom {
|
|||||||
parent::__construct($this->app,$projekt,$styleData);
|
parent::__construct($this->app,$projekt,$styleData);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function GetRechnung($id,$als="",$doppeltmp=0, $_datum = null)
|
public function GetRechnung($id, $titel_abw="",$doppeltmp=0, $_datum = null, $text_abw = '')
|
||||||
{
|
{
|
||||||
$this->parameter = $als;
|
|
||||||
if($this->app->erp->Firmendaten("steuerspalteausblenden")=="1")
|
if($this->app->erp->Firmendaten("steuerspalteausblenden")=="1")
|
||||||
{
|
{
|
||||||
// pruefe ob es mehr als ein steuersatz gibt // wenn ja dann darf man sie nicht ausblenden
|
// pruefe ob es mehr als ein steuersatz gibt // wenn ja dann darf man sie nicht ausblenden
|
||||||
@@ -124,10 +124,10 @@ class RechnungPDF extends BriefpapierCustom {
|
|||||||
|
|
||||||
$lieferschein = $this->app->DB->Select("SELECT belegnr FROM lieferschein WHERE id='$lieferscheinid' LIMIT 1");
|
$lieferschein = $this->app->DB->Select("SELECT belegnr FROM lieferschein WHERE id='$lieferscheinid' LIMIT 1");
|
||||||
|
|
||||||
if(empty($als) || $als === 'doppel') {
|
/* if(empty($als) || $als === 'doppel') {
|
||||||
$rechnungsnummeranzeigen = false;
|
$rechnungsnummeranzeigen = false;
|
||||||
}
|
}
|
||||||
elseif(!empty($belegnr)){
|
else*/if(!empty($belegnr)){
|
||||||
$rechnungsnummeranzeigen = true;
|
$rechnungsnummeranzeigen = true;
|
||||||
}
|
}
|
||||||
$projektabkuerzung = $this->app->DB->Select(sprintf('SELECT abkuerzung FROM projekt WHERE id = %d', $projekt));
|
$projektabkuerzung = $this->app->DB->Select(sprintf('SELECT abkuerzung FROM projekt WHERE id = %d', $projekt));
|
||||||
@@ -172,7 +172,7 @@ class RechnungPDF extends BriefpapierCustom {
|
|||||||
$zahlungsweisetext = $this->app->erp->Zahlungsweisetext("rechnung",$id);
|
$zahlungsweisetext = $this->app->erp->Zahlungsweisetext("rechnung",$id);
|
||||||
|
|
||||||
|
|
||||||
if($doppel==1) $als = "doppel";
|
// if($doppel==1) $als = "doppel";
|
||||||
|
|
||||||
if($belegnr=="" || $belegnr=="0") $belegnr = "- ".$this->app->erp->Beschriftung("dokument_entwurf");
|
if($belegnr=="" || $belegnr=="0") $belegnr = "- ".$this->app->erp->Beschriftung("dokument_entwurf");
|
||||||
else {
|
else {
|
||||||
@@ -181,7 +181,7 @@ class RechnungPDF extends BriefpapierCustom {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$posanzeigen = true;
|
$posanzeigen = true;
|
||||||
if($als=="zahlungserinnerung")
|
/* if($als=="zahlungserinnerung")
|
||||||
{
|
{
|
||||||
$this->doctypeOrig=$this->app->erp->Beschriftung("dokument_zahlungserinnerung")." ".(is_null($_datum)?$mahnwesen_datum:$_datum);
|
$this->doctypeOrig=$this->app->erp->Beschriftung("dokument_zahlungserinnerung")." ".(is_null($_datum)?$mahnwesen_datum:$_datum);
|
||||||
if($this->app->erp->GetKonfiguration("mahnwesen_ze_pos") === '0')$posanzeigen = false;
|
if($this->app->erp->GetKonfiguration("mahnwesen_ze_pos") === '0')$posanzeigen = false;
|
||||||
@@ -207,14 +207,12 @@ class RechnungPDF extends BriefpapierCustom {
|
|||||||
if($this->app->erp->GetKonfiguration("mahnwesen_inkasso_pos") === '0')$posanzeigen = false;
|
if($this->app->erp->GetKonfiguration("mahnwesen_inkasso_pos") === '0')$posanzeigen = false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{*/
|
||||||
if($rechnungersatz)
|
if($rechnungersatz)
|
||||||
$this->doctypeOrig=($this->app->erp->Beschriftung("bezeichnungrechnungersatz")?$this->app->erp->Beschriftung("bezeichnungrechnungersatz"):$this->app->erp->Beschriftung("dokument_rechnung"))." $belegnr";
|
$this->doctypeOrig=($this->app->erp->Beschriftung("bezeichnungrechnungersatz")?$this->app->erp->Beschriftung("bezeichnungrechnungersatz"):$this->app->erp->Beschriftung("dokument_rechnung"))." $belegnr";
|
||||||
else
|
else
|
||||||
$this->doctypeOrig=$this->app->erp->Beschriftung("dokument_rechnung")." $belegnr";
|
$this->doctypeOrig=$this->app->erp->Beschriftung("dokument_rechnung")." $belegnr";
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$this->zusatzfooter = " (RE$belegnr)";
|
$this->zusatzfooter = " (RE$belegnr)";
|
||||||
|
|
||||||
@@ -407,12 +405,12 @@ class RechnungPDF extends BriefpapierCustom {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
if($als!="" && $als!="doppel")
|
/* if($als!="" && $als!="doppel")
|
||||||
{
|
{
|
||||||
$body = $this->app->erp->MahnwesenBody($id,$als,$_datum);
|
$body = $this->app->erp->MahnwesenBody($id,$als,$_datum);
|
||||||
$footer =$this->app->erp->ParseUserVars("rechnung",$id, $this->app->erp->Beschriftung("rechnung_footer"));
|
$footer =$this->app->erp->ParseUserVars("rechnung",$id, $this->app->erp->Beschriftung("rechnung_footer"));
|
||||||
}
|
}
|
||||||
else {
|
else {*/
|
||||||
$body = $this->app->erp->Beschriftung("rechnung_header");
|
$body = $this->app->erp->Beschriftung("rechnung_header");
|
||||||
if($bodyzusatz!="") $body=$body."\r\n".$bodyzusatz;
|
if($bodyzusatz!="") $body=$body."\r\n".$bodyzusatz;
|
||||||
$body = $this->app->erp->ParseUserVars("rechnung",$id,$body);
|
$body = $this->app->erp->ParseUserVars("rechnung",$id,$body);
|
||||||
@@ -442,6 +440,14 @@ class RechnungPDF extends BriefpapierCustom {
|
|||||||
$footer = $versandinfo."$freitext"."\r\n".$this->app->erp->ParseUserVars("rechnung",$id,$this->app->erp->Beschriftung("rechnung_footer").
|
$footer = $versandinfo."$freitext"."\r\n".$this->app->erp->ParseUserVars("rechnung",$id,$this->app->erp->Beschriftung("rechnung_footer").
|
||||||
"\r\n$steuer\r\n$zahlungsweisetext").$systemfreitext;
|
"\r\n$steuer\r\n$zahlungsweisetext").$systemfreitext;
|
||||||
}
|
}
|
||||||
|
// }
|
||||||
|
|
||||||
|
if ($titel_abw != '') {
|
||||||
|
$this->doctypeOrig = $titel_abw;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($text_abw != '') {
|
||||||
|
$body = $text_abw;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->setTextDetails(array(
|
$this->setTextDetails(array(
|
||||||
@@ -686,10 +692,10 @@ class RechnungPDF extends BriefpapierCustom {
|
|||||||
$tmp_name = str_replace(' ','',trim($this->recipient['enterprise']));
|
$tmp_name = str_replace(' ','',trim($this->recipient['enterprise']));
|
||||||
$tmp_name = str_replace('.','',$tmp_name);
|
$tmp_name = str_replace('.','',$tmp_name);
|
||||||
|
|
||||||
if($als=="" || $als=="doppel")
|
if($titel_abw != "")
|
||||||
$this->filename = $datum2."_RE".$belegnr.".pdf";
|
$this->filename = $datum2."_RE".$belegnr."_INFO.pdf";
|
||||||
else
|
else
|
||||||
$this->filename = $datum2."_MA".$belegnr.".pdf";
|
$this->filename = $datum2."_RE".$belegnr.".pdf";
|
||||||
|
|
||||||
$this->setBarcode($belegnr);
|
$this->setBarcode($belegnr);
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -73,7 +73,7 @@ SPDX-License-Identifier: LicenseRef-EGPL-3.1
|
|||||||
<td>{|Land|}:</td>
|
<td>{|Land|}:</td>
|
||||||
<td>
|
<td>
|
||||||
<select v-model="form.country" required>
|
<select v-model="form.country" required>
|
||||||
<option v-for="(value, key) in countries" :value="key">{{value}}</option>
|
<option v-for="(value, key) in countries" :value="key">{{value.name}}</option>
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -137,7 +137,7 @@ SPDX-License-Identifier: LicenseRef-EGPL-3.1
|
|||||||
<h2>{|Paket|}</h2>
|
<h2>{|Paket|}</h2>
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{|Gewicht (in kg)|}:</td>
|
<td>{|Gewicht (in kg)</b>|}:</td>
|
||||||
<td><input type="text" v-model.number="form.weight"></td>
|
<td><input type="text" v-model.number="form.weight"></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -156,8 +156,8 @@ SPDX-License-Identifier: LicenseRef-EGPL-3.1
|
|||||||
<td>{|Produkt|}:</td>
|
<td>{|Produkt|}:</td>
|
||||||
<td>
|
<td>
|
||||||
<select v-model="form.product" required>
|
<select v-model="form.product" required>
|
||||||
<option v-for="prod in products" :value="prod.Id">{{prod.Name}}</option>
|
<option v-for="prod in products" :value="prod.Id" v-if="productAvailable(prod)">{{prod.Name}}</option>
|
||||||
</select>
|
</select><i>Für Produktwahl Gewicht eingeben!</i>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr v-if="serviceAvailable('premium')">
|
<tr v-if="serviceAvailable('premium')">
|
||||||
@@ -168,15 +168,22 @@ SPDX-License-Identifier: LicenseRef-EGPL-3.1
|
|||||||
</div>
|
</div>
|
||||||
<div class="clearfix"></div>
|
<div class="clearfix"></div>
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<h2>{|Bestellung|}</h2>
|
<h2>{|Sonstiges|}</h2>
|
||||||
<table>
|
<table>
|
||||||
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{|Bestellnummer|}:</td>
|
<td>{|Referenzen|}:</td>
|
||||||
<td><input type="text" size="36" v-model="form.order_number"></td>
|
<td><input type="text" size="36" v-model="form.order_number"></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{|Versicherungssumme|}:</td>
|
||||||
|
<td><input type="text" size="10" v-model="form.total_insured_value"/></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
<tbody v-if="customsRequired()">
|
||||||
<tr>
|
<tr>
|
||||||
<td>{|Rechnungsnummer|}:</td>
|
<td>{|Rechnungsnummer|}:</td>
|
||||||
<td><input type="text" size="36" v-model="form.invoice_number"></td>
|
<td><input type="text" size="36" v-model="form.invoice_number" required="required"></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{|Sendungsart|}:</td>
|
<td>{|Sendungsart|}:</td>
|
||||||
@@ -186,13 +193,10 @@ SPDX-License-Identifier: LicenseRef-EGPL-3.1
|
|||||||
</select>
|
</select>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
</tbody>
|
||||||
<td>{|Versicherungssumme|}:</td>
|
|
||||||
<td><input type="text" size="10" v-model="form.total_insured_value"/></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-12">
|
<div class="col-md-12" v-if="customsRequired()">
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{|Bezeichnung|}</th>
|
<th>{|Bezeichnung|}</th>
|
||||||
@@ -269,10 +273,30 @@ SPDX-License-Identifier: LicenseRef-EGPL-3.1
|
|||||||
deletePosition: function (index) {
|
deletePosition: function (index) {
|
||||||
this.form.positions.splice(index, 1);
|
this.form.positions.splice(index, 1);
|
||||||
},
|
},
|
||||||
|
productAvailable: function (product) {
|
||||||
|
if (product == undefined)
|
||||||
|
return false;
|
||||||
|
if (product.WeightMin > this.form.weight || product.WeightMax < this.form.weight)
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
},
|
||||||
serviceAvailable: function (service) {
|
serviceAvailable: function (service) {
|
||||||
if (!this.products.hasOwnProperty(this.form.product))
|
if (!this.products.hasOwnProperty(this.form.product))
|
||||||
return false;
|
return false;
|
||||||
return this.products[this.form.product].AvailableServices.indexOf(service) >= 0;
|
return this.products[this.form.product].AvailableServices.indexOf(service) >= 0;
|
||||||
|
},
|
||||||
|
customsRequired: function () {
|
||||||
|
return this.countries[this.form.country].eu == '0';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
beforeUpdate: function () {
|
||||||
|
if (!this.productAvailable(this.products[this.form.product])) {
|
||||||
|
for (prod in this.products) {
|
||||||
|
if (!this.productAvailable(this.products[prod]))
|
||||||
|
continue;
|
||||||
|
this.form.product = prod;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,691 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use Xentral\Components\Database\Database;
|
|
||||||
use Xentral\Components\Http\JsonResponse;
|
|
||||||
use Xentral\Modules\Dhl\Api\DhlApi;
|
|
||||||
use Xentral\Modules\Dhl\Content\PackageContent;
|
|
||||||
use Xentral\Modules\Dhl\Exception\DhlBaseException;
|
|
||||||
use Xentral\Modules\Dhl\Exception\InvalidCredentialsException;
|
|
||||||
use Xentral\Modules\Dhl\Exception\InvalidRequestDataException;
|
|
||||||
use Xentral\Modules\Dhl\Exception\UnknownProductException;
|
|
||||||
use Xentral\Modules\Dhl\Factory\DhlApiFactory;
|
|
||||||
use Xentral\Modules\Dhl\Request\CreateInterationalShipmentRequest;
|
|
||||||
use Xentral\Modules\Dhl\Request\CreateNationalShipmentRequest;
|
|
||||||
|
|
||||||
require_once dirname(__DIR__) . '/class.versanddienstleister.php';
|
|
||||||
|
|
||||||
class Versandart_dhl extends Versanddienstleister
|
|
||||||
{
|
|
||||||
|
|
||||||
private $einstellungen;
|
|
||||||
|
|
||||||
private $info;
|
|
||||||
|
|
||||||
private $credentials;
|
|
||||||
|
|
||||||
public $paketmarke_drucker;
|
|
||||||
public $export_drucker;
|
|
||||||
|
|
||||||
public $errors;
|
|
||||||
|
|
||||||
public $name;
|
|
||||||
protected $voucherId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Versandart_internetmarke constructor.
|
|
||||||
*
|
|
||||||
* @param ApplicationCore $app
|
|
||||||
* @param int $id
|
|
||||||
*/
|
|
||||||
function __construct($app, $id)
|
|
||||||
{
|
|
||||||
$this->id = $id;
|
|
||||||
$this->app = $app;
|
|
||||||
$einstellungenArr = $this->app->DB->SelectRow("SELECT einstellungen_json,paketmarke_drucker,export_drucker FROM versandarten WHERE id = '$id' LIMIT 1");
|
|
||||||
$einstellungen_json = $einstellungenArr['einstellungen_json'];
|
|
||||||
$this->paketmarke_drucker = $einstellungenArr['paketmarke_drucker'];
|
|
||||||
$this->export_drucker = $einstellungenArr['export_drucker'];
|
|
||||||
|
|
||||||
$this->name = 'DHL 3.0';
|
|
||||||
if($einstellungen_json){
|
|
||||||
$this->einstellungen = json_decode($einstellungen_json, true);
|
|
||||||
}else{
|
|
||||||
$this->einstellungen = [];
|
|
||||||
}
|
|
||||||
$this->errors = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
function ShowUserdata()
|
|
||||||
{
|
|
||||||
if(isset($this->app->Conf->WFuserdata)){
|
|
||||||
return 'Userdata-Ordner: ' . $this->app->Conf->WFuserdata;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function Einstellungen($target = 'return')
|
|
||||||
{
|
|
||||||
if($this->app->Secure->GetPOST('testen')){
|
|
||||||
$parameter1 = $this->einstellungen['pfad'];
|
|
||||||
if($parameter1){
|
|
||||||
if(is_dir($parameter1)){
|
|
||||||
if(substr($parameter1, -1) !== '/'){
|
|
||||||
$parameter1 .= '/';
|
|
||||||
}
|
|
||||||
|
|
||||||
if(file_put_contents($parameter1 . 'wawision_test.txt', 'TEST')){
|
|
||||||
$this->app->Tpl->Add('MESSAGE',
|
|
||||||
'<div class="info">Datei ' . $parameter1 . 'wawision_test.txt' . ' wurde erstellt!</div>');
|
|
||||||
}else{
|
|
||||||
$this->app->Tpl->Add('MESSAGE', '<div class="error">Datei konnte nicht angelegt werden!</div>');
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
$this->app->Tpl->Add('MESSAGE',
|
|
||||||
'<div class="error">Speicherort existiert nicht oder ist nicht erreichbar!</div>');
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
$this->app->Tpl->Add('MESSAGE', '<div class="error">Bitte einen Speicherort angeben!</div>');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
parent::Einstellungen($target);
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO ....
|
|
||||||
|
|
||||||
/*function Trackinglink($tracking, &$notsend, &$link, &$rawlink)
|
|
||||||
{
|
|
||||||
$notsend = 0;
|
|
||||||
//$rawlink = 'https://tracking.dpd.de/parcelstatus/?locale=de_DE&query='.$tracking;
|
|
||||||
$rawlink = ' https://www.gls-group.eu/276-I-PORTAL-WEB/content/GLS/DE03/DE/5004.htm?txtRefNo='.$tracking.'&txtAction=71000';
|
|
||||||
$link = 'GLS Versand: '.$tracking.' ('.$rawlink.')';
|
|
||||||
}*/
|
|
||||||
|
|
||||||
public function GetBezeichnung()
|
|
||||||
{
|
|
||||||
return 'DHL 3.0';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array[]
|
|
||||||
*/
|
|
||||||
public function getCreateForm()
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
[
|
|
||||||
'id' => 0,
|
|
||||||
'name' => 'usernameGroup',
|
|
||||||
'inputs' => [
|
|
||||||
[
|
|
||||||
'label' => 'Benutzername',
|
|
||||||
'type' => 'text',
|
|
||||||
'name' => 'dhl_username',
|
|
||||||
'validation' => true,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 1,
|
|
||||||
'name' => 'passwordGroup',
|
|
||||||
'inputs' => [
|
|
||||||
[
|
|
||||||
'label' => 'Passwort',
|
|
||||||
'type' => 'text',
|
|
||||||
'name' => 'dhl_password',
|
|
||||||
'validation' => true,
|
|
||||||
]
|
|
||||||
],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 2,
|
|
||||||
'name' => 'accountNumberGroup',
|
|
||||||
'inputs' => [
|
|
||||||
[
|
|
||||||
'label' => 'Abrechnungsnummer',
|
|
||||||
'type' => 'text',
|
|
||||||
'name' => 'dhl_accountnumber',
|
|
||||||
'validation' => true,
|
|
||||||
]
|
|
||||||
],
|
|
||||||
]
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param array $postData
|
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
public function updatePostDataForAssistent($postData): array
|
|
||||||
{
|
|
||||||
$name = $this->app->erp->Firmendaten('name');
|
|
||||||
$street = $this->app->erp->Firmendaten('strasse');
|
|
||||||
$zip = $this->app->erp->Firmendaten('plz');
|
|
||||||
$city = $this->app->erp->Firmendaten('ort');
|
|
||||||
$country = $this->app->erp->Firmendaten('land');
|
|
||||||
$houseNo = '';
|
|
||||||
|
|
||||||
$streetParts = explode(' ', $street);
|
|
||||||
$partsCount = count($streetParts);
|
|
||||||
|
|
||||||
if($partsCount >= 2){
|
|
||||||
$street = implode(' ', array_slice($streetParts, 0, $partsCount - 1));
|
|
||||||
$houseNo = $streetParts[$partsCount - 1];
|
|
||||||
}
|
|
||||||
|
|
||||||
$postData['dhl_origin_name'] = $name;
|
|
||||||
$postData['dhl_origin_street'] = $street;
|
|
||||||
$postData['dhl_origin_houseno'] = $houseNo;
|
|
||||||
$postData['dhl_origin_zip'] = $zip;
|
|
||||||
$postData['dhl_origin_city'] = $city;
|
|
||||||
$postData['dhl_origin_country'] = $country;
|
|
||||||
|
|
||||||
return $postData;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return JsonResponse|null
|
|
||||||
*/
|
|
||||||
public function AuthByAssistent()
|
|
||||||
{
|
|
||||||
$step = (int)$this->app->Secure->GetPOST('step');
|
|
||||||
if($step == 0){
|
|
||||||
$username = $this->app->Secure->GetPOST('dhl_username');
|
|
||||||
$password = $this->app->Secure->GetPOST('dhl_password');
|
|
||||||
$accountnumber = $this->app->Secure->GetPOST('dhl_accountnumber');
|
|
||||||
|
|
||||||
$error = null;
|
|
||||||
if(empty($username)){
|
|
||||||
$error = 'Bitte Nutzernamen eingeben';
|
|
||||||
}else if(empty($password)){
|
|
||||||
$error = 'Bitte Passwort eingeben';
|
|
||||||
}else if(empty($accountnumber)){
|
|
||||||
$error = 'Bitte Abrechnungsnummer eingeben';
|
|
||||||
}
|
|
||||||
|
|
||||||
if($error != null) {
|
|
||||||
return new JsonResponse(
|
|
||||||
['error' => $error],
|
|
||||||
JsonResponse::HTTP_BAD_REQUEST
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
try{
|
|
||||||
$this->testCredentials($username, $password, $accountnumber);
|
|
||||||
}catch (DhlBaseException $e){
|
|
||||||
return new JsonResponse(
|
|
||||||
['error' => $e->getMessage()],
|
|
||||||
JsonResponse::HTTP_BAD_REQUEST
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
public function getStructureDataForClickByClickSave(): array
|
|
||||||
{
|
|
||||||
return $this->updatePostDataForAssistent([]);
|
|
||||||
}
|
|
||||||
|
|
||||||
function EinstellungenStruktur()
|
|
||||||
{
|
|
||||||
if(!empty($this->einstellungen['dhl_username']) && !empty($this->einstellungen['dhl_password'])){
|
|
||||||
try{
|
|
||||||
$this->testCredentials($this->einstellungen['dhl_username'], $this->einstellungen['dhl_password'], $this->einstellungen['dhl_accountnumber']);
|
|
||||||
$this->app->Tpl->Set('MESSAGE', '<div class="info">Zugangsdaten erfolgreich überprüft</div>');
|
|
||||||
}catch (DhlBaseException $e){
|
|
||||||
$this->app->Tpl->Set('MESSAGE', '<div class="error">' . $e->getMessage() . '</div>');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return [
|
|
||||||
'dhl_username' => ['typ' => 'text', 'bezeichnung' => 'Benutzername:'],
|
|
||||||
'dhl_password' => ['typ' => 'text', 'bezeichnung' => 'Passwort:'],
|
|
||||||
'dhl_accountnumber' => ['typ' => 'text', 'bezeichnung' => 'Abrechnungsnummer:'],
|
|
||||||
'dhl_origin_name' => ['typ' => 'text', 'bezeichnung' => 'Versender Name:'],
|
|
||||||
'dhl_origin_street' => ['typ' => 'text', 'bezeichnung' => 'Versender Strasse:'],
|
|
||||||
'dhl_origin_houseno' => ['typ' => 'text', 'bezeichnung' => 'Versender Hausnummer:'],
|
|
||||||
'dhl_origin_city' => ['typ' => 'text', 'bezeichnung' => 'Versender Ort:'],
|
|
||||||
'dhl_origin_zip' => ['typ' => 'text', 'bezeichnung' => 'Versender PLZ:'],
|
|
||||||
'dhl_origin_country' => ['typ' => 'text', 'bezeichnung' => 'Versender Land (2-stellig):'],
|
|
||||||
'dhl_origin_email' => ['typ' => 'text', 'bezeichnung' => 'Versender Email:'],
|
|
||||||
|
|
||||||
'dhl_height' => ['typ' => 'text', 'bezeichnung' => 'Standardhöhe'],
|
|
||||||
'dhl_width' => ['typ' => 'text', 'bezeichnung' => 'Standardbreite'],
|
|
||||||
'dhl_length' => ['typ' => 'text', 'bezeichnung' => 'Standardlänge'],
|
|
||||||
|
|
||||||
'dhl_export_product_type' => [
|
|
||||||
'typ' => 'select',
|
|
||||||
'bezeichnung' => 'Export Producttyp',
|
|
||||||
'optionen' => [
|
|
||||||
'PRESENT' => 'Geschenke',
|
|
||||||
'COMMERCIAL_SAMPLE' => 'Kommerzielle Probe',
|
|
||||||
'DOCUMENT' => 'Dokumente',
|
|
||||||
'RETURN_OF_GOODS' => 'Rücksendungen',
|
|
||||||
'OTHER' => 'Andere',
|
|
||||||
]
|
|
||||||
],
|
|
||||||
'dhl_export_product_type_description' => [
|
|
||||||
'typ' => 'text',
|
|
||||||
'bezeichnung' => 'Beschreibung im Falle von "Andere"'
|
|
||||||
],
|
|
||||||
|
|
||||||
'dhl_product' => [
|
|
||||||
'typ' => 'select',
|
|
||||||
'bezeichnung' => 'Produkt:',
|
|
||||||
'optionen' => [
|
|
||||||
'V01PAK' => 'Paket national',
|
|
||||||
'V53WPAK' => 'Paket international'
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'dhl_coding' => ['typ' => 'checkbox', 'bezeichnung' => 'Leitcodierung aktivieren'],
|
|
||||||
'autotracking' => ['typ' => 'checkbox', 'bezeichnung' => 'Tracking übernehmen:'],
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testCredentials($username, $password, $accountNumber){
|
|
||||||
/** @var DhlApiFactory $dhlApiFactory */
|
|
||||||
$dhlApiFactory = $this->app->Container->get('DhlApiFactory');
|
|
||||||
|
|
||||||
/** @var DhlApi $dhlApi */
|
|
||||||
$dhlApi = $dhlApiFactory->createProductionInstance(
|
|
||||||
$username,
|
|
||||||
$password,
|
|
||||||
$accountNumber,
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
''
|
|
||||||
);
|
|
||||||
|
|
||||||
try {
|
|
||||||
$dhlApi->validateShipment(new CreateNationalShipmentRequest(
|
|
||||||
date("Y-m-d"),
|
|
||||||
1.0,
|
|
||||||
10,
|
|
||||||
20,
|
|
||||||
30,
|
|
||||||
"Max muster",
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
'Teststr. 1',
|
|
||||||
'11',
|
|
||||||
'86153',
|
|
||||||
'Augsburg',
|
|
||||||
'DE',
|
|
||||||
'max.muster@xentral.com',
|
|
||||||
false
|
|
||||||
));
|
|
||||||
}catch (InvalidRequestDataException $e){
|
|
||||||
// do nothing, test data is invalid
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function PaketmarkeDrucken($id, $sid)
|
|
||||||
{
|
|
||||||
$adressdaten = $this->GetAdressdaten($id, $sid);
|
|
||||||
$ret = $this->Paketmarke($sid, $id, '', false, $adressdaten);
|
|
||||||
if($sid === 'lieferschein'){
|
|
||||||
$deliveryNoteArr = $this->app->DB->SelectRow("SELECT adresse,projekt,versandart,auftragid FROM lieferschein WHERE id = '$id' LIMIT 1");
|
|
||||||
$adresse = $deliveryNoteArr['adresse'];
|
|
||||||
$projekt = $deliveryNoteArr['projekt'];
|
|
||||||
$versandart = $deliveryNoteArr['versandart'];
|
|
||||||
$adressvalidation = 2;
|
|
||||||
if($ret){
|
|
||||||
$adressvalidation = 1;
|
|
||||||
}
|
|
||||||
$tracking = '';
|
|
||||||
if(isset($adressdaten['tracking'])){
|
|
||||||
$tracking = $adressdaten['tracking'];
|
|
||||||
}
|
|
||||||
if(!isset($adressdaten['versandid'])){
|
|
||||||
$adressdaten['versandid'] = $this->app->DB->Select("SELECT id FROM versand WHERE abgeschlossen = 0 AND tracking = '' AND lieferschein = '$id' LIMIT 1");
|
|
||||||
}
|
|
||||||
if(!isset($adressdaten['versandid'])){
|
|
||||||
$this->app->DB->Insert("INSERT INTO versand (versandunternehmen, tracking,
|
|
||||||
versendet_am,abgeschlossen,lieferschein,freigegeben,firma,adresse,projekt,paketmarkegedruckt,adressvalidation)
|
|
||||||
VALUES ($versandart','$tracking',NOW(),1,'$id',1,'1','$adresse','$projekt',1,'$adressvalidation') ");
|
|
||||||
$adressdaten['versandid'] = $this->app->DB->GetInsertID();
|
|
||||||
}elseif($tracking){
|
|
||||||
$this->app->DB->Update("UPDATE versand SET freigegeben = 1, abgeschlossen = 1, tracking =1, paketmarkegedruckt = 1, tracking= '$tracking',adressvalidation = '$adressvalidation', versendet_am = now() WHERE id = '" . $adressdaten['versandid'] . "' LIMIT 1");
|
|
||||||
$this->app->DB->Update("UPDATE versand SET versandunternehmen = versandart WHERE id = '" . $adressdaten['versandid'] . "' AND versandunternehmen = '' LIMIT 1");
|
|
||||||
$this->app->DB->Update("UPDATE versand SET versandunternehmen = '$versandart' WHERE id = '" . $adressdaten['versandid'] . "' AND versandunternehmen = '' LIMIT 1");
|
|
||||||
}
|
|
||||||
$auftragid = $deliveryNoteArr['auftragid'];
|
|
||||||
if($auftragid){
|
|
||||||
$this->app->DB->Update("UPDATE auftrag SET schreibschutz = 1, status = 'abgeschlossen' WHERE id = '$auftragid' AND status = 'freigegeben' LIMIT 1");
|
|
||||||
}
|
|
||||||
if($adressvalidation == 1){
|
|
||||||
$this->app->erp->LieferscheinProtokoll($id, 'Paketmarke automatisch gedruckt');
|
|
||||||
if($adressdaten['versandid']){
|
|
||||||
return $adressdaten['versandid'];
|
|
||||||
}
|
|
||||||
}elseif($adressvalidation == 2){
|
|
||||||
$this->app->erp->LieferscheinProtokoll($id, 'automatisches Paketmarke Drucken fehlgeschlagen');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function Paketmarke($doctyp, $docid, $target = '', $error = false, &$adressdaten = null)
|
|
||||||
{
|
|
||||||
$id = $docid;
|
|
||||||
$sid = $doctyp;
|
|
||||||
if($adressdaten === null){
|
|
||||||
$drucken = $this->app->Secure->GetPOST('drucken');
|
|
||||||
$anders = $this->app->Secure->GetPOST('anders');
|
|
||||||
$tracking_again = $this->app->Secure->GetGET('tracking_again');
|
|
||||||
$module = $this->app->Secure->GetPOST('module');
|
|
||||||
if(empty($module)){
|
|
||||||
$module = $doctyp;
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
$drucken = 1;
|
|
||||||
$anders = '';
|
|
||||||
$tracking_again = '';
|
|
||||||
$module = $doctyp;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** @var DhlApiFactory $dhlApiFactory */
|
|
||||||
$dhlApiFactory = $this->app->Container->get('DhlApiFactory');
|
|
||||||
|
|
||||||
/** @var DhlApi $dhlApi */
|
|
||||||
$dhlApi = $dhlApiFactory->createProductionInstance(
|
|
||||||
$this->einstellungen['dhl_username'],
|
|
||||||
$this->einstellungen['dhl_password'],
|
|
||||||
$this->einstellungen['dhl_accountnumber'],
|
|
||||||
$this->einstellungen['dhl_origin_name'],
|
|
||||||
$this->einstellungen['dhl_origin_street'],
|
|
||||||
$this->einstellungen['dhl_origin_houseno'],
|
|
||||||
$this->einstellungen['dhl_origin_zip'],
|
|
||||||
$this->einstellungen['dhl_origin_city'],
|
|
||||||
$this->einstellungen['dhl_origin_country'],
|
|
||||||
$this->einstellungen['dhl_origin_email']
|
|
||||||
);
|
|
||||||
|
|
||||||
if($drucken != '' || $tracking_again == '1'){
|
|
||||||
|
|
||||||
if($tracking_again != "1"){
|
|
||||||
$versandId = 0;
|
|
||||||
if($module === 'retoure'){
|
|
||||||
$Query = $this->app->DB->SelectRow("SELECT * FROM retoure where id='$id'");
|
|
||||||
}elseif($module === 'versand'){
|
|
||||||
$versandId = $id;
|
|
||||||
$lieferschein = $this->app->DB->Select("SELECT lieferschein WHERE id = '$id' LIMIT 1");
|
|
||||||
$Query = $this->app->DB->SelectRow("SELECT * FROM lieferschein where id='$lieferschein'");
|
|
||||||
}else{
|
|
||||||
$Query = $this->app->DB->SelectRow("SELECT * FROM lieferschein where id='$id'");
|
|
||||||
}
|
|
||||||
$projekt = $Query['projekt'];
|
|
||||||
$Adresse = $this->app->DB->SelectRow("SELECT * FROM adresse WHERE id='" . $Query['adresse'] . "'");
|
|
||||||
$product = '';
|
|
||||||
$Country = $Query['land'];
|
|
||||||
if($adressdaten === null){
|
|
||||||
$versandmit = $this->app->Secure->GetPOST("versandmit");
|
|
||||||
$trackingsubmit = $this->app->Secure->GetPOST("trackingsubmit");
|
|
||||||
$versandmitbutton = $this->app->Secure->GetPOST("versandmitbutton");
|
|
||||||
$tracking = $this->app->Secure->GetPOST("tracking");
|
|
||||||
$trackingsubmitcancel = $this->app->Secure->GetPOST("trackingsubmitcancel");
|
|
||||||
$retourenlabel = $this->app->Secure->GetPOST("retourenlabel");
|
|
||||||
|
|
||||||
//$Weight = $this->app->Secure->GetPOST("kg1");
|
|
||||||
$Name = $this->app->Secure->GetPOST("name");
|
|
||||||
$Name2 = $this->app->Secure->GetPOST("name2");
|
|
||||||
$Name3 = $this->app->Secure->GetPOST("name3");
|
|
||||||
$Street = $this->app->Secure->GetPOST("strasse");
|
|
||||||
$HouseNo = $this->app->Secure->GetPOST("hausnummer");
|
|
||||||
$ZipCode = $this->app->Secure->GetPOST("plz");
|
|
||||||
$City = $this->app->Secure->GetPOST("ort");
|
|
||||||
$Mail = $this->app->Secure->GetPOST("email");
|
|
||||||
$Phone = $this->app->Secure->GetPOST("phone");
|
|
||||||
$Country = $this->app->Secure->GetPOST("land");
|
|
||||||
$Weight = $this->app->Secure->GetPOST('kg1');
|
|
||||||
|
|
||||||
$height = $this->app->Secure->GetPOST('height');
|
|
||||||
$wigth = $this->app->Secure->GetPOST('width');
|
|
||||||
$length = $this->app->Secure->GetPOST('length');
|
|
||||||
|
|
||||||
$coding = $this->app->Secure->GetPOST('coding') == '1';
|
|
||||||
}else{
|
|
||||||
$versandmit = '';//$this->app->Secure->GetPOST("versandmit");
|
|
||||||
$trackingsubmit = '';//$this->app->Secure->GetPOST("trackingsubmit");
|
|
||||||
$versandmitbutton = '';//$this->app->Secure->GetPOST("versandmitbutton");
|
|
||||||
$tracking = '';//$this->app->Secure->GetPOST("tracking");
|
|
||||||
$trackingsubmitcancel = '';//$this->app->Secure->GetPOST("trackingsubmitcancel");
|
|
||||||
$retourenlabel = '';// $this->app->Secure->GetPOST("retourenlabel");
|
|
||||||
|
|
||||||
$Name = $adressdaten["name"];
|
|
||||||
$Name2 = $adressdaten["name2"];
|
|
||||||
$Name3 = $adressdaten["name3"];
|
|
||||||
$Street = $adressdaten["strasse"];
|
|
||||||
$HouseNo = $adressdaten["hausnummer"];
|
|
||||||
$ZipCode = $adressdaten['plz'];
|
|
||||||
$City = $adressdaten['ort'];
|
|
||||||
$Mail = $adressdaten['email'];
|
|
||||||
$Phone = $adressdaten["telefon"];
|
|
||||||
$Country = $adressdaten["land"];
|
|
||||||
$Company = "Company";
|
|
||||||
$Weight = $adressdaten["standardkg"];
|
|
||||||
$coding = $this->einstellungen['dhl_coding'] == 1;
|
|
||||||
|
|
||||||
$height = $this->einstellungen('dhl_height');
|
|
||||||
$wigth = $this->einstellungen('dhl_width');
|
|
||||||
$length = $this->einstellungen('dhl_length');
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
$shipmentDate = date("Y-m-d");
|
|
||||||
|
|
||||||
switch ($this->einstellungen['dhl_product']) {
|
|
||||||
case 'V01PAK':
|
|
||||||
{
|
|
||||||
$shipmentData = new CreateNationalShipmentRequest(
|
|
||||||
$shipmentDate,
|
|
||||||
$Weight,
|
|
||||||
$length,
|
|
||||||
$wigth,
|
|
||||||
$height,
|
|
||||||
$Name,
|
|
||||||
$Name2,
|
|
||||||
$Name3,
|
|
||||||
$Street,
|
|
||||||
$HouseNo,
|
|
||||||
$ZipCode,
|
|
||||||
$City,
|
|
||||||
$Country,
|
|
||||||
$Mail,
|
|
||||||
$coding
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 'V53WPAK':
|
|
||||||
{
|
|
||||||
$shipmentData = new CreateInterationalShipmentRequest(
|
|
||||||
$shipmentDate,
|
|
||||||
$Weight,
|
|
||||||
$length,
|
|
||||||
$wigth,
|
|
||||||
$height,
|
|
||||||
$Name,
|
|
||||||
$Name2,
|
|
||||||
$Name3,
|
|
||||||
$Street,
|
|
||||||
$HouseNo,
|
|
||||||
$ZipCode,
|
|
||||||
$City,
|
|
||||||
$Country,
|
|
||||||
$Mail,
|
|
||||||
$coding,
|
|
||||||
$this->einstellungen['dhl_export_product_type'],
|
|
||||||
$this->einstellungen['dhl_export_product_type_description'],
|
|
||||||
$this->getPackageContents($Query['id'])
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
throw new UnknownProductException();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$createResponse = $dhlApi->createShipment($shipmentData);
|
|
||||||
|
|
||||||
if($this->einstellungen['autotracking'] == "1")
|
|
||||||
$this->SetTracking($createResponse->getShipmentNumber(), $sid === 'versand' ? $id : 0, $lieferschein);
|
|
||||||
|
|
||||||
|
|
||||||
$data['drucker'] = $this->paketmarke_drucker;
|
|
||||||
$data['druckerlogistikstufe2'] = $this->export_drucker;
|
|
||||||
|
|
||||||
if(!$data['drucker']){
|
|
||||||
if($this->app->erp->GetStandardPaketmarkendrucker() > 0){
|
|
||||||
$data['drucker'] = $this->app->erp->GetStandardPaketmarkendrucker();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!$data['druckerlogistikstufe2']){
|
|
||||||
if($this->app->erp->GetStandardVersanddrucker($projekt) > 0){
|
|
||||||
$data['druckerlogistikstufe2'] = $this->app->erp->GetStandardVersanddrucker($projekt);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$pdf = $createResponse->getLabelAsPdf();
|
|
||||||
$datei = $this->app->erp->GetTMP() . 'DhlLabel_' . $createResponse->getShipmentNumber() . '.pdf';
|
|
||||||
|
|
||||||
file_put_contents($datei, $pdf);
|
|
||||||
|
|
||||||
$spoolerId = $this->app->printer->Drucken($data['drucker'], $datei);
|
|
||||||
if($spoolerId > 0 && $versandId > 0){
|
|
||||||
$this->app->DB->Update(
|
|
||||||
sprintf(
|
|
||||||
'UPDATE versand SET lastspooler_id = %d, lastprinter = %d WHERE id = %d',
|
|
||||||
$spoolerId, $data['drucker'], $versandId
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if($module === 'retoure'){
|
|
||||||
if(@is_file($datei) && @filesize($datei)){
|
|
||||||
$fileid = $this->app->erp->CreateDatei('DhlMarkeLabel_' . $this->app->DB->Select("SELECT belegnr FROM retoure WHERE id = '$id' LIMIT 1") . '.pdf',
|
|
||||||
'Anhang', '', "", $datei,
|
|
||||||
$this->app->DB->real_escape_string($this->app->User->GetName()));
|
|
||||||
$this->app->erp->AddDateiStichwort($fileid, 'anhang', 'retoure', $id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
unlink($datei);
|
|
||||||
if($adressdaten !== null){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if($createResponse->containsExportDocuments()){
|
|
||||||
$tmppdf = $this->app->erp->GetTMP() . 'DhlExport_' . $createResponse->getShipmentNumber() . '.pdf';
|
|
||||||
file_put_contents($tmppdf, $createResponse->getExportPaperAsPdf());
|
|
||||||
$spoolerId = $this->app->printer->Drucken($data['druckerlogistikstufe2'], $tmppdf);
|
|
||||||
if($versandId && $spoolerId){
|
|
||||||
$this->app->DB->Update(
|
|
||||||
sprintf(
|
|
||||||
'UPDATE versand SET lastexportspooler_id = %d, lastexportprinter = %d WHERE id = %d',
|
|
||||||
$spoolerId, $data['druckerlogistikstufe2'], $versandId
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if($module === 'retoure'){
|
|
||||||
if(@is_file($tmppdf) && @filesize($tmppdf)){
|
|
||||||
$fileid = $this->app->erp->CreateDatei('Export_' . $this->app->DB->Select("SELECT belegnr FROM retoure WHERE id = '$id' LIMIT 1") . '.pdf', 'Anhang', '', "", $tmppdf, $this->app->DB->real_escape_string($this->app->User->GetName()));
|
|
||||||
$this->app->erp->AddDateiStichwort($fileid, 'anhang', 'retoure', $id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
unlink($tmppdf);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
} catch (DhlBaseException $e) {
|
|
||||||
$this->errors[] = $e->getMessage();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if($adressdaten !== null){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if($target){
|
|
||||||
if($this->einstellungen['dhl_coding'] == '1'){
|
|
||||||
$this->app->Tpl->Set('DHL_CODING_CHECKED', 'checked="checked"');
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->app->Tpl->Add("HEIGHT", $this->einstellungen['dhl_height']);
|
|
||||||
$this->app->Tpl->Add("WIDTH", $this->einstellungen['dhl_width']);
|
|
||||||
$this->app->Tpl->Add("LENGTH", $this->einstellungen['dhl_length']);
|
|
||||||
$this->app->Tpl->Parse($target, 'versandarten_dhl.tpl');
|
|
||||||
}
|
|
||||||
if(count($this->errors) > 0){
|
|
||||||
return $this->errors;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getPackageContents($deliveryNoteId)
|
|
||||||
{
|
|
||||||
$contents = [];
|
|
||||||
/** @var Database $db */
|
|
||||||
$db = $this->app->Container->get('Database');
|
|
||||||
|
|
||||||
$select = $db->select()
|
|
||||||
->from('lieferschein_position AS l')
|
|
||||||
->cols([
|
|
||||||
'l.bezeichnung',
|
|
||||||
'l.menge',
|
|
||||||
'l.zolltarifnummer',
|
|
||||||
'l.herkunftsland',
|
|
||||||
'a.umsatz_netto_einzeln',
|
|
||||||
'g.gewicht'
|
|
||||||
])
|
|
||||||
->leftJoin('auftrag_position AS a', 'l.auftrag_position_id = a.id')
|
|
||||||
->leftJoin('artikel AS g', 'l.artikel = g.id')
|
|
||||||
->where('l.lieferschein=:id')
|
|
||||||
->bindValue('id', $deliveryNoteId);
|
|
||||||
|
|
||||||
$positions = $db->fetchAll($select->getStatement(), $select->getBindValues());
|
|
||||||
|
|
||||||
foreach ($positions as $position) {
|
|
||||||
$contents[] = new PackageContent(
|
|
||||||
(int)$position['menge'],
|
|
||||||
$position['bezeichnung'],
|
|
||||||
$position['umsatz_netto_einzeln'],
|
|
||||||
$position['herkunftsland'],
|
|
||||||
$position['zolltarifnummer'],
|
|
||||||
$position['gewicht']
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $contents;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function Export($daten)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private function log($message)
|
|
||||||
{
|
|
||||||
if(isset($this->einstellungen['log'])){
|
|
||||||
if(is_array($message) || is_object($message)){
|
|
||||||
error_log(print_r($message, true));
|
|
||||||
}else{
|
|
||||||
error_log($message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,90 +0,0 @@
|
|||||||
01.01.2021;;1;N;Standardbrief;0,8;Standardbrief;0,8;;;140;90;0;235;125;5;0;20;;;Die Länge muss mindestens das 1,4-fache der Breite betragen.;Preis nach UStG umsatzsteuerfrei. Für Briefe, Schriftstücke und kleinere Gegenstände bis 20 g. Die Länge muss mindestens das 1,4-fache der Breite betragen.;https://www.deutschepost.de/de/b/brief_postkarte.html;nein;nein
|
|
||||||
01.01.2021;;11;N;Kompaktbrief;0,95;Kompaktbrief;0,95;;;100;70;0;235;125;10;0;50;;;Die Länge muss mindestens das 1,4-fache der Breite betragen.;Preis nach UStG umsatzsteuerfrei. Für Briefe, Schriftstücke und kleinere Gegenstände bis 50 g. Die Länge muss mindestens das 1,4-fache der Breite betragen.;https://www.deutschepost.de/de/b/brief_postkarte.html;nein;nein
|
|
||||||
01.01.2021;;21;N;Großbrief;1,55;Großbrief;1,55;;;100;70;0;353;250;20;0;500;;;;Preis nach UStG umsatzsteuerfrei. Für Briefe, Schriftstücke und kleinere Gegenstände bis 500 g.;https://www.deutschepost.de/de/b/brief_postkarte.html;nein;nein
|
|
||||||
01.01.2021;;31;N;Maxibrief;2,7;Maxibrief;2,7;;;100;70;0;353;250;50;0;1000;;;;Preis nach UStG umsatzsteuerfrei. Für Briefe, Schriftstücke und kleinere Gegenstände bis 1000 g.;https://www.deutschepost.de/de/b/brief_postkarte.html;nein;nein
|
|
||||||
01.01.2021;;41;N;Maxibrief bis 2000 g + Zusatzentgelt MBf;4,9;Maxibrief;2,7;Zusatzentgelt MBf;2,2;100;70;0;600;300;150;0;2000;;;Höchstmaße alternativ: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Preis nach UStG umsatzsteuerfrei. Ein Maxibrief bis 2000 g mit einem Überformat.;https://www.deutschepost.de/de/b/brief_postkarte.html;nein;nein
|
|
||||||
01.01.2021;;51;N;Postkarte;0,6;Postkarte;0,6;;;140;90;0;235;125;2;;;;;Flächengewicht: 150 g/m2 bis 500 g/m2. Die Länge muss mindestens das 1,4-fache der Breite betragen.;Preis nach UStG umsatzsteuerfrei. Die Länge muss mindestens das 1,4-fache der Breite betragen.;https://www.deutschepost.de/de/b/brief_postkarte.html;nein;nein
|
|
||||||
01.01.2021;1;195;N;Standardbrief + Prio;1,8;Standardbrief;0,8;Prio;1;140;90;0;235;125;5;0;20;;;Die Länge muss mindestens das 1,4-fache der Breite betragen.;Kombi-Produkt aus Standardbrief (umsatzsteuerfrei) und Zusatzleistung Prio (umsatzsteuerfrei). Sendungsverfolgung per T&T. Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/p/prio.html;nein;nein
|
|
||||||
01.01.2021;1;196;N;Kompaktbrief + Prio;1,95;Kompaktbrief;0,95;Prio;1;100;70;0;235;125;10;0;50;;;Die Länge muss mindestens das 1,4-fache der Breite betragen.;Kombi-Produkt aus Kompaktbrief (umsatzsteuerfrei) und Zusatzleistung Prio (umsatzsteuerfrei). Sendungsverfolgung per T&T. Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/p/prio.html;nein;nein
|
|
||||||
01.01.2021;1;197;N;Großbrief + Prio;2,55;Großbrief;1,55;Prio;1;100;70;0;353;250;20;0;500;;;;Kombi-Produkt aus Großbrief (umsatzsteuerfrei) und Zusatzleistung Prio (umsatzsteuerfrei). Sendungsverfolgung per T&T. Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/p/prio.html;nein;nein
|
|
||||||
01.01.2021;1;198;N;Maxibrief + Prio;3,7;Maxibrief;2,7;Prio;1;100;70;0;353;250;50;0;1000;;;;Kombi-Produkt aus Maxibrief (umsatzsteuerfrei) und Zusatzleistung Prio (umsatzsteuerfrei). Sendungsverfolgung per T&T. Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/p/prio.html;nein;nein
|
|
||||||
01.01.2021;1;199;N;Maxibrief bis 2000 g + Zusatzentgelt MBf + Prio;5,9;Maxibrief;2,7;Zusatzentgelt MBf + Prio;3,2;100;70;0;600;300;150;0;2000;;;Höchstmaße alternativ: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Kombi-Produkt aus Maxibrief bis 2000 g mit einem Überformat (umsatzsteuerfrei) und Zusatzleistung Prio (umsatzsteuerfrei). Sendungsverfolgung per T&T. Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/p/prio.html;nein;nein
|
|
||||||
01.01.2021;1;200;N;Postkarte + Prio;1,6;Postkarte;0,6;Prio;1;140;90;0;235;125;2;;;;;Flächengewicht: 150 g/m2 bis 500 g/m2. Die Länge muss mindestens das 1,4-fache der Breite betragen.;Kombi-Produkt aus Postkarte (umsatzsteuerfrei) und Zusatzleistung Prio (umsatzsteuerfrei). Sendungsverfolgung per T&T. Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/p/prio.html;nein;nein
|
|
||||||
01.01.2021;;282;N;Bücher- und Warensendung 500;1,9;BÜCHER- UND WARENSENDUNG 500;1,9;;;100;70;0;353;250;50;0;500;;;;Preis nach UStG umsatzsteuerfrei. Bücher- und Warenversand bis 500 g, 35,3 x 25 x 5 cm. Zustellung bis 4 Werktage. Verschlossener Versand. Keine brieflichen Mitteilungen.;https://www.deutschepost.de/de/w/buecherundwarensendung.html;nein;nein
|
|
||||||
01.01.2021;;290;N;Bücher- und Warensendung 1000;2,2;BÜCHER- UND WARENSENDUNG 1000;2,2;;;100;70;0;353;250;50;501;1000;;;;Preis nach UStG umsatzsteuerfrei. Bücher- und Warenversand bis 1000 g, 35,3 x 25 x 5 cm. Zustellung bis 4 Werktage. Verschlossener Versand. Keine brieflichen Mitteilungen.;https://www.deutschepost.de/de/w/buecherundwarensendung.html;nein;nein
|
|
||||||
01.01.2021;;401;N;Streifbandzeitung bis 50 g;0,89;Streifbandzeitung bis 50 g;0,89;;;140;90;0;353;250;50;0;50;;;Einlieferung in Filiale oder Großannahmestelle, bei mehr als 500 Stück immer in Großannahmestelle. Mit Produkt- oder Internetmarke ist die Einlieferung über Briefkasten möglich.;Nutzung exklusiv f�ür Vertragspartner der Deutsche Post Presse Distribution oder gewerbliche Einrichtungen des Pressehandels.;https://www.deutschepost.de/de/p/presse-distribution/produkte/streifbandzeitung.html;nein;nein
|
|
||||||
01.01.2021;;402;N;Streifbandzeitung bis 100 g;1,19;Streifbandzeitung über 50 g bis 100 g;1,19;;;140;90;0;353;250;50;51;100;;;Einlieferung in Filiale oder Großannahmestelle, bei mehr als 500 Stück immer in Großannahmestelle. Mit Produkt- oder Internetmarke ist die Einlieferung über Briefkasten möglich.;Nutzung exklusiv f�ür Vertragspartner der Deutsche Post Presse Distribution oder gewerbliche Einrichtungen des Pressehandels.;https://www.deutschepost.de/de/p/presse-distribution/produkte/streifbandzeitung.html;nein;nein
|
|
||||||
01.01.2021;;403;N;Streifbandzeitung bis 250 g;1,37;Streifbandzeitung über 100 g bis 250 g;1,37;;;140;90;0;353;250;50;101;250;;;Einlieferung in Filiale oder Großannahmestelle, bei mehr als 500 Stück immer in Großannahmestelle. Mit Produkt- oder Internetmarke ist die Einlieferung über Briefkasten möglich.;Nutzung exklusiv f�ür Vertragspartner der Deutsche Post Presse Distribution oder gewerbliche Einrichtungen des Pressehandels.;https://www.deutschepost.de/de/p/presse-distribution/produkte/streifbandzeitung.html;nein;nein
|
|
||||||
01.01.2021;;404;N;Streifbandzeitung bis 500 g;1,67;Streifbandzeitung über 250 g bis 500 g;1,67;;;140;90;0;353;250;50;251;500;;;Einlieferung in Filiale oder Großannahmestelle, bei mehr als 500 Stück immer in Großannahmestelle. Mit Produkt- oder Internetmarke ist die Einlieferung über Briefkasten möglich.;Nutzung exklusiv f�ür Vertragspartner der Deutsche Post Presse Distribution oder gewerbliche Einrichtungen des Pressehandels.;https://www.deutschepost.de/de/p/presse-distribution/produkte/streifbandzeitung.html;nein;nein
|
|
||||||
01.01.2021;;405;N;Streifbandzeitung bis 1000 g;2,5;Streifbandzeitung über 500 g bis 1000 g;2,5;;;140;90;0;353;250;50;501;1000;;;Einlieferung in Filiale oder Großannahmestelle, bei mehr als 500 Stück immer in Großannahmestelle. Mit Produkt- oder Internetmarke ist die Einlieferung über Briefkasten möglich.;Nutzung exklusiv f�ür Vertragspartner der Deutsche Post Presse Distribution oder gewerbliche Einrichtungen des Pressehandels.;https://www.deutschepost.de/de/p/presse-distribution/produkte/streifbandzeitung.html;nein;nein
|
|
||||||
01.01.2021;1;1002;N;Standardbrief Integral + EINSCHREIBEN EINWURF;3;Standardbrief;0,8;EINSCHREIBEN EINWURF;2,2;140;90;0;235;125;5;0;20;;;Die Länge muss mindestens das 1,4-fache der Breite betragen.;Preis nach UStG umsatzsteuerfrei. Ein Standardbrief bis 20 g, Zustellnachweis durch Postmitarbeiter, Sendungsverfolgung per T&T, Haftung bis 20 EUR, Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/e/einschreiben.html;nein;nein
|
|
||||||
01.01.2021;1;1007;N;Standardbrief Integral + EINSCHREIBEN;3,3;Standardbrief;0,8;EINSCHREIBEN;2,5;140;90;0;235;125;5;0;20;;;Die Länge muss mindestens das 1,4-fache der Breite betragen.;Preis nach UStG umsatzsteuerfrei. Ein Standardbrief bis 20 g, Zustellnachweis durch Postmitarbeiter, Sendungsverfolgung per T&T, Haftung bis 25 EUR, Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/e/einschreiben.html;nein;nein
|
|
||||||
01.01.2021;1;1009;N;Standardbrief Integral + EINSCHREIBEN + EIGENHÄNDIG;5,5;Standardbrief;0,8;EINSCHREIBEN + EIGENHÄNDIG;4,7;140;90;0;235;125;5;0;20;;;Die Länge muss mindestens das 1,4-fache der Breite betragen.;Preis nach UStG umsatzsteuerfrei. Ein Standardbrief bis 20 g, Zustellnachweis durch Postmitarbeiter, Sendungsverfolgung per T&T, Haftung bis 25 EUR, Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/e/einschreiben.html;nein;nein
|
|
||||||
01.01.2021;1;1012;N;Kompaktbrief Integral + EINSCHREIBEN EINWURF;3,15;Kompaktbrief;0,95;EINSCHREIBEN EINWURF;2,2;100;70;0;235;125;10;0;50;;;Die Länge muss mindestens das 1,4-fache der Breite betragen.;Preis nach UStG umsatzsteuerfrei. Ein Kompaktbrief bis 50 g, Zustellnachweis durch Postmitarbeiter, Sendungsverfolgung per T&T, Haftung bis 20 EUR, Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/e/einschreiben.html;nein;nein
|
|
||||||
01.01.2021;1;1017;N;Kompaktbrief Integral + EINSCHREIBEN;3,45;Kompaktbrief;0,95;EINSCHREIBEN;2,5;100;70;0;235;125;10;0;50;;;Die Länge muss mindestens das 1,4-fache der Breite betragen.;Preis nach UStG umsatzsteuerfrei. Ein Kompaktbrief bis 50 g, Zustellnachweis durch Postmitarbeiter, Sendungsverfolgung per T&T, Haftung bis 25 EUR, Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/e/einschreiben.html;nein;nein
|
|
||||||
01.01.2021;1;1019;N;Kompaktbrief Integral + EINSCHREIBEN + EIGENHÄNDIG;5,65;Kompaktbrief;0,95;EINSCHREIBEN + EIGENHÄNDIG;4,7;100;70;0;235;125;10;0;50;;;Die Länge muss mindestens das 1,4-fache der Breite betragen.;Preis nach UStG umsatzsteuerfrei. Ein Kompaktbrief bis 50 g, Zustellnachweis durch Postmitarbeiter, Sendungsverfolgung per T&T, Haftung bis 25 EUR, Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/e/einschreiben.html;nein;nein
|
|
||||||
01.01.2021;1;1022;N;Großbrief Integral + EINSCHREIBEN EINWURF;3,75;Großbrief;1,55;EINSCHREIBEN EINWURF;2,2;100;70;0;353;250;20;0;500;;;;Preis nach UStG umsatzsteuerfrei. Ein Großbrief bis 500 g, Zustellnachweis durch Postmitarbeiter, Sendungsverfolgung per T&T, Haftung bis 20 EUR, Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/e/einschreiben.html;nein;nein
|
|
||||||
01.01.2021;1;1027;N;Großbrief Integral + EINSCHREIBEN;4,05;Großbrief;1,55;EINSCHREIBEN;2,5;100;70;0;353;250;20;0;500;;;;Preis nach UStG umsatzsteuerfrei. Ein Großbrief bis 500 g, Zustellnachweis durch Postmitarbeiter, Sendungsverfolgung per T&T, Haftung bis 25 EUR, Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/e/einschreiben.html;nein;nein
|
|
||||||
01.01.2021;1;1029;N;Großbrief Integral + EINSCHREIBEN + EIGENHÄNDIG;6,25;Großbrief;1,55;EINSCHREIBEN + EIGENHÄNDIG;4,7;100;70;0;353;250;20;0;500;;;;Preis nach UStG umsatzsteuerfrei. Ein Großbrief bis 500 g, Zustellnachweis durch Postmitarbeiter, Sendungsverfolgung per T&T, Haftung bis 25 EUR, Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/e/einschreiben.html;nein;nein
|
|
||||||
01.01.2021;1;1032;N;Maxibrief Integral + EINSCHREIBEN EINWURF;4,9;Maxibrief;2,7;EINSCHREIBEN EINWURF;2,2;100;70;0;353;250;50;0;1000;;;;Preis nach UStG umsatzsteuerfrei. Ein Maxibrief bis 1000 g, Zustellnachweis durch Postmitarbeiter, Sendungsverfolgung per T&T, Haftung bis 20 EUR, Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/e/einschreiben.html;nein;nein
|
|
||||||
01.01.2021;1;1037;N;Maxibrief Integral + EINSCHREIBEN;5,2;Maxibrief;2,7;EINSCHREIBEN;2,5;100;70;0;353;250;50;0;1000;;;;Preis nach UStG umsatzsteuerfrei. Ein Maxibrief bis 1000 g, Zustellnachweis durch Postmitarbeiter, Sendungsverfolgung per T&T, Haftung bis 25 EUR, Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/e/einschreiben.html;nein;nein
|
|
||||||
01.01.2021;1;1039;N;Maxibrief Integral + EINSCHREIBEN + EIGENHÄNDIG;7,4;Maxibrief;2,7;EINSCHREIBEN + EIGENHÄNDIG;4,7;100;70;0;353;250;50;0;1000;;;;Preis nach UStG umsatzsteuerfrei. Ein Maxibrief bis 1000 g, Zustellnachweis durch Postmitarbeiter, Sendungsverfolgung per T&T, Haftung bis 25 EUR, Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/e/einschreiben.html;nein;nein
|
|
||||||
01.01.2021;1;1042;N;Maxibrief Integral + Zusatzentgelt MBf + EINSCHREIBEN EINWURF;7,1;Maxibrief;2,7;Zusatzentgelt MBf + EINSCHREIBEN EINWURF;4,4;100;70;0;600;300;150;0;2000;;;Höchstmaße alternativ: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Preis nach UStG umsatzsteuerfrei. Ein Maxibrief bis 2000 g mit einem Überformat, Zustellnachweis durch Postmitarbeiter, Sendungsverfolgung per T&T, Haftung bis 20 EUR, Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/e/einschreiben.html;nein;nein
|
|
||||||
01.01.2021;1;1047;N;Maxibrief Integral + Zusatzentgelt MBf + EINSCHREIBEN;7,4;Maxibrief;2,7;Zusatzentgelt MBf + EINSCHREIBEN;4,7;100;70;0;600;300;150;0;2000;;;Höchstmaße alternativ: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Preis nach UStG umsatzsteuerfrei. Ein Maxibrief bis 2000 g mit einem Überformat, Zustellnachweis durch Postmitarbeiter, Sendungsverfolgung per T&T, Haftung bis 25 EUR, Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/e/einschreiben.html;nein;nein
|
|
||||||
01.01.2021;1;1049;N;Maxibrief Integral + Zusatzentgelt MBf + EINSCHREIBEN + EIGENHÄNDIG;9,6;Maxibrief;2,7;Zusatzentgelt MBf + EINSCHREIBEN + EIGENHÄNDIG;6,9;100;70;0;600;300;150;0;2000;;;Höchstmaße alternativ: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Preis nach UStG umsatzsteuerfrei. Ein Maxibrief bis 2000 g mit einem Überformat, Zustellnachweis durch Postmitarbeiter, Sendungsverfolgung per T&T, Haftung bis 25 EUR, Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/e/einschreiben.html;nein;nein
|
|
||||||
01.01.2021;1;1052;N;Postkarte Integral + EINSCHREIBEN EINWURF;2,8;Postkarte;0,6;EINSCHREIBEN EINWURF;2,2;140;90;0;235;125;2;;;;;Flächengewicht: 150 g/m2 bis 500 g/m2. Die Länge muss mindestens das 1,4-fache der Breite betragen.;Preis nach UStG umsatzsteuerfrei. Eine Postkarte, Zustellnachweis durch Postmitarbeiter, Sendungsverfolgung per T&T, Haftung bis 20 EUR, Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/e/einschreiben.html;nein;nein
|
|
||||||
01.01.2021;1;1057;N;Postkarte Integral + EINSCHREIBEN;3,1;Postkarte;0,6;EINSCHREIBEN;2,5;140;90;0;235;125;2;;;;;Flächengewicht: 150 g/m2 bis 500 g/m2. Die Länge muss mindestens das 1,4-fache der Breite betragen.;Preis nach UStG umsatzsteuerfrei. Eine Postkarte, Zustellnachweis durch Postmitarbeiter, Sendungsverfolgung per T&T, Haftung bis 25 EUR, Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/e/einschreiben.html;nein;nein
|
|
||||||
01.01.2021;1;1059;N;Postkarte Integral + EINSCHREIBEN + EIGENHÄNDIG;5,3;Postkarte;0,6;EINSCHREIBEN + EIGENHÄNDIG;4,7;140;90;0;235;125;2;;;;;Flächengewicht: 150 g/m2 bis 500 g/m2. Die Länge muss mindestens das 1,4-fache der Breite betragen.;Preis nach UStG umsatzsteuerfrei. Eine Postkarte, Zustellnachweis durch Postmitarbeiter, Sendungsverfolgung per T&T, Haftung bis 25 EUR, Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/e/einschreiben.html;nein;nein
|
|
||||||
01.01.2021;;10001;I;Standardbrief Intern. GK;1,1;Standardbrief Intern. GK;1,1;;;140;90;0;235;125;5;0;20;;;Die Länge muss mindestens das 1,4-fache der Breite betragen.;Preis nach UStG umsatzsteuerfrei. Für Briefe, Schriftstücke und kleinere Gegenstände bis 20 g. Die Länge muss mindestens das 1,4-fache der Breite betragen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/brief-postkarte-international.html;nein;nein
|
|
||||||
01.01.2021;;10011;I;Kompaktbrief Intern. GK;1,7;Kompaktbrief Intern. GK;1,7;;;140;90;0;235;125;10;0;50;;;Die Länge muss mindestens das 1,4-fache der Breite betragen.;Preis nach UStG umsatzsteuerfrei. Für Briefe, Schriftstücke und kleinere Gegenstände bis 50 g. Die Länge muss mindestens das 1,4-fache der Breite betragen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/brief-postkarte-international.html;nein;nein
|
|
||||||
01.01.2021;;10051;I;Großbrief Intern. GK;3,7;Großbrief Intern. GK;3,7;;;140;90;0;600;600;600;0;500;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Preis nach UStG umsatzsteuerfrei. Für Briefe, Schriftstücke und kleinere Gegenstände bis 500 g. Keine Seite länger als 600 mm.;https://www.deutschepost.de/de/b/briefe-ins-ausland/brief-postkarte-international.html;nein;nein
|
|
||||||
01.01.2021;;10071;I;Maxibrief Intern. bis 1.000g GK;7;Maxibrief Intern. bis 1.000g GK;7;;;140;90;0;600;600;600;501;1000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Preis nach UStG umsatzsteuerfrei. Für Briefe, Schriftstücke und kleinere Gegenstände bis 1000 g. Keine Seite länger als 600 mm.;https://www.deutschepost.de/de/b/briefe-ins-ausland/brief-postkarte-international.html;nein;nein
|
|
||||||
01.01.2021;;10091;I;Maxibrief Intern. bis 2.000g GK;17;Maxibrief Intern. bis 2.000g GK;17;;;140;90;0;600;600;600;1001;2000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Preis nach UStG umsatzsteuerfrei. Für Briefe, Schriftstücke und kleinere Gegenstände bis 2000 g. Keine Seite länger als 600 mm.;https://www.deutschepost.de/de/b/briefe-ins-ausland/brief-postkarte-international.html;nein;nein
|
|
||||||
01.01.2021;1;10162;I;Brief Kilotarif international ohne USt + EINSCHREIBEN;4,29;Frankierung Brief Kilotarif Stückentgelt;0,79;EINSCHREIBEN;3,5;140;90;0;600;600;600;0;2000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Preis nach UStG umsatzsteuerfrei. Für Briefe, Schriftstücke und kleinere Gegenstände. Die Länge muss mindestens das 1,4-fache der Breite betragen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/brief-international-kilotarif.html;ja;nein
|
|
||||||
01.01.2021;;10166;I;Brief Kilotarif international ohne USt.;0,79;Frankierung Brief Kilotarif Stückentgelt;0,79;;;140;90;0;600;600;600;0;2000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Preis nach UStG umsatzsteuerfrei. Für Briefe, Schriftstücke und kleinere Gegenstände. Die Länge muss mindestens das 1,4-fache der Breite betragen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/brief-international-kilotarif.html;ja;nein
|
|
||||||
01.01.2021;;10201;I;Postkarte Intern. GK;0,95;Postkarte Intern. GK;0,95;;;140;90;0;235;125;2;;;;;Flächengewicht: 150 g/m2 bis 500 g/m2. Die Länge muss mindestens das 1,4-fache der Breite betragen.;Preis nach UStG umsatzsteuerfrei. Die Länge muss mindestens das 1,4-fache der Breite betragen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/brief-postkarte-international.html;nein;nein
|
|
||||||
01.01.2021;;10246;I;Warenpost International XS;3,8;Warenpost International XS;3,8;;;140;90;0;353;250;30;0;500;;;;Vertragsprodukt. Umsatzsteuerfrei. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;nein;ja
|
|
||||||
01.01.2021;;10247;I;Warenpost International S;5;Warenpost International S;5;;;140;90;0;600;600;600;0;500;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Vertragsprodukt. Umsatzsteuerfrei. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;nein;ja
|
|
||||||
01.01.2021;;10248;I;Warenpost International M;9;Warenpost International M;9;;;140;90;0;600;600;600;501;1000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Vertragsprodukt. Umsatzsteuerfrei. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;nein;ja
|
|
||||||
01.01.2021;;10249;I;Warenpost International L;19,9;Warenpost International L;19,9;;;140;90;0;600;600;600;1001;2000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Vertragsprodukt. Umsatzsteuerfrei. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;nein;ja
|
|
||||||
01.01.2021;1;10250;I;Warenpost International XS Tracked;6,15;Warenpost International XS Tracked;6,15;;;140;90;0;353;250;30;0;500;;;;Vertragsprodukt. Umsatzsteuerfrei. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;nein;ja
|
|
||||||
01.01.2021;1;10251;I;Warenpost International S Tracked;7,35;Warenpost International S Tracked;7,35;;;140;90;0;600;600;600;0;500;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Vertragsprodukt. Umsatzsteuerfrei. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;nein;ja
|
|
||||||
01.01.2021;1;10252;I;Warenpost International M Tracked;11,35;Warenpost International M Tracked;11,35;;;140;90;0;600;600;600;501;1000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Vertragsprodukt. Umsatzsteuerfrei. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;nein;ja
|
|
||||||
01.01.2021;1;10253;I;Warenpost International L Tracked;22,25;Warenpost International L Tracked;22,25;;;140;90;0;600;600;600;1001;2000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Vertragsprodukt. Umsatzsteuerfrei. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;nein;ja
|
|
||||||
01.01.2021;;10254;I;Warenpost International XS (EU/USt.);3,81;Warenpost International XS (EU/USt.);3,81;;;140;90;0;353;250;30;0;500;;;;Vertragsprodukt. Umsatzsteuerpflichtig. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;nein;ja
|
|
||||||
01.01.2021;;10255;I;Warenpost International S (EU/USt.);4,4;Warenpost International S (EU/USt.);4,4;;;140;90;0;600;600;600;0;500;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Vertragsprodukt. Umsatzsteuerpflichtig. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;nein;ja
|
|
||||||
01.01.2021;;10256;I;Warenpost International M (EU/USt.);8,33;Warenpost International M (EU/USt.);8,33;;;140;90;0;600;600;600;501;1000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Vertragsprodukt. Umsatzsteuerpflichtig. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;nein;ja
|
|
||||||
01.01.2021;;10257;I;Warenpost International L (EU/USt.);20,23;Warenpost International L (EU/USt.);20,23;;;140;90;0;600;600;600;1001;2000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Vertragsprodukt. Umsatzsteuerpflichtig. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;nein;ja
|
|
||||||
01.01.2021;1;10258;I;Warenpost International XS Tracked (EU/USt.);6,6;Warenpost International XS Tracked (EU/USt.);6,6;;;140;90;0;353;250;30;0;500;;;;Vertragsprodukt. Umsatzsteuerpflichtig. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;nein;ja
|
|
||||||
01.01.2021;1;10259;I;Warenpost International S Tracked (EU/USt.);7,2;Warenpost International S Tracked (EU/USt.);7,2;;;140;90;0;600;600;600;0;500;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Vertragsprodukt. Umsatzsteuerpflichtig. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;nein;ja
|
|
||||||
01.01.2021;1;10260;I;Warenpost International M Tracked (EU/USt.);11,13;Warenpost International M Tracked (EU/USt.);11,13;;;140;90;0;600;600;600;501;1000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Vertragsprodukt. Umsatzsteuerpflichtig. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;nein;ja
|
|
||||||
01.01.2021;1;10261;I;Warenpost International L Tracked (EU/USt.);23,03;Warenpost International L Tracked (EU/USt.);23,03;;;140;90;0;600;600;600;1001;2000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Vertragsprodukt. Umsatzsteuerpflichtig. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;nein;ja
|
|
||||||
01.01.2021;;10270;I;Warenpost Int. KT (EU/USt.) für Internetmarke;1,5;WARENPOST INT KT EU Internetmarke;1,5;;;140;90;0;600;600;600;0;2000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Vertragsprodukt. Umsatzsteuerpflichtig. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;ja;ja
|
|
||||||
01.01.2021;1;10271;I;Warenpost Int. KT Tracked (EU/USt.) für Internetmarke;3,6;WARENPOST INT KT TRACKED EU Internetmarke;3,6;;;140;90;0;600;600;600;0;2000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Vertragsprodukt. Umsatzsteuerpflichtig. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;ja;ja
|
|
||||||
01.01.2021;;10272;I;Warenpost Int. KT (Non EU) für Internetmarke;2;WARENPOST INT KT NON EU Internetmarke;2;;;140;90;0;600;600;600;0;2000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Vertragsprodukt. Umsatzsteuerfrei. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;ja;ja
|
|
||||||
01.01.2021;1;10273;I;Warenpost Int. KT Tracked (Non EU) für Internetmarke;4,1;WARENPOST INT KT TRACKED NON EU Internetmarke;4,1;;;140;90;0;600;600;600;0;2000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Vertragsprodukt. Umsatzsteuerfrei. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;ja;ja
|
|
||||||
01.01.2021;;10280;I;Warenpost International XS Unterschrift;7,3;Warenpost International XS Unterschrift;7,3;;;140;90;0;353;250;30;0;500;;;;Vertragsprodukt. Umsatzsteuerfrei. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;nein;ja
|
|
||||||
01.01.2021;;10281;I;Warenpost International S Unterschrift;8,5;Warenpost International S Unterschrift;8,5;;;140;90;0;600;600;600;0;500;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Vertragsprodukt. Umsatzsteuerfrei. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;nein;ja
|
|
||||||
01.01.2021;;10282;I;Warenpost International M Unterschrift;12,5;Warenpost International M Unterschrift;12,5;;;140;90;0;600;600;600;501;1000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Vertragsprodukt. Umsatzsteuerfrei. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;nein;ja
|
|
||||||
01.01.2021;;10283;I;Warenpost International L Unterschrift;23,4;Warenpost International L Unterschrift;23,4;;;140;90;0;600;600;600;1001;2000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Vertragsprodukt. Umsatzsteuerfrei. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;nein;ja
|
|
||||||
01.01.2021;;10284;I;Warenpost International XS Unterschrift (EU/USt.);7,97;Warenpost International XS Unterschrift (EU/USt.);7,97;;;140;90;0;353;250;30;0;500;;;;Vertragsprodukt. Umsatzsteuerpflichtig. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;nein;ja
|
|
||||||
01.01.2021;;10285;I;Warenpost International S Unterschrift (EU/USt.);8,57;Warenpost International S Unterschrift (EU/USt.);8,57;;;140;90;0;600;600;600;0;500;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Vertragsprodukt. Umsatzsteuerpflichtig. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;nein;ja
|
|
||||||
01.01.2021;;10286;I;Warenpost International M Unterschrift (EU/USt.);12,5;Warenpost International M Unterschrift (EU/USt.);12,5;;;140;90;0;600;600;600;501;1000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Vertragsprodukt. Umsatzsteuerpflichtig. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;nein;ja
|
|
||||||
01.01.2021;;10287;I;Warenpost International L Unterschrift (EU/USt.);24,4;Warenpost International L Unterschrift (EU/USt.);24,4;;;140;90;0;600;600;600;1001;2000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Vertragsprodukt. Umsatzsteuerpflichtig. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;nein;ja
|
|
||||||
01.01.2021;;10292;I;Warenpost Int. KT Unterschrift (EU/USt.) für Internetmarke;4,75;WARENPOST INT KT UNTERSCHRIFT EU Internetmarke;4,75;;;140;90;0;600;600;600;0;2000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Vertragsprodukt. Umsatzsteuerpflichtig. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;ja;ja
|
|
||||||
01.01.2021;;10293;I;Warenpost Int. KT Unterschrift (Non EU) für Internetmarke;5,25;WARENPOST INT KT UNTERSCHRIFT NON EU Internetmarke;5,25;;;140;90;0;600;600;600;0;2000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Vertragsprodukt. Umsatzsteuerfrei. Nur Waren als Inhalt, keine schriftlichen Mitteilungen zulässig, eine auf den Inhalt bezogene Rechnung ist zulässig, für Versande in Länder außerhalb der EU ist immer eine Zollinhaltserklärung auf der Sendung anzubringen.;https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html;ja;ja
|
|
||||||
01.01.2021;1;11006;I;Standardbrief Intern. GK Integral + EINSCHREIBEN;4,6;Standardbrief Intern. GK;1,1;EINSCHREIBEN;3,5;140;90;0;235;125;5;0;20;;;Die Länge muss mindestens das 1,4-fache der Breite betragen.;Preis nach UStG umsatzsteuerfrei. Ein Standardbrief INTERNATIONAL bis 20 g, nachgewiesene Übergabe an Empfänger, Sendungsverfolgung per T&T, Haftung, Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/b/briefe-ins-ausland/einschreiben-international.html;nein;nein
|
|
||||||
01.01.2021;1;11016;I;Kompaktbrief Intern. GK Integral + EINSCHREIBEN;5,2;Kompaktbrief Intern. GK;1,7;EINSCHREIBEN;3,5;140;90;0;235;125;10;0;50;;;Die Länge muss mindestens das 1,4-fache der Breite betragen.;Preis nach UStG umsatzsteuerfrei. Ein Kompaktbrief INTERNATIONAL bis 50 g, nachgewiesene Übergabe an Empfänger, Sendungsverfolgung per T&T, Haftung, Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/b/briefe-ins-ausland/einschreiben-international.html;nein;nein
|
|
||||||
01.01.2021;1;11056;I;Großbrief Intern. GK Integral + EINSCHREIBEN;7,2;Großbrief Intern. GK;3,7;EINSCHREIBEN;3,5;140;90;0;600;600;600;0;500;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Preis nach UStG umsatzsteuerfrei. Ein Großbrief INTERNATIONAL bis 500 g, nachgewiesene Übergabe an Empfänger, Sendungsverfolgung per T&T, Haftung, Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/b/briefe-ins-ausland/einschreiben-international.html;nein;nein
|
|
||||||
01.01.2021;1;11076;I;Maxibrief Intern. bis 1.000g GK Integral + EINSCHREIBEN;10,5;Maxibrief Intern. bis 1.000g GK;7;EINSCHREIBEN;3,5;140;90;0;600;600;600;501;1000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Preis nach UStG umsatzsteuerfrei. Ein Maxibrief INTERNATIONAL bis 1000 g, nachgewiesene Übergabe an Empfänger, Sendungsverfolgung per T&T, Haftung, Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/b/briefe-ins-ausland/einschreiben-international.html;nein;nein
|
|
||||||
01.01.2021;1;11096;I;Maxibrief Intern. bis 2.000g GK Integral + EINSCHREIBEN;20,5;Maxibrief Intern. bis 2.000g GK;17;EINSCHREIBEN;3,5;140;90;0;600;600;600;1001;2000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Preis nach UStG umsatzsteuerfrei. Ein Maxibrief INTERNATIONAL bis 2000 g, nachgewiesene Übergabe an Empfänger, Sendungsverfolgung per T&T, Haftung, Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/b/briefe-ins-ausland/einschreiben-international.html;nein;nein
|
|
||||||
01.01.2021;1;11202;I;Postkarte Intern. GK Integral + EINSCHREIBEN;4,45;Postkarte Intern. GK;0,95;EINSCHREIBEN;3,5;140;90;0;235;125;2;;;;;Flächengewicht: 150 g/m2 bis 500 g/m2. Die Länge muss mindestens das 1,4-fache der Breite betragen.;Preis nach UStG umsatzsteuerfrei. Eine Postkarte INTERNATIONAL, nachgewiesene Übergabe an Empfänger, Sendungsverfolgung per T&T, Haftung, Einlieferung über die Filialen der Deutschen Post.;https://www.deutschepost.de/de/b/briefe-ins-ausland/einschreiben-international.html;nein;nein
|
|
||||||
01.01.2021;;30092;I;Presse Eco 500g;3,5;Presse Eco 500g;3,5;;;140;90;0;600;600;600;0;500;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Preis nach UStG umsatzsteuerfrei. Mit Presse Eco 500g versenden Sie Zeitungen und Zeitschriften.;https://www.deutschepost.de/de/b/briefe-ins-ausland/presse-international.html;nein;nein
|
|
||||||
01.01.2021;;30112;I;Presse Eco 1000g;6,5;Presse Eco 1000g;6,5;;;140;90;0;600;600;600;501;1000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Preis nach UStG umsatzsteuerfrei. Mit Presse Eco 1000g versenden Sie Zeitungen und Zeitschriften.;https://www.deutschepost.de/de/b/briefe-ins-ausland/presse-international.html;nein;nein
|
|
||||||
01.01.2021;;30132;I;Presse Eco 2000g;14;Presse Eco 2000g;14;;;140;90;0;600;600;600;1001;2000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Preis nach UStG umsatzsteuerfrei. Mit Presse Eco 2000g versenden Sie Zeitungen und Zeitschriften.;https://www.deutschepost.de/de/b/briefe-ins-ausland/presse-international.html;nein;nein
|
|
||||||
01.01.2021;;30202;I;Presse Prio 500g;3,7;Presse Prio 500g;3,7;;;140;90;0;600;600;600;0;500;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Preis nach UStG umsatzsteuerfrei. Mit Presse Prio 500 g versenden Sie Zeitungen und Zeitschriften. Bitte beachten Sie die Kennzeichnungspflicht der Sendung.;https://www.deutschepost.de/de/b/briefe-ins-ausland/presse-international.html;nein;nein
|
|
||||||
01.01.2021;1;30207;I;Presse Prio 500g + EINSCHREIBEN;7,2;Presse Prio 500g;3,7;EINSCHREIBEN;3,5;140;90;0;600;600;600;0;500;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Preis nach UStG umsatzsteuerfrei. Presse Prio 500g, nachgewiesene Übergabe an Empfänger, Sendungsverfolgung per T&T, Haftung, Einlieferung über die Filialen der Deutschen Post. Bitte beachten Sie die Kennzeichnungspflicht der Sendung. ;https://www.deutschepost.de/de/b/briefe-ins-ausland/presse-international.html;nein;nein
|
|
||||||
01.01.2021;;30222;I;Presse Prio 1000g;7;Presse Prio 1000g;7;;;140;90;0;600;600;600;501;1000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Preis nach UStG umsatzsteuerfrei. Mit Presse Prio 1000 g versenden Sie Zeitungen und Zeitschriften. Bitte beachten Sie die Kennzeichnungspflicht der Sendung.;https://www.deutschepost.de/de/b/briefe-ins-ausland/presse-international.html;nein;nein
|
|
||||||
01.01.2021;1;30227;I;Presse Prio 1000g + EINSCHREIBEN;10,5;Presse Prio 1000g;7;EINSCHREIBEN;3,5;140;90;0;600;600;600;501;1000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Preis nach UStG umsatzsteuerfrei. Presse Prio 1000 g, nachgewiesene Übergabe an Empfänger, Sendungsverfolgung per T&T, Haftung, Einlieferung über die Filialen der Deutschen Post. Bitte beachten Sie die Kennzeichnungspflicht der Sendung.;https://www.deutschepost.de/de/b/briefe-ins-ausland/presse-international.html;nein;nein
|
|
||||||
01.01.2021;;30242;I;Presse Prio 2000g;17;Presse Prio 2000g;17;;;140;90;0;600;600;600;1001;2000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Preis nach UStG umsatzsteuerfrei. Mit Presse Prio 2000 g versenden Sie Zeitungen und Zeitschriften. Bitte beachten Sie die Kennzeichnungspflicht der Sendung.;https://www.deutschepost.de/de/b/briefe-ins-ausland/presse-international.html;nein;nein
|
|
||||||
01.01.2021;1;30247;I;Presse Prio 2000g + EINSCHREIBEN;20,5;Presse Prio 2000g;17;EINSCHREIBEN;3,5;140;90;0;600;600;600;1001;2000;;;Höchstmaße: L + B + H = 900 mm, dabei keine Seite länger als 600 mm.;Preis nach UStG umsatzsteuerfrei. Presse Prio 2000g, nachgewiesene Übergabe an Empfänger, Sendungsverfolgung per T&T, Haftung, Einlieferung über die Filialen der Deutschen Post. Bitte beachten Sie die Kennzeichnungspflicht der Sendung. ;https://www.deutschepost.de/de/b/briefe-ins-ausland/presse-international.html;nein;nein
|
|
||||||
|
@@ -105,20 +105,22 @@ class Versandart_sendcloud extends Versanddienstleister
|
|||||||
$parcel->EMail = $json->email;
|
$parcel->EMail = $json->email;
|
||||||
$parcel->Telephone = $json->phone;
|
$parcel->Telephone = $json->phone;
|
||||||
$parcel->CountryState = $json->state;
|
$parcel->CountryState = $json->state;
|
||||||
$parcel->CustomsInvoiceNr = $json->invoice_number;
|
|
||||||
$parcel->CustomsShipmentType = $json->shipment_type;
|
|
||||||
$parcel->TotalInsuredValue = $json->total_insured_value;
|
$parcel->TotalInsuredValue = $json->total_insured_value;
|
||||||
$parcel->OrderNumber = $json->order_number;
|
$parcel->OrderNumber = $json->order_number;
|
||||||
|
if (!$this->app->erp->IsEU($json->country)) {
|
||||||
|
$parcel->CustomsInvoiceNr = $json->invoice_number;
|
||||||
|
$parcel->CustomsShipmentType = $json->shipment_type;
|
||||||
foreach ($json->positions as $pos) {
|
foreach ($json->positions as $pos) {
|
||||||
$item = new ParcelItem();
|
$item = new ParcelItem();
|
||||||
$item->HsCode = $pos->zolltarifnummer;
|
$item->HsCode = $pos->zolltarifnummer ?? '';
|
||||||
$item->Description = $pos->bezeichnung;
|
$item->Description = $pos->bezeichnung;
|
||||||
$item->Quantity = $pos->menge;
|
$item->Quantity = $pos->menge;
|
||||||
$item->OriginCountry = $pos->herkunftsland;
|
$item->OriginCountry = $pos->herkunftsland ?? '';
|
||||||
$item->Price = $pos->zolleinzelwert;
|
$item->Price = $pos->zolleinzelwert;
|
||||||
$item->Weight = $pos->zolleinzelgewicht * 1000;
|
$item->Weight = $pos->zolleinzelgewicht * 1000;
|
||||||
$parcel->ParcelItems[] = $item;
|
$parcel->ParcelItems[] = $item;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
$parcel->Weight = floatval($json->weight) * 1000;
|
$parcel->Weight = floatval($json->weight) * 1000;
|
||||||
$ret = new CreateShipmentResult();
|
$ret = new CreateShipmentResult();
|
||||||
try {
|
try {
|
||||||
@@ -154,6 +156,8 @@ class Versandart_sendcloud extends Versanddienstleister
|
|||||||
$p = new Product();
|
$p = new Product();
|
||||||
$p->Id = $item->Id;
|
$p->Id = $item->Id;
|
||||||
$p->Name = $item->Name;
|
$p->Name = $item->Name;
|
||||||
|
$p->WeightMin = $item->MinWeight / 1000;
|
||||||
|
$p->WeightMax = $item->MaxWeight / 1000;
|
||||||
$result[] = $p;
|
$result[] = $p;
|
||||||
}
|
}
|
||||||
return $result;
|
return $result;
|
||||||
|
|||||||
@@ -1,410 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
require_once(dirname(__FILE__).'/../class.versanddienstleister.php');
|
|
||||||
class Versandart_sonstiges extends Versanddienstleister{
|
|
||||||
|
|
||||||
private $einstellungen;
|
|
||||||
|
|
||||||
private $info;
|
|
||||||
|
|
||||||
private $client;
|
|
||||||
private $credentials;
|
|
||||||
|
|
||||||
public $paketmarke_drucker;
|
|
||||||
public $export_drucker;
|
|
||||||
|
|
||||||
public $errors;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor for Shipment SDK
|
|
||||||
*
|
|
||||||
* @param type $api_einstellungen
|
|
||||||
* @param type $customer_info
|
|
||||||
*/
|
|
||||||
|
|
||||||
function __construct(&$app, $id) {
|
|
||||||
$this->id = $id;
|
|
||||||
$this->app = &$app;
|
|
||||||
$einstellungen_json = $this->app->DB->Select("SELECT einstellungen_json FROM versandarten WHERE id = '$id' LIMIT 1");
|
|
||||||
$this->paketmarke_drucker = $this->app->DB->Select("SELECT paketmarke_drucker FROM versandarten WHERE id = '$id' LIMIT 1");
|
|
||||||
$this->export_drucker = $this->app->DB->Select("SELECT export_drucker FROM versandarten WHERE id = '$id' LIMIT 1");
|
|
||||||
if($einstellungen_json)
|
|
||||||
{
|
|
||||||
$this->einstellungen = json_decode($einstellungen_json,true);
|
|
||||||
}else{
|
|
||||||
$this->einstellungen = array();
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->credentials = $this->einstellungen;
|
|
||||||
//$this->errors = array();
|
|
||||||
$data = $this->einstellungen;
|
|
||||||
$this->info = $this->einstellungen;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public function GetBezeichnung()
|
|
||||||
{
|
|
||||||
return 'UPS';
|
|
||||||
}
|
|
||||||
|
|
||||||
function EinstellungenStruktur()
|
|
||||||
{
|
|
||||||
return array();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public function VersandartMindestgewicht()
|
|
||||||
{
|
|
||||||
if(!isset($this->einstellungen['WeightInKG']))return 1;
|
|
||||||
if($this->einstellungen['WeightInKG'] === '')return 1;
|
|
||||||
return str_replace(',','.',$this->einstellungen['WeightInKG']);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function Paketmarke($doctyp, $docid, $target = '', $error = false)
|
|
||||||
{
|
|
||||||
$id = $docid;
|
|
||||||
$drucken = $this->app->Secure->GetPOST("drucken");
|
|
||||||
$anders = $this->app->Secure->GetPOST("anders");
|
|
||||||
$land = $this->app->Secure->GetPOST("land");
|
|
||||||
$tracking_again = $this->app->Secure->GetGET("tracking_again");
|
|
||||||
|
|
||||||
|
|
||||||
$versandmit= $this->app->Secure->GetPOST("versandmit");
|
|
||||||
$trackingsubmit= $this->app->Secure->GetPOST("trackingsubmit");
|
|
||||||
$versandmitbutton = $this->app->Secure->GetPOST("versandmitbutton");
|
|
||||||
$tracking= $this->app->Secure->GetPOST("tracking");
|
|
||||||
$trackingsubmitcancel= $this->app->Secure->GetPOST("trackingsubmitcancel");
|
|
||||||
$retourenlabel = $this->app->Secure->GetPOST("retourenlabel");
|
|
||||||
|
|
||||||
$kg= $this->app->Secure->GetPOST("kg1");
|
|
||||||
$name= $this->app->Secure->GetPOST("name");
|
|
||||||
$name2= $this->app->Secure->GetPOST("name2");
|
|
||||||
$name3= $this->app->Secure->GetPOST("name3");
|
|
||||||
$strasse= $this->app->Secure->GetPOST("strasse");
|
|
||||||
$hausnummer= $this->app->Secure->GetPOST("hausnummer");
|
|
||||||
$plz= $this->app->Secure->GetPOST("plz");
|
|
||||||
$ort= $this->app->Secure->GetPOST("ort");
|
|
||||||
$email= $this->app->Secure->GetPOST("email");
|
|
||||||
$phone= $this->app->Secure->GetPOST("telefon");
|
|
||||||
$nummeraufbeleg= $this->app->Secure->GetPOST("nummeraufbeleg");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if($sid=="")
|
|
||||||
$sid= $this->app->Secure->GetGET("sid");
|
|
||||||
|
|
||||||
if($zusatz=="express")
|
|
||||||
$this->app->Tpl->Set('ZUSATZ',"Express");
|
|
||||||
|
|
||||||
if($zusatz=="export")
|
|
||||||
$this->app->Tpl->Set('ZUSATZ',"Export");
|
|
||||||
|
|
||||||
$id = $this->app->Secure->GetGET("id");
|
|
||||||
$drucken = $this->app->Secure->GetPOST("drucken");
|
|
||||||
$anders = $this->app->Secure->GetPOST("anders");
|
|
||||||
$land = $this->app->Secure->GetGET("land");
|
|
||||||
if($land=="")$land = $this->app->Secure->GetPOST("land");
|
|
||||||
|
|
||||||
if($name3=="" && $land!=$this->app->erp->Firmendaten("land")) $name3=$name;
|
|
||||||
|
|
||||||
$tracking_again = $this->app->Secure->GetGET("tracking_again");
|
|
||||||
|
|
||||||
|
|
||||||
$versandmit= $this->app->Secure->GetPOST("versandmit");
|
|
||||||
$trackingsubmit= $this->app->Secure->GetPOST("trackingsubmit");
|
|
||||||
$versandmitbutton = $this->app->Secure->GetPOST("versandmitbutton");
|
|
||||||
$tracking= $this->app->Secure->GetPOST("tracking");
|
|
||||||
$trackingsubmitcancel= $this->app->Secure->GetPOST("trackingsubmitcancel");
|
|
||||||
$retourenlabel = $this->app->Secure->GetPOST("retourenlabel");
|
|
||||||
if($typ=="DHL" || $typ=="dhl")
|
|
||||||
$versand = "dhl";
|
|
||||||
else if($typ=="Intraship")
|
|
||||||
$versand = "intraship";
|
|
||||||
else $versand = $typ;
|
|
||||||
|
|
||||||
if($sid == "versand")
|
|
||||||
{
|
|
||||||
$projekt = $this->app->DB->Select("SELECT projekt FROM versand WHERE id='$id' LIMIT 1");
|
|
||||||
}else{
|
|
||||||
$projekt = $this->app->DB->Select("SELECT projekt FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
||||||
}
|
|
||||||
|
|
||||||
if($trackingsubmit!="" || $trackingsubmitcancel!="")
|
|
||||||
{
|
|
||||||
|
|
||||||
if($sid==='versand') {
|
|
||||||
// falche tracingnummer bei DHL da wir in der Funktion PaketmarkeDHLEmbedded sind
|
|
||||||
if((strlen($tracking) < 12 || strlen($tracking) > 20) && $trackingsubmitcancel=='' && ($typ==='DHL' || $typ==='Intraship')) {
|
|
||||||
$this->app->Location->execute("index.php?module=versanderzeugen&action=frankieren&id=$id&land=$land&tracking_again=1");
|
|
||||||
}
|
|
||||||
$this->app->DB->Update("UPDATE versand SET versandunternehmen='$versand', tracking='$tracking',
|
|
||||||
versendet_am=NOW(),versendet_am_zeitstempel=NOW(), abgeschlossen='1',logdatei=NOW() WHERE id='$id' LIMIT 1");
|
|
||||||
|
|
||||||
$this->app->erp->VersandAbschluss($id);
|
|
||||||
$this->app->erp->RunHook('versanderzeugen_frankieren_hook1', 1, $id);
|
|
||||||
//versand mail an kunden
|
|
||||||
$this->app->erp->Versandmail($id);
|
|
||||||
|
|
||||||
$weiterespaket=$this->app->Secure->GetPOST("weiterespaket");
|
|
||||||
$lieferscheinkopie=$this->app->Secure->GetPOST("lieferscheinkopie");
|
|
||||||
if($weiterespaket=='1') {
|
|
||||||
if($lieferscheinkopie=='1') {
|
|
||||||
$lieferscheinkopie=0;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$lieferscheinkopie=1;
|
|
||||||
}
|
|
||||||
//$this->app->erp->LogFile("Lieferscheinkopie $lieferscheinkopie");
|
|
||||||
$all = $this->app->DB->SelectArr("SELECT * FROM versand WHERE id='$id' LIMIT 1");
|
|
||||||
$this->app->DB->Insert("INSERT INTO versand (id,adresse,rechnung,lieferschein,versandart,projekt,bearbeiter,versender,versandunternehmen,firma,
|
|
||||||
keinetrackingmail,gelesen,paketmarkegedruckt,papieregedruckt,weitererlieferschein)
|
|
||||||
VALUES ('','{$all[0]['adresse']}','{$all[0]['rechnung']}','{$all[0]['lieferschein']}','{$all[0]['versandart']}','{$all[0]['projekt']}',
|
|
||||||
'{$all[0]['bearbeiter']}','{$all[0]['versender']}','{$all[0]['versandunternehmen']}',
|
|
||||||
'{$all[0]['firma']}','{$all[0]['keinetrackingmail']}','{$all[0]['gelesen']}',0,$lieferscheinkopie,1)");
|
|
||||||
|
|
||||||
$newid = $this->app->DB->GetInsertID();
|
|
||||||
$this->app->Location->execute('index.php?module=versanderzeugen&action=einzel&id='.$newid);
|
|
||||||
}
|
|
||||||
$url = 'index.php?module=versanderzeugen&action=offene';
|
|
||||||
$lieferschein = $this->app->DB->Select(sprintf('SELECT lieferschein FROM versand WHERE id = %d', $id));
|
|
||||||
$this->app->erp->RunHook('paketmarke_abschluss_url', 2, $lieferschein, $url);
|
|
||||||
$this->app->Location->execute($url);
|
|
||||||
}
|
|
||||||
//direkt aus dem Lieferschein
|
|
||||||
if($id > 0) {
|
|
||||||
$adresse = $this->app->DB->Select("SELECT adresse FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
||||||
$projekt = $this->app->DB->Select("SELECT projekt FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
||||||
$kg = $this->app->Secure->GetPOST("kg1");
|
|
||||||
if($kg=="") {
|
|
||||||
$kg = $this->app->erp->VersandartMindestgewicht($id);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->app->DB->Insert("INSERT INTO versand (id,versandunternehmen, tracking,
|
|
||||||
versendet_am,abgeschlossen,lieferschein,
|
|
||||||
freigegeben,firma,adresse,projekt,gewicht,paketmarkegedruckt,anzahlpakete)
|
|
||||||
VALUES ('','$versand','$tracking',NOW(),1,'$id',1,'".$this->app->User->GetFirma()."','$adresse','$projekt','$kg','1','1') ");
|
|
||||||
$versandId = $this->app->DB->GetInsertID();
|
|
||||||
$auftrag = $this->app->DB->Select("SELECT auftragid FROM lieferschein WHERE id = '$id'");
|
|
||||||
$shop = $this->app->DB->Select("SELECT shop FROM auftrag WHERE id = '$auftrag' LIMIT 1");
|
|
||||||
$auftragabgleich=$this->app->DB->Select("SELECT auftragabgleich FROM shopexport WHERE id='$shop' LIMIT 1");
|
|
||||||
|
|
||||||
if($shop > 0 && $auftragabgleich=="1")
|
|
||||||
{
|
|
||||||
//$this->LogFile("Tracking gescannt");
|
|
||||||
$this->app->remote->RemoteUpdateAuftrag($shop,$auftrag);
|
|
||||||
}
|
|
||||||
$this->app->erp->sendPaymentStatus($versandId);
|
|
||||||
$this->app->Location->execute('index.php?module=lieferschein&action=paketmarke&id='.$id);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if($versandmitbutton!="")
|
|
||||||
{
|
|
||||||
|
|
||||||
if($sid=="versand")
|
|
||||||
{
|
|
||||||
$this->app->DB->Update("UPDATE versand SET versandunternehmen='$versandmit',
|
|
||||||
versendet_am=NOW(),versendet_am_zeitstempel=NOW(),abgeschlossen='1' WHERE id='$id' LIMIT 1");
|
|
||||||
|
|
||||||
$this->VersandAbschluss($id);
|
|
||||||
//versand mail an kunden
|
|
||||||
$this->Versandmail($id);
|
|
||||||
|
|
||||||
header("Location: index.php?module=versanderzeugen&action=offene");
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if($sid=="versand")
|
|
||||||
{
|
|
||||||
// wenn paketmarke bereits gedruckt nur tracking scannen
|
|
||||||
$paketmarkegedruckt = $this->app->DB->Select("SELECT paketmarkegedruckt FROM versand WHERE id='$id' LIMIT 1");
|
|
||||||
|
|
||||||
if($paketmarkegedruckt>=1)
|
|
||||||
$tracking_again=1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if($anders!="")
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
else if(($drucken!="" || $tracking_again=="1") && !$error )
|
|
||||||
{
|
|
||||||
if($tracking_again!="1")
|
|
||||||
{
|
|
||||||
$kg = (float)(str_replace(',','.',$kg));
|
|
||||||
$kg = round($kg,2);
|
|
||||||
$name = substr($this->app->erp->ReadyForPDF($name),0,30);
|
|
||||||
$name2 = $this->app->erp->ReadyForPDF($name2);
|
|
||||||
$name3 = $this->app->erp->ReadyForPDF($name3);
|
|
||||||
$strasse = $this->app->erp->ReadyForPDF($strasse);
|
|
||||||
$hausnummer = $this->app->erp->ReadyForPDF($hausnummer);
|
|
||||||
$plz = $this->app->erp->ReadyForPDF($plz);
|
|
||||||
$ort = $this->app->erp->ReadyForPDF(html_entity_decode($ort));
|
|
||||||
$land = $this->app->erp->ReadyForPDF($land);
|
|
||||||
|
|
||||||
|
|
||||||
$module = $this->app->Secure->GetGET("module");
|
|
||||||
//TODO Workarrond fuer lieferschein
|
|
||||||
if($module=="lieferschein")
|
|
||||||
{
|
|
||||||
$lieferschein = $id;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$lieferschein = $this->app->DB->Select("SELECT lieferschein FROM versand WHERE id='$id' LIMIT 1");
|
|
||||||
if($lieferschein <=0) $lieferschein=$id;
|
|
||||||
}
|
|
||||||
|
|
||||||
$projekt = $this->app->DB->Select("SELECT projekt FROM lieferschein WHERE id='$lieferschein' LIMIT 1");
|
|
||||||
$lieferscheinnummer = $this->app->DB->Select("SELECT belegnr FROM lieferschein WHERE id='$lieferschein' LIMIT 1");
|
|
||||||
|
|
||||||
//pruefe ob es auftragsnummer gibt dann nehmen diese
|
|
||||||
/*
|
|
||||||
$auftragid = $this->app->DB->Select("SELECT auftragid FROM lieferschein WHERE id='$lieferschein' LIMIT 1");
|
|
||||||
if($auftragid > 0)
|
|
||||||
{
|
|
||||||
$nummeraufbeleg = $this->app->DB->Select("SELECT belegnr FROM auftrag WHERE id='$auftragid' LIMIT 1");
|
|
||||||
} else {
|
|
||||||
$nummeraufbeleg = $lieferscheinnummer;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
$nummeraufbeleg = $lieferscheinnummer;
|
|
||||||
|
|
||||||
$rechnung = $this->app->DB->Select("SELECT id FROM rechnung WHERE lieferschein='$lieferschein' LIMIT 1");
|
|
||||||
|
|
||||||
$rechnung_data = $this->app->DB->SelectArr("SELECT * FROM rechnung WHERE id='$rechnung' LIMIT 1");
|
|
||||||
|
|
||||||
// fuer export
|
|
||||||
$email = $rechnung_data[0]['email']; //XXX
|
|
||||||
if($phone=="")
|
|
||||||
$phone = $rechnung_data[0]['telefon']; //XXX
|
|
||||||
$rechnungssumme = $rechnung_data[0]['soll']; //XXX
|
|
||||||
|
|
||||||
if($rechnung){
|
|
||||||
$artikel_positionen = $this->app->DB->SelectArr("SELECT * FROM rechnung_position WHERE rechnung='$rechnung'");
|
|
||||||
} else {
|
|
||||||
$artikel_positionen = $this->app->DB->SelectArr("SELECT * FROM lieferschein_position WHERE lieferschein='$lieferschein'");
|
|
||||||
}
|
|
||||||
|
|
||||||
$data = $this->einstellungen;
|
|
||||||
|
|
||||||
// your customer and api credentials from/for dhl
|
|
||||||
$credentials = array(
|
|
||||||
'api_user' => $data['api_user'],
|
|
||||||
'api_password' => $data['api_password'],
|
|
||||||
'api_accountnumber' => $data['accountnumber'],
|
|
||||||
'api_key' => $data['api_key'],
|
|
||||||
'log' => true
|
|
||||||
);
|
|
||||||
|
|
||||||
// your company info
|
|
||||||
$info = array(
|
|
||||||
'company_name' => $data['company_name'],
|
|
||||||
'street_name' => $data['street_name'],
|
|
||||||
'street_number' => $data['street_number'],
|
|
||||||
'zip' => $data['zip'],
|
|
||||||
'country' => $data['country'],
|
|
||||||
'city' => $data['city'],
|
|
||||||
'email' => $data['email'],
|
|
||||||
'phone' => $data['phone'],
|
|
||||||
'internet' => $data['internet'],
|
|
||||||
'contact_person' => $data['contact_person'],
|
|
||||||
'export_reason' => $data['exportgrund']
|
|
||||||
);
|
|
||||||
// receiver details
|
|
||||||
$customer_details = array(
|
|
||||||
'name1' => $name,
|
|
||||||
'name2' => $name2,
|
|
||||||
'c/o' => $name3,
|
|
||||||
'street_name' => $strasse,
|
|
||||||
'street_number' => $hausnummer,
|
|
||||||
//'country' => 'germany',
|
|
||||||
'country_code' => $land,
|
|
||||||
'zip' => $plz,
|
|
||||||
'city' => $ort,
|
|
||||||
'email' => $email,
|
|
||||||
'phone' => $phone,
|
|
||||||
'ordernumber' => $nummeraufbeleg,
|
|
||||||
'ordernumber2' => $lieferscheinnummer,
|
|
||||||
'weight' => $kg,
|
|
||||||
'amount' => str_replace(",",".",$rechnungssumme),
|
|
||||||
'currency' => 'EUR'
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
$shipment_details['WeightInKG'] = $data['WeightInKG'];
|
|
||||||
$shipment_details['LengthInCM'] = $data['LengthInCM'];
|
|
||||||
$shipment_details['WidthInCM'] = $data['WidthInCM'];
|
|
||||||
$shipment_details['HeightInCM'] = $data['HeightInCM'];
|
|
||||||
$shipment_details['PackageType'] = $data['PackageType'];
|
|
||||||
|
|
||||||
$shipment_details['service_code'] = $data['service_code'];
|
|
||||||
$shipment_details['service_description'] = $data['service_description'];
|
|
||||||
$shipment_details['package_code'] = $data['package_code'];
|
|
||||||
$shipment_details['package_description'] = $data['package_description'];
|
|
||||||
$shipment_details['exportgrund'] = $data['exportgrund'];
|
|
||||||
|
|
||||||
if($data['note']=="") $data['note'] = $rechnungsnummer;
|
|
||||||
|
|
||||||
//$response = $this->createShipment($customer_details,$shipment_details);
|
|
||||||
|
|
||||||
|
|
||||||
$data['sonstiges_drucker'] = $this->paketmarke_drucker;
|
|
||||||
$data['druckerlogistikstufe2'] = $this->export_drucker;
|
|
||||||
|
|
||||||
|
|
||||||
if($this->app->erp->GetStandardPaketmarkendrucker()>0)
|
|
||||||
$data['sonstiges_drucker'] = $this->app->erp->GetStandardPaketmarkendrucker();
|
|
||||||
|
|
||||||
|
|
||||||
if($this->app->erp->GetStandardVersanddrucker($projekt)>0)
|
|
||||||
$data['druckerlogistikstufe2'] = $this->app->erp->GetStandardVersanddrucker($projekt);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if($this->app->Secure->GetPOST('drucken') || $this->app->Secure->GetPOST('anders'))
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
}else{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//$this->info = $customer_info;
|
|
||||||
if($target)$this->app->Tpl->Parse($target,'versandarten_sonstiges.tpl');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public function Export($daten)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private function log($message) {
|
|
||||||
|
|
||||||
if (isset($this->einstellungen['log'])) {
|
|
||||||
|
|
||||||
if (is_array($message) || is_object($message)) {
|
|
||||||
|
|
||||||
error_log(print_r($message, true));
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
error_log($message);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -2054,7 +2054,7 @@ $table_kontakte = '';
|
|||||||
$ckontakte = !empty($kontakte)?count($kontakte):0;
|
$ckontakte = !empty($kontakte)?count($kontakte):0;
|
||||||
for($i=0;$i<$ckontakte;$i++)
|
for($i=0;$i<$ckontakte;$i++)
|
||||||
{
|
{
|
||||||
$tabindex = $tabindex+i;
|
$tabindex = $tabindex+$i;
|
||||||
$table_kontakte .= "<tr><td>".$kontakte[$i]['bezeichnung'].":
|
$table_kontakte .= "<tr><td>".$kontakte[$i]['bezeichnung'].":
|
||||||
</td><td><input type=text name=\"adresse_kontakte[".$kontakte[$i]['id']."]\" value=\"".$kontakte[$i]['kontakt']."\" size=\"30\" tabindex=\"$tabindex\"> <a href=\"#\" onclick=\"if(!confirm('".$kontakte[$i]['bezeichnung']." wirklich entfernen?')) return false; else window.location.href='index.php?module=adresse&action=delkontakt&id=".$id."&lid=".$kontakte[$i]['id']."';\">x</a></td></tr>";
|
</td><td><input type=text name=\"adresse_kontakte[".$kontakte[$i]['id']."]\" value=\"".$kontakte[$i]['kontakt']."\" size=\"30\" tabindex=\"$tabindex\"> <a href=\"#\" onclick=\"if(!confirm('".$kontakte[$i]['bezeichnung']." wirklich entfernen?')) return false; else window.location.href='index.php?module=adresse&action=delkontakt&id=".$id."&lid=".$kontakte[$i]['id']."';\">x</a></td></tr>";
|
||||||
}
|
}
|
||||||
@@ -6417,7 +6417,7 @@ function AdresseVerein()
|
|||||||
if(bearbeiter!="",bearbeiter,a2.name) as bearbeiter,
|
if(bearbeiter!="",bearbeiter,a2.name) as bearbeiter,
|
||||||
CONCAT(UCASE(LEFT(d.typ, 1)), SUBSTRING(d.typ, 2)) as art,
|
CONCAT(UCASE(LEFT(d.typ, 1)), SUBSTRING(d.typ, 2)) as art,
|
||||||
CONCAT(IF(d.sent = 1, "JA", "NEIN"),"<a data-type=dokumente data-id=", d.id, "></a>") as gesendet,
|
CONCAT(IF(d.sent = 1, "JA", "NEIN"),"<a data-type=dokumente data-id=", d.id, "></a>") as gesendet,
|
||||||
"" as pdf,
|
concat("<a href=\"index.php?module=dateien&action=send&id=",(SELECT datei FROM datei_stichwoerter WHERE subjekt="anhang" AND objekt="dokument" AND parameter = d.id LIMIT 1),"\"><img src=./themes/' . $this->app->Conf->WFconf['defaulttheme'] . '/images/pdf.svg></a>") as pdf,
|
||||||
concat("1","-",d.id) as did,
|
concat("1","-",d.id) as did,
|
||||||
d.content as suchtext,
|
d.content as suchtext,
|
||||||
d.internebezeichnung
|
d.internebezeichnung
|
||||||
|
|||||||
+23
-3
@@ -1597,11 +1597,17 @@ select a.kundennummer, (SELECT name FROM adresse a2 WHERE a2.kundennummer = a.ku
|
|||||||
if($artikel_freitext1_suche)
|
if($artikel_freitext1_suche)
|
||||||
{
|
{
|
||||||
$felder[] = 'art.freifeld1';
|
$felder[] = 'art.freifeld1';
|
||||||
|
} else {
|
||||||
|
$artikel_freitext1_suche = 'true';
|
||||||
}
|
}
|
||||||
$subwhere = $this->AjaxFilterWhere($termorig,$felder);
|
$subwhere = $this->AjaxFilterWhere($termorig,$felder);
|
||||||
$arr = $this->app->DB->SelectArr("SELECT CONCAT(art.nummer,' ',art.name_de) as name FROM artikel art
|
$sql = "SELECT CONCAT(art.nummer,' ',art.name_de) as name FROM artikel art
|
||||||
INNER JOIN $doctype"."_position ap ON ap.artikel = art.id AND $doctype = '$doctypeid'
|
INNER JOIN $doctype"."_position ap ON ap.artikel = art.id AND $doctype = '$doctypeid'
|
||||||
WHERE art.geloescht=0 AND ($artikel_freitext1_suche) AND art.geloescht=0 AND art.intern_gesperrt!=1 LIMIT 20");
|
WHERE
|
||||||
|
art.geloescht=0 AND ($artikel_freitext1_suche) AND art.geloescht=0 AND art.intern_gesperrt!=1 AND
|
||||||
|
(name_de LIKE '%$term%' OR art.nummer LIKE '%$term%')
|
||||||
|
LIMIT 20";
|
||||||
|
$arr = $this->app->DB->SelectArr($sql);
|
||||||
$carr = !empty($arr)?count($arr):0;
|
$carr = !empty($arr)?count($arr):0;
|
||||||
for($i = 0; $i < $carr; $i++) {
|
for($i = 0; $i < $carr; $i++) {
|
||||||
$newarr[] = $arr[$i]['name'];
|
$newarr[] = $arr[$i]['name'];
|
||||||
@@ -2072,6 +2078,20 @@ select a.kundennummer, (SELECT name FROM adresse a2 WHERE a2.kundennummer = a.ku
|
|||||||
$newarr[] = $arr[$i]['name'];
|
$newarr[] = $arr[$i]['name'];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case "fibu_objekte":
|
||||||
|
$arr = $this->app->DB->SelectArr("SELECT CONCAT(".$this->app->erp->FormatUCfirst('typ').",'-',id,'-',info) as objekt FROM fibu_objekte WHERE info LIKE '%$term%' LIMIT 20");
|
||||||
|
$carr = !empty($arr)?count($arr):0;
|
||||||
|
for($i = 0; $i < $carr; $i++)
|
||||||
|
$newarr[] = $arr[$i]['objekt'];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "fibu_belege":
|
||||||
|
$arr = $this->app->DB->SelectArr("SELECT CONCAT(".$this->app->erp->FormatUCfirst('typ').",'-',id,'-',info) as objekt FROM fibu_objekte WHERE info LIKE '%$term%' AND typ IN ('auftrag','rechnung','gutschrift','verbindlichkeit') LIMIT 20");
|
||||||
|
$carr = !empty($arr)?count($arr):0;
|
||||||
|
for($i = 0; $i < $carr; $i++)
|
||||||
|
$newarr[] = $arr[$i]['objekt'];
|
||||||
|
break;
|
||||||
|
|
||||||
case "vpeartikel":
|
case "vpeartikel":
|
||||||
$arr = $this->app->DB->SelectArr("SELECT DISTINCT vpe FROM verkaufspreise WHERE geloescht=0 AND vpe LIKE '%$term%' ORDER by vpe");
|
$arr = $this->app->DB->SelectArr("SELECT DISTINCT vpe FROM verkaufspreise WHERE geloescht=0 AND vpe LIKE '%$term%' ORDER by vpe");
|
||||||
$carr = !empty($arr)?count($arr):0;
|
$carr = !empty($arr)?count($arr):0;
|
||||||
@@ -2465,7 +2485,7 @@ select a.kundennummer, (SELECT name FROM adresse a2 WHERE a2.kundennummer = a.ku
|
|||||||
$adresse = $this->app->DB->Select("SELECT id FROM adresse WHERE kundennummer = '".$kunde[0]."' AND kundennummer <> '' LIMIT 1");
|
$adresse = $this->app->DB->Select("SELECT id FROM adresse WHERE kundennummer = '".$kunde[0]."' AND kundennummer <> '' LIMIT 1");
|
||||||
}
|
}
|
||||||
$beleg = str_replace('kunden','',$filtername);
|
$beleg = str_replace('kunden','',$filtername);
|
||||||
$arr = $this->app->DB->SelectArr("SELECT CONCAT(id,' ',if(belegnr <> '',belegnr,'ENTWURF'),' ',kundennummer,' ',name) as name FROM $beleg WHERE (belegnr LIKE '%$term%' OR name LIKE '%$term%' OR kundennummer LIKE '$%term%') AND (status = 'angelegt' OR status = 'freigegeben')
|
$arr = $this->app->DB->SelectArr("SELECT CONCAT(belegnr,' ',kundennummer,' ',name) as name FROM $beleg WHERE (belegnr <> '') AND (belegnr LIKE '%$term%' OR name LIKE '%$term%' OR kundennummer LIKE '$%term%') AND (status IN ('angelegt','freigegeben','versendet'))
|
||||||
".($adresse?" AND adresse = '$adresse' ":'')." ".$this->app->erp->ProjektRechte('projekt')."
|
".($adresse?" AND adresse = '$adresse' ":'')." ".$this->app->erp->ProjektRechte('projekt')."
|
||||||
ORDER by belegnr LIMIT 20");
|
ORDER by belegnr LIMIT 20");
|
||||||
$carr = !empty($arr)?count($arr):0;
|
$carr = !empty($arr)?count($arr):0;
|
||||||
|
|||||||
+13
-14
@@ -907,14 +907,14 @@ class Artikel extends GenArtikel {
|
|||||||
$defaultorder = 7;
|
$defaultorder = 7;
|
||||||
|
|
||||||
// headings
|
// headings
|
||||||
$heading = array('Artikel', 'Nummer','Menge', 'Einheit', 'Lager', 'Reserviert', 'Menü');
|
$heading = array('Artikel', 'Nummer','Referenz','Menge', 'Einheit', 'Lager', 'Reserviert', 'Menü');
|
||||||
$width = array('50%', '10%', '5%', '5%','5%', '5%', '9%');
|
$width = array('50%', '10%', '5%', '5%', '5%','5%', '5%', '9%');
|
||||||
$findcols = array('a.name_de', 'a.nummer', 's.menge','a.einheit',
|
$findcols = array('a.name_de', 'a.nummer','s.referenz', 's.menge','a.einheit',
|
||||||
'lag.menge', 'CASE WHEN (SELECT SUM(lr.menge) FROM lager_reserviert lr WHERE lr.artikel=a.id) > 0
|
'lag.menge', 'CASE WHEN (SELECT SUM(lr.menge) FROM lager_reserviert lr WHERE lr.artikel=a.id) > 0
|
||||||
THEN (SELECT SUM(lr.menge) FROM lager_reserviert lr WHERE lr.artikel=a.id)
|
THEN (SELECT SUM(lr.menge) FROM lager_reserviert lr WHERE lr.artikel=a.id)
|
||||||
ELSE 0
|
ELSE 0
|
||||||
END','id');
|
END','id');
|
||||||
$searchsql = array('a.name_de', 'a.nummer','a.einheit', 's.menge','s.art',"CONCAT(IF(s.art='' OR s.art='et','Einkaufsteil',''),IF(s.art='it','Informationsteil/Dienstleistung',''),IF(s.art='bt','Beistellung',''))");
|
$searchsql = array('a.name_de', 'a.nummer','s.referenz','a.einheit', 's.menge','s.art',"CONCAT(IF(s.art='' OR s.art='et','Einkaufsteil',''),IF(s.art='it','Informationsteil/Dienstleistung',''),IF(s.art='bt','Beistellung',''))");
|
||||||
|
|
||||||
$menu = "<table cellpadding=0 cellspacing=0>";
|
$menu = "<table cellpadding=0 cellspacing=0>";
|
||||||
$menu .= "<tr>";
|
$menu .= "<tr>";
|
||||||
@@ -932,19 +932,18 @@ class Artikel extends GenArtikel {
|
|||||||
|
|
||||||
$alignright = array(3,5,6);
|
$alignright = array(3,5,6);
|
||||||
// SQL statement
|
// SQL statement
|
||||||
$sql = "SELECT SQL_CALC_FOUND_ROWS s.id,
|
$sql = "SELECT SQL_CALC_FOUND_ROWS
|
||||||
|
s.id,
|
||||||
CONCAT('<a href=\"index.php?module=artikel&action=edit&id=',a.id,'\" target=\"_blank\">',a.name_de,'</a> ',
|
CONCAT('<a href=\"index.php?module=artikel&action=edit&id=',a.id,'\" target=\"_blank\">',a.name_de,'</a> ',
|
||||||
IF(s.art='it','<br><i style=color:#999>- Informationsteil/Dienstleistung</i>',''),IF(s.art='bt','<br><i style=color:#999>- Beistellung</i>',''), COALESCE((SELECT GROUP_CONCAT('<br><i style=color:#999>- ', art.nummer, ' ', art.name_de, ' (', alt.reason, ')', '</i>' SEPARATOR '') FROM parts_list_alternative AS alt INNER JOIN artikel AS art ON art.id = alt.alternative_article_id WHERE alt.parts_list_id = s.id), '')) as artikel,
|
IF(s.art='it','<br><i style=color:#999>- Informationsteil/Dienstleistung</i>',''),IF(s.art='bt','<br><i style=color:#999>- Beistellung</i>',''), COALESCE((SELECT GROUP_CONCAT('<br><i style=color:#999>- ', art.nummer, ' ', art.name_de, ' (', alt.reason, ')', '</i>' SEPARATOR '') FROM parts_list_alternative AS alt INNER JOIN artikel AS art ON art.id = alt.alternative_article_id WHERE alt.parts_list_id = s.id), '')) as artikel,
|
||||||
CONCAT('<a href=\"index.php?module=artikel&action=edit&id=',a.id,'\" target=\"_blank\">',a.nummer,'</a>') as nummer,
|
CONCAT('<a href=\"index.php?module=artikel&action=edit&id=',a.id,'\" target=\"_blank\">',a.nummer,'</a>') as nummer,
|
||||||
".$this->app->erp->FormatMenge('s.menge').' as menge, a.einheit,
|
s.referenz,
|
||||||
|
trim(s.menge)+0 as menge, a.einheit,
|
||||||
'.$this->app->erp->FormatMenge('ifnull(lag.menge,0)').' as lager,
|
".$this->app->erp->FormatMenge('ifnull(lag.menge,0)').' as lager,
|
||||||
|
|
||||||
CASE WHEN (SELECT SUM(lr.menge) FROM lager_reserviert lr WHERE lr.artikel=a.id) > 0
|
CASE WHEN (SELECT SUM(lr.menge) FROM lager_reserviert lr WHERE lr.artikel=a.id) > 0
|
||||||
THEN (SELECT '.$this->app->erp->FormatMenge('SUM(lr.menge)')." FROM lager_reserviert lr WHERE lr.artikel=a.id)
|
THEN (SELECT '.$this->app->erp->FormatMenge('SUM(lr.menge)')." FROM lager_reserviert lr WHERE lr.artikel=a.id)
|
||||||
ELSE 0
|
ELSE 0
|
||||||
END as reserviert,
|
END as reserviert,
|
||||||
|
|
||||||
s.id as menu
|
s.id as menu
|
||||||
FROM stueckliste s
|
FROM stueckliste s
|
||||||
INNER JOIN artikel a ON s.artikel=a.id
|
INNER JOIN artikel a ON s.artikel=a.id
|
||||||
@@ -6090,7 +6089,7 @@ class Artikel extends GenArtikel {
|
|||||||
|
|
||||||
$stueck = $this->app->erp->ArtikelAnzahlLagerStueckliste($id);
|
$stueck = $this->app->erp->ArtikelAnzahlLagerStueckliste($id);
|
||||||
|
|
||||||
$this->ArtikelStuecklisteImport('TAB3');
|
// $this->ArtikelStuecklisteImport('TAB3');
|
||||||
$url = 'index.php?module=artikel&action=stueckliste&cmd=getbaum&id='.$id;
|
$url = 'index.php?module=artikel&action=stueckliste&cmd=getbaum&id='.$id;
|
||||||
$this->app->Tpl->Set('URL',$url);
|
$this->app->Tpl->Set('URL',$url);
|
||||||
$this->app->Tpl->Add('TAB1',"<center>");
|
$this->app->Tpl->Add('TAB1',"<center>");
|
||||||
@@ -6255,8 +6254,8 @@ class Artikel extends GenArtikel {
|
|||||||
{
|
{
|
||||||
$id = $this->app->Secure->GetGET('id');
|
$id = $this->app->Secure->GetGET('id');
|
||||||
if($id > 0){
|
if($id > 0){
|
||||||
$result = $this->app->DB->SelectArr("SELECT a.nummer, a.name_de, a.hersteller,a.herstellernummer, REPLACE(TRIM(s.menge)+0,'.',',') as menge, s.referenz, s.place, s.layer, s.wert, s.bauform, s.zachse,s.xpos, s.ypos, s.art FROM stueckliste s
|
$sql = "SELECT avon.nummer as stuecklistevon, a.nummer, a.name_de, a.hersteller,a.herstellernummer, REPLACE(TRIM(s.menge)+0,'.',',') as menge, s.referenz, s.place, s.layer, s.wert, s.bauform, s.zachse,s.xpos, s.ypos, s.art FROM stueckliste s LEFT JOIN artikel a ON a.id=s.artikel LEFT JOIN artikel avon ON avon.id=s.stuecklistevonartikel WHERE s.stuecklistevonartikel='$id'";
|
||||||
LEFT JOIN artikel a ON a.id=s.artikel WHERE s.stuecklistevonartikel='$id'");
|
$result = $this->app->DB->SelectArr($sql);
|
||||||
}
|
}
|
||||||
header('Content-type: text/csv');
|
header('Content-type: text/csv');
|
||||||
header('Content-Disposition: attachment; filename=file.csv');
|
header('Content-Disposition: attachment; filename=file.csv');
|
||||||
@@ -6322,7 +6321,7 @@ class Artikel extends GenArtikel {
|
|||||||
|
|
||||||
$id = (int)$this->app->Secure->GetPOST('id');
|
$id = (int)$this->app->Secure->GetPOST('id');
|
||||||
|
|
||||||
$data = $this->app->DB->SelectRow('SELECT s.id, s.artikel, '.$this->app->erp->FormatMenge("s.menge")." as menge, s.art, s.referenz, s.layer, s.place, s.wert, s.bauform, s.zachse, s.xpos, s.ypos FROM stueckliste s WHERE s.id = '$id' LIMIT 1");
|
$data = $this->app->DB->SelectRow("SELECT s.id, s.artikel, trim(s.menge)+0 as menge, s.art, s.referenz, s.layer, s.place, s.wert, s.bauform, s.zachse, s.xpos, s.ypos FROM stueckliste s WHERE s.id = '$id' LIMIT 1");
|
||||||
|
|
||||||
if($data){
|
if($data){
|
||||||
if($data['artikel'] == 0){
|
if($data['artikel'] == 0){
|
||||||
|
|||||||
@@ -122,7 +122,8 @@ class Artikelbaum
|
|||||||
|
|
||||||
public function ArtikelbaumList()
|
public function ArtikelbaumList()
|
||||||
{
|
{
|
||||||
$this->app->erp->MenuEintrag('index.php?module=artikelbaum&action=list','Übersicht');
|
$this->app->erp->MenuEintrag('index.php?module=artikelkategorien&action=list','Artikelkategorien');
|
||||||
|
$this->app->erp->MenuEintrag('index.php?module=artikelbaum&action=list','Artikelbaum');
|
||||||
$id = $this->app->Secure->GetGET('id');
|
$id = $this->app->Secure->GetGET('id');
|
||||||
$url = 'index.php?module=artikelbaum&action=baumajax&id='.$id;
|
$url = 'index.php?module=artikelbaum&action=baumajax&id='.$id;
|
||||||
$this->app->Tpl->Set('URL',$url);
|
$this->app->Tpl->Set('URL',$url);
|
||||||
|
|||||||
@@ -0,0 +1,249 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2022 OpenXE project
|
||||||
|
*/
|
||||||
|
|
||||||
|
use Xentral\Components\Database\Exception\QueryFailureException;
|
||||||
|
|
||||||
|
class Artikelkategorien {
|
||||||
|
|
||||||
|
function __construct($app, $intern = false) {
|
||||||
|
$this->app = $app;
|
||||||
|
if ($intern)
|
||||||
|
return;
|
||||||
|
|
||||||
|
$this->app->ActionHandlerInit($this);
|
||||||
|
$this->app->ActionHandler("list", "artikelkategorien_list");
|
||||||
|
$this->app->ActionHandler("create", "artikelkategorien_edit"); // This automatically adds a "New" button
|
||||||
|
$this->app->ActionHandler("edit", "artikelkategorien_edit");
|
||||||
|
$this->app->ActionHandler("delete", "artikelkategorien_delete");
|
||||||
|
$this->app->DefaultActionHandler("list");
|
||||||
|
$this->app->ActionHandlerListen($app);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function Install() {
|
||||||
|
/* Fill out manually later */
|
||||||
|
}
|
||||||
|
|
||||||
|
static function TableSearch(&$app, $name, $erlaubtevars) {
|
||||||
|
switch ($name) {
|
||||||
|
case "artikelkategorien_list":
|
||||||
|
$allowed['artikelkategorien_list'] = array('list');
|
||||||
|
$heading = array('','','Bezeichnung', 'Projekt','Gelöscht', 'Menü');
|
||||||
|
$width = array('1%','1%','30%','10%','1%','1%'); // Fill out manually later
|
||||||
|
|
||||||
|
// columns that are aligned right (numbers etc)
|
||||||
|
// $alignright = array(4,5,6,7,8);
|
||||||
|
|
||||||
|
$findcols = array('a.id','a.id','a.bezeichnung', 'a.projekt');
|
||||||
|
$searchsql = array('a.bezeichnung');
|
||||||
|
|
||||||
|
$defaultorder = 1;
|
||||||
|
$defaultorderdesc = 0;
|
||||||
|
|
||||||
|
$dropnbox = "'<img src=./themes/new/images/details_open.png class=details>' AS `open`, CONCAT('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',a.id,'\" />') AS `auswahl`";
|
||||||
|
|
||||||
|
$menu = "<table cellpadding=0 cellspacing=0><tr><td nowrap>" . "<a href=\"index.php?module=artikelkategorien&action=edit&id=%value%\"><img src=\"./themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a> <a href=\"#\" onclick=DeleteDialog(\"index.php?module=artikelkategorien&action=delete&id=%value%\");>" . "<img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"></a>" . "</td></tr></table>";
|
||||||
|
|
||||||
|
$sql = "SELECT SQL_CALC_FOUND_ROWS a.id, $dropnbox, a.bezeichnung, p.abkuerzung, a.geloescht, a.id FROM artikelkategorien a LEFT JOIN projekt p ON a.projekt = p.id";
|
||||||
|
|
||||||
|
$where = "1";
|
||||||
|
$count = "SELECT count(DISTINCT id) FROM artikelkategorien WHERE $where";
|
||||||
|
// $groupby = "";
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$erg = false;
|
||||||
|
|
||||||
|
foreach ($erlaubtevars as $k => $v) {
|
||||||
|
if (isset($$v)) {
|
||||||
|
$erg[$v] = $$v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $erg;
|
||||||
|
}
|
||||||
|
|
||||||
|
function artikelkategorien_list() {
|
||||||
|
$this->app->erp->MenuEintrag("index.php?module=artikelkategorien&action=list", "Übersicht");
|
||||||
|
$this->app->erp->MenuEintrag("index.php?module=artikelkategorien&action=create", "Neu anlegen");
|
||||||
|
$this->app->erp->MenuEintrag("index.php?module=artikelbaum&action=list", "Artikelbaum");
|
||||||
|
|
||||||
|
// $this->app->erp->MenuEintrag("index.php", "Zurück");
|
||||||
|
|
||||||
|
$this->app->YUI->TableSearch('TAB1', 'artikelkategorien_list', "show", "", "", basename(__FILE__), __CLASS__);
|
||||||
|
$this->app->Tpl->Parse('PAGE', "artikelkategorien_list.tpl");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function artikelkategorien_delete() {
|
||||||
|
$id = (int) $this->app->Secure->GetGET('id');
|
||||||
|
|
||||||
|
$this->app->DB->Delete("DELETE FROM `artikelkategorien` WHERE `id` = '{$id}'");
|
||||||
|
$this->app->Tpl->Set('MESSAGE', "<div class=\"error\">Der Eintrag wurde gelöscht.</div>");
|
||||||
|
|
||||||
|
$this->artikelkategorien_list();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Edit artikelkategorien item
|
||||||
|
* If id is empty, create a new one
|
||||||
|
*/
|
||||||
|
|
||||||
|
function artikelkategorien_edit() {
|
||||||
|
$id = $this->app->Secure->GetGET('id');
|
||||||
|
|
||||||
|
// Check if other users are editing this id
|
||||||
|
if($this->app->erp->DisableModul('artikel',$id))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->app->Tpl->Set('ID', $id);
|
||||||
|
|
||||||
|
$this->app->erp->MenuEintrag("index.php?module=artikelkategorien&action=edit&id=$id", "Details");
|
||||||
|
$this->app->erp->MenuEintrag("index.php?module=artikelkategorien&action=list", "Zurück zur Übersicht");
|
||||||
|
$id = $this->app->Secure->GetGET('id');
|
||||||
|
$input = $this->GetInput();
|
||||||
|
$submit = $this->app->Secure->GetPOST('submit');
|
||||||
|
|
||||||
|
if (empty($id)) {
|
||||||
|
// New item
|
||||||
|
$id = 'NULL';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($submit != '')
|
||||||
|
{
|
||||||
|
|
||||||
|
// Write to database
|
||||||
|
|
||||||
|
// Add checks here
|
||||||
|
$input['projekt'] = $this->app->erp->ReplaceProjekt(true,$input['projekt'],true); // Parameters: Target db?, value, from form?
|
||||||
|
|
||||||
|
$columns = "id, ";
|
||||||
|
$values = "$id, ";
|
||||||
|
$update = "";
|
||||||
|
|
||||||
|
$fix = "";
|
||||||
|
|
||||||
|
foreach ($input as $key => $value) {
|
||||||
|
$columns = $columns.$fix.$key;
|
||||||
|
$values = $values.$fix."'".$value."'";
|
||||||
|
$update = $update.$fix.$key." = '$value'";
|
||||||
|
|
||||||
|
$fix = ", ";
|
||||||
|
}
|
||||||
|
|
||||||
|
// echo($columns."<br>");
|
||||||
|
// echo($values."<br>");
|
||||||
|
// echo($update."<br>");
|
||||||
|
|
||||||
|
$sql = "INSERT INTO artikelkategorien (".$columns.") VALUES (".$values.") ON DUPLICATE KEY UPDATE ".$update;
|
||||||
|
|
||||||
|
// echo($sql);
|
||||||
|
|
||||||
|
$this->app->DB->Update($sql);
|
||||||
|
|
||||||
|
if ($id == 'NULL') {
|
||||||
|
$msg = $this->app->erp->base64_url_encode("<div class=\"success\">Das Element wurde erfolgreich angelegt.</div>");
|
||||||
|
header("Location: index.php?module=artikelkategorien&action=list&msg=$msg");
|
||||||
|
} else {
|
||||||
|
$this->app->Tpl->Set('MESSAGE', "<div class=\"success\">Die Einstellungen wurden erfolgreich übernommen.</div>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Load values again from database
|
||||||
|
$dropnbox = "'<img src=./themes/new/images/details_open.png class=details>' AS `open`, CONCAT('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',a.id,'\" />') AS `auswahl`";
|
||||||
|
$result = $this->app->DB->SelectArr("SELECT SQL_CALC_FOUND_ROWS a.id, $dropnbox, a.bezeichnung, a.next_nummer, a.projekt, a.geloescht, a.externenummer, a.parent, a.steuer_erloese_inland_normal, a.steuer_aufwendung_inland_normal, a.steuer_erloese_inland_ermaessigt, a.steuer_aufwendung_inland_ermaessigt, a.steuer_erloese_inland_steuerfrei, a.steuer_aufwendung_inland_steuerfrei, a.steuer_erloese_inland_innergemeinschaftlich, a.steuer_aufwendung_inland_innergemeinschaftlich, a.steuer_erloese_inland_eunormal, a.steuer_erloese_inland_nichtsteuerbar, a.steuer_erloese_inland_euermaessigt, a.steuer_aufwendung_inland_nichtsteuerbar, a.steuer_aufwendung_inland_eunormal, a.steuer_aufwendung_inland_euermaessigt, a.steuer_erloese_inland_export, a.steuer_aufwendung_inland_import, a.steuertext_innergemeinschaftlich, a.steuertext_export, a.id FROM artikelkategorien a"." WHERE id=$id");
|
||||||
|
|
||||||
|
foreach ($result[0] as $key => $value) {
|
||||||
|
$this->app->Tpl->Set(strtoupper($key), $value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Add displayed items later
|
||||||
|
*
|
||||||
|
|
||||||
|
$this->app->Tpl->Add('KURZUEBERSCHRIFT2', $email);
|
||||||
|
$this->app->Tpl->Add('EMAIL', $email);
|
||||||
|
$this->app->Tpl->Add('ANGEZEIGTERNAME', $angezeigtername);
|
||||||
|
*/
|
||||||
|
|
||||||
|
$this->app->Tpl->Set('PROJEKT',$this->app->erp->ReplaceProjekt(false,$result[0]['projekt'],false)); // Parameters: Target db?, value, from form?
|
||||||
|
$this->app->YUI->AutoComplete('projekt', 'projektname', 1);
|
||||||
|
|
||||||
|
// $this->SetInput($input);
|
||||||
|
$this->app->Tpl->Parse('PAGE', "artikelkategorien_edit.tpl");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all paramters from html form and save into $input
|
||||||
|
*/
|
||||||
|
public function GetInput(): array {
|
||||||
|
$input = array();
|
||||||
|
//$input['EMAIL'] = $this->app->Secure->GetPOST('email');
|
||||||
|
|
||||||
|
$input['bezeichnung'] = $this->app->Secure->GetPOST('bezeichnung');
|
||||||
|
$input['next_nummer'] = $this->app->Secure->GetPOST('next_nummer');
|
||||||
|
$input['projekt'] = $this->app->Secure->GetPOST('projekt');
|
||||||
|
$input['geloescht'] = $this->app->Secure->GetPOST('geloescht');
|
||||||
|
$input['externenummer'] = $this->app->Secure->GetPOST('externenummer');
|
||||||
|
$input['parent'] = $this->app->Secure->GetPOST('parent');
|
||||||
|
$input['steuer_erloese_inland_normal'] = $this->app->Secure->GetPOST('steuer_erloese_inland_normal');
|
||||||
|
$input['steuer_aufwendung_inland_normal'] = $this->app->Secure->GetPOST('steuer_aufwendung_inland_normal');
|
||||||
|
$input['steuer_erloese_inland_ermaessigt'] = $this->app->Secure->GetPOST('steuer_erloese_inland_ermaessigt');
|
||||||
|
$input['steuer_aufwendung_inland_ermaessigt'] = $this->app->Secure->GetPOST('steuer_aufwendung_inland_ermaessigt');
|
||||||
|
$input['steuer_erloese_inland_steuerfrei'] = $this->app->Secure->GetPOST('steuer_erloese_inland_steuerfrei');
|
||||||
|
$input['steuer_aufwendung_inland_steuerfrei'] = $this->app->Secure->GetPOST('steuer_aufwendung_inland_steuerfrei');
|
||||||
|
$input['steuer_erloese_inland_innergemeinschaftlich'] = $this->app->Secure->GetPOST('steuer_erloese_inland_innergemeinschaftlich');
|
||||||
|
$input['steuer_aufwendung_inland_innergemeinschaftlich'] = $this->app->Secure->GetPOST('steuer_aufwendung_inland_innergemeinschaftlich');
|
||||||
|
$input['steuer_erloese_inland_eunormal'] = $this->app->Secure->GetPOST('steuer_erloese_inland_eunormal');
|
||||||
|
$input['steuer_erloese_inland_nichtsteuerbar'] = $this->app->Secure->GetPOST('steuer_erloese_inland_nichtsteuerbar');
|
||||||
|
$input['steuer_erloese_inland_euermaessigt'] = $this->app->Secure->GetPOST('steuer_erloese_inland_euermaessigt');
|
||||||
|
$input['steuer_aufwendung_inland_nichtsteuerbar'] = $this->app->Secure->GetPOST('steuer_aufwendung_inland_nichtsteuerbar');
|
||||||
|
$input['steuer_aufwendung_inland_eunormal'] = $this->app->Secure->GetPOST('steuer_aufwendung_inland_eunormal');
|
||||||
|
$input['steuer_aufwendung_inland_euermaessigt'] = $this->app->Secure->GetPOST('steuer_aufwendung_inland_euermaessigt');
|
||||||
|
$input['steuer_erloese_inland_export'] = $this->app->Secure->GetPOST('steuer_erloese_inland_export');
|
||||||
|
$input['steuer_aufwendung_inland_import'] = $this->app->Secure->GetPOST('steuer_aufwendung_inland_import');
|
||||||
|
$input['steuertext_innergemeinschaftlich'] = $this->app->Secure->GetPOST('steuertext_innergemeinschaftlich');
|
||||||
|
$input['steuertext_export'] = $this->app->Secure->GetPOST('steuertext_export');
|
||||||
|
|
||||||
|
|
||||||
|
return $input;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set all fields in the page corresponding to $input
|
||||||
|
*/
|
||||||
|
function SetInput($input) {
|
||||||
|
// $this->app->Tpl->Set('EMAIL', $input['email']);
|
||||||
|
|
||||||
|
$this->app->Tpl->Set('BEZEICHNUNG', $input['bezeichnung']);
|
||||||
|
$this->app->Tpl->Set('NEXT_NUMMER', $input['next_nummer']);
|
||||||
|
$this->app->Tpl->Set('PROJEKT', $input['projekt']);
|
||||||
|
$this->app->Tpl->Set('GELOESCHT', $input['geloescht']);
|
||||||
|
$this->app->Tpl->Set('EXTERNENUMMER', $input['externenummer']);
|
||||||
|
$this->app->Tpl->Set('PARENT', $input['parent']);
|
||||||
|
$this->app->Tpl->Set('STEUER_ERLOESE_INLAND_NORMAL', $input['steuer_erloese_inland_normal']);
|
||||||
|
$this->app->Tpl->Set('STEUER_AUFWENDUNG_INLAND_NORMAL', $input['steuer_aufwendung_inland_normal']);
|
||||||
|
$this->app->Tpl->Set('STEUER_ERLOESE_INLAND_ERMAESSIGT', $input['steuer_erloese_inland_ermaessigt']);
|
||||||
|
$this->app->Tpl->Set('STEUER_AUFWENDUNG_INLAND_ERMAESSIGT', $input['steuer_aufwendung_inland_ermaessigt']);
|
||||||
|
$this->app->Tpl->Set('STEUER_ERLOESE_INLAND_STEUERFREI', $input['steuer_erloese_inland_steuerfrei']);
|
||||||
|
$this->app->Tpl->Set('STEUER_AUFWENDUNG_INLAND_STEUERFREI', $input['steuer_aufwendung_inland_steuerfrei']);
|
||||||
|
$this->app->Tpl->Set('STEUER_ERLOESE_INLAND_INNERGEMEINSCHAFTLICH', $input['steuer_erloese_inland_innergemeinschaftlich']);
|
||||||
|
$this->app->Tpl->Set('STEUER_AUFWENDUNG_INLAND_INNERGEMEINSCHAFTLICH', $input['steuer_aufwendung_inland_innergemeinschaftlich']);
|
||||||
|
$this->app->Tpl->Set('STEUER_ERLOESE_INLAND_EUNORMAL', $input['steuer_erloese_inland_eunormal']);
|
||||||
|
$this->app->Tpl->Set('STEUER_ERLOESE_INLAND_NICHTSTEUERBAR', $input['steuer_erloese_inland_nichtsteuerbar']);
|
||||||
|
$this->app->Tpl->Set('STEUER_ERLOESE_INLAND_EUERMAESSIGT', $input['steuer_erloese_inland_euermaessigt']);
|
||||||
|
$this->app->Tpl->Set('STEUER_AUFWENDUNG_INLAND_NICHTSTEUERBAR', $input['steuer_aufwendung_inland_nichtsteuerbar']);
|
||||||
|
$this->app->Tpl->Set('STEUER_AUFWENDUNG_INLAND_EUNORMAL', $input['steuer_aufwendung_inland_eunormal']);
|
||||||
|
$this->app->Tpl->Set('STEUER_AUFWENDUNG_INLAND_EUERMAESSIGT', $input['steuer_aufwendung_inland_euermaessigt']);
|
||||||
|
$this->app->Tpl->Set('STEUER_ERLOESE_INLAND_EXPORT', $input['steuer_erloese_inland_export']);
|
||||||
|
$this->app->Tpl->Set('STEUER_AUFWENDUNG_INLAND_IMPORT', $input['steuer_aufwendung_inland_import']);
|
||||||
|
$this->app->Tpl->Set('STEUERTEXT_INNERGEMEINSCHAFTLICH', $input['steuertext_innergemeinschaftlich']);
|
||||||
|
$this->app->Tpl->Set('STEUERTEXT_EXPORT', $input['steuertext_export']);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+155
-10
@@ -848,7 +848,7 @@ class Auftrag extends GenAuftrag
|
|||||||
FROM auftrag auf
|
FROM auftrag auf
|
||||||
INNER JOIN auftrag_position ON auf.id = auftrag_position.auftrag
|
INNER JOIN auftrag_position ON auf.id = auftrag_position.auftrag
|
||||||
INNER JOIN artikel ON auftrag_position.artikel = artikel.id
|
INNER JOIN artikel ON auftrag_position.artikel = artikel.id
|
||||||
WHERE auf.status <> 'abgeschlossen' AND auf.belegnr <> ''
|
WHERE auf.status NOT IN ('abgeschlossen','storniert') AND auf.belegnr <> ''
|
||||||
ORDER BY urspruengliches_lieferdatum ASC, auf.belegnr ASC, auftrag_position.sort ASC
|
ORDER BY urspruengliches_lieferdatum ASC, auf.belegnr ASC, auftrag_position.sort ASC
|
||||||
) a";
|
) a";
|
||||||
|
|
||||||
@@ -1990,8 +1990,52 @@ class Auftrag extends GenAuftrag
|
|||||||
$gebuchtezeit = str_replace(".", ",", round($gebuchtezeit,2));
|
$gebuchtezeit = str_replace(".", ",", round($gebuchtezeit,2));
|
||||||
}
|
}
|
||||||
$summebrutto = $this->app->DB->Select("SELECT gesamtsumme FROM auftrag WHERE id='$id' LIMIT 1");
|
$summebrutto = $this->app->DB->Select("SELECT gesamtsumme FROM auftrag WHERE id='$id' LIMIT 1");
|
||||||
$this->app->Tpl->Set('DECKUNGSBEITRAG',0);
|
|
||||||
$this->app->Tpl->Set('DBPROZENT',0);
|
// Deckungsbeitrag
|
||||||
|
if (!$this->app->erp->RechteVorhanden('auftrag','einkaufspreise')) {
|
||||||
|
$this->app->Tpl->Set('DBHIDDEN','hidden');
|
||||||
|
} else {
|
||||||
|
$sql = "
|
||||||
|
SELECT
|
||||||
|
umsatz_netto_gesamt,
|
||||||
|
artikel,
|
||||||
|
menge,
|
||||||
|
einkaufspreis
|
||||||
|
FROM
|
||||||
|
`auftrag_position`
|
||||||
|
WHERE
|
||||||
|
`auftrag` = ".$id."
|
||||||
|
";
|
||||||
|
|
||||||
|
$positionen = $this->app->DB->SelectArr($sql);
|
||||||
|
|
||||||
|
$umsatz_gesamt = 0;
|
||||||
|
$kosten_gesamt = 0;
|
||||||
|
$db_gesamt = 0;
|
||||||
|
foreach ($positionen as $position) {
|
||||||
|
if (empty($position['einkaufspreis'])) {
|
||||||
|
$position['einkaufspreis'] = $this->app->erp->GetEinkaufspreis($position['artikel'],$position['menge']);
|
||||||
|
}
|
||||||
|
$kosten = ($position['einkaufspreis']*$position['menge']);
|
||||||
|
$db_gesamt += $position['umsatz_netto_gesamt']-$kosten;
|
||||||
|
$kosten_gesamt += $kosten;
|
||||||
|
$umsatz_gesamt += $position['umsatz_netto_gesamt'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->app->Tpl->Set('NETTOGESAMT',$this->app->erp->number_format_variable($umsatz_gesamt,2));
|
||||||
|
$this->app->Tpl->Set('KOSTEN',$this->app->erp->number_format_variable($kosten_gesamt,2));
|
||||||
|
$this->app->Tpl->Set('DECKUNGSBEITRAG',$this->app->erp->number_format_variable($db_gesamt,2));
|
||||||
|
$this->app->Tpl->Set( 'DBPROZENT',
|
||||||
|
$umsatz_gesamt==0?
|
||||||
|
"-":
|
||||||
|
$this->app->erp->number_format_variable(
|
||||||
|
round(
|
||||||
|
$db_gesamt/$umsatz_gesamt*100,2
|
||||||
|
)
|
||||||
|
)."%"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
$this->app->Tpl->Set('GEBUCHTEZEIT',0);
|
$this->app->Tpl->Set('GEBUCHTEZEIT',0);
|
||||||
|
|
||||||
if($auftragArr[0]['ust_befreit']==0){
|
if($auftragArr[0]['ust_befreit']==0){
|
||||||
@@ -2270,7 +2314,7 @@ class Auftrag extends GenAuftrag
|
|||||||
}
|
}
|
||||||
$this->app->Tpl->Set('PREISANFRAGE', implode('<br />', $priceRequestsHtml));
|
$this->app->Tpl->Set('PREISANFRAGE', implode('<br />', $priceRequestsHtml));
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
$tmpVersand = !$hasDeliveryNotes?[]: $this->app->DB->SelectFirstCols(
|
$tmpVersand = !$hasDeliveryNotes?[]: $this->app->DB->SelectFirstCols(
|
||||||
"SELECT if(v.versendet_am!='0000-00-00',
|
"SELECT if(v.versendet_am!='0000-00-00',
|
||||||
CONCAT(DATE_FORMAT( v.versendet_am,'%d.%m.%Y'),' ',v.versandunternehmen),
|
CONCAT(DATE_FORMAT( v.versendet_am,'%d.%m.%Y'),' ',v.versandunternehmen),
|
||||||
@@ -2353,6 +2397,39 @@ class Auftrag extends GenAuftrag
|
|||||||
else {
|
else {
|
||||||
$this->app->Tpl->Set('TRACKING',$tmpVersand);
|
$this->app->Tpl->Set('TRACKING',$tmpVersand);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
$sql = "SELECT SQL_CALC_FOUND_ROWS
|
||||||
|
v.id,
|
||||||
|
v.tracking as tracking,
|
||||||
|
v.tracking_link
|
||||||
|
FROM
|
||||||
|
versandpakete v
|
||||||
|
LEFT JOIN
|
||||||
|
versandpaket_lieferschein_position vlp ON v.id = vlp.versandpaket
|
||||||
|
LEFT JOIN
|
||||||
|
lieferschein_position lp ON lp.id = vlp.lieferschein_position
|
||||||
|
LEFT JOIN
|
||||||
|
lieferschein l ON lp.lieferschein = l.id
|
||||||
|
LEFT JOIN
|
||||||
|
lieferschein lop ON lop.id = v.lieferschein_ohne_pos
|
||||||
|
WHERE
|
||||||
|
l.auftragid = ".$id." OR lop.auftragid = ".$id."
|
||||||
|
GROUP BY
|
||||||
|
v.id
|
||||||
|
";
|
||||||
|
$tracking = $this->app->DB->SelectArr($sql);
|
||||||
|
|
||||||
|
$tracking_list = array();
|
||||||
|
foreach ($tracking as $single_tracking) {
|
||||||
|
$tracking_list[] = '<a href="index.php?module=versandpakete&action=edit&id='.$single_tracking['id'].'">Paket Nr.'.$single_tracking['id'].'</a>'.
|
||||||
|
' ('.'<a href="'.$single_tracking['tracking_link'].'">'.$single_tracking['tracking'].'</a>'.')';
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->app->Tpl->Set('TRACKING',implode('<br>',$tracking_list));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$icons = $this->app->YUI->IconsSQL();
|
$icons = $this->app->YUI->IconsSQL();
|
||||||
@@ -3182,6 +3259,11 @@ class Auftrag extends GenAuftrag
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->app->Tpl->Add(
|
||||||
|
'ZAHLUNGEN',
|
||||||
|
$this->AuftragZahlung(true)
|
||||||
|
);
|
||||||
|
|
||||||
// schaue ob es eine GS zu diesem Auftrag gibt
|
// schaue ob es eine GS zu diesem Auftrag gibt
|
||||||
// schaue ob es eine GS zu diesem Auftrag gibt
|
// schaue ob es eine GS zu diesem Auftrag gibt
|
||||||
//$gutschriftid = $this->app->DB->Select("SELECT id FROM gutschrift WHERE rechnungid='$rechnungid' LIMIT 1");
|
//$gutschriftid = $this->app->DB->Select("SELECT id FROM gutschrift WHERE rechnungid='$rechnungid' LIMIT 1");
|
||||||
@@ -3409,7 +3491,47 @@ class Auftrag extends GenAuftrag
|
|||||||
<tr><td><b>Lieferadresse:</b><br><br>$lieferadresse</td></tr></table>";
|
<tr><td><b>Lieferadresse:</b><br><br>$lieferadresse</td></tr></table>";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Build the html output for minidetail containing the payments
|
||||||
|
* @param bool $return
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function AuftragZahlung($return=false)
|
||||||
|
{
|
||||||
|
$id = $this->app->Secure->GetGET('id');
|
||||||
|
|
||||||
|
$zahlungen = $this->app->erp->GetZahlungen($id,'auftrag',true);
|
||||||
|
if (!empty($zahlungen)) {
|
||||||
|
$et = new EasyTable($this->app);
|
||||||
|
|
||||||
|
$et->headings = array('Datum','Beleg','Betrag','Währung');
|
||||||
|
|
||||||
|
foreach ($zahlungen as $zahlung) {
|
||||||
|
$row = array(
|
||||||
|
$zahlung['datum'],
|
||||||
|
"<a href=\"index.php?module=".$zahlung['doc_typ']."&action=edit&id=".$zahlung['doc_id']."\">
|
||||||
|
".ucfirst($zahlung['doc_typ'])."
|
||||||
|
".$zahlung['doc_info']."
|
||||||
|
</a>",
|
||||||
|
$zahlung['betrag'],
|
||||||
|
$zahlung['waehrung']
|
||||||
|
);
|
||||||
|
$et->AddRow($row);
|
||||||
|
}
|
||||||
|
|
||||||
|
$salden = $this->app->erp->GetSaldenDokument($id,'auftrag',true);
|
||||||
|
foreach ($salden as $saldo) {
|
||||||
|
$row = array(
|
||||||
|
'',
|
||||||
|
'<b>Saldo</b>',
|
||||||
|
"<b>".$saldo['betrag']."</b>",
|
||||||
|
"<b>".$saldo['waehrung']."</b>"
|
||||||
|
);
|
||||||
|
$et->AddRow($row);
|
||||||
|
}
|
||||||
|
return($et->DisplayNew('return',""));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function AuftragZahlungsmail()
|
function AuftragZahlungsmail()
|
||||||
{
|
{
|
||||||
@@ -4871,6 +4993,10 @@ class Auftrag extends GenAuftrag
|
|||||||
$this->app->erp->AdresseAlsLieferadresseButton($adresse);
|
$this->app->erp->AdresseAlsLieferadresseButton($adresse);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($schreibschutz != 1 AND $status != 'abgeschlossen') {
|
||||||
|
$this->app->erp->BerechneDeckungsbeitrag($id,'auftrag');
|
||||||
|
}
|
||||||
|
|
||||||
if($nummer!='') {
|
if($nummer!='') {
|
||||||
$this->app->Tpl->Set('NUMMER',$nummer);
|
$this->app->Tpl->Set('NUMMER',$nummer);
|
||||||
if($this->app->erp->RechteVorhanden('adresse','edit')){
|
if($this->app->erp->RechteVorhanden('adresse','edit')){
|
||||||
@@ -5649,9 +5775,14 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
|||||||
}
|
}
|
||||||
|
|
||||||
$this->app->DB->Update("UPDATE lieferschein SET
|
$this->app->DB->Update("UPDATE lieferschein SET
|
||||||
belegnr='$ls_belegnr', status='freigegeben', versand='".$this->app->User->GetDescription()."'
|
belegnr='$ls_belegnr',
|
||||||
|
status='freigegeben',
|
||||||
|
versand='".$this->app->User->GetDescription()."',
|
||||||
|
versand_status = 1
|
||||||
WHERE id='$lieferschein' LIMIT 1");
|
WHERE id='$lieferschein' LIMIT 1");
|
||||||
|
|
||||||
|
// Versand_status: 1 = process in versandpakete, 2 = finished, 3 = finished manually
|
||||||
|
|
||||||
$this->app->erp->LieferscheinProtokoll($lieferschein, 'Lieferschein freigegeben');
|
$this->app->erp->LieferscheinProtokoll($lieferschein, 'Lieferschein freigegeben');
|
||||||
|
|
||||||
if(!($kommissionierverfahren==='lieferscheinlager' ||
|
if(!($kommissionierverfahren==='lieferscheinlager' ||
|
||||||
@@ -5962,6 +6093,13 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check for override in adresse
|
||||||
|
$sql = "SELECT rechnung_anzahlpapier, rechnung_anzahlpapier_abweichend FROM adresse WHERE id =".$adresse;
|
||||||
|
$rechnung_anzahlpapier = $this->app->DB->SelectArr($sql);
|
||||||
|
if ($rechnung_anzahlpapier[0]['rechnung_anzahlpapier_abweichend']) {
|
||||||
|
$autodruckrechnungstufe1menge = $rechnung_anzahlpapier[0]['rechnung_anzahlpapier'];
|
||||||
|
}
|
||||||
|
|
||||||
if($exportdruckrechnungstufe1)
|
if($exportdruckrechnungstufe1)
|
||||||
{
|
{
|
||||||
if(!empty($projektarr))
|
if(!empty($projektarr))
|
||||||
@@ -5975,9 +6113,6 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
|||||||
$exportdruckrechnungstufe1 = $this->app->erp->Export($exportland);
|
$exportdruckrechnungstufe1 = $this->app->erp->Export($exportland);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(($autodruckrechnungstufe1=='1' || $exportdruckrechnungstufe1) && $rechnung > 0)
|
if(($autodruckrechnungstufe1=='1' || $exportdruckrechnungstufe1) && $rechnung > 0)
|
||||||
{
|
{
|
||||||
$this->app->DB->Update("UPDATE rechnung SET status='versendet', versendet='1',schreibschutz='1' WHERE id='$rechnung' LIMIT 1");
|
$this->app->DB->Update("UPDATE rechnung SET status='versendet', versendet='1',schreibschutz='1' WHERE id='$rechnung' LIMIT 1");
|
||||||
@@ -6293,7 +6428,7 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
|||||||
$this->app->erp->MenuEintrag('index.php?module=auftrag&action=list','Übersicht');
|
$this->app->erp->MenuEintrag('index.php?module=auftrag&action=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=offene','Offene Positionen');
|
$this->app->erp->MenuEintrag('index.php?module=auftrag&action=offene','Offene Positionen');
|
||||||
$this->app->erp->MenuEintrag('index.php?module=auftrag&action=versandzentrum','Versandzentrum');
|
$this->app->erp->MenuEintrag('index.php?module=auftrag&action=versandzentrum','Versandübergabe');
|
||||||
|
|
||||||
if(strlen($backurl)>5){
|
if(strlen($backurl)>5){
|
||||||
$this->app->erp->MenuEintrag("$backurl", 'Zurück zur Übersicht');
|
$this->app->erp->MenuEintrag("$backurl", 'Zurück zur Übersicht');
|
||||||
@@ -6338,7 +6473,7 @@ 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>');
|
$this->app->Tpl->Add('MESSAGE','<div class="info">Aufträge an Versand übergeben mit automatischem Druck und Mailversand. <a class="button" href="index.php?module=versandpakete&action=lieferungen">Zum Versand</a></div>');
|
||||||
|
|
||||||
$autoshipmentEnabled = true;
|
$autoshipmentEnabled = true;
|
||||||
$this->app->erp->RunHook('OrderAutoShipment', 2, $targetMessage, $autoshipmentEnabled);
|
$this->app->erp->RunHook('OrderAutoShipment', 2, $targetMessage, $autoshipmentEnabled);
|
||||||
@@ -6666,6 +6801,13 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
|||||||
|
|
||||||
public function AuftragList()
|
public function AuftragList()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
// refresh all open items
|
||||||
|
$openids = $this->app->DB->SelectArr("SELECT id from auftrag WHERE status <> 'abgeschlossen'");
|
||||||
|
foreach ($openids as $openid) {
|
||||||
|
$this->app->erp->AuftragAutoversandBerechnen($openid['id']);
|
||||||
|
}
|
||||||
|
|
||||||
if($this->app->Secure->GetPOST('ausfuehren') && $this->app->erp->RechteVorhanden('auftrag', 'edit'))
|
if($this->app->Secure->GetPOST('ausfuehren') && $this->app->erp->RechteVorhanden('auftrag', 'edit'))
|
||||||
{
|
{
|
||||||
$drucker = $this->app->Secure->GetPOST('seldrucker');
|
$drucker = $this->app->Secure->GetPOST('seldrucker');
|
||||||
@@ -7261,6 +7403,9 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
|||||||
$this->app->DB->Update($sql);
|
$this->app->DB->Update($sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->app->erp->AuftragProtokoll($id,"Teilauftrag $belegnr_neu erstellt");
|
||||||
|
$this->app->erp->PDFArchivieren('auftrag', $id, true);
|
||||||
|
|
||||||
header('Location: index.php?module=auftrag&action=edit&id='.$id_neu);
|
header('Location: index.php?module=auftrag&action=edit&id='.$id_neu);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -776,6 +776,7 @@ class Bestellung extends GenBestellung
|
|||||||
$tmp3->DisplayNew('PDFARCHIV','Menü',"noAction");
|
$tmp3->DisplayNew('PDFARCHIV','Menü',"noAction");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
$wareneingangsbelege = $this->app->DB->SelectFirstCols("SELECT
|
$wareneingangsbelege = $this->app->DB->SelectFirstCols("SELECT
|
||||||
CONCAT('<a href=\"index.php?module=receiptdocument&action=edit&id=',r.id,'\" target=\"_blank\"',if(r.status='storniert',' title=\"Wareneingangsbeleg storniert\"><s>','>'),if(r.document_number='0' OR document_number='','ENTWURF',r.document_number),if(r.status='storniert','</s>',''),'</a> <a href=\"index.php?module=receiptdocument&action=pdf&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/pdf.svg\" title=\"Wareneingangsbeleg PDF\" border=\"0\"></a>
|
CONCAT('<a href=\"index.php?module=receiptdocument&action=edit&id=',r.id,'\" target=\"_blank\"',if(r.status='storniert',' title=\"Wareneingangsbeleg storniert\"><s>','>'),if(r.document_number='0' OR document_number='','ENTWURF',r.document_number),if(r.status='storniert','</s>',''),'</a> <a href=\"index.php?module=receiptdocument&action=pdf&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/pdf.svg\" title=\"Wareneingangsbeleg PDF\" border=\"0\"></a>
|
||||||
<a href=\"index.php?module=receiptdocument&action=edit&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/edit.svg\" title=\"Wareneingangsbeleg bearbeiten\" border=\"0\"></a>') as wareneingangsbeleg
|
<a href=\"index.php?module=receiptdocument&action=edit&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/edit.svg\" title=\"Wareneingangsbeleg bearbeiten\" border=\"0\"></a>') as wareneingangsbeleg
|
||||||
@@ -787,6 +788,30 @@ class Bestellung extends GenBestellung
|
|||||||
else{
|
else{
|
||||||
$this->app->Tpl->Set('WARENEINGANGSBELEG', '-');
|
$this->app->Tpl->Set('WARENEINGANGSBELEG', '-');
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
$sql = "SELECT
|
||||||
|
CONCAT('<a href =\"index.php?module=wareneingang&action=distriinhalt&id=',pa.id,'\">',pa.id,'</a>') as wareneingang
|
||||||
|
FROM
|
||||||
|
paketannahme pa
|
||||||
|
INNER JOIN paketdistribution pd ON
|
||||||
|
pd.paketannahme = pa.id
|
||||||
|
INNER JOIN bestellung_position bp ON
|
||||||
|
pd.bestellung_position = bp.id
|
||||||
|
INNER JOIN bestellung b ON
|
||||||
|
b.id = bp.bestellung
|
||||||
|
WHERE
|
||||||
|
b.id = $id
|
||||||
|
GROUP BY
|
||||||
|
pa.id";
|
||||||
|
// echo($sql);
|
||||||
|
$wareneingangsbelege = $this->app->DB->SelectArr($sql);
|
||||||
|
if(!empty($wareneingangsbelege)){
|
||||||
|
$this->app->Tpl->Add('WARENEINGANGSBELEG', implode('<br />', array_column($wareneingangsbelege , 'wareneingang' )));
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$this->app->Tpl->Set('WARENEINGANGSBELEG', '-');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$this->app->Tpl->Set('ID', $id);
|
$this->app->Tpl->Set('ID', $id);
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Bearbeiter:</td>
|
<td>Bearbeiter:</td>
|
||||||
<td colspan="3"><input type="text" name="von" id="von" value="[SENDER]" style="width: 370px;"></td>
|
<td colspan="3"><input type="text" name="von" id="von" value="[BEARBEITER]" style="width: 370px;"></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="100">{|Projekt|}:</td>
|
<td width="100">{|Projekt|}:</td>
|
||||||
|
|||||||
@@ -0,0 +1,455 @@
|
|||||||
|
<div id="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#tabs-1"></a></li>
|
||||||
|
</ul>
|
||||||
|
<!-- Example for multiple tabs
|
||||||
|
<ul hidden">
|
||||||
|
<li><a href="#tabs-1">First Tab</a></li>
|
||||||
|
<li><a href="#tabs-2">Second Tab</a></li>
|
||||||
|
</ul>
|
||||||
|
-->
|
||||||
|
<div id="tabs-1">
|
||||||
|
[MESSAGE]
|
||||||
|
<form action="" method="post">
|
||||||
|
[FORMHANDLEREVENT]
|
||||||
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-12 col-md-12 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{|Artikelkategorien|}</legend><i>Info like this.</i>
|
||||||
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Bezeichnung|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="bezeichnung" id="bezeichnung" value="[BEZEICHNUNG]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Next_nummer|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="next_nummer" id="next_nummer" value="[NEXT_NUMMER]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Projekt|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="projekt" id="projekt" value="[PROJEKT]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Geloescht|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="geloescht" id="geloescht" value="[GELOESCHT]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Externenummer|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="externenummer" id="externenummer" value="[EXTERNENUMMER]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Parent|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="parent" id="parent" value="[PARENT]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_erloese_inland_normal|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_erloese_inland_normal" id="steuer_erloese_inland_normal" value="[STEUER_ERLOESE_INLAND_NORMAL]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_aufwendung_inland_normal|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_aufwendung_inland_normal" id="steuer_aufwendung_inland_normal" value="[STEUER_AUFWENDUNG_INLAND_NORMAL]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_erloese_inland_ermaessigt|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_erloese_inland_ermaessigt" id="steuer_erloese_inland_ermaessigt" value="[STEUER_ERLOESE_INLAND_ERMAESSIGT]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_aufwendung_inland_ermaessigt|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_aufwendung_inland_ermaessigt" id="steuer_aufwendung_inland_ermaessigt" value="[STEUER_AUFWENDUNG_INLAND_ERMAESSIGT]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_erloese_inland_steuerfrei|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_erloese_inland_steuerfrei" id="steuer_erloese_inland_steuerfrei" value="[STEUER_ERLOESE_INLAND_STEUERFREI]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_aufwendung_inland_steuerfrei|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_aufwendung_inland_steuerfrei" id="steuer_aufwendung_inland_steuerfrei" value="[STEUER_AUFWENDUNG_INLAND_STEUERFREI]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_erloese_inland_innergemeinschaftlich|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_erloese_inland_innergemeinschaftlich" id="steuer_erloese_inland_innergemeinschaftlich" value="[STEUER_ERLOESE_INLAND_INNERGEMEINSCHAFTLICH]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_aufwendung_inland_innergemeinschaftlich|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_aufwendung_inland_innergemeinschaftlich" id="steuer_aufwendung_inland_innergemeinschaftlich" value="[STEUER_AUFWENDUNG_INLAND_INNERGEMEINSCHAFTLICH]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_erloese_inland_eunormal|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_erloese_inland_eunormal" id="steuer_erloese_inland_eunormal" value="[STEUER_ERLOESE_INLAND_EUNORMAL]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_erloese_inland_nichtsteuerbar|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_erloese_inland_nichtsteuerbar" id="steuer_erloese_inland_nichtsteuerbar" value="[STEUER_ERLOESE_INLAND_NICHTSTEUERBAR]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_erloese_inland_euermaessigt|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_erloese_inland_euermaessigt" id="steuer_erloese_inland_euermaessigt" value="[STEUER_ERLOESE_INLAND_EUERMAESSIGT]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_aufwendung_inland_nichtsteuerbar|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_aufwendung_inland_nichtsteuerbar" id="steuer_aufwendung_inland_nichtsteuerbar" value="[STEUER_AUFWENDUNG_INLAND_NICHTSTEUERBAR]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_aufwendung_inland_eunormal|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_aufwendung_inland_eunormal" id="steuer_aufwendung_inland_eunormal" value="[STEUER_AUFWENDUNG_INLAND_EUNORMAL]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_aufwendung_inland_euermaessigt|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_aufwendung_inland_euermaessigt" id="steuer_aufwendung_inland_euermaessigt" value="[STEUER_AUFWENDUNG_INLAND_EUERMAESSIGT]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_erloese_inland_export|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_erloese_inland_export" id="steuer_erloese_inland_export" value="[STEUER_ERLOESE_INLAND_EXPORT]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_aufwendung_inland_import|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_aufwendung_inland_import" id="steuer_aufwendung_inland_import" value="[STEUER_AUFWENDUNG_INLAND_IMPORT]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuertext_innergemeinschaftlich|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuertext_innergemeinschaftlich" id="steuertext_innergemeinschaftlich" value="[STEUERTEXT_INNERGEMEINSCHAFTLICH]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuertext_export|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuertext_export" id="steuertext_export" value="[STEUERTEXT_EXPORT]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Example for 2nd row
|
||||||
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-12 col-md-12 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{|Another legend|}</legend>
|
||||||
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Bezeichnung|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="bezeichnung" id="bezeichnung" value="[BEZEICHNUNG]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Next_nummer|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="next_nummer" id="next_nummer" value="[NEXT_NUMMER]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Projekt|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="projekt" id="projekt" value="[PROJEKT]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Geloescht|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="geloescht" id="geloescht" value="[GELOESCHT]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Externenummer|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="externenummer" id="externenummer" value="[EXTERNENUMMER]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Parent|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="parent" id="parent" value="[PARENT]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_erloese_inland_normal|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_erloese_inland_normal" id="steuer_erloese_inland_normal" value="[STEUER_ERLOESE_INLAND_NORMAL]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_aufwendung_inland_normal|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_aufwendung_inland_normal" id="steuer_aufwendung_inland_normal" value="[STEUER_AUFWENDUNG_INLAND_NORMAL]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_erloese_inland_ermaessigt|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_erloese_inland_ermaessigt" id="steuer_erloese_inland_ermaessigt" value="[STEUER_ERLOESE_INLAND_ERMAESSIGT]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_aufwendung_inland_ermaessigt|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_aufwendung_inland_ermaessigt" id="steuer_aufwendung_inland_ermaessigt" value="[STEUER_AUFWENDUNG_INLAND_ERMAESSIGT]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_erloese_inland_steuerfrei|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_erloese_inland_steuerfrei" id="steuer_erloese_inland_steuerfrei" value="[STEUER_ERLOESE_INLAND_STEUERFREI]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_aufwendung_inland_steuerfrei|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_aufwendung_inland_steuerfrei" id="steuer_aufwendung_inland_steuerfrei" value="[STEUER_AUFWENDUNG_INLAND_STEUERFREI]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_erloese_inland_innergemeinschaftlich|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_erloese_inland_innergemeinschaftlich" id="steuer_erloese_inland_innergemeinschaftlich" value="[STEUER_ERLOESE_INLAND_INNERGEMEINSCHAFTLICH]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_aufwendung_inland_innergemeinschaftlich|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_aufwendung_inland_innergemeinschaftlich" id="steuer_aufwendung_inland_innergemeinschaftlich" value="[STEUER_AUFWENDUNG_INLAND_INNERGEMEINSCHAFTLICH]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_erloese_inland_eunormal|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_erloese_inland_eunormal" id="steuer_erloese_inland_eunormal" value="[STEUER_ERLOESE_INLAND_EUNORMAL]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_erloese_inland_nichtsteuerbar|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_erloese_inland_nichtsteuerbar" id="steuer_erloese_inland_nichtsteuerbar" value="[STEUER_ERLOESE_INLAND_NICHTSTEUERBAR]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_erloese_inland_euermaessigt|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_erloese_inland_euermaessigt" id="steuer_erloese_inland_euermaessigt" value="[STEUER_ERLOESE_INLAND_EUERMAESSIGT]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_aufwendung_inland_nichtsteuerbar|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_aufwendung_inland_nichtsteuerbar" id="steuer_aufwendung_inland_nichtsteuerbar" value="[STEUER_AUFWENDUNG_INLAND_NICHTSTEUERBAR]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_aufwendung_inland_eunormal|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_aufwendung_inland_eunormal" id="steuer_aufwendung_inland_eunormal" value="[STEUER_AUFWENDUNG_INLAND_EUNORMAL]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_aufwendung_inland_euermaessigt|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_aufwendung_inland_euermaessigt" id="steuer_aufwendung_inland_euermaessigt" value="[STEUER_AUFWENDUNG_INLAND_EUERMAESSIGT]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_erloese_inland_export|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_erloese_inland_export" id="steuer_erloese_inland_export" value="[STEUER_ERLOESE_INLAND_EXPORT]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuer_aufwendung_inland_import|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuer_aufwendung_inland_import" id="steuer_aufwendung_inland_import" value="[STEUER_AUFWENDUNG_INLAND_IMPORT]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuertext_innergemeinschaftlich|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuertext_innergemeinschaftlich" id="steuertext_innergemeinschaftlich" value="[STEUERTEXT_INNERGEMEINSCHAFTLICH]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Steuertext_export|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="steuertext_export" id="steuertext_export" value="[STEUERTEXT_EXPORT]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div> -->
|
||||||
|
<input type="submit" name="submit" value="Speichern" style="float:right"/>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<!-- Example for 2nd tab
|
||||||
|
<div id="tabs-2">
|
||||||
|
[MESSAGE]
|
||||||
|
<form action="" method="post">
|
||||||
|
[FORMHANDLEREVENT]
|
||||||
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-12 col-md-12 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{|...|}</legend>
|
||||||
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
|
...
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input type="submit" name="submit" value="Speichern" style="float:right"/>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
-->
|
||||||
|
</div>
|
||||||
|
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
<div id="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#tabs-1">[TABTEXT1]</a></li>
|
||||||
|
</ul>
|
||||||
|
<div id="tabs-1">
|
||||||
|
[MESSAGE]
|
||||||
|
[TAB1]
|
||||||
|
[TAB1NEXT]
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
<tr><td class="auftraginfo_cell">{|Bestellung|}:</td><td class="auftraginfo_cell" >[BESTELLUNG]</td><td class="auftraginfo_cell">{|Eigene Umsatzsteuer ID|}:</td><td class="auftraginfo_cell">[DELIVERYTHRESHOLDVATID]</td></tr>
|
<tr><td class="auftraginfo_cell">{|Bestellung|}:</td><td class="auftraginfo_cell" >[BESTELLUNG]</td><td class="auftraginfo_cell">{|Eigene Umsatzsteuer ID|}:</td><td class="auftraginfo_cell">[DELIVERYTHRESHOLDVATID]</td></tr>
|
||||||
<tr><td class="auftraginfo_cell">{|Retoure|}:</td><td class="auftraginfo_cell" >[RETOURE]</td><td class="auftraginfo_cell"></td><td class="auftraginfo_cell"></td></tr>
|
<tr><td class="auftraginfo_cell">{|Retoure|}:</td><td class="auftraginfo_cell" >[RETOURE]</td><td class="auftraginfo_cell"></td><td class="auftraginfo_cell"></td></tr>
|
||||||
<tr><td class="auftraginfo_cell">{|Preisanfrage|}:</td><td class="auftraginfo_cell" >[PREISANFRAGE]</td><td class="auftraginfo_cell"></td><td class="auftraginfo_cell"></td></tr>
|
<tr><td class="auftraginfo_cell">{|Preisanfrage|}:</td><td class="auftraginfo_cell" >[PREISANFRAGE]</td><td class="auftraginfo_cell"></td><td class="auftraginfo_cell"></td></tr>
|
||||||
<tr><td class="auftraginfo_cell">{|Tracking|}:</td><td class="auftraginfo_cell" >[TRACKING]</td><td class="auftraginfo_cell"></td><td class="auftraginfo_cell"></td></tr>
|
<tr><td class="auftraginfo_cell">{|Pakete|}:</td><td class="auftraginfo_cell" >[TRACKING]</td><td class="auftraginfo_cell"></td><td class="auftraginfo_cell"></td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
@@ -48,19 +48,14 @@
|
|||||||
<td style="" width="50%">[VERSANDTEXT]</td>
|
<td style="" width="50%">[VERSANDTEXT]</td>
|
||||||
[RMAENDIF]
|
[RMAENDIF]
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<div style="background-color:white">
|
<div style="background-color:white">
|
||||||
<div style="padding:10px">
|
<div style="padding:10px">
|
||||||
[RECHNUNGLIEFERADRESSE]
|
[RECHNUNGLIEFERADRESSE]
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div style="float:left; width:50%">
|
<div style="float:left; width:50%">
|
||||||
|
|
||||||
<div style="overflow:auto;max-height:550px;">
|
<div style="overflow:auto;max-height:550px;">
|
||||||
<div style="background-color:white;">
|
<div style="background-color:white;">
|
||||||
<h2 class="greyh2">Artikel</h2>
|
<h2 class="greyh2">Artikel</h2>
|
||||||
@@ -69,63 +64,55 @@
|
|||||||
<i style="color:#999">* Die linke Zahl zeigt die für den Kunden reservierten Einheiten und die rechte Zahl die global reservierte Anzahl.</i>
|
<i style="color:#999">* Die linke Zahl zeigt die für den Kunden reservierten Einheiten und die rechte Zahl die global reservierte Anzahl.</i>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
[MINIDETAILNACHARTIKEL]
|
[MINIDETAILNACHARTIKEL]
|
||||||
<!--
|
<div style="background-color:white" [DBHIDDEN]>
|
||||||
<div style="background-color:white;">
|
<h2 class="greyh2">{|Deckungsbeitrag (netto)|}</h2>
|
||||||
<h2 class="greyh2">Lieferkette</h2>
|
<table width="100%">
|
||||||
<div style="padding:10px">
|
<tbody>
|
||||||
<table class="mkTable">
|
<tr>
|
||||||
<tr><th>Art</th><th>Beleg</th><th>Datum</th><th>Lieferant</th><th>Status</th></tr>
|
<td>Umsatz EUR</td>
|
||||||
<tr><td>Bestellung</td><td>ENTWURF</td><td></td><td>In-Circuit<br>200 x 777777 SMT USBprog 1)</td><td>-</td></tr>
|
<td>Kosten EUR</td>
|
||||||
<tr><td>Anlieferung</td><td>200000</td><td></td><td>In-Circuit<br>200 x 777777 ATMEGA32</td><td>offen</td></tr>
|
<td>Deckungsbeitrag EUR</td>
|
||||||
<tr><td>Bestellung</td><td>100023</td><td></td><td>Instanet<br>200 x USBprog 5.0 Spezial Elektor<br>200 x 777777 Flashen + Montieren</td><td>offen</td></tr>
|
<td>DB %</td>
|
||||||
<tr><td>Anlieferung</td><td>200002</td><td></td><td>Instanet<br>200 x 777777 SMT USBprog 1)<br>200 x 122222 Gehäuse</td><td>offen</td></tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="greybox" width="25%">[NETTOGESAMT]</td>
|
||||||
|
<td class="greybox" width="25%">[KOSTEN]</td>
|
||||||
|
<td class="greybox" width="25%">[DECKUNGSBEITRAG]</td>
|
||||||
|
<td class="greybox" width="25%">[DBPROZENT]</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
-->
|
|
||||||
|
|
||||||
<div style="background-color:white">
|
<div style="background-color:white">
|
||||||
<h2 class="greyh2">{|Zahlungseingang|}</h2>
|
<h2 class="greyh2">{|Zahlungen|}</h2>
|
||||||
<div style="padding:10px">
|
<div style="padding:10px">
|
||||||
[ZAHLUNGEN]
|
[ZAHLUNGEN]
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="background-color:white">
|
<div style="background-color:white">
|
||||||
<h2 class="greyh2">{|Protokoll|}</h2>
|
<h2 class="greyh2">{|Protokoll|}</h2>
|
||||||
<div style="padding:10px;">
|
<div style="padding:10px;">
|
||||||
[PROTOKOLL]
|
[PROTOKOLL]
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
[VORPRODUKTIONPROTOKOLL]
|
[VORPRODUKTIONPROTOKOLL]
|
||||||
[PRODUKTIONPROTOKOLL]
|
[PRODUKTIONPROTOKOLL]
|
||||||
[NACHPRODUKTIONPROTOKOLL]
|
[NACHPRODUKTIONPROTOKOLL]
|
||||||
|
<!--
|
||||||
<div style="background-color:white">
|
<div style="background-color:white">
|
||||||
<h2 class="greyh2">{|RMA Prozess|}</h2>
|
<h2 class="greyh2">{|RMA Prozess|}</h2>
|
||||||
<div style="padding:10px">
|
<div style="padding:10px">
|
||||||
[RMA]
|
[RMA]
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
-->
|
||||||
<div style="background-color:white">
|
<div style="background-color:white">
|
||||||
<h2 class="greyh2">{|PDF-Archiv|}</h2>
|
<h2 class="greyh2">{|PDF-Archiv|}</h2>
|
||||||
<div style="padding:10px;overflow:auto;">
|
<div style="padding:10px;overflow:auto;">
|
||||||
[PDFARCHIV]
|
[PDFARCHIV]
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style="background-color:white">
|
|
||||||
<h2 class="greyh2">{|Deckungsbeitrag|}</h2>
|
|
||||||
<div style="padding:10px">
|
|
||||||
|
|
||||||
<div class="info">{|Dieses Modul ist erst ab Version Professional verfügbar|}</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
[INTERNEBEMERKUNGEDIT]
|
[INTERNEBEMERKUNGEDIT]
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
<div id="tabs">
|
<div id="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#tabs-1">Allgemein</a></li>
|
||||||
|
</ul>
|
||||||
<div id="tabs-1">
|
<div id="tabs-1">
|
||||||
[MESSAGE]
|
[MESSAGE]
|
||||||
<form action="" method="post">
|
<form action="" method="post">
|
||||||
@@ -11,11 +14,11 @@
|
|||||||
<legend>{|Einstellungen|}</legend>
|
<legend>{|Einstellungen|}</legend>
|
||||||
|
|
||||||
<td>{|Absatz berücksichtigen (Monate)|}:</td>
|
<td>{|Absatz berücksichtigen (Monate)|}:</td>
|
||||||
<td><input type="number" min="0" name="monate_absatz" id="monate_absatz" value="[MONATE_ABSATZ]" size="20""></td>
|
<td><input type="number" min="0" name="monate_absatz" id="monate_absatz" value="[MONATE_ABSATZ]" size="20"></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{|Vorausplanen (Monate)|}:</td>
|
<td>{|Vorausplanen (Monate)|}:</td>
|
||||||
<td><input type="number" min="0" name="monate_voraus" id="monate_voraus" value="[MONATE_VORAUS]" size="20""></td>
|
<td><input type="number" min="0" name="monate_voraus" id="monate_voraus" value="[MONATE_VORAUS]" size="20"></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|||||||
@@ -68,13 +68,13 @@
|
|||||||
<td width="25%" style="position:relative"><a href="index.php?module=versandarten&action=list"><img src="./themes/[THEME]/images/einstellungen/Icons_dunkel_16.gif" border="0" width="30%"></a></td>
|
<td width="25%" style="position:relative"><a href="index.php?module=versandarten&action=list"><img src="./themes/[THEME]/images/einstellungen/Icons_dunkel_16.gif" border="0" width="30%"></a></td>
|
||||||
<td width="25%" style="position:relative"><a href="index.php?module=zahlungsweisen&action=list"><img src="./themes/[THEME]/images/einstellungen/Icons_dunkel_16.gif" border="0" width="30%"></a></td>
|
<td width="25%" style="position:relative"><a href="index.php?module=zahlungsweisen&action=list"><img src="./themes/[THEME]/images/einstellungen/Icons_dunkel_16.gif" border="0" width="30%"></a></td>
|
||||||
<td width="25%" style="position:relative"><a [LIEFERBEDINGUNGENLINK]><img src="./themes/[THEME]/images/einstellungen/Icons_dunkel_16.gif" border="0" width="30%"></a>[GREYLIEFERBEDINGUNGEN]</td>
|
<td width="25%" style="position:relative"><a [LIEFERBEDINGUNGENLINK]><img src="./themes/[THEME]/images/einstellungen/Icons_dunkel_16.gif" border="0" width="30%"></a>[GREYLIEFERBEDINGUNGEN]</td>
|
||||||
<td width="25%"></td>
|
<td width="25%" style="position:relative"><a href="index.php?module=mahnwesen&action=einstellungen"><img src="./themes/[THEME]/images/einstellungen/Icons_dunkel_11.gif" border="0" width="30%"></a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr align="center">
|
<tr align="center">
|
||||||
<td><a href="index.php?module=versandarten&action=list">{|Versandarten|}</a></td>
|
<td><a href="index.php?module=versandarten&action=list">{|Versandarten|}</a></td>
|
||||||
<td><a href="index.php?module=zahlungsweisen&action=list">{|Zahlungsweisen|}</a></td>
|
<td><a href="index.php?module=zahlungsweisen&action=list">{|Zahlungsweisen|}</a></td>
|
||||||
<td><a [LIEFERBEDINGUNGENLINK]>{|Lieferbedingungen|}</a></td>
|
<td><a [LIEFERBEDINGUNGENLINK]>{|Lieferbedingungen|}</a></td>
|
||||||
<td></td>
|
<td><a href="index.php?module=mahnwesen&action=einstellungen">{|Mahnwesen|}</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -100,8 +100,8 @@
|
|||||||
<legend>{|Ticketsystem|}</legend>
|
<legend>{|Ticketsystem|}</legend>
|
||||||
<table width="100%" border="0" class="mkTableFormular">
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
<tr><td>{|ticket|}:</td><td><input type="text" name="ticket" value="[TICKET]" size="40"></td></tr>
|
<tr><td>{|ticket|}:</td><td><input type="text" name="ticket" value="[TICKET]" size="40"></td></tr>
|
||||||
<tr><td>{|ticketprojekt|}:</td><td><input type="text" name="ticketprojekt" value="[TICKETPROJEKT]" size="40"></td></tr>
|
<tr><td>{|ticketprojekt|}:</td><td><input type="text" id="ticketprojekt" name="ticketprojekt" value="[TICKETPROJEKT]" size="40"></td></tr>
|
||||||
<tr><td>{|ticketqueue|}:</td><td><input type="text" name="ticketqueue" value="[TICKETQUEUE]" size="40"></td></tr>
|
<tr><td>{|ticketqueue|}:</td><td><input type="text" id="ticketqueue" name="ticketqueue" value="[TICKETQUEUE]" size="40"></td></tr>
|
||||||
<tr><td>{|abdatum|}:</td><td><input type="text" name="abdatum" value="[ABDATUM]" size="40"></td></tr>
|
<tr><td>{|abdatum|}:</td><td><input type="text" name="abdatum" value="[ABDATUM]" size="40"></td></tr>
|
||||||
<tr><td>{|ticketloeschen|}:</td><td><input type="text" name="ticketloeschen" value="[TICKETLOESCHEN]" size="40"></td></tr>
|
<tr><td>{|ticketloeschen|}:</td><td><input type="text" name="ticketloeschen" value="[TICKETLOESCHEN]" size="40"></td></tr>
|
||||||
<tr><td>{|ticketabgeschlossen|}:</td><td><input type="text" name="ticketabgeschlossen" value="[TICKETABGESCHLOSSEN]" size="40"></td></tr>
|
<tr><td>{|ticketabgeschlossen|}:</td><td><input type="text" name="ticketabgeschlossen" value="[TICKETABGESCHLOSSEN]" size="40"></td></tr>
|
||||||
@@ -121,16 +121,16 @@
|
|||||||
<table width="100%" border="0" class="mkTableFormular">
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
<tr><td>{|autosresponder_blacklist|}:</td><td><input type="text" name="autosresponder_blacklist" value="[AUTOSRESPONDER_BLACKLIST]" size="40"></td></tr>
|
<tr><td>{|autosresponder_blacklist|}:</td><td><input type="text" name="autosresponder_blacklist" value="[AUTOSRESPONDER_BLACKLIST]" size="40"></td></tr>
|
||||||
<tr><td>{|eigenesignatur|}:</td><td><input type="text" name="eigenesignatur" value="[EIGENESIGNATUR]" size="40"></td></tr>
|
<tr><td>{|eigenesignatur|}:</td><td><input type="text" name="eigenesignatur" value="[EIGENESIGNATUR]" size="40"></td></tr>
|
||||||
<tr><td>{|signatur|}:</td><td><input type="text" name="signatur" value="[SIGNATUR]" size="40"></td></tr>
|
<tr><td>{|signatur|}:</td><td><textarea id="signatur" name="signatur" rows="6" style="width:100%;">[SIGNATUR]</textarea></td></tr>
|
||||||
<tr><td>{|adresse|}:</td><td><input type="text" name="adresse" value="[ADRESSE]" size="40"></td></tr>
|
<tr><td>{|adresse|}:</td><td><input type="text" id="adresse" name="adresse" value="[ADRESSE]" size="40"></td></tr>
|
||||||
<tr><td>{|firma|}:</td><td><input type="text" name="firma" value="[FIRMA]" size="40"></td></tr>
|
<tr><td>{|firma|}:</td><td><input type="text" name="firma" value="[FIRMA]" size="40"></td></tr>
|
||||||
<tr><td>{|geloescht|}:</td><td><input type="text" name="geloescht" value="[GELOESCHT]" size="40"></td></tr>
|
<tr><td>{|geloescht|}:</td><td><input type="text" name="geloescht" value="[GELOESCHT]" size="40"></td></tr>
|
||||||
<tr><td>{|mutex|}:</td><td><input type="text" name="mutex" value="[MUTEX]" size="40"></td></tr>
|
<tr><td>{|mutex|}:</td><td><input type="text" name="mutex" value="[MUTEX]" size="40"></td></tr>
|
||||||
<tr><td>{|autoresponder|}:</td><td><input type="text" name="autoresponder" value="[AUTORESPONDER]" size="40"></td></tr>
|
<tr><td>{|autoresponder|}:</td><td><input type="text" name="autoresponder" value="[AUTORESPONDER]" size="40"></td></tr>
|
||||||
<tr><td>{|geschaeftsbriefvorlage|}:</td><td><input type="text" name="geschaeftsbriefvorlage" value="[GESCHAEFTSBRIEFVORLAGE]" size="40"></td></tr>
|
<tr><td>{|geschaeftsbriefvorlage|}:</td><td><input type="text" name="geschaeftsbriefvorlage" value="[GESCHAEFTSBRIEFVORLAGE]" size="40"></td></tr>
|
||||||
<tr><td>{|autoresponderbetreff|}:</td><td><input type="text" name="autoresponderbetreff" value="[AUTORESPONDERBETREFF]" size="40"></td></tr>
|
<tr><td>{|autoresponderbetreff|}:</td><td><textarea id="autoresponderbetreff" name="autoresponderbetreff" rows="6" style="width:100%;">[AUTORESPONDERBETREFF]</textarea></td></tr>
|
||||||
<tr><td>{|autorespondertext|}:</td><td><input type="text" name="autorespondertext" value="[AUTORESPONDERTEXT]" size="40"></td></tr>
|
<tr><td>{|autorespondertext|}:</td><td><textarea id="autorespondertext" name="autorespondertext" rows="6" style="width:100%;">[AUTORESPONDERTEXT]</textarea></td></tr>
|
||||||
<tr><td>{|projekt|}:</td><td><input type="text" name="projekt" value="[PROJEKT]" size="40"></td></tr>
|
<tr><td>{|projekt|}:</td><td><input type="text" id="projekt" name="projekt" value="[PROJEKT]" size="40"></td></tr>
|
||||||
</table>
|
</table>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -39,6 +39,14 @@
|
|||||||
<td>Projekt:</td>
|
<td>Projekt:</td>
|
||||||
<td><input type="text" name="projekt" id="projekt" value="[PROJEKT]" /></td>
|
<td><input type="text" name="projekt" id="projekt" value="[PROJEKT]" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Differenzen (Kopf/Positionen) ignorieren:</td>
|
||||||
|
<td><input type="checkbox" name="diffignore" value="1" [DIFFIGNORE] /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Konto für Differenzen:</td>
|
||||||
|
<td><input type="text" name="sachkonto" id="sachkonto" value="[SACHKONTO]" /></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -0,0 +1,204 @@
|
|||||||
|
<div id="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#tabs-1"></a></li>
|
||||||
|
</ul>
|
||||||
|
<!-- Example for multiple tabs
|
||||||
|
<ul hidden">
|
||||||
|
<li><a href="#tabs-1">First Tab</a></li>
|
||||||
|
<li><a href="#tabs-2">Second Tab</a></li>
|
||||||
|
</ul>
|
||||||
|
-->
|
||||||
|
<div id="tabs-1">
|
||||||
|
[MESSAGE]
|
||||||
|
<form action="" method="post">
|
||||||
|
[FORMHANDLEREVENT]
|
||||||
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-12 col-md-12 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{|Einzelbuchung bearbeiten.|}</legend>
|
||||||
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
|
<tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Von|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a href="index.php?module=[VON_TYP]&id=[VON_ID]&action=edit">[VON]</a>
|
||||||
|
<input hidden type="text" name="von_typ" id="von_typ" value="[VON_TYP]" size="20">
|
||||||
|
<input hidden type="text" name="von_id" id="von_id" value="[VON_ID]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Nach|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a href="index.php?module=[NACH_TYP]&id=[NACH_ID]&action=edit">[NACH]</a>
|
||||||
|
<input hidden type="text" name="nach_typ" id="nach_typ" value="[NACH_TYP]" size="20">
|
||||||
|
<input hidden type="text" name="nach_id" id="nach_id" value="[NACH_ID]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Betrag|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="numeric" name="betrag" id="betrag" value="[BETRAG]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Währung|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<select name="waehrung">[WAEHRUNG]</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Benutzer|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
[BENUTZER]
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Datum|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="datum" id="datum" value="[DATUM]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Internebemerkung|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<textarea type="text" name="internebemerkung" id="internebemerkung" size="20">[INTERNEBEMERKUNG]</textarea>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
<input type="submit" name="submit" value="Speichern" style="float:right"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
[TAB1]
|
||||||
|
<!-- Example for 2nd row
|
||||||
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-12 col-md-12 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{|Another legend|}</legend>
|
||||||
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Von_typ|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="von_typ" id="von_typ" value="[VON_TYP]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Von_id|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="von_id" id="von_id" value="[VON_ID]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Nach_typ|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="nach_typ" id="nach_typ" value="[NACH_TYP]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Nach_id|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="nach_id" id="nach_id" value="[NACH_ID]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Betrag|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="betrag" id="betrag" value="[BETRAG]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Waehrung|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="waehrung" id="waehrung" value="[WAEHRUNG]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Benutzer|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="benutzer" id="benutzer" value="[BENUTZER]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Zeit|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="zeit" id="zeit" value="[ZEIT]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Internebemerkung|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="internebemerkung" id="internebemerkung" value="[INTERNEBEMERKUNG]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div> -->
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<!-- Example for 2nd tab
|
||||||
|
<div id="tabs-2">
|
||||||
|
[MESSAGE]
|
||||||
|
<form action="" method="post">
|
||||||
|
[FORMHANDLEREVENT]
|
||||||
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-12 col-md-12 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{|...|}</legend>
|
||||||
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
|
...
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input type="submit" name="submit" value="Speichern" style="float:right"/>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
-->
|
||||||
|
</div>
|
||||||
|
|
||||||
@@ -0,0 +1,105 @@
|
|||||||
|
<form action="" method="post" id="buchungenform">
|
||||||
|
<div id="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#tabs-1"><!--[TABTEXT]--></a></li>
|
||||||
|
</ul>
|
||||||
|
<div id="tabs-1">
|
||||||
|
[MESSAGE]
|
||||||
|
[FORMHANDLEREVENT]
|
||||||
|
<legend>{|Einzelsaldo zuordnen und auf mehrere Gegenbelege oder Sachkonto verbuchen.|}</legend>
|
||||||
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-12 col-md-6 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
"[DOC_ZUORDNUNG]"
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
Saldo: <u>[DOC_SALDO]</u>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-12 col-md-6 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
Multifilter für "Info" (Trennzeichen ',; ')
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<textarea type="text" name="multifilter" id="multifilter" style="width:100%;">[MULTIFILTER]</textarea>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<button name="submit" value="multifilter" class="ui-button-icon">{|Filtern|}</button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-12 col-md-12 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
[TAB1]
|
||||||
|
<fieldset>
|
||||||
|
<table>
|
||||||
|
<legend>Stapelverarbeitung</legend>
|
||||||
|
<tr>
|
||||||
|
<td><input type="checkbox" value="1" name="override" form="buchungenform" /> Mit Abweichung buchen </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><input type="checkbox" value="1" id="autoalle" /> alle markieren
|
||||||
|
<select id="sel_aktion" name="sel_aktion">
|
||||||
|
<option value="buchen">{|auf Ausgewählte buchen|}</option>
|
||||||
|
<option value="buchen_diff_sachkonto">{|auf Ausgewählte buchen, Gegenbeleg auf Sachkonto ausgleichen|}</option>
|
||||||
|
</select> Sachkonto:
|
||||||
|
<input type="text" id="sachkonto" name="sachkonto" value="">
|
||||||
|
<button name="submit" value="BUCHEN" class="ui-button-icon">{|BUCHEN|}</button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<input type="number" name="abschlag" id="abschlag" value=[ABSCHLAG] />% Abschlag auf Buchungsbetrag</td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<button name="submit" value="neuberechnen" class="ui-button-icon" style="width:100%;">
|
||||||
|
{|Buchungen neu berechnen|}
|
||||||
|
</button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
$('#autoalle').on('change',function(){
|
||||||
|
var wert = $(this).prop('checked');
|
||||||
|
$('#fibu_buchungen_einzelzuordnen').find('input[type="checkbox"]').prop('checked',wert);
|
||||||
|
$('#fibu_buchungen_einzelzuordnen').find('input[type="checkbox"]').first().trigger('change');
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
<div id="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#tabs-1">Salden</a></li>
|
||||||
|
<li><a href="#tabs-2">Buchungen</a></li>
|
||||||
|
</ul>
|
||||||
|
<div id="tabs-1">
|
||||||
|
<legend>Saldenübersicht. Salden müssen über Gegenbuchungen ausgeglichen werden.<br><br></legend>
|
||||||
|
<form action="" enctype="multipart/form-data" method="POST">
|
||||||
|
[MESSAGE]
|
||||||
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-12 col-md-10 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
[TAB1]
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-12 col-md-2 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
|
<legend>{|Aktionen|}</legend>
|
||||||
|
<td><button name="submit" value="neuberechnen" class="ui-button-icon" style="width:100%;">Buchungen neu berechnen</button></td></tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
[TAB1NEXT]
|
||||||
|
</div>
|
||||||
|
<div id="tabs-2">
|
||||||
|
<form action="#tabs-2" enctype="multipart/form-data" method="POST">
|
||||||
|
[MESSAGE]
|
||||||
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-12 col-md-10 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{|Einzelbuchungen|}</legend>
|
||||||
|
[TAB2]
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-12 col-md-2 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
|
<legend>{|Aktionen|}</legend>
|
||||||
|
<td><button name="submit" value="neuberechnen" class="ui-button-icon" style="width:100%;">Buchungen neu berechnen</button></td></tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
[TAB2NEXT]
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
<div id="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#tabs-1"><!--[TABTEXT]--></a></li>
|
||||||
|
</ul>
|
||||||
|
<div id="tabs-1">
|
||||||
|
[MESSAGE]
|
||||||
|
[FORMHANDLEREVENT]
|
||||||
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-12 col-md-12 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{|Einzelsalden zuordnen und auf Gegenbelege oder Sachkonto verbuchen.|}</legend>
|
||||||
|
<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="vorschlagfilter" class="switch">
|
||||||
|
<input type="checkbox" id="vorschlagfilter">
|
||||||
|
<span class="slider round"></span>
|
||||||
|
</label>
|
||||||
|
<label for="vorschlagfilter">{|Vorschläge|}</label>
|
||||||
|
</li>
|
||||||
|
<li class="filter-item">
|
||||||
|
<label for="checkedfilter" class="switch">
|
||||||
|
<input type="checkbox" id="checkedfilter">
|
||||||
|
<span class="slider round"></span>
|
||||||
|
</label>
|
||||||
|
<label for="checkedfilter">{|Betrag korrekt|}</label>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<form action="" method="post" id="buchungenform">
|
||||||
|
[TAB1]
|
||||||
|
</form>
|
||||||
|
</fieldset>
|
||||||
|
<fieldset>
|
||||||
|
<table>
|
||||||
|
<legend>Stapelverarbeitung</legend>
|
||||||
|
<tr>
|
||||||
|
<td><input type="checkbox" value="1" id="autoalle" /> alle markieren
|
||||||
|
<select form="buchungenform" id="sel_aktion" name="sel_aktion">
|
||||||
|
<option value="vorschlag">{|auf Vorschlag buchen|}</option>
|
||||||
|
<option value="vorschlag_diff_sachkonto">{|auf Vorschlag buchen, Gegenbeleg auf Sachkonto ausgleichen|}</option>
|
||||||
|
<option value="sachkonto">{|auf Sachkonto buchen|}</option>
|
||||||
|
</select> Sachkonto:
|
||||||
|
<input type="text" form="buchungenform" id="sachkonto" name="sachkonto" value="">
|
||||||
|
<button name="submit" form="buchungenform" value="BUCHEN" class="ui-button-icon">{|BUCHEN|}</button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<form action="" method="post">
|
||||||
|
<td>
|
||||||
|
<button name="submit" value="neuberechnen" class="ui-button-icon" style="width:100%;">
|
||||||
|
{|Buchungen neu berechnen|}
|
||||||
|
</button>
|
||||||
|
</td>
|
||||||
|
</form>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
$('#autoalle').on('change',function(){
|
||||||
|
var wert = $(this).prop('checked');
|
||||||
|
$('#fibu_buchungen_zuordnen').find('input[type="checkbox"]').prop('checked',wert);
|
||||||
|
$('#fibu_buchungen_zuordnen').find('input[type="checkbox"]').first().trigger('change');
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
@@ -1101,6 +1101,26 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-12 col-md-6 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{|Finanzbuchhaltung Einstellungen|}</legend>
|
||||||
|
<table width="100%">
|
||||||
|
<tr>
|
||||||
|
<td width="300">Buchungen erzeugen ab Datum:</td><td colspan="3"><input type="text" id= "fibu_buchungen_startdatum" name="fibu_buchungen_startdatum" size="10" value="[FIBU_BUCHUNGEN_STARTDATUM]"><i>Für die Nutzung mit dem Modul Buchhaltung-Buchungen (Zahlungseingang, Zahlungsstatus, Mahnwesen)</i></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="300">Konto für Rechnung-Skontobuchungen:</td><td colspan="3"><input type="text" id= "rechnung_skonto_kontorahmen" name="rechnung_skonto_kontorahmen" size="10" value="[RECHNUNG_SKONTO_KONTORAHMEN]"><i>Auf dieses Sachkonto werden Skontobuchungen mithilfe der Funktion "Zahlungsstatus berechnen" im Rechnungsmodul gebucht</i></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
<fieldset><legend>Finanzbuchhaltung Export Kontenrahmen - Weitere Kostenarten</legend>
|
<fieldset><legend>Finanzbuchhaltung Export Kontenrahmen - Weitere Kostenarten</legend>
|
||||||
<table>
|
<table>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td><input type="checkbox" id="angeboteoffen"> Fehlende Artikel</td>
|
<td><input type="checkbox" id="angeboteoffen"> Fehlende Artikel</td>
|
||||||
<td><input type="checkbox" id="angeboteoffen"> Artikel im Zulauf</td>
|
<td><input type="checkbox" id="angeboteoffen"> Artikel im Zulauf</td>
|
||||||
<td><input type="checkbox" id="angeboteheute"> Gersperrte Artikel</td>
|
<td><input type="checkbox" id="angeboteheute"> Gesperrte Artikel</td>
|
||||||
<td>Artikelgruppen: <select><option>alle</option><option>Waren 700000</option></select></td>
|
<td>Artikelgruppen: <select><option>alle</option><option>Waren 700000</option></select></td>
|
||||||
</tr></table>
|
</tr></table>
|
||||||
</center>
|
</center>
|
||||||
@@ -121,7 +121,8 @@
|
|||||||
<li>{|ZahlungDiff|} <i>{|Variablen|}: {AUFTRAG}, {DATUM}, {GESAMT}, {REST}, {ANSCHREIBEN}, {INTERNET}</i></li>
|
<li>{|ZahlungDiff|} <i>{|Variablen|}: {AUFTRAG}, {DATUM}, {GESAMT}, {REST}, {ANSCHREIBEN}, {INTERNET}</i></li>
|
||||||
<li>{|Stornierung|} <i>{|Variablen|}: {AUFTRAG}, {DATUM}, {INTERNET}</i></li>
|
<li>{|Stornierung|} <i>{|Variablen|}: {AUFTRAG}, {DATUM}, {INTERNET}</i></li>
|
||||||
<li>{|ZahlungMiss|} <i>{|Variablen|}: {AUFTRAG}, {DATUM}, {GESAMT}, {REST}, {ANSCHREIBEN}, {INTERNET}</i></li>
|
<li>{|ZahlungMiss|} <i>{|Variablen|}: {AUFTRAG}, {DATUM}, {GESAMT}, {REST}, {ANSCHREIBEN}, {INTERNET}</i></li>
|
||||||
<li>{|Versand|} <i>{|Variablen|}: {VERSAND}, {VERSANDTYPE}, {VERSANDBEZEICHNUNG}, {TRACKINGNUMMER}, {NAME}, {ANSCHREIBEN}, {BELEGNR}, {IHREBESTELLNUMMER}, {INTERNET}, {AUFTRAGDATUM}, {LIEFERADRESSE}, {LIEFERADRESSELANG}</i></li>
|
<li>Mahnung <i>Variablen: {BELEGNR}, {DATUM}, {OFFEN}, {MAHNGEBUEHR}, {HEUTE}</i></li>
|
||||||
|
<li>{|Versand|} <i>{|Variablen|}: {VERSAND}, {VERSANDTYPE}, {VERSANDBEZEICHNUNG}, {TRACKINGNUMMER}, {TRACKINGLINK}, {NAME}, {ANSCHREIBEN}, {BELEGNR}, {IHREBESTELLNUMMER}, {INTERNET}, {AUFTRAGDATUM}, {LIEFERADRESSE}, {LIEFERADRESSELANG}</i></li>
|
||||||
<li>{|VersandMailDokumente|} <i>{|Variablen|}: {NAME}, {ANSCHREIBEN}, {BELEGNR}, {IHREBESTELLNUMMER}, {INTERNET}, {AUFTRAGDATUM}</i></li>
|
<li>{|VersandMailDokumente|} <i>{|Variablen|}: {NAME}, {ANSCHREIBEN}, {BELEGNR}, {IHREBESTELLNUMMER}, {INTERNET}, {AUFTRAGDATUM}</i></li>
|
||||||
<li>{|Erweiterte Freigabe|} <i>{|Variablen|}: {REQUESTER}, {LINK}, {LINKFREIGABEUEBERSICHT}, {DOCTYPE}, {DOCTYPE_ID}</i></li>
|
<li>{|Erweiterte Freigabe|} <i>{|Variablen|}: {REQUESTER}, {LINK}, {LINKFREIGABEUEBERSICHT}, {DOCTYPE}, {DOCTYPE_ID}</i></li>
|
||||||
<li>{|Selbstabholer|}</li>
|
<li>{|Selbstabholer|}</li>
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="background-color:white">
|
<div style="background-color:white">
|
||||||
<h2 class="greyh2">{|Zahlungseingang|}</h2>
|
<h2 class="greyh2">Buchungen</h2>
|
||||||
<div style="padding:10px">
|
<div style="padding:10px">
|
||||||
[ZAHLUNGEN]
|
[ZAHLUNGEN]
|
||||||
</div>
|
</div>
|
||||||
@@ -58,12 +58,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="background-color:white">
|
<div style="background-color:white">
|
||||||
<h2 class="greyh2">Deckungsbeitrag</h2>
|
|
||||||
<div style="padding:10px">
|
|
||||||
|
|
||||||
<div class="info">Dieses Modul ist erst ab Version Professional verfügbar</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -45,8 +45,8 @@
|
|||||||
<input type="checkbox" id="auswahlalle" onchange="alleauswaehlen();" /> {|alle markieren|}
|
<input type="checkbox" id="auswahlalle" onchange="alleauswaehlen();" /> {|alle markieren|}
|
||||||
<select id="sel_aktion" name="sel_aktion">
|
<select id="sel_aktion" name="sel_aktion">
|
||||||
<option value="">{|bitte wählen|} ...</option>
|
<option value="">{|bitte wählen|} ...</option>
|
||||||
<option value="erledigtam">{|als erledigt markieren|}</option>
|
[ALSBEZAHLTMARKIEREN]
|
||||||
<option value="offen">{|erledigt Markierung entfernen|}</option>
|
<option value="offen">{|als offen markieren|}</option>
|
||||||
<option value="mail">{|per Mail versenden|}</option>
|
<option value="mail">{|per Mail versenden|}</option>
|
||||||
<option value="versendet">{|als versendet markieren|}</option>
|
<option value="versendet">{|als versendet markieren|}</option>
|
||||||
<option value="pdf">{|Sammel-PDF|}</option>
|
<option value="pdf">{|Sammel-PDF|}</option>
|
||||||
|
|||||||
@@ -6,7 +6,9 @@
|
|||||||
<li><a href="#tabs-3">{|Zeiterfassung|}</a></li>
|
<li><a href="#tabs-3">{|Zeiterfassung|}</a></li>
|
||||||
<li><a href="#tabs-4">{|Wiedervorlagen|}</a></li>
|
<li><a href="#tabs-4">{|Wiedervorlagen|}</a></li>
|
||||||
<li><a href="#tabs-5">{|Notizen|}</a></li>
|
<li><a href="#tabs-5">{|Notizen|}</a></li>
|
||||||
<li><a href="#tabs-6">{|Kontorahmen|}</a></li>
|
<li><a href="#tabs-6">{|Kontenrahmen|}</a></li>
|
||||||
|
<li><a href="#tabs-7">{|Kontoauszug|}</a></li>
|
||||||
|
<li><a href="#tabs-8">{|Stückliste|}</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div id="tabs-1">
|
<div id="tabs-1">
|
||||||
@@ -508,7 +510,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-12 col-sm-1 col-sm-height">
|
<div class="col-xs-12 col-sm-1 col-sm-height">
|
||||||
<div class="inside inside-full-height">
|
<div class="inside inside-full-height">
|
||||||
<fieldset><legend>{|Kontorahmen|}</legend>
|
<fieldset><legend>{|Kontenrahmen|}</legend>
|
||||||
<table class="mkTable">
|
<table class="mkTable">
|
||||||
<tr>
|
<tr>
|
||||||
<th>Variable</th>
|
<th>Variable</th>
|
||||||
@@ -551,4 +553,143 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="tabs-7">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-12 col-sm-1 col-sm-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset><legend>{|Kontoauszug|}</legend>
|
||||||
|
<table class="mkTable">
|
||||||
|
<tr>
|
||||||
|
<th>Variable</th>
|
||||||
|
<th>Beschreibung</th>
|
||||||
|
<th>Kommentar</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>konto</td>
|
||||||
|
<td>Konto-Kurzbezeichnung</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>buchung</td>
|
||||||
|
<td>Buchungsdatum</td>
|
||||||
|
<td>Im Format DD.MM.YYYY</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>betrag</td>
|
||||||
|
<td>Betrag</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>betrag2</td>
|
||||||
|
<td>Betrag (wenn z.B. Soll / Haben getrennt)</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>waehrung</td>
|
||||||
|
<td>Währung</td>
|
||||||
|
<td>Muss in den Währungen vorhanden sein</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>buchungstext</td>
|
||||||
|
<td>Buchungstext</td>
|
||||||
|
<td>Wird für die Zuordnung verwendet</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>buchungstext2</td>
|
||||||
|
<td>Buchungstext</td>
|
||||||
|
<td>Wird für die Zuordnung verwendet</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>buchungstext3</td>
|
||||||
|
<td>Buchungstext</td>
|
||||||
|
<td>Wird für die Zuordnung verwendet</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>buchungstext4</td>
|
||||||
|
<td>Buchungstext</td>
|
||||||
|
<td>Wird für die Zuordnung verwendet</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="tabs-8">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-12 col-sm-1 col-sm-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset><legend>{|Stückliste|}</legend>
|
||||||
|
<table class="mkTable">
|
||||||
|
<tr>
|
||||||
|
<th>Variable</th>
|
||||||
|
<th>Beschreibung</th>
|
||||||
|
<th>Kommentar</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>stuecklistevonartikel</td>
|
||||||
|
<td>Hauptartikel (muss eine Stückliste sein)</td>
|
||||||
|
<td>Artikelnummer</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>artikel</td>
|
||||||
|
<td></td>
|
||||||
|
<td>Artikelnummer</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>menge</td>
|
||||||
|
<td>Zahl</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>referenz</td>
|
||||||
|
<td>Text</td>
|
||||||
|
<td>Für Bestückungen</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>place</td>
|
||||||
|
<td>Leer oder 'DNP' = Nicht platzieren</td>
|
||||||
|
<td>Für Bestückungen</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>layer</td>
|
||||||
|
<td>"top" oder "bottom"</td>
|
||||||
|
<td>Für Bestückungen</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>wert</td>
|
||||||
|
<td>Text</td>
|
||||||
|
<td>Für Bestückungen</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>bauform</td>
|
||||||
|
<td>Text</td>
|
||||||
|
<td>Für Bestückungen</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>zachse</td>
|
||||||
|
<td>Zahl</td>
|
||||||
|
<td>Für Bestückungen</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>xpos</td>
|
||||||
|
<td>Zahl</td>
|
||||||
|
<td>Für Bestückungen</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>ypos</td>
|
||||||
|
<td>Zahl</td>
|
||||||
|
<td>Für Bestückungen</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>art</td>
|
||||||
|
<td>Einkaufsteil "et",Informationsteil "it" oder Beistellung "bt"</td>
|
||||||
|
<td>Alternativposition?</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
<!--<td width="25%"><a href="index.php?module=shopexport&action=list"><img src="./themes/[THEME]/images/einstellungen/Icons_dunkel_20.gif" border="0" width="30%"></a></td>-->
|
<!--<td width="25%"><a href="index.php?module=shopexport&action=list"><img src="./themes/[THEME]/images/einstellungen/Icons_dunkel_20.gif" border="0" width="30%"></a></td>-->
|
||||||
</tr>
|
</tr>
|
||||||
<tr align="center">
|
<tr align="center">
|
||||||
<td><a href="index.php?module=importvorlage&action=list">{|Stammdaten|} <br>{|Import|}</a></td>
|
<td><a href="index.php?module=importvorlage&action=list">{|Daten|} <br>{|Import|}</a></td>
|
||||||
<td><a href="index.php?module=exportvorlage&action=list">{|Stammdaten|} <br>{|Export|}</a></td>
|
<td><a href="index.php?module=exportvorlage&action=list">{|Stammdaten|} <br>{|Export|}</a></td>
|
||||||
<!--<td><a href="index.php?module=adresse_import&action=list">{|Intranet|}</a></td>-->
|
<!--<td><a href="index.php?module=adresse_import&action=list">{|Intranet|}</a></td>-->
|
||||||
<td><a href="index.php?module=shopimport&action=list">{|Import|}<br>({|Online-Shop|})</a></td>
|
<td><a href="index.php?module=shopimport&action=list">{|Import|}<br>({|Online-Shop|})</a></td>
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
<tr><td colspan="99"> </td></tr>
|
<tr><td colspan="99"> </td></tr>
|
||||||
<tr align="center">
|
<tr align="center">
|
||||||
<td width="25%"><a href="index.php?module=exportbelegepositionen&action=export"><img src="./themes/[THEME]/images/einstellungen/Icons_dunkel_1.gif" border="0" width="30%"></a></td>
|
<td width="25%"><a href="index.php?module=exportbelegepositionen&action=export"><img src="./themes/[THEME]/images/einstellungen/Icons_dunkel_1.gif" border="0" width="30%"></a></td>
|
||||||
<td width="25%"><a href="index.php?module=exportbuchhaltung&action=export"><img src="./themes/[THEME]/images/einstellungen/Icons_dunkel_1.gif" border="0" width="30%"></a></td>
|
<td width="25%"><a href="index.php?module=exportbuchhaltung&action=export"><img src="./themes/[THEME]/images/einstellungen/Icons_dunkel_19.gif" border="0" width="30%"></a></td>
|
||||||
<td width="25%">[BELEGEIMPORTSTART]<a href="index.php?module=belegeimport&action=list"><img src="./themes/[THEME]/images/einstellungen/Icons_dunkel_1.gif" border="0" width="30%"></a>[BELEGEIMPORTEND]</td>
|
<td width="25%">[BELEGEIMPORTSTART]<a href="index.php?module=belegeimport&action=list"><img src="./themes/[THEME]/images/einstellungen/Icons_dunkel_1.gif" border="0" width="30%"></a>[BELEGEIMPORTEND]</td>
|
||||||
<!--<td width="25%"><a href="index.php?module=shopexport&action=list"><img src="./themes/[THEME]/images/einstellungen/Icons_dunkel_20.gif" border="0" width="30%"></a></td>-->
|
<!--<td width="25%"><a href="index.php?module=shopexport&action=list"><img src="./themes/[THEME]/images/einstellungen/Icons_dunkel_20.gif" border="0" width="30%"></a></td>-->
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
+287
-120
@@ -18,37 +18,66 @@
|
|||||||
<legend>{|Einstellungen|}</legend>
|
<legend>{|Einstellungen|}</legend>
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr>
|
<tr>
|
||||||
<td width="150">{|Bezeichnung|}:</td>
|
<td width="150">
|
||||||
<td><input type="text" name="bezeichnung" id="bezeichnung" size="40" rule="notempty"
|
{|Kurzbezeichnung|}:
|
||||||
msg="Pflichfeld!" tabindex="2" value="[BEZEICHNUNG]"></td>
|
</td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>{|Typ|}:</td>
|
|
||||||
<td>
|
<td>
|
||||||
<select name="type" id="type">
|
<input type="text" name="kurzbezeichnung" id="kurzbezeichnung" size="40" rule="notempty" msg="Pflichfeld!" tabindex="2" value="[KURZBEZEICHNUNG]" required><i>{|Muss eindeutig sein.|}</i>
|
||||||
[TYPE]
|
|
||||||
</select>
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{|Projekt|}:</td>
|
<td width="150">
|
||||||
<td><input type="text" size="30" name="projekt" id="projekt" value="[PROJEKT]"></td>
|
{|Bezeichnung|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="bezeichnung" id="bezeichnung" size="40" rule="notempty" msg="Pflichfeld!" tabindex="2" value="[BEZEICHNUNG]" required>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{|Aktiv|}:</td>
|
<td>
|
||||||
<td><input type="checkbox" name="aktiv" id="aktiv" value="1"
|
{|Typ|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<!--
|
||||||
|
<select name="type" id="type">
|
||||||
|
[TYPE]
|
||||||
|
</select>
|
||||||
|
-->
|
||||||
|
<input type="text" name="type" id="type" size="40" value="konto" required readonly>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Projekt|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" size="30" name="projekt" id="projekt" value="[PROJEKT]">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Aktiv|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" name="aktiv" id="aktiv" value="1"
|
||||||
[AKTIV]><i>{|Aktiv. Nicht mehr verwendete Konten können deaktiviert werden.|}</i>
|
[AKTIV]><i>{|Aktiv. Nicht mehr verwendete Konten können deaktiviert werden.|}</i>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{|Keine E-Mail|}:</td>
|
<td>
|
||||||
<td><input type="checkbox" name="keineemail" id="keineemail" value="1"
|
{|Keine E-Mail|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" name="keineemail" id="keineemail" value="1"
|
||||||
[KEINEEMAIL]><i>{|Normalerweise wird beim Zahlungseingang eine Mail an den Kunden gesendet. Soll dies unterdrückt werden muss diese Option gesetzt werden.|}</i>
|
[KEINEEMAIL]><i>{|Normalerweise wird beim Zahlungseingang eine Mail an den Kunden gesendet. Soll dies unterdrückt werden muss diese Option gesetzt werden.|}</i>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{|Änderungen erlauben|}:</td>
|
<td>
|
||||||
<td><input type="checkbox" name="schreibbar" id="schreibbar" value="1"
|
{|Änderungen erlauben|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" name="schreibbar" id="schreibbar" value="1"
|
||||||
[SCHREIBBAR]><i> {|Es dürfen nachträglich Kontobuchungen verändert werden|}</i>
|
[SCHREIBBAR]><i> {|Es dürfen nachträglich Kontobuchungen verändert werden|}</i>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -66,38 +95,71 @@
|
|||||||
<legend>{|Bankverbindung (bei Typ Bank)|}</legend>
|
<legend>{|Bankverbindung (bei Typ Bank)|}</legend>
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr>
|
<tr>
|
||||||
<td width="150">{|Inhaber|}:</td>
|
<td width="150">{|Inhaber|}:
|
||||||
<td><input type="text" name="inhaber" id="inhaber" size="40" value="[INHABER]"></td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
<input type="text" name="inhaber" id="inhaber" size="40" value="[INHABER]">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{|BIC|}:</td>
|
|
||||||
<td><input type="text" name="swift" id="swift" size="40" value="[SWIFT]"></td>
|
|
||||||
<td>
|
<td>
|
||||||
|
{|BIC|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="swift" id="swift" size="40" value="[SWIFT]">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{|IBAN|}:</td>
|
|
||||||
<td><input type="text" name="iban" id="iban" size="40" value="[IBAN]"></td>
|
|
||||||
<td>
|
<td>
|
||||||
|
{|IBAN|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="iban" id="iban" size="40" value="[IBAN]">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{|BLZ|}:</td>
|
|
||||||
<td><input type="text" name="blz" id="blz" size="40" value="[BLZ]"></td>
|
|
||||||
<td>
|
<td>
|
||||||
|
{|BLZ|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="blz" id="blz" size="40" value="[BLZ]">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{|Konto|}:</td>
|
|
||||||
<td><input type="text" name="konto" id="konto" size="40" value="[KONTO]"></td>
|
|
||||||
<td>
|
<td>
|
||||||
|
{|Konto|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="konto" id="konto" size="40" value="[KONTO]">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{|Gläubiger ID|}:</td>
|
|
||||||
<td><input type="text" name="glaeubiger" id="glaeubiger" size="40" value="[GLAEUBIGER]"></td>
|
|
||||||
<td>
|
<td>
|
||||||
|
{|Gläubiger ID|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="glaeubiger" id="glaeubiger" size="40" value="[GLAEUBIGER]">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{|Lastschrift|}:</td>
|
<td>
|
||||||
<td><input type="checkbox" name="lastschrift" id="lastschrift" value="1" [LASTSCHRIFT]></td>
|
{|Lastschrift|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" name="lastschrift" id="lastschrift" value="1" [LASTSCHRIFT]>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
@@ -113,9 +175,13 @@
|
|||||||
<legend>{|DATEV|}</legend>
|
<legend>{|DATEV|}</legend>
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr>
|
<tr>
|
||||||
<td width="150">{|Konto|}:</td>
|
<td width="150">{|Konto|}:
|
||||||
<td><input type="text" name="datevkonto" id="datevkonto" size="40" value="[DATEVKONTO]"></td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
<input type="text" name="datevkonto" id="datevkonto" size="40" value="[DATEVKONTO]">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
@@ -123,6 +189,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!--
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="row-height">
|
<div class="row-height">
|
||||||
<div class="col-xs-12 col-md-12 col-md-height">
|
<div class="col-xs-12 col-md-12 col-md-height">
|
||||||
@@ -131,46 +198,68 @@
|
|||||||
<legend>{|CSV-Import|}</legend>
|
<legend>{|CSV-Import|}</legend>
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr>
|
<tr>
|
||||||
<td width="150">{|Erste Datenzeile|}:</td>
|
<td width="150">{|Erste Datenzeile|}:
|
||||||
<td><input type="text" name="importerstezeilenummer" id="importerstezeilenummer" size="15"
|
</td>
|
||||||
value="[IMPORTERSTEZEILENUMMER]">
|
|
||||||
<i>{|Zeilennummer in der echte Daten stehen (Erste Zeile: 1)|}</i></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td width="150">{|Kodierung|}:</td>
|
|
||||||
<td><select name="codierung" id="codierung">[CODIERUNG]</select></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td width="150">{|Trennzeichen|}:</td>
|
|
||||||
<td><select name="importtrennzeichen" id="importtrennzeichen">[IMPORTTRENNZEICHEN]</select></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td width="150">{|Maskierung|}:</td>
|
|
||||||
<td>
|
<td>
|
||||||
|
<input type="text" name="importerstezeilenummer" id="importerstezeilenummer" size="15"
|
||||||
|
value="[IMPORTERSTEZEILENUMMER]">
|
||||||
|
<i>{|Zeilennummer in der echte Daten stehen (Erste Zeile: 1)|}</i>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="150">{|Kodierung|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<select name="codierung" id="codierung">[CODIERUNG]</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="150">{|Trennzeichen|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<select name="importtrennzeichen" id="importtrennzeichen">[IMPORTTRENNZEICHEN]</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="150">{|Maskierung|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
<select name="importdatenmaskierung" id="importdatenmaskierung">
|
<select name="importdatenmaskierung" id="importdatenmaskierung">
|
||||||
[IMPORTDATENMASKIERUNG]
|
[IMPORTDATENMASKIERUNG]
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="150">{|Nullbytes entfernen|}:</td>
|
<td width="150">{|Nullbytes entfernen|}:
|
||||||
<td><input type="checkbox" name="importnullbytes" id="importnullbytes" value="1" [IMPORTNULLBYTES]>
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" name="importnullbytes" id="importnullbytes" value="1" [IMPORTNULLBYTES]>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="150">{|Letzte Zeilen ignorieren|}:</td>
|
<td width="150">{|Letzte Zeilen ignorieren|}:
|
||||||
<td><input type="text" size="15" name="importletztenzeilenignorieren"
|
</td>
|
||||||
id="importletztenzeilenignorieren" value="[IMPORTLETZTENZEILENIGNORIEREN]"></td>
|
<td>
|
||||||
|
<input type="text" size="15" name="importletztenzeilenignorieren"
|
||||||
|
id="importletztenzeilenignorieren" value="[IMPORTLETZTENZEILENIGNORIEREN]">
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<br><br>
|
<br><br>
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="150">{|Spalte in CSV|}</td>
|
<td width="150">{|Spalte in CSV|}
|
||||||
<td>{|Spalten 1 bis n (Spaltennummer in CSV).|}</tr>
|
</td>
|
||||||
|
<td>
|
||||||
|
{|Spalten 1 bis n (Spaltennummer in CSV).|}</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="150">{|Datum|}:</td>
|
<td width="150">{|Datum|}:
|
||||||
<td><input type="text" name="importfelddatum" id="importfelddatum" size="15"
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="importfelddatum" id="importfelddatum" size="15"
|
||||||
value="[IMPORTFELDDATUM]">
|
value="[IMPORTFELDDATUM]">
|
||||||
{|Eingabeformat|}: <input type="text" name="importfelddatumformat"
|
{|Eingabeformat|}: <input type="text" name="importfelddatumformat"
|
||||||
id="importfelddatumformat" size="20"
|
id="importfelddatumformat" size="20"
|
||||||
@@ -179,67 +268,103 @@
|
|||||||
id="importfelddatumformatausgabe" size="20"
|
id="importfelddatumformatausgabe" size="20"
|
||||||
value="[IMPORTFELDDATUMFORMATAUSGABE]">
|
value="[IMPORTFELDDATUMFORMATAUSGABE]">
|
||||||
<br><i>{|Bsp. 24.12.2016 in CSV entspricht Eingabeformat %1.%2.%3 und Ausgabeformat %3-%2-%1 (Ausgabe muss immer auf diese Format gebracht werden YYYY-MM-DD)|}</i>
|
<br><i>{|Bsp. 24.12.2016 in CSV entspricht Eingabeformat %1.%2.%3 und Ausgabeformat %3-%2-%1 (Ausgabe muss immer auf diese Format gebracht werden YYYY-MM-DD)|}</i>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="150">{|Betrag|}:</td>
|
<td width="150">{|Betrag|}:
|
||||||
<td><input type="text" name="importfeldbetrag" id="importfeldbetrag" size="15"
|
</td>
|
||||||
value="[IMPORTFELDBETRAG]"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td width="150">{|Extra Haben u. Soll|}:</td>
|
|
||||||
<td><input type="checkbox" name="importextrahabensoll" id="importextrahabensoll" value="1" size="15"
|
|
||||||
[IMPORTEXTRAHABENSOLL] /></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td></td>
|
|
||||||
<td>
|
<td>
|
||||||
|
<input type="text" name="importfeldbetrag" id="importfeldbetrag" size="15"
|
||||||
|
value="[IMPORTFELDBETRAG]">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="150">{|Extra Haben u. Soll|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" name="importextrahabensoll" id="importextrahabensoll" value="1" size="15"
|
||||||
|
[IMPORTEXTRAHABENSOLL] />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="150">{|Haben|}:</td>
|
<td width="150">{|Haben|}:
|
||||||
<td><input type="text" name="importfeldhaben" id="importfeldhaben" size="15"
|
</td>
|
||||||
value="[IMPORTFELDHABEN]"></td>
|
<td>
|
||||||
</tr>
|
<input type="text" name="importfeldhaben" id="importfeldhaben" size="15"
|
||||||
<tr>
|
value="[IMPORTFELDHABEN]">
|
||||||
<td width="150">{|Soll|}:</td>
|
|
||||||
<td><input type="text" name="importfeldsoll" id="importfeldsoll" size="15"
|
|
||||||
value="[IMPORTFELDSOLL]"></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="150">{|Buchungstext|}:</td>
|
<td width="150">{|Soll|}:
|
||||||
<td><input type="text" name="importfeldbuchungstext" id="importfeldbuchungstext" size="15"
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="importfeldsoll" id="importfeldsoll" size="15"
|
||||||
|
value="[IMPORTFELDSOLL]">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="150">{|Buchungstext|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="importfeldbuchungstext" id="importfeldbuchungstext" size="15"
|
||||||
value="[IMPORTFELDBUCHUNGSTEXT]"> <i> {|Mit + mehre Spalten zusammenfügen (aus dem Inhalt wird eine Prüfsumme berechnet, daher so eindeutig wie möglich machen.)|}</i>
|
value="[IMPORTFELDBUCHUNGSTEXT]"> <i> {|Mit + mehre Spalten zusammenfügen (aus dem Inhalt wird eine Prüfsumme berechnet, daher so eindeutig wie möglich machen.)|}</i>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="150">{|Währung|}:</td>
|
<td width="150">{|Währung|}:
|
||||||
<td><input type="text" name="importfeldwaehrung" id="importfeldwaehrung" size="15"
|
|
||||||
value="[IMPORTFELDWAEHRUNG]"> <i>{|Ziel: EUR, USD|}</i></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td width="150">{|Haben/Soll Kennung|}:</td>
|
|
||||||
<td><input type="text" name="importfeldhabensollkennung" id="importfeldhabensollkennung" size="15"
|
|
||||||
value="[IMPORTFELDHABENSOLLKENNUNG]"> <i>{|Extra Spalte in der steht was der Betrag ist.|}</i>
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td width="150"></td>
|
|
||||||
<td>
|
<td>
|
||||||
|
<input type="text" name="importfeldwaehrung" id="importfeldwaehrung" size="15"
|
||||||
|
value="[IMPORTFELDWAEHRUNG]"> <i>{|Ziel: EUR, USD|}</i>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="150">{|Haben/Soll Kennung|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="importfeldhabensollkennung" id="importfeldhabensollkennung" size="15"
|
||||||
|
value="[IMPORTFELDHABENSOLLKENNUNG]"> <i>{|Extra Spalte in der steht was der Betrag ist.|}</i>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="150">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="150">{|Markierung Eingang|}:</td>
|
<td width="150">{|Markierung Eingang|}:
|
||||||
<td><input type="text" name="importfeldkennunghaben" id="importfeldkennunghaben" size="15"
|
</td>
|
||||||
value="[IMPORTFELDKENNUNGHABEN]"> <i>{|z.B. H oder +|}</i></td>
|
<td>
|
||||||
|
<input type="text" name="importfeldkennunghaben" id="importfeldkennunghaben" size="15"
|
||||||
|
value="[IMPORTFELDKENNUNGHABEN]"> <i>{|z.B. H oder +|}</i>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{|Markierung Ausgang|}: </td>
|
<td>
|
||||||
<td><input type="text" name="importfeldkennungsoll" id="importfeldkennungsoll" size="15"
|
{|Markierung Ausgang|}:
|
||||||
value="[IMPORTFELDKENNUNGSOLL]"> <i>{|z.B. S oder -|}</i></td>
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="importfeldkennungsoll" id="importfeldkennungsoll" size="15"
|
||||||
|
value="[IMPORTFELDKENNUNGSOLL]"> <i>{|z.B. S oder -|}</i>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
@@ -256,37 +381,56 @@
|
|||||||
<legend>{|Live-Import|}</legend>
|
<legend>{|Live-Import|}</legend>
|
||||||
<table id="liveimport-table">
|
<table id="liveimport-table">
|
||||||
<tr>
|
<tr>
|
||||||
<td>{|Live-Import aktiv|}:</td>
|
<td>
|
||||||
<td><input type="checkbox" name="liveimport_online" id="liveimport_online" value="1"
|
{|Live-Import aktiv|}:
|
||||||
[LIVEIMPORT_ONLINE]></td>
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" name="liveimport_online" id="liveimport_online" value="1"
|
||||||
|
[LIVEIMPORT_ONLINE]>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{|Zeitraum|}:</td>
|
|
||||||
<td>
|
<td>
|
||||||
|
{|Zeitraum|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
<select name="importperiode_in_hours" id="importperiode_in_hours">
|
<select name="importperiode_in_hours" id="importperiode_in_hours">
|
||||||
[IMPORTPERIODE_IN_HOURS]
|
[IMPORTPERIODE_IN_HOURS]
|
||||||
</select> {|Stunden|}
|
</select> {|Stunden|}
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
|
|
||||||
{|zu Zeiten|}:
|
{|zu Zeiten|}:
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
|
||||||
[SCHEDULER]
|
[SCHEDULER]
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
[BEFORELIVEIMPORT]
|
[BEFORELIVEIMPORT]
|
||||||
<tr>
|
<tr>
|
||||||
<td width="150">{|Zugangsdaten|}:</td>
|
<td width="150">{|Zugangsdaten|}:
|
||||||
<td><textarea rows="5" cols="100" name="liveimport" id="liveimport">[LIVEIMPORT]</textarea></td>
|
</td>
|
||||||
|
<td>
|
||||||
|
<textarea rows="5" cols="100" name="liveimport" id="liveimport">[LIVEIMPORT]</textarea>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
[AFTERLIVEIMPORT]
|
[AFTERLIVEIMPORT]
|
||||||
<tr>
|
<tr>
|
||||||
<td>{|Passwort Tresor|}:</td>
|
<td>
|
||||||
<td><input type="button" value="{|Passwort setzen|}"
|
{|Passwort Tresor|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="button" value="{|Passwort setzen|}"
|
||||||
id="setpassword"/>
|
id="setpassword"/>
|
||||||
<i>{|Der Inhalt des Passwort-Tresors kann in der Datenstruktur der Zugangsdaten über die Variable {PASSWORT} genutzt werden.|}</i>
|
<i>{|Der Inhalt des Passwort-Tresors kann in der Datenstruktur der Zugangsdaten über die Variable {PASSWORT} genutzt werden.|}</i>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
@@ -316,13 +460,21 @@
|
|||||||
<legend>{|Prozessstarter|}</legend>
|
<legend>{|Prozessstarter|}</legend>
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{|Zahlungseingänge automatisch abholen|}:</td>
|
<td>
|
||||||
<td><input type="checkbox" name="cronjobaktiv" id="cronjobaktiv" value="1" [CRONJOBAKTIV]></td>
|
{|Zahlungseingänge automatisch abholen|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" name="cronjobaktiv" id="cronjobaktiv" value="1" [CRONJOBAKTIV]>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{|Zahlungseingänge automatisch verbuchen|}:</td>
|
<td>
|
||||||
<td><input type="checkbox" name="cronjobverbuchen" id="cronjobverbuchen" value="1"
|
{|Zahlungseingänge automatisch verbuchen|}:
|
||||||
[CRONJOBVERBUCHEN]></td>
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" name="cronjobverbuchen" id="cronjobverbuchen" value="1"
|
||||||
|
[CRONJOBVERBUCHEN]>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
@@ -330,6 +482,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
-->
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="row-height">
|
<div class="row-height">
|
||||||
<div class="col-xs-12 col-md-12 col-md-height">
|
<div class="col-xs-12 col-md-12 col-md-height">
|
||||||
@@ -338,20 +491,32 @@
|
|||||||
<legend>{|Startwert für Konto|}</legend>
|
<legend>{|Startwert für Konto|}</legend>
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr>
|
<tr>
|
||||||
<td width="150">{|Summieren|}:</td>
|
<td width="150">{|Summieren|}:
|
||||||
<td><input type="checkbox" name="saldo_summieren" id="saldo_summieren" value="1" [SALDO_SUMMIEREN]>
|
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
<input type="checkbox" name="saldo_summieren" id="saldo_summieren" value="1" [SALDO_SUMMIEREN]>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="150">{|Datum Saldo|}:</td>
|
<td width="150">{|Datum Saldo|}:
|
||||||
<td><input type="text" name="saldo_datum" id="saldo_datum" size="40" value="[SALDO_DATUM]"></td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
<input type="text" name="saldo_datum" id="saldo_datum" size="40" value="[SALDO_DATUM]">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="150">{|Betrag Saldo|}:</td>
|
<td width="150">{|Betrag Saldo|}:
|
||||||
<td><input type="text" name="saldo_betrag" id="saldo_betrag" size="40" value="[SALDO_BETRAG]"></td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
<input type="text" name="saldo_betrag" id="saldo_betrag" size="40" value="[SALDO_BETRAG]">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
@@ -359,8 +524,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<input type="hidden" name="save" value="1" />
|
<input type="submit" name="submit" value="Speichern" style="float:right"/>
|
||||||
<input type="submit" value="{|Speichern|}" style="float:right"/>
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<!-- tab view schließen -->
|
<!-- tab view schließen -->
|
||||||
@@ -372,8 +536,11 @@
|
|||||||
<input type="hidden" id="e_id" value="[ID]"/>
|
<input type="hidden" id="e_id" value="[ID]"/>
|
||||||
<table width="" cellspacing="0" cellpadding="0">
|
<table width="" cellspacing="0" cellpadding="0">
|
||||||
<tr>
|
<tr>
|
||||||
<td width="110"><label for="e_passwort">{|Passwort|}:</label></td>
|
<td width="110"><label for="e_passwort">{|Passwort|}:</label>
|
||||||
<td><input type="password" id="e_passwort" name="e_passwort" size="40"/></td>
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="password" id="e_passwort" name="e_passwort" size="40"/>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -0,0 +1,151 @@
|
|||||||
|
<div id="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#tabs-1"></a></li>
|
||||||
|
</ul>
|
||||||
|
<!-- Example for multiple tabs
|
||||||
|
<ul hidden">
|
||||||
|
<li><a href="#tabs-1">First Tab</a></li>
|
||||||
|
<li><a href="#tabs-2">Second Tab</a></li>
|
||||||
|
</ul>
|
||||||
|
-->
|
||||||
|
<div id="tabs-1">
|
||||||
|
[MESSAGE]
|
||||||
|
<form action="" method="post">
|
||||||
|
[FORMHANDLEREVENT]
|
||||||
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-12 col-md-12 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{|Kontoauszug Eintrag|}</legend>
|
||||||
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Konto|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="konto" id="konto" value="[KONTO]" size="20" disabled>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Datum|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="buchung" id="buchung" value="[BUCHUNG]" size="20" disabled>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Betrag|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="soll" id="soll" value="[SOLL]" size="20" disabled>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Währung|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="waehrung" id="waehrung" value="[WAEHRUNG]" size="20" disabled>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Fertig|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="fertig" id="fertig" value="[FERTIG]" size="20" disabled>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Datev_abgeschlossen|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="datev_abgeschlossen" id="datev_abgeschlossen" value="[DATEV_ABGESCHLOSSEN]" size="20" disabled>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Buchungstext|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<Textarea type="text" name="buchungstext" id="buchungstext" size="20" disabled>[BUCHUNGSTEXT]</textarea>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Bearbeiter|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="bearbeiter" id="bearbeiter" value="[BEARBEITER]" size="20" disabled>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Internebemerkung|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<textarea type="text" name="internebemerkung" id="internebemerkung" size="20">[INTERNEBEMERKUNG]</textarea>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Importfehler|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="importfehler" id="importfehler" value="[IMPORTFEHLER]" size="20" disabled>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Klaerfall|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="klaerfall" id="klaerfall" value="[KLAERFALL]" size="20" disabled>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Klaergrund|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="klaergrund" id="klaergrund" value="[KLAERGRUND]" size="20" disabled>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input type="submit" name="submit" value="Speichern" style="float:right"/>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<!-- Example for 2nd tab
|
||||||
|
<div id="tabs-2">
|
||||||
|
[MESSAGE]
|
||||||
|
<form action="" method="post">
|
||||||
|
[FORMHANDLEREVENT]
|
||||||
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-12 col-md-12 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{|...|}</legend>
|
||||||
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
|
...
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input type="submit" name="submit" value="Speichern" style="float:right"/>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
-->
|
||||||
|
</div>
|
||||||
|
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
<div id="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#tabs-1">[TABTEXT1]</a></li>
|
||||||
|
</ul>
|
||||||
|
<div id="tabs-1">
|
||||||
|
<form action="#tabs-1" id="frmauto" name="frmauto" method="post">
|
||||||
|
[MESSAGE]
|
||||||
|
<legend>Kontoauszüge bitte über Importzentrale importieren.</legend>
|
||||||
|
[TAB1]
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
<div id="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#tabs-1">[TABTEXT1]</a></li>
|
||||||
|
</ul>
|
||||||
|
<div id="tabs-1">
|
||||||
|
<form action="#tabs-1" id="frmauto" name="frmauto" method="post">
|
||||||
|
[MESSAGE]
|
||||||
|
<legend>[INFO]</legend>
|
||||||
|
<div class="filter-box filter-usersave">
|
||||||
|
<div class="filter-block filter-inline">
|
||||||
|
<div class="filter-title">{|Filter|}</div>
|
||||||
|
<ul class="filter-list">
|
||||||
|
[STATUSFILTER]
|
||||||
|
<li class="filter-item">
|
||||||
|
<label for="importfehler" class="switch">
|
||||||
|
<input type="checkbox" id="importfehler" />
|
||||||
|
<span class="slider round"></span>
|
||||||
|
</label>
|
||||||
|
<label for="meinetickets">{|Inkl. Importfehler|}</label>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
[TAB1]
|
||||||
|
<fieldset>
|
||||||
|
<table>
|
||||||
|
<legend>Stapelverarbeitung</legend>
|
||||||
|
<tr>
|
||||||
|
<td><input type="checkbox" value="1" id="autoalle" /> alle markieren </td>
|
||||||
|
<td><input type="submit" class="btnBlue" name="ausfuehren" value="{|Importfehler|}" /></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
$('#autoalle').on('change',function(){
|
||||||
|
var wert = $(this).prop('checked');
|
||||||
|
$('#kontoauszuege_list').find('input[type="checkbox"]').prop('checked',wert);
|
||||||
|
$('#kontoauszuege_list').find('input[type="checkbox"]').first().trigger('change');
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr><td class="auftraginfo_cell">Projekt:</td><td class="auftraginfo_cell">[PROJEKT]</td><td class="auftraginfo_cell">Angebotssumme:</td><td class="auftraginfo_cell">[GESAMTSUMME]</td></tr>
|
<tr><td class="auftraginfo_cell">Projekt:</td><td class="auftraginfo_cell">[PROJEKT]</td><td class="auftraginfo_cell">Angebotssumme:</td><td class="auftraginfo_cell">[GESAMTSUMME]</td></tr>
|
||||||
<tr><td class="auftraginfo_cell">Auftrag:</td><td class="auftraginfo_cell">[AUFTRAG]</td><td class="auftraginfo_cell">Versteuerung:</td><td class="auftraginfo_cell">[STEUER]</td></tr>
|
<tr><td class="auftraginfo_cell">Auftrag:</td><td class="auftraginfo_cell">[AUFTRAG]</td><td class="auftraginfo_cell">Versteuerung:</td><td class="auftraginfo_cell">[STEUER]</td></tr>
|
||||||
<tr><td class="auftraginfo_cell">Rechnung:</td><td class="auftraginfo_cell">[RECHNUNG]</td><td class="auftraginfo_cell">Gewicht (netto):</td><td class="auftraginfo_cell">[GEWICHT]</td></tr>
|
<tr><td class="auftraginfo_cell">Rechnung:</td><td class="auftraginfo_cell">[RECHNUNG]</td><td class="auftraginfo_cell">Gewicht (netto):</td><td class="auftraginfo_cell">[GEWICHT]</td></tr>
|
||||||
<tr><td class="auftraginfo_cell">Tracking:</td><td class="auftraginfo_cell">[TRACKING]</td><td class="auftraginfo_cell">Versandart:</td><td class="auftraginfo_cell">[VERSANDART]</td></tr>
|
<tr><td class="auftraginfo_cell">Pakete:</td><td class="auftraginfo_cell">[TRACKING]</td><td class="auftraginfo_cell">Versandart:</td><td class="auftraginfo_cell">[VERSANDART]</td></tr>
|
||||||
<tr><td class="auftraginfo_cell">Retoure:</td><td class="auftraginfo_cell">[RETOURE]</td><td class="auftraginfo_cell"></td><td class="auftraginfo_cell"></td></tr>
|
<tr><td class="auftraginfo_cell">Retoure:</td><td class="auftraginfo_cell">[RETOURE]</td><td class="auftraginfo_cell"></td><td class="auftraginfo_cell"></td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|||||||
@@ -17,33 +17,6 @@
|
|||||||
<li class="filter-item"><input type="checkbox" id="anlieferanten"><label for="anlieferanten">{|an Lieferanten|}</label></li>
|
<li class="filter-item"><input type="checkbox" id="anlieferanten"><label for="anlieferanten">{|an Lieferanten|}</label></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="filter-block filter-inline">
|
|
||||||
<div class="filter-title">{|Filter Versandzentrum|}</div>
|
|
||||||
<ul class="filter-list">
|
|
||||||
<li class="filter-item">
|
|
||||||
<label for="abgeschlossenlogistik" class="switch">
|
|
||||||
<input type="checkbox" id="abgeschlossenlogistik">
|
|
||||||
<span class="slider round"></span>
|
|
||||||
</label>
|
|
||||||
<label for="abgeschlossenlogistik">{|abgeschlossen über Logistik|}</label>
|
|
||||||
</li>
|
|
||||||
<li class="filter-item">
|
|
||||||
<label for="nochinlogistik" class="switch">
|
|
||||||
<input type="checkbox" id="nochinlogistik">
|
|
||||||
<span class="slider round"></span>
|
|
||||||
</label>
|
|
||||||
<label for="nochinlogistik">{|noch in Logistik|}</label>
|
|
||||||
</li>
|
|
||||||
<li class="filter-item">
|
|
||||||
<label for="manuellabgeschlossen" class="switch">
|
|
||||||
<input type="checkbox" id="manuellabgeschlossen">
|
|
||||||
<span class="slider round"></span>
|
|
||||||
</label>
|
|
||||||
<label for="manuellabgeschlossen">{|manuell abgeschlossen|}</label>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
[MESSAGE]
|
[MESSAGE]
|
||||||
@@ -56,6 +29,7 @@
|
|||||||
<option value="offen">{|als offen markieren|}</option>
|
<option value="offen">{|als offen markieren|}</option>
|
||||||
<option value="versendet">{|als versendet markieren|}</option>
|
<option value="versendet">{|als versendet markieren|}</option>
|
||||||
<option value="storniert">{|als storniert markieren|}</option>
|
<option value="storniert">{|als storniert markieren|}</option>
|
||||||
|
<option value="versanduebergabe">{|in Versand geben|}</option>
|
||||||
<option value="pdf">{|Sammel-PDF|}</option>
|
<option value="pdf">{|Sammel-PDF|}</option>
|
||||||
<option value="drucken">{|drucken|}</option>
|
<option value="drucken">{|drucken|}</option>
|
||||||
</select> {|Drucker|}: <select name="seldrucker">[SELDRUCKER]</select> <input type="submit" class="btnBlue" name="ausfuehren" value="{|ausführen|}" />
|
</select> {|Drucker|}: <select name="seldrucker">[SELDRUCKER]</select> <input type="submit" class="btnBlue" name="ausfuehren" value="{|ausführen|}" />
|
||||||
|
|||||||
@@ -0,0 +1,142 @@
|
|||||||
|
<div id="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#tabs-1"></a></li>
|
||||||
|
</ul>
|
||||||
|
<!-- Example for multiple tabs
|
||||||
|
<ul hidden">
|
||||||
|
<li><a href="#tabs-1">First Tab</a></li>
|
||||||
|
<li><a href="#tabs-2">Second Tab</a></li>
|
||||||
|
</ul>
|
||||||
|
-->
|
||||||
|
<div id="tabs-1">
|
||||||
|
[MESSAGE]
|
||||||
|
<form action="" method="post">
|
||||||
|
[FORMHANDLEREVENT]
|
||||||
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-12 col-md-12 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{|<!--Legend for this form area goes here>-->Mahnwesen-Einstellungen|}</legend>
|
||||||
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Name|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="name" id="name" value="[NAME]" size="20"><i>Entspricht "Typ" in der Geschäftsbrief-Vorlage</i>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Tage|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="number" name="tage" id="tage" value="[TAGE]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Gebuehr|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="number" step="0.01" name="gebuehr" id="gebuehr" value="[GEBUEHR]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|E-Mail senden|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" name="mail" id="mail" [MAIL] size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Mahnung ausdrucken|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" name="druck" id="druck" [DRUCK] size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Example for 2nd row
|
||||||
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-12 col-md-12 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{|Another legend|}</legend>
|
||||||
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Name|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="name" id="name" value="[NAME]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Tage|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="tage" id="tage" value="[TAGE]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Gebuehr|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="gebuehr" id="gebuehr" value="[GEBUEHR]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Versandmethode|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="versandmethode" id="versandmethode" value="[VERSANDMETHODE]" size="20">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div> -->
|
||||||
|
<input type="submit" name="submit" value="Speichern" style="float:right"/>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<!-- Example for 2nd tab
|
||||||
|
<div id="tabs-2">
|
||||||
|
[MESSAGE]
|
||||||
|
<form action="" method="post">
|
||||||
|
[FORMHANDLEREVENT]
|
||||||
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-12 col-md-12 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{|...|}</legend>
|
||||||
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
|
...
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input type="submit" name="submit" value="Speichern" style="float:right"/>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
-->
|
||||||
|
</div>
|
||||||
|
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
<div id="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#tabs-1">[TABTEXT1]</a></li>
|
||||||
|
</ul>
|
||||||
|
<div id="tabs-1">
|
||||||
|
[MESSAGE]
|
||||||
|
[TAB1]
|
||||||
|
[TAB1NEXT]
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
<div id="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#tabs-1">[TABTEXT1]</a></li>
|
||||||
|
</ul>
|
||||||
|
<div id="tabs-1">
|
||||||
|
<form method="post" action="#">
|
||||||
|
<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="zu_mahnen" class="switch">
|
||||||
|
<input type="checkbox" id="zu_mahnen">
|
||||||
|
<span class="slider round"></span>
|
||||||
|
</label>
|
||||||
|
<label for="zu_mahnen">{|Nur zu mahnende|}</label>
|
||||||
|
</li>
|
||||||
|
<li class="filter-item">
|
||||||
|
<label for="inkl_bezahlte" class="switch">
|
||||||
|
<input type="checkbox" id="inkl_bezahlte">
|
||||||
|
<span class="slider round"></span>
|
||||||
|
</label>
|
||||||
|
<label for="inkl_bezahlte">{|Inkl. bezahlte|}</label>
|
||||||
|
</li>
|
||||||
|
<li class="filter-item">
|
||||||
|
<label for="inkl_gesperrte" class="switch">
|
||||||
|
<input type="checkbox" id="inkl_gesperrte">
|
||||||
|
<span class="slider round"></span>
|
||||||
|
</label>
|
||||||
|
<label for="inkl_gesperrte">{|Inkl. gesperrte|}</label>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<input type="submit" class="btnBlue" name="mahnstufe_berechnen" value="{|Mahnstufe berechnen|}" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<form method="post" action="#">
|
||||||
|
[MESSAGE]
|
||||||
|
[TAB1]
|
||||||
|
[TAB1NEXT]
|
||||||
|
<fieldset>
|
||||||
|
<legend>{|Stapelverarbeitung|}</legend>
|
||||||
|
<input type="checkbox" id="auswahlalle" onchange="alleauswaehlen();" /> {|alle markieren|}
|
||||||
|
<select id="sel_aktion" name="sel_aktion">
|
||||||
|
<option value="">{|bitte wählen|} ...</option>
|
||||||
|
[ALSBEZAHLTMARKIEREN]
|
||||||
|
<option value="offen">{|als offen markieren|}</option>
|
||||||
|
<option value="mahnung_reset">{|Mahnstatus zurücksetzen|}</option>
|
||||||
|
<option value="mahnen">{|Mahnung durchführen|}</option>
|
||||||
|
<!-- <option value="email">{|Mahnung durchführen (nur E-Mail)|}</option>
|
||||||
|
<option value="email">{|Mahnung durchführen (nur Drucken)|}</option> -->
|
||||||
|
</select> {|Drucker|}: <select name="seldrucker">[SELDRUCKER]</select> <input type="submit" class="btnBlue" name="ausfuehren" value="{|ausführen|}" />
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function alleauswaehlen()
|
||||||
|
{
|
||||||
|
var wert = $('#auswahlalle').prop('checked');
|
||||||
|
$('#mahnwesen_list').find(':checkbox').prop('checked',wert);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="background-color:white">
|
<div style="background-color:white">
|
||||||
<h2 class="greyh2">Zahlungseingang</h2>
|
<h2 class="greyh2">Buchungen</h2>
|
||||||
<div style="padding:10px">
|
<div style="padding:10px">
|
||||||
[ZAHLUNGEN]
|
[ZAHLUNGEN]
|
||||||
</div>
|
</div>
|
||||||
@@ -69,15 +69,12 @@
|
|||||||
[PDFARCHIV]
|
[PDFARCHIV]
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!--
|
||||||
<div style="background-color:white">
|
<div style="background-color:white">
|
||||||
<h2 class="greyh2">Deckungsbeitrag</h2>
|
<h2 class="greyh2">Deckungsbeitrag</h2>
|
||||||
<div style="padding:10px">
|
<div style="padding:10px">
|
||||||
|
|
||||||
|
|
||||||
<div class="info">Dieses Modul ist erst ab Version Professional verfügbar</div>
|
<div class="info">Dieses Modul ist erst ab Version Professional verfügbar</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
-->
|
||||||
|
|||||||
@@ -39,9 +39,13 @@
|
|||||||
<label for="rechnungenstorniert">{|Storniert|}</label>
|
<label for="rechnungenstorniert">{|Storniert|}</label>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
<form method="post" action="#">
|
||||||
|
<input type="submit" class="btnBlue" name="zahlungsstatus_berechnen" value="{|Zahlungsstatus berechnen|}" />
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
[MESSAGE]
|
[MESSAGE]
|
||||||
<form method="post" action="#">
|
<form method="post" action="#">
|
||||||
[TAB1]
|
[TAB1]
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
<input type="checkbox" id="report-list-filter-own">
|
<input type="checkbox" id="report-list-filter-own">
|
||||||
<span class="slider round"></span>
|
<span class="slider round"></span>
|
||||||
</label>
|
</label>
|
||||||
<label for="report-list-filter-own">{|Nur eigene|}</label>
|
<label for="report-list-filter-own">{|Inkl. Vorlagen|}</label>
|
||||||
</li>
|
</li>
|
||||||
<li class="filter-item">
|
<li class="filter-item">
|
||||||
<label for="report-list-filter-favorites" class="switch">
|
<label for="report-list-filter-favorites" class="switch">
|
||||||
|
|||||||
@@ -3,12 +3,6 @@
|
|||||||
|
|
||||||
|
|
||||||
<div id="tabs">
|
<div id="tabs">
|
||||||
<ul>
|
|
||||||
<li><a href="#tabs-1">Übersicht</a></li>
|
|
||||||
<!--<li><a href="#tabs-2">neue Position anlegen</a></li>-->
|
|
||||||
<li><a href="#tabs-3">Stückliste importieren</a></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<!-- erstes tab -->
|
<!-- erstes tab -->
|
||||||
<div id="tabs-1">
|
<div id="tabs-1">
|
||||||
[MESSAGE]
|
[MESSAGE]
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li><a href="#tabs-1">Übersicht</a></li>
|
<li><a href="#tabs-1">Übersicht</a></li>
|
||||||
<li><a href="#tabs-2">neue Position anlegen</a></li>
|
<li><a href="#tabs-2">neue Position anlegen</a></li>
|
||||||
<li><a href="#tabs-3">Stückliste importieren</a></li>
|
<!-- DEPRECATED moved to importvorlage <li><a href="#tabs-3">Stückliste importieren</a></li> -->
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<!-- erstes tab -->
|
<!-- erstes tab -->
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
<fieldset>
|
<fieldset>
|
||||||
<table width="100%" border="0" class="mkTableFormular">
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
<legend>{|[STATUSICON]<b>Ticket <font color="blue">#[SCHLUESSEL]</font></b>|}</legend>
|
<legend>{|[STATUSICON]<b>Ticket <font color="blue">#[SCHLUESSEL]</font></b>|}</legend>
|
||||||
<tr><td>{|Betreff|}:</td><td><input type="text" name="betreff" id="betreff" value="[BETREFF]" size="20"></td></tr>
|
<tr><td>{|Betreff|}:</td><td><input type="text" name="betreff" id="betreff" value="[BETREFF]" style="width: 100%;"></td></tr>
|
||||||
<tr><td>{|Von|}:</td><td>[KUNDE] [MAILADRESSE]</td></tr>
|
<tr><td>{|Von|}:</td><td>[KUNDE] [MAILADRESSE]</td></tr>
|
||||||
<tr><td>{|Projekt|}:</td><td><input type="text" name="projekt" id="projekt" value="[PROJEKT]" size="20"></td></tr>
|
<tr><td>{|Projekt|}:</td><td><input type="text" name="projekt" id="projekt" value="[PROJEKT]" size="20"></td></tr>
|
||||||
<tr><td>{|Adresse|}:</td><td><input type="text" name="adresse" id="adresse" value="[ADRESSE]" size="20"><a href="index.php?module=adresse&action=edit&id=[ADRESSE_ID]"><img src="./themes/new/images/forward.svg" border="0" style="top:6px; position:relative"></a></td></tr>
|
<tr><td>{|Adresse|}:</td><td><input type="text" name="adresse" id="adresse" value="[ADRESSE]" size="20"><a href="index.php?module=adresse&action=edit&id=[ADRESSE_ID]"><img src="./themes/new/images/forward.svg" border="0" style="top:6px; position:relative"></a></td></tr>
|
||||||
@@ -49,6 +49,7 @@
|
|||||||
<legend>{|Aktionen|}</legend>
|
<legend>{|Aktionen|}</legend>
|
||||||
<td><button name="submit" value="speichern" class="ui-button-icon" style="width:100%;">Speichern</button></td></tr>
|
<td><button name="submit" value="speichern" class="ui-button-icon" style="width:100%;">Speichern</button></td></tr>
|
||||||
<td><button name="submit" value="neue_email" class="ui-button-icon" style="width:100%;">Neue E-Mail</button></td></tr>
|
<td><button name="submit" value="neue_email" class="ui-button-icon" style="width:100%;">Neue E-Mail</button></td></tr>
|
||||||
|
<td><button name="submit" formaction="index.php?module=ticketregeln&action=create" value="regel" class="ui-button-icon" style="width:100%;">Ticketregel erstellen</button><input hidden type="text" name="ticketid" value="[ID]"></td></tr>
|
||||||
</table>
|
</table>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
@@ -61,4 +62,3 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -17,18 +17,18 @@
|
|||||||
<div class="col-xs-12 col-md-12 col-md-height">
|
<div class="col-xs-12 col-md-12 col-md-height">
|
||||||
<div class="inside inside-full-height">
|
<div class="inside inside-full-height">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{|Ticketregeln|}</legend><i>Ticketregeln fü die Verarbeitung bei Ticketeingang. Platzhalter werden mit % angegeben.</i>
|
<legend>{|Ticketregeln|}</legend><i>Ticketregeln für die Verarbeitung bei Ticketeingang. Platzhalter werden mit % angegeben.</i>
|
||||||
<table width="100%" border="0" class="mkTableFormular">
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
<tr><td>{|E-Mail Empfänger|}:</td><td><input type="text" name="empfaenger_email" value="[EMPFAENGER_EMAIL]" size="40"></td></tr>
|
<tr><td>{|E-Mail Empfänger|}:</td><td><input type="text" name="empfaenger_email" value="[EMPFAENGER_EMAIL]" size="40"></td></tr>
|
||||||
<tr><td>{|E-Mail Verfasser|}:</td><td><input type="text" name="sender_email" value="[SENDER_EMAIL]" size="40"></td></tr>
|
<tr><td>{|E-Mail Verfasser|}:</td><td><input type="text" name="sender_email" value="[SENDER_EMAIL]" size="40"></td></tr>
|
||||||
<tr><td>{|Verfasser Name|}:</td><td><input type="text" name="name" value="[NAME]" size="40"></td></tr>
|
<tr><td>{|Verfasser Name|}:</td><td><input type="text" name="name" value="[NAME]" size="40"></td></tr>
|
||||||
<tr><td>{|Betreff|}:</td><td><input type="text" name="betreff" value="[BETREFF]" size="40"></td></tr>
|
<tr><td>{|Betreff|}:</td><td><input type="text" name="betreff" value="[BETREFF]" size="40"></td></tr>
|
||||||
<tr><td>{|Papierkorb|}:</td><td><input type="text" name="spam" value="[SPAM]" size="40"></td></tr>
|
<tr><td>{|Papierkorb|}:</td><td><input type="checkbox" name="spam" value="1" [SPAM] size="40"></td></tr>
|
||||||
<tr><td>{|Persönlich|}:</td><td><input type="text" name="persoenlich" value="[PERSOENLICH]" size="40"></td></tr>
|
<tr><td>{|Persönlich|}:</td><td><input type="checkbox" name="persoenlich" value="1" [PERSOENLICH] size="40"></td></tr>
|
||||||
<tr><td>{|Prio|}:</td><td><input type="text" name="prio" value="[PRIO]" size="40"></td></tr>
|
<tr><td>{|Prio|}:</td><td><input type="checkbox" name="prio" value="1" [PRIO] size="40"></td></tr>
|
||||||
<tr><td>{|DSGVO|}:</td><td><input type="text" name="dsgvo" value="[DSGVO]" size="40"></td></tr>
|
<tr><td>{|DSGVO|}:</td><td><input type="checkbox" name="dsgvo" value="1" [DSGVO] size="40"></td></tr>
|
||||||
<tr><td>{|Verantwortliche Warteschlange|}:</td><td><input type="text" name="warteschlange" id="warteschlange" value="[WARTESCHLANGE]" size="40"></td></tr>
|
<tr><td>{|Verantwortliche Warteschlange|}:</td><td><input type="text" name="warteschlange" id="warteschlange" value="[WARTESCHLANGE]" size="40"></td></tr>
|
||||||
<tr><td>{|Aktiv|}:</td><td><input type="text" name="aktiv" value="[AKTIV]" size="40"></td></tr>
|
<tr><td>{|Aktiv|}:</td><td><input type="checkbox" name="aktiv" value="1" [AKTIV] size="40"></td></tr>
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
@@ -36,31 +36,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Example for 2nd row
|
|
||||||
<div class="row">
|
|
||||||
<div class="row-height">
|
|
||||||
<div class="col-xs-12 col-md-12 col-md-height">
|
|
||||||
<div class="inside inside-full-height">
|
|
||||||
<fieldset>
|
|
||||||
<legend>{|Another legend|}</legend>
|
|
||||||
<table width="100%" border="0" class="mkTableFormular">
|
|
||||||
<tr><td>{|Empfaenger_email|}:</td><td><input type="text" name="empfaenger_email" value="[EMPFAENGER_EMAIL]" size="40"></td></tr>
|
|
||||||
<tr><td>{|Sender_email|}:</td><td><input type="text" name="sender_email" value="[SENDER_EMAIL]" size="40"></td></tr>
|
|
||||||
<tr><td>{|Name|}:</td><td><input type="text" name="name" value="[NAME]" size="40"></td></tr>
|
|
||||||
<tr><td>{|Betreff|}:</td><td><input type="text" name="betreff" value="[BETREFF]" size="40"></td></tr>
|
|
||||||
<tr><td>{|Spam|}:</td><td><input type="text" name="spam" value="[SPAM]" size="40"></td></tr>
|
|
||||||
<tr><td>{|Persoenlich|}:</td><td><input type="text" name="persoenlich" value="[PERSOENLICH]" size="40"></td></tr>
|
|
||||||
<tr><td>{|Prio|}:</td><td><input type="text" name="prio" value="[PRIO]" size="40"></td></tr>
|
|
||||||
<tr><td>{|Dsgvo|}:</td><td><input type="text" name="dsgvo" value="[DSGVO]" size="40"></td></tr>
|
|
||||||
<tr><td>{|Warteschlange|}:</td><td><input type="text" name="warteschlange" value="[WARTESCHLANGE]" size="40"></td></tr>
|
|
||||||
<tr><td>{|Aktiv|}:</td><td><input type="text" name="aktiv" value="[AKTIV]" size="40"></td></tr>
|
|
||||||
|
|
||||||
</table>
|
|
||||||
</fieldset>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div> -->
|
|
||||||
<input type="submit" name="submit" value="Speichern" style="float:right"/>
|
<input type="submit" name="submit" value="Speichern" style="float:right"/>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -23,6 +23,9 @@ SPDX-License-Identifier: LicenseRef-EGPL-3.1
|
|||||||
[MODULEINSTALLIERT]
|
[MODULEINSTALLIERT]
|
||||||
</fieldset>
|
</fieldset>
|
||||||
[TAB1NEXT]
|
[TAB1NEXT]
|
||||||
|
<form id="neu" action="index.php?module=versandarten&action=neusonstige" method="post">
|
||||||
|
<button name="submit" value="neusonstige" class="ui-button-icon">Versandart ohne Modul anlegen</button>
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- tab view schließen -->
|
<!-- tab view schließen -->
|
||||||
|
|||||||
@@ -0,0 +1,80 @@
|
|||||||
|
<div id="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#tabs-1"></a></li>
|
||||||
|
</ul>
|
||||||
|
<div id="tabs-1">
|
||||||
|
[MESSAGE]
|
||||||
|
<form action="index.php?module=versandpakete&action=add&id=[ID]&lieferschein=[LIEFERSCHEIN_ID]" method="post">
|
||||||
|
[FORMHANDLEREVENT]
|
||||||
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-14 col-md-10 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{|Hinzufügen von Artikeln aus <a href="index.php?module=lieferschein&action=edit&id=[LIEFERSCHEIN_ID]"><b>Lieferschein [LIEFERSCHEIN]</b></a> zu Versandpaket <b>Nr. [ID]</b>|}</legend>
|
||||||
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Artikel|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="artikel" id="artikel" value="" size="40" autofocus>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Menge|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="number" name="menge" id="menge" value="" min="1" size="40">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-14 col-md-2 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{|Aktionen|}</legend>
|
||||||
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
|
<tr><td><button name="submit" value="hinzufuegen" class="ui-button-icon" style="width:100%;">Hinzufügen</button></td></tr>
|
||||||
|
<tr><td><button name="submit" value="lieferschein_komplett_hinzufuegen" class="ui-button-icon" style="width:100%;">Alle hinzufügen</button></td></tr>
|
||||||
|
<tr><td><button form="back" name="submit" value="fertig" class="ui-button-icon" style="width:100%;">Fertig</button></td></tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-12 col-md-12 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{|Lieferscheininhalt|}</legend>
|
||||||
|
[LIEFERSCHEININHALT]
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-12 col-md-12 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{|Paketinhalt|}</legend>
|
||||||
|
[PAKETINHALT]
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input type="text" name="lieferschein" id="lieferschein" value="[LIEFERSCHEIN]" size="40" hidden>
|
||||||
|
</form>
|
||||||
|
<form action="index.php?module=versandpakete&action=edit&id=[VERSANDPAKET_ID]" id="back" method="post">
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
@@ -0,0 +1,147 @@
|
|||||||
|
<div id="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#tabs-1"></a></li>
|
||||||
|
</ul>
|
||||||
|
<div id="tabs-1">
|
||||||
|
[MESSAGE]
|
||||||
|
[FORMHANDLEREVENT]
|
||||||
|
<form id="save" action="" method="post">
|
||||||
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-14 col-md-6 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<legend>
|
||||||
|
{|<b>Versandpaket Nr. [ID]</b> vom [DATUM]<span [NO_ADDRESS_HIDDEN]> für Adresse '[ADRESSE]'|}</span>
|
||||||
|
</legend>
|
||||||
|
[ICONS]
|
||||||
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Status|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="" id="" value="[STATUS]" size="40" disabled>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Versender|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="" id="" value="[VERSENDER]" size="40" disabled>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Versandart|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="" id="" value="[VERSANDART]" size="40" disabled>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Tracking|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="tracking" id="tracking" value="[TRACKING]" size="40" [TRACKING_DISABLED]>
|
||||||
|
<a href="[PAKETMARKE_LINK]" [PAKETMARKE_HIDDEN]>
|
||||||
|
<img src="themes/new/images/portogo.png" border="0" title="Zur Paketmarke" style="top:6px; position:relative">
|
||||||
|
</a>
|
||||||
|
<a href="[TRACKING_LINK]" [TRACKING_LINK_HIDDEN]>
|
||||||
|
<img src="themes/new/images/forward.svg" border="0" title="Zum Tracking" style="top:6px; position:relative">
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr [TRACKING_LINK_EDIT_HIDDEN]>
|
||||||
|
<td>
|
||||||
|
{|Tracking link|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="tracking_link" id="tracking_link" value="[TRACKING_LINK]" size="40" [TRACKING_DISABLED]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Gewicht Kg|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="number" name="" id="" value="[GEWICHT]" size="40" disabled>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Bemerkung|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<textarea name="bemerkung" id="bemerkung" rows="3" style="width:100%;">[BEMERKUNG]</textarea>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-14 col-md-6 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset >
|
||||||
|
<legend>{|Lieferschein|}</legend>
|
||||||
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
|
<tr [LIEFERSCHEIN_OHNE_POS_HIDDEN]>
|
||||||
|
<td>
|
||||||
|
{|Zugeordnet|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input form="add" type="text" name="" id="" value="[LIEFERSCHEIN_OHNE_POS]" size="40" disabled>
|
||||||
|
<a href="index.php?module=lieferschein&action=edit&id=[LIEFERSCHEIN_OHNE_POS_ID]"><img src="themes/new/images/forward.svg" title="Zum Lieferschein" border="0" style="top:6px; position:relative"></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr [LIEFERSCHEIN_ADD_POS_HIDDEN]>
|
||||||
|
<td>
|
||||||
|
{|Lieferschein für Artikel hinzufügen|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input form="add" type="text" name="lieferschein" id="lieferschein" value="[LIEFERSCHEIN]" autofocus size="40">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-14 col-md-2 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{|Aktionen|}</legend>
|
||||||
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
|
<tr><td><button form="save" name="submit" value="speichern" class="ui-button-icon" style="width:100%;">Speichern</button></td></tr>
|
||||||
|
<tr [LIEFERSCHEIN_ADD_POS_HIDDEN]><td><button form="add" name="submit" value="lieferschein_hinzufuegen" class="ui-button-icon" style="width:100%;">Artikel hinzufügen</button></td></tr>
|
||||||
|
<tr [LIEFERSCHEIN_ADD_POS_HIDDEN]><td><button form="add" name="submit" value="lieferschein_komplett_hinzufuegen" class="ui-button-icon" style="width:100%;">Alle Artikel hinzufügen</button></td></tr>
|
||||||
|
<tr [PAKETMARKE_ADD_HIDDEN]><td><button form="paketmarke" name="submit" value="paketmarke" class="ui-button-icon" style="width:100%;">Paketmarke drucken</button></td></tr>
|
||||||
|
<tr [ABSENDEN_HIDDEN]><td><button name="submit" value="absenden" class="ui-button-icon" style="width:100%;">Absenden</button></td></tr>
|
||||||
|
<tr [ABSCHLIESSEN_HIDDEN]><td><button name="submit" value="abschliessen" class="ui-button-icon" style="width:100%;">Abschließen</button></td></tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<form id="add" action="index.php?module=versandpakete&action=add&id=[ID]" method="post">
|
||||||
|
</form>
|
||||||
|
<form id="paketmarke" action="index.php?module=versandpakete&action=paketmarke&id=[ID]" method="post">
|
||||||
|
</form>
|
||||||
|
<div class="row" [LIEFERSCHEIN_POS_HIDDEN]>
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-12 col-md-12 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{|Paketinhalt|}</legend>
|
||||||
|
[PAKETINHALT]
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
<div id="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#tabs-1">[TABTEXT1]</a></li>
|
||||||
|
</ul>
|
||||||
|
<div id="tabs-1">
|
||||||
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-12 col-md-12 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{|<b>Lieferung zu <font color="blue"><a href="index.php?module=lieferschein&action=edit&id=[BELEGID]">Lieferschein [BELEGNR]</a></font></b>|}</legend>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
[MESSAGE]
|
||||||
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-12 col-md-12 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<form action="index.php?module=versandpakete&action=stapelverarbeitung&from=lieferung&id=[FROMID]" id="frmauto" name="frmauto" method="post">
|
||||||
|
[TAB1]
|
||||||
|
<fieldset>
|
||||||
|
<table>
|
||||||
|
<legend>Stapelverarbeitung</legend>
|
||||||
|
<tr>
|
||||||
|
<tr><td>{|Status|}:</td><td><select name="status">[STATUS_OPTIONS]</select></td></tr>
|
||||||
|
<td><input type="checkbox" value="1" id="autoalle" /> alle markieren </td><td><input type="submit" class="btnBlue" name="status_setzen" value="{|Status setzen|}" /></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
[TAB1NEXT]
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
$('#autoalle').on('change',function(){
|
||||||
|
var wert = $(this).prop('checked');
|
||||||
|
$('#versandpakete_list').find('input[type="checkbox"]').prop('checked',wert);
|
||||||
|
$('#versandpakete_list').find('input[type="checkbox"]').first().trigger('change');
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
<div id="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#tabs-1">[TABTEXT1]</a></li>
|
||||||
|
</ul>
|
||||||
|
<div id="tabs-1">
|
||||||
|
[MESSAGE]
|
||||||
|
<div class="filter-box filter-usersave">
|
||||||
|
<div class="filter-block filter-inline">
|
||||||
|
<div class="filter-title">{|Filter|}</div>
|
||||||
|
<ul class="filter-list">
|
||||||
|
[STATUSFILTER]
|
||||||
|
<li class="filter-item">
|
||||||
|
<label for="unterwegs" class="switch">
|
||||||
|
<input type="checkbox" id="unterwegs">
|
||||||
|
<span class="slider round"></span>
|
||||||
|
</label>
|
||||||
|
<label for="unterwegs">{|Unterwegs|}</label>
|
||||||
|
</li>
|
||||||
|
<li class="filter-item">
|
||||||
|
<label for="geschlossene" class="switch">
|
||||||
|
<input type="checkbox" id="geschlossene">
|
||||||
|
<span class="slider round"></span>
|
||||||
|
</label>
|
||||||
|
<label for="geschlossene">{|Zzgl. abgeschlossen|}</label>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
[TAB1]
|
||||||
|
[TAB1NEXT]
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
<div id="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#tabs-1">[TABTEXT1]</a></li>
|
||||||
|
</ul>
|
||||||
|
<div id="tabs-1">
|
||||||
|
[MESSAGE]
|
||||||
|
<div class="filter-box filter-usersave">
|
||||||
|
<div class="filter-block filter-inline">
|
||||||
|
<div class="filter-title">{|Filter|}</div>
|
||||||
|
<ul class="filter-list">
|
||||||
|
[STATUSFILTER]
|
||||||
|
<li class="filter-item">
|
||||||
|
<label for="geschlossene" class="switch">
|
||||||
|
<input type="checkbox" id="geschlossene">
|
||||||
|
<span class="slider round"></span>
|
||||||
|
</label>
|
||||||
|
<label for="geschlossene">{|Zzgl. abgeschlossen|}</label>
|
||||||
|
</li>
|
||||||
|
<li class="filter-item">
|
||||||
|
<label for="stornierte" class="switch">
|
||||||
|
<input type="checkbox" id="stornierte">
|
||||||
|
<span class="slider round"></span>
|
||||||
|
</label>
|
||||||
|
<label for="stornierte">{|Zzgl. Papierkorb|}</label>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<form action="index.php?module=versandpakete&action=stapelverarbeitung" id="frmauto" name="frmauto" method="post">
|
||||||
|
[TAB1]
|
||||||
|
<fieldset>
|
||||||
|
<table>
|
||||||
|
<legend>Stapelverarbeitung</legend>
|
||||||
|
<tr>
|
||||||
|
<tr><td>{|Status|}:</td><td><select name="status">[STATUS_OPTIONS]</select></td></tr>
|
||||||
|
<td><input type="checkbox" value="1" id="autoalle" /> alle markieren </td><td><input type="submit" class="btnBlue" name="status_setzen" value="{|Status setzen|}" /></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
[TAB1NEXT]
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
$('#autoalle').on('change',function(){
|
||||||
|
var wert = $(this).prop('checked');
|
||||||
|
$('#versandpakete_list').find('input[type="checkbox"]').prop('checked',wert);
|
||||||
|
$('#versandpakete_list').find('input[type="checkbox"]').first().trigger('change');
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
@@ -1,5 +1,10 @@
|
|||||||
|
<div id="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#tabs-1">[TABTEXT1]</a></li>
|
||||||
|
</ul>
|
||||||
<div id="tabs-1">
|
<div id="tabs-1">
|
||||||
[MESSAGE]
|
[MESSAGE]
|
||||||
[TAB1]
|
[TAB1]
|
||||||
[TAB1NEXT]
|
[TAB1NEXT]
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|||||||
@@ -1,7 +1,11 @@
|
|||||||
|
<!--
|
||||||
<table id="table[MD5]">
|
<table id="table[MD5]">
|
||||||
<tr><td>{|Lieferschein|}:</td><td><input type="checkbox" onchange="lsclick[MD5]();" id="beiback_lieferschein[MD5]" disabled value="1" [BEIPACK_LIEFERSCHEIN] /></td><td><span id="lsnr[MD5]">[LSNR]</span></td><td><input type="button" value="{|Belege ändern|}" style="cursor:hand;" onclick="editclick[MD5]();" /></td></tr>
|
<tr><td>{|Lieferschein|}:</td><td><input type="checkbox" onchange="lsclick[MD5]();" id="beiback_lieferschein[MD5]" disabled value="1" [BEIPACK_LIEFERSCHEIN] /></td><td><span id="lsnr[MD5]">[LSNR]</span></td>
|
||||||
|
<td><input type="button" value="{|Belege ändern|}" style="cursor:hand;" onclick="editclick[MD5]();" /></td>
|
||||||
|
</tr>
|
||||||
<tr><td>{|Rechnung|}:</td><td><input type="checkbox" onchange="reclick[MD5]();" id="beiback_rechnung[MD5]" disabled value="1" [BEIPACK_RECHNUNG] /></td><td><span id="renr[MD5]">[RENR]</span></td><td></td></tr>
|
<tr><td>{|Rechnung|}:</td><td><input type="checkbox" onchange="reclick[MD5]();" id="beiback_rechnung[MD5]" disabled value="1" [BEIPACK_RECHNUNG] /></td><td><span id="renr[MD5]">[RENR]</span></td><td></td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
-->
|
||||||
|
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr><td width="100%">[ARTIKEL]</td></tr>
|
<tr><td width="100%">[ARTIKEL]</td></tr>
|
||||||
|
|||||||
@@ -12,10 +12,10 @@
|
|||||||
<div class="row-height">
|
<div class="row-height">
|
||||||
<div class="col-xs-12 col-md-8 col-md-height">
|
<div class="col-xs-12 col-md-8 col-md-height">
|
||||||
<div class="inside inside-full-height">
|
<div class="inside inside-full-height">
|
||||||
|
|
||||||
<div class="filter-box filter-usersave">
|
<div class="filter-box filter-usersave">
|
||||||
<div class="filter-block filter-inline">
|
<div class="filter-block filter-inline">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
|
<legend>{|Neuen Wareneingang erzeugen|}</legend>
|
||||||
<div class="filter-title">{|Filter|}</div>
|
<div class="filter-title">{|Filter|}</div>
|
||||||
<ul class="filter-list">
|
<ul class="filter-list">
|
||||||
<li class="filter-item">
|
<li class="filter-item">
|
||||||
|
|||||||
@@ -11,9 +11,7 @@
|
|||||||
<input type="hidden" id="paketannahme_id" value="[ID]" />
|
<input type="hidden" id="paketannahme_id" value="[ID]" />
|
||||||
[BEFORETAB1]
|
[BEFORETAB1]
|
||||||
<div id="tabs-1">
|
<div id="tabs-1">
|
||||||
|
|
||||||
[TAB1START]
|
[TAB1START]
|
||||||
|
|
||||||
[MESSAGE1]
|
[MESSAGE1]
|
||||||
<form action="" method="post">
|
<form action="" method="post">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@@ -26,7 +24,9 @@
|
|||||||
<tr><td>{|Lieferschein-Nr.|}:</td><td><input type=text size="40" name="lsnr" value=[LSNR]></td></tr>
|
<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>{|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>{|Bemerkung|}:</td><td><textarea rows="5" cols="40" name="bemerkung">[BEMERKUNG]</textarea></td></tr>
|
||||||
<tr><td><input type="submit" name="speichern" class="btnGreenNew" value="Speichern"></td>
|
[ISLIEFERANTSTART]
|
||||||
|
<tr><td>{|Ziellager|}:</td><td><input type=text size="40" name="ziellager" id="ziellager" value=[LAGER]><br><i>Wenn nicht angegeben, wird das Standardlager des Artikels bebucht.</i></td></tr>
|
||||||
|
[ISLIEFERANTENDE]
|
||||||
</table>
|
</table>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
@@ -34,17 +34,40 @@
|
|||||||
<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>
|
|
||||||
[BUTTONS]
|
[BUTTONS]
|
||||||
[BEFOREFRM]
|
[BEFOREFRM]
|
||||||
[AFTERFRM]
|
[AFTERFRM]
|
||||||
[DISTRIINHALTBUTTONS]
|
[DISTRIINHALTBUTTONS]
|
||||||
<input type="submit" name="abschliessen" id="btnabschliessen" class="btnGreenNew" value="Paketinhalt ist erfasst">
|
|
||||||
[BEFOREMANUELLERFASSEN]
|
|
||||||
<input type="submit" name="manuellerfassen" class="btnBlueNew" value="Artikel manuell erfassen">
|
|
||||||
[AFTERMANUELLERFASSEN]
|
|
||||||
[BEFOREFRM]
|
[BEFOREFRM]
|
||||||
[AFTERFRM]
|
[AFTERFRM]
|
||||||
|
<button name="submit" class="ui-button-icon" style="width:100%;" value="speichern" hidden="true"></button>
|
||||||
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
|
<legend>{|Aktionen|}</legend>
|
||||||
|
[BEFOREMANUELLERFASSEN]
|
||||||
|
<tr><td>
|
||||||
|
<button name="submit" class="ui-button-icon" style="width:100%;" value="manuellerfassen">{|Artikel manuell erfassen|}</button>
|
||||||
|
</td></tr>
|
||||||
|
[AFTERMANUELLERFASSEN]
|
||||||
|
[ISLIEFERANTSTART]
|
||||||
|
<tr><td>
|
||||||
|
<button name="submit" class="ui-button-icon" style="width:100%;" value="fuellen">{|Aus Bestellungen füllen|}</button>
|
||||||
|
</td></tr>
|
||||||
|
<tr><td>
|
||||||
|
<button name="submit" class="ui-button-icon" style="width:100%;" value="leeren">{|Leeren|}</button>
|
||||||
|
</td></tr>
|
||||||
|
[ISLIEFERANTENDE]
|
||||||
|
<tr><td>
|
||||||
|
<button name="submit" class="ui-button-icon" style="width:100%;" value="speichern">{|Speichern|}</button>
|
||||||
|
</td></tr>
|
||||||
|
[ISLIEFERANTSTART]
|
||||||
|
<tr><td>
|
||||||
|
<button name="submit" class="ui-button-icon" style="width:100%;" value="buchen">{|Buchen|}</button>
|
||||||
|
</td></tr>
|
||||||
|
[ISLIEFERANTENDE]
|
||||||
|
<tr><td>
|
||||||
|
<button name="submit" class="ui-button-icon" style="width:100%;" value="abschliessen">{|Abschließen|}</button>
|
||||||
|
</td></tr>
|
||||||
|
</table>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -112,6 +112,10 @@ $width = array('10%'); // Fill out manually later
|
|||||||
// Write to database
|
// Write to database
|
||||||
|
|
||||||
// Add checks here
|
// Add checks here
|
||||||
|
$input['projekt'] = $this->app->erp->ReplaceProjekt(true,$input['projekt'],true); // Parameters: Target db?, value, from form?
|
||||||
|
$input['ticketprojekt'] = $this->app->erp->ReplaceProjekt(true,$input['ticketprojekt'],true); // Parameters: Target db?, value, from form?
|
||||||
|
$input['adresse'] = $this->app->erp->ReplaceAdresse(true,$input['adresse'],true); // Parameters: Target db?, value, from form?
|
||||||
|
$input['ticketqueue'] = explode(" ",$input['ticketqueue'])[0]; // Just the label
|
||||||
|
|
||||||
$columns = "id, ";
|
$columns = "id, ";
|
||||||
$values = "$id, ";
|
$values = "$id, ";
|
||||||
@@ -168,6 +172,17 @@ $width = array('10%'); // Fill out manually later
|
|||||||
$this->app->Tpl->Add('ANGEZEIGTERNAME', $angezeigtername);
|
$this->app->Tpl->Add('ANGEZEIGTERNAME', $angezeigtername);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
$this->app->YUI->CkEditor("signatur","internal", null, 'JQUERY');
|
||||||
|
$this->app->YUI->CkEditor("autoresponderbetreff","internal", null, 'JQUERY');
|
||||||
|
$this->app->YUI->CkEditor("autorespondertext","internal", null, 'JQUERY');
|
||||||
|
$this->app->Tpl->Set('PROJEKT',$this->app->erp->ReplaceProjekt(false,$result[0]['projekt'],false)); // Parameters: Target db?, value, from form?
|
||||||
|
$this->app->Tpl->Set('TICKETPROJEKT',$this->app->erp->ReplaceProjekt(false,$result[0]['ticketprojekt'],false)); // Parameters: Target db?, value, from form?
|
||||||
|
$this->app->Tpl->Set('ADRESSE', $this->app->erp->ReplaceAdresse(false,$result[0]['adresse'],false)); // Convert ID to form display
|
||||||
|
$this->app->YUI->AutoComplete("projekt","projektname",1);
|
||||||
|
$this->app->YUI->AutoComplete("ticketprojekt","projektname",1);
|
||||||
|
$this->app->YUI->AutoComplete("adresse","adresse");
|
||||||
|
$this->app->YUI->AutoComplete("ticketqueue","warteschlangename");
|
||||||
|
$this->app->YUI->AutoComplete("ticketprojekt","projektname",1);
|
||||||
$this->app->Tpl->Parse('PAGE', "emailbackup_edit.tpl");
|
$this->app->Tpl->Parse('PAGE', "emailbackup_edit.tpl");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -285,7 +300,7 @@ $width = array('10%'); // Fill out manually later
|
|||||||
$result[0]['email'],
|
$result[0]['email'],
|
||||||
$result[0]['angezeigtername'],
|
$result[0]['angezeigtername'],
|
||||||
'OpenXE ERP: Testmail',
|
'OpenXE ERP: Testmail',
|
||||||
'Dies ist eine Testmail für Account "'.$result[0]['email'].'".',
|
utf8_encode('Dies ist eine Testmail für Account "'.$result[0]['email'].'".'),
|
||||||
'',0,false,'','',
|
'',0,false,'','',
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -77,6 +77,14 @@ class Exportbuchhaltung
|
|||||||
$rgchecked = $this->app->Secure->GetPOST("rechnung");
|
$rgchecked = $this->app->Secure->GetPOST("rechnung");
|
||||||
$gschecked = $this->app->Secure->GetPOST("gutschrift");
|
$gschecked = $this->app->Secure->GetPOST("gutschrift");
|
||||||
$vbchecked = $this->app->Secure->GetPOST("verbindlichkeit");
|
$vbchecked = $this->app->Secure->GetPOST("verbindlichkeit");
|
||||||
|
$diffignore = $this->app->Secure->GetPOST("diffignore");
|
||||||
|
$sachkonto = $this->app->Secure->GetPOST('sachkonto');
|
||||||
|
|
||||||
|
$account_id = null;
|
||||||
|
if (!empty($sachkonto)) {
|
||||||
|
$sachkonto_kennung = explode(' ',$sachkonto)[0];
|
||||||
|
$account_id = $this->app->DB->SelectArr("SELECT id from kontorahmen WHERE sachkonto = '".$sachkonto_kennung."'")[0]['id'];
|
||||||
|
}
|
||||||
|
|
||||||
$msg = "";
|
$msg = "";
|
||||||
|
|
||||||
@@ -151,7 +159,7 @@ class Exportbuchhaltung
|
|||||||
if ($dataok) {
|
if ($dataok) {
|
||||||
$filename = "EXTF_".date('Ymd') . "_Buchungsstapel_DATEV_export.csv";
|
$filename = "EXTF_".date('Ymd') . "_Buchungsstapel_DATEV_export.csv";
|
||||||
try {
|
try {
|
||||||
$csv = $this->DATEV_Buchuchungsstapel($rgchecked, $gschecked, $vbchecked, $buchhaltung_berater, $buchhaltung_mandant, $buchhaltung_wj_beginn, $buchhaltung_sachkontenlaenge, $von, $bis, $projekt, $filename);
|
$csv = $this->DATEV_Buchuchungsstapel($rgchecked, $gschecked, $vbchecked, $buchhaltung_berater, $buchhaltung_mandant, $buchhaltung_wj_beginn, $buchhaltung_sachkontenlaenge, $von, $bis, $projekt, $filename, $diffignore, $sachkonto_kennung);
|
||||||
header("Content-Disposition: attachment; filename=" . $filename);
|
header("Content-Disposition: attachment; filename=" . $filename);
|
||||||
header("Pragma: no-cache");
|
header("Pragma: no-cache");
|
||||||
header("Expires: 0");
|
header("Expires: 0");
|
||||||
@@ -183,25 +191,28 @@ class Exportbuchhaltung
|
|||||||
$this->app->YUI->AutoComplete("projekt", "projektname", 1);
|
$this->app->YUI->AutoComplete("projekt", "projektname", 1);
|
||||||
$this->app->YUI->DatePicker("von");
|
$this->app->YUI->DatePicker("von");
|
||||||
$this->app->YUI->DatePicker("bis");
|
$this->app->YUI->DatePicker("bis");
|
||||||
|
$this->app->YUI->AutoComplete('sachkonto', 'sachkonto');
|
||||||
|
|
||||||
$this->app->Tpl->SET('MESSAGE', $msg);
|
$this->app->Tpl->SET('MESSAGE', $msg);
|
||||||
|
|
||||||
$this->app->Tpl->SET('RGCHECKED',$rgchecked?'checked':'');
|
$this->app->Tpl->SET('RGCHECKED',$rgchecked?'checked':'');
|
||||||
$this->app->Tpl->SET('GSCHECKED',$gschecked?'checked':'');
|
$this->app->Tpl->SET('GSCHECKED',$gschecked?'checked':'');
|
||||||
$this->app->Tpl->SET('VBCHECKED',$vbchecked?'checked':'');
|
$this->app->Tpl->SET('VBCHECKED',$vbchecked?'checked':'');
|
||||||
|
$this->app->Tpl->SET('DIFFIGNORE',$diffignore?'checked':'');
|
||||||
|
|
||||||
$this->app->Tpl->SET('VON', $von_form);
|
$this->app->Tpl->SET('VON', $von_form);
|
||||||
$this->app->Tpl->SET('BIS', $bis_form);
|
$this->app->Tpl->SET('BIS', $bis_form);
|
||||||
$this->app->Tpl->SET('PROJEKT', $projektkuerzel);
|
$this->app->Tpl->SET('PROJEKT', $projektkuerzel);
|
||||||
|
$this->app->Tpl->SET('SACHKONTO', $sachkonto);
|
||||||
|
|
||||||
$this->app->Tpl->Parse('PAGE', "exportbuchhaltung_export.tpl");
|
$this->app->Tpl->Parse('PAGE', "exportbuchhaltung_export.tpl");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create DATEV Buchhungsstapel
|
* Create DATEV Buchhungsstapel
|
||||||
* @throws ConsistencyException with string (list of items) if consistency check fails
|
* @throws ConsistencyException with string (list of items) if consistency check fails and no sachkonto for differences is given
|
||||||
*/
|
*/
|
||||||
function DATEV_Buchuchungsstapel(bool $rechnung, bool $gutschrift, bool $verbindlichkeit, string $berater, string $mandant, datetime $wj_beginn, int $sachkontenlaenge, datetime $von, datetime $bis, int $projekt = 0, string $filename = 'EXTF_Buchungsstapel_DATEV_export.csv') : string {
|
function DATEV_Buchuchungsstapel(bool $rechnung, bool $gutschrift, bool $verbindlichkeit, string $berater, string $mandant, datetime $wj_beginn, int $sachkontenlaenge, datetime $von, datetime $bis, int $projekt = 0, string $filename = 'EXTF_Buchungsstapel_DATEV_export.csv', $diffignore = false, $sachkonto_differences) : string {
|
||||||
|
|
||||||
$datev_header_definition = array (
|
$datev_header_definition = array (
|
||||||
'1' => 'Kennzeichen',
|
'1' => 'Kennzeichen',
|
||||||
@@ -499,7 +510,8 @@ class Exportbuchhaltung
|
|||||||
b.".$typ['field_date']." as datum,
|
b.".$typ['field_date']." as datum,
|
||||||
p.id as pos_id,
|
p.id as pos_id,
|
||||||
".$typ['field_betrag_gesamt']." as betrag_gesamt,
|
".$typ['field_betrag_gesamt']." as betrag_gesamt,
|
||||||
".$typ['field_betrag']." as betrag,
|
b.waehrung,
|
||||||
|
ROUND(".$typ['field_betrag'].",2) as betrag,
|
||||||
".$typ['field_gegenkonto']." as gegenkonto,
|
".$typ['field_gegenkonto']." as gegenkonto,
|
||||||
p.waehrung as pos_waehrung
|
p.waehrung as pos_waehrung
|
||||||
FROM
|
FROM
|
||||||
@@ -514,14 +526,19 @@ class Exportbuchhaltung
|
|||||||
b.".$typ['field_date']." BETWEEN '".date_format($von,"Y-m-d")."' AND '".date_format($bis,"Y-m-d")."' AND (b.projekt=$projekt OR $projekt=0)".$typ['condition_where'];
|
b.".$typ['field_date']." BETWEEN '".date_format($von,"Y-m-d")."' AND '".date_format($bis,"Y-m-d")."' AND (b.projekt=$projekt OR $projekt=0)".$typ['condition_where'];
|
||||||
|
|
||||||
// Check consistency of positions
|
// Check consistency of positions
|
||||||
|
if (!$diffignore) {
|
||||||
$sql_check = "SELECT *
|
$sql_check = "SELECT *
|
||||||
FROM
|
FROM
|
||||||
(
|
(
|
||||||
SELECT
|
SELECT
|
||||||
belegnr,
|
belegnr,
|
||||||
|
datum,
|
||||||
betrag_gesamt,
|
betrag_gesamt,
|
||||||
ROUND(SUM(betrag),2) AS betrag_summe
|
ROUND(SUM(betrag),2) AS betrag_summe,
|
||||||
|
waehrung,
|
||||||
|
kundennummer,
|
||||||
|
ustid,
|
||||||
|
auftrag
|
||||||
FROM
|
FROM
|
||||||
(".$sql.") posten
|
(".$sql.") posten
|
||||||
GROUP BY
|
GROUP BY
|
||||||
@@ -531,9 +548,43 @@ class Exportbuchhaltung
|
|||||||
|
|
||||||
$result = $this->app->DB->SelectArr($sql_check);
|
$result = $this->app->DB->SelectArr($sql_check);
|
||||||
if (!empty($result)) {
|
if (!empty($result)) {
|
||||||
|
|
||||||
|
if (!$sachkonto_differences) {
|
||||||
$e = new ConsistencyException(ucfirst($typ['typ']),$result);
|
$e = new ConsistencyException(ucfirst($typ['typ']),$result);
|
||||||
throw $e;
|
throw $e;
|
||||||
|
} else {
|
||||||
|
// Create differences entries
|
||||||
|
foreach ($result as $row) {
|
||||||
|
|
||||||
|
$posid = $row['pos_id'];
|
||||||
|
$tmpsteuersatz = 0;
|
||||||
|
$tmpsteuertext = '';
|
||||||
|
$erloes = '';
|
||||||
|
$result = array();
|
||||||
|
$this->app->erp->GetSteuerPosition($typ['typ'], $posid, $tmpsteuersatz, $tmpsteuertext, $erloes);
|
||||||
|
|
||||||
|
$data = array();
|
||||||
|
|
||||||
|
$difference = $row['betrag_gesamt']-$row['betrag_summe'];
|
||||||
|
|
||||||
|
$data['Umsatz'] = number_format(abs($difference), 2, ',', ''); // obligatory
|
||||||
|
$data['EU-Steuersatz (Bestimmung)'] = 0;
|
||||||
|
$data['WKZ Umsatz'] = $row['waehrung'];
|
||||||
|
$data['Belegfeld 1'] = mb_strimwidth($row['belegnr'],0,12);
|
||||||
|
$data['Konto'] = $row['kundennummer'];
|
||||||
|
$data['Soll-/Haben-Kennzeichen'] = ($difference < 0)?'S':'H'; // obligatory
|
||||||
|
|
||||||
|
$data['Gegenkonto (ohne BU-Schlüssel)'] = $sachkonto_differences; // obligatory
|
||||||
|
|
||||||
|
$data['Belegdatum'] = date_format(date_create($row['datum']),"dm"); // obligatory
|
||||||
|
$data['Buchungstext'] = "Differenz";
|
||||||
|
$data['EU-Mitgliedstaat u. UStID (Bestimmung)'] = $row['ustid'];
|
||||||
|
$data['Auftragsnummer'] = $row['auftrag'];
|
||||||
|
$csv .= $this->create_line($datev_buchungsstapel_definition,$data);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} // diffignore
|
||||||
|
|
||||||
// Query position data
|
// Query position data
|
||||||
$arr = $this->app->DB->Query($sql);
|
$arr = $this->app->DB->Query($sql);
|
||||||
@@ -558,7 +609,7 @@ class Exportbuchhaltung
|
|||||||
$data['Soll-/Haben-Kennzeichen'] = $typ['kennzeichen_negativ']; // obligatory
|
$data['Soll-/Haben-Kennzeichen'] = $typ['kennzeichen_negativ']; // obligatory
|
||||||
}
|
}
|
||||||
|
|
||||||
$data['EU-Steuersatz (Bestimmung)'] = number_format($$tmpsteuersatz, 2, ',', '');
|
$data['EU-Steuersatz (Bestimmung)'] = number_format($tmpsteuersatz, 2, ',', '');
|
||||||
$data['WKZ Umsatz'] = $row['pos_waehrung'];
|
$data['WKZ Umsatz'] = $row['pos_waehrung'];
|
||||||
$data['Belegfeld 1'] = mb_strimwidth($row['belegnr'],0,12);
|
$data['Belegfeld 1'] = mb_strimwidth($row['belegnr'],0,12);
|
||||||
$data['Konto'] = $row['kundennummer']; // obligatory
|
$data['Konto'] = $row['kundennummer']; // obligatory
|
||||||
@@ -572,17 +623,10 @@ class Exportbuchhaltung
|
|||||||
$data['Belegdatum'] = date_format(date_create($row['datum']),"dm"); // obligatory
|
$data['Belegdatum'] = date_format(date_create($row['datum']),"dm"); // obligatory
|
||||||
$data['Buchungstext'] = mb_strimwidth($row['name'],0,60);
|
$data['Buchungstext'] = mb_strimwidth($row['name'],0,60);
|
||||||
$data['EU-Mitgliedstaat u. UStID (Bestimmung)'] = $row['ustid'];
|
$data['EU-Mitgliedstaat u. UStID (Bestimmung)'] = $row['ustid'];
|
||||||
$data['Auftragsnummer'] = $row['auftrag'];
|
|
||||||
|
|
||||||
$comma = "";
|
$data['Auftragsnummer'] = ($row['auftrag']!=0)?$row['auftrag']:'';
|
||||||
foreach ($datev_buchungsstapel_definition as $key => $value) {
|
|
||||||
if (!isset($data[$value])) {
|
$csv .= $this->create_line($datev_buchungsstapel_definition,$data);
|
||||||
$data[$value] = '';
|
|
||||||
}
|
|
||||||
$csv .= $comma.'"'.$data[$value].'"';
|
|
||||||
$comma = ";";
|
|
||||||
}
|
|
||||||
$csv .= "\r\n";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -591,6 +635,21 @@ class Exportbuchhaltung
|
|||||||
$csv = mb_convert_encoding($csv, "ISO-8859-1", "UTF-8");
|
$csv = mb_convert_encoding($csv, "ISO-8859-1", "UTF-8");
|
||||||
return($csv);
|
return($csv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function create_line($definition, $data) : string {
|
||||||
|
$csv = "";
|
||||||
|
$comma = "";
|
||||||
|
foreach ($definition as $key => $value) {
|
||||||
|
if (!isset($data[$value])) {
|
||||||
|
$data[$value] = '';
|
||||||
|
}
|
||||||
|
$csv .= $comma.'"'.$data[$value].'"';
|
||||||
|
$comma = ";";
|
||||||
|
}
|
||||||
|
$csv .= "\r\n";
|
||||||
|
return($csv);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -706,9 +706,12 @@ class Firmendaten {
|
|||||||
$n2 = 'adressefreifeld'.$i.'spalte';
|
$n2 = 'adressefreifeld'.$i.'spalte';
|
||||||
$v1 = $this->app->Secure->GetPOST($n1);
|
$v1 = $this->app->Secure->GetPOST($n1);
|
||||||
$v2 = $this->app->Secure->GetPOST($n2);
|
$v2 = $this->app->Secure->GetPOST($n2);
|
||||||
$this->app->DB->Update("UPDATE firmendaten SET
|
/*$this->app->DB->Update("UPDATE firmendaten SET
|
||||||
$n1 = '".$v1."', $n2 = '".$v2."'
|
$n1 = '".$v1."', $n2 = '".$v2."'
|
||||||
WHERE firma='$id' LIMIT 1");
|
WHERE firma='$id' LIMIT 1");*/
|
||||||
|
|
||||||
|
$this->app->erp->FirmendatenSet($n1,$v1);
|
||||||
|
$this->app->erp->FirmendatenSet($n2,$v2);
|
||||||
|
|
||||||
if(isset($firmendaten_werte_spalten)) {
|
if(isset($firmendaten_werte_spalten)) {
|
||||||
if(isset($firmendaten_werte_spalten[$n1]) && $firmendaten_werte_spalten[$n1]['wert'] != $v1) {
|
if(isset($firmendaten_werte_spalten[$n1]) && $firmendaten_werte_spalten[$n1]['wert'] != $v1) {
|
||||||
@@ -746,9 +749,12 @@ class Firmendaten {
|
|||||||
$n2 = 'projektfreifeld'.$i.'spalte';
|
$n2 = 'projektfreifeld'.$i.'spalte';
|
||||||
$v1 = $this->app->Secure->GetPOST($n1);
|
$v1 = $this->app->Secure->GetPOST($n1);
|
||||||
$v2 = $this->app->Secure->GetPOST($n2);
|
$v2 = $this->app->Secure->GetPOST($n2);
|
||||||
$this->app->DB->Update("UPDATE firmendaten SET
|
/* $this->app->DB->Update("UPDATE firmendaten SET
|
||||||
$n1 = '".$v1."', $n2 = '".$v2."'
|
$n1 = '".$v1."', $n2 = '".$v2."'
|
||||||
WHERE firma='$id' LIMIT 1");
|
WHERE firma='$id' LIMIT 1"); */
|
||||||
|
|
||||||
|
$this->app->erp->FirmendatenSet($n1,$v1);
|
||||||
|
$this->app->erp->FirmendatenSet($n2,$v2);
|
||||||
|
|
||||||
if(isset($firmendaten_werte_spalten)) {
|
if(isset($firmendaten_werte_spalten)) {
|
||||||
if(isset($firmendaten_werte_spalten[$n1]) && $firmendaten_werte_spalten[$n1]['wert'] != $v1) {
|
if(isset($firmendaten_werte_spalten[$n1]) && $firmendaten_werte_spalten[$n1]['wert'] != $v1) {
|
||||||
@@ -783,6 +789,8 @@ class Firmendaten {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$toupdate = null;
|
$toupdate = null;
|
||||||
|
|
||||||
|
/*
|
||||||
for($in = 1; $in <= 40; $in++) {
|
for($in = 1; $in <= 40; $in++) {
|
||||||
$toupdate[] = 'freifeld'.$in;
|
$toupdate[] = 'freifeld'.$in;
|
||||||
}
|
}
|
||||||
@@ -800,7 +808,20 @@ class Firmendaten {
|
|||||||
}
|
}
|
||||||
$sql2 = "UPDATE firmendaten SET ".implode(',',$sql2a)." WHERE firma = '$id' LIMIT 1";
|
$sql2 = "UPDATE firmendaten SET ".implode(',',$sql2a)." WHERE firma = '$id' LIMIT 1";
|
||||||
unset($sql2a);
|
unset($sql2a);
|
||||||
$this->app->DB->Update($sql2);
|
$this->app->DB->Update($sql2);*/
|
||||||
|
|
||||||
|
for($in = 1; $in <= 40; $in++) {
|
||||||
|
$field = 'freifeld'.$in;
|
||||||
|
$this->app->erp->FirmendatenSet($field,$this->app->Secure->GetPOST($field));
|
||||||
|
}
|
||||||
|
for($in = 1; $in <= 20; $in++) {
|
||||||
|
$field = 'projektfreifeld'.$in;
|
||||||
|
$this->app->erp->FirmendatenSet($field,$this->app->Secure->GetPOST($field));
|
||||||
|
$field = 'adressefreifeld'.$in;
|
||||||
|
$this->app->erp->FirmendatenSet($field,$this->app->Secure->GetPOST($field));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if($this->app->DB->error()) {
|
if($this->app->DB->error()) {
|
||||||
foreach($toupdate as $v) {
|
foreach($toupdate as $v) {
|
||||||
$data[$v] = $this->app->Secure->GetPOST($v);
|
$data[$v] = $this->app->Secure->GetPOST($v);
|
||||||
@@ -1022,7 +1043,7 @@ class Firmendaten {
|
|||||||
'arbeitsnachweis_header','arbeitsnachweis_footer','provisionsgutschrift_header','provisionsgutschrift_footer','proformarechnung_header','proformarechnung_footer','eu_lieferung_vermerk','export_lieferung_vermerk'
|
'arbeitsnachweis_header','arbeitsnachweis_footer','provisionsgutschrift_header','provisionsgutschrift_footer','proformarechnung_header','proformarechnung_footer','eu_lieferung_vermerk','export_lieferung_vermerk'
|
||||||
,'wareneingang_kamera_waage','layout_iconbar','passwort','host','port','mailssl','signatur','email','absendername','bcc1','bcc2','bcc3'
|
,'wareneingang_kamera_waage','layout_iconbar','passwort','host','port','mailssl','signatur','email','absendername','bcc1','bcc2','bcc3'
|
||||||
,'firmenfarbe','name','strasse','plz','ort','steuernummer','projekt','steuer_positionen_export','tabsnavigationfarbe','tabsnavigationfarbeschrift'
|
,'firmenfarbe','name','strasse','plz','ort','steuernummer','projekt','steuer_positionen_export','tabsnavigationfarbe','tabsnavigationfarbeschrift'
|
||||||
,"buchhaltung_berater","buchhaltung_mandant","buchhaltung_wj_beginn","buchhaltung_sachkontenlaenge"
|
,"buchhaltung_berater","buchhaltung_mandant","buchhaltung_wj_beginn","buchhaltung_sachkontenlaenge", "fibu_buchungen_startdatum", "rechnung_skonto_kontorahmen"
|
||||||
);
|
);
|
||||||
|
|
||||||
if(isset($sql2a)){
|
if(isset($sql2a)){
|
||||||
@@ -1358,6 +1379,11 @@ class Firmendaten {
|
|||||||
}
|
}
|
||||||
$this->app->YUI->AutoComplete('steuersatz_normal','steuersatz',1);
|
$this->app->YUI->AutoComplete('steuersatz_normal','steuersatz',1);
|
||||||
$this->app->YUI->AutoComplete('steuersatz_ermaessigt','steuersatz',1);
|
$this->app->YUI->AutoComplete('steuersatz_ermaessigt','steuersatz',1);
|
||||||
|
|
||||||
|
$this->app->YUI->DatePicker('fibu_buchungen_startdatum');
|
||||||
|
|
||||||
|
$this->app->YUI->AutoComplete('rechnung_skonto_kontorahmen', 'sachkonto');
|
||||||
|
|
||||||
$this->app->Tpl->Parse('PAGE','firmendaten.tpl');
|
$this->app->Tpl->Parse('PAGE','firmendaten.tpl');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1821,6 +1847,12 @@ class Firmendaten {
|
|||||||
if(!empty($data[0]['taxfromdoctypesettings'])) {
|
if(!empty($data[0]['taxfromdoctypesettings'])) {
|
||||||
$this->app->Tpl->Set('OPTIONTAXFROMDOCTYPESETTINGS', ' selected="selected" ');
|
$this->app->Tpl->Set('OPTIONTAXFROMDOCTYPESETTINGS', ' selected="selected" ');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Fibu
|
||||||
|
$this->app->Tpl->Set('FIBU_BUCHUNGEN_STARTDATUM', $this->app->erp->ReplaceDatum(false,$data[0]['fibu_buchungen_startdatum'],false));
|
||||||
|
$this->app->Tpl->Set('RECHNUNG_SKONTO_KONTORAHMEN', $this->app->erp->ReplaceKontorahmen(false,$data[0]['rechnung_skonto_kontorahmen']));
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2261,6 +2293,9 @@ class Firmendaten {
|
|||||||
$data['buchhaltung_wj_beginn'] = ($this->app->Secure->POST["buchhaltung_wj_beginn"]);
|
$data['buchhaltung_wj_beginn'] = ($this->app->Secure->POST["buchhaltung_wj_beginn"]);
|
||||||
$data['buchhaltung_sachkontenlaenge'] = ($this->app->Secure->POST["buchhaltung_sachkontenlaenge"]);
|
$data['buchhaltung_sachkontenlaenge'] = ($this->app->Secure->POST["buchhaltung_sachkontenlaenge"]);
|
||||||
|
|
||||||
|
$data['fibu_buchungen_startdatum'] = $this->app->erp->ReplaceDatum(true,$this->app->Secure->POST["fibu_buchungen_startdatum"],false);
|
||||||
|
$data['rechnung_skonto_kontorahmen'] = $this->app->erp->ReplaceKontorahmen(true,$this->app->Secure->POST["rechnung_skonto_kontorahmen"]);
|
||||||
|
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+109
-106
@@ -620,6 +620,8 @@ class Gutschrift extends GenGutschrift
|
|||||||
$tmp3->DisplayNew('PDFARCHIV','Menü','noAction');
|
$tmp3->DisplayNew('PDFARCHIV','Menü','noAction');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->app->Tpl->Add('ZAHLUNGEN',$this->GutschriftZahlung(true));
|
||||||
|
|
||||||
if($parsetarget=='') {
|
if($parsetarget=='') {
|
||||||
$this->app->Tpl->Output('gutschrift_minidetail.tpl');
|
$this->app->Tpl->Output('gutschrift_minidetail.tpl');
|
||||||
$this->app->ExitXentral();
|
$this->app->ExitXentral();
|
||||||
@@ -648,6 +650,7 @@ class Gutschrift extends GenGutschrift
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Build the html output for minidetail containing the payments
|
||||||
* @param bool $return
|
* @param bool $return
|
||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
@@ -656,101 +659,36 @@ class Gutschrift extends GenGutschrift
|
|||||||
{
|
{
|
||||||
$id = $this->app->Secure->GetGET('id');
|
$id = $this->app->Secure->GetGET('id');
|
||||||
|
|
||||||
$gutschriftArr = $this->app->DB->SelectArr(
|
$zahlungen = $this->app->erp->GetZahlungen($id,'gutschrift');
|
||||||
"SELECT DATE_FORMAT(datum,'%d.%m.%Y') as datum, belegnr, soll, waehrung, rechnungid
|
if (!empty($zahlungen)) {
|
||||||
FROM gutschrift WHERE id='$id' LIMIT 1"
|
$et = new EasyTable($this->app);
|
||||||
|
|
||||||
|
$et->headings = array('Datum','Beleg','Betrag','Währung');
|
||||||
|
|
||||||
|
foreach ($zahlungen as $zahlung) {
|
||||||
|
$row = array(
|
||||||
|
$zahlung['datum'],
|
||||||
|
"<a href=\"index.php?module=".$zahlung['doc_typ']."&action=edit&id=".$zahlung['doc_id']."\">
|
||||||
|
".ucfirst($zahlung['doc_typ'])."
|
||||||
|
".$zahlung['doc_info']."
|
||||||
|
</a>",
|
||||||
|
$zahlung['betrag'],
|
||||||
|
$zahlung['waehrung']
|
||||||
);
|
);
|
||||||
$waehrung = empty($gutschriftArr)?'EUR':$gutschriftArr[0]['waehrung'];
|
$et->AddRow($row);
|
||||||
if(!$waehrung) {
|
|
||||||
$waehrung = 'EUR';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$rechnungid = empty($gutschriftArr)?0: $gutschriftArr[0]['rechnungid'];
|
$salden = $this->app->erp->GetSaldenDokument($id,'gutschrift');
|
||||||
|
foreach ($salden as $saldo) {
|
||||||
$auftragid = $rechnungid <= 0?0:$this->app->DB->Select(
|
$row = array(
|
||||||
sprintf(
|
'',
|
||||||
'SELECT `auftragid` FROM `rechnung` WHERE `id` = %d LIMIT 1',
|
'<b>Saldo</b>',
|
||||||
$rechnungid
|
"<b>".$saldo['betrag']."</b>",
|
||||||
)
|
"<b>".$saldo['waehrung']."</b>"
|
||||||
);
|
);
|
||||||
$eingang ="<tr><td colspan=\"3\"><b>Zahlungen</b></td></tr>";
|
$et->AddRow($row);
|
||||||
|
|
||||||
|
|
||||||
$eingang .="<tr><td class=auftrag_cell>".$gutschriftArr[0]['datum']
|
|
||||||
."</td><td class=auftrag_cell>GS ".$gutschriftArr[0]['belegnr']
|
|
||||||
."</td><td class=auftrag_cell align=right>".$this->app->erp->EUR($gutschriftArr[0]['soll'])
|
|
||||||
." $waehrung</td></tr>";
|
|
||||||
|
|
||||||
$eingangArr = $this->app->DB->SelectArr(
|
|
||||||
"SELECT ko.bezeichnung as konto, DATE_FORMAT(ke.datum,'%d.%m.%Y') as datum, k.id as kontoauszuege,
|
|
||||||
ke.betrag as betrag, k.id as zeile,k.waehrung
|
|
||||||
FROM kontoauszuege_zahlungseingang ke
|
|
||||||
LEFT JOIN kontoauszuege k ON ke.kontoauszuege=k.id
|
|
||||||
LEFT JOIN konten ko ON k.konto=ko.id
|
|
||||||
WHERE (ke.objekt='gutschrift' AND ke.parameter='$id')
|
|
||||||
OR (ke.objekt='auftrag' AND ke.parameter='$auftragid' AND ke.parameter>0)
|
|
||||||
OR (ke.objekt='rechnung' AND ke.parameter='$rechnungid' AND ke.parameter>0)"
|
|
||||||
);
|
|
||||||
$ceingangArr = empty($eingangArr)?0:(!empty($eingangArr)?count($eingangArr):0);
|
|
||||||
|
|
||||||
for($i=0;$i<$ceingangArr;$i++) {
|
|
||||||
$waehrung = 'EUR';
|
|
||||||
if($eingangArr[$i]['waehrung']) {
|
|
||||||
$waehrung = $eingangArr[$i]['waehrung'];
|
|
||||||
}
|
}
|
||||||
$eingang .="<tr><td class=auftrag_cell>".$eingangArr[$i]['datum']
|
return($et->DisplayNew('return',""));
|
||||||
."</td><td class=auftrag_cell>".$eingangArr[$i]['konto']
|
|
||||||
." (<a href=\"index.php?module=zahlungseingang&action=editzeile&id="
|
|
||||||
.$eingangArr[$i]['zeile']."\">zur Buchung</a>)</td><td class=auftrag_cell align=right>"
|
|
||||||
.$this->app->erp->EUR($eingangArr[$i]['betrag'])
|
|
||||||
." $waehrung</td></tr>";
|
|
||||||
}
|
|
||||||
// gutschriften zu dieser rechnung anzeigen
|
|
||||||
/*
|
|
||||||
$gutschriften = $this->app->DB->SelectArr("SELECT belegnr, DATE_FORMAT(datum,'%d.%m.%Y') as datum,soll FROM gutschrift WHERE rechnungid='$id'");
|
|
||||||
|
|
||||||
for($i=0;$i<(!empty($gutschriften)?count($gutschriften):0);$i++)
|
|
||||||
$eingang .="<tr><td class=auftrag_cell>".$gutschriften[$i]['datum']."</td><td class=auftrag_cell>GS ".$gutschriften[$i]['belegnr']."</td><td class=auftrag_cell align=right>".$this->app->erp->EUR($gutschriften[$i]['soll'])." EUR</td></tr>";
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
$ausgang = '';
|
|
||||||
$ausgangArr = $this->app->DB->SelectArr(
|
|
||||||
"SELECT ko.bezeichnung as konto, DATE_FORMAT(ke.datum,'%d.%m.%Y') as datum, ke.betrag as betrag,
|
|
||||||
k.id as zeile,k.waehrung
|
|
||||||
FROM kontoauszuege_zahlungsausgang ke
|
|
||||||
LEFT JOIN kontoauszuege k ON ke.kontoauszuege=k.id
|
|
||||||
LEFT JOIN konten ko ON k.konto=ko.id
|
|
||||||
WHERE (ke.objekt='gutschrift' AND ke.parameter='$id')
|
|
||||||
OR (ke.objekt='rechnung' AND ke.parameter='$rechnungid' AND ke.parameter>0)
|
|
||||||
OR (ke.objekt='auftrag' AND ke.parameter='$auftragid' AND ke.parameter>0)"
|
|
||||||
);
|
|
||||||
$cAusgangArr = empty($ausgangArr)?0:(!empty($ausgangArr)?count($ausgangArr):0);
|
|
||||||
for($i=0;$i<$cAusgangArr;$i++) {
|
|
||||||
$waehrung = 'EUR';
|
|
||||||
if($ausgangArr[$i]['waehrung']) {
|
|
||||||
$waehrung = $ausgangArr[$i]['waehrung'];
|
|
||||||
}
|
|
||||||
$ausgang .="<tr><td class=auftrag_cell>".$ausgangArr[$i]['datum']."</td><td class=auftrag_cell>"
|
|
||||||
.$ausgangArr[$i]['konto']." (<a href=\"index.php?module=zahlungseingang&action=editzeile&id="
|
|
||||||
.$ausgangArr[$i]['zeile']."\">zur Buchung</a>)</td><td class=auftrag_cell align=right>"
|
|
||||||
.$this->app->erp->EUR($ausgangArr[$i]['betrag'])
|
|
||||||
." $waehrung</td></tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
$saldo = $this->app->erp->EUR($this->app->erp->GutschriftSaldo($id));
|
|
||||||
|
|
||||||
if($saldo < 0) {
|
|
||||||
$saldo = "<b style=\"color:red\">$saldo</b>";
|
|
||||||
}
|
|
||||||
$waehrung = $this->app->DB->Select("SELECT waehrung FROM gutschrift WHERE id = '$id' LIMIT 1");
|
|
||||||
if(!$waehrung) {
|
|
||||||
$waehrung = 'EUR';
|
|
||||||
}
|
|
||||||
$ausgang .="<tr><td class=auftrag_cell></td><td class=auftrag_cell align=right>Saldo</td><td class=auftrag_cell align=right>$saldo $waehrung</td></tr>";
|
|
||||||
|
|
||||||
if($return) {
|
|
||||||
return "<table width=100% border=0 class=auftrag_cell cellpadding=0 cellspacing=0>".$eingang." ".$ausgang."</table>";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -774,17 +712,32 @@ class Gutschrift extends GenGutschrift
|
|||||||
$showDefault = true;
|
$showDefault = true;
|
||||||
$this->app->Tpl->Set('TABTEXT','Freigabe');
|
$this->app->Tpl->Set('TABTEXT','Freigabe');
|
||||||
$this->app->erp->GutschriftNeuberechnen($id);
|
$this->app->erp->GutschriftNeuberechnen($id);
|
||||||
|
|
||||||
$this->app->erp->CheckVertrieb($id,'gutschrift');
|
$this->app->erp->CheckVertrieb($id,'gutschrift');
|
||||||
$this->app->erp->CheckBearbeiter($id,'gutschrift');
|
$this->app->erp->CheckBearbeiter($id,'gutschrift');
|
||||||
$doctype = 'gutschrift';
|
$doctype = 'gutschrift';
|
||||||
|
|
||||||
|
$sql = "SELECT belegnr, rechnungid FROM gutschrift WHERE id='$id' LIMIT 1";
|
||||||
|
$result = $this->app->DB->SelectArr($sql);
|
||||||
|
$belegnr = $result[0]['belegnr'];
|
||||||
|
$rechnungid = $result[0]['rechnungid'];
|
||||||
|
$name = $this->app->DB->Select("SELECT a.name FROM gutschrift b LEFT JOIN adresse a ON a.id=b.adresse WHERE b.id='$id' LIMIT 1");
|
||||||
|
$summe = $this->app->DB->Select("SELECT soll FROM gutschrift WHERE id='$id' LIMIT 1");
|
||||||
|
$waehrung = $this->app->DB->Select("SELECT waehrung FROM gutschrift_position WHERE gutschrift='$id' LIMIT 1");
|
||||||
|
|
||||||
if(empty($intern)){
|
if(empty($intern)){
|
||||||
$this->app->erp->RunHook('beleg_freigabe', 4, $doctype, $id, $allowedFrm, $showDefault);
|
$this->app->erp->RunHook('beleg_freigabe', 4, $doctype, $id, $allowedFrm, $showDefault);
|
||||||
}
|
}
|
||||||
if($allowedFrm && $freigabe==$id) {
|
if($allowedFrm && $freigabe==$id) {
|
||||||
$belegnr = $this->app->DB->Select("SELECT belegnr FROM gutschrift WHERE id='$id' LIMIT 1");
|
|
||||||
if($belegnr=='') {
|
if($belegnr=='') {
|
||||||
$this->app->erp->BelegFreigabe('gutschrift',$id);
|
$this->app->erp->BelegFreigabe('gutschrift',$id);
|
||||||
|
|
||||||
|
// Create fibu_buchung
|
||||||
|
$gegen_rechnung = $this->app->Secure->GetGET('gegen_rechnung');
|
||||||
|
if ($gegen_rechnung && $rechnungid > 0) {
|
||||||
|
$this->app->erp->fibu_buchungen_buchen('gutschrift', $id, 'rechnung', $rechnungid, -$summe, $waehrung, date("Y-m-d"), 'Verrechnung');
|
||||||
|
}
|
||||||
|
|
||||||
if($intern) {
|
if($intern) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -798,14 +751,16 @@ class Gutschrift extends GenGutschrift
|
|||||||
$this->app->Location->execute("index.php?module=gutschrift&action=edit&id=$id&msg=$msg");
|
$this->app->Location->execute("index.php?module=gutschrift&action=edit&id=$id&msg=$msg");
|
||||||
}
|
}
|
||||||
if($showDefault){
|
if($showDefault){
|
||||||
$name = $this->app->DB->Select("SELECT a.name FROM gutschrift b LEFT JOIN adresse a ON a.id=b.adresse WHERE b.id='$id' LIMIT 1");
|
if ($rechnungid > 0) {
|
||||||
$summe = $this->app->DB->Select("SELECT soll FROM gutschrift WHERE id='$id' LIMIT 1");
|
$input_html = "<input type=\"button\" value=\"Freigabe ohne Rechnung\" onclick=\"window.location.href='index.php?module=gutschrift&action=freigabe&id=$id&freigabe=$id&gegen_rechnung=0'\">"
|
||||||
$waehrung = $this->app->DB->Select("SELECT waehrung FROM gutschrift_position
|
."<input type=\"button\" value=\"Freigabe gegen Rechnung\" onclick=\"window.location.href='index.php?module=gutschrift&action=freigabe&id=$id&freigabe=$id&gegen_rechnung=1'\">";
|
||||||
WHERE gutschrift='$id' LIMIT 1");
|
} else {
|
||||||
|
$input_html = "<input type=\"button\" value=\"Freigabe Rechnung\" onclick=\"window.location.href='index.php?module=gutschrift&action=freigabe&id=$id&freigabe=$id'\">";
|
||||||
|
}
|
||||||
$this->app->Tpl->Set('TAB1', "<div class=\"info\">Soll die Gutschrift an <b>$name</b> im Wert von <b>$summe $waehrung</b>
|
$this->app->Tpl->Set('TAB1', "<div class=\"info\">Soll die Gutschrift an <b>$name</b> im Wert von <b>$summe $waehrung</b>
|
||||||
jetzt freigegeben werden? <input type=\"button\" value=\"Freigabe\" onclick=\"window.location.href='index.php?module=gutschrift&action=freigabe&id=$id&freigabe=$id'\">
|
jetzt freigegeben werden? ".
|
||||||
</div>");
|
$input_html.
|
||||||
|
"</div>");
|
||||||
}
|
}
|
||||||
$this->GutschriftMenu();
|
$this->GutschriftMenu();
|
||||||
$this->app->Tpl->Parse('PAGE','tabview.tpl');
|
$this->app->Tpl->Parse('PAGE','tabview.tpl');
|
||||||
@@ -1176,7 +1131,6 @@ class Gutschrift extends GenGutschrift
|
|||||||
$this->app->erp->CheckBearbeiter($id,"gutschrift");
|
$this->app->erp->CheckBearbeiter($id,"gutschrift");
|
||||||
$this->app->erp->CheckBuchhaltung($id,"gutschrift");
|
$this->app->erp->CheckBuchhaltung($id,"gutschrift");
|
||||||
|
|
||||||
|
|
||||||
$this->app->erp->GutschriftNeuberechnen($id);
|
$this->app->erp->GutschriftNeuberechnen($id);
|
||||||
|
|
||||||
$this->app->erp->DisableVerband();
|
$this->app->erp->DisableVerband();
|
||||||
@@ -1185,14 +1139,11 @@ class Gutschrift extends GenGutschrift
|
|||||||
$this->app->Tpl->Set('ICONMENU',$this->GutschriftIconMenu($id));
|
$this->app->Tpl->Set('ICONMENU',$this->GutschriftIconMenu($id));
|
||||||
$this->app->Tpl->Set('ICONMENU2',$this->GutschriftIconMenu($id,2));
|
$this->app->Tpl->Set('ICONMENU2',$this->GutschriftIconMenu($id,2));
|
||||||
|
|
||||||
|
|
||||||
$belegnr = $this->app->DB->Select("SELECT belegnr FROM gutschrift WHERE id='$id' LIMIT 1");
|
$belegnr = $this->app->DB->Select("SELECT belegnr FROM gutschrift WHERE id='$id' LIMIT 1");
|
||||||
$nummer = $this->app->DB->Select("SELECT belegnr FROM gutschrift WHERE id='$id' LIMIT 1");
|
$nummer = $this->app->DB->Select("SELECT belegnr FROM gutschrift WHERE id='$id' LIMIT 1");
|
||||||
$kundennummer = $this->app->DB->Select("SELECT kundennummer FROM gutschrift WHERE id='$id' LIMIT 1");
|
$kundennummer = $this->app->DB->Select("SELECT kundennummer FROM gutschrift WHERE id='$id' LIMIT 1");
|
||||||
$adresse = $this->app->DB->Select("SELECT adresse FROM gutschrift WHERE id='$id' LIMIT 1");
|
$adresse = $this->app->DB->Select("SELECT adresse FROM gutschrift WHERE id='$id' LIMIT 1");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$status= $this->app->DB->Select("SELECT status FROM gutschrift WHERE id='$id' LIMIT 1");
|
$status= $this->app->DB->Select("SELECT status FROM gutschrift WHERE id='$id' LIMIT 1");
|
||||||
$schreibschutz= $this->app->DB->Select("SELECT schreibschutz FROM gutschrift WHERE id='$id' LIMIT 1");
|
$schreibschutz= $this->app->DB->Select("SELECT schreibschutz FROM gutschrift WHERE id='$id' LIMIT 1");
|
||||||
if($status !== 'angelegt' && $status !== 'angelegta' && $status !== 'a')
|
if($status !== 'angelegt' && $status !== 'angelegta' && $status !== 'a')
|
||||||
@@ -1241,7 +1192,12 @@ class Gutschrift extends GenGutschrift
|
|||||||
if($zahlungsweise=="einzugsermaechtigung" || $zahlungsweise=="lastschrift") $this->app->Tpl->Set('EINZUGSERMAECHTIGUNG',"");
|
if($zahlungsweise=="einzugsermaechtigung" || $zahlungsweise=="lastschrift") $this->app->Tpl->Set('EINZUGSERMAECHTIGUNG',"");
|
||||||
if($zahlungsweise=="vorkasse" || $zahlungsweise=="kreditkarte" || $zahlungsweise=="paypal" || $zahlungsweise=="bar") $this->app->Tpl->Set('VORKASSE',"");
|
if($zahlungsweise=="vorkasse" || $zahlungsweise=="kreditkarte" || $zahlungsweise=="paypal" || $zahlungsweise=="bar") $this->app->Tpl->Set('VORKASSE',"");
|
||||||
|
|
||||||
|
$zahlungsinfo = $this->app->DB->SelectArr("SELECT zahlungsstatus, ".$this->app->erp->FormatMenge('soll*(-1)',2)." as betrag FROM gutschrift WHERE id='$id' LIMIT 1");
|
||||||
|
$this->app->Tpl->Set('ZAHLUNGSSTATUS_DB',$zahlungsinfo[0]['zahlungsstatus']);
|
||||||
|
$this->app->Tpl->Set('SOLL',$zahlungsinfo[0]['betrag']);
|
||||||
|
|
||||||
|
$ist = $this->app->erp->EUR($this->app->erp->GetSaldoDokument($id,'gutschrift')['betrag']);
|
||||||
|
$this->app->Tpl->Set('ISTDB',$ist);
|
||||||
|
|
||||||
if($schreibschutz=="1" && $this->app->erp->RechteVorhanden("gutschrift","schreibschutz"))
|
if($schreibschutz=="1" && $this->app->erp->RechteVorhanden("gutschrift","schreibschutz"))
|
||||||
{
|
{
|
||||||
@@ -1249,11 +1205,24 @@ class Gutschrift extends GenGutschrift
|
|||||||
// $this->app->erp->CommonReadonly();
|
// $this->app->erp->CommonReadonly();
|
||||||
}
|
}
|
||||||
|
|
||||||
if($schreibschutz=="1")
|
if($schreibschutz=="1") {
|
||||||
$this->app->erp->CommonReadonly();
|
$this->app->erp->CommonReadonly();
|
||||||
|
}
|
||||||
|
|
||||||
|
if($schreibschutz=='1' && $this->app->erp->RechteVorhanden('gutschrift','edit'))
|
||||||
|
{
|
||||||
|
$this->app->erp->RemoveReadonly('zahlungsstatus');
|
||||||
|
|
||||||
|
if ($aktion = $this->app->Secure->GetPOST('speichern') == 'Speichern') {
|
||||||
|
$zahlungsstatus = $this->app->Secure->GetPOST('zahlungsstatus');
|
||||||
|
$this->app->DB->Update("UPDATE gutschrift SET zahlungsstatus='".$zahlungsstatus."' WHERE id='$id' LIMIT 1");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
$rechnungid = $this->app->DB->Select("SELECT rechnungid FROM gutschrift WHERE id='$id' LIMIT 1");
|
$rechnungid = $this->app->DB->Select("SELECT rechnungid FROM gutschrift WHERE id='$id' LIMIT 1");
|
||||||
$rechnungid = $this->app->DB->Select("SELECT id FROM rechnung WHERE id='$rechnungid' AND belegnr!='' LIMIT 1");
|
$rechnungid = $this->app->DB->Select("SELECT id FROM rechnung WHERE id='$rechnungid' AND belegnr!='' LIMIT 1");
|
||||||
|
|
||||||
$alle_gutschriften = $this->app->DB->SelectArr("SELECT id,belegnr FROM gutschrift WHERE rechnungid='$rechnungid' AND rechnungid>0");
|
$alle_gutschriften = $this->app->DB->SelectArr("SELECT id,belegnr FROM gutschrift WHERE rechnungid='$rechnungid' AND rechnungid>0");
|
||||||
|
|
||||||
if (!is_null($alle_gutschriften)) {
|
if (!is_null($alle_gutschriften)) {
|
||||||
@@ -1445,6 +1414,8 @@ class Gutschrift extends GenGutschrift
|
|||||||
{
|
{
|
||||||
$this->app->Tpl->Set('UEBERSCHRIFT', 'Gutschriften');
|
$this->app->Tpl->Set('UEBERSCHRIFT', 'Gutschriften');
|
||||||
|
|
||||||
|
$this->app->DB->Update("UPDATE gutschrift SET zahlungsstatus='offen' WHERE zahlungsstatus=''");
|
||||||
|
|
||||||
if($this->app->Secure->GetPOST('ausfuehren') && $this->app->erp->RechteVorhanden('gutschrift', 'edit')) {
|
if($this->app->Secure->GetPOST('ausfuehren') && $this->app->erp->RechteVorhanden('gutschrift', 'edit')) {
|
||||||
$drucker = $this->app->Secure->GetPOST('seldrucker');
|
$drucker = $this->app->Secure->GetPOST('seldrucker');
|
||||||
$aktion = $this->app->Secure->GetPOST('sel_aktion');
|
$aktion = $this->app->Secure->GetPOST('sel_aktion');
|
||||||
@@ -1463,7 +1434,13 @@ class Gutschrift extends GenGutschrift
|
|||||||
$ids = array_unique($ids);
|
$ids = array_unique($ids);
|
||||||
|
|
||||||
switch($aktion) {
|
switch($aktion) {
|
||||||
case 'erledigtam':
|
case 'bezahlt':
|
||||||
|
$this->app->DB->Update("UPDATE gutschrift SET zahlungsstatus='bezahlt' WHERE id IN (".implode(', ',$ids).')');
|
||||||
|
break;
|
||||||
|
case 'offen':
|
||||||
|
$this->app->DB->Update("UPDATE gutschrift SET zahlungsstatus='offen' WHERE id IN (".implode(', ',$ids).')');
|
||||||
|
break;
|
||||||
|
/* case 'erledigtam':
|
||||||
if(!empty($ids)){
|
if(!empty($ids)){
|
||||||
$this->app->DB->Update(
|
$this->app->DB->Update(
|
||||||
sprintf(
|
sprintf(
|
||||||
@@ -1488,7 +1465,7 @@ class Gutschrift extends GenGutschrift
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
break;
|
break;*/
|
||||||
case 'mail':
|
case 'mail':
|
||||||
$returnOrders = empty($ids)?[]:$this->app->DB->SelectArr(
|
$returnOrders = empty($ids)?[]:$this->app->DB->SelectArr(
|
||||||
sprintf(
|
sprintf(
|
||||||
@@ -1682,6 +1659,28 @@ class Gutschrift extends GenGutschrift
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// refresh all open items
|
||||||
|
$openids = $this->app->DB->SelectArr("SELECT id, waehrung from gutschrift WHERE zahlungsstatus != 'bezahlt'");
|
||||||
|
|
||||||
|
foreach ($openids as $openid) {
|
||||||
|
$saldo = $this->app->erp->GetSaldoDokument($openid['id'],'gutschrift');
|
||||||
|
|
||||||
|
if (!empty($saldo)) {
|
||||||
|
if ($saldo['waehrung'] == $openid['waehrung']) {
|
||||||
|
$sql = "UPDATE
|
||||||
|
gutschrift
|
||||||
|
SET
|
||||||
|
ist = ".$saldo['betrag']."+soll,
|
||||||
|
zahlungsstatus = IF(".$saldo['betrag']." = 0,'bezahlt','offen')
|
||||||
|
WHERE id=".$openid['id'];
|
||||||
|
$this->app->DB->Update($sql);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$this->app->DB->Update("UPDATE gutschrift SET ist = null WHERE id=".$openid['id']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$backurl = $this->app->Secure->GetGET('backurl');
|
$backurl = $this->app->Secure->GetGET('backurl');
|
||||||
$backurl = $this->app->erp->base64_url_decode($backurl);
|
$backurl = $this->app->erp->base64_url_decode($backurl);
|
||||||
|
|
||||||
@@ -1770,6 +1769,10 @@ class Gutschrift extends GenGutschrift
|
|||||||
$this->app->YUI->TableSearch('TAB1','gutschriften');
|
$this->app->YUI->TableSearch('TAB1','gutschriften');
|
||||||
$this->app->YUI->TableSearch('TAB3','gutschrifteninbearbeitung');
|
$this->app->YUI->TableSearch('TAB3','gutschrifteninbearbeitung');
|
||||||
|
|
||||||
|
if($this->app->erp->RechteVorhanden('rechnung', 'manuellbezahltmarkiert')){
|
||||||
|
$this->app->Tpl->Set('ALSBEZAHLTMARKIEREN', '<option value="bezahlt">{|als bezahlt markieren|}</option>');
|
||||||
|
}
|
||||||
|
|
||||||
$this->app->Tpl->Set(
|
$this->app->Tpl->Set(
|
||||||
'SELDRUCKER',
|
'SELDRUCKER',
|
||||||
$this->app->erp->GetSelectDrucker($this->app->User->GetParameter('rechnung_list_drucker'))
|
$this->app->erp->GetSelectDrucker($this->app->User->GetParameter('rechnung_list_drucker'))
|
||||||
|
|||||||
+170
-6
@@ -1030,7 +1030,7 @@ class Importvorlage extends GenImportvorlage {
|
|||||||
|
|
||||||
if (!move_uploaded_file($_FILES['userfile']['tmp_name'], $stueckliste_csv)) {
|
if (!move_uploaded_file($_FILES['userfile']['tmp_name'], $stueckliste_csv)) {
|
||||||
//$importfilename = $_FILES['userfile']['name'];
|
//$importfilename = $_FILES['userfile']['name'];
|
||||||
$msg = $this->app->erp->base64_url_encode("<div class=\"error\">Die Datei konnte nicht geöffnet werden. Eventuell ist die Datei zu groß oder die Schreibrechte stimmen nicht!</div> ");
|
$msg = $this->app->erp->base64_url_encode("<div class=\"error\">Die Datei '".$stueckliste_csv."' konnte nicht geöffnet werden. Eventuell ist die Datei zu groß oder die Schreibrechte stimmen nicht!</div> ");
|
||||||
$this->app->Location->execute("index.php?module=importvorlage&action=import&id=$id&msg=$msg");
|
$this->app->Location->execute("index.php?module=importvorlage&action=import&id=$id&msg=$msg");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1419,7 +1419,7 @@ class Importvorlage extends GenImportvorlage {
|
|||||||
$zeitstempel = time();
|
$zeitstempel = time();
|
||||||
|
|
||||||
$number_of_rows = empty($tmp['cmd'])?0:count($tmp['cmd']);
|
$number_of_rows = empty($tmp['cmd'])?0:count($tmp['cmd']);
|
||||||
$number_of_rows = $number_of_rows + 2;
|
// $number_of_rows = $number_of_rows + 2; // ?!?!
|
||||||
|
|
||||||
if($isCronjob) {
|
if($isCronjob) {
|
||||||
$this->app->DB->Update(
|
$this->app->DB->Update(
|
||||||
@@ -5078,6 +5078,145 @@ class Importvorlage extends GenImportvorlage {
|
|||||||
$result = $this->app->DB->Update($sql);
|
$result = $this->app->DB->Update($sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 'kontoauszug':
|
||||||
|
|
||||||
|
$allowed_fields = array('konto','buchung','betrag','betrag2','waehrung','buchungstext','buchungstext2','buchungstext3','buchungstext4');
|
||||||
|
|
||||||
|
$error = false;
|
||||||
|
// Create a row dataset (without checked and cmd)
|
||||||
|
$update_sql = "";
|
||||||
|
$row = array();
|
||||||
|
$comma = "";
|
||||||
|
foreach ($tmp as $key => $value) {
|
||||||
|
if ($key != 'cmd' && $key != 'checked') {
|
||||||
|
if (in_array($key,$allowed_fields)) {
|
||||||
|
$row[$key] = $value[$i];
|
||||||
|
$comma = ", ";
|
||||||
|
} else {
|
||||||
|
$msg .= "Feld nicht korrekt: ".$key.".<br>";
|
||||||
|
$error = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$error) {
|
||||||
|
// Collect texts
|
||||||
|
$buchungstext = "";
|
||||||
|
$comma = "";
|
||||||
|
foreach ($row as $key => $value) {
|
||||||
|
if (str_starts_with($key,'buchungstext')) {
|
||||||
|
if (!empty($value)) {
|
||||||
|
$buchungstext .= $comma.$value;
|
||||||
|
$comma = ", ";
|
||||||
|
}
|
||||||
|
unset($row[$key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$row['buchungstext'] = $buchungstext;
|
||||||
|
|
||||||
|
$row['soll'] = $row['betrag'];
|
||||||
|
unset($row['betrag']);
|
||||||
|
|
||||||
|
if (empty($row['soll'])) {
|
||||||
|
$row['soll'] = $row['betrag2'];
|
||||||
|
}
|
||||||
|
unset($row['betrag2']);
|
||||||
|
|
||||||
|
$row['soll'] = $this->app->erp->ReplaceBetrag(true,$row['soll']);
|
||||||
|
|
||||||
|
$row['buchung'] = $this->app->erp->ReplaceDatum(true,$row['buchung'],false);
|
||||||
|
|
||||||
|
// Calculate hash
|
||||||
|
$hash_fields = array('buchung','soll','waehrung','buchungstext');
|
||||||
|
$hash_text = "";
|
||||||
|
|
||||||
|
foreach($hash_fields as $hash_field) {
|
||||||
|
$hash_text .= $row[$hash_field];
|
||||||
|
}
|
||||||
|
$row['pruefsumme'] = md5($hash_text);
|
||||||
|
|
||||||
|
$sql = "SELECT id FROM konten WHERE kurzbezeichnung ='".$row['konto']."' LIMIT 1";
|
||||||
|
$kontoid = $this->app->DB->SelectArr($sql);
|
||||||
|
|
||||||
|
if (!empty($kontoid)) {
|
||||||
|
|
||||||
|
$row['konto'] = $kontoid[0]['id'];
|
||||||
|
$row['importdatum'] = date("Y-m-d H:i:s");
|
||||||
|
|
||||||
|
$sql = "SELECT pruefsumme FROM kontoauszuege WHERE pruefsumme='".$row['pruefsumme']."' AND konto ='".$row['konto']."' AND importfehler IS NULL";
|
||||||
|
$result = $this->app->DB->SelectArr($sql);
|
||||||
|
|
||||||
|
if (!empty($result)) {
|
||||||
|
$msg .= "Doppelter Eintrag (nicht importiert): ".$row['buchungstext']."<br>";
|
||||||
|
} else {
|
||||||
|
$sql = "INSERT INTO kontoauszuege (".
|
||||||
|
implode(", ",array_keys($row)).
|
||||||
|
") VALUES ('".
|
||||||
|
implode("', '",array_values($row)).
|
||||||
|
"')";
|
||||||
|
|
||||||
|
$result = $this->app->DB->Update($sql);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$msg .= "Konto nicht gefunden: ".$row['konto'].".<br>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 'stueckliste':
|
||||||
|
|
||||||
|
$allowed_fields = array('stuecklistevonartikel','artikel','menge','art','referenz','layer','wert','bauform','xpos','ypos','zachse','place');
|
||||||
|
|
||||||
|
// Create a row dataset (without checked and cmd)
|
||||||
|
$row = array();
|
||||||
|
$error_text = "";
|
||||||
|
|
||||||
|
$error = $this->create_row_set($tmp, $i, $allowed_fields, $row, $error_text);
|
||||||
|
|
||||||
|
if ($error !== false) {
|
||||||
|
$sql = "SELECT id FROM artikel WHERE stueckliste = 1 AND nummer = '".$row['stuecklistevonartikel']."'";
|
||||||
|
$von_id = $this->app->DB->SelectArr($sql);
|
||||||
|
if (empty($von_id)) {
|
||||||
|
$msg .= "Fehlerhafter 'Stueckliste von'-Artikel \"".$row['stuecklistevonartikel']."\"<br>";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$row['stuecklistevonartikel'] = $von_id[0]['id'];
|
||||||
|
|
||||||
|
$sql = "SELECT id FROM artikel WHERE nummer = '".$row['artikel']."'";
|
||||||
|
$artikel_id = $this->app->DB->SelectArr($sql);
|
||||||
|
if (empty($artikel_id)) {
|
||||||
|
$msg .= "Fehlerhafter Artikel \"".$row['artikel']."\"<br>";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$row['artikel'] = $artikel_id[0]['id'];
|
||||||
|
|
||||||
|
if(empty($row['menge'])) {
|
||||||
|
$row['menge'] = 1;
|
||||||
|
}
|
||||||
|
if(empty($row['art'])) {
|
||||||
|
$row['art'] = 'et';
|
||||||
|
}
|
||||||
|
|
||||||
|
if(empty($row['place']) || $row['place'] == 'DNP') {
|
||||||
|
$row['place'] = 'DNP';
|
||||||
|
} else {
|
||||||
|
$row['place'] = 'DP';
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql = "INSERT INTO stueckliste (".
|
||||||
|
implode(", ",array_keys($row)).
|
||||||
|
") VALUES ('".
|
||||||
|
implode("', '",array_values($row)).
|
||||||
|
"')";
|
||||||
|
|
||||||
|
$result = $this->app->DB->Update($sql);
|
||||||
|
|
||||||
|
} else if(!$first_checked) {
|
||||||
|
$first_checked = true;
|
||||||
|
$msg .= $error_text;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5107,19 +5246,21 @@ class Importvorlage extends GenImportvorlage {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} // Loop
|
||||||
if($return) {
|
if($return) {
|
||||||
if($returnids) {
|
if($returnids) {
|
||||||
return $ids;
|
return $ids;
|
||||||
}
|
}
|
||||||
return $number_of_rows;
|
return $number_of_rows;
|
||||||
}
|
}
|
||||||
if($ziel==='zeiterfassung' || $ziel==='wiedervorlage' || $ziel==='notizen') {
|
|
||||||
|
if (empty($msg)) {
|
||||||
$msg=$this->app->erp->base64_url_encode("<div class=\"info\">Import durchgeführt.</div>");
|
$msg=$this->app->erp->base64_url_encode("<div class=\"info\">Import durchgeführt.</div>");
|
||||||
$this->app->Location->execute("index.php?module=importvorlage&action=import&id=$id&msg=$msg");
|
$this->app->Location->execute("index.php?module=importvorlage&action=import&id=$id&msg=$msg");
|
||||||
|
} else {
|
||||||
|
$msg=$this->app->erp->base64_url_encode("<div class=\"error\">".$msg."</div>");
|
||||||
|
$this->app->Location->execute("index.php?module=importvorlage&action=import&id=$id&msg=$msg");
|
||||||
}
|
}
|
||||||
$msg=$this->app->erp->base64_url_encode("<div class=\"info\">Import durchgeführt.</div>");
|
|
||||||
$this->app->Location->execute("index.php?module=importvorlage&action=import&id=$id&msg=$msg");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -6164,5 +6305,28 @@ class Importvorlage extends GenImportvorlage {
|
|||||||
|
|
||||||
return $normalizedDate;
|
return $normalizedDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Create a cleaned row set
|
||||||
|
* Return true if ok, else see error_message
|
||||||
|
*/
|
||||||
|
private function create_row_set(array $tmp, $pos, array $allowed_fields, array &$result_row, string &$error_message) : bool {
|
||||||
|
$result_ok = true;
|
||||||
|
$result_row = array();
|
||||||
|
$error_message = "";
|
||||||
|
foreach ($tmp as $key => $value) {
|
||||||
|
if ($key != 'cmd' && $key != 'checked') {
|
||||||
|
if (in_array($key,$allowed_fields)) {
|
||||||
|
$result_row[$key] = $value[$pos];
|
||||||
|
} else {
|
||||||
|
$error_message .= "Feld nicht korrekt: ".$key.".<br>";
|
||||||
|
$result_ok = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return($result_ok);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1148,7 +1148,7 @@ class Kalender {
|
|||||||
|
|
||||||
// Force user if empty
|
// Force user if empty
|
||||||
if ($data[0]['adresseintern'] == 0) {
|
if ($data[0]['adresseintern'] == 0) {
|
||||||
$data[0]['adresseintern'] = $this->app->User->GetID();
|
$data[0]['adresseintern'] = $this->app->User->GetAdresse();
|
||||||
}
|
}
|
||||||
|
|
||||||
$data[0]['adresseintern'] = $this->app->DB->Select("SELECT CONCAT(a.id,' ',a.name) FROM adresse a WHERE a.id='" . $data[0]['adresseintern'] . "' AND a.geloescht=0 LIMIT 1");
|
$data[0]['adresseintern'] = $this->app->DB->Select("SELECT CONCAT(a.id,' ',a.name) FROM adresse a WHERE a.id='" . $data[0]['adresseintern'] . "' AND a.geloescht=0 LIMIT 1");
|
||||||
|
|||||||
@@ -0,0 +1,349 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2022 OpenXE project
|
||||||
|
*/
|
||||||
|
|
||||||
|
use Xentral\Components\Database\Exception\QueryFailureException;
|
||||||
|
|
||||||
|
class Konten {
|
||||||
|
|
||||||
|
function __construct($app, $intern = false) {
|
||||||
|
$this->app = $app;
|
||||||
|
if ($intern)
|
||||||
|
return;
|
||||||
|
|
||||||
|
$this->app->ActionHandlerInit($this);
|
||||||
|
$this->app->ActionHandler("list", "konten_list");
|
||||||
|
$this->app->ActionHandler("create", "konten_edit"); // This automatically adds a "New" button
|
||||||
|
$this->app->ActionHandler("edit", "konten_edit");
|
||||||
|
$this->app->ActionHandler("delete", "konten_delete");
|
||||||
|
$this->app->DefaultActionHandler("list");
|
||||||
|
$this->app->ActionHandlerListen($app);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function Install() {
|
||||||
|
/* Fill out manually later */
|
||||||
|
}
|
||||||
|
|
||||||
|
static function TableSearch(&$app, $name, $erlaubtevars) {
|
||||||
|
switch ($name) {
|
||||||
|
case "konten_list":
|
||||||
|
$allowed['konten_list'] = array('list');
|
||||||
|
$heading = array('','','Bezeichnung', 'Kurzbezeichnung', 'Typ', 'Projekt', 'Aktiv','Menü');
|
||||||
|
$width = array('1%','1%','10%'); // Fill out manually later
|
||||||
|
|
||||||
|
// columns that are aligned right (numbers etc)
|
||||||
|
// $alignright = array(4,5,6,7,8);
|
||||||
|
|
||||||
|
$findcols = array('k.id','k.id','k.bezeichnung', 'k.kurzbezeichnung', 'k.type', 'p.abkuerzung', ' k.aktiv','k.id');
|
||||||
|
$searchsql = array('k.bezeichnung', 'k.kurzbezeichnung', 'k.datevkonto', 'k.blz', 'k.konto', 'k.swift', 'k.iban', 'k.inhaber', 'k.firma','p.abkuerzung');
|
||||||
|
|
||||||
|
$defaultorder = 1;
|
||||||
|
$defaultorderdesc = 0;
|
||||||
|
|
||||||
|
$dropnbox = "'<img src=./themes/new/images/details_open.png class=details>' AS `open`, CONCAT('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',k.id,'\" />') AS `auswahl`";
|
||||||
|
|
||||||
|
$menu = "<table cellpadding=0 cellspacing=0><tr><td nowrap>" . "<a href=\"index.php?module=konten&action=edit&id=%value%\"><img src=\"./themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a> <a href=\"#\" onclick=DeleteDialog(\"index.php?module=konten&action=delete&id=%value%\");>" . "<img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"></a>" . "</td></tr></table>";
|
||||||
|
|
||||||
|
$sql = "SELECT SQL_CALC_FOUND_ROWS
|
||||||
|
k.id,
|
||||||
|
$dropnbox,
|
||||||
|
k.bezeichnung,
|
||||||
|
k.kurzbezeichnung,
|
||||||
|
k.type,
|
||||||
|
p.abkuerzung,
|
||||||
|
k.aktiv,
|
||||||
|
k.id
|
||||||
|
FROM
|
||||||
|
konten k
|
||||||
|
LEFT JOIN
|
||||||
|
projekt p
|
||||||
|
ON
|
||||||
|
p.id = k.projekt ";
|
||||||
|
|
||||||
|
$where = " k.aktiv = 1 ";
|
||||||
|
|
||||||
|
// Toggle filters
|
||||||
|
$app->Tpl->Add('JQUERYREADY', "$('#archiv').click( function() { fnFilterColumn1( 0 ); } );");
|
||||||
|
|
||||||
|
for ($r = 1;$r <= 1;$r++) {
|
||||||
|
$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 = $app->Secure->GetGET("more_data1");
|
||||||
|
if ($more_data1 == 1) {
|
||||||
|
$where .= " OR k.aktiv <> 1";
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$count = "SELECT count(DISTINCT id) FROM konten k WHERE $where";
|
||||||
|
// $groupby = "";
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$erg = false;
|
||||||
|
|
||||||
|
foreach ($erlaubtevars as $k => $v) {
|
||||||
|
if (isset($$v)) {
|
||||||
|
$erg[$v] = $$v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $erg;
|
||||||
|
}
|
||||||
|
|
||||||
|
function konten_list() {
|
||||||
|
$this->app->erp->MenuEintrag("index.php?module=konten&action=list", "Übersicht");
|
||||||
|
$this->app->erp->MenuEintrag("index.php?module=konten&action=create", "Neu anlegen");
|
||||||
|
|
||||||
|
$this->app->erp->MenuEintrag("index.php", "Zurück");
|
||||||
|
|
||||||
|
$this->app->YUI->TableSearch('TAB1', 'konten_list', "show", "", "", basename(__FILE__), __CLASS__);
|
||||||
|
$this->app->Tpl->Parse('PAGE', "konten_list.tpl");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function konten_delete() {
|
||||||
|
$id = (int) $this->app->Secure->GetGET('id');
|
||||||
|
|
||||||
|
$this->app->DB->Delete("UPDATE `konten` SET `aktiv` = 0 WHERE `id` = '{$id}'");
|
||||||
|
$this->app->Tpl->Set('MESSAGE', "<div class=\"info\">Der Eintrag wurde deaktiviert.</div>");
|
||||||
|
|
||||||
|
$this->konten_list();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Edit konten item
|
||||||
|
* If id is empty, create a new one
|
||||||
|
*/
|
||||||
|
|
||||||
|
function konten_edit() {
|
||||||
|
$id = $this->app->Secure->GetGET('id');
|
||||||
|
|
||||||
|
// Check if other users are editing this id
|
||||||
|
if($this->app->erp->DisableModul('artikel',$id))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->app->Tpl->Set('ID', $id);
|
||||||
|
|
||||||
|
$this->app->erp->MenuEintrag("index.php?module=konten&action=edit&id=$id", "Details");
|
||||||
|
$this->app->erp->MenuEintrag("index.php?module=konten&action=list", "Zurück zur Übersicht");
|
||||||
|
$id = $this->app->Secure->GetGET('id');
|
||||||
|
$input = $this->GetInput();
|
||||||
|
$submit = $this->app->Secure->GetPOST('submit');
|
||||||
|
|
||||||
|
if (empty($id)) {
|
||||||
|
// New item
|
||||||
|
$id = 'NULL';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($submit != '')
|
||||||
|
{
|
||||||
|
|
||||||
|
// Write to database
|
||||||
|
|
||||||
|
// Add checks here
|
||||||
|
$input['projekt'] = $this->app->erp->ReplaceProjekt(true,$input['projekt'],true);
|
||||||
|
|
||||||
|
$columns = "id, ";
|
||||||
|
$values = "$id, ";
|
||||||
|
$update = "";
|
||||||
|
|
||||||
|
$fix = "";
|
||||||
|
|
||||||
|
foreach ($input as $key => $value) {
|
||||||
|
$columns = $columns.$fix.$key;
|
||||||
|
$values = $values.$fix."'".$value."'";
|
||||||
|
$update = $update.$fix.$key." = '$value'";
|
||||||
|
|
||||||
|
$fix = ", ";
|
||||||
|
}
|
||||||
|
|
||||||
|
// echo($columns."<br>");
|
||||||
|
// echo($values."<br>");
|
||||||
|
// echo($update."<br>");
|
||||||
|
|
||||||
|
$sql = "INSERT INTO konten (".$columns.") VALUES (".$values.") ON DUPLICATE KEY UPDATE ".$update;
|
||||||
|
|
||||||
|
// echo($sql);
|
||||||
|
|
||||||
|
$this->app->DB->Update($sql);
|
||||||
|
|
||||||
|
if ($id == 'NULL') {
|
||||||
|
$msg = $this->app->erp->base64_url_encode("<div class=\"success\">Das Element wurde erfolgreich angelegt.</div>");
|
||||||
|
header("Location: index.php?module=konten&action=list&msg=$msg");
|
||||||
|
} else {
|
||||||
|
$this->app->Tpl->Set('MESSAGE', "<div class=\"success\">Die Einstellungen wurden erfolgreich übernommen.</div>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Load values again from database
|
||||||
|
$dropnbox = "'<img src=./themes/new/images/details_open.png class=details>' AS `open`, CONCAT('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',k.id,'\" />') AS `auswahl`";
|
||||||
|
$result = $this->app->DB->SelectArr("SELECT SQL_CALC_FOUND_ROWS k.id, $dropnbox, k.bezeichnung, k.kurzbezeichnung, k.type, k.erstezeile, k.datevkonto, k.blz, k.konto, k.swift, k.iban, k.lastschrift, k.hbci, k.hbcikennung, k.inhaber, k.aktiv, k.keineemail, k.firma, k.schreibbar, k.importletztenzeilenignorieren, k.liveimport, k.liveimport_passwort, k.liveimport_online, k.importtrennzeichen, k.codierung, k.importerstezeilenummer, k.importdatenmaskierung, k.importnullbytes, k.glaeubiger, k.geloescht, k.projekt, k.saldo_summieren, k.saldo_betrag, k.saldo_datum, k.importfelddatum, k.importfelddatumformat, k.importfelddatumformatausgabe, k.importfeldbetrag, k.importfeldbetragformat, k.importfeldbuchungstext, k.importfeldbuchungstextformat, k.importfeldwaehrung, k.importfeldwaehrungformat, k.importfeldhabensollkennung, k.importfeldkennunghaben, k.importfeldkennungsoll, k.importextrahabensoll, k.importfeldhaben, k.importfeldsoll, k.cronjobaktiv, k.cronjobverbuchen, k.last_import, k.importperiode_in_hours, k.id FROM konten k"." WHERE id=$id");
|
||||||
|
|
||||||
|
foreach ($result[0] as $key => $value) {
|
||||||
|
$this->app->Tpl->Set(strtoupper($key), $value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Add displayed items later
|
||||||
|
*
|
||||||
|
|
||||||
|
$this->app->Tpl->Add('KURZUEBERSCHRIFT2', $email);
|
||||||
|
$this->app->Tpl->Add('EMAIL', $email);
|
||||||
|
$this->app->Tpl->Add('ANGEZEIGTERNAME', $angezeigtername);
|
||||||
|
*/
|
||||||
|
|
||||||
|
$this->app->YUI->AutoComplete('projekt','projektname',1);
|
||||||
|
$this->app->Tpl->Set('PROJEKT',$this->app->erp->ReplaceProjekt(false,$result[0]['projekt'],false));
|
||||||
|
|
||||||
|
$this->app->Tpl->Set('AKTIV',$result[0]['aktiv']==1?'checked':'');
|
||||||
|
$this->app->Tpl->Set('KEINEEMAIL',$result[0]['keineemail']==1?'checked':'');
|
||||||
|
$this->app->Tpl->Set('SCHREIBBAR',$result[0]['schreibbar']==1?'checked':'');
|
||||||
|
$this->app->Tpl->Set('LASTSCHRIFT',$result[0]['lastschrift']==1?'checked':'');
|
||||||
|
$this->app->Tpl->Set('SALDO_SUMMIEREN',$result[0]['saldo_summieren']==1?'checked':'');
|
||||||
|
|
||||||
|
$this->app->Tpl->Parse('PAGE', "konten_edit.tpl");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all paramters from html form and save into $input
|
||||||
|
*/
|
||||||
|
public function GetInput(): array {
|
||||||
|
$input = array();
|
||||||
|
//$input['EMAIL'] = $this->app->Secure->GetPOST('email');
|
||||||
|
|
||||||
|
$input['bezeichnung'] = $this->app->Secure->GetPOST('bezeichnung');
|
||||||
|
$input['kurzbezeichnung'] = $this->app->Secure->GetPOST('kurzbezeichnung');
|
||||||
|
$input['type'] = $this->app->Secure->GetPOST('type');
|
||||||
|
$input['erstezeile'] = $this->app->Secure->GetPOST('erstezeile');
|
||||||
|
$input['datevkonto'] = $this->app->Secure->GetPOST('datevkonto');
|
||||||
|
$input['blz'] = $this->app->Secure->GetPOST('blz');
|
||||||
|
$input['konto'] = $this->app->Secure->GetPOST('konto');
|
||||||
|
$input['swift'] = $this->app->Secure->GetPOST('swift');
|
||||||
|
$input['iban'] = $this->app->Secure->GetPOST('iban');
|
||||||
|
$input['lastschrift'] = $this->app->Secure->GetPOST('lastschrift');
|
||||||
|
$input['hbci'] = $this->app->Secure->GetPOST('hbci');
|
||||||
|
$input['hbcikennung'] = $this->app->Secure->GetPOST('hbcikennung');
|
||||||
|
$input['inhaber'] = $this->app->Secure->GetPOST('inhaber');
|
||||||
|
$input['aktiv'] = $this->app->Secure->GetPOST('aktiv');
|
||||||
|
$input['keineemail'] = $this->app->Secure->GetPOST('keineemail');
|
||||||
|
$input['firma'] = $this->app->Secure->GetPOST('firma');
|
||||||
|
$input['schreibbar'] = $this->app->Secure->GetPOST('schreibbar');
|
||||||
|
$input['importletztenzeilenignorieren'] = $this->app->Secure->GetPOST('importletztenzeilenignorieren');
|
||||||
|
$input['liveimport'] = $this->app->Secure->GetPOST('liveimport');
|
||||||
|
$input['liveimport_passwort'] = $this->app->Secure->GetPOST('liveimport_passwort');
|
||||||
|
$input['liveimport_online'] = $this->app->Secure->GetPOST('liveimport_online');
|
||||||
|
$input['importtrennzeichen'] = $this->app->Secure->GetPOST('importtrennzeichen');
|
||||||
|
$input['codierung'] = $this->app->Secure->GetPOST('codierung');
|
||||||
|
$input['importerstezeilenummer'] = $this->app->Secure->GetPOST('importerstezeilenummer');
|
||||||
|
$input['importdatenmaskierung'] = $this->app->Secure->GetPOST('importdatenmaskierung');
|
||||||
|
$input['importnullbytes'] = $this->app->Secure->GetPOST('importnullbytes');
|
||||||
|
$input['glaeubiger'] = $this->app->Secure->GetPOST('glaeubiger');
|
||||||
|
$input['geloescht'] = $this->app->Secure->GetPOST('geloescht');
|
||||||
|
$input['projekt'] = $this->app->Secure->GetPOST('projekt');
|
||||||
|
$input['saldo_summieren'] = $this->app->Secure->GetPOST('saldo_summieren');
|
||||||
|
$input['saldo_betrag'] = $this->app->Secure->GetPOST('saldo_betrag');
|
||||||
|
$input['saldo_datum'] = $this->app->Secure->GetPOST('saldo_datum');
|
||||||
|
$input['importfelddatum'] = $this->app->Secure->GetPOST('importfelddatum');
|
||||||
|
$input['importfelddatumformat'] = $this->app->Secure->GetPOST('importfelddatumformat');
|
||||||
|
$input['importfelddatumformatausgabe'] = $this->app->Secure->GetPOST('importfelddatumformatausgabe');
|
||||||
|
$input['importfeldbetrag'] = $this->app->Secure->GetPOST('importfeldbetrag');
|
||||||
|
$input['importfeldbetragformat'] = $this->app->Secure->GetPOST('importfeldbetragformat');
|
||||||
|
$input['importfeldbuchungstext'] = $this->app->Secure->GetPOST('importfeldbuchungstext');
|
||||||
|
$input['importfeldbuchungstextformat'] = $this->app->Secure->GetPOST('importfeldbuchungstextformat');
|
||||||
|
$input['importfeldwaehrung'] = $this->app->Secure->GetPOST('importfeldwaehrung');
|
||||||
|
$input['importfeldwaehrungformat'] = $this->app->Secure->GetPOST('importfeldwaehrungformat');
|
||||||
|
$input['importfeldhabensollkennung'] = $this->app->Secure->GetPOST('importfeldhabensollkennung');
|
||||||
|
$input['importfeldkennunghaben'] = $this->app->Secure->GetPOST('importfeldkennunghaben');
|
||||||
|
$input['importfeldkennungsoll'] = $this->app->Secure->GetPOST('importfeldkennungsoll');
|
||||||
|
$input['importextrahabensoll'] = $this->app->Secure->GetPOST('importextrahabensoll');
|
||||||
|
$input['importfeldhaben'] = $this->app->Secure->GetPOST('importfeldhaben');
|
||||||
|
$input['importfeldsoll'] = $this->app->Secure->GetPOST('importfeldsoll');
|
||||||
|
$input['cronjobaktiv'] = $this->app->Secure->GetPOST('cronjobaktiv');
|
||||||
|
$input['cronjobverbuchen'] = $this->app->Secure->GetPOST('cronjobverbuchen');
|
||||||
|
$input['last_import'] = $this->app->Secure->GetPOST('last_import');
|
||||||
|
$input['importperiode_in_hours'] = $this->app->Secure->GetPOST('importperiode_in_hours');
|
||||||
|
return $input;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set all fields in the page corresponding to $input
|
||||||
|
*/
|
||||||
|
function SetInput($input) {
|
||||||
|
// $this->app->Tpl->Set('EMAIL', $input['email']);
|
||||||
|
|
||||||
|
$this->app->Tpl->Set('BEZEICHNUNG', $input['bezeichnung']);
|
||||||
|
$this->app->Tpl->Set('KURZBEZEICHNUNG', $input['kurzbezeichnung']);
|
||||||
|
$this->app->Tpl->Set('TYPE', $input['type']);
|
||||||
|
$this->app->Tpl->Set('ERSTEZEILE', $input['erstezeile']);
|
||||||
|
$this->app->Tpl->Set('DATEVKONTO', $input['datevkonto']);
|
||||||
|
$this->app->Tpl->Set('BLZ', $input['blz']);
|
||||||
|
$this->app->Tpl->Set('KONTO', $input['konto']);
|
||||||
|
$this->app->Tpl->Set('SWIFT', $input['swift']);
|
||||||
|
$this->app->Tpl->Set('IBAN', $input['iban']);
|
||||||
|
$this->app->Tpl->Set('LASTSCHRIFT', $input['lastschrift']);
|
||||||
|
$this->app->Tpl->Set('HBCI', $input['hbci']);
|
||||||
|
$this->app->Tpl->Set('HBCIKENNUNG', $input['hbcikennung']);
|
||||||
|
$this->app->Tpl->Set('INHABER', $input['inhaber']);
|
||||||
|
$this->app->Tpl->Set('AKTIV', $input['aktiv']);
|
||||||
|
$this->app->Tpl->Set('KEINEEMAIL', $input['keineemail']);
|
||||||
|
$this->app->Tpl->Set('FIRMA', $input['firma']);
|
||||||
|
$this->app->Tpl->Set('SCHREIBBAR', $input['schreibbar']);
|
||||||
|
$this->app->Tpl->Set('IMPORTLETZTENZEILENIGNORIEREN', $input['importletztenzeilenignorieren']);
|
||||||
|
$this->app->Tpl->Set('LIVEIMPORT', $input['liveimport']);
|
||||||
|
$this->app->Tpl->Set('LIVEIMPORT_PASSWORT', $input['liveimport_passwort']);
|
||||||
|
$this->app->Tpl->Set('LIVEIMPORT_ONLINE', $input['liveimport_online']);
|
||||||
|
$this->app->Tpl->Set('IMPORTTRENNZEICHEN', $input['importtrennzeichen']);
|
||||||
|
$this->app->Tpl->Set('CODIERUNG', $input['codierung']);
|
||||||
|
$this->app->Tpl->Set('IMPORTERSTEZEILENUMMER', $input['importerstezeilenummer']);
|
||||||
|
$this->app->Tpl->Set('IMPORTDATENMASKIERUNG', $input['importdatenmaskierung']);
|
||||||
|
$this->app->Tpl->Set('IMPORTNULLBYTES', $input['importnullbytes']);
|
||||||
|
$this->app->Tpl->Set('GLAEUBIGER', $input['glaeubiger']);
|
||||||
|
$this->app->Tpl->Set('GELOESCHT', $input['geloescht']);
|
||||||
|
$this->app->Tpl->Set('PROJEKT', $input['projekt']);
|
||||||
|
$this->app->Tpl->Set('SALDO_SUMMIEREN', $input['saldo_summieren']);
|
||||||
|
$this->app->Tpl->Set('SALDO_BETRAG', $input['saldo_betrag']);
|
||||||
|
$this->app->Tpl->Set('SALDO_DATUM', $input['saldo_datum']);
|
||||||
|
$this->app->Tpl->Set('IMPORTFELDDATUM', $input['importfelddatum']);
|
||||||
|
$this->app->Tpl->Set('IMPORTFELDDATUMFORMAT', $input['importfelddatumformat']);
|
||||||
|
$this->app->Tpl->Set('IMPORTFELDDATUMFORMATAUSGABE', $input['importfelddatumformatausgabe']);
|
||||||
|
$this->app->Tpl->Set('IMPORTFELDBETRAG', $input['importfeldbetrag']);
|
||||||
|
$this->app->Tpl->Set('IMPORTFELDBETRAGFORMAT', $input['importfeldbetragformat']);
|
||||||
|
$this->app->Tpl->Set('IMPORTFELDBUCHUNGSTEXT', $input['importfeldbuchungstext']);
|
||||||
|
$this->app->Tpl->Set('IMPORTFELDBUCHUNGSTEXTFORMAT', $input['importfeldbuchungstextformat']);
|
||||||
|
$this->app->Tpl->Set('IMPORTFELDWAEHRUNG', $input['importfeldwaehrung']);
|
||||||
|
$this->app->Tpl->Set('IMPORTFELDWAEHRUNGFORMAT', $input['importfeldwaehrungformat']);
|
||||||
|
$this->app->Tpl->Set('IMPORTFELDHABENSOLLKENNUNG', $input['importfeldhabensollkennung']);
|
||||||
|
$this->app->Tpl->Set('IMPORTFELDKENNUNGHABEN', $input['importfeldkennunghaben']);
|
||||||
|
$this->app->Tpl->Set('IMPORTFELDKENNUNGSOLL', $input['importfeldkennungsoll']);
|
||||||
|
$this->app->Tpl->Set('IMPORTEXTRAHABENSOLL', $input['importextrahabensoll']);
|
||||||
|
$this->app->Tpl->Set('IMPORTFELDHABEN', $input['importfeldhaben']);
|
||||||
|
$this->app->Tpl->Set('IMPORTFELDSOLL', $input['importfeldsoll']);
|
||||||
|
$this->app->Tpl->Set('CRONJOBAKTIV', $input['cronjobaktiv']);
|
||||||
|
$this->app->Tpl->Set('CRONJOBVERBUCHEN', $input['cronjobverbuchen']);
|
||||||
|
$this->app->Tpl->Set('LAST_IMPORT', $input['last_import']);
|
||||||
|
$this->app->Tpl->Set('IMPORTPERIODE_IN_HOURS', $input['importperiode_in_hours']);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,539 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2022 OpenXE project
|
||||||
|
*/
|
||||||
|
|
||||||
|
use Xentral\Components\Database\Exception\QueryFailureException;
|
||||||
|
|
||||||
|
class Kontoauszuege {
|
||||||
|
|
||||||
|
function __construct($app, $intern = false) {
|
||||||
|
$this->app = $app;
|
||||||
|
if ($intern)
|
||||||
|
return;
|
||||||
|
|
||||||
|
$this->app->ActionHandlerInit($this);
|
||||||
|
$this->app->ActionHandler("list", "kontoauszuege_konto_list");
|
||||||
|
$this->app->ActionHandler("listentries", "kontoauszuege_list");
|
||||||
|
// $this->app->ActionHandler("create", "kontoauszuege_edit"); // This automatically adds a "New" button
|
||||||
|
$this->app->ActionHandler("edit", "kontoauszuege_edit");
|
||||||
|
$this->app->ActionHandler("delete", "kontoauszuege_delete");
|
||||||
|
$this->app->DefaultActionHandler("list");
|
||||||
|
$this->app->ActionHandlerListen($app);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function Install() {
|
||||||
|
/* Fill out manually later */
|
||||||
|
}
|
||||||
|
|
||||||
|
function TableSearch(&$app, $name, $erlaubtevars) {
|
||||||
|
switch ($name) {
|
||||||
|
case "kontoauszuege_konto_list":
|
||||||
|
|
||||||
|
$allowed['konten_list'] = array('list');
|
||||||
|
$heading = array('Bezeichnung', 'Kurzbezeichnung', 'Typ', 'Kontostand','Letzter Import', 'Menü');
|
||||||
|
// $width = array('1%','1%','10%'); // Fill out manually later
|
||||||
|
|
||||||
|
// columns that are aligned right (numbers etc)
|
||||||
|
// $alignright = array(4,5,6,7,8); sdds
|
||||||
|
|
||||||
|
$findcols = array('k.bezeichnung', 'k.kurzbezeichnung', 'k.type', 'k.kontostand','ka.datum', 'k.id');
|
||||||
|
$searchsql = array('k.bezeichnung', 'k.kurzbezeichnung', 'k.datevkonto', 'k.blz', 'k.konto', 'k.swift', 'k.iban', 'k.inhaber', 'k.firma','p.abkuerzung');
|
||||||
|
|
||||||
|
$defaultorder = 1;
|
||||||
|
$defaultorderdesc = 0;
|
||||||
|
|
||||||
|
// $sumcol = array(5);
|
||||||
|
|
||||||
|
$dropnbox = "'<img src=./themes/new/images/details_open.png class=details>' AS `open`, CONCAT('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',k.id,'\" />') AS `auswahl`";
|
||||||
|
|
||||||
|
$menu = "<table cellpadding=0 cellspacing=0><tr><td nowrap>" . "<a href=\"index.php?module=kontoauszuege&action=listentries&kid=%value%\"><img src=\"./themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a></td></tr></table>";
|
||||||
|
|
||||||
|
$saldolink = array (
|
||||||
|
'<a href=\"index.php?module=fibu_buchungen&action=zuordnen&typ=kontoauszuege',
|
||||||
|
'">',
|
||||||
|
['sql' => $this->app->erp->FormatMenge('SUM(COALESCE(fb.betrag,0))',2)],
|
||||||
|
'</a>'
|
||||||
|
);
|
||||||
|
|
||||||
|
$sql = "SELECT
|
||||||
|
k.id,
|
||||||
|
k.bezeichnung,
|
||||||
|
k.kurzbezeichnung,
|
||||||
|
".$this->app->erp->FormatUCfirst('k.type').",
|
||||||
|
".$this->app->erp->FormatMenge('SUM(COALESCE(ka.soll,0))+k.saldo_betrag',2)." AS kontostand,
|
||||||
|
".$this->app->erp->FormatDatetime("MIN(ka.importdatum)")." AS datum,
|
||||||
|
k.id
|
||||||
|
FROM
|
||||||
|
konten k
|
||||||
|
LEFT JOIN kontoauszuege ka ON
|
||||||
|
k.id = ka.konto";
|
||||||
|
|
||||||
|
$where = " k.aktiv = 1 AND ka.importfehler IS NULL ";
|
||||||
|
|
||||||
|
// Toggle filters
|
||||||
|
$app->Tpl->Add('JQUERYREADY', "$('#archiv').click( function() { fnFilterColumn1( 0 ); } );");
|
||||||
|
|
||||||
|
for ($r = 1;$r <= 1;$r++) {
|
||||||
|
$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 = $app->Secure->GetGET("more_data1");
|
||||||
|
if ($more_data1 == 1) {
|
||||||
|
$where .= " OR k.aktiv <> 1";
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
|
||||||
|
// echo($sql);
|
||||||
|
|
||||||
|
// $count = "SELECT count(DISTINCT id) FROM konten k WHERE $where";
|
||||||
|
$groupby = " GROUP BY k.id";
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "kontoauszuege_list":
|
||||||
|
$allowed['kontoauszuege_list'] = array('list');
|
||||||
|
|
||||||
|
$kontoid = $this->app->User->getParameter('kontoauszuege_konto_id');
|
||||||
|
$onlysaldo = $this->app->User->getParameter('kontoauszuege_only_saldo');
|
||||||
|
|
||||||
|
$heading = array('','', 'Importdatum', 'Konto', 'Datum', 'Betrag', 'Waehrung', 'Buchungstext','Interne Bemerkung', 'Saldo', 'Menü');
|
||||||
|
$width = array('1%','1%', '1%', '10%', '1%', '1%', '1%', '20%', '20%', '1%', '1%'); // Fill out manually later
|
||||||
|
|
||||||
|
// columns that are aligned right (numbers etc)
|
||||||
|
$alignright = array(6);
|
||||||
|
|
||||||
|
$sumcol = array(10);
|
||||||
|
|
||||||
|
$findcols = array('q.id','q.id','q.kurzbezeichnung', 'q.importdatum', 'q.buchung', 'q.soll', 'q.waehrung', 'q.buchungstext','q.internebemerkung','q.saldo');
|
||||||
|
$searchsql = array('q.kurzbezeichnung', 'q.buchung', 'q.soll', 'q.buchungstext','q.internebemerkung');
|
||||||
|
|
||||||
|
$defaultorder = 1;
|
||||||
|
$defaultorderdesc = 0;
|
||||||
|
|
||||||
|
$dropnbox = "'<img src=./themes/new/images/details_open.png class=details>' AS `open`, CONCAT('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',k.id,'\" />') AS `auswahl`";
|
||||||
|
|
||||||
|
$menu = "<table cellpadding=0 cellspacing=0><tr><td nowrap>" . "<a href=\"index.php?module=kontoauszuege&action=edit&id=%value%\"><img src=\"./themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a> <a href=\"#\" onclick=DeleteDialog(\"index.php?module=kontoauszuege&action=delete&kid=".$kontoid."&onlysaldo=".$onlysaldo."&id=%value%\");>" . "<img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"></a>" . "</td></tr></table>";
|
||||||
|
|
||||||
|
// Toggle filters
|
||||||
|
$app->Tpl->Add('JQUERYREADY', "$('#importfehler').click( function() { fnFilterColumn1( 0 ); } );");
|
||||||
|
|
||||||
|
for ($r = 1;$r <= 4;$r++) {
|
||||||
|
$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 = $app->Secure->GetGET("more_data1");
|
||||||
|
if ($more_data1 == 1) {
|
||||||
|
$subwhere .= "";
|
||||||
|
} else {
|
||||||
|
$subwhere .= " AND k.importfehler IS NULL ";
|
||||||
|
}
|
||||||
|
// END Toggle filters
|
||||||
|
|
||||||
|
$sql = "SELECT SQL_CALC_FOUND_ROWS * FROM ( SELECT
|
||||||
|
k.id,
|
||||||
|
$dropnbox,
|
||||||
|
".$app->erp->FormatDateTimeShort('k.importdatum')." AS importdatum,
|
||||||
|
(SELECT kurzbezeichnung FROM konten WHERE konten.id = k.konto) as kurzbezeichnung,
|
||||||
|
".$app->erp->FormatDate('k.buchung')." as buchung,
|
||||||
|
IF(
|
||||||
|
k.importfehler,
|
||||||
|
CONCAT(
|
||||||
|
'<del>',
|
||||||
|
".$app->erp->FormatMenge('(k.soll)',2).",
|
||||||
|
'</del>'
|
||||||
|
),
|
||||||
|
".$app->erp->FormatMenge('(k.soll)',2)."),
|
||||||
|
k.waehrung,
|
||||||
|
k.buchungstext,
|
||||||
|
k.internebemerkung,
|
||||||
|
".$app->erp->FormatMenge('SUM(fb.betrag)',2)." AS saldo,
|
||||||
|
k.id as menuid,
|
||||||
|
SUM(fb.betrag) AS saldonum
|
||||||
|
FROM kontoauszuege k
|
||||||
|
LEFT JOIN fibu_buchungen_alle fb ON
|
||||||
|
fb.id = k.id AND fb.typ = 'kontoauszuege'
|
||||||
|
WHERE k.konto = ".$kontoid.$subwhere."
|
||||||
|
GROUP BY k.id ) AS q
|
||||||
|
";
|
||||||
|
|
||||||
|
$where = "1";
|
||||||
|
if ($onlysaldo) {
|
||||||
|
$where .= " AND saldonum != 0";
|
||||||
|
}
|
||||||
|
|
||||||
|
// $count = "SELECT count(DISTINCT id) FROM kontoauszuege k WHERE $where";
|
||||||
|
// $groupby = "";
|
||||||
|
|
||||||
|
// echo($sql." WHERE ".$where." ".$groupby);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "kontoauszuege_salden":
|
||||||
|
$allowed['kontoauszuege_list'] = array('list');
|
||||||
|
|
||||||
|
$kontoid = $this->app->User->getParameter('kontoauszuege_konto_id');
|
||||||
|
$onlysaldo = $this->app->User->getParameter('kontoauszuege_only_saldo');
|
||||||
|
|
||||||
|
$heading = array('','', 'Buchungstext', 'Betrag', 'Waehrung', 'Betrag zuordnen', 'Beleg', 'ID','Beleg-Nr.','', 'Menü');
|
||||||
|
$width = array('1%','1%', '20%', '1%', '1%', '1%', '1%', '1%','1%', '1%','1%');
|
||||||
|
|
||||||
|
// columns that are aligned right (numbers etc)
|
||||||
|
$alignright = array(6);
|
||||||
|
|
||||||
|
$sumcol = array(10);
|
||||||
|
|
||||||
|
$findcols = array('q.id','q.id','q.konto', 'q.importdatum', 'q.buchung', 'q.soll', 'q.waehrung', 'q.buchungstext','q.internebemerkung','q.saldo');
|
||||||
|
$searchsql = array('q.konto', 'q.buchung', 'q.soll', 'q.buchungstext','q.internebemerkung');
|
||||||
|
|
||||||
|
$defaultorder = 1;
|
||||||
|
$defaultorderdesc = 0;
|
||||||
|
|
||||||
|
$dropnbox = "'<img src=./themes/new/images/details_open.png class=details>' AS `open`, CONCAT('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',q.id,'\"',if(b.doc_belegnr IS NOT NULL,'checked',''),' />') AS `auswahl`";
|
||||||
|
|
||||||
|
$menu = "<table cellpadding=0 cellspacing=0><tr><td nowrap>" . "<a href=\"index.php?module=kontoauszuege&action=edit&id=%value%\"><img src=\"./themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a> <a href=\"#\" onclick=DeleteDialog(\"index.php?module=kontoauszuege&action=delete&kid=".$kontoid."&onlysaldo=".$onlysaldo."&id=%value%\");>" . "<img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"></a>" . "</td></tr></table>";
|
||||||
|
|
||||||
|
|
||||||
|
$sql = "SELECT
|
||||||
|
".$this->app->erp->FormatUCfirst('typ')."
|
||||||
|
SUM(betrag)
|
||||||
|
FROM `fibu_buchungen_alle`
|
||||||
|
";
|
||||||
|
|
||||||
|
$where = "1";
|
||||||
|
if ($onlysaldo) {
|
||||||
|
$where .= " AND q.saldonum != 0";
|
||||||
|
}
|
||||||
|
|
||||||
|
// $count = "SELECT count(DISTINCT id) FROM kontoauszuege k WHERE $where";
|
||||||
|
$groupby = "GROUP BY typ";
|
||||||
|
|
||||||
|
// echo($sql." WHERE ".$where." ".$groupby);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$erg = false;
|
||||||
|
|
||||||
|
foreach ($erlaubtevars as $k => $v) {
|
||||||
|
if (isset($$v)) {
|
||||||
|
$erg[$v] = $$v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $erg;
|
||||||
|
}
|
||||||
|
|
||||||
|
function kontoauszuege_konto_list() {
|
||||||
|
|
||||||
|
$this->app->erp->MenuEintrag("index.php?module=kontoauszuege&action=list", "Übersicht");
|
||||||
|
// $this->app->erp->MenuEintrag("index.php?module=kontoauszuege&action=create", "Neu anlegen");
|
||||||
|
|
||||||
|
$this->app->erp->MenuEintrag("index.php", "Zurück");
|
||||||
|
|
||||||
|
$this->app->YUI->TableSearch('TAB1', 'kontoauszuege_konto_list', "show", "", "", basename(__FILE__), __CLASS__);
|
||||||
|
$this->app->Tpl->Parse('PAGE', "kontoauszuege_konto_list.tpl");
|
||||||
|
}
|
||||||
|
|
||||||
|
function kontoauszuege_mark_as_error(int $id) : ?string {
|
||||||
|
$sql = "SELECT id FROM fibu_buchungen_alle WHERE CONCAT(doc_typ,doc_id) <> CONCAT('kontoauszuege','".$id."') AND typ = 'kontoauszuege' AND id = ".$id;
|
||||||
|
$result = $this->app->DB->SelectArr($sql);
|
||||||
|
|
||||||
|
if (!empty($result)) {
|
||||||
|
return("Es existieren Buchungen, Eintrag wurde nicht als Importfehler markiert!");
|
||||||
|
} else {
|
||||||
|
$this->app->DB->Delete("UPDATE `kontoauszuege` SET importfehler = 1 WHERE `id` = '{$id}'");
|
||||||
|
return("Der Eintrag wurde als Importfehler markiert.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return(null);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function kontoauszuege_list() {
|
||||||
|
|
||||||
|
// Process multi action
|
||||||
|
$auswahl = $this->app->Secure->GetPOST('auswahl');
|
||||||
|
$selectedIds = [];
|
||||||
|
if(!empty($auswahl)) {
|
||||||
|
foreach($auswahl as $selectedId) {
|
||||||
|
$selectedId = (int)$selectedId;
|
||||||
|
if($selectedId > 0) {
|
||||||
|
$selectedIds[] = $selectedId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$submit = $this->app->Secure->GetPOST('ausfuehren');
|
||||||
|
|
||||||
|
if ($submit == 'Importfehler') {
|
||||||
|
|
||||||
|
$message = "";
|
||||||
|
|
||||||
|
foreach ($selectedIds as $selectedId) {
|
||||||
|
$result = $this->kontoauszuege_mark_as_error($selectedId);
|
||||||
|
if ($result) {
|
||||||
|
$message = $result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($message) {
|
||||||
|
$this->app->Tpl->Set('MESSAGE', "<div class=\"error\">".$message."</div>");
|
||||||
|
} else {
|
||||||
|
$this->app->Tpl->Set('MESSAGE', "<div class=\"warning\">Einträge wurden als Importfehler markiert.</div>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->app->erp->MenuEintrag("index.php?module=kontoauszuege&action=list", "Übersicht");
|
||||||
|
// $this->app->erp->MenuEintrag("index.php?module=kontoauszuege&action=create", "Neu anlegen");
|
||||||
|
|
||||||
|
$this->app->erp->MenuEintrag("index.php", "Zurück");
|
||||||
|
|
||||||
|
$kontoid = $this->app->Secure->GetGET('kid');
|
||||||
|
$this->app->User->SetParameter('kontoauszuege_konto_id', $kontoid);
|
||||||
|
$onlysaldo = $this->app->Secure->GetGET('onlysaldo');
|
||||||
|
$this->app->User->SetParameter('kontoauszuege_only_saldo', $onlysaldo);
|
||||||
|
|
||||||
|
if ($onlysaldo) {
|
||||||
|
$this->app->Tpl->Set('INFO','Nicht zugeordnete Posten');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->app->YUI->TableSearch('TAB1', 'kontoauszuege_list', "show", "", "", basename(__FILE__), __CLASS__);
|
||||||
|
$this->app->Tpl->Parse('PAGE', "kontoauszuege_list.tpl");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function kontoauszuege_delete() {
|
||||||
|
$id = (int) $this->app->Secure->GetGET('id');
|
||||||
|
|
||||||
|
$result = $this->kontoauszuege_mark_as_error($id);
|
||||||
|
|
||||||
|
if ($result) {
|
||||||
|
$this->app->Tpl->Set('MESSAGE', "<div class=\"error\">".$result."</div>");
|
||||||
|
} else {
|
||||||
|
$this->app->Tpl->Set('MESSAGE', "<div class=\"warning\">Der Eintrag wurde als Importfehler markiert.</div>");
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->kontoauszuege_list();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Edit kontoauszuege item
|
||||||
|
* If id is empty, create a new one
|
||||||
|
*/
|
||||||
|
|
||||||
|
function kontoauszuege_edit() {
|
||||||
|
$id = $this->app->Secure->GetGET('id');
|
||||||
|
|
||||||
|
// Check if other users are editing this id
|
||||||
|
if($this->app->erp->DisableModul('artikel',$id))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->app->Tpl->Set('ID', $id);
|
||||||
|
|
||||||
|
$this->app->erp->MenuEintrag("index.php?module=kontoauszuege&action=edit&id=$id", "Details");
|
||||||
|
$this->app->erp->MenuEintrag("index.php?module=kontoauszuege&action=list", "Zurück zur Übersicht");
|
||||||
|
$id = $this->app->Secure->GetGET('id');
|
||||||
|
$input = $this->GetInput();
|
||||||
|
$submit = $this->app->Secure->GetPOST('submit');
|
||||||
|
|
||||||
|
/* if (empty($id)) {
|
||||||
|
// New item
|
||||||
|
$id = 'NULL';
|
||||||
|
} */
|
||||||
|
|
||||||
|
if ($submit != '')
|
||||||
|
{
|
||||||
|
|
||||||
|
// Write to database
|
||||||
|
|
||||||
|
// Add checks here
|
||||||
|
|
||||||
|
$columns = "id, ";
|
||||||
|
$values = "$id, ";
|
||||||
|
$update = "";
|
||||||
|
|
||||||
|
$fix = "";
|
||||||
|
|
||||||
|
foreach ($input as $key => $value) {
|
||||||
|
$columns = $columns.$fix.$key;
|
||||||
|
$values = $values.$fix."'".$value."'";
|
||||||
|
$update = $update.$fix.$key." = '$value'";
|
||||||
|
|
||||||
|
$fix = ", ";
|
||||||
|
}
|
||||||
|
|
||||||
|
// echo($columns."<br>");
|
||||||
|
// echo($values."<br>");
|
||||||
|
// echo($update."<br>");
|
||||||
|
|
||||||
|
$sql = "INSERT INTO kontoauszuege (".$columns.") VALUES (".$values.") ON DUPLICATE KEY UPDATE ".$update;
|
||||||
|
|
||||||
|
// echo($sql);
|
||||||
|
|
||||||
|
$this->app->DB->Update($sql);
|
||||||
|
|
||||||
|
if ($id == 'NULL') {
|
||||||
|
$msg = $this->app->erp->base64_url_encode("<div class=\"success\">Das Element wurde erfolgreich angelegt.</div>");
|
||||||
|
header("Location: index.php?module=kontoauszuege&action=list&msg=$msg");
|
||||||
|
} else {
|
||||||
|
$this->app->Tpl->Set('MESSAGE', "<div class=\"success\">Die Einstellungen wurden erfolgreich übernommen.</div>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Load values again from database
|
||||||
|
$dropnbox = "'<img src=./themes/new/images/details_open.png class=details>' AS `open`, CONCAT('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',k.id,'\" />') AS `auswahl`";
|
||||||
|
$result = $this->app->DB->SelectArr("SELECT SQL_CALC_FOUND_ROWS k.id, $dropnbox, k.konto, k.buchung, k.originalbuchung, k.vorgang, k.originalvorgang, k.soll, k.originalsoll, k.haben, k.originalhaben, k.gebuehr, k.originalgebuehr, k.waehrung, k.originalwaehrung, k.fertig, k.datev_abgeschlossen, k.buchungstext, k.gegenkonto, k.belegfeld1, k.bearbeiter, k.mailbenachrichtigung, k.pruefsumme, k.kostenstelle, k.importgroup, k.diff, k.diffangelegt, k.internebemerkung, k.importfehler, k.parent, k.sort, k.doctype, k.doctypeid, k.vorauswahltyp, k.vorauswahlparameter, k.klaerfall, k.klaergrund, k.bezugtyp, k.bezugparameter, k.vorauswahlvorschlag, k.id FROM kontoauszuege k"." WHERE id=$id");
|
||||||
|
|
||||||
|
foreach ($result[0] as $key => $value) {
|
||||||
|
$this->app->Tpl->Set(strtoupper($key), $value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Add displayed items later
|
||||||
|
*
|
||||||
|
|
||||||
|
$this->app->Tpl->Add('KURZUEBERSCHRIFT2', $email);
|
||||||
|
$this->app->Tpl->Add('EMAIL', $email);
|
||||||
|
$this->app->Tpl->Add('ANGEZEIGTERNAME', $angezeigtername);
|
||||||
|
*/
|
||||||
|
|
||||||
|
$sql = "SELECT kurzbezeichnung FROM konten WHERE id=".$result[0]['konto'];
|
||||||
|
$konto = $this->app->DB->Select($sql);
|
||||||
|
$this->app->Tpl->Set('KONTO', $konto);
|
||||||
|
|
||||||
|
$this->app->Tpl->Set('BUCHUNG', $this->app->erp->ReplaceDatum(false,$result[0]['buchung'],false));
|
||||||
|
$this->app->Tpl->Set('SOLL', $this->app->erp->ReplaceBetrag(false,$result[0]['soll'],false));
|
||||||
|
|
||||||
|
$this->app->Tpl->Parse('PAGE', "kontoauszuege_edit.tpl");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all paramters from html form and save into $input
|
||||||
|
*/
|
||||||
|
public function GetInput(): array {
|
||||||
|
$input = array();
|
||||||
|
//$input['EMAIL'] = $this->app->Secure->GetPOST('email');
|
||||||
|
|
||||||
|
/* $input['konto'] = $this->app->Secure->GetPOST('konto');
|
||||||
|
$input['buchung'] = $this->app->Secure->GetPOST('buchung');
|
||||||
|
$input['originalbuchung'] = $this->app->Secure->GetPOST('originalbuchung');
|
||||||
|
$input['vorgang'] = $this->app->Secure->GetPOST('vorgang');
|
||||||
|
$input['originalvorgang'] = $this->app->Secure->GetPOST('originalvorgang');
|
||||||
|
$input['soll'] = $this->app->Secure->GetPOST('soll');
|
||||||
|
$input['originalsoll'] = $this->app->Secure->GetPOST('originalsoll');
|
||||||
|
$input['haben'] = $this->app->Secure->GetPOST('haben');
|
||||||
|
$input['originalhaben'] = $this->app->Secure->GetPOST('originalhaben');
|
||||||
|
$input['gebuehr'] = $this->app->Secure->GetPOST('gebuehr');
|
||||||
|
$input['originalgebuehr'] = $this->app->Secure->GetPOST('originalgebuehr');
|
||||||
|
$input['waehrung'] = $this->app->Secure->GetPOST('waehrung');
|
||||||
|
$input['originalwaehrung'] = $this->app->Secure->GetPOST('originalwaehrung');
|
||||||
|
$input['fertig'] = $this->app->Secure->GetPOST('fertig');
|
||||||
|
$input['datev_abgeschlossen'] = $this->app->Secure->GetPOST('datev_abgeschlossen');
|
||||||
|
$input['buchungstext'] = $this->app->Secure->GetPOST('buchungstext');
|
||||||
|
$input['gegenkonto'] = $this->app->Secure->GetPOST('gegenkonto');
|
||||||
|
$input['belegfeld1'] = $this->app->Secure->GetPOST('belegfeld1');
|
||||||
|
$input['bearbeiter'] = $this->app->Secure->GetPOST('bearbeiter');
|
||||||
|
$input['mailbenachrichtigung'] = $this->app->Secure->GetPOST('mailbenachrichtigung');
|
||||||
|
$input['pruefsumme'] = $this->app->Secure->GetPOST('pruefsumme');
|
||||||
|
$input['kostenstelle'] = $this->app->Secure->GetPOST('kostenstelle');
|
||||||
|
$input['importgroup'] = $this->app->Secure->GetPOST('importgroup');
|
||||||
|
$input['diff'] = $this->app->Secure->GetPOST('diff');
|
||||||
|
$input['diffangelegt'] = $this->app->Secure->GetPOST('diffangelegt');
|
||||||
|
*/ $input['internebemerkung'] = $this->app->Secure->GetPOST('internebemerkung');
|
||||||
|
/* $input['importfehler'] = $this->app->Secure->GetPOST('importfehler');
|
||||||
|
$input['parent'] = $this->app->Secure->GetPOST('parent');
|
||||||
|
$input['sort'] = $this->app->Secure->GetPOST('sort');
|
||||||
|
$input['doctype'] = $this->app->Secure->GetPOST('doctype');
|
||||||
|
$input['doctypeid'] = $this->app->Secure->GetPOST('doctypeid');
|
||||||
|
$input['vorauswahltyp'] = $this->app->Secure->GetPOST('vorauswahltyp');
|
||||||
|
$input['vorauswahlparameter'] = $this->app->Secure->GetPOST('vorauswahlparameter');
|
||||||
|
$input['klaerfall'] = $this->app->Secure->GetPOST('klaerfall');
|
||||||
|
$input['klaergrund'] = $this->app->Secure->GetPOST('klaergrund');
|
||||||
|
$input['bezugtyp'] = $this->app->Secure->GetPOST('bezugtyp');
|
||||||
|
$input['bezugparameter'] = $this->app->Secure->GetPOST('bezugparameter');
|
||||||
|
$input['vorauswahlvorschlag'] = $this->app->Secure->GetPOST('vorauswahlvorschlag');*/
|
||||||
|
|
||||||
|
|
||||||
|
return $input;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set all fields in the page corresponding to $input
|
||||||
|
*/
|
||||||
|
function SetInput($input) {
|
||||||
|
// $this->app->Tpl->Set('EMAIL', $input['email']);
|
||||||
|
|
||||||
|
$this->app->Tpl->Set('KONTO', $input['konto']);
|
||||||
|
$this->app->Tpl->Set('BUCHUNG', $input['buchung']);
|
||||||
|
$this->app->Tpl->Set('ORIGINALBUCHUNG', $input['originalbuchung']);
|
||||||
|
$this->app->Tpl->Set('VORGANG', $input['vorgang']);
|
||||||
|
$this->app->Tpl->Set('ORIGINALVORGANG', $input['originalvorgang']);
|
||||||
|
$this->app->Tpl->Set('SOLL', $input['soll']);
|
||||||
|
$this->app->Tpl->Set('ORIGINALSOLL', $input['originalsoll']);
|
||||||
|
$this->app->Tpl->Set('HABEN', $input['haben']);
|
||||||
|
$this->app->Tpl->Set('ORIGINALHABEN', $input['originalhaben']);
|
||||||
|
$this->app->Tpl->Set('GEBUEHR', $input['gebuehr']);
|
||||||
|
$this->app->Tpl->Set('ORIGINALGEBUEHR', $input['originalgebuehr']);
|
||||||
|
$this->app->Tpl->Set('WAEHRUNG', $input['waehrung']);
|
||||||
|
$this->app->Tpl->Set('ORIGINALWAEHRUNG', $input['originalwaehrung']);
|
||||||
|
$this->app->Tpl->Set('FERTIG', $input['fertig']);
|
||||||
|
$this->app->Tpl->Set('DATEV_ABGESCHLOSSEN', $input['datev_abgeschlossen']);
|
||||||
|
$this->app->Tpl->Set('BUCHUNGSTEXT', $input['buchungstext']);
|
||||||
|
$this->app->Tpl->Set('GEGENKONTO', $input['gegenkonto']);
|
||||||
|
$this->app->Tpl->Set('BELEGFELD1', $input['belegfeld1']);
|
||||||
|
$this->app->Tpl->Set('BEARBEITER', $input['bearbeiter']);
|
||||||
|
$this->app->Tpl->Set('MAILBENACHRICHTIGUNG', $input['mailbenachrichtigung']);
|
||||||
|
$this->app->Tpl->Set('PRUEFSUMME', $input['pruefsumme']);
|
||||||
|
$this->app->Tpl->Set('KOSTENSTELLE', $input['kostenstelle']);
|
||||||
|
$this->app->Tpl->Set('IMPORTGROUP', $input['importgroup']);
|
||||||
|
$this->app->Tpl->Set('DIFF', $input['diff']);
|
||||||
|
$this->app->Tpl->Set('DIFFANGELEGT', $input['diffangelegt']);
|
||||||
|
$this->app->Tpl->Set('INTERNEBEMERKUNG', $input['internebemerkung']);
|
||||||
|
$this->app->Tpl->Set('IMPORTFEHLER', $input['importfehler']);
|
||||||
|
$this->app->Tpl->Set('PARENT', $input['parent']);
|
||||||
|
$this->app->Tpl->Set('SORT', $input['sort']);
|
||||||
|
$this->app->Tpl->Set('DOCTYPE', $input['doctype']);
|
||||||
|
$this->app->Tpl->Set('DOCTYPEID', $input['doctypeid']);
|
||||||
|
$this->app->Tpl->Set('VORAUSWAHLTYP', $input['vorauswahltyp']);
|
||||||
|
$this->app->Tpl->Set('VORAUSWAHLPARAMETER', $input['vorauswahlparameter']);
|
||||||
|
$this->app->Tpl->Set('KLAERFALL', $input['klaerfall']);
|
||||||
|
$this->app->Tpl->Set('KLAERGRUND', $input['klaergrund']);
|
||||||
|
$this->app->Tpl->Set('BEZUGTYP', $input['bezugtyp']);
|
||||||
|
$this->app->Tpl->Set('BEZUGPARAMETER', $input['bezugparameter']);
|
||||||
|
$this->app->Tpl->Set('VORAUSWAHLVORSCHLAG', $input['vorauswahlvorschlag']);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+14
-5
@@ -451,7 +451,7 @@ class Lager extends GenLager {
|
|||||||
FROM
|
FROM
|
||||||
einkaufspreise minek
|
einkaufspreise minek
|
||||||
WHERE
|
WHERE
|
||||||
einkaufspreise.artikel = minek.artikel AND DATE(
|
einkaufspreise.geloescht != 1 AND einkaufspreise.artikel = minek.artikel AND DATE(
|
||||||
REPLACE
|
REPLACE
|
||||||
(
|
(
|
||||||
COALESCE(gueltig_bis, '9999-12-31'),
|
COALESCE(gueltig_bis, '9999-12-31'),
|
||||||
@@ -482,7 +482,17 @@ class Lager extends GenLager {
|
|||||||
)
|
)
|
||||||
) >= DATE('".$datum."')
|
) >= DATE('".$datum."')
|
||||||
)
|
)
|
||||||
|
) AND DATE(
|
||||||
|
REPLACE
|
||||||
|
(
|
||||||
|
COALESCE(
|
||||||
|
einkaufspreise.gueltig_bis,
|
||||||
|
'9999-12-31'
|
||||||
|
),
|
||||||
|
'0000-00-00',
|
||||||
|
'9999-12-31'
|
||||||
)
|
)
|
||||||
|
) >= DATE('".$datum."')
|
||||||
GROUP BY
|
GROUP BY
|
||||||
artikel,
|
artikel,
|
||||||
waehrung
|
waehrung
|
||||||
@@ -637,6 +647,7 @@ class Lager extends GenLager {
|
|||||||
$heading[] = 'Reserviert <sup>*</sup>';
|
$heading[] = 'Reserviert <sup>*</sup>';
|
||||||
$heading[] = 'Menü';
|
$heading[] = 'Menü';
|
||||||
|
|
||||||
|
$width[] = '10%';
|
||||||
$width[] = '10%';
|
$width[] = '10%';
|
||||||
$width[] = '10%';
|
$width[] = '10%';
|
||||||
$width[] = '1%';
|
$width[] = '1%';
|
||||||
@@ -657,7 +668,6 @@ class Lager extends GenLager {
|
|||||||
$sql .= "lp.kurzbezeichnung,p.abkuerzung,
|
$sql .= "lp.kurzbezeichnung,p.abkuerzung,
|
||||||
|
|
||||||
".$app->erp->FormatMenge("ifnull(lpi.menge,0)")." as fmenge ,
|
".$app->erp->FormatMenge("ifnull(lpi.menge,0)")." as fmenge ,
|
||||||
".$app->erp->FormatMenge("IFNULL(mengemhd, ifnull(mengecharge,0))")." as fmengecharge ,
|
|
||||||
".$app->erp->FormatMenge("IFNULL(lpi2.gmenge,0) - IFNULL(r.reserviert,0)")." as verkaufbare,
|
".$app->erp->FormatMenge("IFNULL(lpi2.gmenge,0) - IFNULL(r.reserviert,0)")." as verkaufbare,
|
||||||
".$app->erp->FormatMenge("IFNULL(r.reserviert,0)")." as reserviert,
|
".$app->erp->FormatMenge("IFNULL(r.reserviert,0)")." as reserviert,
|
||||||
a.id ";
|
a.id ";
|
||||||
@@ -695,7 +705,6 @@ class Lager extends GenLager {
|
|||||||
}else{
|
}else{
|
||||||
$sql .= "lp.kurzbezeichnung,p.abkuerzung,
|
$sql .= "lp.kurzbezeichnung,p.abkuerzung,
|
||||||
".$app->erp->FormatMenge("ifnull(lpi.menge,0)")." as fmenge ,
|
".$app->erp->FormatMenge("ifnull(lpi.menge,0)")." as fmenge ,
|
||||||
'' as mengecharge,
|
|
||||||
".$app->erp->FormatMenge("IFNULL(lpi2.gmenge,0) - IFNULL(r.reserviert,0)")." as verkaufbare, ".$app->erp->FormatMenge("IFNULL(r.reserviert,0)")." as reserviert, a.id ";
|
".$app->erp->FormatMenge("IFNULL(lpi2.gmenge,0) - IFNULL(r.reserviert,0)")." as verkaufbare, ".$app->erp->FormatMenge("IFNULL(r.reserviert,0)")." as reserviert, a.id ";
|
||||||
|
|
||||||
$sql .= "
|
$sql .= "
|
||||||
@@ -715,7 +724,7 @@ class Lager extends GenLager {
|
|||||||
if($more_data1) {
|
if($more_data1) {
|
||||||
$sql = "SELECT SQL_CALC_FOUND_ROWS a.id, a.nummer,a.name_de,";
|
$sql = "SELECT SQL_CALC_FOUND_ROWS a.id, a.nummer,a.name_de,";
|
||||||
|
|
||||||
$sql .= "'-',p.abkuerzung,'0' as menge,'0' as mengecharge, '0' as verkaufbare, ".$app->erp->FormatMenge("IFNULL(r.reserviert,0)")." as reserviert, a.id
|
$sql .= "'-',p.abkuerzung,'0' as menge, '0' as verkaufbare, ".$app->erp->FormatMenge("IFNULL(r.reserviert,0)")." as reserviert, a.id
|
||||||
FROM artikel AS `a`
|
FROM artikel AS `a`
|
||||||
LEFT JOIN (SELECT lpi.artikel, lp.kurzbezeichnung FROM `lager_platz_inhalt` AS `lpi` LEFT JOIN `lager_platz` AS `lp` ON lp.id=lpi.lager_platz GROUP BY lpi.artikel) AS `lp` ON lp.artikel=a.id
|
LEFT JOIN (SELECT lpi.artikel, lp.kurzbezeichnung FROM `lager_platz_inhalt` AS `lpi` LEFT JOIN `lager_platz` AS `lp` ON lp.id=lpi.lager_platz GROUP BY lpi.artikel) AS `lp` ON lp.artikel=a.id
|
||||||
LEFT JOIN (SELECT lr.artikel, SUM(lr.menge) AS `reserviert` FROM `lager_reserviert` AS `lr` GROUP BY lr.artikel) r ON r.artikel=a.id
|
LEFT JOIN (SELECT lr.artikel, SUM(lr.menge) AS `reserviert` FROM `lager_reserviert` AS `lr` GROUP BY lr.artikel) r ON r.artikel=a.id
|
||||||
@@ -2545,7 +2554,7 @@ class Lager extends GenLager {
|
|||||||
|
|
||||||
$name_de = $this->app->DB->Select("SELECT name_de FROM artikel WHERE nummer='{$nummer}' AND geloescht!=1 AND lagerartikel=1 LIMIT 1");
|
$name_de = $this->app->DB->Select("SELECT name_de FROM artikel WHERE nummer='{$nummer}' AND geloescht!=1 AND lagerartikel=1 LIMIT 1");
|
||||||
$einheit = $this->app->DB->Select("SELECT einheit FROM artikel WHERE nummer='{$nummer}' AND geloescht!=1 AND lagerartikel=1 LIMIT 1");
|
$einheit = $this->app->DB->Select("SELECT einheit FROM artikel WHERE nummer='{$nummer}' AND geloescht!=1 AND lagerartikel=1 LIMIT 1");
|
||||||
$seriennummer = $this->app->DB->Select("SELECT seriennummer FROM artikel WHERE nummer='{$nummer}' AND geloescht!=1 AND lagerartikel=1 LIMIT 1");
|
$seriennummer = $this->app->DB->Select("SELECT seriennummern FROM artikel WHERE nummer='{$nummer}' AND geloescht!=1 AND lagerartikel=1 LIMIT 1");
|
||||||
if($seriennummer === 'keine') {
|
if($seriennummer === 'keine') {
|
||||||
$seriennummer = '';
|
$seriennummer = '';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -468,7 +468,8 @@ class Lieferschein extends GenLieferschein
|
|||||||
AND v.aktiv = 1 AND v.ausprojekt = 0 AND v.modul != ''
|
AND v.aktiv = 1 AND v.ausprojekt = 0 AND v.modul != ''
|
||||||
ORDER BY v.projekt DESC LIMIT 1");
|
ORDER BY v.projekt DESC LIMIT 1");
|
||||||
if (empty($result['modul']) || empty($result['id'])) {
|
if (empty($result['modul']) || empty($result['id'])) {
|
||||||
$this->app->Tpl->addMessage('error', 'Bitte zuerst eine gültige Versandart auswählen', false, 'PAGE');
|
// $this->app->Tpl->addMessage('error', 'Bitte zuerst eine gültige Versandart auswählen', false, 'PAGE');
|
||||||
|
$this->app->Location->execute("index.php?module=versandpakete&action=add&lieferschein=".$id);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$versandmodul = $this->app->erp->LoadVersandModul($result['modul'], $result['id']);
|
$versandmodul = $this->app->erp->LoadVersandModul($result['modul'], $result['id']);
|
||||||
@@ -960,6 +961,7 @@ class Lieferschein extends GenLieferschein
|
|||||||
|
|
||||||
$this->app->Tpl->Set('VERSANDART',$auftragArr[0]['versandart']);
|
$this->app->Tpl->Set('VERSANDART',$auftragArr[0]['versandart']);
|
||||||
|
|
||||||
|
/*
|
||||||
$tracking = $this->app->DB->SelectArr("SELECT
|
$tracking = $this->app->DB->SelectArr("SELECT
|
||||||
if(v.tracking_link IS NOT NULL AND v.tracking_link != '', CONCAT(UPPER(versandunternehmen), ':<a href=\"', v.tracking_link, '\">', v.tracking, '</a>'),
|
if(v.tracking_link IS NOT NULL AND v.tracking_link != '', CONCAT(UPPER(versandunternehmen), ':<a href=\"', v.tracking_link, '\">', v.tracking, '</a>'),
|
||||||
if(versandunternehmen = 'dhlexpress' AND l.land = 'DE' AND v.tracking != '', CONCAT(UPPER(versandunternehmen), ':<a href=\"https://www.dhl.de/de/privatkunden/pakete-empfangen/verfolgen.html?piececode=', v.tracking, '\" target=\"_blank\">', v.tracking, '</a>'),
|
if(versandunternehmen = 'dhlexpress' AND l.land = 'DE' AND v.tracking != '', CONCAT(UPPER(versandunternehmen), ':<a href=\"https://www.dhl.de/de/privatkunden/pakete-empfangen/verfolgen.html?piececode=', v.tracking, '\" target=\"_blank\">', v.tracking, '</a>'),
|
||||||
@@ -1018,7 +1020,32 @@ class Lieferschein extends GenLieferschein
|
|||||||
if (!is_null($tmp)) {
|
if (!is_null($tmp)) {
|
||||||
$this->app->Tpl->Set('TRACKING',implode(', ',$tmp));
|
$this->app->Tpl->Set('TRACKING',implode(', ',$tmp));
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
$sql = "SELECT SQL_CALC_FOUND_ROWS
|
||||||
|
v.id,
|
||||||
|
v.tracking as tracking,
|
||||||
|
v.tracking_link
|
||||||
|
FROM
|
||||||
|
versandpakete v
|
||||||
|
LEFT JOIN
|
||||||
|
versandpaket_lieferschein_position vlp ON v.id = vlp.versandpaket
|
||||||
|
LEFT JOIN
|
||||||
|
lieferschein_position lp ON lp.id = vlp.lieferschein_position
|
||||||
|
LEFT JOIN
|
||||||
|
lieferschein l ON lp.lieferschein = l.id
|
||||||
|
WHERE l.id = ".$id." OR v.lieferschein_ohne_pos = ".$id."
|
||||||
|
GROUP BY
|
||||||
|
v.id
|
||||||
|
";
|
||||||
|
$tracking = $this->app->DB->SelectArr($sql);
|
||||||
|
$tracking_list = array();
|
||||||
|
foreach ($tracking as $single_tracking) {
|
||||||
|
$tracking_list[] = '<a href="index.php?module=versandpakete&action=edit&id='.$single_tracking['id'].'">Paket Nr.'.$single_tracking['id'].'</a>'.
|
||||||
|
' ('.'<a href="'.$single_tracking['tracking_link'].'">'.$single_tracking['tracking'].'</a>'.')';
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->app->Tpl->Set('TRACKING',implode('<br>',$tracking_list));
|
||||||
|
|
||||||
$returnOrders = (array)$this->app->DB->SelectArr(
|
$returnOrders = (array)$this->app->DB->SelectArr(
|
||||||
sprintf(
|
sprintf(
|
||||||
@@ -2259,6 +2286,18 @@ class Lieferschein extends GenLieferschein
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 'versanduebergabe':
|
||||||
|
if(!empty($selectedIds)) {
|
||||||
|
$this->app->DB->Update(
|
||||||
|
sprintf(
|
||||||
|
"UPDATE `lieferschein`
|
||||||
|
SET `versand_status` = 1
|
||||||
|
WHERE `id` IN (%s) AND `versand_status` = 0",
|
||||||
|
implode(',' , $selectedIds)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -253,9 +253,13 @@ class Logfile {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(is_array($meldung)) {
|
|
||||||
$meldung = $this->app->DB->real_escape_string(print_r($meldung, true));
|
$module = $this->app->DB->real_escape_string(is_scalar($module) ? strval($module) : print_r($module, true));
|
||||||
}
|
$action = $this->app->DB->real_escape_string(is_scalar($action) ? strval($action) : print_r($action, true));
|
||||||
|
$meldung = $this->app->DB->real_escape_string(is_scalar($meldung) ? strval($meldung) : print_r($meldung, true));
|
||||||
|
$dump = $this->app->DB->real_escape_string(is_scalar($dump) ? strval($dump) : print_r($dump, true));
|
||||||
|
$functionname = $this->app->DB->real_escape_string(is_scalar($functionname) ? strval($functionname) : print_r($functionname, true));
|
||||||
|
|
||||||
$this->app->DB->Insert(
|
$this->app->DB->Insert(
|
||||||
sprintf(
|
sprintf(
|
||||||
"INSERT INTO logfile (module,action,meldung,dump,datum,bearbeiter,funktionsname)
|
"INSERT INTO logfile (module,action,meldung,dump,datum,bearbeiter,funktionsname)
|
||||||
|
|||||||
@@ -0,0 +1,721 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2022 OpenXE project
|
||||||
|
*/
|
||||||
|
|
||||||
|
use Xentral\Components\Database\Exception\QueryFailureException;
|
||||||
|
|
||||||
|
class Mahnwesen {
|
||||||
|
|
||||||
|
function __construct($app, $intern = false) {
|
||||||
|
$this->app = $app;
|
||||||
|
if ($intern)
|
||||||
|
return;
|
||||||
|
|
||||||
|
$this->app->ActionHandlerInit($this);
|
||||||
|
$this->app->ActionHandler("list", "mahnwesen_list");
|
||||||
|
$this->app->ActionHandler("create", "mahnwesen_edit"); // This automatically adds a "New" button
|
||||||
|
$this->app->ActionHandler("edit", "mahnwesen_edit");
|
||||||
|
$this->app->ActionHandler("einstellungen", "mahnwesen_einstellungen");
|
||||||
|
$this->app->ActionHandler("delete", "mahnwesen_delete");
|
||||||
|
$this->app->DefaultActionHandler("list");
|
||||||
|
$this->app->ActionHandlerListen($app);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function Install() {
|
||||||
|
/* Fill out manually later */
|
||||||
|
}
|
||||||
|
|
||||||
|
public function TableSearch($app, $name, $erlaubtevars) {
|
||||||
|
switch ($name) {
|
||||||
|
case "mahnwesen_list":
|
||||||
|
|
||||||
|
$extended_mysql55 = ",'de_DE'";
|
||||||
|
|
||||||
|
$allowed['mahnwesen_list'] = array('list');
|
||||||
|
$heading = array('', '', 'Rechnung', 'Vom', 'Kd-Nr.', 'Kunde', 'Land', 'Projekt', 'Zahlung', 'Betrag (brutto)', 'Währung', 'Zahlstatus', 'Differenz', 'Status','Fällig am','Tage','Mahnstufe','Brief','E-Mail','Gemahnt','Mahn-Datum','Sperre','Interne Bemerkung','Menü');
|
||||||
|
$width = array('1%','1%','01%', '01%', '01%', '05%', '01%', '01%', '01%', '01%', '01%', '01%', '01%', '01%', '01%', '01%', '01%', '01%', '01%', '01%', '01%', '01%', '20%', '1%'); // Fill out manually later
|
||||||
|
|
||||||
|
// columns that are aligned right (numbers etc)
|
||||||
|
// $alignright = array(4,5,6,7,8);
|
||||||
|
|
||||||
|
$faellig_datum = "DATE_ADD(r.datum, INTERVAL r.zahlungszieltage DAY)";
|
||||||
|
$faellig_tage = "DATEDIFF(CURRENT_DATE,DATE_ADD(r.datum, INTERVAL r.zahlungszieltage DAY))";
|
||||||
|
$mahn_druck = "if(m.druck,'Ja','')";
|
||||||
|
$mahn_mail = "if(m.mail,'Ja','')";
|
||||||
|
$mahn_versendet = "if(r.versendet_mahnwesen,'Ja','')";
|
||||||
|
|
||||||
|
$findcols = array('r.id','r.id','r.belegnr', 'r.datum', 'r.kundennummer','r.name', 'r.land','p.abkuerzung','r.zahlungsweise','r.soll','r.waehrung','r.zahlungsstatus','r.soll','r.status',$faellig_datum,$faellig_tage,'m.name',$mahn_druck,$mahn_mail,$mahn_versendet,'mahnwesen_datum');
|
||||||
|
$searchsql = array('r.belegnr', 'r.name', $faellig_datum, 'r.kundennummer');
|
||||||
|
|
||||||
|
$defaultorder = 1;
|
||||||
|
$defaultorderdesc = 0;
|
||||||
|
|
||||||
|
$dropnbox = "'<img src=./themes/new/images/details_open.png class=details>' AS `open`, CONCAT('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',r.id,'\" />') AS `auswahl`";
|
||||||
|
|
||||||
|
$menu = "<table cellpadding=0 cellspacing=0><tr><td nowrap>" . "<a href=\"index.php?module=rechnung&action=edit&id=%value%\"><img src=\"./themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a>" . "</td></tr></table>";
|
||||||
|
|
||||||
|
$sql = "SELECT SQL_CALC_FOUND_ROWS
|
||||||
|
r.id,
|
||||||
|
$dropnbox,
|
||||||
|
r.belegnr,
|
||||||
|
".$app->erp->FormatDateShort('r.datum')." as vom,
|
||||||
|
if(r.kundennummer <> '',r.kundennummer,adr.kundennummer),
|
||||||
|
CONCAT(" . $app->erp->MarkerUseredit("r.name", "r.useredittimestamp") . ", if(r.internebezeichnung!='',CONCAT('<br><i style=color:#999>',r.internebezeichnung,'</i>'),'')) as kunde,
|
||||||
|
r.land as land,
|
||||||
|
p.abkuerzung as projekt,
|
||||||
|
r.zahlungsweise as zahlungsweise,
|
||||||
|
FORMAT(r.soll,2{$extended_mysql55} ) as soll,
|
||||||
|
ifnull(r.waehrung,'EUR'),
|
||||||
|
r.zahlungsstatus as zahlung,
|
||||||
|
if(r.soll-r.ist!=0 AND r.ist > 0,FORMAT(r.ist-r.soll,2{$extended_mysql55}),FORMAT((r.soll-r.ist)*-1,2{$extended_mysql55})) as fehlt,
|
||||||
|
if(r.status = 'storniert' AND r.teilstorno = 1,'TEILSTORNO',UPPER(r.status)) as status,
|
||||||
|
".$app->erp->FormatDateShort($faellig_datum)." as faellig_datum,
|
||||||
|
if(".$faellig_tage.">0,".$faellig_tage.",'') as faellig_tage,
|
||||||
|
m.name,
|
||||||
|
".$mahn_druck.",
|
||||||
|
".$mahn_mail.",
|
||||||
|
".$mahn_versendet.",
|
||||||
|
if(mahnwesen_datum <> '0000-00-00',".$app->erp->FormatDateShort('mahnwesen_datum').",''),
|
||||||
|
if(r.mahnwesen_gesperrt,'Ja',''),
|
||||||
|
REPLACE(r.mahnwesen_internebemerkung,'\r\n','<br> '),
|
||||||
|
r.id
|
||||||
|
FROM rechnung r LEFT JOIN projekt p ON p.id=r.projekt LEFT JOIN adresse adr ON r.adresse=adr.id LEFT JOIN auftrag au ON au.id = r.auftragid LEFT JOIN mahnwesen m ON r.mahnwesen = m.id";
|
||||||
|
|
||||||
|
$where = " r.belegnr <> ''";
|
||||||
|
|
||||||
|
// Toggle filters
|
||||||
|
$this->app->Tpl->Add('JQUERYREADY', "$('#zu_mahnen').click( function() { fnFilterColumn1( 0 ); } );");
|
||||||
|
$this->app->Tpl->Add('JQUERYREADY', "$('#inkl_bezahlte').click( function() { fnFilterColumn2( 0 ); } );");
|
||||||
|
$this->app->Tpl->Add('JQUERYREADY', "$('#inkl_gesperrte').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 = $app->Secure->GetGET("more_data1");
|
||||||
|
if ($more_data1 == 1) {
|
||||||
|
$where .= " AND NOT r.versendet_mahnwesen AND r.mahnwesen <> ''";
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
$more_data2 = $app->Secure->GetGET("more_data2");
|
||||||
|
if ($more_data2 == 1) {
|
||||||
|
} else {
|
||||||
|
$where .= " AND r.zahlungsstatus <> 'bezahlt' ";
|
||||||
|
}
|
||||||
|
|
||||||
|
$more_data3 = $app->Secure->GetGET("more_data3");
|
||||||
|
if ($more_data3 == 1) {
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$where .= " AND NOT r.mahnwesen_gesperrt ";
|
||||||
|
}
|
||||||
|
// END Toggle filters
|
||||||
|
|
||||||
|
|
||||||
|
$count = "SELECT count(DISTINCT id) FROM rechnung r WHERE $where";
|
||||||
|
// $groupby = "";
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "mahnwesen_einstellungen":
|
||||||
|
$allowed['mahnwesen_list'] = array('list');
|
||||||
|
$heading = array('', 'Tage', 'Name', 'Gebuehr', 'E-Mail', 'Druck', 'Menü');
|
||||||
|
$width = array('1%','1%','10%'); // Fill out manually later
|
||||||
|
|
||||||
|
// columns that are aligned right (numbers etc)
|
||||||
|
// $alignright = array(4,5,6,7,8);
|
||||||
|
|
||||||
|
$findcols = array('m.id', 'm.tage','m.name', 'm.gebuehr', 'm.mail','m.druck');
|
||||||
|
$searchsql = array('m.name','m.tage', 'm.gebuehr', 'm.versandmethode');
|
||||||
|
|
||||||
|
$defaultorder = 1;
|
||||||
|
$defaultorderdesc = 1;
|
||||||
|
|
||||||
|
$dropnbox = "'<img src=./themes/new/images/details_open.png class=details>' AS `open`";
|
||||||
|
|
||||||
|
$menu = "<table cellpadding=0 cellspacing=0><tr><td nowrap>" . "<a href=\"index.php?module=mahnwesen&action=edit&id=%value%\"><img src=\"./themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a> <a href=\"#\" onclick=DeleteDialog(\"index.php?module=mahnwesen&action=delete&id=%value%\");>" . "<img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"></a>" . "</td></tr></table>";
|
||||||
|
|
||||||
|
$sql = "SELECT SQL_CALC_FOUND_ROWS
|
||||||
|
m.id,
|
||||||
|
$dropnbox,
|
||||||
|
m.tage,
|
||||||
|
m.name,
|
||||||
|
".$this->app->erp->FormatMenge('m.gebuehr',2).",
|
||||||
|
if(m.mail,'Ja',''),
|
||||||
|
if(m.druck,'Ja',''),
|
||||||
|
m.id FROM mahnwesen m";
|
||||||
|
|
||||||
|
$where = "1";
|
||||||
|
$count = "SELECT count(DISTINCT id) FROM mahnwesen WHERE $where";
|
||||||
|
// $groupby = "";
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$erg = false;
|
||||||
|
|
||||||
|
foreach ($erlaubtevars as $k => $v) {
|
||||||
|
if (isset($$v)) {
|
||||||
|
$erg[$v] = $$v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $erg;
|
||||||
|
}
|
||||||
|
|
||||||
|
function mahnwesen_list() {
|
||||||
|
$this->app->erp->MenuEintrag("index.php?module=mahnwesen&action=list", "Übersicht");
|
||||||
|
// $this->app->erp->MenuEintrag("index.php?module=mahnwesen&action=create", "Neu anlegen");
|
||||||
|
// $this->app->erp->MenuEintrag("index.php?module=mahnwesen&action=einstellungen", "Einstellungen");
|
||||||
|
|
||||||
|
if($this->app->Secure->GetPOST('mahnstufe_berechnen') && $this->app->erp->RechteVorhanden('rechnung', 'edit')) {
|
||||||
|
$this->app->erp->rechnung_zahlstatus_berechnen();
|
||||||
|
|
||||||
|
$sql = "
|
||||||
|
SELECT
|
||||||
|
r.id, r.mahnwesen, rid_mid.mahnwesen_neu
|
||||||
|
FROM
|
||||||
|
rechnung r
|
||||||
|
INNER JOIN
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
id_tage.id,
|
||||||
|
m.id AS mahnwesen_neu
|
||||||
|
FROM
|
||||||
|
mahnwesen m
|
||||||
|
INNER JOIN(
|
||||||
|
SELECT
|
||||||
|
id,
|
||||||
|
MAX(tage) AS tage
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
r.id,
|
||||||
|
m.tage
|
||||||
|
FROM
|
||||||
|
rechnung r
|
||||||
|
INNER JOIN mahnwesen m ON
|
||||||
|
DATEDIFF(
|
||||||
|
CURRENT_DATE,
|
||||||
|
DATE_ADD(
|
||||||
|
r.datum,
|
||||||
|
INTERVAL r.zahlungszieltage DAY
|
||||||
|
)
|
||||||
|
) > m.tage
|
||||||
|
WHERE
|
||||||
|
r.zahlungsstatus = 'offen'
|
||||||
|
ORDER BY
|
||||||
|
`r`.`id` ASC
|
||||||
|
) temp
|
||||||
|
GROUP BY
|
||||||
|
id
|
||||||
|
) id_tage
|
||||||
|
ON
|
||||||
|
m.tage = id_tage.tage
|
||||||
|
) rid_mid
|
||||||
|
ON r.id = rid_mid.id
|
||||||
|
";
|
||||||
|
$offene_rechnungen = $this->app->DB->SelectArr($sql);
|
||||||
|
|
||||||
|
foreach ($offene_rechnungen as $offene_rechnung) {
|
||||||
|
if ($offene_rechnung['mahnwesen'] != $offene_rechnung['mahnwesen_neu']) {
|
||||||
|
$sql = "UPDATE rechnung set mahnwesen = ".$offene_rechnung['mahnwesen_neu'].", versendet_mahnwesen = 0 WHERE id = ".$offene_rechnung['id'];
|
||||||
|
$this->app->DB->Update($sql);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if($this->app->Secure->GetPOST('sel_aktion') && $this->app->erp->RechteVorhanden('rechnung', 'edit'))
|
||||||
|
{
|
||||||
|
$drucker = $this->app->Secure->GetPOST('seldrucker');
|
||||||
|
$aktion = $this->app->Secure->GetPOST('sel_aktion');
|
||||||
|
$auswahl = $this->app->Secure->GetPOST('auswahl');
|
||||||
|
if($drucker > 0) {
|
||||||
|
$this->app->erp->BriefpapierHintergrundDisable($drucker);
|
||||||
|
}
|
||||||
|
if(is_array($auswahl)) {
|
||||||
|
foreach($auswahl as $auswahlKey => $auswahlValue) {
|
||||||
|
if((int)$auswahlValue > 0) {
|
||||||
|
$auswahl[$auswahlKey] = (int)$auswahlValue;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
unset($auswahl[$auswahlKey]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
switch($aktion)
|
||||||
|
{
|
||||||
|
case 'bezahlt':
|
||||||
|
$this->app->DB->Update("UPDATE rechnung SET zahlungsstatus='bezahlt', bezahlt_am = now(), mahnwesenfestsetzen='1',mahnwesen_internebemerkung=CONCAT(mahnwesen_internebemerkung,'\r\n','Manuell als bezahlt markiert am ".date('d.m.Y')."') WHERE id IN (".implode(', ',$auswahl).')');
|
||||||
|
break;
|
||||||
|
case 'offen':
|
||||||
|
$this->app->DB->Update("UPDATE rechnung SET zahlungsstatus='offen',bezahlt_am = NULL, mahnwesen_internebemerkung=CONCAT(mahnwesen_internebemerkung,'\r\n','Manuell als bezahlt entfernt am ".date('d.m.Y')."') WHERE id IN (".implode(', ',$auswahl).')');
|
||||||
|
break;
|
||||||
|
case 'mahnung_reset':
|
||||||
|
$sql = "UPDATE rechnung SET mahnwesen='', versendet_mahnwesen ='', mahnwesen_datum = '0000-00-00' WHERE id IN (".implode(', ',$auswahl).')';
|
||||||
|
$this->app->DB->Update($sql);
|
||||||
|
break;
|
||||||
|
case 'mahnen':
|
||||||
|
|
||||||
|
$mails = 0;
|
||||||
|
$drucke = 0;
|
||||||
|
foreach ($auswahl as $rechnung_id) {
|
||||||
|
$mahnung = $this->MahnwesenMessage($rechnung_id);
|
||||||
|
|
||||||
|
// Check first
|
||||||
|
if (empty($mahnung)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if ($mahnung['mail'] && empty($mahnung['rechnung']['email'])) {
|
||||||
|
$msg .= "<div class=\"error\">Keine E-Mail-Adresse hinterlegt bei Rechnung ".$mahnung['rechnung']['belegnr'].".</div>";
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if ($mahnung['druck']) {
|
||||||
|
$drucker = $this->app->Secure->GetPOST('seldrucker');
|
||||||
|
if($drucker > 0) {
|
||||||
|
$this->app->erp->BriefpapierHintergrundDisable($drucker);
|
||||||
|
} else {
|
||||||
|
$msg .= "<div class=\"error\">Kein Drucker gewählt.</div>";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create PDF
|
||||||
|
if(class_exists('RechnungPDFCustom')) {
|
||||||
|
$Brief = new RechnungPDFCustom($this->app,$projekt);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$Brief = new RechnungPDF($this->app,$projekt);
|
||||||
|
}
|
||||||
|
$Brief->GetRechnung($rechnung_id,$mahnung['betreff'],0,null,$mahnung['body']);
|
||||||
|
$tmpfile = $Brief->displayTMP();
|
||||||
|
|
||||||
|
$fileid = $this->app->erp->CreateDatei($Brief->filename,$mahnung['betreff'],"","",$tmpfile,$this->app->User->GetName());
|
||||||
|
|
||||||
|
if ($mahnung['druck']) {
|
||||||
|
$this->app->printer->Drucken($drucker,$tmpfile);
|
||||||
|
$this->MahnungCRM('brief',$mahnung['rechnung'], $mahnung['betreff'], $mahnung['body'],$fileid,$Brief->filename);
|
||||||
|
$this->app->erp->RechnungProtokoll($rechnung_id,'Mahnung gedruckt');
|
||||||
|
$drucke++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($mahnung['mail']) {
|
||||||
|
$senderName = $this->app->User->GetName()." (".$this->app->erp->GetFirmaAbsender().")";
|
||||||
|
$senderAddress = $this->app->erp->GetFirmaMail();
|
||||||
|
// function MailSend($from,$from_name,$to,$to_name,$betreff,$text,$files="",$projekt="",$signature=true,$cc="",$bcc="", $system = false)
|
||||||
|
$result = $this->app->erp->MailSend(
|
||||||
|
$senderAddress,
|
||||||
|
$senderName,
|
||||||
|
$mahnung['rechnung']['email'],
|
||||||
|
$mahnung['rechnung']['email'],
|
||||||
|
htmlentities($mahnung['betreff']),
|
||||||
|
htmlentities($mahnung['body']),
|
||||||
|
[$tmpfile],
|
||||||
|
$mahnung['rechnung']['projekt'],
|
||||||
|
true,
|
||||||
|
$cc,
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($result = 0) {
|
||||||
|
$msg .= "<div class=\"error\">Fehler beim E-Mail-Versand bei Rechnung ".$mahnung['rechnung']['belegnr'].".</div>";
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->MahnungCRM('email',$mahnung['rechnung'], $mahnung['betreff'], $mahnung['body'],$fileid,$Brief->filename);
|
||||||
|
$this->app->erp->RechnungProtokoll($rechnung_id,'Mahnung versendet');
|
||||||
|
$mails++;
|
||||||
|
}
|
||||||
|
|
||||||
|
unlink($tmpfile);
|
||||||
|
|
||||||
|
$sql = "UPDATE rechnung set mahnwesen_datum = CURRENT_DATE, versendet_mahnwesen = 1 WHERE id IN (".implode(', ',$auswahl).')';
|
||||||
|
$this->app->DB->Update($sql);
|
||||||
|
|
||||||
|
}
|
||||||
|
$msg .= "<div class=\"success\">$mails E-Mails versendet, $drucke Dokumente gedruckt.</div>";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} // ende ausfuehren
|
||||||
|
|
||||||
|
if (!empty($msg)) {
|
||||||
|
$this->app->Tpl->Set('MESSAGE', $msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
if($this->app->erp->RechteVorhanden('rechnung', 'manuellbezahltmarkiert')){
|
||||||
|
$this->app->Tpl->Set('ALSBEZAHLTMARKIEREN', '<option value="bezahlt">{|als bezahlt markieren|}</option>');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->app->Tpl->Set('SELDRUCKER', $this->app->erp->GetSelectDrucker($this->app->User->GetParameter('rechnung_list_drucker')));
|
||||||
|
|
||||||
|
$this->app->YUI->TableSearch('TAB1', 'mahnwesen_list', "show", "", "", basename(__FILE__), __CLASS__);
|
||||||
|
$this->app->Tpl->Parse('PAGE', "mahnwesen_list.tpl");
|
||||||
|
}
|
||||||
|
|
||||||
|
function mahnwesen_einstellungen() {
|
||||||
|
$this->app->erp->MenuEintrag("index.php?module=mahnwesen&action=einstellungen", "Übersicht");
|
||||||
|
$this->app->erp->MenuEintrag("index.php?module=mahnwesen&action=create", "Neu anlegen");
|
||||||
|
$this->app->erp->MenuEintrag("index.php?module=einstellungen&action=list", "Zurück");
|
||||||
|
$this->app->erp->Headlines('Mahnwesen Einstellungen');
|
||||||
|
|
||||||
|
$this->app->YUI->TableSearch('TAB1', 'mahnwesen_einstellungen', "show", "", "", basename(__FILE__), __CLASS__);
|
||||||
|
$this->app->Tpl->Parse('PAGE', "mahnwesen_einstellungen.tpl");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function mahnwesen_delete() {
|
||||||
|
$id = (int) $this->app->Secure->GetGET('id');
|
||||||
|
|
||||||
|
$this->app->DB->Delete("DELETE FROM `mahnwesen` WHERE `id` = '{$id}'");
|
||||||
|
$this->app->Tpl->Set('MESSAGE', "<div class=\"error\">Der Eintrag wurde gelöscht.</div>");
|
||||||
|
|
||||||
|
$this->mahnwesen_einstellungen();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Edit mahnwesen item
|
||||||
|
* If id is empty, create a new one
|
||||||
|
*/
|
||||||
|
|
||||||
|
function mahnwesen_edit() {
|
||||||
|
$id = $this->app->Secure->GetGET('id');
|
||||||
|
|
||||||
|
// Check if other users are editing this id
|
||||||
|
if($this->app->erp->DisableModul('artikel',$id))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->app->Tpl->Set('ID', $id);
|
||||||
|
|
||||||
|
$this->app->erp->MenuEintrag("index.php?module=mahnwesen&action=edit&id=$id", "Details");
|
||||||
|
$this->app->erp->MenuEintrag("index.php?module=mahnwesen&action=einstellungen", "Zurück zur Übersicht");
|
||||||
|
$id = $this->app->Secure->GetGET('id');
|
||||||
|
$input = $this->GetInput();
|
||||||
|
$submit = $this->app->Secure->GetPOST('submit');
|
||||||
|
|
||||||
|
if (empty($id)) {
|
||||||
|
// New item
|
||||||
|
$id = 'NULL';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($submit != '')
|
||||||
|
{
|
||||||
|
|
||||||
|
// Write to database
|
||||||
|
|
||||||
|
// Add checks here
|
||||||
|
|
||||||
|
$columns = "id, ";
|
||||||
|
$values = "$id, ";
|
||||||
|
$update = "";
|
||||||
|
|
||||||
|
$fix = "";
|
||||||
|
|
||||||
|
foreach ($input as $key => $value) {
|
||||||
|
$columns = $columns.$fix.$key;
|
||||||
|
$values = $values.$fix."'".$value."'";
|
||||||
|
$update = $update.$fix.$key." = '$value'";
|
||||||
|
|
||||||
|
$fix = ", ";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// echo($columns."<br>");
|
||||||
|
// echo($values."<br>");
|
||||||
|
// echo($update."<br>");
|
||||||
|
|
||||||
|
$sql = "INSERT INTO mahnwesen (".$columns.") VALUES (".$values.") ON DUPLICATE KEY UPDATE ".$update;
|
||||||
|
|
||||||
|
$this->app->DB->Update($sql);
|
||||||
|
|
||||||
|
if ($id == 'NULL') {
|
||||||
|
$msg = $this->app->erp->base64_url_encode("<div class=\"success\">Das Element wurde erfolgreich angelegt.</div>");
|
||||||
|
header("Location: index.php?module=mahnwesen&action=einstellungen&msg=$msg");
|
||||||
|
} else {
|
||||||
|
$this->app->Tpl->Set('MESSAGE', "<div class=\"success\">Die Einstellungen wurden erfolgreich übernommen.</div>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Load values again from database
|
||||||
|
$dropnbox = "'<img src=./themes/new/images/details_open.png class=details>' AS `open`, CONCAT('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',m.id,'\" />') AS `auswahl`";
|
||||||
|
$result = $this->app->DB->SelectArr("SELECT SQL_CALC_FOUND_ROWS m.id, $dropnbox, m.name, m.tage, m.gebuehr, m.mail, m.druck, m.id FROM mahnwesen m"." WHERE id=$id");
|
||||||
|
|
||||||
|
foreach ($result[0] as $key => $value) {
|
||||||
|
$this->app->Tpl->Set(strtoupper($key), $value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Add displayed items later
|
||||||
|
*
|
||||||
|
|
||||||
|
$this->app->Tpl->Add('KURZUEBERSCHRIFT2', $email);
|
||||||
|
$this->app->Tpl->Add('EMAIL', $email);
|
||||||
|
$this->app->Tpl->Add('ANGEZEIGTERNAME', $angezeigtername);
|
||||||
|
*/
|
||||||
|
|
||||||
|
$this->app->Tpl->Set('MAIL', $result[0]['mail']?'checked':'');
|
||||||
|
$this->app->Tpl->Set('DRUCK', $result[0]['druck']?'checked':'');
|
||||||
|
|
||||||
|
$this->app->Tpl->Parse('PAGE', "mahnwesen_edit.tpl");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all paramters from html form and save into $input
|
||||||
|
*/
|
||||||
|
public function GetInput(): array {
|
||||||
|
$input = array();
|
||||||
|
$input['name'] = $this->app->Secure->GetPOST('name');
|
||||||
|
$input['tage'] = $this->app->Secure->GetPOST('tage');
|
||||||
|
$input['gebuehr'] = $this->app->Secure->GetPOST('gebuehr');
|
||||||
|
$input['mail'] = $this->app->Secure->GetPOST('mail')?'1':'0';
|
||||||
|
$input['druck'] = $this->app->Secure->GetPOST('druck')?'1':'0';
|
||||||
|
return $input;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set all fields in the page corresponding to $input
|
||||||
|
*/
|
||||||
|
function SetInput($input) {
|
||||||
|
$this->app->Tpl->Set('NAME', $input['name']);
|
||||||
|
$this->app->Tpl->Set('TAGE', $input['tage']);
|
||||||
|
$this->app->Tpl->Set('GEBUEHR', $input['gebuehr']);
|
||||||
|
$this->app->Tpl->Set('MAIL', $input['mail']);
|
||||||
|
$this->app->Tpl->Set('DRUCK', $input['druck']);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Constuct the Mahnwesen message according to GeschäftsbriefVorlage
|
||||||
|
* Returns Array (string betreff, string body, boolean mail, boolean druck, array rechnung)
|
||||||
|
*/
|
||||||
|
function MahnwesenMessage($rechnung_id) {
|
||||||
|
|
||||||
|
$sql = "SELECT
|
||||||
|
r.*,
|
||||||
|
".$this->app->erp->FormatDate('datum')." datum,
|
||||||
|
".$this->app->erp->FormatDate('CURRENT_DATE')." heute,
|
||||||
|
m.name as mahn_name,
|
||||||
|
m.tage as mahn_tage,
|
||||||
|
m.gebuehr as mahn_gebuehr,
|
||||||
|
m.mail as mahn_mail,
|
||||||
|
m.druck as mahn_druck
|
||||||
|
FROM
|
||||||
|
rechnung r
|
||||||
|
INNER JOIN
|
||||||
|
mahnwesen m
|
||||||
|
ON
|
||||||
|
r.mahnwesen = m.id WHERE r.id = ".$rechnung_id." LIMIT 1";
|
||||||
|
$rechnungarr = $this->app->DB->SelectArr($sql)[0];
|
||||||
|
|
||||||
|
if (empty($rechnungarr)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$adresse = $rechnungarr['adresse'];
|
||||||
|
if($sprache==''){
|
||||||
|
$sprache = $rechnungarr['sprache'];
|
||||||
|
}
|
||||||
|
if($sprache==''){
|
||||||
|
$sprache = $this->app->DB->Select("SELECT sprache FROM adresse WHERE id='$adresse' LIMIT 1");
|
||||||
|
}
|
||||||
|
|
||||||
|
$kundennummer = $rechnungarr['kundennummer'];
|
||||||
|
$projekt = $rechnungarr['projekt'];
|
||||||
|
$auftrag= $rechnungarr['auftrag'];
|
||||||
|
$buchhaltung= $rechnungarr['buchhaltung'];
|
||||||
|
$lieferschein = $rechnungarr['lieferschein'];
|
||||||
|
$lieferscheinid = $lieferschein;
|
||||||
|
if($lieferscheinid){
|
||||||
|
$lieferschein = $this->app->DB->Select("SELECT belegnr FROM lieferschein WHERE id='$lieferschein' LIMIT 1");
|
||||||
|
}else{
|
||||||
|
$lieferschein = '';
|
||||||
|
}
|
||||||
|
$bestellbestaetigung = $rechnungarr['kundennummer'];
|
||||||
|
$datum = $rechnungarr['datum_de'];
|
||||||
|
$datum_sql = $rechnungarr['datum'];
|
||||||
|
$belegnr = $rechnungarr['belegnr'];
|
||||||
|
$doppel = $rechnungarr['doppel'];
|
||||||
|
$freitext = $rechnungarr['freitext'];
|
||||||
|
$ustid = $rechnungarr['ustid'];
|
||||||
|
$soll = $rechnungarr['soll'];
|
||||||
|
$ist = $rechnungarr['ist'];
|
||||||
|
$land = $rechnungarr['land'];
|
||||||
|
$mahnwesen_datum = $rechnungarr['mahnwesen_datum'];
|
||||||
|
$mahnwesen_datum_deutsch = $rechnungarr['mahnwesen_datum_de'];
|
||||||
|
$zahlungsweise = $rechnungarr['zahlungsweise'];
|
||||||
|
$zahlungsstatus = $rechnungarr['zahlungsstatus'];
|
||||||
|
$zahlungszieltage = $rechnungarr['zahlungszieltage'];
|
||||||
|
$zahlungszieltageskonto = $rechnungarr['zahlungszieltageskonto'];
|
||||||
|
$zahlungszielskonto = $rechnungarr['zahlungszielskonto'];
|
||||||
|
$waehrung = $rechnungarr['waehrung'];
|
||||||
|
|
||||||
|
$zahlungdatum = $this->app->DB->Select("SELECT DATE_FORMAT(DATE_ADD(datum, INTERVAL $zahlungszieltage DAY),'%d.%m.%Y') FROM rechnung WHERE id='$rechnung_id' LIMIT 1");
|
||||||
|
|
||||||
|
if($_datum!=null)
|
||||||
|
{
|
||||||
|
$mahnwesen_datum = $this->app->String->Convert($_datum,'%1.%2.%3','%3-%2-%1');
|
||||||
|
$mahnwesen_datum_deutsch = $_datum;
|
||||||
|
}
|
||||||
|
|
||||||
|
$zahlungsweise = strtolower($zahlungsweise);
|
||||||
|
/*
|
||||||
|
if($als=='zahlungserinnerung')
|
||||||
|
{
|
||||||
|
$body = $this->GetGeschaeftsBriefText("MahnwesenZahlungserinnerung",$sprache,$projekt,"rechnung",$rechnung_id);
|
||||||
|
$tage = $this->GetKonfiguration('mahnwesen_m1_tage');
|
||||||
|
}
|
||||||
|
else if($als=='mahnung1')
|
||||||
|
{
|
||||||
|
$body = $this->GetGeschaeftsBriefText("MahnwesenMahnung1",$sprache,$projekt,"rechnung",$rechnung_id);
|
||||||
|
$mahngebuehr = $this->GetKonfiguration('mahnwesen_m1_gebuehr');
|
||||||
|
$tage = $this->GetKonfiguration('mahnwesen_m2_tage');
|
||||||
|
}
|
||||||
|
else if($als=='mahnung2')
|
||||||
|
{
|
||||||
|
$body = $this->GetGeschaeftsBriefText("MahnwesenMahnung2",$sprache,$projekt,"rechnung",$rechnung_id);
|
||||||
|
$tage = $this->GetKonfiguration('mahnwesen_m3_tage');
|
||||||
|
$mahngebuehr = $this->GetKonfiguration('mahnwesen_m2_gebuehr');
|
||||||
|
}
|
||||||
|
else if($als=='mahnung3')
|
||||||
|
{
|
||||||
|
$body = $this->GetGeschaeftsBriefText("MahnwesenMahnung3",$sprache,$projekt,"rechnung",$rechnung_id);
|
||||||
|
$tage = $this->GetKonfiguration('mahnwesen_ik_tage');
|
||||||
|
$mahngebuehr = $this->GetKonfiguration('mahnwesen_m3_gebuehr');
|
||||||
|
}
|
||||||
|
else if($als=='inkasso')
|
||||||
|
{
|
||||||
|
$body = $this->GetGeschaeftsBriefText("MahnwesenInkasso",$sprache,$projekt,"rechnung",$rechnung_id);
|
||||||
|
//$tage = $this->GetKonfiguration("mahnwesen_ik_tage");
|
||||||
|
$tage = 3; //eigentlich vorbei
|
||||||
|
$mahngebuehr = $this->GetKonfiguration('mahnwesen_ik_gebuehr');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$body = $this->app->erp->Beschriftung("dokument_anschreiben");
|
||||||
|
} */
|
||||||
|
|
||||||
|
$betreff = $this->app->erp->GetGeschaeftsBriefBetreff($rechnungarr['mahn_name'],$sprache,$projekt,"rechnung",$rechnung_id);
|
||||||
|
$body = $this->app->erp->GetGeschaeftsBriefText($rechnungarr['mahn_name'],$sprache,$projekt,"rechnung",$rechnung_id);
|
||||||
|
|
||||||
|
if (empty($betreff) || empty($body)) {
|
||||||
|
throw new QueryFailureException("Geschaeftsbrief-Vorlage nicht gefunden: ''".$rechnungarr['mahn_name']."'");
|
||||||
|
}
|
||||||
|
|
||||||
|
$offen = $this->app->erp->GetSaldoDokument($rechnung_id, 'rechnung');
|
||||||
|
|
||||||
|
if($tage <=0) $tage = 0;
|
||||||
|
|
||||||
|
/* $datummahnung= $this->app->DB->Select("SELECT DATE_FORMAT(DATE_ADD('$mahnwesen_datum', INTERVAL $tage DAY),'%d.%m.%Y')");
|
||||||
|
$datumrechnungzahlungsziel= $this->app->DB->Select("SELECT DATE_FORMAT(DATE_ADD('$datum_sql', INTERVAL $zahlungszieltage DAY),'%d.%m.%Y')");
|
||||||
|
|
||||||
|
$tage_ze = $zahlungszieltage + $this->GetKonfiguration('mahnwesen_m1_tage');
|
||||||
|
$datumzahlungserinnerung= $this->app->DB->Select("SELECT DATE_FORMAT(DATE_ADD('$datum_sql', INTERVAL $tage_ze DAY),'%d.%m.%Y')");*/
|
||||||
|
|
||||||
|
// checkstamp $this->CheckStamp("jhdskKUHsiusakiakuhsd"); // errechnet aus laufzeit und kundenid // wenn es nicht drinnen ist darf es nicht gehen
|
||||||
|
/*
|
||||||
|
if($mahngebuehr=='' || !is_numeric($mahngebuehr))
|
||||||
|
$mahngebuehr = 0;
|
||||||
|
|
||||||
|
//$offen= '11,23';
|
||||||
|
$body = str_replace('{RECHNUNG}',$belegnr,$body);
|
||||||
|
$body = str_replace('{BELEGNR}',$belegnr,$body);
|
||||||
|
$body = str_replace('{DATUMRECHNUNG}',$datum,$body);
|
||||||
|
$body = str_replace('{TAGE}',$tage,$body);
|
||||||
|
$body = str_replace('{OFFEN}',$this->app->erp->formatMoney(-$offen['betrag'],$offen['waehrung']),$body);
|
||||||
|
$body = str_replace('{SOLL}',$this->app->erp->formatMoney($soll,$waehrung),$body);
|
||||||
|
$body = str_replace('{SUMME}',$this->app->erp->formatMoney($soll - $ist + $mahngebuehr,$waehrung),$body);
|
||||||
|
$body = str_replace('{IST}',$this->app->erp->formatMoney($ist,$waehrung),$body);
|
||||||
|
$body = str_replace('{DATUM}',$datummahnung,$body);
|
||||||
|
$body = str_replace('{MAHNGEBUEHR}',$this->app->erp->formatMoney($mahngebuehr,$waehrung),$body);
|
||||||
|
$body = str_replace('{OFFENMITMAHNGEBUEHR}',$this->app->erp->formatMoney($mahngebuehr + $soll - $ist,$waehrung),$body);
|
||||||
|
$body = str_replace('{MAHNDATUM}',$mahnwesen_datum_deutsch,$body);
|
||||||
|
|
||||||
|
|
||||||
|
// Im Protokoll suchen Datum von Zahlungserinnerung, Mahnung 1, Mahnung 2, Mahnung 3
|
||||||
|
|
||||||
|
$mahnung1 = $this->app->DB->Select("SELECT DATE_FORMAT(zeit,'%d.%m.%Y') FROM rechnung_protokoll WHERE rechnung='$rechnung_id'
|
||||||
|
AND grund LIKE 'Mahnung1 versendet%' ORDER by Zeit DESC LIMIT 1");
|
||||||
|
|
||||||
|
$mahnung2 = $this->app->DB->Select("SELECT DATE_FORMAT(zeit,'%d.%m.%Y') FROM rechnung_protokoll WHERE rechnung='$rechnung_id'
|
||||||
|
AND grund LIKE 'Mahnung2 versendet%' ORDER by Zeit DESC LIMIT 1");
|
||||||
|
|
||||||
|
$mahnung3 = $this->app->DB->Select("SELECT DATE_FORMAT(zeit,'%d.%m.%Y') FROM rechnung_protokoll WHERE rechnung='$rechnung_id'
|
||||||
|
AND grund LIKE 'Mahnung3 versendet%' ORDER by Zeit DESC LIMIT 1");
|
||||||
|
|
||||||
|
$body = str_replace('{DATUMMAHNUNG1}',$mahnung1,$body);
|
||||||
|
$body = str_replace('{DATUMMAHNUNG2}',$mahnung2,$body);
|
||||||
|
$body = str_replace('{DATUMMAHNUNG3}',$mahnung3,$body);
|
||||||
|
|
||||||
|
$body = str_replace('{DATUMZAHLUNGSERINNERUNGFAELLIG}',$datumzahlungserinnerung,$body);
|
||||||
|
$body = str_replace('{DATUMZAHLUNGSERINNERUNG}',$datumzahlungserinnerung,$body);
|
||||||
|
$body = str_replace('{DATUMRECHNUNGZAHLUNGSZIEL}',$datumrechnungzahlungsziel,$body);*/
|
||||||
|
|
||||||
|
$mapping = [
|
||||||
|
'rechnung' => $belegnr,
|
||||||
|
'belegnr' => $belegnr,
|
||||||
|
'datum' => $datum_sql,
|
||||||
|
'offen' => $this->app->erp->EUR(-$offen['betrag'])." ".$offen['waehrung'],
|
||||||
|
'mahngebuehr' => $this->app->erp->EUR($rechnungarr['mahn_gebuehr']),
|
||||||
|
'heute' => $rechnungarr['heute']
|
||||||
|
];
|
||||||
|
|
||||||
|
$betreff = $this->app->erp->ParseVars($mapping,$betreff);
|
||||||
|
$body = $this->app->erp->ParseVars($mapping,$body);
|
||||||
|
$body = $this->app->erp->ParseUserVars('rechnung',$rechnung_id,$body);
|
||||||
|
|
||||||
|
return(array(
|
||||||
|
'betreff' => $betreff,
|
||||||
|
'body' => $body,
|
||||||
|
'mail' => $rechnungarr['mahn_mail'] != 0,
|
||||||
|
'druck' => $rechnungarr['mahn_druck'] != 0,
|
||||||
|
'adresse' => $rechnungarr['adresse'],
|
||||||
|
'empfaenger' => $rechnungarr['email'],
|
||||||
|
'projekt' => $rechnungarr['projekt'],
|
||||||
|
'rechnung' => $rechnungarr
|
||||||
|
));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Create CRM entry for mahnung
|
||||||
|
* typ = brief, email
|
||||||
|
*/
|
||||||
|
function MahnungCRM(string $typ, array $rechnung, $betreff, $text, $fileid, $filename) {
|
||||||
|
|
||||||
|
$data = array();
|
||||||
|
$data['typ'] = $typ;
|
||||||
|
$data['projekt'] = $rechnung['projekt'];
|
||||||
|
$data['datum'] = date('Y-m-d');
|
||||||
|
$data['uhrzeit'] = date('Y-m-d H:i:s');
|
||||||
|
$data['user'] = $rechnung['adresse'];
|
||||||
|
$data['an'] = $rechnung['name'];
|
||||||
|
$data['adresse'] = $rechnung['strasse'];
|
||||||
|
$data['plz'] = $rechnung['plz'];
|
||||||
|
$data['ort'] = $rechnung['ort'];
|
||||||
|
$data['betreff'] = $betreff;
|
||||||
|
$data['content'] = $text;
|
||||||
|
$data['email_an'] = $rechnung['email'];
|
||||||
|
$data['sent'] = 1;
|
||||||
|
|
||||||
|
$crm_id = $this->app->erp->DokumentCreate($data,$this->app->User->GetAdresse());
|
||||||
|
$this->app->erp->AddDateiStichwort($fileid,'anhang','dokument',$crm_id);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user