@extends('layouts.app') @section('content') @php function safeCarbonFromDDHM($dd, $hm = '00:00') { $now = \Carbon\Carbon::now(); if (!$dd || !preg_match('/^\d{1,2}$/', $dd)) return null; if (!$hm || !preg_match('/^\d{2}:\d{2}$/', $hm)) $hm = '00:00'; $date = $now->format('Y-m-') . str_pad($dd, 2, '0', STR_PAD_LEFT); $time = $hm . ':00'; try { return \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $date . ' ' . $time); } catch (Exception $e) { return null; } } @endphp

定期契約情報 > 定期契約情報を確認する

@if(count($contracts) > 0) @foreach($contracts as $i => $contract) @if($i % 2 == 0)
@endif
@php $now = \Carbon\Carbon::now(); $update_flag = $contract->contract_renewal; $start_dd = $contract->update_grace_period_start_date; $start_hm = $contract->update_grace_period_start_time; $end_dd = $contract->update_grace_period_end_date; $end_hm = $contract->update_grace_period_end_time; // dd→今月のdd日, HH:mm→HH:mm:00 でCarbon化 $start_dt = safeCarbonFromDDHM($start_dd, $start_hm); // $start_dd > $end_ddなら$end_ddは次月扱い if (is_numeric($start_dd) && is_numeric($end_dd) && $start_dd > $end_dd) { $next_month = $now->copy()->addMonth(); $end_date = $next_month->format('Y-m-') . str_pad($end_dd, 2, '0', STR_PAD_LEFT); $end_time = $end_hm . ':00'; try { $end_dt = \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $end_date . ' ' . $end_time); } catch (Exception $e) { $end_dt = null; } } else { $end_dt = safeCarbonFromDDHM($end_dd, $end_hm); } $month_end = $now->copy()->endOfMonth(); $bg = 'alert-warning'; $btn_text = '更新する'; $btn_active = true; // 追加: contract_periodeの月より現在月が前なら一律「ご契約中」 $periode_month = $contract->contract_periode ? \Carbon\Carbon::parse($contract->contract_periode)->month : null; if (!empty($contract->contract_periode)) { $periode_month = \Carbon\Carbon::parse($contract->contract_periode)->month; } if ($periode_month && $now->month < $periode_month) { $bg='bg-white' ; $btn_text='ご契約中' ; $btn_active=false; } else { if ($update_flag===0) { $bg='bg-white' ; $btn_text='手続き中' ; $btn_active=false; } elseif ($update_flag===1) { $bg='bg-white' ; $btn_text='更新済' ; $btn_active=false; } elseif (!is_null($end_dt) && $end_dt->gt($start_dt)) { if ($start_dt && $now->lt($start_dt)) { $bg = 'bg-white'; $btn_text = 'ご契約中'; $btn_active = false; } else { // 修正: 契約終了日を過ぎていて、更新可能期間内は赤背景 $periode_dt = $contract->contract_periode ? \Carbon\Carbon::parse($contract->contract_periode) : null; if ($periode_dt && $now->gt($periode_dt) && $start_dt && $end_dt && $now->between($start_dt, $end_dt)) { $bg = 'alert-danger'; $btn_text = '更新する'; $btn_active = true; } else { $bg = 'alert-warning'; $btn_text = '更新する'; $btn_active = true; } } } elseif ($start_dt && $start_dt->gt($end_dt)) { if ($now->lt($start_dt)) { $bg = 'bg-white'; $btn_text = 'ご契約中'; $btn_active = false; } elseif ($now->gte($start_dt) && $now->lte($month_end)) { $bg = 'alert-warning'; $btn_text = '更新する'; $btn_active = true; } else { $bg = 'alert-danger'; $btn_text = '更新する'; $btn_active = true; } } } @endphp @if($bg == 'bg-white')
@elseif($bg == 'alert-warning')
@elseif($bg == 'alert-danger')
@else
@endif
定期契約ID {{ $contract->contract_id }}
駐輪場名 {{ $contract->park_name }}
利用者区分 {{ $contract->usertype_subject1 }}
車種 {{ $contract->psection_subject ?? '' }}
階数 {{ $contract->ptype_subject ?? '' }}
車室番号 {{ $contract->pplace_no ?? '' }}
利用開始日 {{ \Carbon\Carbon::parse($contract->contract_periods)->format('Y/m/d') }}
契約月数 {{ $contract->enable_months }}ヶ月
@if($bg == 'alert-warning' && $btn_active) {{ $btn_text }} @elseif($bg == 'alert-danger' && $btn_active) {{ $btn_text }} @else @endif @if($bg == 'alert-warning') @elseif($bg == 'alert-danger') @else @endif
@php $has_receipt = DB::table('inv_publish')->where('contract_id', $contract->contract_id)->exists(); @endphp @if($has_receipt) @if($bg == 'alert-warning') 領収書再発行 @elseif($bg == 'alert-danger') 領収書再発行 @else 領収書再発行 @endif @else @if($bg == 'alert-warning') 領収書発行 @elseif($bg == 'alert-danger') 領収書発行 @else 領収書発行 @endif @endif
@if($i % 2 == 1 || $i == count($contracts) - 1)
@endif @endforeach @else

定期契約情報はありません。

@endif {{-- modal moved to end of file to avoid clipping issues --}}
@endsection