293 行
9.3 KiB
PHP
可执行文件
293 行
9.3 KiB
PHP
可执行文件
<?php
|
|
|
|
namespace Common\Business;
|
|
|
|
use Common\Model\CostPriceRecordModel;
|
|
use Common\Model\RetailGoodsModel;
|
|
use Common\Model\RetailMgoodsModel;
|
|
use Common\Model\RetailSkuGoodsModel;
|
|
use Common\Model\SaleMGoodsModel;
|
|
use Common\Model\SCostPriceRecordModel;
|
|
use Common\Model\SkuMGoodsModel;
|
|
use Common\Model\SSaleMGoodsModel;
|
|
use Common\Model\SWarehousingGoodsModel;
|
|
use Common\Model\WarehousingGoodsModel;
|
|
//[1.5.46]
|
|
/**
|
|
* 成本价类
|
|
* Class CostPrice
|
|
* [
|
|
* 修改商品成本价 modifyCostPrice
|
|
* 成本价记录 costPriceRecord
|
|
* 计算成本价 reckonCostPrice
|
|
* 修改成本价验证 modifyCostPriceVerify
|
|
* ]
|
|
* @package Common\Business
|
|
*/
|
|
class CostPrice
|
|
{
|
|
/**
|
|
* 修改商品成本价
|
|
* @param $parameter
|
|
* [
|
|
* user_type 1 商户 2门店
|
|
* merchant_id
|
|
* store_id
|
|
* goods=>[
|
|
* goods_id 商品id
|
|
* sku_id 规格id
|
|
* purchase_price 进价
|
|
* goods_class_id 分类id
|
|
* attribute_state 1常规 2规格
|
|
* pricing_method 1不称重 2称重
|
|
* type 1入库 2退货出库 3调价单修改
|
|
* time 添加时间
|
|
* ]
|
|
* @return array
|
|
* [
|
|
* status
|
|
* message
|
|
* ]
|
|
*/
|
|
public function modifyCostPrice($parameter)
|
|
{
|
|
$verify = $this->modifyCostPriceVerify($parameter);
|
|
if ($verify['status'] != 1) {
|
|
return $verify;
|
|
}
|
|
$result = $this->reckonCostPrice($parameter); //计算成本价
|
|
if ($result['status'] != 1) {
|
|
return $result;
|
|
}
|
|
$cost_price = $result['data']['cost_price']; //成本价
|
|
$goods = $parameter['goods']; //商品信息
|
|
$where = [
|
|
'merchant_id' => $parameter['merchant_id'],
|
|
'goods_id' => $goods['goods_id'],
|
|
'status' => ['in', '0,1'],
|
|
];
|
|
if (!empty($goods['sku_id'])) {
|
|
$where['sku_id'] = $goods['sku_id'];
|
|
}
|
|
switch ($parameter['user_type']) {
|
|
case 1:
|
|
//商户
|
|
$saleGoodsModel = new SaleMGoodsModel();
|
|
if (!empty($goods['sku_id'])) {
|
|
$goodsModel = new SkuMGoodsModel();
|
|
$map = [
|
|
'mgoods_id' => $goods['goods_id'],
|
|
'id' => $goods['sku_id']
|
|
];
|
|
$goodsSave = ['purch_price' => $cost_price];
|
|
} else {
|
|
$goodsModel = new RetailMgoodsModel();
|
|
$map = ['id' => $goods['goods_id']];
|
|
$goodsSave = ['purch_price' => $cost_price];
|
|
}
|
|
break;
|
|
case 2:
|
|
//门店
|
|
$saleGoodsModel = new SSaleMGoodsModel();
|
|
if (!empty($goods['sku_id'])) {
|
|
$goodsModel = new RetailSkuGoodsModel();
|
|
$map = [
|
|
'goods_id' => $goods['goods_id'],
|
|
'id' => $goods['sku_id']
|
|
];
|
|
$goodsSave = ['purchase_price' => $cost_price];
|
|
} else {
|
|
$goodsModel = new RetailGoodsModel();
|
|
$map = ['id' => $goods['goods_id']];
|
|
$goodsSave = ['purchase_price' => $cost_price];
|
|
}
|
|
$where['store_id'] = $parameter['store_id'];
|
|
break;
|
|
}
|
|
try {
|
|
$result = $saleGoodsModel->updateData($where, ['cost_price' => $cost_price]); //库存成本价修改
|
|
if ($result) {
|
|
$result = $goodsModel->updateOrder($map, $goodsSave); //商品档案成本价修改
|
|
}
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], "暂未修改");
|
|
}
|
|
if ($result) {
|
|
$parameter['goods']['new_cost_price'] = $cost_price;
|
|
$result = $this->costPriceRecord($parameter); //成本价记录
|
|
if ($result['status'] != 1) {
|
|
return callBack(statusCode()['success'], "成本价修改成功,记录添加失败");
|
|
} else {
|
|
return callBack(statusCode()['success'], "操作成功");
|
|
}
|
|
} else {
|
|
return callBack(statusCode()['error'], "暂未修改");
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 成本价记录
|
|
* @param $parameter
|
|
* [
|
|
* user_type 1 商户 2门店
|
|
* merchant_id
|
|
* store_id
|
|
* goods=>[
|
|
* new_cost_price 成本价
|
|
* goods_id 商品id
|
|
* sku_id 规格id
|
|
* purchase_price 进价
|
|
* goods_class_id 分类id
|
|
* attribute_state 1常规 2规格
|
|
* pricing_method 1不称重 2称重
|
|
* type 1入库 2退货出库 3调价单修改
|
|
* time 添加时间
|
|
* ]
|
|
* ]
|
|
* @return array
|
|
* [
|
|
* status
|
|
* msg
|
|
* data 添加id
|
|
* ]
|
|
*/
|
|
public function costPriceRecord($parameter)
|
|
{
|
|
$goods = $parameter['goods'];
|
|
$data = [
|
|
'merchant_id' => $parameter['merchant_id'],
|
|
'cost_price' => $goods['new_cost_price'],
|
|
'goods_id' => $goods['goods_id'],
|
|
'sku_id' => $goods['sku_id'] ? $goods['sku_id'] : 0,
|
|
'purchase_price' => $goods['cost_price'],
|
|
'goods_class_id' => $goods['goods_class_id'],
|
|
'attribute_state' => $goods['attribute_state'],
|
|
'pricing_method' => $goods['pricing_method'],
|
|
'type' => $goods['type'] ? $goods['type'] : 1,
|
|
'add_time' => $goods['time'] ? $goods['time'] : time()
|
|
];
|
|
switch ($parameter['user_type']) {
|
|
case 1:
|
|
//商户
|
|
$costPriceModel = new CostPriceRecordModel();
|
|
break;
|
|
case 2:
|
|
//门店
|
|
$data['store_id'] = $parameter['store_id'];
|
|
$costPriceModel = new SCostPriceRecordModel();
|
|
break;
|
|
}
|
|
try {
|
|
$result = $costPriceModel->addData($data);
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], "记录添加失败");
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* 计算成本价
|
|
* @param $parameter
|
|
* [
|
|
* user_type 1 商户 2门店
|
|
* merchant_id
|
|
* store_id
|
|
* goods=>[
|
|
* goods_id 商品id
|
|
* sku_id 规格id
|
|
* time 添加时间
|
|
* ]
|
|
* @return array
|
|
* [
|
|
* status
|
|
* message
|
|
* data=>[
|
|
* cost_price 成本价
|
|
* ]
|
|
* ]
|
|
*/
|
|
public function reckonCostPrice($parameter)
|
|
{
|
|
$goods = $parameter['goods'];
|
|
$where = [
|
|
'surplus_num' => ['gt', 0],
|
|
'merchant_id' => $parameter['merchant_id'],
|
|
'goods_id' => $goods['goods_id'],
|
|
];
|
|
if (!empty($goods['sku_id'])) {
|
|
$where['sku_id'] = $goods['sku_id'];
|
|
}
|
|
switch ($parameter['user_type']) {
|
|
case 1:
|
|
//商户
|
|
$WarehousingGoodsModel = new WarehousingGoodsModel();
|
|
break;
|
|
case 2:
|
|
//门店
|
|
$WarehousingGoodsModel = new SWarehousingGoodsModel();
|
|
$where['store_id'] = $parameter['store_id'];
|
|
break;
|
|
}
|
|
try {
|
|
$list = $WarehousingGoodsModel->getSelect($where, '', '', 'surplus_num,warehouse_price', 'add_time asc');
|
|
if ($list) {
|
|
$priceTotal = 0; //总进价
|
|
$numTotal = 0; //总数量
|
|
foreach ($list as $val) {
|
|
$priceTotal += $val['surplus_num'] * $val['warehouse_price'];
|
|
$numTotal += $val['surplus_num'];
|
|
}
|
|
$cost_price = round(($priceTotal / $numTotal), 2);
|
|
if ($cost_price > 0) {
|
|
return callBack(statusCode()['success'], "计算成功", ['cost_price' => $cost_price]);
|
|
} else {
|
|
return callBack(statusCode()['error'], "该商品已售完");
|
|
}
|
|
} else {
|
|
return callBack(statusCode()['error'], "该商品已售完");
|
|
}
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], "该商品已售完");
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 修改进价价验证
|
|
* @param $parameter
|
|
* [
|
|
* user_type 1 商户 2门店
|
|
* merchant_id
|
|
* store_id
|
|
* goods=>[
|
|
* goods_id 商品id
|
|
* sku_id 规格id
|
|
* purchase_price 进价
|
|
* goods_class_id 分类id
|
|
* attribute_state 1常规 2规格
|
|
* pricing_method 1不称重 2称重
|
|
* type 1入库 2退货出库 3调价单修改
|
|
* time 添加时间
|
|
* ]
|
|
* @return array
|
|
* [
|
|
* status
|
|
* message
|
|
* ]
|
|
*/
|
|
public function modifyCostPriceVerify($parameter)
|
|
{
|
|
if (!in_array($parameter['user_type'], [1, 2])) {
|
|
return callBack(statusCode()['error'], "未知请求源");
|
|
}
|
|
if (empty($parameter['merchant_id']) || ($parameter['user_type'] == 2 && empty($parameter['store_id']))) {
|
|
return callBack(statusCode()['error'], "缺少必要参数");
|
|
}
|
|
if (empty($parameter['goods']) || empty($parameter['goods']['goods_id'])) {
|
|
return callBack(statusCode()['error'], "商品信息不能为空");
|
|
}
|
|
return callBack(statusCode()['success'], "验证成功");
|
|
}
|
|
} |