| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- <?php
- namespace bizGhs\stock\classes;
- use bizGhs\base\classes\BaseClass;
- use bizGhs\order\traits\OrderTrait;
- use bizGhs\product\classes\ProductClass;
- use bizGhs\stock\services\StockRecordService;
- use common\components\dict;
- use common\services\xhItemService;
- class StockRecordClass extends BaseClass
- {
- use OrderTrait;
- public static $baseFile = '\bizGhs\stock\models\StockRecord';
- const STOCK_RECORD_TYPE_PURCHASE = 1; //采购
- const STOCK_RECORD_TYPE_OUT_STOCK = 2; //出库
- const STOCK_RECORD_TYPE_IN_STOCK = 3; //入库
- const STOCK_RECORD_TYPE_CHECK_STOCK = 4; //盘点
- const STOCK_RECORD_TYPE_SELL_STOCK = 5; //销售(卖出)
- const STOCK_RECORD_TYPE_OUT_STOCK_CANCEL = 6; //取消入库
- const STOCK_RECORD_TYPE_IN_STOCK_CANCEL = 7; //取消出库
- const STOCK_RECORD_TYPE_SELL_STOCK_CANCEL = 8;// 取消订单
- const STOCK_RECORD_TYPE_WASTAGE = 9;// 报损
- const STOCK_RECORD_TYPE_REFUND = 10;// 退款退货
- const STOCK_RECORD_TYPE_HD_ORDER = 11;//花店销售单
- const STOCK_RECORD_TYPE_GOODS_CONSUME = 12;//制作商品
- const STOCK_RECORD_TYPE_GOODS_WASTAGE = 13;//制作商品损耗
- const STOCK_RECORD_TYPE_GOODS_CONSUME_CANCEL = 14;//取消制作
- const STOCK_RECORD_TYPE_GOODS_WASTAGE_CANCEL = 15;//取消制作已报损
- const STOCK_RECORD_TYPE_HD_REFUND = 16;//花店退货退款
- const STOCK_RECORD_TYPE_GHS_REFUND = 17;//供货商申请退货退款
- public static $typeMap = [
- self::STOCK_RECORD_TYPE_PURCHASE => '采购入库',
- self::STOCK_RECORD_TYPE_IN_STOCK => '调拨入库',
- self::STOCK_RECORD_TYPE_OUT_STOCK => '调拨出库',
- self::STOCK_RECORD_TYPE_CHECK_STOCK => '盘点',
- self::STOCK_RECORD_TYPE_SELL_STOCK => '开单',
- self::STOCK_RECORD_TYPE_OUT_STOCK_CANCEL => '取消入库',
- self::STOCK_RECORD_TYPE_IN_STOCK_CANCEL => '取消出库',
- self::STOCK_RECORD_TYPE_SELL_STOCK_CANCEL => '取消订单',
- self::STOCK_RECORD_TYPE_WASTAGE => '报损',
- self::STOCK_RECORD_TYPE_REFUND => '退货',
- self::STOCK_RECORD_TYPE_HD_ORDER => '开单',
- self::STOCK_RECORD_TYPE_GOODS_CONSUME => '制作',
- self::STOCK_RECORD_TYPE_GOODS_WASTAGE => '制作商品损耗',
- self::STOCK_RECORD_TYPE_GOODS_CONSUME_CANCEL => '取消制作',
- self::STOCK_RECORD_TYPE_GOODS_WASTAGE_CANCEL => '取消制作损耗',
- self::STOCK_RECORD_TYPE_HD_REFUND => '退货退款',
- self::STOCK_RECORD_TYPE_GHS_REFUND => '退货退款',
- ];
- public static function getRecordList($where)
- {
- $data = self::getList('*', $where, 'addTime DESC');
- $list = isset($data['list']) && !empty($data['list']) ? $data['list'] : [];
- if (empty($list)) {
- return $data;
- }
- $itemIds = array_column($list, 'itemId');
- $itemIdsUnitNum = xhItemService::getItemUnitNums($itemIds);
- foreach ($list as $k => $v) {
- $unitNum = $itemIdsUnitNum[$v['itemId']] ?? 0;
- $stock = ProductClass::formatStock($v['newStock'], $unitNum);
- $orderNums = ProductClass::formatStock($v['itemNum'], $unitNum);
- $list[$k]['bigNumOrder'] = $orderNums['bigNum'];
- $list[$k]['smallNumOrder'] = $orderNums['smallNum'];
- $list[$k]['bigNumStock'] = $stock['bigNum'];
- $list[$k]['smallNumStock'] = $stock['smallNum'];
- $list[$k]['typeName'] = self::getTypeName($v['recordType']);
- }
- $data['list'] = $list;
- return $data;
- }
- public static function getTypeName($type)
- {
- return self::$typeMap[$type] ?? '';
- }
- public static function addRecord($data)
- {
- $respond = self::add($data);
- //库存预警通知放入队列
- $productId = $data['productId'] ?? 0;
- $currentProduct = ProductClass::getById($productId);
- if (!empty($currentProduct)) {
- ProductClass::stockWarningAddQueue($currentProduct, $data['newStock']);
- }
- return $respond;
- }
- //根据order 记录流水
- // sjId,shopId,orderSn
- //itemInfo = [{productId:1,itemId:1,itemNum:操作的花材数据,oldStock(itemStock):当时库存,newStock:变化后的库存}]
- public static function addRecordByOrder($orderData, $type)
- {
- $itemInfo = $orderData['itemInfo'];
- $productData = self::getProductMapData($itemInfo);
- foreach ($itemInfo as $v) {
- $itemId = $v['itemId'];
- $productId = $v['productId'];
- $record = [];
- $unitNum = $productData[$productId]['ratio'] ?? 0;
- $itemNum = ProductClass::mergeItemNum($v['bigNum'], $v['smallNum'], $unitNum);
- $record['sjId'] = $orderData['sjId'];
- $record['shopId'] = $orderData['shopId'];
- $record['mainId'] = $productData[$productId]['mainId'] ?? 0;
- $record['orderSn'] = $orderData['orderSn'];
- $record['itemId'] = $itemId;
- $record['itemNum'] = $itemNum;
- $record['oldStock'] = $v['itemStock']; //当时库存
- $record['recordType'] = $type;
- $record['productId'] = $productId;
- $record['newStock'] = $v['newStock'];// 最新库存
- $record['relateName'] = $orderData['relateName'] ?? '';
- $record['ptStyle'] = $orderData['ptStyle'] ?? dict::getDict('ptStyle', 'ghs');
- self::addRecord($record);
- }
- }
- //花店采购申请退货退款库存变动记录 ssh 20220330
- public static function hdCgApplyRefundAddRecord($refundRecord)
- {
- $refundRecord['recordType'] = self::STOCK_RECORD_TYPE_REFUND;
- self::add($refundRecord);
- }
- //供货商给零售店退款退货增加库存变动记录 ssh 20220330
- public static function ghsRefundAddRecord($refundRecord)
- {
- $refundRecord['recordType'] = self::STOCK_RECORD_TYPE_REFUND;
- self::add($refundRecord);
- }
- //采购订单流水记录
- public static function addPurchaseOrderRecord($data)
- {
- $data['recordType'] = self::STOCK_RECORD_TYPE_PURCHASE;
- return self::addRecord($data);
- }
- //盘点订单流水记录
- public static function addCheckOrderRecord($data)
- {
- $data['recordType'] = self::STOCK_RECORD_TYPE_CHECK_STOCK;
- return self::addRecord($data);
- }
- //出库订单流水记录
- public static function addOutStockOrderRecord($data)
- {
- $data['recordType'] = self::STOCK_RECORD_TYPE_OUT_STOCK;
- return self::addRecord($data);
- }
- //取消出库
- public static function addOutStockOrderCancelRecord($data)
- {
- $data['recordType'] = self::STOCK_RECORD_TYPE_OUT_STOCK_CANCEL;
- return self::addRecord($data);
- }
- //入库订单流水记录
- public static function addInStockOrderRecord($data)
- {
- $data['recordType'] = self::STOCK_RECORD_TYPE_IN_STOCK;
- return self::addRecord($data);
- }
- //取消入库
- public static function addInStockOrderCancelRecord($data)
- {
- $data['recordType'] = self::STOCK_RECORD_TYPE_IN_STOCK_CANCEL;
- return self::addRecord($data);
- }
- //销售订单流水记录
- public static function addSellStockOrderRecord($data)
- {
- $data['recordType'] = self::STOCK_RECORD_TYPE_SELL_STOCK;
- return self::addRecord($data);
- }
- //取消销售订单
- public static function addSellStockOrderCancelRecord($data)
- {
- $data['recordType'] = self::STOCK_RECORD_TYPE_SELL_STOCK_CANCEL;
- return self::addRecord($data);
- }
- //零售花店开单 ssh 20220318
- public static function hdKdAddRecord($data)
- {
- $data['recordType'] = self::STOCK_RECORD_TYPE_HD_ORDER;
- return self::addRecord($data);
- }
- //零售花店退货退款 ssh 20220427
- public static function hdRefundAddRecord($data)
- {
- $data['recordType'] = self::STOCK_RECORD_TYPE_HD_REFUND;
- return self::addRecord($data);
- }
- //制作商品 lqh 2022.03.20
- public static function makeGoodsConsume($data)
- {
- $data['recordType'] = self::STOCK_RECORD_TYPE_GOODS_CONSUME;
- return self::addRecord($data);
- }
- //制作商品损耗 lqh 2022.03.20
- public static function makeGoodsWastage($data)
- {
- $data['recordType'] = self::STOCK_RECORD_TYPE_GOODS_WASTAGE;
- return self::addRecord($data);
- }
- public static function cancelMakeGoodsConsume($data)
- {
- $data['recordType'] = self::STOCK_RECORD_TYPE_GOODS_CONSUME_CANCEL;
- return self::addRecord($data);
- }
- public static function cancelMakeGoodsWastage($data)
- {
- $data['recordType'] = self::STOCK_RECORD_TYPE_GOODS_WASTAGE_CANCEL;
- return self::addRecord($data);
- }
- //二批申请退货退款库存变动记录 ssh 20220909
- public static function ghsCgApplyRefundAddRecord($refundRecord)
- {
- $refundRecord['recordType'] = self::STOCK_RECORD_TYPE_GHS_REFUND;
- self::add($refundRecord);
- }
- }
|