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

986 行
36 KiB
PHP
可执行文件

<?php
namespace Common\Business;
use Common\Model\JurisdictionUserModel;
use Common\Model\ModifyPriceGoodsModel;
use Common\Model\ModifyPriceOrderModel;
use Common\Model\PurchaseGoodsModel;
use Common\Model\PurchaseOrderModel;
use Common\Model\SaleMGoodsModel;
use Common\Model\SaleWarehouseModel;
use Common\Model\SModifyPriceGoodsModel;
use Common\Model\SModifyPriceOrderModel;
use Common\Model\SPurchaseGoodsModel;
use Common\Model\SPurchaseOrderModel;
use Common\Model\SSaleMGoodsModel;
use Common\Model\SSaleWarehouseModel;
use Common\Model\SWarehousingGoodsModel;
use Common\Model\SWarehousingRecordModel;
use Common\Model\WarehousingGoodsModel;
use Common\Model\WarehousingRecordModel;
//[1.6.9]
/**
* 调价单类
* Class ModifyPriceSingle
* [
* 创建调价单 modifyPriceOperation
* 加入调价单商品表 ModifyPriceGoodsAdd
* 修改采购记录 modifyPurchaseRecord
* 修改入库价 modifyWarehousePrice
* 新增调价单操作 createModifyPriceOrder
* 创建调价单的参数验证 modifyPriceOperationVerify
* 选择的调价商品列表 getGoodsList
* 选择的调价商品列表的where条件 getGoodsListTerm
* 选择的调价商品验证 getGoodsListVerify
* 调价单详情的商品列表 ModifyPriceGoodsList
* 调价单详情导出 ModifyPriceGoodsListExport
* 调价单列表 getModifyPriceSingleList
* 调价单列表导出 ModifyPriceSingleListExport
* 调价单列表的参数验证 getModifyPriceSingleVerify
* 调价单列表的where条件 getModifyPriceSingleTerm
* ]
* @package Common\ModifyPriceSingle
*/
class ModifyPriceSingle
{
/**
* 创建调价单
* @param $parameter
* [
* user_type 1商户 2门店
* merchant_id
* store_id
* supplier_type 1常规供货商 2寄售供货商
* type 1初始化入库 2采购单 3其他入库
* modify_order_number 修改的订单号
* operator_id 操作人id
* remarks 备注
* goodsList=>[
* goods_id 商品id
* sku_id 规格id
* purchase_price 原进价
* goods_class_id 分类id
* attribute_state 1常规 2规格
* pricing_method 1不称重 2称重
* ]
* ]
* @return array
* [
* status
* message
* ]
*/
public function modifyPriceOperation($parameter)
{
$verify = $this->modifyPriceOperationVerify($parameter);
if ($verify['status'] != 1) {
return $verify;
}
$parameter['time'] = time();
$WarehousingClass = new WarehousingRecord();
switch ($parameter['user_type']) {
case 1:
//商户
$warehouseInfo = $WarehousingClass->getMerchantSaleWarehouse($parameter); //商户供给仓查询
switch ($parameter['type']) {
case 2:
//采购单
$modifyOrderModel = new PurchaseOrderModel();
break;
case 3:
//入库单
$modifyOrderModel = new WarehousingRecordModel();
break;
}
break;
case 2:
//门店
$warehouseInfo = $WarehousingClass->getStoreSaleWarehouse($parameter); //门店供给仓
$where['store_id'] = $parameter['store_id'];
switch ($parameter['type']) {
case 2:
//采购单
$modifyOrderModel = new SPurchaseOrderModel();
break;
case 3:
//入库单
$modifyOrderModel = new SWarehousingRecordModel();
break;
}
break;
}
if (empty($warehouseInfo)) {
return ['status' => 0, 'message' => '请创建供给仓'];
}
if (in_array($parameter['type'], [2, 3])) {
//获取修改订单id
$where['merchant_id'] = $parameter['merchant_id'];
$where['status'] = 1;
$where['order_number'] = $parameter['modify_order_number'];
$modify_order_id = $modifyOrderModel->getFindField($where, "id");
if (empty($modify_order_id)) {
return ['status' => 0, 'message' => '未找到改订单'];
}
}
$parameter['warehouse_id'] = $warehouseInfo['id'];
$parameter['modify_order_id'] = $modify_order_id ? $modify_order_id : '';
$result = $this->createModifyPriceOrder($parameter); //创建调价单
if ($result['status'] != 1) {
return $result;
}
$parameter['orderId'] = $result['data']['id']; //调价单id
$parameter['orderNumber'] = "MG" . orderNumber($parameter['orderId']); //调价单号
$result = $this->ModifyPriceGoodsAdd($parameter); //加入调价商品表修改记录表
if ($result['status'] != 1) {
return ['status' => 0, 'message' => '暂无修改'];
}
$parameter['list'] = $result['data']['newWarehouseOrderMoney']; //入库单金额修改信息
if (!empty($parameter['list']) && in_array($parameter['type'], [2, 3])) {
$WarehousingClass->modifyWarehousingOrderMoney($parameter);
}
unset($parameter['list']);
if ($parameter['type'] == 2) {
//采购单
$parameter['id'] = $modify_order_id;
$parameter['money_total'] = round($result['data']['newPurchaseOrderMoney'], 2); //采购单金额修改信息
$PurchaseOrderClass = new PurchaseOrder();
$PurchaseOrderClass->modifyPurchaseOrderMoney($parameter); //修改采购单
$parameter['purchase_order_id'] = $parameter['modify_order_id']; //采购单id
$parameter['payable_money'] = $parameter['money_total']; //修改金额
if ($parameter['supplier_type'] != 2) {
$PurchasePayableClass = new PurchasePayable();
$PurchasePayableClass->modifyOrderMoney($parameter); //修改采购应付款
}
unset($parameter['money_total']);
unset($parameter['id']);
}
switch ($parameter['user_type']) {
case 1:
//商户
$CostPriceModel = new ModifyPriceOrderModel();
break;
case 2:
//门店
$CostPriceModel = new SModifyPriceOrderModel();
break;
}
try {
$CostPriceModel->updateData([
'id' => $parameter['orderId']
], [
'status' => 1,
'order_number' => $parameter['orderNumber'],
'goods_species' => count($parameter['goodsList'])
]);
return ['status' => 1, 'message' => '操作成功'];
} catch (\Exception $e) {
return ['status' => 0, 'message' => '操作失败'];
}
}
/**
* 加入调价单商品表
* @param $parameter
* [
* user_type 1商户 2门店
* merchant_id
* store_id
* goodsList 商品信息
* type 1初始化入库 2采购单 3其他入库
* modify_order_number 修改的订单号
* operator_id 操作人id
* ]
* @return array
* [
* status
* message
* data=>[
* newWarehouseOrderMoney 入库单列表
* newPurchaseOrderMoney 采购单列表
* ]
* ]
*/
public function ModifyPriceGoodsAdd($parameter)
{
$parameter['newWarehouseOrderMoney'] = []; //入库单金额新信息
$parameter['newPurchaseOrderMoney'] = 0; //采购单金额
$data = [
'merchant_id' => $parameter['merchant_id'],
'modify_price_order_id' => $parameter['orderId'],
'warehouse_id' => $parameter['warehouse_id'],
'add_time' => $parameter['time'],
'order_number' => $parameter['orderNumber'],
'type' => $parameter['type']
];
switch ($parameter['user_type']) {
case 1:
$ModifyPriceGoodsModel = new ModifyPriceGoodsModel();
break;
case 2:
$ModifyPriceGoodsModel = new SModifyPriceGoodsModel();
$data['store_id'] = $parameter['store_id'];
break;
}
$CostPriceClass = new CostPrice();
try {
foreach ($parameter['goodsList'] as $val) {
$data['goods_id'] = $val['goods_id'];
$data['goods_name'] = $val['goods_name'];
$data['goods_class_id'] = $val['goods_class_id'];
$data['goods_number'] = $val['goods_number'];
$data['goods_code'] = $val['goods_code'];
$data['company'] = $val['company'];
$data['attribute_state'] = $val['attribute_state'];
$data['pricing_method'] = $val['pricing_method'];
$data['purchase_price'] = $val['purchase_price'];
$data['cost_price'] = $val['cost_price'];
$data['remarks'] = $val['remarks'];
if ($val['attribute_state'] == 2) {
$data['sku_id'] = $val['sku_id'];
$data['sku_name'] = $val['sku_name'];
$data['sku_id_list'] = $val['sku_id_list'];
$data['sku_goods_number'] = $val['sku_goods_number'];
$data['sku_code'] = $val['sku_code'];
$data['sku_num'] = $val['sku_num'];
}
$result = $ModifyPriceGoodsModel->addData($data);
if ($result['status'] != 1) {
continue;
}
$parameter['goodsInfo'] = $val;
$result = $this->modifyWarehousePrice($parameter); //修改入库价
if ($result['status'] != 1 && $parameter['type'] == 3) {
continue;
}
if (in_array($parameter['type'], [2, 3]) && !empty($result['data']['newWarehouseOrderMoney'])) {
$parameter['newWarehouseOrderMoney'] = $result['data']['newWarehouseOrderMoney'];
}
if ($parameter['type'] == 2) {
$purchaseSate = $this->modifyPurchaseRecord($parameter); //修改采购记录
if ($purchaseSate['status'] == 1) {
$parameter['newPurchaseOrderMoney'] = $purchaseSate['data']['newPurchaseOrderMoney'];
}
}
unset($parameter['goodsInfo']);
if ($result['status'] == 1) {
$val['type'] = 3; //调价单修改
$val['time'] = $parameter['time']; //调价单修改
$parameter['goods'] = $val;
$CostPriceClass->modifyCostPrice($parameter); //修改成本价
unset($parameter['goods']);
}
unset($result);
}
return ['status' => 1, 'message' => '操作成功', 'data' => ['newWarehouseOrderMoney' => $parameter['newWarehouseOrderMoney'], 'newPurchaseOrderMoney' => $parameter['newPurchaseOrderMoney']]];
} catch (\Exception $e) {
return ['status' => 0, 'message' => '操作失败'];
}
}
/**
* 修改采购记录
* @param $parameter
* [
* user_type 1商户 2门店
* merchant_id
* store_id
* goodsInfo 商品信息
* ]
* @return array
* [
* status
* message
* data=>[
* newPurchaseOrderMoney 变更的采购金额
* ]
* ]
*/
public function modifyPurchaseRecord($parameter)
{
$goodsInfo = $parameter['goodsInfo'];
$where = [
'merchant_id' => $parameter['merchant_id'],
'purchase_order_id' => $parameter['modify_order_id'],
'goods_id' => $goodsInfo['goods_id']
];
if ($goodsInfo['attribute_state'] == 2) {
$where['sku_id'] = $goodsInfo['sku_id'];
}
switch ($parameter['user_type']) {
case 1:
//商户
$PurchaseGoodsModel = new PurchaseGoodsModel();
break;
case 2:
//门店
$PurchaseGoodsModel = new SPurchaseGoodsModel();
$where['store_id'] = $parameter['store_id'];
break;
}
$purchase = $PurchaseGoodsModel->getFieldInfo($where, "purchase_num,purchase_price");
if (!empty($purchase)) {
$parameter['newPurchaseOrderMoney'] += ($goodsInfo['cost_price'] - $purchase['purchase_price']) * $purchase['purchase_num'];
$subtotal = round($goodsInfo['cost_price'] * $purchase['purchase_num'], 2);
$PurchaseGoodsModel->updateData($where, [
'purchase_price' => $goodsInfo['cost_price'],
'subtotal' => $subtotal
]);
return ['status' => 1, 'message' => '修改成功', 'data' => ['newPurchaseOrderMoney' => $parameter['newPurchaseOrderMoney']]];
} else {
return ['status' => 0, 'message' => '未找到该商品'];
}
}
/**
* 修改入库价
* @param $parameter
* [
* user_type 1商户 2门店
* merchant_id
* store_id
* goodsInfo 单个商品信息
* newWarehouseOrderMoney 订单新的金额信息s
* ]
* @return array
* [
* status
* message
* data=[
* newWarehouseOrderMoney 订单新的金额信息
* ]
* ]
*/
public function modifyWarehousePrice($parameter)
{
$goodsInfo = $parameter['goodsInfo'];
$where = [
'merchant_id' => $parameter['merchant_id'],
'goods_id' => $goodsInfo['goods_id']
];
if (!empty($goodsInfo['sku_id'])) {
$where['sku_id'] = $goodsInfo['sku_id'];
}
switch ($parameter['type']) {
case 1:
$where['type'] = 5;
break;
case 2:
$where['type'] = ['in', [1, 2]];
$where['purchase_order_number'] = $parameter['modify_order_number']; //采购单号
break;
case 3:
$where['type'] = 0;
$where['warehouse_record_id'] = $parameter['modify_order_id']; //入库单id
break;
}
switch ($parameter['user_type']) {
case 1:
$warehousingModel = new WarehousingGoodsModel();
break;
case 2:
$warehousingModel = new SWarehousingGoodsModel();
if ($parameter['type'] == 1) {
$where['type'] = 7;
}
$where['store_id'] = $parameter['store_id'];
break;
}
$warehouseInfo = $warehousingModel->getSelect($where, '', '', 'id,warehouse_record_id,warehouse_price,warehouse_num');
if (!empty($warehouseInfo)) {
foreach ($warehouseInfo as $val) {
if (in_array($parameter['type'], [2, 3])) {
$moreMoney = ($goodsInfo['cost_price'] - $val['warehouse_price']) * $val['warehouse_num'];
if (!empty($parameter['newWarehouseOrderMoney'][$val['warehouse_record_id']])) {
$parameter['newWarehouseOrderMoney'][$val['warehouse_record_id']] = ($parameter['newWarehouseOrderMoney'][$val['warehouse_record_id']] + $moreMoney);
} else {
$parameter['newWarehouseOrderMoney'][$val['warehouse_record_id']] = $moreMoney;
}
}
$warehousingModel->updateData([
'id' => $val['id']
], [
'warehouse_price' => $goodsInfo['cost_price'],
'subtotal' => round($goodsInfo['cost_price'] * $val['warehouse_num'], 2)
]);
}
return ['status' => 1, 'message' => '修改成功', 'data' => ['newWarehouseOrderMoney' => $parameter['newWarehouseOrderMoney']]];
} else {
return ['status' => 0, 'message' => '未找到入库记录'];
}
}
/**
* 新增调价单操作
* @param $parameter
* [
* user_type 1商户 2门店
* merchant_id
* store_id
* goodsList 商品信息
* type 1初始化入库 2采购单 3其他入库
* modify_order_number
* operator_id 操作人id
* ]
* @return array
* [
* status
* message
* data=>[
* id 采购单id
* ]
* ]
*/
public function createModifyPriceOrder($parameter)
{
$data = [
'merchant_id' => $parameter['merchant_id'],
'warehouse_id' => $parameter['warehouse_id'],
'remarks' => $parameter['remarks'],
'add_time' => $parameter['time'],
'operator_id' => $parameter['operator_id'],
'type' => $parameter['type'],
'modify_order_id' => $parameter['modify_order_id'] ? $parameter['modify_order_id'] : 0,
'modify_order_number' => $parameter['modify_order_number'] ? $parameter['modify_order_number'] : ''
];
switch ($parameter['user_type']) {
case 1:
//商户
$ModifyPriceOrderModel = new ModifyPriceOrderModel();
break;
case 2:
//门店
$ModifyPriceOrderModel = new SModifyPriceOrderModel();
$data['store_id'] = $parameter['store_id'];
break;
}
try {
$result = $ModifyPriceOrderModel->addData($data);
} catch (\Exception $e) {
return ['status' => 0, 'message' => '调价单生成失败'];
}
if ($result['status'] == 0) {
return ['status' => 0, 'message' => '调价单生成失败'];
}
return ['status' => 1, 'message' => '调价单创建成功', 'data' => ['id' => $result['data']]];
}
/**
* 创建调价单的参数验证
* @param $parameter
* [
* user_type 1商户 2门店
* merchant_id
* store_id
* type
* modify_order_number
* goodsList=>[
* goods_id 商品id
* sku_id 规格id
* purchase_price 原进价
* goods_class_id 分类id
* attribute_state 1常规 2规格
* pricing_method 1不称重 2称重
* ]
* ]
* @return array
* [
* status
* message
* ]
*/
public function modifyPriceOperationVerify($parameter)
{
if (!in_array($parameter['user_type'], [1, 2]) || !in_array($parameter['type'], [1, 2, 3])) {
return ['status' => 0, 'message' => '未知请求源'];
}
if (empty($parameter['merchant_id']) || ($parameter['user_type'] == 2 && empty($parameter['store_id']))) {
return ['status' => 0, 'message' => '登录超时'];
}
if ($parameter['type'] != 1 && empty($parameter['modify_order_number'])) {
return ['status' => 0, 'message' => '请输入修改的订单号'];
}
if (empty($parameter['goodsList'])) {
return ['status' => 0, 'message' => '请选择调价的商品'];
}
if (count($parameter['goodsList']) > 500) {
return ['status' => 0, 'message' => '单次操作上限为500种商品'];
}
$reg = "/^(?!0+(?:\.0+)?$)(?:[1-9]\d*|0)(?:\.\d{1,2})?$/";
foreach ($parameter['goodsList'] as $val) {
if (empty($val['cost_price']) || !preg_match($reg, $val['cost_price'])) {
return ['status' => 0, 'message' => $val['goods_name'] . $val['sku_name'] . "价格有误"];
}
}
return ['status' => 1, 'message' => '验证成功'];
}
/**
* 选择的调价商品列表
* @param $parameter
* [
* user_type 1商户2 门店
* merchant_id
* store_id
* type 1初始化入库 2采购单 3其他入库
* modify_order_number 修改的订单号
* page
* limit
* ]
* @return array
* [
* status
* message
* data=>[
* list 列表
* count 总条数
* ]
* ]
*/
public function getGoodsList($parameter)
{
$verify = $this->getGoodsListVerify($parameter); //参数验证
if ($verify['status'] != 1) {
return $verify;
}
$where = $this->getGoodsListTerm($parameter);
$page = $parameter['page'] ? $parameter['page'] : '';
$limit = $parameter['limit'] ? $parameter['limit'] : '';
switch ($parameter['user_type']) {
case 1:
//商户
switch ($parameter['type']) {
case 1:
$modifyGoodsModel = new SaleMGoodsModel();
$price = 'cost_price';
break;
case 2:
$modifyGoodsModel = new PurchaseGoodsModel();
$price = 'purchase_price';
break;
case 3:
$modifyGoodsModel = new WarehousingGoodsModel();
$price = 'warehouse_price';
break;
}
break;
case 2:
//门店
switch ($parameter['type']) {
case 1:
$modifyGoodsModel = new SSaleMGoodsModel();
$price = 'cost_price';
break;
case 2:
$modifyGoodsModel = new SPurchaseGoodsModel();
$price = 'purchase_price';
break;
case 3:
$modifyGoodsModel = new SWarehousingGoodsModel();
$price = 'warehouse_price';
break;
}
break;
}
$list = $modifyGoodsModel->getSelect($where, $page, $limit, "id,goods_id,sku_id,goods_class_id,goods_name,sku_name,goods_number,sku_goods_number,goods_code,sku_code,company,attribute_state,pricing_method,sku_id_list,sku_num,{$price}");
if ($list) {
$count = $modifyGoodsModel->getCount($where);
foreach ($list as $key => &$val) {
$val['index'] = $key + 1;
$val['cost_price'] = round($val[$price], 2);
if ($val['attribute_state'] == 2) {
$val['number'] = $val['sku_goods_number'];
$val['code'] = $val['sku_code'];
} else {
$val['number'] = $val['goods_number'];
$val['code'] = $val['goods_code'];
}
}
}
return ['status' => 1, 'message' => '查询成功', 'data' => ['list' => $list, 'count' => $count ? $count : 0]];
}
/**
* 选择的调价商品列表的where条件
* @param $parameter
* [
* user_type 1商户 2门店
* merchant_id
* store_id
* type 1初始化入库 2采购单 3其他入库
* modify_order_number 修改的订单号
* ]
* @return mixed
*/
public function getGoodsListTerm($parameter)
{
$where = [];
$goodsClass = new GoodsClassify();
$where = $goodsClass->getGoodsClassId($parameter, $where, "goods_class_id");
switch ($parameter['type']) {
case 1:
//初始化入库
$where['status'] = ['in', [0, 1]];
break;
case 2:
//采购单
$where['order_number'] = $parameter['modify_order_number'];
break;
case 3:
//其他入库
$where['type'] = 0;
$where['warehouse_order_number'] = $parameter['modify_order_number'];
break;
}
if (!empty($parameter['searchText'])) {
$where['goods_name|sku_name|goods_code|sku_code|goods_number|sku_goods_number'] = array('like', '%' . $parameter['searchText'] . '%');
}
if (!empty($parameter['notInIds'])) {
$where['id'] = array('not in', $parameter['notInIds']);
}
if ($parameter['user_type'] == 2) {
//门店
$where['store_id'] = $parameter['store_id'];
}
$where['merchant_id'] = $parameter['merchant_id'];
return $where;
}
/**
* 选择的调价商品验证
* @param $parameter
* [
* user_type 1商户2 门店
* merchant_id
* store_id
* type 1初始化入库 2采购单 3其他入库
* modify_order_number 修改的订单号
* ]
* @return array
*/
public function getGoodsListVerify($parameter)
{
if (!in_array($parameter['user_type'], [1, 2]) || !in_array($parameter['type'], [1, 2, 3])) {
return ['status' => 0, 'message' => '未知请求源'];
}
if (empty($parameter['merchant_id']) || (empty($parameter['store_id']) && $parameter['user_type'] == 2)) {
return ['status' => 0, 'message' => '登录超时'];
}
if ($parameter['type'] != 1 && empty($parameter['modify_order_number'])) {
return ['status' => 0, 'message' => '请输入订单号'];
}
return ['status' => 1, 'message' => '验证成功'];
}
/**
* 调价单详情的商品列表
* @param $parameter
* [
* user_type 1商户 2门店
* id 调价单id
* showPrice 查看进价权限 2无
* identity 身份 1商户 2门店
* ]
* @return array
*/
public function ModifyPriceGoodsList($parameter)
{
if (!in_array($parameter['user_type'], [1, 2])) {
return ['status' => 0, 'message' => '未知请求源'];
}
$id = $parameter['id'];
if (empty($id)) {
return ['status' => 0, 'message' => '缺少参数'];
}
switch ($parameter['user_type']) {
case 1:
//商户
$ModifyPriceGoodsModel = new ModifyPriceGoodsModel();
break;
case 2:
//门店
$ModifyPriceGoodsModel = new SModifyPriceGoodsModel();
break;
}
$list = $ModifyPriceGoodsModel->getSelect(['modify_price_order_id' => $id]);
if ($list) {
foreach ($list as $key => &$val) {
$val['index'] = $key + 1;
if ($parameter['user_type'] == 2 && $parameter['showPrice'] == 2 && $parameter['identity'] == 2) {
//门店
$val['purchase_price'] = "***";
} else {
$val['purchase_price'] = round($val['purchase_price'], 2);
$val['cost_price'] = round($val['cost_price'], 2);
}
$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'];
}
}
}
return ['status' => 1, 'message' => '查询成功', 'data' => ['list' => $list]];
}
/**
* 调价单详情导出
* @param $parameter
* [
* user_type 1商户 2门店
* id 调价单id
* ]
* @throws \PHPExcel_Exception
* @throws \PHPExcel_Reader_Exception
* @throws \PHPExcel_Writer_Exception
*/
public function ModifyPriceGoodsListExport($parameter)
{
$result = $this->ModifyPriceGoodsList($parameter);
switch ($parameter['user_type']) {
case 1:
//商户
$ModifyPriceOrderModel = new ModifyPriceOrderModel();
$SaleWarehouseModel = new SaleWarehouseModel();
break;
case 2:
//门店
$ModifyPriceOrderModel = new SModifyPriceOrderModel();
$SaleWarehouseModel = new SSaleWarehouseModel();
break;
}
$info = $ModifyPriceOrderModel->getFind(array('id' => $parameter['id']));
$info['add_time'] = date('Y-m-d H:i:s', $info['add_time']);
$warehouse = $SaleWarehouseModel->getFindField(array('id' => $info['warehouse_id']), "name");
$fileds_name = "调价详情导出";
$arr = array(
array('index', '序号'),
array('goods_name', '商品名称'),
array('sku_name', '规格'),
array('goods_number', '货号'),
array('goods_code', '条码'),
array('company', '单位'),
array('sku_num', '规格基数'),
array('purchase_price', '原进价'),
array('cost_price', '进价'),
array('remarks', '备注'),
);
$str = array();
$str[0] = $fileds_name . ',导出日期:' . date('Y-m-d H:i:s', time());
$str[1] = "调价单号:" . $info['order_number'] . " 调价仓库:" . $warehouse . " 调价时间:" . $info['add_time'];
$this->detailGetExcel($fileds_name, $arr, $result['data']['list'], $str);
}
/**
* 调价单列表
* @param $parameter
* [
* user_type 1商户 2门店
* merchant_id
* store_id
* order_number 调价单号或者被修改订单号
* type 1初始化入库 2采购单 3采购入库 4补货入库 5其他入库
* page
* limit
* ]
* @return array
*/
public function getModifyPriceSingleList($parameter)
{
$verify = $this->getModifyPriceSingleVerify($parameter); //参数验证
if ($verify['status'] != 1) {
return $verify;
}
$where = $this->getModifyPriceSingleTerm($parameter); //获取查询条件
$page = $parameter['page'] ? $parameter['page'] : '';
$limit = $parameter['limit'] ? $parameter['limit'] : '';
switch ($parameter['user_type']) {
case 1:
//商户
$ModifyPriceSingleModel = new ModifyPriceOrderModel();
break;
case 2:
$ModifyPriceSingleModel = new SModifyPriceOrderModel();
break;
}
$list = $ModifyPriceSingleModel->getSelect($where, $page, $limit);
if ($list) {
$JurisdictionUserModel = new JurisdictionUserModel();
$count = $ModifyPriceSingleModel->getCount($where);
foreach ($list as $key => &$val) {
$val['index'] = $key + 1;
$val['add_time'] = date('Y-m-d H:i:s', $val['add_time']);
if (!empty($val['operator_id'])) {
$val['operator'] = $JurisdictionUserModel->getFindField(['id' => $val['operator_id']], 'name');
}
switch ($val['type']) {
case 1:
$val['type_name'] = '初始化入库';
break;
case 2:
$val['type_name'] = '采购单';
break;
case 3:
$val['type_name'] = '采购入库';
break;
case 4:
$val['type_name'] = '补货入库';
break;
case 5:
$val['type_name'] = '其他入库';
break;
}
}
}
return ['status' => 1, 'message' => '查询成功', 'data' => ['list' => $list, 'count' => $count ? $count : 0]];
}
/**
* 调价单列表导出
* @param $parameter
* [
* user_type 1商户 2门店
* merchant_id
* store_id
* order_number 调价单号或者被修改订单号
* type 1初始化入库 2采购单 3采购入库 4补货入库 5其他入库
* ]
* @throws \PHPExcel_Exception
* @throws \PHPExcel_Reader_Exception
* @throws \PHPExcel_Writer_Exception
*/
public function ModifyPriceSingleListExport($parameter)
{
$result = $this->getModifyPriceSingleList($parameter);
$fileds_name = "调价单导出";
$arr = array(
array('index', '序号'),
array('operator', '操作人'),
array('add_time', '调价时间'),
array('type_name', '类型'),
array('order_number', '调价单'),
array('modify_order_number', '被修改订单'),
array('goods_species', '合计(种)'),
array('remarks', '备注'),
);
$str = $fileds_name . ',导出日期:' . date('Y-m-d H:i:s', time());
getExcel($fileds_name, $arr, $result['data']['list'], $str);
}
/**
* 调价单列表的where条件
* @param $parameter
* [
* user_type 1商户 2门店
* merchant_id
* store_id
* order_number 调价单号或者被修改订单号
* type 1初始化入库 2采购单 3采购入库 4补货入库 5其他入库
* ]
* @return mixed
*/
public function getModifyPriceSingleTerm($parameter)
{
if (!empty($parameter['order_number'])) {
$where['order_number|modify_order_number'] = ['like', "%{$parameter['order_number']}%"];
}
if (!empty($parameter['type'])) {
$where['type'] = $parameter['type'];
}
if (!empty($parameter['add_time'])) {
$parameter['add_time'] = explode(',', $parameter['add_time']);
$where['add_time'] = ['between', [strtotime($parameter['add_time'][0]), strtotime($parameter['add_time'][1])]];
}
if ($parameter['user_type'] == 2) {
$where['store_id'] = $parameter['store_id'];
}
$where['merchant_id'] = $parameter['merchant_id'];
$where['status'] = 1;
return $where;
}
/**
* 调价单列表的参数验证
* @param $parameter
* [
* user_type 1商户 2门店
* merchant_id
* store_id
* ]
* @return array
*/
public function getModifyPriceSingleVerify($parameter)
{
if (!in_array($parameter['user_type'], [1, 2])) {
return ['status' => 0, 'message' => '未知请求源'];
}
if (empty($parameter['merchant_id']) || ($parameter['user_type'] == 2 && empty($parameter['store_id']))) {
return ['status' => 0, 'message' => '登录超时'];
}
return ['status' => 1, 'message' => '验证成功'];
}
/**
* 调价单详情导出
* @param $expTitle
* @param $expCellName
* @param $expTableData
* @param array $str
* @throws \PHPExcel_Exception
* @throws \PHPExcel_Reader_Exception
* @throws \PHPExcel_Writer_Exception
*/
public function detailGetExcel($expTitle, $expCellName, $expTableData, $str = array())
{
$xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称
$fileName = $expTitle . date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定
$cellNum = count($expCellName);
$dataNum = count($expTableData);
$common = $str;
vendor("PHPExcel.PHPExcel");
ob_clean();
$objPHPExcel = new \PHPExcel();
$cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ');
$objPHPExcel->getActiveSheet(0)->mergeCells('A1:' . $cellName[$cellNum - 1] . '1');//合并单元格
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $str[0]);
$objPHPExcel->getActiveSheet(0)->mergeCells('A2:K2');//合并单元格
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A2', $str[1]);
for ($i = 0; $i < $cellNum; $i++) {
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i] . '3', $expCellName[$i][1]);
}
for ($i = 0; $i < $dataNum; $i++) {
for ($j = 0; $j < $cellNum; $j++) {
$objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j] . ($i + 4), ' ' . $expTableData[$i][$expCellName[$j][0]]);
}
}
foreach ($cellName as $value) {
$objPHPExcel->getActiveSheet()->getColumnDimension($value)->setWidth(20);
}
header('pragma:public');
header('Content-type:application/vnd.ms-excel;charset=utf-8;name="' . $xlsTitle . '.xls"');
header("Content-Disposition:attachment;filename=$fileName.xls");//attachment新窗口打印inline本窗口打印
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit();
}
}