feat(CommissionProductLogic): updated calc logic for prod comm, added loss calc, & updated rel db fields

This commit is contained in:
mkm 2024-09-19 22:55:52 +08:00
parent 98bd00fe01
commit bf5a070046
2 changed files with 35 additions and 18 deletions

View File

@ -63,9 +63,18 @@ class CommissionProductLogic extends BaseLogic
*/
public function a($find, $order, $village_uid, $brigade_uid, $user_ship, $product)
{
$total_price = bcmul($product['price'], $find['cart_num'], 2);
$total_price = bcmul($find['price'], $find['cart_num'], 2);
$purchase_price = bcmul($product['purchase'], $find['cart_num'], 2);
$price = $product['price'];
$price = $find['price'];
$rose=0;
$rose_price = bcsub($price, $product['purchase'], 2);
if ($rose_price > 0) {
//利润除于零售
$price_div = bcdiv($rose_price, $price, 2);
$rose=bcmul($price_div, 100, 2);
}
$platform_number = 0; //平台
$attrition_number = 0; //损耗
@ -73,7 +82,7 @@ class CommissionProductLogic extends BaseLogic
$number1 = 0; //其他
if ($product['rose'] >= 6) {
if ($rose >= 6) {
$platform_number = bcmul($total_price, 0.02, 2); //平台
}
//零售-供货价
@ -93,7 +102,7 @@ class CommissionProductLogic extends BaseLogic
$village_number = bcmul($total_price, 0.04, 2); //村长利润
$data[] =$this->village('零售村长', $order, $find, $village_uid, $price, $total_price, $village_number,0.04);
$number1 = bcadd($number1, $village_number, 2);
if ($product['rose'] >= 12) {
if ($rose >= 12) {
$attrition_number = bcmul($total_price, 0.02, 2); //损耗
$data[] =$this->attrition('零售损耗', $order, $find, $price, $total_price,$attrition_number);
}
@ -101,12 +110,12 @@ class CommissionProductLogic extends BaseLogic
$brigade_number = bcmul($total_price, 0.04, 2); //队长利润
$data[] = $this->brigade('零售队长', $order, $find, $brigade_uid, $price, $total_price, $brigade_number,0.04);
$number1 = bcadd($number1, $brigade_number, 2);
if ($product['rose'] >= 12 && $village_uid>0) {
if ($rose >= 12 && $village_uid>0) {
$village_number = bcmul($total_price, 0.01, 2); //村长利润
$data[] =$this->village('零售村长', $order, $find, $village_uid, $price, $total_price, $village_number,0.01);
$number1 = bcadd($number1, $village_number, 2);
}
if ($product['rose'] >= 15) {
if ($rose >= 15) {
$attrition_number = bcmul($total_price, 0.02, 2); //损耗
$data[] =$this->attrition('零售损耗', $order, $find, $price, $total_price,$attrition_number);
}
@ -114,17 +123,17 @@ class CommissionProductLogic extends BaseLogic
$vip_number = bcmul($total_price, 0.06, 2); //会员利润
$data[] = $this->vip_user('零售会员', $order, $find, $uid, $price, $total_price, $vip_number,0.06);
$number1 = bcadd($number1, $vip_number, 2);
if ($product['rose'] >= 12 && $village_uid>0) {
if ($rose >= 12 && $village_uid>0) {
$village_number = bcmul($total_price, 0.01, 2); //村长利润
$data[] =$this->village('零售村长', $order, $find, $village_uid, $price, $total_price, $village_number,0.01);
$number1 = bcadd($number1, $village_number, 2);
}
if ($product['rose'] >= 14 && $brigade_uid>0) {
if ($rose >= 14 && $brigade_uid>0) {
$brigade_number = bcmul($total_price, 0.01, 2); //队长利润
$data[] =$this->village('零售队长', $order, $find, $village_uid, $price, $total_price, $brigade_number,0.01);
$number1 = bcadd($number1, $brigade_number, 2);
}
if ($product['rose'] >= 15) {
if ($rose >= 15) {
$attrition_number = bcmul($total_price, 0.02, 2); //损耗
$data[] =$this->attrition('零售损耗', $order, $find, $price, $total_price,$attrition_number);
}
@ -144,7 +153,7 @@ class CommissionProductLogic extends BaseLogic
}
$data[] =$this->store('零售门店', $order, $find, $price, $total_price,$store_number,$rate);
//平台
if ($product['rose'] >= 6) {
if ($rose >= 6) {
$data[] = $this->platform('零售平台', $order, $find, $price, $total_price,$platform_number);
}
@ -156,15 +165,15 @@ class CommissionProductLogic extends BaseLogic
*/
public function b($find, $order, $product, $user_ship)
{
$total_price = bcmul($product['cost'], $find['cart_num'], 2);
$total_price = bcmul($find['price'], $find['cart_num'], 2);
$purchase_price = bcmul($product['purchase'], $find['cart_num'], 2);
$price = $product['cost'];
$price = $product['price'];
$rose=0;
$rose_price = bcsub($product['cost'], $product['purchase'], 2);
$rose_price = bcsub($price, $product['purchase'], 2);
if ($rose_price > 0) {
//利润除于零售
$price_div = bcdiv($rose_price, $product['cost'], 2);
$price_div = bcdiv($rose_price, $price, 2);
$rose=bcmul($price_div, 100, 2);
}
@ -205,13 +214,21 @@ class CommissionProductLogic extends BaseLogic
//活动商品结算
public function c($find, $order,$product)
{
$total_price = bcmul($product['price'], $find['cart_num'], 2);
$total_price = bcmul($find['price'], $find['cart_num'], 2);
$purchase_price = bcmul($product['purchase'], $find['cart_num'], 2);
$price = $product['purchase'];
$rose=0;
$rose_price = bcsub($price, $product['purchase'], 2);
if ($rose_price > 0) {
//利润除于零售
$price_div = bcdiv($rose_price, $price, 2);
$rose=bcmul($price_div, 100, 2);
}
$platform_number = 0;
$attrition_number = 0;
if ($product['rose'] >= 6) {
if ($rose >= 6) {
$platform_number = bcmul($total_price, 0.02, 2); //平台
}
//零售-供货价
@ -231,7 +248,7 @@ class CommissionProductLogic extends BaseLogic
}
$data[] =$this->store('商户价门店',$order,$find,$price,$total_price,$store_number,$rate,1);
//平台
if ($product['rose'] >= 6) {
if ($rose >= 6) {
$data[] =$this->platform('商户价平台',$order,$find,$price,$total_price,$platform_number,1);
}
(new StoreFinanceFlowProduct())->saveAll($data);

View File

@ -684,7 +684,7 @@ class PayNotifyLogic extends BaseLogic
}
try {
$info = StoreOrderCartInfo::where('oid', $order['id'])->field('store_id,product_id,cart_num')->select();
$info = StoreOrderCartInfo::where('oid', $order['id'])->field('store_id,product_id,price,cart_num')->select();
$comm = new CommissionProductLogic();
foreach ($info as $k => $v) {
$comm->calculate_product_flow($v, $order, $village_uid, $brigade_uid, $user_ship);