fix(after-sale): 售后工单已完结仍可再次申请,改由订单是否已退款决定
上一个提交把「工单 completed」当成了不能再申请售后的判据,方向搞反了: 能否再售后应该看订单有没有被标「已退款」,而不是看工单状态。订单已退款时 status_group 变成 refunded、enabled 直接为 false,那道闸门本来就够用;用工单 状态再判一次,反而把「工单已完结但订单没退款」的用户堵死,售后详细弹窗底部 也只剩下一个「我知道了」死胡同。 - reapplyable_statuses 补上 STATUS_COMPLETED:rejected / cancelled / completed 一律放行再次申请,售后详细弹窗底部按钮对已完成订单渲染「再次申请售后」 - can_apply 还原为只看有没有进行中的工单(!open),不再二次校验工单状态 - create() 的重复申请闸门还原为 find_active():只挡仍在流转的工单, completed 不挡;订单已退款由上面的 STATUS_PAID 校验先挡掉 - 点「再次申请售后」后清 has_application 落回申请表单,提交走 create() 新建工单,链路本来就通,无需改动 harness 场景名改为 settled_ticket_still_allows_reapply,断言 completed / rejected / cancelled 三种已终结状态都能新建工单;待审核工单同因幂等、换因 挡住的场景保留。 验证:tests/widget-system/ 462 项、tests/admin/ 76 项通过;after-sale-log-harness 7/7。未做浏览器视觉验收。
This commit is contained in:
@@ -214,8 +214,8 @@ namespace {
|
||||
&& $broken === [],
|
||||
'detail' => ['normalized' => $normalized, 'broken_json' => $broken]];
|
||||
|
||||
// 6) 再次申请的闸门看「最新一条工单」,不是只看进行中的:completed 一律挡住,
|
||||
// rejected / cancelled 放行;订单有没有另标已退款不影响这条。
|
||||
// 6) 再次申请的闸门只看「进行中」的工单:completed / rejected / cancelled 都放行,
|
||||
// 订单有没有另标已退款不影响这条(订单已退款时 create() 的 STATUS_PAID 校验先挡)。
|
||||
$gate = static function (string $status) use ($service, $wpdb, $order) {
|
||||
$wpdb->rows = [];
|
||||
$wpdb->rows[950] = ['id' => 950, 'order_number' => $order['order_number'], 'user_id' => 7, 'status' => $status,
|
||||
@@ -226,8 +226,7 @@ namespace {
|
||||
$completed = $gate('completed');
|
||||
$rejected = $gate('rejected');
|
||||
$cancelled = $gate('cancelled');
|
||||
$results[] = ['name' => 'completed_ticket_blocks_reapply', 'ok' => $completed instanceof \WP_Error
|
||||
&& $completed->get_error_code() === 'aksrt_after_sale_exists'
|
||||
$results[] = ['name' => 'settled_ticket_still_allows_reapply', 'ok' => !$completed instanceof \WP_Error
|
||||
&& !$rejected instanceof \WP_Error
|
||||
&& !$cancelled instanceof \WP_Error,
|
||||
'detail' => [
|
||||
|
||||
Reference in New Issue
Block a user