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

311 行
9.7 KiB
PHP
可执行文件

<?php
namespace Common\Business;
use Common\Model\JurisdictionUserModel;
use Common\Model\PurchasePayableModel;
use Common\Model\SPurchasePayableModel;
use Common\Model\SSupplierModel;
use Common\Model\SupplierModel;
//[1.6.9]
/**
* 采购应付款类
* Class PurchasePayable
* [
* 修改订单应付款金额 modifyOrderMoney
* 采购应付款统计 payableTotal
* 采购应付款列表 payableList
* 采购应付款导出 payableListExport
* 采购应付款列表的where查询条件 payableListTerm
* 采购应付款列表的参数验证 payableListVerify
* ]
* @package Common\Business
*/
class PurchasePayable
{
/**
*修改订单应付款金额
* @param $parameter
* [
* supplier_type 1常规供货商 2寄售供货商
* user_type 1商户 2门店
* merchant_id
* store_id
* payable_money 应付金额
* purchase_order_id 采购单id
* ]
* @return array
* [
* status
* message
* ]
*/
public function modifyOrderMoney($parameter)
{
$where = [
'merchant_id' => $parameter['merchant_id'],
'purchase_order_id' => $parameter['purchase_order_id'],
];
switch ($parameter['user_type']) {
case 1:
$payableModel = new PurchasePayableModel();
break;
case 2:
$payableModel = new SPurchasePayableModel();
$where['store_id'] = $parameter['store_id'];
break;
}
try {
if ($parameter['payable_money'] > 0) {
$save = $payableModel->updateSetInc($where, "payable_money", $parameter['payable_money']);
} else {
$parameter['payable_money'] = abs($parameter['payable_money']);
$save = $payableModel->updateSetDec($where, "payable_money", $parameter['payable_money']);
}
if ($save) {
return ['status' => 1, 'message' => '修改成功'];
} else {
return ['status' => 0, 'message' => '暂无修改'];
}
} catch (\Exception $e) {
return ['status' => 0, 'message' => '暂无修改'];
}
}
/**
* 采购应付款统计
* @param $parameter
* [
* user_type 1商户 2门店
* merchant_id
* store_id
* order_number 批次号
* supplier_id 供货商id
* pay_status pay_status
* add_time 时间
* ]
* @return array
* [
* status
* message
* data=>[
* list 列表
* count 条数
* ]
* ]
*/
public function payableTotal($parameter)
{
$verify = $this->payableListVerify($parameter); //参数验证
if ($verify['status'] != 1) {
return $verify;
}
$where = $this->payableListTerm($parameter); //查询条件
switch ($parameter['user_type']) {
case 1:
//商户
$payableModel = new PurchasePayableModel();
break;
case 2:
//门店
$payableModel = new SPurchasePayableModel();
break;
}
$list = $payableModel->getSelect($where, '', '', "payable_money,paid_money");
$payable_money = 0; //应付
$paid_money = 0; //已付
$stay_money = 0; //待付
if ($list) {
foreach ($list as $val) {
$payable_money += $val['payable_money'];
$paid_money += $val['paid_money'];
}
$stay_money = round($payable_money - $paid_money, 2);
}
$TotalList = [
[
'payable_money' => $payable_money,
'paid_money' => $paid_money,
'stay_money' => $stay_money
]
];
return callBack(statusCode()['success'], "查询成功", ['TotalList' => $TotalList]);
}
/**
* 采购应付款列表
* @param $parameter
* [
* user_type 1商户 2门店
* merchant_id
* store_id
* order_number 批次号
* supplier_id 供货商id
* pay_status pay_status
* add_time 时间
* ]
* @return array
* [
* status
* message
* data=>[
* list 列表
* count 条数
* ]
* ]
*/
public function payableList($parameter)
{
$verify = $this->payableListVerify($parameter); //参数验证
if ($verify['status'] != 1) {
return $verify;
}
$page = $parameter['page'] ? $parameter['page'] : '';
$limit = $parameter['limit'] ? $parameter['limit'] : '';
$where = $this->payableListTerm($parameter); //查询条件
switch ($parameter['user_type']) {
case 1:
//商户
$payableModel = new PurchasePayableModel();
$SupplierModel = new SupplierModel();
break;
case 2:
//门店
$payableModel = new SPurchasePayableModel();
$SupplierModel = new SSupplierModel();
break;
}
$list = $payableModel->getSelect($where, $page, $limit, "*");
if ($list) {
$JurisdictionUserModel = new JurisdictionUserModel();
$count = $payableModel->getCount($where);
foreach ($list as $key => &$val) {
$val['index'] = $key + 1;
$val['purchase_time'] = date("Y-m-d H:i:s", $val['purchase_time']);
$val['payable_money'] = round($val['payable_money'], 2);
$val['paid_money'] = round($val['paid_money'], 2);
$val['stay_money'] = round($val['payable_money'] - $val['paid_money'], 2);
$val['supplier_name'] = $SupplierModel->getFindField(array('id' => $val['supplier_id']), "supplier_name");
$val['operator'] = $JurisdictionUserModel->getFind(['id' => $val['operator_id']])['name'];
if ($val['paid_money'] == 0) {
$val['pay_name'] = "待付款";
} else if ($val['paid_money'] < $val['payable_money']) {
$val['pay_name'] = "部分付款";
} else if ($val['paid_money'] >= $val['payable_money']) {
$val['pay_name'] = "已付款";
}
}
}
return callBack(statusCode()['success'], "查询成功", ['list' => $list, 'count' => $count ? $count : 0]);
}
/**
* 采购应付款导出
* @param $parameter
* @throws \PHPExcel_Exception
* @throws \PHPExcel_Reader_Exception
* @throws \PHPExcel_Writer_Exception
*/
public function payableListExport($parameter)
{
$result = $this->payableList($parameter);
$fileds_name = "采购应付款导出";
$arr = array(
array('index', "序号"),
array('supplier_name', "供货商"),
array("purchase_order_number", "批次号"),
array("operator", "操作人"),
array("purchase_time", "采购时间"),
array("payable_money", "应付金额"),
array("paid_money", "已付金额"),
array("stay_money", "待付金额"),
array("pay_name", "付款状态"),
);
$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 批次号
* supplier_id 供货商id
* pay_status pay_status
* add_time 时间
* ]
* @return mixed
*/
public function payableListTerm($parameter)
{
if (!empty($parameter['order_number'])) {
$where['purchase_order_number'] = array('like', '%' . $parameter['order_number'] . "%");
}
if (!empty($parameter['supplier_id'])) {
$where['supplier_id'] = $parameter['supplier_id'];
}
switch ($parameter['pay_status']) {
case 1:
//待付款
$where['paid_money'] = 0;
break;
case 2:
//部分付款
$where['paid_money'] = ['gt', 0];
$where['_string'] = "paid_money < payable_money";
break;
case 3:
//已付款
$where['_string'] = "paid_money >= payable_money";
break;
}
if (!empty($parameter['add_time'])) {
if (!is_array($parameter['add_time'])) {
$parameter['add_time'] = explode(',', $parameter['add_time']);
}
$start_time = strtotime($parameter['add_time'][0]);
$end_time = strtotime($parameter['add_time'][1]);
$where['purchase_time'] = array('between', array($start_time, $end_time));
}
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
* ]
* @return array
* [
* status
* message
* ]
*/
public function payableListVerify($parameter)
{
if (!in_array($parameter['user_type'], [1, 2])) {
return callBack(statusCode()['error'], "未知请求源");
}
if (empty($parameter['merchant_id']) || ($parameter['user_type'] == 2 && empty($parameter['store_id']))) {
return callBack(statusCode()['error'], "参数缺少");
}
return callBack(statusCode()['success'], "验证成功");
}
}