From 1f7b1af1f196741cf096ef1113e1f7de95d08ba6 Mon Sep 17 00:00:00 2001
From: OpenXE <>
Date: Mon, 14 Oct 2024 18:55:46 +0200
Subject: [PATCH] mahnwesen added tabs
---
www/pages/content/mahnwesen_list.tpl | 1 -
www/pages/mahnwesen.php | 149 ++++++++++++++++-----------
2 files changed, 86 insertions(+), 64 deletions(-)
diff --git a/www/pages/content/mahnwesen_list.tpl b/www/pages/content/mahnwesen_list.tpl
index c55980bd..c2ae4a75 100644
--- a/www/pages/content/mahnwesen_list.tpl
+++ b/www/pages/content/mahnwesen_list.tpl
@@ -30,7 +30,6 @@
-
diff --git a/www/pages/mahnwesen.php b/www/pages/mahnwesen.php
index b93ca08a..62f8ea0b 100644
--- a/www/pages/mahnwesen.php
+++ b/www/pages/mahnwesen.php
@@ -40,6 +40,8 @@ class Mahnwesen {
// columns that are aligned right (numbers etc)
// $alignright = array(4,5,6,7,8);
+ $mahnwesen_stufe_filter = $this->app->DB->real_escape_string($this->app->User->GetParameter('mahnwesen_stufe_filter'));
+
$faellig_datum = "DATE_ADD(r.datum, INTERVAL r.zahlungszieltage DAY)";
$faellig_tage = "DATEDIFF(CURRENT_DATE,DATE_ADD(r.datum, INTERVAL r.zahlungszieltage DAY))";
$mahn_druck = "if(m.druck,'Ja','')";
@@ -56,6 +58,8 @@ class Mahnwesen {
$menu = "
";
+ $sql_tables = "rechnung r LEFT JOIN projekt p ON p.id=r.projekt LEFT JOIN adresse adr ON r.adresse=adr.id LEFT JOIN auftrag au ON au.id = r.auftragid LEFT JOIN mahnwesen m ON r.mahnwesen = m.id";
+
$sql = "SELECT SQL_CALC_FOUND_ROWS
r.id,
$dropnbox,
@@ -81,9 +85,13 @@ class Mahnwesen {
if(r.mahnwesen_gesperrt,'Ja',''),
REPLACE(r.mahnwesen_internebemerkung,'\r\n','
'),
r.id
- FROM rechnung r LEFT JOIN projekt p ON p.id=r.projekt LEFT JOIN adresse adr ON r.adresse=adr.id LEFT JOIN auftrag au ON au.id = r.auftragid LEFT JOIN mahnwesen m ON r.mahnwesen = m.id";
+ FROM ".$sql_tables;
$where = " r.belegnr <> ''";
+
+ if (!empty($mahnwesen_stufe_filter)) {
+ $where .= " AND m.id = '".$mahnwesen_stufe_filter."'";
+ }
// Toggle filters
$this->app->Tpl->Add('JQUERYREADY', "$('#zu_mahnen').click( function() { fnFilterColumn1( 0 ); } );");
@@ -126,8 +134,7 @@ class Mahnwesen {
}
// END Toggle filters
-
- $count = "SELECT count(DISTINCT id) FROM rechnung r WHERE $where";
+ $count = "SELECT count(DISTINCT r.id) FROM ".$sql_tables." WHERE $where";
// $groupby = "";
break;
@@ -178,66 +185,6 @@ class Mahnwesen {
function mahnwesen_list() {
$this->app->erp->MenuEintrag("index.php?module=mahnwesen&action=list", "Übersicht");
-// $this->app->erp->MenuEintrag("index.php?module=mahnwesen&action=create", "Neu anlegen");
-// $this->app->erp->MenuEintrag("index.php?module=mahnwesen&action=einstellungen", "Einstellungen");
-
- if($this->app->Secure->GetPOST('mahnstufe_berechnen') && $this->app->erp->RechteVorhanden('rechnung', 'edit')) {
- $this->app->erp->rechnung_zahlstatus_berechnen();
-
- $sql = "
- SELECT
- r.id, r.mahnwesen, rid_mid.mahnwesen_neu
- FROM
- rechnung r
- INNER JOIN
- (
- SELECT
- id_tage.id,
- m.id AS mahnwesen_neu
- FROM
- mahnwesen m
- INNER JOIN(
- SELECT
- id,
- MAX(tage) AS tage
- FROM
- (
- SELECT
- r.id,
- m.tage
- FROM
- rechnung r
- INNER JOIN mahnwesen m ON
- DATEDIFF(
- CURRENT_DATE,
- DATE_ADD(
- r.datum,
- INTERVAL r.zahlungszieltage DAY
- )
- ) > m.tage
- WHERE
- r.zahlungsstatus = 'offen'
- ORDER BY
- `r`.`id` ASC
- ) temp
- GROUP BY
- id
- ) id_tage
- ON
- m.tage = id_tage.tage
- ) rid_mid
- ON r.id = rid_mid.id
- ";
- $offene_rechnungen = $this->app->DB->SelectArr($sql);
-
- foreach ($offene_rechnungen as $offene_rechnung) {
- if ($offene_rechnung['mahnwesen'] != $offene_rechnung['mahnwesen_neu']) {
- $sql = "UPDATE rechnung set mahnwesen = ".$offene_rechnung['mahnwesen_neu'].", versendet_mahnwesen = 0 WHERE id = ".$offene_rechnung['id'];
- $this->app->DB->Update($sql);
- }
- }
-
- }
if($this->app->Secure->GetPOST('sel_aktion') && $this->app->erp->RechteVorhanden('rechnung', 'edit'))
{
@@ -354,6 +301,76 @@ class Mahnwesen {
}
} // ende ausfuehren
+ // Refresh status and create tabs
+ $this->app->erp->rechnung_zahlstatus_berechnen();
+ $sql = "
+ SELECT
+ r.id,
+ r.mahnwesen,
+ r.versendet_mahnwesen,
+ rid_mid.mahnwesen_neu,
+ rid_mid.name
+ FROM
+ rechnung r
+ INNER JOIN
+ (
+ SELECT
+ id_tage.id,
+ m.id AS mahnwesen_neu,
+ m.name,
+ m.tage
+ FROM
+ mahnwesen m
+ INNER JOIN(
+ SELECT
+ id,
+ MAX(tage) AS tage
+ FROM
+ (
+ SELECT
+ r.id,
+ m.tage
+ FROM
+ rechnung r
+ INNER JOIN mahnwesen m ON
+ DATEDIFF(
+ CURRENT_DATE,
+ DATE_ADD(
+ r.datum,
+ INTERVAL r.zahlungszieltage DAY
+ )
+ ) > m.tage
+ WHERE
+ r.zahlungsstatus = 'offen'
+ ORDER BY
+ `r`.`id` ASC
+ ) temp
+ GROUP BY
+ id
+ ) id_tage
+ ON
+ m.tage = id_tage.tage
+ ) rid_mid
+ ON r.id = rid_mid.id
+ WHERE mahnwesen <> mahnwesen_neu OR versendet_mahnwesen = 0
+ ORDER BY rid_mid.tage
+ ";
+ $offene_rechnungen = $this->app->DB->SelectArr($sql);
+
+ $menus = array();
+
+ foreach ($offene_rechnungen as $offene_rechnung) {
+ if ($offene_rechnung['mahnwesen'] != $offene_rechnung['mahnwesen_neu']) {
+ $sql = "UPDATE rechnung set mahnwesen = ".$offene_rechnung['mahnwesen_neu'].", versendet_mahnwesen = 0 WHERE id = ".$offene_rechnung['id'];
+ $this->app->DB->Update($sql);
+ }
+
+ if (!in_array($offene_rechnung['mahnwesen_neu'],$menus) && count($menus) < 5) {
+ $menus[] = $offene_rechnung['mahnwesen_neu'];
+ $this->app->erp->MenuEintrag("index.php?module=mahnwesen&action=list&stufe=".$offene_rechnung['mahnwesen_neu'], $this->app->DB->real_escape_string($offene_rechnung['name']));
+ }
+ }
+
if (!empty($msg)) {
$this->app->Tpl->Set('MESSAGE', $msg);
}
@@ -364,6 +381,12 @@ class Mahnwesen {
$this->app->Tpl->Set('SELDRUCKER', $this->app->erp->GetSelectDrucker($this->app->User->GetParameter('rechnung_list_drucker')));
+ $mahnwesen_stufe_filter = $this->app->Secure->GetGET('stufe');
+ $this->app->User->SetParameter('mahnwesen_stufe_filter', $mahnwesen_stufe_filter);
+ if (!empty($mahnwesen_stufe_filter)) {
+ $this->app->Tpl->Set('KURZUEBERSCHRIFT2',"Stufe: ".$this->app->DB->Select("SELECT name FROM mahnwesen WHERE id = ".$mahnwesen_stufe_filter." LIMIT 1"));
+ }
+
$this->app->YUI->TableSearch('TAB1', 'mahnwesen_list', "show", "", "", basename(__FILE__), __CLASS__);
$this->app->Tpl->Parse('PAGE', "mahnwesen_list.tpl");
}