<%- include('../partials/head', { title }) %>
<section class="panel p-5"><div class="flex flex-wrap items-start justify-between gap-4"><div><div class="flex flex-wrap items-center gap-2"><h2 class="text-2xl font-black" dir="ltr"><%= invoice.invoice_number %></h2><% if (invoice.has_discrepancy) { %><span class="badge-danger">⚠ دارای مغایرت</span><% } %><% if (invoice.manager_edited) { %><span class="badge-pending" title="مقادیر انتخاب‌شده از نسخه مدیر">✎ ویرایش‌شده توسط مدیر</span><% } %><% if (invoice.archived_at) { %><span class="badge-neutral">بایگانی‌شده</span><% } %></div><p class="mt-2 text-slate-500"><%= invoice.customer_name ?? 'نام مشتری ثبت نشده' %> <%= invoice.customer_code ? `— کد ${invoice.customer_code}` : '' %></p></div><div class="flex gap-2"><% if (invoice.has_discrepancy) { %><a class="btn-secondary" href="/discrepancies">رفع مغایرت</a><% } %><% if (!invoice.archived_at) { %><form method="post" action="/invoices/<%= invoice.id %>/archive" data-confirm="از بایگانی این فاکتور مطمئن هستید؟"><input type="hidden" name="_csrf" value="<%= csrfToken %>"><input type="hidden" name="reason" value="بایگانی عملیاتی"><button class="btn-secondary">بایگانی</button></form><% } else { %><form method="post" action="/invoices/<%= invoice.id %>/restore"><input type="hidden" name="_csrf" value="<%= csrfToken %>"><button class="btn-primary">بازیابی</button></form><% } %></div></div></section>

