feat(nas): archive issued-order PDFs to NAS_ORDERS; split NAS_FINANCIALS_PATH into NAS_INVOICES + NAS_ORDERS

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
BOHA
2026-06-09 20:52:06 +02:00
parent 313d9218c1
commit 841ab676ec
11 changed files with 158 additions and 62 deletions

View File

@@ -1,9 +1,10 @@
import { FastifyInstance } from "fastify";
import prisma from "../../config/database";
import { requirePermission } from "../../middleware/auth";
import { parseId } from "../../utils/response";
import { parseId, success } from "../../utils/response";
import { localDateCzStr } from "../../utils/date";
import { htmlToPdf } from "../../utils/html-to-pdf";
import { nasOrdersManager } from "../../services/nas-financials-manager";
import createDOMPurify from "dompurify";
import { JSDOM } from "jsdom";
@@ -856,6 +857,25 @@ export default async function issuedOrdersPdfRoutes(fastify: FastifyInstance) {
settings,
lang,
);
// ?save=1 → archive the PDF to NAS instead of returning it (mirrors
// invoices-pdf). A draft has no po_number → the guard skips it.
const saveMode = query.save === "1";
if (saveMode && nasOrdersManager.isConfigured() && order.po_number) {
const baseDate = order.order_date
? new Date(order.order_date)
: new Date();
nasOrdersManager.cleanIssued(order.po_number);
const pdfBuffer = await htmlToPdf(html);
nasOrdersManager.saveIssuedPdf(
order.po_number,
baseDate.getFullYear(),
baseDate.getMonth() + 1,
pdfBuffer,
);
return success(reply, null, 200, "PDF uloženo");
}
const pdf = await htmlToPdf(html);
const filename = `Objednavka-${order.po_number || String(id)}.pdf`;
return reply