@extends('layouts/layoutMaster') @section('title', 'Merchant Center') @section('content') @if(session('status'))
{{ session('status') }}
@endif @if($errors->any())
@endif
Resumen operativo
Total sync rows {{ number_format($summary['total'], 0, ',', '.') }}
Pendientes {{ number_format($summary['pending'], 0, ',', '.') }}
Sincronizados {{ number_format($summary['synced'], 0, ',', '.') }}
Fallidos {{ number_format($summary['failed'], 0, ',', '.') }}
Bloqueados {{ number_format($summary['blocked'], 0, ',', '.') }}
Excluidos manualmente {{ number_format($summary['manual_excluded'], 0, ',', '.') }}
Anuncios publicados {{ number_format($summary['published'], 0, ',', '.') }}

Sync por cron: merchant:sync-pending cada minuto y merchant:reconcile diario a las 03:15.
Configuracion
@csrf @method('PATCH')
Service account: {{ $config['credentials_configured'] ? 'configurado en entorno' : 'pendiente en .env' }}. La UI no almacena secretos.
@error('merchant_account_id')
{{ $message }}
@enderror
@error('primary_data_source_id')
{{ $message }}
@enderror
@error('feed_label')
{{ $message }}
@enderror
@error('content_language')
{{ $message }}
@enderror
@error('currency')
{{ $message }}
@enderror
@error('google_product_category')
{{ $message }}
@enderror
Acciones
@csrf
@csrf
@csrf
@csrf
Ultima verificacion
@if(is_array($verifyResult))
Cuenta: {{ data_get($verifyResult, 'account.account_name', 'Sin resolver') }} @if(data_get($verifyResult, 'account.account_id')) #{{ data_get($verifyResult, 'account.account_id') }} @endif
@if(is_array($verifyResult['data_source'] ?? null))
Data source: {{ $verifyResult['data_source']['display_name'] ?? 'Sin nombre' }}
ID {{ $verifyResult['data_source']['data_source_id'] ?? '-' }} · feedLabel {{ $verifyResult['data_source']['feed_label'] ?? '-' }} · contentLanguage {{ $verifyResult['data_source']['content_language'] ?? '-' }} · países {{ implode(', ', $verifyResult['data_source']['countries'] ?? []) ?: '-' }}
@endif
Issues de cuenta: @if(empty($verifyResult['issues']))
No hay account issues reportados.
@else
    @foreach($verifyResult['issues'] as $issue)
  • {{ $issue['title'] ?? 'Issue' }} @if(!empty($issue['detail']))
    {{ $issue['detail'] }}
    @endif
  • @endforeach
@endif
@else

Todavia no se ha ejecutado una verificacion en esta sesion.

@endif @if(is_array($lastReconcileSummary))
Ultima reconciliacion: queued {{ $lastReconcileSummary['queued'] ?? 0 }}, orphan_deleted {{ $lastReconcileSummary['orphan_deleted'] ?? 0 }}, processed {{ $lastReconcileSummary['processed'] ?? 0 }}.
@endif
Estado por anuncio
@forelse($syncs as $sync) @php $listing = $sync->listing; @endphp @empty @endforelse
Anuncio Estado Ultima accion Error / issues Exclusion manual Acciones
{{ $listing?->publicTitle() ?: 'Anuncio eliminado #'.$sync->mariachi_listing_id }}
ID {{ $sync->mariachi_listing_id }} @if($listing) · {{ $listing->mariachiProfile?->business_name ?: $listing->mariachiProfile?->user?->email ?: 'Proveedor' }} @endif
{{ $sync->state }} @if($sync->next_sync_at)
next {{ $sync->next_sync_at->format('Y-m-d H:i') }}
@endif
{{ $sync->last_action ?: '-' }}
{{ $sync->synced_at?->format('Y-m-d H:i') ?: ($sync->updated_at?->format('Y-m-d H:i') ?? '-') }}
@if($sync->last_error_message)
{{ $sync->last_error_message }}
@endif @if(is_array($sync->last_remote_issues) && count($sync->last_remote_issues) > 0)
    @foreach($sync->last_remote_issues as $issue)
  • {{ $issue['description'] ?? $issue['detail'] ?? $issue['code'] ?? 'Issue remoto' }}
  • @endforeach
@elseif(! $sync->last_error_message) Sin errores @endif
@if($listing)
@csrf @method('PATCH') @if(! $sync->manual_excluded) @else
{{ $sync->manual_exclusion_reason ?: 'Sin motivo' }}
@endif
@else No aplica @endif
@csrf
@if($listing) Abrir @endif
Todavia no existen registros de sincronizacion Merchant.
@endsection