文件
mashangyoujiu/Application/Common/Business/SaleGoods.class.php

1161 行
44 KiB
PHP
可执行文件

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

<?php
namespace Common\Business;
use Common\Model\ImageGalleryModel;
use Common\Model\PurchaseGoodsModel;
use Common\Model\RetailGoodsModel;
use Common\Model\RetailMgoodsModel;
use Common\Model\RetailSkuGoodsModel;
use Common\Model\SaleMGoodsModel;
use Common\Model\SkuMGoodsModel;
use Common\Model\SPurchaseGoodsModel;
use Common\Model\SSaleMGoodsModel;
use Common\Model\SStockOutGoodsModel;
use Common\Model\StockOutGoodsModel;
use Common\Model\SWarehousingGoodsModel;
use Common\Model\WarehousingGoodsModel;
//[1.9.2]
/**
* 供给仓库商品类
* Class SaleGoods
* [
* 供给仓的商品状况 warehouseGoods
* 根据商品id获取商品列表(用于优惠券详情)appointGoodsList
* 依据分类id查询商品信息 basisClassIdGetGoods
* 门店指定单品时的商品信息 getGoodsList
* 出库单的扫码查询 warehouseScanCodeGoods
* 出库单的单品查询 warehouseSearchGoods
* 采购的扫码查询 purchaseScanCodeGoods
* 采购的单品查询 purchaseSearchGoods
* 报损的扫码查询 lossScanCodeGoods
* 报损的单品查询 lossSearchGoods
* 盘点扫描条码查询 InventoryScanCodeGoods
* 盘点的单品查询 InventorySearchGoods
* 其他入库的单品查询 otherGoodsList
* 扫描商户门店条码查询条件 codeGoodsTerm
* 查询商户门店单品的条件 searchGoodsTerm
* ]
* @package Common\Business
*/
class SaleGoods
{
/**
* 供给仓的商品状况
* @param $param
* [
* user_type 3商户的商品 4门店的商品
* merchant_id
* store_id
* person1 一级分类
* person2 二级分类
* person3 三级分类
* type 1名称货号条码 2串号
* search_info 搜索的信息(名称货号条码)
* status 0上架 1下架 2删除
* stock_status 1预警 2超量 3售罄
* showPrice 1可以查看金额 2不可以查看金额
* identity 身份1商户 2门店
* page
* limit
* ]
* @return mixed
*/
public function warehouseGoods($param)
{
$where = $this->searchGoodsTerm($param); //查询条件
if ($param['type'] == 2 && !empty($param['search_info'])) {
$SerialClass = new SerialNumberGoods();
$result = $SerialClass->basisSerialGetGoods([
'user_type' => $param['user_type'],
'serial_number' => trim($param['search_info'], ' '),
'store_id' => $param['store_id'] ? $param['store_id'] : 0,
'merchant_id' => $param['merchant_id']
]);
if ($result['status'] != 1) {
return callBack(statusCode()['success'], '查询成功', [
'list' => [],
'count' => 0
]);
}
$where['goods_id'] = ['in',array_column($result['data'],'goods_id')];
if (!empty($result['data']['sku_id'])) {
$where['sku_id'] = $result['data']['sku_id'];
}
}
if (!empty($param['stock_status'])) {
switch ($param['stock_status']) {
case 1:
$where['_string'] = "goods_num <= less_num";
break;
case 2:
$where['_string'] = "goods_num >= more_num";
break;
case 3:
$where['_string'] = "goods_num <= 0";
break;
}
}
switch ($param['user_type']) {
case 3:
$SaleMGoodsModel = new SaleMGoodsModel();
$PurchaseGoodsModel = new PurchaseGoodsModel();
break;
case 4:
$SaleMGoodsModel = new SSaleMGoodsModel();
$PurchaseGoodsModel = new SPurchaseGoodsModel();
break;
}
$list = $SaleMGoodsModel->getSelect($where, $param['page'], $param['limit'], "*", "goods_num asc");
if (!empty($list)) {
$count = $SaleMGoodsModel->getCount($where);
foreach ($list as $key => &$val) {
$val['index'] = $key + 1;
$val['more_num'] = round($val['more_num'], 3);
$val['less_num'] = round($val['less_num'], 3);
$val['goods_num'] = round($val['goods_num'], 3);
$val['sku_num'] = round($val['sku_num'], 3);
if ($val['attribute_state'] == 2) {
$val['goods_number'] = $val['sku_goods_number'];
$val['goods_code'] = $val['sku_code'];
}
$map = [
'merchant_id' => $param['merchant_id'],
'goods_id' => $val['goods_id'],
'surplus_num' => ['gt', 0]
];
if ($val['attribute_state'] == 2) {
$map['sku_id'] = $val['sku_id'];
}
$purchaseGoodsList = $PurchaseGoodsModel->getSelect($map, '', '', 'surplus_num,purchase_price');
$actual_num = 0; //采购库总数量
$amount_total = 0; //采购库总金额
if (!empty($purchaseGoodsList)) {
foreach ($purchaseGoodsList as $ke => &$va) {
$actual_num += $va['surplus_num'];
$amount_total += ($va['surplus_num'] * $va['purchase_price']);
}
}
$val['actual_num'] = round($val['goods_num'] + $actual_num, 3);
if ($param['user_type'] == 4 && $param['showPrice'] == 2 && $param['identity'] == 2) {
$val['cost_price'] = '***';
$val['amount_total'] = '***';
} else {
$val['cost_price'] = round($val['cost_price'], 2);
$val['amount_total'] = round(($val['cost_price'] * $val['goods_num']) + $amount_total, 2);
}
if ($val['goods_num'] <= $val['less_num']) {
$val['warning_name'] = "缺货";
} else if ($val['goods_num'] >= $val['more_num']) {
$val['warning_name'] = "超量";
} else {
$val['warning_name'] = "正常";
}
switch ($val['status']) {
case 0:
$val['status_name'] = "上架";
break;
case 1:
$val['status_name'] = "下架";
break;
}
}
}
return callBack(statusCode()['success'], '查询成功', [
'list' => $list ? $list : [],
'count' => $count ? $count : 0
]);
}
/**
* 根据商品id获取商品列表(用于优惠券详情)
* @param goods_id_str string
* @return mixed
*/
public
function appointGoodsList($goods_id_str)
{
$goods_id_arr = explode(',', $goods_id_str);
$arr = [];
foreach ($goods_id_arr as $key => $val) {
if (strpos($val, '_') !== false) {
$id_arr = explode('_', $val);
$arr[$key]['goods_id'] = $id_arr[0];
$arr[$key]['sku_id'] = $id_arr[1];
} else {
$arr[$key]['goods_id'] = $val;
}
}
if (!empty($arr)) {
try {
$SaleModel = new SSaleMGoodsModel();
$fields = [
'id',
'goods_id',
'sku_id',
'goods_name',
'sku_name',
'goods_number',
'sku_goods_number',
'goods_code',
'sku_code',
'attribute_state',
'goods_num',
];
foreach ($arr as $key => &$value) {
$where['goods_id'] = $value['goods_id'];
if (!empty($value['sku_id'])) {
$where['sku_id'] = $value['sku_id'];
}
$value = $SaleModel->basisOrderFind($where, $fields, 'id desc');
if (!empty($value) && !empty($value['sku_id'])) {
$value['goods_number'] = $value['sku_goods_number'];
$value['goods_code'] = $value['sku_code'];
}
$value['index'] = $key + 1;
unset($where);
}
} catch (\Exception $e) {
return [];
}
}
return $arr;
}
/**
* 依据分类id查询商品信息
* @param $param
* [
* operator_type 1后台端 2收银端 3助手端
* user_type 3商户 4门店
* merchant_id
* store_id
* id 分类id
* class_type 1一级分类 2二级分类 3三级分类
* search_info 搜索的信息(名称货号条码)
* exists_id_arr 已经选择了的商品id集合
* status 0上架 1下架 2删除
* page
* limit
* ]
* @return mixed
*/
public
function basisClassIdGetGoods($param)
{
if (empty($param['id']) || empty($param['class_type'])) {
return callBack(statusCode()['error'], "缺少分类参数");
}
switch ($param['class_type']) {
case 1:
$param['person1'] = $param['id'];
break;
case 2:
$param['person2'] = $param['id'];
break;
case 3:
$param['person3'] = $param['id'];
break;
}
$result = $this->getGoodsList($param);
return $result;
}
/**
* 门店指定单品时的商品信息
* @param $param
* operator_type 1后台端 2收银端 3助手端
* user_type 3商户 4门店
* merchant_id
* store_id
* person1 一级分类
* person2 二级分类
* person3 三级分类
* search_info 搜索的信息(名称货号条码)
* exists_id_arr 已经选择了的商品id集合
* status 0上架 1下架 2删除
* page
* limit
* @return mixed
*/
public
function getGoodsList($param)
{
$VerifyClass = new VerifyParam();
$verifyResult = $VerifyClass->identityVerify($param);
if ($verifyResult['status'] != 1) {
return $verifyResult;
}
$where = $this->searchGoodsTerm($param);
$fields = [
'id',
'goods_id',
'sku_id',
'goods_name',
'sku_name',
'goods_number',
'sku_goods_number',
'goods_code',
'sku_code',
'attribute_state',
'goods_num',
];
$SaleModel = new SSaleMGoodsModel();
$list = $SaleModel->getSelect($where, $param['page'], $param['limit'], $fields, 'id desc');
if (!empty($list)) {
$count = $SaleModel->getCount($where);
$GoodsModel = new RetailGoodsModel();
$SkuGoodsModel = new RetailSkuGoodsModel();
$ImageGalleryModel = new ImageGalleryModel();
foreach ($list as $key => &$val) {
$val['index'] = $key + 1;
if ($val['attribute_state'] == 2) {
$val['goods_number'] = $val['sku_goods_number'];
$val['goods_code'] = $val['sku_code'];
$map = [
'id' => $val['sku_id']
];
$img_id = $SkuGoodsModel->getFindField($map, 'goods_img_id');
} else {
$map = [
'id' => $val['goods_id']
];
$img_id = $GoodsModel->getFindField($map, 'goods_img_id');
}
if (!empty($img_id)) {
$val['image_url'] = $ImageGalleryModel->getImagePath($img_id);
} else {
$val['image_url'] = '';
}
}
}
return callBack(statusCode()['success'], "查询成功", [
'count' => $count ? $count : 0,
'list' => $list ? $list : []
]);
}
/**
*出库单的扫码查询
* @param $param
* [
* operator_type 1后台端 2收银端 3助手端
* user_type 3商户 4门店
* merchant_id
* store_id
* search_info 搜索的信息(条码)
* type 向商户退货出库
* ]
* @return mixed
*/
public function warehouseScanCodeGoods($param)
{
$VerifyClass = new VerifyParam();
$verifyResult = $VerifyClass->identityVerify($param); //参数验证
if ($verifyResult['status'] != 1) {
return $verifyResult;
}
if (empty($param['search_info'])) {
return callBack(statusCode()['error'], "请将摄像头对准条码扫描");
}
$where = $this->codeGoodsTerm($param); //查询条件
try {
switch ($param['user_type']) {
case 3:
//商户
$SaleMGoodsModel = new SaleMGoodsModel();
$StockOutGoodsModel = new StockOutGoodsModel();
break;
case 4:
//门店
$SaleMGoodsModel = new SSaleMGoodsModel();
$StockOutGoodsModel = new SStockOutGoodsModel();
if ($param['type'] == 1) {
// 退货至商户出库
$goods_id_arr = M('retail_store_warehouse_goods')
->where(array('merchant_id' => $param['merchant_id'], 'store_id' => $param['store_id'], 'type' => array('in', '4,6')))
->group("goods_id")
->getField("goods_id", true);
if (!empty($goods_id_arr)) {
$where['goods_id'] = array('in', $goods_id_arr);
} else {
return callBack(statusCode()['error'], "未从商户调拨", []);
}
}
break;
}
$info = $SaleMGoodsModel->getFind($where);
if (!empty($info)) {
$info['output_num'] = 1; //默认出库数量
$info['goods_num'] = round($info['goods_num'], 3);
if ($info['goods_num'] < 0) {
return callBack(statusCode()['error'], "暂无库存");
}
if ($info['goods_num'] < 1) {
$info['output_num'] = $info['goods_num'];
}
$info['cost_price'] = round($info['cost_price'], 2);
$map = [];
$map['merchant_id'] = $param['merchant_id'];
$map['goods_id'] = $info['goods_id'];
if ($param['user_type'] == 4) {
//门店
$map['store_id'] = $param['store_id'];
}
if ($info['attribute_state'] == 2) {
$map['sku_id'] = $info['sku_id'];
}
$stockInfo = $StockOutGoodsModel->getFind($map, "id desc");
if (!empty($stockInfo)) {
$info['stock_price'] = round($stockInfo['stock_price'], 2);
} else {
$info['stock_price'] = $info['cost_price'];
}
return callBack(statusCode()['success'], "查询成功", $info);
} else {
return callBack(statusCode()['error'], "未找到该商品");
}
} catch (\Exception $e) {
return callBack(statusCode()['error'], "未找到该商品");
}
}
/**
* 出库单的单品查询
* @param $param
* [
* operator_type 1后台端 2收银端 3助手端
* user_type 3商户 4门店
* merchant_id
* store_id
* type
* industry_id 调拨目标门店的行业id
* person1 一级分类
* person2 二级分类
* person3 三级分类
* search_info 搜索的信息(名称货号条码)
* exists_id_arr 已经选择了的商品id集合
* page
* limit
* ]
* @return mixed
*/
public function warehouseSearchGoods($param)
{
$where = $this->searchGoodsTerm($param); //查询条件
try {
switch ($param['user_type']) {
case 3:
//商户
$SaleMGoodsModel = new SaleMGoodsModel();
$StockOutGoodsModel = new StockOutGoodsModel();
$WarehouseGoodsModel = new WarehousingGoodsModel();
break;
case 4:
//门店
$SaleMGoodsModel = new SSaleMGoodsModel();
$StockOutGoodsModel = new SStockOutGoodsModel();
$WarehouseGoodsModel = new SWarehousingGoodsModel();
if ($param['type'] == 1) {
// 退货至商户出库
$goods_id_arr = M('retail_store_warehouse_goods')
->where(array('merchant_id' => $param['merchant_id'], 'store_id' => $param['store_id'], 'type' => array('in', '4,6')))
->group("goods_id")
->getField("goods_id", true);
if (!empty($goods_id_arr)) {
$where['goods_id'] = array('in', $goods_id_arr);
} else {
return callBack(statusCode()['error'], "查询成功", [
'list' => [],
'count' => 0
]);
}
}
break;
}
$list = $SaleMGoodsModel->getSelect($where, $param['page'], $param['limit'], '', "id desc");
if (!empty($list)) {
if ($param['operator_type'] == 1) {
//后台端
$count = $SaleMGoodsModel->getCount($where);
}
foreach ($list as $key => &$value) {
$value['index'] = $key + 1;
$value['output_num'] = "";
$value['goods_num'] = round($value['goods_num'], 3);
$value['cost_price'] = round($value['cost_price'], 2);
$map = [
'merchant_id' => $param['merchant_id'],
'goods_id' => $value['goods_id']
];
if ($value['attribute_state'] == 2) {
$map['sku_id'] = $value['sku_id'];
}
switch ($param['user_type']) {
case 3:
if ($param['type'] == 4) {
//向供货商退货出库
$map['type'] = 4;
} else {
$map['type'] = array('neq', 4);
}
break;
case 4:
if ($param['type'] == 9) {
//向供货商退货出库
$map['type'] = 9;
} else {
$map['type'] = array('neq', 9);
}
$map['store_id'] = $param['store_id'];
break;
}
$stockInfo = $StockOutGoodsModel->getFind($map, "id desc");
if (!empty($stockInfo)) {
$value['stock_price'] = round($stockInfo['stock_price'], 2);
} else {
$value['stock_price'] = $value['cost_price'];
}
unset($map['type']);
$map['surplus_num'] = ['gt', 0];
//先进先出原则获取生成日期与保质期
$wareInfo = $WarehouseGoodsModel->basisOrderFind($map, 'build_date,quality_guarantee_period', 'id asc');
$value['build_date'] = $wareInfo['build_date'] ? date('Y-m-d', $wareInfo['build_date']) : '';
$value['quality_guarantee_period'] = $wareInfo['quality_guarantee_period'] ? $wareInfo['quality_guarantee_period'] : '';
unset($map);
unset($stockInfo);
unset($wareInfo);
}
}
return callBack(statusCode()['success'], "查询成功", [
'list' => $list ? $list : [],
'count' => $count ? $count : 0
]);
} catch (\Exception $e) {
return callBack(statusCode()['error'], "查询失败");
}
}
/**
* 采购的扫码查询
* @param $param
* [
* operator_type 1后台端 2收银端 3助手端
* user_type 3商户 4门店
* merchant_id
* store_id
* search_info 搜索的信息(条码)
* ]
* @return mixed
*/
public
function purchaseScanCodeGoods($param)
{
$VerifyClass = new VerifyParam();
$verifyResult = $VerifyClass->identityVerify($param); //参数验证
if ($verifyResult['status'] != 1) {
return $verifyResult;
}
if (empty($param['search_info'])) {
return callBack(statusCode()['error'], "请将摄像头对准条码扫描");
}
$where = $this->codeGoodsTerm($param); //查询条件
try {
switch ($param['user_type']) {
case 3:
//商户
$GoodsModel = new SaleMGoodsModel();
break;
case 4:
//门店
$GoodsModel = new SSaleMGoodsModel();
break;
}
$info = $GoodsModel->getFind($where);
if (!empty($info)) {
switch ($param['user_type']) {
case 3:
//商户
$GoodsModel = new RetailMgoodsModel();
$SkuGoodsModel = new SkuMGoodsModel();
$PurchaseGoodsModel = new PurchaseGoodsModel();
break;
case 4:
//门店
$GoodsModel = new RetailGoodsModel();
$SkuGoodsModel = new RetailSkuGoodsModel();
$PurchaseGoodsModel = new SPurchaseGoodsModel();
break;
}
$info['purchase_num'] = 1; //默认进货数量
$info['goods_num'] = round($info['goods_num'], 3);
$info['build_date'] = ""; //默认生产日期
$info['quality_guarantee_period'] = ""; //默认保质期
if ($info['attribute_state'] == 2) {
//规格
switch ($param['user_type']) {
case 3:
$goods = $SkuGoodsModel->field("retail_price,online_price")->where([
'mgoods_id' => $info['goods_id'],
'id' => $info['sku_id']
])->find();
break;
case 4:
$goods = $SkuGoodsModel->field("retail_price,online_price")->where([
'goods_id' => $info['goods_id'],
'id' => $info['sku_id']
])->find();
break;
}
} else {
//无规格
$goods = $GoodsModel->getFind(['id' => $info['goods_id']], "retail_price,online_price");
}
$info['retail_price'] = $goods['retail_price'] ? round($goods['retail_price'], 2) : ''; //线下价
$info['online_price'] = $goods['online_price'] ? round($goods['online_price'], 2) : ''; //线上价
$map['goods_id'] = $info['goods_id'];
if ($info['attribute_state'] == 2) {
$map['sku_id'] = $info['sku_id'];
}
if ($param['user_type'] == 4) {
//门店
$map['store_id'] = $param['store_id'];
}
$purchase_info = $PurchaseGoodsModel->getFind($map, "id desc");
if (!empty($purchase_info)) {
$info['purchase_price'] = round($purchase_info['purchase_price'], 2); //最近一次的采购价
} else {
$info['purchase_price'] = round($info['cost_price'], 2);
}
return callBack(statusCode()['success'], "查询成功", $info);
} else {
return callBack(statusCode()['error'], "未找到该商品");
}
} catch (\Exception $e) {
return callBack(statusCode()['error'], "未找到该商品");
}
}
/**
* 采购的单品查询
* @param $param
* [
* operator_type 1后台端 2收银端 3助手端
* user_type 3商户 4门店
* merchant_id
* store_id
* modify_price_state 采购可以修改店内价与商城价 1关闭 2开启
* person1 一级分类
* person2 二级分类
* person3 三级分类
* search_info 搜索的信息(名称货号条码)
* exists_id_arr 已经选择了的商品id集合
* page
* limit
* ]
* @return mixed
*/
public
function purchaseSearchGoods($param)
{
$VerifyClass = new VerifyParam();
$verifyResult = $VerifyClass->identityVerify($param); //参数验证
if ($verifyResult['status'] != 1) {
return $verifyResult;
}
$where = $this->searchGoodsTerm($param); //查询条件
try {
switch ($param['user_type']) {
case 3:
//商户
$SaleGoodsModel = new SaleMGoodsModel();
break;
case 4:
//门店
$SaleGoodsModel = new SSaleMGoodsModel();
break;
}
$list = $SaleGoodsModel->getSelect($where, $param['page'], $param['limit'], "*", "goods_num asc");
if (!empty($list)) {
if ($param['operator_type'] == 1) {
//后台端
$count = $SaleGoodsModel->getCount($where);
}
switch ($param['user_type']) {
case 3:
$GoodsModel = new RetailMgoodsModel();
$SkuGoodsModel = new SkuMGoodsModel();
$PurchaseGoodsModel = new PurchaseGoodsModel();
break;
case 4:
$GoodsModel = new RetailGoodsModel();
$SkuGoodsModel = new RetailSkuGoodsModel();
$PurchaseGoodsModel = new SPurchaseGoodsModel();
break;
}
foreach ($list as $key => &$value) {
$value['index'] = $key + 1;
$value['purchase_num'] = ""; //默认进货数量
$value['goods_num'] = round($value['goods_num'], 3);
$value['build_date'] = ""; //默认生产日期
$value['quality_guarantee_period'] = ""; //默认保质期
//最近一次的采购价
$map = [
'goods_id' => $value['goods_id']
];
if ($value['attribute_state'] == 2) {
$map['sku_id'] = $value['sku_id'];
}
if ($param['user_type'] == 4) {
//门店
$map['store_id'] = $param['store_id'];
}
$purchase_info = $PurchaseGoodsModel->getFind($map, "id desc");
if (!empty($purchase_info)) {
$value['purchase_price'] = round($purchase_info['purchase_price'], 2);
} else {
$value['purchase_price'] = round($value['cost_price'], 2);
}
//开启修改售价
if ($param['modify_price_state'] == 2) {
if ($value['attribute_state'] == 2) {
//规格
switch ($param['user_type']) {
case 3:
$goods = $SkuGoodsModel->getFind([
'mgoods_id' => $value['goods_id'],
'id' => $value['sku_id']
], 'retail_price,online_price');
break;
case 4:
$goods = $SkuGoodsModel->getFind([
'goods_id' => $value['goods_id'],
'id' => $value['sku_id']
], 'retail_price,online_price');
break;
}
} else {
//无规格
$goods = $GoodsModel->getFind(['id' => $value['goods_id']], "retail_price,online_price");
}
$value['retail_price'] = $goods['retail_price'] ? round($goods['retail_price'], 2) : ''; //线下价
$value['online_price'] = $goods['online_price'] ? round($goods['online_price'], 2) : ''; //线上价
unset($goods);
}
unset($map);
}
}
return callBack(statusCode()['success'], "查询成功", [
'list' => $list ? $list : [],
'count' => $count ? $count : 0
]);
} catch (\Exception $e) {
return callBack(statusCode()['error'], "查询失败");
}
}
/**
* 报损的扫码查询
* @param $param
* [
* operator_type 1后台端 2收银端 3助手端
* user_type 3商户 4门店
* merchant_id
* store_id
* search_info 搜索的信息(条码)
* ]
* @return mixed
*/
public
function lossScanCodeGoods($param)
{
$VerifyClass = new VerifyParam();
$verifyResult = $VerifyClass->identityVerify($param); //参数验证
if ($verifyResult['status'] != 1) {
return $verifyResult;
}
if (empty($param['search_info'])) {
return callBack(statusCode()['error'], "请将摄像头对准条码扫描");
}
$where = $this->codeGoodsTerm($param);
try {
switch ($param['user_type']) {
case 3:
//商户
$GoodsModel = new SaleMGoodsModel();
break;
case 4:
//门店
$GoodsModel = new SSaleMGoodsModel();
break;
}
$info = $GoodsModel->getFind($where);
if (!empty($info)) {
if (empty($info['goods_num']) || $info['goods_num'] <= 0) {
return callBack(statusCode()['error'], "该商品暂无库存无法报损");
}
$info['loss_num'] = 1; //默认的报损数量
if ($info['goods_num'] < 1) {
$info['loss_num'] = $info['goods_num']; //默认的报损数量
}
$info['goods_num'] = round($info['goods_num'], 3);
$info['cost_price'] = round($info['cost_price'], 2);
return callBack(statusCode()['success'], "查询成功", $info);
} else {
return callBack(statusCode()['error'], "未找到该商品");
}
} catch (\Exception $e) {
return callBack(statusCode()['error'], "未找到该商品");
}
}
/**
* 报损的单品查询
* @param $param
* [
* operator_type 1后台端 2收银端 3助手端
* user_type 3商户 4门店
* merchant_id
* store_id
* person1 一级分类
* person2 二级分类
* person3 三级分类
* search_info 搜索的信息(名称货号条码)
* exists_id_arr 已经选择了的商品id集合
* page
* limit
* ]
* @return mixed
*/
public
function lossSearchGoods($param)
{
$VerifyClass = new VerifyParam();
$verifyResult = $VerifyClass->identityVerify($param); //参数验证
if ($verifyResult['status'] != 1) {
return $verifyResult;
}
$where = $this->searchGoodsTerm($param);
try {
switch ($param['user_type']) {
case 3:
//商户
$GoodsModel = new SaleMGoodsModel();
break;
case 4:
//门店
$GoodsModel = new SSaleMGoodsModel();
break;
}
$list = $GoodsModel->getSelect($where, $param['page'], $param['limit'], '*', "id desc");
if (!empty($list)) {
if ($param['operator_type'] == 1) {
$count = $GoodsModel->getCount($where);
}
foreach ($list as $key => &$value) {
$value['index'] = $key + 1;
$value['loss_num'] = ""; //初始化报损数量
$value['goods_num'] = round($value['goods_num'], 3);
$value['cost_price'] = round($value['cost_price'], 2);
$value['store_id'] = $value['store_id'] ? $value['store_id'] : null;
}
}
return callBack(statusCode()['success'], "查询成功", [
'list' => $list ? $list : [],
'count' => $count ? $count : 0
]);
} catch (\Exception $e) {
return callBack(statusCode()['error'], "查询失败");
}
}
/**
* 盘点扫描条码查询
* @param $param
* [
* operator_type 1后台端 2收银端 3助手端
* user_type 3商户 4门店
* merchant_id
* store_id
* supplier_type 1普通供货商 2寄售供货商 (针对门店)
* search_info 搜索的信息(名称货号条码)
* ]
* @return mixed
*/
public
function InventoryScanCodeGoods($param)
{
$VerifyClass = new VerifyParam();
$verifyResult = $VerifyClass->identityVerify($param); //参数验证
if ($verifyResult['status'] != 1) {
return $verifyResult;
}
if (empty($param['search_info'])) {
return callBack(statusCode()['error'], "请将摄像头对准条码扫描");
}
$where = $this->codeGoodsTerm($param); //查询条件
try {
switch ($param['user_type']) {
case 3:
//商户
$GoodsModel = new SaleMGoodsModel();
break;
case 4:
//门店
$GoodsModel = new SSaleMGoodsModel();
break;
}
$info = $GoodsModel->getFind($where);
if (!empty($info)) {
if (empty($info['cost_price']) || $info['cost_price'] <= 0) {
return callBack(statusCode()['error'], "该商品还未进行任何入库无法盘点");
}
$info['inventory_num'] = 1; //默认的盘点数量
$info['goods_num'] = round($info['goods_num'], 3);
$info['cost_price'] = round($info['cost_price'], 2);
if ($param['user_type'] == 4 && $param['supplier_type'] == 2) {
//门店的寄售供货商的采购批次号
$info['pur_id'] = $GoodsModel->getPurchaseId([
'goods_id' => $info['goods_id'],
'sku_id' => $info['sku_id'],
'store_id' => $param['store_id'],
]);
$info['purchase_order_id'] = ''; //默认选中的采购单
}
return callBack(statusCode()['success'], "查询成功", $info);
} else {
return callBack(statusCode()['error'], "未找到该商品");
}
} catch (\Exception $e) {
return callBack(statusCode()['error'], "未找到该商品");
}
}
/**
* 盘点的单品查询
* @param $param
* [
* operator_type 1后台端 2收银端 3助手端
* user_type 3商户 4门店
* merchant_id
* store_id
* person1 一级分类
* person2 二级分类
* person3 三级分类
* search_info 搜索的信息(名称货号条码)
* exists_id_arr 已经选择了的商品id集合
* page
* limit
* ]
* @return mixed
* [
* data=>[
* list
* count
* ]
* ]
*/
public function InventorySearchGoods($param)
{
$VerifyClass = new VerifyParam();
$verifyResult = $VerifyClass->identityVerify($param); //参数验证
if ($verifyResult['status'] != 1) {
return $verifyResult;
}
$where = $this->searchGoodsTerm($param); //搜索条件
$where['cost_price'] = ['gt', 0];
$page = $param['page'] ? $param['page'] : 1;
$limit = $param['limit'] ? $param['limit'] : 10;
try {
switch ($param['user_type']) {
case 3:
//商户
$GoodsModel = new SaleMGoodsModel();
break;
case 4:
//门店
$GoodsModel = new SSaleMGoodsModel();
break;
}
$list = $GoodsModel->getSelect($where, $page, $limit, "", "id desc");
if (!empty($list)) {
if ($param['operator_type'] == 1) {
$count = $GoodsModel->getCount($where);
}
if ($param['user_type'] == 4) {
$StoreClass = new Store();
$supplier_type = $StoreClass->getSupplierType($param['store_id']); //门店供货商类型
}
foreach ($list as $key => &$value) {
$value['index'] = ($key + 1);
$value['inventory_num'] = ""; //默认的盘点数量
$value['goods_num'] = round($value['goods_num'], 3);
$value['cost_price'] = round($value['cost_price'], 2);
$value['checked'] = false; //默认未选择
if ($supplier_type == 2 && $param['user_type'] == 4) {
//寄售供货商的采购批次号
$value['pur_id'] = $GoodsModel->getPurchaseId([
'goods_id' => $value['goods_id'],
'sku_id' => $value['sku_id'],
'store_id' => $param['store_id'],
]);
$value['purchase_order_id'] = ''; //默认选中的采购单
}
}
}
return callBack(statusCode()['success'], "查询成功", [
'list' => $list ? $list : [],
'count' => $count ? $count : 0
]);
} catch (\Exception $e) {
return callBack(statusCode()['error'], "查询失败");
}
}
/**
* 其他入库的单品查询
* @param $param
* [
* operator_type 1后台端 2收银端 3助手端
* user_type 3商户的商品 4门店的商品
* merchant_id
* store_id
* person1 一级分类
* person2 二级分类
* person3 三级分类
* search_info 搜索的信息(名称货号条码)
* exists_id_arr 已经选择了的商品id集合
* page
* limit
* ]
* @return mixed
*/
public
function otherGoodsList($param)
{
$VerifyClass = new VerifyParam();
$verifyResult = $VerifyClass->identityVerify($param); //参数验证
if ($verifyResult['status'] != 1) {
return $verifyResult;
}
$where = $this->searchGoodsTerm($param); //查询条件
switch ($param['user_type']) {
case 3:
//商户
$SaleMGoodsModel = new SaleMGoodsModel();
break;
case 4:
//门店
$SaleMGoodsModel = new SSaleMGoodsModel();
break;
}
$list = $SaleMGoodsModel->getSelect($where, $param['page'], $param['limit'], '*', "goods_num asc");
if (!empty($list)) {
$count = $SaleMGoodsModel->getCount($where);
foreach ($list as $key => &$value) {
$value['index'] = $key + 1;
$value['surplus_num'] = "";
$value['order_number'] = "";
$value['build_date'] = "";
$value['quality_guarantee_period'] = "";
$value['purchase_price'] = $value['cost_price'];
}
}
return callBack(statusCode()['success'], '查询成功', [
'list' => $list ? $list : [],
'count' => $count ? $count : 0
]);
}
/**
* 扫描商户门店条码查询条件
* @param $param
* [
* user_type 3商户 4门店
* merchant_id
* store_id
* supplier_type 1普通供货商 2寄售供货商 (针对门店)
* search_info 搜索的信息(条码)
* ]
* @return mixed
*/
public function codeGoodsTerm($param)
{
$where = [
'merchant_id' => $param['merchant_id'],
'status' => ['in', ['0', '1']],
'goods_code|sku_code' => $param['search_info']
];
if ($param['user_type'] == 4) {
$where['store_id'] = $param['store_id'];
}
return $where;
}
/**
* 查询商户门店单品的条件
* @param $param
* [
* user_type 3商户的商品 4门店的商品
* merchant_id
* store_id
* industry_id 调拨目标门店的行业id
* type 1名称货号条码 2串号
* person1 一级分类
* person2 二级分类
* person3 三级分类
* search_info 搜索的信息(名称货号条码)
* exists_id_arr 已经选择了的商品id集合
* status 0上架 1下架 2删除
* ]
* @return mixed
*/
public function searchGoodsTerm($param)
{
$GoodsClass = new GoodsClassify();
$where = $GoodsClass->getGoodsClassId($param, [], "goods_class_id"); //分类条件
if (!empty($param['search_info']) && $param['type'] != 2) {
$where['goods_name|sku_name|goods_code|sku_code|goods_number|sku_goods_number'] = ['like', '%' . $param['search_info'] . '%'];
}
if (isset($param['status']) && in_array($param['status'], ['0', '1', '2'])) {
$where['status'] = $param['status'];
} else {
$where['status'] = array('in', '0,1');
}
if (!empty($param['exists_id_arr'])) {
$where['id'] = ['not in', $param['exists_id_arr']]; //排除已经存在的id
}
//调拨目标门店的行业id
if (!empty($param['industry_id']) && empty($where['goods_class_id'])) {
$classResult = $GoodsClass->basisIndustryGetClass([
'industry_id' => $param['industry_id'],
'merchant_id' => $param['merchant_id']
]);
if (!empty($classResult['data'])) {
$where['goods_class_id'] = ['in', $classResult['data']];
}
}
if ($param['user_type'] == 4) {
//门店
$where['store_id'] = $param['store_id'];
}
$where['merchant_id'] = $param['merchant_id'];
return $where;
}
}