﻿@extends('layouts.app')

@section('title', TranslationHelper::transFromDatabase('InventoryCounts.CreateTitle', __('إنشاء جرد جديد')))

@section('content')
<div class="container-fluid">
    <div class="row">
        <div class="col-md-12">
            <div class="card">
                <div class="card-header">
                    <h3 class="card-title">{{ TranslationHelper::transFromDatabase('InventoryCounts.CreateTitle', __('إنشاء جرد جديد')) }}</h3>
                    <div class="card-tools">
                        <a href="{{ route('inventory.counts.index') }}" class="btn btn-sm btn-secondary">
                            <i class="fas fa-arrow-right"></i> {{ TranslationHelper::transFromDatabase('General.BackToList', __('العودة للقائمة')) }}
                        </a>
                    </div>
                </div>
                <form action="{{ route('inventory.counts.store') }}" method="POST">
                    @csrf
                    <div class="card-body">
                        <div class="row">
                            <div class="col-md-6">
                                <div class="form-group">
                                    <label for="warehouse_id">{{ TranslationHelper::transFromDatabase('InventoryCounts.Warehouse', __('المخزن')) }} <span class="text-danger">*</span></label>
                                    <select name="warehouse_id" id="warehouse_id" class="form-control @error('warehouse_id') is-invalid @enderror" required>
                                        <option value="">{{ TranslationHelper::transFromDatabase('General.SelectWarehouse', __('-- اختر المخزن --')) }}</option>
                                        @foreach($warehouses as $warehouse)
                                        <option value="{{ $warehouse->id }}" {{ old('warehouse_id') == $warehouse->id ? 'selected' : '' }}>
                                            {{ $warehouse->name }}
                                        </option>
                                        @endforeach
                                    </select>
                                    @error('warehouse_id')
                                    <span class="invalid-feedback">{{ $message }}</span>
                                    @enderror
                                </div>
                            </div>
                            <div class="col-md-6">
                                <div class="form-group">
                                    <label for="count_date">{{ TranslationHelper::transFromDatabase('InventoryCounts.Date', __('تاريخ الجرد')) }} <span class="text-danger">*</span></label>
                                    <input type="date" name="count_date" id="count_date" class="form-control @error('count_date') is-invalid @enderror" value="{{ old('count_date', date('Y-m-d')) }}" required>
                                    @error('count_date')
                                    <span class="invalid-feedback">{{ $message }}</span>
                                    @enderror
                                </div>
                            </div>
                        </div>
                        
                        <div class="form-group">
                            <label for="notes">{{ TranslationHelper::transFromDatabase('InventoryCounts.Notes', __('ملاحظات')) }}</label>
                            <textarea name="notes" id="notes" rows="3" class="form-control @error('notes') is-invalid @enderror">{{ old('notes') }}</textarea>
                            @error('notes')
                            <span class="invalid-feedback">{{ $message }}</span>
                            @enderror
                        </div>
                        
                        <hr>
                        
                        <h4>{{ TranslationHelper::transFromDatabase('InventoryCounts.Items', __('أصناف الجرد')) }}</h4>
                        <div class="alert alert-info">
                            <i class="fas fa-info-circle"></i> {{ TranslationHelper::transFromDatabase('InventoryCounts.LoadItemsHint', __('اختر المخزن أولاً ثم انقر على زر "تحميل أرصدة المخزن" لتحميل الأصناف الموجودة في المخزن.')) }}
                        </div>
                        
                        <div class="mb-3">
                            <button type="button" id="loadItems" class="btn btn-primary">
                                <i class="fas fa-sync"></i> {{ TranslationHelper::transFromDatabase('InventoryCounts.LoadBalances', __('تحميل أرصدة المخزن')) }}
                            </button>
                            <button type="button" id="addItem" class="btn btn-success">
                                <i class="fas fa-plus"></i> {{ TranslationHelper::transFromDatabase('InventoryCounts.AddItemManually', __('إضافة صنف يدوياً')) }}
                            </button>
                        </div>
                        
                        <div class="table-responsive">
                            <table class="table table-bordered" id="items-table">
                                <thead>
                                    <tr>
                                        <th>{{ TranslationHelper::transFromDatabase('InventoryCounts.Item', __('الصنف')) }}</th>
                                        <th>{{ TranslationHelper::transFromDatabase('InventoryCounts.Unit', __('الوحدة')) }}</th>
                                        <th>{{ TranslationHelper::transFromDatabase('InventoryCounts.SystemQty', __('الكمية في النظام')) }}</th>
                                        <th>{{ TranslationHelper::transFromDatabase('InventoryCounts.ActualQty', __('الكمية الفعلية')) }}</th>
                                        <th>{{ TranslationHelper::transFromDatabase('InventoryCounts.Difference', __('الفرق')) }}</th>
                                        <th>{{ TranslationHelper::transFromDatabase('InventoryCounts.UnitCost', __('تكلفة الوحدة')) }}</th>
                                        <th>{{ TranslationHelper::transFromDatabase('InventoryCounts.TotalDiffCost', __('إجمالي تكلفة الفرق')) }}</th>
                                        <th>{{ TranslationHelper::transFromDatabase('InventoryCounts.Notes', __('ملاحظات')) }}</th>
                                        <th>{{ TranslationHelper::transFromDatabase('General.Actions', __('الإجراءات')) }}</th>
                                    </tr>
                                </thead>
                                <tbody id="items-container">
                                    <!-- سيتم إضافة الأصناف هنا -->
                                </tbody>
                            </table>
                        </div>
                        
                        <div id="no-items-message" class="alert alert-warning">
                            {{ TranslationHelper::transFromDatabase('InventoryCounts.NoItemsAdded', __('لم يتم إضافة أصناف للجرد بعد.')) }}
                        </div>
                    </div>
                    <div class="card-footer">
                        <button type="submit" class="btn btn-primary">
                            <i class="fas fa-save"></i> {{ TranslationHelper::transFromDatabase('General.Save', __('حفظ الجرد')) }}
                        </button>
                    </div>
                </form>
            </div>
        </div>
    </div>
