Ketten mit Vorgeschichte: unterstes Glied ist nicht immer ein Kauf
Ein Spieler mit drei Paketen und drei Plaetzen stand bei "-1 von 3". Der dritte Platz kam aus einem fremden Gruppen-CC: beigetreten mit einem CC-Guthaben, spaeter per Redesign ausgestiegen und als eigener CC weitergefuehrt. Damit beginnt zwar eine neue Kette, aber kein neuer Platz - bezahlt ist er laengst, naemlich mit dem Beitritt. Die Automatik sah nur "unterstes Glied" und buchte es auf CC-Paket um. Der Platz stand damit zweimal im Konto, einmal fuer den Beitritt und einmal fuer den eigenen CC. Jetzt zaehlt, ob der Kette etwas vorausging: Zeigt ihr erstes Glied auf einen Vorgaenger ausserhalb, ist auch dieses Glied ein Redesign. Dabei fiel ein zweiter Fehler auf: Das Neuverketten loeschte genau diesen Verweis, weil es die Verkettung innerhalb der Linie normalisierte. Damit ging die einzige Spur zur Herkunft verloren - und mit ihr der Eintrag "war dabei" am Fuss der Kette. Ein Vorgaenger ausserhalb bleibt jetzt stehen. Fuer die Korrektur bereits falsch gebuchter Eintraege kann "Bezahlart" jetzt auch zwischen CC-Paket und Redesign wechseln, nicht nur zwischen bezahlt und Kulanz. Der Knopf steht an jedem Eintrag, nicht nur an Redesigns.
This commit is contained in:
@@ -527,16 +527,14 @@ function ChainEntry({
|
||||
<button type="button" className="btn btn-tiny btn-ghost" onClick={() => onAction('edit', character)}>
|
||||
Bearbeiten
|
||||
</button>
|
||||
{character.predecessorId !== null && (
|
||||
<button
|
||||
type="button"
|
||||
className="btn btn-tiny btn-ghost"
|
||||
title="Bezahltes Redesign oder Kulanz? Lässt sich nachträglich umbuchen."
|
||||
onClick={() => onAction('redesignKind', character)}
|
||||
>
|
||||
Bezahlart
|
||||
</button>
|
||||
)}
|
||||
<button
|
||||
type="button"
|
||||
className="btn btn-tiny btn-ghost"
|
||||
title="Aus einem CC-Paket, einem bezahlten Redesign oder aus Kulanz? Lässt sich nachträglich umbuchen."
|
||||
onClick={() => onAction('redesignKind', character)}
|
||||
>
|
||||
Bezahlart
|
||||
</button>
|
||||
<button type="button" className="btn btn-tiny btn-ghost" onClick={() => onAction('links', character)}>
|
||||
Verweise
|
||||
</button>
|
||||
|
||||
@@ -538,7 +538,7 @@ export default function PlayerDetail() {
|
||||
onSubmit={(useKind) =>
|
||||
void run(
|
||||
() =>
|
||||
api(`/api/characters/${dialog.character.id}/redesign-kind`, {
|
||||
api(`/api/characters/${dialog.character.id}/funding`, {
|
||||
method: 'POST',
|
||||
body: { useKind },
|
||||
}),
|
||||
@@ -1749,7 +1749,7 @@ function ProblemModal({
|
||||
}
|
||||
|
||||
/**
|
||||
* Stellt um, woraus ein Redesign bezahlt wurde.
|
||||
* Stellt um, woraus ein CC bezahlt wurde.
|
||||
*
|
||||
* Umgebucht wird im Kontobuch: die alte Zeile wird gegengebucht, die neue
|
||||
* kommt dazu. Überschrieben wird nichts - in der Historie bleibt sichtbar,
|
||||
@@ -1763,7 +1763,7 @@ function RedesignKindModal({
|
||||
onSubmit,
|
||||
}: {
|
||||
character: Character;
|
||||
balances: { REDESIGN_PAID: number; REDESIGN_KULANZ: number };
|
||||
balances: { CC: number; REDESIGN_PAID: number; REDESIGN_KULANZ: number };
|
||||
busy: boolean;
|
||||
onClose: () => void;
|
||||
onSubmit: (useKind: CreditKind) => void;
|
||||
@@ -1773,14 +1773,15 @@ function RedesignKindModal({
|
||||
return (
|
||||
<Modal title={`Bezahlart von "${character.name}"`} onClose={onClose}>
|
||||
<Notice kind="info">
|
||||
Ob ein Redesign aus einem gekauften Paket oder aus Kulanz kam, stellt sich manchmal erst
|
||||
später heraus. Umgebucht wird über eine Gegenbuchung - in der Historie bleibt beides
|
||||
sichtbar.
|
||||
Woraus ein CC bezahlt wurde, stellt sich manchmal erst später heraus - etwa wenn eine
|
||||
Absprache auftaucht oder sich zeigt, dass ein Eintrag gar nicht der Anfang einer Kette
|
||||
war. Umgebucht wird über eine Gegenbuchung; in der Historie bleibt beides sichtbar.
|
||||
</Notice>
|
||||
|
||||
<div className="radio-group">
|
||||
{(
|
||||
[
|
||||
['CC', 'CC-Paket (eigener Platz)', balances.CC],
|
||||
['REDESIGN_KULANZ', 'Kulanz-Redesign', balances.REDESIGN_KULANZ],
|
||||
['REDESIGN_PAID', 'Bezahltes Redesign', balances.REDESIGN_PAID],
|
||||
] as const
|
||||
|
||||
Reference in New Issue
Block a user