From 64d6b903126ccc2473fd75440653a41ce7570fab Mon Sep 17 00:00:00 2001 From: OpenXE <> Date: Sat, 15 Apr 2023 10:48:47 +0200 Subject: [PATCH] fibu_buchungen usability improvements --- upgrade/data/db_schema.json | 2 +- www/pages/auftrag.php | 2 +- www/pages/content/fibu_buchungen_edit.tpl | 2 +- .../content/fibu_buchungen_einzelzuordnen.tpl | 41 +++++++++----- www/pages/content/fibu_buchungen_list.tpl | 3 +- www/pages/content/fibu_buchungen_zuordnen.tpl | 8 +-- www/pages/fibu_buchungen.php | 55 ++++++++++++------- 7 files changed, 70 insertions(+), 43 deletions(-) diff --git a/upgrade/data/db_schema.json b/upgrade/data/db_schema.json index 2a2c1f9f..33b66558 100644 --- a/upgrade/data/db_schema.json +++ b/upgrade/data/db_schema.json @@ -117363,7 +117363,7 @@ { "name": "fibu_objekte_view", "type": "VIEW", - "Create": "CREATE VIEW `fibu_objekte_view` AS select `fo`.`datum` AS `datum`,`fo`.`typ` AS `typ`,`fo`.`id` AS `id`,`fo`.`info` AS `info`,`fo`.`parent_typ` AS `parent_typ`,`fo`.`parent_id` AS `parent_id`,`fo`.`parent_info` AS `parent_info`,`fo`.`typ` in ('rechnung','gutschrift','verbindlichkeit','auftrag') AS `is_beleg` from (select `auftrag`.`datum` AS `datum`,'auftrag' AS `typ`,`auftrag`.`id` AS `id`,`auftrag`.`belegnr` AS `info`,'adresse' AS `parent_typ`,`auftrag`.`adresse` AS `parent_id`,`auftrag`.`name` AS `parent_info` from `auftrag` where `auftrag`.`belegnr` <> '' and `auftrag`.`status` <> 'abgeschlossen' union select `rechnung`.`datum` AS `datum`,'rechnung' AS `typ`,`rechnung`.`id` AS `id`,`rechnung`.`belegnr` AS `info`,'adresse' AS `parent_type`,`rechnung`.`adresse` AS `parent_id`,`rechnung`.`name` AS `parent_info` from `rechnung` where `rechnung`.`belegnr` <> '' and `rechnung`.`zahlungsstatus` <> 'bezahlt' union select `gutschrift`.`datum` AS `datum`,'gutschrift' AS `gutschrift`,`gutschrift`.`id` AS `id`,`gutschrift`.`belegnr` AS `belegnr`,'adresse' AS `parent_type`,`gutschrift`.`adresse` AS `parent_id`,`gutschrift`.`name` AS `parent_info` from `gutschrift` where `gutschrift`.`belegnr` <> '' and `gutschrift`.`zahlungsstatus` <> 'bezahlt' union select `verbindlichkeit`.`rechnungsdatum` AS `rechnungsdatum`,'verbindlichkeit' AS `verbindlichkeit`,`verbindlichkeit`.`id` AS `id`,`verbindlichkeit`.`rechnung` AS `belegnr`,'adresse' AS `parent_type`,`verbindlichkeit`.`adresse` AS `parent_id`,`adresse`.`name` AS `name` from (`verbindlichkeit` join `adresse` on(`verbindlichkeit`.`adresse` = `adresse`.`id`)) where `verbindlichkeit`.`belegnr` <> '' and `verbindlichkeit`.`status` <> 'bezahlt' union select `kontoauszuege`.`buchung` AS `buchung`,'kontoauszuege' AS `kontoauszuege`,`kontoauszuege`.`id` AS `id`,concat(`konten`.`kurzbezeichnung`,' - ',`kontoauszuege`.`buchungstext`) AS `buchungstext`,'konten' AS `parent_type`,`kontoauszuege`.`konto` AS `parent_id`,`konten`.`bezeichnung` AS `bezeichnung` from (`kontoauszuege` left join `konten` on(`konten`.`id` = `kontoauszuege`.`konto`)) union select '' AS `datum`,'kontorahmen' AS `'kontorahmen'`,`kontorahmen`.`id` AS `id`,concat(`kontorahmen`.`sachkonto`,' - ',`kontorahmen`.`beschriftung`) AS `beschriftung`,'','','' from `kontorahmen`) `fo` where `fo`.`datum` >= (select `firmendaten_werte`.`wert` from `firmendaten_werte` where `firmendaten_werte`.`name` = 'fibu_buchungen_startdatum') or `fo`.`datum` = ''" + "Create": "CREATE VIEW `fibu_objekte_view` AS select `fo`.`datum` AS `datum`,`fo`.`typ` AS `typ`,`fo`.`id` AS `id`,`fo`.`info` AS `info`,`fo`.`parent_typ` AS `parent_typ`,`fo`.`parent_id` AS `parent_id`,`fo`.`parent_info` AS `parent_info`,`fo`.`typ` in ('rechnung','gutschrift','verbindlichkeit','auftrag') AS `is_beleg` from (select `auftrag`.`datum` AS `datum`,'auftrag' AS `typ`,`auftrag`.`id` AS `id`,`auftrag`.`belegnr` AS `info`,'adresse' AS `parent_typ`,`auftrag`.`adresse` AS `parent_id`,`auftrag`.`name` AS `parent_info` from `auftrag` where `auftrag`.`belegnr` <> '' union select `rechnung`.`datum` AS `datum`,'rechnung' AS `typ`,`rechnung`.`id` AS `id`,`rechnung`.`belegnr` AS `info`,'adresse' AS `parent_type`,`rechnung`.`adresse` AS `parent_id`,`rechnung`.`name` AS `parent_info` from `rechnung` where `rechnung`.`belegnr` <> '' and `rechnung`.`zahlungsstatus` <> 'bezahlt' union select `gutschrift`.`datum` AS `datum`,'gutschrift' AS `gutschrift`,`gutschrift`.`id` AS `id`,`gutschrift`.`belegnr` AS `belegnr`,'adresse' AS `parent_type`,`gutschrift`.`adresse` AS `parent_id`,`gutschrift`.`name` AS `parent_info` from `gutschrift` where `gutschrift`.`belegnr` <> '' and `gutschrift`.`zahlungsstatus` <> 'bezahlt' union select `verbindlichkeit`.`rechnungsdatum` AS `rechnungsdatum`,'verbindlichkeit' AS `verbindlichkeit`,`verbindlichkeit`.`id` AS `id`,`verbindlichkeit`.`rechnung` AS `belegnr`,'adresse' AS `parent_type`,`verbindlichkeit`.`adresse` AS `parent_id`,`adresse`.`name` AS `name` from (`verbindlichkeit` join `adresse` on(`verbindlichkeit`.`adresse` = `adresse`.`id`)) where `verbindlichkeit`.`belegnr` <> '' and `verbindlichkeit`.`status` <> 'bezahlt' union select `kontoauszuege`.`buchung` AS `buchung`,'kontoauszuege' AS `kontoauszuege`,`kontoauszuege`.`id` AS `id`,concat(`konten`.`kurzbezeichnung`,' - ',`kontoauszuege`.`buchungstext`) AS `buchungstext`,'konten' AS `parent_type`,`kontoauszuege`.`konto` AS `parent_id`,`konten`.`bezeichnung` AS `bezeichnung` from (`kontoauszuege` left join `konten` on(`konten`.`id` = `kontoauszuege`.`konto`)) union select '' AS `datum`,'kontorahmen' AS `'kontorahmen'`,`kontorahmen`.`id` AS `id`,concat(`kontorahmen`.`sachkonto`,' - ',`kontorahmen`.`beschriftung`) AS `beschriftung`,'','','' from `kontorahmen`) `fo` where `fo`.`datum` >= (select `firmendaten_werte`.`wert` from `firmendaten_werte` where `firmendaten_werte`.`name` = 'fibu_buchungen_startdatum') or `fo`.`datum` = ''" }, { "name": "fibu_buchungen_alle_view", diff --git a/www/pages/auftrag.php b/www/pages/auftrag.php index b77d9802..3d5c29d3 100644 --- a/www/pages/auftrag.php +++ b/www/pages/auftrag.php @@ -3434,7 +3434,7 @@ class Auftrag extends GenAuftrag $zahlung['datum'], " ".ucfirst($zahlung['doc_typ'])." - ".$zahlung['doc_belegnr']." + ".$zahlung['doc_info']." ", $zahlung['betrag'], $zahlung['waehrung'] diff --git a/www/pages/content/fibu_buchungen_edit.tpl b/www/pages/content/fibu_buchungen_edit.tpl index d47a658b..b8b158ac 100644 --- a/www/pages/content/fibu_buchungen_edit.tpl +++ b/www/pages/content/fibu_buchungen_edit.tpl @@ -17,7 +17,7 @@
- {|Buchung|} + {|Einzelbuchung bearbeiten.|} diff --git a/www/pages/content/fibu_buchungen_einzelzuordnen.tpl b/www/pages/content/fibu_buchungen_einzelzuordnen.tpl index 8d72c7b2..c775a85c 100644 --- a/www/pages/content/fibu_buchungen_einzelzuordnen.tpl +++ b/www/pages/content/fibu_buchungen_einzelzuordnen.tpl @@ -9,21 +9,27 @@
-
- - {|Buchung|} - - - Saldo: [DOC_SALDO]
- "[DOC_ZUORDNUNG]" -
-
- [TAB1] - -
+
+
+ {|Einzelsaldo zuordnen und auf mehrere Gegenbelege oder Sachkonto verbuchen.|} +
+ + + + + + +
+ "[DOC_ZUORDNUNG]" +
+ Saldo: [DOC_SALDO] +
+
+ [TAB1] +
- Stapelverarbeitung + Stapelverarbeitung @@ -32,13 +38,18 @@   +  Sachkonto: + + + + - + diff --git a/www/pages/fibu_buchungen.php b/www/pages/fibu_buchungen.php index 2702b724..972388e2 100644 --- a/www/pages/fibu_buchungen.php +++ b/www/pages/fibu_buchungen.php @@ -235,7 +235,7 @@ class Fibu_buchungen { ' ', ['sql' => 'COALESCE(fo.info,\'\')'], ' ', - ['sql' => "if (SUM(fbd.betrag) IS NULL,'',CONCAT('(Saldo ',".$this->app->erp->FormatMenge('SUM(fbd.betrag)',2).",', Diff. ',".$this->app->erp->FormatMenge('SUM(fbd.betrag)+saldonum',2).",')'))"], + ['sql' => "if (SUM(fbd.betrag) IS NULL,'',CONCAT('(Saldo ',".$this->app->erp->FormatMenge('SUM(fbd.betrag)',2).",', Diff. ',".$this->app->erp->FormatMenge('SUM(fbd.betrag)+saldonum',2).",', ',".$this->app->erp->FormatMenge('(SUM(fbd.betrag)+saldonum)/SUM(fbd.betrag)*100',0).",'%)'))"], ' ', '' ); +// ['sql' => "if (SUM(fbd.betrag) IS NULL,'',CONCAT('(Saldo ',".$this->app->erp->FormatMenge('SUM(fbd.betrag)',2).",', Diff. ',".$this->app->erp->FormatMenge('SUM(fbd.betrag)+saldonum',2).",')'))"], + $werte = array ( ' 'fo.typ'], @@ -462,9 +469,11 @@ class Fibu_buchungen { '' ); + $calculated = 'CONVERT(COALESCE(-SUM(fba.betrag*(1-('.$abschlag.'/100))),0),DECIMAL(12,2))'; + $werte = array ( 'app->erp->FormatUCfirst("fo.typ")." as typ, ".$this->app->erp->ConcatSQL($objektlink)." AS info, ".$this->app->erp->ConcatSQL($parentlink)." AS parent_info, - SUM(fba.betrag) as saldonum, + ".$this->app->erp->FormatMenge('SUM(fba.betrag)',2)." as saldonum, waehrung, + ".$this->app->erp->FormatMenge($calculated,2)." as calculated, ".$this->app->erp->ConcatSQL($werte)." AS werte FROM fibu_objekte fo @@ -498,7 +508,7 @@ class Fibu_buchungen { //echo($sql." WHERE ".$where." ".$groupby); - $sumcol= array(6); + $sumcol= array(6,8); break; } @@ -567,8 +577,7 @@ class Fibu_buchungen { /* * Edit fibu_buchungen item - * If id is empty, create a new one - */ + */ function fibu_buchungen_edit() { $id = $this->app->Secure->GetGET('id'); @@ -597,14 +606,14 @@ class Fibu_buchungen { $this->app->Tpl->Set('ID', $id); $this->app->erp->MenuEintrag("index.php?module=fibu_buchungen&action=edit&id=$id", "Details"); - $this->app->erp->MenuEintrag("index.php?module=fibu_buchungen&action=list", "Zurück zur Übersicht"); + $this->app->erp->MenuEintrag("index.php?module=fibu_buchungen&action=list#tabs-2", "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'; + $this->fibu_buchungen_list(); + return; } if ($submit != '') @@ -648,6 +657,7 @@ class Fibu_buchungen { } else { $this->app->Tpl->Set('MESSAGE', "
Die Einstellungen wurden erfolgreich übernommen.
"); } + $this->fibu_rebuild_tables(); } @@ -871,6 +881,7 @@ class Fibu_buchungen { $doc_typ = $this->app->Secure->GetGET('typ'); $this->app->User->SetParameter('fibu_buchungen_doc_typ', $doc_typ); + $this->app->erp->Headlines('Buchhaltung','zuordnen '.strtoupper($doc_typ)); $this->app->YUI->TableSearch('TAB1', 'fibu_buchungen_zuordnen', "show", "", "", basename(__FILE__), __CLASS__); $this->app->YUI->TableSearch('TAB2', 'fibu_buchungen_list', "show", "", "", basename(__FILE__), __CLASS__); @@ -905,6 +916,8 @@ class Fibu_buchungen { $this->app->User->SetParameter('fibu_buchungen_doc_id', $von_id); $aktion = $this->app->Secure->GetPOST('sel_aktion'); $sachkonto = $this->app->Secure->GetPOST('sachkonto'); + $abschlag = $this->app->Secure->GetPOST('abschlag'); + $this->app->User->SetParameter('fibu_buchungen_abschlag', $abschlag); $account_id = null; if (!empty($sachkonto)) { @@ -1006,15 +1019,19 @@ class Fibu_buchungen { } // Reload after booking - $sql = "SELECT doc_typ, doc_id, doc_info, waehrung, sum(betrag) as saldonum,".$this->app->erp->FormatMenge("sum(betrag)",2)." as saldo FROM fibu_buchungen_alle WHERE typ = '".$von_typ."' AND id = '".$von_id."'"; - $von_row = $this->app->DB->SelectArr($sql)[0]; - $von_info = $von_row['doc_info']; - $von_saldonum = $von_row['saldonum']; - $von_saldo = $von_row['saldo']; - $von_waehrung = $von_row['waehrung']; + $sql = "SELECT fo.info, fb.waehrung, sum(fb.betrag) as saldonum,".$this->app->erp->FormatMenge("sum(fb.betrag)",2)." as saldo FROM fibu_buchungen_alle fb INNER JOIN fibu_objekte fo ON fb.typ = fo.typ AND fb.id = fo.id WHERE fb.typ = '".$von_typ."' AND fb.id = '".$von_id."'"; + $row = $this->app->DB->SelectArr($sql)[0]; + + $saldonum = $row['saldonum']; + $saldo = $row['saldo']; + $waehrung = $row['waehrung']; + $info = $row['info']; - $this->app->Tpl->Set('DOC_ZUORDNUNG', ucfirst($von_typ)." ".$von_info); - $this->app->Tpl->Set('DOC_SALDO',$von_saldo." ".$von_waehrung); + $this->app->Tpl->Set('DOC_ZUORDNUNG', ucfirst($von_typ)." ".$info); + $this->app->Tpl->Set('DOC_SALDO',$saldo." ".$waehrung); + $this->app->Tpl->Set('ABSCHLAG',$abschlag); + + $this->app->erp->Headlines('Buchhaltung','Einzelzuordnung '.strtoupper($von_typ)); $this->app->YUI->TableSearch('TAB1', 'fibu_buchungen_einzelzuordnen', "show", "", "", basename(__FILE__), __CLASS__);
 Mit Abweichung buchen 
+ % Abschlag auf Buchungsbetrag
 alle markieren    +  Sachkonto: