shish 2 years ago
parent
commit
c39d103355

+ 6 - 0
app-ghs/controllers/CustomDebtChangeController.php

@@ -18,7 +18,13 @@ class CustomDebtChangeController extends BaseController
     {
         $get = Yii::$app->request->get();
         $customId = $get['customId'] ?? 0;
+        if(empty($customId)){
+            util::fail('请选择客户');
+        }
         $custom = CustomClass::getById($customId);
+        if(empty($custom)){
+            util::fail('请选择客户哈');
+        }
         CustomClass::valid($custom, $this->shopId);
         $ptStyle = dict::getDict('ptStyle', 'ghs');
         $where = [];

+ 39 - 0
app-ghs/controllers/OrderController.php

@@ -3,6 +3,7 @@
 namespace ghs\controllers;
 
 use biz\shop\classes\ShopExtClass;
+use bizGhs\custom\classes\CustomDebtChangeClass;
 use bizGhs\express\services\DadaExpressServices;
 use bizGhs\ghs\classes\GhsClass;
 use bizGhs\order\classes\OrderItemClass;
@@ -2171,6 +2172,44 @@ class OrderController extends BaseController
     }
 
 
+    //应收款统计 ssh 20240528
+    public function actionPastList()
+    {
+        $get = Yii::$app->request->get();
+        $export = $get['export'] ?? 0;
+        $searchTime = isset($get['searchTime']) && !empty($get['searchTime']) ? $get['searchTime'] : 'today';
+        $startTime = $get['startTime'] ?? '';
+        $endTime = $get['endTime'] ?? '';
+        $period = dateUtil::formatTime($searchTime, $startTime, $endTime, true);
+        $end = $period['endTime'];
+
+        $customList = CustomClass::getAllByCondition(['ownMainId' => $this->mainId], null, 'id,name,mobile', 'id');
+        $currentDate = date('Y-m-d 00:00:00', bcadd(strtotime($end),86400));
+        $totalAmount = 0;
+        if(!empty($customList)){
+            foreach($customList as $key => $custom){
+                $customId = $custom['id']??0;
+                $change = CustomDebtChangeClass::getByCondition(['customId'=>$customId,'addTime<'=>$currentDate],true,'addTime DESC');
+                $amount = $change->balance ?? 0;
+                $totalAmount = bcadd($totalAmount,$amount,2);
+                $customList[$key]['currentDebAmount'] =$amount;
+            }
+            $customList = array_values($customList);
+        }
+        if ($export == 1) {
+            $mainId = $this->mainId;
+            if (empty($customList)) {
+                util::fail('没有数据需要导出');
+            }
+            ini_set('memory_limit', '2045M');
+            set_time_limit(0);
+            OrderClass::exportPastList($customList, $mainId);
+            util::stop();
+        }
+        util::success(['list' => $customList, 'totalAmount' => $totalAmount]);
+    }
+
+
     //客户业绩 ssh 20240528
     public function actionYj()
     {

+ 78 - 1
biz-ghs/order/classes/OrderClass.php

@@ -2491,4 +2491,81 @@ XL;
         util::success(['file' => $fileUrl, 'shortFile' => $file]);
     }
 
-}
+    //应收统计下载 ssh 20240530
+    public static function exportPastList($list, $mainId)
+    {
+        $phpExcelFile = Yii::getAlias("@vendor/phpoffice/phpexcel/");
+        require_once($phpExcelFile . 'Classes/PHPExcel.php');
+
+        $objPHPExcel = new \PHPExcel();
+
+        $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
+            ->setLastModifiedBy("Maarten Balliauw")
+            ->setTitle("Office 2007 XLSX Document")
+            ->setSubject("Office 2007 XLSX Document")
+            ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
+            ->setKeywords("office 2007 openxml php")
+            ->setCategory("file");
+
+        $ghsTitle = '供货商';
+        $objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader(date('n月j日') . " " . $ghsTitle);
+
+        $objPHPExcel->getActiveSheet()->getPageMargins()->setTop(0.7);
+        $objPHPExcel->getActiveSheet()->getPageMargins()->setBottom(0.1);
+        $objPHPExcel->getActiveSheet()->getPageMargins()->setLeft(0.5);
+        $objPHPExcel->getActiveSheet()->getPageMargins()->setRight(0);
+        $objPHPExcel->getActiveSheet()->getPageMargins()->setHeader(0.1);
+        $objPHPExcel->getActiveSheet()->getPageMargins()->setFooter(0);
+
+        $objPHPExcel->getActiveSheet()->setCellValue('A1', 'ID');
+        $objPHPExcel->getActiveSheet()->setCellValue('B1', '客户名称');
+        $objPHPExcel->getActiveSheet()->setCellValue('C1', '手机号');
+        $objPHPExcel->getActiveSheet()->setCellValue('D1', '欠款金额');
+
+        //设置宽度
+        $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(25);
+        $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);
+        $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);
+        //加粗
+        $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(9)->setBold(true);
+        $objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setSize(9)->setBold(true);
+        $objPHPExcel->getActiveSheet()->getStyle('C1')->getFont()->setSize(9)->setBold(true);
+        $objPHPExcel->getActiveSheet()->getStyle('D1')->getFont()->setSize(9)->setBold(true);
+
+        $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
+        $objPHPExcel->getActiveSheet()->getStyle('B1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
+        $objPHPExcel->getActiveSheet()->getStyle('C1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
+        $objPHPExcel->getActiveSheet()->getStyle('D1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
+
+        $baseRow = 2;
+        foreach ($list as $key => $custom) {
+            $i = $baseRow + $key;
+            $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $custom['id']);
+            $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $custom['name']);
+            $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $custom['mobile']);
+            $objPHPExcel->getActiveSheet()->setCellValue('D' . $i, $custom['currentDebAmount']);
+            //居左
+            $objPHPExcel->getActiveSheet()->getStyle('A' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
+            $objPHPExcel->getActiveSheet()->getStyle('B' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
+            $objPHPExcel->getActiveSheet()->getStyle('C' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
+            $objPHPExcel->getActiveSheet()->getStyle('D' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
+        }
+        $fileName = '历史应收-' . date("m-d");
+        $objPHPExcel->getActiveSheet()->setTitle($fileName);
+        $objPHPExcel->setActiveSheetIndex(0);
+        $dir = './priceTable/' . $mainId;
+        if (file_exists($dir) == false) {
+            mkdir($dir, 0777, true);
+        }
+        $date = $fileName;
+        $file = $date . '.xls';
+        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
+        if (file_exists($dir . '/' . $file)) {
+            unlink($dir . '/' . $file);
+        }
+        $objWriter->save($dir . '/' . $file);
+        $fileUrl = Yii::$app->params['ghsHost'] . '/priceTable/' . $mainId . '/' . $file;
+        util::success(['file' => $fileUrl, 'shortFile' => $file]);
+    }
+
+}