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.
369 lines
11 KiB
369 lines
11 KiB
5 years ago
|
<?php
|
||
|
/**
|
||
|
* 修车财务控制器
|
||
|
*/
|
||
|
|
||
|
namespace frontend\controllers;
|
||
|
|
||
|
use common\models\FixCarItemT;
|
||
|
use common\models\FixCarReport;
|
||
|
use Yii;
|
||
|
use common\libs\MyLib;
|
||
|
use yii\base\ErrorException;
|
||
|
use yii\data\Pagination;
|
||
|
use common\models\FixCarT;
|
||
|
use common\models\UserT;
|
||
|
use common\models\CarFinanceT;
|
||
|
use common\models\GiftTicketT;
|
||
|
use yii\filters\VerbFilter;
|
||
|
use yii\helpers\ArrayHelper;
|
||
|
use yii\web\Response;
|
||
|
|
||
|
class FixCarFinanceController extends BaseController{
|
||
|
public function behaviors()
|
||
|
{
|
||
|
return [
|
||
|
[
|
||
|
'class' => 'yii\filters\ContentNegotiator',
|
||
|
'only' => ['create','update','cashier-to-acc'],
|
||
|
'formats' => [
|
||
|
'application/json' => Response::FORMAT_JSON,
|
||
|
],
|
||
|
],
|
||
|
'verbs'=>[
|
||
|
'class'=>VerbFilter::className(),
|
||
|
'actions'=>[
|
||
|
'list'=>['get'],
|
||
|
'list-accounts'=>['get'],
|
||
|
'list-accounts2'=>['get'],
|
||
|
'settle-accounts'=>['get'],
|
||
|
'create'=>['post']
|
||
|
]
|
||
|
],
|
||
|
[
|
||
|
'class'=>'yii\filters\HttpCache',
|
||
|
'only' => ['list-accounts','list-accounts2'],
|
||
|
'etagSeed' => function ($action) {
|
||
|
$q = new \yii\db\Query();
|
||
|
if('list-accounts' === $action->id){
|
||
|
$model = $q->from('fix_car_t');
|
||
|
}elseif('list-accounts2' === $action->id){
|
||
|
$model = $q->from('car_finance_t');
|
||
|
}
|
||
|
return $model->max('updated_at').$model->count();
|
||
|
}
|
||
|
]
|
||
|
];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
***********************************
|
||
|
* 根据id获取所有修车信息
|
||
|
* $acc_id 修车表的id
|
||
|
* @author liukangle
|
||
|
***********************************
|
||
|
*/
|
||
|
public function getList($fix_id=-1){
|
||
|
return FixCarT::findOne($fix_id);
|
||
|
}
|
||
|
|
||
|
/************************************
|
||
|
* 账单结算(出纳)
|
||
|
* 账单结算(出纳)
|
||
|
* @author liukangle
|
||
|
************************************/
|
||
|
public function actionListAccounts(){
|
||
|
|
||
|
$op = $this->requestType('get','op',1);
|
||
|
$page = $this->requestType('get','page',1);
|
||
|
$car_no = $this->requestType('get','car_no');
|
||
|
if($page < 1) $page = 1;
|
||
|
$car_list = [];
|
||
|
$page_info = '';
|
||
|
if($op != 0){
|
||
|
|
||
|
$model = FixCarT::find()->where('status BETWEEN 6 AND 15');
|
||
|
//车牌号
|
||
|
if($car_no != '') {
|
||
|
$model = $model->andWhere('car_no LIKE "'.$car_no.'"');
|
||
|
}
|
||
|
$total = $model->count();
|
||
|
|
||
|
$pagination = new Pagination(['totalCount' => $total,'pageSize'=>20]);
|
||
|
$pagination->setPage($page-1);
|
||
|
|
||
|
$model = $model->offset($pagination->offset)->limit($pagination->limit);
|
||
|
$car_list = $model->all();
|
||
|
|
||
|
$page_info = MyLib::getPageInfo($pagination);
|
||
|
}
|
||
|
return $this->render('list-accounts',[
|
||
|
'car_list' => $car_list,
|
||
|
'page_info' => $page_info,
|
||
|
'car_no' => $car_no,
|
||
|
]);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
***********************************
|
||
|
* 财务结算(会计)
|
||
|
* 财务结算(会计)
|
||
|
* @author liukangle
|
||
|
*********************************
|
||
|
*/
|
||
|
public function actionListAccounts2(){
|
||
|
|
||
|
$op = $this->requestType('get','op',1);
|
||
|
$page = $this->requestType('get','page',1);
|
||
|
$car_no = $this->requestType('get','car_no');
|
||
|
if($page < 1) $page = 1;
|
||
|
$car_list = [];
|
||
|
$page_info = '';
|
||
|
if($op != 0){
|
||
|
$model = CarFinanceT::find()->joinWith('fixCarT')->where('fix_car_t.status=16');
|
||
|
|
||
|
if('' !== $car_no){
|
||
|
$model = $model->andWhere('fix_car_t.car_no LIKE \''.$car_no.'\'');
|
||
|
}
|
||
|
|
||
|
$total = $model->count();
|
||
|
$pagination = new Pagination(['totalCount' => $total,'pageSize'=>20]);
|
||
|
$pagination->setPage($page-1);
|
||
|
|
||
|
$model = $model->offset($pagination->offset)->limit($pagination->limit);
|
||
|
$car_list = $model->all();
|
||
|
|
||
|
$page_info = MyLib::getPageInfo($pagination);
|
||
|
}
|
||
|
return $this->render('list-accounts2',[
|
||
|
'car_list' => $car_list,
|
||
|
'page_info' => $page_info,
|
||
|
'car_no' => $car_no,
|
||
|
]);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
***********************************
|
||
|
* 出纳详情页
|
||
|
* 出纳详情页
|
||
|
* @author liukangle
|
||
|
*********************************/
|
||
|
public function actionSettleAccounts(){
|
||
|
$request = Yii::$app->request;
|
||
|
|
||
|
$acc_id = $request->get('fix_id',0);
|
||
|
$report_id = $request->get('report_id',null);
|
||
|
|
||
|
$fixcar = $this->getList($acc_id);
|
||
|
|
||
|
//新礼品
|
||
|
$query = GiftTicketT::find()
|
||
|
->orderBy('id DESC');
|
||
|
$query = $query->where('status=1');
|
||
|
$gift_items = $query->andWhere('car_no like "'.$fixcar->car_no.'"')->all();
|
||
|
|
||
|
//司机
|
||
|
$driver_items = UserT::find()
|
||
|
->where('group_id=41')
|
||
|
->orderBy('username ASC')
|
||
|
->all();
|
||
|
|
||
|
$fix_car_query = FixCarItemT::find()->where('fix_id='.$acc_id.' AND fix_group!=13');
|
||
|
$fix_car_query = $report_id ? $fix_car_query->andWhere('report_id='.$report_id) : $fix_car_query->andWhere('report_id IS NULL');
|
||
|
$items = $obj_items = ($res = $fix_car_query->all()) ? $res : [];
|
||
|
$items = ArrayHelper::index(ArrayHelper::toArray($items),null,'type');
|
||
|
|
||
|
//保险理赔
|
||
|
$report = null;
|
||
|
$total_price = 0;
|
||
|
|
||
|
$carfinance = CarFinanceT::find()->where('fix_id='.$acc_id);
|
||
|
|
||
|
if(!empty($report_id) && $report_id > 0){
|
||
|
$report = FixCarReport::findOne($report_id);
|
||
|
$carfinance->andWhere('baoanhao=\''.$report->report_no.'\'');
|
||
|
}else{
|
||
|
foreach($obj_items as $item){
|
||
|
$total_price += $item->price * $item->count;
|
||
|
}
|
||
|
$carfinance->andWhere('baoanhao=\''.'\'');
|
||
|
}
|
||
|
|
||
|
$carfinance = $carfinance->one();
|
||
|
|
||
|
return $this->render('settle-accounts',[
|
||
|
'fixcar' => $fixcar,
|
||
|
'gift_items' => $gift_items,
|
||
|
'carfinance' => $carfinance,
|
||
|
'drivers'=>$driver_items,
|
||
|
'items'=>$items,
|
||
|
'report'=>$report,
|
||
|
'total_price'=>$total_price
|
||
|
]);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
***********************************
|
||
|
* 出纳提交到会计
|
||
|
* 出纳提交到会计
|
||
|
* @author liukangle
|
||
|
*********************************
|
||
|
*/
|
||
|
public function actionCashierToAcc(){
|
||
|
|
||
|
$request = Yii::$app->request;
|
||
|
$result = [];
|
||
|
$result['success'] = false;
|
||
|
$result['msg'] = '操作失败!';
|
||
|
|
||
|
if($request->isPost) {
|
||
|
$model = FixCarT::findOne(['id'=>$request->post('fix_id')]);
|
||
|
$model->scenario = 'status';
|
||
|
$model->status = 17;
|
||
|
$car_state = $model->save();
|
||
|
|
||
|
if(!$car_state){
|
||
|
throw new \Exception('操作失败1!');
|
||
|
}
|
||
|
|
||
|
$result['success'] = true;
|
||
|
$result['msg'] = '操作成功!';
|
||
|
return $result;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
***********************************
|
||
|
* 会计详情页
|
||
|
* 会计详情页
|
||
|
* @author liukangle
|
||
|
*********************************
|
||
|
*/
|
||
|
public function actionSettleAccounts2(){
|
||
|
|
||
|
$request = Yii::$app->request;
|
||
|
|
||
|
$acc_id = $request->get('fix_id',0);
|
||
|
|
||
|
$fixcar = $carfinance = CarFinanceT::findOne($acc_id);
|
||
|
$fixcar = $fixcar->fixCarT;
|
||
|
|
||
|
//新礼品
|
||
|
$query = GiftTicketT::find()
|
||
|
->orderBy('id DESC');
|
||
|
$query = $query->where('status=1');
|
||
|
$gift_items = $query->andWhere('car_no like "'.$fixcar->car_no.'"')->all();
|
||
|
|
||
|
//司机
|
||
|
$driver_items = UserT::find()
|
||
|
->where('group_id=41')
|
||
|
->orderBy('username ASC')
|
||
|
->all();
|
||
|
|
||
|
|
||
|
//保险理赔
|
||
|
$report = null;
|
||
|
$total_price = 0;
|
||
|
|
||
|
|
||
|
return $this->render('settle-accounts2',[
|
||
|
'fixcar' => $fixcar,
|
||
|
'gift_items' => $gift_items,
|
||
|
'carfinance' => $carfinance,
|
||
|
'drivers'=>$driver_items,
|
||
|
'report'=>$report,
|
||
|
'total_price'=>$total_price
|
||
|
]);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
***********************************
|
||
|
* 打印结算单
|
||
|
* 打印结算单
|
||
|
* @author liukangle
|
||
|
***********************************
|
||
|
*/
|
||
|
public function actionPrintSend(){
|
||
|
|
||
|
$acc_id = $this->requestType('get','acc_id',-1);
|
||
|
|
||
|
$fixcar = $this->getList($acc_id);
|
||
|
|
||
|
return $this->render('print-send',[
|
||
|
'fixcar' => $fixcar,
|
||
|
]);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
***********************************
|
||
|
* 打印送车单
|
||
|
* 打印送车单
|
||
|
* @author liukangle
|
||
|
***********************************
|
||
|
*/
|
||
|
public function actionCarSend(){
|
||
|
|
||
|
$acc_id = $this->requestType('get','acc_id',-1);
|
||
|
|
||
|
$fixcar = $this->getList($acc_id);
|
||
|
|
||
|
$items = ($res = FixCarItemT::find()->where('fix_id='.$acc_id.' AND fix_group!=13')->all()) ? $res : [];
|
||
|
$items = ArrayHelper::index(ArrayHelper::toArray($items),null,'type');
|
||
|
|
||
|
return $this->render('car-send',[
|
||
|
'fixcar' => $fixcar,
|
||
|
'items' => $items
|
||
|
]);
|
||
|
}
|
||
|
|
||
|
public function actionCreate(){
|
||
|
$request = Yii::$app->request;
|
||
|
|
||
|
$result = [];
|
||
|
$result['success'] = false;
|
||
|
$result['msg'] = '操作失败!';
|
||
|
|
||
|
$finance_id = $request->post('finance_id');
|
||
|
if($finance_id < 0) return $result;
|
||
|
|
||
|
$model = CarFinanceT::findOne($finance_id);
|
||
|
$model->scenario = 'create';
|
||
|
$model->attributes = $request->post();
|
||
|
if(!$model->validate()) {
|
||
|
$errors = array_values($model->errors);
|
||
|
$result['msg'] = $errors[0];
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
if($model->save()) {
|
||
|
$result['success'] = true;
|
||
|
$result['msg'] = '操作成功!';
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
return $result;
|
||
|
}
|
||
|
public function actionUpdate(){
|
||
|
$request = Yii::$app->request;
|
||
|
|
||
|
$result = [];
|
||
|
$result['success'] = false;
|
||
|
$result['msg'] = '操作失败!';
|
||
|
|
||
|
$fix_id = $request->post('fix_id');
|
||
|
|
||
|
if($res = CarFinanceT::find()->where('fix_id='.$fix_id.' AND examine BETWEEN 0 AND 1')->one()) {
|
||
|
$result['msg'] = '还有未审核的项目!';
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
$model = FixCarT::findOne($fix_id);
|
||
|
$model->status = 16;
|
||
|
$model->save();
|
||
|
|
||
|
$result['success'] = true;
|
||
|
$result['msg'] = '操作成功!';
|
||
|
|
||
|
return $result;
|
||
|
}
|
||
|
}
|