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:
@@ -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 } };
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user