| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- <?php
- namespace bizGhs\ghs\classes;
- use bizGhs\base\classes\BaseClass;
- use bizGhs\clear\classes\ClearClass;
- use common\components\dict;
- class GhsBalanceChangeClass extends BaseClass
- {
- public static $baseFile = '\bizGhs\ghs\models\GhsBalanceChange';
- /**
- * 批发店供货商余额变动列表(xhGhsBalanceChange,按 ghsId)
- * 列表侧补全 clearId/clearSn/clearAmount,供前端展示「结账单 · 本单销」
- */
- public static function getChangeList($where)
- {
- $data = self::getList('*', $where, 'addTime DESC,id DESC');
- if (!empty($data['list'])) {
- foreach ($data['list'] as $k => $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;
- }
- }
|