<div class="mt-6 grid gap-6 xl:grid-cols-[1fr_25rem]">
  <div class="space-y-6">
    <section class="panel"><div class="panel-header"><h2 class="font-black">اقلام و مقدار باقیمانده</h2></div><div class="table-wrap"><table class="data-table"><thead><tr><th>کد کالا</th><th>نام</th><th>واحد</th><th>مقدار نسخه جاری</th><th>قابل تحویل</th></tr></thead><tbody><% if (!items.length) { %><tr><td colspan="5" class="py-8 text-center">تحویل کامل فاکتور — جزئیات اقلام در فایل مالی موجود نیست</td></tr><% } %><% items.forEach(item => { %><tr><td dir="ltr"><%= item.product_code %></td><td><%= item.product_name %></td><td><%= item.unit %></td><td><%= Number(item.quantity).toLocaleString('fa-IR') %></td><td class="font-black"><%= Number(item.remaining).toLocaleString('fa-IR') %></td></tr><% }) %></tbody></table></div></section>

    <section class="panel"><div class="panel-header"><div><h2 class="font-black">خط زمانی تغییرناپذیر</h2><p class="help">تأیید، تحویل، لغو، برگشت و تحویل مجدد به ترتیب زمانی</p></div></div><div class="space-y-5 p-5"><% if (!requests.length) { %><p class="text-center text-slate-500">هنوز درخواست تحویلی ثبت نشده است.</p><% } %><% requests.forEach(request => { %><article id="delivery-<%= request.id %>" class="border-r-4 border-brand-300 pr-4"><div class="flex flex-wrap justify-between gap-2"><h3 class="font-black"><%= request.delivery_type === 'complete' ? 'تحویل کامل' : 'تحویل جزئی' %> — <%= request.requester %></h3><span class="badge-pending"><%= ({pending:'در انتظار تحویل',delivered:'تحویل‌شده',cancelled:'لغوشده',returned:'برگشت از تحویل'})[request.status] %></span></div><p class="mt-1 text-xs text-slate-500">تأییدکننده: <%= request.approver %> | <%= formatJalaliDateTime(request.approved_at) %></p><ol class="mt-3 space-y-2"><% request.events.forEach(event => { %><li class="rounded-lg bg-slate-50 px-3 py-2 text-sm dark:bg-slate-800"><%= ({approved:'تأیید مدیر تأمین',delivered:'تحویل کالا',cancelled:'لغو تحویل',returned:'برگشت از تحویل',redelivered:'تحویل مجدد'})[event.type] %> — <%= event.actor %> — <%= formatJalaliDateTime(event.at) %><% if (event.reason) { %><div class="text-xs text-slate-500">دلیل: <%= event.reason %></div><% } %></li><% }) %></ol></article><% }) %></div></section>

    <section class="panel"><div class="panel-header"><h2 class="font-black">نسخه‌ها و مغایرت‌ها</h2></div><div class="table-wrap"><table class="data-table"><thead><tr><th>نسخه</th><th>منبع</th><th>زمان</th><th>شناسه اثر انگشت</th></tr></thead><tbody><% versions.forEach(v => { %><tr><td><%= v.version_number %></td><td><%= ({manual:'نسخه مدیر',financial:'نسخه مالی',resolved:'نسخه رفع مغایرت'})[v.source] %></td><td><%= formatJalaliDateTime(v.created_at) %></td><td class="max-w-xs truncate font-mono text-xs" dir="ltr"><%= v.fingerprint_sha256 %></td></tr><% }) %></tbody></table></div></section>
  </div>

  <% if (!invoice.archived_at && permissions.has('deliveries.approve')) { %><aside class="panel h-fit p-5 xl:sticky xl:top-24" x-data="{partial:false}"><h2 class="text-lg font-black">تأیید برای انبار</h2><p class="mt-2 text-sm text-slate-500">حالت پیش‌فرض، تحویل همه مقدار باقیمانده است.</p><form method="post" action="/invoices/<%= invoice.id %>/approve" class="mt-5 space-y-4" data-confirm="درخواست تحویل با همین اقلام و مقادیر برای انبار ثبت شود؟"><input type="hidden" name="_csrf" value="<%= csrfToken %>"><input type="hidden" name="idempotencyKey" value="<%= idempotencyKey %>"><input type="hidden" name="deliveryType" :value="partial ? 'partial' : 'complete'">
    <% const initialRequester = requesters.find(r => r.id === invoice.default_requester_id) || null; %><div x-data="searchableSelect($el.dataset.searchUrl, { id: $el.dataset.initialId, name: $el.dataset.initialName })" data-search-url="/api/requesters/search" data-initial-id="<%= initialRequester?.id || '' %>" data-initial-name="<%= initialRequester?.name || '' %>" class="relative"><span class="label">درخواست‌کننده *</span><input type="hidden" name="requesterId" :value="value" required><input class="input" x-model="query" @input="search" @focus="search" @keydown.down.prevent="move(1)" @keydown.up.prevent="move(-1)" @keydown.enter.prevent="chooseActive" placeholder="جست‌وجوی نام درخواست‌کننده" autocomplete="off"><ul x-show="open" x-cloak class="absolute z-20 mt-1 max-h-52 w-full overflow-auto rounded-xl border bg-white p-1 shadow-xl dark:border-slate-700 dark:bg-slate-900"><template x-for="(item,index) in results" :key="item.id"><li><button type="button" class="w-full rounded-lg px-3 py-2 text-right text-sm" :class="index===active ? 'bg-brand-100 dark:bg-slate-800' : ''" @click="choose(item)" x-text="item.name"></button></li></template></ul><a href="/requesters" class="help inline-block text-brand-700 underline">ایجاد درخواست‌کننده جدید</a></div>
    <label><span class="label">انبار *</span><select class="input" name="warehouseId" required><option value="">انتخاب انبار</option><% warehouses.forEach(w => { %><option value="<%= w.id %>"><%= w.name %></option><% }) %></select></label>
    <% if (items.length) { %><label class="flex items-center justify-between rounded-xl border border-slate-300 p-3 dark:border-slate-700"><span class="font-bold">تحویل جزئی</span><input type="checkbox" x-model="partial"></label><div x-show="partial" x-cloak class="max-h-72 space-y-2 overflow-auto rounded-xl bg-slate-50 p-3 dark:bg-slate-950"><% items.filter(i => i.remaining > 0).forEach(item => { %><label class="block rounded-lg border border-slate-200 p-2 dark:border-slate-800"><span class="flex items-center gap-2"><input type="checkbox" name="selectedItems" value="<%= item.id %>"><b><%= item.product_name %></b></span><input class="input mt-2" type="number" min="1" max="<%= item.remaining %>" step="0.0001" name="quantity_<%= item.id %>" value="<%= item.remaining %>"></label><% }) %></div><% } else { %><div class="badge-warning leading-6">تحویل کامل فاکتور — جزئیات اقلام در فایل مالی موجود نیست</div><% } %>
    <label><span class="label">یادداشت مرتبط</span><textarea class="input" name="notes"></textarea></label><div class="rounded-xl bg-brand-100 p-3 text-sm leading-6 text-brand-950 dark:bg-brand-950 dark:text-brand-100">پیش از ثبت، شماره فاکتور، مشتری، درخواست‌کننده، نوع تحویل و مقادیر بالا را بازبینی کنید.</div><button class="btn-primary w-full" type="submit">تأیید و ارسال به انبار</button></form></aside><% } %>
</div>
<%- include('../partials/footer') %>
