@extends('layouts.panel') @section('title', 'تامین‌کننده: ' . $supplier->name) @section('content')

{{ $supplier->name }}

مشاهده جزئیات حسابداری

بازگشت به لیست
تعداد کل تراکنش‌ها
{{ $stats['total_transactions'] }}
تعداد کل محصولات خریداری شده
{{ $stats['unique_products_count'] }}
ارزش کل خریدهای انجام شده
{{ number_format($stats['total_purchase_value']) }} تومان
بدهی‌های معوق
{{ $stats['overdue_debts'] }}
@php $balance = $stats['total_credit'] - $stats['total_debit']; $debtAmount = $balance < 0 ? abs($balance) : 0; $creditAmount = $balance > 0 ? abs($balance) : 0; @endphp

خلاصه مالی

مجموع بدهکاری
@if($debtAmount > 0)
{{ number_format($debtAmount) }} تومان
@else
بدهی به این شرکت نداریم
@endif
مجموع بستانکاری
@if($creditAmount > 0)
{{ number_format($creditAmount) }} تومان
@else
0 تومان
@endif
مانده حساب
{{ $balance >= 0 ? '+' : '' }}{{ number_format($balance) }} تومان
@php $runningBalance = 0; $rowNumber = 1; // Build a unified list of entries (debts + manual transactions) $entries = []; // Debts as debit entries if ($supplier->debts && $supplier->debts->count() > 0) { foreach ($supplier->debts as $debt) { $debitAmount = 0; $descriptions = []; if ($debt->purchaseRequest) { $items = $debt->purchaseRequest->items; $pr = $debt->purchaseRequest; // Check if purchase request is completed and has sales user $isCompleted = false; $salesUserName = null; if ($pr->history_status) { $hs = is_array($pr->history_status) ? $pr->history_status : []; $lastStatus = is_array($hs) && count($hs) ? (end($hs)['status'] ?? null) : null; $isCompleted = ($lastStatus === 'completed'); } if ($isCompleted && $pr->salesUser) { $salesUserName = $pr->salesUser->full_name ?? $pr->salesUser->name ?? null; } foreach ($items as $item) { $itemQuantity = $item->quantity; $itemPrice = 0; if ($item->offers) { $selectedOffer = $item->offers->where('is_selected', true)->first(); if ($selectedOffer) { $itemPrice = $selectedOffer->price; } } if ($itemPrice > 0) { $itemAmount = $itemQuantity * $itemPrice; $debitAmount += $itemAmount; $formattedQuantity = ($itemQuantity == (int)$itemQuantity) ? (int)$itemQuantity : $itemQuantity; $formattedPrice = number_format($itemPrice); $description = "{$item->product_name} ({$formattedQuantity} {$item->unit}) در فی {$formattedPrice} تومان"; if ($salesUserName) { $description .= " (بازاریاب: {$salesUserName})"; } $descriptions[] = $description; } } } else { $debitAmount = $debt->total_amount; $descriptions[] = "خرید از درخواست خرید #{$debt->purchase_request_id}"; } $entries[] = [ 'date' => $debt->purchase_date ?? $debt->created_at, 'type' => 'debt', 'description' => implode(' + ', $descriptions), 'debit' => (float)$debitAmount, 'credit' => 0, 'debt_id' => $debt->id, ]; } } // Manual transactions $transactions = $supplier->transactions ?? []; if (is_string($transactions)) { $transactions = json_decode($transactions, true) ?? []; } if (!is_array($transactions)) { $transactions = []; } foreach ($transactions as $tr) { $entries[] = [ 'date' => \Carbon\Carbon::parse($tr['date']), 'type' => 'manual', 'description' => $tr['description'] ?? '', 'debit' => ($tr['type'] ?? '') === 'debit' ? (float)$tr['amount'] : 0, 'credit' => ($tr['type'] ?? '') === 'credit' ? (float)$tr['amount'] : 0, 'transaction_id' => $tr['id'] ?? null, 'transaction_data' => $tr, // Store full transaction data for editing ]; } // Sort by date ascending (oldest first) usort($entries, function ($a, $b) { $da = $a['date'] instanceof \Carbon\Carbon ? $a['date'] : \Carbon\Carbon::parse($a['date']); $db = $b['date'] instanceof \Carbon\Carbon ? $b['date'] : \Carbon\Carbon::parse($b['date']); if ($da->equalTo($db)) return 0; return $da->lessThan($db) ? -1 : 1; }); @endphp @if(count($entries) > 0) @foreach($entries as $entry) @php $runningBalance = $runningBalance - ($entry['debit'] ?? 0) + ($entry['credit'] ?? 0); @endphp @php $rowNumber++; @endphp @endforeach @else @endif @php $finalTransactions = $supplier->transactions ?? []; if (is_string($finalTransactions)) { $finalTransactions = json_decode($finalTransactions, true) ?? []; } if (!is_array($finalTransactions)) { $finalTransactions = []; } @endphp @if($supplier->debts->count() > 0 || count($finalTransactions) > 0) @endif
ردیف تاریخ شرح تراکنش بدهکاری بستانکاری مانده عملیات
{{ $rowNumber }} {{ jdate($entry['date'])->format('Y/m/d') }} {{ $entry['description'] }} @php $d = (float)($entry['debit'] ?? 0); @endphp {!! $d > 0 ? number_format($d) . ' تومان' : '——' !!} @php $c = (float)($entry['credit'] ?? 0); @endphp {!! $c > 0 ? number_format($c) . ' تومان' : '——' !!} {{ $runningBalance >= 0 ? '+' : '' }}{{ number_format($runningBalance) }} تومان
@if(($entry['type'] ?? '') === 'debt') @php $debtModel = \App\Models\Accounting\AccountingDebt::find($entry['debt_id'] ?? null); $purchaseRequestId = $debtModel?->purchase_request_id; $purchaseRequestUrl = null; if ($purchaseRequestId) { // اگر صفحه در پنل کارشناس خرید باشد if (request()->is('purchase/*')) { // روت کارشناس خرید $purchaseRequestUrl = route('purchase.purchase-requests.show', $purchaseRequestId); } else { // پیش‌فرض: پنل مدیریت $purchaseRequestUrl = route('admin.purchase-requests.show', $purchaseRequestId); } } @endphp @if($purchaseRequestUrl) مشاهده @else @endif @elseif(!empty($entry['transaction_id'])) @endif
تراکنشی یافت نشد.
مانده کل: {{ $runningBalance >= 0 ? '+' : '' }}{{ number_format($runningBalance) }} تومان
موردی یافت نشد
نمایش 1 تا {{ $supplier->debts->count() }} از {{ $supplier->debts->count() }}
@push('scripts') @endpush @endsection