GoodsStockRecordClass.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <?php
  2. namespace biz\stock\classes;
  3. use biz\base\classes\BaseClass;
  4. class GoodsStockRecordClass extends BaseClass
  5. {
  6. public static $baseFile = '\biz\stock\models\GoodsStockRecord';
  7. //定义库存变更类型
  8. const STOCK_RECORD_TYPE_PURCHASE = 1; //采购(制作商品)
  9. const STOCK_RECORD_TYPE_OUT_STOCK = 2; //出库
  10. const STOCK_RECORD_TYPE_IN_STOCK = 3; //入库
  11. const STOCK_RECORD_TYPE_CHECK_STOCK = 4; //盘点
  12. const STOCK_RECORD_TYPE_SELL_STOCK = 5; //销售(卖出)
  13. const STOCK_RECORD_TYPE_OUT_STOCK_CANCEL = 6; //取消入库
  14. const STOCK_RECORD_TYPE_IN_STOCK_CANCEL = 7; //取消出库
  15. const STOCK_RECORD_TYPE_SELL_STOCK_CANCEL = 8;// 取消订单
  16. const STOCK_RECORD_TYPE_WASTAGE = 9;// 报损
  17. const STOCK_RECORD_TYPE_REFUND = 10;// 退款退货
  18. const STOCK_RECORD_TYPE_PURCHASE_CANCEL = 11; //取消退回采购(制作商品)
  19. const STOCK_RECORD_TYPE_CG = 12;//采购
  20. const STOCK_RECORD_TYPE_CANCEL_ORDER = 13;//取消订单
  21. public static $typeMap = [
  22. self::STOCK_RECORD_TYPE_PURCHASE => '制作',
  23. self::STOCK_RECORD_TYPE_IN_STOCK => '调拨入库',
  24. self::STOCK_RECORD_TYPE_OUT_STOCK => '调拨出库',
  25. self::STOCK_RECORD_TYPE_CHECK_STOCK => '盘点',
  26. self::STOCK_RECORD_TYPE_SELL_STOCK => '开单',
  27. self::STOCK_RECORD_TYPE_OUT_STOCK_CANCEL => '取消入库',
  28. self::STOCK_RECORD_TYPE_IN_STOCK_CANCEL => '取消出库',
  29. self::STOCK_RECORD_TYPE_SELL_STOCK_CANCEL => '取消订单',
  30. self::STOCK_RECORD_TYPE_WASTAGE => '报损',
  31. self::STOCK_RECORD_TYPE_REFUND => '退货',
  32. self::STOCK_RECORD_TYPE_PURCHASE_CANCEL => '取消制作',
  33. self::STOCK_RECORD_TYPE_CG => '采购',
  34. self::STOCK_RECORD_TYPE_CANCEL_ORDER => '取消订单',
  35. ];
  36. public static function pdGoods($data)
  37. {
  38. $data['recordType'] = self::STOCK_RECORD_TYPE_CHECK_STOCK;
  39. return self::addRecord($data);
  40. }
  41. //取消订单 ssh 20220516
  42. public static function cancelOrder($data)
  43. {
  44. $data['recordType'] = self::STOCK_RECORD_TYPE_SELL_STOCK_CANCEL;
  45. return self::addRecord($data);
  46. }
  47. public static function refund($data)
  48. {
  49. $data['recordType'] = self::STOCK_RECORD_TYPE_REFUND;
  50. return self::addRecord($data);
  51. }
  52. //报损
  53. public static function wastage($data)
  54. {
  55. $data['recordType'] = self::STOCK_RECORD_TYPE_WASTAGE;
  56. return self::addRecord($data);
  57. }
  58. //制作单
  59. public static function addMakeGoods($data)
  60. {
  61. $data['recordType'] = self::STOCK_RECORD_TYPE_PURCHASE;
  62. return self::addRecord($data);
  63. }
  64. //采购商品
  65. public static function cgAddGoods($data)
  66. {
  67. $data['recordType'] = self::STOCK_RECORD_TYPE_CG;
  68. return self::addRecord($data);
  69. }
  70. //制作单退回
  71. public static function cancelMakeGoods($data)
  72. {
  73. $data['recordType'] = self::STOCK_RECORD_TYPE_PURCHASE_CANCEL;
  74. return self::addRecord($data);
  75. }
  76. //销售商品
  77. public static function sellGoods($data)
  78. {
  79. $data['recordType'] = self::STOCK_RECORD_TYPE_SELL_STOCK;
  80. return self::addRecord($data);
  81. }
  82. //取消订单,制作单取消,库存要求回滚
  83. public static function cancelOrderGoods($data)
  84. {
  85. $data['recordType'] = self::STOCK_RECORD_TYPE_CANCEL_ORDER;
  86. return self::addRecord($data);
  87. }
  88. //新增库存变更记录
  89. public static function addRecord($data)
  90. {
  91. $record = [];
  92. $record['sjId'] = $data['sjId'] ?? 0;
  93. $record['shopId'] = $data['shopId'] ?? 0;
  94. $record['mainId'] = $data['mainId'] ?? 0;
  95. $record['orderSn'] = $data['orderSn'] ?? '';
  96. $record['recordType'] = $data['recordType'] ?? '';
  97. $record['goodsId'] = $data['goodsId'] ?? '';
  98. $record['goodsNum'] = $data['goodsNum'] ?? '';
  99. $record['relateName'] = $data['relateName'] ?? '';
  100. $record['oldStock'] = $data['oldStock'] ?? 0;
  101. $record['newStock'] = $data['newStock'] ?? 0;
  102. $io = -1;
  103. if ($record['newStock'] > $record['oldStock']) {
  104. $io = 1;
  105. }
  106. if ($record['newStock'] < $record['oldStock']) {
  107. $io = 0;
  108. }
  109. $record['io'] = $io;
  110. $respond = self::add($record);
  111. return $respond;
  112. }
  113. //获取某个商品的库存变更记录
  114. public static function getRecordList($where)
  115. {
  116. $data = self::getList('*', $where, 'addTime DESC,id DESC');
  117. $list = !empty($data['list']) ? $data['list'] : [];
  118. if (empty($list)) {
  119. return $data;
  120. }
  121. foreach ($list as $k => $v) {
  122. $list[$k]['typeName'] = self::getTypeName($v['recordType']);
  123. }
  124. $data['list'] = $list;
  125. return $data;
  126. }
  127. public static function getTypeName($type)
  128. {
  129. return self::$typeMap[$type] ?? '';
  130. }
  131. }