@extends('layouts.app') @section('title', 'QuickBooks Data Import') @section('breadcrumb') @endsection @push('styles') @endpush @section('content') @php $journal = $types['journal-entry']; $canImport = auth()->user()->hasPermission('vouchers', 'create'); $hasMissing = $preview && (count($preview['missing_accounts'] ?? []) || count($preview['missing_parties'] ?? [])); @endphp
{{ $journal['label'] }}

{{ $journal['description'] }}

QuickBooks Excel Columns
@foreach($journal['columns'] as $column) {{ $column }} @endforeach
Fast Import
  • Reads only Sheet1 with data-only mode for speed
  • Groups rows by Trans # and uses Account Type when auto-creating missing ledgers
  • Bulk posts journal vouchers with ledger entries
  • Uses Excel Trans # as the voucher number
  • Prefixes memo with Excel Num (e.g. CHK-55 - Rent payment)
  • Skips already imported QuickBooks transactions (matching Trans #)
@unless($canImport)
You do not have permission to import journal data.
@else @if(!$preview)
@csrf
Step 1 — Upload and Analyze

Upload your QuickBooks journal export. The system will scan for missing accounts and parties before importing.

Maximum file size: 50 MB
@else
{{ $preview['file_name'] }}
Found {{ number_format($preview['transactions']) }} journal transactions with {{ number_format($preview['lines']) }} lines.
@if($hasMissing)
Some master lists referenced in this file are not in your database yet. You can auto-create them with a common name prefix, or import the lists first from QuickBooks List Import.
@if(count($preview['missing_accounts']))
Missing Accounts ({{ count($preview['missing_accounts']) }})
@foreach($preview['missing_accounts'] as $account)
{{ is_array($account) ? $account['name'] : $account }} @if(is_array($account) && !empty($account['account_type'])) {{ $account['account_type'] }} @endif
@endforeach
@endif @if(count($preview['missing_parties']))
Missing Parties ({{ count($preview['missing_parties']) }})
@foreach($preview['missing_parties'] as $name)
{{ $name }}
@endforeach
@endif
@else
All referenced accounts and parties already exist. You can import immediately.
@endif @if($errors->has('import'))
{{ $errors->first('import') }}
@endif
@csrf
Step 2 — {{ $hasMissing ? 'Resolve Missing Lists and Import' : 'Run Import' }}
@if(count($preview['missing_accounts']))
@endif @if(count($preview['missing_parties']))
@endif @if($hasMissing)
Example: QB Import - Accounts Receivable
@endif
@csrf
@endif @endunless
@endsection