Calculation errors for refunded amounts
This commit is contained in:
@@ -96,6 +96,14 @@ class EventResource extends JsonResource{
|
||||
|
||||
$returnArray['income'] = $this->calculateIncomes($returnArray['participants'], $returnArray['supportPerson']['amount']);
|
||||
|
||||
// Eigene Zeile in der Übersicht: In den Zeilen je Teilnahmeart hätte der Betrag nichts zu suchen,
|
||||
// dort stehen nur aktive Anmeldungen.
|
||||
$retainedFromUnregistered = $this->sumPaidOfUnregistered();
|
||||
$returnArray['retainedFromUnregistered'] = [
|
||||
'value' => $retainedFromUnregistered->getAmount(),
|
||||
'readable' => $retainedFromUnregistered->toString(),
|
||||
];
|
||||
|
||||
|
||||
$totalBalanceReal = new Amount(0, 'Euro');
|
||||
$totalBalanceExpected = new Amount(0, 'Euro');
|
||||
@@ -272,6 +280,13 @@ class EventResource extends JsonResource{
|
||||
$realAmount->addAmount(new Amount($participantData['amount']['paid']['value'], 'Euro'));
|
||||
}
|
||||
|
||||
// Was abgemeldete Teilis gezahlt haben und nicht zurückbekommen, gehört in beide Spalten: Das
|
||||
// Geld liegt beim Verband (real) und fließt nicht mehr ab (erwartet). Ohne diese Zeile stünde
|
||||
// jede Veranstaltung mit Abmeldungen dauerhaft schlechter da, als sie ist.
|
||||
$retained = $this->sumPaidOfUnregistered();
|
||||
$realAmount->addAmount($retained);
|
||||
$expectedAmount->addAmount($retained);
|
||||
|
||||
return ['real' => [
|
||||
'amount' => $realAmount,
|
||||
'readable' => $realAmount->toString()
|
||||
@@ -283,6 +298,28 @@ class EventResource extends JsonResource{
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Was von abgemeldeten Teilis beim Verband geblieben ist.
|
||||
*
|
||||
* `amount_paid` führt nach einer Erstattung genau den einbehaltenen Rest; wurde nie erstattet, steht
|
||||
* dort der volle gezahlte Beitrag. Beides ist Geld, das der Veranstaltung zusteht.
|
||||
*
|
||||
* Bewusst eine direkte Abfrage wie in {@see self::getParticipants()} nebenan -- ein einzelner
|
||||
* Repository-Aufruf zwischen den Inline-Queries dieser Klasse würde sie uneinheitlicher machen.
|
||||
*/
|
||||
public function sumPaidOfUnregistered() : Amount
|
||||
{
|
||||
$sum = new Amount(0, 'Euro');
|
||||
|
||||
foreach ($this->event->participants()->whereNotNull('unregistered_at')->get() as $participant) {
|
||||
if ($participant->amount_paid !== null) {
|
||||
$sum->addAmount($participant->amount_paid);
|
||||
}
|
||||
}
|
||||
|
||||
return $sum;
|
||||
}
|
||||
|
||||
public function getParticipants(string $participationType) : array {
|
||||
$returnData = [];
|
||||
$returnData['amount'] = [
|
||||
|
||||
Reference in New Issue
Block a user