| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449 |
- <?php
- namespace bizHd\order\classes;
- use biz\stock\classes\GoodsStockRecordClass;
- use bizGhs\product\classes\ProductClass;
- use bizGhs\stock\classes\StockRecordClass;
- use bizGhs\stock\services\StockRecordService;
- use bizHd\goods\classes\GoodsClass;
- use common\components\business;
- use common\components\dict;
- use common\components\imgUtil;
- use common\components\util;
- use Yii;
- use bizHd\base\classes\BaseClass;
- class OrderGoodsClass extends BaseClass
- {
- public static $baseFile = '\bizHd\order\models\OrderGoods';
- const ACTION_CONSUME = 'consume'; //消耗花材
- const ACTION_CONSUME_CANCEL = 'consumeCancel'; //取消消耗花材
- const ACTION_WASTAGE = 'wastage'; //取消消耗花材
- const ACTION_WASTAGE_CANCEL = 'wastageCancel'; //取消消耗花材
- //取订单 ssh 2020.1.2
- public static function getGoodsListById($id)
- {
- $arr = self::getAllByCondition(['orderId' => $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)
- {
- //加商品库存
- $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'] = $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)
- {
- $orderSn = $data['orderSn'] ?? '';
- $sjId = $data['sjId'] ?? 0;
- $shopId = $data['shopId'] ?? 0;
- $mainId = $data['mainId'] ?? 0;
- $goodsId = $data['goodsId'] ?? 0;
- $num = $data['num'] ?? 0;
- $customName = $custom['name'] ?? '';
- //搜索关键词GoodsStockRecordClass::sellGoods,可以找到相同的方法
- $respond = GoodsClass::decreaseStock($goodsId, $mainId, $num);
- $oldStock = $respond['oldStock'] ?? 0;
- $newStock = $respond['newStock'] ?? 0;
- $data = [];
- $data['sjId'] = $sjId;
- $data['shopId'] = $shopId;
- $data['mainId'] = $mainId;
- $data['orderSn'] = $orderSn;
- $data['goodsId'] = $goodsId;
- $data['goodsNum'] = $num;
- $data['oldStock'] = $oldStock;
- $data['newStock'] = $newStock;
- $data['relateName'] = $customName;
- GoodsStockRecordClass::sellGoods($data);
- return self::add($data);
- }
- //制作工单消耗花材(批量)
- //消耗花材信息:$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;
- }
- }
|