GhsBalanceChangeClass.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. namespace bizGhs\ghs\classes;
  3. use bizGhs\base\classes\BaseClass;
  4. use bizGhs\clear\classes\ClearClass;
  5. use common\components\dict;
  6. class GhsBalanceChangeClass extends BaseClass
  7. {
  8. public static $baseFile = '\bizGhs\ghs\models\GhsBalanceChange';
  9. /**
  10. * 批发店供货商余额变动列表(xhGhsBalanceChange,按 ghsId)
  11. * 列表侧补全 clearId/clearSn/clearAmount,供前端展示「结账单 · 本单销」
  12. */
  13. public static function getChangeList($where)
  14. {
  15. $data = self::getList('*', $where, 'addTime DESC,id DESC');
  16. if (!empty($data['list'])) {
  17. foreach ($data['list'] as $k => $v) {
  18. $data['list'][$k] = self::fillClearAuditForListRow(is_array($v) ? $v : (array)$v);
  19. }
  20. }
  21. return $data;
  22. }
  23. /**
  24. * 【用途】列表行补全结账审计字段(对齐 CustomBalanceChangeClass)
  25. * 1) 已有 clearId:缺 clearSn/金额则从结账单回填
  26. * 2) 旧「采购单结账」流水:relateId=结账单 id
  27. */
  28. public static function fillClearAuditForListRow(array $row)
  29. {
  30. $clearId = intval($row['clearId'] ?? 0);
  31. if ($clearId > 0) {
  32. return self::normalizeClearAuditRow($row);
  33. }
  34. if (intval($row['io'] ?? 0) !== 1) {
  35. return $row;
  36. }
  37. $relateId = intval($row['relateId'] ?? 0);
  38. if ($relateId <= 0) {
  39. return $row;
  40. }
  41. $event = (string)($row['event'] ?? '');
  42. $capitalType = intval($row['capitalType'] ?? 0);
  43. $clearCapital = intval(dict::getDict('capitalType', 'ghsCgOrderClear', 'id'));
  44. // 旧手工/结账入账:event 前缀或 capitalType=采购结账
  45. if (($clearCapital > 0 && $capitalType === $clearCapital)
  46. || mb_strpos($event, '采购单结账') === 0) {
  47. return self::attachClearMetaFromClearId($row, $relateId);
  48. }
  49. return $row;
  50. }
  51. protected static function normalizeClearAuditRow(array $row)
  52. {
  53. $clearId = intval($row['clearId'] ?? 0);
  54. if ($clearId <= 0) {
  55. return $row;
  56. }
  57. if (empty($row['clearSn']) || bccomp((string)($row['clearAmount'] ?? 0), '0', 2) <= 0) {
  58. $row = self::attachClearMetaFromClearId($row, $clearId);
  59. }
  60. return $row;
  61. }
  62. /**
  63. * 从采购结账单(ClearClass / xhClear)回填 clearSn、clearAmount
  64. */
  65. protected static function attachClearMetaFromClearId(array $row, $clearId)
  66. {
  67. $clearId = intval($clearId);
  68. if ($clearId <= 0) {
  69. return $row;
  70. }
  71. $clear = ClearClass::getById($clearId, true);
  72. if (empty($clear)) {
  73. return $row;
  74. }
  75. $row['clearId'] = $clearId;
  76. $row['clearSn'] = is_object($clear) ? (string)($clear->orderSn ?? '') : (string)($clear['orderSn'] ?? '');
  77. $actPrice = is_object($clear) ? ($clear->actPrice ?? 0) : ($clear['actPrice'] ?? 0);
  78. $row['clearAmount'] = bcadd((string)$actPrice, '0', 2);
  79. return $row;
  80. }
  81. }