diff --git a/www/pages/gutschrift.php b/www/pages/gutschrift.php index 0fc85785..a64b86b8 100644 --- a/www/pages/gutschrift.php +++ b/www/pages/gutschrift.php @@ -620,6 +620,8 @@ class Gutschrift extends GenGutschrift $tmp3->DisplayNew('PDFARCHIV','Menü','noAction'); } + $this->app->Tpl->Add('ZAHLUNGEN',$this->GutschriftZahlung(true)); + if($parsetarget=='') { $this->app->Tpl->Output('gutschrift_minidetail.tpl'); $this->app->ExitXentral(); @@ -738,7 +740,7 @@ class Gutschrift extends GenGutschrift ." $waehrung"; } - $saldo = $this->app->erp->EUR($this->app->erp->GutschriftSaldo($id)); + $saldo = $this->app->erp->EUR($this->GutschriftSaldo($id)); if($saldo < 0) { $saldo = "$saldo"; diff --git a/www/pages/rechnung.php b/www/pages/rechnung.php index 56a59deb..1a251a4d 100644 --- a/www/pages/rechnung.php +++ b/www/pages/rechnung.php @@ -889,7 +889,8 @@ class Rechnung extends GenRechnung } - $this->app->Tpl->Set('ZAHLUNGEN',"Erst ab Version Enterprise verfügbar
"); +// $this->app->Tpl->Set('ZAHLUNGEN',"Erst ab Version Enterprise verfügbar
"); + $this->app->Tpl->Set('ZAHLUNGEN',$this->RechnungZahlung(true)); if (!is_null($gutschrift)) { @@ -2712,4 +2713,183 @@ class Rechnung extends GenRechnung return $this->app->DB->GetInsertID(); } + + + function RechnungZahlung($return=false) + { + $id = $this->app->Secure->GetGET('id'); + + $rechnungArr = $this->app->DB->SelectArr( + "SELECT DATE_FORMAT(datum,'%d.%m.%Y') as datum, belegnr, soll, waehrung, rechnungid + FROM rechnung WHERE id='$id' LIMIT 1" + ); + $waehrung = empty($rechnungArr)?'EUR':$rechnungArr[0]['waehrung']; + if(!$waehrung) { + $waehrung = 'EUR'; + } + + $rechnungid = empty($rechnungArr)?0: $rechnungArr[0]['rechnungid']; + + $auftragid = $rechnungid <= 0?0:$this->app->DB->Select( + sprintf( + 'SELECT `auftragid` FROM `rechnung` WHERE `id` = %d LIMIT 1', + $rechnungid + ) + ); + $eingang ="Zahlungen"; + + + $eingang .="".$rechnungArr[0]['datum'] + ."RG ".$rechnungArr[0]['belegnr'] + ."".$this->app->erp->EUR($rechnungArr[0]['soll']) + ." $waehrung"; + + $eingangArr = $this->app->DB->SelectArr( + "SELECT ko.bezeichnung as konto, DATE_FORMAT(ke.datum,'%d.%m.%Y') as datum, k.id as kontoauszuege, + ke.betrag as betrag, k.id as zeile,k.waehrung + FROM kontoauszuege_zahlungseingang ke + LEFT JOIN kontoauszuege k ON ke.kontoauszuege=k.id + LEFT JOIN konten ko ON k.konto=ko.id + WHERE (ke.objekt='rechnung' AND ke.parameter='$id') + OR (ke.objekt='auftrag' AND ke.parameter='$auftragid' AND ke.parameter>0) + OR (ke.objekt='rechnung' AND ke.parameter='$rechnungid' AND ke.parameter>0)" + ); + $ceingangArr = empty($eingangArr)?0:(!empty($eingangArr)?count($eingangArr):0); + + for($i=0;$i<$ceingangArr;$i++) { + $waehrung = 'EUR'; + if($eingangArr[$i]['waehrung']) { + $waehrung = $eingangArr[$i]['waehrung']; + } + $eingang .="".$eingangArr[$i]['datum'] + ."".$eingangArr[$i]['konto'] + ." (zur Buchung)" + .$this->app->erp->EUR($eingangArr[$i]['betrag']) + ." $waehrung"; + } + // rechnungen zu dieser rechnung anzeigen + + $rechnungen = $this->app->DB->SelectArr("SELECT belegnr, DATE_FORMAT(datum,'%d.%m.%Y') as datum,soll FROM rechnung WHERE rechnungid='$id'"); + + for($i=0;$i<(!empty($rechnungen)?count($rechnungen):0);$i++) + $eingang .="".$rechnungen[$i]['datum']."GS ".$rechnungen[$i]['belegnr']."".$this->app->erp->EUR($rechnungen[$i]['soll'])." EUR"; + + $ausgang = ''; + $ausgangArr = $this->app->DB->SelectArr( + "SELECT ko.bezeichnung as konto, DATE_FORMAT(ke.datum,'%d.%m.%Y') as datum, ke.betrag as betrag, + k.id as zeile,k.waehrung + FROM kontoauszuege_zahlungsausgang ke + LEFT JOIN kontoauszuege k ON ke.kontoauszuege=k.id + LEFT JOIN konten ko ON k.konto=ko.id + WHERE (ke.objekt='rechnung' AND ke.parameter='$id') + OR (ke.objekt='rechnung' AND ke.parameter='$rechnungid' AND ke.parameter>0) + OR (ke.objekt='auftrag' AND ke.parameter='$auftragid' AND ke.parameter>0)" + ); + $cAusgangArr = empty($ausgangArr)?0:(!empty($ausgangArr)?count($ausgangArr):0); + for($i=0;$i<$cAusgangArr;$i++) { + $waehrung = 'EUR'; + if($ausgangArr[$i]['waehrung']) { + $waehrung = $ausgangArr[$i]['waehrung']; + } + $ausgang .="".$ausgangArr[$i]['datum']."" + .$ausgangArr[$i]['konto']." (zur Buchung)" + .$this->app->erp->EUR($ausgangArr[$i]['betrag']) + ." $waehrung"; + } + + $saldo = $this->app->erp->EUR($this->RechnungSaldo($id)); + + if($saldo < 0) { + $saldo = "$saldo"; + } + $waehrung = $this->app->DB->Select("SELECT waehrung FROM rechnung WHERE id = '$id' LIMIT 1"); + if(!$waehrung) { + $waehrung = 'EUR'; + } + $ausgang .="Saldo$saldo $waehrung"; + + if($return) { + return "".$eingang." ".$ausgang."
"; + } + } + +public function RechnungSaldo($id) + { + if($id <= 0) { + return 0; + } + + $rechnungid = $this->app->DB->Select( + sprintf( + 'SELECT `rechnungid` FROM `rechnung` WHERE `id`= %d LIMIT 1', + $id + ) + ); + $auftragid = $rechnungid <= 0?0:$this->app->DB->Select( + sprintf( + 'SELECT `auftragid` FROM `rechnung` WHERE `id`=%d LIMIT 1', + $rechnungid + ) + ); + + $eingangArr = $this->app->DB->SelectArr( + sprintf( + "SELECT ko.bezeichnung as konto, DATE_FORMAT(ke.datum,'%%d.%%m.%%Y') as datum, k.id as kontoauszuege, ke.betrag as betrag + FROM `kontoauszuege_zahlungseingang` AS `ke` + LEFT JOIN `kontoauszuege` AS `k` ON ke.kontoauszuege=k.id + LEFT JOIN `konten` AS `ko` ON k.konto=ko.id + WHERE (ke.objekt='rechnung' AND ke.parameter=%d) + OR (ke.objekt='auftrag' AND ke.parameter=%d AND ke.parameter>0) + OR (ke.objekt='rechnung' AND ke.parameter=%d AND ke.parameter>0)", + $id, $auftragid, $rechnungid + ) + ); + $einnahmen = 0; + if(!empty($eingangArr)) { + foreach($eingangArr AS $eingangRow) { + $einnahmen += $eingangRow['betrag']; + } + } + + //$rechnungen = $this->app->DB->SelectArr("SELECT belegnr, DATE_FORMAT(datum,'%d.%m.%Y') as datum,soll FROM rechnung WHERE rechnungid='$id' "); // alt + $rechnungen = $this->app->DB->SelectArr( + sprintf( + "SELECT ro.belegnr, DATE_FORMAT(ro.datum,'%%d.%%m.%%Y') as datum, ro.soll + FROM `rechnung` AS `ro` + WHERE ro.`id` = %d ", + $id + ) + ); + + if(!empty($rechnungen)) { + foreach($rechnungen as $rechnungRow) { + $einnahmen += $rechnungRow['soll']; + } + } + + $ausgangArr = $this->app->DB->SelectArr( + sprintf( + "SELECT ko.bezeichnung as konto, DATE_FORMAT(ke.datum,'%%d.%%m') as datum, ke.betrag as betrag + FROM kontoauszuege_zahlungsausgang ke + LEFT JOIN kontoauszuege k ON ke.kontoauszuege=k.id + LEFT JOIN konten ko ON k.konto=ko.id + WHERE (ke.objekt='rechnung' AND ke.parameter=%d) + OR (ke.objekt='rechnung' AND ke.parameter=%d AND ke.parameter>0) + OR (ke.objekt='auftrag' AND ke.parameter=%d AND ke.parameter>0)", + $id, $rechnungid, $auftragid + ) + ); + $ausgaben = 0; + if(!empty($ausgangArr)){ + foreach($ausgangArr as $ausgangRow) { + $ausgaben += $ausgangRow['betrg']; + } + } + + return $einnahmen - $ausgaben; + } + + }