xml rechnung sendmail add file version

This commit is contained in:
OpenXE 2024-12-05 14:31:20 +01:00
parent bbe92dce2a
commit dc53b0462c
3 changed files with 158 additions and 127 deletions

View File

@ -15246,7 +15246,7 @@ function Gegenkonto($ust_befreit,$ustid='', $doctype = '', $doctypeId = 0)
} }
$rechnungarr = $this->app->DB->SelectRow( $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" FROM rechnung WHERE id='$id' LIMIT 1"
); );
if(empty($rechnungarr)) { if(empty($rechnungarr)) {
@ -15260,6 +15260,7 @@ function Gegenkonto($ust_befreit,$ustid='', $doctype = '', $doctypeId = 0)
$to_name = $rechnungarr['name']; $to_name = $rechnungarr['name'];
$belegnr = $rechnungarr['belegnr']; $belegnr = $rechnungarr['belegnr'];
$projekt = $rechnungarr['projekt']; $projekt = $rechnungarr['projekt'];
$xmlrechnung = $rechnungarr['xmlrechnung'];
$sprache = $rechnungarr['sprache']; $sprache = $rechnungarr['sprache'];
if($sprache=='' && $adresse > 0) { 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 $betreff = $this->ParseUserVars('rechnung',$id,$betreff); // 19.01.2018 eingefuegt BW
if($id > 0) 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()) { if (!$xmlrechnung) {
$Brief->ArchiviereDocument(true, true); $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 // anhaenge automatisch mitversenden
$resultdateien = $this->app->DB->SelectArr("SELECT datei FROM datei_stichwoerter WHERE objekt LIKE 'Rechnung' AND parameter='$id'"); $resultdateien = $this->app->DB->SelectArr("SELECT datei FROM datei_stichwoerter WHERE objekt LIKE 'Rechnung' AND parameter='$id'");
$cResultdateien = !empty($resultdateien)?count($resultdateien):0; $cResultdateien = !empty($resultdateien)?count($resultdateien):0;
@ -23489,54 +23496,63 @@ function ChargenMHDAuslagern($artikel, $menge, $lagerplatztyp, $lpid,$typ,$wert,
if($typ=="rechnung") if($typ=="rechnung")
{ {
// sende // sende
$this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable; $xmlrechnug = $this->app->DB->Select("SELECT xmlrechnung FROM rechnung WHERE id ='".$id."' LIMIT 1");
if(class_exists('RechnungPDFCustom')) if ($xmlrechnung) {
{ $xmlrechnungresult = $this->app->erp->GetXMLRechnung($id);
$Brief = new RechnungPDFCustom($this->app,$projektbriefpapier); if ($xmlrechnungresult['success']) {
}else{ $tmpfile = $xmlrechnungresult['xml'];
$Brief = new RechnungPDF($this->app,$projektbriefpapier); } else {
} throw new exception("XML Rechnung fehlgeschlagen!");
$Brief->GetRechnung($id); }
} 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)) if(isset($sammelpdf))
{ {
foreach($sammelpdf as $dat) foreach($sammelpdf as $dat)
{ {
$Brief->AddPDF($dat); $Brief->AddPDF($dat);
} }
} }
//$Brief->ArchiviereDocument(); //$Brief->ArchiviereDocument();
$tmpfile = $Brief->displayTMP(); $tmpfile = $Brief->displayTMP();
$Brief->ArchiviereDocument(true); $Brief->ArchiviereDocument(true);
unlink($tmpfile); unlink($tmpfile);
$this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable; $this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable;
if(class_exists('RechnungPDFCustom')) if(class_exists('RechnungPDFCustom'))
{ {
$Brief = new RechnungPDFCustom($this->app,$projektbriefpapier); $Brief = new RechnungPDFCustom($this->app,$projektbriefpapier);
}else{ }else{
$Brief = new RechnungPDF($this->app,$projektbriefpapier); $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(); //$Brief->ArchiviereDocument();
} }
@ -29231,7 +29247,6 @@ function Firmendaten($field,$projekt="")
function SetXMLRechnung($id) function SetXMLRechnung($id)
{ {
/** @var Preisanfrage $obj */
$obj = $this->app->erp->LoadModul('rechnung'); $obj = $this->app->erp->LoadModul('rechnung');
if(!empty($obj) && method_exists($obj,'SetXMLRechnung')) { if(!empty($obj) && method_exists($obj,'SetXMLRechnung')) {
return $obj->SetXMLRechnung($id); return $obj->SetXMLRechnung($id);
@ -29239,6 +29254,15 @@ function Firmendaten($field,$projekt="")
return 0; 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) function BelegFreigabe($beleg,$id)
{ {
if($id <= 0 || empty($beleg)) { if($id <= 0 || empty($beleg)) {
@ -33055,7 +33079,6 @@ function Firmendaten($field,$projekt="")
} }
} }
function DeleteBestellung($id) function DeleteBestellung($id)
{ {
/** @var Bestellung $obj */ /** @var Bestellung $obj */
@ -33066,7 +33089,6 @@ function Firmendaten($field,$projekt="")
} }
} }
function CreateRechnung($adresse="") function CreateRechnung($adresse="")
{ {
/** @var Rechnung $obj */ /** @var Rechnung $obj */
@ -33076,7 +33098,6 @@ function Firmendaten($field,$projekt="")
} }
} }
public function GetStandardWaehrung($projekt=0) public function GetStandardWaehrung($projekt=0)
{ {
if(is_array($projekt) && isset($projekt['eigenesteuer']) && isset($projekt['waehrung'])) { if(is_array($projekt) && isset($projekt['eigenesteuer']) && isset($projekt['waehrung'])) {

View File

@ -5717,7 +5717,7 @@ Die Gesamtsumme stimmt nicht mehr mit urspr&uuml;nglich festgelegten Betrag '.
$this->app->erp->ANABREGSNeuberechnen($rechnung,"rechnung"); $this->app->erp->ANABREGSNeuberechnen($rechnung,"rechnung");
$this->app->erp->rechnung_zahlstatus_berechnen($id); $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 // auftrag_position geliefert_menge und geliefert anpassen
@ -6129,15 +6129,12 @@ Die Gesamtsumme stimmt nicht mehr mit urspr&uuml;nglich festgelegten Betrag '.
} }
unlink($tmpfile); unlink($tmpfile);
} }
// Send the invoice as last step // Send the invoice as last step
if($autodruckrechnungstufe1mail && $rechnung > 0) if($autodruckrechnungstufe1mail && $rechnung > 0)
{ {
$this->app->erp->Rechnungsmail($rechnung); $this->app->erp->Rechnungsmail($rechnung);
} }
$this->app->erp->RunHook('auftrag_versand_ende', 1, $id); $this->app->erp->RunHook('auftrag_versand_ende', 1, $id);
// wenn per URL aufgerufen // wenn per URL aufgerufen
if($internmodus!='1') if($internmodus!='1')
{ {

View File

@ -205,27 +205,52 @@ class Rechnung extends GenRechnung
function RechnungArchiviereXML($id = null) { function RechnungArchiviereXML($id = null) {
if ($id === null) { if ($id === null) {
$id = (int)$this->app->Secure->GetGET('id'); $id = (int)$this->app->Secure->GetGET('id');
$redirect = true;
} }
$result = $this->RechnungSmarty(id: $id, json: false, returnvalue: true); $result = $this->RechnungSmarty(id: $id, json: false, returnvalue: true);
if ($result['success']) { if ($result['success']) {
$this->app->erp->CreateDateiWithStichwort(
name: $result['filename'].'.xml', // Check for old files
titel: $result['title'], $existing = false;
beschreibung: '', $existing_ids = $this->app->erp->GetDateiSubjektObjekt('rechnung','rechnung',$id);
nummer: '', foreach ($existing_ids as $existing_id) {
datei: $result['xml'], if($this->app->erp->GetDateiEndung($existing_id) == 'xml') {
ersteller: $this->app->User->GetName(), $existing = true;
subjekt: 'rechnung', break;
objekt: 'rechnung', }
parameter: $id }
);
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 { } else {
throw new exception("XML Rechnung fehlgeschlagen!"); throw new exception("XML Rechnung fehlgeschlagen!");
} }
$this->app->DB->Update("UPDATE rechnung SET schreibschutz='1', zuarchivieren = '0' 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); if ($redirect) {
$this->app->Location->execute('index.php?module=rechnung&action=edit&id='.$id);
}
} }
function RechnungArchivierePDF() function RechnungArchivierePDF()
@ -2271,17 +2296,6 @@ class Rechnung extends GenRechnung
) )
); );
$this->app->erp->RechnungArchivieren($invoiceId); $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; return true;
} }
@ -2322,6 +2336,7 @@ class Rechnung extends GenRechnung
implode(', ', $auswahl) implode(', ', $auswahl)
) )
); );
foreach($auswahl as $v) { foreach($auswahl as $v) {
if(!$v) { if(!$v) {
continue; continue;
@ -2662,8 +2677,7 @@ class Rechnung extends GenRechnung
ohne_briefpapier, ohne_briefpapier,
angelegtam, angelegtam,
usereditid, usereditid,
abweichendebezeichnung, abweichendebezeichnung
xmlrechnung
) )
VALUES ( VALUES (
'', '',
@ -2683,8 +2697,7 @@ class Rechnung extends GenRechnung
'".$ohnebriefpapier."', '".$ohnebriefpapier."',
NOW(), NOW(),
'$usereditid', '$usereditid',
'$abweichendebezeichnung', '$abweichendebezeichnung'
'$xmlrechnung'
)" )"
); );
@ -2701,8 +2714,8 @@ class Rechnung extends GenRechnung
$deliverythresholdvatid = $this->app->DB->real_escape_string($deliverythresholdvatid); $deliverythresholdvatid = $this->app->DB->real_escape_string($deliverythresholdvatid);
$this->app->DB->Update("UPDATE rechnung SET deliverythresholdvatid = '$deliverythresholdvatid' WHERE id = $id LIMIT 1"); $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->SchnellFreigabe('rechnung',$id);
$this->app->erp->LoadSteuersaetzeWaehrung($id,'rechnung',$projekt); $this->app->erp->LoadSteuersaetzeWaehrung($id,'rechnung',$projekt);
$this->app->erp->EventAPIAdd('EventRechnungCreate',$id,'rechnung','create'); $this->app->erp->EventAPIAdd('EventRechnungCreate',$id,'rechnung','create');