Mitgliedschaft: Erinnerungen und eigenes Verlaengerungs-Produkt

Die Erinnerungsmails vor Ablauf der Mitgliedschaft beschrieben noch den
abgeschafften SEPA-Einzug und verlinkten auf die Hauptdomain, wo
/user/membership nicht existiert. Das Produkt fuer die Verlaengerung war
zudem dasselbe wie bei der Registrierung und sprach deshalb vom
Neuabschluss.

- Erinnerungen: nur noch Stufen 31/33/34/35, SEPA-Stufen 32/36/37 samt
  :price und :pay_date entfallen; Button verlinkt auf my.mivita.care;
  fehlt ein Text zum Status, wird die Mail geloggt statt roh versendet.
- Alle Erinnerungstexte (de/en/es/fr) erklaeren jetzt, dass ohne Zahlung
  der Account pausiert und offene Provisionen ausgezahlt werden.
- Eigenes Produkt fuer die Verlaengerung (identifier show_renewal) als
  Kopie des Mitgliedschafts-Produkts inkl. Preisen, Kategorien und
  Uebersetzungen fuer en/es/fr; die Mitgliedschaftsseite faellt ohne
  dieses Produkt auf das bisherige zurueck.
- Mitgliedschaftsseite auf ein Paket reduziert: Upgrade-, Wechsel- und
  Abo-Optionen entfernt, Texte auf die manuelle Verlaengerung umgestellt.
- Alte Cron-Weboberflaeche entfernt, der Versand laeuft ueber den
  Scheduler (payments:check-accounts).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Kevin 2026-08-26 08:24:32 +00:00
parent 0bdb6eabc6
commit 30fb031d12
30 changed files with 810 additions and 1223 deletions

View file

