| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263 |
- <?php
- namespace biz\stock\classes;
- use biz\base\classes\BaseClass;
- use bizGhs\product\classes\ProductClass;
- use bizGhs\stock\classes\StockRecordClass;
- use common\components\dict;
- use common\components\util;
- //库存变动对外方法 后续把之前在product stock record 中的方法迁移到这边
- //包含了库存变动和库存记录
- class StockClass extends BaseClass
- {
- const ADD_STOCK = 'addStock'; //加库存
- const DECREASE_STOCK = 'decreaseStock';//减库存
- public static $actionItemMap = [
- //采购--加库存
- StockRecordClass::STOCK_RECORD_TYPE_PURCHASE => [
- 'stock' => self::ADD_STOCK, //加库存
- 'recordType' => StockRecordClass::STOCK_RECORD_TYPE_PURCHASE,
- ],
- //出库 减库存
- StockRecordClass::STOCK_RECORD_TYPE_IN_STOCK => [
- 'stock' => self::DECREASE_STOCK, //减库存
- 'recordType' => StockRecordClass::STOCK_RECORD_TYPE_IN_STOCK,
- ],
- //入库 加库存
- StockRecordClass::STOCK_RECORD_TYPE_OUT_STOCK => [
- 'stock' => self::ADD_STOCK, //加库存
- 'recordType' => StockRecordClass::STOCK_RECORD_TYPE_OUT_STOCK,
- ],
- //销售(开单) 减库存
- StockRecordClass::STOCK_RECORD_TYPE_SELL_STOCK => [
- 'stock' => self::DECREASE_STOCK, //加库存
- 'recordType' => StockRecordClass::STOCK_RECORD_TYPE_SELL_STOCK,
- ],
- //取消入口 减库存
- StockRecordClass::STOCK_RECORD_TYPE_OUT_STOCK_CANCEL => [
- 'stock' => self::DECREASE_STOCK, //减库存
- 'recordType' => StockRecordClass::STOCK_RECORD_TYPE_OUT_STOCK_CANCEL,
- ],
- //取消出库 加库存
- StockRecordClass::STOCK_RECORD_TYPE_IN_STOCK_CANCEL => [
- 'stock' => self::ADD_STOCK, //加库存
- 'recordType' => StockRecordClass::STOCK_RECORD_TYPE_IN_STOCK_CANCEL,
- ],
- //订单取消 加库存
- StockRecordClass::STOCK_RECORD_TYPE_SELL_STOCK_CANCEL => [
- 'stock' => self::ADD_STOCK, //加库存
- 'recordType' => StockRecordClass::STOCK_RECORD_TYPE_SELL_STOCK_CANCEL,
- ],
- //报损--减库存
- StockRecordClass::STOCK_RECORD_TYPE_WASTAGE => [
- 'stock' => self::DECREASE_STOCK, //减库存
- 'recordType' => StockRecordClass::STOCK_RECORD_TYPE_WASTAGE,
- ],
- //退货退款 --加库存
- StockRecordClass::STOCK_RECORD_TYPE_REFUND => [
- 'stock' => self::ADD_STOCK,
- 'recordType' => StockRecordClass::STOCK_RECORD_TYPE_REFUND,
- ],
- //花店销售单---减库存
- StockRecordClass::STOCK_RECORD_TYPE_HD_ORDER => [
- 'stock' => self::DECREASE_STOCK,
- 'recordType' => StockRecordClass::STOCK_RECORD_TYPE_HD_ORDER,
- ],
- //制作商品 ---减库存
- StockRecordClass::STOCK_RECORD_TYPE_GOODS_CONSUME => [
- 'stock' => self::DECREASE_STOCK,
- 'recordType' => StockRecordClass::STOCK_RECORD_TYPE_GOODS_CONSUME,
- ],
- //制作商品损耗--减库存
- StockRecordClass::STOCK_RECORD_TYPE_GOODS_WASTAGE => [
- 'stock' => self::DECREASE_STOCK,
- 'recordType' => StockRecordClass::STOCK_RECORD_TYPE_GOODS_WASTAGE,
- ],
- //取消制作,所有花材库存回滚
- StockRecordClass::STOCK_RECORD_TYPE_GOODS_CONSUME_CANCEL => [
- 'stock' => self::ADD_STOCK,
- 'recordType' => StockRecordClass::STOCK_RECORD_TYPE_GOODS_CONSUME_CANCEL,
- ],
- //取消制作,已报损花材库存回滚
- StockRecordClass::STOCK_RECORD_TYPE_GOODS_WASTAGE_CANCEL => [
- 'stock' => self::ADD_STOCK,
- 'recordType' => StockRecordClass::STOCK_RECORD_TYPE_GOODS_WASTAGE_CANCEL,
- ],
- ];
- //花材--采购,(不用区分是供货商采购还是零售端采购)
- // 加库存,加记录
- public static function purchaseItem($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options = [])
- {
- $stockInfo = self::commonItemFun($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options, StockRecordClass::STOCK_RECORD_TYPE_PURCHASE);
- return $stockInfo;
- }
- //花材--出库
- public static function stockOutItem($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options = [])
- {
- $stockInfo = self::commonItemFun($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options, StockRecordClass::STOCK_RECORD_TYPE_OUT_STOCK);
- return $stockInfo;
- }
- //花材--入库
- public static function stockInItem($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options = [])
- {
- $stockInfo = self::commonItemFun($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options, StockRecordClass::STOCK_RECORD_TYPE_IN_STOCK);
- return $stockInfo;
- }
- //花材--盘点
- public static function stockPdItem($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options = [])
- {
- $stockInfo = self::commonItemFun($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options, StockRecordClass::STOCK_RECORD_TYPE_CHECK_STOCK);
- return $stockInfo;
- }
- //花材--报损
- public static function stockWastageItem($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options = [])
- {
- $stockInfo = self::commonItemFun($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options, StockRecordClass::STOCK_RECORD_TYPE_WASTAGE);
- return $stockInfo;
- }
- //花材--花店销售单
- public static function stockHdSellItem($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options = [])
- {
- $stockInfo = self::commonItemFun($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options, StockRecordClass::STOCK_RECORD_TYPE_HD_ORDER);
- return $stockInfo;
- }
- //花材--销售(卖出)
- public static function stockSellItem($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options = [])
- {
- $stockInfo = self::commonItemFun($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options, StockRecordClass::STOCK_RECORD_TYPE_SELL_STOCK);
- return $stockInfo;
- }
- //花材--取消出库
- public static function stockOutCancelItem($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options = [])
- {
- $stockInfo = self::commonItemFun($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options, StockRecordClass::STOCK_RECORD_TYPE_OUT_STOCK_CANCEL);
- return $stockInfo;
- }
- //花材--取消入库
- public static function stockInCancelItem($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options = [])
- {
- $stockInfo = self::commonItemFun($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options, StockRecordClass::STOCK_RECORD_TYPE_IN_STOCK_CANCEL);
- return $stockInfo;
- }
- //花材--退款退货
- public static function stockRefundItem($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options = [])
- {
- $stockInfo = self::commonItemFun($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options, StockRecordClass::STOCK_RECORD_TYPE_REFUND);
- return $stockInfo;
- }
- //制作商品用花材
- public static function stockMakeGoodsConsumeItem($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options = [])
- {
- $stockInfo = self::commonItemFun($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options, StockRecordClass::STOCK_RECORD_TYPE_GOODS_CONSUME);
- return $stockInfo;
- }
- //花材--制作商品损耗
- public static function stockMakeGoodsWastageItem($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options = [])
- {
- $stockInfo = self::commonItemFun($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options, StockRecordClass::STOCK_RECORD_TYPE_GOODS_WASTAGE);
- return $stockInfo;
- }
- //取消制作,所用花材库存回滚
- public static function stockMakeGoodsConsumeCancelItem($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options = [])
- {
- $stockInfo = self::commonItemFun($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options, StockRecordClass::STOCK_RECORD_TYPE_GOODS_CONSUME_CANCEL);
- return $stockInfo;
- }
- //取消制作,已损耗花材回滚
- public static function stockMakeGoodsWastageCancelItem($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options = [])
- {
- $stockInfo = self::commonItemFun($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options, StockRecordClass::STOCK_RECORD_TYPE_GOODS_WASTAGE_CANCEL);
- return $stockInfo;
- }
- //商品相关---todo
- public static function commonItemFun($orderSn, $sjId, $shopId, $productId, $bigNum, $smallNum, $options, $action)
- {
- $product = self::verifyProduct($productId);
- $map = self::$actionItemMap[$action];
- if (empty($map) || !isset($map['stock']) || !isset($map['recordType'])) {
- util::fail("参数错误");
- }
- $stock = $map['stock'];
- $className = 'bizGhs\product\classes\ProductClass';
- $params = [
- $productId,
- $bigNum,
- $smallNum
- ];
- $stockInfo = call_user_func_array(array($className, $stock), $params);
- $record = self::getItemRecordData($orderSn, $sjId, $shopId, $product, $stockInfo, $options);
- $record['recordType'] = $map['recordType'];
- $record['ptStyle'] = $options['ptStyle'] ?? dict::getDict('ptStyle', 'hd');
- StockRecordClass::addRecord($record);
- return $stockInfo;
- }
- public static function getItemRecordData($orderSn, $sjId, $shopId, $product, $stockInfo, $options = [])
- {
- $recordData = [];
- $recordData['sjId'] = $sjId;
- $recordData['shopId'] = $shopId;
- //增加中央ID
- $recordData['mainId'] = $product['mainId'] ?? 0;
- $recordData['itemId'] = $product['itemId'];
- $recordData['itemNum'] = $stockInfo['itemNum'];
- $recordData['oldStock'] = $stockInfo['oldStock'];
- $recordData['newStock'] = $stockInfo['newStock'];
- $recordData['productId'] = $product['id'];
- $recordData['orderSn'] = $orderSn;
- $recordData['relateName'] = $options['relateName'] ?? '';
- return $recordData;
- }
- protected static function verifyProduct($productId)
- {
- $product = ProductClass::getById($productId);
- if (empty($product)) {
- util::fail("花材不存在");
- }
- return $product;
- }
- }
|