From c89c36e59623deb788616e58bc4798fb7d6c4a2b Mon Sep 17 00:00:00 2001 From: OpenXE <> Date: Sat, 10 Feb 2024 17:44:21 +0100 Subject: [PATCH] exportbuchhaltung added new verbindlichkeit, lieferantengutschrift --- .../content/exportbuchhaltung_export.tpl | 4 ++ www/pages/exportbuchhaltung.php | 51 ++++++++++++++----- 2 files changed, 42 insertions(+), 13 deletions(-) diff --git a/www/pages/content/exportbuchhaltung_export.tpl b/www/pages/content/exportbuchhaltung_export.tpl index 4014e6f7..9cf337f7 100644 --- a/www/pages/content/exportbuchhaltung_export.tpl +++ b/www/pages/content/exportbuchhaltung_export.tpl @@ -27,6 +27,10 @@ {|Verbindlichkeiten:|} + + {|Lieferantengutschriften:|} + + Datum von: diff --git a/www/pages/exportbuchhaltung.php b/www/pages/exportbuchhaltung.php index 4a541abe..fe6518bc 100644 --- a/www/pages/exportbuchhaltung.php +++ b/www/pages/exportbuchhaltung.php @@ -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 = "
Bitte mindestens eine Belegart auswählen.
"; $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', @@ -479,7 +483,7 @@ class Exportbuchhaltung ), array( 'typ' => 'verbindlichkeit', - 'subtable' => 'verbindlichkeit_kontierung', + 'subtable' => 'verbindlichkeit_position', 'kennzeichen' => 'H', 'kennzeichen_negativ' => 'S', 'field_belegnr' => 'b.rechnung', @@ -490,11 +494,30 @@ class Exportbuchhaltung '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 ) ); @@ -505,19 +528,20 @@ class Exportbuchhaltung } $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 + b.waehrung as pos_waehrung FROM ".$typ['typ']." b LEFT JOIN @@ -535,6 +559,7 @@ class Exportbuchhaltung FROM ( SELECT + id, belegnr, datum, betrag_gesamt, @@ -546,10 +571,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)) { @@ -590,7 +615,7 @@ class Exportbuchhaltung } } } // diffignore - + // Query position data $arr = $this->app->DB->Query($sql); while ($row = $this->app->DB->Fetch_Assoc($arr)) { @@ -619,7 +644,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