diff --git a/app/Imports/Fulfilment/PalletImport.php b/app/Imports/Fulfilment/PalletImport.php index 02f3da9ca0..8be0160806 100644 --- a/app/Imports/Fulfilment/PalletImport.php +++ b/app/Imports/Fulfilment/PalletImport.php @@ -13,8 +13,10 @@ use App\Imports\WithImport; use App\Models\Fulfilment\PalletDelivery; use App\Models\Helpers\Upload; +use App\Rules\IUnique; use Exception; use Illuminate\Support\Arr; +use Illuminate\Validation\Rule; use Maatwebsite\Excel\Concerns\SkipsOnFailure; use Maatwebsite\Excel\Concerns\ToCollection; use Maatwebsite\Excel\Concerns\WithEvents; @@ -85,7 +87,22 @@ public function storeModel($row, $uploadRecord): void public function rules(): array { return [ - 'customer_reference' => ['nullable', 'unique:pallets,customer_reference'], + 'customer_reference' => [ + 'sometimes', + 'nullable', + 'max:64', + 'string', + Rule::notIn(['export', 'create', 'upload']), + new IUnique( + table: 'pallets', + column: 'customer_reference', + extraConditions: [ + ['column' => 'fulfilment_customer_id', 'value' => $this->scope->fulfilment_customer_id], + ] + ), + + + ], 'notes' => ['nullable'], 'type' => ['nullable'], 'stored_item' => ['nullable'], diff --git a/app/Models/Fulfilment/FulfilmentCustomer.php b/app/Models/Fulfilment/FulfilmentCustomer.php index a772818b11..b0453a1d68 100644 --- a/app/Models/Fulfilment/FulfilmentCustomer.php +++ b/app/Models/Fulfilment/FulfilmentCustomer.php @@ -60,7 +60,7 @@ * @property int $number_pallets_with_stored_items_state_not_received * @property int $number_pallets_state_storing * @property int $number_pallets_with_stored_items_state_storing - * @property int $number_pallets_state_request_return + * @property int $number_pallets_state_request_return_in_process * @property int $number_pallets_with_stored_items_state_request_return * @property int $number_pallets_state_picking * @property int $number_pallets_with_stored_items_state_picking @@ -123,6 +123,8 @@ * @property \Illuminate\Support\Carbon|null $deleted_at * @property string|null $delete_comment * @property string|null $source_id + * @property int $number_pallets_state_request_return_submitted + * @property int $number_pallets_state_request_return_confirmed * @property-read \App\Models\Fulfilment\RecurringBill|null $currentRecurringBill * @property-read Customer $customer * @property-read \App\Models\Fulfilment\Fulfilment $fulfilment diff --git a/app/Models/Fulfilment/FulfilmentStats.php b/app/Models/Fulfilment/FulfilmentStats.php index 118d111c73..ae4d658312 100644 --- a/app/Models/Fulfilment/FulfilmentStats.php +++ b/app/Models/Fulfilment/FulfilmentStats.php @@ -52,7 +52,7 @@ * @property int $number_pallets_with_stored_items_state_not_received * @property int $number_pallets_state_storing * @property int $number_pallets_with_stored_items_state_storing - * @property int $number_pallets_state_request_return + * @property int $number_pallets_state_request_return_in_process * @property int $number_pallets_with_stored_items_state_request_return * @property int $number_pallets_state_picking * @property int $number_pallets_with_stored_items_state_picking @@ -114,6 +114,8 @@ * @property string $current_recurring_bills_amount * @property string $current_recurring_bills_amount_org_currency * @property string $current_recurring_bills_amount_grp_currency + * @property int $number_pallets_state_request_return_submitted + * @property int $number_pallets_state_request_return_confirmed * @property-read \App\Models\Fulfilment\Fulfilment $fulfilment * @method static \Illuminate\Database\Eloquent\Builder|FulfilmentStats newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|FulfilmentStats newQuery() diff --git a/app/Models/Helpers/Snapshot.php b/app/Models/Helpers/Snapshot.php index a76241e418..f469d59c3e 100644 --- a/app/Models/Helpers/Snapshot.php +++ b/app/Models/Helpers/Snapshot.php @@ -36,7 +36,7 @@ * @property string|null $published_at * @property string|null $published_until * @property string $checksum - * @property array $layout + * @property array $layout * @property string|null $compiled_layout e.g. html in case of email builders * @property string|null $comment * @property bool $first_commit diff --git a/app/Models/Inventory/WarehouseStats.php b/app/Models/Inventory/WarehouseStats.php index eefba189af..fa0d995929 100644 --- a/app/Models/Inventory/WarehouseStats.php +++ b/app/Models/Inventory/WarehouseStats.php @@ -89,7 +89,7 @@ * @property int $number_pallets_with_stored_items_state_not_received * @property int $number_pallets_state_storing * @property int $number_pallets_with_stored_items_state_storing - * @property int $number_pallets_state_request_return + * @property int $number_pallets_state_request_return_in_process * @property int $number_pallets_with_stored_items_state_request_return * @property int $number_pallets_state_picking * @property int $number_pallets_with_stored_items_state_picking @@ -150,6 +150,8 @@ * @property \Illuminate\Support\Carbon|null $updated_at * @property string $total_volume cbm * @property string $total_weight kg + * @property int $number_pallets_state_request_return_submitted + * @property int $number_pallets_state_request_return_confirmed * @property-read \App\Models\Inventory\Warehouse $warehouse * @method static Builder|WarehouseStats newModelQuery() * @method static Builder|WarehouseStats newQuery() diff --git a/app/Models/SysAdmin/GroupFulfilmentStats.php b/app/Models/SysAdmin/GroupFulfilmentStats.php index 5aede48597..c275d0d836 100644 --- a/app/Models/SysAdmin/GroupFulfilmentStats.php +++ b/app/Models/SysAdmin/GroupFulfilmentStats.php @@ -52,7 +52,7 @@ * @property int $number_pallets_with_stored_items_state_not_received * @property int $number_pallets_state_storing * @property int $number_pallets_with_stored_items_state_storing - * @property int $number_pallets_state_request_return + * @property int $number_pallets_state_request_return_in_process * @property int $number_pallets_with_stored_items_state_request_return * @property int $number_pallets_state_picking * @property int $number_pallets_with_stored_items_state_picking @@ -111,6 +111,8 @@ * @property int $number_recurring_bills_status_former * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at + * @property int $number_pallets_state_request_return_submitted + * @property int $number_pallets_state_request_return_confirmed * @property-read \App\Models\SysAdmin\Group $group * @method static \Illuminate\Database\Eloquent\Builder|GroupFulfilmentStats newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|GroupFulfilmentStats newQuery() diff --git a/app/Models/SysAdmin/OrganisationFulfilmentStats.php b/app/Models/SysAdmin/OrganisationFulfilmentStats.php index 23d37da84c..6938be0a83 100644 --- a/app/Models/SysAdmin/OrganisationFulfilmentStats.php +++ b/app/Models/SysAdmin/OrganisationFulfilmentStats.php @@ -54,7 +54,7 @@ * @property int $number_pallets_with_stored_items_state_not_received * @property int $number_pallets_state_storing * @property int $number_pallets_with_stored_items_state_storing - * @property int $number_pallets_state_request_return + * @property int $number_pallets_state_request_return_in_process * @property int $number_pallets_with_stored_items_state_request_return * @property int $number_pallets_state_picking * @property int $number_pallets_with_stored_items_state_picking @@ -113,6 +113,8 @@ * @property int $number_recurring_bills_status_former * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at + * @property int $number_pallets_state_request_return_submitted + * @property int $number_pallets_state_request_return_confirmed * @property-read \App\Models\SysAdmin\Organisation $organisation * @method static Builder|OrganisationFulfilmentStats newModelQuery() * @method static Builder|OrganisationFulfilmentStats newQuery() diff --git a/database/migrations/2025_01_21_102236_add_new_pallets_states_to_fulfilment_customers.php b/database/migrations/2025_01_21_102236_add_new_pallets_states_to_fulfilment_customers.php new file mode 100644 index 0000000000..94188d6cc6 --- /dev/null +++ b/database/migrations/2025_01_21_102236_add_new_pallets_states_to_fulfilment_customers.php @@ -0,0 +1,79 @@ + + * Created: Tue, 21 Jan 2025 18:22:45 Malaysia Time, Kuala Lumpur, Malaysia + * Copyright (c) 2025, Raul A Perusquia Flores + */ + +use Illuminate\Database\Migrations\Migration; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Support\Facades\Schema; + +return new class () extends Migration { + public function up(): void + { + Schema::table('fulfilment_customers', function (Blueprint $table) { + $table->renameColumn('number_pallets_state_request_return', 'number_pallets_state_request_return_in_process'); + $table->unsignedInteger('number_pallets_state_request_return_submitted')->default(0); + $table->unsignedInteger('number_pallets_state_request_return_confirmed')->default(0); + }); + + Schema::table('fulfilment_stats', function (Blueprint $table) { + $table->renameColumn('number_pallets_state_request_return', 'number_pallets_state_request_return_in_process'); + $table->unsignedInteger('number_pallets_state_request_return_submitted')->default(0); + $table->unsignedInteger('number_pallets_state_request_return_confirmed')->default(0); + }); + + Schema::table('organisation_fulfilment_stats', function (Blueprint $table) { + $table->renameColumn('number_pallets_state_request_return', 'number_pallets_state_request_return_in_process'); + $table->unsignedInteger('number_pallets_state_request_return_submitted')->default(0); + $table->unsignedInteger('number_pallets_state_request_return_confirmed')->default(0); + }); + + Schema::table('group_fulfilment_stats', function (Blueprint $table) { + $table->renameColumn('number_pallets_state_request_return', 'number_pallets_state_request_return_in_process'); + $table->unsignedInteger('number_pallets_state_request_return_submitted')->default(0); + $table->unsignedInteger('number_pallets_state_request_return_confirmed')->default(0); + }); + + Schema::table('warehouse_stats', function (Blueprint $table) { + $table->renameColumn('number_pallets_state_request_return', 'number_pallets_state_request_return_in_process'); + $table->unsignedInteger('number_pallets_state_request_return_submitted')->default(0); + $table->unsignedInteger('number_pallets_state_request_return_confirmed')->default(0); + }); + } + + public function down(): void + { + Schema::table('fulfilment_customers', function (Blueprint $table) { + $table->renameColumn('number_pallets_state_request_return_in_process', 'number_pallets_state_request_return'); + $table->dropColumn('number_pallets_state_request_return_submitted'); + $table->dropColumn('number_pallets_state_request_return_confirmed'); + }); + + Schema::table('fulfilment_stats', function (Blueprint $table) { + $table->renameColumn('number_pallets_state_request_return_in_process', 'number_pallets_state_request_return'); + $table->dropColumn('number_pallets_state_request_return_submitted'); + $table->dropColumn('number_pallets_state_request_return_confirmed'); + }); + + Schema::table('organisation_fulfilment_stats', function (Blueprint $table) { + $table->renameColumn('number_pallets_state_request_return_in_process', 'number_pallets_state_request_return'); + $table->dropColumn('number_pallets_state_request_return_submitted'); + $table->dropColumn('number_pallets_state_request_return_confirmed'); + }); + + Schema::table('group_fulfilment_stats', function (Blueprint $table) { + $table->renameColumn('number_pallets_state_request_return_in_process', 'number_pallets_state_request_return'); + $table->dropColumn('number_pallets_state_request_return_submitted'); + $table->dropColumn('number_pallets_state_request_return_confirmed'); + }); + + Schema::table('warehouse_stats', function (Blueprint $table) { + $table->renameColumn('number_pallets_state_request_return_in_process', 'number_pallets_state_request_return'); + $table->dropColumn('number_pallets_state_request_return_submitted'); + $table->dropColumn('number_pallets_state_request_return_confirmed'); + }); + } +};