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.
simple-yewu/frontend/controllers/FixCarFinanceController.php

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;
}
}