fix(numbering): release project number on order delete + harden split tests + accurate settings preview

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
BOHA
2026-06-09 19:44:54 +02:00
parent 753c16423c
commit 113edd9a0d
4 changed files with 193 additions and 2 deletions

View File

@@ -6,6 +6,7 @@ import {
releaseSharedNumber,
isOrderNumberTaken,
generateProjectNumber,
releaseProjectNumber,
} from "./numbering.service";
import { NasFileManager } from "./nas-file-manager";
@@ -731,6 +732,21 @@ export async function deleteOrder(id: number, deleteFiles = false) {
: new Date().getFullYear();
await releaseSharedNumber(year, existing.order_number ?? undefined);
// Release each deleted project's OWN number from the dedicated `project`
// sequence. Auto-created projects now draw a distinct number from the
// `project` pool (not the order's `shared` number), so deleting the order
// must release the project number too — otherwise the highest project number
// leaves a permanent gap. Use each project's OWN created_at year: project
// numbers embed {YY} and the sequence is (type, year)-keyed, so the order's
// year could decrement the wrong row. Best-effort, post-commit, mirroring the
// shared release above — releaseSequence row-locks and only decrements when
// the deleted number is the current highest, so this is safe/idempotent.
for (const p of linkedProjects) {
if (!p.project_number) continue;
const projYear = p.created_at ? new Date(p.created_at).getFullYear() : year;
await releaseProjectNumber(projYear, p.project_number);
}
return { data: { id, order_number: existing.order_number } };
}