Incentive (E1): Recruiting-Challenge mit Geldpraemie, Auszahlungs-Export und parallelen Incentives
Neue Felder amount_per_partner, bonus_rank_1..3 und include_sales_points an incentives. Mit ausgeschalteten Umsatzpunkten zaehlt die Wertung nur die Einmalpunkte je Neupartner, die Rangliste entspricht damit der Anzahl Neupartner mit Starterpaket. IncentivePayoutService rechnet Neupartner mal Betrag plus Rang-Bonus fuer qualifizierte Gewinner; Admin-Detailseite bekommt Praemienspalte, Summen und XLSX-Export fuer die Auszahlung. Sidenav und Dashboard zeigen alle aktiven Incentives, damit Montenegro und die Challenge parallel laufen koennen. Teaser, Rangliste und Details zeigen bei Geldpraemie die Praemien-Kachel und "Deine Praemie bisher" und blenden Abo-Bloecke aus, wenn Abos keine Rolle spielen. Montenegro bleibt unveraendert. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
03416b0afe
commit
e3efa2f5f0
27 changed files with 1418 additions and 129 deletions
|
|
@ -121,6 +121,43 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
{{-- ===== PRAEMIE / AUSZAHLUNG (Recruiting-Challenge) ===== --}}
|
||||
<div class="card mb-4">
|
||||
<div class="card-header">
|
||||
<i class="ion ion-md-cash mr-1"></i>
|
||||
<strong>{{ __('incentive.payout_section') }}</strong>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p class="text-muted small">{{ __('incentive.payout_section_help') }}</p>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-3">
|
||||
<label for="amount_per_partner">{{ __('incentive.amount_per_partner') }}</label>
|
||||
<input type="number" step="0.01" min="0" class="form-control" id="amount_per_partner"
|
||||
name="amount_per_partner"
|
||||
value="{{ old('amount_per_partner', isset($incentive->amount_per_partner) ? number_format((float) $incentive->amount_per_partner, 2, '.', '') : '') }}">
|
||||
<small class="form-text text-muted">{{ __('incentive.amount_per_partner_help') }}</small>
|
||||
</div>
|
||||
@for ($bonusRank = 1; $bonusRank <= \App\Models\Incentive::RANK_BONUS_SLOTS; $bonusRank++)
|
||||
<div class="form-group col-md-3">
|
||||
<label for="bonus_rank_{{ $bonusRank }}">{{ __('incentive.bonus_rank', ['n' => $bonusRank]) }}</label>
|
||||
<input type="number" step="0.01" min="0" class="form-control" id="bonus_rank_{{ $bonusRank }}"
|
||||
name="bonus_rank_{{ $bonusRank }}"
|
||||
value="{{ old('bonus_rank_' . $bonusRank, isset($incentive) && $incentive->{'bonus_rank_' . $bonusRank} !== null ? number_format((float) $incentive->{'bonus_rank_' . $bonusRank}, 2, '.', '') : '') }}">
|
||||
</div>
|
||||
@endfor
|
||||
</div>
|
||||
|
||||
<div class="custom-control custom-checkbox">
|
||||
<input type="hidden" name="include_sales_points" value="0">
|
||||
<input type="checkbox" class="custom-control-input" id="include_sales_points" name="include_sales_points"
|
||||
value="1" @if (old('include_sales_points', isset($incentive) ? (int) $incentive->includesSalesPoints() : 1)) checked @endif>
|
||||
<label class="custom-control-label" for="include_sales_points">{{ __('incentive.include_sales_points') }}</label>
|
||||
</div>
|
||||
<small class="form-text text-muted">{{ __('incentive.include_sales_points_help') }}</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- ===== INHALTE: DEUTSCH (Standard) ===== --}}
|
||||
<div class="card mb-4">
|
||||
<div class="card-header bg-primary text-white">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue