$v) { $data['list'][$k] = self::fillClearAuditForListRow(is_array($v) ? $v : (array)$v); } } return $data; } /** * 【用途】列表行补全结账审计字段(对齐 CustomBalanceChangeClass) * 1) 已有 clearId:缺 clearSn/金额则从结账单回填 * 2) 旧「采购单结账」流水:relateId=结账单 id */ public static function fillClearAuditForListRow(array $row) { $clearId = intval($row['clearId'] ?? 0); if ($clearId > 0) { return self::normalizeClearAuditRow($row); } if (intval($row['io'] ?? 0) !== 1) { return $row; } $relateId = intval($row['relateId'] ?? 0); if ($relateId <= 0) { return $row; } $event = (string)($row['event'] ?? ''); $capitalType = intval($row['capitalType'] ?? 0); $clearCapital = intval(dict::getDict('capitalType', 'ghsCgOrderClear', 'id')); // 旧手工/结账入账:event 前缀或 capitalType=采购结账 if (($clearCapital > 0 && $capitalType === $clearCapital) || mb_strpos($event, '采购单结账') === 0) { return self::attachClearMetaFromClearId($row, $relateId); } return $row; } protected static function normalizeClearAuditRow(array $row) { $clearId = intval($row['clearId'] ?? 0); if ($clearId <= 0) { return $row; } if (empty($row['clearSn']) || bccomp((string)($row['clearAmount'] ?? 0), '0', 2) <= 0) { $row = self::attachClearMetaFromClearId($row, $clearId); } return $row; } /** * 从采购结账单(ClearClass / xhClear)回填 clearSn、clearAmount */ protected static function attachClearMetaFromClearId(array $row, $clearId) { $clearId = intval($clearId); if ($clearId <= 0) { return $row; } $clear = ClearClass::getById($clearId, true); if (empty($clear)) { return $row; } $row['clearId'] = $clearId; $row['clearSn'] = is_object($clear) ? (string)($clear->orderSn ?? '') : (string)($clear['orderSn'] ?? ''); $actPrice = is_object($clear) ? ($clear->actPrice ?? 0) : ($clear['actPrice'] ?? 0); $row['clearAmount'] = bcadd((string)$actPrice, '0', 2); return $row; } }