Zahlungen minidetail and collation of relevant documents as tree

This commit is contained in:
OpenXE 2023-03-15 22:50:58 +01:00
parent 8dd78dfa55
commit ab91715c20
7 changed files with 261 additions and 217 deletions

View File

@ -36016,6 +36016,142 @@ function Firmendaten($field,$projekt="")
}
}
/*
* Retrieve the associated documents regarding payments
* Gutschrift -> Rechnung -> Auftrag OR Verbindlichkeit
* Results array of ids, types, belegnr
*/
public function GetZahlungenAssociatedDocuments(int $id, string $type) : array {
$assocs = array(
array(
'type' => 'auftrag',
'below' => 'rechnung',
),
array(
'above' => 'auftrag',
'type' => 'rechnung',
'below' => 'gutschrift'
),
array(
'above' => 'rechnung',
'type' => 'gutschrift'
),
array(
'type' => 'verbindlichkeit'
)
);
if ($id <= 0) {
throw new exception('no id provided');
}
if (!in_array($type, array('rechnung','gutschrift','auftrag','verbindlichkeit'))) {
throw new exception('invalid type '.$type);
}
$id = $this->app->Secure->GetGET('id');
// Go to highest level
$above = $assocs[array_search($type,array_column($assocs,'type'))]['above'];
while ($above) {
$sql = "SELECT ".$above."id as id FROM ".$type." WHERE id = ".$id;
$above_id = $this->app->DB->SelectArr($sql)[0];
if (!empty($above)) {
$type = $above;
$id = $above_id['id'];
}
$above = $assocs[array_search($type,array_column($assocs,'type'))]['above'];
}
// Cascade down and retrieve all documents
$result_documents = array();
$ids = array($id);
$ref = 'id';
do {
$sql = "SELECT id, '".$type."' AS type, belegnr FROM ".$type." WHERE ".$ref." IN (".implode(",",$ids).")";
$result = $this->app->DB->SelectArr($sql);
if (!empty($result)) {
$result_documents = array_merge($result_documents, $result);
$ids = array_column($result,'id');
$ref = $type."id";
$type = $assocs[array_search($type,array_column($assocs,'type'))]['below'];
} else {
break;
}
} while ($type);
return($result_documents);
}
/*
* Calculate the payments of a document (rechnung, gutschrift, auftrag, verbindlichkeit)
* Results array of payments with information
* Gutschrift -> Rechnungid, Rechnung -> Auftragid
*/
public function GetZahlungen(int $id, string $type) : array {
$documents = $this->GetZahlungenAssociatedDocuments($id, $type);
if (empty($documents)) {
return(array());
}
// print_r($documents);
$zahlungen = array();
$tables = array(
array(
'minus' => '',
'table' => 'kontoauszuege_zahlungseingang',
),
array (
'minus' => '-',
'table' => 'kontoauszuege_zahlungsausgang'
)
);
foreach ($documents as $document) {
foreach ($tables as $table) {
$sql = "
SELECT
'".$document['type']."' as `doc_type`,
'".$document['id']."' as `doc_id`,
'".$document['belegnr']."' as `doc_belegnr`,
ko.bezeichnung AS konto,
DATE_FORMAT(ke.datum, '%d.%m.%Y') AS datum,
k.id AS kontoauszuege,
".$table['minus']."ke.betrag AS betrag,
k.id AS zeile,
k.waehrung
FROM
".$table['table']." ke
LEFT JOIN kontoauszuege k ON
ke.kontoauszuege = k.id
LEFT JOIN konten ko ON
k.konto = ko.id
WHERE
ke.objekt = '".$document['type']."' AND ke.parameter = '".$document['id']."'
";
$result = $this->app->DB->SelectArr($sql);
if (!empty($result)) {
$zahlungen = array_merge($zahlungen,$result);
}
}
}
return($zahlungen);
}
/*
* Calculate the payment saldo of a document
*/
public function ANABREGSNeuberechnen($id,$art,$force=false)
{
if($id <= 0 || empty($art))

View File

@ -3182,6 +3182,11 @@ class Auftrag extends GenAuftrag
);
}
$this->app->Tpl->Add(
'ZAHLUNGEN',
$this->AuftragZahlung(true)
);
// schaue ob es eine GS zu diesem Auftrag gibt
// schaue ob es eine GS zu diesem Auftrag gibt
//$gutschriftid = $this->app->DB->Select("SELECT id FROM gutschrift WHERE rechnungid='$rechnungid' LIMIT 1");
@ -3409,7 +3414,45 @@ class Auftrag extends GenAuftrag
<tr><td><b>Lieferadresse:</b><br><br>$lieferadresse</td></tr></table>";
}
/* Build the html output for minidetail containing the payments
* @param bool $return
*
* @return string
*/
function AuftragZahlung($return=false)
{
$id = $this->app->Secure->GetGET('id');
$zahlungen = $this->app->erp->GetZahlungen($id,'auftrag');
// print_r($zahlungen);
$result = "";
foreach ($zahlungen as $zahlung) {
$result .= "
<tr>
<td>
".$zahlung['datum']."
</td>
<td>
<a href=\"index.php?module=".$zahlung['doc_type']."&action=edit&id=".$zahlung['doc_id']."\">
".ucfirst($zahlung['doc_type'])."
".$zahlung['doc_belegnr']."
</a>
</td>
<td>
".$zahlung['konto']."
</td>
<td>
<a href=\"index.php?module=konto&action=auszug&id=".$zahlung['kontoauszuege']."\">
".$zahlung['betrag']." ".$zahlung['waehrung']."
</a>
</td>
</tr>";
}
return("<table width=100% border=0 class=auftrag_cell cellpadding=0 cellspacing=0>".$result."</table>");
}
function AuftragZahlungsmail()
{

View File

@ -87,7 +87,7 @@
-->
<div style="background-color:white">
<h2 class="greyh2">{|Zahlungseingang|}</h2>
<h2 class="greyh2">{|Zahlungen|}</h2>
<div style="padding:10px">
[ZAHLUNGEN]
</div>

View File

@ -39,7 +39,7 @@
</div>
<div style="background-color:white">
<h2 class="greyh2">{|Zahlungseingang|}</h2>
<h2 class="greyh2">{|Zahlungen|}</h2>
<div style="padding:10px">
[ZAHLUNGEN]
</div>
@ -58,12 +58,6 @@
</div>
</div>
<div style="background-color:white">
<h2 class="greyh2">Deckungsbeitrag</h2>
<div style="padding:10px">
<div class="info">Dieses Modul ist erst ab Version Professional verfügbar</div>
</div>
</div>
</div>

View File

@ -44,7 +44,7 @@
</div>
<div style="background-color:white">
<h2 class="greyh2">Zahlungseingang</h2>
<h2 class="greyh2">Zahlungen</h2>
<div style="padding:10px">
[ZAHLUNGEN]
</div>

View File

@ -650,6 +650,7 @@ class Gutschrift extends GenGutschrift
/**
* Build the html output for minidetail containing the payments
* @param bool $return
*
* @return string
@ -658,102 +659,35 @@ class Gutschrift extends GenGutschrift
{
$id = $this->app->Secure->GetGET('id');
$gutschriftArr = $this->app->DB->SelectArr(
"SELECT DATE_FORMAT(datum,'%d.%m.%Y') as datum, belegnr, soll, waehrung, rechnungid
FROM gutschrift WHERE id='$id' LIMIT 1"
);
$waehrung = empty($gutschriftArr)?'EUR':$gutschriftArr[0]['waehrung'];
if(!$waehrung) {
$waehrung = 'EUR';
}
$rechnungid = empty($gutschriftArr)?0: $gutschriftArr[0]['rechnungid'];
$auftragid = $rechnungid <= 0?0:$this->app->DB->Select(
sprintf(
'SELECT `auftragid` FROM `rechnung` WHERE `id` = %d LIMIT 1',
$rechnungid
)
);
$eingang ="<tr><td colspan=\"3\"><b>Zahlungen</b></td></tr>";
$eingang .="<tr><td class=auftrag_cell>".$gutschriftArr[0]['datum']
."</td><td class=auftrag_cell>GS ".$gutschriftArr[0]['belegnr']
."</td><td class=auftrag_cell align=right>".$this->app->erp->EUR($gutschriftArr[0]['soll'])
." $waehrung</td></tr>";
$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='gutschrift' 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 .="<tr><td class=auftrag_cell>".$eingangArr[$i]['datum']
."</td><td class=auftrag_cell>".$eingangArr[$i]['konto']
."&nbsp;(<a href=\"index.php?module=zahlungseingang&action=editzeile&id="
.$eingangArr[$i]['zeile']."\">zur Buchung</a>)</td><td class=auftrag_cell align=right>"
.$this->app->erp->EUR($eingangArr[$i]['betrag'])
." $waehrung</td></tr>";
}
// gutschriften zu dieser rechnung anzeigen
/*
$gutschriften = $this->app->DB->SelectArr("SELECT belegnr, DATE_FORMAT(datum,'%d.%m.%Y') as datum,soll FROM gutschrift WHERE rechnungid='$id'");
for($i=0;$i<(!empty($gutschriften)?count($gutschriften):0);$i++)
$eingang .="<tr><td class=auftrag_cell>".$gutschriften[$i]['datum']."</td><td class=auftrag_cell>GS ".$gutschriften[$i]['belegnr']."</td><td class=auftrag_cell align=right>".$this->app->erp->EUR($gutschriften[$i]['soll'])." EUR</td></tr>";
*/
$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='gutschrift' 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 .="<tr><td class=auftrag_cell>".$ausgangArr[$i]['datum']."</td><td class=auftrag_cell>"
.$ausgangArr[$i]['konto']."&nbsp;(<a href=\"index.php?module=zahlungseingang&action=editzeile&id="
.$ausgangArr[$i]['zeile']."\">zur Buchung</a>)</td><td class=auftrag_cell align=right>"
.$this->app->erp->EUR($ausgangArr[$i]['betrag'])
." $waehrung</td></tr>";
}
$saldo = $this->app->erp->EUR($this->GutschriftSaldo($id));
if($saldo < 0) {
$saldo = "<b style=\"color:red\">$saldo</b>";
}
$waehrung = $this->app->DB->Select("SELECT waehrung FROM gutschrift WHERE id = '$id' LIMIT 1");
if(!$waehrung) {
$waehrung = 'EUR';
}
$ausgang .="<tr><td class=auftrag_cell></td><td class=auftrag_cell align=right>Saldo</td><td class=auftrag_cell align=right>$saldo $waehrung</td></tr>";
if($return) {
return "<table width=100% border=0 class=auftrag_cell cellpadding=0 cellspacing=0>".$eingang." ".$ausgang."</table>";
$zahlungen = $this->app->erp->GetZahlungen($id,'gutschrift');
// print_r($zahlungen);
$result = "";
foreach ($zahlungen as $zahlung) {
$result .= "
<tr>
<td>
".$zahlung['datum']."
</td>
<td>
<a href=\"index.php?module=".$zahlung['doc_type']."&action=edit&id=".$zahlung['doc_id']."\">
".ucfirst($zahlung['doc_type'])."
".$zahlung['doc_belegnr']."
</a>
</td>
<td>
".$zahlung['konto']."
</td>
<td>
<a href=\"index.php?module=konto&action=auszug&id=".$zahlung['kontoauszuege']."\">
".$zahlung['betrag']." ".$zahlung['waehrung']."
</a>
</td>
</tr>";
}
return("<table width=100% border=0 class=auftrag_cell cellpadding=0 cellspacing=0>".$result."</table>");
}
@ -1251,25 +1185,12 @@ class Gutschrift extends GenGutschrift
// $this->app->erp->CommonReadonly();
}
if($schreibschutz=="1")
$this->app->erp->CommonReadonly();
if($schreibschutz=="1") {
$this->app->erp->CommonReadonly();
}
$rechnungid = $this->app->DB->Select("SELECT rechnungid FROM gutschrift WHERE id='$id' LIMIT 1");
$rechnungid = $this->app->DB->Select("SELECT id FROM rechnung WHERE id='$rechnungid' AND belegnr!='' LIMIT 1");
$alle_gutschriften = $this->app->DB->SelectArr("SELECT id,belegnr FROM gutschrift WHERE rechnungid='$rechnungid' AND rechnungid>0");
if (!is_null($alle_gutschriften)) {
if((!empty($alle_gutschriften)?count($alle_gutschriften):0) > 1)
{
for($agi=0;$agi<(!empty($alle_gutschriften)?count($alle_gutschriften):0);$agi++)
$gutschriften .= "<a href=\"index.php?module=gutschrift&action=edit&id=".$alle_gutschriften[$agi][id]."\" target=\"_blank\">".$alle_gutschriften[$agi][belegnr]."</a> ";
$this->app->Tpl->Add('MESSAGE',"<div class=\"warning\">F&uuml;r die angebene Rechnung gibt es schon folgende Gutschriften: $gutschriften</div>");
}
}
// if($status=="versendet")
// $this->app->Tpl->Set(MESSAGE,"<div class=\"error\">Diese Gutschrift wurde bereits versendet und darf daher nicht mehr bearbeitet werden!</div>");
if($status=="")
$this->app->DB->Update("UPDATE gutschrift SET status='angelegt' WHERE id='$id' LIMIT 1");

