|
|
@@ -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';
|