OnStockRecordClass.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. <?php
  2. namespace bizGhs\stock\classes;
  3. use bizGhs\base\classes\BaseClass;
  4. use bizGhs\order\traits\OrderTrait;
  5. use bizGhs\product\classes\ProductClass;
  6. use common\components\dict;
  7. use common\services\xhItemService;
  8. class OnStockRecordClass extends BaseClass
  9. {
  10. use OrderTrait;
  11. public static $baseFile = '\bizGhs\stock\models\OnStockRecord';
  12. const STOCK_RECORD_TYPE_PURCHASE = 1;//采购发货
  13. const STOCK_RECORD_TYPE_IN_STOCK = 3;//完成入库
  14. const STOCK_RECORD_TYPE_CANCEL_CG = 4;//取消采购
  15. const STOCK_RECORD_TYPE_MODIFY = 5;//修改
  16. public static $typeMap = [
  17. self::STOCK_RECORD_TYPE_PURCHASE => '采购发货',
  18. self::STOCK_RECORD_TYPE_IN_STOCK => '完成入库',
  19. self::STOCK_RECORD_TYPE_CANCEL_CG => '取消采购',
  20. self::STOCK_RECORD_TYPE_MODIFY => '修改',
  21. ];
  22. public static function getRecordList($where)
  23. {
  24. $data = self::getList('*', $where, 'addTime DESC,id DESC');
  25. $list = isset($data['list']) && !empty($data['list']) ? $data['list'] : [];
  26. if (empty($list)) {
  27. return $data;
  28. }
  29. $itemIds = array_column($list, 'itemId');
  30. $itemIdsUnitNum = xhItemService::getItemUnitNums($itemIds);
  31. foreach ($list as $k => $v) {
  32. $unitNum = $itemIdsUnitNum[$v['itemId']] ?? 0;
  33. $stock = ProductClass::formatStock($v['newStock'], $unitNum);
  34. $orderNums = ProductClass::formatStock($v['itemNum'], $unitNum);
  35. $list[$k]['bigNumOrder'] = $orderNums['bigNum'];
  36. $list[$k]['smallNumOrder'] = $orderNums['smallNum'];
  37. $list[$k]['bigNumStock'] = $stock['bigNum'];
  38. $list[$k]['smallNumStock'] = $stock['smallNum'];
  39. $list[$k]['typeName'] = self::getTypeName($v['recordType']);
  40. }
  41. $data['list'] = $list;
  42. return $data;
  43. }
  44. public static function getTypeName($type)
  45. {
  46. return self::$typeMap[$type] ?? '';
  47. }
  48. public static function addRecord($data)
  49. {
  50. $oldStock = $data['oldStock'] ?? 0;
  51. $newStock = $data['newStock'] ?? 0;
  52. $io = -1;
  53. if ($newStock > $oldStock) {
  54. $io = 1;
  55. }
  56. if ($newStock < $oldStock) {
  57. $io = 0;
  58. }
  59. $data['io'] = $io;
  60. $data['itemNum'] = abs($data['itemNum']);
  61. $respond = self::add($data);
  62. return $respond;
  63. }
  64. //根据order 记录流水
  65. // sjId,shopId,orderSn
  66. //itemInfo = [{productId:1,itemId:1,itemNum:操作的花材数据,oldStock(itemStock):当时库存,newStock:变化后的库存}]
  67. public static function addRecordByOrder($orderData, $type)
  68. {
  69. $itemInfo = $orderData['itemInfo'];
  70. $productData = self::getProductMapData($itemInfo);
  71. foreach ($itemInfo as $v) {
  72. $itemId = $v['itemId'];
  73. $productId = $v['productId'];
  74. $record = [];
  75. $unitNum = $productData[$productId]['ratio'] ?? 0;
  76. $itemNum = ProductClass::mergeItemNum($v['bigNum'], $v['smallNum'], $unitNum);
  77. $record['sjId'] = $orderData['sjId'];
  78. $record['shopId'] = $orderData['shopId'];
  79. $record['mainId'] = $productData[$productId]['mainId'] ?? 0;
  80. $record['orderSn'] = $orderData['orderSn'];
  81. $record['itemId'] = $itemId;
  82. $record['itemNum'] = $itemNum;
  83. $record['oldStock'] = $v['itemStock']; //当时库存
  84. $record['recordType'] = $type;
  85. $record['productId'] = $productId;
  86. $record['newStock'] = $v['newStock'];// 最新库存
  87. $record['relateName'] = $orderData['relateName'] ?? '';
  88. $record['ptStyle'] = $orderData['ptStyle'] ?? dict::getDict('ptStyle', 'ghs');
  89. self::addRecord($record);
  90. }
  91. }
  92. //采购发货 ssh 20231218
  93. public static function addPurchaseOrderRecord($data)
  94. {
  95. $data['recordType'] = self::STOCK_RECORD_TYPE_PURCHASE;
  96. return self::addRecord($data);
  97. }
  98. //完成入库 ssh 20231218
  99. public static function addInStockOrderRecord($data)
  100. {
  101. $data['recordType'] = self::STOCK_RECORD_TYPE_IN_STOCK;
  102. return self::addRecord($data);
  103. }
  104. //取消入库 ssh 20231218
  105. public static function cancelCg($data)
  106. {
  107. $data['recordType'] = self::STOCK_RECORD_TYPE_CANCEL_CG;
  108. return self::addRecord($data);
  109. }
  110. public static function modify($data)
  111. {
  112. $data['recordType'] = self::STOCK_RECORD_TYPE_MODIFY;
  113. return self::addRecord($data);
  114. }
  115. }