diff --git a/app/Classes/Modules/Bookings/ControllersLogic/CreatePerformaInvoiceTransactionLogic.php b/app/Classes/Modules/Bookings/ControllersLogic/CreatePerformaInvoiceTransactionLogic.php new file mode 100644 index 00000000..ab3bf220 --- /dev/null +++ b/app/Classes/Modules/Bookings/ControllersLogic/CreatePerformaInvoiceTransactionLogic.php @@ -0,0 +1,76 @@ + 'Create Perfoma Invoice Transaction', + 'message' => 'You have successfully create performa invoice transaction' + ]; + } + + /** @var CanFetchBooking */ + private $canFetchBooking; + + /** @var FetchesBooking */ + private $fetchesBooking; + + /** @var CreatePerformaInvoiceTransactionProcessor */ + private $CreatePerformaInvoiceTransactionProcessor; + + /** + * FetchBookingLogic constructor. + * @param CanFetchBooking $canFetchBooking + * @param FetchesBooking $fetchesBooking + * @param CreatePerformaInvoiceTransactionProcessor $CreatePerformaInvoiceTransactionProcessor + */ + public function __construct( + CanFetchBooking $canFetchBooking, + FetchesBooking $fetchesBooking, + CreatePerformaInvoiceTransactionProcessor $CreatePerformaInvoiceTransactionProcessor + ) + { + $this->canFetchBooking = $canFetchBooking; + $this->fetchesBooking = $fetchesBooking; + $this->CreatePerformaInvoiceTransactionProcessor = $CreatePerformaInvoiceTransactionProcessor; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\RequestValidationException + */ + public function logic(Request $request) : JsonResponse + { + $this->canFetchBooking->passes(); + + $booking = $this->fetchesBooking->execute(['id' => $request->route('id')]); + + $this->CreatePerformaInvoiceTransactionProcessor->execute($booking); + + return $this->resourceResponse(new BookingResource($booking)); + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/Bookings/CreatePerformaInvoiceTransaction.php b/app/Http/Controllers/Bookings/CreatePerformaInvoiceTransaction.php new file mode 100644 index 00000000..40c6d8db --- /dev/null +++ b/app/Http/Controllers/Bookings/CreatePerformaInvoiceTransaction.php @@ -0,0 +1,20 @@ +execute($request); + } + +} \ No newline at end of file diff --git a/resources/assets/vue/components/bookings/forms/PurchaseOrderFormComponent.vue b/resources/assets/vue/components/bookings/forms/PurchaseOrderFormComponent.vue index e63a6f9e..1f344962 100644 --- a/resources/assets/vue/components/bookings/forms/PurchaseOrderFormComponent.vue +++ b/resources/assets/vue/components/bookings/forms/PurchaseOrderFormComponent.vue @@ -120,8 +120,25 @@
-
+
+
+
+ + + +
+
- + +
diff --git a/routes/booking.php b/routes/booking.php index 1c436d40..fe3a08df 100644 --- a/routes/booking.php +++ b/routes/booking.php @@ -30,4 +30,5 @@ Route::group(['prefix' => 'booking', 'as' => 'booking.', 'namespace' => 'Booking Route::post('/merge', 'MergeBookingController@merge')->name('merge'); + Route::post('{id}/performa/create', 'CreatePerformaInvoiceTransaction@create')->name('performa.create'); }); \ No newline at end of file