@php $typeBadge = ['fixed' => 'sky', 'variable' => 'amber']; // Nav-tab icons for the three tables: the ledger, the overhead-nut analysis, // and payables (supplier bills). $tabIcon = [ 'all' => 'receipt-percent', 'overheads' => 'building-office', 'bills' => 'document-text', ]; // Supplier-bill status → badge colour. $billBadge = [ 'draft' => 'slate', 'awaiting_payment' => 'amber', 'partial' => 'sky', 'paid' => 'emerald', 'cancelled' => 'rose', ]; $costTypeBadge = ['overhead' => 'indigo', 'direct' => 'amber', 'none' => 'slate']; $sourceLabels = [ 'recurring' => __('Recurring expenses'), 'payroll' => __('Payroll'), 'fixed' => __('Fixed operating costs'), ]; @endphp
{{ __('Reporting period') }}
{{ $periodLabel }}
{{ __('Recurring costs that have fallen due. None of these are in the ledger yet, they are posted only when you say so.') }}
| {{ __('Cost') }} | {{ __('Frequency') }} | {{ __('Due since') }} | {{ __('Paid from') }} | {{ __('Usual amount') }} | {{ __('Actions') }} |
|---|---|---|---|---|---|
| {{ $due['label'] }} @if ($due['detail'] !== '') {{ $due['detail'] }} @endif |
|
{{ $due['due_on'] }} @if ($due['periods'] > 1) {{ trans_choice(':count period outstanding|:count periods outstanding', $due['periods'], ['count' => $due['periods']]) }} @endif | {{ $due['account'] ?: __('Not set') }} | {{ $due['currency'] }} {{ number_format($due['amount'], 2) }} |
|
| {{ __('Date') }} | {{ __('Description') }} | {{ __('Classification') }} | {{ __('Category') }} | {{ __('Job / Vendor') }} | {{ __('Amount') }} | {{ __('Actions') }} |
|---|---|---|---|---|---|---|
| {{ $row['date'] ?: '—' }} |
{{ \Illuminate\Support\Str::limit($row['description'], 40) }}
@if ($row['is_recurring'])
|
|
{{ $row['category'] }} | {{ $row['ref'] ?: '—' }} | {{ $base }} {{ number_format($row['base_amount'], 2) }} @if ($row['currency'] !== $base && abs($row['amount'] - $row['base_amount']) > 0.005) {{ $row['currency'] }} {{ number_format($row['amount'], 2) }} @endif |
@if ($row['editable'])
|
|
|
||||||
{{ \Illuminate\Support\Str::limit($row['description'], 32) }}
{{ $base }} {{ number_format($row['base_amount'], 2) }}
{{ $row['date'] ?: '—' }}{{ $row['ref'] ? ' · '.$row['ref'] : '' }}
{{ __('The monthly nut break-even must clear, recurring costs classified as overhead, plus payroll and depreciation.') }}
{{ __('Monthly overheads') }}
{{ $overhead['base'] }} {{ number_format($overhead['monthly'], 2) }}
{{ __('Recurring') }} {{ $overhead['base'] }} {{ number_format($overhead['recurring'], 2) }} @if (in_array('payroll', $overhead['source'], true)) · {{ __('Payroll') }} {{ $overhead['base'] }} {{ number_format($overhead['payroll'], 2) }} @endif
| {{ __('Overhead') }} | {{ __('Frequency') }} | {{ __('Daily rate') }} | {{ __('Monthly (:base)', ['base' => $overhead['base']]) }} |
|---|---|---|---|
| {{ $row['label'] }} | @if (! is_null($row['daily_rate'])) {{ $overhead['base'] }} {{ number_format($row['daily_rate'], 2) }}/{{ __('day') }} @if ($row['daily_basis'] === 'calendar') {{ trans_choice(':count calendar day|:count calendar days', (int) $row['days'], ['count' => (int) $row['days']]) }} @elseif ($row['daily_basis'] === 'working') {{ trans_choice(':count working day|:count working days', (int) $row['days'], ['count' => (int) $row['days']]) }} @else {{ trans_choice(':count day|:count days', (int) $row['days'], ['count' => rtrim(rtrim(number_format((float) $row['days'], 1), '0'), '.')]) }} @endif @else — @endif | {{ $overhead['base'] }} {{ number_format($row['monthly_base'], 2) }} | |
|
|
|||
{{ __('Accounts payable raised this period. Manage bills and payments on Purchasing.') }}
{{ __('Billed') }}
{{ $supplierBills['base'] }} {{ number_format($supplierBills['total'], 2) }}
{{ __('Outstanding') }}
{{ $supplierBills['base'] }} {{ number_format($supplierBills['outstanding'], 2) }}
| {{ __('Bill #') }} | {{ __('Supplier') }} | {{ __('Bill date') }} | {{ __('Due') }} | {{ __('Status') }} | {{ __('Total') }} | {{ __('Balance') }} |
|---|---|---|---|---|---|---|
| {{ $bill['number'] }} | {{ $bill['supplier'] }} | {{ $bill['date'] ?: '—' }} | @if ($bill['due']) {{ $bill['due'] }} @else — @endif | {{ $bill['currency'] }} {{ number_format($bill['total'], 2) }} | {{ $bill['currency'] }} {{ number_format($bill['balance'], 2) }} | |
|
|
||||||
{{ __('Link to a job to count this as a direct cost of that job (added to its profit). Leave blank for a general company expense.') }}
{{ __('The campaign shows this as its actual spend. Only Marketing expenses can be linked.') }}
{{ __('No fund accounts yet, create one under Treasury first.') }}
@else{{ __('Which account this money comes out of. Must match the currency above.') }}
@endif{{ __('Bank/EcoCash fee to send this payment. Booked as a separate "Bank Charges" expense so the fee leaves the account and shows in your P&L. Leave blank if none.') }}
{{ __('Daily rate = monthly amount ÷ days worked. Shown on the overheads panel.') }}
{{ $editingCategoryId ? __('Edit Category') : __('Add Category') }}
{{ __('No categories yet. Add one above.') }}
@endif{{ __('Set how each category is treated in the break-even nut. Overheads count toward the monthly nut; direct costs belong to a job.') }}
@if (! empty($overhead['categories'])){{ __('No categories yet.') }}
@endif{{ __('This records the cost in the ledger and takes the money out of the account you choose. Nothing is posted until you confirm here.') }}
{{ __('Correct it if this period was different from the standing amount.') }}
{{ __('The account the money actually left. It must hold the same currency as the cost.') }}