@extends('layouts.app') @section('title', __('Accounting')) @section('page-title', __('Accounting')) @section('page-subtitle', __('Connect your accounting software once — we pull the numbers and analyse them for you.')) @section('content') @php $providerMeta = [ 'exact_online' => [ 'name' => 'Exact Online', 'tagline' => __('One-click sign-in. Works for any Exact division.'), 'badge' => __('Recommended'), 'tone' => 'emerald', 'flow' => 'oauth', 'logo' => '#dc1e35', 'mark' => 'EO', 'highlights' => [__('Trial balance'), __('P&L'), __('Balance sheet')], ], 'odoo' => [ 'name' => 'Odoo', 'tagline' => __('JSON-RPC with an API key from your user profile.'), 'badge' => __('Self-hosted OK'), 'tone' => 'violet', 'flow' => 'manual', 'logo' => '#714b67', 'mark' => 'Od', 'highlights' => [__('Trial balance'), __('Journals'), __('P&L / BS')], ], 'billit' => [ 'name' => 'Billit', 'tagline' => __('Peppol-native invoicing — cash-basis P&L from sales & purchase orders.'), 'badge' => __('E-invoicing'), 'tone' => 'amber', 'flow' => 'manual', 'logo' => '#ff8a3c', 'mark' => 'Bi', 'highlights' => [__('Sales'), __('Purchases'), __('Cash P&L')], ], ]; $statusColors = [ 'connected' => 'bg-emerald-100 text-emerald-700 dark:bg-emerald-900/40 dark:text-emerald-300', 'error' => 'bg-rose-100 text-rose-700 dark:bg-rose-900/40 dark:text-rose-300', 'expired' => 'bg-amber-100 text-amber-700 dark:bg-amber-900/40 dark:text-amber-300', 'revoked' => 'bg-slate-100 text-slate-700 dark:bg-slate-800 dark:text-slate-300', 'running' => 'bg-sky-100 text-sky-700 dark:bg-sky-900/40 dark:text-sky-300', 'ready' => 'bg-amber-100 text-amber-700 dark:bg-amber-900/40 dark:text-amber-300', 'succeeded' => 'bg-emerald-100 text-emerald-700 dark:bg-emerald-900/40 dark:text-emerald-300', 'failed' => 'bg-rose-100 text-rose-700 dark:bg-rose-900/40 dark:text-rose-300', 'pending' => 'bg-slate-100 text-slate-700 dark:bg-slate-800 dark:text-slate-300', ]; $existingProviders = $integrations->pluck('provider')->all(); $connectedCount = $integrations->where('status', 'connected')->count(); $importsTotal = $imports->count(); $lastImport = $imports->where('status', 'succeeded')->first(); @endphp
{{ __('We only read the numbers we need to analyse: trial balance, P&L, balance sheet. Nothing is written back to your accounting system.') }}
{{ __('Pick a period and import — it becomes a submission your firm can analyse.') }}
{{ __('Pick a provider below — your firm will receive ready-to-analyse data without you having to upload anything.') }}
{{ __('Read-only access — we never write to your accounting software.') }}
{{ $meta['tagline'] }}
{{ $meta['tagline'] ?? '' }}
| {{ __('Provider') }} | {{ __('Period') }} | {{ __('Status') }} | {{ __('Records') }} | {{ __('Action') }} |
|---|---|---|---|---|
| {{ $im->integration?->providerLabel() ?? '—' }} | {{ $im->period_from?->toDateString() }} → {{ $im->period_to?->toDateString() }} |
@php $st = $statusColors[$im->status] ?? 'bg-slate-100 text-slate-700'; @endphp
{{ __($im->status) }}
{{ $im->created_at->diffForHumans() }}
|
@if($im->counts) {{ array_sum($im->counts) }} {{ __('total') }} @elseif($im->error_message) {{ Str::limit($im->error_message, 60) }} @else — @endif |
@if($im->status === 'ready')
@elseif($im->submission)
|