Ver Fonte

passport and inventory generate

Alexander Musikhin há 7 meses atrás
pai
commit
de30c4b3c7

+ 74 - 2
app/Services/GenerateDocumentsService.php

@@ -99,7 +99,6 @@ class GenerateDocumentsService
         $writer->save(storage_path('app/public/orders/') . $order->id . '/tmp/' . $fileName);
     }
 
-
     /**
      * @throws Exception
      */
@@ -144,6 +143,8 @@ class GenerateDocumentsService
         // generate xlsx order files
         $this->generateStatement($order);
         $this->generateQualityDeclaration($order);
+        $this->generateInventory($order);
+        $this->generatePassport($order);
 
 
         // create zip archive
@@ -203,7 +204,6 @@ class GenerateDocumentsService
 
         $writer->save(storage_path('app/public/orders/') . $order->id . '/tmp/' . $fileName);
     }
-
     public function generateQualityDeclaration(Order $order): void
     {
         $inputFileType = 'Xlsx';
@@ -255,5 +255,77 @@ class GenerateDocumentsService
 
         $writer->save(storage_path('app/public/orders/') . $order->id . '/tmp/' . $fileName);
     }
+    public function generateInventory(Order $order): void
+    {
+        $inputFileType = 'Xlsx';
+        $inputFileName = './templates/Inventory.xlsx';
+
+        $reader = IOFactory::createReader($inputFileType);
+        $spreadsheet = $reader->load($inputFileName);
+        $sheet = $spreadsheet->getActiveSheet();
+
+        $address = 'Округ: ' . $order->district->shortname . ' Район ' . $order->area->name;
+
+
+        $sheet->setCellValue('C4', $order->name);
+        $sheet->setCellValue('C5', $address);
+        $sheet->setCellValue('C13', $order->user->name);
+
+        $i = 8; // start of table
+        $n = 1;
+        foreach ($order->products_sku as $sku) {
+            if ($n++ > 1) {
+                $sheet->insertNewRowBefore($i + 3, 3);
+                $range = 'A' . $i . ':E' . $i + 2;
+                $i = $i + 3;
+                ExcelHelper::copyRows($sheet, $range, 'A' . $i);
+            }
+            $sheet->setCellValue('A' . $i, $n - 1);
+            $sheet->setCellValue('B' . $i, $sku->product->passport_name);
+            $sheet->setCellValue('B' . $i + 2, $sku->rfid);
+        }
+
+        // save file
+        $fileName = '3.Опись.xlsx';
+        $writer = new Xlsx($spreadsheet);
+        Storage::disk('public')->makeDirectory('orders/' . $order->id . '/tmp');
+
+        $writer->save(storage_path('app/public/orders/') . $order->id . '/tmp/' . $fileName);
+    }
+    public function generatePassport(Order $order): void
+    {
+        $inputFileType = 'Xlsx';
+        $inputFileName = './templates/Passport.xlsx';
+
+        $reader = IOFactory::createReader($inputFileType);
+        $spreadsheet = $reader->load($inputFileName);
+        $sheet = $spreadsheet->getActiveSheet();
+
+        $i = 3; // start of table
+        $n = 1;
+        foreach ($order->products_sku as $sku) {
+            echo $sku->id . "\n";
+            if ($n++ > 1) {
+                $sheet->insertNewRowBefore($i + 1, 1);
+                $range = 'A' . $i . ':J' . $i;
+                $i++;
+                ExcelHelper::copyRows($sheet, $range, 'A' . $i);
+            }
+            $sheet->setCellValue('A' . $i, $n - 1);
+            $sheet->setCellValue('B' . $i, $sku->product->passport_name);
+            $sheet->setCellValue('C' . $i, $sku->product->type_tz);
+            $sheet->setCellValue('D' . $i, $sku->rfid);
+            $sheet->setCellValue('E' . $i, $sku->product->certificate_number);
+            $sheet->setCellValue('G' . $i, $sku->factory_number);
+            $sheet->setCellValue('H' . $i, DateHelper::getHumanDate($sku->manufacture_date, true));
+        }
+
+        // save file
+        $fileName = '4.Паспорт объекта - ' . $order->object_address . '.xlsx';
+        $writer = new Xlsx($spreadsheet);
+        Storage::disk('public')->makeDirectory('orders/' . $order->id . '/tmp');
+
+        $writer->save(storage_path('app/public/orders/') . $order->id . '/tmp/' . $fileName);
+    }
 
 }

BIN
templates/Inventory.xlsx


BIN
templates/Passport.xlsx