fix: remove manual project creation, smart sequence release, received-invoices schema fix
- Remove ProjectCreate page, POST /projects endpoint, and next-number endpoint - Projects can only be created through orders (shared numbering sequence) - Remove dead CreateProjectSchema and createProject service function - Delete 'order' row from number_sequences (unused; code uses 'shared') - Smart sequence release: decrement last_number only when deleting the highest number - Fix received-invoices stats referencing non-existent is_deleted and amount_czk columns - Update deploy instructions in CLAUDE.md (npm install, prisma migrate deploy) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -5,19 +5,16 @@ import { success, error, parseId } from "../../utils/response";
|
||||
import { parsePagination, buildPaginationMeta } from "../../utils/pagination";
|
||||
import { parseBody } from "../../schemas/common";
|
||||
import {
|
||||
CreateProjectSchema,
|
||||
UpdateProjectSchema,
|
||||
CreateProjectNoteSchema,
|
||||
} from "../../schemas/projects.schema";
|
||||
import {
|
||||
listProjects,
|
||||
getProject,
|
||||
createProject,
|
||||
updateProject,
|
||||
deleteProject,
|
||||
createProjectNote,
|
||||
deleteProjectNote,
|
||||
getNextProjectNumber,
|
||||
} from "../../services/projects.service";
|
||||
|
||||
export default async function projectsRoutes(
|
||||
@@ -61,30 +58,6 @@ export default async function projectsRoutes(
|
||||
},
|
||||
);
|
||||
|
||||
fastify.post(
|
||||
"/",
|
||||
{ preHandler: requirePermission("projects.create") },
|
||||
async (request, reply) => {
|
||||
const parsed = parseBody(CreateProjectSchema, request.body);
|
||||
if ("error" in parsed) return error(reply, parsed.error, 400);
|
||||
|
||||
const project = await createProject(parsed.data);
|
||||
if ("error" in project) {
|
||||
return error(reply, project.error, (project as any).status ?? 400);
|
||||
}
|
||||
|
||||
await logAudit({
|
||||
request,
|
||||
authData: request.authData,
|
||||
action: "create",
|
||||
entityType: "project",
|
||||
entityId: project.id,
|
||||
description: `Vytvořen projekt ${project.name}`,
|
||||
});
|
||||
return success(reply, { id: project.id }, 201, "Projekt byl vytvořen");
|
||||
},
|
||||
);
|
||||
|
||||
fastify.put<{ Params: { id: string } }>(
|
||||
"/:id",
|
||||
{ preHandler: requirePermission("projects.edit") },
|
||||
@@ -137,16 +110,6 @@ export default async function projectsRoutes(
|
||||
},
|
||||
);
|
||||
|
||||
// GET /api/admin/projects/next-number — shared sequence with orders (matches PHP)
|
||||
fastify.get(
|
||||
"/next-number",
|
||||
{ preHandler: requirePermission("projects.create") },
|
||||
async (_request, reply) => {
|
||||
const nextNumber = await getNextProjectNumber();
|
||||
return success(reply, { next_number: nextNumber });
|
||||
},
|
||||
);
|
||||
|
||||
// DELETE /api/admin/projects/:id/notes/:noteId
|
||||
fastify.delete<{ Params: { id: string; noteId: string } }>(
|
||||
"/:id/notes/:noteId",
|
||||
|
||||
Reference in New Issue
Block a user