@php $formatReturnQty = static function (mixed $value): string { $quantity = (float) $value; return number_format($quantity, abs($quantity - round($quantity)) < 0.00001 ? 0 : 2); }; @endphp @if (is_string(session('success')))
{{ session('success') }}
@endif @if ($errors->has('import')) @endif

厂家对账单 · 上传与实时数据

下载对账单模板
@if ($supplierNotFound) @endif

厂家只能按模板上传(表头列名与顺序必须与模板完全一致):快递名称、快递单号、单据编号(采购单号)可以留空; 单价或金额留空时按数量自动补齐(都留空按 0,未定价行可直接导出上传);其余列必填; 不符合模板或数值格式的整份失败并提示具体行号。厂家上传成功后,下面的数据与「财务端数据」的比对结果立即更新。

@if ($selectedSupplier !== '')
@csrf
@else
还没有可选的厂家:请先在「供应商应付(终版)→ 货款对账」导入我方结算数据,厂家按其中的供应商名称上传对账单。
@endif
@if ($selectedSupplier !== '')

{{ $selectedSupplier }} · 上传记录

@forelse ($uploads as $upload) @empty @endforelse
上传时间文件名行数
{{ $upload['uploaded_at'] ?? '—' }} {{ $upload['filename'] ?? '—' }} {{ number_format((int) ($upload['rows'] ?? 0)) }}
该厂家还没有上传过对账单。

{{ $selectedSupplier }} · 上传的对账数据(共 {{ number_format($statementTotal) }} 行)

@forelse ($statementRows as $row) @empty @endforelse
快递名称快递单号单据编号(采购单号) 创建时间供应商条码 规格名称数量单价金额
{{ $row['expressName'] ?? '—' }} {{ $row['expressNo'] ?? '—' }} {{ $row['purchaseNo'] ?? '—' }} {{ $row['createdAt'] ?? '—' }} {{ $row['supplier'] ?? '—' }} {{ $row['barcode'] ?? '—' }} {{ $row['skuName'] ?? '—' }} {{ $row['qty'] ?? '—' }} {{ $row['unitPrice'] ?? '—' }} {{ $row['amount'] ?? '—' }}
暂无上传数据。
@if ($statementTotal > $perPage) @php $pageCount = max((int) ceil($statementTotal / $perPage), 1); $pageStart = max(1, min($rowsPage - 4, $pageCount - 8)); $pageEnd = min($pageCount, $pageStart + 8); $pageUrl = fn (int $number): string => route('business.pages.show', array_merge($returnPanel['filter_query'], array_filter([ 'section' => $section['slug'], 'page' => $page['slug'], 'supplier' => $selectedSupplier, 'rows_page' => $number, 'return_page' => $returnPanel['page'] > 1 ? $returnPanel['page'] : null, ], static fn (mixed $value): bool => $value !== null && $value !== ''))); @endphp
共 {{ number_format($statementTotal) }} 行,每页 {{ $perPage }} 行 · 第 {{ $rowsPage }} / {{ $pageCount }} 页 @if ($rowsPage > 1) 上一页 @endif @if ($pageStart > 1) 1 @if ($pageStart > 2) … @endif @endif @for ($number = $pageStart; $number <= $pageEnd; $number++) {{ $number }} @endfor @if ($pageEnd < $pageCount) @if ($pageEnd < $pageCount - 1) … @endif {{ $pageCount }} @endif @if ($rowsPage * $perPage < $statementTotal) 下一页 @endif
@endif
退货件数 {{ $formatReturnQty($returnPanel['return_qty']) }}件
退货金额 ¥{{ number_format($returnPanel['total_amount'], 2) }}
已确认 {{ $formatReturnQty($returnPanel['confirmed_qty']) }}件 ¥{{ number_format($returnPanel['confirmed_amount'], 2) }}
异议中 {{ $formatReturnQty($returnPanel['disputed_qty']) }}件 ¥{{ number_format($returnPanel['disputed_amount'], 2) }}
待确认 {{ $formatReturnQty($returnPanel['pending_qty']) }}件 ¥{{ number_format($returnPanel['pending_amount'], 2) }}
@if ($returnPanel['accounting_summary']['logistics_rows'] > 0)
转物流记账 {{ $formatReturnQty($returnPanel['accounting_summary']['logistics_qty']) }}件 ¥{{ number_format($returnPanel['accounting_summary']['logistics_amount'], 2) }}
@endif
① 退货扣减确认 @if ($returnPanel['is_filtered']) (当前筛选 {{ $formatReturnQty($returnPanel['return_qty']) }} 件,退货金额 ¥{{ number_format($returnPanel['total_amount'], 2) }})。 如当前筛选结果核对无误,可点「全部确认当前筛选」;其他退货行不受影响。 @else (共 {{ $formatReturnQty($returnPanel['return_qty']) }} 件,退货金额 ¥{{ number_format($returnPanel['total_amount'], 2) }})。 核对无误请点「全部确认无异议」;个别有问题的行,在该行单独点「异议」,复核通过前该行暂不扣减。 @endif
@forelse ($returnPanel['rows'] as $row) $row['_accounting_target'] === '物流'])> @empty @endforelse
发货时间明细供应商条形码 商品名称发货量单价 金额供应商条码备注 标题wms配货单号仓库名称 快递单号类型操作
{{ $row['send_time'] ?? '—' }} {{ $row['supplier'] ?? '—' }} {{ $row['barcode'] ?? '—' }} {{ $row['sku_name'] ?? '—' }} {{ $row['qty'] ?? '—' }} {{ $row['unit_price'] ?? '—' }} {{ $row['amount'] ?? '—' }} {{ $row['supplier_barcode'] ?? '—' }} {{ $row['remark'] ?? '—' }} @if ($row['_accounting_target'] !== '厂家') {{ $row['_accounting_label'] }} @endif @if ($row['_accounting_note'] !== '按厂家退货扣减')
{{ $row['_accounting_note'] }}
@endif
{{ $row['title'] ?? '—' }} {{ $row['wms_pick_no'] ?? '—' }} {{ $row['warehouse'] ?? '—' }} {{ $row['express_no'] ?? '—' }} 退货 @if ($row['status'] === 'confirmed') 已确认 @elseif ($row['status'] === 'disputed') 异议中 @else
@csrf
@csrf
@endif
没有符合当前查询条件的退货数据。

