diff --git a/app/Classes/Modules/Bookings/ControllersLogic/FetchBookingLogic.php b/app/Classes/Modules/Bookings/ControllersLogic/FetchBookingLogic.php
index d9857548..3700c46b 100644
--- a/app/Classes/Modules/Bookings/ControllersLogic/FetchBookingLogic.php
+++ b/app/Classes/Modules/Bookings/ControllersLogic/FetchBookingLogic.php
@@ -19,7 +19,7 @@ class FetchBookingLogic extends AbstractControllerLogic
protected function notification():array {
return [
'title' => 'Retrieved Address',
- 'message' => 'You have successfully retrieved a Address'
+ 'message' => 'You have successfully retrieved a Booking'
];
}
diff --git a/app/Classes/Modules/Bookings/ControllersLogic/RegenerateDocumentLogic.php b/app/Classes/Modules/Bookings/ControllersLogic/RegenerateDocumentLogic.php
new file mode 100644
index 00000000..4dfc028a
--- /dev/null
+++ b/app/Classes/Modules/Bookings/ControllersLogic/RegenerateDocumentLogic.php
@@ -0,0 +1,44 @@
+ 'Regenerate Document',
+ 'message' => 'You have successfully regenerated the document'
+ ];
+ }
+
+ /** @var RegenerateDocumentProcessor */
+ private $regenerateDocumentProcessor;
+
+ /**
+ * @param Request $request
+ * @return JsonResponse
+ * @param RegenerateDocumentProcessor $regenerateDocumentProcessor
+ * @throws \App\Classes\Exceptions\MalformedRequestException
+ */
+ public function __construct(RegenerateDocumentProcessor $regenerateDocumentProcessor){
+ $this->regenerateDocumentProcessor = $regenerateDocumentProcessor;
+ }
+
+ public function logic(Request $request) : JsonResponse
+ {
+ $this->regenerateDocumentProcessor->execute($request->route('id'), $request->route('document_type'));
+
+ return $this->response([]);
+ }
+
+}
\ No newline at end of file
diff --git a/app/Classes/Modules/Bookings/Processors/RegenerateDocumentProcessor.php b/app/Classes/Modules/Bookings/Processors/RegenerateDocumentProcessor.php
new file mode 100644
index 00000000..60d1335a
--- /dev/null
+++ b/app/Classes/Modules/Bookings/Processors/RegenerateDocumentProcessor.php
@@ -0,0 +1,63 @@
+fetchesBooking = $fetchesBooking;
+ }
+
+ /**
+ * @return void
+ * @throws \App\Classes\Exceptions\MalformedRequestException
+ */
+ public function execute(int $id, string $document_type)
+ {
+ $booking = $this->fetchesBooking->execute(['id' => $id]);
+
+ $document = $booking->documents()->where('document_type', $document_type)->delete();
+
+ if ($document_type == 'SUPPLIER_DELIVER_ORDER') {
+ $po = $booking->transactions()->where('type', TransactionType::PURCHASE_ORDER)->first();
+ $supplier_deliver_order_transaction = $booking->transactions()->where('type', TransactionType::SUPPLIER_DELIVER)->first();
+ $supplier = Company::find($booking->transactions()->where('type', TransactionType::PAYMENT)->where('status', 3)->first()->transactions()->first());
+ $supplier_order_pdf = LaravelMpdf::loadView('pages.pdfs.supplier_deliver_order', ['supplier_deliver_order_transaction' => $supplier_deliver_order_transaction, 'po_order_transaction' => $po, 'supplier' => $supplier]);
+
+ $document_object = new DocumentObject(
+ DocumentType::SUPPLIER_DELIVER_ORDER,
+ [chunk_split('data:application/pdf;base64,'.base64_encode($supplier_order_pdf->output()))],
+ '',
+ ApprovalStatus::COMPLETED,
+ 'supplier_delivery_orders'
+ );
+
+ $document = (App()->make(CreatesDocument::class))->execute($booking, $document_object);
+ (App()->make(CreatesFiles::class))->execute($document, $document_object);
+
+ }
+ }
+}
diff --git a/app/Http/Controllers/Bookings/RegenerateDocumentController.php b/app/Http/Controllers/Bookings/RegenerateDocumentController.php
new file mode 100644
index 00000000..0bce66c1
--- /dev/null
+++ b/app/Http/Controllers/Bookings/RegenerateDocumentController.php
@@ -0,0 +1,21 @@
+execute($request);
+ }
+
+}
\ No newline at end of file
diff --git a/resources/assets/vue/components/bookings/forms/RegenerateBookingDocumentComponent.vue b/resources/assets/vue/components/bookings/forms/RegenerateBookingDocumentComponent.vue
new file mode 100644
index 00000000..892d6e93
--- /dev/null
+++ b/resources/assets/vue/components/bookings/forms/RegenerateBookingDocumentComponent.vue
@@ -0,0 +1,33 @@
+
+ Are you Sure?
+