客户等级设置
This commit is contained in:
@@ -9,7 +9,7 @@ use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||
use Modules\SystemTool\Models\SysFileModel;
|
||||
|
||||
/**
|
||||
* 客户等级模型(同一商品按客户等级定价)
|
||||
* 客户等级模型(同一商品按等级上浮比例定价:售价 = 成本价 × (100 + percent) / 100)
|
||||
*/
|
||||
class CustomerLevelModel extends Model
|
||||
{
|
||||
@@ -25,12 +25,14 @@ class CustomerLevelModel extends Model
|
||||
|
||||
protected $fillable = [
|
||||
'name',
|
||||
'percent',
|
||||
'sort',
|
||||
'status',
|
||||
'icon_id'
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
'percent' => 'decimal:2',
|
||||
'sort' => 'integer',
|
||||
'status' => 'integer',
|
||||
'created_at' => 'datetime:Y-m-d H:i:s',
|
||||
@@ -65,10 +67,17 @@ class CustomerLevelModel extends Model
|
||||
}
|
||||
|
||||
/**
|
||||
* 该等级下的商品价格
|
||||
* 按等级上浮比例计算售价(统一换算入口,金额走 bcmath 保证两位小数精度)
|
||||
*
|
||||
* 售价 = 成本价 × (100 + percent) / 100(四舍五入保留两位)。
|
||||
*
|
||||
* @param string|int|float $costPrice 商品成本价(decimal cast 字符串)
|
||||
* @param string|int|float $percent 价格上浮比例(30 = 上浮 30%)
|
||||
* @return string 两位小数字符串,如 '13.05'
|
||||
*/
|
||||
public function prices(): HasMany
|
||||
public static function calcLevelPrice(string|int|float $costPrice, string|int|float $percent): string
|
||||
{
|
||||
return $this->hasMany(ProductPriceModel::class, 'level_id', 'id');
|
||||
$multiplier = bcadd('100', (string) $percent, 4);
|
||||
return bcdiv(bcmul((string) $costPrice, $multiplier, 4), '100', 2);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user