View File

@ -1583,6 +1583,9 @@ class Rechnung extends GenRechnung
$this->app->erp->RechnungNeuberechnen($id);
}
// ALWAYS
$this->app->erp->RechnungNeuberechnen($id);
if($cmd === 'dadown')
{
$erg['status'] = 0;
@ -1767,8 +1770,10 @@ class Rechnung extends GenRechnung
$this->app->Tpl->Set('VORKASSE','');
}
// $saldo=$this->app->DB->Select("SELECT ist-skonto_gegeben FROM rechnung WHERE id='$id'");
$saldo = $this->app->erp->EUR($this->RechnungSaldo($id));
$saldo=$this->app->DB->Select("SELECT ist-skonto_gegeben FROM rechnung WHERE id='$id'");
$this->app->Tpl->Set('LIVEIST',"$saldo");
if($schreibschutz=="1" && $this->app->erp->RechteVorhanden('rechnung','schreibschutz'))
@ -1789,10 +1794,13 @@ class Rechnung extends GenRechnung
$this->app->erp->RemoveReadonly('mahnwesenfestsetzen');
$this->app->erp->RemoveReadonly('mahnwesen');
$this->app->erp->RemoveReadonly('bezahlt_am');
/*
'ist' should not be edited manually
$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)
$this->app->erp->RemoveReadonly('ist');
$this->app->erp->RemoveReadonly('ist');*/
//$auftrag= $this->app->DB->Select("SELECT auftrag FROM rechnung WHERE id='$id' LIMIT 1");
@ -1805,7 +1813,7 @@ class Rechnung extends GenRechnung
{
$gutschriften = '';
for($agi=0;$agi<$cgutschriften;$agi++)
$gutschriften .= "<a href=\"index.php?module=gutschrift&action=edit&id=".$alle_gutschriften[$agi][id]."\" target=\"_blank\">".$alle_gutschriften[$agi][belegnr]."</a> ";
$gutschriften .= "<a href=\"index.php?module=gutschrift&action=edit&id=".$alle_gutschriften[$agi]['id']."\" target=\"_blank\">".$alle_gutschriften[$agi]['belegnr']."</a> ";
$this->app->Tpl->Add('MESSAGE',"<div class=\"warning\">F&uuml;r die angebene Rechnung gibt es schon folgende Gutschriften: $gutschriften</div>");
}
@ -1963,6 +1971,7 @@ class Rechnung extends GenRechnung
' &uuml;berein <input type="submit" name="resetextsoll" value="Festgeschriebene Summe zur&uuml;cksetzen" /></div></form>'
);
}
parent::RechnungEdit();
if($id > 0 && $this->app->DB->Select(
sprintf(
@ -2715,104 +2724,45 @@ class Rechnung extends GenRechnung
}
/**
* Build the html output for minidetail containing the payments
* @param bool $return
*
* @return string
*/
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 ="<tr><td colspan=\"3\"><b>Zahlungen</b></td></tr>";
$eingang .="<tr><td class=auftrag_cell>".$rechnungArr[0]['datum']
."</td><td class=auftrag_cell>RG ".$rechnungArr[0]['belegnr']
."</td><td class=auftrag_cell align=right>".$this->app->erp->EUR($rechnungArr[0]['soll'])
." $waehrung</td></tr>";
$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 .="<tr><td class=auftrag_cell>".$eingangArr[$i]['datum']
."</td><td class=auftrag_cell>".$eingangArr[$i]['konto']
."&nbsp;(<a href=\"index.php?module=zahlungseingang&action=editzeile&id="
.$eingangArr[$i]['zeile']."\">zur Buchung</a>)</td><td class=auftrag_cell align=right>"
.$this->app->erp->EUR($eingangArr[$i]['betrag'])
." $waehrung</td></tr>";
}
// 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 .="<tr><td class=auftrag_cell>".$rechnungen[$i]['datum']."</td><td class=auftrag_cell>GS ".$rechnungen[$i]['belegnr']."</td><td class=auftrag_cell align=right>".$this->app->erp->EUR($rechnungen[$i]['soll'])." EUR</td></tr>";
$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 .="<tr><td class=auftrag_cell>".$ausgangArr[$i]['datum']."</td><td class=auftrag_cell>"
.$ausgangArr[$i]['konto']."&nbsp;(<a href=\"index.php?module=zahlungseingang&action=editzeile&id="
.$ausgangArr[$i]['zeile']."\">zur Buchung</a>)</td><td class=auftrag_cell align=right>"
.$this->app->erp->EUR($ausgangArr[$i]['betrag'])
." $waehrung</td></tr>";
}
$saldo = $this->app->erp->EUR($this->RechnungSaldo($id));
if($saldo < 0) {
$saldo = "<b style=\"color:red\">$saldo</b>";
}
$waehrung = $this->app->DB->Select("SELECT waehrung FROM rechnung WHERE id = '$id' LIMIT 1");
if(!$waehrung) {
$waehrung = 'EUR';
}
$ausgang .="<tr><td class=auftrag_cell></td><td class=auftrag_cell align=right>Saldo</td><td class=auftrag_cell align=right>$saldo $waehrung</td></tr>";
if($return) {
return "<table width=100% border=0 class=auftrag_cell cellpadding=0 cellspacing=0>".$eingang." ".$ausgang."</table>";
$zahlungen = $this->app->erp->GetZahlungen($id,'rechnung');
// print_r($zahlungen);
$result = "";
foreach ($zahlungen as $zahlung) {
$result .= "
<tr>
<td>
".$zahlung['datum']."
</td>
<td>
<a href=\"index.php?module=".$zahlung['doc_type']."&action=edit&id=".$zahlung['doc_id']."\">
".ucfirst($zahlung['doc_type'])."
".$zahlung['doc_belegnr']."
</a>
</td>
<td>
".$zahlung['konto']."
</td>
<td>
<a href=\"index.php?module=konto&action=auszug&id=".$zahlung['kontoauszuege']."\">
".$zahlung['betrag']." ".$zahlung['waehrung']."
</a>
</td>
</tr>";
}
return("<table width=100% border=0 class=auftrag_cell cellpadding=0 cellspacing=0>".$result."</table>");
}
public function RechnungSaldo($id)
@ -2823,7 +2773,7 @@ public function RechnungSaldo($id)
$rechnungid = $this->app->DB->Select(
sprintf(
'SELECT `rechnungid` FROM `rechnung` WHERE `id`= %d LIMIT 1',
'SELECT `id` FROM `rechnung` WHERE `id`= %d LIMIT 1',
$id
)
);