From 73dbbb061aa887f2370709e172cfd6e16eaef197 Mon Sep 17 00:00:00 2001
From: OpenXE <>
Date: Mon, 13 Mar 2023 14:22:39 +0100
Subject: [PATCH] Geschaeftskonto module restored (basic variant)
---
www/pages/content/konten_edit.tpl | 385 +++++++++++++++++++++---------
www/pages/konten.php | 349 +++++++++++++++++++++++++++
2 files changed, 621 insertions(+), 113 deletions(-)
create mode 100644 www/pages/konten.php
diff --git a/www/pages/content/konten_edit.tpl b/www/pages/content/konten_edit.tpl
index 7b8c8306..542127cd 100644
--- a/www/pages/content/konten_edit.tpl
+++ b/www/pages/content/konten_edit.tpl
@@ -18,37 +18,58 @@
- {|Bezeichnung|}: |
- |
+
+ {|Bezeichnung|}:
+ |
+
+
+ |
- {|Typ|}: |
+ {|Typ|}:
+ |
+
+
+
|
- {|Projekt|}: |
- |
+
+ {|Projekt|}:
+ |
+
+
+ |
- {|Aktiv|}: |
- {|Aktiv. Nicht mehr verwendete Konten können deaktiviert werden.|}
+ |
+ {|Aktiv|}:
+ |
+
+ {|Aktiv. Nicht mehr verwendete Konten können deaktiviert werden.|}
|
- {|Keine E-Mail|}: |
- {|Normalerweise wird beim Zahlungseingang eine Mail an den Kunden gesendet. Soll dies unterdrückt werden muss diese Option gesetzt werden.|}
+ |
+ {|Keine E-Mail|}:
+ |
+
+ {|Normalerweise wird beim Zahlungseingang eine Mail an den Kunden gesendet. Soll dies unterdrückt werden muss diese Option gesetzt werden.|}
|
- {|Änderungen erlauben|}: |
-
+ {|Änderungen erlauben|}:
+ |
+
+ {|Es dürfen nachträglich Kontobuchungen verändert werden|}
|
@@ -66,38 +87,71 @@
@@ -113,9 +167,13 @@
@@ -123,6 +181,7 @@
+
@@ -338,20 +483,32 @@
@@ -359,8 +516,7 @@
-
-
+
@@ -372,8 +528,11 @@
diff --git a/www/pages/konten.php b/www/pages/konten.php
new file mode 100644
index 00000000..8dcefa1d
--- /dev/null
+++ b/www/pages/konten.php
@@ -0,0 +1,349 @@
+app = $app;
+ if ($intern)
+ return;
+
+ $this->app->ActionHandlerInit($this);
+ $this->app->ActionHandler("list", "konten_list");
+ $this->app->ActionHandler("create", "konten_edit"); // This automatically adds a "New" button
+ $this->app->ActionHandler("edit", "konten_edit");
+ $this->app->ActionHandler("delete", "konten_delete");
+ $this->app->DefaultActionHandler("list");
+ $this->app->ActionHandlerListen($app);
+ }
+
+ public function Install() {
+ /* Fill out manually later */
+ }
+
+ static function TableSearch(&$app, $name, $erlaubtevars) {
+ switch ($name) {
+ case "konten_list":
+ $allowed['konten_list'] = array('list');
+ $heading = array('','','Bezeichnung', 'Kurzbezeichnung', 'Typ', 'Projekt', 'Aktiv','Menü');
+ $width = array('1%','1%','10%'); // Fill out manually later
+
+ // columns that are aligned right (numbers etc)
+ // $alignright = array(4,5,6,7,8);
+
+ $findcols = array('k.id','k.id','k.bezeichnung', 'k.kurzbezeichnung', 'k.type', 'p.abkuerzung', ' k.aktiv','k.id');
+ $searchsql = array('k.bezeichnung', 'k.kurzbezeichnung', 'k.datevkonto', 'k.blz', 'k.konto', 'k.swift', 'k.iban', 'k.inhaber', 'k.firma','p.abkuerzung');
+
+ $defaultorder = 1;
+ $defaultorderdesc = 0;
+
+ $dropnbox = "'
' AS `open`, CONCAT('') AS `auswahl`";
+
+ $menu = "";
+
+ $sql = "SELECT SQL_CALC_FOUND_ROWS
+ k.id,
+ $dropnbox,
+ k.bezeichnung,
+ k.kurzbezeichnung,
+ k.type,
+ p.abkuerzung,
+ k.aktiv,
+ k.id
+ FROM
+ konten k
+ LEFT JOIN
+ projekt p
+ ON
+ p.id = k.projekt ";
+
+ $where = " k.aktiv = 1 ";
+
+ // Toggle filters
+ $app->Tpl->Add('JQUERYREADY', "$('#archiv').click( function() { fnFilterColumn1( 0 ); } );");
+
+ for ($r = 1;$r <= 1;$r++) {
+ $app->Tpl->Add('JAVASCRIPT', '
+ function fnFilterColumn' . $r . ' ( i )
+ {
+ if(oMoreData' . $r . $name . '==1)
+ oMoreData' . $r . $name . ' = 0;
+ else
+ oMoreData' . $r . $name . ' = 1;
+
+ $(\'#' . $name . '\').dataTable().fnFilter(
+ \'\',
+ i,
+ 0,0
+ );
+ }
+ ');
+ }
+
+
+ $more_data1 = $app->Secure->GetGET("more_data1");
+ if ($more_data1 == 1) {
+ $where .= " OR k.aktiv <> 1";
+ } else {
+ }
+
+
+ $count = "SELECT count(DISTINCT id) FROM konten k WHERE $where";
+// $groupby = "";
+
+ break;
+ }
+
+ $erg = false;
+
+ foreach ($erlaubtevars as $k => $v) {
+ if (isset($$v)) {
+ $erg[$v] = $$v;
+ }
+ }
+ return $erg;
+ }
+
+ function konten_list() {
+ $this->app->erp->MenuEintrag("index.php?module=konten&action=list", "Übersicht");
+ $this->app->erp->MenuEintrag("index.php?module=konten&action=create", "Neu anlegen");
+
+ $this->app->erp->MenuEintrag("index.php", "Zurück");
+
+ $this->app->YUI->TableSearch('TAB1', 'konten_list', "show", "", "", basename(__FILE__), __CLASS__);
+ $this->app->Tpl->Parse('PAGE', "konten_list.tpl");
+ }
+
+ public function konten_delete() {
+ $id = (int) $this->app->Secure->GetGET('id');
+
+ $this->app->DB->Delete("UPDATE `konten` SET `aktiv` = 0 WHERE `id` = '{$id}'");
+ $this->app->Tpl->Set('MESSAGE', "Der Eintrag wurde deaktiviert.
");
+
+ $this->konten_list();
+ }
+
+ /*
+ * Edit konten item
+ * If id is empty, create a new one
+ */
+
+ function konten_edit() {
+ $id = $this->app->Secure->GetGET('id');
+
+ // Check if other users are editing this id
+ if($this->app->erp->DisableModul('artikel',$id))
+ {
+ return;
+ }
+
+ $this->app->Tpl->Set('ID', $id);
+
+ $this->app->erp->MenuEintrag("index.php?module=konten&action=edit&id=$id", "Details");
+ $this->app->erp->MenuEintrag("index.php?module=konten&action=list", "Zurück zur Übersicht");
+ $id = $this->app->Secure->GetGET('id');
+ $input = $this->GetInput();
+ $submit = $this->app->Secure->GetPOST('submit');
+
+ if (empty($id)) {
+ // New item
+ $id = 'NULL';
+ }
+
+ if ($submit != '')
+ {
+
+ // Write to database
+
+ // Add checks here
+ $input['projekt'] = $this->app->erp->ReplaceProjekt(true,$input['projekt'],true);
+
+ $columns = "id, ";
+ $values = "$id, ";
+ $update = "";
+
+ $fix = "";
+
+ foreach ($input as $key => $value) {
+ $columns = $columns.$fix.$key;
+ $values = $values.$fix."'".$value."'";
+ $update = $update.$fix.$key." = '$value'";
+
+ $fix = ", ";
+ }
+
+// echo($columns."
");
+// echo($values."
");
+// echo($update."
");
+
+ $sql = "INSERT INTO konten (".$columns.") VALUES (".$values.") ON DUPLICATE KEY UPDATE ".$update;
+
+// echo($sql);
+
+ $this->app->DB->Update($sql);
+
+ if ($id == 'NULL') {
+ $msg = $this->app->erp->base64_url_encode("Das Element wurde erfolgreich angelegt.
");
+ header("Location: index.php?module=konten&action=list&msg=$msg");
+ } else {
+ $this->app->Tpl->Set('MESSAGE', "Die Einstellungen wurden erfolgreich übernommen.
");
+ }
+ }
+
+
+ // Load values again from database
+ $dropnbox = "'
' AS `open`, CONCAT('') AS `auswahl`";
+ $result = $this->app->DB->SelectArr("SELECT SQL_CALC_FOUND_ROWS k.id, $dropnbox, k.bezeichnung, k.kurzbezeichnung, k.type, k.erstezeile, k.datevkonto, k.blz, k.konto, k.swift, k.iban, k.lastschrift, k.hbci, k.hbcikennung, k.inhaber, k.aktiv, k.keineemail, k.firma, k.schreibbar, k.importletztenzeilenignorieren, k.liveimport, k.liveimport_passwort, k.liveimport_online, k.importtrennzeichen, k.codierung, k.importerstezeilenummer, k.importdatenmaskierung, k.importnullbytes, k.glaeubiger, k.geloescht, k.projekt, k.saldo_summieren, k.saldo_betrag, k.saldo_datum, k.importfelddatum, k.importfelddatumformat, k.importfelddatumformatausgabe, k.importfeldbetrag, k.importfeldbetragformat, k.importfeldbuchungstext, k.importfeldbuchungstextformat, k.importfeldwaehrung, k.importfeldwaehrungformat, k.importfeldhabensollkennung, k.importfeldkennunghaben, k.importfeldkennungsoll, k.importextrahabensoll, k.importfeldhaben, k.importfeldsoll, k.cronjobaktiv, k.cronjobverbuchen, k.last_import, k.importperiode_in_hours, k.id FROM konten k"." WHERE id=$id");
+
+ foreach ($result[0] as $key => $value) {
+ $this->app->Tpl->Set(strtoupper($key), $value);
+ }
+
+ /*
+ * Add displayed items later
+ *
+
+ $this->app->Tpl->Add('KURZUEBERSCHRIFT2', $email);
+ $this->app->Tpl->Add('EMAIL', $email);
+ $this->app->Tpl->Add('ANGEZEIGTERNAME', $angezeigtername);
+ */
+
+ $this->app->YUI->AutoComplete('projekt','projektname',1);
+ $this->app->Tpl->Set('PROJEKT',$this->app->erp->ReplaceProjekt(false,$result[0]['projekt'],false));
+
+ $this->app->Tpl->Set('AKTIV',$result[0]['aktiv']==1?'checked':'');
+ $this->app->Tpl->Set('KEINEEMAIL',$result[0]['keineemail']==1?'checked':'');
+ $this->app->Tpl->Set('SCHREIBBAR',$result[0]['schreibbar']==1?'checked':'');
+ $this->app->Tpl->Set('LASTSCHRIFT',$result[0]['lastschrift']==1?'checked':'');
+ $this->app->Tpl->Set('SALDO_SUMMIEREN',$result[0]['saldo_summieren']==1?'checked':'');
+
+ $this->app->Tpl->Parse('PAGE', "konten_edit.tpl");
+ }
+
+ /**
+ * Get all paramters from html form and save into $input
+ */
+ public function GetInput(): array {
+ $input = array();
+ //$input['EMAIL'] = $this->app->Secure->GetPOST('email');
+
+ $input['bezeichnung'] = $this->app->Secure->GetPOST('bezeichnung');
+ $input['kurzbezeichnung'] = $this->app->Secure->GetPOST('kurzbezeichnung');
+ $input['type'] = $this->app->Secure->GetPOST('type');
+ $input['erstezeile'] = $this->app->Secure->GetPOST('erstezeile');
+ $input['datevkonto'] = $this->app->Secure->GetPOST('datevkonto');
+ $input['blz'] = $this->app->Secure->GetPOST('blz');
+ $input['konto'] = $this->app->Secure->GetPOST('konto');
+ $input['swift'] = $this->app->Secure->GetPOST('swift');
+ $input['iban'] = $this->app->Secure->GetPOST('iban');
+ $input['lastschrift'] = $this->app->Secure->GetPOST('lastschrift');
+ $input['hbci'] = $this->app->Secure->GetPOST('hbci');
+ $input['hbcikennung'] = $this->app->Secure->GetPOST('hbcikennung');
+ $input['inhaber'] = $this->app->Secure->GetPOST('inhaber');
+ $input['aktiv'] = $this->app->Secure->GetPOST('aktiv');
+ $input['keineemail'] = $this->app->Secure->GetPOST('keineemail');
+ $input['firma'] = $this->app->Secure->GetPOST('firma');
+ $input['schreibbar'] = $this->app->Secure->GetPOST('schreibbar');
+ $input['importletztenzeilenignorieren'] = $this->app->Secure->GetPOST('importletztenzeilenignorieren');
+ $input['liveimport'] = $this->app->Secure->GetPOST('liveimport');
+ $input['liveimport_passwort'] = $this->app->Secure->GetPOST('liveimport_passwort');
+ $input['liveimport_online'] = $this->app->Secure->GetPOST('liveimport_online');
+ $input['importtrennzeichen'] = $this->app->Secure->GetPOST('importtrennzeichen');
+ $input['codierung'] = $this->app->Secure->GetPOST('codierung');
+ $input['importerstezeilenummer'] = $this->app->Secure->GetPOST('importerstezeilenummer');
+ $input['importdatenmaskierung'] = $this->app->Secure->GetPOST('importdatenmaskierung');
+ $input['importnullbytes'] = $this->app->Secure->GetPOST('importnullbytes');
+ $input['glaeubiger'] = $this->app->Secure->GetPOST('glaeubiger');
+ $input['geloescht'] = $this->app->Secure->GetPOST('geloescht');
+ $input['projekt'] = $this->app->Secure->GetPOST('projekt');
+ $input['saldo_summieren'] = $this->app->Secure->GetPOST('saldo_summieren');
+ $input['saldo_betrag'] = $this->app->Secure->GetPOST('saldo_betrag');
+ $input['saldo_datum'] = $this->app->Secure->GetPOST('saldo_datum');
+ $input['importfelddatum'] = $this->app->Secure->GetPOST('importfelddatum');
+ $input['importfelddatumformat'] = $this->app->Secure->GetPOST('importfelddatumformat');
+ $input['importfelddatumformatausgabe'] = $this->app->Secure->GetPOST('importfelddatumformatausgabe');
+ $input['importfeldbetrag'] = $this->app->Secure->GetPOST('importfeldbetrag');
+ $input['importfeldbetragformat'] = $this->app->Secure->GetPOST('importfeldbetragformat');
+ $input['importfeldbuchungstext'] = $this->app->Secure->GetPOST('importfeldbuchungstext');
+ $input['importfeldbuchungstextformat'] = $this->app->Secure->GetPOST('importfeldbuchungstextformat');
+ $input['importfeldwaehrung'] = $this->app->Secure->GetPOST('importfeldwaehrung');
+ $input['importfeldwaehrungformat'] = $this->app->Secure->GetPOST('importfeldwaehrungformat');
+ $input['importfeldhabensollkennung'] = $this->app->Secure->GetPOST('importfeldhabensollkennung');
+ $input['importfeldkennunghaben'] = $this->app->Secure->GetPOST('importfeldkennunghaben');
+ $input['importfeldkennungsoll'] = $this->app->Secure->GetPOST('importfeldkennungsoll');
+ $input['importextrahabensoll'] = $this->app->Secure->GetPOST('importextrahabensoll');
+ $input['importfeldhaben'] = $this->app->Secure->GetPOST('importfeldhaben');
+ $input['importfeldsoll'] = $this->app->Secure->GetPOST('importfeldsoll');
+ $input['cronjobaktiv'] = $this->app->Secure->GetPOST('cronjobaktiv');
+ $input['cronjobverbuchen'] = $this->app->Secure->GetPOST('cronjobverbuchen');
+ $input['last_import'] = $this->app->Secure->GetPOST('last_import');
+ $input['importperiode_in_hours'] = $this->app->Secure->GetPOST('importperiode_in_hours');
+ return $input;
+ }
+
+ /*
+ * Set all fields in the page corresponding to $input
+ */
+ function SetInput($input) {
+ // $this->app->Tpl->Set('EMAIL', $input['email']);
+
+ $this->app->Tpl->Set('BEZEICHNUNG', $input['bezeichnung']);
+ $this->app->Tpl->Set('KURZBEZEICHNUNG', $input['kurzbezeichnung']);
+ $this->app->Tpl->Set('TYPE', $input['type']);
+ $this->app->Tpl->Set('ERSTEZEILE', $input['erstezeile']);
+ $this->app->Tpl->Set('DATEVKONTO', $input['datevkonto']);
+ $this->app->Tpl->Set('BLZ', $input['blz']);
+ $this->app->Tpl->Set('KONTO', $input['konto']);
+ $this->app->Tpl->Set('SWIFT', $input['swift']);
+ $this->app->Tpl->Set('IBAN', $input['iban']);
+ $this->app->Tpl->Set('LASTSCHRIFT', $input['lastschrift']);
+ $this->app->Tpl->Set('HBCI', $input['hbci']);
+ $this->app->Tpl->Set('HBCIKENNUNG', $input['hbcikennung']);
+ $this->app->Tpl->Set('INHABER', $input['inhaber']);
+ $this->app->Tpl->Set('AKTIV', $input['aktiv']);
+ $this->app->Tpl->Set('KEINEEMAIL', $input['keineemail']);
+ $this->app->Tpl->Set('FIRMA', $input['firma']);
+ $this->app->Tpl->Set('SCHREIBBAR', $input['schreibbar']);
+ $this->app->Tpl->Set('IMPORTLETZTENZEILENIGNORIEREN', $input['importletztenzeilenignorieren']);
+ $this->app->Tpl->Set('LIVEIMPORT', $input['liveimport']);
+ $this->app->Tpl->Set('LIVEIMPORT_PASSWORT', $input['liveimport_passwort']);
+ $this->app->Tpl->Set('LIVEIMPORT_ONLINE', $input['liveimport_online']);
+ $this->app->Tpl->Set('IMPORTTRENNZEICHEN', $input['importtrennzeichen']);
+ $this->app->Tpl->Set('CODIERUNG', $input['codierung']);
+ $this->app->Tpl->Set('IMPORTERSTEZEILENUMMER', $input['importerstezeilenummer']);
+ $this->app->Tpl->Set('IMPORTDATENMASKIERUNG', $input['importdatenmaskierung']);
+ $this->app->Tpl->Set('IMPORTNULLBYTES', $input['importnullbytes']);
+ $this->app->Tpl->Set('GLAEUBIGER', $input['glaeubiger']);
+ $this->app->Tpl->Set('GELOESCHT', $input['geloescht']);
+ $this->app->Tpl->Set('PROJEKT', $input['projekt']);
+ $this->app->Tpl->Set('SALDO_SUMMIEREN', $input['saldo_summieren']);
+ $this->app->Tpl->Set('SALDO_BETRAG', $input['saldo_betrag']);
+ $this->app->Tpl->Set('SALDO_DATUM', $input['saldo_datum']);
+ $this->app->Tpl->Set('IMPORTFELDDATUM', $input['importfelddatum']);
+ $this->app->Tpl->Set('IMPORTFELDDATUMFORMAT', $input['importfelddatumformat']);
+ $this->app->Tpl->Set('IMPORTFELDDATUMFORMATAUSGABE', $input['importfelddatumformatausgabe']);
+ $this->app->Tpl->Set('IMPORTFELDBETRAG', $input['importfeldbetrag']);
+ $this->app->Tpl->Set('IMPORTFELDBETRAGFORMAT', $input['importfeldbetragformat']);
+ $this->app->Tpl->Set('IMPORTFELDBUCHUNGSTEXT', $input['importfeldbuchungstext']);
+ $this->app->Tpl->Set('IMPORTFELDBUCHUNGSTEXTFORMAT', $input['importfeldbuchungstextformat']);
+ $this->app->Tpl->Set('IMPORTFELDWAEHRUNG', $input['importfeldwaehrung']);
+ $this->app->Tpl->Set('IMPORTFELDWAEHRUNGFORMAT', $input['importfeldwaehrungformat']);
+ $this->app->Tpl->Set('IMPORTFELDHABENSOLLKENNUNG', $input['importfeldhabensollkennung']);
+ $this->app->Tpl->Set('IMPORTFELDKENNUNGHABEN', $input['importfeldkennunghaben']);
+ $this->app->Tpl->Set('IMPORTFELDKENNUNGSOLL', $input['importfeldkennungsoll']);
+ $this->app->Tpl->Set('IMPORTEXTRAHABENSOLL', $input['importextrahabensoll']);
+ $this->app->Tpl->Set('IMPORTFELDHABEN', $input['importfeldhaben']);
+ $this->app->Tpl->Set('IMPORTFELDSOLL', $input['importfeldsoll']);
+ $this->app->Tpl->Set('CRONJOBAKTIV', $input['cronjobaktiv']);
+ $this->app->Tpl->Set('CRONJOBVERBUCHEN', $input['cronjobverbuchen']);
+ $this->app->Tpl->Set('LAST_IMPORT', $input['last_import']);
+ $this->app->Tpl->Set('IMPORTPERIODE_IN_HOURS', $input['importperiode_in_hours']);
+
+ }
+
+}