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/lib/class.erpapi.php b/www/lib/class.erpapi.php
index 8041d826..02d59d24 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']);
}
}
}
@@ -15234,20 +15246,21 @@ 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)) {
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'];
$to_name = $rechnungarr['name'];
$belegnr = $rechnungarr['belegnr'];
$projekt = $rechnungarr['projekt'];
+ $xmlrechnung = $rechnungarr['xmlrechnung'];
$sprache = $rechnungarr['sprache'];
if($sprache=='' && $adresse > 0) {
@@ -15272,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;
@@ -23477,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();
}
@@ -29219,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);
@@ -29227,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)) {
@@ -33043,7 +33079,6 @@ function Firmendaten($field,$projekt="")
}
}
-
function DeleteBestellung($id)
{
/** @var Bestellung $obj */
@@ -33054,7 +33089,6 @@ function Firmendaten($field,$projekt="")
}
}
-
function CreateRechnung($adresse="")
{
/** @var Rechnung $obj */
@@ -33064,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..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");
@@ -5717,7 +5721,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 +6133,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/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 c214525f..86fc9c41 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,33 +202,61 @@ class Rechnung extends GenRechnung
$this->app->ExitXentral();
}
-
+ 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']) {
+
+ // 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'");
+ if ($redirect) {
+ $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);
}
@@ -548,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;
@@ -1234,7 +1255,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'];
@@ -1259,7 +1280,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) {
@@ -1284,16 +1305,19 @@ class Rechnung extends GenRechnung
}
}
- function RechnungSmarty($json = 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;
$result['rechnungssteller']['name'] = $this->app->erp->Firmendaten('name');
$result['rechnungssteller']['strasse'] = $this->app->erp->Firmendaten('strasse');
$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
@@ -1314,13 +1338,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;
@@ -1335,31 +1359,43 @@ class Rechnung extends GenRechnung
$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));
+ $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('
+ $output = '