|
|
@@ -6,6 +6,8 @@ use App\Models\Order;
|
|
|
use Exception;
|
|
|
use Illuminate\Support\Facades\Storage;
|
|
|
use Illuminate\Support\Str;
|
|
|
+use PhpOffice\PhpSpreadsheet\IOFactory;
|
|
|
+use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
|
|
|
|
|
|
class GenerateDocumentsService
|
|
|
{
|
|
|
@@ -39,7 +41,8 @@ class GenerateDocumentsService
|
|
|
}
|
|
|
|
|
|
// generate xlsx order file
|
|
|
- // ...
|
|
|
+ $this->generateOrderForMount($order);
|
|
|
+
|
|
|
// create zip archive
|
|
|
$fileModel = (new FileService())->createZipArchive('orders/' . $order->id . '/tmp', self::INSTALL_FILENAME . $order->common_name . '.zip', $userId);
|
|
|
|
|
|
@@ -50,4 +53,44 @@ class GenerateDocumentsService
|
|
|
// return link
|
|
|
return $fileModel?->link ?? '';
|
|
|
}
|
|
|
+
|
|
|
+ private function generateOrderForMount(Order $order): void
|
|
|
+ {
|
|
|
+ $inputFileType = 'Xlsx'; // Xlsx - Xml - Ods - Slk - Gnumeric - Csv
|
|
|
+ $inputFileName = './templates/OrderForMount.xlsx';
|
|
|
+
|
|
|
+ $reader = IOFactory::createReader($inputFileType);
|
|
|
+ $spreadsheet = $reader->load($inputFileName);
|
|
|
+ $sheet = $spreadsheet->getActiveSheet();
|
|
|
+
|
|
|
+ // менеджер
|
|
|
+ $sheet->setCellValue('F8', $order->user->name);
|
|
|
+ $sheet->setCellValue('X8', $order->user->phone);
|
|
|
+
|
|
|
+ // округ и район
|
|
|
+ $sheet->setCellValue('L10', $order->district->shortname);
|
|
|
+ $sheet->setCellValue('W10', $order->area->name);
|
|
|
+
|
|
|
+ if($order->area->responsible) {
|
|
|
+ // ответственный
|
|
|
+ $sheet->setCellValue('C12', $order->area->responsible?->name
|
|
|
+ . ', ' . $order->area->responsible?->phone . ', ' . $order->area->responsible?->post);
|
|
|
+ } else {
|
|
|
+ $sheet->setCellValue('C12', '');
|
|
|
+ }
|
|
|
+ // адрес
|
|
|
+ $sheet->setCellValue('L14', $order->object_address);
|
|
|
+ $str = Str::replace('<div>', '', $order->products_with_count);
|
|
|
+ $str = Str::replace('</div>', "\n", $str);
|
|
|
+
|
|
|
+ // мафы
|
|
|
+ $sheet->setCellValue('G33', Str::trim($str));
|
|
|
+
|
|
|
+ //
|
|
|
+ $fileName = 'Заявка на монтаж - ' . $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);
|
|
|
+ }
|
|
|
}
|