硕顺crm后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

207 lines
6.2 KiB

<?php
namespace addons\qingdong\controller;
use addons\qingdong\model\ExamineRecord;
use addons\qingdong\model\FormField;
use addons\qingdong\model\Message;
use addons\qingdong\model\Receivables as ReceivablesModel;
use addons\qingdong\model\ReceivablesOther;
use addons\qingdong\model\Contract;
use addons\qingdong\model\Staff;
use think\Db;
use think\Exception;
/**
* 回款详情
*/
class Receivables extends StaffApi {
protected $noNeedLogin = [];
protected $noNeedRight = [];
//新增回款
public function addReceivables() {
$params = $this->request->post();
// 表单验证
if (($result = $this->qingdongValidate($params, get_class(), 'create')) !== true) {
$this->error($result);
}
$result = FormField::checkFields(FormField::RECEIVABLES_TYPE, $params);
if ($result !== true) {
$this->error($result);
}
if (ReceivablesModel::where(['number' => $params['number'], 'contract_id' => $params['contract_id']])->find()) {
$this->error('回款编号已存在');
}
$contract=Contract::where(['id'=>$params['contract_id']])->find();
if(empty($contract)){
$this->error('合同不存在');
}
if($contract['check_status'] != 2){
$this->error('当前合同未审核通过');
}
Db::startTrans();
try {
$params['owner_staff_id'] = $contract['owner_staff_id'];
ReceivablesModel::createReceivables($params);
Db::commit();
} catch (Exception $e) {
Db::rollback();
$this->error($e->getMessage());
}
if ($result) {
$this->success('新增回款成功');
}
}
//获取回款列表
public function getList()
{
$customer_id = input('customer_id');
$contract_id = input('contract_id');
$times = input('times');
$staff_id = input('staff_id');
$check_status = input('check_status');
$limit = input('limit');
$type = input('type',0);
$params=input();
$where= FormField::updateWhereField(FormField::RECEIVABLES_TYPE,$params);
if ($customer_id) {
$where['customer_id'] = $customer_id;
}
if ($contract_id) {
$where['contract_id'] = $contract_id;
}
if ($staff_id) {
$where['owner_staff_id'] = $staff_id;
} else {
if ($type == 1) {//我的客户
$where['owner_staff_id'] = $this->auth->id;
} elseif ($type == 2) {//下属负责的客户
$where['owner_staff_id'] = ['in', Staff::getLowerStaffId()];
}else{
$where['owner_staff_id'] = ['in', Staff::getMyStaffIds()];
}
}
if ($times) {//回款日期
$times = explode(',', $times);
$where['return_time'] = ['between', [$times[0], $times[1]]];
}
if ($check_status) {
if ($check_status == 1) {//审核中
$where['check_status'] = ['in', [0, 1]];
} elseif ($check_status == 2) {//审核通过
$where['check_status'] = 2;
} elseif ($check_status == 3) {//其他
$where['check_status'] = ['in', [3, 4]];
}
}
$list = ReceivablesModel::where($where)->with(['contract'])->order('id desc')->paginate($limit)->toArray();
$remoney = ReceivablesModel::where(['owner_staff_id'=>$where['owner_staff_id']])
->where(array('check_status'=>2))->sum('money');
$inmoney = ReceivablesModel::where(['owner_staff_id'=>$where['owner_staff_id']])
->where(array('check_status'=>['in',[0,1]]))->sum('money');
$nomoney = ReceivablesModel::where(['owner_staff_id'=>$where['owner_staff_id']])
->where(array('check_status'=>['in',[3,4]]))->sum('money');
$moneyinfo['remoney'] = $remoney;//已回款
$moneyinfo['inmoney'] = $inmoney;//回款中
$moneyinfo['nomoney'] = $nomoney;//未回款
$moneyinfo['allmoney'] = $remoney+$inmoney+$nomoney;//总金额
$list['moneyinfo']=$moneyinfo;
$this->success('请求成功',$list);
}
//回款详情
public function getDetail() {
$id = input('id');
$receivables = ReceivablesModel::where(['id' => $id])->with([
'customer',
'contract',
'plan',
'ownerStaff',
'createStaff'
])->find();
if (empty($receivables)) {
//标记通知已读
Message::setRead(Message::RECEIVABLES_TYPE, $id, $this->auth->id);
$this->error('信息不存在');
}
$receivables=$receivables->toArray();
$receivables=ReceivablesOther::getOther($receivables);
//标记通知已读
Message::setRead(Message::RECEIVABLES_TYPE, $id, $this->auth->id);
$this->success('请求成功', $receivables);
}
//撤回审核
public function cancel() {
$id = input('id');
$customer = ReceivablesModel::where(['id' => $id, 'check_status' => 1])->find();
if (empty($customer)) {
$this->error('回款信息不存在');
}
Db::startTrans();
try {
ReceivablesModel::where(['id' => $id])->update(['check_status' => 4]);
ExamineRecord::where([
'relation_type' => ExamineRecord::RECEIVABLES_TYPE,
'relation_id' => $id,
'status' => 0
])->update(['status' => 3]);
Db::commit();
} catch (Exception $e) {
Db::rollback();;
$this->error($e->getMessage());
}
$this->success('撤回成功');
}
//修改回款
public function editReceivables() {
$id = input('id');
$params = $this->request->post();
$row = ReceivablesModel::where(['id' => $id, 'check_status' => ['in', [3, 4]]])->find();
if (empty($row)) {
$this->error('回款信息不存在');
}
// 表单验证
if (($result = $this->qingdongValidate($params, get_class(), 'create')) !== true) {
$this->error($result);
}
$result = FormField::checkFields(FormField::RECEIVABLES_TYPE, $params,$id);
if ($result !== true) {
$this->error($result);
}
Db::startTrans();
try {
ReceivablesModel::updateReceivables($params);
Db::commit();
} catch (Exception $e) {
Db::rollback();
$this->error($e->getMessage());
}
$this->success('修改回款信息成功');
}
//获取回款编号
public function getReceivablesNumber()
{
$this->success('请求成功', ['number' => ReceivablesModel::getNum()]);
}
}