|
- <?php
-
- namespace backend\modules\motorcade\controllers;
-
- use backend\modules\motorcade\models\BusOrderFinance;
- use common\components\zPhpExcel;
- use Yii;
- use backend\modules\motorcade\models\BusOrder;
- use backend\modules\motorcade\models\searchOrder;
- use yii\db\Exception;
- use yii\helpers\Json;
- use yii\web\NotFoundHttpException;
- use yii\filters\VerbFilter;
-
- /**
- * FinanceController implements the CRUD actions for BusOrder model.
- */
- class FinanceController extends BaseController
- {
- public $layout = "@backend/modules/motorcade/views/layouts/iframe_new";
-
- /**
- * @inheritdoc
- */
- public function behaviors()
- {
- return [
- 'verbs' => [
- 'class' => VerbFilter::className(),
- 'actions' => [
- 'delete' => ['POST'],
- ],
- ],
- ];
- }
-
- /**
- * Lists all BusOrder models.
- * @return mixed
- */
- public function actionIncome()
- {
- $searchModel = new searchOrder();
- $searchModel->date_type = 1;
- $time = strtotime('-1 months');
- $searchModel->date_from = date('Y-m-01', $time);
- $searchModel->date_to = date('Y-m-t', $time);
- $search = Yii::$app->request->queryParams;
- $dataProvider = $searchModel->search($search);
-
- if (Yii::$app->request->isPjax) {
- return $this->renderPartial('index', [
- 'searchModel' => $searchModel,
- 'dataProvider' => $dataProvider,
- ]);
- } else {
- return $this->render('index', [
- 'searchModel' => $searchModel,
- 'dataProvider' => $dataProvider,
- ]);
-
- }
- }
-
- /**
- * 外部调车应付记录
- *
- * @return string
- *
- * @author wangxj
- */
- public function actionOutcome()
- {
- $searchModel = new searchOrder();
- $searchModel->date_type = 1;
- $time = strtotime('-1 months');
- $searchModel->date_from = date('Y-m-01', $time);
- $searchModel->date_to = date('Y-m-t', $time);
- $search = Yii::$app->request->queryParams;
- $searchModel->send_type = 1;
- $dataProvider = $searchModel->search($search);
-
- if (Yii::$app->request->isPjax) {
- return $this->renderPartial('index', [
- 'searchModel' => $searchModel,
- 'dataProvider' => $dataProvider,
- ]);
- } else {
- return $this->render('index', [
- 'searchModel' => $searchModel,
- 'dataProvider' => $dataProvider,
- ]);
-
- }
- }
-
- /**
- * Finds the BusOrder model based on its primary key value.
- * If the model is not found, a 404 HTTP exception will be thrown.
- * @param integer $id
- * @return BusOrder the loaded model
- * @throws NotFoundHttpException if the model cannot be found
- */
- protected function findModel($id)
- {
- if (($model = BusOrder::findOne($id)) !== null) {
- return $model;
- } else {
- throw new NotFoundHttpException('The requested page does not exist.');
- }
- }
-
- /**
- * User: wangxj
- *
- * 开关账操作
- *
- * 关账的时候要同步一次出车任务中run_id不为0的数据
- *
- * @param integer $send_type 应收 应付
- * @param $type ['open', 'close']
- */
- public function actionCondom()
- {
- $searchModel = new searchOrder();
- $search = Yii::$app->request->post();
- $searchModel->search($search);
- $type = $_REQUEST['type'];
- $send_type = $_REQUEST['send_type'];
- $searchModel->send_type = $send_type;
- $tran = Yii::$app->db->beginTransaction();
- $rows = 0;
- try{
- $rows = $searchModel->condomAction($type);
- }catch (Exception $e){
- // $tran->rollBack();
- }
- if ($rows) {
- $tran->commit();
- $result = ['code' => 0, 'msg' => ($type == 'open' ? '取消关账' : '关账') . '成功!'];
- } else {
- $tran->rollBack();
- $result = ['code' => 1, 'msg' => ($type == 'open' ? '取消关账' : '关账') . '失败!'];
- }
- return Json::encode($result);
- }
-
- /**
- * User: wangxj
- *
- * 应收管理 导出订单
- *
- */
- public function actionExport()
- {
- ini_set("memory_limit", "-1");
- $objPHPExcel = new zPhpExcel(); //实例化PHPExcel类
- $objSheet = $objPHPExcel->getActiveSheet(); //获取当前活动sheet的操作对象
- $searchModel = new searchOrder();
- $search = Yii::$app->request->queryParams;
- $dataProvider = $searchModel->search($search);
- $dataProvider-> pagination = false;
- $data = $dataProvider->getModels();
- //出车 / 收车日期{开始日期}-{结束日期} {客户名称} {5种结算状态}订单
- $client = '';
- $status = $searchModel->end_status === '' ? '' : (' ' . searchOrder::$finance_type_array[$searchModel->end_status]);
- $objPHPExcel->file_name = ($searchModel->date_type == 1 ? '出车日期' : '收车日期') . ' ' . ($searchModel->date_from . '-' . $searchModel->date_to) . ' ' . $client . ' ' . $status;
- $objSheet->setTitle('订单列表');
- $order_sort = ['id', 'bus_number', 'create_time', 'depart_name', 'itinerary_name', 'bus_no', 'run_bus_id', 'run_date', 'date_end', 'bus_cost', 'bus_cost_id', 'send_cost', 'pay_type_name', 'end_status_name'];
- //设置表头
- $a_k = range('A', 'N');
- foreach ($a_k as $key => $item) {
- $objSheet->setCellValue($item . '1', $searchModel->getAttributeLabel($order_sort[$key]));
- }
-
- foreach ($data as $key => $datum) {
- foreach ($a_k as $index => $item) {
- if ($item == 'A')
- $objSheet->setCellValue($item . ($key + 2), $key + 1);
- else
- $objSheet->setCellValue($item . ($key + 2),
- $order_sort[$index] == 'run_bus_id' ? ($datum->$order_sort[$index] == 0 ? '-' : $datum->$order_sort[$index])
- : $datum->$order_sort[$index]);
- }
- }
-
- //设置宽度
- $objPHPExcel->setColumnSize(range('C', 'N'), [20, 20, 55, 12, 10, 12, 10, 10, 12, 12,12,12,12]);
- $objPHPExcel->output();
- }
-
- /**
- * User: wangxj
- *
- * 生成对账单,BusOrderFinance
- *
- */
- public function actionGenerateOrderFinance()
- {
- $searchModel = new searchOrder();
- $search = Yii::$app->request->post();
- $searchModel->search($search);
- $end_attr = $searchModel->send_type ? 'outcome_end_status' : 'end_status';
- if ($searchModel->$end_attr != 1) {
- $result = ['code' => 1, 'msg' => '请切换已关账的出车订单!'];
- } else {
-
- //客户为单位,所需数据
- $data = $searchModel->getOrderFinanceOrder();
- if (count($data) > 0) {
- $transaction = Yii::$app->db->beginTransaction();
- try {
- foreach ($data as $datum) {
- /* @var $datum \backend\modules\motorcade\models\searchOrder */
- $orderFinance = new BusOrderFinance();
- $orderFinance->DATE_FROM = $searchModel->date_from;
- $orderFinance->DATE_TO = $searchModel->date_to;
- $orderFinance->USE_BUS_ORG_ID = $datum->use_bus_org_id;
- $orderFinance->BUS_COST = $searchModel->send_type ? $datum->send_cost : $datum->bus_cost;
- $orderFinance->FINANCE_TYPE = $searchModel->send_type ? 1 : 0;
- $orderFinance->BUS_ORDER_COUNT = $datum->bus_order_count;
- if ($orderFinance->save()) {
- if ($orderFinance->FINANCE_TYPE == 1) {
- BusOrder::updateAll(['outcome_end_status' => BusOrder::STATUS_END_WAITING_CONFIRM, 'bus_order_outcome_finance' => $orderFinance->ID],
- 'id in (' . $datum->bus_ids . ')');
- } else {
- BusOrder::updateAll(['end_status' => BusOrder::STATUS_END_WAITING_CONFIRM, 'bus_order_finance' => $orderFinance->ID],
- 'id in (' . $datum->bus_ids . ')');
- }
-
- }
- }
-
- $transaction->commit();
- $result = ['code' => 0, 'msg' => '生成对账单成功!'];
- } catch (Exception $e) {
- $transaction->rollBack();
- $result = ['code' => 1, 'msg' => '生成对账单失败!'];
- }
- } else {
- $result = ['code' => 1, 'msg' => '无数据生成对账单!'];
- }
- }
-
- return Json::encode($result);
- }
- }
|