</div>

<!-- قالب صف الصنف -->
<template id="item-row-template">
    <tr class="item-row">
        <td>
            <select name="items[{inde}][item_id]" class="form-control item-select" required>
                <option value="">{{ TranslationHelper::transFromDatabase('General.SelectItem', __('-- اختر الصنف --')) }}</option>
                @foreach($items as $item)
                    <option value="{{ $item->id }}">{{ $item->name }} ({{ $item->code }})</option>
                @endforeach
            </select>
        </td>
        <td>
            <select name="items[{inde}][unit_id]" class="form-control unit-select" required>
                <option value="">{{ TranslationHelper::transFromDatabase('General.SelectUnit', __('-- اختر الوحدة --')) }}</option>
            </select>
        </td>
        <td>
            <input type="number" name="items[{inde}][system_quantity]" class="form-control system-quantity" step="0.01" min="0" value="0" required>
        </td>
        <td>
            <input type="number" name="items[{inde}][actual_quantity]" class="form-control actual-quantity" step="0.01" min="0" value="0" required>
        </td>
        <td>
            <input type="number" class="form-control difference-quantity" readonly>
        </td>
        <td>
            <input type="number" name="items[{inde}][unit_cost]" class="form-control unit-cost" step="0.01" min="0" value="0" required>
        </td>
        <td>
            <input type="number" class="form-control total-difference-cost" readonly>
        </td>
        <td>
            <input type="text" name="items[{inde}][notes]" class="form-control">
        </td>
        <td>
            <button type="button" class="btn btn-sm btn-danger remove-item">
                <i class="fas fa-trash"></i>
            </button>
        </td>
    </tr>
</template>
@endsection

