$id], null, '*'); if (empty($arr)) { return []; } foreach ($arr as $key => $val) { $val = business::formatOrderGoodsCover($val); $arr[$key] = $val; } return $arr; } public static function getListBySn($sn) { $list = self::getAllByCondition(['orderSn' => $sn], null, '*'); if (empty($list)) { return []; } foreach ($list as $key => $val) { $shortCover = isset($val['cover']) && !empty($val['cover']) ? $val['cover'] : 'hhb_small.png'; $smallCover = imgUtil::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_130,w_130"; $bigCover = imgUtil::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_700,w_700"; $list[$key]['shortCover'] = $shortCover; $list[$key]['smallCover'] = $smallCover; $list[$key]['bigCover'] = $bigCover; } return $list; } //批量取订单 ssh 2020.1.2 public static function getGoodsListByOrderSns($sns) { $arr = self::getAllByCondition(['orderSn' => ['in', $sns]], null, '*'); if (empty($arr)) { return []; } $data = []; foreach ($arr as $info) { $orderId = $info['id']; $info = business::formatOrderGoodsCover($info); $data[$orderId][] = $info; } return $data; } //退货增加库存 ssh 20220427 public static function refundAddStock($orderSn, $sjId, $shopId, $mainId, $goodsId, $goodsNum, $shopAdminName, $orderId) { //取消制作单 // $work = WorkClass::getByCondition(['orderId' => $orderId, 'goodsId' => $goodsId], true); // WorkClass::removeWork($work, $goodsNum); //加商品库存 $params = ['reduceSale' => 1]; $respond = GoodsClass::addStock($goodsId, $mainId, $goodsNum, $params); //商品流水记录 $data = []; $data['sjId'] = $sjId; $data['shopId'] = $shopId; $data['mainId'] = $mainId; $data['orderSn'] = $orderSn; $data['goodsId'] = $goodsId; $data['goodsNum'] = $goodsNum; $data['oldStock'] = $respond['oldStock'] ?? 0; $data['newStock'] = $respond['newStock'] ?? 0; $data['relateName'] = $shopAdminName; GoodsStockRecordClass::refund($data); return true; } //制作制作单完成,新增商品库存 public static function addGoodsStockByMakeGoods($orderSn, $sjId, $shopId, $mainId, $goodsId, $goodsNum, $staffName) { //加商品库存 $respond = GoodsClass::addStock($goodsId, $mainId, $goodsNum); //商品流水记录 $data = []; $data['sjId'] = $sjId; $data['shopId'] = $shopId; $data['mainId'] = $mainId; $data['orderSn'] = $orderSn; $data['goodsId'] = $goodsId; $data['goodsNum'] = $goodsNum; $data['oldStock'] = $respond['oldStock'] ?? 0; $data['newStock'] = $respond['newStock'] ?? 0; $data['relateName'] = $staffName; GoodsStockRecordClass::addMakeGoods($data); return true; } //制作制作单消耗花材(单个) public static function consumeItemByMakeGoods($orderSn, $sjId, $shopId, $productId, $num, $unitType) { $respond = self::changeItemByMakeGoods($orderSn, $sjId, $shopId, $productId, $num, $unitType, self::ACTION_CONSUME); return $respond; } //制作制作单 花材损耗(单个) public static function wastageItemByMakeGoods($orderSn, $sjId, $shopId, $productId, $num, $unitType) { $respond = self::changeItemByMakeGoods($orderSn, $sjId, $shopId, $productId, $num, $unitType, self::ACTION_WASTAGE); return $respond; } //取消制作单 花材消耗退回(单个) public static function consumeItemByMakeGoodsCancel($orderSn, $sjId, $shopId, $productId, $num, $unitType) { $respond = self::changeItemByMakeGoods($orderSn, $sjId, $shopId, $productId, $num, $unitType, self::ACTION_CONSUME_CANCEL); return $respond; } //取消制作单 花材损耗退回(单个) public static function wastageItemByMakeGoodsCancel($orderSn, $sjId, $shopId, $productId, $num, $unitType) { $respond = self::changeItemByMakeGoods($orderSn, $sjId, $shopId, $productId, $num, $unitType, self::ACTION_WASTAGE_CANCEL); return $respond; } //action 值 // consume(制作制作单消耗花材) ,cancelConsume(取消制作制作单消耗花材) // wastage (制作制作单损耗花材),cancelWastage (取消制作制作单损耗花材) public static function changeItemByMakeGoods($orderSn, $sjId, $shopId, $productId, $num, $unitType, $action) { $bigNum = 0; $smallNum = 0; if ($unitType == dict::getDict('unitType', 'big')) { //大单位 $bigNum = $num; } else { //小单位 $smallNum = $num; } $stockInfo = []; switch ($action) { case self::ACTION_WASTAGE: case self::ACTION_CONSUME: $stockInfo = ProductClass::decreaseStock($productId, $bigNum, $smallNum, true); break; case self::ACTION_CONSUME_CANCEL: case self::ACTION_WASTAGE_CANCEL: $stockInfo = ProductClass::addStock($productId, $bigNum, $smallNum); break; default: util::fail("非法参数"); } if (empty($stockInfo)) { util::fail("非法参数"); } //记录流流水 $productData = ProductClass::getById($productId); $record = []; $record['sjId'] = $sjId; $record['shopId'] = $shopId; $record['mainId'] = $productData['mainId']; $record['orderSn'] = $orderSn; $record['itemId'] = $productData['itemId']; $record['productId'] = $productId; $record['itemNum'] = $stockInfo['itemNum']; $record['oldStock'] = $stockInfo['oldStock']; $record['newStock'] = $stockInfo['newStock']; switch ($action) { case self::ACTION_CONSUME: StockRecordClass::makeGoodsConsume($record); break; case self::ACTION_WASTAGE: StockRecordClass::makeGoodsWastage($record); break; case self::ACTION_CONSUME_CANCEL: StockRecordClass::cancelMakeGoodsConsume($record); break; case self::ACTION_WASTAGE_CANCEL: StockRecordClass::cancelMakeGoodsWastage($record); break; } return $stockInfo; } //花店商家自主开单,库存不足则不能开单 public static function addData($data, $custom = null, $goodsInfo = []) { $goodsId = $data['goodsId'] ?? 0; $num = $data['num'] ?? 0; $mainId = $data['mainId'] ?? 0; $orderSn = $data['orderSn'] ?? ""; $shopId = $data['shopId'] ?? 0; $sjId = $data['sjId'] ?? 0; $customName = $custom['name'] ?? ''; $params = ['addSale' => 1]; $respond = GoodsClass::decreaseStock($goodsId, $mainId, $num, true, $params); $oldStock = $respond['oldStock'] ?? 0; $newStock = $respond['newStock'] ?? 0; $recordData = []; $recordData['sjId'] = $sjId; $recordData['shopId'] = $shopId; $recordData['mainId'] = $mainId; $recordData['orderSn'] = $orderSn; $recordData['goodsId'] = $goodsId; $recordData['goodsNum'] = $num; $recordData['oldStock'] = $oldStock; $recordData['newStock'] = $newStock; $recordData['relateName'] = $customName; GoodsStockRecordClass::sellGoods($recordData); $currentGoods = $goodsInfo[$goodsId] ?? []; if (!empty($currentGoods)) { //如果定义库存充值的商品,并且库存低于99时,自动增加库存到999。 if (isset($currentGoods['stockSet']) && $currentGoods['stockSet'] == 0) { if ($newStock < 99) { $addNum = bcsub(999, $newStock); $ret = GoodsClass::addStock($goodsId, $mainId, $addNum); $oldStock = $ret['oldStock'] ?? 0; $newStock = $ret['newStock'] ?? 0; $recordData = []; $recordData['sjId'] = $sjId; $recordData['shopId'] = $shopId; $recordData['mainId'] = $mainId; $recordData['orderSn'] = ''; $recordData['goodsId'] = $goodsId; $recordData['goodsNum'] = $addNum; $recordData['oldStock'] = $oldStock; $recordData['newStock'] = $newStock; $recordData['relateName'] = '系统'; $recordData['remark'] = '自动补充库存'; GoodsStockRecordClass::pdGoods($recordData); } } } return self::add($data, true); } //制作制作单消耗花材(批量) //消耗花材信息:$consumeItemInfo = [{"id":12233,"num":1,"unitType":0}] public static function consumeItemByMakeGoodsBatch($orderSn, $sjId, $shopId, $consumeItemInfo) { if (empty($consumeItemInfo)) { util::fail("参数错误"); } //花材消耗 foreach ($consumeItemInfo as $v) { //库存减少 $bigNum = 0; $smallNum = 0; $productId = $v['id']; if ($v['unitType'] == 0) { //大单位 $bigNum = $v['num']; } else { //小单位 $smallNum = $v['num']; } //扣库存 $stockInfo = ProductClass::decreaseStock($productId, $bigNum, $smallNum, true); //记录流流水 $productData = ProductClass::getById($productId); $record = []; $record['sjId'] = $sjId; $record['shopId'] = $shopId; $record['mainId'] = $productData['mainId']; $record['orderSn'] = $orderSn; $record['itemId'] = $productData['itemId']; $record['productId'] = $productId; $record['itemNum'] = $stockInfo['itemNum']; $record['oldStock'] = $stockInfo['oldStock']; $record['newStock'] = $stockInfo['newStock']; // StockRecordClass::makeGoodsConsume($record); } return true; } //制作制作单 花材损耗(批量) //损耗花材信息:$wastageItemInfo = [{"id":12233,"num":1,"unitType":0}] public static function wastageItemByMakeGoodsBatch($orderSn, $sjId, $shopId, $wastageItemInfo) { //花材损耗 if (empty($wastageItemInfo)) { util::fail("参数错误"); } foreach ($wastageItemInfo as $v) { //库存减少 $bigNum = 0; $smallNum = 0; $productId = $v['id']; if ($v['unitType'] == 0) { //大单位 $bigNum = $v['num']; } else { //小单位 $smallNum = $v['num']; } //扣库存 $stockInfo = ProductClass::decreaseStock($productId, $bigNum, $smallNum, true); //记录流流水 $productData = ProductClass::getById($productId); $record = []; $record['sjId'] = $sjId; $record['shopId'] = $shopId; $record['mainId'] = $productData['mainId']; $record['orderSn'] = $orderSn; $record['itemId'] = $productData['itemId']; $record['productId'] = $productId; $record['itemNum'] = $stockInfo['itemNum']; $record['oldStock'] = $stockInfo['oldStock']; $record['newStock'] = $stockInfo['newStock']; // StockRecordClass::makeGoodsWastage($record); } } //制作单取消 //退回花材损耗,退回花材消耗,退回商品库存 public static function cancelMakeGoods($orderSn) { //是否有损耗 $whereWastage = []; $whereWastage['orderSn'] = $orderSn; $whereWastage['recordType'] = StockRecordClass::STOCK_RECORD_TYPE_GOODS_WASTAGE; $wastageData = StockRecordClass::getAllByCondition($whereWastage, null, "*"); if ($wastageData) { foreach ($wastageData as $v) { //加库存 $stockInfo = ProductClass::addStockByItemNum($v['productId'], $v['itemNum']); //加流水记录 $wastageRecord = $v; $wastageRecord['oldStock'] = $stockInfo['oldStock']; $wastageRecord['newStock'] = $stockInfo['newStock']; unset($wastageRecord['id']); StockRecordClass::cancelMakeGoodsWastage($wastageRecord); } } //是否有消耗 $whereConsume = []; $whereConsume['orderSn'] = $orderSn; $whereConsume['recordType'] = StockRecordClass::STOCK_RECORD_TYPE_GOODS_CONSUME; $consumeData = StockRecordClass::getAllByCondition($whereConsume, null, "*"); if ($consumeData) { foreach ($consumeData as $c) { //加库存 $stockInfo = ProductClass::addStockByItemNum($c['productId'], $c['itemNum']); //加流水记录 $consumeRecord = $c; $consumeRecord['oldStock'] = $stockInfo['oldStock']; $consumeRecord['newStock'] = $stockInfo['newStock']; unset($consumeRecord['id']); StockRecordClass::cancelMakeGoodsConsume($consumeRecord); } } //是否有商品 $whereGoods = []; $whereGoods['orderSn'] = $orderSn; $whereGoods['recordType'] = GoodsStockRecordClass::STOCK_RECORD_TYPE_PURCHASE; $goodsData = GoodsStockRecordClass::getByCondition($whereGoods, null, "*"); if ($goodsData) { //减库存 GoodsClass::decreaseStock($goodsData['goodsId'], $goodsData['mainId'], $goodsData['goodsNum']); //流水记录 unset($goodsData['id']); GoodsStockRecordClass::cancelMakeGoods($goodsData); } } //该方法已经拆开来了(弃用) //制作商品库存变更方法(加商品库存,减花材库存(消耗、损耗)) //消耗花材信息:$consumeItemInfo = [{"id":12233,"num":1,"unitType":0}] //损耗花材信息:$wastageItemInfo = [{"id":12233,"num":1,"unitType":0}] //id 是当前产品的id,单价unitType 是当前单位类型,0表示大单位,1表示小单位,默认0 num 是当前花材数量 public static function changeStockByMakeGoods($orderSn, $sjId, $shopId, $mainId, $goodsId, $goodsNum, $consumeItemInfo, $wastageItemInfo) { //加商品库存 GoodsClass::addStock($goodsId, $mainId, $goodsNum); //商品流水记录 $data = []; $data['sjId'] = $sjId; $data['shopId'] = $shopId; $data['mainId'] = $mainId; $data['orderSn'] = $orderSn; $data['goodsId'] = $goodsId; $data['goodsNum'] = $goodsNum; GoodsStockRecordClass::addMakeGoods($data); //花材消耗 if (!empty($consumeItemInfo)) { foreach ($consumeItemInfo as $v) { //库存减少 $bigNum = 0; $smallNum = 0; $productId = $v['id']; if ($v['unitType'] == 0) { //大单位 $bigNum = $v['num']; } else { //小单位 $smallNum = $v['num']; } //扣库存 $stockInfo = ProductClass::decreaseStock($productId, $bigNum, $smallNum, true); //记录流流水 $productData = ProductClass::getById($productId); $record = []; $record['sjId'] = $sjId; $record['shopId'] = $shopId; $record['mainId'] = $productData['mainId']; $record['orderSn'] = $orderSn; $record['itemId'] = $productData['itemId']; $record['productId'] = $productId; $record['itemNum'] = $stockInfo['itemNum']; $record['oldStock'] = $stockInfo['oldStock']; $record['newStock'] = $stockInfo['newStock']; // StockRecordClass::makeGoodsConsume($record); } } //花材损耗 if (!empty($wastageItemInfo)) { foreach ($wastageItemInfo as $v) { //库存减少 $bigNum = 0; $smallNum = 0; $productId = $v['id']; if ($v['unitType'] == 0) { //大单位 $bigNum = $v['num']; } else { //小单位 $smallNum = $v['num']; } //扣库存 $stockInfo = ProductClass::decreaseStock($productId, $bigNum, $smallNum, true); //记录流流水 $productData = ProductClass::getById($productId); $record = []; $record['sjId'] = $sjId; $record['shopId'] = $shopId; $record['mainId'] = $productData['mainId']; $record['orderSn'] = $orderSn; $record['itemId'] = $productData['itemId']; $record['productId'] = $productId; $record['itemNum'] = $stockInfo['itemNum']; $record['oldStock'] = $stockInfo['oldStock']; $record['newStock'] = $stockInfo['newStock']; StockRecordClass::makeGoodsWastage($record); } } return true; } }