Compare commits
147 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
4b9bc8754b | |
|
|
980b4d3056 | |
|
|
602bd21f99 | |
|
|
4e8c12b631 | |
|
|
aff20577d0 | |
|
|
212789faa9 | |
|
|
3aba261ba3 | |
|
|
e45e783d39 | |
|
|
962529cbc9 | |
|
|
93b1f8d61a | |
|
|
a05d497774 | |
|
|
7d4138dd18 | |
|
|
d0f53eb1f4 | |
|
|
d5de8365ee | |
|
|
12cf3f7767 | |
|
|
b8f1efbe12 | |
|
|
5a040d69da | |
|
|
d69b2fb342 | |
|
|
70b7a63694 | |
|
|
50e232cae7 | |
|
|
0f06a5838d | |
|
|
e297ff8669 | |
|
|
cffe00216c | |
|
|
051a0805b9 | |
|
|
3d0210dc6d | |
|
|
c99958525e | |
|
|
308c2aefa8 | |
|
|
925b8bf56e | |
|
|
5adc7458b2 | |
|
|
e7af1e1164 | |
|
|
29f8fe38ca | |
|
|
0ef8c498a2 | |
|
|
cf266fb4aa | |
|
|
8b8474e6eb | |
|
|
8b43c9c08d | |
|
|
b39a7e5adb | |
|
|
9f633a8fdd | |
|
|
4d956f1e38 | |
|
|
ca4825e84e | |
|
|
1b952e3021 | |
|
|
bce18dcece | |
|
|
9fc07ca3df | |
|
|
345bbc5a9d | |
|
|
dd713c2286 | |
|
|
c89c36e596 | |
|
|
4d5b46e903 | |
|
|
7b1d12d59b | |
|
|
c6ee9c0faf | |
|
|
324c7dbf17 | |
|
|
4e5011c5f5 | |
|
|
885cf37d29 | |
|
|
e348560cf7 | |
|
|
c3cbf0d214 | |
|
|
c5cf7bcba4 | |
|
|
ca4e320085 | |
|
|
8dc86fdddf | |
|
|
4a5a723a15 | |
|
|
0360d5657f | |
|
|
2efc34c280 | |
|
|
9d543e6635 | |
|
|
2ff5c007c1 | |
|
|
4acb921b51 | |
|
|
40734ccd66 | |
|
|
15f4ef55f2 | |
|
|
2b29457763 | |
|
|
2dcc5b664e | |
|
|
e8c7908d29 | |
|
|
63b85f213a | |
|
|
f84e7af78a | |
|
|
24905d3674 | |
|
|
4570cbc342 | |
|
|
08d97478d1 | |
|
|
8c1343dff1 | |
|
|
a32b79e2a8 | |
|
|
00333f8762 | |
|
|
ce6ffb0580 | |
|
|
e7911e973b | |
|
|
dd8421eac6 | |
|
|
3c57df65e6 | |
|
|
169a5c34c5 | |
|
|
567976ecda | |
|
|
f6129a6ef7 | |
|
|
5948b728d2 | |
|
|
cb49810251 | |
|
|
5abde88596 | |
|
|
c0de40ac86 | |
|
|
fdad52f168 | |
|
|
1baf957891 | |
|
|
b9bec98855 | |
|
|
f148fbdf08 | |
|
|
602bc38585 | |
|
|
500e8b5838 | |
|
|
2cd60b0bd8 | |
|
|
3fe8fcd8aa | |
|
|
63d6f2e7d4 | |
|
|
c764a387b4 | |
|
|
a1affd18d8 | |
|
|
6c1f40aab9 | |
|
|
346ff4cc4a | |
|
|
cfbecd780b | |
|
|
3c4a4a8754 | |
|
|
f1a118af6b | |
|
|
4c14f266e9 | |
|
|
3a023592e9 | |
|
|
6a6aab4304 | |
|
|
e5393bb7de | |
|
|
153c9652ee | |
|
|
2e3a7e7b73 | |
|
|
c582cc1423 | |
|
|
580aef2bf6 | |
|
|
0cde94e672 | |
|
|
c424d79fd6 | |
|
|
eae4644921 | |
|
|
054bb882da | |
|
|
0806785d91 | |
|
|
fe273bb832 | |
|
|
7029295cb3 | |
|
|
7435a0605b | |
|
|
39409b0358 | |
|
|
2b95a3891a | |
|
|
f7c64bec79 | |
|
|
ae377e452f | |
|
|
38d0ac4c49 | |
|
|
b18e8ff444 | |
|
|
dc5de062b8 | |
|
|
afd60b382b | |
|
|
302bfee669 | |
|
|
8f9ed4d7ae | |
|
|
bef8e02217 | |
|
|
53b228b06c | |
|
|
fa9b572e3e | |
|
|
8664e16c55 | |
|
|
57f0e2f627 | |
|
|
042a64589b | |
|
|
8ba116ccf1 | |
|
|
33aa53b7c5 | |
|
|
aabdc74af6 | |
|
|
6df9ba2d00 | |
|
|
3bc0eafc51 | |
|
|
90f38c9496 | |
|
|
bbf8b071c0 | |
|
|
626c75bbc1 | |
|
|
b759e2accd | |
|
|
5d1201637f | |
|
|
c6dd3fdeff | |
|
|
4dd8b01ea9 | |
|
|
150381a20f |
|
|
@ -2,3 +2,4 @@ conf/user.inc.php
|
|||
conf/user_defined.php
|
||||
userdata
|
||||
www/cache/
|
||||
www/themes/new/css/custom.css
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ final class ErrorPageData implements JsonSerializable
|
|||
public function __construct($exception, $title = null)
|
||||
{
|
||||
$this->exception = $exception;
|
||||
$this->title = !empty($title) ? (string)$title : 'OpenXE: Es ist ein unerwarteter Fehler aufgetreten!';
|
||||
$this->title = !empty($title) ? (string)$title : 'DBXE: Es ist ein unerwarteter Fehler aufgetreten!';
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ final class Shopware6Client
|
|||
|
||||
$request = new ClientRequest(
|
||||
$method,
|
||||
$this->url . 'v2/' . $endpoint,
|
||||
$this->url . $endpoint,
|
||||
$headerInformation,
|
||||
empty($body) ? null : json_encode($body)
|
||||
);
|
||||
|
|
|
|||
|
|
@ -31,14 +31,14 @@ class SubscriptionModule implements SubscriptionModuleInterface
|
|||
aa.id,
|
||||
@start := GREATEST(aa.startdatum, aa.abgerechnetbis) as start,
|
||||
@end := IF(aa.enddatum = '0000-00-00' OR aa.enddatum > :calcdate, :calcdate, aa.enddatum) as end,
|
||||
@cycles := CASE
|
||||
@cycles := GREATEST(aa.zahlzyklus, CASE
|
||||
WHEN aa.preisart = 'monat' THEN
|
||||
TIMESTAMPDIFF(MONTH, @start, @end)
|
||||
WHEN aa.preisart = 'jahr' THEN
|
||||
TIMESTAMPDIFF(YEAR, @start, @end)
|
||||
WHEN aa.preisart = '30tage' THEN
|
||||
FLOOR(TIMESTAMPDIFF(DAY, @start, @end) / 30)
|
||||
END+1 as cycles,
|
||||
END+1) as cycles,
|
||||
CASE
|
||||
WHEN aa.preisart = 'monat' THEN
|
||||
DATE_ADD(@start, INTERVAL @cycles MONTH)
|
||||
|
|
|
|||
|
|
@ -223,7 +223,7 @@ if ($task) {
|
|||
} catch (Exception $e) {
|
||||
$app->erp->LogFile(
|
||||
$app->DB->real_escape_string(
|
||||
'Prozessstarter Fehler bei Aufruf des Moduls ' . $task[$task_index]['parameter'] . ': ' . $e->getMessage()
|
||||
'Prozessstarter Fehler bei Aufruf des Moduls ' . $task[$task_index]['parameter'] . ': ' . $e->getMessage()." Trace: ".$e->GetTraceAsString()
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16729,7 +16729,9 @@ INSERT INTO `firmendaten_werte` (`id`, `name`, `typ`, `typ1`, `typ2`, `wert`, `d
|
|||
(386, 'cleaner_shopimport_tage', 'int', '11', '', '90', '90', 0, 0),
|
||||
(387, 'cleaner_adapterbox', 'tinyint', '1', '', '1', '1', 0, 0),
|
||||
(388, 'cleaner_adapterbox_tage', 'int', '11', '', '90', '90', 0, 0),
|
||||
(389, 'bcc3', 'varchar', '128', '', '', '', 0, 0)
|
||||
(389, 'bcc3', 'varchar', '128', '', '', '', 0, 0),
|
||||
(390, 'rechnungersatz_standard', 'int', '1', '', '0', '0', 0, 0)
|
||||
|
||||
;
|
||||
|
||||
INSERT INTO `geschaeftsbrief_vorlagen` (`id`, `sprache`, `betreff`, `text`, `subjekt`, `projekt`, `firma`) VALUES
|
||||
|
|
@ -16749,6 +16751,44 @@ INSERT INTO `geschaeftsbrief_vorlagen` (`id`, `sprache`, `betreff`, `text`, `sub
|
|||
(16, 'deutsch', 'Zusammenstellung Ihrer Bestellung', '{ANSCHREIBEN},<br><br>soeben wurde Ihr Bestellung zusammengestellt. Sie können Ihre Ware jetzt abholen. Sind Sie bereits bei uns gewesen, so sehen Sie diese E-Mail bitte als gegenstandslos an.<br><br>{VERSAND}<br><br>Ihr {FIRMA} Team<br>', 'Selbstabholer', 0, 1),
|
||||
(17, 'deutsch', 'Ihre Gutschrift {BELEGNR} von {FIRMA}', '{ANSCHREIBEN},<br><br>anbei finden Sie Ihre Gutschrift. Gerne stehen wir Ihnen weiterhin zur Verfügung.<br><br>Ihre Gutschrift ist im PDF-Format erstellt worden. Um sich die Gutschrift ansehen zu können, klicken Sie auf den Anhang und es öffnet sich automatisch der Acrobat Reader. Sollten Sie keinen Acrobat Reader besitzen, haben wir für Sie den Link zum kostenlosen Download von Adobe Acrobat Reader mit angegeben. Er führt Sie automatisch auf die Downloadseite von Adobe. So können Sie sich Ihre Gutschrift auch für Ihre Unterlagen ausdrucken.<br><br>http://www.adobe.com/products/acrobat/readstep2.html<br><br>{IF}{INTERNET}{THEN}Internet-Bestellnr.: {INTERNET}{ELSE}{ENDIF}', 'Gutschrift', 1, 1);
|
||||
|
||||
|
||||
/* DBXE 2024-01-24 für datatablelabel */
|
||||
INSERT INTO `hook` (`name`, `aktiv`, `parametercount`, `alias`, `description`) VALUES
|
||||
('eproosystem_ende', 1, 0, '', ''),
|
||||
('parseuservars', 1, 0, '', ''),
|
||||
('dokumentsend_ende', 1, 0, '', ''),
|
||||
('auftrag_versand_ende', 1, 0, '', ''),
|
||||
('transfer_document_incoming', 1, 0, '', '')
|
||||
;
|
||||
|
||||
INSERT INTO `hook_register` (`hook_action`, `function`, `aktiv`, `position`, `hook`, `module`, `module_parameter`) VALUES
|
||||
(0, 'DataTableLabelsInclude', 1, 3, (SELECT id FROM hook WHERE name = 'eproosystem_ende'), 'Datatablelabels', 0),
|
||||
(0, 'DatatablelabelsParseUserVars', 1, 2, (SELECT id FROM hook WHERE name = 'parseuservars'), 'Datatablelabels', 0),
|
||||
(0, 'DataTableLabelsDokumentSendHook', 1, 1, (SELECT id FROM hook WHERE name = 'dokumentsend_ende'), 'Datatablelabels', 0),
|
||||
(0, 'DatatablelabelsOrderSent', 1, 1, (SELECT id FROM hook WHERE name = 'auftrag_versand_ende'), 'Datatablelabels', 0),
|
||||
(0, 'DatatablelabelsTransferDocumentIncomming', 1, 1, (SELECT id FROM hook WHERE name = 'transfer_document_incoming'), 'Datatablelabels', 0);
|
||||
/* DBXE 2024-01-24 für datatablelabel */
|
||||
|
||||
/* OpenXE 2024-02-03 für belegvorlagen */
|
||||
INSERT INTO `hook` (`name`, `aktiv`, `parametercount`, `alias`, `description`) VALUES
|
||||
('BelegPositionenButtons', 1, 3, '', ''),
|
||||
('AARLGPositionen_cmds_end', 1, 1, '', ''),
|
||||
('ajax_filter_hook1', 1, 1, '', '');
|
||||
|
||||
INSERT INTO `hook_register` (`hook_action`, `function`, `aktiv`, `position`, `hook`, `module`, `module_parameter`) VALUES
|
||||
(0, 'BelegevorlagenAARLGPositionen_cmds_end', 1, 2, (SELECT id FROM hook WHERE name = 'AARLGPositionen_cmds_end' LIMIT 1), 'belegevorlagen', 0),
|
||||
(0, 'Belegevorlagenajax_filter_hook1', 1, 2, (SELECT id FROM hook WHERE name = 'ajax_filter_hook1' LIMIT 1), 'belegevorlagen', 0),
|
||||
(0, 'BelegevorlagenBelegPositionenButtons', 1, 2, (SELECT id FROM hook WHERE name = 'BelegPositionenButtons' LIMIT 1), 'belegevorlagen', 0)
|
||||
;
|
||||
/* DBXE 2024-02-03 für belegvorlagen */
|
||||
|
||||
/*
|
||||
BelegPositionenButtons
|
||||
|
||||
Id,Hook_action,Function,Aktiv,Position,Hook,Module,Module_parameter
|
||||
20,0,BelegevorlagenBelegPositionenButtons,1,2,16,belegevorlagen,0
|
||||
*/
|
||||
|
||||
INSERT INTO `hook_menu` (`id`, `module`, `aktiv`) VALUES
|
||||
(1, 'artikel', 1),
|
||||
(2, 'provisionenartikel', 1),
|
||||
|
|
@ -18170,7 +18210,7 @@ INSERT INTO `wiedervorlage_stages` (`id`, `kurzbezeichnung`, `name`, `hexcolor`,
|
|||
(12, 'Stay', 'Stay (Erhalt)', '#A2D624', 0, 1, 4, 4, NULL),
|
||||
(13, 'Okay', 'Okay (Befürwortung)', '#A2D624', 0, 1, 5, 4, NULL);
|
||||
INSERT INTO `wiki` (`id`, `name`, `content`, `lastcontent`) VALUES
|
||||
(1, 'StartseiteWiki', '\n<p>Herzlich Willkommen in Ihrem OpenXE, dem freien ERP.<br><br>Wir freuen uns Sie als Benutzer begrüßen zu dürfen. Mit OpenXE organisieren Sie Ihre Firma schnell und einfach. Sie haben alle wichtigen Zahlen und Vorgänge im Überblick.<br><br>Für Einsteiger sind die folgenden Themen wichtig:<br><br></p>\n<ul>\n<li> <a href="index.php?module=firmendaten&action=edit" target="_blank"> Firmendaten</a> (dort richten Sie Ihr Briefpapier ein)</li>\n<li> <a href="index.php?module=adresse&action=list" target="_blank"> Stammdaten / Adressen</a> (Kunden und Lieferanten anlegen)</li>\n<li> <a href="index.php?module=artikel&action=list" target="_blank"> Artikel anlegen</a> (Ihr Artikelstamm)</li>\n<li> <a href="index.php?module=angebot&action=list" target="_blank"> Angebot</a> / <a href="index.php?module=auftrag&action=list" target="_blank"> Auftrag</a> (Alle Dokumente für Ihr Geschäft)</li>\n<li> <a href="index.php?module=rechnung&action=list" target="_blank"> Rechnung</a> / <a href="index.php?module=gutschrift&action=list" target="_blank"> Gutschrift</a></li>\n<li> <a href="index.php?module=lieferschein&action=list" target="_blank"> Lieferschein</a></li>\n</ul>\n<p><br><br>Kennen Sie unsere Zusatzmodule die Struktur und Organisation in das tägliche Geschäft bringen?<br><br></p>\n<ul>\n<li> <a href="index.php?module=kalender&action=list" target="_blank"> Kalender</a></li>\n<li> <a href="index.php?module=wiki&action=list" target="_blank"> Wiki</a></li>\n</ul>', NULL);
|
||||
(1, 'StartseiteWiki', '\n<p>Herzlich Willkommen in Ihrem DBXE, dem freien ERP.<br><br>Wir freuen uns Sie als Benutzer begrüßen zu dürfen. Mit DBXE organisieren Sie Ihre Firma schnell und einfach. Sie haben alle wichtigen Zahlen und Vorgänge im Überblick.<br><br>Für Einsteiger sind die folgenden Themen wichtig:<br><br></p>\n<ul>\n<li> <a href="index.php?module=firmendaten&action=edit" target="_blank"> Firmendaten</a> (dort richten Sie Ihr Briefpapier ein)</li>\n<li> <a href="index.php?module=adresse&action=list" target="_blank"> Stammdaten / Adressen</a> (Kunden und Lieferanten anlegen)</li>\n<li> <a href="index.php?module=artikel&action=list" target="_blank"> Artikel anlegen</a> (Ihr Artikelstamm)</li>\n<li> <a href="index.php?module=angebot&action=list" target="_blank"> Angebot</a> / <a href="index.php?module=auftrag&action=list" target="_blank"> Auftrag</a> (Alle Dokumente für Ihr Geschäft)</li>\n<li> <a href="index.php?module=rechnung&action=list" target="_blank"> Rechnung</a> / <a href="index.php?module=gutschrift&action=list" target="_blank"> Gutschrift</a></li>\n<li> <a href="index.php?module=lieferschein&action=list" target="_blank"> Lieferschein</a></li>\n</ul>\n<p><br><br>Kennen Sie unsere Zusatzmodule die Struktur und Organisation in das tägliche Geschäft bringen?<br><br></p>\n<ul>\n<li> <a href="index.php?module=kalender&action=list" target="_blank"> Kalender</a></li>\n<li> <a href="index.php?module=wiki&action=list" target="_blank"> Wiki</a></li>\n</ul>', NULL);
|
||||
|
||||
|
||||
INSERT INTO `konten` (`id`, `bezeichnung`, `kurzbezeichnung`, `type`, `erstezeile`, `datevkonto`, `blz`, `konto`, `swift`, `iban`, `lastschrift`, `hbci`, `hbcikennung`, `inhaber`, `aktiv`, `keineemail`, `firma`, `schreibbar`, `importletztenzeilenignorieren`, `liveimport`, `liveimport_passwort`, `liveimport_online`, `importtrennzeichen`, `codierung`, `importerstezeilenummer`, `importdatenmaskierung`, `importnullbytes`, `glaeubiger`, `geloescht`, `projekt`, `saldo_summieren`, `saldo_betrag`, `saldo_datum`, `importfelddatum`, `importfelddatumformat`, `importfelddatumformatausgabe`, `importfeldbetrag`, `importfeldbetragformat`, `importfeldbuchungstext`, `importfeldbuchungstextformat`, `importfeldwaehrung`, `importfeldwaehrungformat`, `importfeldhabensollkennung`, `importfeldkennunghaben`, `importfeldkennungsoll`, `importextrahabensoll`, `importfeldhaben`, `importfeldsoll`, `cronjobaktiv`, `cronjobverbuchen`) VALUES
|
||||
|
|
|
|||
|
|
@ -765,6 +765,7 @@ $tooltip['firmendaten']['edit']['bezeichnungangebotersatz']="Im Angebot gibt es
|
|||
$tooltip['firmendaten']['edit']['angebotersatz_standard']="Mit dieser Option setzen Sie die alternative Bezeichnung im Angebot (Option drüber) als Standard. Dadurch ist der Haken beim Erstellen eines neuen Angebots immer gesetzt.";
|
||||
$tooltip['firmendaten']['edit']['bezeichnungauftragersatz']="Im Auftrag gibt es einen Haken um den Betreff des Augtrag-Belegs umzubenennen.<br>Mit der Option hier legen Sie den Namen des alternativen Betreffs fest.";
|
||||
$tooltip['firmendaten']['edit']['bezeichnungrechnungersatz']="In der Rechnung gibt es einen Haken um den Betreff des Rechnung-Belegs umzubenennen.<br>Mit der Option hier legen Sie den Namen des alternativen Betreffs fest.";
|
||||
$tooltip['firmendaten']['edit']['rechnungersatz_standard']="Mit dieser Option setzen Sie die alternative Bezeichnung in der Rechnung (Option drüber) als Standard. Dadurch ist der Haken beim Erstellen einer neuen Rechnung immer gesetzt.";
|
||||
$tooltip['firmendaten']['edit']['bezeichnunglieferscheinersatz']="Im Lieferschein gibt es einen Haken um den Betreff des Lieferschein-Belegs umzubenennen.<br>Mit der Option hier legen Sie den Namen des alternativen Betreffs fest.";
|
||||
$tooltip['firmendaten']['edit']['bezeichnungbestellungersatz']="In der Bestellung gibt es einen Haken um den Betreff des Bestell-Belegs umzubenennen.<br>Mit der Option hier legen Sie den Namen des alternativen Betreffs fest.";
|
||||
$tooltip['firmendaten']['edit']['bezeichnungproformarechnungersatz']="In der Proformarechnung gibt es einen Haken um den Betreff der Proformarechnung-Belegs umzubenennen.<br>Mit der Option hier legen Sie den Namen des alternativen Betreffs fest.";
|
||||
|
|
|
|||
|
|
@ -1,361 +1,361 @@
|
|||
<?php
|
||||
/*
|
||||
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*
|
||||
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
|
||||
*
|
||||
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
|
||||
*
|
||||
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
|
||||
* to obtain the text of the corresponding license version.
|
||||
*
|
||||
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
/*
|
||||
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*
|
||||
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
|
||||
*
|
||||
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
|
||||
*
|
||||
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
|
||||
* to obtain the text of the corresponding license version.
|
||||
*
|
||||
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
|
||||
/// represent a HTML Form structure
|
||||
class HTMLForm
|
||||
{
|
||||
var $action;
|
||||
var $method;
|
||||
var $name;
|
||||
var $id;
|
||||
|
||||
var $FieldList;
|
||||
|
||||
function __construct($action="",$method="post",$name="",$id="")
|
||||
{
|
||||
$this->action=$action;
|
||||
$this->name=$name;
|
||||
$this->method=$method;
|
||||
$this->id=$id;
|
||||
}
|
||||
|
||||
function Set($value)
|
||||
{
|
||||
}
|
||||
|
||||
function Get()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
function GetClose()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
class HTMLTextarea
|
||||
{
|
||||
var $name;
|
||||
var $rows;
|
||||
var $value;
|
||||
var $cols;
|
||||
var $id="";
|
||||
var $readonly="";
|
||||
var $disabled="";
|
||||
var $class;
|
||||
|
||||
function __construct($name,$rows,$cols,$defvalue="",$id="",$readonly="",$disabled="",$class="")
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->rows = $rows;
|
||||
$this->cols = $cols;
|
||||
$this->class = $class;
|
||||
$this->value = $defvalue;
|
||||
$this->id = $id;
|
||||
|
||||
if($id=="")
|
||||
$this->id = $name;
|
||||
|
||||
$this->readonly = $readonly;
|
||||
$this->disabled = $disabled;
|
||||
}
|
||||
|
||||
function Get()
|
||||
{
|
||||
// TEMP ACHTUNG HIER IST MIST!!!
|
||||
$value = $this->value;
|
||||
/*
|
||||
if(!defined('WFHTMLTextareabr') || !WFHTMLTextareabr)$value = preg_replace('/<br\\s*?\/??>/i', "\n", $value);
|
||||
*/
|
||||
// $value = str_replace("\\r\\n","\n",$value);
|
||||
|
||||
$html = "<textarea rows=\"{$this->rows}\" id=\"{$this->id}\" class=\"{$this->class}\"
|
||||
name=\"{$this->name}\" cols=\"{$this->cols}\"
|
||||
{$this->readonly} {$this->disabled} [COMMONREADONLYINPUT]>$value</textarea>";
|
||||
return $html;
|
||||
}
|
||||
|
||||
function GetClose()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// fuer Datenfelder die mit in die Datenbank o.ae. kommen sollen, aber nicht durch den
|
||||
/// user in irgendeiner art und weise gesehen und manipuliert werden koennen
|
||||
|
||||
class BlindField
|
||||
{
|
||||
var $name;
|
||||
var $value;
|
||||
|
||||
function __construct($name,$value)
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->value = $value;
|
||||
}
|
||||
function Get(){}
|
||||
function GetClose(){}
|
||||
}
|
||||
|
||||
|
||||
class HTMLInput
|
||||
{
|
||||
var $name;
|
||||
var $type;
|
||||
var $value;
|
||||
var $dbvalue;
|
||||
var $checkvalue;
|
||||
var $onchange;
|
||||
var $onclick;
|
||||
var $defvalue;
|
||||
var $size;
|
||||
var $maxlength;
|
||||
var $tabindex;
|
||||
var $id="";
|
||||
var $readonly="";
|
||||
var $disabled="";
|
||||
var $placeholder="";
|
||||
var $class;
|
||||
var $checked;
|
||||
|
||||
function __construct($name,$type,$value,$size="",$maxlength="",$id="",$defvalue="",$checked="",$readonly="",$disabled="",$class="",$onclick="",$tabindex="",$placeholder="")
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->type = $type;
|
||||
$this->value = $value;
|
||||
$this->size = $size;
|
||||
$this->maxlength = $maxlength;
|
||||
$this->id = $id;
|
||||
$this->readonly = $readonly;
|
||||
$this->disabled = $disabled;
|
||||
$this->class=$class;
|
||||
$this->checked=$checked;
|
||||
$this->tabindex=$tabindex;
|
||||
$this->placeholder=$placeholder;
|
||||
$this->defvalue=$defvalue; // if value is empty use this
|
||||
$this->onclick=$onclick;
|
||||
|
||||
}
|
||||
|
||||
function Get()
|
||||
{
|
||||
if($this->id=="") $this->id = $this->name;
|
||||
|
||||
switch($this->type)
|
||||
{
|
||||
case "text":
|
||||
$html = "<input type=\"{$this->type}\" id=\"{$this->id}\" class=\"{$this->class}\" tabindex=\"{$this->tabindex}\"
|
||||
name=\"{$this->name}\" value=\"".preg_replace("/\"/",""",$this->value)."\" size=\"{$this->size}\" placeholder=\"{$this->placeholder}\"
|
||||
maxlength=\"{$this->maxlength}\" {$this->readonly} {$this->disabled} [COMMONREADONLYINPUT]>";
|
||||
break;
|
||||
case "password":
|
||||
$html = "<input type=\"{$this->type}\" id=\"{$this->id}\" class=\"{$this->class}\" tabindex=\"{$this->tabindex}\"
|
||||
name=\"{$this->name}\" value=\"{$this->value}\" size=\"{$this->size}\"
|
||||
maxlength=\"{$this->maxlength}\" {$this->readonly} {$this->disabled} [COMMONREADONLYINPUT]>";
|
||||
break;
|
||||
case "checkbox":
|
||||
$html = "<input type=\"{$this->type}\" id=\"{$this->id}\" class=\"{$this->class}\" tabindex=\"{$this->tabindex}\"
|
||||
name=\"{$this->name}\" value=\"{$this->value}\" {$this->checked} onchange=\"{$this->onchange}\" onclick=\"{$this->onclick}\"
|
||||
{$this->readonly} {$this->disabled} [COMMONREADONLYINPUT]>";
|
||||
break;
|
||||
case "radio":
|
||||
|
||||
if($this->value==$this->defvalue) $this->checked="checked";
|
||||
|
||||
$tmpname = str_replace('_'.$this->defvalue,'',$this->name);
|
||||
|
||||
$html = "<input type=\"{$this->type}\" id=\"{$this->id}\" class=\"{$this->class}\" tabindex=\"{$this->tabindex}\"
|
||||
name=\"{$tmpname}\" value=\"{$this->defvalue}\" {$this->checked} onchange=\"{$this->onchange}\"
|
||||
{$this->readonly} {$this->disabled} [COMMONREADONLYINPUT]>";
|
||||
break;
|
||||
case "submit":
|
||||
$html = "<input type=\"{$this->type}\" id=\"{$this->id}\" class=\"{$this->class}\"
|
||||
name=\"{$this->name}\" value=\"{$this->value}\"
|
||||
{$this->readonly} {$this->disabled}>";
|
||||
break;
|
||||
case "hidden":
|
||||
$html = "<input type=\"{$this->type}\" id=\"{$this->id}\" class=\"{$this->class}\"
|
||||
name=\"{$this->name}\" value=\"{$this->value}\" size=\"{$this->size}\"
|
||||
maxlength=\"{$this->maxlength}\" {$this->readonly} {$this->disabled}>";
|
||||
break;
|
||||
}
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
function GetClose()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
class HTMLCheckbox extends HTMLInput
|
||||
{
|
||||
function __construct($name,$value,$defvalue,$checkvalue="",$onclick="",$tabindex="")
|
||||
{
|
||||
|
||||
if($checkvalue!="")
|
||||
$this->checkvalue=$checkvalue;
|
||||
else
|
||||
$this->checkvalue=$value;
|
||||
|
||||
$this->name = $name;
|
||||
$this->type = "checkbox";
|
||||
$this->checkradiovalue = isset($okvalue)?$okvalue:null;
|
||||
$this->defvalue = $defvalue;
|
||||
$this->value = $value;
|
||||
$this->onclick= $onclick;
|
||||
$this->tabindex= $tabindex;
|
||||
$this->orgvalue = $value;
|
||||
}
|
||||
|
||||
|
||||
function Get()
|
||||
{
|
||||
if(($this->value=="" && $this->defvalue==$this->checkvalue)) {
|
||||
}
|
||||
if($this->checkvalue==$this->value) {
|
||||
$this->checked="checked";
|
||||
}
|
||||
if($this->value=="" && $this->defvalue!=$this->checkvalue)
|
||||
$this->checked="";
|
||||
|
||||
$this->value = $this->checkvalue;
|
||||
//$this->value=1;
|
||||
return parent::Get();
|
||||
}
|
||||
|
||||
function GetClose()
|
||||
{
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
class HTMLSelect
|
||||
{
|
||||
var $name;
|
||||
var $size;
|
||||
var $id;
|
||||
var $readonly;
|
||||
var $disabled;
|
||||
|
||||
var $options;
|
||||
var $onchange;
|
||||
var $selected;
|
||||
var $tabindex;
|
||||
|
||||
var $class;
|
||||
|
||||
function __construct($name,$size,$id="",$readonly=false,$disabled=false,$tabindex="")
|
||||
{
|
||||
$this->name=$name;
|
||||
$this->size=$size;
|
||||
$this->id=$id;
|
||||
$this->readonly=$readonly;
|
||||
$this->disabled=$disabled;
|
||||
$this->tabindex=$tabindex;
|
||||
$this->class="";
|
||||
|
||||
if($id=="")
|
||||
$this->id = $name;
|
||||
}
|
||||
|
||||
function AddOption($option,$value)
|
||||
{
|
||||
$this->options[] = array($option,$value);
|
||||
}
|
||||
|
||||
function AddOptionsDimensionalArray($values)
|
||||
{
|
||||
foreach($values as $key=>$value)
|
||||
{
|
||||
$this->options[] = array($value[wert],$value[schluessel]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function AddOptionsAsocSimpleArray($values)
|
||||
{
|
||||
foreach($values as $key=>$value)
|
||||
$this->options[] = array($value,$key);
|
||||
}
|
||||
|
||||
function AddOptionsSimpleArray($values)
|
||||
{
|
||||
if(is_array($values))
|
||||
{
|
||||
foreach($values as $key=>$value)
|
||||
{
|
||||
if(!is_numeric($key))
|
||||
$this->options[] = array($value,$key);
|
||||
else
|
||||
$this->options[] = array($value,$value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function AddOptions($values)
|
||||
{
|
||||
$number=0;
|
||||
if(count($values)>0)
|
||||
{
|
||||
foreach($values as $key=>$row)
|
||||
foreach($row as $value)
|
||||
{
|
||||
if($number==0){
|
||||
$option=$value;
|
||||
$number=1;
|
||||
}
|
||||
else {
|
||||
$this->options[] = array($option,$value);
|
||||
$number=0;
|
||||
$option="";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function Get()
|
||||
{
|
||||
$html = "<select name=\"{$this->name}\" size=\"{$this->size}\" tabindex=\"{$this->tabindex}\"
|
||||
id=\"{$this->id}\" class=\"{$this->class}\" onchange=\"{$this->onchange}\" [COMMONREADONLYSELECT]>";
|
||||
|
||||
if($this->options && count($this->options)>0)
|
||||
{
|
||||
foreach($this->options as $key=>$value)
|
||||
{
|
||||
if($this->value==$value[1])
|
||||
$html .="<option value=\"{$value[1]}\" selected>{$value[0]}</option>";
|
||||
else
|
||||
$html .="<option value=\"{$value[1]}\">{$value[0]}</option>";
|
||||
}
|
||||
|
||||
}
|
||||
$html .="</select>";
|
||||
return $html;
|
||||
}
|
||||
|
||||
function GetClose()
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
<?php
|
||||
|
||||
/// represent a HTML Form structure
|
||||
class HTMLForm
|
||||
{
|
||||
var $action;
|
||||
var $method;
|
||||
var $name;
|
||||
var $id;
|
||||
|
||||
var $FieldList;
|
||||
|
||||
function __construct($action="",$method="post",$name="",$id="")
|
||||
{
|
||||
$this->action=$action;
|
||||
$this->name=$name;
|
||||
$this->method=$method;
|
||||
$this->id=$id;
|
||||
}
|
||||
|
||||
function Set($value)
|
||||
{
|
||||
}
|
||||
|
||||
function Get()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
function GetClose()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
class HTMLTextarea
|
||||
{
|
||||
var $name;
|
||||
var $rows;
|
||||
var $value;
|
||||
var $cols;
|
||||
var $id="";
|
||||
var $readonly="";
|
||||
var $disabled="";
|
||||
var $class;
|
||||
|
||||
function __construct($name,$rows,$cols,$defvalue="",$id="",$readonly="",$disabled="",$class="")
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->rows = $rows;
|
||||
$this->cols = $cols;
|
||||
$this->class = $class;
|
||||
$this->value = $defvalue;
|
||||
$this->id = $id;
|
||||
|
||||
if($id=="")
|
||||
$this->id = $name;
|
||||
|
||||
$this->readonly = $readonly;
|
||||
$this->disabled = $disabled;
|
||||
}
|
||||
|
||||
function Get()
|
||||
{
|
||||
// TEMP ACHTUNG HIER IST MIST!!!
|
||||
$value = $this->value;
|
||||
/*
|
||||
if(!defined('WFHTMLTextareabr') || !WFHTMLTextareabr)$value = preg_replace('/<br\\s*?\/??>/i', "\n", $value);
|
||||
*/
|
||||
// $value = str_replace("\\r\\n","\n",$value);
|
||||
|
||||
$html = "<textarea rows=\"{$this->rows}\" id=\"{$this->id}\" class=\"{$this->class}\"
|
||||
name=\"{$this->name}\" cols=\"{$this->cols}\"
|
||||
{$this->readonly} {$this->disabled} [COMMONREADONLYINPUT]>$value</textarea>";
|
||||
return $html;
|
||||
}
|
||||
|
||||
function GetClose()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// fuer Datenfelder die mit in die Datenbank o.ae. kommen sollen, aber nicht durch den
|
||||
/// user in irgendeiner art und weise gesehen und manipuliert werden koennen
|
||||
|
||||
class BlindField
|
||||
{
|
||||
var $name;
|
||||
var $value;
|
||||
|
||||
function __construct($name,$value)
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->value = $value;
|
||||
}
|
||||
function Get(){}
|
||||
function GetClose(){}
|
||||
}
|
||||
|
||||
|
||||
class HTMLInput
|
||||
{
|
||||
var $name;
|
||||
var $type;
|
||||
var $value;
|
||||
var $dbvalue;
|
||||
var $checkvalue;
|
||||
var $onchange;
|
||||
var $onclick;
|
||||
var $defvalue;
|
||||
var $size;
|
||||
var $maxlength;
|
||||
var $tabindex;
|
||||
var $id="";
|
||||
var $readonly="";
|
||||
var $disabled="";
|
||||
var $placeholder="";
|
||||
var $class;
|
||||
var $checked;
|
||||
|
||||
function __construct($name,$type,$value,$size="",$maxlength="",$id="",$defvalue="",$checked="",$readonly="",$disabled="",$class="",$onclick="",$tabindex="",$placeholder="")
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->type = $type;
|
||||
$this->value = $value;
|
||||
$this->size = $size;
|
||||
$this->maxlength = $maxlength;
|
||||
$this->id = $id;
|
||||
$this->readonly = $readonly;
|
||||
$this->disabled = $disabled;
|
||||
$this->class=$class;
|
||||
$this->checked=$checked;
|
||||
$this->tabindex=$tabindex;
|
||||
$this->placeholder=$placeholder;
|
||||
$this->defvalue=$defvalue; // if value is empty use this
|
||||
$this->onclick=$onclick;
|
||||
|
||||
}
|
||||
|
||||
function Get()
|
||||
{
|
||||
if($this->id=="") $this->id = $this->name;
|
||||
|
||||
switch($this->type)
|
||||
{
|
||||
case "text":
|
||||
$html = "<input type=\"{$this->type}\" id=\"{$this->id}\" class=\"{$this->class}\" tabindex=\"{$this->tabindex}\"
|
||||
name=\"{$this->name}\" value=\"".preg_replace("/\"/",""",$this->value)."\" size=\"{$this->size}\" placeholder=\"{$this->placeholder}\"
|
||||
maxlength=\"{$this->maxlength}\" {$this->readonly} {$this->disabled} [COMMONREADONLYINPUT]>";
|
||||
break;
|
||||
case "password":
|
||||
$html = "<input type=\"{$this->type}\" id=\"{$this->id}\" class=\"{$this->class}\" tabindex=\"{$this->tabindex}\"
|
||||
name=\"{$this->name}\" value=\"{$this->value}\" size=\"{$this->size}\"
|
||||
maxlength=\"{$this->maxlength}\" {$this->readonly} {$this->disabled} [COMMONREADONLYINPUT]>";
|
||||
break;
|
||||
case "checkbox":
|
||||
$html = "<input type=\"{$this->type}\" id=\"{$this->id}\" class=\"{$this->class}\" tabindex=\"{$this->tabindex}\"
|
||||
name=\"{$this->name}\" value=\"{$this->value}\" {$this->checked} onchange=\"{$this->onchange}\" onclick=\"{$this->onclick}\"
|
||||
{$this->readonly} {$this->disabled} [COMMONREADONLYINPUT]>";
|
||||
break;
|
||||
case "radio":
|
||||
|
||||
if($this->value==$this->defvalue) $this->checked="checked";
|
||||
|
||||
$tmpname = str_replace('_'.$this->defvalue,'',$this->name);
|
||||
|
||||
$html = "<input type=\"{$this->type}\" id=\"{$this->id}\" class=\"{$this->class}\" tabindex=\"{$this->tabindex}\"
|
||||
name=\"{$tmpname}\" value=\"{$this->defvalue}\" {$this->checked} onchange=\"{$this->onchange}\"
|
||||
{$this->readonly} {$this->disabled} [COMMONREADONLYINPUT]>";
|
||||
break;
|
||||
case "submit":
|
||||
$html = "<input type=\"{$this->type}\" id=\"{$this->id}\" class=\"{$this->class}\"
|
||||
name=\"{$this->name}\" value=\"{$this->value}\"
|
||||
{$this->readonly} {$this->disabled}>";
|
||||
break;
|
||||
case "hidden":
|
||||
$html = "<input type=\"{$this->type}\" id=\"{$this->id}\" class=\"{$this->class}\"
|
||||
name=\"{$this->name}\" value=\"{$this->value}\" size=\"{$this->size}\"
|
||||
maxlength=\"{$this->maxlength}\" {$this->readonly} {$this->disabled}>";
|
||||
break;
|
||||
}
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
function GetClose()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
class HTMLCheckbox extends HTMLInput
|
||||
{
|
||||
function __construct($name,$value,$defvalue,$checkvalue="",$onclick="",$tabindex="")
|
||||
{
|
||||
|
||||
if($checkvalue!="")
|
||||
$this->checkvalue=$checkvalue;
|
||||
else
|
||||
$this->checkvalue=$value;
|
||||
|
||||
$this->name = $name;
|
||||
$this->type = "checkbox";
|
||||
$this->checkradiovalue = isset($okvalue)?$okvalue:null;
|
||||
$this->defvalue = $defvalue;
|
||||
$this->value = $value;
|
||||
$this->onclick= $onclick;
|
||||
$this->tabindex= $tabindex;
|
||||
$this->orgvalue = $value;
|
||||
}
|
||||
|
||||
|
||||
function Get()
|
||||
{
|
||||
if(($this->value=="" && $this->defvalue==$this->checkvalue)) {
|
||||
}
|
||||
if($this->checkvalue==$this->value) {
|
||||
$this->checked="checked";
|
||||
}
|
||||
if($this->value=="" && $this->defvalue!=$this->checkvalue)
|
||||
$this->checked="";
|
||||
|
||||
$this->value = $this->checkvalue;
|
||||
//$this->value=1;
|
||||
return parent::Get();
|
||||
}
|
||||
|
||||
function GetClose()
|
||||
{
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
class HTMLSelect
|
||||
{
|
||||
var $name;
|
||||
var $size;
|
||||
var $id;
|
||||
var $readonly;
|
||||
var $disabled;
|
||||
|
||||
var $options;
|
||||
var $onchange;
|
||||
var $selected;
|
||||
var $tabindex;
|
||||
|
||||
var $class;
|
||||
|
||||
function __construct($name,$size,$id="",$readonly=false,$disabled=false,$tabindex="")
|
||||
{
|
||||
$this->name=$name;
|
||||
$this->size=$size;
|
||||
$this->id=$id;
|
||||
$this->readonly=$readonly;
|
||||
$this->disabled=$disabled;
|
||||
$this->tabindex=$tabindex;
|
||||
$this->class="";
|
||||
|
||||
if($id=="")
|
||||
$this->id = $name;
|
||||
}
|
||||
|
||||
function AddOption($option,$value)
|
||||
{
|
||||
$this->options[] = array($option,$value);
|
||||
}
|
||||
|
||||
function AddOptionsDimensionalArray($values)
|
||||
{
|
||||
foreach($values as $key=>$value)
|
||||
{
|
||||
$this->options[] = array($value[wert],$value[schluessel]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function AddOptionsAsocSimpleArray($values)
|
||||
{
|
||||
foreach($values as $key=>$value)
|
||||
$this->options[] = array($value,$key);
|
||||
}
|
||||
|
||||
function AddOptionsSimpleArray($values)
|
||||
{
|
||||
if(is_array($values))
|
||||
{
|
||||
foreach($values as $key=>$value)
|
||||
{
|
||||
if(!is_numeric($key))
|
||||
$this->options[] = array($value,$key);
|
||||
else
|
||||
$this->options[] = array($value,$value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function AddOptions($values)
|
||||
{
|
||||
$number=0;
|
||||
if(count($values)>0)
|
||||
{
|
||||
foreach($values as $key=>$row)
|
||||
foreach($row as $value)
|
||||
{
|
||||
if($number==0){
|
||||
$option=$value;
|
||||
$number=1;
|
||||
}
|
||||
else {
|
||||
$this->options[] = array($option,$value);
|
||||
$number=0;
|
||||
$option="";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function Get()
|
||||
{
|
||||
$html = "<select name=\"{$this->name}\" size=\"{$this->size}\" tabindex=\"{$this->tabindex}\"
|
||||
id=\"{$this->id}\" class=\"{$this->class}\" onchange=\"{$this->onchange}\" [COMMONREADONLYSELECT]>";
|
||||
|
||||
if($this->options && count($this->options)>0)
|
||||
{
|
||||
foreach($this->options as $key=>$value)
|
||||
{
|
||||
if($this->value==$value[1])
|
||||
$html .="<option value=\"{$value[1]}\" selected>{$value[0]}</option>";
|
||||
else
|
||||
$html .="<option value=\"{$value[1]}\">{$value[0]}</option>";
|
||||
}
|
||||
|
||||
}
|
||||
$html .="</select>";
|
||||
return $html;
|
||||
}
|
||||
|
||||
function GetClose()
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1230,7 +1230,7 @@ class DB{
|
|||
$sql = "UPDATE `$tablename` SET ";
|
||||
foreach($ArrCols as $key=>$value) {
|
||||
if($key!=$pkname && (isset($ziel[$key]) || !$zielspalten)) {
|
||||
$sqla[] = $key." = '".($escape?$this->real_escape_string($value):$value)."' ";
|
||||
$sqla[] = "`".$key."` = '".($escape?$this->real_escape_string($value):$value)."' ";
|
||||
}
|
||||
}
|
||||
if(!empty($sqla)) {
|
||||
|
|
|
|||
|
|
@ -736,9 +736,10 @@ class YUI {
|
|||
if($value == '')$value = '0';
|
||||
$this->app->DB->Update("UPDATE $table SET rabatt='$value',keinrabatterlaubt=1 WHERE id='$id' LIMIT 1");
|
||||
$result = $this->app->DB->Select("SELECT ".$this->FormatPreis('rabatt')." FROM $table WHERE id='$id' LIMIT 1");
|
||||
$sort = $this->app->DB->Select("SELECT sort FROM $table WHERE id='$id' LIMIT 1");
|
||||
$parent = $this->app->DB->Select("SELECT $module FROM $table WHERE id='$id' LIMIT 1");
|
||||
if($parent && $sort == 1)$this->app->DB->Update("UPDATE $module SET rabatt = '$value',keinrabatterlaubt=1 WHERE id = '$parent' LIMIT 1");
|
||||
|
||||
//$sort = $this->app->DB->Select("SELECT sort FROM $table WHERE id='$id' LIMIT 1");
|
||||
//$parent = $this->app->DB->Select("SELECT $module FROM $table WHERE id='$id' LIMIT 1");
|
||||
//if($parent && $sort == 1)$this->app->DB->Update("UPDATE $module SET rabatt = '$value',keinrabatterlaubt=1 WHERE id = '$parent' LIMIT 1");
|
||||
if(in_array($module, array('auftrag','rechnung','gutschrift')))
|
||||
{
|
||||
$tmptable_value = $this->app->DB->Select("SELECT $module FROM $table WHERE id = '$id' LIMIT 1");
|
||||
|
|
@ -2563,7 +2564,7 @@ class YUI {
|
|||
$anzeigebrutto = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$sortcol = ' b.sort ';
|
||||
$schreibschutz = !empty($docArr)?$docArr['schreibschutz']:$this->app->DB->Select("SELECT schreibschutz FROM $module WHERE id='$id'");
|
||||
if(!$schreibschutz)$sortcol = " concat('<input type=\"checkbox\" name=\"belegsort[]\" value=\"',b.id,'\" />',b.sort) as sort ";
|
||||
|
|
@ -2838,22 +2839,94 @@ class YUI {
|
|||
|
||||
|
||||
,b.waehrung, b.rabatt as rabatt,";
|
||||
}else{
|
||||
|
||||
|
||||
if ($this->app->erp->RechteVorhanden('angebot','einkaufspreise')) {
|
||||
$sql .= $this->FormatPreis('einkaufspreis')." as einkaufspreis,
|
||||
CONCAT(".$this->app->erp->FormatPreis("ROUND(deckungsbeitrag*100,2)",2).",'%') AS DB,
|
||||
";
|
||||
}
|
||||
|
||||
} else {
|
||||
$sql = "SELECT $sortcol, CONCAT($hersteller_ansicht if(b.beschreibung!='',
|
||||
if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(CONCAT(b.bezeichnung,' *'),1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),CONCAT(b.bezeichnung,' *')),
|
||||
if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(b.bezeichnung,1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),b.bezeichnung)) $erweiterte_ansicht)
|
||||
as Artikel,
|
||||
p.abkuerzung as projekt, a.nummer as nummer, 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, b.rabatt as rabatt,";
|
||||
p.abkuerzung as projekt,
|
||||
a.nummer as nummer,
|
||||
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,
|
||||
b.rabatt as rabatt,
|
||||
'' AS Einkaufspreis,
|
||||
'' AS DB,
|
||||
";
|
||||
}
|
||||
$sql .= "b.id as id
|
||||
FROM $table b
|
||||
LEFT JOIN artikel a ON a.id=b.artikel LEFT JOIN projekt p ON b.projekt=p.id
|
||||
WHERE b.$module='$id'";
|
||||
|
||||
} else {
|
||||
$sql .= "b.id as id
|
||||
FROM $table b
|
||||
LEFT JOIN artikel a ON a.id=b.artikel LEFT JOIN projekt p ON b.projekt=p.id
|
||||
WHERE b.$module='$id'";
|
||||
}
|
||||
else if ($module == "verbindlichkeit") // OpenXE
|
||||
{
|
||||
$sql = "
|
||||
SELECT
|
||||
$sortcol,
|
||||
IF(
|
||||
b.beschreibung != '',
|
||||
IF(
|
||||
CHAR_LENGTH(b.bezeichnung) > " . $this->app->erp->MaxArtikelbezeichnung() . ",
|
||||
CONCAT(
|
||||
SUBSTR(
|
||||
CONCAT(b.bezeichnung, ' *'),
|
||||
1,
|
||||
" . $this->app->erp->MaxArtikelbezeichnung() . "
|
||||
),
|
||||
'...'
|
||||
),
|
||||
CONCAT(b.bezeichnung, ' *')
|
||||
),
|
||||
IF(
|
||||
CHAR_LENGTH(b.bezeichnung) > " . $this->app->erp->MaxArtikelbezeichnung() . ",
|
||||
CONCAT(
|
||||
SUBSTR(
|
||||
b.bezeichnung,
|
||||
1,
|
||||
" . $this->app->erp->MaxArtikelbezeichnung() . "
|
||||
),
|
||||
'...'
|
||||
),
|
||||
b.bezeichnung
|
||||
)
|
||||
) AS Artikel,
|
||||
p.abkuerzung AS projekt,
|
||||
a.nummer,
|
||||
".$this->app->erp->FormatDate('lieferdatum')." AS lieferdatum,
|
||||
TRIM(b.menge) +0 AS menge,
|
||||
" . $this->FormatPreis($preiscell) . " AS preis,
|
||||
" . $this->FormatPreis($preiscell."*menge") . " AS Betrag,
|
||||
CONCAT(
|
||||
k.sachkonto,
|
||||
' - ',
|
||||
k.beschriftung
|
||||
) AS sachkonto,
|
||||
b.id AS id
|
||||
FROM
|
||||
$table b
|
||||
LEFT JOIN artikel a ON
|
||||
a.id = b.artikel
|
||||
LEFT JOIN projekt p ON
|
||||
b.projekt = p.id
|
||||
LEFT JOIN kontorahmen k ON
|
||||
k.id = b.sachkonto
|
||||
WHERE
|
||||
b.$module = '$id'
|
||||
";
|
||||
}
|
||||
else {
|
||||
$sql = null;
|
||||
$this->app->erp->RunHook('yui_position_sql', 3, $table, $id, $sql);
|
||||
if($sql === null){
|
||||
|
|
@ -3539,34 +3612,26 @@ class YUI {
|
|||
|
||||
function IconsSQLVerbindlichkeit() {
|
||||
|
||||
$go_ware = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/ware_go.png\" style=\"margin-right:1px\" title=\"Wareneingangsprüfung OK\" border=\"0\">";
|
||||
$stop_ware = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/ware_stop.png\" style=\"margin-right:1px\" title=\"Wareneingangsprüfung fehlt\" border=\"0\">";
|
||||
$go_summe = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/summe_go.png\" style=\"margin-right:1px\" title=\"Rechnungseingangsprüfung OK\" border=\"0\">";
|
||||
$stop_summe = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/summe_stop.png\" style=\"margin-right:1px\" title=\"Rechnungseingangsprüfung fehlt\" border=\"0\">";
|
||||
$go_ware = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/lagergo.png\" style=\"margin-right:1px\" title=\"Wareneingangsprüfung OK\" border=\"0\">";
|
||||
$stop_ware = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/lagerstop.png\" style=\"margin-right:1px\" title=\"Wareneingangsprüfung fehlt\" border=\"0\">";
|
||||
|
||||
$go_pdf = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/summe_go.png\" style=\"margin-right:1px\" title=\"Anhang OK\" border=\"0\">";
|
||||
$stop_pdf = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/summe_stop.png\" style=\"margin-right:1px\" title=\"Anhang fehlt\" border=\"0\">";
|
||||
|
||||
$go_summe = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/check_go.png\" style=\"margin-right:1px\" title=\"Rechnungseingangsprüfung OK\" border=\"0\">";
|
||||
$stop_summe = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/check_stop.png\" style=\"margin-right:1px\" title=\"Rechnungseingangsprüfung fehlt\" border=\"0\">";
|
||||
|
||||
$go_zahlung = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/bank_go.svg\" style=\"margin-right:1px\" title=\"Kontoverknüpfung OK\" border=\"0\">";
|
||||
$stop_zahlung = "<img src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/bank_stop.svg\" style=\"margin-right:1px\" title=\"Kontoverknüpfung fehlt\" border=\"0\">";
|
||||
|
||||
$stop_betragbezahlt = "<img alt=\"Zahlung fehlt\" src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/vorkassestop.png\" style=\"margin-right:1px\" title=\"Zahlung fehlt\" border=\"0\">";
|
||||
$gostop_betragbezahlt = "<img alt=\"teilweise bezahlt\" src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/vorkassegostop.png\" style=\"margin-right:1px\" title=\"teilweise bezahlt\" border=\"0\">";
|
||||
$go_betragbezahlt = "<img alt=\"nicht bezahlt\" src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/vorkassego.png\" style=\"margin-right:1px\" title=\"komplett bezahlt\" border=\"0\">";
|
||||
$go_betragbezahlt = "<img alt=\"nicht bezahlt\" src=\"./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/vorkassego.png\" style=\"margin-right:1px\" title=\"bezahlt\" border=\"0\">";
|
||||
return "CONCAT('<table><tr><td nowrap>',
|
||||
if(datei_anzahl > 0,'$go_pdf','$stop_pdf'),
|
||||
if(v.freigabe,'$go_ware','$stop_ware'),
|
||||
if(v.rechnungsfreigabe,'$go_summe','$stop_summe'),
|
||||
IF( v.betragbezahlt = 0 OR (v.betrag > 0 AND v.betragbezahlt < 0),'$stop_betragbezahlt',
|
||||
IF(v.betrag > 0 AND (v.betragbezahlt + v.skonto_erhalten) >= v.betrag, '$go_betragbezahlt',
|
||||
IF(v.betrag - v.betragbezahlt <= v.betrag-((v.betrag/100.0)*v.skonto),
|
||||
'$gostop_betragbezahlt',
|
||||
'$go_betragbezahlt'
|
||||
)
|
||||
)
|
||||
),
|
||||
if((
|
||||
(SELECT COUNT(ka.id)
|
||||
FROM kontoauszuege_zahlungsausgang ka WHERE ka.parameter=v.id AND ka.objekt='verbindlichkeit') +
|
||||
(SELECT COUNT(ke.id) FROM kontoauszuege_zahlungseingang ke WHERE ke.parameter=v.id AND ke.objekt='verbindlichkeit')) > 0,
|
||||
'$go_zahlung','$stop_zahlung'
|
||||
),
|
||||
if(v.bezahlt,'$go_betragbezahlt','$stop_betragbezahlt'),
|
||||
'</td></tr></table>')";
|
||||
}
|
||||
|
||||
|
|
@ -14862,8 +14927,6 @@ source: "index.php?module=ajax&action=filter&filtername=' . $filter . $extendurl
|
|||
$table->headings[4] = 'Abr. bei Kd';
|
||||
$table->headings[5] = 'sonst. MwSt'; // kann man auch umbenennen in Keine
|
||||
|
||||
|
||||
|
||||
$table->headings[6] = 'MwSt';
|
||||
$table->headings[7] = 'Kommentar';
|
||||
$table->headings[8] = 'Bezahlt';
|
||||
|
|
|
|||
|
|
@ -388,7 +388,7 @@ class EasyTable {
|
|||
{
|
||||
$editcols = array(4,5,6,7);
|
||||
}else{
|
||||
$einkaufspreiseerlaubt = false;
|
||||
$einkaufspreiseerlaubt = true;
|
||||
if($einkaufspreiseerlaubt)
|
||||
{
|
||||
$editcols =array(4,5,6,7,8,9);
|
||||
|
|
|
|||
|
|
@ -41,6 +41,10 @@ class PLACEHOLDER_MODULECLASSNAME {
|
|||
|
||||
$defaultorder = 1;
|
||||
$defaultorderdesc = 0;
|
||||
$aligncenter = array();
|
||||
$alignright = array();
|
||||
$numbercols = array();
|
||||
$sumcol = array();
|
||||
|
||||
$dropnbox = "PLACEHOLDER_DROPNBOX";
|
||||
|
||||
|
|
@ -97,7 +101,7 @@ class PLACEHOLDER_MODULECLASSNAME {
|
|||
$id = $this->app->Secure->GetGET('id');
|
||||
|
||||
// Check if other users are editing this id
|
||||
if($this->app->erp->DisableModul('artikel',$id))
|
||||
if($this->app->erp->DisableModul('PLACEHOLDER_MODULENAME',$id))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
@ -159,11 +163,17 @@ class PLACEHOLDER_MODULECLASSNAME {
|
|||
|
||||
// Load values again from database
|
||||
$dropnbox = "PLACEHOLDER_DROPNBOX";
|
||||
$result = $this->app->DB->SelectArr("PLACEHOLDER_SQL_LIST"." WHERE id=$id");
|
||||
$result = $this->app->DB->SelectArr("PLACEHOLDER_SQL_LIST"." WHERE id=$id");
|
||||
|
||||
foreach ($result[0] as $key => $value) {
|
||||
$this->app->Tpl->Set(strtoupper($key), $value);
|
||||
}
|
||||
|
||||
if (!empty($result)) {
|
||||
$PLACEHOLDER_MODULENAME_from_db = $result[0];
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Add displayed items later
|
||||
|
|
@ -177,7 +187,6 @@ class PLACEHOLDER_MODULECLASSNAME {
|
|||
|
||||
*/
|
||||
|
||||
// $this->SetInput($input);
|
||||
$this->app->Tpl->Parse('PAGE', "PLACEHOLDER_MODULENAME_edit.tpl");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"host": "https://github.com/openxe-org/openxe.git",
|
||||
"host": "http://repo.dbxe.de/dbxe/dbxe.git",
|
||||
"branch": "master"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -163,7 +163,7 @@ function upgrade_main(string $directory,bool $verbose, bool $check_git, bool $do
|
|||
$remote_file_name = $datafolder."/remote.json";
|
||||
$schema_file_name = "db_schema.json";
|
||||
|
||||
echo_out("--------------- OpenXE upgrade ---------------\n");
|
||||
echo_out("--------------- DBXE upgrade ---------------\n");
|
||||
echo_out("--------------- ".date("Y-m-d H:i:s")." ---------------\n");
|
||||
|
||||
//require_once($directory.'/../cronjobs/githash.php');
|
||||
|
|
@ -485,8 +485,8 @@ function upgrade_main(string $directory,bool $verbose, bool $check_git, bool $do
|
|||
}
|
||||
|
||||
function info() {
|
||||
echo_out("OpenXE upgrade tool\n");
|
||||
echo_out("Copyright 2022 (c) OpenXE project\n");
|
||||
echo_out("DBXE upgrade tool\n");
|
||||
echo_out("Copyright 2024 (c) DBXE project\n");
|
||||
echo_out("\n");
|
||||
echo_out("Upgrade files and database\n");
|
||||
echo_out("Options:\n");
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
|
||||
$version="OSS";
|
||||
$version_revision="1.11";
|
||||
$version_revision="1.0.2";
|
||||
$githash = file_get_contents("../githash.txt");
|
||||
if (!empty($githash)) {
|
||||
$version_revision .= " (".substr($githash,0,8).")";
|
||||
|
|
|
|||
4409
www/eproosystem.php
|
|
@ -2676,7 +2676,7 @@ public function NavigationHooks(&$menu)
|
|||
// @refactor in Dateien Modul
|
||||
function AnzahlDateien($objekt,$id)
|
||||
{
|
||||
return $this->app->DB->Select("SELECT COUNT(id) FROM datei_stichwoerter WHERE objekt='$objekt' AND parameter='$id'");
|
||||
return $this->app->DB->Select("SELECT COUNT(ds.id) FROM datei_stichwoerter ds INNER JOIN datei d ON d.id = ds.datei WHERE ds.objekt='$objekt' AND ds.parameter='$id' AND d.geloescht <> 1");
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -7191,6 +7191,7 @@ title: 'Abschicken',
|
|||
$navarray['menu']['admin'][$menu]['sec'][] = array('Lohnabrechnung','lohnabrechnung','list');
|
||||
|
||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Verbindlichkeiten','verbindlichkeit','list');
|
||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Lieferantengutschriften','lieferantengutschrift','list');
|
||||
|
||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Kassenbuch','kasse','list');
|
||||
|
||||
|
|
@ -8605,6 +8606,7 @@ function StandardFirmendatenWerte()
|
|||
$this->AddNeuenFirmendatenWert( 'bezeichnungproformarechnungersatz', 'varchar', '64', '', 'Lieferschein mit Preis', 'Lieferschein mit Preis', 0, 0);
|
||||
$this->AddNeuenFirmendatenWert( 'bezeichnungauftragersatz', 'varchar', '64', '', 'Proformarechnung', 'Proformarechnung', 0, 0);
|
||||
$this->AddNeuenFirmendatenWert( 'bezeichnungrechnungersatz', 'varchar', '64', '', 'Quittung', 'Quittung', 0, 0);
|
||||
$this->AddNeuenFirmendatenWert( 'rechnungersatz_standard', 'int', '1', '', '0', '0', 0, 0);
|
||||
$this->AddNeuenFirmendatenWert( 'bezeichnunglieferscheinersatz', 'varchar', '64', '', 'Alternative Beschriftung', 'Alternative Beschriftung', 0, 0);
|
||||
$this->AddNeuenFirmendatenWert( 'bezeichnungbestellungersatz', 'varchar', '64', '', 'Alternative Beschriftung', 'Alternative Beschriftung', 0, 0);
|
||||
$this->AddNeuenFirmendatenWert( 'footer_zentriert', 'int', '1', '', '0', '0', 0, 0);
|
||||
|
|
@ -8619,6 +8621,7 @@ function StandardFirmendatenWerte()
|
|||
$this->AddNeuenFirmendatenWert( 'next_proformarechnung', 'varchar', '128', '', '', '', 1, 1);
|
||||
$this->AddNeuenFirmendatenWert( 'next_serviceauftrag', 'varchar', '128', '', '', '', 1, 1);
|
||||
$this->AddNeuenFirmendatenWert( 'next_verbindlichkeit', 'varchar', '128', '', '', '', 1, 1);
|
||||
$this->AddNeuenFirmendatenWert( 'next_lieferantengutschrift', 'varchar', '128', '', '', '', 1, 1);
|
||||
$this->AddNeuenFirmendatenWert( 'zahlung_auftrag_sofort_de', 'text', '', '', '', '', 1, 1);
|
||||
$this->AddNeuenFirmendatenWert( 'zahlung_auftrag_de', 'text', '', '', '', '', 1, 1);
|
||||
|
||||
|
|
@ -10516,15 +10519,19 @@ function SendPaypalFromAuftrag($auftrag, $test = false)
|
|||
}
|
||||
}
|
||||
|
||||
if($variables['datum']=="") $variables['datum']=date('d.m.Y');
|
||||
if (is_array($variables)) {
|
||||
if($variables['datum']=="") {
|
||||
$variables['datum']=date('d.m.Y');
|
||||
}
|
||||
|
||||
if(!empty($variables))
|
||||
{
|
||||
foreach($variables as $key=>$value)
|
||||
{
|
||||
$value = $this->UmlauteEntfernen($value);
|
||||
$xml = str_replace("{".strtoupper($key)."}",$value,$xml);
|
||||
}
|
||||
if(!empty($variables))
|
||||
{
|
||||
foreach($variables as $key=>$value)
|
||||
{
|
||||
$value = $this->UmlauteEntfernen($value);
|
||||
$xml = str_replace("{".strtoupper($key)."}",$value,$xml);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// y to z wenn Kein PDF -> also nur bei EPL Drucker - 09.06.2019 BS heute auf 0 gestellt bei deutschen adapterboxen eventuell
|
||||
|
|
@ -13245,6 +13252,11 @@ function SendPaypalFromAuftrag($auftrag, $test = false)
|
|||
return $this->ReplaceANABRELSGSBE("rechnung",$db,$value,$fromform);
|
||||
}
|
||||
|
||||
function ReplaceVerbindlichkeit($db,$value,$fromform)
|
||||
{
|
||||
return $this->ReplaceANABRELSGSBE("verbindlichkeit",$db,$value,$fromform);
|
||||
}
|
||||
|
||||
function ReplaceRetoure($db,$value,$fromform)
|
||||
{
|
||||
return $this->ReplaceANABRELSGSBE('retoure',$db,$value,$fromform);
|
||||
|
|
@ -20668,7 +20680,7 @@ function ChargenMHDAuslagern($artikel, $menge, $lagerplatztyp, $lpid,$typ,$wert,
|
|||
$this->app->DB->Delete("DELETE lager_charge FROM lager_charge INNER JOIN lager_platz ON lager_platz.id=lager_charge.lager_platz
|
||||
WHERE lager_platz.verbrauchslager='1' AND lager_platz.id = '$regal'");
|
||||
|
||||
$this->app->DB->Delete("DELETE FROM lager_seriennummern
|
||||
$this->app->DB->Delete("DELETE lager_seriennummern FROM lager_seriennummern
|
||||
INNER JOIN lager_platz ON lager_platz.id=lager_seriennummern.lager_platz
|
||||
WHERE lager_platz.verbrauchslager='1' AND lager_platz.id = '$regal'");
|
||||
|
||||
|
|
@ -20687,7 +20699,7 @@ function ChargenMHDAuslagern($artikel, $menge, $lagerplatztyp, $lpid,$typ,$wert,
|
|||
$this->app->DB->Delete("DELETE lager_charge FROM lager_charge INNER JOIN lager_platz ON lager_platz.id=lager_charge.lager_platz
|
||||
WHERE lager_platz.verbrauchslager='1'");
|
||||
|
||||
$this->app->DB->Delete("DELETE FROM lager_seriennummern
|
||||
$this->app->DB->Delete("DELETE lager_seriennummern FROM lager_seriennummern
|
||||
INNER JOIN lager_platz ON lager_platz.id=lager_seriennummern.lager_platz
|
||||
WHERE lager_platz.verbrauchslager='1'");
|
||||
|
||||
|
|
@ -21095,7 +21107,7 @@ function ChargenMHDAuslagern($artikel, $menge, $lagerplatztyp, $lpid,$typ,$wert,
|
|||
$pseudolager = !empty($shopAricleArr['pseudolager'])?(float)$shopAricleArr['pseudolager']:0;
|
||||
}
|
||||
else {
|
||||
$pseudolager = '';
|
||||
$pseudolager = 0;
|
||||
}
|
||||
$this->app->erp->RunHook('remote_send_article_list_pseudostorage', 3, $shop, $artikelid, $pseudolager);
|
||||
if(is_numeric($pseudolager) && $pseudolager < 0) {
|
||||
|
|
@ -25529,31 +25541,31 @@ function MailSendFinal($from,$from_name,$to,$to_name,$betreff,$text,$files="",$p
|
|||
{
|
||||
$signaturtext = $this->Signatur($from);
|
||||
if($this->isHTML($signaturtext))
|
||||
$body = utf8_decode(str_replace('\r\n',"\n",$text))."<br>".$signaturtext;
|
||||
$body = str_replace('\r\n',"\n",$text)."<br>".$signaturtext;
|
||||
else
|
||||
$body = utf8_decode(str_replace('\r\n',"\n",$text))."<br>".nl2br($signaturtext);
|
||||
$body = str_replace('\r\n',"\n",$text)."<br>".nl2br($signaturtext);
|
||||
}else{
|
||||
if($projekt > 0 && $this->Projektdaten($projekt,"absendesignatur")!=""){
|
||||
$signaturtext = $this->Projektdaten($projekt,"absendesignatur");
|
||||
if($this->isHTML($signaturtext))
|
||||
$body = utf8_decode(str_replace('\r\n',"\n",$text))."<br><br>".$signaturtext;
|
||||
$body = str_replace('\r\n',"\n",$text)."<br><br>".$signaturtext;
|
||||
else
|
||||
$body = utf8_decode(str_replace('\r\n',"\n",$text))."<br><br>".$this->ReadyForPDF(nl2br($signaturtext));
|
||||
$body = str_replace('\r\n',"\n",$text)."<br><br>".$this->ReadyForPDF(nl2br($signaturtext));
|
||||
}else{
|
||||
if(strlen(trim($this->Signatur($from))) > 0 && $eigenesignatur == 0){
|
||||
$signaturtext = $this->Signatur($from);
|
||||
if($this->isHTML($signaturtext))
|
||||
$body = str_replace('\r\n',"\n",$text)."<br>".$signaturtext;
|
||||
else
|
||||
$body = utf8_decode(str_replace('\r\n',"\n",$text))."<br>".nl2br($signaturtext);
|
||||
$body = str_replace('\r\n',"\n",$text)."<br>".nl2br($signaturtext);
|
||||
}else{
|
||||
$body = utf8_decode(str_replace('\r\n',"\n",$text));
|
||||
$body = str_replace('\r\n',"\n",$text);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
} else {
|
||||
$body = utf8_decode(str_replace('\r\n',"\n",$text));
|
||||
$body = str_replace('\r\n',"\n",$text);
|
||||
}
|
||||
|
||||
{
|
||||
|
|
@ -25798,6 +25810,7 @@ function MailSendFinal($from,$from_name,$to,$to_name,$betreff,$text,$files="",$p
|
|||
$uebersetzung['dokument_artikelnummerkunde']['deutsch'] = "Ihre Artikelnummer";
|
||||
$uebersetzung['dokument_menge']['deutsch'] = "Menge";
|
||||
$uebersetzung['dokument_gesamt']['deutsch'] = "Gesamt";
|
||||
$uebersetzung['dokument_gesamt_optional']['deutsch'] = "Gesamt optional";
|
||||
$uebersetzung['dokument_gesamt_total']['deutsch'] = "Gesamt";
|
||||
$uebersetzung['dokument_mwst']['deutsch'] = "MwSt.";
|
||||
$uebersetzung['dokument_zzglmwst']['deutsch'] = "zzgl. MwSt.";
|
||||
|
|
@ -25815,6 +25828,7 @@ function MailSendFinal($from,$from_name,$to,$to_name,$betreff,$text,$files="",$p
|
|||
$uebersetzung['dokument_ursprungsregion']['deutsch'] = "Ursprungsregion";
|
||||
$uebersetzung['dokument_gewicht']['deutsch'] = "Gewicht";
|
||||
$uebersetzung['dokument_gesamtnetto']['deutsch'] = "Gesamt netto";
|
||||
$uebersetzung['dokument_gesamtnetto_optional']['deutsch'] = "Gesamt netto optional";
|
||||
$uebersetzung['dokument_seite']['deutsch'] = "Seite";
|
||||
$uebersetzung['dokument_seitevon']['deutsch'] = "von";
|
||||
$uebersetzung['dokument_datum']['deutsch'] = "Datum";
|
||||
|
|
@ -26073,7 +26087,14 @@ function MailSendFinal($from,$from_name,$to,$to_name,$betreff,$text,$files="",$p
|
|||
}
|
||||
}
|
||||
else {
|
||||
$this->app->DB->Update("UPDATE firmendaten SET " . $field . "='$value' WHERE id='" . $firmendatenid . "'");
|
||||
|
||||
$column_exists = $this->app->DB->Select("SHOW COLUMNS FROM firmendaten WHERE field = '".$field."'");
|
||||
|
||||
if ($column_exists) {
|
||||
$this->app->DB->Update("UPDATE firmendaten SET " . $field . "='$value' WHERE id='" . $firmendatenid . "'");
|
||||
} else {
|
||||
$this->AddNeuenFirmendatenWert($field, $typ, $typ1, $typ2, $value, $default_value, $default_null, $darf_null);
|
||||
}
|
||||
}
|
||||
$db = $this->app->Conf->WFdbname;
|
||||
if(!empty($this->firmendaten[$db])) {
|
||||
|
|
@ -26850,7 +26871,9 @@ function Firmendaten($field,$projekt="")
|
|||
$tmp[$extra[$i]['type']] = $extra[$i]['bezeichnung'];
|
||||
}
|
||||
if($zahlungsweise && empty($tmp[$zahlungsweise]))$tmp[$zahlungsweise] = ucfirst($zahlungsweise);
|
||||
asort($tmp);
|
||||
if (!empty($tmp)) {
|
||||
asort($tmp);
|
||||
}
|
||||
return $tmp;
|
||||
// return array('rechnung'=>'Rechnung','vorkasse'=>'Vorkasse','nachnahme'=>'Nachnahme','kreditkarte'=>'Kreditkarte','einzugsermaechtigung'=>'Einzugsermaechtigung','bar'=>'Bar','paypal'=>'PayPal','lastschrift'=>'Lastschrift');
|
||||
}
|
||||
|
|
@ -27033,7 +27056,7 @@ function Firmendaten($field,$projekt="")
|
|||
'zahlung_amazon_bestellung','zahlung_billsafe','zahlung_sofortueberweisung','zahlung_secupay','zahlung_eckarte','zeiterfassung_schliessen','zeiterfassung_pflicht',
|
||||
'zahlung_kreditkarte','zahlung_nachnahme','zahlung_ratenzahlung','knickfalz','begrenzen_artikeltabelle','begrenzen_adressetabelle','begrenzen_belege','schnellsuche','schnellsuchecount','versandmail_zwischenspeichern','keinhauptmenurahmen','bordertabnav','steuerfrei_inland_ausblenden','auftragexplodieren_unterstuecklisten',
|
||||
'standardaufloesung','immerbruttorechnungen','immernettorechnungen','bestellvorschlaggroessernull','erweiterte_positionsansicht','schnellanlegen','kleinunternehmer','steuerspalteausblenden','api_enable','api_importwarteschlange','warnung_doppelte_nummern','warnung_doppelte_seriennummern','wareneingang_zwischenlager','bestellungohnepreis','zahlung_lastschrift_konditionen','porto_berechnen','breite_artikelbeschreibung','deviceenable','auftrag_eantab','bestellungmitartikeltext','bestellungeigeneartikelnummer','bestellunglangeartikelnummern','steuer_standardkonto_aufwendungen',
|
||||
'iconset_dunkel','api_cleanutf8','mahnwesenmitkontoabgleich','briefhtml','absenderunterstrichen','seite_von_ausrichtung_relativ','wareneingang_gross','datatables_export_button_flash','viernachkommastellen_belege','stornorechnung_standard','angebotersatz_standard','geburtstagekalender','footer_zentriert','auftragmarkierenegsaldo','wareneingangauftragzubestellung','freifelderimdokument','zeiterfassung_anderemitarbeiter','zeiterfassung_beschreibungssperre','zeiterfassung_ort','zeiterfassung_kommentar','zeiterfassung_erweitert','footer_reihenfolge_angebot_aktivieren','footer_reihenfolge_auftrag_aktivieren','footer_reihenfolge_rechnung_aktivieren','footer_reihenfolge_gutschrift_aktivieren','footer_reihenfolge_lieferschein_aktivieren','footer_reihenfolge_bestellung_aktivieren','position_quantity_change_price_update',
|
||||
'iconset_dunkel','api_cleanutf8','mahnwesenmitkontoabgleich','briefhtml','absenderunterstrichen','seite_von_ausrichtung_relativ','wareneingang_gross','datatables_export_button_flash','viernachkommastellen_belege','stornorechnung_standard','angebotersatz_standard','rechnungersatz_standard','geburtstagekalender','footer_zentriert','auftragmarkierenegsaldo','wareneingangauftragzubestellung','freifelderimdokument','zeiterfassung_anderemitarbeiter','zeiterfassung_beschreibungssperre','zeiterfassung_ort','zeiterfassung_kommentar','zeiterfassung_erweitert','footer_reihenfolge_angebot_aktivieren','footer_reihenfolge_auftrag_aktivieren','footer_reihenfolge_rechnung_aktivieren','footer_reihenfolge_gutschrift_aktivieren','footer_reihenfolge_lieferschein_aktivieren','footer_reihenfolge_bestellung_aktivieren','position_quantity_change_price_update',
|
||||
'beleg_pos_ean','beleg_pos_charge','beleg_pos_mhd','beleg_pos_sn','beleg_pos_zolltarifnummer',
|
||||
'schnellanlegen_ohnefreigabe','langeartikelnummern','noauth','belege_subpositionen',
|
||||
'belege_subpositionenstuecklisten','briefpapier_ohnedoppelstrich','bearbeiteremailimdokument',
|
||||
|
|
@ -27717,7 +27740,7 @@ function Firmendaten($field,$projekt="")
|
|||
$allowedtypes = ['angebot', 'auftrag', 'rechnung', 'lieferschein', 'arbeitsnachweis', 'reisekosten',
|
||||
'bestellung', 'gutschrift', 'kundennummer', 'lieferantennummer', 'mitarbeiternummer', 'waren',
|
||||
'produktion', 'sonstiges', 'anfrage', 'artikelnummer', 'kalkulation', 'preisanfrage', 'proformarechnung',
|
||||
'retoure', 'verbindlichkeit', 'goodspostingdocument', 'receiptdocument'];
|
||||
'retoure', 'verbindlichkeit','lieferantengutschrift', 'goodspostingdocument', 'receiptdocument'];
|
||||
|
||||
$dbfield = "next_$type";
|
||||
$belegnr = $this->app->DB->Select("SELECT $dbfield FROM projekt WHERE id='$projekt' LIMIT 1");
|
||||
|
|
@ -27843,6 +27866,11 @@ function Firmendaten($field,$projekt="")
|
|||
if($belegnr == "0" || $belegnr=="") $belegnr = 10000;
|
||||
$newbelegnr = $this->CalcNextNummer($belegnr);
|
||||
break;
|
||||
case "lieferantengutschrift":
|
||||
$belegnr = $this->Firmendaten("next_lieferantengutschrift");
|
||||
if($belegnr == "0" || $belegnr=="") $belegnr = 20000;
|
||||
$newbelegnr = $this->CalcNextNummer($belegnr);
|
||||
break;
|
||||
case 'receiptdocument':
|
||||
$belegnr = $this->Firmendaten('next_receiptdocument');
|
||||
if($belegnr == '0' || $belegnr=='') {
|
||||
|
|
@ -34837,7 +34865,7 @@ function Firmendaten($field,$projekt="")
|
|||
$projekt = $orderRow['projekt'];
|
||||
$differenztage = $this->Projektdaten($projekt,'differenz_auslieferung_tage');
|
||||
if($differenztage<0 || empty($differenztage)) {
|
||||
$differenztage=2;
|
||||
$differenztage=0;
|
||||
}
|
||||
$lieferdatum = $orderRow['lieferdatum'];
|
||||
$land = $orderRow['land'];
|
||||
|
|
@ -35375,6 +35403,7 @@ function Firmendaten($field,$projekt="")
|
|||
{
|
||||
case 'bestellung':
|
||||
case 'anfrage':
|
||||
case 'verbindlichkeit':
|
||||
$aufwendung = true;
|
||||
break;
|
||||
}
|
||||
|
|
@ -37298,7 +37327,7 @@ function Firmendaten($field,$projekt="")
|
|||
|
||||
function GetDateiSubjektObjekt($subjekt,$objekt,$parameter)
|
||||
{
|
||||
$dateien = $this->app->DB->SelectArr("SELECT datei FROM datei_stichwoerter WHERE subjekt LIKE '$subjekt' AND objekt LIKE '$objekt' AND parameter='$parameter' GROUP by datei");
|
||||
$dateien = $this->app->DB->SelectArr("SELECT datei FROM datei_stichwoerter INNER JOIN datei d on d.id = datei WHERE subjekt LIKE '$subjekt' AND objekt LIKE '$objekt' AND parameter='$parameter' AND d.geloescht <> 1 GROUP by datei");
|
||||
if(empty($dateien)) {
|
||||
return null;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1586,14 +1586,20 @@ class Remote
|
|||
$data[$i]['crosssellingartikel'] = [];
|
||||
}
|
||||
|
||||
$gegenseitigzugewiesen = $this->app->DB->SelectArr("SELECT a.id, a.nummer, ak.bezeichnung as kategorie, a.name_de, a.name_en, ca.art, ca.gegenseitigzuweisen, af.nummer AS fremdnummer
|
||||
|
||||
$sql =
|
||||
|
||||
"SELECT a.id, a.nummer, ak.bezeichnung as kategorie, a.name_de, a.name_en, ca.art, ca.gegenseitigzuweisen, af.nummer AS fremdnummer
|
||||
FROM crossselling_artikel ca
|
||||
JOIN artikel a ON ca.artikel = a.id
|
||||
LEFT JOIN artikelkategorien ak ON CONCAT(ak.id,'_kat') = a.typ
|
||||
LEFT JOIN (SELECT af.id,af.nummer,af.artikel,af.shopid FROM artikelnummer_fremdnummern af JOIN (SELECT artikel, MAX(shopid) AS maxid FROM artikelnummer_fremdnummern WHERE aktiv=1 AND (shopid=0 OR shopid=2) GROUP BY artikel) x ON x.artikel = af.artikel AND af.shopid=x.maxid WHERE af.aktiv = 1) af ON af.artikel = a.id
|
||||
LEFT JOIN (SELECT nummer,artikel FROM artikelnummer_fremdnummern WHERE shopid=0 OR shopid='$id' ORDER BY shopid DESC LIMIT 1 ) af2 ON af2.artikel = a.id
|
||||
WHERE ca.crosssellingartikel='" . $tmp->GetId() . "' AND ca.gegenseitigzuweisen=1 AND (ca.shop='$id' OR ca.shop='0')
|
||||
LEFT JOIN (SELECT nummer,artikel FROM artikelnummer_fremdnummern WHERE shopid=0 OR shopid='$id' ORDER BY shopid DESC LIMIT 1 ) af ON af.artikel = a.id
|
||||
GROUP BY ca.artikel, ca.art");
|
||||
GROUP BY ca.artikel, ca.art";
|
||||
|
||||
$gegenseitigzugewiesen = $this->app->DB->SelectArr($sql);
|
||||
|
||||
if (!empty($gegenseitigzugewiesen)) {
|
||||
foreach ($gegenseitigzugewiesen as $gegenseitigzugewiesenercrosssellingartikel) {
|
||||
$data[$i]['crosssellingartikel'][] = $gegenseitigzugewiesenercrosssellingartikel;
|
||||
|
|
|
|||
|
|
@ -41,8 +41,15 @@ class AngebotPDF extends BriefpapierCustom {
|
|||
{
|
||||
// pruefe ob es mehr als ein steuersatz gibt // wenn ja dann darf man sie nicht ausblenden
|
||||
$check = $this->app->erp->SteuerAusBeleg($this->doctype,$id);
|
||||
if(!empty($check)?count($check):0>1)$this->ust_spalteausblende=false;
|
||||
else $this->ust_spalteausblende=true;
|
||||
|
||||
$this->ust_spalteausblende=false;
|
||||
|
||||
if(!empty($check)) {
|
||||
if (count($check) == 1) {
|
||||
$this->ust_spalteausblende=true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$briefpapier_bearbeiter_ausblenden = $this->app->erp->Firmendaten('briefpapier_bearbeiter_ausblenden');
|
||||
|
|
@ -491,30 +498,29 @@ class AngebotPDF extends BriefpapierCustom {
|
|||
"rabatt"=>$value['rabatt'],
|
||||
"steuertext"=>$value['steuertext']));
|
||||
if($positionenkaufmaenischrunden == 3){
|
||||
$netto_gesamt = $value['menge'] * round($value['preis'] - ($value['preis'] / 100 * $value['rabatt']),2);
|
||||
}else{
|
||||
if (!$value['nicht_einrechnen']) {
|
||||
$netto_gesamt = $value['menge'] * round($value['preis'] - ($value['preis'] / 100 * $value['rabatt']),2);
|
||||
}
|
||||
}else if (!$value['nicht_einrechnen']) {
|
||||
$netto_gesamt = $value['menge'] * ($value['preis'] - ($value['preis'] / 100 * $value['rabatt']));
|
||||
}
|
||||
if($positionenkaufmaenischrunden)
|
||||
{
|
||||
$netto_gesamt = round($netto_gesamt, 2);
|
||||
}
|
||||
if($value['optional']!="1"){
|
||||
if(!isset($summen[$value['steuersatz']])) {
|
||||
$summen[$value['steuersatz']] = 0;
|
||||
}
|
||||
if($value['optional']!="1"){
|
||||
if($value['explodiert_parent'] == 0 || !$berechnen_aus_teile)
|
||||
{
|
||||
$summe = $summe + $netto_gesamt;
|
||||
if(!isset($summen[$value['steuersatz']]))$summen[$value['steuersatz']] = 0;
|
||||
$summen[$value['steuersatz']] += ($netto_gesamt/100)*$value['steuersatz'];
|
||||
$summe = $summe + $netto_gesamt;
|
||||
$gesamtsteuern +=($netto_gesamt/100)*$value['steuersatz'];
|
||||
}
|
||||
/*
|
||||
if($value['umsatzsteuer']=="" || $value['umsatzsteuer']=="normal")
|
||||
{
|
||||
$summeV = $summeV + (($netto_gesamt/100)*$this->app->erp->GetSteuersatzNormal(false,$id,"angebot"));
|
||||
}
|
||||
else {
|
||||
$summeR = $summeR + (($netto_gesamt/100)*$this->app->erp->GetSteuersatzErmaessigt(false,$id,"angebot"));
|
||||
}*/
|
||||
}
|
||||
} else {
|
||||
$summe_netto_optional += $netto_gesamt;
|
||||
$steuern_optional +=($netto_gesamt/100)*$value['steuersatz'];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -536,7 +542,7 @@ class AngebotPDF extends BriefpapierCustom {
|
|||
|
||||
if($this->app->erp->AngebotMitUmsatzeuer($id))
|
||||
{
|
||||
$this->setTotals(array("totalArticles"=>$summe,"total"=>$summe + $gesamtsteuern,"summen"=>$summen,"totalTaxV"=>0,"totalTaxR"=>0));
|
||||
$this->setTotals(array("totalArticles"=>$summe,"total"=>$summe + $gesamtsteuern,"summen"=>$summen,"totalTaxV"=>0,"totalTaxR"=>0,"optional"=>$summe_netto_optional+$steuern_optional,"optional_netto"=>$summe_netto_optional));
|
||||
//$this->setTotals(array("totalArticles"=>$summe,"totalTaxV"=>$summeV,"totalTaxR"=>$summeR,"total"=>$summe+$summeV+$summeR));
|
||||
} else {
|
||||
$this->setTotals(array("totalArticles"=>$summe,"total"=>$summe));
|
||||
|
|
|
|||
|
|
@ -43,8 +43,13 @@ class AuftragPDF extends BriefpapierCustom {
|
|||
{
|
||||
// pruefe ob es mehr als ein steuersatz gibt // wenn ja dann darf man sie nicht ausblenden
|
||||
$check = $this->app->erp->SteuerAusBeleg($this->doctype,$id);
|
||||
if(!empty($check)?count($check):0>1)$this->ust_spalteausblende=false;
|
||||
else $this->ust_spalteausblende=true;
|
||||
$this->ust_spalteausblende=false;
|
||||
|
||||
if(!empty($check)) {
|
||||
if (count($check) == 1) {
|
||||
$this->ust_spalteausblende=true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$briefpapier_bearbeiter_ausblenden = $this->app->erp->Firmendaten('briefpapier_bearbeiter_ausblenden');
|
||||
|
|
|
|||
|
|
@ -1,406 +1,406 @@
|
|||
<?php
|
||||
/*
|
||||
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*
|
||||
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
|
||||
*
|
||||
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
|
||||
*
|
||||
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
|
||||
* to obtain the text of the corresponding license version.
|
||||
*
|
||||
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
/*
|
||||
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*
|
||||
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
|
||||
*
|
||||
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
|
||||
*
|
||||
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
|
||||
* to obtain the text of the corresponding license version.
|
||||
*
|
||||
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
if(!class_exists('BriefpapierCustom'))
|
||||
{
|
||||
class BriefpapierCustom extends Briefpapier
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class BestellungPDF extends BriefpapierCustom {
|
||||
public $doctype;
|
||||
|
||||
function __construct($app,$projekt="")
|
||||
{
|
||||
$this->app=$app;
|
||||
//parent::Briefpapier();
|
||||
$this->doctype="bestellung";
|
||||
$this->doctypeOrig="Bestellung";
|
||||
$this->bestellungohnepreis=0;
|
||||
parent::__construct($this->app,$projekt);
|
||||
}
|
||||
|
||||
|
||||
function GetBestellung($id)
|
||||
{
|
||||
$this->doctypeid = $id;
|
||||
$briefpapier_bearbeiter_ausblenden = $this->app->erp->Firmendaten('briefpapier_bearbeiter_ausblenden');
|
||||
$this->setRecipientLieferadresse($id,"bestellung");
|
||||
|
||||
$data = $this->app->DB->SelectRow(
|
||||
"SELECT adresse,projekt, sprache, angebot, ustid, keineartikelnummern, bestellbestaetigung, artikelnummerninfotext,
|
||||
einkaeufer, belegnr, freitext, bodyzusatz, ohne_briefpapier, abweichendebezeichnung, bestellungohnepreis,
|
||||
kundennummerlieferant AS kundennummer, DATE_FORMAT(datum,'%d.%m.%Y') AS datum, DATE_FORMAT(datum,'%Y%m%d') as datum2,
|
||||
lieferantennummer
|
||||
FROM bestellung
|
||||
WHERE id='$id'
|
||||
LIMIT 1"
|
||||
);
|
||||
extract($data,EXTR_OVERWRITE);
|
||||
$adresse = $data['adresse'];
|
||||
$sprache = $data['sprache'];
|
||||
$angebot = $data['angebot'];
|
||||
$ustid = $data['ustid'];
|
||||
$projekt = $data['projekt'];
|
||||
$keineartikelnummern = $data['keineartikelnummern'];
|
||||
$bestellbestaetigung = $data['bestellbestaetigung'];
|
||||
$artikelnummerninfotext = $data['artikelnummerninfotext'];
|
||||
$einkaeufer = $data['einkaeufer'];
|
||||
$belegnr = $data['belegnr'];
|
||||
$freitext = $data['freitext'];
|
||||
$bodyzusatz = $data['bodyzusatz'];
|
||||
$ohne_briefpapier = $data['ohne_briefpapier'];
|
||||
$abweichendebezeichnung = $data['abweichendebezeichnung'];
|
||||
$bestellungohnepreis = $data['bestellungohnepreis'];
|
||||
$kundennummer = $data['kundennummer'];
|
||||
$datum = $data['datum'];
|
||||
$datum2 = $data['datum2'];
|
||||
$lieferantennummer = $data['lieferantennummer'];
|
||||
|
||||
$this->bestellungohnepreis=$data['bestellungohnepreis'];
|
||||
|
||||
if(empty($kundennummer)) {
|
||||
$kundennummer = $this->app->DB->Select("SELECT kundennummerlieferant FROM adresse WHERE id='$adresse' LIMIT 1");
|
||||
}
|
||||
if($einkaeufer=='') {
|
||||
$einkaeufer = $this->app->DB->Select("SELECT bearbeiter FROM bestellung WHERE id='$id' LIMIT 1");
|
||||
}
|
||||
if(empty($sprache)) {
|
||||
$sprache = $this->app->DB->Select("SELECT sprache FROM adresse WHERE id='$adresse' LIMIT 1");
|
||||
}
|
||||
|
||||
$kundennummer = $this->app->erp->ReadyForPDF($kundennummer);
|
||||
$einkaeufer = $this->app->erp->ReadyForPDF($einkaeufer);
|
||||
$angebot = $this->app->erp->ReadyForPDF($angebot);
|
||||
$this->app->erp->BeschriftungSprache($sprache);
|
||||
$this->sprache = $sprache;
|
||||
|
||||
$projektabkuerzung = $this->app->DB->Select(sprintf('SELECT abkuerzung FROM projekt WHERE id = %d', $projekt));
|
||||
|
||||
if($this->bestellungohnepreis) {
|
||||
$this->nichtsichtbar_summe = 1;
|
||||
}
|
||||
|
||||
if($ohne_briefpapier=='1') {
|
||||
$this->logofile = '';
|
||||
$this->briefpapier='';
|
||||
$this->briefpapier2='';
|
||||
}
|
||||
|
||||
if($belegnr=='' || $belegnr=='0') {
|
||||
$belegnr = '- '.$this->app->erp->Beschriftung('dokument_entwurf');
|
||||
}
|
||||
|
||||
$this->doctypeOrig=$this->app->erp->Beschriftung('dokument_bestellung')." $belegnr";
|
||||
|
||||
if($abweichendebezeichnung)
|
||||
{
|
||||
$this->doctypeOrig=($this->app->erp->Beschriftung('bezeichnungbestellungersatz')?$this->app->erp->Beschriftung('bezeichnungbestellungersatz'):$this->app->erp->Beschriftung('dokument_bestellung'))." $belegnr";
|
||||
}
|
||||
else {
|
||||
$this->doctypeOrig=$this->app->erp->Beschriftung('dokument_bestellung')." $belegnr";
|
||||
}
|
||||
|
||||
if($angebot=='') {
|
||||
$angebot = '-';
|
||||
}
|
||||
if($kundennummer=='') {
|
||||
$kundennummer= '-';
|
||||
}
|
||||
|
||||
if(!$this->app->erp->BestellungMitUmsatzeuer($id)) {
|
||||
$this->ust_befreit=true;
|
||||
}
|
||||
|
||||
/** @var \Xentral\Modules\Company\Service\DocumentCustomizationService $service */
|
||||
$service = $this->app->Container->get('DocumentCustomizationService');
|
||||
if($block = $service->findActiveBlock('corr', 'suppliers_order', $projekt)) {
|
||||
$sCD = $service->parseBlockAsArray($this->getLanguageCodeFrom($this->sprache),'corr', 'suppliers_order',[
|
||||
'BESTELLNUMMER' => $belegnr,
|
||||
'DATUM' => $datum,
|
||||
'KUNDENNUMMER' => $kundennummer,
|
||||
'EINKAEUFER' => $einkaeufer,
|
||||
'LIEFERANTENNUMMER' => $lieferantennummer,
|
||||
'PROJEKT' => $projektabkuerzung,
|
||||
'EMAIL' => '',
|
||||
'TELEFON' => '',
|
||||
'BEARBEITER' => '',
|
||||
'VERTRIEB' => '',
|
||||
], $projekt);
|
||||
if(!empty($sCD)) {
|
||||
switch($block['fontstyle']) {
|
||||
case 'f':
|
||||
$this->setBoldCorrDetails($sCD);
|
||||
break;
|
||||
case 'i':
|
||||
$this->setItalicCorrDetails($sCD);
|
||||
break;
|
||||
case 'fi':
|
||||
$this->setItalicBoldCorrDetails($sCD);
|
||||
break;
|
||||
default:
|
||||
$this->setCorrDetails($sCD, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
if($briefpapier_bearbeiter_ausblenden){
|
||||
$this->setCorrDetails(array($this->app->erp->Beschriftung("dokument_bestellung_angebotnummer") => $angebot,
|
||||
$this->app->erp->Beschriftung("dokument_bestellung_unserekundennummer") => $kundennummer,
|
||||
$this->app->erp->Beschriftung("dokument_bestelldatum") => $datum));
|
||||
}else{
|
||||
$this->setCorrDetails(array($this->app->erp->Beschriftung("dokument_bestellung_angebotnummer") => $angebot,
|
||||
$this->app->erp->Beschriftung("dokument_bestellung_unserekundennummer") => $kundennummer,
|
||||
$this->app->erp->Beschriftung("dokument_bestelldatum") => $datum,
|
||||
$this->app->erp->Beschriftung("dokument_bestellung_einkauf") => $einkaeufer));
|
||||
}
|
||||
}
|
||||
|
||||
if(!$this->app->erp->BestellungMitUmsatzeuer($id) && $ustid!='' ) {
|
||||
//$steuer = "\nSteuerfreie innergemeinschaftliche Lieferung. Ihre USt-IdNr. $ustid Land: $land";
|
||||
$this->ust_befreit=true;
|
||||
if($keinsteuersatz!='1') {
|
||||
$steuer = $this->app->erp->Beschriftung('eu_lieferung_vermerk');
|
||||
}
|
||||
$steuer = str_replace('{USTID}',$ustid,$steuer);
|
||||
$steuer = str_replace('{LAND}',$land,$steuer);
|
||||
}
|
||||
|
||||
$body=$this->app->erp->Beschriftung('bestellung_header');
|
||||
if($bodyzusatz!='') {
|
||||
$body=$body."\r\n".$bodyzusatz;
|
||||
}
|
||||
$body = $this->app->erp->ParseUserVars('bestellung',$id,$body);
|
||||
|
||||
if($this->app->erp->Firmendaten('footer_reihenfolge_bestellung_aktivieren')=='1')
|
||||
{
|
||||
$footervorlage = $this->app->erp->Firmendaten('footer_reihenfolge_bestellung');
|
||||
if($footervorlage==''){
|
||||
$footervorlage = "{FOOTERFREITEXT}\r\n{FOOTERTEXTVORLAGEBESTELLUNG}";
|
||||
}
|
||||
$footervorlage = str_replace('{FOOTERFREITEXT}',$freitext,$footervorlage);
|
||||
$footervorlage = str_replace('{FOOTERTEXTVORLAGEBESTELLUNG}',$this->app->erp->Beschriftung("bestellung_footer"),$footervorlage);
|
||||
$footervorlage = $this->app->erp->ParseUserVars("bestellung",$id,$footervorlage);
|
||||
$footer = $footervorlage;
|
||||
} else {
|
||||
$footer = $freitext."\r\n".$this->app->erp->ParseUserVars('bestellung',$id,$this->app->erp->Beschriftung("bestellung_footer"));
|
||||
}
|
||||
|
||||
if($bestellbestaetigung) {
|
||||
$this->setTextDetails(array(
|
||||
"body"=>$body,
|
||||
"footer"=>$footer."\r\n".$this->app->erp->Beschriftung('dokument_bestellung_bestaetigung')));
|
||||
} else
|
||||
{
|
||||
$this->setTextDetails(array(
|
||||
"body"=>$body,
|
||||
"footer"=>$footer));
|
||||
}
|
||||
$artikel = $this->app->DB->SelectArr(
|
||||
"SELECT bp.*, art.ean AS artean, art.nummer AS artnummer, art.herstellernummer AS artherstellernummer,
|
||||
art.einheit as arteinheit, art.hersteller AS arthersteller
|
||||
FROM bestellung_position AS bp
|
||||
LEFT JOIN artikel AS art ON bp.artikel = art.id
|
||||
WHERE bp.bestellung='$id'
|
||||
ORDER By bp.sort"
|
||||
);
|
||||
if(empty($artikel)) {
|
||||
$artikel = [];
|
||||
}
|
||||
$steuersatzV = $this->app->erp->GetSteuersatzNormal(false,$id,'bestellung');
|
||||
$steuersatzR = $this->app->erp->GetSteuersatzErmaessigt(false,$id,'bestellung');
|
||||
$gesamtsteuern = 0;
|
||||
$mitumsatzsteuer = $this->app->erp->BestellungMitUmsatzeuer($id);
|
||||
//$waehrung = $this->app->DB->Select("SELECT waehrung FROM bestellung_position WHERE bestellung='$id' LIMIT 1");
|
||||
$summe = 0;
|
||||
foreach($artikel as $key=>$value) {
|
||||
$lieferdatum = $this->app->String->Convert($value['lieferdatum'],'%1-%2-%3','%3.%2.%1');
|
||||
|
||||
if($lieferdatum==='00.00.0000') {
|
||||
$lieferdatum ='';
|
||||
}//$this->app->erp->Beschriftung("dokument_lieferdatum_sofort");
|
||||
|
||||
if($value['umsatzsteuer'] !== 'ermaessigt' && $value['umsatzsteuer'] !== 'befreit') {
|
||||
$value['umsatzsteuer'] = 'normal';
|
||||
}
|
||||
$tmpsteuersatz = null;
|
||||
$tmpsteuertext = null;
|
||||
$this->app->erp->GetSteuerPosition('bestellung', $value['id'],$tmpsteuersatz, $tmpsteuertext);
|
||||
if($value['steuersatz'] === null || $value['steuersatz'] < 0) {
|
||||
if($value['umsatzsteuer'] === 'ermaessigt') {
|
||||
$value['steuersatz'] = $steuersatzR;
|
||||
}
|
||||
elseif($value['umsatzsteuer'] === 'befreit') {
|
||||
$value['steuersatz'] = 0;
|
||||
}else{
|
||||
$value['steuersatz'] = $steuersatzV;
|
||||
}
|
||||
if($tmpsteuersatz !== null) {
|
||||
$value['steuersatz'] = $tmpsteuersatz;
|
||||
}
|
||||
}
|
||||
if($tmpsteuertext && !$value['steuertext']) {
|
||||
$value['steuertext'] = $tmpsteuertext;
|
||||
}
|
||||
if(!$mitumsatzsteuer) {
|
||||
$value['steuersatz'] = 0;
|
||||
}
|
||||
// if(!$this->app->erp->BestellungMitUmsatzeuer($id)) $value[umsatzsteuer] = "";
|
||||
|
||||
if($keineartikelnummern==1) {
|
||||
$value['bestellnummer'] = $this->app->erp->Beschriftung('dokument_bestellung_keineartikelnummer');
|
||||
}
|
||||
|
||||
$ohne_artikeltext = $this->app->DB->Select("SELECT ohne_artikeltext FROM ".$this->table." WHERE id='".$this->id."' LIMIT 1");
|
||||
if($ohne_artikeltext=='1') {
|
||||
$value['beschreibung']='';
|
||||
}
|
||||
|
||||
$value['artikelnummer']= $value['artnummer'];// $this->app->DB->Select("SELECT nummer FROM artikel WHERE id='".$value['artikel']."' LIMIT 1");
|
||||
if($artikelnummerninfotext) {
|
||||
if($value['bestellnummer']!=''){
|
||||
$value['beschreibung'] = $value['beschreibung'] . "\n" . $this->app->erp->Beschriftung('dokument_bestellung_bestellnummer') . ': ' . $value['bestellnummer'];
|
||||
}
|
||||
$value['bestellnummer']=$value['artikelnummer'];
|
||||
} else {
|
||||
if($value['artikelnummer']!=''){
|
||||
$value['beschreibung'] = $value['beschreibung'] . "\n" . $this->app->erp->Beschriftung('dokument_bestellung_unsereartikelnummer') . ': ' . $value['artikelnummer'];
|
||||
}
|
||||
}
|
||||
|
||||
if($value['vpe'] > 1 && is_numeric($value['vpe'])) {
|
||||
$value['beschreibung'] = $value['beschreibung']."\n".$this->app->erp->Beschriftung('dokument_bestellung_mengeinvpe').': '.$value['vpe'];
|
||||
//umschalbar in der Zukunft
|
||||
$value['preis'] = $value['preis']*$value['menge']/($value['menge'] / $value['vpe']);
|
||||
$value['menge'] = round($value['menge'] / $value['vpe'],2);
|
||||
$value['einheit'] = "VPE";
|
||||
}
|
||||
elseif((String)$value['einheit'] === '') {
|
||||
$value['einheit'] = $value['arteinheit'];// $this->app->DB->Select("SELECT einheit FROM artikel WHERE id = '".$value['artikel']."' LIMIT 1");
|
||||
if((String)$value['einheit'] === '') {
|
||||
$value['einheit'] = $this->app->erp->Firmendaten('artikeleinheit_standard');
|
||||
}
|
||||
}
|
||||
|
||||
if($value['beschreibung']!='') {
|
||||
$newline="\n";
|
||||
}
|
||||
|
||||
if($this->bestellungohnepreis) {
|
||||
$value['preis'] = '-';
|
||||
}
|
||||
|
||||
if($value['waehrung']!='' && $value['waehrung']!=$this->waehrung){
|
||||
$this->waehrung = $value['waehrung'];
|
||||
}
|
||||
|
||||
$value['menge'] = (float)$value['menge'];
|
||||
$value['herstellernummer'] = $value['artherstellernummer'];// $this->app->DB->Select("SELECT herstellernummer FROM artikel WHERE id='".$value['artikel']."' LIMIT 1");
|
||||
$value['hersteller'] = $value['arthersteller'];//$this->app->DB->Select("SELECT hersteller FROM artikel WHERE id='".$value['artikel']."' LIMIT 1");
|
||||
|
||||
$this->addItem(
|
||||
array(
|
||||
'belegposition'=>$value['id'],
|
||||
'artikel'=>$value['artikel'],
|
||||
'currency'=>$value['waehrung'],
|
||||
'amount'=>$value['menge'],
|
||||
'price'=>$value['preis'],
|
||||
'tax'=>$value['umsatzsteuer'],'steuersatz'=>$value['steuersatz'],
|
||||
'steuertext'=>$value['steuertext'],
|
||||
'vpe'=>$value['vpe'],
|
||||
'unit'=>$value['einheit'],
|
||||
'itemno'=>$value['bestellnummer'],
|
||||
'desc'=>$value['beschreibung'].($lieferdatum!=''?$newline.$this->app->erp->Beschriftung('dokument_lieferdatum').': '.$lieferdatum:''),
|
||||
'hersteller'=>$value['hersteller'],
|
||||
'herstellernummer'=>$value['herstellernummer'],
|
||||
'freifeld1'=>$value['freifeld1'],
|
||||
'freifeld2'=>$value['freifeld2'],
|
||||
'freifeld3'=>$value['freifeld3'],
|
||||
'freifeld4'=>$value['freifeld4'],
|
||||
'freifeld5'=>$value['freifeld5'],
|
||||
'freifeld6'=>$value['freifeld6'],
|
||||
'freifeld7'=>$value['freifeld7'],
|
||||
'freifeld8'=>$value['freifeld8'],
|
||||
'freifeld9'=>$value['freifeld9'],
|
||||
'freifeld10'=>$value['freifeld10'],
|
||||
'freifeld11'=>$value['freifeld11'],
|
||||
'freifeld12'=>$value['freifeld12'],
|
||||
'freifeld13'=>$value['freifeld13'],
|
||||
'freifeld14'=>$value['freifeld14'],
|
||||
'freifeld15'=>$value['freifeld15'],
|
||||
'freifeld16'=>$value['freifeld16'],
|
||||
'freifeld17'=>$value['freifeld17'],
|
||||
'freifeld18'=>$value['freifeld18'],
|
||||
'freifeld19'=>$value['freifeld19'],
|
||||
'freifeld20'=>$value['freifeld20'],
|
||||
'freifeld21'=>$value['freifeld21'],
|
||||
'freifeld22'=>$value['freifeld22'],
|
||||
'freifeld23'=>$value['freifeld23'],
|
||||
'freifeld24'=>$value['freifeld24'],
|
||||
'freifeld25'=>$value['freifeld25'],
|
||||
'freifeld26'=>$value['freifeld26'],
|
||||
'freifeld27'=>$value['freifeld27'],
|
||||
'freifeld28'=>$value['freifeld28'],
|
||||
'freifeld29'=>$value['freifeld29'],
|
||||
'freifeld30'=>$value['freifeld30'],
|
||||
'freifeld31'=>$value['freifeld31'],
|
||||
'freifeld32'=>$value['freifeld32'],
|
||||
'freifeld33'=>$value['freifeld33'],
|
||||
'freifeld34'=>$value['freifeld34'],
|
||||
'freifeld35'=>$value['freifeld35'],
|
||||
'freifeld36'=>$value['freifeld36'],
|
||||
'freifeld37'=>$value['freifeld37'],
|
||||
'freifeld38'=>$value['freifeld38'],
|
||||
'freifeld39'=>$value['freifeld39'],
|
||||
'freifeld40'=>$value['freifeld40'],
|
||||
"name"=>$value['bezeichnunglieferant']
|
||||
)
|
||||
);
|
||||
|
||||
$netto_gesamt = $value['menge']*$value['preis'];
|
||||
$summe += $netto_gesamt;
|
||||
if(!isset($summen[$value['steuersatz']])) {
|
||||
$summen[$value['steuersatz']] = 0;
|
||||
}
|
||||
$summen[$value['steuersatz']] += ($netto_gesamt/100)*$value['steuersatz'];
|
||||
$gesamtsteuern +=($netto_gesamt/100)*$value['steuersatz'];
|
||||
}
|
||||
/*
|
||||
$summe = $this->app->DB->Select("SELECT SUM(menge*preis) FROM bestellung_position WHERE bestellung='$id'");
|
||||
$summeV = $this->app->DB->Select("SELECT SUM(menge*preis) FROM bestellung_position WHERE bestellung='$id' AND (umsatzsteuer='normal' || umsatzsteuer='') ")/100 * $this->app->erp->GetSteuersatzNormal(false,$id,"bestellung");
|
||||
$summeR = $this->app->DB->Select("SELECT SUM(menge*preis) FROM bestellung_position WHERE bestellung='$id' AND umsatzsteuer='ermaessigt'")/100 * $this->app->erp->GetSteuersatzErmaessigt(false,$id,"bestellung");
|
||||
*/
|
||||
if($this->bestellungohnepreis!=1)
|
||||
{
|
||||
if($this->app->erp->BestellungMitUmsatzeuer($id))
|
||||
{
|
||||
$this->setTotals(
|
||||
array('totalArticles'=>$summe,'total'=>$summe + $gesamtsteuern,'summen'=>$summen,'totalTaxV'=>0,'totalTaxR'=>0)
|
||||
);
|
||||
//$this->setTotals(array("totalArticles"=>$summe,"total"=>$summe + $summeV + $summeR,"totalTaxV"=>$summeV,"totalTaxR"=>$summeR));
|
||||
} else{
|
||||
$this->setTotals(array('totalArticles' => $summe, 'total' => $summe));
|
||||
}
|
||||
}
|
||||
|
||||
/* Dateiname */
|
||||
//$tmp_name = str_replace([' ','.'],'', trim($this->recipient['enterprise']));
|
||||
$this->filename = $datum2.'_BE'.$belegnr.'.pdf';
|
||||
$this->setBarcode($belegnr);
|
||||
}
|
||||
}
|
||||
<?php
|
||||
if(!class_exists('BriefpapierCustom'))
|
||||
{
|
||||
class BriefpapierCustom extends Briefpapier
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class BestellungPDF extends BriefpapierCustom {
|
||||
public $doctype;
|
||||
|
||||
function __construct($app,$projekt="")
|
||||
{
|
||||
$this->app=$app;
|
||||
//parent::Briefpapier();
|
||||
$this->doctype="bestellung";
|
||||
$this->doctypeOrig="Bestellung";
|
||||
$this->bestellungohnepreis=0;
|
||||
parent::__construct($this->app,$projekt);
|
||||
}
|
||||
|
||||
|
||||
function GetBestellung($id)
|
||||
{
|
||||
$this->doctypeid = $id;
|
||||
$briefpapier_bearbeiter_ausblenden = $this->app->erp->Firmendaten('briefpapier_bearbeiter_ausblenden');
|
||||
$this->setRecipientLieferadresse($id,"bestellung");
|
||||
|
||||
$data = $this->app->DB->SelectRow(
|
||||
"SELECT adresse,projekt, sprache, angebot, ustid, keineartikelnummern, bestellbestaetigung, artikelnummerninfotext,
|
||||
einkaeufer, belegnr, freitext, bodyzusatz, ohne_briefpapier, abweichendebezeichnung, bestellungohnepreis,
|
||||
kundennummerlieferant AS kundennummer, DATE_FORMAT(datum,'%d.%m.%Y') AS datum, DATE_FORMAT(datum,'%Y%m%d') as datum2,
|
||||
lieferantennummer
|
||||
FROM bestellung
|
||||
WHERE id='$id'
|
||||
LIMIT 1"
|
||||
);
|
||||
extract($data,EXTR_OVERWRITE);
|
||||
$adresse = $data['adresse'];
|
||||
$sprache = $data['sprache'];
|
||||
$angebot = $data['angebot'];
|
||||
$ustid = $data['ustid'];
|
||||
$projekt = $data['projekt'];
|
||||
$keineartikelnummern = $data['keineartikelnummern'];
|
||||
$bestellbestaetigung = $data['bestellbestaetigung'];
|
||||
$artikelnummerninfotext = $data['artikelnummerninfotext'];
|
||||
$einkaeufer = $data['einkaeufer'];
|
||||
$belegnr = $data['belegnr'];
|
||||
$freitext = $data['freitext'];
|
||||
$bodyzusatz = $data['bodyzusatz'];
|
||||
$ohne_briefpapier = $data['ohne_briefpapier'];
|
||||
$abweichendebezeichnung = $data['abweichendebezeichnung'];
|
||||
$bestellungohnepreis = $data['bestellungohnepreis'];
|
||||
$kundennummer = $data['kundennummer'];
|
||||
$datum = $data['datum'];
|
||||
$datum2 = $data['datum2'];
|
||||
$lieferantennummer = $data['lieferantennummer'];
|
||||
|
||||
$this->bestellungohnepreis=$data['bestellungohnepreis'];
|
||||
|
||||
if(empty($kundennummer)) {
|
||||
$kundennummer = $this->app->DB->Select("SELECT kundennummerlieferant FROM adresse WHERE id='$adresse' LIMIT 1");
|
||||
}
|
||||
if($einkaeufer=='') {
|
||||
$einkaeufer = $this->app->DB->Select("SELECT bearbeiter FROM bestellung WHERE id='$id' LIMIT 1");
|
||||
}
|
||||
if(empty($sprache)) {
|
||||
$sprache = $this->app->DB->Select("SELECT sprache FROM adresse WHERE id='$adresse' LIMIT 1");
|
||||
}
|
||||
|
||||
$kundennummer = $this->app->erp->ReadyForPDF($kundennummer);
|
||||
$einkaeufer = $this->app->erp->ReadyForPDF($einkaeufer);
|
||||
$angebot = $this->app->erp->ReadyForPDF($angebot);
|
||||
$this->app->erp->BeschriftungSprache($sprache);
|
||||
$this->sprache = $sprache;
|
||||
|
||||
$projektabkuerzung = $this->app->DB->Select(sprintf('SELECT abkuerzung FROM projekt WHERE id = %d', $projekt));
|
||||
|
||||
if($this->bestellungohnepreis) {
|
||||
$this->nichtsichtbar_summe = 1;
|
||||
}
|
||||
|
||||
if($ohne_briefpapier=='1') {
|
||||
$this->logofile = '';
|
||||
$this->briefpapier='';
|
||||
$this->briefpapier2='';
|
||||
}
|
||||
|
||||
if($belegnr=='' || $belegnr=='0') {
|
||||
$belegnr = '- '.$this->app->erp->Beschriftung('dokument_entwurf');
|
||||
}
|
||||
|
||||
$this->doctypeOrig=$this->app->erp->Beschriftung('dokument_bestellung')." $belegnr";
|
||||
|
||||
if($abweichendebezeichnung)
|
||||
{
|
||||
$this->doctypeOrig=($this->app->erp->Beschriftung('bezeichnungbestellungersatz')?$this->app->erp->Beschriftung('bezeichnungbestellungersatz'):$this->app->erp->Beschriftung('dokument_bestellung'))." $belegnr";
|
||||
}
|
||||
else {
|
||||
$this->doctypeOrig=$this->app->erp->Beschriftung('dokument_bestellung')." $belegnr";
|
||||
}
|
||||
|
||||
if($angebot=='') {
|
||||
$angebot = '-';
|
||||
}
|
||||
if($kundennummer=='') {
|
||||
$kundennummer= '-';
|
||||
}
|
||||
|
||||
if(!$this->app->erp->BestellungMitUmsatzeuer($id)) {
|
||||
$this->ust_befreit=true;
|
||||
}
|
||||
|
||||
/** @var \Xentral\Modules\Company\Service\DocumentCustomizationService $service */
|
||||
$service = $this->app->Container->get('DocumentCustomizationService');
|
||||
if($block = $service->findActiveBlock('corr', 'suppliers_order', $projekt)) {
|
||||
$sCD = $service->parseBlockAsArray($this->getLanguageCodeFrom($this->sprache),'corr', 'suppliers_order',[
|
||||
'BESTELLNUMMER' => $belegnr,
|
||||
'DATUM' => $datum,
|
||||
'KUNDENNUMMER' => $kundennummer,
|
||||
'EINKAEUFER' => $einkaeufer,
|
||||
'LIEFERANTENNUMMER' => $lieferantennummer,
|
||||
'PROJEKT' => $projektabkuerzung,
|
||||
'EMAIL' => '',
|
||||
'TELEFON' => '',
|
||||
'BEARBEITER' => '',
|
||||
'VERTRIEB' => '',
|
||||
], $projekt);
|
||||
if(!empty($sCD)) {
|
||||
switch($block['fontstyle']) {
|
||||
case 'f':
|
||||
$this->setBoldCorrDetails($sCD);
|
||||
break;
|
||||
case 'i':
|
||||
$this->setItalicCorrDetails($sCD);
|
||||
break;
|
||||
case 'fi':
|
||||
$this->setItalicBoldCorrDetails($sCD);
|
||||
break;
|
||||
default:
|
||||
$this->setCorrDetails($sCD, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
if($briefpapier_bearbeiter_ausblenden){
|
||||
$this->setCorrDetails(array($this->app->erp->Beschriftung("dokument_bestellung_angebotnummer") => $angebot,
|
||||
$this->app->erp->Beschriftung("dokument_bestellung_unserekundennummer") => $kundennummer,
|
||||
$this->app->erp->Beschriftung("dokument_bestelldatum") => $datum));
|
||||
}else{
|
||||
$this->setCorrDetails(array($this->app->erp->Beschriftung("dokument_bestellung_angebotnummer") => $angebot,
|
||||
$this->app->erp->Beschriftung("dokument_bestellung_unserekundennummer") => $kundennummer,
|
||||
$this->app->erp->Beschriftung("dokument_bestelldatum") => $datum,
|
||||
$this->app->erp->Beschriftung("dokument_bestellung_einkauf") => $einkaeufer));
|
||||
}
|
||||
}
|
||||
|
||||
if(!$this->app->erp->BestellungMitUmsatzeuer($id) && $ustid!='' ) {
|
||||
//$steuer = "\nSteuerfreie innergemeinschaftliche Lieferung. Ihre USt-IdNr. $ustid Land: $land";
|
||||
$this->ust_befreit=true;
|
||||
if($keinsteuersatz!='1') {
|
||||
$steuer = $this->app->erp->Beschriftung('eu_lieferung_vermerk');
|
||||
}
|
||||
$steuer = str_replace('{USTID}',$ustid,$steuer);
|
||||
$steuer = str_replace('{LAND}',$land,$steuer);
|
||||
}
|
||||
|
||||
$body=$this->app->erp->Beschriftung('bestellung_header');
|
||||
if($bodyzusatz!='') {
|
||||
$body=$body."\r\n".$bodyzusatz;
|
||||
}
|
||||
$body = $this->app->erp->ParseUserVars('bestellung',$id,$body);
|
||||
|
||||
if($this->app->erp->Firmendaten('footer_reihenfolge_bestellung_aktivieren')=='1')
|
||||
{
|
||||
$footervorlage = $this->app->erp->Firmendaten('footer_reihenfolge_bestellung');
|
||||
if($footervorlage==''){
|
||||
$footervorlage = "{FOOTERFREITEXT}\r\n{FOOTERTEXTVORLAGEBESTELLUNG}";
|
||||
}
|
||||
$footervorlage = str_replace('{FOOTERFREITEXT}',$freitext,$footervorlage);
|
||||
$footervorlage = str_replace('{FOOTERTEXTVORLAGEBESTELLUNG}',$this->app->erp->Beschriftung("bestellung_footer"),$footervorlage);
|
||||
$footervorlage = $this->app->erp->ParseUserVars("bestellung",$id,$footervorlage);
|
||||
$footer = $footervorlage;
|
||||
} else {
|
||||
$footer = $freitext."\r\n".$this->app->erp->ParseUserVars('bestellung',$id,$this->app->erp->Beschriftung("bestellung_footer"));
|
||||
}
|
||||
|
||||
if($bestellbestaetigung) {
|
||||
$this->setTextDetails(array(
|
||||
"body"=>$body,
|
||||
"footer"=>$footer."\r\n".$this->app->erp->Beschriftung('dokument_bestellung_bestaetigung')));
|
||||
} else
|
||||
{
|
||||
$this->setTextDetails(array(
|
||||
"body"=>$body,
|
||||
"footer"=>$footer));
|
||||
}
|
||||
$artikel = $this->app->DB->SelectArr(
|
||||
"SELECT bp.*, art.ean AS artean, art.nummer AS artnummer, art.herstellernummer AS artherstellernummer,
|
||||
art.einheit as arteinheit, art.hersteller AS arthersteller
|
||||
FROM bestellung_position AS bp
|
||||
LEFT JOIN artikel AS art ON bp.artikel = art.id
|
||||
WHERE bp.bestellung='$id'
|
||||
ORDER By bp.sort"
|
||||
);
|
||||
if(empty($artikel)) {
|
||||
$artikel = [];
|
||||
}
|
||||
$steuersatzV = $this->app->erp->GetSteuersatzNormal(false,$id,'bestellung');
|
||||
$steuersatzR = $this->app->erp->GetSteuersatzErmaessigt(false,$id,'bestellung');
|
||||
$gesamtsteuern = 0;
|
||||
$mitumsatzsteuer = $this->app->erp->BestellungMitUmsatzeuer($id);
|
||||
//$waehrung = $this->app->DB->Select("SELECT waehrung FROM bestellung_position WHERE bestellung='$id' LIMIT 1");
|
||||
$summe = 0;
|
||||
foreach($artikel as $key=>$value) {
|
||||
$lieferdatum = $this->app->String->Convert($value['lieferdatum'],'%1-%2-%3','%3.%2.%1');
|
||||
|
||||
if($lieferdatum==='00.00.0000') {
|
||||
$lieferdatum ='';
|
||||
}//$this->app->erp->Beschriftung("dokument_lieferdatum_sofort");
|
||||
|
||||
if($value['umsatzsteuer'] !== 'ermaessigt' && $value['umsatzsteuer'] !== 'befreit') {
|
||||
$value['umsatzsteuer'] = 'normal';
|
||||
}
|
||||
$tmpsteuersatz = null;
|
||||
$tmpsteuertext = null;
|
||||
$this->app->erp->GetSteuerPosition('bestellung', $value['id'],$tmpsteuersatz, $tmpsteuertext);
|
||||
if($value['steuersatz'] === null || $value['steuersatz'] < 0) {
|
||||
if($value['umsatzsteuer'] === 'ermaessigt') {
|
||||
$value['steuersatz'] = $steuersatzR;
|
||||
}
|
||||
elseif($value['umsatzsteuer'] === 'befreit') {
|
||||
$value['steuersatz'] = 0;
|
||||
}else{
|
||||
$value['steuersatz'] = $steuersatzV;
|
||||
}
|
||||
if($tmpsteuersatz !== null) {
|
||||
$value['steuersatz'] = $tmpsteuersatz;
|
||||
}
|
||||
}
|
||||
if($tmpsteuertext && !$value['steuertext']) {
|
||||
$value['steuertext'] = $tmpsteuertext;
|
||||
}
|
||||
if(!$mitumsatzsteuer) {
|
||||
$value['steuersatz'] = 0;
|
||||
}
|
||||
// if(!$this->app->erp->BestellungMitUmsatzeuer($id)) $value[umsatzsteuer] = "";
|
||||
|
||||
if($keineartikelnummern==1) {
|
||||
$value['bestellnummer'] = $this->app->erp->Beschriftung('dokument_bestellung_keineartikelnummer');
|
||||
}
|
||||
|
||||
$ohne_artikeltext = $this->app->DB->Select("SELECT ohne_artikeltext FROM ".$this->table." WHERE id='".$this->id."' LIMIT 1");
|
||||
if($ohne_artikeltext=='1') {
|
||||
$value['beschreibung']='';
|
||||
}
|
||||
|
||||
$value['artikelnummer']= $value['artnummer'];// $this->app->DB->Select("SELECT nummer FROM artikel WHERE id='".$value['artikel']."' LIMIT 1");
|
||||
if($artikelnummerninfotext) {
|
||||
if($value['bestellnummer']!=''){
|
||||
$value['beschreibung'] = $value['beschreibung'] . "\n" . $this->app->erp->Beschriftung('dokument_bestellung_bestellnummer') . ': ' . $value['bestellnummer'];
|
||||
}
|
||||
$value['bestellnummer']=$value['artikelnummer'];
|
||||
} else {
|
||||
if($value['artikelnummer']!=''){
|
||||
$value['beschreibung'] = $value['beschreibung'] . "\n" . $this->app->erp->Beschriftung('dokument_bestellung_unsereartikelnummer') . ': ' . $value['artikelnummer'];
|
||||
}
|
||||
}
|
||||
|
||||
if($value['vpe'] > 1 && is_numeric($value['vpe'])) {
|
||||
$value['beschreibung'] = $value['beschreibung']."\n".$this->app->erp->Beschriftung('dokument_bestellung_mengeinvpe').': '.$value['vpe'];
|
||||
//umschalbar in der Zukunft
|
||||
$value['preis'] = $value['preis']*$value['menge']/($value['menge'] / $value['vpe']);
|
||||
$value['menge'] = round($value['menge'] / $value['vpe'],2);
|
||||
$value['einheit'] = "VPE";
|
||||
}
|
||||
elseif((String)$value['einheit'] === '') {
|
||||
$value['einheit'] = $value['arteinheit'];// $this->app->DB->Select("SELECT einheit FROM artikel WHERE id = '".$value['artikel']."' LIMIT 1");
|
||||
if((String)$value['einheit'] === '') {
|
||||
$value['einheit'] = $this->app->erp->Firmendaten('artikeleinheit_standard');
|
||||
}
|
||||
}
|
||||
|
||||
if($value['beschreibung']!='') {
|
||||
$newline="\n";
|
||||
}
|
||||
|
||||
if($this->bestellungohnepreis) {
|
||||
$value['preis'] = null;
|
||||
}
|
||||
|
||||
if($value['waehrung']!='' && $value['waehrung']!=$this->waehrung){
|
||||
$this->waehrung = $value['waehrung'];
|
||||
}
|
||||
|
||||
$value['menge'] = (float)$value['menge'];
|
||||
$value['herstellernummer'] = $value['artherstellernummer'];// $this->app->DB->Select("SELECT herstellernummer FROM artikel WHERE id='".$value['artikel']."' LIMIT 1");
|
||||
$value['hersteller'] = $value['arthersteller'];//$this->app->DB->Select("SELECT hersteller FROM artikel WHERE id='".$value['artikel']."' LIMIT 1");
|
||||
|
||||
$this->addItem(
|
||||
array(
|
||||
'belegposition'=>$value['id'],
|
||||
'artikel'=>$value['artikel'],
|
||||
'currency'=>$value['waehrung'],
|
||||
'amount'=>$value['menge'],
|
||||
'price'=>$value['preis'],
|
||||
'tax'=>$value['umsatzsteuer'],'steuersatz'=>$value['steuersatz'],
|
||||
'steuertext'=>$value['steuertext'],
|
||||
'vpe'=>$value['vpe'],
|
||||
'unit'=>$value['einheit'],
|
||||
'itemno'=>$value['bestellnummer'],
|
||||
'desc'=>$value['beschreibung'].($lieferdatum!=''?$newline.$this->app->erp->Beschriftung('dokument_lieferdatum').': '.$lieferdatum:''),
|
||||
'hersteller'=>$value['hersteller'],
|
||||
'herstellernummer'=>$value['herstellernummer'],
|
||||
'freifeld1'=>$value['freifeld1'],
|
||||
'freifeld2'=>$value['freifeld2'],
|
||||
'freifeld3'=>$value['freifeld3'],
|
||||
'freifeld4'=>$value['freifeld4'],
|
||||
'freifeld5'=>$value['freifeld5'],
|
||||
'freifeld6'=>$value['freifeld6'],
|
||||
'freifeld7'=>$value['freifeld7'],
|
||||
'freifeld8'=>$value['freifeld8'],
|
||||
'freifeld9'=>$value['freifeld9'],
|
||||
'freifeld10'=>$value['freifeld10'],
|
||||
'freifeld11'=>$value['freifeld11'],
|
||||
'freifeld12'=>$value['freifeld12'],
|
||||
'freifeld13'=>$value['freifeld13'],
|
||||
'freifeld14'=>$value['freifeld14'],
|
||||
'freifeld15'=>$value['freifeld15'],
|
||||
'freifeld16'=>$value['freifeld16'],
|
||||
'freifeld17'=>$value['freifeld17'],
|
||||
'freifeld18'=>$value['freifeld18'],
|
||||
'freifeld19'=>$value['freifeld19'],
|
||||
'freifeld20'=>$value['freifeld20'],
|
||||
'freifeld21'=>$value['freifeld21'],
|
||||
'freifeld22'=>$value['freifeld22'],
|
||||
'freifeld23'=>$value['freifeld23'],
|
||||
'freifeld24'=>$value['freifeld24'],
|
||||
'freifeld25'=>$value['freifeld25'],
|
||||
'freifeld26'=>$value['freifeld26'],
|
||||
'freifeld27'=>$value['freifeld27'],
|
||||
'freifeld28'=>$value['freifeld28'],
|
||||
'freifeld29'=>$value['freifeld29'],
|
||||
'freifeld30'=>$value['freifeld30'],
|
||||
'freifeld31'=>$value['freifeld31'],
|
||||
'freifeld32'=>$value['freifeld32'],
|
||||
'freifeld33'=>$value['freifeld33'],
|
||||
'freifeld34'=>$value['freifeld34'],
|
||||
'freifeld35'=>$value['freifeld35'],
|
||||
'freifeld36'=>$value['freifeld36'],
|
||||
'freifeld37'=>$value['freifeld37'],
|
||||
'freifeld38'=>$value['freifeld38'],
|
||||
'freifeld39'=>$value['freifeld39'],
|
||||
'freifeld40'=>$value['freifeld40'],
|
||||
"name"=>$value['bezeichnunglieferant']
|
||||
)
|
||||
);
|
||||
|
||||
$netto_gesamt = $value['menge']*$value['preis'];
|
||||
$summe += $netto_gesamt;
|
||||
if(!isset($summen[$value['steuersatz']])) {
|
||||
$summen[$value['steuersatz']] = 0;
|
||||
}
|
||||
$summen[$value['steuersatz']] += ($netto_gesamt/100)*$value['steuersatz'];
|
||||
$gesamtsteuern +=($netto_gesamt/100)*$value['steuersatz'];
|
||||
}
|
||||
/*
|
||||
$summe = $this->app->DB->Select("SELECT SUM(menge*preis) FROM bestellung_position WHERE bestellung='$id'");
|
||||
$summeV = $this->app->DB->Select("SELECT SUM(menge*preis) FROM bestellung_position WHERE bestellung='$id' AND (umsatzsteuer='normal' || umsatzsteuer='') ")/100 * $this->app->erp->GetSteuersatzNormal(false,$id,"bestellung");
|
||||
$summeR = $this->app->DB->Select("SELECT SUM(menge*preis) FROM bestellung_position WHERE bestellung='$id' AND umsatzsteuer='ermaessigt'")/100 * $this->app->erp->GetSteuersatzErmaessigt(false,$id,"bestellung");
|
||||
*/
|
||||
if($this->bestellungohnepreis!=1)
|
||||
{
|
||||
if($this->app->erp->BestellungMitUmsatzeuer($id))
|
||||
{
|
||||
$this->setTotals(
|
||||
array('totalArticles'=>$summe,'total'=>$summe + $gesamtsteuern,'summen'=>$summen,'totalTaxV'=>0,'totalTaxR'=>0)
|
||||
);
|
||||
//$this->setTotals(array("totalArticles"=>$summe,"total"=>$summe + $summeV + $summeR,"totalTaxV"=>$summeV,"totalTaxR"=>$summeR));
|
||||
} else{
|
||||
$this->setTotals(array('totalArticles' => $summe, 'total' => $summe));
|
||||
}
|
||||
}
|
||||
|
||||
/* Dateiname */
|
||||
//$tmp_name = str_replace([' ','.'],'', trim($this->recipient['enterprise']));
|
||||
$this->filename = $datum2.'_BE'.$belegnr.'.pdf';
|
||||
$this->setBarcode($belegnr);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -658,7 +658,7 @@ class Briefpapier extends SuperFPDF {
|
|||
|
||||
public function addItem($rdata){
|
||||
// add rabatt
|
||||
if($rdata['price']!='-'){
|
||||
if($rdata['price']!='-' && is_numeric($rdata['price'])){
|
||||
if($rdata['rabatt'] == 100){
|
||||
$rdata['tprice'] = round($rdata['amount'] * ((double)$rdata['price'] - (double)($rdata['price'] / 100.00 * (double)$rdata['rabatt'])), 13);
|
||||
}else{
|
||||
|
|
@ -1775,7 +1775,12 @@ class Briefpapier extends SuperFPDF {
|
|||
$total=$totalFullTax=$totalReducedTax=0;
|
||||
$citems = !empty($this->items)?count($this->items):0;
|
||||
for($i=0;$i<$citems;$i++) {
|
||||
$total += $this->items[$i]['tprice'];
|
||||
if (!$this->items[$i]['optional']) {
|
||||
$total += $this->items[$i]['tprice'];
|
||||
} else {
|
||||
$totalOptional += $this->items[$i]['tprice'];
|
||||
}
|
||||
|
||||
if($this->items[$i]['tax']=="USTV") {
|
||||
$totalFullTax+= $this->items[$i]['tprice']*USTV;
|
||||
}
|
||||
|
|
@ -1783,7 +1788,7 @@ class Briefpapier extends SuperFPDF {
|
|||
$totalReducedTax+= $this->items[$i]['tprice']*USTR;
|
||||
}
|
||||
}
|
||||
return array($total,$totalFullTax,$totalReducedTax);
|
||||
return array($total,$totalFullTax,$totalReducedTax,$totalOptional);
|
||||
}
|
||||
|
||||
function GetFont()
|
||||
|
|
@ -2498,7 +2503,6 @@ class Briefpapier extends SuperFPDF {
|
|||
}
|
||||
|
||||
public function renderItems() {
|
||||
|
||||
$this->app->erp->RunHook('briefpapier_renderitems',1, $this);
|
||||
// if($this->bestellungohnepreis) $this->doctype="lieferschein";
|
||||
$posWidth = $this->getStyleElement("breite_position");
|
||||
|
|
@ -2942,7 +2946,6 @@ class Briefpapier extends SuperFPDF {
|
|||
if($this->doctype!=='zahlungsavis')
|
||||
{
|
||||
if($item['tax']!=='hidden'){
|
||||
|
||||
if($anzeigeBelegNettoAdrese){
|
||||
//if(($this->anrede=="firma" || $this->app->erp->AnzeigeBelegNetto($this->anrede,$projekt) || $this->doctype=="bestellung" || $this->getStyleElement("immernettorechnungen",$projekt)=="1")
|
||||
//&& $this->getStyleElement("immerbruttorechnungen",$projekt)!="1")
|
||||
|
|
@ -3068,16 +3071,18 @@ class Briefpapier extends SuperFPDF {
|
|||
// && $this->getStyleElement("immerbruttorechnungen",$projekt)!="1")
|
||||
{
|
||||
if(!$inventurohnepreis){
|
||||
$this->Cell_typed($priceWidth,$cellhoehe,$item['ohnepreis']?'':$this->formatMoney((double)$item['tprice']),0,0,'R');
|
||||
// $this->Cell_typed($priceWidth,$cellhoehe,$item['ohnepreis']?'':$this->formatMoney((double)$item['tprice']),0,0,'R');
|
||||
$price_displayed = $item['ohnepreis']?'':$this->formatMoney((double)$item['tprice']);
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(!$inventurohnepreis){
|
||||
$this->Cell_typed($priceWidth, $cellhoehe, $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice'] * $item['tmptax']), 0, 0, 'R');
|
||||
// $this->Cell_typed($priceWidth, $cellhoehe, $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice'] * $item['tmptax']), 0, 0, 'R');
|
||||
$price_displayed = $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice'] * $item['tmptax']);
|
||||
}
|
||||
}
|
||||
|
||||
$this->Cell_typed($rabattWidth,$cellhoehe,"",0,0,'R');
|
||||
// $this->Cell_typed($rabattWidth,$cellhoehe,"",0,0,'R');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3093,7 +3098,7 @@ class Briefpapier extends SuperFPDF {
|
|||
$this->Cell_typed($priceWidth, $cellhoehe, $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['price'] * $item['tmptax']), 0, 0, 'R');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//$this->Cell_typed($sumWidth,$cellhoehe,$this->formatMoney($item['tprice']).' '.$item['currency'],0,0,'R');
|
||||
if($this->rabatt=='1')
|
||||
{
|
||||
|
|
@ -3107,12 +3112,14 @@ class Briefpapier extends SuperFPDF {
|
|||
//if(($this->anrede=="firma" || $this->app->erp->AnzeigeBelegNetto($this->anrede,$projekt) || $this->doctype=="bestellung" || $this->getStyleElement("immernettorechnungen",$projekt)=="1")
|
||||
// && $this->getStyleElement("immerbruttorechnungen",$projekt)!="1")
|
||||
if(!$inventurohnepreis){
|
||||
$this->Cell_typed($sumWidth, $cellhoehe, $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice']), 0, 0, 'R');
|
||||
// $this->Cell_typed($sumWidth, $cellhoehe, $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice']), 0, 0, 'R');
|
||||
$price_displayed = $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice']);
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(!$inventurohnepreis){
|
||||
$this->Cell_typed($sumWidth, $cellhoehe, $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice'] * $item['tmptax']), 0, 0, 'R');
|
||||
// $this->Cell_typed($sumWidth, $cellhoehe, $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice'] * $item['tmptax']), 0, 0, 'R');
|
||||
$price_displayed = $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice'] * $item['tmptax']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3121,18 +3128,29 @@ class Briefpapier extends SuperFPDF {
|
|||
// if(($this->anrede=="firma" || $this->app->erp->AnzeigeBelegNetto($this->anrede,$projekt) || $this->doctype=="bestellung" || $this->getStyleElement("immernettorechnungen",$projekt)=="1")
|
||||
// && $this->getStyleElement("immerbruttorechnungen",$projekt)!="1")
|
||||
if(!$inventurohnepreis){
|
||||
$this->Cell_typed($sumWidth, $cellhoehe, $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice']), 0, 0, 'R');
|
||||
// $this->Cell_typed($sumWidth, $cellhoehe, $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice']), 0, 0, 'R');
|
||||
$price_displayed = $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice']);
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(!$inventurohnepreis){
|
||||
$this->Cell_typed($sumWidth, $cellhoehe, $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice'] * $item['tmptax']), 0, 0, 'R');
|
||||
// $this->Cell_typed($sumWidth, $cellhoehe, $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice'] * $item['tmptax']), 0, 0, 'R');
|
||||
$price_displayed = $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice'] * $item['tmptax']);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// OpenXE add price here
|
||||
if (!empty($price_displayed)) {
|
||||
if ($item['optional']) {
|
||||
$this->Cell_typed($sumWidth, $cellhoehe, "(".$price_displayed.")", 0, 0, 'R');
|
||||
} else {
|
||||
$this->Cell_typed($sumWidth, $cellhoehe, $price_displayed, 0, 0, 'R');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else if(($this->doctype==='lieferschein' || $this->doctype==='preisanfrage') && $this->getStyleElement('artikeleinheit')=='1')
|
||||
{
|
||||
|
|
@ -4008,7 +4026,7 @@ class Briefpapier extends SuperFPDF {
|
|||
}
|
||||
|
||||
$beschriftung_zeile = ucfirst($zwischenpositionen[$i]['postype']);
|
||||
|
||||
|
||||
if($data['name']=="")
|
||||
$html = ($fett?"<b>":"").$beschriftung_zeile.($fett?"</b>":"");
|
||||
else
|
||||
|
|
@ -4029,10 +4047,10 @@ class Briefpapier extends SuperFPDF {
|
|||
$abstand_links = $posWidth +$itemNoWidth;
|
||||
}
|
||||
|
||||
$this->SetX($x+$abstand_links);
|
||||
|
||||
$text = $this->WriteHTML($html);
|
||||
$text = empty($text)?"":$text;
|
||||
$this->SetX($x+$abstand_links);
|
||||
|
||||
$text = $this->WriteHTML($html);
|
||||
$text = empty($text)?"":$text;
|
||||
|
||||
$this->Cell_typed($descWidth,4,);
|
||||
$this->SetX($x+$abstand_links+$descWidth);
|
||||
|
|
@ -4279,7 +4297,7 @@ class Briefpapier extends SuperFPDF {
|
|||
$this->Cell_typed(40,3,'',0,0,'R');
|
||||
}
|
||||
$this->Ln();
|
||||
}
|
||||
}
|
||||
$this->SetY($this->GetY()+2);
|
||||
//$this->Line(110, $this->GetY(), 190,$this->GetY());
|
||||
}
|
||||
|
|
@ -4320,6 +4338,16 @@ class Briefpapier extends SuperFPDF {
|
|||
$this->Line($differenz_wegen_abstand+5, $this->GetY(), 210-$this->getStyleElement('abstand_seitenrandrechts'),$this->GetY());
|
||||
$this->Line($differenz_wegen_abstand+5, $this->GetY()+1, 210-$this->getStyleElement('abstand_seitenrandrechts'),$this->GetY()+1);
|
||||
}
|
||||
|
||||
if(isset($this->totals['optional'])) {
|
||||
$this->SetFont($this->GetFont(),'',$this->getStyleElement('schriftgroesse_gesamt'));
|
||||
$this->Ln(2);
|
||||
$this->Cell_typed($differenz_wegen_abstand,1,'',0);
|
||||
$this->Cell_typed(30,5,"(".$this->app->erp->Beschriftung('dokument_gesamt_optional'),0,0,'L');
|
||||
$this->Cell_typed(40,5,$this->formatMoney(round($this->totals['optional'],2), 2).' '.$this->waehrung.")",0,0,'R');
|
||||
$this->Ln();
|
||||
}
|
||||
|
||||
|
||||
$this->SetY($this->GetY()+10);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,201 +1,202 @@
|
|||
<?php
|
||||
/*
|
||||
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*
|
||||
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
|
||||
*
|
||||
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
|
||||
*
|
||||
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
|
||||
* to obtain the text of the corresponding license version.
|
||||
*
|
||||
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
/*
|
||||
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*
|
||||
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
|
||||
*
|
||||
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
|
||||
*
|
||||
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
|
||||
* to obtain the text of the corresponding license version.
|
||||
*
|
||||
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
use Xentral\Components\Barcode\BarcodeFactory;
|
||||
|
||||
include_once "class.superfpdf.php";
|
||||
|
||||
class EtikettenPDF extends SuperFPDF {
|
||||
|
||||
function __construct($app,$projekt="") {
|
||||
$this->app=$app;
|
||||
$this->page_definded=false;
|
||||
}
|
||||
|
||||
function SetXML($xml)
|
||||
{
|
||||
if(empty($xml))return;
|
||||
$xml = str_replace('&','&', $xml);
|
||||
try {
|
||||
$label = new SimpleXMLElement($xml);
|
||||
} catch (Exception $e) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach($label as $key=>$items)
|
||||
{
|
||||
switch($key)
|
||||
{
|
||||
case "settings":
|
||||
if(!$this->page_definded)
|
||||
{
|
||||
parent::__construct('P','mm',array(trim($items->attributes()->width),trim($items->attributes()->height)));
|
||||
$this->page_definded = true;
|
||||
}
|
||||
|
||||
$this->SetAutoPageBreak(false);
|
||||
$this->SetFont('Arial','B',4);
|
||||
$this->SetLeftMargin(0);
|
||||
$this->SetMargins(0,0,0);
|
||||
$this->AddPage();
|
||||
break;
|
||||
|
||||
case "line":
|
||||
$this->SetXY(trim($items->attributes()->x),$items->attributes()->y,$items[0]);
|
||||
$this->SetFont('Arial','',$items->attributes()->size*2);
|
||||
$this->MultiCell(0,$items->attributes()->size,$items[0],0,'L');
|
||||
break;
|
||||
|
||||
case "rectangle":
|
||||
$attributes = $items->attributes();
|
||||
$borderwidth = 1;
|
||||
if(isset($attributes->size))$borderwidth = $attributes->size;
|
||||
$this->SetLineWidth($borderwidth / 10);
|
||||
$this->Rect($items->attributes()->x, $items->attributes()->y,trim($items->attributes()->width),trim($items->attributes()->height),'B');
|
||||
break;
|
||||
|
||||
case "image":
|
||||
$filename = '';
|
||||
if(isset($items->attributes()->src))
|
||||
{
|
||||
$src = str_replace('&','&',$items->attributes()->src);
|
||||
if(stripos($src,'http://') === false && stripos($src,'https://') === false)
|
||||
{
|
||||
$src = 'http://'.$src;
|
||||
}
|
||||
$content = file_get_contents($src);
|
||||
if($content)
|
||||
{
|
||||
$filename = rtrim($this->app->erp->GetTMP(),'/').'/'.md5(microtime(true).$items[0]);
|
||||
file_put_contents($filename.'1.jpg', $content);
|
||||
|
||||
$bildbreite = trim($items->attributes()->width);
|
||||
$bildhoehe = trim($items->attributes()->height);
|
||||
if(!class_exists('image'))include_once(__DIR__.'/../class.image.php');
|
||||
$img = new image($this->app);
|
||||
if($bildbreite > 0)
|
||||
{
|
||||
$breite = $bildbreite;
|
||||
}else{
|
||||
$breite = 30;
|
||||
}
|
||||
if($bildhoehe > 0)
|
||||
{
|
||||
$hoehe = $bildhoehe;
|
||||
}else{
|
||||
$hoehe = $breite;
|
||||
}
|
||||
$_breite = $breite;
|
||||
$_hoehe = $hoehe;
|
||||
list($width, $height) = getimagesize($filename.'1.jpg');
|
||||
if($width > 0 && $height > 0)
|
||||
{
|
||||
$scalex = $breite / $width;
|
||||
$scaley = $hoehe / $height;
|
||||
if($scalex < $scaley)
|
||||
{
|
||||
$hoehe /= $scaley / $scalex;
|
||||
$hoehe = ceil($hoehe);
|
||||
}else{
|
||||
$breite /= $scalex / $scaley;
|
||||
$breite = ceil($breite);
|
||||
}
|
||||
$str = $content;
|
||||
$manipulator = new ImageManipulator($str);
|
||||
$manipulator->resample($_breite*10, $_hoehe*10, false,true, true);
|
||||
$typ = IMAGETYPE_JPEG;
|
||||
$manipulator->save($filename.'2.jpg', $typ);
|
||||
$items[0] = $filename.'2.jpg';
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
$type = exif_imagetype ( trim($items[0]) );
|
||||
|
||||
switch($type)
|
||||
{
|
||||
case IMAGETYPE_GIF: $type="gif"; break;
|
||||
case IMAGETYPE_JPEG: $type="jpg"; break;
|
||||
case IMAGETYPE_PNG: $type="png"; break;
|
||||
default: $type="";
|
||||
}
|
||||
if($type!="")
|
||||
{
|
||||
$this->Image(trim($items[0]),trim($items->attributes()->x),trim($items->attributes()->y),trim($items->attributes()->width),trim($items->attributes()->height),$type);
|
||||
}
|
||||
if($filename != '')
|
||||
{
|
||||
unlink($filename.'1.jpg');
|
||||
unlink($filename.'2.jpg');
|
||||
}
|
||||
break;
|
||||
|
||||
case "barcode":
|
||||
if((String)($items->attributes()->type)=="E30") {
|
||||
$this->EAN13($items->attributes()->x,$items->attributes()->y, $items[0],$items->attributes()->size);
|
||||
}
|
||||
else if((String)($items->attributes()->type)=="Code128" || (String)($items->attributes()->type)=="1") {
|
||||
$this->Code128($items->attributes()->x, $items->attributes()->y, $items[0], $items->attributes()->width, $items->attributes()->size);
|
||||
}
|
||||
else if((String)($items->attributes()->type)=="GS1-128" || (String)($items->attributes()->type)=="1") {
|
||||
//$items[0] = "!FNC1!0104012345012345!FNC1!081231!FNC1!1012345";
|
||||
|
||||
$tmp =explode("!FNC1!",$items[0]);
|
||||
$codewithfnc1 = implode(chr(206),$tmp);
|
||||
|
||||
//echo chr(206)."0104012345012345".chr(206)."081231".chr(206)."1012345";
|
||||
//$this->Code128($items->attributes()->x, $items->attributes()->y, chr(206)."0104012345012345".chr(206)."081231".chr(206)."1012345", $items->attributes()->width, $items->attributes()->size); // 206 = FNC1
|
||||
$this->Code128($items->attributes()->x, $items->attributes()->y, $codewithfnc1, $items->attributes()->width, $items->attributes()->size); // 206 = FNC1
|
||||
//$this->Code128($items->attributes()->x, $items->attributes()->y, chr(206).$items[0], $items->attributes()->width, $items->attributes()->size); // 206 = FNC1
|
||||
}
|
||||
else { // standard auf 2 bzw default
|
||||
$this->Code39($items->attributes()->x,$items->attributes()->y, $items[0], 0.5, $items->attributes()->size);//, $printText=false)
|
||||
}
|
||||
|
||||
break;
|
||||
case "qrcode":
|
||||
/** @var BarcodeFactory $factory */
|
||||
$factory = $this->app->Container->get('BarcodeFactory');
|
||||
$ecLevel = 'M';
|
||||
$type = 'png';
|
||||
$filename = rtrim($this->app->erp->GetTMP(),'/').'/'.md5(microtime(true).$items[0]).'.' . $type;
|
||||
|
||||
$qrText = (string) $items[0];
|
||||
$qrcode = $factory->createQrCode($qrText, $ecLevel);
|
||||
$width = $items->attributes()->width ?? $items->attributes()->size;
|
||||
$height = $items->attributes()->height ?? $items->attributes()->size;
|
||||
$image = $qrcode->toPng(trim($width), trim($height));
|
||||
|
||||
if(file_put_contents($filename, $image) === false) {
|
||||
throw new RuntimeException('qrcode image cannot be created. Perhaps due to missing write permission');
|
||||
}
|
||||
unset($image);
|
||||
$this->Image(
|
||||
trim($filename),
|
||||
trim((int) $items->attributes()->x),
|
||||
trim((int) $items->attributes()->y),
|
||||
trim((int) $width),
|
||||
trim((int) $height),
|
||||
$type
|
||||
);
|
||||
unlink($filename);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
<?php
|
||||
use Xentral\Components\Barcode\BarcodeFactory;
|
||||
|
||||
include_once "class.superfpdf.php";
|
||||
|
||||
class EtikettenPDF extends SuperFPDF {
|
||||
|
||||
function __construct($app,$projekt="") {
|
||||
$this->app=$app;
|
||||
$this->page_definded=false;
|
||||
$this->images = array();
|
||||
}
|
||||
|
||||
function SetXML($xml)
|
||||
{
|
||||
if(empty($xml))return;
|
||||
$xml = str_replace('&','&', $xml);
|
||||
try {
|
||||
$label = new SimpleXMLElement($xml);
|
||||
} catch (Exception $e) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach($label as $key=>$items)
|
||||
{
|
||||
switch($key)
|
||||
{
|
||||
case "settings":
|
||||
if(!$this->page_definded)
|
||||
{
|
||||
parent::__construct('P','mm',array(trim($items->attributes()->width),trim($items->attributes()->height)));
|
||||
$this->page_definded = true;
|
||||
}
|
||||
|
||||
$this->SetAutoPageBreak(false);
|
||||
$this->SetFont('Arial','B',4);
|
||||
$this->SetLeftMargin(0);
|
||||
$this->SetMargins(0,0,0);
|
||||
$this->AddPage();
|
||||
break;
|
||||
|
||||
case "line":
|
||||
$this->SetXY(trim($items->attributes()->x),$items->attributes()->y,$items[0]);
|
||||
$this->SetFont('Arial','',$items->attributes()->size*2);
|
||||
$this->MultiCell(0,$items->attributes()->size,$items[0],0,'L');
|
||||
break;
|
||||
|
||||
case "rectangle":
|
||||
$attributes = $items->attributes();
|
||||
$borderwidth = 1;
|
||||
if(isset($attributes->size))$borderwidth = $attributes->size;
|
||||
$this->SetLineWidth($borderwidth / 10);
|
||||
$this->Rect($items->attributes()->x, $items->attributes()->y,trim($items->attributes()->width),trim($items->attributes()->height),'B');
|
||||
break;
|
||||
|
||||
case "image":
|
||||
$filename = '';
|
||||
if(isset($items->attributes()->src))
|
||||
{
|
||||
$src = str_replace('&','&',$items->attributes()->src);
|
||||
if(stripos($src,'http://') === false && stripos($src,'https://') === false)
|
||||
{
|
||||
$src = 'http://'.$src;
|
||||
}
|
||||
$content = file_get_contents($src);
|
||||
if($content)
|
||||
{
|
||||
$filename = rtrim($this->app->erp->GetTMP(),'/').'/'.md5(microtime(true).$items[0]);
|
||||
file_put_contents($filename.'1.jpg', $content);
|
||||
|
||||
$bildbreite = trim($items->attributes()->width);
|
||||
$bildhoehe = trim($items->attributes()->height);
|
||||
if(!class_exists('image'))include_once(__DIR__.'/../class.image.php');
|
||||
$img = new image($this->app);
|
||||
if($bildbreite > 0)
|
||||
{
|
||||
$breite = $bildbreite;
|
||||
}else{
|
||||
$breite = 30;
|
||||
}
|
||||
if($bildhoehe > 0)
|
||||
{
|
||||
$hoehe = $bildhoehe;
|
||||
}else{
|
||||
$hoehe = $breite;
|
||||
}
|
||||
$_breite = $breite;
|
||||
$_hoehe = $hoehe;
|
||||
list($width, $height) = getimagesize($filename.'1.jpg');
|
||||
if($width > 0 && $height > 0)
|
||||
{
|
||||
$scalex = $breite / $width;
|
||||
$scaley = $hoehe / $height;
|
||||
if($scalex < $scaley)
|
||||
{
|
||||
$hoehe /= $scaley / $scalex;
|
||||
$hoehe = ceil($hoehe);
|
||||
}else{
|
||||
$breite /= $scalex / $scaley;
|
||||
$breite = ceil($breite);
|
||||
}
|
||||
$str = $content;
|
||||
$manipulator = new ImageManipulator($str);
|
||||
$manipulator->resample($_breite*10, $_hoehe*10, false,true, true);
|
||||
$typ = IMAGETYPE_JPEG;
|
||||
$manipulator->save($filename.'2.jpg', $typ);
|
||||
$items[0] = $filename.'2.jpg';
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
$type = exif_imagetype ( trim($items[0]) );
|
||||
|
||||
switch($type)
|
||||
{
|
||||
case IMAGETYPE_GIF: $type="gif"; break;
|
||||
case IMAGETYPE_JPEG: $type="jpg"; break;
|
||||
case IMAGETYPE_PNG: $type="png"; break;
|
||||
default: $type="";
|
||||
}
|
||||
if($type!="")
|
||||
{
|
||||
$this->Image(trim($items[0]),trim($items->attributes()->x),trim($items->attributes()->y),trim($items->attributes()->width),trim($items->attributes()->height),$type);
|
||||
}
|
||||
if($filename != '')
|
||||
{
|
||||
unlink($filename.'1.jpg');
|
||||
unlink($filename.'2.jpg');
|
||||
}
|
||||
break;
|
||||
|
||||
case "barcode":
|
||||
if((String)($items->attributes()->type)=="E30") {
|
||||
$this->EAN13($items->attributes()->x,$items->attributes()->y, $items[0],$items->attributes()->size);
|
||||
}
|
||||
else if((String)($items->attributes()->type)=="Code128" || (String)($items->attributes()->type)=="1") {
|
||||
$this->Code128($items->attributes()->x, $items->attributes()->y, $items[0], $items->attributes()->width, $items->attributes()->size);
|
||||
}
|
||||
else if((String)($items->attributes()->type)=="GS1-128" || (String)($items->attributes()->type)=="1") {
|
||||
//$items[0] = "!FNC1!0104012345012345!FNC1!081231!FNC1!1012345";
|
||||
|
||||
$tmp =explode("!FNC1!",$items[0]);
|
||||
$codewithfnc1 = implode(chr(206),$tmp);
|
||||
|
||||
//echo chr(206)."0104012345012345".chr(206)."081231".chr(206)."1012345";
|
||||
//$this->Code128($items->attributes()->x, $items->attributes()->y, chr(206)."0104012345012345".chr(206)."081231".chr(206)."1012345", $items->attributes()->width, $items->attributes()->size); // 206 = FNC1
|
||||
$this->Code128($items->attributes()->x, $items->attributes()->y, $codewithfnc1, $items->attributes()->width, $items->attributes()->size); // 206 = FNC1
|
||||
//$this->Code128($items->attributes()->x, $items->attributes()->y, chr(206).$items[0], $items->attributes()->width, $items->attributes()->size); // 206 = FNC1
|
||||
}
|
||||
else { // standard auf 2 bzw default
|
||||
$this->Code39($items->attributes()->x,$items->attributes()->y, $items[0], 0.5, $items->attributes()->size);//, $printText=false)
|
||||
}
|
||||
|
||||
break;
|
||||
case "qrcode":
|
||||
/** @var BarcodeFactory $factory */
|
||||
$factory = $this->app->Container->get('BarcodeFactory');
|
||||
$ecLevel = 'M';
|
||||
$type = 'png';
|
||||
$filename = rtrim($this->app->erp->GetTMP(),'/').'/'.md5(microtime(true).$items[0]).'.' . $type;
|
||||
|
||||
$qrText = (string) $items[0];
|
||||
$qrcode = $factory->createQrCode($qrText, $ecLevel);
|
||||
$width = $items->attributes()->width ?? $items->attributes()->size;
|
||||
$height = $items->attributes()->height ?? $items->attributes()->size;
|
||||
$image = $qrcode->toPng(trim($width), trim($height));
|
||||
|
||||
if(file_put_contents($filename, $image) === false) {
|
||||
throw new RuntimeException('qrcode image cannot be created. Perhaps due to missing write permission');
|
||||
}
|
||||
unset($image);
|
||||
$this->Image(
|
||||
trim($filename),
|
||||
trim((int) $items->attributes()->x),
|
||||
trim((int) $items->attributes()->y),
|
||||
trim((int) $width),
|
||||
trim((int) $height),
|
||||
$type
|
||||
);
|
||||
unlink($filename);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,8 +43,13 @@ class GutschriftPDF extends BriefpapierCustom {
|
|||
{
|
||||
// pruefe ob es mehr als ein steuersatz gibt // wenn ja dann darf man sie nicht ausblenden
|
||||
$check = $this->app->erp->SteuerAusBeleg($this->doctype,$id);
|
||||
if(!empty($check)?count($check):0>1)$this->ust_spalteausblende=false;
|
||||
else $this->ust_spalteausblende=true;
|
||||
$this->ust_spalteausblende=false;
|
||||
|
||||
if(!empty($check)) {
|
||||
if (count($check) == 1) {
|
||||
$this->ust_spalteausblende=true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$briefpapier_bearbeiter_ausblenden = $this->app->erp->Firmendaten('briefpapier_bearbeiter_ausblenden');
|
||||
|
|
|
|||
|
|
@ -50,8 +50,13 @@ class RechnungPDF extends BriefpapierCustom {
|
|||
{
|
||||
// pruefe ob es mehr als ein steuersatz gibt // wenn ja dann darf man sie nicht ausblenden
|
||||
$check = $this->app->erp->SteuerAusBeleg($this->doctype,$id);
|
||||
if(!empty($check)?count($check):0>1)$this->ust_spalteausblende=false;
|
||||
else $this->ust_spalteausblende=true;
|
||||
$this->ust_spalteausblende=false;
|
||||
|
||||
if(!empty($check)) {
|
||||
if (count($check) == 1) {
|
||||
$this->ust_spalteausblende=true;
|
||||
}
|
||||
}
|
||||
}
|
||||
$lvl = null;
|
||||
$briefpapier_bearbeiter_ausblenden = $this->app->erp->Firmendaten('briefpapier_bearbeiter_ausblenden');
|
||||
|
|
|
|||
|
|
@ -1,238 +1,244 @@
|
|||
<?php
|
||||
/*
|
||||
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*
|
||||
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
|
||||
*
|
||||
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
|
||||
*
|
||||
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
|
||||
* to obtain the text of the corresponding license version.
|
||||
*
|
||||
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
/*
|
||||
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*
|
||||
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
|
||||
*
|
||||
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
|
||||
*
|
||||
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
|
||||
* to obtain the text of the corresponding license version.
|
||||
*
|
||||
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
|
||||
class ObjGenVerbindlichkeit_Position
|
||||
{
|
||||
|
||||
private $id;
|
||||
private $verbindlichkeit;
|
||||
private $sort;
|
||||
private $artikel;
|
||||
private $projekt;
|
||||
private $bestellung;
|
||||
private $nummer;
|
||||
private $bestellnummer;
|
||||
private $waehrung;
|
||||
private $einheit;
|
||||
private $vpe;
|
||||
private $bezeichnung;
|
||||
private $umsatzsteuer;
|
||||
private $status;
|
||||
private $beschreibung;
|
||||
private $lieferdatum;
|
||||
private $steuersatz;
|
||||
private $steuertext;
|
||||
private $preis;
|
||||
private $menge;
|
||||
private $kostenstelle;
|
||||
|
||||
public $app; //application object
|
||||
|
||||
public function __construct($app)
|
||||
{
|
||||
$this->app = $app;
|
||||
}
|
||||
|
||||
public function Select($id)
|
||||
{
|
||||
if(is_numeric($id))
|
||||
$result = $this->app->DB->SelectArr("SELECT * FROM `verbindlichkeit_position` WHERE (`id` = '$id')");
|
||||
else
|
||||
return -1;
|
||||
|
||||
$result = $result[0];
|
||||
|
||||
$this->id=$result['id'];
|
||||
$this->verbindlichkeit=$result['verbindlichkeit'];
|
||||
$this->sort=$result['sort'];
|
||||
$this->artikel=$result['artikel'];
|
||||
$this->projekt=$result['projekt'];
|
||||
$this->bestellung=$result['bestellung'];
|
||||
$this->nummer=$result['nummer'];
|
||||
$this->bestellnummer=$result['bestellnummer'];
|
||||
$this->waehrung=$result['waehrung'];
|
||||
$this->einheit=$result['einheit'];
|
||||
$this->vpe=$result['vpe'];
|
||||
$this->bezeichnung=$result['bezeichnung'];
|
||||
$this->umsatzsteuer=$result['umsatzsteuer'];
|
||||
$this->status=$result['status'];
|
||||
$this->beschreibung=$result['beschreibung'];
|
||||
$this->lieferdatum=$result['lieferdatum'];
|
||||
$this->steuersatz=$result['steuersatz'];
|
||||
$this->steuertext=$result['steuertext'];
|
||||
$this->preis=$result['preis'];
|
||||
$this->menge=$result['menge'];
|
||||
$this->kostenstelle=$result['kostenstelle'];
|
||||
}
|
||||
|
||||
public function Create()
|
||||
{
|
||||
$sql = "INSERT INTO `verbindlichkeit_position` (`id`,`verbindlichkeit`,`sort`,`artikel`,`projekt`,`bestellung`,`nummer`,`bestellnummer`,`waehrung`,`einheit`,`vpe`,`bezeichnung`,`umsatzsteuer`,`status`,`beschreibung`,`lieferdatum`,`steuersatz`,`steuertext`,`preis`,`menge`,`kostenstelle`)
|
||||
VALUES(NULL,'{$this->verbindlichkeit}','{$this->sort}','{$this->artikel}','{$this->projekt}','{$this->bestellung}','{$this->nummer}','{$this->bestellnummer}','{$this->waehrung}','{$this->einheit}','{$this->vpe}','{$this->bezeichnung}','{$this->umsatzsteuer}','{$this->status}','{$this->beschreibung}','{$this->lieferdatum}','{$this->steuersatz}','{$this->steuertext}','{$this->preis}','{$this->menge}','{$this->kostenstelle}')";
|
||||
|
||||
$this->app->DB->Insert($sql);
|
||||
$this->id = $this->app->DB->GetInsertID();
|
||||
}
|
||||
|
||||
public function Update()
|
||||
{
|
||||
if(!is_numeric($this->id)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
$sql = "UPDATE `verbindlichkeit_position` SET
|
||||
`verbindlichkeit`='{$this->verbindlichkeit}',
|
||||
`sort`='{$this->sort}',
|
||||
`artikel`='{$this->artikel}',
|
||||
`projekt`='{$this->projekt}',
|
||||
`bestellung`='{$this->bestellung}',
|
||||
`nummer`='{$this->nummer}',
|
||||
`bestellnummer`='{$this->bestellnummer}',
|
||||
`waehrung`='{$this->waehrung}',
|
||||
`einheit`='{$this->einheit}',
|
||||
`vpe`='{$this->vpe}',
|
||||
`bezeichnung`='{$this->bezeichnung}',
|
||||
`umsatzsteuer`='{$this->umsatzsteuer}',
|
||||
`status`='{$this->status}',
|
||||
`beschreibung`='{$this->beschreibung}',
|
||||
`lieferdatum`='{$this->lieferdatum}',
|
||||
`steuersatz`='{$this->steuersatz}',
|
||||
`steuertext`='{$this->steuertext}',
|
||||
`preis`='{$this->preis}',
|
||||
`menge`='{$this->menge}',
|
||||
`kostenstelle`='{$this->kostenstelle}'
|
||||
WHERE (`id`='{$this->id}')";
|
||||
|
||||
$this->app->DB->Update($sql);
|
||||
}
|
||||
|
||||
public function Delete($id='')
|
||||
{
|
||||
if(is_numeric($id))
|
||||
{
|
||||
$this->id=$id;
|
||||
}
|
||||
else
|
||||
return -1;
|
||||
|
||||
$sql = "DELETE FROM `verbindlichkeit_position` WHERE (`id`='{$this->id}')";
|
||||
$this->app->DB->Delete($sql);
|
||||
|
||||
$this->id='';
|
||||
$this->verbindlichkeit='';
|
||||
$this->sort='';
|
||||
$this->artikel='';
|
||||
$this->projekt='';
|
||||
$this->bestellung='';
|
||||
$this->nummer='';
|
||||
$this->bestellnummer='';
|
||||
$this->waehrung='';
|
||||
$this->einheit='';
|
||||
$this->vpe='';
|
||||
$this->bezeichnung='';
|
||||
$this->umsatzsteuer='';
|
||||
$this->status='';
|
||||
$this->beschreibung='';
|
||||
$this->lieferdatum='';
|
||||
$this->steuersatz='';
|
||||
$this->steuertext='';
|
||||
$this->preis='';
|
||||
$this->menge='';
|
||||
$this->kostenstelle='';
|
||||
}
|
||||
|
||||
public function Copy()
|
||||
{
|
||||
$this->id = '';
|
||||
$this->Create();
|
||||
}
|
||||
|
||||
/**
|
||||
Mit dieser Funktion kann man einen Datensatz suchen
|
||||
dafuer muss man die Attribute setzen nach denen gesucht werden soll
|
||||
dann kriegt man als ergebnis den ersten Datensatz der auf die Suche uebereinstimmt
|
||||
zurueck. Mit Next() kann man sich alle weiteren Ergebnisse abholen
|
||||
**/
|
||||
|
||||
public function Find()
|
||||
{
|
||||
//TODO Suche mit den werten machen
|
||||
}
|
||||
|
||||
public function FindNext()
|
||||
{
|
||||
//TODO Suche mit den alten werten fortsetzen machen
|
||||
}
|
||||
|
||||
/** Funktionen um durch die Tabelle iterieren zu koennen */
|
||||
|
||||
public function Next()
|
||||
{
|
||||
//TODO: SQL Statement passt nach meiner Meinung nach noch nicht immer
|
||||
}
|
||||
|
||||
public function First()
|
||||
{
|
||||
//TODO: SQL Statement passt nach meiner Meinung nach noch nicht immer
|
||||
}
|
||||
|
||||
/** dank dieser funktionen kann man die tatsaechlichen werte einfach
|
||||
ueberladen (in einem Objekt das mit seiner klasse ueber dieser steht)**/
|
||||
|
||||
public function SetId($value) { $this->id=$value; }
|
||||
public function GetId() { return $this->id; }
|
||||
public function SetVerbindlichkeit($value) { $this->verbindlichkeit=$value; }
|
||||
public function GetVerbindlichkeit() { return $this->verbindlichkeit; }
|
||||
public function SetSort($value) { $this->sort=$value; }
|
||||
public function GetSort() { return $this->sort; }
|
||||
public function SetArtikel($value) { $this->artikel=$value; }
|
||||
public function GetArtikel() { return $this->artikel; }
|
||||
public function SetProjekt($value) { $this->projekt=$value; }
|
||||
public function GetProjekt() { return $this->projekt; }
|
||||
public function SetBestellung($value) { $this->bestellung=$value; }
|
||||
public function GetBestellung() { return $this->bestellung; }
|
||||
public function SetNummer($value) { $this->nummer=$value; }
|
||||
public function GetNummer() { return $this->nummer; }
|
||||
public function SetBestellnummer($value) { $this->bestellnummer=$value; }
|
||||
public function GetBestellnummer() { return $this->bestellnummer; }
|
||||
public function SetWaehrung($value) { $this->waehrung=$value; }
|
||||
public function GetWaehrung() { return $this->waehrung; }
|
||||
public function SetEinheit($value) { $this->einheit=$value; }
|
||||
public function GetEinheit() { return $this->einheit; }
|
||||
public function SetVpe($value) { $this->vpe=$value; }
|
||||
public function GetVpe() { return $this->vpe; }
|
||||
public function SetBezeichnung($value) { $this->bezeichnung=$value; }
|
||||
public function GetBezeichnung() { return $this->bezeichnung; }
|
||||
public function SetUmsatzsteuer($value) { $this->umsatzsteuer=$value; }
|
||||
public function GetUmsatzsteuer() { return $this->umsatzsteuer; }
|
||||
public function SetStatus($value) { $this->status=$value; }
|
||||
public function GetStatus() { return $this->status; }
|
||||
public function SetBeschreibung($value) { $this->beschreibung=$value; }
|
||||
public function GetBeschreibung() { return $this->beschreibung; }
|
||||
public function SetLieferdatum($value) { $this->lieferdatum=$value; }
|
||||
public function GetLieferdatum() { return $this->lieferdatum; }
|
||||
public function SetSteuersatz($value) { $this->steuersatz=$value; }
|
||||
public function GetSteuersatz() { return $this->steuersatz; }
|
||||
public function SetSteuertext($value) { $this->steuertext=$value; }
|
||||
public function GetSteuertext() { return $this->steuertext; }
|
||||
public function SetPreis($value) { $this->preis=$value; }
|
||||
public function GetPreis() { return $this->preis; }
|
||||
public function SetMenge($value) { $this->menge=$value; }
|
||||
public function GetMenge() { return $this->menge; }
|
||||
public function SetKostenstelle($value) { $this->kostenstelle=$value; }
|
||||
public function GetKostenstelle() { return $this->kostenstelle; }
|
||||
|
||||
}
|
||||
<?php
|
||||
|
||||
class ObjGenVerbindlichkeit_Position
|
||||
{
|
||||
|
||||
private $id;
|
||||
private $verbindlichkeit;
|
||||
private $sort;
|
||||
private $artikel;
|
||||
private $projekt;
|
||||
private $bestellung;
|
||||
private $nummer;
|
||||
private $bestellnummer;
|
||||
private $waehrung;
|
||||
private $einheit;
|
||||
private $vpe;
|
||||
private $bezeichnung;
|
||||
private $umsatzsteuer;
|
||||
private $status;
|
||||
private $beschreibung;
|
||||
private $lieferdatum;
|
||||
private $steuersatz;
|
||||
private $steuertext;
|
||||
private $preis;
|
||||
private $menge;
|
||||
private $kostenstelle;
|
||||
private $sachkonto;
|
||||
|
||||
public $app; //application object
|
||||
|
||||
public function __construct($app)
|
||||
{
|
||||
$this->app = $app;
|
||||
}
|
||||
|
||||
public function Select($id)
|
||||
{
|
||||
if(is_numeric($id))
|
||||
$result = $this->app->DB->SelectArr("SELECT * FROM `verbindlichkeit_position` WHERE (`id` = '$id')");
|
||||
else
|
||||
return -1;
|
||||
|
||||
$result = $result[0];
|
||||
|
||||
$this->id=$result['id'];
|
||||
$this->verbindlichkeit=$result['verbindlichkeit'];
|
||||
$this->sort=$result['sort'];
|
||||
$this->artikel=$result['artikel'];
|
||||
$this->projekt=$result['projekt'];
|
||||
$this->bestellung=$result['bestellung'];
|
||||
$this->nummer=$result['nummer'];
|
||||
$this->bestellnummer=$result['bestellnummer'];
|
||||
$this->waehrung=$result['waehrung'];
|
||||
$this->einheit=$result['einheit'];
|
||||
$this->vpe=$result['vpe'];
|
||||
$this->bezeichnung=$result['bezeichnung'];
|
||||
$this->umsatzsteuer=$result['umsatzsteuer'];
|
||||
$this->status=$result['status'];
|
||||
$this->beschreibung=$result['beschreibung'];
|
||||
$this->lieferdatum=$result['lieferdatum'];
|
||||
$this->steuersatz=$result['steuersatz'];
|
||||
$this->steuertext=$result['steuertext'];
|
||||
$this->preis=$result['preis'];
|
||||
$this->menge=$result['menge'];
|
||||
$this->kostenstelle=$result['kostenstelle'];
|
||||
$this->sachkonto=$result['sachkonto'];
|
||||
}
|
||||
|
||||
public function Create()
|
||||
{
|
||||
$sql = "INSERT INTO `verbindlichkeit_position` (`id`,`verbindlichkeit`,`sort`,`artikel`,`projekt`,`bestellung`,`nummer`,`bestellnummer`,`waehrung`,`einheit`,`vpe`,`bezeichnung`,`umsatzsteuer`,`status`,`beschreibung`,`lieferdatum`,`steuersatz`,`steuertext`,`preis`,`menge`,`kostenstelle`)
|
||||
VALUES(NULL,'{$this->verbindlichkeit}','{$this->sort}','{$this->artikel}','{$this->projekt}','{$this->bestellung}','{$this->nummer}','{$this->bestellnummer}','{$this->waehrung}','{$this->einheit}','{$this->vpe}','{$this->bezeichnung}','{$this->umsatzsteuer}','{$this->status}','{$this->beschreibung}','{$this->lieferdatum}','{$this->steuersatz}','{$this->steuertext}','{$this->preis}','{$this->menge}','{$this->kostenstelle}','{$this->sachkonto}')";
|
||||
|
||||
$this->app->DB->Insert($sql);
|
||||
$this->id = $this->app->DB->GetInsertID();
|
||||
}
|
||||
|
||||
public function Update()
|
||||
{
|
||||
if(!is_numeric($this->id)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
$sql = "UPDATE `verbindlichkeit_position` SET
|
||||
`verbindlichkeit`='{$this->verbindlichkeit}',
|
||||
`sort`='{$this->sort}',
|
||||
`artikel`='{$this->artikel}',
|
||||
`projekt`='{$this->projekt}',
|
||||
`bestellung`='{$this->bestellung}',
|
||||
`nummer`='{$this->nummer}',
|
||||
`bestellnummer`='{$this->bestellnummer}',
|
||||
`waehrung`='{$this->waehrung}',
|
||||
`einheit`='{$this->einheit}',
|
||||
`vpe`='{$this->vpe}',
|
||||
`bezeichnung`='{$this->bezeichnung}',
|
||||
`umsatzsteuer`='{$this->umsatzsteuer}',
|
||||
`status`='{$this->status}',
|
||||
`beschreibung`='{$this->beschreibung}',
|
||||
`lieferdatum`='{$this->lieferdatum}',
|
||||
`steuersatz`='{$this->steuersatz}',
|
||||
`steuertext`='{$this->steuertext}',
|
||||
`preis`='{$this->preis}',
|
||||
`menge`='{$this->menge}',
|
||||
`kostenstelle`='{$this->kostenstelle}',
|
||||
`sachkonto`='{$this->sachkonto}'
|
||||
WHERE (`id`='{$this->id}')";
|
||||
|
||||
$this->app->DB->Update($sql);
|
||||
}
|
||||
|
||||
public function Delete($id='')
|
||||
{
|
||||
if(is_numeric($id))
|
||||
{
|
||||
$this->id=$id;
|
||||
}
|
||||
else
|
||||
return -1;
|
||||
|
||||
$sql = "DELETE FROM `verbindlichkeit_position` WHERE (`id`='{$this->id}')";
|
||||
$this->app->DB->Delete($sql);
|
||||
|
||||
$this->id='';
|
||||
$this->verbindlichkeit='';
|
||||
$this->sort='';
|
||||
$this->artikel='';
|
||||
$this->projekt='';
|
||||
$this->bestellung='';
|
||||
$this->nummer='';
|
||||
$this->bestellnummer='';
|
||||
$this->waehrung='';
|
||||
$this->einheit='';
|
||||
$this->vpe='';
|
||||
$this->bezeichnung='';
|
||||
$this->umsatzsteuer='';
|
||||
$this->status='';
|
||||
$this->beschreibung='';
|
||||
$this->lieferdatum='';
|
||||
$this->steuersatz='';
|
||||
$this->steuertext='';
|
||||
$this->preis='';
|
||||
$this->menge='';
|
||||
$this->kostenstelle='';
|
||||
$this->sachkonto='';
|
||||
}
|
||||
|
||||
public function Copy()
|
||||
{
|
||||
$this->id = '';
|
||||
$this->Create();
|
||||
}
|
||||
|
||||
/**
|
||||
Mit dieser Funktion kann man einen Datensatz suchen
|
||||
dafuer muss man die Attribute setzen nach denen gesucht werden soll
|
||||
dann kriegt man als ergebnis den ersten Datensatz der auf die Suche uebereinstimmt
|
||||
zurueck. Mit Next() kann man sich alle weiteren Ergebnisse abholen
|
||||
**/
|
||||
|
||||
public function Find()
|
||||
{
|
||||
//TODO Suche mit den werten machen
|
||||
}
|
||||
|
||||
public function FindNext()
|
||||
{
|
||||
//TODO Suche mit den alten werten fortsetzen machen
|
||||
}
|
||||
|
||||
/** Funktionen um durch die Tabelle iterieren zu koennen */
|
||||
|
||||
public function Next()
|
||||
{
|
||||
//TODO: SQL Statement passt nach meiner Meinung nach noch nicht immer
|
||||
}
|
||||
|
||||
public function First()
|
||||
{
|
||||
//TODO: SQL Statement passt nach meiner Meinung nach noch nicht immer
|
||||
}
|
||||
|
||||
/** dank dieser funktionen kann man die tatsaechlichen werte einfach
|
||||
ueberladen (in einem Objekt das mit seiner klasse ueber dieser steht)**/
|
||||
|
||||
public function SetId($value) { $this->id=$value; }
|
||||
public function GetId() { return $this->id; }
|
||||
public function SetVerbindlichkeit($value) { $this->verbindlichkeit=$value; }
|
||||
public function GetVerbindlichkeit() { return $this->verbindlichkeit; }
|
||||
public function SetSort($value) { $this->sort=$value; }
|
||||
public function GetSort() { return $this->sort; }
|
||||
public function SetArtikel($value) { $this->artikel=$value; }
|
||||
public function GetArtikel() { return $this->artikel; }
|
||||
public function SetProjekt($value) { $this->projekt=$value; }
|
||||
public function GetProjekt() { return $this->projekt; }
|
||||
public function SetBestellung($value) { $this->bestellung=$value; }
|
||||
public function GetBestellung() { return $this->bestellung; }
|
||||
public function SetNummer($value) { $this->nummer=$value; }
|
||||
public function GetNummer() { return $this->nummer; }
|
||||
public function SetBestellnummer($value) { $this->bestellnummer=$value; }
|
||||
public function GetBestellnummer() { return $this->bestellnummer; }
|
||||
public function SetWaehrung($value) { $this->waehrung=$value; }
|
||||
public function GetWaehrung() { return $this->waehrung; }
|
||||
public function SetEinheit($value) { $this->einheit=$value; }
|
||||
public function GetEinheit() { return $this->einheit; }
|
||||
public function SetVpe($value) { $this->vpe=$value; }
|
||||
public function GetVpe() { return $this->vpe; }
|
||||
public function SetBezeichnung($value) { $this->bezeichnung=$value; }
|
||||
public function GetBezeichnung() { return $this->bezeichnung; }
|
||||
public function SetUmsatzsteuer($value) { $this->umsatzsteuer=$value; }
|
||||
public function GetUmsatzsteuer() { return $this->umsatzsteuer; }
|
||||
public function SetStatus($value) { $this->status=$value; }
|
||||
public function GetStatus() { return $this->status; }
|
||||
public function SetBeschreibung($value) { $this->beschreibung=$value; }
|
||||
public function GetBeschreibung() { return $this->beschreibung; }
|
||||
public function SetLieferdatum($value) { $this->lieferdatum=$value; }
|
||||
public function GetLieferdatum() { return $this->lieferdatum; }
|
||||
public function SetSteuersatz($value) { $this->steuersatz=$value; }
|
||||
public function GetSteuersatz() { return $this->steuersatz; }
|
||||
public function SetSteuertext($value) { $this->steuertext=$value; }
|
||||
public function GetSteuertext() { return $this->steuertext; }
|
||||
public function SetPreis($value) { $this->preis=$value; }
|
||||
public function GetPreis() { return $this->preis; }
|
||||
public function SetMenge($value) { $this->menge=$value; }
|
||||
public function GetMenge() { return $this->menge; }
|
||||
public function SetKostenstelle($value) { $this->kostenstelle=$value; }
|
||||
public function GetKostenstelle() { return $this->kostenstelle; }
|
||||
public function SetSachkonto($value) { $this->sachkonto=$value; }
|
||||
public function GetSachkonto() { return $this->sachkonto; }
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,59 +1,59 @@
|
|||
<?php
|
||||
/*
|
||||
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*
|
||||
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
|
||||
*
|
||||
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
|
||||
*
|
||||
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
|
||||
* to obtain the text of the corresponding license version.
|
||||
*
|
||||
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
/*
|
||||
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*
|
||||
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
|
||||
*
|
||||
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
|
||||
*
|
||||
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
|
||||
* to obtain the text of the corresponding license version.
|
||||
*
|
||||
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
|
||||
class GenAdresse {
|
||||
|
||||
function __construct(&$app) {
|
||||
|
||||
$this->app=&$app;
|
||||
$this->app->ActionHandlerInit($this);
|
||||
|
||||
$this->app->ActionHandler("create","AdresseCreate");
|
||||
$this->app->ActionHandler("edit","AdresseEdit");
|
||||
$this->app->ActionHandler("copy","AdresseCopy");
|
||||
$this->app->ActionHandler("list","AdresseList");
|
||||
$this->app->ActionHandler("delete","AdresseDelete");
|
||||
|
||||
$this->app->Tpl->Set("HEADING","Adresse"); //$this->app->ActionHandlerListen($app);
|
||||
}
|
||||
|
||||
function AdresseCreate(){
|
||||
$this->app->Tpl->Set("HEADING","Adresse (Anlegen)");
|
||||
$this->app->PageBuilder->CreateGen("adresse_create.tpl");
|
||||
}
|
||||
|
||||
function AdresseEdit(){
|
||||
$this->app->Tpl->Set("HEADING","Adresse (Bearbeiten)");
|
||||
$this->app->PageBuilder->CreateGen("adresse_edit.tpl");
|
||||
}
|
||||
|
||||
function AdresseCopy(){
|
||||
$this->app->Tpl->Set("HEADING","Adresse (Kopieren)");
|
||||
$this->app->PageBuilder->CreateGen("adresse_copy.tpl");
|
||||
}
|
||||
|
||||
function AdresseDelete(){
|
||||
$this->app->Tpl->Set("HEADING","Adresse (Löschen)");
|
||||
$this->app->PageBuilder->CreateGen("adresse_delete.tpl");
|
||||
}
|
||||
|
||||
function AdresseList(){
|
||||
$this->app->Tpl->Set("HEADING","Adresse (Übersicht)");
|
||||
$this->app->PageBuilder->CreateGen("adresse_list.tpl");
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
|
||||
class GenAdresse {
|
||||
|
||||
function __construct(&$app) {
|
||||
|
||||
$this->app=&$app;
|
||||
$this->app->ActionHandlerInit($this);
|
||||
|
||||
$this->app->ActionHandler("create","AdresseCreate");
|
||||
$this->app->ActionHandler("edit","AdresseEdit");
|
||||
$this->app->ActionHandler("copy","AdresseCopy");
|
||||
$this->app->ActionHandler("list","AdresseList");
|
||||
$this->app->ActionHandler("delete","AdresseDelete");
|
||||
|
||||
$this->app->Tpl->Set("HEADING","Adresse"); //$this->app->ActionHandlerListen($app);
|
||||
}
|
||||
|
||||
function AdresseCreate(){
|
||||
$this->app->Tpl->Set("HEADING","Adresse (Anlegen)");
|
||||
$this->app->PageBuilder->CreateGen("adresse_create.tpl");
|
||||
}
|
||||
|
||||
function AdresseEdit(){
|
||||
$this->app->Tpl->Set("HEADING","Adresse (Bearbeiten)");
|
||||
$this->app->PageBuilder->CreateGen("adresse_edit.tpl");
|
||||
}
|
||||
|
||||
function AdresseCopy(){
|
||||
$this->app->Tpl->Set("HEADING","Adresse (Kopieren)");
|
||||
$this->app->PageBuilder->CreateGen("adresse_copy.tpl");
|
||||
}
|
||||
|
||||
function AdresseDelete(){
|
||||
$this->app->Tpl->Set("HEADING","Adresse (Löschen)");
|
||||
$this->app->PageBuilder->CreateGen("adresse_delete.tpl");
|
||||
}
|
||||
|
||||
function AdresseList(){
|
||||
$this->app->Tpl->Set("HEADING","Adresse (Übersicht)");
|
||||
$this->app->PageBuilder->CreateGen("adresse_list.tpl");
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -674,6 +674,7 @@ class Ajax {
|
|||
echo $str;
|
||||
exit;
|
||||
}
|
||||
|
||||
if(!empty($datei['parameter'])) {
|
||||
if($cmd === 'projekt') {
|
||||
if(!$this->app->erp->UserProjektRecht($datei['parameter'])) {
|
||||
|
|
@ -707,8 +708,7 @@ class Ajax {
|
|||
}
|
||||
}
|
||||
}
|
||||
//Rechte prüfen
|
||||
|
||||
//Rechte prüfen
|
||||
$userdata = isset($this->app->Conf->WFuserdata)
|
||||
?$this->app->Conf->WFuserdata
|
||||
:(str_replace('index.php', '', $_SERVER['SCRIPT_FILENAME']).'../userdata');
|
||||
|
|
@ -746,34 +746,17 @@ class Ajax {
|
|||
exit;
|
||||
break;
|
||||
case 'application/pdf':
|
||||
$str = file_get_contents(dirname(__DIR__) . '/themes/new/images/pdf.svg');
|
||||
$str = file_get_contents(dirname(__DIR__) . '/themes/new/images/pdf.png');
|
||||
header('Content-type: image/png');
|
||||
echo $str;
|
||||
exit;
|
||||
break;
|
||||
default:
|
||||
$str = file_get_contents(dirname(__DIR__) . '/themes/new/images/pdf.svg');
|
||||
if(substr(strtolower($datei['dateiname']),-4) === '.gif'){
|
||||
header('Content-type: image/gif');
|
||||
echo $str;
|
||||
exit;
|
||||
}
|
||||
if(substr(strtolower($datei['dateiname']),-4) === '.png'){
|
||||
header('Content-type: image/png');
|
||||
echo $str;
|
||||
exit;
|
||||
}
|
||||
if(substr(strtolower($datei['dateiname']),-4) === '.jpg'
|
||||
|| substr(strtolower($datei['dateiname']),-4) === 'jpeg'){
|
||||
header('Content-type: image/jpg');
|
||||
echo $str;
|
||||
exit;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(file_exists($cachefolder.'/'.$datei['id'].'_100_100')) {
|
||||
$type = is_file($path.'/'.$datei['id'])? false : mime_content_type($path.'/'.$datei['id']);
|
||||
if($type === false) {
|
||||
|
|
@ -2379,7 +2362,14 @@ select a.kundennummer, (SELECT name FROM adresse a2 WHERE a2.kundennummer = a.ku
|
|||
for($i = 0; $i < $carr; $i++)
|
||||
$newarr[] = $arr[$i]['name'];
|
||||
break;
|
||||
case "sachkonto_aufwendungen":
|
||||
$arr = $this->app->DB->SelectArr("SELECT CONCAT(sachkonto,' ',beschriftung) as name FROM kontorahmen
|
||||
WHERE art = 1 AND (beschriftung LIKE '%$term%' OR sachkonto LIKE '%$term%' OR sachkonto LIKE '%$term2%' OR sachkonto LIKE '%$term3%' OR beschriftung LIKE '%$term2%' OR beschriftung LIKE '%$term3%') AND ausblenden!=1 $andprojekt ORDER by sachkonto");
|
||||
|
||||
$carr = !empty($arr)?count($arr):0;
|
||||
for($i = 0; $i < $carr; $i++)
|
||||
$newarr[] = $arr[$i]['name'];
|
||||
break;
|
||||
case "lieferbedingungen":
|
||||
$arr = $this->app->DB->SelectArr("SELECT CONCAT(lieferbedingungen) as name FROM lieferbedingungen
|
||||
WHERE (lieferbedingungen LIKE '%$term%' OR lieferbedingungen LIKE '%$term2%' OR lieferbedingungen LIKE '%$term3%') ORDER by lieferbedingungen");
|
||||
|
|
@ -2458,6 +2448,7 @@ select a.kundennummer, (SELECT name FROM adresse a2 WHERE a2.kundennummer = a.ku
|
|||
$subwhere = $this->AjaxFilterWhere($termorig,$felder);
|
||||
|
||||
$arr = $this->app->DB->SelectArr("SELECT CONCAT(nummer,' ',beschreibung) as name FROM kostenstellen WHERE $subwhere ORDER by nummer");
|
||||
|
||||
$carr = !empty($arr)?count($arr):0;
|
||||
for($i = 0; $i < $carr; $i++)
|
||||
$newarr[] = $arr[$i]['name'];
|
||||
|
|
@ -2498,7 +2489,7 @@ select a.kundennummer, (SELECT name FROM adresse a2 WHERE a2.kundennummer = a.ku
|
|||
$adresse = $this->app->DB->Select("SELECT id FROM adresse WHERE lieferantennummer = '".$lieferant[0]."' AND lieferantennummer <> '' LIMIT 1");
|
||||
}
|
||||
$beleg = str_replace('lieferanten','',$filtername);
|
||||
$arr = $this->app->DB->SelectArr("SELECT CONCAT(id,' ',if(belegnr <> '',belegnr,'ENTWURF'),' ',lieferantennummer,' ',name) as name FROM $beleg WHERE (belegnr LIKE '%$term%' OR name LIKE '%$term%' OR lieferantennummer LIKE '$%term%') AND (status = 'angelegt' OR status = 'freigegeben')
|
||||
$arr = $this->app->DB->SelectArr("SELECT CONCAT(belegnr,' ',lieferantennummer,' ',name) as name FROM $beleg WHERE (belegnr <> '') AND (belegnr LIKE '%$term%' OR name LIKE '%$term%' OR lieferantennummer LIKE '$%term%') AND (status = 'versendet' OR status = 'freigegeben')
|
||||
".($adresse?" AND adresse = '$adresse' ":'')." ".$this->app->erp->ProjektRechte('projekt')."
|
||||
ORDER by belegnr LIMIT 20" );
|
||||
$carr = !empty($arr)?count($arr):0;
|
||||
|
|
@ -3841,10 +3832,13 @@ select a.kundennummer, (SELECT name FROM adresse a2 WHERE a2.kundennummer = a.ku
|
|||
$term = str_replace(',','',$term);
|
||||
}
|
||||
|
||||
$adresse = (int)$this->app->Secure->GetGET('adresse');
|
||||
if (!empty($adresse)) {
|
||||
$subwhere .= " AND a.id = ".$adresse;
|
||||
}
|
||||
|
||||
$sql =
|
||||
"SELECT CONCAT(v.id,
|
||||
IF(IFNULL(v.belegnr, '') <> '' AND v.belegnr!=v.id,
|
||||
CONCAT(' Nr. ',v.belegnr),''),
|
||||
"SELECT CONCAT(v.belegnr,
|
||||
' Betrag: ',".$this->app->erp->FormatPreis('v.betrag',2).",
|
||||
if(v.skonto <> 0,CONCAT(' mit Skonto ',v.skonto,'% ',
|
||||
".$this->app->erp->FormatPreis("v.betrag-((v.betrag/100.0)*v.skonto)",2)."),''),' ',
|
||||
|
|
@ -3857,7 +3851,7 @@ select a.kundennummer, (SELECT name FROM adresse a2 WHERE a2.kundennummer = a.ku
|
|||
a.name,' (Lieferant ',a.lieferantennummer,if(a.lieferantennummer_buchhaltung!='' AND a.lieferantennummer <> a.lieferantennummer_buchhaltung,CONCAT(' ',a.lieferantennummer_buchhaltung),''),') RE ',v.rechnung,' Rechnungsdatum ',DATE_FORMAT(v.rechnungsdatum,'%d.%m.%Y')) as bezeichnung
|
||||
FROM verbindlichkeit AS v
|
||||
LEFT JOIN adresse AS a ON a.id=v.adresse
|
||||
WHERE ($subwhere) AND bezahlt!=1 AND status!='storniert'
|
||||
WHERE ($subwhere) AND bezahlt!=1 AND status!='storniert' AND belegnr <> ''
|
||||
ORDER by v.id DESC"; //AND v.status!='bezahlt' // heute wieder raus
|
||||
|
||||
$arr = $this->app->DB->SelectArr($sql);
|
||||
|
|
|
|||
|
|
@ -307,21 +307,52 @@ class Angebot extends GenAngebot
|
|||
{
|
||||
$id = $this->app->Secure->GetGET('id');
|
||||
|
||||
if(!$this->app->DB->Select("SELECT deckungsbeitragcalc FROM angebot WHERE id='$id' LIMIT 1")) {
|
||||
$this->app->erp->BerechneDeckungsbeitrag($id,'angebot');
|
||||
// Deckungsbeitrag
|
||||
if (!$this->app->erp->RechteVorhanden('angebot','einkaufspreise')) {
|
||||
$this->app->Tpl->Set('DBHIDDEN','hidden');
|
||||
} else {
|
||||
$sql = "
|
||||
SELECT
|
||||
umsatz_netto_gesamt,
|
||||
artikel,
|
||||
menge,
|
||||
einkaufspreis
|
||||
FROM
|
||||
`angebot_position`
|
||||
WHERE
|
||||
`angebot` = ".$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
|
||||
)
|
||||
)."%"
|
||||
);
|
||||
}
|
||||
|
||||
$auftragArr = $this->app->DB->SelectArr("SELECT * FROM angebot WHERE id='$id' LIMIT 1");
|
||||
$kundennummer = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE id='{$auftragArr[0]['adresse']}' LIMIT 1");
|
||||
$projekt = $this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id='{$auftragArr[0]['projekt']}' LIMIT 1");
|
||||
$kundenname = $this->app->DB->Select("SELECT name FROM adresse WHERE id='{$auftragArr[0]['adresse']}' LIMIT 1");
|
||||
|
||||
|
||||
$this->app->Tpl->Set('KUNDE',"<a href=\"index.php?module=adresse&action=edit&id=".$auftragArr[0]['adresse']."\" target=\"_blank\">".$kundennummer."</a> ".$kundenname);
|
||||
//$this->app->Tpl->Set('KUNDE',$kundennummer." ".$kundenname);
|
||||
$this->app->Tpl->Set('DECKUNGSBEITRAG',0);
|
||||
$this->app->Tpl->Set('DBPROZENT',0);
|
||||
|
||||
if($this->app->erp->RechteVorhanden('projekt','dashboard')){
|
||||
$this->app->Tpl->Set('PROJEKT', "<a href=\"index.php?module=projekt&action=dashboard&id=" . $auftragArr[0]['projekt'] . "\" target=\"_blank\">$projekt</a>");
|
||||
}
|
||||
|
|
@ -1694,6 +1725,11 @@ class Angebot extends GenAngebot
|
|||
$this->app->erp->AnsprechpartnerAlsLieferadresseButton($adresse);
|
||||
$this->app->erp->AdresseAlsLieferadresseButton($adresse);
|
||||
}
|
||||
|
||||
|
||||
if ($schreibschutz != 1 AND $status != 'abgeschlossen') {
|
||||
$this->app->erp->BerechneDeckungsbeitrag($id,'angebot');
|
||||
}
|
||||
|
||||
if($nummer!="")
|
||||
{
|
||||
|
|
|
|||
28830
www/pages/api.php
|
|
@ -1,298 +1,304 @@
|
|||
<?php
|
||||
/*
|
||||
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*
|
||||
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
|
||||
*
|
||||
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
|
||||
*
|
||||
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
|
||||
* to obtain the text of the corresponding license version.
|
||||
*
|
||||
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
/*
|
||||
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*
|
||||
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
|
||||
*
|
||||
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
|
||||
*
|
||||
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
|
||||
* to obtain the text of the corresponding license version.
|
||||
*
|
||||
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
|
||||
use Xentral\Components\Http\JsonResponse;
|
||||
|
||||
class Api_account
|
||||
{
|
||||
/** @var Application $app */
|
||||
protected $app;
|
||||
|
||||
|
||||
const MODULE_NAME = 'ApiAccount';
|
||||
|
||||
/** @var string[] $javascript */
|
||||
public $javascript = [
|
||||
'./classes/Modules/ApiAccount/www/js/api_account.js',
|
||||
];
|
||||
|
||||
/**
|
||||
* @param Application $app
|
||||
* @param string $name
|
||||
* @param array $erlaubtevars
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function TableSearch($app, $name, $erlaubtevars)
|
||||
{
|
||||
switch($name)
|
||||
{
|
||||
case 'api_account_list':
|
||||
$allowed['api_account'] = array('list');
|
||||
$heading = array('API Account ID', 'Bezeichnung', 'Aktiv', 'Menü');
|
||||
$width = array('10%', '79%', '10%', '1%');
|
||||
$findcols = array('aa.id', 'bezeichnung', "if(aktiv = 1, 'ja','nein')", 'id');
|
||||
$searchsql = array('bezeichnung');
|
||||
$defaultorder = 1; //Optional wenn andere Reihenfolge gewuenscht
|
||||
$defaultorderdesc = 1;
|
||||
$menucol = 3;
|
||||
$menu = "<table cellpadding=0 cellspacing=0><tr><td nowrap><a data-id=\"%value%\" class=\"get\" href=\"#\"><img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a></td></tr></table>";
|
||||
|
||||
$sql = "SELECT aa.id, aa.id, aa.bezeichnung,
|
||||
if(aa.aktiv = 1, 'ja','nein') as aktiv,
|
||||
aa.id
|
||||
FROM `api_account` AS `aa`
|
||||
";
|
||||
$fastcount = "SELECT COUNT(`aa`.`id`) FROM `api_account` AS `aa`";
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
$erg = [];
|
||||
foreach($erlaubtevars as $k => $v) {
|
||||
if(isset($$v)) {
|
||||
$erg[$v] = $$v;
|
||||
}
|
||||
}
|
||||
return $erg;
|
||||
}
|
||||
|
||||
/**
|
||||
* Api_account constructor.
|
||||
*
|
||||
* @param Application $app
|
||||
* @param bool $intern
|
||||
*/
|
||||
public function __construct($app, $intern = false)
|
||||
{
|
||||
$this->app=$app;
|
||||
if($intern) {
|
||||
return;
|
||||
}
|
||||
$this->app->ActionHandlerInit($this);
|
||||
|
||||
$this->app->ActionHandler("create","Api_AccountCreate");
|
||||
$this->app->ActionHandler("edit","Api_AccountEdit");
|
||||
$this->app->ActionHandler("list","Api_AccountList");
|
||||
$this->app->ActionHandler("delete","Api_AccountDelete");
|
||||
|
||||
$this->app->DefaultActionHandler('list');
|
||||
$this->app->ActionHandlerListen($app);
|
||||
}
|
||||
|
||||
function Api_AccountCreate(){
|
||||
|
||||
}
|
||||
|
||||
function Api_AccountEdit(){
|
||||
|
||||
}
|
||||
|
||||
public function Api_AccountDelete(){
|
||||
$id = $this->app->Secure->GetGET('id');
|
||||
$this->app->DB->Delete(sprintf('DELETE FROM `api_account` WHERE `id` = %d', $id));
|
||||
$this->app->Location->execute('index.php?module=api_account&action=list');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function HandleGetAjaxAction()
|
||||
{
|
||||
$id = (int)$this->app->Secure->GetPOST('id');
|
||||
if($id === 0) {
|
||||
$data = [
|
||||
'aktiv' => 0,
|
||||
'id' => '',
|
||||
'bezeichnung' => '',
|
||||
'projekt' => '',
|
||||
'remotedomain' => '',
|
||||
'initkey' => '',
|
||||
'importwarteschlange' => 0,
|
||||
'importwarteschlange_name' => '',
|
||||
'event_url' => '',
|
||||
'cleanutf8' => 0,
|
||||
'apitempkey' => '',
|
||||
'ishtmltransformation' => 0,
|
||||
];
|
||||
|
||||
return new JsonResponse($data);
|
||||
}
|
||||
if($id > 0) {
|
||||
$data = $this->app->DB->SelectRow(
|
||||
sprintf(
|
||||
"SELECT a.id, a.bezeichnung, a.aktiv, p.abkuerzung AS `projekt`, a.remotedomain, a.initkey,
|
||||
a.importwarteschlange, a.importwarteschlange_name, a.cleanutf8, a.event_url, a.permissions, a.ishtmltransformation
|
||||
FROM `api_account` AS `a`
|
||||
LEFT JOIN `projekt` AS `p` ON a.projekt = p.id
|
||||
WHERE a.id = %d",
|
||||
$id
|
||||
)
|
||||
);
|
||||
/** @var Api $api */
|
||||
$api = $this->app->loadModule('api');
|
||||
$data['apitempkey'] = $api->generateHashFromDomainAndKey($data['initkey'], $data['remotedomain']);
|
||||
if(!empty($data)) {
|
||||
return new JsonResponse($data);
|
||||
}
|
||||
}
|
||||
|
||||
return new JsonResponse(['error'=>'Account nicht gefunden'], JsonResponse::HTTP_BAD_REQUEST);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function HandleSaveAjaxAction()
|
||||
{
|
||||
if(!$this->app->erp->RechteVorhanden('api_account', 'edit')) {
|
||||
return new JsonResponse(['error'=>'Fehlende Rechte'], JsonResponse::HTTP_BAD_REQUEST);
|
||||
}
|
||||
|
||||
$id = (int)$this->app->Secure->GetPOST('id');
|
||||
$bezeichnung = $this->app->Secure->GetPOST('bezeichnung');
|
||||
if(empty($bezeichnung)) {
|
||||
return new JsonResponse(['error'=>'Bitte füllen Sie die Bezeichnung aus'], JsonResponse::HTTP_BAD_REQUEST);
|
||||
}
|
||||
$projekt = (string)$this->app->Secure->GetPOST('projekt');
|
||||
if($projekt !== ''){
|
||||
$projekt = (int)$this->app->erp->ReplaceProjekt(1, $projekt, 1);
|
||||
}
|
||||
else {
|
||||
$projekt = 0;
|
||||
}
|
||||
$aktiv = (int)(bool)$this->app->Secure->GetPOST('aktiv');
|
||||
$importwarteschlange = (int)(bool)$this->app->Secure->GetPOST('importwarteschlange');
|
||||
$cleanutf8 = (int)(bool)$this->app->Secure->GetPOST('cleanutf8');
|
||||
$remotedomain = $this->app->Secure->GetPOST('remotedomain');
|
||||
$initkey = $this->app->Secure->GetPOST('initkey');
|
||||
$importwarteschlange_name = $this->app->Secure->GetPOST('importwarteschlange_name');
|
||||
$event_url = $this->app->Secure->GetPOST('event_url');
|
||||
$isHtmlTransformation = (int)(bool)$this->app->Secure->GetPOST('ishtmltransformation');
|
||||
$api_permissions = $this->prepareApiPermissions($this->app->Secure->GetPOST('api_permissions'));
|
||||
if($id <= 0) {
|
||||
$this->app->DB->Insert(
|
||||
sprintf(
|
||||
"INSERT INTO `api_account`
|
||||
(`bezeichnung`, `initkey`, `importwarteschlange_name`, `event_url`, `remotedomain`, `aktiv`,
|
||||
`importwarteschlange`, `cleanutf8`, `uebertragung_account`, `projekt`, `permissions`, `ishtmltransformation`)
|
||||
VALUES ('%s', '%s', '%s', '%s', '%s', %d,
|
||||
%d, %d, 0, %d, '%s', %d) ",
|
||||
$bezeichnung, $initkey, $importwarteschlange_name, $event_url, $remotedomain, $aktiv,
|
||||
$importwarteschlange, $cleanutf8, $projekt, $api_permissions, $isHtmlTransformation
|
||||
)
|
||||
);
|
||||
$id = (int)$this->app->DB->GetInsertID();
|
||||
if($id){
|
||||
$data = ['success' => true, 'id' => $id];
|
||||
return new JsonResponse($data);
|
||||
}
|
||||
return new JsonResponse(['error'=>'Account konnte nicht erstellt werden'], JsonResponse::HTTP_BAD_REQUEST);
|
||||
}
|
||||
|
||||
$data = $this->app->DB->SelectRow(
|
||||
sprintf(
|
||||
"SELECT a.id, a.bezeichnung, a.aktiv, p.abkuerzung AS `projekt`, a.remotedomain, a.initkey,
|
||||
a.importwarteschlange, a.importwarteschlange_name, a.cleanutf8, a.event_url, a.permissions, a.ishtmltransformation
|
||||
FROM `api_account` AS `a`
|
||||
LEFT JOIN `projekt` AS `p` ON a.projekt = p.id
|
||||
WHERE a.id = %d",
|
||||
$id
|
||||
)
|
||||
);
|
||||
if(empty($data)) {
|
||||
return new JsonResponse(['error'=>'Account nicht gefunden'], JsonResponse::HTTP_BAD_REQUEST);
|
||||
}
|
||||
$this->app->DB->Update(
|
||||
sprintf(
|
||||
"UPDATE `api_account`
|
||||
SET `bezeichnung` = '%s',
|
||||
`initkey` = '%s',
|
||||
`importwarteschlange_name` = '%s',
|
||||
`event_url` = '%s',
|
||||
`remotedomain` = '%s',
|
||||
`aktiv` = %d,
|
||||
`importwarteschlange` = %d,
|
||||
`cleanutf8` = %d,
|
||||
`uebertragung_account` = 0,
|
||||
`projekt` = %d ,
|
||||
`permissions` = '%s',
|
||||
`ishtmltransformation` = %d
|
||||
WHERE `id` = %d",
|
||||
$bezeichnung, $initkey, $importwarteschlange_name, $event_url, $remotedomain, $aktiv,
|
||||
$importwarteschlange, $cleanutf8, $projekt, $api_permissions, $isHtmlTransformation, $id
|
||||
)
|
||||
);
|
||||
if(empty($this->app->DB->error())) {
|
||||
$data = ['success' => true, 'id' => $id];
|
||||
return new JsonResponse($data);
|
||||
}
|
||||
return new JsonResponse(['error'=>'Account konnte nicht geändert werden'], JsonResponse::HTTP_BAD_REQUEST);
|
||||
}
|
||||
|
||||
private function prepareApiPermissions(array $apiPermissions){
|
||||
$cleanedPermissions = [];
|
||||
foreach ($apiPermissions as $permission => $value){
|
||||
if($value === 'true'){
|
||||
$cleanedPermissions[] = $permission;
|
||||
}
|
||||
}
|
||||
|
||||
return json_encode($cleanedPermissions);
|
||||
}
|
||||
|
||||
public function Api_AccountList(){
|
||||
$cmd = $this->app->Secure->GetGET('cmd');
|
||||
if($cmd === 'get') {
|
||||
return $this->HandleGetAjaxAction();
|
||||
}
|
||||
if($cmd === 'save') {
|
||||
return $this->HandleSaveAjaxAction();
|
||||
}
|
||||
|
||||
$apiPermissions = $this->app->DB->SelectArr("SELECT * FROM `api_permission`");
|
||||
|
||||
$groupedApiPermissions = [];
|
||||
foreach ($apiPermissions as $apiPermission){
|
||||
$groupedApiPermissions[$apiPermission['group']][] =$apiPermission;
|
||||
}
|
||||
|
||||
$apiPermissionsHtml = '';
|
||||
foreach ($groupedApiPermissions as $group => $permissions) {
|
||||
$apiPermissionsHtml .= '<tr>';
|
||||
$apiPermissionsHtml .= "<td>{$group}</td>";
|
||||
$apiPermissionsHtml .= "<td>";
|
||||
foreach ($permissions as $permission){
|
||||
$apiPermissionsHtml .= "<label for='{$permission['key']}'>";
|
||||
$apiPermissionsHtml .= "<input class='permission-checkbox' type='checkbox' name='{$permission['key']}'>";
|
||||
$apiPermissionsHtml .= " {$permission['key']}</label>";
|
||||
$apiPermissionsHtml .= "<br>";
|
||||
}
|
||||
$apiPermissionsHtml .= "</td>";
|
||||
$apiPermissionsHtml .= '</tr>';
|
||||
}
|
||||
|
||||
$this->app->YUI->TableSearch('TAB1','api_account_list', 'show','','',basename(__FILE__), __CLASS__);
|
||||
$this->app->erp->MenuEintrag('#', 'Neu');
|
||||
$this->app->erp->MenuEintrag('index.php?module=api_account&action=list', 'Übersicht');
|
||||
$this->app->erp->Headlines('API Account');
|
||||
$this->app->Tpl->Set('API_PERMISSIONS_HTML', $apiPermissionsHtml);
|
||||
$this->app->YUI->Autocomplete('projekt', 'projektname', 1);
|
||||
$this->app->Tpl->Parse('PAGE','api_account_list.tpl');
|
||||
}
|
||||
}
|
||||
<?php
|
||||
|
||||
use Xentral\Components\Http\JsonResponse;
|
||||
|
||||
class Api_account
|
||||
{
|
||||
/** @var Application $app */
|
||||
protected $app;
|
||||
|
||||
|
||||
const MODULE_NAME = 'ApiAccount';
|
||||
|
||||
/** @var string[] $javascript */
|
||||
public $javascript = [
|
||||
'./classes/Modules/ApiAccount/www/js/api_account.js',
|
||||
];
|
||||
|
||||
/**
|
||||
* @param Application $app
|
||||
* @param string $name
|
||||
* @param array $erlaubtevars
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function TableSearch($app, $name, $erlaubtevars)
|
||||
{
|
||||
switch($name)
|
||||
{
|
||||
case 'api_account_list':
|
||||
$allowed['api_account'] = array('list');
|
||||
$heading = array('API Account ID', 'Bezeichnung', 'Aktiv', 'Menü');
|
||||
$width = array('10%', '79%', '10%', '1%');
|
||||
$findcols = array('aa.id', 'bezeichnung', "if(aktiv = 1, 'ja','nein')", 'id');
|
||||
$searchsql = array('bezeichnung');
|
||||
$defaultorder = 1; //Optional wenn andere Reihenfolge gewuenscht
|
||||
$defaultorderdesc = 1;
|
||||
$menucol = 3;
|
||||
$menu = "<table cellpadding=0 cellspacing=0><tr><td nowrap><a data-id=\"%value%\" class=\"get\" href=\"#\"><img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a></td></tr></table>";
|
||||
|
||||
$sql = "SELECT aa.id, aa.id, aa.bezeichnung,
|
||||
if(aa.aktiv = 1, 'ja','nein') as aktiv,
|
||||
aa.id
|
||||
FROM `api_account` AS `aa`
|
||||
";
|
||||
$fastcount = "SELECT COUNT(`aa`.`id`) FROM `api_account` AS `aa`";
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
$erg = [];
|
||||
foreach($erlaubtevars as $k => $v) {
|
||||
if(isset($$v)) {
|
||||
$erg[$v] = $$v;
|
||||
}
|
||||
}
|
||||
return $erg;
|
||||
}
|
||||
|
||||
/**
|
||||
* Api_account constructor.
|
||||
*
|
||||
* @param Application $app
|
||||
* @param bool $intern
|
||||
*/
|
||||
public function __construct($app, $intern = false)
|
||||
{
|
||||
$this->app=$app;
|
||||
if($intern) {
|
||||
return;
|
||||
}
|
||||
$this->app->ActionHandlerInit($this);
|
||||
|
||||
$this->app->ActionHandler("create","Api_AccountCreate");
|
||||
$this->app->ActionHandler("edit","Api_AccountEdit");
|
||||
$this->app->ActionHandler("list","Api_AccountList");
|
||||
$this->app->ActionHandler("delete","Api_AccountDelete");
|
||||
|
||||
$this->app->DefaultActionHandler('list');
|
||||
$this->app->ActionHandlerListen($app);
|
||||
}
|
||||
|
||||
function Api_AccountCreate(){
|
||||
|
||||
}
|
||||
|
||||
function Api_AccountEdit(){
|
||||
|
||||
}
|
||||
|
||||
public function Api_AccountDelete(){
|
||||
$id = $this->app->Secure->GetGET('id');
|
||||
$this->app->DB->Delete(sprintf('DELETE FROM `api_account` WHERE `id` = %d', $id));
|
||||
$this->app->Location->execute('index.php?module=api_account&action=list');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function HandleGetAjaxAction()
|
||||
{
|
||||
$id = (int)$this->app->Secure->GetPOST('id');
|
||||
if($id === 0) {
|
||||
$data = [
|
||||
'aktiv' => 0,
|
||||
'id' => '',
|
||||
'bezeichnung' => '',
|
||||
'projekt' => '',
|
||||
'remotedomain' => '',
|
||||
'initkey' => '',
|
||||
'importwarteschlange' => 0,
|
||||
'importwarteschlange_name' => '',
|
||||
'event_url' => '',
|
||||
'cleanutf8' => 0,
|
||||
'apitempkey' => '',
|
||||
'ishtmltransformation' => 0,
|
||||
];
|
||||
|
||||
return new JsonResponse($data);
|
||||
}
|
||||
if($id > 0) {
|
||||
$data = $this->app->DB->SelectRow(
|
||||
sprintf(
|
||||
"SELECT a.id, a.bezeichnung, a.aktiv, p.abkuerzung AS `projekt`, a.remotedomain, a.initkey,
|
||||
a.importwarteschlange, a.importwarteschlange_name, a.cleanutf8, a.event_url, a.permissions, a.ishtmltransformation
|
||||
FROM `api_account` AS `a`
|
||||
LEFT JOIN `projekt` AS `p` ON a.projekt = p.id
|
||||
WHERE a.id = %d",
|
||||
$id
|
||||
)
|
||||
);
|
||||
/** @var Api $api */
|
||||
$api = $this->app->loadModule('api');
|
||||
$data['apitempkey'] = $api->generateHashFromDomainAndKey($data['initkey'], $data['remotedomain']);
|
||||
if(!empty($data)) {
|
||||
return new JsonResponse($data);
|
||||
}
|
||||
}
|
||||
|
||||
return new JsonResponse(['error'=>'Account nicht gefunden'], JsonResponse::HTTP_BAD_REQUEST);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function HandleSaveAjaxAction()
|
||||
{
|
||||
if(!$this->app->erp->RechteVorhanden('api_account', 'edit')) {
|
||||
return new JsonResponse(['error'=>'Fehlende Rechte'], JsonResponse::HTTP_BAD_REQUEST);
|
||||
}
|
||||
|
||||
$id = (int)$this->app->Secure->GetPOST('id');
|
||||
$bezeichnung = $this->app->Secure->GetPOST('bezeichnung');
|
||||
if(empty($bezeichnung)) {
|
||||
return new JsonResponse(['error'=>'Bitte füllen Sie die Bezeichnung aus'], JsonResponse::HTTP_BAD_REQUEST);
|
||||
}
|
||||
$projekt = (string)$this->app->Secure->GetPOST('projekt');
|
||||
if($projekt !== ''){
|
||||
$projekt = (int)$this->app->erp->ReplaceProjekt(1, $projekt, 1);
|
||||
}
|
||||
else {
|
||||
$projekt = 0;
|
||||
}
|
||||
$aktiv = (int)(bool)$this->app->Secure->GetPOST('aktiv');
|
||||
$importwarteschlange = (int)(bool)$this->app->Secure->GetPOST('importwarteschlange');
|
||||
$cleanutf8 = (int)(bool)$this->app->Secure->GetPOST('cleanutf8');
|
||||
$remotedomain = $this->app->Secure->GetPOST('remotedomain');
|
||||
$initkey = $this->app->Secure->GetPOST('initkey');
|
||||
$importwarteschlange_name = $this->app->Secure->GetPOST('importwarteschlange_name');
|
||||
$event_url = $this->app->Secure->GetPOST('event_url');
|
||||
$isHtmlTransformation = (int)(bool)$this->app->Secure->GetPOST('ishtmltransformation');
|
||||
$api_permissions = $this->prepareApiPermissions($this->app->Secure->GetPOST('api_permissions'));
|
||||
if($id <= 0) {
|
||||
$this->app->DB->Insert(
|
||||
sprintf(
|
||||
"INSERT INTO `api_account`
|
||||
(`bezeichnung`, `initkey`, `importwarteschlange_name`, `event_url`, `remotedomain`, `aktiv`,
|
||||
`importwarteschlange`, `cleanutf8`, `uebertragung_account`, `projekt`, `permissions`, `ishtmltransformation`)
|
||||
VALUES ('%s', '%s', '%s', '%s', '%s', %d,
|
||||
%d, %d, 0, %d, '%s', %d) ",
|
||||
$bezeichnung, $initkey, $importwarteschlange_name, $event_url, $remotedomain, $aktiv,
|
||||
$importwarteschlange, $cleanutf8, $projekt, $api_permissions, $isHtmlTransformation
|
||||
)
|
||||
);
|
||||
$id = (int)$this->app->DB->GetInsertID();
|
||||
if($id){
|
||||
$data = ['success' => true, 'id' => $id];
|
||||
return new JsonResponse($data);
|
||||
}
|
||||
return new JsonResponse(['error'=>'Account konnte nicht erstellt werden'], JsonResponse::HTTP_BAD_REQUEST);
|
||||
}
|
||||
|
||||
$data = $this->app->DB->SelectRow(
|
||||
sprintf(
|
||||
"SELECT a.id, a.bezeichnung, a.aktiv, p.abkuerzung AS `projekt`, a.remotedomain, a.initkey,
|
||||
a.importwarteschlange, a.importwarteschlange_name, a.cleanutf8, a.event_url, a.permissions, a.ishtmltransformation
|
||||
FROM `api_account` AS `a`
|
||||
LEFT JOIN `projekt` AS `p` ON a.projekt = p.id
|
||||
WHERE a.id = %d",
|
||||
$id
|
||||
)
|
||||
);
|
||||
if(empty($data)) {
|
||||
return new JsonResponse(['error'=>'Account nicht gefunden'], JsonResponse::HTTP_BAD_REQUEST);
|
||||
}
|
||||
$this->app->DB->Update(
|
||||
sprintf(
|
||||
"UPDATE `api_account`
|
||||
SET `bezeichnung` = '%s',
|
||||
`initkey` = '%s',
|
||||
`importwarteschlange_name` = '%s',
|
||||
`event_url` = '%s',
|
||||
`remotedomain` = '%s',
|
||||
`aktiv` = %d,
|
||||
`importwarteschlange` = %d,
|
||||
`cleanutf8` = %d,
|
||||
`uebertragung_account` = 0,
|
||||
`projekt` = %d ,
|
||||
`permissions` = '%s',
|
||||
`ishtmltransformation` = %d
|
||||
WHERE `id` = %d",
|
||||
$bezeichnung, $initkey, $importwarteschlange_name, $event_url, $remotedomain, $aktiv,
|
||||
$importwarteschlange, $cleanutf8, $projekt, $api_permissions, $isHtmlTransformation, $id
|
||||
)
|
||||
);
|
||||
if(empty($this->app->DB->error())) {
|
||||
$data = ['success' => true, 'id' => $id];
|
||||
return new JsonResponse($data);
|
||||
}
|
||||
return new JsonResponse(['error'=>'Account konnte nicht geändert werden'], JsonResponse::HTTP_BAD_REQUEST);
|
||||
}
|
||||
|
||||
private function prepareApiPermissions(array $apiPermissions){
|
||||
$cleanedPermissions = [];
|
||||
foreach ($apiPermissions as $permission => $value){
|
||||
if($value === 'true'){
|
||||
$cleanedPermissions[] = $permission;
|
||||
}
|
||||
}
|
||||
|
||||
return json_encode($cleanedPermissions);
|
||||
}
|
||||
|
||||
public function Api_AccountList(){
|
||||
$cmd = $this->app->Secure->GetGET('cmd');
|
||||
if($cmd === 'get') {
|
||||
return $this->HandleGetAjaxAction();
|
||||
}
|
||||
if($cmd === 'save') {
|
||||
return $this->HandleSaveAjaxAction();
|
||||
}
|
||||
|
||||
$apiPermissions = $this->app->DB->SelectArr("SELECT * FROM `api_permission`");
|
||||
|
||||
if (empty($apiPermissions)) {
|
||||
$api = $this->app->loadModule('api');
|
||||
$api->fillApiPermissions();
|
||||
$apiPermissions = $this->app->DB->SelectArr("SELECT * FROM `api_permission`");
|
||||
}
|
||||
|
||||
$groupedApiPermissions = [];
|
||||
foreach ($apiPermissions as $apiPermission){
|
||||
$groupedApiPermissions[$apiPermission['group']][] =$apiPermission;
|
||||
}
|
||||
|
||||
$apiPermissionsHtml = '';
|
||||
foreach ($groupedApiPermissions as $group => $permissions) {
|
||||
$apiPermissionsHtml .= '<tr>';
|
||||
$apiPermissionsHtml .= "<td>{$group}</td>";
|
||||
$apiPermissionsHtml .= "<td>";
|
||||
foreach ($permissions as $permission){
|
||||
$apiPermissionsHtml .= "<label for='{$permission['key']}'>";
|
||||
$apiPermissionsHtml .= "<input class='permission-checkbox' type='checkbox' name='{$permission['key']}'>";
|
||||
$apiPermissionsHtml .= " {$permission['key']}</label>";
|
||||
$apiPermissionsHtml .= "<br>";
|
||||
}
|
||||
$apiPermissionsHtml .= "</td>";
|
||||
$apiPermissionsHtml .= '</tr>';
|
||||
}
|
||||
|
||||
$this->app->YUI->TableSearch('TAB1','api_account_list', 'show','','',basename(__FILE__), __CLASS__);
|
||||
$this->app->erp->MenuEintrag('#', 'Neu');
|
||||
$this->app->erp->MenuEintrag('index.php?module=api_account&action=list', 'Übersicht');
|
||||
$this->app->erp->Headlines('API Account');
|
||||
$this->app->Tpl->Set('API_PERMISSIONS_HTML', $apiPermissionsHtml);
|
||||
$this->app->YUI->Autocomplete('projekt', 'projektname', 1);
|
||||
$this->app->Tpl->Parse('PAGE','api_account_list.tpl');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1800,22 +1800,35 @@ class Artikel extends GenArtikel {
|
|||
// SQL statement
|
||||
|
||||
if (!empty($this->app->Conf->WFdbType) && $this->app->Conf->WFdbType == 'postgre') {
|
||||
$sql = 'SELECT s.id, a.name_de as artikel,a.nummer as nummer, trim(s.menge)+0 as menge,
|
||||
CASE WHEN (SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=a.id) > 0
|
||||
THEN (SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=a.id)
|
||||
ELSE 0
|
||||
END as lager, s.artikel as menu
|
||||
$sql = 'SELECT
|
||||
s.id,
|
||||
a.name_de as artikel,
|
||||
a.nummer as nummer,
|
||||
trim(SUM(s.menge))+0 as menge,
|
||||
CASE
|
||||
WHEN (SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=a.id) > 0
|
||||
THEN (SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=a.id)
|
||||
ELSE 0
|
||||
END as lager,
|
||||
s.artikel as menu
|
||||
FROM stueckliste s LEFT JOIN artikel a ON s.artikel=a.id ';
|
||||
} else {
|
||||
$sql = 'SELECT SQL_CALC_FOUND_ROWS s.id, a.name_de as artikel,a.nummer as nummer, trim(s.menge)+0 as menge,
|
||||
s.stuecklistevonartikel
|
||||
as menu
|
||||
FROM stueckliste s LEFT JOIN artikel a ON s.stuecklistevonartikel=a.id ';
|
||||
$sql = ' SELECT SQL_CALC_FOUND_ROWS
|
||||
s.id,
|
||||
a.name_de as artikel,
|
||||
a.nummer as nummer,
|
||||
trim(SUM(s.menge))+0 as menge,
|
||||
s.stuecklistevonartikel AS menu
|
||||
FROM
|
||||
stueckliste s
|
||||
LEFT JOIN artikel a ON s.stuecklistevonartikel=a.id ';
|
||||
}
|
||||
|
||||
// Fester filter
|
||||
$where = "s.artikel='$id' ";
|
||||
|
||||
$groupby = " GROUP BY a.id";
|
||||
|
||||
// gesamt anzahl
|
||||
$count = "SELECT COUNT(s.id) FROM stueckliste s WHERE s.stuecklistevonartikel='$id' ";
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,238 @@
|
|||
<?php
|
||||
/*
|
||||
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*
|
||||
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
|
||||
*
|
||||
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
|
||||
*
|
||||
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
|
||||
* to obtain the text of the corresponding license version.
|
||||
*
|
||||
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class Belegevorlagen
|
||||
{
|
||||
static function TableSearch(&$app, $name, $erlaubtevars)
|
||||
{
|
||||
switch($name)
|
||||
{
|
||||
case "belegevorlagen_list":
|
||||
$heading = array('Bezeichnung','Belegtyp','Projekt','Menü');
|
||||
$width = array('40%','20%','29%','1%');
|
||||
$findcols = array('b.bezeichnung','b.belegtyp','pr.abkuerzung','b.id');
|
||||
$searchsql = array('b.bezeichnung','b.belegtyp','pr.abkuerzung');
|
||||
$menu = "<table><tr><td nowrap><a href=\"#\" onclick=\"deletevorlage(%value%);\"><img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"></a></td></tr></table>";
|
||||
$sql = "SELECT SQL_CALC_FOUND_ROWS b.id, b.bezeichnung,CONCAT(UCASE(LEFT(b.belegtyp, 1)), SUBSTRING(b.belegtyp, 2)), pr.abkuerzung, b.id FROM belegevorlagen b LEFT JOIN projekt pr ON b.projekt = pr.id";
|
||||
$where = $app->erp->ProjektRechte('b.projekt');
|
||||
break;
|
||||
case "belegevorlagen_list2":
|
||||
$belegtyp = $app->Secure->GetGET('smodule');
|
||||
$heading = array('Bezeichnung','Projekt','Menü');
|
||||
$width = array('50%','49%','1%');
|
||||
$findcols = array('b.bezeichnung','pr.abkuerzung','b.id');
|
||||
$searchsql = array('b.bezeichnung','pr.abkuerzung');
|
||||
$menu = "<table><tr><td nowrap><a href=\"#\" onclick=\"loadbelegvorlage(%value%);\"><img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/forward.svg\" border=\"0\"></a> <a href=\"#\" onclick=\"deletevorlage(%value%);\"><img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"></a></td></tr></table>";
|
||||
$sql = "SELECT SQL_CALC_FOUND_ROWS b.id, b.bezeichnung, pr.abkuerzung, b.id FROM belegevorlagen b LEFT JOIN projekt pr ON b.projekt = pr.id";
|
||||
$where = "belegtyp = '$belegtyp' ".$app->erp->ProjektRechte('b.projekt');
|
||||
break;
|
||||
}
|
||||
|
||||
$erg = false;
|
||||
foreach($erlaubtevars as $k => $v)
|
||||
{
|
||||
if(isset($$v))$erg[$v] = $$v;
|
||||
}
|
||||
return $erg;
|
||||
}
|
||||
function __construct(&$app, $intern = false)
|
||||
{
|
||||
$this->app=&$app;
|
||||
$this->artikel = $this->app->erp->GetKonfiguration('gesamtrabatt_artikel');
|
||||
if($intern)return;
|
||||
$this->app->ActionHandlerInit($this);
|
||||
$this->app->ActionHandler("list","BelegevorlagenList");
|
||||
$this->app->ActionHandler("einstellungen","BelegevorlagenEinstellungen");
|
||||
$this->app->DefaultActionHandler("list");
|
||||
$this->app->ActionHandlerListen($app);
|
||||
}
|
||||
|
||||
function BelegevorlagenMenu(){
|
||||
$this->app->erp->MenuEintrag("index.php?module=belegevorlagen&action=list","Übersicht");
|
||||
$this->app->erp->MenuEintrag("index.php?module=belegevorlagen&action=einstellungen","Einstellungen");
|
||||
|
||||
}
|
||||
|
||||
function BelegevorlagenList()
|
||||
{
|
||||
if($this->app->Secure->GetGET('cmd') == 'delvorlage')
|
||||
{
|
||||
$id = (int)$this->app->Secure->GetPOST('lid');
|
||||
$this->app->DB->Delete("DELETE FROM belegevorlagen WHERE id = '$id' LIMIT 1");
|
||||
echo json_encode(array('status'=>1));
|
||||
exit;
|
||||
}
|
||||
$this->BelegevorlagenMenu();
|
||||
$this->app->YUI->TableSearch('TAB1', "belegevorlagen_list", "show","","",basename(__FILE__), __CLASS__);
|
||||
$this->app->Tpl->Parse('PAGE','belegevorlagen_list.tpl');
|
||||
}
|
||||
|
||||
function BelegevorlagenEinstellungen()
|
||||
{
|
||||
$this->BelegevorlagenMenu();
|
||||
|
||||
$this->app->Tpl->Set('PREISEAKTUALISIEREN',$this->app->erp->GetKonfiguration('belegevorlagen_preiseaktualisieren')=='on'?'checked':'');
|
||||
$this->app->YUI->AutoSaveKonfiguration('preiseaktualisieren','belegevorlagen_preiseaktualisieren');
|
||||
|
||||
$this->app->Tpl->Parse('PAGE','belegevorlagen_einstellungen.tpl');
|
||||
}
|
||||
|
||||
function Install()
|
||||
{
|
||||
$this->app->erp->CheckTable('belegevorlagen');
|
||||
$this->app->erp->CheckColumn("id","int(11)","belegevorlagen","DEFAULT '0' NOT NULL AUTO_INCREMENT");
|
||||
$this->app->erp->CheckColumn("belegtyp", "varchar(255)", "belegevorlagen", "DEFAULT '' NOT NULL");
|
||||
$this->app->erp->CheckColumn("bezeichnung", "varchar(255)", "belegevorlagen", "DEFAULT '' NOT NULL");
|
||||
$this->app->erp->CheckColumn("projekt", "int(11)", "belegevorlagen", "DEFAULT '0' NOT NULL");
|
||||
$this->app->erp->CheckColumn("json", "MEDIUMTEXT", "belegevorlagen", "DEFAULT '' NOT NULL");
|
||||
$this->app->erp->CheckColumn("bearbeiter", "varchar(255)", "belegevorlagen", "DEFAULT '' NOT NULL");
|
||||
$this->app->erp->CheckColumn("zeitstempel", "timestamp", "belegevorlagen","DEFAULT CURRENT_TIMESTAMP NOT NULL");
|
||||
|
||||
$this->app->erp->RegisterHook('BelegPositionenButtons', 'belegevorlagen', 'BelegevorlagenBelegPositionenButtons');
|
||||
$this->app->erp->RegisterHook('AARLGPositionen_cmds_end', 'belegevorlagen', 'BelegevorlagenAARLGPositionen_cmds_end');
|
||||
$this->app->erp->RegisterHook('ajax_filter_hook1', 'belegevorlagen', 'Belegevorlagenajax_filter_hook1');
|
||||
}
|
||||
|
||||
function Belegevorlagenajax_filter_hook1($filtername,&$newarr, $term, $term2, $term3)
|
||||
{
|
||||
if($filtername == 'belegvorlagen')
|
||||
{
|
||||
$arr = $this->app->DB->SelectArr("SELECT CONCAT(b.id,' ',b.bezeichnung) as bezeichnung FROM belegevorlagen b
|
||||
WHERE (b.bezeichnung LIKE '%$term%') ".$this->app->erp->ProjektRechte('b.projekt'));
|
||||
if($arr)
|
||||
{
|
||||
for($i=0;$i<count($arr);$i++)
|
||||
$newarr[] = $arr[$i]['bezeichnung'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function BelegevorlagenBelegPositionenButtons($target, $module, $id)
|
||||
{
|
||||
if($module=="angebot" || $module=="auftrag" || $module=="rechnung" || $module=="lieferschein" || $module=="gutschrift" || $module=="proformarechnung")
|
||||
{
|
||||
$this->app->Tpl->Set('ID', $id);
|
||||
$this->app->Tpl->Set('MODULE', $module);
|
||||
$this->app->YUI->AutoComplete('bestehendevorlage','belegvorlagen');
|
||||
$this->app->YUI->TableSearch('BELEGEVORLAGENTABELLE', "belegevorlagen_list2", "show","","",basename(__FILE__), __CLASS__);
|
||||
$this->app->Tpl->Add($target, "<input type=\"button\" id=\"belegevorlagen\" value=\"Belegevorlagen\"> ".$this->app->Tpl->Parse($target,'belegevorlagen_widget.tpl'));
|
||||
}
|
||||
}
|
||||
|
||||
function BelegevorlagenAARLGPositionen_cmds_end($id){
|
||||
$module = $this->app->Secure->GetGET('module');
|
||||
if(!$module)return;
|
||||
|
||||
$projekt = $this->app->DB->Select("SELECT projekt FROM $module WHERE id='$id' LIMIT 1");
|
||||
if($projekt <=0) $projekt=0;
|
||||
|
||||
if($this->app->Secure->GetGET('cmd') == 'deletebelegvorlage')
|
||||
{
|
||||
$status = 1;
|
||||
$lid = (int)$this->app->Secure->GetPOST('lid');
|
||||
$this->app->DB->Delete("DELETE FROM belegevorlagen WHERE id = '$lid' AND belegtyp = '$module' LIMIT 1");
|
||||
echo json_encode(array('status'=>$status));
|
||||
exit;
|
||||
}
|
||||
|
||||
if($this->app->Secure->GetGET('cmd') == 'loadbelegvorlage')
|
||||
{
|
||||
$status = 0;
|
||||
$lid = (int)$this->app->Secure->GetPOST('lid');
|
||||
$json = (String)$this->app->DB->Select("SELECT json FROM belegevorlagen WHERE id = '$lid' AND belegtyp = '$module' LIMIT 1");
|
||||
if($json !== '')
|
||||
{
|
||||
$json = json_decode($json, true);
|
||||
$maxsort = (int)$this->app->DB->Select("SELECT max(sort) FROM $module"."_position WHERE $module = '$id' LIMIT 1");
|
||||
if(isset($json['positionen']))
|
||||
{
|
||||
foreach($json['positionen'] as $v)
|
||||
{
|
||||
$v[$module] = $id;
|
||||
if($this->app->erp->GetKonfiguration('belegevorlagen_preiseaktualisieren')=='on'){
|
||||
if($v['artikel'] != '0'){
|
||||
$v['preis'] = $this->app->erp->GetVerkaufspreis($v['artikel'],$v['menge']);
|
||||
}
|
||||
}
|
||||
$v['sort'] += $maxsort;
|
||||
$this->app->DB->Insert("INSERT INTO $module"."_position (id) VALUES ('')");
|
||||
$idnew = $this->app->DB->GetInsertID();
|
||||
$oldtonew[$v['id']] = $idnew;
|
||||
if($v['explodiert_parent'] && isset($oldtonew) && isset($oldtonew[$v['explodiert_parent']]))$v['explodiert_parent'] = $oldtonew[$v['explodiert_parent']];
|
||||
unset($v['id']);
|
||||
$this->app->DB->UpdateArr($module.'_position',$idnew,"id",$v, true);
|
||||
if(is_null($v['steuersatz']))$this->app->DB->Update("UPDATE ".$module."_position SET steuersatz = NULL WHERE id = '$idnew' LIMIT 1");
|
||||
}
|
||||
}
|
||||
if(isset($json['zwischenpositionen']))
|
||||
{
|
||||
$maxpos = $this->app->DB->SelectArr("SELECT id,sort FROM beleg_zwischenpositionen WHERE doctype = '$module' AND doctypeid = '$id' AND pos='$maxsort' ORDER BY sort DESC LIMIT 1");
|
||||
if($maxpos)
|
||||
{
|
||||
$sortoffset = 1 + $maxpos[0]['sort'];
|
||||
}else{
|
||||
$sortoffset = 0;
|
||||
}
|
||||
foreach($json['zwischenpositionen'] as $v)
|
||||
{
|
||||
if($v['pos'] == 0)$v['sort'] += $sortoffset;
|
||||
$v['doctypeid'] = $id;
|
||||
$v['pos'] += $maxsort;
|
||||
unset($v['id']);
|
||||
$this->app->DB->Insert("INSERT INTO beleg_zwischenpositionen (id) VALUES ('')");
|
||||
$idnew = $this->app->DB->GetInsertID();
|
||||
$this->app->DB->UpdateArr('beleg_zwischenpositionen',$idnew,"id",$v, true);
|
||||
}
|
||||
}
|
||||
$status = 1;
|
||||
$this->app->erp->ANABREGSNeuberechnen($id,$module);
|
||||
}
|
||||
echo json_encode(array('status'=>$status));
|
||||
exit;
|
||||
}
|
||||
if($this->app->Secure->GetGET('cmd') == 'savebelegevorlage')
|
||||
{
|
||||
$json = null;
|
||||
$status = 0;
|
||||
$bestehendevorlage = (int)reset(explode(' ',$this->app->Secure->GetPOST('bestehendevorlage')));
|
||||
$bezeichnung = (String)$this->app->Secure->GetPOST('bezeichnung');
|
||||
$vorlagetyp = $this->app->Secure->GetPOST('vorlagetyp');
|
||||
$bearbeiter = $this->app->DB->real_escape_string($this->app->User->GetName());
|
||||
$lid = null;
|
||||
if($vorlagetyp == 'neu')
|
||||
{
|
||||
if($bezeichnung !== '')
|
||||
{
|
||||
$this->app->DB->Insert("INSERT INTO belegevorlagen (bezeichnung, belegtyp, bearbeiter, zeitstempel,projekt) VALUES ('$bezeichnung','$module','$bearbeiter',now(),'$projekt')");
|
||||
$lid = $this->app->DB->GetInsertID();
|
||||
}
|
||||
}else{
|
||||
$lid = $this->app->DB->Select("SELECT id FROM belegevorlagen WHERE id = '$bestehendevorlage' LIMIT 1");
|
||||
if($lid && $bezeichnung !== '')$this->app->DB->Update("UPDATE belegevorlagen set bezeichnung = '$bezeichnung' WHERE id = '$bestehendevorlage' LIMIT 1");
|
||||
}
|
||||
if($lid)
|
||||
{
|
||||
$json['positionen'] = $this->app->DB->SelectArr("SELECT * FROM $module"."_position WHERE $module = '$id' ORDER BY sort");
|
||||
$json['zwischenpositionen'] = $this->app->DB->SelectArr("SELECT * FROM beleg_zwischenpositionen WHERE doctype = '$module' AND doctypeid = '$id' ORDER BY pos, sort");
|
||||
$json = $this->app->DB->real_escape_string(json_encode($json));
|
||||
$this->app->DB->Update("UPDATE belegevorlagen set json = '$json', zeitstempel = now(), bearbeiter = '$bearbeiter' WHERE id = '$lid' LIMIT 1");
|
||||
$status = 1;
|
||||
}
|
||||
echo json_encode(array('status'=>$status));
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -45,7 +45,25 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="background-color:white" [DBHIDDEN]>
|
||||
<h2 class="greyh2">{|Deckungsbeitrag (netto)|}</h2>
|
||||
<table width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Umsatz EUR</td>
|
||||
<td>Kosten EUR</td>
|
||||
<td>Deckungsbeitrag EUR</td>
|
||||
<td>DB %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="greybox" width="25%">[NETTOGESAMT]</td>
|
||||
<td class="greybox" width="25%">[KOSTEN]</td>
|
||||
<td class="greybox" width="25%">[DECKUNGSBEITRAG]</td>
|
||||
<td class="greybox" width="25%">[DBPROZENT]</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div style="background-color:white">
|
||||
<h2 class="greyh2">Protokoll</h2>
|
||||
|
|
@ -59,12 +77,6 @@
|
|||
[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>
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
<div id="tabs">
|
||||
<ul>
|
||||
<li><a href="#tabs-1"><!--[TABTEXT]--></a></li>
|
||||
</ul>
|
||||
<!-- ende gehort zu tabview -->
|
||||
|
||||
<!-- erstes tab -->
|
||||
<div id="tabs-1">
|
||||
[MESSAGE]
|
||||
<fieldset>
|
||||
<legend>Einstellungen</legend>
|
||||
<input type="checkbox" name="preiseaktualisieren" id="preiseaktualisieren" [PREISEAKTUALISIEREN] /> <label for="preiseaktualisieren">Aktuelle Artikelpreise verwenden wenn Belegvorlage geladen wird.</label>
|
||||
</fieldset>
|
||||
|
||||
[TAB1]
|
||||
[TAB1NEXT]
|
||||
</div>
|
||||
|
||||
<!-- tab view schließen -->
|
||||
</div>
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
<div id="tabs">
|
||||
<ul>
|
||||
<li><a href="#tabs-1"><!--[TABTEXT]--></a></li>
|
||||
</ul>
|
||||
<!-- ende gehort zu tabview -->
|
||||
|
||||
<!-- erstes tab -->
|
||||
<div id="tabs-1">
|
||||
[MESSAGE]
|
||||
[TAB1]
|
||||
[TAB1NEXT]
|
||||
</div>
|
||||
|
||||
<!-- tab view schließen -->
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
function deletevorlage(belegid)
|
||||
{
|
||||
if(confirm('Vorlage wirklich löschen?'))
|
||||
{
|
||||
$('#belegevorlagendiv').dialog('close');
|
||||
$.ajax({
|
||||
url: 'index.php?module=belegevorlagen&action=list&cmd=delvorlage',
|
||||
type: 'POST',
|
||||
dataType: 'json',
|
||||
data: {lid:belegid},
|
||||
success: function(data) {
|
||||
var oTable = $('#belegevorlagen_list').DataTable( );
|
||||
oTable.ajax.reload();
|
||||
},
|
||||
beforeSend: function() {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
@ -1,179 +1,346 @@
|
|||
<div id="tabs">
|
||||
<ul>
|
||||
<li><a href="#tabs-1"></a></li>
|
||||
</ul>
|
||||
<!-- Example for multiple 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>{|Allgemein|}</legend>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr><td>{|E-Mail-Adresse|}:</td><td><input type="text" name="email" value="[EMAIL]" size="40"></td></tr>
|
||||
<tr><td>{|Angezeigter Name|}:</td><td><input type="text" name="angezeigtername" value="[ANGEZEIGTERNAME]" size="40"></td></tr>
|
||||
<tr><td>{|Interne Beschreibung|}:</td><td><input type="text" name="internebeschreibung" value="[INTERNEBESCHREIBUNG]" size="40"></td></tr>
|
||||
<tr><td>{|Benutzername|}:</td><td><input type="text" name="benutzername" value="[BENUTZERNAME]" size="40"></td></tr>
|
||||
<tr><td>{|Passwort|}:</td><td><input type="password" name="passwort" value="[PASSWORT]" size="40"></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>{|SMTP|}</legend>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr><td>{|SMTP benutzen|}:</td><td><input type="text" name="smtp_extra" value="[SMTP_EXTRA]" size="40"><i>0 = nein, 1 = ja</i></td></tr>
|
||||
<tr><td>{|Server|}:</td><td><input type="text" name="smtp" value="[SMTP]" size="40"></td></tr>
|
||||
<tr><td>{|Verschlüsselung|}:</td><td><input type="text" name="smtp_ssl" value="[SMTP_SSL]" size="40"><i>0 = keine, 1 = TLS, 2 = SSL</i></td></tr>
|
||||
<tr><td>{|Port|}:</td><td><input type="text" name="smtp_port" value="[SMTP_PORT]" size="40"></td></tr>
|
||||
<tr><td>{|Authtype|}:</td><td><input type="text" name="smtp_authtype" value="[SMTP_AUTHTYPE]" size="40"><i>'', 'smtp', 'oauth_google'</i></td></tr>
|
||||
<tr><td>{|Authparam|}:</td><td><input type="text" name="smtp_authparam" value="[SMTP_AUTHPARAM]" size="40"></td></tr>
|
||||
<tr><td>{|Client_alias|}:</td><td><input type="text" name="client_alias" value="[CLIENT_ALIAS]" size="40"></td></tr>
|
||||
<tr><td>{|Loglevel|}:</td><td><input type="text" name="smtp_loglevel" value="[SMTP_LOGLEVEL]" size="40"></td></tr>
|
||||
|
||||
<tr><td width="50">Testmail:</td><td>
|
||||
<input type="submit" form="smtp_test" value="Testmail senden" id="testmail-senden-button"> <i>Bitte erst speichern und dann senden!</i>
|
||||
</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>{|IMAP|}</legend>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr><td>{|IMAP server|}:</td><td><input type="text" name="server" value="[SERVER]" size="40"></td></tr>
|
||||
<tr><td>{|imap_sentfolder_aktiv|}:</td><td><input type="text" name="imap_sentfolder_aktiv" value="[IMAP_SENTFOLDER_AKTIV]" size="40"></td></tr>
|
||||
<tr><td>{|imap_sentfolder|}:</td><td><input type="text" name="imap_sentfolder" value="[IMAP_SENTFOLDER]" size="40"></td></tr>
|
||||
<tr><td>{|imap_port|}:</td><td><input type="text" name="imap_port" value="[IMAP_PORT]" size="40"></td></tr>
|
||||
<tr><td>{|imap_type|}:</td><td><input type="text" name="imap_type" value="[IMAP_TYPE]" size="40"><i>1 = standard, 3 = SSL, 5 = OAuth</i></td></tr>
|
||||
<tr><td width="50">Testmail:</td><td>
|
||||
<input type="submit" form="imap_test" value="IMAP testen" id="testimap-button"> <i>Bitte erst speichern und dann testen!</i>
|
||||
</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>{|Archiv|}</legend>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr><td>{|E-Mailarchiv aktiv|}:</td><td><input type="text" name="emailbackup" value="[EMAILBACKUP]" size="40"></td></tr>
|
||||
<tr><td>{|Löschen nach wievielen Tagen?|}:</td><td><input type="text" name="loeschtage" value="[LOESCHTAGE]" size="40"></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>{|Ticketsystem|}</legend>
|
||||
<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>{|ticketprojekt|}:</td><td><input type="text" id="ticketprojekt" name="ticketprojekt" value="[TICKETPROJEKT]" 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>{|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>{|ticketemaileingehend|}:</td><td><input type="text" name="ticketemaileingehend" value="[TICKETEMAILEINGEHEND]" size="40"></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>{|Sonstiges|}</legend>
|
||||
<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>{|eigenesignatur|}:</td><td><input type="text" name="eigenesignatur" value="[EIGENESIGNATUR]" 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" 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>{|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>{|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>{|autoresponderbetreff|}:</td><td><textarea id="autoresponderbetreff" name="autoresponderbetreff" rows="6" style="width:100%;">[AUTORESPONDERBETREFF]</textarea></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" id="projekt" name="projekt" value="[PROJEKT]" size="40"></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>
|
||||
|
||||
<form id="smtp_test" action = "index.php">
|
||||
<input type="text" name="module" value="emailbackup" style="display:none">
|
||||
<input type="text" name="action" value="test_smtp" style="display:none">
|
||||
<input type="text" name="id" value="[ID]" style="display:none">
|
||||
<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>{|Allgemein|}</legend>
|
||||
<input type="submit" name="submit" value="Speichern" style="float:right" />
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr>
|
||||
<td width="200">{|E-Mail-Adresse|}:</td>
|
||||
<td>
|
||||
<input type="text" name="email" value="[EMAIL]" size="40">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Angezeigter Name|}:</td>
|
||||
<td>
|
||||
<input type="text" name="angezeigtername" value="[ANGEZEIGTERNAME]" size="40">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Interne Beschreibung|}:</td>
|
||||
<td>
|
||||
<input type="text" name="internebeschreibung" value="[INTERNEBESCHREIBUNG]" size="40">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Benutzername|}:</td>
|
||||
<td>
|
||||
<input type="text" name="benutzername" value="[BENUTZERNAME]" size="40">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Passwort|}:</td>
|
||||
<td>
|
||||
<input type="password" name="passwort" value="[PASSWORT]" size="40">
|
||||
</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>{|SMTP|}</legend>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr>
|
||||
<td width="200">{|SMTP benutzen|}:</td>
|
||||
<td>
|
||||
<input type="checkbox" name="smtp_extra" value="1" [SMTP_EXTRA]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Server|}:</td>
|
||||
<td>
|
||||
<input type="text" name="smtp" value="[SMTP]" size="40">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Verschlüsselung|}:</td>
|
||||
<td>
|
||||
<select name="smtp_ssl">
|
||||
[SMTP_SSL_SELECT]
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Port|}:</td>
|
||||
<td>
|
||||
<input type="text" name="smtp_port" value="[SMTP_PORT]" size="40">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Authtype|}:</td>
|
||||
<td>
|
||||
<select name="smtp_authtype">
|
||||
[SMTP_AUTHTYPE_SELECT]
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Authparam|}:</td>
|
||||
<td>
|
||||
<input type="text" name="smtp_authparam" value="[SMTP_AUTHPARAM]" size="40">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Client alias|}:</td>
|
||||
<td>
|
||||
<input type="text" name="client_alias" value="[CLIENT_ALIAS]" size="40">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|SMTP Debug|}:</td>
|
||||
<td>
|
||||
<input type="checkbox" name="smtp_loglevel" value="1" [SMTP_LOGLEVEL]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50">Testmail:</td>
|
||||
<td>
|
||||
<input type="submit" form="smtp_test" value="Testmail senden" id="testmail-senden-button"> <i>Bitte erst speichern und dann senden!</i>
|
||||
</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>{|IMAP|}</legend>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr>
|
||||
<td width="200">{|IMAP server|}:</td>
|
||||
<td>
|
||||
<input type="text" name="server" value="[SERVER]" size="40">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Gesendete Mails in IMAP-Ordner legen|}:</td>
|
||||
<td>
|
||||
<input type="checkbox" name="imap_sentfolder_aktiv" value="1" [IMAP_SENTFOLDER_AKTIV]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|IMAP-Ordner|}:</td>
|
||||
<td>
|
||||
<input type="text" name="imap_sentfolder" value="[IMAP_SENTFOLDER]" size="40">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|IMAP-Port|}:</td>
|
||||
<td>
|
||||
<input type="text" name="imap_port" value="[IMAP_PORT]" size="40">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|IMAP-Typ|}:</td>
|
||||
<td>
|
||||
<select name="imap_type">
|
||||
[IMAP_TYPE_SELECT]
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50">Testmail:</td>
|
||||
<td>
|
||||
<input type="submit" form="imap_test" value="IMAP testen" id="testimap-button"> <i>Bitte erst speichern und dann testen!</i>
|
||||
</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>{|Archiv|}</legend>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr>
|
||||
<td width="200">{|E-Mailarchiv aktiv|}:</td>
|
||||
<td>
|
||||
<input type="checkbox" name="emailbackup" value="1" [EMAILBACKUP]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Löschen nach wievielen Tagen?|}:</td>
|
||||
<td>
|
||||
<input type="text" name="loeschtage" value="[LOESCHTAGE]" size="40">
|
||||
</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>{|Ticketsystem|}</legend>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr>
|
||||
<td width="200">{|Mails als Ticket importieren|}:</td>
|
||||
<td>
|
||||
<input type="checkbox" name="ticket" value="1" [TICKET]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Projekt für Ticket|}:</td>
|
||||
<td>
|
||||
<input type="text" id="ticketprojekt" name="ticketprojekt" value="[TICKETPROJEKT]" size="40">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Warteschlange für Ticket|}:</td>
|
||||
<td>
|
||||
<input type="text" id="ticketqueue" name="ticketqueue" value="[TICKETQUEUE]" size="40">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|E-Mails ab Datum importieren|}:</td>
|
||||
<td>
|
||||
<input type="text" name="abdatum" id="abdatum" value="[ABDATUM]" size="40">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|E-Mail nach Import löschen|}:</td>
|
||||
<td>
|
||||
<input type="checkbox" name="ticketloeschen" value="1" [TICKETLOESCHEN]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Ticket auf abgeschlossen setzen|}:</td>
|
||||
<td>
|
||||
<input type="checkbox" name="ticketabgeschlossen" value="1" [TICKETABGESCHLOSSEN]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Ausgehende E-Mailadresse|}:</td>
|
||||
<td>
|
||||
<input type="checkbox" name="ticketemaileingehend" value="1" [TICKETEMAILEINGEHEND]>
|
||||
</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>{|Sonstiges|}</legend>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr>
|
||||
<td>{|Automatisch antworten|}:</td>
|
||||
<td>
|
||||
<input type="checkbox" name="autoresponder" value="1" [AUTORESPONDER]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="200">{|Nur eine Antwort pro Tag|}:</td>
|
||||
<td>
|
||||
<input type="checkbox" name="autosresponder_blacklist" value="1" [AUTOSRESPONDER_BLACKLIST]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Automatische Antwort Betreff|}:</td>
|
||||
<td>
|
||||
<textarea id="autoresponderbetreff" name="autoresponderbetreff" rows="6" style="width:100%;">[AUTORESPONDERBETREFF]</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Automatische Antwort Text|}:</td>
|
||||
<td>
|
||||
<textarea id="autorespondertext" name="autorespondertext" rows="6" style="width:100%;">[AUTORESPONDERTEXT]</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Eigene Signatur verwenden|}:</td>
|
||||
<td>
|
||||
<input type="checkbox" name="eigenesignatur" value="1" [EIGENESIGNATUR]>
|
||||
</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" id="adresse" name="adresse" value="[ADRESSE]" size="40">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Projekt|}:</td>
|
||||
<td>
|
||||
<input type="text" id="projekt" name="projekt" value="[PROJEKT]" size="40">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Firma|}:</td>
|
||||
<td>
|
||||
<input type="text" name="firma" value="[FIRMA]" size="40">
|
||||
</td>
|
||||
<tr>
|
||||
<td>{|Geschäftsbriefvorlage|}:</td>
|
||||
<td>
|
||||
<input type="text" name="geschaeftsbriefvorlage" value="[GESCHAEFTSBRIEFVORLAGE]" size="40">
|
||||
</td>
|
||||
</tr>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<input type="submit" name="submit" value="Speichern" style="float:right" />
|
||||
</form>
|
||||
</div>
|
||||
<form id="smtp_test" action="index.php">
|
||||
<input type="text" name="module" value="emailbackup" style="display:none">
|
||||
<input type="text" name="action" value="test_smtp" style="display:none">
|
||||
<input type="text" name="id" value="[ID]" style="display:none">
|
||||
</form>
|
||||
|
||||
<form id="imap_test" action = "index.php">
|
||||
<input type="text" name="module" value="emailbackup" style="display:none">
|
||||
<input type="text" name="action" value="test_imap" style="display:none">
|
||||
<input type="text" name="id" value="[ID]" style="display:none">
|
||||
<form id="imap_test" action="index.php">
|
||||
<input type="text" name="module" value="emailbackup" style="display:none">
|
||||
<input type="text" name="action" value="test_imap" style="display:none">
|
||||
<input type="text" name="id" value="[ID]" style="display:none">
|
||||
</form>
|
||||
|
||||
|
|
|
|||
|
|
@ -27,6 +27,10 @@
|
|||
<td>{|Verbindlichkeiten:|}</td>
|
||||
<td><input type="checkbox" name="verbindlichkeit" value="1" [VBCHECKED] /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Lieferantengutschriften:|}</td>
|
||||
<td><input type="checkbox" name="lieferantengutschrift" value="1" [LGCHECKED] /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Datum von:</td>
|
||||
<td><input type="text" name="von" id="von" value="[VON]" /></td>
|
||||
|
|
|
|||
|
|
@ -775,6 +775,10 @@
|
|||
<td>Nächste Verbindlichkeitsnummer:</td><td><input type="text" name="next_verbindlichkeit" readonly value="[NEXT_VERBINDLICHKEIT]" size="40">
|
||||
<input type="button" onclick="next_number('verbindlichkeit','[NEXT_VERBINDLICHKEIT]');" value="bearbeiten"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Nächste Lieferantengutschriftnummer:</td><td><input type="text" name="next_lieferantengutschrift" readonly value="[NEXT_LIEFERANTENGUTSCHRIFT]" size="40">
|
||||
<input type="button" onclick="next_number('lieferantengutschrift','[NEXT_LIEFERANTENGUTSCHRIFT]');" value="bearbeiten"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Nächste Kundennummer:</td><td><input type="text" name="next_kundennummer" readonly value="[NEXT_KUNDENNUMMER]" size="40">
|
||||
<input type="button" onclick="next_number('kundennummer','[NEXT_KUNDENNUMMER]');" value="bearbeiten"></td>
|
||||
|
|
@ -1412,6 +1416,7 @@
|
|||
<tr><td width="300">[BEZEICHNUNGANGEBOTERSATZ] als Standard:</td><td><input type="checkbox" name="angebotersatz_standard" [ANGEBOTERSATZ_STANDARD]></td></tr>
|
||||
<tr><td width="300">Beschriftung Abweichend Auftrag:</td><td><input type="text" name="bezeichnungauftragersatz" data-lang="bezeichnungauftragersatz" value="[BEZEICHNUNGAUFTRAGERSATZ]"> <i>Beschriftung im Auftrag</i></td></tr>
|
||||
<tr><td width="300">Beschriftung Abweichend Rechnung:</td><td><input type="text" name="bezeichnungrechnungersatz" data-lang="bezeichnungrechnungersatz" value="[BEZEICHNUNGRECHNUNGERSATZ]"> <i>Beschriftung in Rechnung</i></td></tr>
|
||||
<tr><td width="300">[BEZEICHNUNGRECHNUNGERSATZ] als Standard:</td><td><input type="checkbox" name="rechnungersatz_standard" [RECHNUNGERSATZ_STANDARD]></td></tr>
|
||||
<tr><td width="300">Beschriftung Abweichend Gutschrift:</td><td><input type="text" name="bezeichnungstornorechnung" data-lang="bezeichnungstornorechnung" value="[BEZEICHNUNGSTORNORECHNUNG]"> <i>laut 06/2013 §14 UStG</i></td></tr>
|
||||
<tr><td width="300">[BEZEICHNUNGSTORNORECHNUNG] als Standard:</td><td><input type="checkbox" name="stornorechnung_standard" [STORNORECHNUNG_STANDARD]></td></tr>
|
||||
<tr><td width="300">Beschriftung Abweichend Lieferschein:</td><td><input type="text" name="bezeichnunglieferscheinersatz" data-lang="bezeichnunglieferscheinersatz" value="[BEZEICHNUNGLIEFERSCHEINERSATZ]"> <i>Beschriftung in Lieferschein</i></td></tr>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,119 @@
|
|||
<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>-->kostenstellen|}
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr>
|
||||
<td>
|
||||
{|Nummer|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="nummer" id="nummer" value="[NUMMER]" size="20">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Beschreibung|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="beschreibung" id="beschreibung" value="[BESCHREIBUNG]" 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>
|
||||
<!-- 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>
|
||||
{|Nummer|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="nummer" id="nummer" value="[NUMMER]" size="20">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Beschreibung|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="beschreibung" id="beschreibung" value="[BESCHREIBUNG]" 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> -->
|
||||
<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,55 @@
|
|||
[POSITIONENMESSAGE]
|
||||
<form method="post" action="#tabs-2">
|
||||
<div class="row" [POSITIONHINZUFUEGENHIDDEN]>
|
||||
<div class="row-height">
|
||||
<div class="col-xs-14 col-md-12 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend style="float:left">Artikel hinzufügen:</legend>
|
||||
<div class="filter-box filter-usersave" style="float:right;">
|
||||
<div class="filter-block filter-inline">
|
||||
<div class="filter-title">{|Filter|}</div>
|
||||
<ul class="filter-list">
|
||||
<li class="filter-item">
|
||||
<label for="passende" class="switch">
|
||||
<input type="checkbox" id="passende">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
<label for="passende">{|Nur passende (Bestellung/Rechnungsnummer)|}</label>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
[ARTIKELMANUELL]
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-14 col-md-2 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<legend>{|Aktionen|}</legend>
|
||||
<tr [HINZUFUEGENHIDDEN]>
|
||||
<td>
|
||||
{|Multifilter|}: <img src="./themes/new/images/tooltip_grau.png" border="0" style="position: relative; left: 1px; top: 3px; z-index: 8;" class="wawitooltipicon" title="Auswahl mehrerer Artikel über Name oder Nummer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox" name="bruttoeingabe" value="1" />Bruttopreise eingeben</td>
|
||||
</tr>
|
||||
<tr [HINZUFUEGENHIDDEN]>
|
||||
<td>
|
||||
<input type="text" name="multifilter" id="multifilter" value="[MULTIFILTER]" size="20" style="width:98%;" form="">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><button [SAVEDISABLED] name="submit" value="artikel_manuell_hinzufuegen" class="ui-button-icon" style="width:100%;">Hinzufügen</button></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
|
@ -0,0 +1,219 @@
|
|||
<div id="tabs">
|
||||
<ul>
|
||||
<li><a href="#tabs-1">Lieferantengutschrift</a></li>
|
||||
<li [POSITIONENHIDDEN]><a href="#tabs-2">Positionen</a></li>
|
||||
<li [POSITIONENHIDDEN]><a href="#tabs-4">Artikel manuell</a></li>
|
||||
<li><a href="#tabs-3">Protokoll</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-6 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-8 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset style="float: left;">
|
||||
<legend>{|<b>Lieferantengutschrift <font color="blue">[BELEGNR]</font></b> Lf-Nr. <a href="index.php?module=adresse&action=edit&id=[ADRESSE_ID]">[LIEFERANTENNUMMER]|}</a></legend>
|
||||
[STATUSICONS]
|
||||
</fieldset>
|
||||
<fieldset style="float: right;">
|
||||
<button name="submit" value="speichern" class="ui-button-icon" style="width:100%;">Speichern</button>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-8 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr>
|
||||
<td>
|
||||
{|Status|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" value="[STATUS]" size="20" disabled>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Adresse|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="adresse" id="adresse" value="[ADRESSE]" size="20" [ADRESSESAVEDISABLED] required>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Lieferantengutschrifts-Nr.|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="rechnung" id="rechnung" value="[RECHNUNG]" size="20" [SAVEDISABLED] required>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Lieferantengutschriftsdatum|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="rechnungsdatum" id="rechnungsdatum" value="[RECHNUNGSDATUM]" size="20" [SAVEDISABLED]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Eingangsdatum|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="eingangsdatum" id="eingangsdatum" value="[EINGANGSDATUM]" size="20" [SAVEDISABLED]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Betrag brutto|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" step="0.01" name="betrag" id="betrag" value="[BETRAG]" size="20" [SAVEDISABLED]>
|
||||
<select name="waehrung" [SAVEDISABLED]>[WAEHRUNGSELECT]</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Betrag Positionen brutto|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" step="0.01" name="betragbruttopos" id="betragbruttopos" value="[BETRAGBRUTTOPOS]" size="20" disabled><img class="wawitooltipicon" src="themes/new/images/tooltip_grau.png" title="Rundungsdifferenz [RUNDUNGSDIFFERENZ] wurde automatisch berücksichtigt" [RUNDUNGSDIFFERENZICONHIDDEN]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Betrag Positionen netto|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" step="0.01" name="betragnetto" id="betragnetto" value="[BETRAGNETTO]" size="20" disabled [SAVEDISABLED]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Zahlbar bis|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="zahlbarbis" id="zahlbarbis" value="[ZAHLBARBIS]" size="20" [SAVEDISABLED]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Skonto %|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="skonto" id="skonto" value="[SKONTO]" size="20" [SAVEDISABLED]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Skonto bis|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="skontobis" id="skontobis" value="[SKONTOBIS]" size="20" [SAVEDISABLED]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Bestellung|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="bestellung" id="bestellung" value="[BESTELLUNG]" size="20" [SAVEDISABLED]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Waren-/Leistungsprüfung (Einkauf)|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" id="wareneingang" value="1" [WARENEINGANGCHECKED] size="20" disabled>
|
||||
<a href="index.php?module=lieferantengutschrift&action=freigabeeinkauf&id=[ID]" title="freigeben" [FREIGABEEINKAUFHIDDEN]><img src="themes/new/images/forward.svg" border="0" class="textfeld_icon"></a>
|
||||
<a href="index.php?module=lieferantengutschrift&action=ruecksetzeneinkauf&id=[ID]" title="rücksetzen" [RUECKSETZENEINKAUFHIDDEN]><img src="themes/new/images/delete.svg" border="0" class="textfeld_icon"></a>
|
||||
<i [EINKAUFINFOHIDDEN]>Wird automatisch gesetzt wenn Positionen vollständig</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Lieferantengutschriftseingangsprüfung (Buchhaltung)|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" id="rechnungsfreigabe" [RECHNUNGSFREIGABECHECKED] size="20" disabled>
|
||||
<a href="index.php?module=lieferantengutschrift&action=freigabebuchhaltung&id=[ID]" title="freigeben" [FREIGABEBUCHHALTUNGHIDDEN]><img src="themes/new/images/forward.svg" border="0" class="textfeld_icon"></a>
|
||||
<a href="index.php?module=lieferantengutschrift&action=ruecksetzenbuchhaltung&id=[ID]" title="rücksetzen" [RUECKSETZENBUCHHALTUNGHIDDEN]><img src="themes/new/images/delete.svg" border="0" class="textfeld_icon"></a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Bezahlt|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" id="zahlungsstatus" [BEZAHLTCHECKED] size="20" disabled>
|
||||
<a href="index.php?module=lieferantengutschrift&action=freigabebezahlt&id=[ID]" title="auf 'bezahlt' setzen" [FREIGABEBEZAHLTHIDDEN]><img src="themes/new/images/forward.svg" border="0" class="textfeld_icon"></a>
|
||||
<a href="index.php?module=lieferantengutschrift&action=ruecksetzenbezahlt&id=[ID]" title="rücksetzen" [RUECKSETZENBEZAHLTHIDDEN]><img src="themes/new/images/delete.svg" border="0" class="textfeld_icon"></a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Projekt|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="projekt" id="projekt" value="[PROJEKT]" size="20">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Kostenstelle|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="kostenstelle" id="kostenstelle" value="[KOSTENSTELLE]" size="20">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Internebemerkung|}:
|
||||
</td>
|
||||
<td>
|
||||
<textarea name="internebemerkung" id="internebemerkung" rows="6" style="width:100%;">[INTERNEBEMERKUNG]</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-6 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|Vorschau|}</legend>
|
||||
[INLINEPDF]
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div id="tabs-2">
|
||||
[POSITIONENTAB]
|
||||
</div>
|
||||
<div id="tabs-4">
|
||||
[POSITIONENMANUELLTAB]
|
||||
</div>
|
||||
<div id="tabs-3">
|
||||
[MINIDETAIL]
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -0,0 +1,93 @@
|
|||
<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">
|
||||
<li class="filter-item">
|
||||
<label for="anhang" class="switch">
|
||||
<input type="checkbox" id="anhang">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
<label for="anhang">{|Anhang fehlt|}</label>
|
||||
</li>
|
||||
<li class="filter-item">
|
||||
<label for="wareneingang" class="switch">
|
||||
<input type="checkbox" id="wareneingang">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
<label for="wareneingang">{|Wareingang/Leistungsprüfung fehlt|}</label>
|
||||
</li>
|
||||
<li class="filter-item">
|
||||
<label for="rechnungsfreigabe" class="switch">
|
||||
<input type="checkbox" id="rechnungsfreigabe">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
<label for="rechnungsfreigabe">{|Lieferantengutschriftseingangsprüfung fehlt|}</label>
|
||||
</li>
|
||||
<li class="filter-item">
|
||||
<label for="nichtbezahlt" class="switch">
|
||||
<input type="checkbox" id="nichtbezahlt">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
<label for="nichtbezahlt">{|Nicht bezahlt|}</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">{|Inkl. stornierte|}</label>
|
||||
</li>
|
||||
<li class="filter-item">
|
||||
<label for="abgeschlossen" class="switch">
|
||||
<input type="checkbox" id="abgeschlossen">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
<label for="abgeschlossen">{|Inkl. abgeschlossene|}</label>
|
||||
</li>
|
||||
<li class="filter-item">
|
||||
<label for="zahlbarbis">{|Zahlbar bis|}:</label>
|
||||
<input type="text" name="zahlbarbis" id="zahlbarbis" size="10">
|
||||
</li>
|
||||
<li class="filter-item">
|
||||
<label for="skontobis">{|Skonto bis|}:</label>
|
||||
<input type="text" name="skontobis" id="skontobis" size="10">
|
||||
</li>
|
||||
</ul>
|
||||
<form method="post" action="#">
|
||||
<button name="submit" value="status_berechnen" class="ui-button-icon">{|Status auffrischen|}</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form method="post" action="#">
|
||||
[TAB1]
|
||||
<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>
|
||||
[MANUELLFREIGABEEINKAUF]
|
||||
[MANUELLFREIGABEBUCHHALTUNG]
|
||||
[ALSBEZAHLTMARKIEREN]
|
||||
</select>
|
||||
<button name="submit" value="ausfuehren" class="ui-button-icon">{|Ausführen|}</button>
|
||||
</fieldset>
|
||||
</form>
|
||||
[TAB1NEXT]
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function alleauswaehlen()
|
||||
{
|
||||
var wert = $('#auswahlalle').prop('checked');
|
||||
$('#lieferantengutschrift_list').find(':checkbox').prop('checked',wert);
|
||||
}
|
||||
|
||||
</script>
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
[FORMHANDLEREVENT]
|
||||
[MESSAGE]
|
||||
<style>
|
||||
.auftraginfo_cell {
|
||||
color: #636363;border: 1px solid #ccc;padding: 5px;
|
||||
}
|
||||
.auftrag_cell {
|
||||
color: #636363;border: 1px solid #fff;padding: 0px; margin:0px;
|
||||
}
|
||||
</style>
|
||||
<div style="float:left; width:39%; padding-right:1%;">
|
||||
<table width="100%" border="0">
|
||||
<tr valign="top">
|
||||
<td width="150">Lieferant:</td>
|
||||
<td colspan="3">[ADRESSEAUTOSTART][ADRESSE][MSGADRESSE][ADRESSEAUTOEND]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Lieferantengutschrifts-Nr.:</td>
|
||||
<td>[RECHNUNG][MSGRECHNUNG]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Lieferantengutschriftsdatum:</td>
|
||||
<td width="250">[RECHNUNGSDATUM][MSGRECHNUNGSDATUM]</td>
|
||||
<tr>
|
||||
</tr>
|
||||
</tr>
|
||||
<td width="200">Zahlbar bis:</td>
|
||||
<td>[ZAHLBARBIS][MSGZAHLBARBIS][DATUM_ZAHLBARBIS]</td>
|
||||
</tr>
|
||||
<td>Betrag/Total (Brutto):</td>
|
||||
<td>[BETRAG][MSGBETRAG] [WAEHRUNG][MSGWAEHRUNG]</td>
|
||||
<tr>
|
||||
<td>Skonto in %:</td>
|
||||
<td>[SKONTO][MSGSKONTO]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Skonto bis:</td>
|
||||
<td>[SKONTOBIS][MSGSKONTOBIS][DATUM_SKONTOBIS]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Projekt:</td>
|
||||
<td>[PROJEKT][MSGKOSTENSTELLE]</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Kostenstelle:</td>
|
||||
<td>[KOSTENSTELLE][MSGKOSTENSTELLE]</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Interne Bemerkung:</td>
|
||||
<td colspan="4">[INTERNEBEMERKUNG]</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div style="float:left; width:60%">
|
||||
<div style="background-color:white">
|
||||
<h2 class="greyh2">Artikel</h2>
|
||||
<div style="padding:10px">
|
||||
[ARTIKEL]
|
||||
</div>
|
||||
</div>
|
||||
<div style="background-color:white">
|
||||
<h2 class="greyh2">Buchungen</h2>
|
||||
<div style="padding:10px">
|
||||
[ZAHLUNGEN]
|
||||
</div>
|
||||
</div>
|
||||
<div style="background-color:white">
|
||||
<h2 class="greyh2">Protokoll</h2>
|
||||
<div style="padding:10px;">
|
||||
[PROTOKOLL]
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
<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>{|Position bearbeiten|}</legend><i></i>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr>
|
||||
<td>
|
||||
{|Menge|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" name="menge" id="menge" value="[MENGE]" size="20" [SAVEDISABLED]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Preis|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" name="preis" id="preis" step="0.00001" value="[PREIS]" size="20" [SAVEDISABLED]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Steuersatz %|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" name="steuersatz" id="steuersatz" value="[STEUERSATZ]" size="20" [SAVEDISABLED]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Sachkonto|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="sachkonto" id="sachkonto" value="[SACHKONTO]" size="20" [SACHKONTOSAVEDISABLED]>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<input type="submit" name="submit" value="Speichern" style="float:right"/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -0,0 +1,88 @@
|
|||
[POSITIONENMESSAGE]
|
||||
<form method="post" action="#tabs-2">
|
||||
<div class="row" [POSITIONHINZUFUEGENHIDDEN]>
|
||||
<div class="row-height">
|
||||
<div class="col-xs-14 col-md-12 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend style="float:left">Artikel hinzufügen:</legend>
|
||||
<div class="filter-box filter-usersave" style="float:right;">
|
||||
<div class="filter-block filter-inline">
|
||||
<div class="filter-title">{|Filter|}</div>
|
||||
<ul class="filter-list">
|
||||
<li class="filter-item">
|
||||
<label for="passende" class="switch">
|
||||
<input type="checkbox" id="passende">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
<label for="passende">{|Nur passende (Bestellung/Rechnungsnummer)|}</label>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
[PAKETDISTRIBUTION]
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-14 col-md-2 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<legend>{|Aktionen|}</legend>
|
||||
<tr>
|
||||
<td><input type="checkbox" id="auswahlallewareneingaenge" onchange="allewareneingaengeauswaehlen();" />{|alle markieren|}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><button [SAVEDISABLED] name="submit" value="positionen_hinzufuegen" class="ui-button-icon" style="width:100%;">Hinzufügen</button></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<form method="post" action="#tabs-2">
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-14 col-md-12 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
[POSITIONEN]
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-14 col-md-2 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<legend>{|Aktionen|}</legend>
|
||||
<tr [SACHKONTOCHANGEHIDDEN]>
|
||||
<td><input type="checkbox" id="auswahlalle" onchange="alleauswaehlen();" />{|alle markieren|}</td>
|
||||
</tr>
|
||||
<tr [POSITIONHINZUFUEGENHIDDEN]>
|
||||
<td><button [SAVEDISABLED] name="submit" value="positionen_entfernen" class="ui-button-icon" style="width:100%;">Entfernen</button></td>
|
||||
</tr>
|
||||
<tr [SACHKONTOCHANGEHIDDEN]>
|
||||
<td><input type="text" name="positionen_sachkonto" id="positionen_sachkonto" value="" size="20"></td>
|
||||
</tr>
|
||||
<tr [SACHKONTOCHANGEHIDDEN]>
|
||||
<td><button name="submit" value="positionen_kontorahmen_setzen" class="ui-button-icon" style="width:100%;">Sachkonto setzen</button></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<script>
|
||||
function allewareneingaengeauswaehlen()
|
||||
{
|
||||
var wert = $('#auswahlallewareneingaenge').prop('checked');
|
||||
$('#verbindlichkeit_positionen').find(':checkbox').prop('checked',wert);
|
||||
}
|
||||
function alleauswaehlen()
|
||||
{
|
||||
var wert = $('#auswahlalle').prop('checked');
|
||||
$('#lieferantengutschrift_positionen').find(':checkbox').prop('checked',wert);
|
||||
}
|
||||
</script>
|
||||
|
|
@ -8,6 +8,7 @@ SPDX-License-Identifier: LicenseRef-EGPL-3.1
|
|||
<li><a href="#tabs-2">Aufträge</a></li>
|
||||
</ul>
|
||||
<div id="tabs-1">
|
||||
[MESSAGE]
|
||||
[MESSAGE_INVOICES]
|
||||
<form method="post" action="#">
|
||||
[TAB_INVOICES]
|
||||
|
|
@ -19,6 +20,7 @@ SPDX-License-Identifier: LicenseRef-EGPL-3.1
|
|||
</form>
|
||||
</div>
|
||||
<div id="tabs-2">
|
||||
[MESSAGE]
|
||||
[MESSAGE_ORDERS]
|
||||
<form method="post" action="#">
|
||||
[TAB_ORDERS]
|
||||
|
|
|
|||
|
|
@ -0,0 +1,85 @@
|
|||
<div id="tabs" class="report">
|
||||
<ul>
|
||||
<li><a href="#tabs-1">Tabellen</a></li>
|
||||
<li><a href="#tabs-2">Struktur</a></li>
|
||||
<li><a href="#tabs-3">Vorschau</a></li>
|
||||
</ul>
|
||||
<!-- ende gehort zu tabview -->
|
||||
|
||||
<!-- erstes tab -->
|
||||
<div id="tabs-1">
|
||||
[MESSAGE]
|
||||
<div class="row" id="report_list_main">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-sm-10 col-sm-height">
|
||||
<div>
|
||||
[TAB1]
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
[TAB1NEXT]
|
||||
</div>
|
||||
<div id="tabs-2">
|
||||
[MESSAGE]
|
||||
<div class="row" id="report_list_main">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-sm-10 col-sm-height">
|
||||
<legend style="float:left">
|
||||
Tabelle [TABLENAME]
|
||||
</legend>
|
||||
<form method="post" action="#tabs-3">
|
||||
<fieldset style="float: right;">
|
||||
<input type="text" name="table" value="[TABLENAME]" hidden></input>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr>
|
||||
<td style="padding-right:10px;"><input type="checkbox" id="auswahlalle" onchange="alleauswaehlen();"/>{|alle markieren|}</td>
|
||||
<td><button name="submit" value="vorschau" class="ui-button-icon" style="width:100%;float:right;">Vorschau</button></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
<p></p>
|
||||
<div id="columnstab">
|
||||
[TAB2]
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
[TAB2NEXT]
|
||||
</div>
|
||||
<div id="tabs-3">
|
||||
[MESSAGE]
|
||||
<div class="row" id="report_list_main">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-sm-10 col-sm-height">
|
||||
<legend style="float:left">
|
||||
Tabelle [TABLENAME]
|
||||
</legend>
|
||||
<form method="post" action="#tabs-3">
|
||||
<fieldset style="float: right;">
|
||||
<input type="text" name="table" value="[TABLENAME]" hidden></input>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr>
|
||||
<td><button name="submit" value="erzeugen" class="ui-button-icon" style="width:100%;float:right;">Bericht erzeugen</button></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</form>
|
||||
<div>
|
||||
[TAB3]
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
[TAB3NEXT]
|
||||
</div>
|
||||
<!-- tab view schließen -->
|
||||
</div>
|
||||
<script>
|
||||
function alleauswaehlen()
|
||||
{
|
||||
var wert = $('#auswahlalle').prop('checked');
|
||||
$('#columnstab').find(':checkbox').prop('checked',wert);
|
||||
}
|
||||
</script>
|
||||
|
|
@ -60,7 +60,7 @@
|
|||
<td>
|
||||
</td>
|
||||
<td>
|
||||
<button name="submit" value="spam_filter" class="ui-button-icon" title="Ticket auf Status 'Papierkorb' setzen und Absender-Adresse in Ticketregel eintragen" style="width:100%;">{|Spamregel erstellen|}</button>
|
||||
<button name="submit" value="spam_filter" class="ui-button-icon" title="Ticket auf Status 'Papierkorb' setzen und Absender-Adresse in Ticketregel eintragen" style="width:100%;" onclick="if(confirm('Wirklich Ticketregel erstellen?'))document.getElementById('form-id').submit(); else return false;">{|Spamregel erstellen|}</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
<div class="col-xs-14 col-md-12 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|OpenXE Upgrade-System|}</legend>
|
||||
<legend>{|DBXE Upgrade-System|}</legend>
|
||||
Das Upgrade funktioniert in 2 Schritten: Dateien aktualisieren, Datenbank auffrischen. Wenn das Upgrade lange läuft, kann der Fortschritt in einem neuen Fenster mit "Anzeige auffrischen" angezeigt werden.<br><br>
|
||||
Falls nach einem Abbruch oder schwerwiegenden Fehler kein Upgrade möglich ist, im Hauptordner den Ordner ".git" löschen und das Upgrade in der Konsole erneut durchführen.
|
||||
Dazu im Unterordner "upgrade" diesen Befehl starten: <pre>./upgrade.sh -do</pre>
|
||||
|
|
@ -37,7 +37,7 @@ Dazu im Unterordner "upgrade" diesen Befehl starten: <pre>./upgrade.sh -do</pre>
|
|||
<fieldset>
|
||||
<legend>{|Aktuelle Version|}</legend>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<b>OpenXE [CURRENT]</b>
|
||||
<b>DBXE [CURRENT]</b>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,215 @@
|
|||
<div id="tabs">
|
||||
<ul>
|
||||
<li><a href="#tabs-1">Verbindlichkeit</a></li>
|
||||
<li [POSITIONENHIDDEN]><a href="#tabs-2">Positionen</a></li>
|
||||
<li><a href="#tabs-3">Protokoll</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-6 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-8 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset style="float: left;">
|
||||
<legend>{|<b>Verbindlichkeit <font color="blue">[BELEGNR]</font></b> Lf-Nr. <a href="index.php?module=adresse&action=edit&id=[ADRESSE_ID]">[LIEFERANTENNUMMER]|}</a></legend>
|
||||
[STATUSICONS]
|
||||
</fieldset>
|
||||
<fieldset style="float: right;">
|
||||
<button name="submit" value="speichern" class="ui-button-icon" style="width:100%;">Speichern</button>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-8 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr>
|
||||
<td>
|
||||
{|Status|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" value="[STATUS]" size="20" disabled>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Adresse|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="adresse" id="adresse" value="[ADRESSE]" size="20" [SAVEDISABLED] required>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Rechnungs-Nr.|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="rechnung" id="rechnung" value="[RECHNUNG]" size="20" [SAVEDISABLED] required>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Rechnungsdatum|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="rechnungsdatum" id="rechnungsdatum" value="[RECHNUNGSDATUM]" size="20" [SAVEDISABLED]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Eingangsdatum|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="eingangsdatum" id="eingangsdatum" value="[EINGANGSDATUM]" size="20" [SAVEDISABLED]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Betrag brutto|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" step="0.01" name="betrag" id="betrag" value="[BETRAG]" size="20" [SAVEDISABLED]>
|
||||
<select name="waehrung" [SAVEDISABLED]>[WAEHRUNGSELECT]</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Betrag Positionen brutto|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" step="0.01" name="betragbruttopos" id="betragbruttopos" value="[BETRAGBRUTTOPOS]" size="20" disabled><img class="wawitooltipicon" src="themes/new/images/tooltip_grau.png" title="Rundungsdifferenz [RUNDUNGSDIFFERENZ] wurde automatisch berücksichtigt" [RUNDUNGSDIFFERENZICONHIDDEN]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Betrag Positionen netto|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" step="0.01" name="betragnetto" id="betragnetto" value="[BETRAGNETTO]" size="20" disabled [SAVEDISABLED]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Zahlbar bis|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="zahlbarbis" id="zahlbarbis" value="[ZAHLBARBIS]" size="20" [SAVEDISABLED]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Skonto %|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="skonto" id="skonto" value="[SKONTO]" size="20" [SAVEDISABLED]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Skonto bis|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="skontobis" id="skontobis" value="[SKONTOBIS]" size="20" [SAVEDISABLED]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Bestellung|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="bestellung" id="bestellung" value="[BESTELLUNG]" size="20" [SAVEDISABLED]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Waren-/Leistungsprüfung (Einkauf)|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" id="wareneingang" value="1" [WARENEINGANGCHECKED] size="20" disabled>
|
||||
<a href="index.php?module=verbindlichkeit&action=freigabeeinkauf&id=[ID]" title="freigeben" [FREIGABEEINKAUFHIDDEN]><img src="themes/new/images/forward.svg" border="0" class="textfeld_icon"></a>
|
||||
<a href="index.php?module=verbindlichkeit&action=ruecksetzeneinkauf&id=[ID]" title="rücksetzen" [RUECKSETZENEINKAUFHIDDEN]><img src="themes/new/images/delete.svg" border="0" class="textfeld_icon"></a>
|
||||
<i [EINKAUFINFOHIDDEN]>Wird automatisch gesetzt wenn Positionen vollständig</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Rechnungseingangsprüfung (Buchhaltung)|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" id="rechnungsfreigabe" [RECHNUNGSFREIGABECHECKED] size="20" disabled>
|
||||
<a href="index.php?module=verbindlichkeit&action=freigabebuchhaltung&id=[ID]" title="freigeben" [FREIGABEBUCHHALTUNGHIDDEN]><img src="themes/new/images/forward.svg" border="0" class="textfeld_icon"></a>
|
||||
<a href="index.php?module=verbindlichkeit&action=ruecksetzenbuchhaltung&id=[ID]" title="rücksetzen" [RUECKSETZENBUCHHALTUNGHIDDEN]><img src="themes/new/images/delete.svg" border="0" class="textfeld_icon"></a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Bezahlt|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" id="zahlungsstatus" [BEZAHLTCHECKED] size="20" disabled>
|
||||
<a href="index.php?module=verbindlichkeit&action=freigabebezahlt&id=[ID]" title="auf 'bezahlt' setzen" [FREIGABEBEZAHLTHIDDEN]><img src="themes/new/images/forward.svg" border="0" class="textfeld_icon"></a>
|
||||
<a href="index.php?module=verbindlichkeit&action=ruecksetzenbezahlt&id=[ID]" title="rücksetzen" [RUECKSETZENBEZAHLTHIDDEN]><img src="themes/new/images/delete.svg" border="0" class="textfeld_icon"></a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Projekt|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="projekt" id="projekt" value="[PROJEKT]" size="20">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Kostenstelle|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="kostenstelle" id="kostenstelle" value="[KOSTENSTELLE]" size="20">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Internebemerkung|}:
|
||||
</td>
|
||||
<td>
|
||||
<textarea name="internebemerkung" id="internebemerkung" rows="6" style="width:100%;">[INTERNEBEMERKUNG]</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-6 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|Vorschau|}</legend>
|
||||
[INLINEPDF]
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div id="tabs-2">
|
||||
[POSITIONENTAB]
|
||||
</div>
|
||||
<div id="tabs-3">
|
||||
[MINIDETAIL]
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -0,0 +1,93 @@
|
|||
<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">
|
||||
<li class="filter-item">
|
||||
<label for="anhang" class="switch">
|
||||
<input type="checkbox" id="anhang">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
<label for="anhang">{|Anhang fehlt|}</label>
|
||||
</li>
|
||||
<li class="filter-item">
|
||||
<label for="wareneingang" class="switch">
|
||||
<input type="checkbox" id="wareneingang">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
<label for="wareneingang">{|Wareingang/Leistungsprüfung fehlt|}</label>
|
||||
</li>
|
||||
<li class="filter-item">
|
||||
<label for="rechnungsfreigabe" class="switch">
|
||||
<input type="checkbox" id="rechnungsfreigabe">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
<label for="rechnungsfreigabe">{|Rechnungseingangsprüfung fehlt|}</label>
|
||||
</li>
|
||||
<li class="filter-item">
|
||||
<label for="nichtbezahlt" class="switch">
|
||||
<input type="checkbox" id="nichtbezahlt">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
<label for="nichtbezahlt">{|Nicht bezahlt|}</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">{|Inkl. stornierte|}</label>
|
||||
</li>
|
||||
<li class="filter-item">
|
||||
<label for="abgeschlossen" class="switch">
|
||||
<input type="checkbox" id="abgeschlossen">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
<label for="abgeschlossen">{|Inkl. abgeschlossene|}</label>
|
||||
</li>
|
||||
<li class="filter-item">
|
||||
<label for="zahlbarbis">{|Zahlbar bis|}:</label>
|
||||
<input type="text" name="zahlbarbis" id="zahlbarbis" size="10">
|
||||
</li>
|
||||
<li class="filter-item">
|
||||
<label for="skontobis">{|Skonto bis|}:</label>
|
||||
<input type="text" name="skontobis" id="skontobis" size="10">
|
||||
</li>
|
||||
</ul>
|
||||
<form method="post" action="#">
|
||||
<button name="submit" value="status_berechnen" class="ui-button-icon">{|Status auffrischen|}</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form method="post" action="#">
|
||||
[TAB1]
|
||||
<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>
|
||||
[MANUELLFREIGABEEINKAUF]
|
||||
[MANUELLFREIGABEBUCHHALTUNG]
|
||||
[ALSBEZAHLTMARKIEREN]
|
||||
</select>
|
||||
<button name="submit" value="ausfuehren" class="ui-button-icon">{|Ausführen|}</button>
|
||||
</fieldset>
|
||||
</form>
|
||||
[TAB1NEXT]
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function alleauswaehlen()
|
||||
{
|
||||
var wert = $('#auswahlalle').prop('checked');
|
||||
$('#verbindlichkeit_list').find(':checkbox').prop('checked',wert);
|
||||
}
|
||||
|
||||
</script>
|
||||
|
|
@ -1,176 +1,76 @@
|
|||
|
||||
[FORMHANDLEREVENT]
|
||||
[MESSAGE]
|
||||
|
||||
<table class="tableborder" border="0" cellpadding="3" cellspacing="0" width="100%">
|
||||
<tbody>
|
||||
<tr valign="top" colspan="3">
|
||||
<td >
|
||||
<fieldset><legend>{|Rechnungsdaten|}</legend>
|
||||
|
||||
<style>
|
||||
.auftraginfo_cell {
|
||||
color: #636363;border: 1px solid #ccc;padding: 5px;
|
||||
}
|
||||
.auftrag_cell {
|
||||
color: #636363;border: 1px solid #fff;padding: 0px; margin:0px;
|
||||
}
|
||||
</style>
|
||||
<div style="float:left; width:39%; padding-right:1%;">
|
||||
<table width="100%" border="0">
|
||||
<tr valign="top"><td width="150">Lieferant:</td><td>[ADRESSEAUTOSTART][ADRESSE][MSGADRESSE][ADRESSEAUTOEND]</td>
|
||||
<td> </td>
|
||||
<td colspan="2" rowspan="2" align="center"><b style="color:green">[MELDUNG]</b>
|
||||
<br><font size="7">[VERBINDLICHKEIT]</font>
|
||||
</td></tr>
|
||||
|
||||
<tr><td><br><br>Rechnungs Nr.:</td><td><br><br>[RECHNUNG][MSGRECHNUNG]</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
|
||||
<tr><td>Bestellung:</td><td width="250">[DISABLESTART]<a href="index.php?module=bestellung&action=edit&id=[BESTELLUNGID]" target="_blank">[BESTELLUNG]</a>[MSGBESTELLUNG][MULTIBESTELLUNG][DISABLEENDE]</td>
|
||||
<td> </td>
|
||||
<td width="200">Zahlweise:</td><td>[ZAHLUNGSWEISE][MSGZAHLUNGSWEISE]</td></tr>
|
||||
|
||||
<tr><td>Rechnungsdatum:</td><td width="250">[RECHNUNGSDATUM][MSGRECHNUNGSDATUM]</td>
|
||||
<td> </td>
|
||||
<td width="200">Zahlbar bis:</td><td>[ZAHLBARBIS][MSGZAHLBARBIS][DATUM_ZAHLBARBIS]</td></tr>
|
||||
|
||||
<tr><td>Betrag/Total (Brutto):</td><td>[BETRAG][MSGBETRAG] [WAEHRUNG][MSGWAEHRUNG]</td><td> </td>
|
||||
<td>Skonto in %:</td><td>[SKONTO][MSGSKONTO]</td>
|
||||
</tr>
|
||||
|
||||
<tr><td>USt. 19%:</td><td>[SUMMENORMAL][MSGSUMMENORMAL]</td><td> </td>
|
||||
<td>Skonto bis:</td><td>[SKONTOBIS][MSGSKONTOBIS][DATUM_SKONTOBIS]</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>USt. 7%:</td><td>[SUMMEERMAESSIGT][MSGSUMMEERMAESSIGT]</td>
|
||||
<td> </td>
|
||||
<td>Umsatzsteuer</td><td>[UMSATZSTEUER][MSGUMSATZSTEUER]</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td>[STEUERSATZNAME3]</td><td>[SUMMESATZ3][MSGSUMMESATZ3]</td>
|
||||
<td> </td>
|
||||
<td>[STEUERSATZNAME4]</td><td>[SUMMESATZ4][MSGSUMMESATZ4]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Verwendungszweck:</td><td>[VERWENDUNGSZWECK][MSGVERWENDUNGSZWECK]</td>
|
||||
<td> </td>
|
||||
<td>Frachtkosten:</td><td>[FRACHTKOSTEN][MSGFRACHTKOSTEN]</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>Projekt:</td><td>[PROJEKT][MSGKOSTENSTELLE]</td>
|
||||
<td> </td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td>Kostenstelle:</td><td>[KOSTENSTELLE][MSGKOSTENSTELLE]</td>
|
||||
<td> </td>
|
||||
<td>Freigabe:</td><td>[MSGFREIGABE] <i>Wareneingangsprüfung:</i> [FREIGABE] [MSGRECHNUNGSFREIGABE] <i>Rechnungseingangsprüfung:</i> [RECHNUNGSFREIGABE]</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>Sachkonto:</td><td>[SACHKONTO][MSGSACHKONTO]</td>
|
||||
<td> </td>
|
||||
<td>Aktion:</td><td>[BUTTONBEZAHLT]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Interne Bemerkung:</td><td colspan="4">[INTERNEBEMERKUNG]</td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
</fieldset>
|
||||
</td></tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
<table class="tableborder" border="0" cellpadding="3" cellspacing="0" width="100%">
|
||||
<tr valign="top"><td width="50%">
|
||||
<table cellspacing="5" width="100%">
|
||||
<!--<tr><td><b>Bestellung</b></td><td><b>Bestell-Nr.</b></td><td><b>Teilbetrag</b></td><td><b>Projekt</b></td><td><b>Kostenstelle</b></td><td><b>Bemerkung</b></td></tr>
|
||||
<tr><td>Nr. 1</td><td><a href="index.php?module=bestellung&action=edit&id=[BESTELLUNGID1]" target="_blank">[BESTELLUNG1]</a>[MSGBESTELLUNG1]</td><td>[BESTELLUNG1BETRAG][MSGBESTELLUNG1BETRAG]</td>
|
||||
<td>[BESTELLUNG1PROJEKT]</td><td>[BESTELLUNG1KOSTENSTELLE]</td>
|
||||
<td>[BESTELLUNG1BEMERKUNG][MSGBESTELLUNG1BEMERKUNG]</td></tr>
|
||||
<tr><td>Nr. 2</td><td><a href="index.php?module=bestellung&action=edit&id=[BESTELLUNGID2]" target="_blank">[BESTELLUNG2]</a>[MSGBESTELLUNG2]</td><td>[BESTELLUNG2BETRAG][MSGBESTELLUNG2BETRAG]</td>
|
||||
<td>[BESTELLUNG2PROJEKT]</td><td>[BESTELLUNG2KOSTENSTELLE]</td>
|
||||
<td>[BESTELLUNG2BEMERKUNG][MSGBESTELLUNG2BEMERKUNG]</td></tr>
|
||||
<tr><td>Nr. 3</td><td><a href="index.php?module=bestellung&action=edit&id=[BESTELLUNGID3]" target="_blank">[BESTELLUNG3]</a>[MSGBESTELLUNG3]</td><td>[BESTELLUNG3BETRAG][MSGBESTELLUNG3BETRAG]</td>
|
||||
<td>[BESTELLUNG3PROJEKT]</td><td>[BESTELLUNG3KOSTENSTELLE]</td>
|
||||
<td>[BESTELLUNG3BEMERKUNG][MSGBESTELLUNG3BEMERKUNG]</td></tr>
|
||||
<tr><td>Nr. 4</td><td><a href="index.php?module=bestellung&action=edit&id=[BESTELLUNGID4]" target="_blank">[BESTELLUNG4]</a>[MSGBESTELLUNG4]</td><td>[BESTELLUNG4BETRAG][MSGBESTELLUNG4BETRAG]</td>
|
||||
<td>[BESTELLUNG4PROJEKT]</td><td>[BESTELLUNG4KOSTENSTELLE]</td>
|
||||
<td>[BESTELLUNG4BEMERKUNG][MSGBESTELLUNG4BEMERKUNG]</td></tr>
|
||||
<tr><td>Nr. 5</td><td><a href="index.php?module=bestellung&action=edit&id=[BESTELLUNGID5]" target="_blank">[BESTELLUNG5]</a>[MSGBESTELLUNG5]</td><td>[BESTELLUNG5BETRAG][MSGBESTELLUNG5BETRAG]</td>
|
||||
<td>[BESTELLUNG5PROJEKT]</td><td>[BESTELLUNG5KOSTENSTELLE]</td>
|
||||
<td>[BESTELLUNG5BEMERKUNG][MSGBESTELLUNG5BEMERKUNG]</td></tr>
|
||||
<tr><td>Nr. 6</td><td><a href="index.php?module=bestellung&action=edit&id=[BESTELLUNGID6]" target="_blank">[BESTELLUNG6]</a>[MSGBESTELLUNG6]</td><td>[BESTELLUNG6BETRAG][MSGBESTELLUNG6BETRAG]</td>
|
||||
<td>[BESTELLUNG6PROJEKT]</td><td>[BESTELLUNG6KOSTENSTELLE]</td>
|
||||
<td>[BESTELLUNG6BEMERKUNG][MSGBESTELLUNG6BEMERKUNG]</td></tr>
|
||||
<tr><td>Nr. 7</td><td><a href="index.php?module=bestellung&action=edit&id=[BESTELLUNGID7]" target="_blank">[BESTELLUNG7]</a>[MSGBESTELLUNG7]</td><td>[BESTELLUNG7BETRAG][MSGBESTELLUNG7BETRAG]</td>
|
||||
<td>[BESTELLUNG7PROJEKT]</td><td>[BESTELLUNG7KOSTENSTELLE]</td>
|
||||
<td>[BESTELLUNG7BEMERKUNG][MSGBESTELLUNG7BEMERKUNG]</td></tr>
|
||||
<tr><td>Nr. 8</td><td><a href="index.php?module=bestellung&action=edit&id=[BESTELLUNGID8]" target="_blank">[BESTELLUNG8]</a>[MSGBESTELLUNG8]</td><td>[BESTELLUNG8BETRAG][MSGBESTELLUNG8BETRAG]</td>
|
||||
<td>[BESTELLUNG8PROJEKT]</td><td>[BESTELLUNG8KOSTENSTELLE]</td>
|
||||
<td>[BESTELLUNG8BEMERKUNG][MSGBESTELLUNG8BEMERKUNG]</td></tr>
|
||||
<tr><td>Nr. 9</td><td><a href="index.php?module=bestellung&action=edit&id=[BESTELLUNGID9]" target="_blank">[BESTELLUNG9]</a>[MSGBESTELLUNG9]</td><td>[BESTELLUNG9BETRAG][MSGBESTELLUNG9BETRAG]</td>
|
||||
<td>[BESTELLUNG9PROJEKT]</td><td>[BESTELLUNG9KOSTENSTELLE]</td>
|
||||
<td>[BESTELLUNG9BEMERKUNG][MSGBESTELLUNG9BEMERKUNG]</td></tr>
|
||||
<tr><td>Nr. 10</td><td><a href="index.php?module=bestellung&action=edit&id=[BESTELLUNGID10]" target="_blank">[BESTELLUNG10]</a>[MSGBESTELLUNG10]</td><td>[BESTELLUNG10BETRAG][MSGBESTELLUNG10BETRAG]</td>
|
||||
<td>[BESTELLUNG10PROJEKT]</td><td>[BESTELLUNG10KOSTENSTELLE]</td>
|
||||
<td>[BESTELLUNG10BEMERKUNG][MSGBESTELLUNG10BEMERKUNG]</td></tr>
|
||||
<tr><td>Nr. 11</td><td><a href="index.php?module=bestellung&action=edit&id=[BESTELLUNGID11]" target="_blank">[BESTELLUNG11]</a>[MSGBESTELLUNG11]</td><td>[BESTELLUNG11BETRAG][MSGBESTELLUNG11BETRAG]</td>
|
||||
<td>[BESTELLUNG11PROJEKT]</td><td>[BESTELLUNG11KOSTENSTELLE]</td>
|
||||
<td>[BESTELLUNG11BEMERKUNG][MSGBESTELLUNG11BEMERKUNG]</td></tr>
|
||||
<tr><td>Nr. 12</td><td><a href="index.php?module=bestellung&action=edit&id=[BESTELLUNGID12]" target="_blank">[BESTELLUNG12]</a>[MSGBESTELLUNG12]</td><td>[BESTELLUNG12BETRAG][MSGBESTELLUNG12BETRAG]</td>
|
||||
<td>[BESTELLUNG12PROJEKT]</td><td>[BESTELLUNG12KOSTENSTELLE]</td>
|
||||
<td>[BESTELLUNG12BEMERKUNG][MSGBESTELLUNG12BEMERKUNG]</td></tr>
|
||||
<tr><td>Nr. 13</td><td><a href="index.php?module=bestellung&action=edit&id=[BESTELLUNGID13]" target="_blank">[BESTELLUNG13]</a>[MSGBESTELLUNG13]</td><td>[BESTELLUNG13BETRAG][MSGBESTELLUNG13BETRAG]</td>
|
||||
<td>[BESTELLUNG13PROJEKT]</td><td>[BESTELLUNG13KOSTENSTELLE]</td>
|
||||
<td>[BESTELLUNG13BEMERKUNG][MSGBESTELLUNG13BEMERKUNG]</td></tr>
|
||||
<tr><td>Nr. 14</td><td><a href="index.php?module=bestellung&action=edit&id=[BESTELLUNGID14]" target="_blank">[BESTELLUNG14]</a>[MSGBESTELLUNG14]</td><td>[BESTELLUNG14BETRAG][MSGBESTELLUNG14BETRAG]</td>
|
||||
<td>[BESTELLUNG14PROJEKT]</td><td>[BESTELLUNG14KOSTENSTELLE]</td>
|
||||
<td>[BESTELLUNG14BEMERKUNG][MSGBESTELLUNG14BEMERKUNG]</td></tr>
|
||||
<tr><td>Nr. 15</td><td><a href="index.php?module=bestellung&action=edit&id=[BESTELLUNGID15]" target="_blank">[BESTELLUNG15]</a>[MSGBESTELLUNG15]</td><td>[BESTELLUNG15BETRAG][MSGBESTELLUNG15BETRAG]</td>
|
||||
<td>[BESTELLUNG15PROJEKT]</td><td>[BESTELLUNG15KOSTENSTELLE]</td>
|
||||
<td>[BESTELLUNG15BEMERKUNG][MSGBESTELLUNG15BEMERKUNG]</td></tr>-->
|
||||
|
||||
[TABELLEBESTELLUNGEN]
|
||||
|
||||
</table>
|
||||
</td>
|
||||
|
||||
|
||||
<td>
|
||||
|
||||
<table width="100%>">
|
||||
<tr><td>Summe Verbindlichkeit</td><td>Summe Kontierung</td></tr>
|
||||
<tr>
|
||||
<td class="greybox" width="25%">[SUMMEVERBINDLICHKEIT]</td>
|
||||
<td class="greybox" width="25%">[SUMMEKONTIERUNG]</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
[MESSAGEVORKONTIERUNG]
|
||||
[VORKONTIERUNG]
|
||||
[ZAHLUNGEN]
|
||||
|
||||
<div style="background-color:white">
|
||||
<h2 class="greyh2">{|Protokoll|}</h2>
|
||||
<div style="padding:10px">
|
||||
[PROTOKOLL]
|
||||
<tr valign="top">
|
||||
<td width="150">Lieferant:</td>
|
||||
<td colspan="3">[ADRESSEAUTOSTART][ADRESSE][MSGADRESSE][ADRESSEAUTOEND]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Rechnungs-Nr.:</td>
|
||||
<td>[RECHNUNG][MSGRECHNUNG]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Rechnungsdatum:</td>
|
||||
<td width="250">[RECHNUNGSDATUM][MSGRECHNUNGSDATUM]</td>
|
||||
<tr>
|
||||
</tr>
|
||||
</tr>
|
||||
<td width="200">Zahlbar bis:</td>
|
||||
<td>[ZAHLBARBIS][MSGZAHLBARBIS][DATUM_ZAHLBARBIS]</td>
|
||||
</tr>
|
||||
<td>Betrag/Total (Brutto):</td>
|
||||
<td>[BETRAG][MSGBETRAG] [WAEHRUNG][MSGWAEHRUNG]</td>
|
||||
<tr>
|
||||
<td>Skonto in %:</td>
|
||||
<td>[SKONTO][MSGSKONTO]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Skonto bis:</td>
|
||||
<td>[SKONTOBIS][MSGSKONTOBIS][DATUM_SKONTOBIS]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Projekt:</td>
|
||||
<td>[PROJEKT][MSGKOSTENSTELLE]</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Kostenstelle:</td>
|
||||
<td>[KOSTENSTELLE][MSGKOSTENSTELLE]</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Interne Bemerkung:</td>
|
||||
<td colspan="4">[INTERNEBEMERKUNG]</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div style="float:left; width:60%">
|
||||
<div style="background-color:white">
|
||||
<h2 class="greyh2">Artikel</h2>
|
||||
<div style="padding:10px">
|
||||
[ARTIKEL]
|
||||
</div>
|
||||
</div>
|
||||
<div style="background-color:white">
|
||||
<h2 class="greyh2">Buchungen</h2>
|
||||
<div style="padding:10px">
|
||||
[ZAHLUNGEN]
|
||||
</div>
|
||||
</div>
|
||||
<div style="background-color:white">
|
||||
<h2 class="greyh2">Protokoll</h2>
|
||||
<div style="padding:10px;">
|
||||
[PROTOKOLL]
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,64 @@
|
|||
<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>{|Position bearbeiten|}</legend><i></i>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr>
|
||||
<td>
|
||||
{|Menge|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" name="menge" id="menge" value="[MENGE]" size="20" [SAVEDISABLED]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Preis|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" name="preis" id="preis" step="0.00001" value="[PREIS]" size="20" [SAVEDISABLED]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Steuersatz %|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" name="steuersatz" id="steuersatz" value="[STEUERSATZ]" size="20" [SAVEDISABLED]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Sachkonto|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="sachkonto" id="sachkonto" value="[SACHKONTO]" size="20" [SACHKONTOSAVEDISABLED]>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<input type="submit" name="submit" value="Speichern" style="float:right"/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
[POSITIONENMESSAGE]
|
||||
<form method="post" action="#tabs-2">
|
||||
<div class="row" [POSITIONHINZUFUEGENHIDDEN]>
|
||||
<div class="row-height">
|
||||
<div class="col-xs-14 col-md-12 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend style="float:left">Offene Artikel aus Wareneingängen:</legend>
|
||||
<div class="filter-box filter-usersave" style="float:right;">
|
||||
<div class="filter-block filter-inline">
|
||||
<div class="filter-title">{|Filter|}</div>
|
||||
<ul class="filter-list">
|
||||
<li class="filter-item">
|
||||
<label for="passende" class="switch">
|
||||
<input type="checkbox" id="passende">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
<label for="passende">{|Nur passende (Bestellung/Rechnungsnummer)|}</label>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
[PAKETDISTRIBUTION]
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-14 col-md-2 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<legend>{|Aktionen|}</legend>
|
||||
<tr>
|
||||
<td><input type="checkbox" id="auswahlallewareneingaenge" onchange="allewareneingaengeauswaehlen();" />{|alle markieren|}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox" name="bruttoeingabe" value="1" />Bruttopreise eingeben</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><button [SAVEDISABLED] name="submit" value="positionen_hinzufuegen" class="ui-button-icon" style="width:100%;">Hinzufügen</button></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<form method="post" action="#tabs-2">
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-14 col-md-12 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
[POSITIONEN]
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-14 col-md-2 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<legend>{|Aktionen|}</legend>
|
||||
<tr [SACHKONTOCHANGEHIDDEN]>
|
||||
<td><input type="checkbox" id="auswahlalle" onchange="alleauswaehlen();" />{|alle markieren|}</td>
|
||||
</tr>
|
||||
<tr [POSITIONHINZUFUEGENHIDDEN]>
|
||||
<td><button [SAVEDISABLED] name="submit" value="positionen_entfernen" class="ui-button-icon" style="width:100%;">Entfernen</button></td>
|
||||
</tr>
|
||||
<tr [SACHKONTOCHANGEHIDDEN]>
|
||||
<td><input type="text" name="positionen_sachkonto" id="positionen_sachkonto" value="" size="20"></td>
|
||||
</tr>
|
||||
<tr [SACHKONTOCHANGEHIDDEN]>
|
||||
<td><button name="submit" value="positionen_kontorahmen_setzen" class="ui-button-icon" style="width:100%;">Sachkonto setzen</button></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<script>
|
||||
function allewareneingaengeauswaehlen()
|
||||
{
|
||||
var wert = $('#auswahlallewareneingaenge').prop('checked');
|
||||
$('#verbindlichkeit_paketdistribution_list').find(':checkbox').prop('checked',wert);
|
||||
}
|
||||
function alleauswaehlen()
|
||||
{
|
||||
var wert = $('#auswahlalle').prop('checked');
|
||||
$('#verbindlichkeit_positionen').find(':checkbox').prop('checked',wert);
|
||||
}
|
||||
</script>
|
||||
|
|
@ -3,6 +3,19 @@
|
|||
<li><a href="#tabs-1">[TABTEXT1]</a></li>
|
||||
</ul>
|
||||
<div id="tabs-1">
|
||||
<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="abgeschlossen" class="switch">
|
||||
<input type="checkbox" id="abgeschlossen">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
<label for="abgeschlossen">{|Inkl. abgeschlossene|}</label>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
[MESSAGE]
|
||||
[TAB1]
|
||||
[TAB1NEXT]
|
||||
|
|
|
|||
|
|
@ -6,15 +6,19 @@
|
|||
<table height="80" width="100%"><tr><td>
|
||||
<fieldset class="usersave"><legend> Filter</legend>
|
||||
<center>
|
||||
<table width="100%" cellspacing="5">
|
||||
<tr>
|
||||
<td width="33%"><input type="checkbox" id="eigene" title="nur Artikel vom Lieferant anzeigen"> <label for="eigene">{|Nur Artikel vom Lieferant anzeigen|}</label></td>
|
||||
<td width="33%">{|Scannen|}: <form method="POST"><input type="text" size="40" name="artikel" autofocus id="artikel" /></form></td>
|
||||
<td width="33%"></td>
|
||||
</tr></table>
|
||||
</center>
|
||||
</fieldset>
|
||||
</td></tr></table>
|
||||
<form method="POST">
|
||||
<table width="100%" cellspacing="5">
|
||||
<tr>
|
||||
<td width="33%"><input type="checkbox" id="eigene" title="nur Artikel vom Lieferant anzeigen"> <label for="eigene">{|Nur Artikel vom Lieferant anzeigen|}</label></td>
|
||||
<td width="33%">{|Artikel|}: <input type="text" size="40" name="artikel" autofocus id="artikel" /></td>
|
||||
<td width="33%">{|Menge|}: <input type="number" size="40" name="menge" id="menge" value="1"/></td>
|
||||
<td width="33%"><button name="submit" class="ui-button-icon" style="width:100%;" value="abschliessen">{|Weiter|}</button></td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
</fieldset>
|
||||
</td></tr></table>
|
||||
|
||||
[MESSAGE]
|
||||
[TAB1]
|
||||
|
|
|
|||
|
|
@ -15,14 +15,14 @@
|
|||
|
||||
<table height="200" border="0" width="450">
|
||||
<tr valign="top"><td><b>Artikel:</b></td><td><u>[NAME]</u></td></tr>
|
||||
<tr valign="top"><td><b>Menge:</b></td><td>[MENGE]</td></tr>
|
||||
<!--<tr valign="top"><td>Lieferant:</td><td>[LIEFERANT]</td></tr> -->
|
||||
<tr valign="top"><td><br></td><td align="center"></td></tr>
|
||||
<tr valign="top"><td><b>Bemerkung:</b></td><td><textarea cols="35" rows="2" name="bemerkung">[BEMERKUNG]</textarea>
|
||||
</td></tr>
|
||||
<tr valign="top"><td><br></td><td align="center"></td></tr>
|
||||
<tr valign="top"><td nowrap><b>Anmerkung:</b></td><td>Artikel zu Mitarbeiter [MITARBEITER] bringen
|
||||
[DISPLAY_WARENEINGANG_RMA_HOOK1]
|
||||
<tr valign="top"><td><br></td><td align="center"><input type="submit" name="submit" value="Speichern" /> <input type="button" onclick="window.location.href='index.php?module=wareneingang&action=distriinhalt&id=[ID]'" value="Abbrechen" /></td></tr>
|
||||
<tr valign="top"><td><br></td><td align="center"><input type="submit" name="submit" value="Buchen" /> <input type="button" onclick="window.location.href='index.php?module=wareneingang&action=distriinhalt&id=[ID]'" value="Abbrechen" /></td></tr>
|
||||
</td></tr>
|
||||
</table>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,160 +1,239 @@
|
|||
<!-- gehort zu tabview -->
|
||||
<div id="tabs">
|
||||
<ul>
|
||||
[BEFORETAB1]<li><a href="#tabs-1">[TAB1TEXT]</a></li>[AFTERTAB1]
|
||||
[BEFORETAB2]<li><a href="#tabs-2">[TAB2TEXT]</a></li>[AFTERTAB2]
|
||||
[BEFORETAB3]<li><a href="#tabs-3">[TAB3TEXT]</a></li>[AFTERTAB3]
|
||||
</ul>
|
||||
<!-- ende gehort zu tabview -->
|
||||
|
||||
<!-- erstes tab -->
|
||||
<input type="hidden" id="paketannahme_id" value="[ID]" />
|
||||
[BEFORETAB1]
|
||||
<div id="tabs-1">
|
||||
[TAB1START]
|
||||
[MESSAGE1]
|
||||
<form action="" method="post">
|
||||
<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>{|[LEGENDE]|}</legend>
|
||||
<table>
|
||||
<tr><td>{|Lieferschein-Nr.|}:</td><td><input type=text size="40" name="lsnr" value=[LSNR]></td></tr>
|
||||
<tr><td>{|Rechnung-Nr.|}:</td><td><input type=text size="40" name="renr" value=[RENR]></td></tr>
|
||||
<tr><td>{|Bemerkung|}:</td><td><textarea rows="5" cols="40" name="bemerkung">[BEMERKUNG]</textarea></td></tr>
|
||||
[ISLIEFERANTSTART]
|
||||
<tr><td>{|Ziellager|}:</td><td><input type=text size="40" name="ziellager" id="ziellager" value=[LAGER]><br><i>Wenn nicht angegeben, wird das Standardlager des Artikels bebucht.</i></td></tr>
|
||||
[ISLIEFERANTENDE]
|
||||
</table>
|
||||
</fieldset>
|
||||
<ul> [BEFORETAB1]
|
||||
<li><a href="#tabs-1">[TAB1TEXT]</a></li>[AFTERTAB1] [BEFORETAB2]
|
||||
<li><a href="#tabs-2">[TAB2TEXT]</a></li>[AFTERTAB2] [BEFORETAB3]
|
||||
<li><a href="#tabs-3">[TAB3TEXT]</a></li>[AFTERTAB3] </ul>
|
||||
<!-- ende gehort zu tabview -->
|
||||
<!-- erstes tab -->
|
||||
<input type="hidden" id="paketannahme_id" value="[ID]" /> [BEFORETAB1]
|
||||
<form action="" method="post">
|
||||
<div id="tabs-1"> [TAB1START] [MESSAGE1] [MESSAGE]
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-5 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|[LEGENDE]|}</legend>
|
||||
<table>
|
||||
<tr>
|
||||
<td>{|Status|}:</td>
|
||||
<td>
|
||||
<input type=text size="40" value="[STATUS]" disabled>
|
||||
</td>
|
||||
</tr>
|
||||
<tr [ABGESCHLOSSENHIDDEN]>
|
||||
<td></td>
|
||||
<td><i>Abgeschlossen am [DATUM_ABGESCHLOSSEN] durch [BEARBEITER_ABGESCHLOSSEN]</i></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>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-5 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<table>
|
||||
<tr>
|
||||
<td>{|Bemerkung|}:</td>
|
||||
<td>
|
||||
<textarea rows="5" cols="40" name="bemerkung">[BEMERKUNG]</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
[ISLIEFERANTSTART]
|
||||
[ISLIEFERANTENDE]
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-2 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset> [BUTTONS] [BEFOREFRM] [AFTERFRM] [DISTRIINHALTBUTTONS] [BEFOREFRM] [AFTERFRM]
|
||||
<button name="submit" class="ui-button-icon" style="width:100%;" value="speichern" hidden="true"></button>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<legend>{|Aktionen|}</legend>
|
||||
<tr>
|
||||
<td>
|
||||
<button name="submit" class="ui-button-icon" style="width:100%;" value="speichern">{|Speichern|}</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-2 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
[BUTTONS]
|
||||
[BEFOREFRM]
|
||||
[AFTERFRM]
|
||||
[DISTRIINHALTBUTTONS]
|
||||
[BEFOREFRM]
|
||||
[AFTERFRM]
|
||||
<button name="submit" class="ui-button-icon" style="width:100%;" value="speichern" hidden="true"></button>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<legend>{|Aktionen|}</legend>
|
||||
[BEFOREMANUELLERFASSEN]
|
||||
<tr><td>
|
||||
<button name="submit" class="ui-button-icon" style="width:100%;" value="manuellerfassen">{|Artikel manuell erfassen|}</button>
|
||||
</td></tr>
|
||||
[AFTERMANUELLERFASSEN]
|
||||
[ISLIEFERANTSTART]
|
||||
<tr><td>
|
||||
<button name="submit" class="ui-button-icon" style="width:100%;" value="fuellen">{|Aus Bestellungen füllen|}</button>
|
||||
</td></tr>
|
||||
<tr><td>
|
||||
<button name="submit" class="ui-button-icon" style="width:100%;" value="leeren">{|Leeren|}</button>
|
||||
</td></tr>
|
||||
[ISLIEFERANTENDE]
|
||||
<tr><td>
|
||||
<button name="submit" class="ui-button-icon" style="width:100%;" value="speichern">{|Speichern|}</button>
|
||||
</td></tr>
|
||||
[ISLIEFERANTSTART]
|
||||
<tr><td>
|
||||
<button name="submit" class="ui-button-icon" style="width:100%;" value="buchen">{|Buchen|}</button>
|
||||
</td></tr>
|
||||
[ISLIEFERANTENDE]
|
||||
<tr><td>
|
||||
<button name="submit" class="ui-button-icon" style="width:100%;" value="abschliessen">{|Abschließen|}</button>
|
||||
</td></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
<div class="row" [HINZUFUEGENHIDDEN]>
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-10 col-md-height">
|
||||
<div class="inside-white inside-full-height">
|
||||
<div class="filter-box filter-usersave" style="float:right;">
|
||||
<div class="filter-block filter-inline">
|
||||
<div class="filter-title">{|Filter|}</div>
|
||||
<ul class="filter-list">
|
||||
<li class="filter-item">
|
||||
<label for="ausfuellen" class="switch">
|
||||
<input type="checkbox" id="ausfuellen">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
<label for="ausfuellen">{|Ausüllen|}</label>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
[TAB1]
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-2 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset> [BUTTONS] [BEFOREFRM] [AFTERFRM] [DISTRIINHALTBUTTONS] [BEFOREFRM] [AFTERFRM]
|
||||
<button name="submit" class="ui-button-icon" style="width:100%;" value="speichern" hidden="true"></button>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<legend>{|Aktionen|}</legend>
|
||||
[ISLIEFERANTSTART]
|
||||
<tr [HINZUFUEGENHIDDEN]>
|
||||
<td>
|
||||
<button name="submit" class="ui-button-icon" style="width:100%;" value="hinzufuegen">{|Hinzufügen|}</button>
|
||||
</td>
|
||||
</tr>
|
||||
[ISLIEFERANTENDE]
|
||||
[ISNOTLIEFERANTSTART]
|
||||
<tr [HINZUFUEGENHIDDEN]>
|
||||
<td>
|
||||
{|Multifilter|}:
|
||||
</td>
|
||||
</tr>
|
||||
<tr [HINZUFUEGENHIDDEN]>
|
||||
<td>
|
||||
<input type="text" name="multifilter" id="multifilter" value="[MULTIFILTER]" size="20" style="width:98%;" form="">
|
||||
</td>
|
||||
</tr>
|
||||
<tr [HINZUFUEGENHIDDEN]>
|
||||
<td>
|
||||
<button name="submit" class="ui-button-icon" style="width:100%;" value="manuell_hinzufuegen">{|Hinzufügen|}</button>
|
||||
</td>
|
||||
</tr>
|
||||
[ISNOTLIEFERANTENDE]
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-10 col-md-height">
|
||||
<div class="inside-white inside-full-height">
|
||||
[TAB1]
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-10 col-md-height">
|
||||
<div class="inside-white inside-full-height">
|
||||
[TAB1_SECOND]
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
[TAB1ENDE]
|
||||
</div>
|
||||
[AFTERTAB1]
|
||||
[BEFORETAB2]
|
||||
<div id="tabs-2">
|
||||
|
||||
[TAB2START]
|
||||
[MESSAGE2]
|
||||
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-10 col-md-height">
|
||||
<div class="inside-white inside-full-height">
|
||||
[TAB2]
|
||||
<div class="center">[BUTTONS2]</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-2 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|Aktionen|}</legend>
|
||||
[BUTTONS]
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
[TAB2ENDE]
|
||||
</div>
|
||||
[AFTERTAB2]
|
||||
[BEFORETAB3]
|
||||
<div id="tabs-3">
|
||||
[TAB3START]
|
||||
[MESSAGE3]
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-10 col-md-height">
|
||||
<div class="inside-white inside-full-height">
|
||||
[TAB3]
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-2 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|Aktionen|}</legend>
|
||||
[BUTTONS]
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
[TAB3ENDE]
|
||||
</div>
|
||||
[AFTERTAB3]
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-10 col-md-height">
|
||||
<div class="inside-white inside-full-height">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-10 col-md-height">
|
||||
<div class="inside-white inside-full-height"> [TAB1_SECOND] </div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-2 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<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>
|
||||
<tr [BUCHENHIDDEN]>
|
||||
<td>
|
||||
<button name="submit" class="ui-button-icon" style="width:100%;" value="vorlaeufige_buchen">{|Buchen|}</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr [BUCHENHIDDEN]>
|
||||
<td>
|
||||
{|Ziellager|}: <img src="./themes/new/images/tooltip_grau.png" border="0" style="position: relative; left: 1px; top: 3px; z-index: 8;" class="wawitooltipicon" title="Wenn nicht angegeben, wird das Standardlager des Artikels bebucht.">
|
||||
</td>
|
||||
</tr>
|
||||
<tr [BUCHENHIDDEN]>
|
||||
<td>
|
||||
<input type=text name="ziellager" id="ziellager" value="[LAGER]" style="width:98%;">
|
||||
</td>
|
||||
</tr>
|
||||
<tr [ABSCHLIESSENHIDDEN]>
|
||||
<td>
|
||||
<button name="submit" class="ui-button-icon" style="width:100%;" value="abschliessen">{|Abschließen|}</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr [ABGESCHLOSSENHIDDEN]>
|
||||
<td>
|
||||
<button name="submit" class="ui-button-icon" style="width:100%;" value="oeffnen" form="oeffnen">{|Öffnen|}</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
[TAB1ENDE]
|
||||
</div> [AFTERTAB1] [BEFORETAB2]
|
||||
<div id="tabs-2"> [TAB2START] [MESSAGE2]
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-10 col-md-height">
|
||||
<div class="inside-white inside-full-height"> [TAB2]
|
||||
<div class="center">[BUTTONS2]</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-2 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<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>
|
||||
<tr [HINZUFUEGENHIDDEN]>
|
||||
<td>
|
||||
{|Multifilter|}: <img src="./themes/new/images/tooltip_grau.png" border="0" style="position: relative; left: 1px; top: 3px; z-index: 8;" class="wawitooltipicon" title="Auswahl mehrerer Artikel über Name oder Nummer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr [HINZUFUEGENHIDDEN]>
|
||||
<td>
|
||||
<input type="text" name="multifilter" id="multifilter" value="[MULTIFILTER]" size="20" style="width:98%;" form="">
|
||||
</td>
|
||||
</tr>
|
||||
<tr [HINZUFUEGENHIDDEN]>
|
||||
<td>
|
||||
<button name="submit" class="ui-button-icon" style="width:100%;" value="manuell_hinzufuegen">{|Hinzufügen|}</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> [TAB2ENDE]
|
||||
</div> [AFTERTAB2]
|
||||
</form>
|
||||
</div>
|
||||
<form action="index.php?module=wareneingang&action=oeffnen" id="oeffnen" method="POST">
|
||||
<input name="id" value="[ID]" hidden></input>
|
||||
</form>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$( "#tabs" ).tabs( "option", "active", [TABINDEX]);
|
||||
if($('#frmWareneingangDistribution').length) {
|
||||
$('#btnabschliessen').on('click',function(){
|
||||
$('#frmWareneingangDistribution').append('<input type="hidden" value="1" name="abschliessen" />');
|
||||
$('#frmWareneingangDistribution').find('[name="submit"]').trigger('click');
|
||||
});
|
||||
}
|
||||
});
|
||||
$(document).ready(function() {
|
||||
$("#tabs").tabs("option", "active", [TABINDEX]);
|
||||
if($('#frmWareneingangDistribution').length) {
|
||||
$('#btnabschliessen').on('click', function() {
|
||||
$('#frmWareneingangDistribution').append('<input type="hidden" value="1" name="abschliessen" />');
|
||||
$('#frmWareneingangDistribution').find('[name="submit"]').trigger('click');
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* Copyright (c) 2022 OpenXE project
|
||||
* Copyright (c) 2024 DBXE project
|
||||
*/
|
||||
|
||||
use Xentral\Components\Database\Exception\QueryFailureException;
|
||||
|
|
@ -116,6 +116,7 @@ $width = array('10%'); // Fill out manually later
|
|||
$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
|
||||
$input['abdatum'] = $this->app->erp->ReplaceDatum(true,$input['abdatum'],true);
|
||||
|
||||
$columns = "id, ";
|
||||
$values = "$id, ";
|
||||
|
|
@ -146,7 +147,6 @@ $width = array('10%'); // Fill out manually later
|
|||
else {
|
||||
$sql = "INSERT INTO emailbackup (".$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=emailbackup&action=list&msg=$msg");
|
||||
|
|
@ -159,31 +159,66 @@ $width = array('10%'); // Fill out manually later
|
|||
// Load values again from database
|
||||
$result = $this->app->DB->SelectArr("SELECT id, angezeigtername, internebeschreibung, benutzername, passwort, server, smtp, ticket, imap_sentfolder_aktiv, imap_sentfolder, imap_port, imap_type, autoresponder, geschaeftsbriefvorlage, autoresponderbetreff, autorespondertext, projekt, emailbackup, adresse, firma, loeschtage, geloescht, ticketloeschen, ticketabgeschlossen, ticketqueue, ticketprojekt, ticketemaileingehend, smtp_extra, smtp_ssl, smtp_port, smtp_frommail, smtp_fromname, client_alias, smtp_authtype, smtp_authparam, smtp_loglevel, autosresponder_blacklist, eigenesignatur, signatur, mutex, abdatum, email, id FROM emailbackup"." WHERE id=$id");
|
||||
|
||||
foreach ($result[0] as $key => $value) {
|
||||
if (!empty($result)) {
|
||||
$emailbackup = $result[0];
|
||||
}
|
||||
foreach ($emailbackup 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);
|
||||
*/
|
||||
// Checkboxes
|
||||
$this->app->Tpl->Set('SMTP_EXTRA', $emailbackup['smtp_extra']?'checked':'');
|
||||
$this->app->Tpl->Set('SMTP_LOGLEVEL', $emailbackup['smtp_loglevel']?'checked':'');
|
||||
$this->app->Tpl->Set('IMAP_SENTFOLDER_AKTIV', $emailbackup['imap_sentfolder_aktiv']?'checked':'');
|
||||
$this->app->Tpl->Set('EMAILBACKUP', $emailbackup['emailbackup']?'checked':'');
|
||||
$this->app->Tpl->Set('TICKET', $emailbackup['ticket']?'checked':'');
|
||||
$this->app->Tpl->Set('TICKETLOESCHEN', $emailbackup['ticketloeschen']?'checked':'');
|
||||
$this->app->Tpl->Set('TICKETABGESCHLOSSEN', $emailbackup['ticketabgeschlossen']?'checked':'');
|
||||
$this->app->Tpl->Set('TICKETEMAILEINGEHEND', $emailbackup['ticketemaileingehend']?'checked':'');
|
||||
$this->app->Tpl->Set('EIGENESIGNATUR', $emailbackup['eigenesignatur']?'checked':'');
|
||||
$this->app->Tpl->Set('AUTORESPONDER', $emailbackup['autoresponder']?'checked':'');
|
||||
$this->app->Tpl->Set('AUTOSRESPONDER_BLACKLIST', $emailbackup['autosresponder_blacklist']?'checked':'');
|
||||
|
||||
$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->Tpl->Set('PROJEKT',$this->app->erp->ReplaceProjekt(false,$emailbackup['projekt'],false)); // Parameters: Target db?, value, from form?
|
||||
$this->app->Tpl->Set('TICKETPROJEKT',$this->app->erp->ReplaceProjekt(false,$emailbackup['ticketprojekt'],false)); // Parameters: Target db?, value, from form?
|
||||
$this->app->Tpl->Set('ADRESSE', $this->app->erp->ReplaceAdresse(false,$emailbackup['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->YUI->DatePicker("abdatum");
|
||||
$this->app->Tpl->Set('ABDATUM',$this->app->erp->ReplaceDatum(false,$emailbackup['abdatum'],false));
|
||||
|
||||
$smtp_ssl_select = Array(
|
||||
'0' => 'Keine',
|
||||
'1' => 'TLS',
|
||||
'2' => 'SSL'
|
||||
);
|
||||
$smtp_ssl_select = $this->app->erp->GetSelectAsso($smtp_ssl_select,$emailbackup['smtp_ssl']);
|
||||
$this->app->Tpl->Set('SMTP_SSL_SELECT',$smtp_ssl_select);
|
||||
|
||||
$smtp_authtype_select = Array(
|
||||
'' => 'Kein',
|
||||
'smtp' => 'SMTP',
|
||||
'oauth_google' => 'Oauth Google'
|
||||
);
|
||||
$smtp_authtype_select = $this->app->erp->GetSelectAsso($smtp_authtype_select,$emailbackup['smtp_authtype']);
|
||||
$this->app->Tpl->Set('SMTP_AUTHTYPE_SELECT',$smtp_authtype_select);
|
||||
|
||||
$imap_type_select = Array(
|
||||
'1' => 'Standard',
|
||||
'3' => 'SSL',
|
||||
'5' => 'Oauth'
|
||||
);
|
||||
$imap_type_select = $this->app->erp->GetSelectAsso($imap_type_select,$emailbackup['imap_type']);
|
||||
$this->app->Tpl->Set('IMAP_TYPE_SELECT',$imap_type_select);
|
||||
|
||||
$this->app->Tpl->Parse('PAGE', "emailbackup_edit.tpl");
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -194,47 +229,46 @@ $width = array('10%'); // Fill out manually later
|
|||
//$input['EMAIL'] = $this->app->Secure->GetPOST('email');
|
||||
|
||||
$input['angezeigtername'] = $this->app->Secure->GetPOST('angezeigtername');
|
||||
$input['internebeschreibung'] = $this->app->Secure->GetPOST('internebeschreibung');
|
||||
$input['benutzername'] = $this->app->Secure->GetPOST('benutzername');
|
||||
$input['passwort'] = $this->app->Secure->GetPOST('passwort');
|
||||
$input['server'] = $this->app->Secure->GetPOST('server');
|
||||
$input['smtp'] = $this->app->Secure->GetPOST('smtp');
|
||||
$input['ticket'] = $this->app->Secure->GetPOST('ticket');
|
||||
$input['imap_sentfolder_aktiv'] = $this->app->Secure->GetPOST('imap_sentfolder_aktiv');
|
||||
$input['imap_sentfolder'] = $this->app->Secure->GetPOST('imap_sentfolder');
|
||||
$input['imap_port'] = $this->app->Secure->GetPOST('imap_port');
|
||||
$input['imap_type'] = $this->app->Secure->GetPOST('imap_type');
|
||||
$input['autoresponder'] = $this->app->Secure->GetPOST('autoresponder');
|
||||
$input['geschaeftsbriefvorlage'] = $this->app->Secure->GetPOST('geschaeftsbriefvorlage');
|
||||
$input['autoresponderbetreff'] = $this->app->Secure->GetPOST('autoresponderbetreff');
|
||||
$input['autorespondertext'] = $this->app->Secure->GetPOST('autorespondertext');
|
||||
$input['projekt'] = $this->app->Secure->GetPOST('projekt');
|
||||
$input['emailbackup'] = $this->app->Secure->GetPOST('emailbackup');
|
||||
$input['adresse'] = $this->app->Secure->GetPOST('adresse');
|
||||
$input['firma'] = $this->app->Secure->GetPOST('firma');
|
||||
$input['loeschtage'] = $this->app->Secure->GetPOST('loeschtage');
|
||||
$input['geloescht'] = $this->app->Secure->GetPOST('geloescht');
|
||||
$input['ticketloeschen'] = $this->app->Secure->GetPOST('ticketloeschen');
|
||||
$input['ticketabgeschlossen'] = $this->app->Secure->GetPOST('ticketabgeschlossen');
|
||||
$input['ticketqueue'] = $this->app->Secure->GetPOST('ticketqueue');
|
||||
$input['ticketprojekt'] = $this->app->Secure->GetPOST('ticketprojekt');
|
||||
$input['ticketemaileingehend'] = $this->app->Secure->GetPOST('ticketemaileingehend');
|
||||
$input['smtp_extra'] = $this->app->Secure->GetPOST('smtp_extra');
|
||||
$input['smtp_ssl'] = $this->app->Secure->GetPOST('smtp_ssl');
|
||||
$input['smtp_port'] = $this->app->Secure->GetPOST('smtp_port');
|
||||
$input['smtp_frommail'] = $this->app->Secure->GetPOST('email'); // use only these
|
||||
$input['smtp_fromname'] = $this->app->Secure->GetPOST('angezeigtername'); // use only these
|
||||
$input['client_alias'] = $this->app->Secure->GetPOST('client_alias');
|
||||
$input['smtp_authtype'] = $this->app->Secure->GetPOST('smtp_authtype');
|
||||
$input['smtp_authparam'] = $this->app->Secure->GetPOST('smtp_authparam');
|
||||
$input['smtp_loglevel'] = $this->app->Secure->GetPOST('smtp_loglevel');
|
||||
$input['autosresponder_blacklist'] = $this->app->Secure->GetPOST('autosresponder_blacklist');
|
||||
$input['eigenesignatur'] = $this->app->Secure->GetPOST('eigenesignatur');
|
||||
$input['signatur'] = $this->app->Secure->GetPOST('signatur');
|
||||
$input['mutex'] = $this->app->Secure->GetPOST('mutex');
|
||||
$input['abdatum'] = $this->app->Secure->GetPOST('abdatum');
|
||||
$input['email'] = $this->app->Secure->GetPOST('email');
|
||||
|
||||
$input['internebeschreibung'] = $this->app->Secure->GetPOST('internebeschreibung');
|
||||
$input['benutzername'] = $this->app->Secure->GetPOST('benutzername');
|
||||
$input['passwort'] = $this->app->Secure->GetPOST('passwort');
|
||||
$input['server'] = $this->app->Secure->GetPOST('server');
|
||||
$input['smtp'] = $this->app->Secure->GetPOST('smtp');
|
||||
$input['ticket'] = $this->app->Secure->GetPOST('ticket');
|
||||
$input['imap_sentfolder_aktiv'] = $this->app->Secure->GetPOST('imap_sentfolder_aktiv');
|
||||
$input['imap_sentfolder'] = $this->app->Secure->GetPOST('imap_sentfolder');
|
||||
$input['imap_port'] = $this->app->Secure->GetPOST('imap_port');
|
||||
$input['imap_type'] = $this->app->Secure->GetPOST('imap_type');
|
||||
$input['autoresponder'] = $this->app->Secure->GetPOST('autoresponder');
|
||||
$input['geschaeftsbriefvorlage'] = $this->app->Secure->GetPOST('geschaeftsbriefvorlage');
|
||||
$input['autoresponderbetreff'] = $this->app->Secure->GetPOST('autoresponderbetreff');
|
||||
$input['autorespondertext'] = $this->app->Secure->GetPOST('autorespondertext');
|
||||
$input['projekt'] = $this->app->Secure->GetPOST('projekt');
|
||||
$input['emailbackup'] = $this->app->Secure->GetPOST('emailbackup');
|
||||
$input['adresse'] = $this->app->Secure->GetPOST('adresse');
|
||||
$input['firma'] = $this->app->Secure->GetPOST('firma');
|
||||
$input['loeschtage'] = $this->app->Secure->GetPOST('loeschtage');
|
||||
$input['geloescht'] = $this->app->Secure->GetPOST('geloescht');
|
||||
$input['ticketloeschen'] = $this->app->Secure->GetPOST('ticketloeschen');
|
||||
$input['ticketabgeschlossen'] = $this->app->Secure->GetPOST('ticketabgeschlossen');
|
||||
$input['ticketqueue'] = $this->app->Secure->GetPOST('ticketqueue');
|
||||
$input['ticketprojekt'] = $this->app->Secure->GetPOST('ticketprojekt');
|
||||
$input['ticketemaileingehend'] = $this->app->Secure->GetPOST('ticketemaileingehend');
|
||||
$input['smtp_extra'] = $this->app->Secure->GetPOST('smtp_extra');
|
||||
$input['smtp_ssl'] = $this->app->Secure->GetPOST('smtp_ssl');
|
||||
$input['smtp_port'] = $this->app->Secure->GetPOST('smtp_port');
|
||||
$input['smtp_frommail'] = $this->app->Secure->GetPOST('email'); // use only these
|
||||
$input['smtp_fromname'] = $this->app->Secure->GetPOST('angezeigtername'); // use only these
|
||||
$input['client_alias'] = $this->app->Secure->GetPOST('client_alias');
|
||||
$input['smtp_authtype'] = $this->app->Secure->GetPOST('smtp_authtype');
|
||||
$input['smtp_authparam'] = $this->app->Secure->GetPOST('smtp_authparam');
|
||||
$input['smtp_loglevel'] = $this->app->Secure->GetPOST('smtp_loglevel');
|
||||
$input['autosresponder_blacklist'] = $this->app->Secure->GetPOST('autosresponder_blacklist');
|
||||
$input['eigenesignatur'] = $this->app->Secure->GetPOST('eigenesignatur');
|
||||
$input['signatur'] = $this->app->Secure->GetPOST('signatur');
|
||||
$input['mutex'] = $this->app->Secure->GetPOST('mutex');
|
||||
$input['abdatum'] = $this->app->Secure->GetPOST('abdatum');
|
||||
$input['email'] = $this->app->Secure->GetPOST('email');
|
||||
|
||||
return $input;
|
||||
}
|
||||
|
|
@ -245,45 +279,7 @@ $width = array('10%'); // Fill out manually later
|
|||
function SetInput($input) {
|
||||
// $this->app->Tpl->Set('EMAIL', $input['email']);
|
||||
|
||||
$this->app->Tpl->Set('ANGEZEIGTERNAME', $input['angezeigtername']);
|
||||
$this->app->Tpl->Set('INTERNEBESCHREIBUNG', $input['internebeschreibung']);
|
||||
$this->app->Tpl->Set('BENUTZERNAME', $input['benutzername']);
|
||||
$this->app->Tpl->Set('PASSWORT', $input['passwort']);
|
||||
$this->app->Tpl->Set('SERVER', $input['server']);
|
||||
$this->app->Tpl->Set('SMTP', $input['smtp']);
|
||||
$this->app->Tpl->Set('TICKET', $input['ticket']);
|
||||
$this->app->Tpl->Set('IMAP_SENTFOLDER_AKTIV', $input['imap_sentfolder_aktiv']);
|
||||
$this->app->Tpl->Set('IMAP_SENTFOLDER', $input['imap_sentfolder']);
|
||||
$this->app->Tpl->Set('IMAP_PORT', $input['imap_port']);
|
||||
$this->app->Tpl->Set('IMAP_TYPE', $input['imap_type']);
|
||||
$this->app->Tpl->Set('AUTORESPONDER', $input['autoresponder']);
|
||||
$this->app->Tpl->Set('GESCHAEFTSBRIEFVORLAGE', $input['geschaeftsbriefvorlage']);
|
||||
$this->app->Tpl->Set('AUTORESPONDERBETREFF', $input['autoresponderbetreff']);
|
||||
$this->app->Tpl->Set('AUTORESPONDERTEXT', $input['autorespondertext']);
|
||||
$this->app->Tpl->Set('PROJEKT', $input['projekt']);
|
||||
$this->app->Tpl->Set('EMAILBACKUP', $input['emailbackup']);
|
||||
$this->app->Tpl->Set('ADRESSE', $input['adresse']);
|
||||
$this->app->Tpl->Set('FIRMA', $input['firma']);
|
||||
$this->app->Tpl->Set('LOESCHTAGE', $input['loeschtage']);
|
||||
$this->app->Tpl->Set('GELOESCHT', $input['geloescht']);
|
||||
$this->app->Tpl->Set('TICKETLOESCHEN', $input['ticketloeschen']);
|
||||
$this->app->Tpl->Set('TICKETABGESCHLOSSEN', $input['ticketabgeschlossen']);
|
||||
$this->app->Tpl->Set('TICKETQUEUE', $input['ticketqueue']);
|
||||
$this->app->Tpl->Set('TICKETPROJEKT', $input['ticketprojekt']);
|
||||
$this->app->Tpl->Set('TICKETEMAILEINGEHEND', $input['ticketemaileingehend']);
|
||||
$this->app->Tpl->Set('SMTP_EXTRA', $input['smtp_extra']);
|
||||
$this->app->Tpl->Set('SMTP_SSL', $input['smtp_ssl']);
|
||||
$this->app->Tpl->Set('SMTP_PORT', $input['smtp_port']);
|
||||
$this->app->Tpl->Set('CLIENT_ALIAS', $input['client_alias']);
|
||||
$this->app->Tpl->Set('SMTP_AUTHTYPE', $input['smtp_authtype']);
|
||||
$this->app->Tpl->Set('SMTP_AUTHPARAM', $input['smtp_authparam']);
|
||||
$this->app->Tpl->Set('SMTP_LOGLEVEL', $input['smtp_loglevel']);
|
||||
$this->app->Tpl->Set('AUTOSRESPONDER_BLACKLIST', $input['autosresponder_blacklist']);
|
||||
$this->app->Tpl->Set('EIGENESIGNATUR', $input['eigenesignatur']);
|
||||
$this->app->Tpl->Set('SIGNATUR', $input['signatur']);
|
||||
$this->app->Tpl->Set('MUTEX', $input['mutex']);
|
||||
$this->app->Tpl->Set('ABDATUM', $input['abdatum']);
|
||||
$this->app->Tpl->Set('EMAIL', $input['email']);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -297,10 +293,10 @@ $width = array('10%'); // Fill out manually later
|
|||
$this->app->erp->MailSend(
|
||||
$result[0]['email'],
|
||||
$result[0]['angezeigtername'],
|
||||
$result[0]['email'],
|
||||
$result[0]['angezeigtername'],
|
||||
'OpenXE ERP: Testmail',
|
||||
utf8_encode('Dies ist eine Testmail für Account "'.$result[0]['email'].'".'),
|
||||
array($result[0]['email']),
|
||||
array($result[0]['angezeigtername']),
|
||||
'DBXE ERP: Testmail',
|
||||
'Dies ist eine Testmail für Account "'.$result[0]['email'].'".',
|
||||
'',0,false,'','',
|
||||
true
|
||||
)
|
||||
|
|
|
|||
|
|
@ -77,6 +77,7 @@ class Exportbuchhaltung
|
|||
$rgchecked = $this->app->Secure->GetPOST("rechnung");
|
||||
$gschecked = $this->app->Secure->GetPOST("gutschrift");
|
||||
$vbchecked = $this->app->Secure->GetPOST("verbindlichkeit");
|
||||
$lgchecked = $this->app->Secure->GetPOST("lieferantengutschrift");
|
||||
$diffignore = $this->app->Secure->GetPOST("diffignore");
|
||||
$sachkonto = $this->app->Secure->GetPOST('sachkonto');
|
||||
|
||||
|
|
@ -97,6 +98,7 @@ class Exportbuchhaltung
|
|||
$rgchecked = true;
|
||||
$gschecked = true;
|
||||
$vbchecked = true;
|
||||
$lgchecked = true;
|
||||
}
|
||||
|
||||
$missing_obligatory = array();
|
||||
|
|
@ -134,7 +136,8 @@ class Exportbuchhaltung
|
|||
if (
|
||||
!$rgchecked &&
|
||||
!$gschecked &&
|
||||
!$vbchecked
|
||||
!$vbchecked &&
|
||||
!$lgchecked
|
||||
) {
|
||||
$msg = "<div class=error>Bitte mindestens eine Belegart auswählen.</div>";
|
||||
$dataok = false;
|
||||
|
|
@ -159,7 +162,7 @@ class Exportbuchhaltung
|
|||
if ($dataok) {
|
||||
$filename = "EXTF_".date('Ymd') . "_Buchungsstapel_DATEV_export.csv";
|
||||
try {
|
||||
$csv = $this->DATEV_Buchuchungsstapel($rgchecked, $gschecked, $vbchecked, $buchhaltung_berater, $buchhaltung_mandant, $buchhaltung_wj_beginn, $buchhaltung_sachkontenlaenge, $von, $bis, $projekt, $filename, $diffignore, $sachkonto_kennung);
|
||||
$csv = $this->DATEV_Buchuchungsstapel($rgchecked, $gschecked, $vbchecked, $lgchecked, $buchhaltung_berater, $buchhaltung_mandant, $buchhaltung_wj_beginn, $buchhaltung_sachkontenlaenge, $von, $bis, $projekt, $filename, $diffignore, $sachkonto_kennung);
|
||||
header("Content-Disposition: attachment; filename=" . $filename);
|
||||
header("Pragma: no-cache");
|
||||
header("Expires: 0");
|
||||
|
|
@ -198,6 +201,7 @@ class Exportbuchhaltung
|
|||
$this->app->Tpl->SET('RGCHECKED',$rgchecked?'checked':'');
|
||||
$this->app->Tpl->SET('GSCHECKED',$gschecked?'checked':'');
|
||||
$this->app->Tpl->SET('VBCHECKED',$vbchecked?'checked':'');
|
||||
$this->app->Tpl->SET('LGCHECKED',$lgchecked?'checked':'');
|
||||
$this->app->Tpl->SET('DIFFIGNORE',$diffignore?'checked':'');
|
||||
|
||||
$this->app->Tpl->SET('VON', $von_form);
|
||||
|
|
@ -212,7 +216,7 @@ class Exportbuchhaltung
|
|||
* Create DATEV Buchhungsstapel
|
||||
* @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', $diffignore = false, $sachkonto_differences) : string {
|
||||
function DATEV_Buchuchungsstapel(bool $rechnung, bool $gutschrift, bool $verbindlichkeit, bool $lieferantengutschrift, string $berater, string $mandant, datetime $wj_beginn, int $sachkontenlaenge, datetime $von, datetime $bis, int $projekt = 0, string $filename = 'EXTF_Buchungsstapel_DATEV_export.csv', $diffignore = false, $sachkonto_differences) : string {
|
||||
|
||||
$datev_header_definition = array (
|
||||
'1' => 'Kennzeichen',
|
||||
|
|
@ -447,12 +451,12 @@ class Exportbuchhaltung
|
|||
'field_belegnr' => 'b.belegnr',
|
||||
'field_name' => 'b.name',
|
||||
'field_date' => 'datum',
|
||||
'field_auftrag' => 'b.auftrag',
|
||||
'field_auftrag' => 'MAKE_SET(3,b.auftrag,(SELECT auftrag.internet FROM auftrag WHERE auftrag.id = auftragid))',
|
||||
'field_zahlweise' => 'CONCAT(UCASE(LEFT(b.zahlungsweise, 1)),SUBSTRING(b.zahlungsweise, 2))',
|
||||
'field_kontonummer' => 'a.kundennummer_buchhaltung',
|
||||
'field_kundennummer' => 'b.kundennummer',
|
||||
'field_betrag_gesamt' => 'b.soll',
|
||||
'field_betrag' => 'p.umsatz_brutto_gesamt',
|
||||
'field_gegenkonto' => '\'\'',
|
||||
'condition_where' => ' AND b.status IN (\'freigegeben\',\'versendet\',\'storniert\')',
|
||||
'Buchungstyp' => 'SR',
|
||||
'do' => $rechnung
|
||||
|
|
@ -466,54 +470,84 @@ class Exportbuchhaltung
|
|||
'field_name' => 'b.name',
|
||||
'field_date' => 'datum',
|
||||
'field_auftrag' => '\'\'',
|
||||
'field_zahlweise' => '\'\'',
|
||||
'field_kontonummer' => 'a.kundennummer_buchhaltung',
|
||||
'field_kundennummer' => 'b.kundennummer',
|
||||
'field_betrag_gesamt' => 'b.soll',
|
||||
'field_betrag' => 'p.umsatz_brutto_gesamt',
|
||||
'field_gegenkonto' => '\'\'',
|
||||
'condition_where' => ' AND b.status IN (\'freigegeben\',\'versendet\')',
|
||||
'Buchungstyp' => '',
|
||||
'do' => $gutschrift
|
||||
),
|
||||
array(
|
||||
'typ' => 'verbindlichkeit',
|
||||
'subtable' => 'verbindlichkeit_kontierung',
|
||||
'subtable' => 'verbindlichkeit_position',
|
||||
'kennzeichen' => 'H',
|
||||
'kennzeichen_negativ' => 'S',
|
||||
'field_belegnr' => 'b.rechnung',
|
||||
'field_name' => 'a.name',
|
||||
'field_date' => 'rechnungsdatum',
|
||||
'field_auftrag' => 'b.auftrag',
|
||||
'field_zahlweise' => '\'\'',
|
||||
'field_kontonummer' => 'a.lieferantennummer_buchhaltung',
|
||||
'field_kundennummer' => 'a.lieferantennummer',
|
||||
'field_betrag_gesamt' => 'b.betrag',
|
||||
'field_betrag' => 'p.betrag',
|
||||
'field_gegenkonto' => 'gegenkonto',
|
||||
'condition_where' => '',
|
||||
'field_betrag' => 'p.preis*p.menge*((100+p.steuersatz)/100)',
|
||||
'field_gegenkonto' => '(SELECT sachkonto FROM kontorahmen k WHERE k.id = p.kontorahmen)',
|
||||
'condition_where' => ' AND b.status IN (\'freigegeben\')',
|
||||
'Buchungstyp' => '',
|
||||
'do' => $verbindlichkeit
|
||||
),
|
||||
array(
|
||||
'typ' => 'lieferantengutschrift',
|
||||
'subtable' => 'lieferantengutschrift_position',
|
||||
'kennzeichen' => 'S',
|
||||
'kennzeichen_negativ' => 'H',
|
||||
'field_belegnr' => 'b.rechnung',
|
||||
'field_name' => 'a.name',
|
||||
'field_date' => 'rechnungsdatum',
|
||||
'field_auftrag' => '\'\'',
|
||||
'field_zahlweise' => '\'\'',
|
||||
'field_kontonummer' => 'a.lieferantennummer_buchhaltung',
|
||||
'field_kundennummer' => 'a.lieferantennummer',
|
||||
'field_betrag_gesamt' => 'b.betrag',
|
||||
'field_betrag' => 'p.preis*p.menge*((100+p.steuersatz)/100)',
|
||||
'field_gegenkonto' => '(SELECT sachkonto FROM kontorahmen k WHERE k.id = p.kontorahmen)',
|
||||
'condition_where' => ' AND b.status IN (\'freigegeben\')',
|
||||
'Buchungstyp' => '',
|
||||
'do' => $lieferantengutschrift
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
foreach ($typen as $typ) {
|
||||
|
||||
if (!$typ['do']) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (!empty($typ['field_gegenkonto'])) {
|
||||
$sql_gegenkonto = $typ['field_gegenkonto'];
|
||||
} else
|
||||
{
|
||||
$sql_gegenkonto = "NULL";
|
||||
}
|
||||
|
||||
$sql = "SELECT
|
||||
".$typ['typ']." id,
|
||||
".$typ['field_belegnr']." as belegnr,
|
||||
".$typ['field_auftrag']." as auftrag,
|
||||
".$typ['field_zahlweise']." as zahlweise,
|
||||
if(".$typ['field_kontonummer']." <> '',".$typ['field_kontonummer'].",".$typ['field_kundennummer'].") as kundennummer,
|
||||
".$typ['field_name']." as name,
|
||||
b.ustid,
|
||||
a.ustid,
|
||||
b.".$typ['field_date']." as datum,
|
||||
p.id as pos_id,
|
||||
".$typ['field_betrag_gesamt']." as betrag_gesamt,
|
||||
b.waehrung,
|
||||
ROUND(".$typ['field_betrag'].",2) as betrag,
|
||||
".$typ['field_gegenkonto']." as gegenkonto,
|
||||
p.waehrung as pos_waehrung
|
||||
".$sql_gegenkonto." as gegenkonto,
|
||||
b.waehrung as pos_waehrung
|
||||
FROM
|
||||
".$typ['typ']." b
|
||||
LEFT JOIN
|
||||
|
|
@ -531,6 +565,7 @@ class Exportbuchhaltung
|
|||
FROM
|
||||
(
|
||||
SELECT
|
||||
id,
|
||||
belegnr,
|
||||
datum,
|
||||
betrag_gesamt,
|
||||
|
|
@ -542,10 +577,10 @@ class Exportbuchhaltung
|
|||
FROM
|
||||
(".$sql.") posten
|
||||
GROUP BY
|
||||
belegnr
|
||||
id
|
||||
) summen
|
||||
WHERE betrag_gesamt <> betrag_summe OR betrag_summe IS NULL";
|
||||
|
||||
|
||||
$result = $this->app->DB->SelectArr($sql_check);
|
||||
if (!empty($result)) {
|
||||
|
||||
|
|
@ -579,13 +614,14 @@ class Exportbuchhaltung
|
|||
$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'];
|
||||
$data['Auftragsnummer'] = $row['auftrag'];
|
||||
$data['Zahlweise'] = $row['zahlweise'];
|
||||
$csv .= $this->create_line($datev_buchungsstapel_definition,$data);
|
||||
}
|
||||
}
|
||||
}
|
||||
} // diffignore
|
||||
|
||||
|
||||
// Query position data
|
||||
$arr = $this->app->DB->Query($sql);
|
||||
while ($row = $this->app->DB->Fetch_Assoc($arr)) {
|
||||
|
|
@ -614,7 +650,7 @@ class Exportbuchhaltung
|
|||
$data['Belegfeld 1'] = mb_strimwidth($row['belegnr'],0,12);
|
||||
$data['Konto'] = $row['kundennummer']; // obligatory
|
||||
|
||||
if ($typ['field_gegenkonto'] == 'gegenkonto') {
|
||||
if (!empty($typ['field_gegenkonto'])) {
|
||||
$data['Gegenkonto (ohne BU-Schlüssel)'] = $row['gegenkonto']; // obligatory
|
||||
} else {
|
||||
$data['Gegenkonto (ohne BU-Schlüssel)'] = $erloes; // obligatory
|
||||
|
|
@ -625,6 +661,7 @@ class Exportbuchhaltung
|
|||
$data['EU-Mitgliedstaat u. UStID (Bestimmung)'] = $row['ustid'];
|
||||
|
||||
$data['Auftragsnummer'] = ($row['auftrag']!=0)?$row['auftrag']:'';
|
||||
$data['Zahlweise'] = $row['zahlweise'];
|
||||
|
||||
$csv .= $this->create_line($datev_buchungsstapel_definition,$data);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -446,6 +446,7 @@ class Firmendaten {
|
|||
'artikelnummer',
|
||||
'preisanfrage',
|
||||
'verbindlichkeit',
|
||||
'lieferantengutschrift',
|
||||
'receiptdocument',
|
||||
];
|
||||
if(in_array($cmd, $allowedNumbers)) {
|
||||
|
|
@ -1703,6 +1704,7 @@ class Firmendaten {
|
|||
$this->app->Tpl->Set('NEXT_ANFRAGE' , $data[0]['next_anfrage']);
|
||||
$this->app->Tpl->Set('NEXT_PREISANFRAGE' , $data[0]['next_preisanfrage']);
|
||||
$this->app->Tpl->Set('NEXT_VERBINDLICHKEIT', $data[0]['next_verbindlichkeit']);
|
||||
$this->app->Tpl->Set('NEXT_LIEFERANTENGUTSCHRIFT', $data[0]['next_lieferantengutschrift']);
|
||||
$this->app->Tpl->Set('NEXT_RECEIPTDOCUMENT', $data[0]['next_receiptdocument']);
|
||||
|
||||
//Briefpapier Hintergrund
|
||||
|
|
@ -2060,6 +2062,7 @@ class Firmendaten {
|
|||
$this->app->Tpl->Set('NEXT_ANFRAGE' , ($data['next_anfrage']));
|
||||
$this->app->Tpl->Set('NEXT_PREISANFRAGE' , ($data['next_preisanfrage']));
|
||||
$this->app->Tpl->Set('NEXT_VERBINDLICHKEIT', ($data['next_verbindlichkeit']));
|
||||
$this->app->Tpl->Set('NEXT_LIEFERANTENGUTSCHRIFT', ($data['next_lieferantengutschrift']));
|
||||
$this->app->Tpl->Set('NEXT_RECEIPTDOCUMENT', ($data['next_receiptdocument']));
|
||||
|
||||
//Briefpapier Hintergrund
|
||||
|
|
@ -2283,6 +2286,7 @@ class Firmendaten {
|
|||
$data['next_anfrage'] = ($this->app->Secure->POST["next_anfrage"]);
|
||||
$data['next_preisanfrage'] = ($this->app->Secure->POST["next_preisanfrage"]);
|
||||
$data['next_verbindlichkeit'] = ($this->app->Secure->POST["next_verbindlichkeit"]);
|
||||
$data['next_lieferantengutschrift'] = ($this->app->Secure->POST["next_lieferantengutschrift"]);
|
||||
$data['produktionsverhalten'] = $this->app->Secure->POST["produktionsverhalten"];
|
||||
|
||||
$data['sprachebevorzugen'] = ($this->app->Secure->POST["sprachebevorzugen"]);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,207 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* Copyright (c) 2022 OpenXE project
|
||||
*/
|
||||
|
||||
use Xentral\Components\Database\Exception\QueryFailureException;
|
||||
|
||||
class Kostenstellen {
|
||||
|
||||
function __construct($app, $intern = false) {
|
||||
$this->app = $app;
|
||||
if ($intern)
|
||||
return;
|
||||
|
||||
$this->app->ActionHandlerInit($this);
|
||||
$this->app->ActionHandler("list", "kostenstellen_list");
|
||||
$this->app->ActionHandler("create", "kostenstellen_edit"); // This automatically adds a "New" button
|
||||
$this->app->ActionHandler("edit", "kostenstellen_edit");
|
||||
$this->app->ActionHandler("delete", "kostenstellen_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 "kostenstellen_list":
|
||||
$allowed['kostenstellen_list'] = array('list');
|
||||
$heading = array('','','Nummer', 'Beschreibung', 'Internebemerkung', '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.nummer', 'k.beschreibung', 'k.internebemerkung');
|
||||
$searchsql = array('k.nummer', 'k.beschreibung', 'k.internebemerkung');
|
||||
|
||||
$defaultorder = 1;
|
||||
$defaultorderdesc = 0;
|
||||
$aligncenter = array();
|
||||
$alignright = array();
|
||||
$numbercols = array();
|
||||
$sumcol = array();
|
||||
|
||||
$dropnbox = "'<img src=./themes/new/images/details_open.png class=details>' AS `open`, CONCAT('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',k.id,'\" />') AS `auswahl`";
|
||||
|
||||
// $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=kostenstellen&action=edit&id=%value%\"><img src=\"./themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a> <a href=\"#\" onclick=DeleteDialog(\"index.php?module=kostenstellen&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.nummer, k.beschreibung, k.internebemerkung, k.id FROM kostenstellen k";
|
||||
|
||||
$where = "1";
|
||||
$count = "SELECT count(DISTINCT id) FROM kostenstellen WHERE $where";
|
||||
// $groupby = "";
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
$erg = false;
|
||||
|
||||
foreach ($erlaubtevars as $k => $v) {
|
||||
if (isset($$v)) {
|
||||
$erg[$v] = $$v;
|
||||
}
|
||||
}
|
||||
return $erg;
|
||||
}
|
||||
|
||||
function kostenstellen_list() {
|
||||
$this->app->erp->MenuEintrag("index.php?module=kostenstellen&action=list", "Übersicht");
|
||||
$this->app->erp->MenuEintrag("index.php?module=kostenstellen&action=create", "Neu anlegen");
|
||||
|
||||
$this->app->erp->MenuEintrag("index.php", "Zurück");
|
||||
|
||||
$this->app->YUI->TableSearch('TAB1', 'kostenstellen_list', "show", "", "", basename(__FILE__), __CLASS__);
|
||||
$this->app->Tpl->Parse('PAGE', "kostenstellen_list.tpl");
|
||||
}
|
||||
|
||||
public function kostenstellen_delete() {
|
||||
$id = (int) $this->app->Secure->GetGET('id');
|
||||
|
||||
$this->app->DB->Delete("DELETE FROM `kostenstellen` WHERE `id` = '{$id}'");
|
||||
$this->app->Tpl->Set('MESSAGE', "<div class=\"error\">Der Eintrag wurde gelöscht.</div>");
|
||||
|
||||
$this->kostenstellen_list();
|
||||
}
|
||||
|
||||
/*
|
||||
* Edit kostenstellen item
|
||||
* If id is empty, create a new one
|
||||
*/
|
||||
|
||||
function kostenstellen_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=kostenstellen&action=edit&id=$id", "Details");
|
||||
$this->app->erp->MenuEintrag("index.php?module=kostenstellen&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 kostenstellen (".$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=kostenstellen&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.nummer, k.beschreibung, k.internebemerkung, k.id FROM kostenstellen k"." WHERE id=$id");
|
||||
|
||||
foreach ($result[0] as $key => $value) {
|
||||
$this->app->Tpl->Set(strtoupper($key), $value);
|
||||
}
|
||||
|
||||
if (!empty($result)) {
|
||||
$kostenstellen_from_db = $result[0];
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* 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("artikel", "artikelnummer");
|
||||
|
||||
*/
|
||||
|
||||
$this->app->Tpl->Parse('PAGE', "kostenstellen_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['nummer'] = $this->app->Secure->GetPOST('nummer');
|
||||
$input['beschreibung'] = $this->app->Secure->GetPOST('beschreibung');
|
||||
$input['internebemerkung'] = $this->app->Secure->GetPOST('internebemerkung');
|
||||
|
||||
|
||||
return $input;
|
||||
}
|
||||
}
|
||||
|
|
@ -2362,6 +2362,7 @@ class Rechnung extends GenRechnung
|
|||
|
||||
$belegmax = '';
|
||||
$ohnebriefpapier = $this->app->erp->Firmendaten('rechnung_ohnebriefpapier');
|
||||
$abweichendebezeichnung = $this->app->erp->Firmendaten('rechnungersatz_standard');
|
||||
|
||||
$usereditid = 0;
|
||||
if(isset($this->app->User) && $this->app->User && method_exists($this->app->User,'GetID')){
|
||||
|
|
@ -2375,24 +2376,24 @@ class Rechnung extends GenRechnung
|
|||
zahlungszieltageskonto,
|
||||
zahlungszielskonto,
|
||||
lieferdatum,
|
||||
status,projekt,adresse,auftragid,ohne_briefpapier,angelegtam,usereditid)
|
||||
status,projekt,adresse,auftragid,ohne_briefpapier,angelegtam,usereditid,abweichendebezeichnung)
|
||||
VALUES ('',NOW(),'','".$this->app->User->GetFirma()."','$belegmax','".$this->app->erp->StandardZahlungsweise($projekt)."',
|
||||
'".$this->app->erp->ZahlungsZielTage($projekt)."',
|
||||
'".$this->app->erp->ZahlungsZielTageSkonto($projekt)."',
|
||||
'".$this->app->erp->ZahlungsZielSkonto($projekt)."',NOW(),
|
||||
'angelegt','$projekt','$adresse',0,'".$ohnebriefpapier."',NOW(),'$usereditid')");
|
||||
'angelegt','$projekt','$adresse',0,'".$ohnebriefpapier."',NOW(),'$usereditid','$abweichendebezeichnung')");
|
||||
} else {
|
||||
$this->app->DB->Insert("INSERT INTO rechnung (id,datum,bearbeiter,firma,belegnr,zahlungsweise,
|
||||
zahlungszieltage,
|
||||
zahlungszieltageskonto,
|
||||
zahlungszielskonto,
|
||||
lieferdatum,
|
||||
status,projekt,adresse,auftragid,ohne_briefpapier,angelegtam,usereditid)
|
||||
status,projekt,adresse,auftragid,ohne_briefpapier,angelegtam,usereditid,abweichendebezeichnung)
|
||||
VALUES ('',NOW(),'','".$this->app->User->GetFirma()."','$belegmax','".$this->app->erp->StandardZahlungsweise($projekt)."',
|
||||
'0',
|
||||
'0',
|
||||
'0',NOW(),
|
||||
'angelegt','$projekt','$adresse',0,'".$ohnebriefpapier."',NOW(),'$usereditid')");
|
||||
'angelegt','$projekt','$adresse',0,'".$ohnebriefpapier."',NOW(),'$usereditid','$abweichendebezeichnung')");
|
||||
}
|
||||
|
||||
$id = $this->app->DB->GetInsertID();
|
||||
|
|
@ -2518,9 +2519,6 @@ class Rechnung extends GenRechnung
|
|||
$this->app->Secure->POST[$value] = str_replace("'", ''',$arr[0][$value]);
|
||||
$uparr[$value] = str_replace("'", ''',$arr[0][$value]);
|
||||
}
|
||||
|
||||
//$this->app->Secure->POST[$value] = $arr[0][$value];
|
||||
//$uparr[$value] = $arr[0][$value];
|
||||
}
|
||||
|
||||
$uparr['adresse'] = $adresse;
|
||||
|
|
@ -2531,6 +2529,10 @@ class Rechnung extends GenRechnung
|
|||
$uparr['ohne_briefpapier'] = '1';
|
||||
}
|
||||
|
||||
if($this->app->erp->Firmendaten('rechnungersatz_standard')=='1'){
|
||||
$uparr['abweichendebezeichnung']=1;
|
||||
}
|
||||
|
||||
$this->app->DB->UpdateArr('rechnung',$id,'id',$uparr,true);
|
||||
$uparr=null;
|
||||
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ class Rechnungslauf {
|
|||
DATE_ADD(@start, INTERVAL (FLOOR(TIMESTAMPDIFF(DAY, @start, IF(aa.enddatum = '0000-00-00' OR aa.enddatum > '$scalcdate', '$scalcdate', aa.enddatum)) / 30)+1)*30 DAY )
|
||||
END, '%d.%m.%Y') SEPARATOR '<br>') as end,
|
||||
SUM((100-aa.rabatt)/100 * aa.preis * aa.menge *
|
||||
(CASE
|
||||
(GREATEST(aa.zahlzyklus, CASE
|
||||
WHEN aa.preisart = 'monat' THEN
|
||||
TIMESTAMPDIFF(MONTH, @start, @end)
|
||||
WHEN aa.preisart = 'jahr' THEN
|
||||
|
|
@ -102,7 +102,7 @@ class Rechnungslauf {
|
|||
WHEN aa.preisart = '30tage' THEN
|
||||
FLOOR(TIMESTAMPDIFF(DAY, @start, @end) / 30)
|
||||
END
|
||||
)
|
||||
))
|
||||
) as amount,
|
||||
adr.id
|
||||
FROM abrechnungsartikel aa
|
||||
|
|
@ -248,6 +248,17 @@ class Rechnungslauf {
|
|||
$this->app->Tpl->addMessage('info', 'Die Aufträge werden nun im Hintergrund erstellt', false, 'MESSAGE_ORDERS');
|
||||
}
|
||||
}
|
||||
|
||||
$cronjobActive = $this->app->DB->Select(
|
||||
"SELECT ps.id
|
||||
FROM `prozessstarter` AS `ps`
|
||||
WHERE ps.aktiv = 1 and (ps.parameter = 'rechnungslauf_manual')
|
||||
LIMIT 1"
|
||||
);
|
||||
if(!$cronjobActive) {
|
||||
$this->app->Tpl->addMessage('warning', 'Der Prozessstarter \'rechnungslauf_manual\' ist nicht aktiv');
|
||||
}
|
||||
|
||||
$this->app->Tpl->Parse('PAGE', 'rechnungslauf_list.tpl');
|
||||
}
|
||||
|
||||
|
|
@ -280,4 +291,4 @@ class Rechnungslauf {
|
|||
$this->app->Tpl->Output('rechnungslauf_minidetail.tpl');
|
||||
$this->app->ExitXentral();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -109,6 +109,7 @@ class Report
|
|||
$this->app->ActionHandler('transfer', 'ReportTransfer');
|
||||
$this->app->ActionHandler('share', 'HandleActionShare');
|
||||
$this->app->ActionHandler('export', 'ReportExport');
|
||||
$this->app->ActionHandler('databaseview', 'DataBaseView');
|
||||
|
||||
$this->app->ActionHandlerListen($app);
|
||||
$this->app->erp->Headlines('Berichte');
|
||||
|
|
@ -526,7 +527,29 @@ class Report
|
|||
IF(c.sum = 1, 'Ja', 'Nein') as `sum`, c.sequence, c.id
|
||||
FROM `report_column` AS `c`";
|
||||
break;
|
||||
case 'databaseview':
|
||||
|
||||
$selectedtable = $this->app->User->GetParameter('report_databaseview_selectedtable');
|
||||
|
||||
$selectedcolumns = $this->app->User->GetParameter('report_databaseview_selectedcolumns');
|
||||
|
||||
if (!empty($selectedcolumns)) {
|
||||
$columns = explode(',',$selectedcolumns);
|
||||
} else {
|
||||
$sql = "SHOW COLUMNS FROM `".$selectedtable."`";
|
||||
$columns = array_column($this->app->DB->SelectArr($sql),'Field');
|
||||
$columns = array_slice($columns,0,10);
|
||||
}
|
||||
|
||||
$heading = $columns;
|
||||
$heading[] = '';
|
||||
$findcols = $columns;
|
||||
$searchsql = $columns;
|
||||
|
||||
|
||||
$sql = "SELECT `".$columns[0]."`, `".implode("`,`",$columns)."` from `".$selectedtable."`";
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
$erg = [];
|
||||
|
|
@ -3098,7 +3121,7 @@ class Report
|
|||
'Zurück zur Übersicht'
|
||||
);
|
||||
|
||||
if ($action === 'list') {
|
||||
if ($action === 'list' or $action == 'databaseview') {
|
||||
$this->app->erp->MenuEintrag('index.php?module=report&action=list', 'Übersicht');
|
||||
} else {
|
||||
$this->app->erp->MenuEintrag(
|
||||
|
|
@ -3118,6 +3141,7 @@ class Report
|
|||
'Übertragung'
|
||||
);
|
||||
}
|
||||
$this->app->erp->MenuEintrag('index.php?module=report&action=databaseview', 'Datenbankansicht');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -3187,4 +3211,91 @@ class Report
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
function DataBaseView() {
|
||||
$this->createMenu();
|
||||
$this->template->Set('KURZUEBERSCHRIFT', 'Datenbank');
|
||||
|
||||
$sql = "SHOW TABLES";
|
||||
$tables = $this->app->DB->SelectArr($sql);
|
||||
$table_easytable = new EasyTable($this->app);
|
||||
$table_easytable->headings = array('Tabelle');
|
||||
foreach ($tables as $table) {
|
||||
$table = reset($table);
|
||||
$row = array(
|
||||
'<a href="index.php?module=report&action=databaseview&table='.$table.'#tabs-2">'.$table.'</a>'
|
||||
);
|
||||
$table_easytable->AddRow($row);
|
||||
}
|
||||
$table_easytable->DisplayNew('TAB1');
|
||||
|
||||
$selectedtable = $this->app->Secure->GetGet('table');
|
||||
if (!empty($selectedtable)) {
|
||||
|
||||
$this->app->User->SetParameter('report_databaseview_selectedtable',$selectedtable);
|
||||
$submit = $this->app->Secure->GetPost('submit');
|
||||
$selectedcolumns = $this->app->Secure->GetPost('auswahl');
|
||||
|
||||
$sql = "SHOW COLUMNS FROM `".$selectedtable."`";
|
||||
$columns = $this->app->DB->SelectArr($sql);
|
||||
$column_easytable = new EasyTable($this->app);
|
||||
$column_easytable->headings = array_merge(['Auswahl'],array_keys(reset($columns)));
|
||||
foreach ($columns as $column) {
|
||||
$checked = '';
|
||||
if (!empty($selectedcolumns)) {
|
||||
if (in_array($column['Field'],$selectedcolumns)) {
|
||||
$checked = 'checked';
|
||||
}
|
||||
}
|
||||
$row = array();
|
||||
$row[] = '<input type="checkbox" name="auswahl[]" '.$checked.' value="'.$column['Field'].'">';
|
||||
$row = array_merge($row,$column);
|
||||
$column_easytable->AddRow($row);
|
||||
}
|
||||
$column_easytable->DisplayNew('TAB2');
|
||||
$this->app->Tpl->Set('TABLENAME',ucfirst($selectedtable));
|
||||
|
||||
switch($submit) {
|
||||
case 'vorschau':
|
||||
if (!empty($selectedcolumns)) {
|
||||
$this->app->User->SetParameter('report_databaseview_selectedcolumns',implode(',',$selectedcolumns));
|
||||
} else {
|
||||
$this->app->YUI->Message('warning','Spalten wählen');
|
||||
}
|
||||
$this->app->YUI->TableSearch('TAB3', 'databaseview', 'show', '', '', basename(__FILE__), __CLASS__);
|
||||
break;
|
||||
case 'erzeugen':
|
||||
$selectedcolumns = $this->app->User->GetParameter('report_databaseview_selectedcolumns');
|
||||
$columns = explode(',',$selectedcolumns);
|
||||
$sql = "SELECT `".implode("`,`",$columns)."` from `".$selectedtable."`";
|
||||
$name = $this->service->generateIncrementedReportName(ucfirst($selectedtable));
|
||||
$userId = $this->app->User->GetID();
|
||||
$report = ReportData::fromFormData(['name' => $name, 'sql_query' => $sql, 'description' => 'Erzeugt aus Datenbankansicht Tabelle '.ucfirst($selectedtable)]);
|
||||
$newId = $this->service->saveReport($report);
|
||||
if ($newId > 0) {
|
||||
$this->service->saveReportUserArray([
|
||||
'report_id' => $newId,
|
||||
'user_id' => $userId,
|
||||
'name' => $this->app->User->GetName(),
|
||||
'chart_enabled' => 0,
|
||||
'file_enabled' => 0,
|
||||
'menu_enabled' => 0,
|
||||
'tab_enabled' => 0,
|
||||
]);
|
||||
$report = $this->gateway->getReportById($newId);
|
||||
$newReport = $this->service->autoCreateColumns($report);
|
||||
$newId = $this->service->saveReport($newReport);
|
||||
header('Location: index.php?module=report&action=edit&id='.$newId);
|
||||
} else {
|
||||
$this->app->YUI->Message('error','Bericht konnte nicht erzeugt werden');
|
||||
}
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
$this->app->YUI->Message('warning','Tabelle wählen');
|
||||
}
|
||||
|
||||
$this->template->Parse('PAGE', 'report_databaseview.tpl');
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ class Shopimporter_Presta extends ShopimporterBase
|
|||
// TODO
|
||||
private $langidToIso = [3 => 'de', 1 => 'en'];
|
||||
private $taxationByDestinationCountry;
|
||||
private $orderSearchLimit;
|
||||
|
||||
|
||||
public function __construct($app, $intern = false)
|
||||
|
|
@ -284,17 +285,20 @@ class Shopimporter_Presta extends ShopimporterBase
|
|||
|
||||
$cart['articlelist'] = [];
|
||||
foreach ($order->associations->order_rows->order_row as $order_row) {
|
||||
|
||||
$steuersatz = (strval($order_row->unit_price_tax_incl) / strval($order_row->unit_price_tax_excl)) - 1;
|
||||
$steuersatz = round($steuersatz, 1);
|
||||
|
||||
$cart['articlelist'][] = [
|
||||
$article = [
|
||||
'articleid' => strval($order_row->product_reference),
|
||||
'name' => strval($order_row->product_name),
|
||||
'quantity' => strval($order_row->product_quantity),
|
||||
'price_netto' => strval($order_row->unit_price_tax_excl),
|
||||
'steuersatz' => $steuersatz
|
||||
];
|
||||
|
||||
if ($order_row->unit_price_tax_excl > 0) {
|
||||
$steuersatz = (strval($order_row->unit_price_tax_incl) / strval($order_row->unit_price_tax_excl)) - 1;
|
||||
$steuersatz = round($steuersatz, 1);
|
||||
$article['steuersatz'] = $steuersatz;
|
||||
}
|
||||
|
||||
$cart['articlelist'][] = $article;
|
||||
}
|
||||
|
||||
$fetchedOrders[] = [
|
||||
|
|
@ -381,13 +385,26 @@ class Shopimporter_Presta extends ShopimporterBase
|
|||
$res['kurztext_de'] = strip_tags($shortdescriptions['de']);
|
||||
$res['kurztext_en'] = strip_tags($shortdescriptions['en']);
|
||||
$res['hersteller'] = strval($product->product->manufacturer_name);
|
||||
$res['metakeywords_de'] = $metakeywords['de'];
|
||||
$res['metakeywords_en'] = $metakeywords['en'];
|
||||
$res['metatitle_de'] = $metatitles['de'];
|
||||
$res['metatitle_en'] = $metatitles['en'];
|
||||
$res['metadescription_de'] = $metadescriptions['de'];
|
||||
$res['metadescription_en'] = $metadescriptions['en'];
|
||||
|
||||
$tags = $product->product->associations->tags->tag;
|
||||
$keywords = [];
|
||||
foreach ($tags as $tag) {
|
||||
$tagid = intval($tag->id);
|
||||
$endpoint = "tags/{$tagid}";
|
||||
$tagdata = $this->prestaRequest('GET', $endpoint);
|
||||
$tagiso = $this->langidToIso[intval($tagdata->tag->id_lang)];
|
||||
$tagvalue = strval($tagdata->tag->name);
|
||||
if (!array_key_exists($tagiso, $keywords))
|
||||
$keywords[$tagiso] = [];
|
||||
$keywords[$tagiso][] = $tagvalue;
|
||||
}
|
||||
$res['metakeywords_de'] = join(',', $keywords['de'] ?? []);
|
||||
$res['metakeywords_en'] = join(',', $keywords['en'] ?? []);
|
||||
|
||||
$images = [];
|
||||
foreach ($product->product->associations->images->image as $img) {
|
||||
$endpoint = "images/products/$productId/$img->id";
|
||||
|
|
|
|||
|
|
@ -716,7 +716,7 @@ class Ticket {
|
|||
|
||||
$ticket_from_db = $this->app->DB->SelectArr($sql)[0];
|
||||
|
||||
$ticket_from_db['betreff'] = htmlentities(strip_tags($ticket_from_db['betreff'])); //+ #20230916 XSS
|
||||
$ticket_from_db['betreff'] = strip_tags($ticket_from_db['betreff']);
|
||||
|
||||
foreach ($ticket_from_db as $key => $value) {
|
||||
$this->app->Tpl->Set(strtoupper($key), $value);
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ class upgrade {
|
|||
public function Install() {
|
||||
/* Fill out manually later */
|
||||
}
|
||||
|
||||
|
||||
function upgrade_overview() {
|
||||
|
||||
$submit = $this->app->Secure->GetPOST('submit');
|
||||
|
|
|
|||
|
|
@ -1,448 +1,448 @@
|
|||
<?php
|
||||
session_start();
|
||||
error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
|
||||
ini_set('display_errors', 1);
|
||||
$config_file = 'setup.conf.php';
|
||||
$output_folder = '../../conf/';
|
||||
|
||||
if(!is_file($config_file) ) { echo 'Config-File is missing'; return; }
|
||||
include_once($config_file);
|
||||
|
||||
#########################################################################
|
||||
$max_steps = count(array_filter($setup))+1;
|
||||
|
||||
$step = (($_GET['step']!='') ? $_GET['step'] : 1);
|
||||
$submit = $_POST['_SUBMIT'];
|
||||
|
||||
|
||||
$isSecure = false;
|
||||
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
|
||||
$isSecure = true;
|
||||
}
|
||||
elseif (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' || !empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on') {
|
||||
$isSecure = true;
|
||||
}
|
||||
$REQUEST_PROTOCOL = $isSecure ? 'https' : 'http';
|
||||
|
||||
//$weburl = $REQUEST_PROTOCOL."://".$_SERVER['SERVER_ADDR'].":".$_SERVER['SERVER_PORT'].str_replace('setup/setup.php?step=5','',$_SERVER['REQUEST_URI'])."index.php?module=welcome&action=cronjob";
|
||||
//$weburllink = $REQUEST_PROTOCOL."://".$_SERVER['SERVER_ADDR'].":".$_SERVER['SERVER_PORT'].str_replace('setup/setup.php?step=5','',$_SERVER['REQUEST_URI']);
|
||||
|
||||
if($_SERVER['SCRIPT_URI'] != '')
|
||||
{
|
||||
$weburl = str_replace(array('setup/setup.php?step=5','setup/setup.php'),array('',''),$_SERVER['SCRIPT_URI'])."index.php?module=welcome&action=cronjob";
|
||||
// $weburllink = str_replace(array('setup/setup.php?step=5','setup/setup.php'),array('',''),$_SERVER['SCRIPT_URI']);
|
||||
}elseif($_SERVER['REQUEST_URI'] != '' && $_SERVER['SERVER_ADDR']!='' && $_SERVER['SERVER_ADDR']!='::1' && strpos($_SERVER['SERVER_SOFTWARE'],"nginx")===false)
|
||||
{
|
||||
$weburl = (isset($_SERVER['SERVER_ADDR']) && $_SERVER['SERVER_ADDR']?$REQUEST_PROTOCOL."://".$_SERVER['SERVER_ADDR'].(isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] && $_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443?':'.$_SERVER['SERVER_PORT']:''):'').str_replace(array('setup/setup.php?step=5','setup/setup.php'),array('',''),$_SERVER['REQUEST_URI'])."index.php?module=welcome&action=cronjob";
|
||||
// $weburllink = (isset($_SERVER['SERVER_ADDR']) && $_SERVER['SERVER_ADDR']?$REQUEST_PROTOCOL."://".$_SERVER['SERVER_ADDR'].(isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] && $_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443?':'.$_SERVER['SERVER_PORT']:''):'').str_replace(array('setup/setup.php?step=5','setup/setup.php'),array('',''),$_SERVER['REQUEST_URI']);
|
||||
} elseif($_SERVER['SERVER_NAME']!="") //MAMP auf macos
|
||||
{
|
||||
$weburl = str_replace(array('setup/setup.php?step=5','setup/setup.php'),array('',''),$REQUEST_PROTOCOL."://".$_SERVER['SERVER_NAME'].":".$_SERVER['SERVER_PORT'].$_SERVER['REQUESR_URI'].$_SERVER['SCRIPT_NAME'])."index.php?module=welcome&action=cronjob";
|
||||
// $weburllink = str_replace(array('setup/setup.php?step=5','setup/setup.php'),array('',''),$REQUEST_PROTOCOL."://".$_SERVER['SERVER_NAME'].":".$_SERVER['SERVER_PORT'].$_SERVER['REQUESR_URI'].$_SERVER['SCRIPT_NAME']);
|
||||
}
|
||||
else{
|
||||
$weburl = '../index.php?module=welcome&action=cronjob';
|
||||
$weburllink = '../';
|
||||
}
|
||||
|
||||
$weburllink = '../';
|
||||
|
||||
if($step>=$max_steps){
|
||||
//GenerateConfigFiles($output_folder);
|
||||
//if($config['postinstall']) PostInstall();
|
||||
$webserverUser = DetermineWebserverUser();
|
||||
$phpBinary = DeterminePhpBinary();
|
||||
$baseDir = DetermineInstallationDir();
|
||||
$cronjobStarterPath = $baseDir . '/cronjobs/starter2.php';
|
||||
$cronjobLine = htmlspecialchars(sprintf('* * * * * %s %s > /dev/null 2>&1', $phpBinary, $cronjobStarterPath));
|
||||
|
||||
$page = HtmlTemplate(
|
||||
"<h2>Setup erfolgreich beendet!</h2>
|
||||
<p>Um den Prozessstarter nutzen zu können: Tragen Sie folgendes Script in ihrer crontab ein:</p>
|
||||
<pre style=\"font-size:9pt\">php {$cronjobStarterPath}</pre>
|
||||
<p>Am besten eignet sich ein Interval von einer Minute. Wichtig ist dass der Cronjob unter dem Benutzer des Webservers läuft.</p>
|
||||
<br>
|
||||
<div id=\"crontab\">
|
||||
<h3>Anleitung – Crontab einrichten</h3>
|
||||
<ol>
|
||||
<li>
|
||||
<p>Nachfolgendes Kommando ausführen:</p>
|
||||
<pre class=\"console\">sudo crontab -u {$webserverUser} -e</pre>
|
||||
</li>
|
||||
<li>
|
||||
<p>Anschließend öffnet sich ein Editor. Dort folgende Zeile einfügen und die Datei speichern:</p>
|
||||
<pre class=\"console\">{$cronjobLine}</pre>
|
||||
</li>
|
||||
<li>
|
||||
<p>Nach dem Verlassen des Editors sollte diese Ausgabe als Bestätigung erscheinen:</p>
|
||||
<pre class=\"console\">crontab: installing new crontab</pre>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
<br><br>
|
||||
<center>
|
||||
<a href=\"$weburllink\">Anmelden mit Benutzer: <i>admin</i> und Passwort: <i>admin</i></a>
|
||||
<br><br>
|
||||
Bitte nach der Installation das <a href=\"".$weburllink."index.php?module=upgrade\" target=\"_blank\">Datenbank-Upgrade</a> durchführen.</a>
|
||||
</center>
|
||||
");
|
||||
}else{
|
||||
$ok = true;
|
||||
if($step == 1)
|
||||
{
|
||||
$setup[$step]['description'] = stepMessage($step);
|
||||
$ok = stepFehler($step);
|
||||
}else $ok = stepFehler($step);
|
||||
$page = GenerateHtml($step, $setup);
|
||||
if($ok){$page = str_replace('[BUTTON]', (($step<=$max_steps)?"<input type=\"submit\" name=\"_SUBMIT\" value=\"Weiter\" class=\"btn\">":""), $page);}else{$page = str_replace('[BUTTON]','',$page);}
|
||||
}
|
||||
if($submit!='') {
|
||||
$configfile = $_POST['_CONFIGFILE'];
|
||||
$action = $_POST['_ACTION'];
|
||||
unset($_POST['_CONFIGFILE']);
|
||||
unset($_POST['_ACTION']);
|
||||
unset($_POST['_SUBMIT']);
|
||||
|
||||
$error = ((function_exists($action ?? '')) ? $action() : '');
|
||||
if($configfile=='') $error .= "<br>'configfile' for this step is missing";
|
||||
|
||||
if($error=='') {
|
||||
// Convert Fields to Session
|
||||
foreach($_POST as $key=>$value)
|
||||
$_SESSION['setup'][$configfile][$key] = $value;
|
||||
if($step == 3)GenerateConfigFiles($output_folder);
|
||||
if($step == 3)CreateUserdata();
|
||||
if($step == 3)PostInstall();
|
||||
// execute Sql-Files
|
||||
$sql_prefix = "sql_";
|
||||
|
||||
foreach($_POST as $key=>$value) {
|
||||
if(strlen($key)>strlen($sql_prefix) && substr($key,0,strlen($sql_prefix))==$sql_prefix &&
|
||||
$_SESSION['setup'][$configfile][substr($key,strlen($sql_prefix), strlen($key)-strlen($sql_prefix))]!=''){
|
||||
unset($_SESSION['setup'][$configfile][$key]);
|
||||
if($value != '../../database/struktur.sql' && $value != '../../database/beispiel.sql')continue;
|
||||
|
||||
if(is_file($value)){
|
||||
if(is_file(__DIR__.'/../../conf/user.inc.php'))
|
||||
{
|
||||
$import = file_get_contents($value);
|
||||
|
||||
$import = preg_replace ("%/\*(.*)\*/%Us", '', $import);
|
||||
$import = preg_replace ("%^--(.*)\n%mU", '', $import);
|
||||
$import = preg_replace ("%^$\n%mU", '', $import);
|
||||
|
||||
$db= mysqli_connect($_SESSION['setup'][$configfile]['WFdbhost'],$_SESSION['setup'][$configfile]['WFdbuser'],$_SESSION['setup'][$configfile]['WFdbpass']);
|
||||
if($db)
|
||||
{
|
||||
if(mysqli_select_db($db,$_SESSION['setup'][$configfile]['WFdbname']))
|
||||
{
|
||||
mysqli_set_charset($db,"utf8");
|
||||
mysqli_query($db,"SET SESSION SQL_MODE :=''");
|
||||
//mysqli_real_escape_string($db,$import);
|
||||
|
||||
if($value == '../../database/struktur.sql')
|
||||
{
|
||||
// Clear target DB
|
||||
mysqli_query($db,'SET foreign_key_checks = 0');
|
||||
if ($result = mysqli_query($db,"SHOW TABLES"))
|
||||
{
|
||||
while($row = $result->fetch_array(MYSQLI_NUM))
|
||||
{
|
||||
mysqli_query($db,'DROP TABLE IF EXISTS '.$row[0]);
|
||||
}
|
||||
}
|
||||
mysqli_query($db,'SET foreign_key_checks = 1');
|
||||
}
|
||||
|
||||
|
||||
$import = explode (";\n", $import);
|
||||
|
||||
foreach ($import as $imp){
|
||||
if ($imp != '' && $imp != ' ' && trim($imp) != ''){
|
||||
mysqli_query($db,$imp);
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($_POST['BeispielTpl']) && $_POST['BeispielTpl'])
|
||||
mysqli_query($db, "INSERT INTO `user` (`id`, `username`, `password`, `repassword`, `description`, `settings`, `parentuser`, `activ`, `type`, `adresse`, `fehllogins`, `standarddrucker`, `firma`, `logdatei`, `startseite`, `hwtoken`, `hwkey`, `hwcounter`, `motppin`, `motpsecret`, `passwordmd5`, `externlogin`, `projekt_bevorzugen`, `email_bevorzugen`, `projekt`, `rfidtag`, `vorlage`, `kalender_passwort`, `kalender_ausblenden`, `kalender_aktiv`, `gpsstechuhr`, `standardetikett`, `standardfax`, `internebezeichnung`, `hwdatablock`) VALUES
|
||||
(3, 'demomitarbeiter', 'pllIX0pw7JU9c', 0, '', 'a:6:{s:16:\"pos_list_projekt\";s:1:\"0\";s:18:\"pos_list_kassierer\";s:1:\"0\";s:22:\"pos_list_kassierername\";s:1:\"0\";s:18:\"pos_list_lkadresse\";s:1:\"0\";s:18:\"lohnabrechnung_von\";s:0:\"\";s:18:\"lohnabrechnung_bis\";s:0:\"\";}', 0, 1, 'standard', 6, 0, 0, 1, '2015-10-26 16:01:23', '', 0, '', 0, '', '', '2ad71933e4b074c4671425c8e6b48021', 0, 0, 1, 0, '', '', '', 0, 0, 0, 0, 0, NULL, '');
|
||||
");
|
||||
$_SESSION['setup'][$value] = 1;
|
||||
}
|
||||
mysqli_close($db);
|
||||
}
|
||||
/*
|
||||
if(exec("mysql --user='{$_SESSION['setup'][$configfile]['WFdbuser']}' --password='{$_SESSION['setup'][$configfile]['WFdbpass']}' --host='{$_SESSION['setup'][$configfile]['WFdbhost']}' --database='{$_SESSION['setup'][$configfile]['WFdbname']}' < '$value'", $sql_out, $sql_status)==2)
|
||||
$error = "Konnte '$value' nicht ausführen";
|
||||
}else
|
||||
$error .= "Konnte '$value' nicht finden";
|
||||
*/
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// remove Readonly-Fields
|
||||
$ro_prefix = "ro_";
|
||||
foreach($_POST as $key=>$value) {
|
||||
if(strlen($key)>strlen($ro_prefix) && substr($key,0,strlen($ro_prefix))==$ro_prefix){
|
||||
unset($_SESSION['setup'][$configfile][substr($key,strlen($ro_prefix), strlen($key)-strlen($ro_prefix))]);
|
||||
unset($_SESSION['setup'][$configfile][$key]);
|
||||
}
|
||||
}
|
||||
|
||||
if($error=='') {
|
||||
header('Location: ./setup.php?step='.++$step);
|
||||
exit;
|
||||
}else
|
||||
$page = str_replace('[MESSAGE]', "<div class=\"inputerror\">$error</div>", $page);
|
||||
}else
|
||||
$page = str_replace('[MESSAGE]', "<div class=\"inputerror\">$error</div>", $page);
|
||||
}
|
||||
|
||||
$page = str_replace('[MESSAGE]','', $page);
|
||||
echo $page;
|
||||
|
||||
if($step == 5 && stepFehler(5))
|
||||
{
|
||||
@unlink(__DIR__ . '/setup.conf.php');
|
||||
@unlink(__DIR__ . '/setup-cli.php');
|
||||
@unlink(__DIR__ . '/setup.css');
|
||||
@unlink(__FILE__);
|
||||
@rmdir(__DIR__);
|
||||
}
|
||||
|
||||
function GenerateConfigFiles($output_folder)
|
||||
{
|
||||
if(!stepFehler(3)) {
|
||||
return false;
|
||||
}
|
||||
$fehler = true;
|
||||
foreach($_SESSION['setup'] as $file=>$vars) {
|
||||
$fehler = false;
|
||||
}
|
||||
foreach($_SESSION['setup'] as $file=>$vars) {
|
||||
if($file !== 'user.inc.php')
|
||||
{
|
||||
$fehler = true;
|
||||
continue;
|
||||
}
|
||||
if(!is_dir($output_folder))
|
||||
{
|
||||
$fehler = true;
|
||||
continue;
|
||||
}
|
||||
$out = "<?php\n";
|
||||
|
||||
$WFdbhost = '';
|
||||
$WFdbname = '';
|
||||
$WFdbpass = '';
|
||||
$WFdbuser = '';
|
||||
$WFuserdata = '';
|
||||
|
||||
foreach($vars as $key=>$value)
|
||||
{
|
||||
if(in_array($key, array('WFdbhost', 'WFdbname', 'WFdbuser','WFdbpass','WFuserdata'))) {
|
||||
$$key = $value;
|
||||
}
|
||||
}
|
||||
if($WFdbname == '' || $WFdbuser == '')
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$db= mysqli_connect($WFdbhost,$WFdbuser,$WFdbpass);
|
||||
if(!$db)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!mysqli_select_db($db,$WFdbname))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
foreach($vars as $key=>$value)
|
||||
{
|
||||
if(!in_array($key, array('WFdbhost', 'WFdbname', 'WFdbuser','WFdbpass','WFuserdata'))) {
|
||||
continue;
|
||||
}
|
||||
if($key === 'WFuserdata' && !is_dir($value))
|
||||
{
|
||||
$fehler = true;
|
||||
continue;
|
||||
}
|
||||
if(strpos($key, 'WF') !== false){
|
||||
if($value==='true' || $value==='false'){
|
||||
$out .= '$this->' . $key . '=' . $value . ';' . "\n";
|
||||
}
|
||||
else{
|
||||
$out .= '$this->' . $key . '=\'' . (str_replace('\'', '\\\'', str_replace('\\', '\\\\', $value))) . '\';' . "\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*$out2 = "<?php\n";
|
||||
$out2 .= " define('USEFPDF2',true);\r\n";
|
||||
$out2 .= "?>";
|
||||
if(!file_put_contents(dirname(__FILE__).'/../../conf/user_defined.php', $out2))$fehler = true;*/
|
||||
if(!file_put_contents($output_folder.$file, $out)) {
|
||||
$fehler = true;
|
||||
}
|
||||
}
|
||||
return !$fehler;
|
||||
}
|
||||
|
||||
function GenerateHtml($step, $setup)
|
||||
{
|
||||
if(!array_key_exists($step, $setup)) { return "<h2>Page doesnt exist</h2>"; }
|
||||
|
||||
$html = "";
|
||||
if(array_key_exists('description',$setup[$step])) $html .= "<h2>{$setup[$step]['description']}</h2>";
|
||||
if(array_key_exists('configfile',$setup[$step])) $html .= "<input type=\"hidden\" name=\"_CONFIGFILE\" value=\"{$setup[$step]['configfile']}\">";
|
||||
if(array_key_exists('action',$setup[$step])) $html .= "<input type=\"hidden\" name=\"_ACTION\" value=\"{$setup[$step]['action']}\">";
|
||||
|
||||
$fields = '';
|
||||
foreach($setup[$step]['fields'] as $key=>$value)
|
||||
{
|
||||
$name = $key;
|
||||
$text = ((array_key_exists('text',$value)) ? $value['text'] : $value);
|
||||
$type = ((array_key_exists('type',$value)) ? $value['type'] : "text");
|
||||
$note = ((array_key_exists('note',$value)) ? $value['note'] : "");
|
||||
$default = ((array_key_exists('default',$value)) ? $value['default'] : "");
|
||||
$options = ((array_key_exists('options',$value)) ? $value['options'] : array());
|
||||
$fvalue = ((array_key_exists('value',$value)) ? $value['value'] : "");
|
||||
$readonly = ((array_key_exists('readonly',$value)) ? $value['readonly'] : "");
|
||||
$sql = ((array_key_exists('sql',$value)) ? $value['sql'] : "");
|
||||
$invisible = ((array_key_exists('invisible',$value)) ? $value['invisible'] : "");
|
||||
|
||||
if($readonly!="") $ro = "<input type=\"hidden\" name=\"ro_$name\" value=\"$name\">";
|
||||
if($sql!="") $mysql = "<input type=\"hidden\" name=\"sql_$name\" value=\"$sql\">";
|
||||
|
||||
if($invisible=="")
|
||||
{
|
||||
if($type=='text'){
|
||||
$input = "<input type=\"text\" name=\"$name\" value=\"$default\" placeholder=\"$text\">";
|
||||
}
|
||||
if($type=='password'){
|
||||
$input = "<input type=\"password\" name=\"$name\" value=\"$default\" placeholder=\"$text\">";
|
||||
}
|
||||
|
||||
if($type=='checkbox'){
|
||||
$input = "<label><input type=\"checkbox\" name=\"$name\" value=\"$fvalue\"> $text</label>";
|
||||
}
|
||||
|
||||
if($type=='select') {
|
||||
$opt_out = '';
|
||||
foreach($options as $opt_value=>$opt_text){
|
||||
$selected = (($default!="" && $default==$opt_value) ? 'selected' : '');
|
||||
$opt_out .= "<option value=\"$opt_value\" $selected>$opt_text</option>";
|
||||
}
|
||||
$input = "<select name=\"$name\">$opt_out</select>";
|
||||
}
|
||||
$field = "<div class=\"row\"><div>{$input}{$ro}{$mysql}</div><div>$note</div></div>\n";
|
||||
}else
|
||||
$field = "<input type=\"hidden\" name=\"$name\" value=\"1\">{$ro}{$mysql}";
|
||||
|
||||
$fields .= $field;
|
||||
}
|
||||
$html .= "\n[MESSAGE]\n$fields\n[BUTTON]";
|
||||
|
||||
$page = HtmlTemplate($html, $step);
|
||||
|
||||
return $page;
|
||||
}
|
||||
|
||||
function HtmlTemplate($html)
|
||||
{
|
||||
global $step;
|
||||
|
||||
// CSS inline einbinden; ansonsten wird die letzte Seite nicht korrekt angezeigt
|
||||
// Auf der letzten Seite werden alle Dateien im setup-Order gelöscht.
|
||||
$cssContent = file_get_contents(__DIR__ . '/setup.css');
|
||||
|
||||
return
|
||||
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">
|
||||
<html><head>
|
||||
<style type=\"text/css\">{$cssContent}</style>
|
||||
<title>OpenXE Installer</title>
|
||||
</head><body class=\"slide-{$step}\"><div id=\"main\"><div class=\"header\"><h1 class=\"headline\">OpenXE Installer</h1></div><div class=\"content\"><form action=\"\" method=\"POST\">
|
||||
{$html}
|
||||
</form></div>
|
||||
<!--
|
||||
<div class=\"footer\"><p>Nutzen Sie unseren <a href=\"https://shop.xentral.biz/sonstige/1-jahr-zugang-updateserver-open-source-version.html?c=164?c=164\" target=\"_blank\">Update-Server</a> um auch mit der Open-Source Version mit Updates versorgt zu sein.</p></div>
|
||||
--!>
|
||||
<div class=\"footer\"><p>
|
||||
OpenXE is free open source software under AGPL/EGPL license, based on <a href=\"https://xentral.com\" target=\"_blank\">Xentral®</a> by Xentral ERP Software GmbH.</p></div>
|
||||
</div></body></html>";
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine under which linux user runs the webserver
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function DetermineWebserverUser()
|
||||
{
|
||||
$username = @getenv('USERNAME') ?: @getenv('USER');
|
||||
if ($username !== false && !empty($username)) {
|
||||
return $username;
|
||||
}
|
||||
$username = $_SERVER['USERNAME'] ?: $_SERVER['USER'];
|
||||
if (!empty($username)) {
|
||||
return $username;
|
||||
}
|
||||
$username = trim(@shell_exec('whoami'));
|
||||
if (!empty($username)) {
|
||||
return $username;
|
||||
}
|
||||
|
||||
return get_current_user(); // Eventuell falsch unter IIS
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine the full path of the php binary
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function DeterminePhpBinary()
|
||||
{
|
||||
if (!empty(PHP_BINDIR)) {
|
||||
return PHP_BINDIR . '/php';
|
||||
}
|
||||
$binary = trim(@shell_exec('which php'));
|
||||
if (!empty($binary)) {
|
||||
return $binary;
|
||||
}
|
||||
|
||||
return '/usr/bin/env php';
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine the full path of the installation directory; without trailing slash
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function DetermineInstallationDir()
|
||||
{
|
||||
$baseDir = null;
|
||||
if (!empty(__FILE__)) {
|
||||
$offset = strpos(__FILE__, '/www/setup/setup.php');
|
||||
if ($offset !== false) {
|
||||
$baseDir = substr_replace(__FILE__, '', $offset);
|
||||
}
|
||||
}
|
||||
if (!empty($baseDir)) {
|
||||
return $baseDir;
|
||||
}
|
||||
|
||||
if (!empty($_SERVER['SCRIPT_FILENAME'])) {
|
||||
$offset = strpos($_SERVER['SCRIPT_FILENAME'], '/www/setup/setup.php');
|
||||
if ($offset !== false) {
|
||||
$baseDir = substr_replace($_SERVER['SCRIPT_FILENAME'], '', $offset);
|
||||
}
|
||||
}
|
||||
|
||||
return $baseDir;
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
session_start();
|
||||
error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
|
||||
ini_set('display_errors', 1);
|
||||
$config_file = 'setup.conf.php';
|
||||
$output_folder = '../../conf/';
|
||||
|
||||
if(!is_file($config_file) ) { echo 'Config-File is missing'; return; }
|
||||
include_once($config_file);
|
||||
|
||||
#########################################################################
|
||||
$max_steps = count(array_filter($setup))+1;
|
||||
|
||||
$step = (($_GET['step']!='') ? $_GET['step'] : 1);
|
||||
$submit = $_POST['_SUBMIT'];
|
||||
|
||||
|
||||
$isSecure = false;
|
||||
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
|
||||
$isSecure = true;
|
||||
}
|
||||
elseif (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' || !empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on') {
|
||||
$isSecure = true;
|
||||
}
|
||||
$REQUEST_PROTOCOL = $isSecure ? 'https' : 'http';
|
||||
|
||||
//$weburl = $REQUEST_PROTOCOL."://".$_SERVER['SERVER_ADDR'].":".$_SERVER['SERVER_PORT'].str_replace('setup/setup.php?step=5','',$_SERVER['REQUEST_URI'])."index.php?module=welcome&action=cronjob";
|
||||
//$weburllink = $REQUEST_PROTOCOL."://".$_SERVER['SERVER_ADDR'].":".$_SERVER['SERVER_PORT'].str_replace('setup/setup.php?step=5','',$_SERVER['REQUEST_URI']);
|
||||
|
||||
if($_SERVER['SCRIPT_URI'] != '')
|
||||
{
|
||||
$weburl = str_replace(array('setup/setup.php?step=5','setup/setup.php'),array('',''),$_SERVER['SCRIPT_URI'])."index.php?module=welcome&action=cronjob";
|
||||
// $weburllink = str_replace(array('setup/setup.php?step=5','setup/setup.php'),array('',''),$_SERVER['SCRIPT_URI']);
|
||||
}elseif($_SERVER['REQUEST_URI'] != '' && $_SERVER['SERVER_ADDR']!='' && $_SERVER['SERVER_ADDR']!='::1' && strpos($_SERVER['SERVER_SOFTWARE'],"nginx")===false)
|
||||
{
|
||||
$weburl = (isset($_SERVER['SERVER_ADDR']) && $_SERVER['SERVER_ADDR']?$REQUEST_PROTOCOL."://".$_SERVER['SERVER_ADDR'].(isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] && $_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443?':'.$_SERVER['SERVER_PORT']:''):'').str_replace(array('setup/setup.php?step=5','setup/setup.php'),array('',''),$_SERVER['REQUEST_URI'])."index.php?module=welcome&action=cronjob";
|
||||
// $weburllink = (isset($_SERVER['SERVER_ADDR']) && $_SERVER['SERVER_ADDR']?$REQUEST_PROTOCOL."://".$_SERVER['SERVER_ADDR'].(isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] && $_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443?':'.$_SERVER['SERVER_PORT']:''):'').str_replace(array('setup/setup.php?step=5','setup/setup.php'),array('',''),$_SERVER['REQUEST_URI']);
|
||||
} elseif($_SERVER['SERVER_NAME']!="") //MAMP auf macos
|
||||
{
|
||||
$weburl = str_replace(array('setup/setup.php?step=5','setup/setup.php'),array('',''),$REQUEST_PROTOCOL."://".$_SERVER['SERVER_NAME'].":".$_SERVER['SERVER_PORT'].$_SERVER['REQUESR_URI'].$_SERVER['SCRIPT_NAME'])."index.php?module=welcome&action=cronjob";
|
||||
// $weburllink = str_replace(array('setup/setup.php?step=5','setup/setup.php'),array('',''),$REQUEST_PROTOCOL."://".$_SERVER['SERVER_NAME'].":".$_SERVER['SERVER_PORT'].$_SERVER['REQUESR_URI'].$_SERVER['SCRIPT_NAME']);
|
||||
}
|
||||
else{
|
||||
$weburl = '../index.php?module=welcome&action=cronjob';
|
||||
$weburllink = '../';
|
||||
}
|
||||
|
||||
$weburllink = '../';
|
||||
|
||||
if($step>=$max_steps){
|
||||
//GenerateConfigFiles($output_folder);
|
||||
//if($config['postinstall']) PostInstall();
|
||||
$webserverUser = DetermineWebserverUser();
|
||||
$phpBinary = DeterminePhpBinary();
|
||||
$baseDir = DetermineInstallationDir();
|
||||
$cronjobStarterPath = $baseDir . '/cronjobs/starter2.php';
|
||||
$cronjobLine = htmlspecialchars(sprintf('* * * * * %s %s > /dev/null 2>&1', $phpBinary, $cronjobStarterPath));
|
||||
|
||||
$page = HtmlTemplate(
|
||||
"<h2>Setup erfolgreich beendet!</h2>
|
||||
<p>Um den Prozessstarter nutzen zu können: Tragen Sie folgendes Script in ihrer crontab ein:</p>
|
||||
<pre style=\"font-size:9pt\">php {$cronjobStarterPath}</pre>
|
||||
<p>Am besten eignet sich ein Interval von einer Minute. Wichtig ist dass der Cronjob unter dem Benutzer des Webservers läuft.</p>
|
||||
<br>
|
||||
<div id=\"crontab\">
|
||||
<h3>Anleitung – Crontab einrichten</h3>
|
||||
<ol>
|
||||
<li>
|
||||
<p>Nachfolgendes Kommando ausführen:</p>
|
||||
<pre class=\"console\">sudo crontab -u {$webserverUser} -e</pre>
|
||||
</li>
|
||||
<li>
|
||||
<p>Anschließend öffnet sich ein Editor. Dort folgende Zeile einfügen und die Datei speichern:</p>
|
||||
<pre class=\"console\">{$cronjobLine}</pre>
|
||||
</li>
|
||||
<li>
|
||||
<p>Nach dem Verlassen des Editors sollte diese Ausgabe als Bestätigung erscheinen:</p>
|
||||
<pre class=\"console\">crontab: installing new crontab</pre>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
<br><br>
|
||||
<center>
|
||||
<a href=\"$weburllink\">Anmelden mit Benutzer: <i>admin</i> und Passwort: <i>admin</i></a>
|
||||
<br><br>
|
||||
Bitte nach der Installation das <a href=\"".$weburllink."index.php?module=upgrade\" target=\"_blank\">Datenbank-Upgrade</a> durchführen.</a>
|
||||
</center>
|
||||
");
|
||||
}else{
|
||||
$ok = true;
|
||||
if($step == 1)
|
||||
{
|
||||
$setup[$step]['description'] = stepMessage($step);
|
||||
$ok = stepFehler($step);
|
||||
}else $ok = stepFehler($step);
|
||||
$page = GenerateHtml($step, $setup);
|
||||
if($ok){$page = str_replace('[BUTTON]', (($step<=$max_steps)?"<input type=\"submit\" name=\"_SUBMIT\" value=\"Weiter\" class=\"btn\">":""), $page);}else{$page = str_replace('[BUTTON]','',$page);}
|
||||
}
|
||||
if($submit!='') {
|
||||
$configfile = $_POST['_CONFIGFILE'];
|
||||
$action = $_POST['_ACTION'];
|
||||
unset($_POST['_CONFIGFILE']);
|
||||
unset($_POST['_ACTION']);
|
||||
unset($_POST['_SUBMIT']);
|
||||
|
||||
$error = ((function_exists($action ?? '')) ? $action() : '');
|
||||
if($configfile=='') $error .= "<br>'configfile' for this step is missing";
|
||||
|
||||
if($error=='') {
|
||||
// Convert Fields to Session
|
||||
foreach($_POST as $key=>$value)
|
||||
$_SESSION['setup'][$configfile][$key] = $value;
|
||||
if($step == 3)GenerateConfigFiles($output_folder);
|
||||
if($step == 3)CreateUserdata();
|
||||
if($step == 3)PostInstall();
|
||||
// execute Sql-Files
|
||||
$sql_prefix = "sql_";
|
||||
|
||||
foreach($_POST as $key=>$value) {
|
||||
if(strlen($key)>strlen($sql_prefix) && substr($key,0,strlen($sql_prefix))==$sql_prefix &&
|
||||
$_SESSION['setup'][$configfile][substr($key,strlen($sql_prefix), strlen($key)-strlen($sql_prefix))]!=''){
|
||||
unset($_SESSION['setup'][$configfile][$key]);
|
||||
if($value != '../../database/struktur.sql' && $value != '../../database/beispiel.sql')continue;
|
||||
|
||||
if(is_file($value)){
|
||||
if(is_file(__DIR__.'/../../conf/user.inc.php'))
|
||||
{
|
||||
$import = file_get_contents($value);
|
||||
|
||||
$import = preg_replace ("%/\*(.*)\*/%Us", '', $import);
|
||||
$import = preg_replace ("%^--(.*)\n%mU", '', $import);
|
||||
$import = preg_replace ("%^$\n%mU", '', $import);
|
||||
|
||||
$db= mysqli_connect($_SESSION['setup'][$configfile]['WFdbhost'],$_SESSION['setup'][$configfile]['WFdbuser'],$_SESSION['setup'][$configfile]['WFdbpass']);
|
||||
if($db)
|
||||
{
|
||||
if(mysqli_select_db($db,$_SESSION['setup'][$configfile]['WFdbname']))
|
||||
{
|
||||
mysqli_set_charset($db,"utf8");
|
||||
mysqli_query($db,"SET SESSION SQL_MODE :=''");
|
||||
//mysqli_real_escape_string($db,$import);
|
||||
|
||||
if($value == '../../database/struktur.sql')
|
||||
{
|
||||
// Clear target DB
|
||||
mysqli_query($db,'SET foreign_key_checks = 0');
|
||||
if ($result = mysqli_query($db,"SHOW TABLES"))
|
||||
{
|
||||
while($row = $result->fetch_array(MYSQLI_NUM))
|
||||
{
|
||||
mysqli_query($db,'DROP TABLE IF EXISTS '.$row[0]);
|
||||
}
|
||||
}
|
||||
mysqli_query($db,'SET foreign_key_checks = 1');
|
||||
}
|
||||
|
||||
|
||||
$import = explode (";\n", $import);
|
||||
|
||||
foreach ($import as $imp){
|
||||
if ($imp != '' && $imp != ' ' && trim($imp) != ''){
|
||||
mysqli_query($db,$imp);
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($_POST['BeispielTpl']) && $_POST['BeispielTpl'])
|
||||
mysqli_query($db, "INSERT INTO `user` (`id`, `username`, `password`, `repassword`, `description`, `settings`, `parentuser`, `activ`, `type`, `adresse`, `fehllogins`, `standarddrucker`, `firma`, `logdatei`, `startseite`, `hwtoken`, `hwkey`, `hwcounter`, `motppin`, `motpsecret`, `passwordmd5`, `externlogin`, `projekt_bevorzugen`, `email_bevorzugen`, `projekt`, `rfidtag`, `vorlage`, `kalender_passwort`, `kalender_ausblenden`, `kalender_aktiv`, `gpsstechuhr`, `standardetikett`, `standardfax`, `internebezeichnung`, `hwdatablock`) VALUES
|
||||
(3, 'demomitarbeiter', 'pllIX0pw7JU9c', 0, '', 'a:6:{s:16:\"pos_list_projekt\";s:1:\"0\";s:18:\"pos_list_kassierer\";s:1:\"0\";s:22:\"pos_list_kassierername\";s:1:\"0\";s:18:\"pos_list_lkadresse\";s:1:\"0\";s:18:\"lohnabrechnung_von\";s:0:\"\";s:18:\"lohnabrechnung_bis\";s:0:\"\";}', 0, 1, 'standard', 6, 0, 0, 1, '2015-10-26 16:01:23', '', 0, '', 0, '', '', '2ad71933e4b074c4671425c8e6b48021', 0, 0, 1, 0, '', '', '', 0, 0, 0, 0, 0, NULL, '');
|
||||
");
|
||||
$_SESSION['setup'][$value] = 1;
|
||||
}
|
||||
mysqli_close($db);
|
||||
}
|
||||
/*
|
||||
if(exec("mysql --user='{$_SESSION['setup'][$configfile]['WFdbuser']}' --password='{$_SESSION['setup'][$configfile]['WFdbpass']}' --host='{$_SESSION['setup'][$configfile]['WFdbhost']}' --database='{$_SESSION['setup'][$configfile]['WFdbname']}' < '$value'", $sql_out, $sql_status)==2)
|
||||
$error = "Konnte '$value' nicht ausführen";
|
||||
}else
|
||||
$error .= "Konnte '$value' nicht finden";
|
||||
*/
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// remove Readonly-Fields
|
||||
$ro_prefix = "ro_";
|
||||
foreach($_POST as $key=>$value) {
|
||||
if(strlen($key)>strlen($ro_prefix) && substr($key,0,strlen($ro_prefix))==$ro_prefix){
|
||||
unset($_SESSION['setup'][$configfile][substr($key,strlen($ro_prefix), strlen($key)-strlen($ro_prefix))]);
|
||||
unset($_SESSION['setup'][$configfile][$key]);
|
||||
}
|
||||
}
|
||||
|
||||
if($error=='') {
|
||||
header('Location: ./setup.php?step='.++$step);
|
||||
exit;
|
||||
}else
|
||||
$page = str_replace('[MESSAGE]', "<div class=\"inputerror\">$error</div>", $page);
|
||||
}else
|
||||
$page = str_replace('[MESSAGE]', "<div class=\"inputerror\">$error</div>", $page);
|
||||
}
|
||||
|
||||
$page = str_replace('[MESSAGE]','', $page);
|
||||
echo $page;
|
||||
|
||||
if($step == 5 && stepFehler(5))
|
||||
{
|
||||
@unlink(__DIR__ . '/setup.conf.php');
|
||||
@unlink(__DIR__ . '/setup-cli.php');
|
||||
@unlink(__DIR__ . '/setup.css');
|
||||
@unlink(__FILE__);
|
||||
@rmdir(__DIR__);
|
||||
}
|
||||
|
||||
function GenerateConfigFiles($output_folder)
|
||||
{
|
||||
if(!stepFehler(3)) {
|
||||
return false;
|
||||
}
|
||||
$fehler = true;
|
||||
foreach($_SESSION['setup'] as $file=>$vars) {
|
||||
$fehler = false;
|
||||
}
|
||||
foreach($_SESSION['setup'] as $file=>$vars) {
|
||||
if($file !== 'user.inc.php')
|
||||
{
|
||||
$fehler = true;
|
||||
continue;
|
||||
}
|
||||
if(!is_dir($output_folder))
|
||||
{
|
||||
$fehler = true;
|
||||
continue;
|
||||
}
|
||||
$out = "<?php\n";
|
||||
|
||||
$WFdbhost = '';
|
||||
$WFdbname = '';
|
||||
$WFdbpass = '';
|
||||
$WFdbuser = '';
|
||||
$WFuserdata = '';
|
||||
|
||||
foreach($vars as $key=>$value)
|
||||
{
|
||||
if(in_array($key, array('WFdbhost', 'WFdbname', 'WFdbuser','WFdbpass','WFuserdata'))) {
|
||||
$$key = $value;
|
||||
}
|
||||
}
|
||||
if($WFdbname == '' || $WFdbuser == '')
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$db= mysqli_connect($WFdbhost,$WFdbuser,$WFdbpass);
|
||||
if(!$db)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!mysqli_select_db($db,$WFdbname))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
foreach($vars as $key=>$value)
|
||||
{
|
||||
if(!in_array($key, array('WFdbhost', 'WFdbname', 'WFdbuser','WFdbpass','WFuserdata'))) {
|
||||
continue;
|
||||
}
|
||||
if($key === 'WFuserdata' && !is_dir($value))
|
||||
{
|
||||
$fehler = true;
|
||||
continue;
|
||||
}
|
||||
if(strpos($key, 'WF') !== false){
|
||||
if($value==='true' || $value==='false'){
|
||||
$out .= '$this->' . $key . '=' . $value . ';' . "\n";
|
||||
}
|
||||
else{
|
||||
$out .= '$this->' . $key . '=\'' . (str_replace('\'', '\\\'', str_replace('\\', '\\\\', $value))) . '\';' . "\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*$out2 = "<?php\n";
|
||||
$out2 .= " define('USEFPDF2',true);\r\n";
|
||||
$out2 .= "?>";
|
||||
if(!file_put_contents(dirname(__FILE__).'/../../conf/user_defined.php', $out2))$fehler = true;*/
|
||||
if(!file_put_contents($output_folder.$file, $out)) {
|
||||
$fehler = true;
|
||||
}
|
||||
}
|
||||
return !$fehler;
|
||||
}
|
||||
|
||||
function GenerateHtml($step, $setup)
|
||||
{
|
||||
if(!array_key_exists($step, $setup)) { return "<h2>Page doesnt exist</h2>"; }
|
||||
|
||||
$html = "";
|
||||
if(array_key_exists('description',$setup[$step])) $html .= "<h2>{$setup[$step]['description']}</h2>";
|
||||
if(array_key_exists('configfile',$setup[$step])) $html .= "<input type=\"hidden\" name=\"_CONFIGFILE\" value=\"{$setup[$step]['configfile']}\">";
|
||||
if(array_key_exists('action',$setup[$step])) $html .= "<input type=\"hidden\" name=\"_ACTION\" value=\"{$setup[$step]['action']}\">";
|
||||
|
||||
$fields = '';
|
||||
foreach($setup[$step]['fields'] as $key=>$value)
|
||||
{
|
||||
$name = $key;
|
||||
$text = ((array_key_exists('text',$value)) ? $value['text'] : $value);
|
||||
$type = ((array_key_exists('type',$value)) ? $value['type'] : "text");
|
||||
$note = ((array_key_exists('note',$value)) ? $value['note'] : "");
|
||||
$default = ((array_key_exists('default',$value)) ? $value['default'] : "");
|
||||
$options = ((array_key_exists('options',$value)) ? $value['options'] : array());
|
||||
$fvalue = ((array_key_exists('value',$value)) ? $value['value'] : "");
|
||||
$readonly = ((array_key_exists('readonly',$value)) ? $value['readonly'] : "");
|
||||
$sql = ((array_key_exists('sql',$value)) ? $value['sql'] : "");
|
||||
$invisible = ((array_key_exists('invisible',$value)) ? $value['invisible'] : "");
|
||||
|
||||
if($readonly!="") $ro = "<input type=\"hidden\" name=\"ro_$name\" value=\"$name\">";
|
||||
if($sql!="") $mysql = "<input type=\"hidden\" name=\"sql_$name\" value=\"$sql\">";
|
||||
|
||||
if($invisible=="")
|
||||
{
|
||||
if($type=='text'){
|
||||
$input = "<input type=\"text\" name=\"$name\" value=\"$default\" placeholder=\"$text\">";
|
||||
}
|
||||
if($type=='password'){
|
||||
$input = "<input type=\"password\" name=\"$name\" value=\"$default\" placeholder=\"$text\">";
|
||||
}
|
||||
|
||||
if($type=='checkbox'){
|
||||
$input = "<label><input type=\"checkbox\" name=\"$name\" value=\"$fvalue\"> $text</label>";
|
||||
}
|
||||
|
||||
if($type=='select') {
|
||||
$opt_out = '';
|
||||
foreach($options as $opt_value=>$opt_text){
|
||||
$selected = (($default!="" && $default==$opt_value) ? 'selected' : '');
|
||||
$opt_out .= "<option value=\"$opt_value\" $selected>$opt_text</option>";
|
||||
}
|
||||
$input = "<select name=\"$name\">$opt_out</select>";
|
||||
}
|
||||
$field = "<div class=\"row\"><div>{$input}{$ro}{$mysql}</div><div>$note</div></div>\n";
|
||||
}else
|
||||
$field = "<input type=\"hidden\" name=\"$name\" value=\"1\">{$ro}{$mysql}";
|
||||
|
||||
$fields .= $field;
|
||||
}
|
||||
$html .= "\n[MESSAGE]\n$fields\n[BUTTON]";
|
||||
|
||||
$page = HtmlTemplate($html, $step);
|
||||
|
||||
return $page;
|
||||
}
|
||||
|
||||
function HtmlTemplate($html)
|
||||
{
|
||||
global $step;
|
||||
|
||||
// CSS inline einbinden; ansonsten wird die letzte Seite nicht korrekt angezeigt
|
||||
// Auf der letzten Seite werden alle Dateien im setup-Order gelöscht.
|
||||
$cssContent = file_get_contents(__DIR__ . '/setup.css');
|
||||
|
||||
return
|
||||
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">
|
||||
<html><head>
|
||||
<style type=\"text/css\">{$cssContent}</style>
|
||||
<title>DBXE Installer</title>
|
||||
</head><body class=\"slide-{$step}\"><div id=\"main\"><div class=\"header\"><h1 class=\"headline\">DB Installer</h1></div><div class=\"content\"><form action=\"\" method=\"POST\">
|
||||
{$html}
|
||||
</form></div>
|
||||
<!--
|
||||
<div class=\"footer\"><p>Nutzen Sie unseren <a href=\"https://shop.xentral.biz/sonstige/1-jahr-zugang-updateserver-open-source-version.html?c=164?c=164\" target=\"_blank\">Update-Server</a> um auch mit der Open-Source Version mit Updates versorgt zu sein.</p></div>
|
||||
--!>
|
||||
<div class=\"footer\"><p>
|
||||
DBXE is free open source software under AGPL/EGPL license, based on OpenXE, <a href=\"https://xentral.com\" target=\"_blank\">Xentral®</a> by Xentral ERP Software GmbH.</p></div>
|
||||
</div></body></html>";
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine under which linux user runs the webserver
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function DetermineWebserverUser()
|
||||
{
|
||||
$username = @getenv('USERNAME') ?: @getenv('USER');
|
||||
if ($username !== false && !empty($username)) {
|
||||
return $username;
|
||||
}
|
||||
$username = $_SERVER['USERNAME'] ?: $_SERVER['USER'];
|
||||
if (!empty($username)) {
|
||||
return $username;
|
||||
}
|
||||
$username = trim(@shell_exec('whoami'));
|
||||
if (!empty($username)) {
|
||||
return $username;
|
||||
}
|
||||
|
||||
return get_current_user(); // Eventuell falsch unter IIS
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine the full path of the php binary
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function DeterminePhpBinary()
|
||||
{
|
||||
if (!empty(PHP_BINDIR)) {
|
||||
return PHP_BINDIR . '/php';
|
||||
}
|
||||
$binary = trim(@shell_exec('which php'));
|
||||
if (!empty($binary)) {
|
||||
return $binary;
|
||||
}
|
||||
|
||||
return '/usr/bin/env php';
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine the full path of the installation directory; without trailing slash
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function DetermineInstallationDir()
|
||||
{
|
||||
$baseDir = null;
|
||||
if (!empty(__FILE__)) {
|
||||
$offset = strpos(__FILE__, '/www/setup/setup.php');
|
||||
if ($offset !== false) {
|
||||
$baseDir = substr_replace(__FILE__, '', $offset);
|
||||
}
|
||||
}
|
||||
if (!empty($baseDir)) {
|
||||
return $baseDir;
|
||||
}
|
||||
|
||||
if (!empty($_SERVER['SCRIPT_FILENAME'])) {
|
||||
$offset = strpos($_SERVER['SCRIPT_FILENAME'], '/www/setup/setup.php');
|
||||
if ($offset !== false) {
|
||||
$baseDir = substr_replace($_SERVER['SCRIPT_FILENAME'], '', $offset);
|
||||
}
|
||||
}
|
||||
|
||||
return $baseDir;
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 7.4 KiB |
|
After Width: | Height: | Size: 7.7 KiB |
|
After Width: | Height: | Size: 7.8 KiB |
|
After Width: | Height: | Size: 8.7 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 1015 B |
|
Before Width: | Height: | Size: 358 KiB After Width: | Height: | Size: 545 KiB |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 21 KiB |
|
|
@ -0,0 +1,92 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xml:space="preserve"
|
||||
style="enable-background:new 0 0 1440 1024;"
|
||||
viewBox="0 0 300 104"
|
||||
y="0px"
|
||||
x="0px"
|
||||
id="Layer_1"
|
||||
version="1.1"><metadata
|
||||
id="metadata35"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
|
||||
id="defs33" />
|
||||
<style
|
||||
id="style2"
|
||||
type="text/css">
|
||||
.st0{fill:#008AC2;}
|
||||
.st1{fill:#6E6F72;}
|
||||
</style>
|
||||
<g
|
||||
transform="matrix(0.5179558,0,0,0.5179558,-222.92818,-213.2424)"
|
||||
id="g28">
|
||||
<polygon
|
||||
style="fill:#008ac2"
|
||||
id="polygon4"
|
||||
points="466.7,527.6 501.7,492.6 430.4,456.6 430.4,544.8 466.7,560.4 "
|
||||
class="st0" />
|
||||
<polygon
|
||||
style="fill:#008ac2"
|
||||
id="polygon6"
|
||||
points="584.2,450.5 509.6,411.7 435,450.5 509.1,486.3 "
|
||||
class="st0" />
|
||||
<polygon
|
||||
style="fill:#008ac2"
|
||||
id="polygon8"
|
||||
points="472.3,531.2 472.3,612.3 506,575.5 506,495.4 "
|
||||
class="st0" />
|
||||
<path
|
||||
style="fill:#6e6f72"
|
||||
id="path10"
|
||||
d="m 567.1,483.3 c -30.8,0 -45.8,23.5 -45.8,46.9 0,23.4 14.5,45.9 45.8,45.9 31.3,0 45.4,-23 45.6,-46 0.3,-23.3 -14.9,-46.8 -45.6,-46.8 z m 0,77.4 c -21,0 -28.9,-15.6 -29.2,-30.3 -0.4,-15 8.3,-31.9 29.2,-31.9 21,0 29.4,16.8 29.1,31.8 -0.2,14.6 -8.1,30.4 -29.1,30.4 z"
|
||||
class="st1" />
|
||||
<path
|
||||
style="fill:#6e6f72"
|
||||
id="path12"
|
||||
d="m 659.8,510.7 c -7.1,0 -15.5,3.1 -20.3,10 l -1,-10 H 624 V 601 h 15.5 v -33.6 c 4.4,6.9 14.2,8.9 20.8,8.9 20.1,0 31.6,-14.5 31.6,-32.8 0,-18.4 -12.8,-32.8 -32.1,-32.8 z m -1.2,50.6 c -10.5,0 -17.8,-8 -17.8,-17.8 0,-9.8 6.6,-17.8 17.8,-17.8 11.2,0 17.8,8 17.8,17.8 0,9.8 -7.2,17.8 -17.8,17.8 z"
|
||||
class="st1" />
|
||||
<path
|
||||
style="fill:#6e6f72"
|
||||
id="path14"
|
||||
d="m 733.8,510.7 c -20.3,0 -33.3,13.6 -33.3,32.4 0,19.9 12.8,33 34.4,33 9.5,0 20.3,-3.3 26.9,-10.1 l -9.9,-9.7 c -3.6,3.6 -11.1,5.8 -16.8,5.8 -10.9,0 -17.7,-5.5 -18.7,-13.2 h 48.9 c 2.5,-25.3 -10.6,-38.2 -31.5,-38.2 z m -17.1,25.7 c 2.3,-8 9.2,-12.1 17.5,-12.1 8.9,0 15.3,4 16.3,12.1 z"
|
||||
class="st1" />
|
||||
<path
|
||||
style="fill:#6e6f72"
|
||||
id="path16"
|
||||
d="m 812.4,510.7 c -7.9,0 -14.2,3.2 -20.6,9.6 l -1,-9.6 H 777 v 65.1 h 15.4 v -32.7 c 0,-9.7 6.5,-17.9 16,-17.9 9.9,0 15.1,7.4 15.1,17.1 v 33.5 H 839 v -33.6 c 0,-20.2 -11.8,-31.5 -26.6,-31.5 z"
|
||||
class="st1" />
|
||||
<path
|
||||
style="fill:#008ac2"
|
||||
id="path18"
|
||||
d="m 1009.6,500.3 v -17 H 943 c 0,30.9 0,62 0,92.9 h 66.6 v -17.3 h -50 v -21 h 48.2 v -16.3 h -48.2 v -21.4 h 50 z"
|
||||
class="st0" />
|
||||
<polygon
|
||||
style="fill:#008ac2"
|
||||
id="polygon20"
|
||||
points="911.7,576.1 931,576.2 931,574.5 909.1,541 897.9,554.7 911.7,576.1 "
|
||||
class="st0" />
|
||||
<rect
|
||||
style="fill:#008ac2"
|
||||
id="rect22"
|
||||
height="0"
|
||||
width="0"
|
||||
class="st0"
|
||||
y="485.10001"
|
||||
x="932.40002" />
|
||||
<polygon
|
||||
style="fill:#008ac2"
|
||||
id="polygon24"
|
||||
points="912.1,483.3 900.2,501.4 901.3,503.1 902.9,505.4 909.4,515.4 931,484.5 931,483.3 914,483.3 912.1,483.3 "
|
||||
class="st0" />
|
||||
<polygon
|
||||
style="fill:#008ac2"
|
||||
id="polygon26"
|
||||
points="871.5,483.3 871.4,483.3 851.9,483.3 851.9,484.6 866.5,506.9 881,529.2 881,529.2 881.1,529.2 881,529.3 851.9,573.5 851.9,573.5 851.9,576.2 868.9,576.2 869,576.2 872.6,571 887.4,548.5 890.5,543.7 900.7,528.2 900.7,528.1 891.6,514.1 891.3,513.7 "
|
||||
class="st0" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.5 KiB |
|
|
@ -1,51 +1,51 @@
|
|||
<!doctype html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>OpenXE - Login</title>
|
||||
<link id="shortcuticon" rel="shortcut icon" href="./themes/new/images/favicon/favicon.ico" type="image/x-icon">
|
||||
<link id="favicon" rel="icon" href="./themes/new/images/favicon/favicon.ico" type="image/x-icon">
|
||||
<link rel="icon" type="image/png" href="./themes/new/images/favicon/favicon-16x16.png" sizes="16x16">
|
||||
<link rel="icon" type="image/png" href="./themes/new/images/favicon/favicon-32x32.png" sizes="32x32">
|
||||
<script type="text/javascript" src="./js/jquery/jquery-3.5.0.min.js"></script>
|
||||
<script type="text/javascript" src="[JQUERYMIGRATESRC]"></script>
|
||||
<script src="themes/new/js/scripts_login.js"></script>
|
||||
<link rel="stylesheet" href="themes/new/css/normalize.min.css?v=5">
|
||||
<link rel="stylesheet" href="themes/new/css/login_styles.css?v=3">
|
||||
<link rel="stylesheet" href="themes/new/css/custom.css?v=3">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="login-container">
|
||||
<div id="login-slider-wrapper">
|
||||
<div id="login-slider">
|
||||
[LOGINSLIDER]
|
||||
</div>
|
||||
</div>
|
||||
<div id="login-wrapper">
|
||||
|
||||
<img src="[TPLLOGOFIRMA]" heigth="72">
|
||||
</img>
|
||||
|
||||
<div class="intro">
|
||||
Willkommen bei OpenXE ERP.<br/>
|
||||
Bitte gib Deinen Benutzernamen und Passwort ein!
|
||||
</div>
|
||||
<div [LOGINWARNING_VISIBLE] class="warning"><p>[LOGINWARNING_TEXT]</p></div>
|
||||
|
||||
[SPERRMELDUNGNACHRICHT]
|
||||
[PAGE]
|
||||
<div id="login-footer">
|
||||
<div class="copyright">
|
||||
© [YEAR] by OpenXE-org & Xentral ERP Software GmbH.<br>
|
||||
OpenXE is free open source software under AGPL/EGPL license, based on <a href="https://xentral.com" target="_blank">Xentral®</a>.<br>
|
||||
<a href="https://github.com/OpenXE-org/OpenXE/commits/master">[XENTRALVERSION]</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
<!doctype html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>DBXE - Login</title>
|
||||
<link id="shortcuticon" rel="shortcut icon" href="./themes/new/images/favicon/favicon.ico" type="image/x-icon">
|
||||
<link id="favicon" rel="icon" href="./themes/new/images/favicon/favicon.ico" type="image/x-icon">
|
||||
<link rel="icon" type="image/png" href="./themes/new/images/favicon/favicon-16x16.png" sizes="16x16">
|
||||
<link rel="icon" type="image/png" href="./themes/new/images/favicon/favicon-32x32.png" sizes="32x32">
|
||||
<script type="text/javascript" src="./js/jquery/jquery-3.5.0.min.js"></script>
|
||||
<script type="text/javascript" src="[JQUERYMIGRATESRC]"></script>
|
||||
<script src="themes/new/js/scripts_login.js"></script>
|
||||
<link rel="stylesheet" href="themes/new/css/normalize.min.css?v=5">
|
||||
<link rel="stylesheet" href="themes/new/css/login_styles.css?v=3">
|
||||
<link rel="stylesheet" href="themes/new/css/custom.css?v=3">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="login-container">
|
||||
<div id="login-slider-wrapper">
|
||||
<div id="login-slider">
|
||||
[LOGINSLIDER]
|
||||
</div>
|
||||
</div>
|
||||
<div id="login-wrapper">
|
||||
|
||||
<img src="[TPLLOGOFIRMA]" heigth="72">
|
||||
</img>
|
||||
|
||||
<div class="intro">
|
||||
Willkommen beim ERP von <b>[FIRMENNAME] </b><br/>
|
||||
Bitte gib Deinen Benutzernamen und Passwort ein!
|
||||
</div>
|
||||
<div [LOGINWARNING_VISIBLE] class="warning"><p>[LOGINWARNING_TEXT]</p></div>
|
||||
|
||||
[SPERRMELDUNGNACHRICHT]
|
||||
[PAGE]
|
||||
<div id="login-footer">
|
||||
<div class="copyright">
|
||||
© [YEAR] by DBXE & OpenXE-org & Xentral ERP Software GmbH.<br>
|
||||
DBXE is a OS software under AGPL/EGPL license, based on Xentral® and OpenXE.<br>
|
||||
<a href="https://repo.dbxe.de/dbxe/DBXE/commits/branch/master">[XENTRALVERSION]</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -1,34 +1,34 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'self';">
|
||||
<title>OpenXE - Passwort vergessen</title>
|
||||
<link id="shortcuticon" rel="shortcut icon" href="./themes/new/images/favicon/favicon.ico" type="image/x-icon">
|
||||
<link id="favicon" rel="icon" href="./themes/new/images/favicon/favicon.ico" type="image/x-icon">
|
||||
<link rel="icon" type="image/png" href="./themes/new/images/favicon/favicon-16x16.png" sizes="16x16">
|
||||
<link rel="icon" type="image/png" href="./themes/new/images/favicon/favicon-32x32.png" sizes="32x32">
|
||||
<script type="text/javascript" src="./js/jquery/jquery-3.5.0.min.js"></script>
|
||||
<script type="text/javascript" src="[JQUERYMIGRATESRC]"></script>
|
||||
<link rel="stylesheet" href="./themes/[THEME]/css/login.css?v=2">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="login-wrapper">
|
||||
<div class="loginbox">
|
||||
|
||||
<img id="logo" src="themes/new/images/openxe_logo.svg" width="100%">
|
||||
</img>
|
||||
|
||||
|
||||
[SPERRMELDUNGNACHRICHT]
|
||||
[PAGE]
|
||||
|
||||
<div class="copyright">
|
||||
© [YEAR] OpenXE-org & Xentral ERP Software GmbH
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'self';">
|
||||
<title>DBXE - Passwort vergessen</title>
|
||||
<link id="shortcuticon" rel="shortcut icon" href="./themes/new/images/favicon/favicon.ico" type="image/x-icon">
|
||||
<link id="favicon" rel="icon" href="./themes/new/images/favicon/favicon.ico" type="image/x-icon">
|
||||
<link rel="icon" type="image/png" href="./themes/new/images/favicon/favicon-16x16.png" sizes="16x16">
|
||||
<link rel="icon" type="image/png" href="./themes/new/images/favicon/favicon-32x32.png" sizes="32x32">
|
||||
<script type="text/javascript" src="./js/jquery/jquery-3.5.0.min.js"></script>
|
||||
<script type="text/javascript" src="[JQUERYMIGRATESRC]"></script>
|
||||
<link rel="stylesheet" href="./themes/[THEME]/css/login.css?v=2">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="login-wrapper">
|
||||
<div class="loginbox">
|
||||
|
||||
<img id="logo" src="themes/new/images/openxe_logo.svg" width="100%">
|
||||
</img>
|
||||
|
||||
|
||||
[SPERRMELDUNGNACHRICHT]
|
||||
[PAGE]
|
||||
|
||||
<div class="copyright">
|
||||
© [YEAR] DBXE & OpenXE-org & Xentral ERP Software GmbH
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -1,18 +1,19 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'self';">
|
||||
<title>OpenXE Login</title>
|
||||
<link rel="stylesheet" href="themes/new/css/login.css?v=2">
|
||||
</head>
|
||||
<body>
|
||||
<div class="permission-box">
|
||||
<h1>OpenXE Login</h1>
|
||||
<p class="error">Sie haben nicht das Recht auf diese Seite zugreifen zu dürfen!</p>
|
||||
<p><a href="BACK" class="btn btn-primary">Zurück zur vorherigen Seite</a></p>
|
||||
<p><a href="index.php?module=welcome&action=logout" class="btn btn-secondary">Erneut einloggen</a></p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'self';">
|
||||
<title>OpenXE Login</title>
|
||||
<link rel="stylesheet" href="themes/new/css/login.css?v=2">
|
||||
</head>
|
||||
<body>
|
||||
<div class="permission-box">
|
||||
<h1>DBXE Login</h1>
|
||||
<p class="error">Sie haben nicht das Recht auf diese Seite zugreifen zu dürfen!</p>
|
||||
<p><a href="BACK" class="btn btn-primary">Zurück zur vorherigen Seite</a></p>
|
||||
<p><a href="index.php?module=welcome&action=logout" class="btn btn-secondary">Erneut einloggen</a></p>
|
||||
<p>Sie benötigen diesen Zugriff? Bitten Sie um Freigabe unter zugriff@dbxe.de</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
</svg>
|
||||
</div>
|
||||
|
||||
<a class="logo-index" href="index.php" title="OpenXE">
|
||||
<a class="logo-index" href="index.php" title="DBXE">
|
||||
[SIDEBARLOGO]
|
||||
</a>
|
||||
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 12 KiB |
|
|
@ -0,0 +1,93 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xml:space="preserve"
|
||||
style="enable-background:new 0 0 1440 1024;"
|
||||
viewBox="0 0 410 104"
|
||||
height="26"
|
||||
width="115"
|
||||
y="0px"
|
||||
x="0px"
|
||||
id="Layer_1"
|
||||
version="1.1"
|
||||
sodipodi:docname="sidebar_logo.svg"
|
||||
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"><sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="9.1565217"
|
||||
inkscape:cx="57.5"
|
||||
inkscape:cy="13.050807"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="1912"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g28" /><metadata
|
||||
id="metadata35"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
|
||||
id="defs33" />
|
||||
<style
|
||||
id="style2"
|
||||
type="text/css">
|
||||
.st0{fill:#ffffff;}
|
||||
.st1{fill:#fffffE;}
|
||||
</style>
|
||||
<g
|
||||
transform="matrix(0.5179558,0,0,0.5179558,-222.92818,-213.2424)"
|
||||
id="g28">
|
||||
<polygon
|
||||
style="fill:#ffffff"
|
||||
id="polygon4"
|
||||
points="466.7,527.6 501.7,492.6 430.4,456.6 430.4,544.8 466.7,560.4 "
|
||||
class="st0" />
|
||||
<polygon
|
||||
style="fill:#ffffff"
|
||||
id="polygon6"
|
||||
points="584.2,450.5 509.6,411.7 435,450.5 509.1,486.3 "
|
||||
class="st0" />
|
||||
<polygon
|
||||
style="fill:#ffffff"
|
||||
id="polygon8"
|
||||
points="472.3,531.2 472.3,612.3 506,575.5 506,495.4 "
|
||||
class="st0" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<rect
|
||||
style="fill:#ffffff"
|
||||
id="rect22"
|
||||
height="0"
|
||||
width="0"
|
||||
class="st0"
|
||||
y="485.10001"
|
||||
x="932.40002" />
|
||||
|
||||
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:500;font-size:123.563px;line-height:1.5;font-family:'AG Book Pro';-inkscape-font-specification:'AG Book Pro Medium';fill:#e20020;stroke-width:46.3214;stroke-linecap:round;stroke-linejoin:round"
|
||||
x="527.25061"
|
||||
y="576.20001"
|
||||
id="text1"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'AG Book Pro';-inkscape-font-specification:'AG Book Pro Bold';fill:#ffffff;stroke-width:46.3214"
|
||||
x="527.25061"
|
||||
y="576.20001">dBXE</tspan></text></g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.7 KiB |
|
|
@ -583,6 +583,9 @@ class WidgetGenadresse
|
|||
$field = new HTMLCheckbox("geburtstagskarte","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("sachkonto","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLSelect("verrechnungskontoreisekosten",0,"verrechnungskontoreisekosten","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,320 +1,325 @@
|
|||
<?php
|
||||
/*
|
||||
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*
|
||||
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
|
||||
*
|
||||
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
|
||||
*
|
||||
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
|
||||
* to obtain the text of the corresponding license version.
|
||||
*
|
||||
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
/*
|
||||
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*
|
||||
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
|
||||
*
|
||||
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
|
||||
*
|
||||
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
|
||||
* to obtain the text of the corresponding license version.
|
||||
*
|
||||
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
|
||||
class WidgetGenangebot_position
|
||||
{
|
||||
|
||||
private $app; //application object
|
||||
public $form; //store form object
|
||||
protected $parsetarget; //target for content
|
||||
|
||||
public function __construct($app,$parsetarget)
|
||||
{
|
||||
$this->app = $app;
|
||||
$this->parsetarget = $parsetarget;
|
||||
$this->Form();
|
||||
}
|
||||
|
||||
public function angebot_positionDelete()
|
||||
{
|
||||
|
||||
$this->form->Execute("angebot_position","delete");
|
||||
|
||||
$this->angebot_positionList();
|
||||
}
|
||||
|
||||
function Edit()
|
||||
{
|
||||
$this->form->Edit();
|
||||
}
|
||||
|
||||
function Copy()
|
||||
{
|
||||
$this->form->Copy();
|
||||
}
|
||||
|
||||
public function Create()
|
||||
{
|
||||
$this->form->Create();
|
||||
}
|
||||
|
||||
public function Search()
|
||||
{
|
||||
$this->app->Tpl->Set($this->parsetarget,"SUUUCHEEE");
|
||||
}
|
||||
|
||||
public function Summary()
|
||||
{
|
||||
$this->app->Tpl->Set($this->parsetarget,"grosse Tabelle");
|
||||
}
|
||||
|
||||
function Form()
|
||||
{
|
||||
$this->form = $this->app->FormHandler->CreateNew("angebot_position");
|
||||
$this->form->UseTable("angebot_position");
|
||||
$this->form->UseTemplate("angebot_position.tpl",$this->parsetarget);
|
||||
|
||||
$field = new HTMLInput("nummer","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("bezeichnung","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
$this->form->AddMandatory("bezeichnung","notempty","Pflichtfeld!","MSGBEZEICHNUNG");
|
||||
|
||||
$field = new HTMLTextarea("beschreibung",8,48,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("menge","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
$this->form->AddMandatory("menge","notempty","Pflichtfeld!","MSGMENGE");
|
||||
|
||||
$field = new HTMLInput("preis","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLTextarea("formelmenge",2,48,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLTextarea("formelpreis",2,48,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("optional","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("ohnepreis","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("textalternativpreis","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("berechnen_aus_teile","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("ausblenden_im_pdf","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("explodiert_parent","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("waehrung","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLSelect("umsatzsteuer",0,"umsatzsteuer","","","0");
|
||||
$field->AddOption('{|Standard|}','');
|
||||
$field->AddOption('Ermäßigt','ermaessigt');
|
||||
$field->AddOption('Befreit','befreit');
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("anderersteuersatz","","","","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("steuersatz","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLTextarea("steuertext",3,50,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("grundrabatt","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("rabatt1","text","","5","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("rabatt2","text","","5","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("rabatt3","text","","5","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("rabatt4","text","","5","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("rabatt5","text","","5","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("keinrabatterlaubt","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("rabatt","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("einheit","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("vpe","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("lieferdatum","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("lieferdatumkw","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("artikelnummerkunde","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("zolltarifnummer","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("herkunftsland","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld1","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld2","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld3","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld4","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld5","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld6","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld7","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld8","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld9","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld10","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld11","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld12","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld13","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld14","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld15","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld16","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld17","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld18","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld19","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld20","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld21","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld22","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld23","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld24","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld25","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld26","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld27","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld28","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld29","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld30","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld31","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld32","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld33","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld34","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld35","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld36","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld37","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld38","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld39","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld40","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("punkte","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("bonuspunkte","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("mlmdirektpraemie","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
|
||||
$field = new HTMLInput("kostenstelle","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("erloese","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("erloesefestschreiben","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLTextarea("bemerkung",3,40,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
<?php
|
||||
|
||||
class WidgetGenangebot_position
|
||||
{
|
||||
|
||||
private $app; //application object
|
||||
public $form; //store form object
|
||||
protected $parsetarget; //target for content
|
||||
|
||||
public function __construct($app,$parsetarget)
|
||||
{
|
||||
$this->app = $app;
|
||||
$this->parsetarget = $parsetarget;
|
||||
$this->Form();
|
||||
}
|
||||
|
||||
public function angebot_positionDelete()
|
||||
{
|
||||
|
||||
$this->form->Execute("angebot_position","delete");
|
||||
|
||||
$this->angebot_positionList();
|
||||
}
|
||||
|
||||
function Edit()
|
||||
{
|
||||
$this->form->Edit();
|
||||
}
|
||||
|
||||
function Copy()
|
||||
{
|
||||
$this->form->Copy();
|
||||
}
|
||||
|
||||
public function Create()
|
||||
{
|
||||
$this->form->Create();
|
||||
}
|
||||
|
||||
public function Search()
|
||||
{
|
||||
$this->app->Tpl->Set($this->parsetarget,"SUUUCHEEE");
|
||||
}
|
||||
|
||||
public function Summary()
|
||||
{
|
||||
$this->app->Tpl->Set($this->parsetarget,"grosse Tabelle");
|
||||
}
|
||||
|
||||
function Form()
|
||||
{
|
||||
$this->form = $this->app->FormHandler->CreateNew("angebot_position");
|
||||
$this->form->UseTable("angebot_position");
|
||||
$this->form->UseTemplate("angebot_position.tpl",$this->parsetarget);
|
||||
|
||||
$field = new HTMLInput("nummer","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("bezeichnung","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
$this->form->AddMandatory("bezeichnung","notempty","Pflichtfeld!","MSGBEZEICHNUNG");
|
||||
|
||||
$field = new HTMLTextarea("beschreibung",8,48,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("menge","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
$this->form->AddMandatory("menge","notempty","Pflichtfeld!","MSGMENGE");
|
||||
|
||||
$field = new HTMLInput("preis","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLTextarea("formelmenge",2,48,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLTextarea("formelpreis",2,48,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("optional","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("ohnepreis","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("textalternativpreis","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("berechnen_aus_teile","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("ausblenden_im_pdf","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("explodiert_parent","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("waehrung","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLSelect("umsatzsteuer",0,"umsatzsteuer","","","0");
|
||||
$field->AddOption('{|Standard|}','');
|
||||
$field->AddOption('Ermäßigt','ermaessigt');
|
||||
$field->AddOption('Befreit','befreit');
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("anderersteuersatz","","","","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("steuersatz","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLTextarea("steuertext",3,50,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("grundrabatt","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("rabatt1","text","","5","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("rabatt2","text","","5","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("rabatt3","text","","5","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("rabatt4","text","","5","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("rabatt5","text","","5","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("keinrabatterlaubt","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("rabatt","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("einheit","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("vpe","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("lieferdatum","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("lieferdatumkw","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("artikelnummerkunde","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("zolltarifnummer","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("herkunftsland","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld1","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld2","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld3","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld4","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld5","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld6","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld7","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld8","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld9","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld10","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld11","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld12","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld13","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld14","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld15","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld16","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld17","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld18","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld19","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld20","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld21","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld22","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld23","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld24","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld25","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld26","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld27","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld28","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld29","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld30","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld31","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld32","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld33","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld34","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld35","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld36","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld37","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld38","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld39","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("freifeld40","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("punkte","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("bonuspunkte","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("mlmdirektpraemie","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
|
||||
$field = new HTMLInput("kostenstelle","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("erloese","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("erloesefestschreiben","","","1","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
if ($this->app->erp->RechteVorhanden('angebot','einkaufspreise')) {
|
||||
$field = new HTMLInput("einkaufspreis","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
}
|
||||
|
||||
$field = new HTMLTextarea("bemerkung",3,40,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -400,6 +400,9 @@ class WidgetGenprojekt
|
|||
$field = new HTMLInput("next_verbindlichkeit","text","","40","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("next_lieferantengutschrift","text","","40","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("next_goodspostingdocument","text","","40","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,129 +1,129 @@
|
|||
<?php
|
||||
/*
|
||||
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*
|
||||
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
|
||||
*
|
||||
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
|
||||
*
|
||||
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
|
||||
* to obtain the text of the corresponding license version.
|
||||
*
|
||||
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
/*
|
||||
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*
|
||||
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
|
||||
*
|
||||
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
|
||||
*
|
||||
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
|
||||
* to obtain the text of the corresponding license version.
|
||||
*
|
||||
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
|
||||
class WidgetGenverbindlichkeit_position
|
||||
{
|
||||
|
||||
private $app; //application object
|
||||
public $form; //store form object
|
||||
protected $parsetarget; //target for content
|
||||
|
||||
public function __construct($app,$parsetarget)
|
||||
{
|
||||
$this->app = $app;
|
||||
$this->parsetarget = $parsetarget;
|
||||
$this->Form();
|
||||
}
|
||||
|
||||
public function verbindlichkeit_positionDelete()
|
||||
{
|
||||
|
||||
$this->form->Execute("verbindlichkeit_position","delete");
|
||||
|
||||
$this->verbindlichkeit_positionList();
|
||||
}
|
||||
|
||||
function Edit()
|
||||
{
|
||||
$this->form->Edit();
|
||||
}
|
||||
|
||||
function Copy()
|
||||
{
|
||||
$this->form->Copy();
|
||||
}
|
||||
|
||||
public function Create()
|
||||
{
|
||||
$this->form->Create();
|
||||
}
|
||||
|
||||
public function Search()
|
||||
{
|
||||
$this->app->Tpl->Set($this->parsetarget,"SUUUCHEEE");
|
||||
}
|
||||
|
||||
public function Summary()
|
||||
{
|
||||
$this->app->Tpl->Set($this->parsetarget,"grosse Tabelle");
|
||||
}
|
||||
|
||||
function Form()
|
||||
{
|
||||
$this->form = $this->app->FormHandler->CreateNew("verbindlichkeit_position");
|
||||
$this->form->UseTable("verbindlichkeit_position");
|
||||
$this->form->UseTemplate("verbindlichkeit_position.tpl",$this->parsetarget);
|
||||
|
||||
$field = new HTMLInput("artikel","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
$this->form->AddMandatory("artikel","notempty","Pflichtfeld!","MSGARTIKEL");
|
||||
|
||||
$field = new HTMLInput("bezeichnung","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
$this->form->AddMandatory("bezeichnung","notempty","Pflichtfeld!","MSGBEZEICHNUNG");
|
||||
|
||||
$field = new HTMLInput("nummer","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLTextarea("beschreibung",5,30,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("menge","text","","8","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
$this->form->AddMandatory("menge","notempty","Pflichtfeld!","MSGMENGE");
|
||||
|
||||
$field = new HTMLInput("preis","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("waehrung","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLSelect("umsatzsteuer",0,"umsatzsteuer","","","0");
|
||||
$field->AddOption('Standard','');
|
||||
$field->AddOption('Ermäßigt','ermaessigt');
|
||||
$field->AddOption('Befreit','befreit');
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("anderersteuersatz","","","","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("steuersatz","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLTextarea("steuertext",3,50,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("einheit","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("vpe","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("projekt","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("kostenstelle","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("lieferdatum","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
<?php
|
||||
|
||||
class WidgetGenverbindlichkeit_position
|
||||
{
|
||||
|
||||
private $app; //application object
|
||||
public $form; //store form object
|
||||
protected $parsetarget; //target for content
|
||||
|
||||
public function __construct($app,$parsetarget)
|
||||
{
|
||||
$this->app = $app;
|
||||
$this->parsetarget = $parsetarget;
|
||||
$this->Form();
|
||||
}
|
||||
|
||||
public function verbindlichkeit_positionDelete()
|
||||
{
|
||||
|
||||
$this->form->Execute("verbindlichkeit_position","delete");
|
||||
|
||||
$this->verbindlichkeit_positionList();
|
||||
}
|
||||
|
||||
function Edit()
|
||||
{
|
||||
$this->form->Edit();
|
||||
}
|
||||
|
||||
function Copy()
|
||||
{
|
||||
$this->form->Copy();
|
||||
}
|
||||
|
||||
public function Create()
|
||||
{
|
||||
$this->form->Create();
|
||||
}
|
||||
|
||||
public function Search()
|
||||
{
|
||||
$this->app->Tpl->Set($this->parsetarget,"SUUUCHEEE");
|
||||
}
|
||||
|
||||
public function Summary()
|
||||
{
|
||||
$this->app->Tpl->Set($this->parsetarget,"grosse Tabelle");
|
||||
}
|
||||
|
||||
function Form()
|
||||
{
|
||||
$this->form = $this->app->FormHandler->CreateNew("verbindlichkeit_position");
|
||||
$this->form->UseTable("verbindlichkeit_position");
|
||||
$this->form->UseTemplate("verbindlichkeit_position.tpl",$this->parsetarget);
|
||||
|
||||
$field = new HTMLInput("artikel","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
$this->form->AddMandatory("artikel","notempty","Pflichtfeld!","MSGARTIKEL");
|
||||
|
||||
$field = new HTMLInput("bezeichnung","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
$this->form->AddMandatory("bezeichnung","notempty","Pflichtfeld!","MSGBEZEICHNUNG");
|
||||
|
||||
$field = new HTMLInput("nummer","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLTextarea("beschreibung",5,30,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("menge","text","","8","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
$this->form->AddMandatory("menge","notempty","Pflichtfeld!","MSGMENGE");
|
||||
|
||||
$field = new HTMLInput("preis","text","","40","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLSelect("umsatzsteuer",0,"umsatzsteuer","","","0");
|
||||
$field->AddOption('Standard','');
|
||||
$field->AddOption('Ermäßigt','ermaessigt');
|
||||
$field->AddOption('Befreit','befreit');
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLCheckbox("anderersteuersatz","","","","0","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("steuersatz","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLTextarea("steuertext",3,50,"","","","","0");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("einheit","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("vpe","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("projekt","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("sachkonto","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("kostenstelle","text","","50","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("lieferdatum","text","","15","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
|
|||