web: Preise-Seite zeigt unter Weitere Leistungen nur noch Depublizieren
Inhaltliche Korrektur (8 Credits) und Update/Ergänzung (4 Credits) existieren als buchbare Leistungen noch nicht — sie folgen erst mit dem Bookings-/Magic-Link-Rework und fliegen bis dahin von der Preisliste. Depublizieren wird als Direktkauf in Euro abgerechnet (Stripe-Checkout über billing.depublication_price_cents), nicht in Credits: Die Seite zeigt jetzt 35 € aus derselben Preisquelle wie der Kauf-Flow statt der falschen 35 Credits. Ohne konfigurierten Preis verschwindet der Block komplett (wie das Angebot auf der PM-Detailseite). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
2ea64ad222
commit
07d89a0e6a
5 changed files with 36 additions and 32 deletions
|
|
@ -43,12 +43,11 @@ class PreisePageData
|
||||||
'boostCategory' => $staffel(config('credits.boost_category', [])),
|
'boostCategory' => $staffel(config('credits.boost_category', [])),
|
||||||
'proofPdf' => (int) config('credits.proof_pdf'),
|
'proofPdf' => (int) config('credits.proof_pdf'),
|
||||||
'creditPacks' => config('credits.packs', []),
|
'creditPacks' => config('credits.packs', []),
|
||||||
// TODO: Lineup/Preise hängen am Bookings-/Magic-Link-Rework — final abstimmen.
|
// Depublizieren wird als Direktkauf in Euro abgerechnet (Stripe-
|
||||||
'morePaths' => [
|
// Checkout), nicht in Credits — gleiche Preisquelle wie der Kauf-
|
||||||
'correction' => (int) config('credits.paths.correction'),
|
// Flow. Null/0 = Angebot deaktiviert, dann zeigt die Seite nichts.
|
||||||
'update' => (int) config('credits.paths.update'),
|
// Korrektur/Update folgen erst mit dem Bookings-/Magic-Link-Rework.
|
||||||
'depublish' => (int) config('credits.depublish'),
|
'depublicationPriceCents' => (int) config('billing.depublication_price_cents'),
|
||||||
],
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -95,12 +95,10 @@ return [
|
||||||
'net' => 'netto',
|
'net' => 'netto',
|
||||||
],
|
],
|
||||||
|
|
||||||
// TODO: Diese Leistungen hängen am Magic-Link-/Bookings-Rework — Lineup
|
// Korrektur/Update folgen erst mit dem Magic-Link-/Bookings-Rework —
|
||||||
// und Preise final abstimmen, sobald die In-App-Seite steht.
|
// bis dahin ist Depublizieren die einzige weitere Leistung.
|
||||||
'more' => [
|
'more' => [
|
||||||
'title' => 'Weitere Leistungen',
|
'title' => 'Weitere Leistungen',
|
||||||
'correction' => 'Inhaltliche Korrektur',
|
|
||||||
'update' => 'Update / Ergänzung',
|
|
||||||
'depublish' => 'Depublizieren',
|
'depublish' => 'Depublizieren',
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
|
|
||||||
|
|
@ -92,8 +92,6 @@ return [
|
||||||
|
|
||||||
'more' => [
|
'more' => [
|
||||||
'title' => 'Further services',
|
'title' => 'Further services',
|
||||||
'correction' => 'Content correction',
|
|
||||||
'update' => 'Update / addition',
|
|
||||||
'depublish' => 'Unpublish',
|
'depublish' => 'Unpublish',
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,8 @@
|
||||||
Datenquellen (alles aus dem System, nichts hartkodiert):
|
Datenquellen (alles aus dem System, nichts hartkodiert):
|
||||||
- Abos: Plan::active() -> $plans
|
- Abos: Plan::active() -> $plans
|
||||||
- Einzel-PM: config('billing.single_pm_price_cents') -> $singlePmPriceCents
|
- Einzel-PM: config('billing.single_pm_price_cents') -> $singlePmPriceCents
|
||||||
- Add-ons: config('credits.*') -> $extraPm, $boost, $proofPdf, $creditPacks, $morePaths
|
- Add-ons: config('credits.*') -> $extraPm, $boost, $proofPdf, $creditPacks
|
||||||
|
- Depublizieren: config('billing.depublication_price_cents') -> $depublicationPriceCents (Direktkauf in Euro)
|
||||||
|
|
||||||
Inhalte/Texte: lang/de/pricing.php + lang/en/pricing.php (Schlüssel pricing.*).
|
Inhalte/Texte: lang/de/pricing.php + lang/en/pricing.php (Schlüssel pricing.*).
|
||||||
|
|
||||||
|
|
@ -261,25 +262,20 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{-- Weitere Leistungen — TODO: hängt am Bookings-/Magic-Link-Rework,
|
{{-- Weitere Leistungen: aktuell nur Depublizieren (Direktkauf in
|
||||||
Lineup und Preise final abstimmen, sobald die In-App-Seite steht. --}}
|
Euro, nicht Credits). Korrektur/Update folgen erst mit dem
|
||||||
<div class="mt-px bg-bg border border-bg-rule border-t-0 p-6">
|
Bookings-/Magic-Link-Rework und bleiben bis dahin draußen. --}}
|
||||||
<div class="eyebrow muted mb-3">{{ __('pricing.addons.more.title') }}</div>
|
@if ($depublicationPriceCents > 0)
|
||||||
<div class="flex flex-wrap gap-x-8 gap-y-2 text-[12.5px]">
|
<div class="mt-px bg-bg border border-bg-rule border-t-0 p-6">
|
||||||
<span class="inline-flex items-baseline gap-2">
|
<div class="eyebrow muted mb-3">{{ __('pricing.addons.more.title') }}</div>
|
||||||
<span class="text-ink-2">{{ __('pricing.addons.more.correction') }}</span>
|
<div class="flex flex-wrap gap-x-8 gap-y-2 text-[12.5px]">
|
||||||
<span class="font-mono text-ink">{{ $morePaths['correction'] }} {{ __('pricing.addons.credits_unit') }}</span>
|
<span class="inline-flex items-baseline gap-2">
|
||||||
</span>
|
<span class="text-ink-2">{{ __('pricing.addons.more.depublish') }}</span>
|
||||||
<span class="inline-flex items-baseline gap-2">
|
<span class="font-mono text-ink">{{ $euro($depublicationPriceCents) }} €</span>
|
||||||
<span class="text-ink-2">{{ __('pricing.addons.more.update') }}</span>
|
</span>
|
||||||
<span class="font-mono text-ink">{{ $morePaths['update'] }} {{ __('pricing.addons.credits_unit') }}</span>
|
</div>
|
||||||
</span>
|
|
||||||
<span class="inline-flex items-baseline gap-2">
|
|
||||||
<span class="text-ink-2">{{ __('pricing.addons.more.depublish') }}</span>
|
|
||||||
<span class="font-mono text-ink">{{ $morePaths['depublish'] }} {{ __('pricing.addons.credits_unit') }}</span>
|
|
||||||
</span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
@endif
|
||||||
|
|
||||||
<p class="text-[11.5px] text-ink-3 m-0 mt-4 max-w-[680px]">{{ __('pricing.vat_note') }}</p>
|
<p class="text-[11.5px] text-ink-3 m-0 mt-4 max-w-[680px]">{{ __('pricing.vat_note') }}</p>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,20 @@ test('the pricing page renders the editorial shell with real plans, single pm an
|
||||||
->assertSeeText('7 Tage') // boost 7d aus config
|
->assertSeeText('7 Tage') // boost 7d aus config
|
||||||
->assertSeeText('10 Credits') // Credit-Paket p10 aus config
|
->assertSeeText('10 Credits') // Credit-Paket p10 aus config
|
||||||
->assertSeeText('Depublizieren')
|
->assertSeeText('Depublizieren')
|
||||||
->assertSeeText('35 Credits'); // depublish aus config
|
->assertSee('35 €', false) // billing.depublication_price_cents (Direktkauf, keine Credits)
|
||||||
|
// Korrektur/Update gibt es noch nicht (folgen mit dem Magic-Link-Rework).
|
||||||
|
->assertDontSeeText('Inhaltliche Korrektur')
|
||||||
|
->assertDontSeeText('Update / Ergänzung');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('the pricing page hides the depublication offer without a configured price', function () {
|
||||||
|
/** @var TestCase $this */
|
||||||
|
$this->seed(PlanSeeder::class);
|
||||||
|
config()->set('billing.depublication_price_cents', null);
|
||||||
|
|
||||||
|
$this->get('https://businessportal24.test/de/preise')
|
||||||
|
->assertSuccessful()
|
||||||
|
->assertDontSeeText('Depublizieren');
|
||||||
});
|
});
|
||||||
|
|
||||||
test('the pricing page serves english content on the english edition', function () {
|
test('the pricing page serves english content on the english edition', function () {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue