This commit is contained in:
seb
2026-10-01 22:17:19 +02:00
parent 397ae00735
commit 6520665dcf
2 changed files with 27 additions and 11 deletions

View File

@@ -1,5 +1,6 @@
import * as mssqlQueries from '../../providers/mssql/queries/delivery.js'; import * as mssqlQueries from '../../providers/mssql/queries/delivery.js';
import * as sqliteQueries from '../../providers/sqlite3/queries/delivery.js'; import * as sqliteQueries from '../../providers/sqlite3/queries/delivery.js';
import { isForeignKeyConstraintError } from '../../providers/provider.js';
import resolveSelectedCompanyAccess from '../companyuser/resolveSelectedCompanyAccess.js'; import resolveSelectedCompanyAccess from '../companyuser/resolveSelectedCompanyAccess.js';
import makeRunner from '../runner.js'; import makeRunner from '../runner.js';
@@ -16,15 +17,22 @@ export default function del(provider) {
const { companyId } = await access(googleAuthId); const { companyId } = await access(googleAuthId);
const runner = makeRunner(provider); const runner = makeRunner(provider);
const result = await runner(queries.DELETE_MANIFEST, { try {
id, const result = await runner(queries.DELETE_MANIFEST, {
companyId, id,
type: queries.DELIVERY_TYPE, companyId,
}); type: queries.DELIVERY_TYPE,
});
const rowsAffected = result.rowsAffected?.[0] ?? (typeof result.rowsAffected === 'number' ? result.rowsAffected : 0); const rowsAffected = result.rowsAffected?.[0] ?? (typeof result.rowsAffected === 'number' ? result.rowsAffected : 0);
if (!rowsAffected) { if (!rowsAffected) {
throw new Error('Delivery not found'); throw new Error('Delivery not found');
}
} catch (err) {
if (isForeignKeyConstraintError(err)) {
throw new Error('Delivery in use in ledger');
}
throw err;
} }
}; };
} }

View File

@@ -1,5 +1,6 @@
import * as mssqlQueries from '../../providers/mssql/queries/delivery.js'; import * as mssqlQueries from '../../providers/mssql/queries/delivery.js';
import * as sqliteQueries from '../../providers/sqlite3/queries/delivery.js'; import * as sqliteQueries from '../../providers/sqlite3/queries/delivery.js';
import { isForeignKeyConstraintError } from '../../providers/provider.js';
import resolveSelectedCompanyAccess from '../companyuser/resolveSelectedCompanyAccess.js'; import resolveSelectedCompanyAccess from '../companyuser/resolveSelectedCompanyAccess.js';
import taxEnsure from '../tax/ensure.js'; import taxEnsure from '../tax/ensure.js';
import { insertLines, normalizeLines, parseDate } from '../manifestLines.js'; import { insertLines, normalizeLines, parseDate } from '../manifestLines.js';
@@ -108,9 +109,16 @@ export default function update(provider) {
}); });
if (hasLines) { if (hasLines) {
await runner(queries.DELETE_LINES_BY_MANIFEST, { try {
manifestId: id, await runner(queries.DELETE_LINES_BY_MANIFEST, {
}); manifestId: id,
});
} catch (err) {
if (isForeignKeyConstraintError(err)) {
throw new Error('Delivery lines already booked on ledger');
}
throw err;
}
await insertLines(provider, tx, { await insertLines(provider, tx, {
manifestId: id, manifestId: id,