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

316 行
11 KiB
PHP
可执行文件

<?php
namespace Common\Business;
use Api\Controller\InventoryController;
use Common\Model\PurchaseGoodsModel;
use Common\Model\PurchaseOrderModel;
use Common\Model\PurchasePayableModel;
use Common\Model\PurchaseWarehouseModel;
use Common\Model\RetailSupplierModel;
use Common\Model\SPurchaseGoodsModel;
use Common\Model\SPurchaseOrderModel;
use Common\Model\SPurchasePayableModel;
use Common\Model\SPurchaseWarehouseModel;
use Common\Model\SSupplierModel;
//[1.7.90]
/**
* 采购单类
* Class PurchaseOrder
* [
* 采购单金额统计 orderTotal
* 采购单列表 orderList
* 采购单列表的查询条件 orderListTerm
* 修改采购单金额 modifyPurchaseOrderMoney
* 修改采购单金额参数验证 modifyPurchaseOrderMoneyVerify
* ]
* @package Common\Business
*/
class PurchaseOrder
{
/**
* 采购单金额统计
* @param $param
* [
* operator_type 1后台 2收银端 3助手端
* user_type 3商户 4门店
* merchant_id
* store_id
* order_number 订单号
* supplier_id 供货商id
* warehouse_id 仓库id
* add_time 后台时间搜索
* type 1常规采购单 2补采购单
* showPrice 1可以查看金额 2不可以查看金额
* identity 身份1商户 2门店
* ]
* @return mixed
*/
public function orderTotal($param)
{
$where = $this->orderListTerm($param); //查询条件
try {
switch ($param['user_type']) {
case 3:
$PurchaseOrderModel = new PurchaseOrderModel();
break;
case 4:
$PurchaseOrderModel = new SPurchaseOrderModel();
break;
}
$orderCount = $PurchaseOrderModel->getCount($where);
$orderCount = $orderCount ? $orderCount : 0;
$goodsCount = $PurchaseOrderModel->getSum($where, "goods_species");
$goodsCount = $goodsCount ? $goodsCount : 0;
if ($param['user_type'] == 3 || ($param['showPrice'] != 2 || $param['identity'] == 1)) {
$totalMoney = $PurchaseOrderModel->getSum($where, "money_total");
$totalMoney = $totalMoney ? round($totalMoney, 2) : 0;
} else {
$totalMoney = '***';
}
$TotalList = [
'orderCount' => $orderCount,
'goodsCount' => $goodsCount,
'totalMoney' => $totalMoney
];
return callBack(statusCode()['success'], '查询成功', [$TotalList]);
} catch (\Exception $e) {
return callBack(statusCode()['success'], '查询成功', [
[
'orderCount' => 0,
'goodsCount' => 0,
'totalMoney' => 0,
]
]);
}
}
/**
* 采购单列表
* @param $param
* [
* operator_type 1后台 2收银端 3助手端
* user_type 3商户 4门店
* order_number 订单号
* supplier_id 供货商id
* warehouse_id 仓库id
* add_time 后台时间搜索
* start_time 助手开始时间
* end_time 助手结束时间
* type 1常规采购单 2补采购单
* showPrice 1可以查看金额 2不可以查看金额
* identity 身份1商户 2门店
* page
* limit
* ]
* @return mixed
*/
public function orderList($param)
{
$where = $this->orderListTerm($param); //查询条件
switch ($param['user_type']) {
case 3:
$PurchaseOrderModel = new PurchaseOrderModel();
$SupplierModel = new RetailSupplierModel();
$PurchaseWarehouseModel = new PurchaseWarehouseModel();
$PurchaseGoodsModel = new PurchaseGoodsModel();
$PurchasePayableModel = new PurchasePayableModel();
break;
case 4:
$PurchaseOrderModel = new SPurchaseOrderModel();
$SupplierModel = new SSupplierModel();
$PurchaseWarehouseModel = new SPurchaseWarehouseModel();
$PurchaseGoodsModel = new SPurchaseGoodsModel();
$PurchasePayableModel = new SPurchasePayableModel();
break;
}
$list = $PurchaseOrderModel->getSelect($where, $param['page'], $param['limit'], "*", "id desc");
if (!empty($list)) {
if ($param['operator_type'] == 1) {
$count = $PurchaseOrderModel->getCount($where);
}
$InventoryClass = new InventoryController();
foreach ($list as $key => &$val) {
$val['index'] = $key + 1;
$val['operator'] = $InventoryClass->OperatorName($val['operator_id']);
$val['add_time'] = date('Y-m-d H:i:s', $val['add_time']);
$val['repair_time'] = date('Y-m-d H:i:s', $val['repair_time']);
$val['supplier'] = $SupplierModel->getFindField(array('id' => $val['supplier_id']), "supplier_name");
$val['warehouse'] = $PurchaseWarehouseModel->getFindField(array('id' => $val['warehouse_id']), "name");
$val['goods_species'] = $val['goods_species'] . "种";
if ($val['type'] == 1) {
$val['type_name'] = "常规采购单";
} else {
$val['type_name'] = "补采购单";
}
$goodsNum = $PurchaseGoodsModel->getSum(array('purchase_order_id' => $val['id']), "surplus_num");
$goodsNum = $goodsNum ? $goodsNum : 0;
if ($goodsNum > 0) {
$val['warehouse_state'] = 0;
} else {
$val['warehouse_state'] = 1;
}
if ($param['user_type'] == 3 || ($param['showPrice'] != 2 || $param['identity'] == 1)) {
$val['money_total'] = round($val['money_total'], 2);
} else {
$val['money_total'] = '***';
}
//判断是否可编辑
$val["pay_status"] = $PurchasePayableModel->getFindField(array('purchase_order_id' => $val['id']), "pay_status");
}
}
return callBack(statusCode()['success'], '查询成功', [
'list' => $list ? $list : [],
'count' => $count ? $count : 0
]);
}
/**
* 采购单列表的查询条件
* @param $param
* [
* operator_type 1后台 2收银端 3助手端
* user_type 3商户 4门店
* merchant_id
* store_id
* order_number 订单号
* supplier_id 供货商id
* warehouse_id 仓库id
* add_time 后台时间搜索
* start_time 助手开始时间
* end_time 助手结束时间
* type 1常规采购单 2补采购单
* ]
* @return mixed
*/
public function orderListTerm($param)
{
if (!empty($param['type'])) {
$where['type'] = $param['type'];
}
if (!empty($param['order_number'])) {
$where['order_number'] = array('like', '%' . $param['order_number'] . '%');
}
if (!empty($param['supplier_id'])) {
$where['supplier_id'] = $param['supplier_id'];
}
if (!empty($param['warehouse_id'])) {
$where['warehouse_id'] = $param['warehouse_id'];
}
switch ($param['operator_type']) {
case 1:
if (!empty($param['add_time'])) {
$start_time = strtotime($param['add_time'][0]);
$end_time = strtotime($param['add_time'][1]);
$where['add_time'] = array('between', array($start_time, $end_time));
}
break;
case 3:
$start_time = $param['start_time'];
$end_time = $param['end_time'];
if (!empty($start_time) && !empty($end_time)) {
$start_time = strtotime($start_time . "00:00:00");
$end_time = strtotime($end_time . "23:59:59");
$where['add_time'] = array('between', array($start_time, $end_time));
} else if (!empty($start_time)) {
$start_time = strtotime($start_time . "00:00:00");
$where['add_time'] = array('gt', $start_time);
} else if (!empty($end_time)) {
$end_time = strtotime($end_time . "23:59:59");
$where['add_time'] = array('lt', $end_time);
}
break;
}
if ($param['user_type'] == 4) {
$where['store_id'] = $param['store_id'];
}
$where['merchant_id'] = $param['merchant_id'];
$where['status'] = 1;
return $where;
}
/**
* 修改采购单金额
* @param $parameter
* [
* user_type 1商户 2门店
* merchant_id
* store_id
* id 采购单id
* money_total 金额
* ]
* @return array
* [
* status
* message
* ]
*/
public function modifyPurchaseOrderMoney($parameter)
{
$verify = $this->modifyPurchaseOrderMoneyVerify($parameter); //参数验证
if ($verify['status'] != 1) {
return $verify;
}
switch ($parameter['user_type']) {
case 1:
//商户
$PurchaseOrderModel = new PurchaseOrderModel();
break;
case 2:
//门店
$PurchaseOrderModel = new SPurchaseOrderModel();
break;
}
try {
if ($parameter['money_total'] > 0) {
$PurchaseOrderModel->updateSetInc([
'id' => $parameter['id']
], "money_total", $parameter['money_total']);
} else {
$parameter['money_total'] = abs($parameter['money_total']);
$PurchaseOrderModel->updateSetDec([
'id' => $parameter['id']
], "money_total", $parameter['money_total']);
}
return ['status' => 1, 'message' => '修改成功'];
} catch (\Exception $e) {
return ['status' => 0, 'message' => '修改失败'];
}
}
/**
* 修改采购单金额参数验证
* @param $parameter
* [
* user_type 1商户 2门店
* merchant_id
* store_id
* id 采购单id
* money_total 金额
* ]
* @return array
* [
* status
* message
* ]
*/
public function modifyPurchaseOrderMoneyVerify($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' => '登录超时,缺失必要参数'];
}
if (empty($parameter['id']) || empty($parameter['money_total'])) {
return ['status' => 0, 'message' => '缺少必要参数'];
}
return ['status' => 1, 'message' => '缺少必要参数'];
}
}