diff --git a/app/Classes/General/Eloquent/Filters/CreatedAtBetween.php b/app/Classes/General/Eloquent/Filters/CreatedAtBetween.php
new file mode 100644
index 00000000..4aeebb8c
--- /dev/null
+++ b/app/Classes/General/Eloquent/Filters/CreatedAtBetween.php
@@ -0,0 +1,20 @@
+whereBetween('created_at', $value);
+ }
+
+}
\ No newline at end of file
diff --git a/app/Classes/General/Eloquent/Filters/CurrencyRateIdIn.php b/app/Classes/General/Eloquent/Filters/CurrencyRateIdIn.php
new file mode 100644
index 00000000..f80d0855
--- /dev/null
+++ b/app/Classes/General/Eloquent/Filters/CurrencyRateIdIn.php
@@ -0,0 +1,20 @@
+whereIn('currency_rate_id', $value);
+ }
+
+}
\ No newline at end of file
diff --git a/app/Classes/Modules/Bookings/ControllersLogic/DeletePurchaseOrderPdfLogic.php b/app/Classes/Modules/Bookings/ControllersLogic/DeletePurchaseOrderPdfLogic.php
new file mode 100644
index 00000000..5bc44d34
--- /dev/null
+++ b/app/Classes/Modules/Bookings/ControllersLogic/DeletePurchaseOrderPdfLogic.php
@@ -0,0 +1,69 @@
+ 'Purchase Order PDF Deleted',
+ 'message' => 'You have successfully deleted the Purchase order PDF'
+ ];
+ }
+
+ /** @var FetchesBooking */
+ private $fetchesBooking;
+
+ /** @var DeletesDocument */
+ private $deletesDocument;
+
+ /** @var CanDeleteDocument */
+ private $canDeleteDocument;
+
+
+ /**
+ * DeletePurchaseOrderPdfLogic constructor.
+ * @param FetchesBooking $fetchesBooking
+ * @param DeletesDocument $deletesDocument
+ * @param CanDeleteDocument $canDeleteDocument
+ */
+ public function __construct(fetchesBooking $fetchesBooking, DeletesDocument $deletesDocument, CanDeleteDocument $canDeleteDocument)
+ {
+ $this->fetchesBooking = $fetchesBooking;
+ $this->deletesDocument = $deletesDocument;
+ $this->canDeleteDocument = $canDeleteDocument;
+ }
+
+
+ /**
+ * @param Request $request
+ * @return JsonResponse
+ * @throws \App\Classes\Exceptions\MalformedRequestException
+ */
+ public function logic(Request $request) : JsonResponse
+ {
+ $booking = $this->fetchesBooking->execute(['id' => $request->route('id')]);
+
+ $document = $booking->documents()->where('document_type', DocumentType::ECOMMERCE_PURCHASE_ORDER)->first();
+
+ $this->canDeleteDocument->passes();
+
+ $this->deletesDocument->execute($document);
+
+ return $this->response([]);
+ }
+
+}
diff --git a/app/Classes/Modules/Companies/ControllersLogic/UpdateCompanyNameAndDebtorLogic.php b/app/Classes/Modules/Companies/ControllersLogic/UpdateCompanyNameAndDebtorLogic.php
new file mode 100644
index 00000000..05fb0746
--- /dev/null
+++ b/app/Classes/Modules/Companies/ControllersLogic/UpdateCompanyNameAndDebtorLogic.php
@@ -0,0 +1,82 @@
+ 'Update Company Account Status',
+ 'message' => 'You have successfully updated the Company Account Status'
+ ];
+ }
+ /** @var CanUpdateCompany */
+ private $canUpdateCompany;
+
+ /** @var UpdatesCompany */
+ private $updatesCompany;
+
+ /** @var FetchesCompany */
+ private $fetchesCompany;
+
+ /** @var UpdatesCompanyDebtor */
+ private $updatesCompanyDebtor;
+
+ /**
+ * UpdateCompanyControllersLogic constructor.
+ * @param CanUpdateCompany $canUpdateCompany
+ * @param UpdatesCompany $updatesCompany
+ * @param FetchesCompany $fetchesCompany
+ * @param UpdatesCompanyDebtor $updatesCompanyDebtor
+ */
+ public function __construct(
+ CanUpdateCompany $canUpdateCompany,
+ UpdatesCompany $updatesCompany,
+ FetchesCompany $fetchesCompany,
+ UpdatesCompanyDebtor $updatesCompanyDebtor
+ )
+ {
+ $this->canUpdateCompany = $canUpdateCompany;
+ $this->updatesCompany = $updatesCompany;
+ $this->fetchesCompany = $fetchesCompany;
+ $this->updatesCompanyDebtor = $updatesCompanyDebtor;
+ }
+
+ /**
+ * @param Request $request
+ * @return JsonResponse
+ * @throws ErrorException
+ */
+ public function logic(Request $request) : JsonResponse
+ {
+ $query = $this->fetchesCompany->execute(['id' => $request->route('id')]);
+
+ $object = new CompanyObject($request->input('name'), $request->input('reference'), $query->business_type, $request->input('type'));
+
+ $this->canUpdateCompany->passes($object);
+
+ $query = $this->updatesCompany->execute($query, $object);
+
+ if ($request->input('debtor') || $query->first()->debtor !== null) {
+ $this->updatesCompanyDebtor->execute($query, $request->input('debtor'));
+ }
+
+ return $this->resourceResponse(new CompanyResource($query));
+ }
+
+}
+
diff --git a/app/Classes/Modules/Companies/DataTransferObjects/CompanyObject.php b/app/Classes/Modules/Companies/DataTransferObjects/CompanyObject.php
index 09b0e153..cbc5df53 100644
--- a/app/Classes/Modules/Companies/DataTransferObjects/CompanyObject.php
+++ b/app/Classes/Modules/Companies/DataTransferObjects/CompanyObject.php
@@ -83,4 +83,4 @@ class CompanyObject implements DataTransferObject
-}
\ No newline at end of file
+}
diff --git a/app/Classes/Modules/Companies/Services/UpdatesCompany.php b/app/Classes/Modules/Companies/Services/UpdatesCompany.php
index f89bbca8..1b92c2d8 100644
--- a/app/Classes/Modules/Companies/Services/UpdatesCompany.php
+++ b/app/Classes/Modules/Companies/Services/UpdatesCompany.php
@@ -15,7 +15,7 @@ class UpdatesCompany extends AbstractUpdateRecord
* @return \Illuminate\Database\Eloquent\Model
* @throws \App\Classes\Exceptions\MalformedRequestException
*/
- public function execute(Company $model, CompanyObject $object)
+ public function execute(Company $model, CompanyObject $object)
{
$model->name = $object->getName();
$model->reference = $object->getReference();
@@ -23,4 +23,4 @@ class UpdatesCompany extends AbstractUpdateRecord
return $this->handler($model);
}
-}
\ No newline at end of file
+}
diff --git a/app/Classes/Modules/Companies/Services/UpdatesCompanyDebtor.php b/app/Classes/Modules/Companies/Services/UpdatesCompanyDebtor.php
index 4cb43a9f..14e0d6e2 100644
--- a/app/Classes/Modules/Companies/Services/UpdatesCompanyDebtor.php
+++ b/app/Classes/Modules/Companies/Services/UpdatesCompanyDebtor.php
@@ -11,6 +11,7 @@ class UpdatesCompanyDebtor extends AbstractUpdateRecord
/**
* @param Company $model
+ * @param CompanyObject $object
* @param string $debtor
* @return \Illuminate\Database\Eloquent\Model
* @throws \App\Classes\Exceptions\MalformedRequestException
@@ -18,6 +19,7 @@ class UpdatesCompanyDebtor extends AbstractUpdateRecord
public function execute(Company $model, string $debtor)
{
$model->debtor = $debtor;
+
return $this->handler($model);
}
-}
\ No newline at end of file
+}
diff --git a/app/Classes/Modules/Currencies/ControllersLogic/History/ListCurrencyRateHistoryLogic.php b/app/Classes/Modules/Currencies/ControllersLogic/History/ListCurrencyRateHistoryLogic.php
new file mode 100644
index 00000000..aae7d3aa
--- /dev/null
+++ b/app/Classes/Modules/Currencies/ControllersLogic/History/ListCurrencyRateHistoryLogic.php
@@ -0,0 +1,84 @@
+ 'Retrieved Currency Rate History',
+ 'message' => 'You have successfully retrieved a list of Currency Rate History'
+ ];
+ }
+
+ /** @var CanListRates */
+ private $canListRates;
+
+ /** @var ListsRateLogs */
+ private $listsRateLogs;
+
+ /** @var ListsRate */
+ private $listsRates;
+
+ /**
+ * ListRatesLogic constructor.
+ * @param CanListRates $canListRates
+ * @param ListsRates $listsRates
+ */
+ public function __construct(CanListRates $canListRates, ListsRateLogs $listsRateLogs, listsRates $listsRates)
+ {
+ $this->canListRates = $canListRates;
+ $this->listsRateLogs = $listsRateLogs;
+ $this->listsRates = $listsRates;
+ }
+
+
+ /**
+ * @param Request $request
+ * @return JsonResponse
+ * @throws ErrorException
+ */
+ public function logic(Request $request): JsonResponse
+ {
+ //$this->canListRates->passes();
+
+ $filterArray = json_decode($request->input('filters'));
+
+ $rate_filter['currency_id'] = $filterArray->currency_id;
+ $rate_filter['service_id'] = $filterArray->service_id;
+
+ $currency_rate_ids = $this->listsRates->execute(
+ [
+ 'currency_id' => $filterArray->currency_id,
+ 'service_id' => $filterArray->service_id,
+ ]
+ )->pluck('id')->toArray();
+
+ $query = $this->listsRateLogs->execute(
+ [
+ 'currency_rate_id_in' => $currency_rate_ids,
+ 'date_start' => new Carbon($filterArray->date_from),
+ 'date_end' => new Carbon($filterArray->date_to),
+ ]
+ );
+
+ return $this->collectionResponse(CurrencyRateLogResource::collection($query));
+ }
+}
diff --git a/app/Classes/Modules/Currencies/Services/Rates/ListsRateLogs.php b/app/Classes/Modules/Currencies/Services/Rates/ListsRateLogs.php
new file mode 100644
index 00000000..d3cfa469
--- /dev/null
+++ b/app/Classes/Modules/Currencies/Services/Rates/ListsRateLogs.php
@@ -0,0 +1,33 @@
+repository = $repository;
+ }
+
+
+ /**
+ * @return Builder
+ */
+ function getRepository(): Builder
+ {
+ return $this->repository->newQuery();
+ }
+}
\ No newline at end of file
diff --git a/app/Http/Controllers/Bookings/DeletePurchaseOrderPdfController.php b/app/Http/Controllers/Bookings/DeletePurchaseOrderPdfController.php
new file mode 100644
index 00000000..0113c0d5
--- /dev/null
+++ b/app/Http/Controllers/Bookings/DeletePurchaseOrderPdfController.php
@@ -0,0 +1,16 @@
+execute($request);
+ }
+
+}
\ No newline at end of file
diff --git a/app/Http/Controllers/Companies/UpdateCompanyNameAndDebtorController.php b/app/Http/Controllers/Companies/UpdateCompanyNameAndDebtorController.php
new file mode 100644
index 00000000..18599e7f
--- /dev/null
+++ b/app/Http/Controllers/Companies/UpdateCompanyNameAndDebtorController.php
@@ -0,0 +1,19 @@
+execute($request);
+ }
+}
diff --git a/app/Http/Controllers/Currencies/History/ListCurrencyRateHistory.php b/app/Http/Controllers/Currencies/History/ListCurrencyRateHistory.php
new file mode 100644
index 00000000..7e7db955
--- /dev/null
+++ b/app/Http/Controllers/Currencies/History/ListCurrencyRateHistory.php
@@ -0,0 +1,20 @@
+execute($request);
+ }
+
+}
\ No newline at end of file
diff --git a/app/Http/Resources/CompanyResource.php b/app/Http/Resources/CompanyResource.php
index cb357684..6d7cb2e4 100644
--- a/app/Http/Resources/CompanyResource.php
+++ b/app/Http/Resources/CompanyResource.php
@@ -37,6 +37,7 @@ class CompanyResource extends JsonResource
'id' => $this->id,
'name' => $this->name,
'reference' => $this->reference,
+ 'debtor' => $this->debtor,
'type' => (int) $this->type,
'business_type' => (int) $this->business_type,
'status' => (int) $this->status,
diff --git a/app/Http/Resources/CurrencyRateLogResource.php b/app/Http/Resources/CurrencyRateLogResource.php
new file mode 100644
index 00000000..f8560dd8
--- /dev/null
+++ b/app/Http/Resources/CurrencyRateLogResource.php
@@ -0,0 +1,26 @@
+currencyRate;
+
+ return [
+ 'currency_rate_id' => $this->currency_rate_id,
+ 'rate' => $this->selling,
+ 'created_at' => $this->created_at->format('d-m-Y'),
+ 'payment_method_type' => $currencyRate->payment_method_type,
+ ];
+ }
+}
diff --git a/app/Models/CurrencyRateLog.php b/app/Models/CurrencyRateLog.php
index 38130956..85b0eecf 100644
--- a/app/Models/CurrencyRateLog.php
+++ b/app/Models/CurrencyRateLog.php
@@ -1,10 +1,19 @@
BelongsTo(CurrencyRate::class, 'currency_rate_id', 'id');
+ }
}
diff --git a/resources/assets/vue/components/bookings/forms/ChooseCurrencyComponent.vue b/resources/assets/vue/components/bookings/forms/ChooseCurrencyComponent.vue
new file mode 100644
index 00000000..e670a450
--- /dev/null
+++ b/resources/assets/vue/components/bookings/forms/ChooseCurrencyComponent.vue
@@ -0,0 +1,118 @@
+
+ Nothing To Show HereAre you Sure?
+ 