app->Conf->WFconf['defaulttheme']."/images/pdf.svg\" border=\"0\">')
),
From 11ad10424240261efa1278ca7d79e145fb447b19 Mon Sep 17 00:00:00 2001
From: OpenXE <>
Date: Thu, 5 Dec 2024 10:07:01 +0100
Subject: [PATCH 3/6] xmlrechnung archivieren WIP
---
www/pages/rechnung.php | 155 +++++++++++++++++++++++++----------------
1 file changed, 94 insertions(+), 61 deletions(-)
diff --git a/www/pages/rechnung.php b/www/pages/rechnung.php
index c214525f..367b983d 100644
--- a/www/pages/rechnung.php
+++ b/www/pages/rechnung.php
@@ -76,6 +76,7 @@ class Rechnung extends GenRechnung
$this->app->ActionHandler("dateien","RechnungDateien");
$this->app->ActionHandler("pdffromarchive","RechnungPDFfromArchiv");
$this->app->ActionHandler("archivierepdf","RechnungArchivierePDF");
+ $this->app->ActionHandler("archivierexml","RechnungArchiviereXML");
$this->app->ActionHandler("summe","RechnungSumme"); // nur fuer rechte
$this->app->ActionHandler("belegnredit","belegnredit"); // nur fuer rechte
@@ -201,7 +202,30 @@ class Rechnung extends GenRechnung
$this->app->ExitXentral();
}
+ function RechnungArchiviereXML() {
+ $id = (int)$this->app->Secure->GetGET('id');
+ $result = $this->RechnungSmarty(json: false, returnvalue: true);
+ if ($result['success']) {
+ $this->app->erp->CreateDateiWithStichwort(
+ name: $result['filename'].'.xml',
+ titel: $result['title'],
+ beschreibung: '',
+ nummer: '',
+ datei: $result['xml'],
+ ersteller: $this->app->User->GetName(),
+ subjekt: 'rechnung',
+ objekt: 'rechnung',
+ parameter: $id
+ );
+ } else {
+ throw new exception("XML Rechnung fehlgeschlagen!");
+ }
+
+ $this->app->DB->Update("UPDATE rechnung SET schreibschutz='1' WHERE id='$id'");
+ $this->app->Location->execute('index.php?module=rechnung&action=edit&id='.$id);
+ }
+
function RechnungArchivierePDF()
{
$id = (int)$this->app->Secure->GetGET('id');
@@ -1284,9 +1308,10 @@ class Rechnung extends GenRechnung
}
}
- function RechnungSmarty($json = false) {
+ function RechnungSmarty($json = false, $returnvalue = false) {
$id = $this->app->Secure->GetGET('id');
$result = Array();
+ $success = true;
$result['rechnungssteller']['name'] = $this->app->erp->Firmendaten('name');
$result['rechnungssteller']['strasse'] = $this->app->erp->Firmendaten('strasse');
@@ -1334,32 +1359,44 @@ class Rechnung extends GenRechnung
$this->remove_html_entities_from_array($result);
$this->remove_CDATA_fragments_from_array($result);
- if ($json) {
- header('Content-type:text/plain');
- header('Content-Disposition: attachment;filename='.$filename.'.json');
- echo(json_encode($result,JSON_PRETTY_PRINT));
+ if ($json) {
+ $headers[] = 'Content-type:text/plain';
+ $headers[] = 'Content-Disposition: attachment;filename='.$filename.'.json';
+ $output = json_encode($result,JSON_PRETTY_PRINT);
} else {
+ $headers[] = 'Content-type:text/xml';
+ $headers[] = 'Content-Disposition: attachment;filename='.$filename.'.xml';
$template_id = $this->GetXMLSmartyTemplate($id);
- if(empty($template_id)) {
- header('Content-type:text/xml');
- header('Content-Disposition: attachment;filename='.$filename.'.xml');
- echo('
+ if(empty($template_id)) {
+ $output = '
Kein Smarty Template an der Addresse hinterlegt!
-');
+';
+ $success = false;
} else {
$template = $this->app->DB->Select("SELECT template from smarty_templates WHERE id = '$template_id' LIMIT 1");
$smarty = new Smarty;
$directory = $this->app->erp->GetTMP().'/smarty/templates';
$smarty->setCompileDir($directory);
- $smarty->assign('rechnung', $result);
- $html = $smarty->fetch('string:'.$template);
- header('Content-type:application/xml');
- header('Content-Disposition: attachment;filename='.$filename.'.xml');
- echo($html);
- }
+ $smarty->assign('rechnung', $output);
+ $output = $smarty->fetch('string:'.$template);
+ }
}
- $this->app->ExitXentral();
+
+ if ($returnvalue) {
+ return(Array(
+ 'success' => $success,
+ 'title' => 'Rechnung '.$result['kopf']['belegnr'],
+ 'filename' => $filename,
+ 'xml' => $output
+ ));
+ } else {
+ foreach ($headers as $header) {
+ header($header);
+ }
+ echo($output);
+ $this->app->ExitXentral();
+ }
}
function RechnungSuche()
@@ -1732,38 +1769,6 @@ class Rechnung extends GenRechnung
$this->app->erp->CheckBearbeiter($id,'rechnung');
$this->app->erp->CheckBuchhaltung($id,'rechnung');
- $invoiceArr = $this->app->DB->SelectRow(
- sprintf(
- 'SELECT zahlungsweise,zahlungszieltage,dta_datei,status,zahlungsstatus,schreibschutz FROM rechnung WHERE id= %d LIMIT 1',
- (int)$id
- )
- );
- $zahlungsweise= $invoiceArr['zahlungsweise'];
- $zahlungszieltage= $invoiceArr['zahlungszieltage'];
- $zahlungsstatus= $invoiceArr['zahlungsstatus'];
- if($zahlungsweise==='rechnung' && $zahlungszieltage<1)
- {
- $this->app->Tpl->Add('MESSAGE',"Hinweis: Fälligkeit auf \"sofort\", da Zahlungsziel in Tagen auf 0 Tage gesetzt ist!
");
- }
-
- $status= $invoiceArr['status'];
- $schreibschutz= $invoiceArr['schreibschutz'];
- if($status !== 'angelegt' && $status !== 'angelegta' && $status !== 'a')
- {
- $Brief = new Briefpapier($this->app);
- if($Brief->zuArchivieren($id, "rechnung"))
- {
- $this->app->Tpl->Add('MESSAGE',"Die Rechnung ist noch nicht archiviert! Bitte versenden oder manuell archivieren.
");
- }elseif(!$this->app->DB->Select("SELECT versendet FROM rechnung WHERE id = '$id' LIMIT 1"))
- {
- $this->app->Tpl->Add('MESSAGE',"Die Rechnung wurde noch nicht versendet!
");
- }
- }
- $this->app->erp->RechnungNeuberechnen($id); //BENE
-
- $this->RechnungMiniDetail('MINIDETAIL',false); //BENE
- $this->app->Tpl->Set('ICONMENU',$this->RechnungIconMenu($id));
- $this->app->Tpl->Set('ICONMENU2',$this->RechnungIconMenu($id,2));
if($id > 0){
$rechnungarr = $this->app->DB->SelectRow("SELECT * FROM rechnung WHERE id='$id' LIMIT 1");
}
@@ -1775,18 +1780,46 @@ class Rechnung extends GenRechnung
$soll = 0;
$projekt = 0;
if(!empty($rechnungarr)){
- $nummer = $rechnungarr['belegnr'];//$this->app->DB->Select("SELECT belegnr FROM rechnung WHERE id='$id' LIMIT 1");
- $kundennummer = $rechnungarr['kundennummer'];//$this->app->DB->Select("SELECT kundennummer FROM rechnung WHERE id='$id' LIMIT 1");
- $adresse = $rechnungarr['adresse'];//$this->app->DB->Select("SELECT adresse FROM rechnung WHERE id='$id' LIMIT 1");
- $punkte = $rechnungarr['punkte'];//$this->app->DB->Select("SELECT punkte FROM rechnung WHERE id='$id' LIMIT 1");
- $bonuspunkte = $rechnungarr['bonuspunkte'];//$this->app->DB->Select("SELECT bonuspunkte FROM rechnung WHERE id='$id' LIMIT 1");
- $soll = $rechnungarr['soll'];//$this->app->DB->Select("SELECT soll FROM rechnung WHERE id='$id' LIMIT 1");
- $projekt = $rechnungarr['projekt'];
-
- $skontosoll = $this->app->DB->Select("SELECT TRUNCATE(soll*(1-(zahlungszielskonto/100)),2) as skontosoll FROM rechnung where id = '".$id."' LIMIT 1");
-
- $xmlrechnung = $rechnungarr['xmlrechnung'];
+ $nummer = $rechnungarr['belegnr'];//$this->app->DB->Select("SELECT belegnr FROM rechnung WHERE id='$id' LIMIT 1");
+ $kundennummer = $rechnungarr['kundennummer'];//$this->app->DB->Select("SELECT kundennummer FROM rechnung WHERE id='$id' LIMIT 1");
+ $adresse = $rechnungarr['adresse'];//$this->app->DB->Select("SELECT adresse FROM rechnung WHERE id='$id' LIMIT 1");
+ $punkte = $rechnungarr['punkte'];//$this->app->DB->Select("SELECT punkte FROM rechnung WHERE id='$id' LIMIT 1");
+ $bonuspunkte = $rechnungarr['bonuspunkte'];//$this->app->DB->Select("SELECT bonuspunkte FROM rechnung WHERE id='$id' LIMIT 1");
+ $soll = $rechnungarr['soll'];//$this->app->DB->Select("SELECT soll FROM rechnung WHERE id='$id' LIMIT 1");
+ $projekt = $rechnungarr['projekt'];
+ $skontosoll = $this->app->DB->Select("SELECT TRUNCATE(soll*(1-(zahlungszielskonto/100)),2) as skontosoll FROM rechnung where id = '".$id."' LIMIT 1");
+ $xmlrechnung = $rechnungarr['xmlrechnung'];
+ $zahlungsweise= $rechnungarr['zahlungsweise'];
+ $zahlungszieltage= $rechnungarr['zahlungszieltage'];
+ $zahlungsstatus= $rechnungarr['zahlungsstatus'];
+ if($zahlungsweise==='rechnung' && $zahlungszieltage<1)
+ {
+ $this->app->Tpl->Add('MESSAGE',"Hinweis: Fälligkeit auf \"sofort\", da Zahlungsziel in Tagen auf 0 Tage gesetzt ist!
");
+ }
+ $status= $rechnungarr['status'];
+ $schreibschutz= $rechnungarr['schreibschutz'];
}
+ if($status !== 'angelegt' && $status !== 'angelegta' && $status !== 'a')
+ {
+ $Brief = new Briefpapier($this->app);
+ if($Brief->zuArchivieren($id, "rechnung"))
+ {
+ if ($xmlrechnung) {
+ $archiviere = "archivierexml";
+ } else {
+ $archiviere = "archivierepdf";
+ }
+ $this->app->Tpl->Add('MESSAGE',"Die Rechnung ist noch nicht archiviert! Bitte versenden oder manuell archivieren.
");
+ }elseif(!$this->app->DB->Select("SELECT versendet FROM rechnung WHERE id = '$id' LIMIT 1"))
+ {
+ $this->app->Tpl->Add('MESSAGE',"Die Rechnung wurde noch nicht versendet!
");
+ }
+ }
+ $this->app->erp->RechnungNeuberechnen($id); //BENE
+
+ $this->RechnungMiniDetail('MINIDETAIL',false); //BENE
+ $this->app->Tpl->Set('ICONMENU',$this->RechnungIconMenu($id));
+ $this->app->Tpl->Set('ICONMENU2',$this->RechnungIconMenu($id,2));
$this->app->Tpl->Set('PUNKTE',"");
$this->app->Tpl->Set('BONUSPUNKTE',"");
@@ -2157,7 +2190,7 @@ class Rechnung extends GenRechnung
' überein '
);
}
-
+
parent::RechnungEdit();
if($id > 0 && $this->app->DB->Select(
sprintf(
From bbe92dce2adb46fdf429f3ed7b8ec54e1d028d21 Mon Sep 17 00:00:00 2001
From: OpenXE <>
Date: Thu, 5 Dec 2024 10:57:38 +0100
Subject: [PATCH 4/6] rechnung archive XML and PDF separated
---
www/lib/class.erpapi.php | 16 +++++++--
www/pages/rechnung.php | 71 +++++++++++++++++-----------------------
2 files changed, 44 insertions(+), 43 deletions(-)
diff --git a/www/lib/class.erpapi.php b/www/lib/class.erpapi.php
index 8041d826..11ffc712 100644
--- a/www/lib/class.erpapi.php
+++ b/www/lib/class.erpapi.php
@@ -2199,6 +2199,18 @@ public function NavigationHooks(&$menu)
return false;
}
+ // Rechnung special treatment because of XML
+ function RechnungArchivieren($id) {
+ $sql = "SELECT xmlrechnung FROM rechnung WHERE id = '".$id."' LIMIT 1";
+ $xmlrechnung = $this->app->DB->Select($sql);
+ if ($xmlrechnung) {
+ $rechnungsmodul = $this->app->loadModule('rechnung', false);
+ return($rechnungsmodul->RechnungArchiviereXML($id));
+ } else {
+ $this->PDFArchivieren('rechnung',$id,true);
+ }
+ }
+
// @refactor in Location Klasse
function UrlOrigin($s, $use_forwarded_host=false)
{
@@ -3267,7 +3279,7 @@ function LieferscheinEinlagern($id,$grund="Lieferschein Einlagern", $lpiids = nu
);
$this->app->erp->ANABREGSNeuberechnen($invoice['id'], 'rechnung');
if($invoice['schreibschutz']) {
- $this->app->erp->PDFArchivieren('rechunng', $invoice['id'], true);
+ $this->app->erp->RechnungArchivieren($invoice['id']);
}
}
}
@@ -15241,7 +15253,7 @@ function Gegenkonto($ust_befreit,$ustid='', $doctype = '', $doctypeId = 0)
return;
}
if(!empty($rechnungarr['schreibschutz']) && !empty($rechnungarr['zuarchivieren'])) {
- $this->app->erp->PDFArchivieren('rechnung', $id, true);
+ $this->app->erp->RechnungArchivieren($id);
}
$adresse = $rechnungarr['adresse'];
$to = $rechnungarr['email'];
diff --git a/www/pages/rechnung.php b/www/pages/rechnung.php
index 367b983d..e97f6fc5 100644
--- a/www/pages/rechnung.php
+++ b/www/pages/rechnung.php
@@ -202,9 +202,11 @@ class Rechnung extends GenRechnung
$this->app->ExitXentral();
}
- function RechnungArchiviereXML() {
- $id = (int)$this->app->Secure->GetGET('id');
- $result = $this->RechnungSmarty(json: false, returnvalue: true);
+ function RechnungArchiviereXML($id = null) {
+ if ($id === null) {
+ $id = (int)$this->app->Secure->GetGET('id');
+ }
+ $result = $this->RechnungSmarty(id: $id, json: false, returnvalue: true);
if ($result['success']) {
$this->app->erp->CreateDateiWithStichwort(
@@ -222,36 +224,14 @@ class Rechnung extends GenRechnung
throw new exception("XML Rechnung fehlgeschlagen!");
}
- $this->app->DB->Update("UPDATE rechnung SET schreibschutz='1' WHERE id='$id'");
+ $this->app->DB->Update("UPDATE rechnung SET schreibschutz='1', zuarchivieren = '0' WHERE id='$id'");
$this->app->Location->execute('index.php?module=rechnung&action=edit&id='.$id);
}
function RechnungArchivierePDF()
{
$id = (int)$this->app->Secure->GetGET('id');
- $projekt = $this->app->DB->Select("SELECT projekt FROM rechnung WHERE id = '$id' LIMIT 1");
- $this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable;
- if(class_exists('RechnungPDFCustom'))
- {
- $Brief = new RechnungPDFCustom($this->app,$projekt);
- }else{
- $Brief = new RechnungPDF($this->app,$projekt);
- }
- $Brief->GetRechnung($id);
- $tmpfile = $Brief->displayTMP();
- $Brief->ArchiviereDocument(1);
- unlink($tmpfile);
- $this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable;
- if(class_exists('RechnungPDFCustom'))
- {
- $Brief = new RechnungPDFCustom($this->app,$projekt);
- }else{
- $Brief = new RechnungPDF($this->app,$projekt);
- }
- $Brief->GetRechnung($id);
- $tmpfile = $Brief->displayTMP();
- $Brief->ArchiviereDocument(1);
-
+ $this->app->erp->PDFArchivieren('rechnung', $id, true);
$this->app->DB->Update("UPDATE rechnung SET schreibschutz='1' WHERE id='$id'");
$this->app->Location->execute('index.php?module=rechnung&action=edit&id='.$id);
}
@@ -1258,7 +1238,7 @@ class Rechnung extends GenRechnung
$doppel = $this->app->Secure->GetGET('doppel');
$invoiceArr = $this->app->DB->SelectRow("SELECT schreibschutz, projekt, zuarchivieren FROM rechnung WHERE id='$id' LIMIT 1");
if(!empty($invoiceArr['schreibschutz']) && !empty($invoiceArr['zuarchivieren'])) {
- $this->app->erp->PDFArchivieren('rechnung', $id, true);
+ $this->app->erp->RechnungArchivieren($id);
}
$projekt = $invoiceArr['projekt'];
$schreibschutz = $invoiceArr['schreibschutz'];
@@ -1283,7 +1263,7 @@ class Rechnung extends GenRechnung
// Print PHP array for SmartyXML
function RechnungJSON() {
- $this->RechnungSmarty(true);
+ $this->RechnungSmarty(json: true);
}
function remove_html_entities_from_array(&$array) {
@@ -1308,8 +1288,10 @@ class Rechnung extends GenRechnung
}
}
- function RechnungSmarty($json = false, $returnvalue = false) {
- $id = $this->app->Secure->GetGET('id');
+ function RechnungSmarty($id = null, $json = false, $returnvalue = false) {
+ if ($id === null) {
+ $id = $this->app->Secure->GetGET('id');
+ }
$result = Array();
$success = true;
@@ -2199,7 +2181,7 @@ class Rechnung extends GenRechnung
)
)
) {
- $this->app->erp->PDFArchivieren('rechnung', $id, true);
+ $this->app->erp->RechnungArchivieren($id);
}
$this->app->erp->MessageHandlerStandardForm();
@@ -2288,7 +2270,7 @@ class Rechnung extends GenRechnung
$invoiceId
)
);
- $this->app->erp->PDFArchivieren('rechnung', $invoiceId, true);
+ $this->app->erp->RechnungArchivieren($invoiceId);
if(class_exists('RechnungPDFCustom')) {
$Brief = new RechnungPDFCustom($this->app,$projekt);
}
@@ -2344,13 +2326,15 @@ class Rechnung extends GenRechnung
if(!$v) {
continue;
}
+ $xmlrechnung = $this->app->DB->Select("SELECT xmlrechnung FROM rechnung WHERE id=$v LIMIT 1");
$checkpapier = $this->app->DB->Select(
"SELECT a.rechnung_papier FROM rechnung AS r
LEFT JOIN adresse AS a ON r.adresse=a.id
WHERE r.id='$v'
LIMIT 1"
);
- if($checkpapier!=1 &&
+
+ if((($checkpapier !=1) || $erechnung) &&
$this->app->DB->Select(
"SELECT r.id
FROM rechnung AS r
@@ -2359,11 +2343,11 @@ class Rechnung extends GenRechnung
LIMIT 1"
)
) {
- $this->app->erp->PDFArchivieren('rechnung', $v, true);
+ $this->app->erp->RechnungArchivieren($v);
$this->app->erp->Rechnungsmail($v);
}
- else if($checkpapier && $drucker) {
- $this->app->erp->PDFArchivieren('rechnung', $v, true);
+ else if($checkpapier && $drucker && !$erechnung) {
+ $this->app->erp->RechnungArchivieren($v);
$projekt = $this->app->DB->Select(
"SELECT projekt FROM rechnung WHERE id='$v' LIMIT 1"
);
@@ -2417,12 +2401,13 @@ class Rechnung extends GenRechnung
$reArr = $this->app->DB->SelectRow(
sprintf(
"SELECT projekt,belegnr,status,usereditid,adresse,
- DATE_SUB(NOW(), INTERVAL 30 SECOND) < useredittimestamp AS `open`
+ DATE_SUB(NOW(), INTERVAL 30 SECOND) < useredittimestamp AS `open`,
+ xmlrechnung
FROM rechnung WHERE id=%d LIMIT 1",
$v
)
);
- if($reArr['belegnr'] === '' || ($reArr['open'] && $reArr['status'] === 'freigegeben')) {
+ if($reArr['belegnr'] === '' || $reArr['xmlrechnung'] || ($reArr['open'] && $reArr['status'] === 'freigegeben')) {
continue;
}
if($reArr['status'] === 'freigegeben') {
@@ -2432,7 +2417,7 @@ class Rechnung extends GenRechnung
$this->app->erp->RechnungProtokoll($v,'Rechnung gedruckt');
$this->app->DB->Update("UPDATE rechnung SET schreibschutz=1, versendet = 1 WHERE id = '$v' LIMIT 1");
$this->app->DB->Update("UPDATE rechnung SET status='versendet' WHERE id = '$v' AND status!='storniert' LIMIT 1");
- $this->app->erp->PDFArchivieren('rechnung', $v, true);
+ $this->app->erp->RechnungArchivieren($v);
if(class_exists('RechnungPDFCustom')) {
$Brief = new RechnungPDFCustom($this->app,$projekt);
}
@@ -2452,7 +2437,11 @@ class Rechnung extends GenRechnung
case 'pdf':
$tmpfile = [];
foreach($auswahl as $v) {
- $projekt = $this->app->DB->Select("SELECT projekt FROM rechnung WHERE id=$v LIMIT 1");
+ $xmlrechnung = $this->app->DB->Select("SELECT xmlrechnung FROM rechnung WHERE id=$v LIMIT 1");
+ if ($xmlrechnung) {
+ continue;
+ }
+ $projekt = $this->app->DB->Select("SELECT projekt FROM rechnung WHERE id=$v LIMIT 1");
if(class_exists('RechnungPDFCustom')) {
$Brief = new RechnungPDFCustom($this->app,$projekt);
}
From dc53b0462c5312645ccd8b7feadb4b76fca4fbb7 Mon Sep 17 00:00:00 2001
From: OpenXE <>
Date: Thu, 5 Dec 2024 14:31:20 +0100
Subject: [PATCH 5/6] xml rechnung sendmail add file version
---
www/lib/class.erpapi.php | 145 ++++++++++++++++++++++-----------------
www/pages/auftrag.php | 5 +-
www/pages/rechnung.php | 135 ++++++++++++++++++++----------------
3 files changed, 158 insertions(+), 127 deletions(-)
diff --git a/www/lib/class.erpapi.php b/www/lib/class.erpapi.php
index 11ffc712..02d59d24 100644
--- a/www/lib/class.erpapi.php
+++ b/www/lib/class.erpapi.php
@@ -15246,7 +15246,7 @@ function Gegenkonto($ust_befreit,$ustid='', $doctype = '', $doctypeId = 0)
}
$rechnungarr = $this->app->DB->SelectRow(
- "SELECT adresse, email, name,belegnr,projekt,sprache,schreibschutz,zuarchivieren
+ "SELECT adresse, email, name,belegnr,projekt,sprache,schreibschutz,zuarchivieren,xmlrechnung
FROM rechnung WHERE id='$id' LIMIT 1"
);
if(empty($rechnungarr)) {
@@ -15260,6 +15260,7 @@ function Gegenkonto($ust_befreit,$ustid='', $doctype = '', $doctypeId = 0)
$to_name = $rechnungarr['name'];
$belegnr = $rechnungarr['belegnr'];
$projekt = $rechnungarr['projekt'];
+ $xmlrechnung = $rechnungarr['xmlrechnung'];
$sprache = $rechnungarr['sprache'];
if($sprache=='' && $adresse > 0) {
@@ -15284,21 +15285,27 @@ function Gegenkonto($ust_befreit,$ustid='', $doctype = '', $doctypeId = 0)
$betreff = $this->ParseUserVars('rechnung',$id,$betreff); // 19.01.2018 eingefuegt BW
if($id > 0)
{
- $this->app->erp->BriefpapierHintergrunddisable = false;
- if(class_exists('RechnungPDFCustom'))
- {
- $Brief = new RechnungPDFCustom($this->app,$projekt);
- }else{
- $Brief = new RechnungPDF($this->app,$projekt);
- }
- $Brief->GetRechnung($id);
- $arrtmpfile[] = $Brief->displayTMP();
- if(!$Brief->DocumentArchiviert()) {
- $Brief->ArchiviereDocument(true, true);
+ if (!$xmlrechnung) {
+ $this->app->erp->BriefpapierHintergrunddisable = false;
+ if(class_exists('RechnungPDFCustom'))
+ {
+ $Brief = new RechnungPDFCustom($this->app,$projekt);
+ }else{
+ $Brief = new RechnungPDF($this->app,$projekt);
+ }
+ $Brief->GetRechnung($id);
+ $arrtmpfile[] = $Brief->displayTMP();
+
+ if(!$Brief->DocumentArchiviert()) {
+ $Brief->ArchiviereDocument(true, true);
+ }
+ $md5arr[] = @md5_file($arrtmpfile[(!empty($arrtmpfile)?count($arrtmpfile):0)-1]);
+ } else {
+ $arrtmpfile = Array();
+ $md5arr = Array();
}
- $md5arr[] = @md5_file($arrtmpfile[(!empty($arrtmpfile)?count($arrtmpfile):0)-1]);
// anhaenge automatisch mitversenden
$resultdateien = $this->app->DB->SelectArr("SELECT datei FROM datei_stichwoerter WHERE objekt LIKE 'Rechnung' AND parameter='$id'");
$cResultdateien = !empty($resultdateien)?count($resultdateien):0;
@@ -23489,54 +23496,63 @@ function ChargenMHDAuslagern($artikel, $menge, $lagerplatztyp, $lpid,$typ,$wert,
if($typ=="rechnung")
{
// sende
- $this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable;
- if(class_exists('RechnungPDFCustom'))
- {
- $Brief = new RechnungPDFCustom($this->app,$projektbriefpapier);
- }else{
- $Brief = new RechnungPDF($this->app,$projektbriefpapier);
- }
- $Brief->GetRechnung($id);
+ $xmlrechnug = $this->app->DB->Select("SELECT xmlrechnung FROM rechnung WHERE id ='".$id."' LIMIT 1");
+ if ($xmlrechnung) {
+ $xmlrechnungresult = $this->app->erp->GetXMLRechnung($id);
+ if ($xmlrechnungresult['success']) {
+ $tmpfile = $xmlrechnungresult['xml'];
+ } else {
+ throw new exception("XML Rechnung fehlgeschlagen!");
+ }
+ } else {
+ $this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable;
+ if(class_exists('RechnungPDFCustom'))
+ {
+ $Brief = new RechnungPDFCustom($this->app,$projektbriefpapier);
+ }else{
+ $Brief = new RechnungPDF($this->app,$projektbriefpapier);
+ }
+ $Brief->GetRechnung($id);
- if(isset($sammelpdf))
- {
- foreach($sammelpdf as $dat)
- {
- $Brief->AddPDF($dat);
- }
- }
+ if(isset($sammelpdf))
+ {
+ foreach($sammelpdf as $dat)
+ {
+ $Brief->AddPDF($dat);
+ }
+ }
- //$Brief->ArchiviereDocument();
- $tmpfile = $Brief->displayTMP();
- $Brief->ArchiviereDocument(true);
- unlink($tmpfile);
- $this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable;
- if(class_exists('RechnungPDFCustom'))
- {
- $Brief = new RechnungPDFCustom($this->app,$projektbriefpapier);
- }else{
- $Brief = new RechnungPDF($this->app,$projektbriefpapier);
+ //$Brief->ArchiviereDocument();
+ $tmpfile = $Brief->displayTMP();
+ $Brief->ArchiviereDocument(true);
+ unlink($tmpfile);
+ $this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable;
+ if(class_exists('RechnungPDFCustom'))
+ {
+ $Brief = new RechnungPDFCustom($this->app,$projektbriefpapier);
+ }else{
+ $Brief = new RechnungPDF($this->app,$projektbriefpapier);
+ }
+ $Brief->GetRechnung($id);
+ $tmpfile = $Brief->displayTMP();
+ $Brief->ArchiviereDocument(true);
+ if(isset($sammelpdf))
+ {
+ unlink($tmpfile);
+ if(class_exists('RechnungPDFCustom'))
+ {
+ $Brief = new RechnungPDFCustom($this->app,$projektbriefpapier);
+ }else{
+ $Brief = new RechnungPDF($this->app,$projektbriefpapier);
+ }
+ $Brief->GetRechnung($id);
+ foreach($sammelpdf as $dat)
+ {
+ $Brief->AddPDF($dat);
+ }
+ $tmpfile = $Brief->displayTMP();
+ }
}
- $Brief->GetRechnung($id);
- $tmpfile = $Brief->displayTMP();
- $Brief->ArchiviereDocument(true);
- if(isset($sammelpdf))
- {
- unlink($tmpfile);
- if(class_exists('RechnungPDFCustom'))
- {
- $Brief = new RechnungPDFCustom($this->app,$projektbriefpapier);
- }else{
- $Brief = new RechnungPDF($this->app,$projektbriefpapier);
- }
- $Brief->GetRechnung($id);
- foreach($sammelpdf as $dat)
- {
- $Brief->AddPDF($dat);
- }
- $tmpfile = $Brief->displayTMP();
- }
-
//$Brief->ArchiviereDocument();
}
@@ -29231,7 +29247,6 @@ function Firmendaten($field,$projekt="")
function SetXMLRechnung($id)
{
- /** @var Preisanfrage $obj */
$obj = $this->app->erp->LoadModul('rechnung');
if(!empty($obj) && method_exists($obj,'SetXMLRechnung')) {
return $obj->SetXMLRechnung($id);
@@ -29239,6 +29254,15 @@ function Firmendaten($field,$projekt="")
return 0;
}
+ function GetXMLRechnung($id)
+ {
+ $obj = $this->app->erp->LoadModul('rechnung');
+ if(!empty($obj) && method_exists($obj,'RechnungSmarty')) {
+ return $obj->RechnungSmarty(id: $id, returnvalue: true);
+ }
+ return 0;
+ }
+
function BelegFreigabe($beleg,$id)
{
if($id <= 0 || empty($beleg)) {
@@ -33055,7 +33079,6 @@ function Firmendaten($field,$projekt="")
}
}
-
function DeleteBestellung($id)
{
/** @var Bestellung $obj */
@@ -33066,7 +33089,6 @@ function Firmendaten($field,$projekt="")
}
}
-
function CreateRechnung($adresse="")
{
/** @var Rechnung $obj */
@@ -33076,7 +33098,6 @@ function Firmendaten($field,$projekt="")
}
}
-
public function GetStandardWaehrung($projekt=0)
{
if(is_array($projekt) && isset($projekt['eigenesteuer']) && isset($projekt['waehrung'])) {
diff --git a/www/pages/auftrag.php b/www/pages/auftrag.php
index 27d0e000..ee22925e 100644
--- a/www/pages/auftrag.php
+++ b/www/pages/auftrag.php
@@ -5717,7 +5717,7 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
$this->app->erp->ANABREGSNeuberechnen($rechnung,"rechnung");
$this->app->erp->rechnung_zahlstatus_berechnen($id);
- $this->app->erp->PDFArchivieren("rechnung",$rechnung);
+ $this->app->erp->RechnungArchivieren($rechnung);
}
}
// auftrag_position geliefert_menge und geliefert anpassen
@@ -6129,15 +6129,12 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
}
unlink($tmpfile);
}
-
// Send the invoice as last step
if($autodruckrechnungstufe1mail && $rechnung > 0)
{
$this->app->erp->Rechnungsmail($rechnung);
}
-
$this->app->erp->RunHook('auftrag_versand_ende', 1, $id);
-
// wenn per URL aufgerufen
if($internmodus!='1')
{
diff --git a/www/pages/rechnung.php b/www/pages/rechnung.php
index e97f6fc5..e2b6354b 100644
--- a/www/pages/rechnung.php
+++ b/www/pages/rechnung.php
@@ -205,27 +205,52 @@ class Rechnung extends GenRechnung
function RechnungArchiviereXML($id = null) {
if ($id === null) {
$id = (int)$this->app->Secure->GetGET('id');
+ $redirect = true;
}
$result = $this->RechnungSmarty(id: $id, json: false, returnvalue: true);
-
+
if ($result['success']) {
- $this->app->erp->CreateDateiWithStichwort(
- name: $result['filename'].'.xml',
- titel: $result['title'],
- beschreibung: '',
- nummer: '',
- datei: $result['xml'],
- ersteller: $this->app->User->GetName(),
- subjekt: 'rechnung',
- objekt: 'rechnung',
- parameter: $id
- );
+
+ // Check for old files
+ $existing = false;
+ $existing_ids = $this->app->erp->GetDateiSubjektObjekt('rechnung','rechnung',$id);
+ foreach ($existing_ids as $existing_id) {
+ if($this->app->erp->GetDateiEndung($existing_id) == 'xml') {
+ $existing = true;
+ break;
+ }
+ }
+
+ if ($existing) {
+ $this->app->erp->AddDateiVersion(
+ id: $existing_id,
+ ersteller: $this->app->User->GetName(),
+ dateiname: $result['filename'].'.xml',
+ bemerkung: '',
+ datei: $result['xml'],
+ path: ""
+ );
+ } else {
+ $this->app->erp->CreateDateiWithStichwort(
+ name: $result['filename'].'.xml',
+ titel: $result['title'],
+ beschreibung: '',
+ nummer: '',
+ datei: $result['xml'],
+ ersteller: $this->app->User->GetName(),
+ subjekt: 'rechnung',
+ objekt: 'rechnung',
+ parameter: $id
+ );
+ }
} else {
throw new exception("XML Rechnung fehlgeschlagen!");
}
$this->app->DB->Update("UPDATE rechnung SET schreibschutz='1', zuarchivieren = '0' WHERE id='$id'");
- $this->app->Location->execute('index.php?module=rechnung&action=edit&id='.$id);
+ if ($redirect) {
+ $this->app->Location->execute('index.php?module=rechnung&action=edit&id='.$id);
+ }
}
function RechnungArchivierePDF()
@@ -1300,7 +1325,7 @@ class Rechnung extends GenRechnung
$result['rechnungssteller']['ort'] = $this->app->erp->Firmendaten('ort');
$result['rechnungssteller']['plz'] = $this->app->erp->Firmendaten('plz');
$result['rechnungssteller']['land'] = $this->app->erp->Firmendaten('land');
- $result['rechnungssteller']['steuernummer'] = $this->app->erp->Firmendaten('steuernummer');
+ $result['rechnungssteller']['steuernummer'] = $this->app->erp->Firmendaten('steuernummer');
$rechnung = $this->app->DB->SelectRow("
SELECT * FROM rechnung WHERE id = $id LIMIT 1
@@ -1321,13 +1346,13 @@ class Rechnung extends GenRechnung
throw new exception("Rechnung enthält keine Positionen!");
}
- $steuern = Array();
- foreach ($positionen as $key => $position) {
+ $steuern = Array();
+ foreach ($positionen as $key => $position) {
$this->app->erp->GetSteuerPosition('rechnung', $position['id'], $steuersatz, $steuertext, $erloes);
$positionen[$key]['steuersatz'] = $steuersatz;
$positionen[$key]['steuertext'] = $steuertext;
$positionen[$key]['erloese'] = $erloes;
-
+
$steuern[$steuersatz]['umsatz_netto'] += $position['umsatz_netto_gesamt'];
$steuern[$steuersatz]['umsatz_brutto'] += $position['umsatz_brutto_gesamt'];
$steuern[$steuersatz]['prozent'] = $steuersatz;
@@ -1341,15 +1366,15 @@ class Rechnung extends GenRechnung
$this->remove_html_entities_from_array($result);
$this->remove_CDATA_fragments_from_array($result);
- if ($json) {
+ if ($json) {
$headers[] = 'Content-type:text/plain';
- $headers[] = 'Content-Disposition: attachment;filename='.$filename.'.json';
+ $headers[] = 'Content-Disposition: attachment;filename='.$filename.'.json';
$output = json_encode($result,JSON_PRETTY_PRINT);
} else {
$headers[] = 'Content-type:text/xml';
$headers[] = 'Content-Disposition: attachment;filename='.$filename.'.xml';
$template_id = $this->GetXMLSmartyTemplate($id);
- if(empty($template_id)) {
+ if(empty($template_id)) {
$output = '
Kein Smarty Template an der Addresse hinterlegt!
@@ -1357,12 +1382,12 @@ class Rechnung extends GenRechnung
$success = false;
} else {
$template = $this->app->DB->Select("SELECT template from smarty_templates WHERE id = '$template_id' LIMIT 1");
- $smarty = new Smarty;
- $directory = $this->app->erp->GetTMP().'/smarty/templates';
- $smarty->setCompileDir($directory);
- $smarty->assign('rechnung', $output);
+ $smarty = new Smarty;
+ $directory = $this->app->erp->GetTMP().'/smarty/templates';
+ $smarty->setCompileDir($directory);
+ $smarty->assign('rechnung', $output);
$output = $smarty->fetch('string:'.$template);
- }
+ }
}
if ($returnvalue) {
@@ -1482,7 +1507,7 @@ class Rechnung extends GenRechnung
public function CopyRechnungPosition()
{
$this->app->YUI->SortListEvent('copy','rechnung_position','rechnung');
- $this->RechnungPositionen();
+ $this->RechnungPositionen();
}
public function DelRechnungPosition()
@@ -1768,7 +1793,7 @@ class Rechnung extends GenRechnung
$punkte = $rechnungarr['punkte'];//$this->app->DB->Select("SELECT punkte FROM rechnung WHERE id='$id' LIMIT 1");
$bonuspunkte = $rechnungarr['bonuspunkte'];//$this->app->DB->Select("SELECT bonuspunkte FROM rechnung WHERE id='$id' LIMIT 1");
$soll = $rechnungarr['soll'];//$this->app->DB->Select("SELECT soll FROM rechnung WHERE id='$id' LIMIT 1");
- $projekt = $rechnungarr['projekt'];
+ $projekt = $rechnungarr['projekt'];
$skontosoll = $this->app->DB->Select("SELECT TRUNCATE(soll*(1-(zahlungszielskonto/100)),2) as skontosoll FROM rechnung where id = '".$id."' LIMIT 1");
$xmlrechnung = $rechnungarr['xmlrechnung'];
$zahlungsweise= $rechnungarr['zahlungsweise'];
@@ -1817,7 +1842,7 @@ class Rechnung extends GenRechnung
if($nummer!='') {
- $this->app->Tpl->Set('NUMMER',$nummer);
+ $this->app->Tpl->Set('NUMMER',$nummer);
if (($schreibschutz!='1') && $this->app->erp->RechteVorhanden('rechnung','belegnredit')){
$this->app->Tpl->Set('BELEGNRHIDDEN','hidden');
@@ -1926,7 +1951,7 @@ class Rechnung extends GenRechnung
$this->app->erp->RemoveReadonly('ist');
- if($this->app->erp->Firmendaten('mahnwesenmitkontoabgleich')!='1' || $this->app->DB->Select("SELECT mahnwesenfestsetzen FROM rechnung WHERE id='$id' LIMIT 1")==1)
+ if($this->app->erp->Firmendaten('mahnwesenmitkontoabgleich')!='1' || $this->app->DB->Select("SELECT mahnwesenfestsetzen FROM rechnung WHERE id='$id' LIMIT 1")==1)
$this->app->erp->RemoveReadonly('ist');*/
//$auftrag= $this->app->DB->Select("SELECT auftrag FROM rechnung WHERE id='$id' LIMIT 1");
@@ -2009,7 +2034,7 @@ class Rechnung extends GenRechnung
$this->app->Tpl->Set('SCHNELLEINGABE_TOOLTIP_HIDDEN', 'hidden');
}
- $saldo = $this->app->erp->GetSaldoDokument($id,'rechnung');
+ $saldo = $this->app->erp->GetSaldoDokument($id,'rechnung');
if (empty($saldo)) {
$this->app->Tpl->Set('SCHNELLEINGABE_HIDDEN', 'hidden');
$this->app->Tpl->Set('SCHNELLEINGABE_TOOLTIP_HIDDEN', 'hidden');
@@ -2025,7 +2050,7 @@ class Rechnung extends GenRechnung
if (!empty($rechnung_schnelleingabe_konto)) {
$this->app->Tpl->Set('SCHNELLEINGABE_TOOLTIP_HIDDEN', 'hidden');
- if ($speichern!='' && $this->app->erp->RechteVorhanden('rechnung','manuellbezahltmarkiert') && !empty($zahlbetrag)) {
+ if ($speichern!='' && $this->app->erp->RechteVorhanden('rechnung','manuellbezahltmarkiert') && !empty($zahlbetrag)) {
if ($bezahlt_am == '0000-00-00') {
$bezahlt_am = date('Y-m-d');
}
@@ -2054,7 +2079,7 @@ class Rechnung extends GenRechnung
$this->app->DB->Insert($sql);
$kontoauszug = $this->app->DB->GetInsertID();
$this->app->erp->fibu_buchungen_buchen("kontoauszuege",$kontoauszug, "rechnung", $id, -$zahlbetrag, 'EUR', $bezahlt_am, "Rechnung ".$nummer." Schnelleingabe");
- $this->rechnung_zahlstatus_berechnen($id);
+ $this->rechnung_zahlstatus_berechnen($id);
}
} else {
$this->app->Tpl->Set('SCHNELLEINGABE_HIDDEN', 'hidden');
@@ -2271,24 +2296,13 @@ class Rechnung extends GenRechnung
)
);
$this->app->erp->RechnungArchivieren($invoiceId);
- if(class_exists('RechnungPDFCustom')) {
- $Brief = new RechnungPDFCustom($this->app,$projekt);
- }
- else {
- $Brief = new RechnungPDF($this->app,$projekt);
- }
- $Brief->GetRechnung($invoiceId);
- $tmpfile = $Brief->displayTMP();
- $Brief->ArchiviereDocument();
- @unlink($tmpfile);
-
return true;
}
public function RechnungList()
{
- $this->app->DB->Update("UPDATE rechnung SET zahlungsstatus='offen' WHERE zahlungsstatus=''");
+ $this->app->DB->Update("UPDATE rechnung SET zahlungsstatus='offen' WHERE zahlungsstatus=''");
if($this->app->Secure->GetPOST('ausfuehren') && $this->app->erp->RechteVorhanden('rechnung', 'edit'))
{
@@ -2322,6 +2336,7 @@ class Rechnung extends GenRechnung
implode(', ', $auswahl)
)
);
+
foreach($auswahl as $v) {
if(!$v) {
continue;
@@ -2441,7 +2456,7 @@ class Rechnung extends GenRechnung
if ($xmlrechnung) {
continue;
}
- $projekt = $this->app->DB->Select("SELECT projekt FROM rechnung WHERE id=$v LIMIT 1");
+ $projekt = $this->app->DB->Select("SELECT projekt FROM rechnung WHERE id=$v LIMIT 1");
if(class_exists('RechnungPDFCustom')) {
$Brief = new RechnungPDFCustom($this->app,$projekt);
}
@@ -2643,7 +2658,7 @@ class Rechnung extends GenRechnung
$zahlungszieltageskonto = 0;
$zahlungszielskonto = 0;
}
-
+
$this->app->DB->Insert("INSERT INTO rechnung (
id,
datum,
@@ -2662,8 +2677,7 @@ class Rechnung extends GenRechnung
ohne_briefpapier,
angelegtam,
usereditid,
- abweichendebezeichnung,
- xmlrechnung
+ abweichendebezeichnung
)
VALUES (
'',
@@ -2683,8 +2697,7 @@ class Rechnung extends GenRechnung
'".$ohnebriefpapier."',
NOW(),
'$usereditid',
- '$abweichendebezeichnung',
- '$xmlrechnung'
+ '$abweichendebezeichnung'
)"
);
@@ -2701,8 +2714,8 @@ class Rechnung extends GenRechnung
$deliverythresholdvatid = $this->app->DB->real_escape_string($deliverythresholdvatid);
$this->app->DB->Update("UPDATE rechnung SET deliverythresholdvatid = '$deliverythresholdvatid' WHERE id = $id LIMIT 1");
}
+ $this->SetXMLRechnung($id);
$this->app->erp->SchnellFreigabe('rechnung',$id);
-
$this->app->erp->LoadSteuersaetzeWaehrung($id,'rechnung',$projekt);
$this->app->erp->EventAPIAdd('EventRechnungCreate',$id,'rechnung','create');
@@ -3013,7 +3026,7 @@ class Rechnung extends GenRechnung
foreach ($zahlungen as $zahlung) {
$row = array(
$zahlung['datum'],
- "
+ "
".ucfirst($zahlung['doc_typ'])."
".$zahlung['doc_info']."
",
@@ -3024,7 +3037,7 @@ class Rechnung extends GenRechnung
}
$salden = $this->app->erp->GetSaldenDokument($id,'rechnung');
- foreach ($salden as $saldo) {
+ foreach ($salden as $saldo) {
$row = array(
'',
'Saldo',
@@ -3033,7 +3046,7 @@ class Rechnung extends GenRechnung
);
$et->AddRow($row);
}
- return($et->DisplayNew('return',""));
+ return($et->DisplayNew('return',""));
}
}
@@ -3055,8 +3068,8 @@ class Rechnung extends GenRechnung
waehrung,
datum,
zahlungszieltage,
- DATE_ADD(datum, INTERVAL zahlungszieltage DAY) as zieldatum,
- CURRENT_DATE > DATE_ADD(datum, INTERVAL zahlungszieltage DAY) as faellig,
+ DATE_ADD(datum, INTERVAL zahlungszieltage DAY) as zieldatum,
+ CURRENT_DATE > DATE_ADD(datum, INTERVAL zahlungszieltage DAY) as faellig,
zahlungszielskonto,
TRUNCATE(soll*(1-(zahlungszielskonto/100)),2) as skontosoll,
zahlungszieltageskonto,
@@ -3071,7 +3084,7 @@ class Rechnung extends GenRechnung
$saldo = $this->app->erp->GetSaldoDokument($offene_rechnung['id'],'rechnung');
if (!empty($saldo)) {
if ($saldo['waehrung'] == $offene_rechnung['waehrung']) {
- $offene_rechnung['ist'] = $offene_rechnung['soll']+$saldo['betrag'];
+ $offene_rechnung['ist'] = $offene_rechnung['soll']+$saldo['betrag'];
// Check for skonto
$skontorelevante_zahlungen = $this->app->erp->GetSaldoDokument($offene_rechnung['id'],'rechnung','zubuchung',$offene_rechnung['zieldatumskonto'])['betrag'];
$zielkonforme_zahlungen = $this->app->erp->GetSaldoDokument($offene_rechnung['id'],'rechnung','zubuchung',$offene_rechnung['zieldatum'])['betrag'];
@@ -3081,7 +3094,7 @@ class Rechnung extends GenRechnung
} else if (abs($skontorelevante_zahlungen-$offene_rechnung['skontosoll']) <= 0.01) {
// Skonto ok -> book difference
$sachkonto = $this->app->erp->Firmendaten('rechnung_skonto_kontorahmen');
- if (!empty($sachkonto)) {
+ if (!empty($sachkonto)) {
$this->app->erp->fibu_buchungen_buchen('rechnung',$offene_rechnung['id'],'kontorahmen',$sachkonto,$offene_rechnung['soll']-$skontorelevante_zahlungen,$offene_rechnung['waehrung'],date('Y-m-d'),'');
$offene_rechnung['ist'] = $offene_rechnung['soll'];
$saldo['betrag'] = 0;
@@ -3098,16 +3111,16 @@ class Rechnung extends GenRechnung
SET
ist = ".$saldo['betrag']."+soll,
zahlungsstatus = IF(".$saldo['betrag']." = 0,'bezahlt','offen')
- WHERE id=".$offene_rechnung['id'];
+ WHERE id=".$offene_rechnung['id'];
$this->app->DB->Update($sql);
}
}
else {
- $this->app->DB->Update("UPDATE rechnung SET ist = null WHERE id=".$offene_rechnung['id']);
+ $this->app->DB->Update("UPDATE rechnung SET ist = null WHERE id=".$offene_rechnung['id']);
}
}
$this->app->erp->fibu_rebuild_tables();
- // END RECALCULATE
+ // END RECALCULATE
}
}
From c71eb50b7407ba510cc524eef7608b64075718a4 Mon Sep 17 00:00:00 2001
From: OpenXE <>
Date: Thu, 5 Dec 2024 16:08:16 +0100
Subject: [PATCH 6/6] XML rechnung icons and links for auftrag & lieferschein
---
phpwf/plugins/class.yui.php | 25 +++++++++++++++++++++----
www/pages/auftrag.php | 34 +++++++++++++++++++---------------
www/pages/lieferschein.php | 22 ++++++++--------------
www/pages/rechnung.php | 10 +---------
4 files changed, 49 insertions(+), 42 deletions(-)
diff --git a/phpwf/plugins/class.yui.php b/phpwf/plugins/class.yui.php
index eae058dc..8b9a07ea 100644
--- a/phpwf/plugins/class.yui.php
+++ b/phpwf/plugins/class.yui.php
@@ -6844,10 +6844,7 @@ r.land as land, p.abkuerzung as projekt, r.zahlungsweise as zahlungsweise,
as fehlt,
if(r.status = 'storniert' AND r.teilstorno = 1,'TEILSTORNO',UPPER(r.status)) as status
".(!empty($zusatzcols)?','.implode(', ',$zusatzcols):'').",
- IF(r.xmlrechnung,
- CONCAT('app->Conf->WFconf['defaulttheme']."/images/xml.svg\" border=\"0\">'),
- CONCAT('app->Conf->WFconf['defaulttheme']."/images/pdf.svg\" border=\"0\">')
- ),
+ ".$this->GetRechnungFileDownloadLinkIconSQL().",
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 ";
if(isset($parameter['artikel']) && !empty($parameter['artikel'])) {
@@ -15941,4 +15938,24 @@ function IframeDialog($width, $height, $src = "") {
return 'convert(cast(convert('.$field.' using latin1) as binary) using utf8)';
//return $field.' COLLATE utf8_general_ci'; ersetzt Original
}
+
+ public function GetRechnungFileDownloadLinkIconSQL($tablename = 'r') {
+ return(
+ "IF(".$tablename.".xmlrechnung,
+ CONCAT('app->Conf->WFconf['defaulttheme']."/images/xml.svg\" border=\"0\">'),
+ CONCAT('app->Conf->WFconf['defaulttheme']."/images/pdf.svg\" border=\"0\">')
+ )"
+ );
+ }
+
+ public function GetRechnungFileDownloadLinkIcon($id) {
+ $xmlrechnung = $this->app->DB->SelectRow("SELECT belegnr, xmlrechnung FROM rechnung WHERE id = '".$id."' LIMIT 1");
+ if ($xmlrechnung['belegnr'] == '') {
+ return('');
+ } else if ($xmlrechnung['xmlrechnung']) {
+ return("");
+ } else {
+ return("");
+ }
+ }
}
diff --git a/www/pages/auftrag.php b/www/pages/auftrag.php
index ee22925e..fdcecd1a 100644
--- a/www/pages/auftrag.php
+++ b/www/pages/auftrag.php
@@ -1640,6 +1640,7 @@ class Auftrag extends GenAuftrag
*
* @return string
*/
+/* XENTRAL Legacy
public function AuftragTrackingTabelle($id)
{
$table = new EasyTable($this->app);
@@ -1676,6 +1677,7 @@ class Auftrag extends GenAuftrag
return $result;
}
+*/
function AuftragPDFfromArchiv()
{
@@ -2117,26 +2119,28 @@ class Auftrag extends GenAuftrag
/* rechnungen */
+ $link_zur_rechnung = "CONCAT('','>'),if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),if(r.status='storniert','',''),' ',".$this->app->YUI->GetRechnungFileDownloadLinkIconSQL().",' ')";
+
$sammelrechnungcheck = $this->app->DB->Select("SELECT * FROM sammelrechnung_position LIMIT 1");
if($sammelrechnungcheck) {
$rechnung = $this->app->DB->SelectPairs(
"SELECT
- r.id, CONCAT('','>'),if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),if(r.status='storniert','',''),'
- ') as rechnung
+ r.id,
+ ".$link_zur_rechnung." as rechnung
FROM rechnung r
WHERE r.auftragid='$id'
union
SELECT
- r.id,CONCAT('','>'),if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),if(r.status='storniert','',''),'
- ') as rechnung
+ r.id,
+ ".$link_zur_rechnung." as rechnung
FROM rechnung r
INNER JOIN sammelrechnung_position s ON r.id = s.rechnung
INNER JOIN auftrag_position p ON s.auftrag_position_id = p.id
WHERE p.auftrag='$id'
union
SELECT
- r.id,CONCAT('','>'),if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),if(r.status='storniert','',''),'
- ') as rechnung
+ r.id,
+ ".$link_zur_rechnung." as rechnung
FROM rechnung r
INNER JOIN sammelrechnung_position s ON r.id = s.rechnung
INNER JOIN lieferschein_position lp ON lp.id = s.lieferschein_position_id
@@ -2158,9 +2162,8 @@ class Auftrag extends GenAuftrag
else{
$rechnung = $this->app->DB->SelectPairs(
"SELECT
- r.id, CONCAT('','>'),if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),if(r.status='storniert','',''),'
- '
- ) as rechnung
+ r.id,
+ ".$link_zur_rechnung." as rechnung
FROM rechnung r
WHERE r.auftragid='$id'"
);
@@ -2176,10 +2179,9 @@ class Auftrag extends GenAuftrag
if(!$rechnung) {
$rechnung = $this->app->DB->SelectPairs(
"SELECT
- r.id, CONCAT('','>'),if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),if(r.status='storniert','',''),'
- '
- ) as rechnung
- FROM rechnung r
+ r.id,
+ ".$link_zur_rechnung." as rechnung
+ FROM rechnung r
INNER JOIN auftrag a ON a.rechnungid = r.id
WHERE a.id='$id'
");
@@ -5071,7 +5073,7 @@ class Auftrag extends GenAuftrag
foreach($lieferscheine as $deliveryNoteId => $deliveryNoteNumber) {
$optional .= " ";
}
}
@@ -5084,7 +5086,7 @@ class Auftrag extends GenAuftrag
foreach($rechnungen as $invoiceId => $invoiceNumber) {
$optional .= " ";
}
}
@@ -5260,11 +5262,13 @@ class Auftrag extends GenAuftrag
$this->app->Tpl->Add('AUFTRAGSDOKUMENTE',"");
}
+/* XENTRAL Legacy
//suche alle LS zu diesem Auftrag
if($auftragsnummer>0) {
$trackingInfo = $this->AuftragTrackingTabelle(empty($deliveryNoteIds)?0: $id);
$this->app->Tpl->Set('VERSAND', $trackingInfo);
}
+*/
// UST
$ust_ok = $orderRow['ust_ok'];//$this->app->DB->Select("SELECT ust_ok FROM auftrag WHERE id='$id' LIMIT 1");
diff --git a/www/pages/lieferschein.php b/www/pages/lieferschein.php
index cfe08757..4b80a518 100644
--- a/www/pages/lieferschein.php
+++ b/www/pages/lieferschein.php
@@ -876,22 +876,19 @@ class Lieferschein extends GenLieferschein
$this->app->Tpl->Set('AUFTRAG','-');
}
+ $link_zur_rechnung = "CONCAT('','>'),if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),if(r.status='storniert','',''),' ',".$this->app->YUI->GetRechnungFileDownloadLinkIconSQL().",' ')";
+
if($auftragArr[0]['auftragid'] > 0){
$rechnung = $this->app->DB->SelectArr(
($auftragArr[0]['auftragid']?
"SELECT
- CONCAT('',if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),'
- ') as rechnung
- FROM rechnung r WHERE r.auftragid='".$auftragArr[0]['auftragid']."' AND r.auftragid <> '0'
+ ".$link_zur_rechnung." as rechnung FROM rechnung r WHERE r.auftragid='".$auftragArr[0]['auftragid']."' AND r.auftragid <> '0'
union
SELECT
- CONCAT('',if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),'
- ') as rechnung
- FROM rechnung r INNER JOIN sammelrechnung_position s ON r.id = s.rechnung INNER JOIN auftrag_position p ON s.auftrag_position_id = p.id WHERE p.auftrag='".$auftragArr[0]['auftragid']."'
+ ".$link_zur_rechnung." as rechnung FROM rechnung r INNER JOIN sammelrechnung_position s ON r.id = s.rechnung INNER JOIN auftrag_position p ON s.auftrag_position_id = p.id WHERE p.auftrag='".$auftragArr[0]['auftragid']."'
union ":"")."
SELECT
- CONCAT('',if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),'
- ') as rechnung
+ ".$link_zur_rechnung." as rechnung
FROM rechnung r INNER JOIN sammelrechnung_position s ON r.id = s.rechnung
INNER JOIN lieferschein_position lp ON lp.id = s.lieferschein_position_id
WHERE lp.lieferschein='$id'
@@ -903,14 +900,11 @@ class Lieferschein extends GenLieferschein
if($auftragArr[0]['rechnungid'] > 0){
$rechnung = $this->app->DB->SelectArr("SELECT
- CONCAT('',if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),'
- ') as rechnung
+ ".$link_zur_rechnung." as rechnung
FROM rechnung r WHERE r.id='".$auftragArr[0]['rechnungid']."' AND r.id <> '0'
- union
-
+ union
SELECT
- CONCAT('',if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),'
- ') as rechnung
+ ".$link_zur_rechnung." as rechnung
FROM rechnung r INNER JOIN sammelrechnung_position s ON r.id = s.rechnung
INNER JOIN lieferschein_position lp ON lp.id = s.lieferschein_position_id
WHERE lp.lieferschein='$id'
diff --git a/www/pages/rechnung.php b/www/pages/rechnung.php
index e2b6354b..86fc9c41 100644
--- a/www/pages/rechnung.php
+++ b/www/pages/rechnung.php
@@ -577,15 +577,7 @@ class Rechnung extends GenRechnung
";
- if (!empty($rechnungarr['belegnr'])) {
- if ($rechnungarr['xmlrechnung']) {
- $downloadicon = "";
- } else {
- $downloadicon = "";
- }
- } else {
- $downloadicon = '';
- }
+ $downloadicon = $this->app->YUI->GetRechnungFileDownloadLinkIcon($id);
$menu .= $downloadicon;