厂家端只展示核对退货所需的字段,左右滑动查看全部。 @if ($returnPanel['is_filtered']) 当前筛选结果:{{ $formatReturnQty($returnPanel['return_qty']) }} 件,退货金额 ¥{{ number_format($returnPanel['total_amount'], 2) }},导出包含当前查询条件下的全部数据。 @else 退货共 {{ $formatReturnQty($returnPanel['return_qty']) }} 件,退货金额 ¥{{ number_format($returnPanel['total_amount'], 2) }},导出包含该厂家的全部退货数据。 @endif 按导入顺序展示,每页 {{ $returnPanel['per_page'] }} 行(第 {{ $returnPanel['page'] }} / {{ $returnPanel['pages'] }} 页)。

@if ($returnPanel['pages'] > 1) @php $returnPageCount = $returnPanel['pages']; $returnPageCurrent = $returnPanel['page']; $returnPageStart = max(1, min($returnPageCurrent - 4, $returnPageCount - 8)); $returnPageEnd = min($returnPageCount, $returnPageStart + 8); $returnPageUrl = fn (int $number): string => route('business.pages.show', array_merge($returnPanel['filter_query'], array_filter([ 'section' => $section['slug'], 'page' => $page['slug'], 'supplier' => $selectedSupplier, 'rows_page' => $rowsPage > 1 ? $rowsPage : null, 'return_page' => $number, ], static fn (mixed $value): bool => $value !== null && $value !== ''))); @endphp
第 {{ $returnPageCurrent }} / {{ $returnPageCount }} 页(每页 {{ $returnPanel['per_page'] }} 行) @if ($returnPageCurrent > 1) 上一页 @endif @if ($returnPageStart > 1) 1 @if ($returnPageStart > 2) … @endif @endif @for ($number = $returnPageStart; $number <= $returnPageEnd; $number++) {{ $number }} @endfor @if ($returnPageEnd < $returnPageCount) @if ($returnPageEnd < $returnPageCount - 1) … @endif {{ $returnPageCount }} @endif @if ($returnPageCurrent < $returnPageCount) 下一页 @endif
@endif
@csrf @foreach ($returnPanel['filter_query'] as $filterName => $filterValue) @endforeach
确认后退货扣减生效,明细列入结算确认函。
@endif