Der Wiedereintritt war da, nur nicht erreichbar
Aus dem Gespraech vom 17.09.2026.
Der Kunde suchte den Knopf "Wiedereintritt" an einer ausgetretenen Person
und hielt ihn fuer verschwunden — "ich dachte eigentlich, das ist schon
implementiert, das war mal drin". Er war drin. Er hing nur an
employee.status, und diese Spalte haengt nach: an einer Person, deren
Austritt erfasst und inzwischen vollzogen war, stand dort weiter "Aktiv".
Das ist mein Fehler beim Statusfix. Umgestellt waren dort `isActive` und
`canEditData` — die fuenf einzelnen Abfragen in derselben Datei blieben
stehen, dazu je eine in KarenzPanel und TerminatePanel. Jetzt liest keine
mehr die Spalte; die beiden Panels bekommen den abgeleiteten Status
uebergeben, statt ihn sich selbst aus der Zeile zu holen.
Betroffen war ausser dem Wiedereintritt auch: welcher Austritts-Knopf
erscheint ("Nicht angetreten" statt "Austritt"), die Beschriftung der
Abwesenheit, die Vorbelegung der Beendigungsart und ob die Zugehoerigkeit
angezeigt wird.
Dazu: die Niederlassung ist aus dem Reiter Organisation wieder raus. Sie
stand dort als unsere Auslegung von Anforderung 8; der Kunde hat sie im
Gespraech gestrichen ("nimm's mal hier raus"). Was mit der Anforderung
gemeint war, bleibt offen.
This commit is contained in:
@@ -117,7 +117,7 @@ export function EmployeeDetail(props: EmployeeDetailProps) {
|
||||
</p>
|
||||
<p className="mt-1 text-xs text-ink-muted">
|
||||
Pers.-Nr. {employee.personnel_number}
|
||||
{employee.status !== "Geplant" && <> · Zugehörigkeit: {tenure(employee.entry_date, employee.exit_date)}</>}
|
||||
{status !== "Geplant" && <> · Zugehörigkeit: {tenure(employee.entry_date, employee.exit_date)}</>}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -129,7 +129,7 @@ export function EmployeeDetail(props: EmployeeDetailProps) {
|
||||
<ActionButton icon={TrendingUp} label="Befördern" onClick={() => setPanel("promote")} />
|
||||
<ActionButton
|
||||
icon={Clock}
|
||||
label={employee.status === "Karenz" ? "Abwesenheit verwalten" : "Langzeitabwesenheit"}
|
||||
label={status === "Karenz" ? "Abwesenheit verwalten" : "Langzeitabwesenheit"}
|
||||
onClick={() => setPanel("karenz")}
|
||||
/>
|
||||
</>
|
||||
@@ -140,7 +140,7 @@ export function EmployeeDetail(props: EmployeeDetailProps) {
|
||||
noch keinen Tag gearbeitet, und genau dafür gibt es den Grund
|
||||
„No Show" — ohne diesen Knopf bliebe sie auf Dauer als
|
||||
geplanter Eintritt stehen. */}
|
||||
{(isActive || employee.status === "Geplant") && (
|
||||
{(isActive || status === "Geplant") && (
|
||||
<Button
|
||||
variant="secondary"
|
||||
size="sm"
|
||||
@@ -148,12 +148,22 @@ export function EmployeeDetail(props: EmployeeDetailProps) {
|
||||
className="!border-danger-solid !text-danger-solid hover:!bg-danger-bg"
|
||||
>
|
||||
<XCircle className="h-4 w-4" />
|
||||
{employee.status === "Geplant" ? "Nicht angetreten" : "Austritt"}
|
||||
{status === "Geplant" ? "Nicht angetreten" : "Austritt"}
|
||||
</Button>
|
||||
)}
|
||||
{employee.status === "Ausgetreten" && (
|
||||
{/* Der Knopf hing an `employee.status` — der Spalte, die
|
||||
nachhängt. An einer Person, deren Austritt erfasst und
|
||||
inzwischen vollzogen war, stand dort weiter „Aktiv", und der
|
||||
Wiedereintritt war schlicht nicht erreichbar. Der Kunde hat
|
||||
ihn deshalb für verschwunden gehalten („ich dachte, das ist
|
||||
schon implementiert, das war mal drin").
|
||||
*
|
||||
Beim Statusfix waren nur `isActive` und `canEditData`
|
||||
umgestellt worden — die fünf einzelnen Abfragen in dieser
|
||||
Datei blieben stehen. Jetzt liest keine mehr die Spalte. */}
|
||||
{status === "Ausgetreten" && (
|
||||
<Button size="sm" onClick={() => setPanel("rehire")}>
|
||||
<RotateCcw className="h-4 w-4" /> Wiedereinstellen
|
||||
<RotateCcw className="h-4 w-4" /> Wiedereintritt
|
||||
</Button>
|
||||
)}
|
||||
</div>
|
||||
@@ -195,7 +205,6 @@ export function EmployeeDetail(props: EmployeeDetailProps) {
|
||||
directReports={directReports}
|
||||
breadcrumb={breadcrumb}
|
||||
kostenstelle={kostenstelle}
|
||||
standort={location?.name ?? null}
|
||||
/>
|
||||
)}
|
||||
{tab === "Onboarding" && (
|
||||
@@ -215,7 +224,7 @@ export function EmployeeDetail(props: EmployeeDetailProps) {
|
||||
openPositions={openPositions}
|
||||
/>
|
||||
<PromotePanel open={panel === "promote"} onClose={() => setPanel(null)} employee={employee} />
|
||||
<KarenzPanel open={panel === "karenz"} onClose={() => setPanel(null)} employee={employee} />
|
||||
<KarenzPanel open={panel === "karenz"} onClose={() => setPanel(null)} employee={employee} status={status} />
|
||||
<DatenAendernPanel
|
||||
open={panel === "daten"}
|
||||
onClose={() => setPanel(null)}
|
||||
@@ -223,7 +232,13 @@ export function EmployeeDetail(props: EmployeeDetailProps) {
|
||||
dependents={dependents}
|
||||
locationCountry={location?.country}
|
||||
/>
|
||||
<TerminatePanel open={panel === "terminate"} onClose={() => setPanel(null)} employee={employee} directReportCount={directReports.length} />
|
||||
<TerminatePanel
|
||||
open={panel === "terminate"}
|
||||
onClose={() => setPanel(null)}
|
||||
employee={employee}
|
||||
status={status}
|
||||
directReportCount={directReports.length}
|
||||
/>
|
||||
<RehirePanel
|
||||
open={panel === "rehire"}
|
||||
onClose={() => setPanel(null)}
|
||||
|
||||
Reference in New Issue
Block a user