fix(purchase): 修复采购价计算逻辑
- 新增供货价计算步骤,作为商户价和零售价的基础 - 修改商户价和零售价的计算方式,基于供货价进行加成 - 优化价格配置的生成逻辑,确保各层级价格正确计算
This commit is contained in:
parent
1f82805875
commit
71d861dd78
@ -358,18 +358,29 @@ class PurchaseProductOfferLogic extends BaseLogic
|
||||
if (!empty($productCatePriceRate)) {
|
||||
$storeProductGroupPrice = StoreProductGroupPrice::where('product_id', $product['id'])->select()->toArray();
|
||||
$storeProductGroupPrice = reset_index($storeProductGroupPrice, 'group_id');
|
||||
foreach ($productCatePriceRate as $k => $v) {
|
||||
if ($v['id'] == 4) {
|
||||
$data['cost_lv'] = bcdiv($v['rate'], 100, 2);
|
||||
$data['cost'] = bcmul($params['purchase'], bcadd($data['cost_lv'], 1, 2), 2);
|
||||
continue;
|
||||
} elseif ($v['id'] == 100001) {
|
||||
$purchase=0;
|
||||
foreach ($storeProductGroupPrice as $k => $v) {
|
||||
if ($v['id'] == 100001) {
|
||||
//供货
|
||||
$data['purchase_lv'] = bcdiv($v['rate'], 100, 2);
|
||||
$data['purchase'] = bcmul($params['purchase'], bcadd($data['purchase_lv'], 1, 2), 2);
|
||||
$purchase=$data['purchase'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($productCatePriceRate as $k => $v) {
|
||||
if ($v['id'] == 4 &&$purchase>0) {
|
||||
//商户
|
||||
$data['cost_lv'] = bcdiv($v['rate'], 100, 2);
|
||||
$data['purchase_lv'] = bcdiv($v['rate'], 100, 2);
|
||||
$purchase=bcmul($purchase, bcadd($data['purchase_lv'], 1, 2), 2);
|
||||
$data['cost'] = bcmul($purchase, bcadd($data['cost_lv'], 1, 2), 2);
|
||||
continue;
|
||||
} elseif ($v['id'] == 100002) {
|
||||
}elseif ($v['id'] == 100002 &&$purchase>0) {
|
||||
//零售
|
||||
$data['price_lv'] = bcdiv($v['rate'], 100, 2);
|
||||
$data['price'] = bcmul($params['purchase'], bcadd($data['price_lv'], 1, 2), 1);
|
||||
$data['price'] = bcmul($purchase, bcadd($data['price_lv'], 1, 2), 1);
|
||||
if ($product['two_cate_id'] == 15268) {
|
||||
$lastNum = substr($data['price'], -1);
|
||||
if ($lastNum <= 2) {
|
||||
@ -383,20 +394,22 @@ class PurchaseProductOfferLogic extends BaseLogic
|
||||
continue;
|
||||
}
|
||||
$baseRate = 100 + $v['rate'];
|
||||
$item = [
|
||||
'product_id' => $product['id'],
|
||||
'group_id' => $v['id'],
|
||||
'group_name' => $v['title'],
|
||||
'price' => bcmul($params['purchase'], $baseRate / 100, 2),
|
||||
'price_type' => 3,
|
||||
'base_rate' => $baseRate,
|
||||
];
|
||||
if (isset($storeProductGroupPrice[$v['id']])) {
|
||||
$item['base_rate'] = $storeProductGroupPrice[$v['id']]['base_rate'];
|
||||
$item['price'] = bcmul($params['purchase'], $item['base_rate'] / 100, 2);
|
||||
$item['id'] = $storeProductGroupPrice[$v['id']]['id'];
|
||||
if($purchase>0){
|
||||
$item = [
|
||||
'product_id' => $product['id'],
|
||||
'group_id' => $v['id'],
|
||||
'group_name' => $v['title'],
|
||||
'price' => bcmul($purchase, $baseRate / 100, 2),
|
||||
'price_type' => 3,
|
||||
'base_rate' => $baseRate,
|
||||
];
|
||||
if (isset($storeProductGroupPrice[$v['id']])) {
|
||||
$item['base_rate'] = $storeProductGroupPrice[$v['id']]['base_rate'];
|
||||
$item['price'] = bcmul($purchase, $item['base_rate'] / 100, 2);
|
||||
$item['id'] = $storeProductGroupPrice[$v['id']]['id'];
|
||||
}
|
||||
$priceConfig[] = $item;
|
||||
}
|
||||
$priceConfig[] = $item;
|
||||
}
|
||||
}
|
||||
$data['price_config'] = $priceConfig;
|
||||
|
Loading…
x
Reference in New Issue
Block a user