|
|
@@ -352,12 +352,16 @@ class CheckOrderClass extends BaseClass
|
|
|
|
|
|
//涉及平均成本计算的,多处要修改,搜索关键词 calc_av_cost
|
|
|
if (isset($params['motherId']) && $params['motherId'] > 0) {
|
|
|
+ //变动库存和变动成本
|
|
|
$changeNum = bcsub($productData->stock, $v['itemNum'], 2);
|
|
|
$changeNum = abs($changeNum);
|
|
|
$changeCost = bcmul($unitCost, $changeNum, 2);
|
|
|
+ //原库存和原成本,也叫剩余成本和剩余库存
|
|
|
$oldItemStock = $productData->stock ?? 0;
|
|
|
- $oldItemCost = bcmul($oldItemStock, $unitCost, 2);
|
|
|
+ $oldAvCost = $productData->avCost ?? 0;
|
|
|
+ $oldItemCost = bcmul($oldItemStock, $oldAvCost, 2);
|
|
|
if ($productId == $params['motherId']) {
|
|
|
+ //新库存和新成本
|
|
|
$remainCost = bcsub($oldItemCost, $changeCost, 2);
|
|
|
$remainCost = $remainCost > 0 ? $remainCost : 0;
|
|
|
$remainStock = bcsub($oldItemStock, $changeNum, 2);
|
|
|
@@ -368,6 +372,7 @@ class CheckOrderClass extends BaseClass
|
|
|
$productData->totalStock = $remainStock;
|
|
|
$productData->save();
|
|
|
} else {
|
|
|
+ //新库存和新成本
|
|
|
$remainStock = bcadd($changeNum, $oldItemStock, 2);
|
|
|
$remainCost = bcadd($changeCost, $oldItemCost, 2);
|
|
|
if ($remainStock > 0) {
|