PdGoodsClass.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. namespace bizHd\pd\classes;
  3. use biz\stock\classes\GoodsStockRecordClass;
  4. use bizHd\base\classes\BaseClass;
  5. use bizHd\goods\classes\GoodsClass;
  6. use common\components\orderSn;
  7. use common\components\util;
  8. use Yii;
  9. class PdGoodsClass extends BaseClass
  10. {
  11. public static $baseFile = '\bizHd\pd\models\PdGoods';
  12. public static function addBase($data, $bool = false)
  13. {
  14. return self::add($data, $bool);
  15. }
  16. public static function getPdList($where)
  17. {
  18. $data = self::getList('*', $where, 'addTime DESC');
  19. $list = isset($data['list']) && !empty($data['list']) ? $data['list'] : [];
  20. if (empty($list)) {
  21. return $data;
  22. }
  23. return $data;
  24. }
  25. //创建盘点 ssh 20230302
  26. public static function createPd($data)
  27. {
  28. $goodsList = $data['goodsInfo'];
  29. $mainId = $data['mainId'] ?? 0;
  30. $sjId = $data['sjId'] ?? 0;
  31. $shopId = $data['shopId'] ?? 0;
  32. $staffName = $data['staffName'] ?? '';
  33. $orderSn = orderSn::getPdGoodsSn();
  34. $data['orderSn'] = $orderSn;
  35. $ids = array_column($goodsList, 'goodsId');
  36. $ids = array_unique(array_filter($ids));
  37. $goodsInfo = GoodsClass::getByIds($ids, null, 'id');
  38. if (empty($goodsInfo)) {
  39. util::fail('没有商品');
  40. }
  41. foreach ($goodsInfo as $goodsData) {
  42. $name = $goodsData['name'] ?? '';
  43. if (isset($goodsData['mainId']) == false || $goodsData['mainId'] != $mainId) {
  44. util::fail($name . '没有权限盘点');
  45. }
  46. }
  47. foreach ($goodsList as $item) {
  48. $goodsId = $item['goodsId'] ?? 0;
  49. $name = $item['name'] ?? '';
  50. $cover = $item['cover'] ?? '';
  51. $flower = $item['flower'] ?? 0;
  52. $kindId = $item['kindId'] ?? 0;
  53. $num = $item['num'] ?? 0;
  54. $current = $goodsInfo[$goodsId] ?? [];
  55. if (empty($current)) {
  56. util::fail('存在有问题商品');
  57. }
  58. $stock = $current['stock'];
  59. $price = $current['price'] ?? 0;
  60. $cost = $current['cost'] ?? 0;
  61. if ($num != $stock) {
  62. if ($num > $stock) {
  63. $diffNum = bcsub($num, $stock);
  64. $respond = GoodsClass::addStock($goodsId, $mainId, $diffNum);
  65. } else {
  66. $diffNum = bcsub($stock, $num);
  67. $checkStock = false;
  68. $params = [];
  69. $respond = GoodsClass::decreaseStock($goodsId, $mainId, $diffNum, $checkStock, $params);
  70. }
  71. $oldStock = $respond['oldStock'] ?? 0;
  72. $newStock = $respond['newStock'] ?? 0;
  73. $recordData = [];
  74. $recordData['sjId'] = $sjId;
  75. $recordData['shopId'] = $shopId;
  76. $recordData['mainId'] = $mainId;
  77. $recordData['orderSn'] = $orderSn;
  78. $recordData['goodsId'] = $goodsId;
  79. $recordData['goodsNum'] = $diffNum;
  80. $recordData['oldStock'] = $oldStock;
  81. $recordData['newStock'] = $newStock;
  82. $recordData['relateName'] = $staffName;
  83. GoodsStockRecordClass::pdGoods($recordData);
  84. $itemData = [
  85. 'orderSn' => $orderSn,
  86. 'goodsId' => $goodsId,
  87. 'name' => $name,
  88. 'cover' => $cover,
  89. 'flower' => $flower,
  90. 'kindId' => $kindId,
  91. 'num' => $num,
  92. 'stock' => $oldStock,
  93. 'price' => $price,
  94. 'cost' => $cost,
  95. ];
  96. PdGoodsDetailClass::add($itemData);
  97. }
  98. }
  99. $data['status'] = 2;
  100. $result = self::addBase($data, true);
  101. return $result;
  102. }
  103. }