业绩明细:列顺序统一「差额→差额异常备注→匹配状态→未匹配原因」;差额筛选并入统一多选组件(联动计数/导出/重置)
This commit is contained in:
parent
ae54706ceb
commit
7258d09238
@ -806,7 +806,7 @@ $navigation = [
|
||||
'directory' => [
|
||||
'icon' => 'receipt_long',
|
||||
'status' => '共享镜像',
|
||||
'description' => '覆盖店铺收款账户账单各平台页签(总账备注=订单收入),按「店铺 + 订单号」匹配订单侧商品金额与订单实付金额;一行 = 一个店铺的一个订单,商品金额只挂一次。「商品金额」只取主单(拆单子单不参与,整单没有主单时退化为取全部行),并排除虚拟条码(X0000x:信誉订单 / 虚拟订单)明细行;「订单实付金额」取订单级实付(拆单取主单)再减去虚拟条码行实付。「优惠金额」「冲减金额」另取总账备注=优惠收入 / 冲减收入的账单金额,不计入收入金额;「退款金额」另取总账备注=退款的账单金额,只单独列示,不计入收入金额、也不参与差额;「种菜金额」是订单号在种菜明细表或聚水潭订单标签明细(是否种菜订单=是)任意一边出现过时,该订单的收入金额(两个条件是或的关系),只是收入金额里的一部分,不参与差额;差额=(收入金额+优惠金额+冲减金额)−订单实付金额,匹配状态与差额异常备注同样按订单实付金额判定,未匹配到订单实付金额的行按订单实付金额=0 计入差额,只反映真正对不上的部分。挂不到订单行的优惠/冲减会补成一行(收入/商品留空)。「差额异常备注」只说明差额为什么产生,按顺序自动判定:订单实付未匹配(未匹配到订单实付金额,具体原因看「未匹配原因」列);订单实付取数为0(种菜)(订单实付=0 且是种菜单)、订单实付取数为0(订单实付=0 但不是种菜单)、订单实付未减冲减(订单实付=收入+优惠 → 差额=冲减金额)、订单实付未减优惠(订单实付=收入+冲减 → 差额=优惠金额)、订单实付未减优惠和冲减(订单实付=收入 → 差额=优惠+冲减)、订单实付含已退款部分(仅抖音负差额:聚水潭退款单/取消子单金额≈差额,或退款合计+账单退款净额≈实付−收入,或整单全退(退款合计≈实付)对上才标注)、订单实付未减联合营销费(仅得物负差额:联合营销费未让利尾数对上才标注)、差额=直营服务费(已计销售费用)(仅京喜正差额);都不满足则留空。「未匹配原因」单独一列,取值:账单无单号 / 单号格式异常 / 订单表无此单 / 订单无实付金额 / 无收款账单。',
|
||||
'description' => '覆盖店铺收款账户账单各平台页签(总账备注=订单收入),按「店铺 + 订单号」匹配订单侧商品金额与订单实付金额;一行 = 一个店铺的一个订单,商品金额只挂一次。「商品金额」只取主单(拆单子单不参与,整单没有主单时退化为取全部行),并排除虚拟条码(X0000x:信誉订单 / 虚拟订单)明细行;「订单实付金额」取订单级实付(拆单取主单)再减去虚拟条码行实付。「优惠金额」「冲减金额」另取总账备注=优惠收入 / 冲减收入的账单金额,不计入收入金额;「退款金额」另取总账备注=退款的账单金额,只单独列示,不计入收入金额、也不参与差额;「种菜金额」是订单号在种菜明细表或聚水潭订单标签明细(是否种菜订单=是)任意一边出现过时,该订单的收入金额(两个条件是或的关系),只是收入金额里的一部分,不参与差额;差额=(收入金额+优惠金额+冲减金额)−订单实付金额,匹配状态与差额异常备注同样按订单实付金额判定,未匹配到订单实付金额的行按订单实付金额=0 计入差额,只反映真正对不上的部分。挂不到订单行的优惠/冲减会补成一行(收入/商品留空)。「差额异常备注」只说明差额为什么产生,按顺序自动判定:订单实付未匹配(未匹配到订单实付金额,具体原因看「未匹配原因」列);订单实付取数为0(种菜)(订单实付=0 且是种菜单)、订单实付取数为0(订单实付=0 但不是种菜单)、订单实付未减冲减(订单实付=收入+优惠 → 差额=冲减金额)、订单实付未减优惠(订单实付=收入+冲减 → 差额=优惠金额)、订单实付未减优惠和冲减(订单实付=收入 → 差额=优惠+冲减)、订单实付含已退款部分(仅抖音负差额:聚水潭退款单/取消子单金额≈差额,或退款合计+账单退款净额≈实付−收入,或整单全退(退款合计≈实付)对上才标注)、订单实付未减联合营销费(仅得物负差额:联合营销费未让利尾数对上才标注)、订单实付取供货价(仅京喜正差额:差额=该单直营服务费(供货模式净收)时标注);都不满足则留空。「未匹配原因」单独一列,取值:账单无单号 / 单号格式异常 / 订单表无此单 / 订单无实付金额 / 无收款账单。',
|
||||
'empty' => '店铺收款匹配订单明细尚未同步,请先执行 store-receipt:order-match:sync。',
|
||||
'fields' => [
|
||||
['name' => 'platform', 'label' => '平台'],
|
||||
@ -821,8 +821,8 @@ $navigation = [
|
||||
['name' => 'product_amount', 'label' => '商品金额', 'kind' => 'number'],
|
||||
['name' => 'paid_amount', 'label' => '订单实付金额', 'kind' => 'number'],
|
||||
['name' => 'difference', 'label' => '差额', 'kind' => 'number'],
|
||||
['name' => 'match_status', 'label' => '匹配状态'],
|
||||
['name' => 'remark', 'label' => '差额异常备注'],
|
||||
['name' => 'match_status', 'label' => '匹配状态'],
|
||||
['name' => 'unmatched_reason', 'label' => '未匹配原因'],
|
||||
],
|
||||
],
|
||||
|
||||
@ -1645,9 +1645,9 @@
|
||||
<span>线上单号:</span>
|
||||
<input type="text" name="online_order_no" value="{{ request('online_order_no') }}" placeholder="支持包含查询">
|
||||
</label>
|
||||
<div class="installation-filter-field cw-ms" id="rdStatus" data-name="match_status"
|
||||
data-initial="{{ json_encode(array_values((array) request('match_status', [])), JSON_UNESCAPED_UNICODE) }}">
|
||||
<span>匹配状态:</span>
|
||||
<div class="installation-filter-field cw-ms" id="rdDifferenceState" data-name="difference_state"
|
||||
data-initial="{{ json_encode(array_values((array) request('difference_state', [])), JSON_UNESCAPED_UNICODE) }}">
|
||||
<span>差额:</span>
|
||||
<span class="cw-ms__box">
|
||||
<button type="button" class="cw-ms__btn" data-role="btn" aria-expanded="false">
|
||||
<span class="cw-ms__label">全部</span><span class="cw-ms__caret">▾</span>
|
||||
@ -1667,6 +1667,17 @@
|
||||
<span class="cw-ms__values" data-role="values"></span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="installation-filter-field cw-ms" id="rdStatus" data-name="match_status"
|
||||
data-initial="{{ json_encode(array_values((array) request('match_status', [])), JSON_UNESCAPED_UNICODE) }}">
|
||||
<span>匹配状态:</span>
|
||||
<span class="cw-ms__box">
|
||||
<button type="button" class="cw-ms__btn" data-role="btn" aria-expanded="false">
|
||||
<span class="cw-ms__label">全部</span><span class="cw-ms__caret">▾</span>
|
||||
</button>
|
||||
<span class="cw-ms__panel" data-role="panel" hidden></span>
|
||||
<span class="cw-ms__values" data-role="values"></span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="installation-filter-field cw-ms" id="rdUnmatchedReason" data-name="unmatched_reason"
|
||||
data-initial="{{ json_encode(array_values((array) request('unmatched_reason', [])), JSON_UNESCAPED_UNICODE) }}">
|
||||
<span>未匹配原因:</span>
|
||||
@ -1689,6 +1700,7 @@
|
||||
if (!api) { return; }
|
||||
var widgets = [];
|
||||
[
|
||||
['rdDifferenceState', @json(['有差额', '无差额']), '打字找差额(可多选)'],
|
||||
['rdPlatform', @json(array_values($receiptStats['platform_options'] ?? [])), '打字找平台(可多选)'],
|
||||
['rdStore', @json(array_values($receiptStats['store_options'] ?? [])), '打字找店铺(可多选)'],
|
||||
['rdStatus', @json(array_values($receiptStats['status_options'] ?? [])), '打字找匹配状态(可多选)'],
|
||||
@ -1716,6 +1728,8 @@
|
||||
});
|
||||
var month = form.querySelector('[name="month"]');
|
||||
if (month && month.value) { params.set('month', month.value); }
|
||||
var differenceState = form.querySelector('[name="difference_state"]');
|
||||
if (differenceState && differenceState.value) { params.set('difference_state', differenceState.value); }
|
||||
var orderNo = form.querySelector('[name="online_order_no"]');
|
||||
if (orderNo && orderNo.value.trim()) { params.set('online_order_no', orderNo.value.trim()); }
|
||||
|
||||
@ -1753,6 +1767,8 @@
|
||||
widget.root.addEventListener('click', schedule);
|
||||
widget.root.addEventListener('change', schedule);
|
||||
});
|
||||
var differenceSelect = form.querySelector('[name="difference_state"]');
|
||||
if (differenceSelect) { differenceSelect.addEventListener('change', schedule); }
|
||||
schedule();
|
||||
})();
|
||||
</script>
|
||||
@ -2590,6 +2606,9 @@
|
||||
// 多选筛选提交的是 key[],重置时一并清掉。
|
||||
url.searchParams.delete(`${key}[]`);
|
||||
});
|
||||
// 「差额」筛选(不在 fields 列表里,提交为 difference_state[])一并清掉。
|
||||
url.searchParams.delete('difference_state');
|
||||
url.searchParams.delete('difference_state[]');
|
||||
url.searchParams.delete('page');
|
||||
window.location.assign(url);
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user