@extends('layouts.app') @section('content')

تقرير حركة الأصناف

عرض جميع حركات الأصناف في المخازن (وارد - منصرف - تحويل)

@if ($movements->count() > 0) @php // حساب أرصدة كل صنف بناءً على آخر حركة $itemBalances = []; $balances = []; foreach ($movements as $mov) { $key = $mov->item_name . '_' . ($mov->to_warehouse ?? $mov->from_warehouse ?? 'unknown'); $currentBalance = $balances[$key] ?? 0; if ($mov->document_type === 'receipt') { $currentBalance += floatval($mov->quantity); } elseif ($mov->document_type === 'issue') { $currentBalance -= floatval($mov->quantity); } elseif ($mov->document_type === 'transfer') { $currentBalance += floatval($mov->quantity); } $balances[$key] = $currentBalance; $itemBalances[$mov->item_name] = $currentBalance; } // الرصيد النهائي الكلي $finalBalance = array_sum($itemBalances); @endphp

إجمالي الوارد

{{ number_format($movements->where('effect', 'receipt')->sum('quantity'), 2) }}

إجمالي المنصرف

{{ number_format($movements->where('effect', 'issue')->sum('quantity'), 2) }}

إجمالي المحول

{{ number_format($movements->where('effect', 'transfer')->sum('quantity'), 2) }}

الرصيد النهائي

{{ number_format($finalBalance, 2) }}

@endif
@php // حساب الرصيد الجاري الصحيح لكل حركة $balances = []; foreach ($movements as $mov) { // مفتاح فريد لكل صنف + مخزن $key = $mov->item_name . '_' . ($mov->to_warehouse ?? $mov->from_warehouse ?? 'unknown'); // احصل على الرصيد الحالي (أو 0 إذا لم يكن موجوداً) $currentBalance = $balances[$key] ?? 0; // تحديث الرصيد حسب نوع الحركة if ($mov->document_type === 'receipt') { $currentBalance += floatval($mov->quantity); } elseif ($mov->document_type === 'issue') { $currentBalance -= floatval($mov->quantity); } elseif ($mov->document_type === 'transfer') { // التحويل يضيف للمخزن المستقبل $currentBalance += floatval($mov->quantity); } // احفظ الرصيد الجديد $balances[$key] = $currentBalance; // أضف الرصيد للحركة الحالية $mov->running_balance = $currentBalance; } @endphp @forelse($movements as $movement) @php $isInbound = $movement->document_type === 'receipt'; $isOutbound = $movement->document_type === 'issue'; $isTransfer = $movement->document_type === 'transfer'; $runningBalance = $movement->running_balance ?? 0; @endphp @empty @endforelse
# التاريخ نوع الحركة الصنف وارد منصرف محول الرصيد الوحدة من / إلى المستند الملاحظات
{{ $loop->iteration }} {{ $movement->document_date ? \Carbon\Carbon::parse($movement->document_date)->format('Y-m-d') : '-' }} @if ($isInbound) وارد @elseif($isOutbound) منصرف @else تحويل @endif {{ $movement->item_name ?? '-' }} {{ $isInbound ? number_format($movement->quantity, 2) : '-' }} {{ $isOutbound ? number_format($movement->quantity, 2) : '-' }} @if ($isTransfer) {{ number_format($movement->quantity, 2) }} @else - @endif {{ number_format($runningBalance, 2) }} {{ $movement->unit_name ?? '-' }} @if ($isTransfer) من: {{ $movement->from_warehouse ?? '-' }}
إلى: {{ $movement->to_warehouse ?? '-' }} @else {{ $movement->from_warehouse ?? ($movement->to_warehouse ?? '-') }} @endif
{{ $movement->document_number ?? '-' }} {{ Str::limit($movement->notes ?? '', 20) }}
لا توجد حركات
@endsection