|
|
@@ -267,7 +267,7 @@ class CheckOrderClass extends BaseClass
|
|
|
}
|
|
|
|
|
|
//2021.1.22 lqh 操作订单 添加/保存草稿/草稿编辑保存: 区别在添加是立即改库存和记录流水记录,而保存草稿是只保存订单信息
|
|
|
- public static function opOrder($data, $draft = false, $update = false, $check = true)
|
|
|
+ public static function opOrder($data, $draft = false, $update = false, $check = true, $params = [])
|
|
|
{
|
|
|
$sjId = $data['sjId'];
|
|
|
$shopId = $data['shopId'];
|
|
|
@@ -324,6 +324,16 @@ class CheckOrderClass extends BaseClass
|
|
|
$batchData = self::groupOrderItem($ghsItemInfo, $orderSn);
|
|
|
CheckOrderItemClass::batchAddOrderItem($batchData);
|
|
|
|
|
|
+ $avCost = 0;
|
|
|
+ $changeCost = 0;
|
|
|
+ $unitCost = 0;
|
|
|
+ $totalCost = 0;
|
|
|
+ $totalStock = 0;
|
|
|
+ if (isset($params['motherId']) && $params['motherId'] > 0) {
|
|
|
+ $motherInfo = ProductClass::getById($params['motherId'], true);
|
|
|
+ $unitCost = $motherInfo->avCost ?? 0;
|
|
|
+ }
|
|
|
+
|
|
|
$addAmount = 0;
|
|
|
$subAmount = 0;
|
|
|
$ids = [];
|
|
|
@@ -338,32 +348,64 @@ class CheckOrderClass extends BaseClass
|
|
|
if (!$lock) {
|
|
|
util::fail("系统繁忙,请稍后再试");
|
|
|
}
|
|
|
- $productData = ProductClass::getById($productId);
|
|
|
+ $productData = ProductClass::getById($productId, true);
|
|
|
+
|
|
|
+ if (isset($params['motherId']) && $params['motherId'] > 0) {
|
|
|
+ $changeNum = bcsub($productData->stock,$v['itemNum'],2);
|
|
|
+ $changeNum = abs($changeNum);
|
|
|
+ $changeCost = bcmul($unitCost, $changeNum, 2);
|
|
|
+ $totalCost = $productData->totalCost ?? 0;
|
|
|
+ $totalStock = $productData->totalStock ?? 0;
|
|
|
+ if ($productId == $params['motherId']) {
|
|
|
+ $totalCost = bcsub($totalCost, $changeCost, 2);
|
|
|
+ $totalStock = bcsub($totalStock, $changeNum, 2);
|
|
|
+ $avCost = $unitCost;
|
|
|
+ $productData->avCost = $avCost;
|
|
|
+ $productData->totalCost = $totalCost;
|
|
|
+ $productData->totalStock = $totalStock;
|
|
|
+ $productData->save();
|
|
|
+ } else {
|
|
|
+ $totalCost = bcadd($changeCost, $totalCost, 2);
|
|
|
+ $totalStock = bcadd($changeNum, $totalStock, 2);
|
|
|
+ $avCost = bcdiv($totalCost, $totalStock, 2);
|
|
|
+ $productData->avCost = $avCost;
|
|
|
+ $productData->totalCost = $totalCost;
|
|
|
+ $productData->totalStock = $totalStock;
|
|
|
+ $productData->save();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
ProductClass::updateStockById($productId, $v['itemNum'], $adminId);
|
|
|
//上架
|
|
|
- if ($v['itemNum'] > 0 && $productData['status'] == 2) {
|
|
|
+ if ($v['itemNum'] > 0 && $productData->status == 2) {
|
|
|
ProductClass::changeStatus($productId, 1);
|
|
|
}
|
|
|
//下架
|
|
|
- if ($v['itemNum'] <= 0 && $productData['status'] == 1) {
|
|
|
+ if ($v['itemNum'] <= 0 && $productData->status == 1) {
|
|
|
ProductClass::changeStatus($productId, 2);
|
|
|
}
|
|
|
util::unlock($key);
|
|
|
+
|
|
|
//流水记录
|
|
|
$record = [];
|
|
|
$record['sjId'] = $sjId;
|
|
|
$record['shopId'] = $shopId;
|
|
|
- $record['mainId'] = $productData['mainId'];
|
|
|
+ $record['mainId'] = $productData->mainId ?? 0;
|
|
|
$record['orderSn'] = $orderSn;
|
|
|
$record['ptStyle'] = 2;
|
|
|
$record['relateName'] = $data['staffName'] ?? '';
|
|
|
$record['itemId'] = $v['itemId'];
|
|
|
$record['productId'] = $productId;
|
|
|
$record['itemNum'] = abs($v['profitLossNum']);
|
|
|
- $record['oldStock'] = $productData['stock'];
|
|
|
+ $record['oldStock'] = $productData->stock ?? 0;
|
|
|
$record['newStock'] = $v['itemNum'];
|
|
|
$record['targetId'] = $order->id ?? 0;
|
|
|
$record['remark'] = $remark;
|
|
|
+ $record['avCost'] = $avCost;
|
|
|
+ $record['changeCost'] = $changeCost;
|
|
|
+ $record['unitCost'] = $unitCost;
|
|
|
+ $record['totalStock'] = $totalStock;
|
|
|
+ $record['totalCost'] = $totalCost;
|
|
|
StockRecordClass::addCheckOrderRecord($record);
|
|
|
|
|
|
$amount = $v['amount'] ?? 0;
|