@ -20,110 +20,43 @@
</h4>
<div class="row">
<div class="col order-2 order-md-1">
{{-- isRenewalAccount payment_account date - config('mivita.renewal_days') Vertragsverlängerung --}}
{{-- Verlaengerungsfenster: ab config('mivita.renewal_days') Tagen vor Ablauf ist die Zahlung moeglich.
Es gibt nur noch eine Mitgliedschaft: Zahlung eingegangen => +1 Jahr, sonst laeuft sie aus. --}}
@if($user->isRenewalAccount())
<div class="card w-100 mb-4">
<h5 class="card-header">
{!! __('membership.membership_was_renewed', ['date'=>$user->nextRenewalAccount()]) !!}
</h5>
<h5 class="card-header">{{ __('membership.renewal_hl') }}</h5>
<div class="card-body">
<p>{{ __('membership.info_contract_renewal', ['days'=>config('mivita.renewal_days')]) }}</p>
@if($user->isActiveAccount())
<p>{{ __('membership.renewal_info', ['datetime' => $user->getPaymentAccountDateFormat()]) }}</p>
@else
<p>{{ __('membership.renewal_expired_info', ['datetime' => $user->getPaymentAccountDateFormat()]) }}</p>
@endif
<p>{{ __('membership.renewal_consequence') }}</p>
@if($userHistoryPaymentOrder && $userHistoryPaymentOrder->status > 2)
<h6 class="alert badge-{{$userHistoryPaymentOrder->getStatusColor()}}">{{__('membership.payment_has_been_made') }} {{__('membership.status') }}: {{ trans('payment.status.'.$userHistoryPaymentOrder->getStatusType())}}</h6>
@else
<h6 class="alert badge-warning">{{ __('membership.alert_contract_renewal') }}</h6>
@endif
{{--
Abo Option deaktiviert
@if($user->payment_account && $user->isAboOption())
@if($user->payment_account && $user->isAboOption())
@if($user->daysActiveAccount() < config('mivita.abo_booking_days') )
<p class="alert py-2 px-2 badge-secondary">
{!! __('membership.we_do_not_collect_membership_fee', ['date'=>Carbon::parse($user->payment_account)->modify('-'.config('mivita.abo_booking_days').' days')->format('d.m.Y')]) !!}
<br>
@else
<p class="alert py-2 px-2 badge-secondary">
{!! __('membership.renewal_is_active_membership_fee_automatic', ['date'=>Carbon::parse($user->payment_account)->modify('-'.config('mivita.abo_booking_days').' days')->format('d.m.Y')]) !!}
<br>
@endif
<hr>
@endif
@else
@if($user->payment_order_id && $user->payment_order_product->identifier === 'show_upgrade')
<p></p>
@endif
@endif
--}}
@if($userHistoryPaymentOrder && $userHistoryPaymentOrder->status > 2)
<h5 class="card-header bg-light">
<a href="#" class="" data-toggle="collapse" data-target="#collapsePaymentForm" aria-expanded="false" aria-controls="collapsePaymentForm">
<a href="#" data-toggle="collapse" data-target="#collapsePaymentForm" aria-expanded="false" aria-controls="collapsePaymentForm">
<i class="fa fa-caret-expand"></i> {{ __('membership.open_payment_options') }}
</a>
</h5>
<div class="collapse" id="collapsePaymentForm">
@include('user.membership._payment_order')
</div>
@else
@include('user.membership._payment_order')
@endif
@if($user->payment_order_id)
@if($user->payment_order_product->identifier === 'show_upgrade')
<p><strong><i>{{ __('membership.downgrade_membership_is_not_possible') }}</i></strong></p>
<p><strong><i>{{ __('membership.upgrade_package_and_proceed_payment') }}</i></strong></p>
@endif
@if($user->payment_order_product->identifier === 'show_order')
<p><strong><i>{{ __('membership.is_no_longer_possible_to_change_package') }}</i></strong></p>
@endif
@else
<h6 class="alert badge-warning">{{ __('membership.alert_contract_renewal') }}</h6>
@include('user.membership._payment_order')
@endif
</div>
</div>
@else
{{-- no Shop - Upgrade --}}
@if($user->isActiveAccount() && !$user->isActiveShop())
<div class="card w-100 mb-4">
<h5 class="card-header">{{__('membership.MIVITA_BUSINESS_Paket')}} {{__('membership.upgrade')}}</h5>
<div class="card-body">
@if($userHistoryUpgradeOrder && $userHistoryUpgradeOrder->status > 2)
<h6 class="alert badge-{{$userHistoryUpgradeOrder->getStatusColor()}}">
{{__('membership.payment_has_been_made') }} {{__('membership.status') }}: {{ trans('payment.status.'.$userHistoryUpgradeOrder->getStatusType())}}</h6>
@endif
<h5 class="d-block text-dark">>{{ __('membership.upgrade_copy_1') }}</h5>
<p>{{ __('membership.upgrade_copy_2') }}</p>
@if($userHistoryUpgradeOrder && $userHistoryUpgradeOrder->status > 2)
<h5 class="card-header bg-light">
<a href="#" class="" data-toggle="collapse" data-target="#collapsePaymentForm" aria-expanded="false" aria-controls="collapsePaymentForm">
<i class="fa fa-caret-expand"></i> {{ __('Zahlungsoptionen öffnen') }}
</a>
</h5>
<div class="collapse" id="collapsePaymentForm">
@include('user.membership._upgrade')
</div>
@else
@include('user.membership._upgrade')
@endif
</div>
</div>
@endif
{{-- upgrade downgrade next booking --}}
@if($user->payment_account)
@elseif($user->payment_account && $user->isActiveAccount())
<div class="card w-100 mb-4">
<h5 class="card-header">{{__('membership.membership')}} {{__('membership.change')}}</h5>
<h5 class="card-header">{{ __('membership.renewal_hl') }}</h5>
<div class="card-body">
<h6 class="d-block text-dark">
{!! __('membership.change_copy_1', ['date'=> $user->nextRenewalAccount()]) !!}
</h6>
<p>{{__('membership.change_copy_2')}}</p>
@include('user.membership._change')
<p>{{ __('membership.active_info', ['datetime' => $user->getPaymentAccountDateFormat(), 'renewal_date' => $user->nextRenewalAccount()]) }}</p>
<p>{{ __('membership.renewal_consequence') }}</p>
</div>
</div>
@endif
@endif
@ -169,30 +102,6 @@
</div>
</div>
{{-- remove ABO Options --}}
{{--
Abo Option deaktiviert
@if($user->payment_account && $user->is())
<div class="card w-100 mb-4">
{!! Form::open(['action' => route('user_membership_store', ['remove_abo']), 'class' => 'form-horizontal']) !!}
<h5 class="card-header">{{__('payment.auto_renewal_hl')}} {{__('membership.deactivate')}}</h5>
<div class="card-body">
<p>{{__('membership.abo_copy_1')}}<br>
{!! __('membership.abo_copy_2', ['date'=> Carbon::parse($user->payment_account)->modify('-'.config('mivita.abo_booking_days').' days')->format('d.m.Y')]) !!}
</p>
<label class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" name="abo_options_remove">
<span class="custom-control-label secondary">{{__('membership.abo_copy_3')}}</span>
</label>
<button type="submit" class="btn btn-secondary btn-sm">{{__('payment.auto_renewal_hl')}} {{__('membership.deactivate')}}</button>&nbsp;
</div>
{!! Form::close() !!}
</div>
@endif
--}}
@if($user->payment_account)
<div class="card w-100 mb-4">
{!! Form::open(['action' => route('user_membership_store', ['delete_membership']), 'class' => 'form-horizontal']) !!}
@ -232,14 +141,14 @@
@endif
</div>
</li>
@if($user->payment_account && ! $user->isRenewalAccount())
<li class="list-group-item d-flex justify-content-between align-items-center">
<div class="text-muted">{{__('membership.contract_renewal')}}</div>
<div class="text-muted">{{__('membership.renewal_possible_from')}}</div>
<div class="text-right">
@if($user->payment_account)
{{ $user->nextRenewalAccount() }}
@endif
{{ $user->nextRenewalAccount() }}
</div>
</li>
@endif
<li class="list-group-item d-flex justify-content-between align-items-center">
<div class="text-muted">{{ __('membership.consultant_membership') }}</div>
<div class="text-right">
@ -294,19 +203,6 @@
</li>
@endif
@endif
{{--
Abo Option deaktiviert
<li class="list-group-item d-flex justify-content-between align-items-center">
<div class="text-muted">{{__('payment.auto_renewal_hl')}}</div>
<div class="text-right">
@if($user->isAboOption())
<span class="badge badge-pill badge-success"><i class="fa fa-check"></i> {{ __('membership.active') }}</span>
@else
<span class="badge badge-pill badge-danger"><i class="fa fa-times"></i> {{ __('membership.inactive') }}</span>
@endif
</div>
</li>
--}}
</ul>
</div>
</div>