Alexander Musikhin 15 часов назад
Родитель
Сommit
48a22a3e51
1 измененных файлов с 12 добавлено и 8 удалено
  1. 12 8
      app/Services/GenerateDocumentsService.php

+ 12 - 8
app/Services/GenerateDocumentsService.php

@@ -18,6 +18,7 @@ use Illuminate\Support\Collection;
 use Illuminate\Support\Facades\Storage;
 use Illuminate\Support\Str;
 use PhpOffice\PhpSpreadsheet\IOFactory;
+use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
 use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
 use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
 
@@ -248,21 +249,25 @@ class GenerateDocumentsService
 
     private function generateQualityDeclaration(Order $order): void
     {
+        $rowsPerDeclaration = 57;
         $inputFileType = 'Xlsx';
         $inputFileName = './templates/QualityDeclaration.xlsx';
 
         $reader = IOFactory::createReader($inputFileType);
         $spreadsheet = $reader->load($inputFileName);
         $sheet = $spreadsheet->getActiveSheet();
+        $sheet->getPageSetup()->setFitToWidth(1);
+        $sheet->getPageSetup()->setFitToHeight(0);
 
         $address = 'г. Москва, ' . $order->district->shortname . ', район ' . $order->area->name . ', по адресу: ' . (filled(trim((string) $order->name)) ? $order->name : $order->object_address);
         $i = 1; // start of table
         $n = 1;
         foreach ($order->products_sku as $sku) {
             if ($n++ > 1) {
-                $range = 'A' . $i . ':I' . $i + 56;
-                $i = $i + 57;
+                $range = 'A' . $i . ':I' . ($i + $rowsPerDeclaration - 1);
+                $i += $rowsPerDeclaration;
                 ExcelHelper::copyRows($sheet, $range, 'A' . $i);
+                $sheet->setBreak('A' . ($i - 1), Worksheet::BREAK_ROW);
 
                 // add header img
                 $drawing = new Drawing();
@@ -279,16 +284,15 @@ class GenerateDocumentsService
             }
 
             // document date?
-            $sheet->setCellValue('A' . $i + 7, DateHelper::getHumanDate(date('Y-m-d'), true));
+            $sheet->setCellValue('A' . ($i + 7), DateHelper::getHumanDate(date('Y-m-d'), true));
 
-            $sheet->setCellValue('B' . $i + 16, $sku->product->passport_name);
-            $sheet->setCellValue('C' . $i + 18, $sku->rfid);
-            $sheet->setCellValue('C' . $i + 20, $address);
-
-            // add page break and copy prev page
+            $sheet->setCellValue('B' . ($i + 16), $sku->product->passport_name);
+            $sheet->setCellValue('C' . ($i + 18), $sku->rfid);
+            $sheet->setCellValue('C' . ($i + 20), $address);
 
 
         }
+        $sheet->getPageSetup()->setPrintArea('A1:I' . ($i + $rowsPerDeclaration - 1));
 
         // save file
         $fileName = '2.Декларация качества.xlsx';