Not a one-click Tally upload — these are the registers an accountant already asks for (Sales, Purchase, Receipt, Payment, Credit Note, Debit Note), in the flat date/party/amount shape Tally's own Import Vouchers Excel/CSV wizard expects. Map party names to your existing ledgers on the way in.
{{-- Sales Register --}}
Sales Register
@if ($mixedLeftOut > 0)
{{ $mixedLeftOut }} {{ Str::plural('invoice', $mixedLeftOut) }} with more than one brand {{ $mixedLeftOut === 1 ? 'is' : 'are' }} left out here: export them from All brands, so no invoice is imported twice.
@endif
@can('reports.export')
@endcan
@if ($salesRegister->isEmpty())
@else
Date
Invoice No
Party
Total
@foreach ($salesRegister as $sale)
{{ $sale->sale_date->format('d M Y') }}
{{ $sale->invoice_number }}
{{ $sale->customer->name }}
{{ number_format($sale->total, 2) }}
@endforeach
@endif
{{-- Purchase Register --}}
Purchase Register
One row per goods receipt — the real bill event, not the order.
@can('reports.export')
@endcan
@if ($purchaseRegister->isEmpty())
@else
Date
Bill / Receipt No
Party
Total
@foreach ($purchaseRegister as $r)
{{ \Illuminate\Support\Carbon::parse($r->received_date)->format('d M Y') }}