VTUNAIJA Price Sync

Fetch provider catalogs, review changes, then apply selected product updates.

@csrf
@if(session('success'))
{{ session('success') }}
@endif @if(session('error'))
{{ session('error') }}
@endif @unless($apiReady)
No enabled VTUNAIJA API config was found. Add or enable a VTUNAIJA provider config before fetching prices.
@endunless

Preview

@if(!empty($previewRunId)) Preview run #{{ $previewRunId }} @endif
@if(count($rows))
@csrf
@foreach($rows as $i => $row) @php $canApply = in_array($row['action'], ['create', 'update']); $badge = match($row['action']) { 'create' => 'bg-green-100 text-green-700', 'update' => 'bg-blue-100 text-blue-700', 'unchanged' => 'bg-gray-100 text-gray-600', 'needs_review' => 'bg-yellow-100 text-yellow-700', default => 'bg-red-100 text-red-700', }; @endphp @endforeach
Apply Provider Plan Current Proposed Action
{{ $row['item']['product_name'] }}
{{ $row['item']['service_name'] }} · ID {{ $row['item']['external_id'] }}
@if($row['item']['subcategory'])
{{ $row['item']['subcategory'] }}
@endif @if($row['message'])
{{ $row['message'] }}
@endif
@if($row['product'])
{{ $row['product']['name'] }}
Buy: {{ number_format($row['product']['buying_price'], 2) }}
Customer: {{ number_format($row['product']['customer_price'], 2) }}
@else Not linked @endif
{{ $row['proposed']['name'] }}
Buy: {{ number_format($row['proposed']['buying_price'], 2) }}
Customer: {{ number_format($row['proposed']['customer_price'], 2) }}
Reseller: {{ number_format($row['proposed']['reseller_price'], 2) }}
Agent: {{ number_format($row['proposed']['agent_price'], 2) }}
@if($row['proposed']['markup_rule'])
{{ $row['proposed']['markup_rule']['scope_type'] }} markup
@endif
{{ str_replace('_', ' ', $row['action']) }}
@else
Choose a product type and fetch the latest VTUNAIJA catalog.
@endif