u
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user