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 } }