2687 行
104 KiB
PHP
可执行文件
2687 行
104 KiB
PHP
可执行文件
<?php
|
|
|
|
namespace Common\Business;
|
|
|
|
use Common\Model\InventoryGoodsSerialModel;
|
|
use Common\Model\JurisdictionUserModel;
|
|
use Common\Model\LossReportGoodsModel;
|
|
use Common\Model\LossReportOrderModel;
|
|
use Common\Model\LossReportSerialModel;
|
|
use Common\Model\PurchaseGoodsModel;
|
|
use Common\Model\PurchaseGoodsSerialModel;
|
|
use Common\Model\PurchaseWarehouseModel;
|
|
use Common\Model\RefuseWarehousingSerialModel;
|
|
use Common\Model\RetailCashierModel;
|
|
use Common\Model\RetailGoodsModel;
|
|
use Common\Model\RetailMgoodsModel;
|
|
use Common\Model\RetailSellModel;
|
|
use Common\Model\RetailSkuGoodsModel;
|
|
use Common\Model\RetreatGoodsModel;
|
|
use Common\Model\SellSerialModel;
|
|
use Common\Model\SerialRecordModel;
|
|
use Common\Model\SInventoryGoodsSerialModel;
|
|
use Common\Model\SkuMGoodsModel;
|
|
use Common\Model\SLossReportGoodsModel;
|
|
use Common\Model\SLossReportSerialModel;
|
|
use Common\Model\SPurchaseGoodsModel;
|
|
use Common\Model\SPurchaseGoodsSerialModel;
|
|
use Common\Model\SPurchaseWarehouseModel;
|
|
use Common\Model\SRetreatGoodsModel;
|
|
use Common\Model\SSaleMGoodsModel;
|
|
use Common\Model\SStockGoodsSerialModel;
|
|
use Common\Model\SStockOutGoodsModel;
|
|
use Common\Model\SStockOutOrderModel;
|
|
use Common\Model\StockGoodsSerialModel;
|
|
use Common\Model\StockOutGoodsModel;
|
|
use Common\Model\StockOutOrderModel;
|
|
use Common\Model\SWarehouseGoodsSerialModel;
|
|
use Common\Model\SWarehousingGoodsModel;
|
|
use Common\Model\WarehouseGoodsSerialModel;
|
|
use Common\Model\WarehousingGoodsModel;
|
|
|
|
//[1.9.2]
|
|
|
|
/**
|
|
* 商品串号类
|
|
* Class SerialNumberGoods
|
|
* [
|
|
* 查询出售串号是否有退款换货 serialCustomer
|
|
* 出售汇总串号列表
|
|
* 盘点验证 inventorySerialVerify
|
|
* 查询其他商品的串号是否存在该串号 serialVerify
|
|
* 串号修改 serialModify
|
|
* 采购已入库串号列表 purchaseWarehouseSerial
|
|
* 删除出售串号信息 sellSerialDelete
|
|
* 出售串号信息 sellSerialList
|
|
* 出售串号库存修改 sellSerialNumOperation
|
|
* 依据串号进行串号出库 basisNumberOperation
|
|
* 收银串号添加 cashierSerialAdd
|
|
* 出售串号添加操作 sellSerialAdd
|
|
* 依据串号查询商品信息 basisSerialGetGoods
|
|
* 查询仓库中某串号信息 searchWarehouseSerial
|
|
* 串号位置 serialPosition
|
|
* 盘点删除串号记录 inventorySerialDelete
|
|
* 盘点串号筛选 inventoryScreen
|
|
* 盘点的串号记录添加 inventorySerial
|
|
* 拒收的商品串号列表 refuseSerialList
|
|
* 门店拒收的串号信息操作 refuseSerial
|
|
* 出库串号删除操作 stockSerialDelete
|
|
* 出库串号添加操作 stockSerial
|
|
* 拒收调拨时出库方商品串号数量增加操作 recoverySerialInc
|
|
* 入库记录串号数量减少操作 warehouseSerialDec
|
|
* 入库串号操作 warehouseSerial
|
|
* 采购入库的采购串号信息操作 warehousePurchaseSerial
|
|
* 入库记录可操作的串号信息 warehouseSerialList
|
|
* 报损记录关联的串号操作 lossSerial
|
|
* 记录详情的串号列表 recordSerialList
|
|
* 采购编辑串号操作 purchaseSerialUpdate
|
|
* 采购退货串号操作 retreatSerial
|
|
* 采购管理串码信息操作 purchaseSerial
|
|
* 采购退货可退商品的串码信息 returnableSerialList
|
|
* 单个商品验证串码信息 singleGoodsVerify
|
|
* 验证串号列表信息 serialVerify
|
|
* ]
|
|
* @package Common\Business
|
|
*/
|
|
class SerialNumberGoods
|
|
{
|
|
/**
|
|
* 查询出售串号是否有退款换货
|
|
* @param $param
|
|
* [
|
|
* store_id
|
|
* outside_id
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function serialCustomer($param)
|
|
{
|
|
$SerialModel = new SellSerialModel();
|
|
$number_arr = $SerialModel->getFindField([
|
|
'store_id' => $param['store_id'],
|
|
'outside_id' => $param['outside_id']
|
|
], 'main_serial_number', true);
|
|
return callBack(statusCode()['success'], '查询成功', $number_arr);
|
|
}
|
|
|
|
|
|
/**
|
|
* 串号出售汇总
|
|
* @param $param
|
|
* [
|
|
* merchant_id
|
|
* store_id
|
|
* goods_id
|
|
* sku_id
|
|
* serial_number 串号搜索
|
|
* page
|
|
* limit
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function serialSummaryList($param)
|
|
{
|
|
$where = [
|
|
'merchant_id' => $param['merchant_id'],
|
|
'store_id' => $param['store_id'],
|
|
'goods_id' => $param['goods_id'],
|
|
'type' => 1,
|
|
'num' => ['gt', 0]
|
|
];
|
|
if (!empty($param['sku_id'])) {
|
|
$where['sku_id'] = $param['sku_id'];
|
|
}
|
|
if (!empty($param['serial_number'])) {
|
|
$where['main_serial_number|auxiliary_serial_number_one|auxiliary_serial_number_two'] = ['like', '%' . $param['serial_number'] . '%'];
|
|
}
|
|
$page = $param['page'] ? $param['page'] : '';
|
|
$limit = $param['limit'] ? $param['limit'] : '';
|
|
if (!empty($param['page']) && !empty($param['limit'])) {
|
|
$page = $page . ',' . $limit;
|
|
}
|
|
$SellSerialModel = new SellSerialModel();
|
|
$list = $SellSerialModel->getSelect($where, 'main_serial_number,auxiliary_serial_number_one,auxiliary_serial_number_two', 'id desc', $page);
|
|
$count = 0;
|
|
if (!empty($list)) {
|
|
$count = $SellSerialModel->getCount($where);
|
|
foreach ($list as $key => &$val) {
|
|
$val['index'] = $key + 1;
|
|
}
|
|
}
|
|
return callBack(statusCode()['success'], '查询成功', [
|
|
'list' => $list ? $list : [],
|
|
'count' => $count
|
|
]);
|
|
}
|
|
|
|
|
|
/**
|
|
* 盘点验证
|
|
* @param $param
|
|
* [
|
|
* operator_type 1后台端 2收银端 3助手端
|
|
* user_type 3商户 4门店
|
|
* merchant_id
|
|
* store_id
|
|
* goods_id
|
|
* sku_id
|
|
* serial_list
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function inventorySerialVerify($param)
|
|
{
|
|
$VerifyClass = new VerifyParam();
|
|
$verifyResult = $VerifyClass->identityVerify($param);
|
|
if ($verifyResult['status'] != 1) {
|
|
return $verifyResult;
|
|
}
|
|
switch ($param['user_type']) {
|
|
case 3:
|
|
$WarehouseSerialModel = new WarehouseGoodsSerialModel();
|
|
break;
|
|
case 4:
|
|
case 6:
|
|
$WarehouseSerialModel = new SWarehouseGoodsSerialModel();
|
|
break;
|
|
}
|
|
$where = [
|
|
'merchant_id' => $param['merchant_id'],
|
|
'goods_id' => ['neq', $param['goods_id']],
|
|
'num' => ['gt', 0]
|
|
];
|
|
if ($param['user_type'] == 4) {
|
|
$where['store_id'] = $param['store_id'];
|
|
}
|
|
if (!empty($param['sku_id'])) {
|
|
$where['sku_id'] = ['neq', $param['sku_id']];
|
|
}
|
|
$serialList = $param['serial_list'];
|
|
foreach ($serialList as $key => $val) {
|
|
$arr = [];
|
|
$arr[] = $val['main_serial_number'];
|
|
if (!empty($val['auxiliary_serial_number_one'])) {
|
|
$arr[] = $val['auxiliary_serial_number_one'];
|
|
}
|
|
if (!empty($val['auxiliary_serial_number_two'])) {
|
|
$arr[] = $val['auxiliary_serial_number_two'];
|
|
}
|
|
$where['main_serial_number|auxiliary_serial_number_one|auxiliary_serial_number_two'] = ['in', $arr];
|
|
$id = $WarehouseSerialModel->getFindField($where, 'id');
|
|
if (!empty($id)) {
|
|
return callBack(statusCode()['error'], '该商品的第' . $key . '个串号其他商品已存在');
|
|
}
|
|
}
|
|
return callBack(statusCode()['success'], '验证成功');
|
|
}
|
|
|
|
|
|
/**
|
|
* 串号修改记录
|
|
* @param $param
|
|
* [
|
|
* id 串号记录id
|
|
* page
|
|
* limit
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function serialModifyRecord($param)
|
|
{
|
|
if (empty($param['id'])) {
|
|
return callBack(statusCode()['error'], '缺少唯一标识');
|
|
}
|
|
$page = $param['page'] ? $param['page'] : '';
|
|
$limit = $param['limit'] ? $param['limit'] : '';
|
|
if (!empty($page) && !empty($limit)) {
|
|
$page = $page . ',' . $limit;
|
|
}
|
|
$where['outside_id'] = $param['id'];
|
|
$SerialRecordModel = new SerialRecordModel();
|
|
$list = $SerialRecordModel->getSelect($where, '*', 'id desc', $page);
|
|
if (!empty($list)) {
|
|
$count = $SerialRecordModel->getCount($where);
|
|
$JurisdictionModel = new JurisdictionUserModel();
|
|
$CashierModel = new RetailCashierModel();
|
|
foreach ($list as &$val) {
|
|
$val['add_time'] = date('Y-m-d H:i:s', $val['add_time']);
|
|
switch ($val['operator_type']) {
|
|
case 1:
|
|
$val['operator_type'] = '后台';
|
|
break;
|
|
case 2:
|
|
$val['operator_type'] = '收银端';
|
|
break;
|
|
case 3:
|
|
$val['operator_type'] = '助手端';
|
|
break;
|
|
}
|
|
if ($val['user_type'] == 6) {
|
|
//收银员
|
|
$val['operator_name'] = $CashierModel->getFindField([
|
|
'id' => $val['operator_id']
|
|
], 'name');
|
|
} else {
|
|
$val['operator_name'] = $JurisdictionModel->getFindField([
|
|
'id' => $val['operator_id']
|
|
], 'name');
|
|
}
|
|
}
|
|
}
|
|
return callBack(statusCode()['success'], '查询成功', [
|
|
'list' => $list ? $list : [],
|
|
'count' => $count ? $count : 0
|
|
]);
|
|
}
|
|
|
|
|
|
/**
|
|
* 串号修改
|
|
* @param $param
|
|
* [
|
|
* user_type 3 商户 4门店 6收银员
|
|
* operator_type 1后台 2收银端 3助手端
|
|
* merchant_id
|
|
* store_id
|
|
* cashier_id
|
|
* operator_id 操作人id
|
|
* id 串号记录id
|
|
* warehouse_goods_id 仓库串号记录id
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function serialModify($param)
|
|
{
|
|
$VerifyClass = new VerifyParam();
|
|
$verifyResult = $VerifyClass->identityVerify($param); //验证参数
|
|
if ($verifyResult['status'] != 1) {
|
|
return $verifyResult;
|
|
}
|
|
if (empty($param['id']) || empty($param['warehouse_goods_id'])) {
|
|
return callBack(statusCode()['error'], '请选择');
|
|
}
|
|
try {
|
|
$SellSerialModel = new SellSerialModel();
|
|
$old_info = $SellSerialModel->getFind([
|
|
'id' => $param['id']
|
|
]);
|
|
if (empty($old_info)) {
|
|
return callBack(statusCode()['error'], '未找到该串号信息');
|
|
}
|
|
$WarehouseSerialModel = new SWarehouseGoodsSerialModel();
|
|
$new_info = $WarehouseSerialModel->getFind([
|
|
'id' => $param['warehouse_goods_id'],
|
|
'num' => ['gt', 0]
|
|
]);
|
|
if (empty($new_info)) {
|
|
return callBack(statusCode()['error'], '仓库未找到该串号,请刷新');
|
|
}
|
|
$time = $_SERVER['REQUEST_TIME'];
|
|
M()->startTrans();
|
|
$updateResult = $SellSerialModel->updateOrder([
|
|
'id' => $param['id']
|
|
], [
|
|
'main_serial_number' => $new_info['main_serial_number'],
|
|
'auxiliary_serial_number_one' => $new_info['auxiliary_serial_number_one'],
|
|
'auxiliary_serial_number_two' => $new_info['auxiliary_serial_number_two']
|
|
]);
|
|
if (empty($updateResult)) {
|
|
M()->rollback();
|
|
return callBack(statusCode()['error'], '记录修改失败');
|
|
}
|
|
$SerialRecordModel = new SerialRecordModel();
|
|
$add_id = $SerialRecordModel->addOrder([
|
|
'merchant_id' => $param['merchant_id'],
|
|
'store_id' => $param['store_id'],
|
|
'outside_id' => $param['id'],
|
|
'goods_id' => $old_info['goods_id'],
|
|
'sku_id' => $old_info['sku_id'],
|
|
'old_main_serial_number' => $old_info['main_serial_number'],
|
|
'old_auxiliary_serial_number_one' => $old_info['auxiliary_serial_number_one'],
|
|
'old_auxiliary_serial_number_two' => $old_info['auxiliary_serial_number_two'],
|
|
'main_serial_number' => $new_info['main_serial_number'],
|
|
'auxiliary_serial_number_one' => $new_info['auxiliary_serial_number_one'],
|
|
'auxiliary_serial_number_two' => $new_info['auxiliary_serial_number_two'],
|
|
'add_time' => $time,
|
|
'operator_type' => $param['operator_type'],
|
|
'operator_id' => $param['operator_id'],
|
|
'user_type' => $param['user_type']
|
|
]);
|
|
if (empty($add_id)) {
|
|
M()->rollback();
|
|
return callBack(statusCode()['error'], '修改记录添加失败');
|
|
}
|
|
$where = [
|
|
'merchant_id' => $param['merchant_id'],
|
|
'store_id' => $param['store_id'],
|
|
'goods_id' => $old_info['goods_id'],
|
|
'main_serial_number' => $old_info['main_serial_number']
|
|
];
|
|
if (!empty($old_info['sku_id'])) {
|
|
$where['sku_id'] = $old_info['sku_id'];
|
|
}
|
|
$updateResult = $WarehouseSerialModel->updateData($where, [
|
|
'num' => 1
|
|
]);
|
|
if (empty($updateResult)) {
|
|
M()->rollback();
|
|
return callBack(statusCode()['error'], '串号数量修改失败');
|
|
}
|
|
$where['main_serial_number'] = $new_info['main_serial_number'];
|
|
$updateResult = $WarehouseSerialModel->updateData($where, [
|
|
'num' => 0
|
|
]);
|
|
if (empty($updateResult)) {
|
|
M()->rollback();
|
|
return callBack(statusCode()['error'], '串号数量修改失败');
|
|
}
|
|
$where['main_serial_number'] = $old_info['main_serial_number'];
|
|
$where['type'] = ['not in', ['0', '1', '2', '3', '9', '10']];
|
|
$StockSerialModel = new SStockGoodsSerialModel();
|
|
$updateResult = $StockSerialModel->updateData($where, [
|
|
'main_serial_number' => $new_info['main_serial_number'],
|
|
'auxiliary_serial_number_one' => $new_info['auxiliary_serial_number_one'],
|
|
'auxiliary_serial_number_two' => $new_info['auxiliary_serial_number_two'],
|
|
]);
|
|
if (empty($updateResult)) {
|
|
M()->rollback();
|
|
return callBack(statusCode()['error'], '出库记录修改失败');
|
|
}
|
|
M()->commit();
|
|
return callBack(statusCode()['success'], '操作成功');
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], '操作失败');
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 采购退货串号列表
|
|
* @param $param
|
|
* [
|
|
* user_type 3商户 4门店 6收银员
|
|
* order_number 采购订单号
|
|
* serial_number 串号搜索
|
|
* goods_id
|
|
* sku_id
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function purchaseRetreatSerial($param)
|
|
{
|
|
try {
|
|
switch ($param['user_type']) {
|
|
case 3:
|
|
$RetreatModel = new RetreatGoodsModel();
|
|
$PurchaseSerialModel = new PurchaseGoodsSerialModel();
|
|
break;
|
|
case 4:
|
|
case 6:
|
|
$RetreatModel = new SRetreatGoodsModel();
|
|
$PurchaseSerialModel = new SPurchaseGoodsSerialModel();
|
|
break;
|
|
}
|
|
$where = [
|
|
'purchase_order_number' => $param['order_number'],
|
|
'goods_id' => $param['goods_id']
|
|
];
|
|
if (!empty($param['sku_id'])) {
|
|
$where['sku_id'] = $param['sku_id'];
|
|
}
|
|
$id_arr = $RetreatModel->getFindField($where, 'id', true);
|
|
if (!empty($id_arr)) {
|
|
$map = [
|
|
'outside_id' => ['in', $id_arr],
|
|
'type' => 2,
|
|
'status' => 1
|
|
];
|
|
if (!empty($param['serial_number'])) {
|
|
$map['main_serial_number|auxiliary_serial_number_one|auxiliary_serial_number_two'] = ['like', '%' . $param['serial_number'] . '%'];
|
|
}
|
|
$list = $PurchaseSerialModel->getSelect($map, $param['page'], $param['limit'], 'id,main_serial_number,auxiliary_serial_number_one,auxiliary_serial_number_two');
|
|
if (!empty($param['page']) && !empty($param['limit'])) {
|
|
$count = $PurchaseSerialModel->getCount($map);
|
|
}
|
|
}
|
|
return callBack(statusCode()['success'], '查询成功', [
|
|
'list' => $list ? $list : [],
|
|
'count' => $count ? $count : 0
|
|
]);
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], '查询失败');
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 采购已入库串号列表
|
|
* @param $param
|
|
* [
|
|
* user_type 3商户 4门店 6收银员
|
|
* order_number 采购订单号
|
|
* serial_number 串号搜索
|
|
* goods_id 商品id
|
|
* sku_id 规格id
|
|
* page
|
|
* limit
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function purchaseWarehouseSerial($param)
|
|
{
|
|
try {
|
|
switch ($param['user_type']) {
|
|
case 3:
|
|
$WarehouseGoodsModel = new WarehousingGoodsModel();
|
|
$WarehouseSerialModel = new WarehouseGoodsSerialModel();
|
|
break;
|
|
case 4:
|
|
case 6:
|
|
$WarehouseGoodsModel = new SWarehousingGoodsModel();
|
|
$WarehouseSerialModel = new SWarehouseGoodsSerialModel();
|
|
break;
|
|
}
|
|
$where = [
|
|
'type' => ['in', ['1', '2']],
|
|
'purchase_order_number' => $param['order_number'],
|
|
'goods_id' => $param['goods_id']
|
|
];
|
|
if (!empty($param['sku_id'])) {
|
|
$where['sku_id'] = $param['sku_id'];
|
|
}
|
|
$id_arr = $WarehouseGoodsModel->getFindField($where, 'id', true);
|
|
if (!empty($id_arr)) {
|
|
$map = [
|
|
'outside_id' => ['in', $id_arr]
|
|
];
|
|
if (!empty($param['serial_number'])) {
|
|
$map['main_serial_number|auxiliary_serial_number_one|auxiliary_serial_number_two'] = ['like', '%' . $param['serial_number'] . '%'];
|
|
}
|
|
$list = $WarehouseSerialModel->getSelect($map, $param['page'], $param['limit'], 'id,main_serial_number,auxiliary_serial_number_one,auxiliary_serial_number_two');
|
|
if (!empty($param['page']) && !empty($param['limit'])) {
|
|
$count = $WarehouseSerialModel->getCount($map);
|
|
}
|
|
}
|
|
return callBack(statusCode()['success'], '查询成功', [
|
|
'list' => $list ? $list : [],
|
|
'count' => $count ? $count : 0
|
|
]);
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], '查询失败');
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 删除出售入库串号信息
|
|
* @param $param
|
|
* [
|
|
* merchant_id
|
|
* store_id
|
|
* number_arr 主串号集合|外部id集合
|
|
* type 1出库 2入库
|
|
* param_type 默认1 主串号集合 2外部id集合
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function sellSerialDelete($param)
|
|
{
|
|
$where = [
|
|
'merchant_id' => $param['merchant_id'],
|
|
'store_id' => $param['store_id']
|
|
];
|
|
if (!empty($param['type'])) {
|
|
$where['type'] = $param['type'] ? $param['type'] : 2;
|
|
}
|
|
if (!empty($param['param_type']) && $param['param_type'] == 2) {
|
|
$where['outside_id'] = ['in', $param['number_arr']];
|
|
} else {
|
|
$where['main_serial_number'] = ['in', $param['number_arr']];
|
|
}
|
|
$SellSerialModel = new SellSerialModel();
|
|
$SellSerialModel->deleteOrder($where);
|
|
return callBack(statusCode()['success'], '操作成功');
|
|
}
|
|
|
|
|
|
/**
|
|
* 出售串号信息
|
|
* @param $param
|
|
* [
|
|
* id 出售记录id
|
|
* serial_number 串号搜索
|
|
* files 查询的字段
|
|
* type 1出售 2可退
|
|
* page
|
|
* limit
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function sellSerialList($param)
|
|
{
|
|
try {
|
|
$where = [
|
|
'outside_id' => $param['id'],
|
|
];
|
|
if ($param['type'] == 2) {
|
|
$where['num'] = ['gt', 0];
|
|
}
|
|
$page = $param['page'] ? $param['page'] : '';
|
|
$limit = $param['limit'] ? $param['limit'] : '';
|
|
if (!empty($page) && !empty($limit)) {
|
|
$page = $page . ',' . $limit;
|
|
}
|
|
$files = $param['files'] ? $param['files'] : 'id,goods_id,main_serial_number,auxiliary_serial_number_one,auxiliary_serial_number_two,edit_type';
|
|
if (!empty($param['serial_number'])) {
|
|
$where['main_serial_number|auxiliary_serial_number_one|auxiliary_serial_number_two'] = ['like', '%' . $param['serial_number'] . '%'];
|
|
}
|
|
$SerialModel = new SellSerialModel();
|
|
$list = $SerialModel->getSelect($where, $files, 'id asc', $page);
|
|
if (!empty($list)) {
|
|
if (!empty($page)) {
|
|
$count = $SerialModel->getCount($where);
|
|
}
|
|
}
|
|
return callBack(statusCode()['success'], '查询成功', [
|
|
'list' => $list ? $list : [],
|
|
'count' => $count ? $count : 0
|
|
]);
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], '查询失败', [
|
|
'list' => [],
|
|
'count' => 0
|
|
]);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 出售串号库存修改
|
|
* @param $param
|
|
* [
|
|
* id 出售记录id集合
|
|
* type 1出库 2入库
|
|
* num
|
|
* option_type 1修改 2删除
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function sellSerialNumOperation($param)
|
|
{
|
|
$where = [
|
|
'outside_id' => ['in', $param['id']],
|
|
];
|
|
if (!empty($param['type'])) {
|
|
$where['type'] = $param['type'];
|
|
}
|
|
$SerialModel = new SellSerialModel();
|
|
if ($param['option_type'] == 2) {
|
|
$SerialModel->deleteOrder($where);
|
|
} else {
|
|
$SerialModel->updateOrder($where, [
|
|
'num' => $param['num'] ? $param['num'] : 0
|
|
]);
|
|
}
|
|
return callBack(statusCode()['success'], '操作成功');
|
|
}
|
|
|
|
|
|
/**
|
|
* 依据串号进行串号出库
|
|
* @param $param
|
|
* [
|
|
* type 1增加 2减少
|
|
* store_id
|
|
* goods_list 商品信息
|
|
* [
|
|
* serial_number_state 串号状态 0关闭 1开启
|
|
* serial_list 串号信息
|
|
* ]
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function basisNumberOperation($param)
|
|
{
|
|
try {
|
|
$goodsList = $param['goods_list'];
|
|
$serial_arr = [];
|
|
foreach ($goodsList as $value) {
|
|
//串号出库
|
|
if ($value['serial_number_state'] == 1) {
|
|
foreach ($value['serial_list'] as $val) {
|
|
$serial_arr[] = $val['main_serial_number'];
|
|
}
|
|
}
|
|
}
|
|
if (!empty($serial_arr)) {
|
|
$SerialModel = new SWarehouseGoodsSerialModel();
|
|
$where = [
|
|
'store_id' => $param['store_id'],
|
|
'main_serial_number' => ['in', $serial_arr],
|
|
];
|
|
switch ($param['type']) {
|
|
case 1:
|
|
$id_arr = [];
|
|
foreach ($serial_arr as $val) {
|
|
$id_arr[] = $SerialModel->basisOrderGetFindField([
|
|
'store_id' => $param['store_id'],
|
|
'main_serial_number' => $val
|
|
], 'id', 'id desc');
|
|
}
|
|
if (!empty($id_arr)) {
|
|
$SerialModel->updateData([
|
|
'id' => ['in', $id_arr]
|
|
], [
|
|
'num' => 1
|
|
]);
|
|
}
|
|
break;
|
|
case 2:
|
|
$SerialModel->updateData($where, [
|
|
'num' => 0
|
|
]);
|
|
break;
|
|
}
|
|
}
|
|
return callBack(statusCode()['success'], '操作成功');
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['success'], '操作失败');
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 收银串号添加
|
|
* @param $param
|
|
* [
|
|
* merchant_id
|
|
* store_id
|
|
* goods_id
|
|
* sku_id
|
|
* outside_id
|
|
* sell_list 商品信息
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function cashierSerialAdd($param)
|
|
{
|
|
$serial_arr = [];
|
|
$serial_list = $param['sell_list'];
|
|
$data = [
|
|
'merchant_id' => $param['merchant_id'],
|
|
'store_id' => $param['store_id'],
|
|
'goods_id' => $param['goods_id'],
|
|
'sku_id' => $param['sku_id'] ? $param['sku_id'] : 0,
|
|
'add_time' => $_SERVER['REQUEST_TIME'],
|
|
'outside_id' => $param['outside_id'],
|
|
'type' => 1,
|
|
'num' => 1,
|
|
];
|
|
foreach ($serial_list as $val) {
|
|
//串号信息处理
|
|
$data['main_serial_number'] = $val['main_serial_number'];
|
|
$data['auxiliary_serial_number_one'] = $val['auxiliary_serial_number_one'] ? $val['auxiliary_serial_number_one'] : '';
|
|
$data['auxiliary_serial_number_two'] = $val['auxiliary_serial_number_two'] ? $val['auxiliary_serial_number_two'] : '';
|
|
$serial_arr[] = $data;
|
|
}
|
|
if (!empty($serial_arr)) {
|
|
try {
|
|
$SellSerialModel = new SellSerialModel();
|
|
$id = $SellSerialModel->addAll($serial_arr);
|
|
if (empty($id)) {
|
|
return callBack(statusCode()['error'], '串号保存失败');
|
|
}
|
|
return callBack(statusCode()['success'], '串号保存成功');
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], '串号保存失败');
|
|
}
|
|
} else {
|
|
return callBack(statusCode()['error'], '串号保存失败');
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 出售串号添加操作
|
|
* @param $param
|
|
* [
|
|
* merchant_id
|
|
* store_id
|
|
* sell_list 商品信息
|
|
* type 1出库 2入库
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function sellSerialAdd($param)
|
|
{
|
|
$serial_arr = [];
|
|
$update_arr = [];
|
|
$sell_list = $param['sell_list'];
|
|
$data = [
|
|
'merchant_id' => $param['merchant_id'],
|
|
'store_id' => $param['store_id'],
|
|
'add_time' => $_SERVER['REQUEST_TIME'],
|
|
'type' => $param['type'] ? $param['type'] : 1,
|
|
'num' => 1,
|
|
'edit_type' => $param['type'] == 2 ? 2 : 1
|
|
];
|
|
foreach ($sell_list as $val) {
|
|
//串号信息处理
|
|
if ($val['serial_number_state'] == 1) {
|
|
$data['outside_id'] = $val['id'];
|
|
$data['goods_id'] = $val['goods_id'];
|
|
$data['sku_id'] = $val['sku_id'] ? $val['sku_id'] : 0;
|
|
$serial_list = $val['serial_list'];
|
|
foreach ($serial_list as $v) {
|
|
$data['main_serial_number'] = $v['main_serial_number'];
|
|
$data['auxiliary_serial_number_one'] = $v['auxiliary_serial_number_one'] ? $v['auxiliary_serial_number_one'] : '';
|
|
$data['auxiliary_serial_number_two'] = $v['auxiliary_serial_number_two'] ? $v['auxiliary_serial_number_two'] : '';
|
|
$serial_arr[] = $data;
|
|
if (!empty($v['id']) && $param['type'] == 2) {
|
|
$update_arr[] = $v['id'];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (!empty($serial_arr)) {
|
|
try {
|
|
M()->startTrans();
|
|
$SellSerialModel = new SellSerialModel();
|
|
$id = $SellSerialModel->addAll($serial_arr);
|
|
if (empty($id)) {
|
|
M()->rollback();
|
|
return callBack(statusCode()['error'], '串号保存失败');
|
|
}
|
|
if (!empty($update_arr)) {
|
|
$SellSerialModel->updateOrder([
|
|
'id' => ['in', $update_arr]
|
|
], [
|
|
'num' => 0,
|
|
'edit_type' => 2
|
|
]);
|
|
}
|
|
M()->commit();
|
|
return callBack(statusCode()['success'], '商品信息确认成功');
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], '串号保存失败');
|
|
}
|
|
} else {
|
|
return callBack(statusCode()['success'], '商品信息确认成功');
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 依据串号查询商品信息
|
|
* @param $param
|
|
* [
|
|
* user_type 3商户 4门店
|
|
* serial_number 串号
|
|
* store_id
|
|
* merchant_id
|
|
* type 1返一条 其他返多条
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function basisSerialGetGoods($param)
|
|
{
|
|
if (empty($param['serial_number'])) {
|
|
return callBack(statusCode()['error'], '请输入串号');
|
|
}
|
|
$where = [
|
|
'merchant_id' => $param['merchant_id'],
|
|
'num' => ['gt', 0],
|
|
'main_serial_number|auxiliary_serial_number_one|auxiliary_serial_number_two' => trim($param['serial_number'])
|
|
];
|
|
if ($param['user_type'] == 4) {
|
|
$where['store_id'] = $param['store_id'];
|
|
}
|
|
try {
|
|
switch ($param['user_type']) {
|
|
case 3:
|
|
$SerialModel = new WarehouseGoodsSerialModel();
|
|
break;
|
|
case 4:
|
|
$SerialModel = new SWarehouseGoodsSerialModel();
|
|
break;
|
|
}
|
|
if ($param['type'] == 1) {
|
|
$list = $SerialModel->basisOrderFind($where, 'goods_id,sku_id,main_serial_number,auxiliary_serial_number_one,auxiliary_serial_number_two');
|
|
} else {
|
|
$list = $SerialModel->getSelect($where, 'goods_id,sku_id,main_serial_number,auxiliary_serial_number_one,auxiliary_serial_number_two');
|
|
}
|
|
if (!empty($list)) {
|
|
return callBack(statusCode()['success'], '查询成功', $list);
|
|
} else {
|
|
return callBack(statusCode()['error'], '仓库未找到该串号');
|
|
}
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], '仓库未找到该串号');
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 查询门店仓库中某串号信息
|
|
* @param $param
|
|
* [
|
|
* user_type 3商户 4门店
|
|
* merchant_id
|
|
* store_id
|
|
* goods_id
|
|
* sku_id
|
|
* serial_number 串号搜索
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function searchWarehouseSerial($param)
|
|
{
|
|
if (empty($param['goods_id']) || empty($param['serial_number'])) {
|
|
return callBack(statusCode()['error'], '请输入串号');
|
|
}
|
|
$where = [
|
|
'merchant_id' => $param['merchant_id'],
|
|
'goods_id' => $param['goods_id'],
|
|
'num' => ['gt', 0],
|
|
'main_serial_number|auxiliary_serial_number_one|auxiliary_serial_number_two' => trim($param['serial_number'])
|
|
];
|
|
if (!empty($param['sku_id'])) {
|
|
$where['sku_id'] = $param['sku_id'];
|
|
}
|
|
if ($param['user_type'] == 4) {
|
|
$where['store_id'] = $param['store_id'];
|
|
}
|
|
try {
|
|
switch ($param['user_type']) {
|
|
case 3:
|
|
$SerialModel = new WarehouseGoodsSerialModel();
|
|
break;
|
|
case 4:
|
|
$SerialModel = new SWarehouseGoodsSerialModel();
|
|
break;
|
|
}
|
|
$info = $SerialModel->basisOrderFind($where, 'id as warehouse_goods_id,main_serial_number,auxiliary_serial_number_one,auxiliary_serial_number_two');
|
|
if (!empty($info)) {
|
|
return callBack(statusCode()['success'], '查询成功', $info);
|
|
} else {
|
|
return callBack(statusCode()['error'], '仓库未找到该串号');
|
|
}
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], '仓库未找到该串号');
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 串号位置
|
|
* @param $param
|
|
* [
|
|
* serial_number 串号
|
|
* merchant_id
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function serialPosition($param)
|
|
{
|
|
if (empty($param['serial_number'])) {
|
|
return callBack(statusCode()['error'], '请输入串号');
|
|
}
|
|
$where = [
|
|
'merchant_id' => $param['merchant_id'],
|
|
];
|
|
$where['main_serial_number|auxiliary_serial_number_one|auxiliary_serial_number_two'] = trim($param['serial_number'], ' ');
|
|
try {
|
|
$StoreClass = new Store();
|
|
$ImageClass = new Image();
|
|
$GoodsModel = new RetailMgoodsModel();
|
|
$SkuGoodsModel = new SkuMGoodsModel();
|
|
$StoreGoodsModel = new RetailGoodsModel();
|
|
$StoreSkuGoodsModel = new RetailSkuGoodsModel();
|
|
$data = []; //数据
|
|
//商户采购仓
|
|
$PurchaseGoodsSerialModel = new PurchaseGoodsSerialModel();
|
|
$info = $PurchaseGoodsSerialModel->getFind($where);
|
|
if (!empty($info)) {
|
|
//零售价
|
|
if (!empty($info['sku_id'])) {
|
|
$retail_price = $SkuGoodsModel->getFindField([
|
|
'id' => $info['sku_id']
|
|
], 'retail_price');
|
|
} else {
|
|
$retail_price = $GoodsModel->getFindField([
|
|
'id' => $info['goods_id']
|
|
], 'retail_price');
|
|
}
|
|
$PurchaseGoodsModel = new PurchaseGoodsModel();
|
|
$goods = $PurchaseGoodsModel->basisOrderFind([
|
|
'id' => $info['outside_id']
|
|
], 'warehouse_id,goods_name,sku_name,order_number,goods_id,sku_id,purchase_price,add_time');
|
|
if (!empty($goods)) {
|
|
$PurchaseWarehouseModel = new PurchaseWarehouseModel();
|
|
$warehouse_name = $PurchaseWarehouseModel->getFindField([
|
|
'id' => $goods['warehouse_id']
|
|
], 'name');
|
|
$data['name'] = '商户';
|
|
$data['position'] = '采购仓' . $warehouse_name;
|
|
$data['goods_name'] = $goods['goods_name'];
|
|
$data['sku_name'] = $goods['sku_name'];
|
|
$data['purchase_price'] = round($goods['purchase_price'], 2); //进价
|
|
$data['retail_price'] = round($retail_price, 2);
|
|
$data['image_path'] = $ImageClass->basisGoodsIdGetImg([
|
|
'user_type' => 3,
|
|
'goods_id' => $goods['goods_id'],
|
|
'sku_id' => $goods['sku_id']
|
|
]);
|
|
$data['main_serial_number'] = $info['main_serial_number'];
|
|
$data['auxiliary_serial_number_one'] = $info['auxiliary_serial_number_one'];
|
|
$data['auxiliary_serial_number_two'] = $info['auxiliary_serial_number_two'];
|
|
$data['popular'][] = [
|
|
'add_time' => date('Y-m-d H:i:s', $goods['add_time']),
|
|
'order_number' => $goods['order_number'],
|
|
'position' => '商户的' . $warehouse_name . '采购仓采购入库-'
|
|
];
|
|
}
|
|
}
|
|
//商户供给仓
|
|
$WarehouseGoodsSerialModel = new WarehouseGoodsSerialModel();
|
|
$info = $WarehouseGoodsSerialModel->getFind($where);
|
|
if (!empty($info)) {
|
|
if (empty($data['retail_price'])) {
|
|
//零售价
|
|
if (!empty($info['sku_id'])) {
|
|
$retail_price = $SkuGoodsModel->getFindField([
|
|
'id' => $info['sku_id']
|
|
], 'retail_price');
|
|
} else {
|
|
$retail_price = $GoodsModel->getFindField([
|
|
'id' => $info['goods_id']
|
|
], 'retail_price');
|
|
}
|
|
}
|
|
$WarehouseGoodsModel = new WarehousingGoodsModel();
|
|
$goods = $WarehouseGoodsModel->basisOrderFind([
|
|
'id' => $info['outside_id']
|
|
], 'goods_name,sku_name,goods_id,sku_id,warehouse_price,add_time,warehouse_order_number');
|
|
if (!empty($goods)) {
|
|
if (empty($data['goods_name']) || empty($data['purchase_price'])) {
|
|
$data['goods_name'] = $goods['goods_name'];
|
|
$data['sku_name'] = $goods['sku_name'];
|
|
$data['purchase_price'] = round($goods['warehouse_price'], 2); //进价
|
|
$data['retail_price'] = round($retail_price, 2);
|
|
$data['image_path'] = $ImageClass->basisGoodsIdGetImg([
|
|
'user_type' => 3,
|
|
'goods_id' => $goods['goods_id'],
|
|
'sku_id' => $goods['sku_id']
|
|
]);
|
|
$data['main_serial_number'] = $info['main_serial_number'];
|
|
$data['auxiliary_serial_number_one'] = $info['auxiliary_serial_number_one'];
|
|
$data['auxiliary_serial_number_two'] = $info['auxiliary_serial_number_two'];
|
|
}
|
|
$data['name'] = '商户';
|
|
$data['position'] = '供给仓';
|
|
$data['popular'][] = [
|
|
'add_time' => date('Y-m-d H:i:s', $goods['add_time']),
|
|
'order_number' => $goods['warehouse_order_number'],
|
|
'position' => '商户供给仓入库-'
|
|
];
|
|
}
|
|
}
|
|
//商户出库
|
|
$where['type'] = ['in', ['1', '3']];
|
|
$StockGoodsSerialModel = new StockGoodsSerialModel();
|
|
$info = $StockGoodsSerialModel->getFind($where);
|
|
if (!empty($info)) {
|
|
$StockGoodsModel = new StockOutGoodsModel();
|
|
$goods = $StockGoodsModel->basisOrderFind([
|
|
'id' => $info['outside_id']
|
|
], 'goods_name,sku_name,type,stock_out_id,stock_order_number,goods_id,sku_id,cost_price,add_time,stock_order_number');
|
|
if (!empty($goods)) {
|
|
$StockOrderModel = new StockOutOrderModel();
|
|
$stock_info = $StockOrderModel->basisOrderFind([
|
|
'id' => $goods['stock_out_id']
|
|
], 'warehousing_status,store_id');
|
|
//零售价
|
|
if (empty($data['retail_price'])) {
|
|
if (!empty($info['sku_id'])) {
|
|
$retail_price = $SkuGoodsModel->getFindField([
|
|
'id' => $info['sku_id']
|
|
], 'retail_price');
|
|
} else {
|
|
$retail_price = $GoodsModel->getFindField([
|
|
'id' => $info['goods_id']
|
|
], 'retail_price');
|
|
}
|
|
}
|
|
if (empty($data['goods_name']) || empty($data['purchase_price'])) {
|
|
$data['goods_name'] = $goods['goods_name'];
|
|
$data['sku_name'] = $goods['sku_name'];
|
|
$data['purchase_price'] = round($goods['cost_price'], 2); //成本价
|
|
$data['retail_price'] = round($retail_price, 2);
|
|
$data['image_path'] = $ImageClass->basisGoodsIdGetImg([
|
|
'user_type' => 3,
|
|
'goods_id' => $goods['goods_id'],
|
|
'sku_id' => $goods['sku_id']
|
|
]);
|
|
$data['main_serial_number'] = $info['main_serial_number'];
|
|
$data['auxiliary_serial_number_one'] = $info['auxiliary_serial_number_one'];
|
|
$data['auxiliary_serial_number_two'] = $info['auxiliary_serial_number_two'];
|
|
}
|
|
if ($goods['type'] == 1) {
|
|
$name = '商户调拨出库至' . $StoreClass->getStoreName($stock_info['store_id']);
|
|
} else {
|
|
$name = $StoreClass->getStoreName($stock_info['store_id']) . '申请调拨出库';
|
|
}
|
|
$data['name'] = '商户';
|
|
$data['position'] = $name;
|
|
$data['popular'][] = [
|
|
'add_time' => date('Y-m-d H:i:s', $goods['add_time']),
|
|
'order_number' => $goods['stock_order_number'],
|
|
'position' => $name
|
|
];
|
|
}
|
|
}
|
|
unset($where['type']);
|
|
//商户报损
|
|
$LossSerialModel = new LossReportSerialModel();
|
|
$info = $LossSerialModel->getFind($where);
|
|
if (!empty($info)) {
|
|
$LossGoodsModel = new LossReportGoodsModel();
|
|
$loss_order_number = $LossGoodsModel->getFindField([
|
|
'id' => $info['outside_id']
|
|
], 'loss_order_number');
|
|
$data['name'] = '商户';
|
|
$data['position'] = '供给仓报损';
|
|
$data['popular'][] = [
|
|
'add_time' => date('Y-m-d H:i:s', $info['add_time']),
|
|
'order_number' => $loss_order_number,
|
|
'position' => '供给仓报损'
|
|
];
|
|
}
|
|
//门店供给仓
|
|
$SWarehouseGoodsSerialModel = new SWarehouseGoodsSerialModel();
|
|
$info = $SWarehouseGoodsSerialModel->getFind($where);
|
|
if (!empty($info)) {
|
|
//零售价
|
|
if (!empty($info['sku_id'])) {
|
|
$retail_price = $StoreSkuGoodsModel->getFindField([
|
|
'id' => $info['sku_id']
|
|
], 'retail_price');
|
|
} else {
|
|
$retail_price = $StoreGoodsModel->getFindField([
|
|
'id' => $info['goods_id']
|
|
], 'retail_price');
|
|
}
|
|
if (!empty($info['outside_id'])) {
|
|
$map = [
|
|
'id' => $info['outside_id']
|
|
];
|
|
} else {
|
|
$map = [
|
|
'goods_id' => $info['goods_id'],
|
|
'sku_id' => $info['sku_id']
|
|
];
|
|
}
|
|
$SWarehouseGoodsModel = new SWarehousingGoodsModel();
|
|
$goods = $SWarehouseGoodsModel->basisOrderFind($map, 'goods_name,sku_name,goods_id,sku_id,warehouse_price,add_time,warehouse_order_number');
|
|
if (!empty($goods)) {
|
|
$data['goods_name'] = $goods['goods_name'];
|
|
$data['sku_name'] = $goods['sku_name'];
|
|
$data['purchase_price'] = round($goods['warehouse_price'], 2); //成本价
|
|
$data['retail_price'] = round($retail_price, 2);
|
|
$data['image_path'] = $ImageClass->basisGoodsIdGetImg([
|
|
'user_type' => 4,
|
|
'goods_id' => $goods['goods_id'],
|
|
'sku_id' => $goods['sku_id']
|
|
]);
|
|
$data['main_serial_number'] = $info['main_serial_number'];
|
|
$data['auxiliary_serial_number_one'] = $info['auxiliary_serial_number_one'];
|
|
$data['auxiliary_serial_number_two'] = $info['auxiliary_serial_number_two'];
|
|
$name = $StoreClass->getStoreName($info['store_id']);
|
|
$data['name'] = $name;
|
|
$data['position'] = '供给仓';
|
|
$data['popular'][] = [
|
|
'add_time' => date('Y-m-d H:i:s', $goods['add_time']),
|
|
'order_number' => $goods['warehouse_order_number'],
|
|
'position' => $name . '供给仓入库'
|
|
];
|
|
}
|
|
}
|
|
//门店采购仓
|
|
$SPurchaseGoodsSerialModel = new SPurchaseGoodsSerialModel();
|
|
$info = $SPurchaseGoodsSerialModel->getFind($where);
|
|
if (!empty($info)) {
|
|
//零售价
|
|
if (empty($data['retail_price'])) {
|
|
if (!empty($info['sku_id'])) {
|
|
$retail_price = $StoreSkuGoodsModel->getFindField([
|
|
'id' => $info['sku_id']
|
|
], 'retail_price');
|
|
} else {
|
|
$retail_price = $StoreGoodsModel->getFindField([
|
|
'id' => $info['goods_id']
|
|
], 'retail_price');
|
|
}
|
|
}
|
|
$SPurchaseGoodsModel = new SPurchaseGoodsModel();
|
|
$goods = $SPurchaseGoodsModel->basisOrderFind([
|
|
'id' => $info['outside_id']
|
|
], 'warehouse_id,goods_name,sku_name,order_number,goods_id,sku_id,purchase_price,add_time');
|
|
$SPurchaseWarehouseModel = new SPurchaseWarehouseModel();
|
|
$warehouse_name = $SPurchaseWarehouseModel->getFindField([
|
|
'id' => $goods['warehouse_id']
|
|
], 'name');
|
|
if (!empty($goods)) {
|
|
if (empty($data['purchase_price']) || empty($data['retail_price'])) {
|
|
$data['goods_name'] = $goods['goods_name'];
|
|
$data['sku_name'] = $goods['sku_name'];
|
|
$data['purchase_price'] = round($goods['purchase_price'], 2); //采购价
|
|
$data['retail_price'] = round($retail_price, 2);
|
|
$data['image_path'] = $ImageClass->basisGoodsIdGetImg([
|
|
'user_type' => 4,
|
|
'goods_id' => $goods['goods_id'],
|
|
'sku_id' => $goods['sku_id']
|
|
]);
|
|
$data['main_serial_number'] = $info['main_serial_number'];
|
|
$data['auxiliary_serial_number_one'] = $info['auxiliary_serial_number_one'];
|
|
$data['auxiliary_serial_number_two'] = $info['auxiliary_serial_number_two'];
|
|
}
|
|
$name = $StoreClass->getStoreName($info['store_id']);
|
|
$data['name'] = $name;
|
|
$data['position'] = '采购仓' . $warehouse_name;
|
|
$data['popular'][] = [
|
|
'add_time' => date('Y-m-d H:i:s', $goods['add_time']),
|
|
'order_number' => $goods['order_number'],
|
|
'position' => $name . $warehouse_name . '的采购仓采购入库-'
|
|
];
|
|
}
|
|
}
|
|
//门店出库
|
|
$SStockGoodsSerialModel = new SStockGoodsSerialModel();
|
|
$info = $SStockGoodsSerialModel->getFind($where);
|
|
if (!empty($info) && in_array($info['type'], [1, 3])) {
|
|
$SStockGoodsModel = new SStockOutGoodsModel();
|
|
$goods = $SStockGoodsModel->basisOrderFind([
|
|
'id' => $info['outside_id']
|
|
], 'goods_name,sku_name,type,stock_out_id,stock_order_number,goods_id,sku_id,cost_price,add_time');
|
|
if (!empty($goods)) {
|
|
//零售价
|
|
if (empty($data['retail_price'])) {
|
|
if (!empty($info['sku_id'])) {
|
|
$retail_price = $StoreSkuGoodsModel->getFindField([
|
|
'id' => $info['sku_id']
|
|
], 'retail_price');
|
|
} else {
|
|
$retail_price = $StoreGoodsModel->getFindField([
|
|
'id' => $info['goods_id']
|
|
], 'retail_price');
|
|
}
|
|
}
|
|
$SStockOrderModel = new SStockOutOrderModel();
|
|
$stock_info = $SStockOrderModel->basisOrderFind([
|
|
'id' => $goods['stock_out_id']
|
|
], 'warehousing_status,store_id,transfer_to_store_id,merchant_id');
|
|
if (!empty($stock_info) && $stock_info['warehousing_status'] != 1) {
|
|
if (empty($data['retail_price']) || empty($data['purchase_price'])) {
|
|
$data['goods_name'] = $goods['goods_name'];
|
|
$data['sku_name'] = $goods['sku_name'];
|
|
$data['purchase_price'] = round($goods['cost_price'], 2); //成本价
|
|
$data['retail_price'] = round($retail_price, 2);
|
|
$data['image_path'] = $ImageClass->basisGoodsIdGetImg([
|
|
'user_type' => 4,
|
|
'goods_id' => $goods['goods_id'],
|
|
'sku_id' => $goods['sku_id']
|
|
]);
|
|
$data['main_serial_number'] = $info['main_serial_number'];
|
|
$data['auxiliary_serial_number_one'] = $info['auxiliary_serial_number_one'];
|
|
$data['auxiliary_serial_number_two'] = $info['auxiliary_serial_number_two'];
|
|
}
|
|
if ($goods['type'] == 1) {
|
|
$name = $StoreClass->getStoreName($info['store_id']) . '退货至商户';
|
|
} else {
|
|
$name = $StoreClass->getStoreName($info['store_id']) . '调拨出库至' . $StoreClass->getStoreName($stock_info['transfer_to_store_id']);
|
|
}
|
|
$data['name'] = $name;
|
|
$data['position'] = '出库单';
|
|
$data['popular'][] = [
|
|
'add_time' => date('Y-m-d H:i:s', $goods['add_time']),
|
|
'order_number' => $goods['stock_order_number'],
|
|
'position' => $name
|
|
];
|
|
}
|
|
}
|
|
}
|
|
//门店出售
|
|
$SellSerialModel = new SellSerialModel();
|
|
$info = $SellSerialModel->getOrderFind($where, '*', 'id desc');
|
|
if (!empty($info)) {
|
|
$SellModel = new RetailSellModel();
|
|
$sell_info = $SellModel->sellOrderInfo('s.original_price,s.goods_id,s.sku_id,s.add_time,b.order_no,b.store_id', [
|
|
's.id' => $info['outside_id']
|
|
]);
|
|
if (!empty($sell_info)) {
|
|
$map = [
|
|
'goods_id' => $sell_info['goods_id']
|
|
];
|
|
if (!empty($sell_info['sku_id'])) {
|
|
$map['sku_id'] = $sell_info['sku_id'];
|
|
}
|
|
$SaleGoodsModel = new SSaleMGoodsModel();
|
|
$goods = $SaleGoodsModel->getFind($map, 'goods_name,sku_name,cost_price');
|
|
if (!empty($goods)) {
|
|
if (empty($data['purchase_price']) || empty($data['retail_price'])) {
|
|
$data['goods_name'] = $goods['goods_name'];
|
|
$data['sku_name'] = $goods['sku_name'];
|
|
$data['purchase_price'] = round($goods['cost_price'], 2); //成本价
|
|
$data['retail_price'] = round($sell_info['original_price'], 2);
|
|
$data['image_path'] = $ImageClass->basisGoodsIdGetImg([
|
|
'user_type' => 4,
|
|
'goods_id' => $goods['goods_id'],
|
|
'sku_id' => $goods['sku_id']
|
|
]);
|
|
$data['main_serial_number'] = $info['main_serial_number'];
|
|
$data['auxiliary_serial_number_one'] = $info['auxiliary_serial_number_one'];
|
|
$data['auxiliary_serial_number_two'] = $info['auxiliary_serial_number_two'];
|
|
}
|
|
$name = $StoreClass->getStoreName($sell_info['store_id']);
|
|
$data['name'] = $name;
|
|
$data['position'] = '已出售';
|
|
$data['popular'][] = [
|
|
'add_time' => date('Y-m-d H:i:s', $sell_info['add_time']),
|
|
'order_number' => $sell_info['order_no'],
|
|
'position' => $name . '已售'
|
|
];
|
|
}
|
|
}
|
|
}
|
|
//门店报损
|
|
$LossSerialModel = new SLossReportSerialModel();
|
|
$info = $LossSerialModel->getFind($where);
|
|
if (!empty($info)) {
|
|
$LossGoodsModel = new SLossReportGoodsModel();
|
|
$loss_info = $LossGoodsModel->basisOrderFind([
|
|
'id' => $info['outside_id']
|
|
], 'loss_order_number,store_id');
|
|
$name = $StoreClass->getStoreName($loss_info['store_id']);
|
|
$data['name'] = $name;
|
|
$data['position'] = '供给仓报损';
|
|
$data['popular'][] = [
|
|
'add_time' => date('Y-m-d H:i:s', $info['add_time']),
|
|
'order_number' => $loss_info['loss_order_number'],
|
|
'position' => $name . '供给仓报损'
|
|
];
|
|
}
|
|
if (!empty($data)) {
|
|
$popular = $data['popular'];//路径
|
|
array_multisort(array_column($popular, 'add_time'), SORT_ASC, $popular);
|
|
$data['popular'] = $popular;
|
|
return callBack(statusCode()['success'], '查询成功', $data);
|
|
} else {
|
|
return callBack(statusCode()['error'], '未找到该串号');
|
|
}
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], '未找到该串号');
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 盘点删除串号记录
|
|
* @param $param
|
|
* [
|
|
* user_type 3商户 4门店 6收银员
|
|
* id 记录id
|
|
* goods_id
|
|
* sku_id
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function inventorySerialDelete($param)
|
|
{
|
|
switch ($param['user_type']) {
|
|
case 3:
|
|
$InventorySerialModel = new InventoryGoodsSerialModel();
|
|
break;
|
|
case 4:
|
|
case 6:
|
|
$InventorySerialModel = new SInventoryGoodsSerialModel();
|
|
break;
|
|
}
|
|
$where = [
|
|
'outside_id' => $param['id'],
|
|
'goods_id' => $param['goods_id']
|
|
];
|
|
if (!empty($param['sku_id'])) {
|
|
$where['sku_id'] = $param['sku_id'];
|
|
}
|
|
$InventorySerialModel->deleteData($where);
|
|
return callBack(statusCode()['success'], '操作成功');
|
|
}
|
|
|
|
|
|
/**
|
|
* 盘点串号筛选
|
|
* @param $param
|
|
* [
|
|
* user_type 3商户 4门店 6收银员
|
|
* merchant_id
|
|
* store_id
|
|
* goods_id
|
|
* sku_id
|
|
* serial_list
|
|
* type 1盘盈 2盘亏 3无盈亏
|
|
* num 数量
|
|
* add_time
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function inventoryScreen($param)
|
|
{
|
|
$serialList = $param['serial_list'];
|
|
$num = $param['num'];
|
|
$type = $param['type'];
|
|
$serial_arr = []; //出入库的串号信息
|
|
$surplus_arr = []; //多余的不同串号
|
|
$serial_list_arr = []; //修改入库记录的数量
|
|
try {
|
|
switch ($param['user_type']) {
|
|
case 3:
|
|
$WarehouseSerialModel = new WarehouseGoodsSerialModel();
|
|
break;
|
|
case 4:
|
|
case 6:
|
|
$WarehouseSerialModel = new SWarehouseGoodsSerialModel();
|
|
break;
|
|
}
|
|
$where = [
|
|
'goods_id' => $param['goods_id'],
|
|
'num' => ['gt', 0]
|
|
];
|
|
if (!empty($param['sku_id'])) {
|
|
$where['sku_id'] = $param['sku_id'];
|
|
}
|
|
$list = $WarehouseSerialModel->getSelect($where, '', '', 'id,main_serial_number,auxiliary_serial_number_one,auxiliary_serial_number_two');
|
|
switch ($type) {
|
|
case 1:
|
|
case 3:
|
|
if (!empty($serialList)) {
|
|
if (!empty($list)) {
|
|
$warehouse_main_serial_number_arr = array_columns($list, 'main_serial_number');
|
|
} else {
|
|
$warehouse_main_serial_number_arr = [];
|
|
}
|
|
foreach ($serialList as $val) {
|
|
if (!in_array($val['main_serial_number'], $warehouse_main_serial_number_arr, true)) {
|
|
//入库
|
|
if (count($serial_arr) < $num) {
|
|
$serial_arr[] = $val;
|
|
} else {
|
|
$surplus_arr[] = $val;
|
|
}
|
|
}
|
|
}
|
|
//不存在的串号修改
|
|
if (!empty($list)) {
|
|
$stock_main_serial_number_arr = array_columns($serialList, 'main_serial_number');
|
|
foreach ($list as $key => $val) {
|
|
if (!in_array($val['main_serial_number'], $stock_main_serial_number_arr, true)) {
|
|
array_push($serial_list_arr, $val['id']);
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if ($type == 3) {
|
|
$WarehouseSerialModel->updateData($where, [
|
|
'num' => 0
|
|
]);
|
|
}
|
|
}
|
|
break;
|
|
case 2:
|
|
if (!empty($serialList)) {
|
|
$stock_main_serial_number_arr = array_columns($serialList, 'main_serial_number');
|
|
} else {
|
|
$stock_main_serial_number_arr = [];
|
|
}
|
|
if (!empty($list)) {
|
|
foreach ($list as $val) {
|
|
if (!in_array($val['main_serial_number'], $stock_main_serial_number_arr, true)) {
|
|
//出库
|
|
if (count($serial_arr) < $num) {
|
|
$serial_arr[] = $val;
|
|
} else {
|
|
array_push($serial_list_arr, $val['id']);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (!empty($serialList)) {
|
|
$warehouse_main_serial_number_arr = array_columns($list, 'main_serial_number');
|
|
foreach ($serialList as $val) {
|
|
if (!in_array($val['main_serial_number'], $warehouse_main_serial_number_arr, true)) {
|
|
$surplus_arr[] = $val;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
//修改入库的串号数量
|
|
if (!empty($serial_list_arr)) {
|
|
$WarehouseSerialModel->updateData([
|
|
'id' => ['in', $serial_list_arr]
|
|
], [
|
|
'num' => 0
|
|
]);
|
|
}
|
|
//新的入库信息.
|
|
if (!empty($surplus_arr)) {
|
|
$serialResult = $this->warehouseSerial([
|
|
'user_type' => $param['user_type'],
|
|
'merchant_id' => $param['merchant_id'],
|
|
'store_id' => in_array($param['user_type'], ['4', '6']) ? $param['store_id'] : 0,
|
|
'goods_id' => $param['goods_id'],
|
|
'sku_id' => $param['sku_id'] ? $param['sku_id'] : 0,
|
|
'type' => 3,
|
|
'add_time' => $param['add_time'],
|
|
'serial_list' => $surplus_arr
|
|
]);
|
|
if ($serialResult['status'] != 1) {
|
|
return $serialResult;
|
|
}
|
|
}
|
|
return callBack(statusCode()['success'], '操作成功', [
|
|
'serial_arr' => $serial_arr
|
|
]);
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], '串号操作失败');
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 盘点的串号记录添加
|
|
* @param $param
|
|
* [
|
|
* user_type 3商户 4门店
|
|
* merchant_id
|
|
* store_id
|
|
* outside_id
|
|
* goods_id
|
|
* sku_id
|
|
* add_time
|
|
* serial_list 串号列表
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function inventorySerial($param)
|
|
{
|
|
$serial_list = $param['serial_list'];
|
|
$data = [
|
|
'merchant_id' => $param['merchant_id'],
|
|
'outside_id' => $param['outside_id'],
|
|
'goods_id' => $param['goods_id'],
|
|
'sku_id' => $param['sku_id'] ? $param['sku_id'] : 0,
|
|
'add_time' => $param['add_time'],
|
|
'num' => 1
|
|
];
|
|
if ($param['user_type'] == 4 || $param['user_type'] == 6) {
|
|
$data['store_id'] = $param['store_id'];
|
|
}
|
|
if (!empty($serial_list)) {
|
|
$content = [];
|
|
foreach ($serial_list as $val) {
|
|
$data['main_serial_number'] = $val['main_serial_number'];
|
|
$data['auxiliary_serial_number_one'] = $val['auxiliary_serial_number_one'] ? $val['auxiliary_serial_number_one'] : '';
|
|
$data['auxiliary_serial_number_two'] = $val['auxiliary_serial_number_two'] ? $val['auxiliary_serial_number_two'] : '';
|
|
$content[] = $data;
|
|
}
|
|
try {
|
|
if (!empty($content)) {
|
|
switch ($param['user_type']) {
|
|
case 3:
|
|
$InventorySerialModel = new InventoryGoodsSerialModel();
|
|
break;
|
|
case 4:
|
|
case 6:
|
|
$InventorySerialModel = new SInventoryGoodsSerialModel();
|
|
break;
|
|
}
|
|
$id = $InventorySerialModel->addAll($content);
|
|
if (!empty($id)) {
|
|
return callBack(statusCode()['success'], '操作成功');
|
|
} else {
|
|
return callBack(statusCode()['error'], '操作失败');
|
|
}
|
|
} else {
|
|
return callBack(statusCode()['error'], '操作失败');
|
|
}
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], '操作失败');
|
|
}
|
|
} else {
|
|
return callBack(statusCode()['error'], '操作失败');
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 拒收的商品串号列表
|
|
* @param $param
|
|
* [
|
|
* id 记录id
|
|
* serial_number
|
|
* page
|
|
* limit
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function refuseSerialList($param)
|
|
{
|
|
$where = [
|
|
'outside_id' => $param['id'],
|
|
];
|
|
if (!empty($parma['serial_number'])) {
|
|
$where['main_serial_number|auxiliary_serial_number_one|auxiliary_serial_number_two'] = ['like', '%' . $param['serial_number'] . ' % '];
|
|
}
|
|
$param['page'] = $param['page'] ? $param['page'] : '';
|
|
$param['limit'] = $param['limit'] ? $param['limit'] : '';
|
|
$RefuseSerialModel = new RefuseWarehousingSerialModel();
|
|
$list = $RefuseSerialModel->getSelect($where, $param['page'], $param['limit'], ' * ');
|
|
if (!empty($list)) {
|
|
$count = $RefuseSerialModel->getCount($where);
|
|
foreach ($list as &$val) {
|
|
$val['add_time'] = date('Y-m-d H:i:s', $val['add_time']);
|
|
}
|
|
}
|
|
return callBack(statusCode()['success'], '查询成功', [
|
|
'list' => $list ? $list : [],
|
|
'count' => $count ? $count : 0
|
|
]);
|
|
}
|
|
|
|
|
|
/**
|
|
* 门店拒收的串号信息操作
|
|
* @param $param
|
|
* [
|
|
* merchant_id
|
|
* store_id
|
|
* outside_id
|
|
* goods_id
|
|
* sku_id
|
|
* type 拒收类型 1拒收商户调拨 2拒收申请商户调拨 3拒收门店调拨
|
|
* add_time
|
|
* serial_list 串号信息
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function refuseSerial($param)
|
|
{
|
|
$serial_list = $param['serial_list'];
|
|
$data = [
|
|
'merchant_id' => $param['merchant_id'],
|
|
'store_id' => $param['store_id'],
|
|
'outside_id' => $param['outside_id'],
|
|
'goods_id' => $param['goods_id'],
|
|
'sku_id' => $param['sku_id'] ? $param['sku_id'] : 0,
|
|
'type' => $param['type'],
|
|
'add_time' => $param['add_time'],
|
|
'num' => 1
|
|
];
|
|
if (!empty($serial_list)) {
|
|
$content = [];
|
|
foreach ($serial_list as $val) {
|
|
$data['main_serial_number'] = $val['main_serial_number'];
|
|
$data['auxiliary_serial_number_one'] = $val['auxiliary_serial_number_one'] ? $val['auxiliary_serial_number_one'] : '';
|
|
$data['auxiliary_serial_number_two'] = $val['auxiliary_serial_number_two'] ? $val['auxiliary_serial_number_two'] : '';
|
|
$content[] = $data;
|
|
}
|
|
try {
|
|
$SerialModel = new RefuseWarehousingSerialModel();
|
|
$id = $SerialModel->addAll($content);
|
|
if (!empty($id)) {
|
|
return callBack(statusCode()['success'], '操作成功');
|
|
} else {
|
|
return callBack(statusCode()['error'], '操作失败');
|
|
}
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], '操作失败');
|
|
}
|
|
} else {
|
|
return callBack(statusCode()['error'], '操作失败');
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 门店依据外部id删除串号出库记录
|
|
* @param $param
|
|
* [
|
|
* outside_id 外部id
|
|
* merchant_id
|
|
* store_id
|
|
* type
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function basisOutIdStockSerialDelete($param)
|
|
{
|
|
$SerialModel = new SStockGoodsSerialModel();
|
|
$where = [
|
|
'merchant_id' => $param['merchant_id'],
|
|
'store_id' => $param['store_id'],
|
|
'outside_id' => is_array($param['outside_id']) ? ['in', $param['outside_id']] : $param['outside_id'],
|
|
];
|
|
if (!empty($param['type'])) {
|
|
$where['type'] = is_array($param['type']) ? ['in', $param['type']] : $param['type'];
|
|
} else {
|
|
$where['type'] = ['in', ['4', '5', '8', '11']];
|
|
}
|
|
$SerialModel->deleteData($where);
|
|
return callBack(statusCode()['success'], '删除成功');
|
|
}
|
|
|
|
|
|
/**
|
|
* 出库串号删除操作
|
|
* @param $param
|
|
* [
|
|
* user_type 3商户 4门店
|
|
* outside_id 外部id
|
|
* merchant_id
|
|
* store_id
|
|
* goods_id
|
|
* sku_id
|
|
* type
|
|
* ]
|
|
* @return array
|
|
*/
|
|
public function stockSerialDelete($param)
|
|
{
|
|
switch ($param['user_type']) {
|
|
case 3:
|
|
$SerialModel = new StockGoodsSerialModel();
|
|
break;
|
|
case 4:
|
|
$SerialModel = new SStockGoodsSerialModel();
|
|
break;
|
|
}
|
|
$where = [
|
|
'merchant_id' => $param['merchant_id'],
|
|
'outside_id' => $param['outside_id'],
|
|
'goods_id' => $param['goods_id'],
|
|
'type' => $param['type'],
|
|
];
|
|
if (!empty($param['sku_id'])) {
|
|
$where['sku_id'] = $param['sku_id'];
|
|
}
|
|
if ($param['user_type'] == 4) {
|
|
$where['store_id'] = $param['store_id'];
|
|
}
|
|
$SerialModel->deleteData($where);
|
|
return callBack(statusCode()['success'], '删除成功');
|
|
}
|
|
|
|
|
|
/**
|
|
* 出库串号添加操作
|
|
* @param $param
|
|
* [
|
|
* user_type 3商户 4门店
|
|
* merchant_id
|
|
* store_id
|
|
* outside_id 外部id
|
|
* type 出库类型
|
|
* goods_id
|
|
* sku_id
|
|
* add_time
|
|
* serial_list 串号信息
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function stockSerial($param)
|
|
{
|
|
$serial_list = $param['serial_list'];
|
|
$data = [
|
|
'merchant_id' => $param['merchant_id'],
|
|
'outside_id' => $param['outside_id'],
|
|
'goods_id' => $param['goods_id'],
|
|
'sku_id' => $param['sku_id'] ? $param['sku_id'] : 0,
|
|
'type' => $param['type'],
|
|
'add_time' => is_numeric($param['add_time']) ? $param['add_time'] : $_SERVER['REQUEST_TIME'],
|
|
'num' => 1
|
|
];
|
|
if ($param['user_type'] == 4) {
|
|
$data['store_id'] = $param['store_id'];
|
|
}
|
|
if (!empty($serial_list)) {
|
|
$content = [];
|
|
foreach ($serial_list as $val) {
|
|
$data['main_serial_number'] = $val['main_serial_number'];
|
|
$data['auxiliary_serial_number_one'] = $val['auxiliary_serial_number_one'] ? $val['auxiliary_serial_number_one'] : '';
|
|
$data['auxiliary_serial_number_two'] = $val['auxiliary_serial_number_two'] ? $val['auxiliary_serial_number_two'] : '';
|
|
$content[] = $data;
|
|
}
|
|
try {
|
|
if (!empty($content)) {
|
|
switch ($param['user_type']) {
|
|
case 3:
|
|
$SerialModel = new StockGoodsSerialModel();
|
|
break;
|
|
case 4:
|
|
$SerialModel = new SStockGoodsSerialModel();
|
|
break;
|
|
}
|
|
$id = $SerialModel->addAll($content);
|
|
if (!empty($id)) {
|
|
return callBack(statusCode()['success'], '操作成功');
|
|
} else {
|
|
return callBack(statusCode()['error'], '操作失败');
|
|
}
|
|
}
|
|
return callBack(statusCode()['success'], '操作成功');
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], '操作失败');
|
|
}
|
|
} else {
|
|
return callBack(statusCode()['error'], '操作失败');
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 拒收调拨时出库方商品串号数量增加操作
|
|
* @param $param
|
|
* [
|
|
* user_type 3商户 4门店
|
|
* main_serial_number_arr 主串号集合
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function recoverySerialInc($param)
|
|
{
|
|
if (!empty($param['main_serial_number_arr'])) {
|
|
switch ($param['user_type']) {
|
|
case 3:
|
|
$SerialModel = new WarehouseGoodsSerialModel();
|
|
break;
|
|
case 4:
|
|
$SerialModel = new SWarehouseGoodsSerialModel();
|
|
break;
|
|
}
|
|
try {
|
|
$SerialModel->updateData([
|
|
'main_serial_number' => ['in', $param['main_serial_number_arr']]
|
|
], [
|
|
'num' => 1
|
|
]);
|
|
return callBack(statusCode()['success'], '操作成功');
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], '操作失败');
|
|
}
|
|
} else {
|
|
return callBack(statusCode()['error'], '缺失串号信息');
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 入库记录串号数量减少操作
|
|
* @param $param
|
|
* [
|
|
* user_type 3商户 4门店
|
|
* merchant_id
|
|
* store_id
|
|
* serial_id_arr 串号id或串号列表集合
|
|
* type 1id 集合 2串号集合
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function warehouseSerialDec($param)
|
|
{
|
|
if (!empty($param['serial_id_arr']) && !empty($param['type'])) {
|
|
switch ($param['user_type']) {
|
|
case 3:
|
|
$SerialModel = new WarehouseGoodsSerialModel();
|
|
break;
|
|
case 4:
|
|
$SerialModel = new SWarehouseGoodsSerialModel();
|
|
break;
|
|
}
|
|
try {
|
|
$where = [
|
|
'num' => ['gt', 0],
|
|
'merchant_id' => $param['merchant_id'],
|
|
'store_id' => $param['store_id']
|
|
];
|
|
switch ($param['type']) {
|
|
case 1:
|
|
$where['id'] = ['in', $param['serial_id_arr']];
|
|
$SerialModel->updateData($where, [
|
|
'num' => 0
|
|
]);
|
|
break;
|
|
case 2:
|
|
$where['main_serial_number'] = ['in', $param['serial_id_arr']];
|
|
$serial_id_arr = $param['serial_id_arr'];
|
|
foreach ($serial_id_arr as $val) {
|
|
$where['main_serial_number'] = $val['main_serial_number'];
|
|
$where['goods_id'] = $val['goods_id'];
|
|
$SerialModel->updateData($where, [
|
|
'num' => 0
|
|
]);
|
|
}
|
|
break;
|
|
}
|
|
return callBack(statusCode()['success'], '操作成功');
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], '操作失败');
|
|
}
|
|
} else {
|
|
return callBack(statusCode()['error'], '缺失串号信息');
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 入库串号操作
|
|
* @param $param
|
|
* [
|
|
* user_type 3商户 4门店
|
|
* merchant_id
|
|
* store_id
|
|
* outside_id 明细id
|
|
* goods_id
|
|
* sku_id
|
|
* type
|
|
* add_time 添加时间
|
|
* serial_list 串号信息
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function warehouseSerial($param)
|
|
{
|
|
$serial_list = $param['serial_list'];
|
|
$data = [
|
|
'merchant_id' => $param['merchant_id'],
|
|
'outside_id' => $param['outside_id'],
|
|
'goods_id' => $param['goods_id'],
|
|
'sku_id' => $param['sku_id'] ? $param['sku_id'] : 0,
|
|
'type' => $param['type'],
|
|
'add_time' => $param['add_time'],
|
|
'num' => 1,
|
|
];
|
|
if ($param['user_type'] == 4 || $param['user_type'] == 6) {
|
|
$data['store_id'] = $param['store_id'];
|
|
}
|
|
if (!empty($serial_list)) {
|
|
$content = [];
|
|
foreach ($serial_list as $val) {
|
|
$data['main_serial_number'] = $val['main_serial_number'];
|
|
$data['auxiliary_serial_number_one'] = $val['auxiliary_serial_number_one'] ? $val['auxiliary_serial_number_one'] : '';
|
|
$data['auxiliary_serial_number_two'] = $val['auxiliary_serial_number_two'] ? $val['auxiliary_serial_number_two'] : '';
|
|
$content[] = $data;
|
|
}
|
|
try {
|
|
switch ($param['user_type']) {
|
|
case 3:
|
|
$SerialModel = new WarehouseGoodsSerialModel();
|
|
break;
|
|
case 4:
|
|
case 6:
|
|
$SerialModel = new SWarehouseGoodsSerialModel();
|
|
break;
|
|
}
|
|
$id = $SerialModel->addAll($content);
|
|
if (!empty($id)) {
|
|
return callBack(statusCode()['success'], '操作成功');
|
|
} else {
|
|
return callBack(statusCode()['error'], '操作失败');
|
|
}
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], '操作失败');
|
|
}
|
|
} else {
|
|
return callBack(statusCode()['error'], '操作失败');
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 采购入库的采购串号信息操作
|
|
* @param $param
|
|
* [
|
|
* user_type 3商户 4门店
|
|
* serial_list 串号信息
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function warehousePurchaseSerial($param)
|
|
{
|
|
$serial_list = $param['serial_list'];
|
|
if (!empty($serial_list)) {
|
|
try {
|
|
switch ($param['user_type']) {
|
|
case 3:
|
|
$SerialModel = new PurchaseGoodsSerialModel();
|
|
break;
|
|
case 4:
|
|
$SerialModel = new SPurchaseGoodsSerialModel();
|
|
break;
|
|
}
|
|
foreach ($serial_list as $val) {
|
|
$SerialModel->updateData([
|
|
'id' => $val['id']
|
|
], [
|
|
'num' => 0
|
|
]);
|
|
}
|
|
return callBack(statusCode()['success'], '操作成功');
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], '操作失败');
|
|
}
|
|
} else {
|
|
return callBack(statusCode()['error'], '操作失败');
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 入库记录可操作的串号信息
|
|
* @param $param
|
|
* [
|
|
* user_type 3商户 4门店
|
|
* merchant_id
|
|
* store_id
|
|
* goods_id
|
|
* sku_id
|
|
* serial_number 串号
|
|
* exists_id_arr 已经选择的串号主键id集合
|
|
* page
|
|
* limit
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function warehouseSerialList($param)
|
|
{
|
|
$where = [
|
|
'merchant_id' => $param['merchant_id'],
|
|
'goods_id' => $param['goods_id'],
|
|
'num' => ['gt', 0]
|
|
];
|
|
if (!empty($param['sku_id'])) {
|
|
$where['sku_id'] = $param['sku_id'];
|
|
}
|
|
if (!empty($param['serial_number'])) {
|
|
$where['main_serial_number|auxiliary_serial_number_one|auxiliary_serial_number_two'] = ['like', '%' . $param['serial_number'] . '%'];
|
|
}
|
|
if (!empty($param['exists_id_arr'])) {
|
|
$where['id'] = ['not in', $param['exists_id_arr']];
|
|
}
|
|
if ($param['user_type'] == 4) {
|
|
$where['store_id'] = $param['store_id'];
|
|
}
|
|
try {
|
|
switch ($param['user_type']) {
|
|
case 3:
|
|
//商户
|
|
$SerialModel = new WarehouseGoodsSerialModel();
|
|
break;
|
|
case 4:
|
|
//门店
|
|
$SerialModel = new SWarehouseGoodsSerialModel();
|
|
break;
|
|
}
|
|
$list = $SerialModel->getSelect($where, $param['page'], $param['limit'], 'id,main_serial_number,auxiliary_serial_number_one,auxiliary_serial_number_two,add_time');
|
|
if (!empty($list)) {
|
|
$count = $SerialModel->getCount($where);
|
|
foreach ($list as &$val) {
|
|
$val['add_time'] = date('Y-m-d H:i:s', $val['add_time']);
|
|
}
|
|
}
|
|
return callBack(statusCode()['success'], '查询成功', [
|
|
'list' => $list ? $list : [],
|
|
'count' => $count ? $count : 0
|
|
]);
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['success'], '查询成功', [
|
|
'list' => [],
|
|
'count' => 0
|
|
]);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 报损记录关联的串号操作
|
|
* @param $param
|
|
* [
|
|
* user_type 3商户 4门店
|
|
* merchant_id
|
|
* store_id
|
|
* outside_id
|
|
* goods_id
|
|
* sku_id
|
|
* add_time
|
|
* serial_list
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function lossSerial($param)
|
|
{
|
|
$serial_list = $param['serial_list'];
|
|
$data = [
|
|
'merchant_id' => $param['merchant_id'],
|
|
'outside_id' => $param['outside_id'],
|
|
'goods_id' => $param['goods_id'],
|
|
'sku_id' => $param['sku_id'],
|
|
'type' => 1,
|
|
'add_time' => $param['add_time'],
|
|
'num' => 1
|
|
];
|
|
if ($param['user_type'] == 4) {
|
|
$data['store_id'] = $param['store_id'];
|
|
}
|
|
if (!empty($serial_list)) {
|
|
$content = [];
|
|
foreach ($serial_list as $val) {
|
|
$data['main_serial_number'] = $val['main_serial_number'];
|
|
$data['auxiliary_serial_number_one'] = $val['auxiliary_serial_number_one'] ? $val['auxiliary_serial_number_one'] : '';
|
|
$data['auxiliary_serial_number_two'] = $val['auxiliary_serial_number_two'] ? $val['auxiliary_serial_number_two'] : '';
|
|
$content[] = $data;
|
|
}
|
|
try {
|
|
switch ($param['user_type']) {
|
|
case 3:
|
|
$SerialModel = new LossReportSerialModel();
|
|
break;
|
|
case 4:
|
|
$SerialModel = new SLossReportSerialModel();
|
|
break;
|
|
}
|
|
$id = $SerialModel->addAll($content);
|
|
if (!empty($id)) {
|
|
return callBack(statusCode()['success'], '操作成功');
|
|
} else {
|
|
return callBack(statusCode()['error'], '操作失败');
|
|
}
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], '操作失败');
|
|
}
|
|
} else {
|
|
return callBack(statusCode()['error'], '操作失败');
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 记录详情的串号列表
|
|
* @param $param
|
|
* [
|
|
* user_type 3商户 4门店
|
|
* id 记录id
|
|
* serial_number 串号搜所
|
|
* fields
|
|
* page
|
|
* limit
|
|
* serial_type 1报损 2入库 3出库 4盘点
|
|
* type入库类型 入库类型 0其他入库 1采购入库 2补货入库 3盘盈入库 4商户调拨入库 5其他门店调拨入库 6该门店申请调拨入库 7初始化商品档案入库 8拼团退货入库 9秒杀退货入库 10拆分入库 11收银退货入库 12商城退货入库 13组合入库 14拼团换货入库
|
|
*15秒杀换货入库 16商城普通换货入库 17预售退货入库 18预售换货入库 19收银赠品退货入库 20 商城赠品退货入库 21门店调拨拒收入库
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function recordSerialList($param)
|
|
{
|
|
switch ($param['user_type']) {
|
|
case 3:
|
|
switch ($param['serial_type']) {
|
|
case 1:
|
|
$RecordModel = new LossReportSerialModel();
|
|
break;
|
|
case 2:
|
|
$RecordModel = new WarehouseGoodsSerialModel();
|
|
break;
|
|
case 3:
|
|
$RecordModel = new StockGoodsSerialModel();
|
|
break;
|
|
case 4:
|
|
$RecordModel = new InventoryGoodsSerialModel();
|
|
break;
|
|
}
|
|
break;
|
|
case 4:
|
|
switch ($param['serial_type']) {
|
|
case 1:
|
|
$RecordModel = new SLossReportSerialModel();
|
|
break;
|
|
case 2:
|
|
$RecordModel = new SWarehouseGoodsSerialModel();
|
|
break;
|
|
case 3:
|
|
$RecordModel = new SStockGoodsSerialModel();
|
|
break;
|
|
case 4:
|
|
$RecordModel = new SInventoryGoodsSerialModel();
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
$where['outside_id'] = is_array($param['id']) ? ['in', $param['id']] : $param['id'];
|
|
if (!empty($param['serial_number'])) {
|
|
$where['main_serial_number|auxiliary_serial_number_one|auxiliary_serial_number_two'] = ['like', '%' . $param['serial_number'] . '%'];
|
|
}
|
|
if (!empty($param['type'])) {
|
|
$where['type'] = is_array($param['type']) ? ['in', $param['type']] : $param['type'];
|
|
}
|
|
$param['page'] = $param['page'] ? $param['page'] : '';
|
|
$param['limit'] = $param['limit'] ? $param['limit'] : '';
|
|
$fields = $param['fields'] ? $param['fields'] : '*';
|
|
$list = $RecordModel->getSelect($where, $param['page'], $param['limit'], $fields);
|
|
if (!empty($list)) {
|
|
if (!empty($param['page']) && !empty($param['limit'])) {
|
|
$count = $RecordModel->getCount($where);
|
|
}
|
|
if (empty($param['fields'])) {
|
|
foreach ($list as &$val) {
|
|
$val['add_time'] = date('Y-m-d H:i:s', $val['add_time']);
|
|
}
|
|
}
|
|
}
|
|
return callBack(statusCode()['success'], '查询成功', [
|
|
'list' => $list ? $list : [],
|
|
'count' => $count ? $count : 0
|
|
]);
|
|
}
|
|
|
|
|
|
/**
|
|
* 采购编辑串号操作
|
|
* @param $param
|
|
* [
|
|
* user_type 3商户 4门店
|
|
* merchant_id
|
|
* store_id
|
|
* goods_id
|
|
* sku_id
|
|
* add_time
|
|
* outside_id 外部id
|
|
* serial_list 串号信息
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function purchaseSerialUpdate($param)
|
|
{
|
|
$serial_list = $param['serial_list'];
|
|
try {
|
|
switch ($param['user_type']) {
|
|
case 3:
|
|
//商户
|
|
$SerialModel = new PurchaseGoodsSerialModel();
|
|
$WarehouseSerialModel = new WarehouseGoodsSerialModel();
|
|
break;
|
|
case 4:
|
|
//门店
|
|
$SerialModel = new SPurchaseGoodsSerialModel();
|
|
$WarehouseSerialModel = new SWarehouseGoodsSerialModel();
|
|
break;
|
|
}
|
|
$data = [
|
|
'merchant_id' => $param['merchant_id'],
|
|
'outside_id' => $param['outside_id'],
|
|
'goods_id' => $param['goods_id'],
|
|
'sku_id' => $param['sku_id'] ? $param['sku_id'] : 0,
|
|
'type' => 1,
|
|
'add_time' => $param['add_time'],
|
|
'num' => 1,
|
|
'status' => 1
|
|
];
|
|
if (!empty($serial_list)) {
|
|
$content = [];
|
|
$serial_id_arr = []; //id集合
|
|
$map = [
|
|
'type' => ['in', '1,2'],
|
|
'num' => 1,
|
|
'merchant_id' => $param['merchant_id'],
|
|
];
|
|
if ($param['user_type'] == 4) {
|
|
$data['store_id'] = $param['store_id'];
|
|
$map['store_id'] = $param['store_id'];
|
|
}
|
|
foreach ($serial_list as $val) {
|
|
if (!empty($val['id'])) {
|
|
$old_info = $SerialModel->basisOrderFind([
|
|
'id' => $val['id']
|
|
], 'main_serial_number,auxiliary_serial_number_one,auxiliary_serial_number_two');
|
|
$map['main_serial_number'] = $old_info['main_serial_number'];
|
|
$WarehouseSerialModel->updateData($map, [
|
|
'main_serial_number' => $val['main_serial_number'],
|
|
'auxiliary_serial_number_one' => $val['auxiliary_serial_number_one'] ? $val['auxiliary_serial_number_one'] : '',
|
|
'auxiliary_serial_number_two' => $val['auxiliary_serial_number_two'] ? $val['auxiliary_serial_number_two'] : ''
|
|
]);
|
|
$SerialModel->updateData([
|
|
'id' => $val['id']
|
|
], [
|
|
'main_serial_number' => $val['main_serial_number'],
|
|
'auxiliary_serial_number_one' => $val['auxiliary_serial_number_one'] ? $val['auxiliary_serial_number_one'] : '',
|
|
'auxiliary_serial_number_two' => $val['auxiliary_serial_number_two'] ? $val['auxiliary_serial_number_two'] : ''
|
|
]);
|
|
$serial_id_arr[] = $val['id'];
|
|
} else {
|
|
$data['main_serial_number'] = $val['main_serial_number'];
|
|
$data['auxiliary_serial_number_one'] = $val['auxiliary_serial_number_one'] ? $val['auxiliary_serial_number_one'] : '';
|
|
$data['auxiliary_serial_number_two'] = $val['auxiliary_serial_number_two'] ? $val['auxiliary_serial_number_two'] : '';
|
|
$content[] = $data;
|
|
}
|
|
}
|
|
if (!empty($serial_id_arr)) {
|
|
$SerialModel->updateData(['outside_id' => $param['outside_id'], 'id' => ['not in', $serial_id_arr]], [
|
|
'status' => 2
|
|
]);
|
|
} else {
|
|
$SerialModel->updateData(['outside_id' => $param['outside_id']], [
|
|
'status' => 2
|
|
]);
|
|
}
|
|
if (!empty($content)) {
|
|
$SerialModel->addAll($content);
|
|
}
|
|
return callBack(statusCode()['success'], '串号操作成功');
|
|
} else {
|
|
return callBack(statusCode()['error'], '串号操作失败');
|
|
}
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], '串号操作失败');
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 采购退货串号操作
|
|
* @param $param
|
|
* [
|
|
* user_type 3商户 4门店
|
|
* merchant_id
|
|
* store_id
|
|
* outside_id 退货明细id
|
|
* goods_id
|
|
* sku_id
|
|
* add_time 添加时间
|
|
* serial_list 串号信息
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function retreatSerial($param)
|
|
{
|
|
$param['type'] = 2; //采购退货
|
|
$result = $this->purchaseSerial($param);
|
|
if ($result['status'] != 1) {
|
|
return $result;
|
|
}
|
|
$serial_list = $param['serial_list'];
|
|
try {
|
|
switch ($param['user_type']) {
|
|
case 3:
|
|
$SerialMode = new PurchaseGoodsSerialModel();
|
|
break;
|
|
case 4:
|
|
$SerialMode = new SPurchaseGoodsSerialModel();
|
|
break;
|
|
}
|
|
foreach ($serial_list as $val) {
|
|
$SerialMode->updateSetDec([
|
|
'id' => $val['id']
|
|
], 'num', 1);
|
|
}
|
|
return callBack(statusCode()['success'], '操作成功');
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], '操作失败');
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 采购管理串码信息操作
|
|
* @param $param
|
|
* [
|
|
* user_type 3商户 4门店
|
|
* merchant_id
|
|
* store_id
|
|
* outside_id 外部id
|
|
* goods_id
|
|
* sku_id
|
|
* type 1采购 2采购退货
|
|
* add_time 添加时间
|
|
* serial_list 串码信息
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function purchaseSerial($param)
|
|
{
|
|
$serial_list = $param['serial_list'];
|
|
if (!empty($serial_list)) {
|
|
$data = [
|
|
'merchant_id' => $param['merchant_id'],
|
|
'outside_id' => $param['outside_id'],
|
|
'goods_id' => $param['goods_id'],
|
|
'sku_id' => $param['sku_id'],
|
|
'type' => $param['type'],
|
|
'add_time' => $param['add_time'],
|
|
'num' => 1,
|
|
'status' => 1
|
|
];
|
|
if ($param['user_type'] == 4) {
|
|
$data['store_id'] = $param['store_id'];
|
|
}
|
|
$content = [];
|
|
foreach ($serial_list as $val) {
|
|
$data['main_serial_number'] = $val['main_serial_number'];
|
|
$data['auxiliary_serial_number_one'] = $val['auxiliary_serial_number_one'] ? $val['auxiliary_serial_number_one'] : '';
|
|
$data['auxiliary_serial_number_two'] = $val['auxiliary_serial_number_two'] ? $val['auxiliary_serial_number_two'] : '';
|
|
$content[] = $data;
|
|
}
|
|
try {
|
|
switch ($param['user_type']) {
|
|
case 3:
|
|
$SerialModel = new PurchaseGoodsSerialModel();
|
|
break;
|
|
case 4:
|
|
$SerialModel = new SPurchaseGoodsSerialModel();
|
|
break;
|
|
}
|
|
$result = $SerialModel->addAll($content);
|
|
if (!empty($result)) {
|
|
return callBack(statusCode()['success'], '串码信息保存成功');
|
|
} else {
|
|
return callBack(statusCode()['error'], '串码信息保存失败');
|
|
}
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], '串码信息保存失败');
|
|
}
|
|
} else {
|
|
return callBack(statusCode()['error'], '串码信息保存失败');
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 采购退货可退商品的串码信息
|
|
* @param $param
|
|
* [
|
|
* operator_type 1后台 2收银 3助手
|
|
* user_type 3商户 4门店
|
|
* id 采购明细id
|
|
* exists_id_arr 已经选中的id
|
|
* serial_number 串号
|
|
* page
|
|
* limit
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function returnableSerialList($param)
|
|
{
|
|
switch ($param['user_type']) {
|
|
case 3:
|
|
$SerialModel = new PurchaseGoodsSerialModel();
|
|
break;
|
|
case 4:
|
|
$SerialModel = new SPurchaseGoodsSerialModel();
|
|
break;
|
|
}
|
|
$where = [
|
|
'outside_id' => $param['id'],
|
|
'type' => 1,
|
|
'num' => ['gt', 0],
|
|
'status' => 1
|
|
];
|
|
if (!empty($param['serial_number']) && $param['operator_type'] == 3) {
|
|
$where['main_serial_number|auxiliary_serial_number_one|auxiliary_serial_number_two'] = $param['serial_number'];
|
|
} else if (!empty($param['serial_number'])) {
|
|
$where['main_serial_number|auxiliary_serial_number_one|auxiliary_serial_number_two'] = ['like', '%' . $param['serial_number'] . '%'];
|
|
}
|
|
if (!empty($param['exists_id_arr'])) {
|
|
$where['id'] = ['not in', $param['exists_id_arr']];
|
|
}
|
|
try {
|
|
if (!empty($param['page']) && !empty($param['limit'])) {
|
|
$list = $SerialModel->getSelect($where, $param['page'], $param['limit'], 'id,main_serial_number,auxiliary_serial_number_one,auxiliary_serial_number_two');
|
|
if (!empty($list)) {
|
|
$count = $SerialModel->getCount($where);
|
|
}
|
|
} else {
|
|
$list = $SerialModel->getSelect($where, '', '', 'id,main_serial_number,auxiliary_serial_number_one,auxiliary_serial_number_two');
|
|
}
|
|
return callBack(statusCode()['success'], '查询成功', [
|
|
'count' => $count ? $count : 0,
|
|
'list' => $list ? $list : []
|
|
]);
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['success'], '查询成功', [
|
|
'count' => 0,
|
|
'list' => []
|
|
]);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 采购明细与退货明细的串号信息
|
|
* @param $param
|
|
* [
|
|
* operator_type 1后台 2收银端 3助手端
|
|
* user_type 3商户 4门店
|
|
* id 明细id
|
|
* type 1采购 2退货
|
|
* serial_number 串号
|
|
* num
|
|
* page
|
|
* limit
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function purchaseDetailSerial($param)
|
|
{
|
|
switch ($param['user_type']) {
|
|
case 3:
|
|
$SerialModel = new PurchaseGoodsSerialModel();
|
|
break;
|
|
case 4:
|
|
$SerialModel = new SPurchaseGoodsSerialModel();
|
|
break;
|
|
}
|
|
$where = [
|
|
'outside_id' => is_array($param['id']) ? ['in', $param['id']] : $param['id'],
|
|
'type' => $param['type'],
|
|
'status' => 1
|
|
];
|
|
if (!empty($param['serial_number'])) {
|
|
$where['main_serial_number|auxiliary_serial_number_one|auxiliary_serial_number_two'] = ['like', '%' . $param['serial_number'] . '%'];
|
|
}
|
|
try {
|
|
if (!empty($param['page']) && !empty($param['limit'])) {
|
|
$list = $SerialModel->getSelect($where, $param['page'], $param['limit'], 'id,main_serial_number,auxiliary_serial_number_one,auxiliary_serial_number_two,add_time');
|
|
if (!empty($list)) {
|
|
$count = $SerialModel->getCount($where);
|
|
foreach ($list as &$val) {
|
|
$val['add_time'] = date('Y-m-d H:i:s', $val['add_time']);
|
|
}
|
|
}
|
|
return callBack(statusCode()['success'], '查询成功', [
|
|
'list' => $list ? $list : [],
|
|
'count' => $count ? $count : 0
|
|
]);
|
|
} else {
|
|
$list = $SerialModel->getSelect($where, '', '', 'id,main_serial_number,auxiliary_serial_number_one,auxiliary_serial_number_two,num');
|
|
return callBack(statusCode()['success'], '查询成功', $list);
|
|
}
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['success'], '查询成功', []);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 单个商品验证串码信息
|
|
* @param $param
|
|
* [
|
|
* user_type 3商户 4门店
|
|
* exist_id_arr 存在id
|
|
* merchant_id
|
|
* store_id
|
|
* goods_id
|
|
* sku_id
|
|
* serial_list 串码信息
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function singleGoodsVerify($param)
|
|
{
|
|
$serial_list = json_decode(htmlspecialchars_decode($param['serial_list']), true);
|
|
if (empty($param['goods_id']) || empty($serial_list)) {
|
|
return callBack(statusCode()['error'], '请输入串码信息');
|
|
}
|
|
$where = [
|
|
'merchant_id',
|
|
'goods_id' => $param['goods_id'],
|
|
'type' => 1,
|
|
'num' => ['gt', 0],
|
|
'status' => 1
|
|
];
|
|
if (!empty($param['sku_id'])) {
|
|
$where['sku_id'] = $param['sku_id'];
|
|
}
|
|
if (!empty($param['store_id'])) {
|
|
$where['store_id'] = $param['store_id'];
|
|
}
|
|
if (!empty($param['exist_id_arr'])) {
|
|
$where['outside_id'] = ['not in', $param['exist_id_arr']];
|
|
}
|
|
switch ($param['user_type']) {
|
|
case 3:
|
|
$SerialModel = new PurchaseGoodsSerialModel();
|
|
$WarehouseSerialModel = new WarehouseGoodsSerialModel();
|
|
break;
|
|
case 4:
|
|
$SerialModel = new SPurchaseGoodsSerialModel();
|
|
$WarehouseSerialModel = new SWarehouseGoodsSerialModel();
|
|
break;
|
|
}
|
|
$list = $SerialModel->getSelect($where, '', '', 'main_serial_number,auxiliary_serial_number_one,auxiliary_serial_number_two');
|
|
unset($where['type']);
|
|
unset($where['status']);
|
|
unset($where['outside_id']);
|
|
$warehouseList = $WarehouseSerialModel->getSelect($where, '', '', 'main_serial_number,auxiliary_serial_number_one,auxiliary_serial_number_two');
|
|
$data = [];
|
|
if (!empty($list)) {
|
|
foreach ($list as $val) {
|
|
if (!empty($val['main_serial_number'])) {
|
|
$data[] = $val['main_serial_number'];
|
|
}
|
|
if (!empty($val['auxiliary_serial_number_one'])) {
|
|
$data[] = $val['auxiliary_serial_number_one'];
|
|
}
|
|
if (!empty($val['auxiliary_serial_number_two'])) {
|
|
$data[] = $val['auxiliary_serial_number_two'];
|
|
}
|
|
}
|
|
}
|
|
if (!empty($warehouseList)) {
|
|
foreach ($warehouseList as $val) {
|
|
if (!empty($val['main_serial_number'])) {
|
|
$data[] = $val['main_serial_number'];
|
|
}
|
|
if (!empty($val['auxiliary_serial_number_one'])) {
|
|
$data[] = $val['auxiliary_serial_number_one'];
|
|
}
|
|
if (!empty($val['auxiliary_serial_number_two'])) {
|
|
$data[] = $val['auxiliary_serial_number_two'];
|
|
}
|
|
}
|
|
}
|
|
$result = $this->serialVerify([
|
|
'serial_list' => $serial_list,
|
|
'data' => $data,
|
|
'type' => 1,
|
|
'user_type' => $param['user_type']
|
|
]);
|
|
unset($result['data']);
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* 验证串号列表信息
|
|
* @param $param
|
|
* [
|
|
* user_type 3商户 4门店
|
|
* serial_list 串码信息
|
|
* data 已经存在的串码集合 非必传
|
|
* type 1采购编辑
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function serialVerify($param)
|
|
{
|
|
$serial_list = $param['serial_list'];
|
|
if (!empty($param['data'])) {
|
|
$data = $param['data'];
|
|
} else {
|
|
$data = [];
|
|
}
|
|
if (!empty($param['type']) && !empty($param['user_type'])) {
|
|
switch ($param['user_type']) {
|
|
case 3:
|
|
if ($param['type'] == 1) {
|
|
$SerialModel = new PurchaseGoodsSerialModel();
|
|
}
|
|
break;
|
|
case 4:
|
|
if ($param['type'] == 1) {
|
|
$SerialModel = new SPurchaseGoodsSerialModel();
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
foreach ($serial_list as $key => $value) {
|
|
if (empty($value['main_serial_number']) || mb_strlen($value['main_serial_number'], 'UTF8') > 20) {
|
|
return callBack(statusCode()['error'], $value['main_serial_number'] . '主串码有误,最长20位');
|
|
}
|
|
if (!empty($value['id']) && !empty($param['type'])) {
|
|
$serial_info = $SerialModel->getFieldInfo([
|
|
'id' => $value['id']
|
|
], 'main_serial_number,auxiliary_serial_number_one,auxiliary_serial_number_two');
|
|
if (!in_array($value['main_serial_number'], $serial_info, true) && in_array($value['main_serial_number'], $data, true)) {
|
|
return callBack(statusCode()['error'], $value['main_serial_number'] . '主串码存在重复');
|
|
}
|
|
} else if (in_array($value['main_serial_number'], $data, true)) {
|
|
return callBack(statusCode()['error'], $value['main_serial_number'] . '主串码存在重复');
|
|
}
|
|
$data[] = $value['main_serial_number'];
|
|
if (!empty($value['auxiliary_serial_number_one'])) {
|
|
if (mb_strlen($value['auxiliary_serial_number_one'], 'UTF8') > 20) {
|
|
return callBack(statusCode()['error'], $value['auxiliary_serial_number_one'] . '辅助串码1最长20位');
|
|
}
|
|
if (!empty($value['id']) && !empty($param['type'])) {
|
|
if (!in_array($value['auxiliary_serial_number_one'], $serial_info, true) && in_array($value['auxiliary_serial_number_one'], $data, true)) {
|
|
return callBack(statusCode()['error'], $value['auxiliary_serial_number_one'] . '辅助串码1存在重复');
|
|
}
|
|
} else if (in_array($value['auxiliary_serial_number_one'], $data, true)) {
|
|
return callBack(statusCode()['error'], $value['auxiliary_serial_number_one'] . '辅助串码1存在重复');
|
|
}
|
|
$data[] = $value['auxiliary_serial_number_one'];
|
|
}
|
|
if (!empty($value['auxiliary_serial_number_two'])) {
|
|
if (mb_strlen($value['auxiliary_serial_number_two'], 'UTF8') > 20) {
|
|
return callBack(statusCode()['error'], $value['auxiliary_serial_number_two'] . '辅助串码2最长20位');
|
|
}
|
|
if (!empty($value['id']) && !empty($param['type'])) {
|
|
if (!in_array($value['auxiliary_serial_number_two'], $serial_info, true) && in_array($value['auxiliary_serial_number_two'], $data, true)) {
|
|
return callBack(statusCode()['error'], $value['auxiliary_serial_number_two'] . '辅助串码2存在重复');
|
|
}
|
|
} else if (in_array($value['auxiliary_serial_number_two'], $data, true)) {
|
|
return callBack(statusCode()['error'], $value['auxiliary_serial_number_two'] . '辅助串码2存在重复');
|
|
}
|
|
$data[] = $value['auxiliary_serial_number_two'];
|
|
}
|
|
}
|
|
return callBack(statusCode()['success'], '验证成功', $data);
|
|
}
|
|
} |