From 2e082d4aad6f9c99f2ff4e20b1b47aafdae6fba6 Mon Sep 17 00:00:00 2001 From: Vasyka Date: Tue, 8 Sep 2026 06:53:10 +0000 Subject: [PATCH] Normalize labor category sort_order + fix increment step to 10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Migration renumbers all categories per company as 10, 20, 30… to eliminate existing duplicates. Observer now increments by 10 instead of 1 to leave headroom between positions. Co-Authored-By: Claude Sonnet 4.6 --- app/Models/Tenant/LaborCategory.php | 2 +- ...00_normalize_labor_category_sort_order.php | 28 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 database/migrations/2026_09_08_110000_normalize_labor_category_sort_order.php diff --git a/app/Models/Tenant/LaborCategory.php b/app/Models/Tenant/LaborCategory.php index e9d9324..ddc9b6b 100644 --- a/app/Models/Tenant/LaborCategory.php +++ b/app/Models/Tenant/LaborCategory.php @@ -35,7 +35,7 @@ class LaborCategory extends Model ->where('company_id', $cat->company_id) ->where('sort_order', '>=', $new) ->where('id', '!=', $cat->id ?? 0) - ->increment('sort_order'); + ->increment('sort_order', 10); } }); } diff --git a/database/migrations/2026_09_08_110000_normalize_labor_category_sort_order.php b/database/migrations/2026_09_08_110000_normalize_labor_category_sort_order.php new file mode 100644 index 0000000..03b4b23 --- /dev/null +++ b/database/migrations/2026_09_08_110000_normalize_labor_category_sort_order.php @@ -0,0 +1,28 @@ +pluck('id'); + + foreach ($companies as $companyId) { + $rows = DB::table('labor_categories') + ->where('company_id', $companyId) + ->orderBy('sort_order') + ->orderBy('id') + ->pluck('id'); + + foreach ($rows as $i => $id) { + DB::table('labor_categories') + ->where('id', $id) + ->update(['sort_order' => ($i + 1) * 10]); + } + } + } + + public function down(): void {} +};