235 lines
7.3 KiB
PHP
235 lines
7.3 KiB
PHP
<?php
|
|
/**
|
|
* ThinkShop商城系统 - 团队十年电商经验汇集巨献!
|
|
* =========================================================
|
|
* Copy right 2019-2029 上海牛之云网络科技有限公司, 保留所有权利。
|
|
* ----------------------------------------------
|
|
* 官方网址: https://www.cdcloudshop.com
|
|
|
|
* =========================================================
|
|
*/
|
|
namespace addon\stock\model\stock;
|
|
|
|
|
|
use app\model\BaseModel;
|
|
use app\model\store\Store;
|
|
|
|
/**
|
|
* 库存model
|
|
*
|
|
* @author Administrator
|
|
*
|
|
*/
|
|
class Stock extends BaseModel
|
|
{
|
|
public $document_type_list = [
|
|
'PURCHASE' => [
|
|
'name' => '采购入库单',
|
|
'type' => 'input',
|
|
'prefix' => 'CGRK',
|
|
'key' => 'PURCHASE',
|
|
],
|
|
'REFUND' => [
|
|
'name' => '退货入库单',
|
|
'type' => 'input',
|
|
'prefix' => 'THRK',
|
|
'key' => 'REFUND',
|
|
],
|
|
'OTHERRK' => [
|
|
'name' => '其他入库单',
|
|
'type' => 'input',
|
|
'prefix' => 'QTRK',
|
|
'key' => 'OTHERRK',
|
|
],
|
|
'SEAILCK' => [
|
|
'name' => '销售出库单',
|
|
'type' => 'output',
|
|
'prefix' => 'XSCK',
|
|
'key' => 'SEAILCK',
|
|
],
|
|
'OTHERCK' => [
|
|
'name' => '其他出库单',
|
|
'type' => 'output',
|
|
'prefix' => 'QTCK',
|
|
'key' => 'OTHERCK',
|
|
],
|
|
'PDD' => [
|
|
'name' => '盘点单',
|
|
'type' => 'pandian',
|
|
'prefix' => 'PDD',
|
|
'key' => 'PDD',
|
|
],
|
|
'PANYING' => [
|
|
'name' => '盘盈入库单',
|
|
'type' => 'input',
|
|
'prefix' => 'PYRK',
|
|
'key' => 'PANYING',
|
|
],
|
|
'PANKUI' => [
|
|
'name' => '盘亏出库单',
|
|
'type' => 'output',
|
|
'prefix' => 'PKCK',
|
|
'key' => 'PANKUI',
|
|
],
|
|
'ALLOTIN' => [
|
|
'name' => '调拨入库单',
|
|
'type' => 'input',
|
|
'prefix' => 'DBRK',
|
|
'key' => 'ALLOTIN',
|
|
],
|
|
'ALLOTPUT' => [
|
|
'name' => '调拨出库单',
|
|
'type' => 'output',
|
|
'prefix' => 'DBCK',
|
|
'key' => 'ALLOTPUT',
|
|
],
|
|
];
|
|
|
|
/**
|
|
* 设置库存
|
|
* @param $params
|
|
*/
|
|
public function changeStock($params){
|
|
$user_info = $params['user_info'] ?? [];
|
|
$site_id = $params['site_id']?? 1;
|
|
|
|
$store_id = $params['store_id'] ?? 0;
|
|
if($store_id == 0){
|
|
$store_model = new Store();
|
|
$store_info = $store_model->getDefaultStore()['data'] ?? [];
|
|
$store_id = $store_info['store_id'];
|
|
}
|
|
$key = $params['key'];
|
|
$remark = $params['remark'] ?? '';
|
|
$is_out_stock = $params['is_out_stock'] ?? 0;
|
|
$time = $params['time'] ?? time();
|
|
$document_model = new Document();
|
|
if(!empty($params['goods_sku_list'])){
|
|
foreach($params['goods_sku_list'] as $k => $v){
|
|
$params['goods_sku_list'][$k] = [
|
|
'goods_sku_id' => $v['sku_id'],
|
|
'goods_id' => $v['goods_id'] ?? 0,
|
|
'goods_num' => $v['num'] ?? $v['stock'],
|
|
'goods_price' => $v['price'] ?? 0
|
|
];
|
|
}
|
|
}else{
|
|
$sku_id = $params['sku_id'] ?? 0;
|
|
$goods_id = $params['goods_id'] ?? 0;
|
|
$goods_num = $params['num'] ?? $params['stock'];
|
|
$goods_price = $params['price'] ?? 0;
|
|
}
|
|
$goods_sku_list = $params['goods_sku_list'] ?? array(
|
|
[
|
|
'goods_sku_id' => $sku_id,
|
|
'goods_id' => $goods_id,
|
|
'goods_num' => $goods_num,
|
|
'goods_price' => $goods_price
|
|
]
|
|
);
|
|
|
|
$document_params = array(
|
|
'store_id' => $store_id,
|
|
'site_id' => $site_id,
|
|
'remark' => $remark,
|
|
'goods_sku_list' => $goods_sku_list,
|
|
'user_info' => $user_info,
|
|
'time' => $time,
|
|
'is_out_stock' => $is_out_stock
|
|
);
|
|
switch($key){
|
|
case 'PURCHASE'://采购入库单
|
|
$result = $document_model->addPurchase($document_params);
|
|
break;
|
|
case 'REFUND'://退货入库单
|
|
$result = $document_model->addRefundInput($document_params);
|
|
break;
|
|
case 'OTHERRK'://其他入库单
|
|
$result = $document_model->addOtherInput($document_params);
|
|
break;
|
|
case 'SEAILCK'://销售出库单
|
|
$result = $document_model->addSell($document_params);
|
|
break;
|
|
case 'OTHERCK'://其他出库单
|
|
$result = $document_model->addOtherOutput($document_params);
|
|
break;
|
|
case 'PANYING'://盘盈入库单
|
|
$result = $document_model->addDocument($document_params);
|
|
break;
|
|
case 'PANKUI'://盘亏出库单
|
|
$result = $document_model->addDocument($document_params);
|
|
break;
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* 设置商品库存(比对差值,得出)
|
|
* @param $params
|
|
* @return array
|
|
*/
|
|
public function setGoodsStock($params){
|
|
|
|
$site_id = $params['site_id'];
|
|
$remark = $params['remark'] ?? '';
|
|
$store_id = $params['store_id'];
|
|
|
|
$goods_sku_list = $params['goods_sku_list'] ?? [];
|
|
|
|
//todo 这儿可以查询商品信息类型 来定义可能只有实物商品才需要出入库记录
|
|
if(!empty($goods_sku_list)){
|
|
foreach($goods_sku_list as $k => $v){
|
|
$sku_list[] = array(
|
|
'goods_sku_id' => $v['sku_id'],
|
|
'goods_num' => $v['stock'],
|
|
);
|
|
}
|
|
}else{
|
|
$goods_id = $params['goods_id'] ?? 0;//只要传递就必然是与sku_id匹配的
|
|
$sku_id = $params['sku_id'];
|
|
$stock = $params['stock'];//设置的新库存
|
|
$sku_list = array(
|
|
[
|
|
'goods_sku_id' => $sku_id,
|
|
'goods_num' => $stock,
|
|
]
|
|
);
|
|
}
|
|
|
|
$inventory_params = array(
|
|
'site_id' => $site_id,
|
|
'store_id' => $store_id,
|
|
'sku_list' => $sku_list,
|
|
'user_info' => $params['user_info'] ?? [],
|
|
'remark' => $remark
|
|
);
|
|
$inventory_model = new Inventory();
|
|
$result = $inventory_model->addInventory($inventory_params);
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* 获取商品sku列表
|
|
* @param array $condition
|
|
* @param string $field
|
|
* @param string $order
|
|
* @param null $limit
|
|
* @return array
|
|
*/
|
|
public function getStoreGoodsSkuList($condition = [], $field = '*', $order = 'gs.create_time desc', $store_id = 0)
|
|
{
|
|
$alias = 'gs';
|
|
$join = [
|
|
[ 'goods g', 'g.goods_id = gs.goods_id', 'left' ],
|
|
[
|
|
'store_goods_sku sgs',
|
|
'sgs.sku_id = gs.sku_id and (sgs.store_id is null or sgs.store_id = ' . $store_id . ')',
|
|
'left'
|
|
]
|
|
];
|
|
$list = model('goods_sku')->getList($condition, $field, $order, $alias, $join, '');
|
|
return $this->success($list);
|
|
}
|
|
}
|