| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- <?php
- /**
- * 厦门云联储网络科技有限公司
- * https://www.baokuaiyun.com
- * Copyright (c) 2023 爆块云 All rights reserved.
- */
- namespace app\models;
- use yii\db\ActiveRecord;
- use yii\behaviors\TimestampBehavior;
- use Yii;
- /**
- * This is the model class for table "{{%md_profit}}".
- *
- * @property integer $id
- * @property integer $store_id
- * @property integer $saas_user_id
- * @property integer $md_id
- * @property integer $order_id
- * @property integer $sale_profit
- * @property integer $clerk_profit
- * @property integer $pay_profit
- * @property integer $total_profit
- * @property integer $original_price
- * @property integer $md_price
- * @property integer $rate
- * @property integer $level_rate
- * @property integer $is_send
- * @property integer $created_at
- * @property integer $clerk_rate
- * @property integer $updated_at
- * @property integer $is_clerk
- * @property integer $clerk_id
- */
- class MdProfit extends \yii\db\ActiveRecord
- {
- /**
- * @inheritdoc
- */
- public static function tableName()
- {
- return '{{%md_profit}}';
- }
- public function behaviors()
- {
- return [
- [
- 'class' => TimestampBehavior::class,
- 'attributes' => [
- ActiveRecord::EVENT_BEFORE_INSERT => ['created_at'],
- ActiveRecord::EVENT_BEFORE_UPDATE => ['updated_at']
- ]
- ]
- ];
- }
- /**
- * @inheritdoc
- */
- public function rules()
- {
- return [
- [['store_id', 'order_id', 'md_id', 'created_at', 'is_send', 'is_clerk', 'saas_user_id', 'clerk_id'], 'integer'],
- [['clerk_rate', 'rate', 'total_profit', 'pay_profit', 'sale_profit', 'original_price', 'md_price', 'level_rate', 'clerk_profit'], 'number'],
- [['created_at', 'updated_at'], 'safe']
- ];
- }
- /**
- * 利润计算入表
- * @param $order_id
- * @param $original_price
- * @param $md_price
- */
- public static function handleProfit($order_id, $original_price, $md_price, $md_id = null) {
- Yii::warning(['订单id:' . $order_id . '门店收入计算', [$order_id, $original_price, $md_price, $md_id]]);
- $md_id = $md_id ? $md_id : get_md_id();
- $md = Md::findOne($md_id);
- $order = Order::findOne($order_id);
- $store_id = $order->store_id ?: get_store_id();
- $user = User::findOne($order->user_id);
- $profit = new self();
- $profit->order_id = $order_id;
- $profit->store_id = $store_id;
- $profit->saas_user_id = SaasUser::findOne(['mobile' => $user->binding])->id ?: 0;
- $profit->md_id = $md_id;
- $clerk_profit = $pay_profit = $sale_profit = 0;
- $goods = OrderDetail::find()->alias('od')
- ->leftJoin(Goods::tableName() . ' g', "g.id=od.goods_id and g.is_delete=0")
- ->where(['od.order_id' => $order_id])
- ->select('g.md_rate,g.md_rate_type,g.md_hx_rate,g.md_hx_rate_type,od.total_price')
- ->asArray()->all();
- if ($order->is_offline) {
- foreach ($goods as $v) {
- if ($v['md_hx_rate'] > 0) {
- if (!empty($v['md_hx_rate_type'])) {
- $clerk_profit += floatval($v['md_hx_rate']);
- } else {
- $clerk_profit += floatval($v['total_price'] * $v['md_hx_rate'] / 100);
- }
- } else {
- $clerk_profit += floatval($v['total_price'] * $md->clerk_rate / 100);
- }
- }
- // $clerk_profit += floatval($order->pay_price * $md->clerk_rate / 100);
- $profit->clerk_profit = $clerk_profit ?? 0;
- $profit->rate = $md->rate ?? 0;
- $profit->clerk_rate = $md->clerk_rate ?? 0;
- $profit->is_clerk = 1;
- } else {
- foreach ($goods as $v) {
- if ($v['md_rate'] > 0) {
- if (!empty($v['md_rate_type'])) {
- $pay_profit += floatval($v['md_rate']);
- } else {
- $pay_profit += floatval($v['total_price'] * $v['md_rate'] / 100);
- }
- } else {
- $pay_profit += floatval($v['total_price'] * $md->rate / 100);
- }
- }
- $sale_profit = $md_price - $original_price > 0 ? floatval(($md_price - $original_price) * $order->discount / 10) : 0;
- $profit->sale_profit = $sale_profit;
- // $pay_profit = floatval($order->pay_price * $md->rate / 100);
- $profit->pay_profit = $pay_profit ?? 0;
- $profit->rate = $md->rate ?? 0;
- }
- $profit->total_profit = ($sale_profit + $pay_profit + $clerk_profit) ?? 0;
- $profit->original_price = $original_price ?? 0;
- $profit->md_price = $md_price ?? 0;
- $profit->level_rate = $order->discount ?? 0;
- $profit->save();
- }
- }
|