feat(numbering): projects get their own dedicated number sequence (decoupled from orders)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -5,6 +5,7 @@ import {
|
||||
previewSharedNumber,
|
||||
releaseSharedNumber,
|
||||
isOrderNumberTaken,
|
||||
generateProjectNumber,
|
||||
} from "./numbering.service";
|
||||
import { NasFileManager } from "./nas-file-manager";
|
||||
|
||||
@@ -241,7 +242,10 @@ export async function createOrderFromQuotation(
|
||||
|
||||
const result = await prisma.$transaction(async (tx) => {
|
||||
const orderNumber = await generateSharedNumber(tx);
|
||||
const projectNumber = orderNumber;
|
||||
// The order keeps the shared (order) sequence; the auto-created project
|
||||
// gets its OWN number from the dedicated project sequence. Both are
|
||||
// assigned inside this transaction so they're allocated atomically.
|
||||
const projectNumber = await generateProjectNumber(tx);
|
||||
|
||||
const order = await tx.orders.create({
|
||||
data: {
|
||||
@@ -299,7 +303,7 @@ export async function createOrderFromQuotation(
|
||||
data: {
|
||||
project_number: projectNumber,
|
||||
name:
|
||||
quotation.project_code || quotation.quotation_number || orderNumber,
|
||||
quotation.project_code || quotation.quotation_number || projectNumber,
|
||||
customer_id: quotation.customer_id,
|
||||
quotation_id: quotationId,
|
||||
order_id: order.id,
|
||||
@@ -429,13 +433,16 @@ export async function createOrder(
|
||||
let projectId: number | undefined;
|
||||
let createdProject: { project_number: string; name: string } | null =
|
||||
null;
|
||||
// Only auto-create a project for genuine offer-less orders; share the
|
||||
// order's number (same shared pool) exactly like the from-quotation flow.
|
||||
// Only auto-create a project for genuine offer-less orders. The project
|
||||
// gets its OWN number from the dedicated project sequence (not the
|
||||
// order's shared number), exactly like the from-quotation flow.
|
||||
if (body.create_project !== false && body.quotation_id == null) {
|
||||
const projectNumber = await generateProjectNumber(tx);
|
||||
const project = await tx.projects.create({
|
||||
data: {
|
||||
project_number: orderNumber,
|
||||
name: body.scope_title || body.customer_order_number || orderNumber,
|
||||
project_number: projectNumber,
|
||||
name:
|
||||
body.scope_title || body.customer_order_number || projectNumber,
|
||||
customer_id: order.customer_id,
|
||||
order_id: order.id,
|
||||
status: "aktivni",
|
||||
|
||||
Reference in New Issue
Block a user