@push('scripts')
<script>
    $(document).ready(function() {
        let itemInde = 0;
        
        // إظهار/إخفاء رسالة عدم وجود أصناف
        function toggleNoItemsMessage() {
            if ($('#items-container .item-row').length > 0) {
                $('#no-items-message').hide();
            } else {
                $('#no-items-message').show();
            }
        }
        
        // إضافة صف صنف جديد
        function addItemRow(itemData = null) {
            let template = $('#item-row-template').html();
            template = template.replace(/{inde}/g, itemInde);
            
            let $row = $(template);
            $('#items-container').append($row);
            
            // إذا كانت هناك بيانات صنف، نملأ الحقول
            if (itemData) {
                $row.find('.item-select').val(itemData.item_id);
                $row.find('.unit-select').append(new Option(itemData.unit_name, itemData.unit_id, true, true));
                $row.find('.system-quantity').val(itemData.quantity);
                $row.find('.actual-quantity').val(itemData.quantity);
                $row.find('.unit-cost').val(itemData.cost);
                
                // حساب الفرق والتكلفة
                calculateDifference($row);
            }
            
            itemInde++;
            toggleNoItemsMessage();
        }
        
        // حساب الفرق وتكلفة الفرق
        function calculateDifference($row) {
            let systemQty = parseFloat($row.find('.system-quantity').val()) || 0;
            let actualQty = parseFloat($row.find('.actual-quantity').val()) || 0;
            let unitCost = parseFloat($row.find('.unit-cost').val()) || 0;
            
            let difference = actualQty - systemQty;
            let totalDifferenceCost = difference * unitCost;
            
            $row.find('.difference-quantity').val(difference.toFixed(2));
            $row.find('.total-difference-cost').val(totalDifferenceCost.toFixed(2));
        }
        
        // تحميل وحدات الصنف عند اختياره
        $(document).on('change', '.item-select', function() {
            let $row = $(this).closest('.item-row');
            let itemId = $(this).val();
            let $unitSelect = $row.find('.unit-select');
            
            $unitSelect.empty().append('<option value="">' + "{{ TranslationHelper::transFromDatabase('General.SelectUnit', __('-- اختر الوحدة --')) }}" + '</option>');
            
            if (itemId) {
                $.ajax({
                    url: "{{ route('inventory.items.units.api', ':id') }}".replace(':id', itemId),
                    type: 'GET',
                    success: function(response) {
                        if (response.success) {
                            $.each(response.data, function(index, unit) {
                                $unitSelect.append(new Option(unit.unit_name, unit.unit_id));
                            });
                        }
                    }
                });
            }
        });
        
        // تحميل أرصدة المخزن
        $('#loadItems').click(function() {
            let warehouseId = $('#warehouse_id').val();
            
            if (!warehouseId) {
                alert('الرجاء اختيار المخزن أولاً');
                return;
            }
            
            $.ajax({
                url: "{{ route('inventory.counts.warehouse-balances') }}",
                type: 'GET',
                data: { warehouse_id: warehouseId },
                dataType: 'json',
                success: function(response) {
                    // مسح الأصناف الحالية
                    $('#items-container').empty();
                    itemInde = 0;
                    
                    if (response.length > 0) {
                        // إضافة صف لكل صنف
                        $.each(response, function(inde, item) {
                            addItemRow(item);
                        });
                    } else {
                        alert('لا توجد أصناف في هذا المخزن');
                        toggleNoItemsMessage();
                    }
                },
                error: function(xhr) {
                    console.error(xhr);
                    let errorMessage = 'حدث خطأ أثناء تحميل أرصدة المخزن';
                    if (xhr.responseJSON && xhr.responseJSON.error) {
                        errorMessage = xhr.responseJSON.error;
                    }
                    alert(errorMessage);
                }
            });
        });
        
        // إضافة صنف يدوياً
        $('#addItem').click(function() {
            addItemRow();
        });
        
        // حذف صنف
        $(document).on('click', '.remove-item', function() {
            $(this).closest('.item-row').remove();
            toggleNoItemsMessage();
        });
        
        // حساب الفرق عند تغيير الكمية
        $(document).on('input', '.system-quantity, .actual-quantity, .unit-cost', function() {
            calculateDifference($(this).closest('.item-row'));
        });
        
        // عرض رسالة عدم وجود أصناف عند تحميل الصفحة
        toggleNoItemsMessage();
    });
</script>
@endpush
