diff --git a/app/Actions/Fulfilment/Fulfilment/UI/ShowFulfilment.php b/app/Actions/Fulfilment/Fulfilment/UI/ShowFulfilment.php index fac32300dd..b0983985b6 100644 --- a/app/Actions/Fulfilment/Fulfilment/UI/ShowFulfilment.php +++ b/app/Actions/Fulfilment/Fulfilment/UI/ShowFulfilment.php @@ -9,6 +9,7 @@ namespace App\Actions\Fulfilment\Fulfilment\UI; use App\Actions\OrgAction; +use App\Actions\Traits\WithDashboard; use App\Actions\UI\Dashboards\ShowGroupDashboard; use App\Actions\UI\WithInertia; use App\Enums\Catalogue\Shop\ShopTypeEnum; @@ -27,6 +28,8 @@ class ShowFulfilment extends OrgAction { use AsAction; use WithInertia; + use WithDashboard; + public function handle(Fulfilment $fulfilment): Fulfilment { @@ -50,9 +53,239 @@ public function asController(Organisation $organisation, Fulfilment $fulfilment, private function getDashboard(Fulfilment $fulfilment): array { - // dd($this->organisation->fulfilmentStats); return [ + + + 'dashboard_stats' => [ + 'widgets' => [ + 'column_count' => 4 , + 'components' => [ + + $this->getWidget( + colSpan: 1, + data: [ + 'value' => $fulfilment->shop->orderingStats->number_invoices, + 'description' => __('invoices'), + 'type' => 'number', + 'route' => [ + 'name' => 'grp.org.fulfilments.show.operations.invoices.all_invoices.index', + 'parameters' => [ + $fulfilment->organisation->slug, + $fulfilment->slug + ] + ] + ], + visual: [ + 'label' => __('Paid'), + 'type' => 'MeterGroup', + 'value' => $fulfilment->shop->orderingStats->number_invoices - $fulfilment->shop->orderingStats->number_unpaid_invoices, + 'max' => $fulfilment->shop->orderingStats->number_invoices, + 'color' => 'bg-blue-500', + 'right_label' => [ + 'label' => __('Unpaid').' '.$fulfilment->shop->orderingStats->number_unpaid_invoices, + 'route' => [ + 'name' => 'grp.org.fulfilments.show.operations.invoices.unpaid_invoices.index', + 'parameters' => [ + $fulfilment->organisation->slug, + $fulfilment->slug + ] + ] + ] + + + + ], + ), + + + $this->getWidget( + colSpan: 1, + data: [ + 'value' => $fulfilment->stats->current_recurring_bills_amount, + 'description' => __('Next Bills'), + 'type' => 'currency', + 'status' => $fulfilment->stats->current_recurring_bills_amount < 0 ? 'danger' : '', + 'currency_code' => $fulfilment->shop->currency->code, + 'route' => [ + 'name' => 'grp.org.fulfilments.show.operations.recurring_bills.current.index', + 'parameters' => [ + $fulfilment->organisation->slug, + $fulfilment->slug + ] + ] + ], + visual: [ + 'label' => __('Bills'), + 'type' => 'number', + 'value' => $fulfilment->stats->number_recurring_bills_status_current, + 'route' => [ + 'name' => 'grp.org.fulfilments.show.operations.recurring_bills.current.index', + 'parameters' => [ + $fulfilment->organisation->slug, + $fulfilment->slug + ] + ] + ], + ), + + $this->getWidget( + rowSpan: 1, + data: [ + 'value' => $fulfilment->stats->number_customers_status_active, + 'description' => __('Active Customers'), + 'type' => 'number', + 'route' => [ + 'name' => 'grp.org.fulfilments.show.crm.customers.index', + 'parameters' => [ + $fulfilment->organisation->slug, + $fulfilment->slug + ] + ] + ] + ), + + // $this->getWidget( + // colSpan: 2, + // data: [ + // 'value' => $fulfilment->stats->current_recurring_bills_amount, + // 'description' => __('Amount Bills'), + // 'type' => 'currency', + // 'status' => $fulfilment->stats->current_recurring_bills_amount < 0 ? 'danger' : '', + // 'currency_code' => $fulfilment->shop->currency->code, + // ] + // ), + // + // $this->getWidget( + // data: [ + // 'value' => $fulfilment->stats->number_customers_status_inactive, + // 'description' => __('Inactive Customers'), + // 'type' => 'number', + // ] + // ), + // $this->getWidget( + // data: [ + // 'value' => $fulfilment->shop->orderingStats->number_unpaid_invoices, + // 'description' => __('Total Unpaid Invoices'), + // 'type' => 'number', + // ] + // ), + // + // $this->getWidget( + // data: [ + // 'value' => $fulfilment->shop->orderingStats->unpaid_invoices_amount, + // 'description' => __('Amount Unpaid Invoices'), + // 'type' => 'currency', + // 'status' => $fulfilment->shop->orderingStats->unpaid_invoices_amount < 0 ? 'danger' : '', + // 'currency_code' => $fulfilment->shop->currency->code, + // ] + // ), + // + // $this->getWidget( + // colSpan: 2, + // data: [ + // 'value' => $fulfilment->stats->number_pallet_deliveries, + // 'description' => __('Deliveries'), + // 'type' => 'number', + // ], + // visual: [ + // 'type' => 'MeterGroup', + // 'value' => 382, + // 'max' => 500, + // 'color' => 'bg-blue-500', + // ], + // ), + // + // $this->getWidget( + // data: [ + // 'value' => $fulfilment->stats->number_pallet_returns, + // 'description' => __('Returns'), + // 'type' => 'number', + // ] + // ), + // + // $this->getWidget( + // data: [ + // 'value' => $fulfilment->stats->number_pallets, + // 'description' => __('Pallets'), + // 'type' => 'number', + // ] + // ), + // + // $this->getWidget( + // data: [ + // 'value' => $fulfilment->stats->number_pallets_with_stored_items, + // 'description' => __('Pallets with items'), + // 'type' => 'number', + // ] + // ), + // + // $this->getWidget( + // data: [ + // 'value' => $fulfilment->stats->number_pallets_type_pallet, + // 'description' => __('Pallets type pallet'), + // 'type' => 'number', + // ] + // ), + // + // $this->getWidget( + // data: [ + // 'value' => $fulfilment->stats->number_pallets_type_box, + // 'description' => __('Pallets type box'), + // 'type' => 'number', + // ] + // ), + // + // $this->getWidget( + // data: [ + // 'value' => $fulfilment->stats->number_pallets_type_oversize, + // 'description' => __('Pallets type oversize'), + // 'type' => 'number', + // ] + // ), + // + // $this->getWidget( + // data: [ + // 'value' => $fulfilment->stats->number_stored_items, + // 'description' => __('Stored items'), + // 'type' => 'number', + // ] + // ), + // + // $this->getWidget( + // data: [ + // 'value' => $fulfilment->stats->number_recurring_bills, + // 'description' => __('Recurring Bills'), + // 'type' => 'number', + // ] + // ), + // + // $this->getWidget( + // data: [ + // 'value' => $fulfilment->stats->number_recurring_bills_status_current, + // 'description' => __('Current Recurring Bills'), + // 'type' => 'number', + // ] + // ), + // + // $this->getWidget( + // data: [ + // 'value' => $fulfilment->stats->number_recurring_bills_status_former, + // 'description' => __('Former Recurring Bills'), + // 'type' => 'number', + // ] + // ), + // + // $this->getWidget( + // data: [ + // 'value' => $fulfilment->shop->orderingStats->number_invoices, + // 'description' => __('Total Invoices'), + // 'type' => 'number', + // ] + // ), + ] + ] + ], 'flatTreeMaps' => [ diff --git a/app/Actions/Fulfilment/PalletReturn/AddAddressToPalletReturn.php b/app/Actions/Fulfilment/PalletReturn/AddAddressToPalletReturn.php index 45adb6df1c..7c2815a034 100644 --- a/app/Actions/Fulfilment/PalletReturn/AddAddressToPalletReturn.php +++ b/app/Actions/Fulfilment/PalletReturn/AddAddressToPalletReturn.php @@ -16,7 +16,6 @@ use App\Actions\Traits\WithModelAddressActions; use App\Http\Resources\Fulfilment\PalletReturnResource; use App\Models\CRM\WebUser; -use App\Models\Fulfilment\FulfilmentCustomer; use App\Models\Fulfilment\PalletReturn; use App\Rules\ValidAddress; use Lorisleiva\Actions\ActionRequest; @@ -26,29 +25,17 @@ class AddAddressToPalletReturn extends OrgAction use WithActionUpdate; use WithModelAddressActions; - public function handle(FulfilmentCustomer $fulfilmentCustomer, PalletReturn $palletReturn, array $modelData): PalletReturn + public function handle(PalletReturn $palletReturn, array $modelData): PalletReturn { - if ($modelData == []) { - $address = $fulfilmentCustomer->customer->address->toArray(); - $palletReturn = $this->addAddressToModelFromArray( - model: $palletReturn, - addressData: $address, - scope: 'delivery', - updateLocation: false, - updateAddressField:false - ); - } else { - $palletReturn = $this->addAddressToModelFromArray( - model: $palletReturn, - addressData: $modelData['delivery_address'], - scope: 'delivery', - updateLocation: false, - updateAddressField:false - ); - } + $palletReturn = $this->addAddressToModelFromArray( + model: $palletReturn, + addressData: $modelData['delivery_address'], + scope: 'delivery', + updateLocation: false, + updateAddressField:false + ); $palletReturn->refresh(); - $palletReturn->update(['delivery_address_id' => null]); PalletReturnRecordSearch::dispatch($palletReturn); return $palletReturn; @@ -76,14 +63,14 @@ public function rules(): array } - public function asController(FulfilmentCustomer $fulfilmentCustomer, PalletReturn $palletReturn, ActionRequest $request): PalletReturn + public function asController(PalletReturn $palletReturn, ActionRequest $request): PalletReturn { $this->initialisationFromFulfilment($palletReturn->fulfilment, $request); - return $this->handle($fulfilmentCustomer, $palletReturn, $this->validatedData); + return $this->handle($palletReturn, $this->validatedData); } - public function action(FulfilmentCustomer $fulfilmentCustomer, PalletReturn $palletReturn, array $modelData, int $hydratorsDelay = 0, bool $strict = true): PalletReturn + public function action(PalletReturn $palletReturn, array $modelData, int $hydratorsDelay = 0, bool $strict = true): PalletReturn { $this->asAction = true; $this->hydratorsDelay = $hydratorsDelay; @@ -91,20 +78,9 @@ public function action(FulfilmentCustomer $fulfilmentCustomer, PalletReturn $pal $this->initialisationFromFulfilment($palletReturn->fulfilment, $modelData); - return $this->handle($fulfilmentCustomer, $palletReturn, $this->validatedData); + return $this->handle($palletReturn, $this->validatedData); } - public function fromRetina(PalletReturn $palletReturn, ActionRequest $request): PalletReturn - { - $customer = $request->user()->customer; - $palletReturn = $request->user()->customer->palletReturn; - - $this->initialisation($request->get('website')->organisation, $request); - - return $this->handle($customer, $palletReturn, $this->validatedData); - } - - public function jsonResponse(PalletReturn $palletReturn): PalletReturnResource { return new PalletReturnResource($palletReturn); diff --git a/app/Actions/Fulfilment/PalletReturn/DeletePalletReturnAddress.php b/app/Actions/Fulfilment/PalletReturn/DeletePalletReturnAddress.php index 87220a8c4b..9510a2500e 100644 --- a/app/Actions/Fulfilment/PalletReturn/DeletePalletReturnAddress.php +++ b/app/Actions/Fulfilment/PalletReturn/DeletePalletReturnAddress.php @@ -12,7 +12,6 @@ use App\Actions\Helpers\Address\Hydrators\AddressHydrateUsage; use App\Actions\OrgAction; -use App\Models\Fulfilment\FulfilmentCustomer; use App\Models\Fulfilment\PalletReturn; use App\Models\Helpers\Address; use Illuminate\Support\Facades\DB; @@ -31,7 +30,6 @@ public function handle(PalletReturn $palletreturn, Address $address): PalletRetu $address->delete(); $palletreturn->refresh(); - $palletreturn->update(['is_collection' => true]); return $palletreturn; } @@ -44,10 +42,10 @@ public function afterValidator(Validator $validator): void } - public function asController(FulfilmentCustomer $fulfilmentCustomer, PalletReturn $palletReturn, Address $address, ActionRequest $request): void + public function asController(PalletReturn $palletReturn, Address $address, ActionRequest $request): void { $this->address = $address; - $this->initialisationFromFulfilment($fulfilmentCustomer->fulfilment, $request); + $this->initialisationFromFulfilment($palletReturn->fulfilment, $request); $this->handle($palletReturn, $address); } @@ -57,14 +55,4 @@ public function action(PalletReturn $palletreturn, Address $address): PalletRetu $this->initialisationFromShop($palletreturn->shop, []); return $this->handle($palletreturn, $address); } - - public function fromRetina(FulfilmentCustomer $fulfilmentCustomer, PalletReturn $palletreturn, Address $address, ActionRequest $request): PalletReturn - { - $this->address = $address; - $palletreturn = $request->user()->palletreturn; - - $this->initialisation($request->get('website')->organisation, $request); - - return $this->handle($palletreturn, $address); - } } diff --git a/app/Actions/Fulfilment/PalletReturn/UI/ShowPalletReturn.php b/app/Actions/Fulfilment/PalletReturn/UI/ShowPalletReturn.php index de2afc7b79..8f5a8d1515 100644 --- a/app/Actions/Fulfilment/PalletReturn/UI/ShowPalletReturn.php +++ b/app/Actions/Fulfilment/PalletReturn/UI/ShowPalletReturn.php @@ -494,63 +494,40 @@ public function htmlResponse(PalletReturn $palletReturn, ActionRequest $request) FulfilmentCustomerResource::make($palletReturn->fulfilmentCustomer)->getArray(), [ 'address' => [ - 'value' => $palletReturn->is_collection ? [] : AddressResource::make($palletReturn->deliveryAddress), + 'value' => $palletReturn->is_collection ? + [] : + AddressResource::make($palletReturn->deliveryAddress), 'options' => [ 'countriesAddressData' => GetAddressData::run() ], - // 'address' => $palletReturn->is_collection ? [] : AddressResource::make($palletReturn->deliveryAddress), - // 'address_list' => AddressResource::make($palletReturn->deliveryAddress), + 'address_customer' => [ + 'value' => AddressResource::make($palletReturn->fulfilmentCustomer->customer->address), + 'options' => [ + 'countriesAddressData' => GetAddressData::run() + ], + ], 'pinned_address_id' => $palletReturn->fulfilmentCustomer->customer->delivery_address_id, 'home_address_id' => $palletReturn->fulfilmentCustomer->customer->address_id, 'current_selected_address_id' => $palletReturn->delivery_address_id, - // 'selected_delivery_addresses_id' => $palletReturnDeliveryAddressIds, - // 'routes_list' => [ - // 'pinned_route' => [ - // 'method' => 'patch', - // 'name' => 'grp.models.customer.delivery-address.update', - // 'parameters' => [ - // 'customer' => $palletReturn->fulfilmentCustomer->customer_id - // ] - // ], - // 'delete_route' => [ - // 'method' => 'delete', - // 'name' => 'grp.models.fulfilment-customer.pallet-return-address.delete', - // 'parameters' => [ - // 'fulfilmentCustomer' => $palletReturn->fulfilmentCustomer->id, - // 'palletReturn' => $palletReturn->id - // ] - // ], - // 'store_route' => [ - // 'method' => 'post', - // 'name' => 'grp.models.fulfilment-customer.pellet-return-address.store', - // 'parameters' => [ - // 'fulfilmentCustomer' => $palletReturn->fulfilmentCustomer->id, - // 'palletReturn' => $palletReturn->id - // ] - // ], - // ] 'routes_address' => [ 'store' => [ 'method' => 'post', - 'name' => 'grp.models.fulfilment-customer.pallet-return-address.store', + 'name' => 'grp.models.pallet-return.address.store', 'parameters' => [ - 'fulfilmentCustomer' => $palletReturn->fulfilmentCustomer->id, 'palletReturn' => $palletReturn->id ] ], 'delete' => [ 'method' => 'delete', - 'name' => 'grp.models.fulfilment-customer.pallet-return-address.delete', + 'name' => 'grp.models.pallet-return.address.delete', 'parameters' => [ - 'fulfilmentCustomer' => $palletReturn->fulfilmentCustomer->id, 'palletReturn' => $palletReturn->id ] ], 'update' => [ 'method' => 'patch', - 'name' => 'grp.models.fulfilment-customer.pallet-return-address.update', + 'name' => 'grp.models.pallet-return.address.update', 'parameters' => [ - 'fulfilmentCustomer' => $palletReturn->fulfilmentCustomer->id, 'palletReturn' => $palletReturn->id ] ] diff --git a/app/Actions/Fulfilment/PalletReturn/UpdatePalletReturnDeliveryAddress.php b/app/Actions/Fulfilment/PalletReturn/UpdatePalletReturnDeliveryAddress.php index 3fb5f03c80..a10ca2c200 100644 --- a/app/Actions/Fulfilment/PalletReturn/UpdatePalletReturnDeliveryAddress.php +++ b/app/Actions/Fulfilment/PalletReturn/UpdatePalletReturnDeliveryAddress.php @@ -21,9 +21,12 @@ class UpdatePalletReturnDeliveryAddress extends OrgAction { - public function handle(FulfilmentCustomer $fulfilmentcustomer, PalletReturn $palletReturn, array $modelData): void + public function handle(PalletReturn $palletReturn, array $modelData): void { - if (Arr::get($modelData, 'is_collection', true)) { + $isCollection = Arr::get($modelData, 'is_collection', true); + $palletReturn->update(['is_collection' => $isCollection]); + + if (!$isCollection) { $addressData = Arr::get($modelData, 'address'); $countryCode = Country::find($addressData['country_id'])->code; data_set($addressData, 'country_code', $countryCode); @@ -37,8 +40,8 @@ public function handle(FulfilmentCustomer $fulfilmentcustomer, PalletReturn $pal $updatedAddress->id, $pivotData ); - } else { - DeletePalletReturnAddress::run($palletReturn, Address::find($fulfilmentcustomer->palletReturn->delivery_address_id)); + } elseif ($palletReturn->delivery_address_id) { + DeletePalletReturnAddress::run($palletReturn, Address::find($palletReturn->delivery_address_id)); } } @@ -64,27 +67,19 @@ public function authorize(ActionRequest $request): bool return false; } - public function asController(FulfilmentCustomer $fulfilmentcustomer, PalletReturn $palletReturn, ActionRequest $request): void + public function asController(PalletReturn $palletReturn, ActionRequest $request): void { - $this->scope = $fulfilmentcustomer; - $this->initialisationFromShop($fulfilmentcustomer->shop, $request); + $this->scope = $palletReturn->customer; + $this->initialisationFromShop($palletReturn->shop, $request); - $this->handle($fulfilmentcustomer, $palletReturn, $this->validatedData); + $this->handle($palletReturn, $this->validatedData); } - // public function fromFulfilmentFulfilmentCustomer(FulfilmentFulfilmentCustomer $fulfilmentFulfilmentCustomer, ActionRequest $request): void - // { - // $this->scope = $fulfilmentFulfilmentCustomer; - // $this->initialisationFromFulfilment($fulfilmentFulfilmentCustomer->fulfilment, $request); - - // $this->handle($fulfilmentFulfilmentCustomer->fulfilmentcustomer, $this->validatedData); - // } - - public function action(FulfilmentCustomer $fulfilmentcustomer, PalletReturn $palletReturn, $modelData): void + public function action(PalletReturn $palletReturn, $modelData): void { $this->asAction = true; - $this->initialisationFromShop($fulfilmentcustomer->shop, $modelData); + $this->initialisationFromShop($palletReturn->shop, $modelData); - $this->handle($fulfilmentcustomer, $palletReturn, $this->validatedData); + $this->handle($palletReturn, $this->validatedData); } } diff --git a/app/Actions/Retina/Fulfilment/FulfilmentTransaction/StoreRetinaFulfilmentTransaction.php b/app/Actions/Retina/Fulfilment/FulfilmentTransaction/StoreRetinaFulfilmentTransaction.php index 0c84d99d1f..46c7272b27 100644 --- a/app/Actions/Retina/Fulfilment/FulfilmentTransaction/StoreRetinaFulfilmentTransaction.php +++ b/app/Actions/Retina/Fulfilment/FulfilmentTransaction/StoreRetinaFulfilmentTransaction.php @@ -101,10 +101,10 @@ public function fromRetinaInPalletReturn(PalletReturn $palletReturn, ActionReque $this->handle($palletReturn, $this->validatedData); } - public function action(PalletReturn|PalletDelivery $parent, array $modelData): void + public function action(PalletReturn|PalletDelivery $parent, array $modelData): FulfilmentTransaction { $this->initialisationFulfilmentActions($parent->fulfilmentCustomer, $modelData); - $this->handle($parent, $this->validatedData); + return $this->handle($parent, $this->validatedData); } } diff --git a/app/Actions/Retina/Fulfilment/PalletReturn/AttachRetinaPalletsToReturn.php b/app/Actions/Retina/Fulfilment/PalletReturn/AttachRetinaPalletsToReturn.php index e9f28f21f2..11029fffbe 100644 --- a/app/Actions/Retina/Fulfilment/PalletReturn/AttachRetinaPalletsToReturn.php +++ b/app/Actions/Retina/Fulfilment/PalletReturn/AttachRetinaPalletsToReturn.php @@ -13,6 +13,7 @@ use App\Actions\RetinaAction; use App\Enums\Fulfilment\Pallet\PalletStateEnum; use App\Enums\Fulfilment\Pallet\PalletStatusEnum; +use App\Models\CRM\WebUser; use App\Models\Fulfilment\Pallet; use App\Models\Fulfilment\PalletReturn; use Illuminate\Http\RedirectResponse; @@ -27,7 +28,7 @@ class AttachRetinaPalletsToReturn extends RetinaAction private PalletReturn $parent; - + private bool $action = false; public function handle(PalletReturn $palletReturn, array $modelData): PalletReturn { @@ -56,7 +57,7 @@ public function handle(PalletReturn $palletReturn, array $modelData): PalletRetu Pallet::whereIn('id', $palletsToSelect)->update([ 'pallet_return_id' => $palletReturn->id, 'status' => PalletStatusEnum::RETURNING, - 'state' => PalletStateEnum::REQUEST_RETURN + 'state' => PalletStateEnum::REQUEST_RETURN_IN_PROCESS ]); $pallets = Pallet::findOrFail($palletsToSelect); @@ -100,7 +101,15 @@ public function unselectPallets(PalletReturn $palletReturn, array $palletIds): v public function authorize(ActionRequest $request): bool { - return true; + if ($this->action) { + return true; + } + + if ($request->user() instanceof WebUser) { + return true; + } + + return false; } public function rules(): array @@ -118,6 +127,14 @@ public function asController(PalletReturn $palletReturn, ActionRequest $request) return $this->handle($palletReturn, $this->validatedData); } + public function action(PalletReturn $palletReturn, array $modelData): PalletReturn + { + $this->action = true; + $this->initialisationFulfilmentActions($palletReturn->fulfilmentCustomer, $modelData); + + return $this->handle($palletReturn, $this->validatedData); + } + public function htmlResponse(PalletReturn $palletReturn, ActionRequest $request): RedirectResponse { return Redirect::route('retina.fulfilment.storage.pallet-returns.show', [ diff --git a/app/Actions/Retina/Fulfilment/PalletReturn/CancelRetinaPalletReturn.php b/app/Actions/Retina/Fulfilment/PalletReturn/CancelRetinaPalletReturn.php index b7e4e3e7aa..1dba4b8770 100644 --- a/app/Actions/Retina/Fulfilment/PalletReturn/CancelRetinaPalletReturn.php +++ b/app/Actions/Retina/Fulfilment/PalletReturn/CancelRetinaPalletReturn.php @@ -29,7 +29,7 @@ class CancelRetinaPalletReturn extends RetinaAction { use WithActionUpdate; - + private bool $action = false; public function handle(PalletReturn $palletReturn, array $modelData): PalletReturn { $modelData[PalletReturnStateEnum::CANCEL->value.'_at'] = now(); @@ -55,6 +55,9 @@ public function handle(PalletReturn $palletReturn, array $modelData): PalletRetu public function authorize(ActionRequest $request): bool { + if ($this->action) { + return true; + } return true; } @@ -68,4 +71,11 @@ public function asController(PalletReturn $palletReturn, ActionRequest $request) $this->initialisation($request); return $this->handle($palletReturn, $this->validatedData); } + + public function action(PalletReturn $palletReturn, array $modelData): PalletReturn + { + $this->action = true; + $this->initialisationFulfilmentActions($palletReturn->fulfilmentCustomer, $modelData); + return $this->handle($palletReturn, $this->validatedData); + } } diff --git a/app/Actions/Retina/Fulfilment/PalletReturn/DetachRetinaPalletFromReturn.php b/app/Actions/Retina/Fulfilment/PalletReturn/DetachRetinaPalletFromReturn.php index 015344bfa0..a7f4fffc4b 100644 --- a/app/Actions/Retina/Fulfilment/PalletReturn/DetachRetinaPalletFromReturn.php +++ b/app/Actions/Retina/Fulfilment/PalletReturn/DetachRetinaPalletFromReturn.php @@ -27,6 +27,7 @@ class DetachRetinaPalletFromReturn extends RetinaAction private Pallet $pallet; + private bool $action = false; public function handle(PalletReturn $palletReturn, Pallet $pallet): bool { @@ -48,6 +49,9 @@ public function handle(PalletReturn $palletReturn, Pallet $pallet): bool public function authorize(ActionRequest $request): bool { + if ($this->action) { + return true; + } return true; } @@ -58,6 +62,14 @@ public function asController(PalletReturn $palletReturn, Pallet $pallet, ActionR return $this->handle($palletReturn, $pallet); } + public function action(PalletReturn $palletReturn, Pallet $pallet, array $modelData): bool + { + $this->action = true; + $this->initialisationFulfilmentActions($palletReturn->fulfilmentCustomer, $modelData); + + return $this->handle($palletReturn, $pallet); + } + public function jsonResponse(Pallet $pallet): PalletResource { return new PalletResource($pallet); diff --git a/app/Actions/Retina/Fulfilment/PalletReturn/StoreRetinaStoredItemsToReturn.php b/app/Actions/Retina/Fulfilment/PalletReturn/StoreRetinaStoredItemsToReturn.php index 7f268386fc..cc75ca6267 100644 --- a/app/Actions/Retina/Fulfilment/PalletReturn/StoreRetinaStoredItemsToReturn.php +++ b/app/Actions/Retina/Fulfilment/PalletReturn/StoreRetinaStoredItemsToReturn.php @@ -9,6 +9,7 @@ namespace App\Actions\Retina\Fulfilment\PalletReturn; use App\Actions\Fulfilment\PalletReturn\Hydrators\PalletReturnHydratePallets; +use App\Actions\Fulfilment\PalletReturn\Hydrators\PalletReturnHydrateStoredItems; use App\Actions\RetinaAction; use App\Models\Fulfilment\FulfilmentCustomer; use App\Models\Fulfilment\Pallet; @@ -25,8 +26,8 @@ class StoreRetinaStoredItemsToReturn extends RetinaAction { use AsCommand; - public $commandSignature = 'stored-item:store-to-return {palletReturn}'; private PalletReturn $parent; + private bool $action = false; public function handle(PalletReturn $palletReturn, array $modelData): PalletReturn { @@ -73,7 +74,7 @@ public function handle(PalletReturn $palletReturn, array $modelData): PalletRetu $palletReturn->refresh(); PalletReturnHydratePallets::run($palletReturn); - + PalletReturnHydrateStoredItems::run($palletReturn); return $palletReturn; } @@ -120,6 +121,15 @@ public function asController(PalletReturn $palletReturn, ActionRequest $request) return $this->handle($palletReturn, $this->validatedData); } + public function action(PalletReturn $palletReturn, array $modelData): PalletReturn + { + /** @var FulfilmentCustomer $fulfilmentCustomer */ + $this->action = true; + $this->parent = $palletReturn; + $this->initialisationFulfilmentActions($palletReturn->fulfilmentCustomer, $modelData); + return $this->handle($palletReturn, $this->validatedData); + } + public function htmlResponse(PalletReturn $palletReturn, ActionRequest $request): RedirectResponse { return Redirect::route('retina.fulfilment.storage.pallet-returns.show', [ diff --git a/app/Actions/Retina/Fulfilment/PalletReturn/SubmitRetinaPalletReturn.php b/app/Actions/Retina/Fulfilment/PalletReturn/SubmitRetinaPalletReturn.php index b44a6dbf57..4b55604949 100644 --- a/app/Actions/Retina/Fulfilment/PalletReturn/SubmitRetinaPalletReturn.php +++ b/app/Actions/Retina/Fulfilment/PalletReturn/SubmitRetinaPalletReturn.php @@ -23,7 +23,6 @@ use App\Enums\Fulfilment\PalletReturn\PalletReturnStateEnum; use App\Enums\Helpers\SerialReference\SerialReferenceModelEnum; use App\Http\Resources\Fulfilment\PalletReturnResource; -use App\Models\CRM\WebUser; use App\Models\Fulfilment\PalletReturn; use Illuminate\Http\Resources\Json\JsonResource; use Lorisleiva\Actions\ActionRequest; @@ -34,17 +33,12 @@ class SubmitRetinaPalletReturn extends RetinaAction private bool $sendNotifications = false; + private bool $action = false; public function handle(PalletReturn $palletReturn, array $modelData): PalletReturn { $modelData[PalletReturnStateEnum::SUBMITTED->value.'_at'] = now(); - - if (!request()->user() instanceof WebUser) { - $modelData[PalletReturnStateEnum::CONFIRMED->value.'_at'] = now(); - $modelData['state'] = PalletReturnStateEnum::CONFIRMED; - } else { - $modelData['state'] = PalletReturnStateEnum::SUBMITTED; - } + $modelData['state'] = PalletReturnStateEnum::SUBMITTED; foreach ($palletReturn->pallets as $pallet) { UpdatePallet::run($pallet, [ @@ -79,6 +73,9 @@ public function handle(PalletReturn $palletReturn, array $modelData): PalletRetu public function authorize(ActionRequest $request): bool { + if ($this->action) { + return true; + } return true; } @@ -94,4 +91,12 @@ public function asController(PalletReturn $palletReturn, ActionRequest $request) return $this->handle($palletReturn, $this->validatedData); } + + public function action(PalletReturn $palletReturn, array $modelData): PalletReturn + { + $this->action = true; + $this->initialisationFulfilmentActions($palletReturn->fulfilmentCustomer, $modelData); + + return $this->handle($palletReturn, $this->validatedData); + } } diff --git a/app/Actions/Retina/Fulfilment/PalletReturn/UpdateRetinaPalletReturn.php b/app/Actions/Retina/Fulfilment/PalletReturn/UpdateRetinaPalletReturn.php index 8cff5e938d..1d8a857e3d 100644 --- a/app/Actions/Retina/Fulfilment/PalletReturn/UpdateRetinaPalletReturn.php +++ b/app/Actions/Retina/Fulfilment/PalletReturn/UpdateRetinaPalletReturn.php @@ -78,6 +78,9 @@ public function handle(PalletReturn $palletReturn, array $modelData): PalletRetu public function authorize(ActionRequest $request): bool { + if ($this->action) { + return true; + } return true; } @@ -96,4 +99,11 @@ public function asController(Organisation $organisation, PalletReturn $palletRet return $this->handle($palletReturn, $this->validatedData); } + + public function action(PalletReturn $palletReturn, array $modelData): PalletReturn + { + $this->action = true; + $this->initialisationFulfilmentActions($palletReturn->fulfilmentCustomer, $modelData); + return $this->handle($palletReturn, $modelData); + } } diff --git a/resources/js/Components/CMS/Webpage/Overview/OverviewIris.vue b/resources/js/Components/CMS/Webpage/Overview/OverviewIris.vue index f1e72b7d9a..3db46b92d2 100644 --- a/resources/js/Components/CMS/Webpage/Overview/OverviewIris.vue +++ b/resources/js/Components/CMS/Webpage/Overview/OverviewIris.vue @@ -23,7 +23,7 @@ const props = defineProps<{