u
This commit is contained in:
@@ -20,8 +20,12 @@ function captureResponseBody(res) {
|
||||
const originalSend = res.send.bind(res);
|
||||
|
||||
res.json = (payload) => {
|
||||
body = payload;
|
||||
return originalJson(payload);
|
||||
let out = payload;
|
||||
if (res.statusCode >= 500 && payload && typeof payload === 'object' && 'error' in payload) {
|
||||
out = { ...payload, error: 'Internal server error' };
|
||||
}
|
||||
body = out;
|
||||
return originalJson(out);
|
||||
};
|
||||
|
||||
res.send = (payload) => {
|
||||
|
||||
@@ -172,6 +172,15 @@ function deliveryErrorStatus(error) {
|
||||
if (error.message === 'Invalid JSON in "data" field') return 400;
|
||||
if (error.message === 'Only PDF or text files are accepted as attachments') return 400;
|
||||
if (error.message?.includes('father article') || error.message?.includes('A father article')) return 400;
|
||||
if (
|
||||
error.message === 'Delivery in use in ledger' ||
|
||||
error.message === 'Delivery lines already booked on ledger' ||
|
||||
error.message?.includes('FOREIGN KEY constraint failed') ||
|
||||
error.message?.includes('foreign key constraint') ||
|
||||
error.message?.includes('REFERENCE constraint') ||
|
||||
error.code === 'SQLITE_CONSTRAINT_FOREIGNKEY' ||
|
||||
error.number === 547
|
||||
) return 409;
|
||||
return 500;
|
||||
}
|
||||
|
||||
@@ -348,7 +357,7 @@ export function register(app, basePath = '') {
|
||||
res.locals.error = error;
|
||||
const status = deliveryErrorStatus(error);
|
||||
if (status === 500) console.error('List deliveries failed:', error);
|
||||
res.status(status).json({ error: error.message });
|
||||
res.status(status).json({ error: status === 500 ? 'Internal server error' : error.message });
|
||||
}
|
||||
});
|
||||
|
||||
@@ -399,7 +408,7 @@ export function register(app, basePath = '') {
|
||||
console.error('[delivery diag] Failed to dump payload:', logErr.message);
|
||||
}
|
||||
}
|
||||
res.status(status).json({ error: error.message });
|
||||
res.status(status).json({ error: status === 500 ? 'Internal server error' : error.message });
|
||||
}
|
||||
});
|
||||
|
||||
@@ -550,6 +559,12 @@ export function register(app, basePath = '') {
|
||||
* application/json:
|
||||
* schema:
|
||||
* $ref: '#/components/schemas/Error'
|
||||
* 409:
|
||||
* description: Delivery lines already booked on ledger
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* $ref: '#/components/schemas/Error'
|
||||
* delete:
|
||||
* tags: [Delivery]
|
||||
* summary: Delete delivery
|
||||
@@ -591,6 +606,12 @@ export function register(app, basePath = '') {
|
||||
* application/json:
|
||||
* schema:
|
||||
* $ref: '#/components/schemas/Error'
|
||||
* 409:
|
||||
* description: Delivery in use in ledger
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* $ref: '#/components/schemas/Error'
|
||||
*/
|
||||
app.get(`${basePath}/delivery/:id`, async (req, res) => {
|
||||
const selected = requireSelectedCompany(req);
|
||||
@@ -610,7 +631,7 @@ export function register(app, basePath = '') {
|
||||
res.locals.error = error;
|
||||
const status = deliveryErrorStatus(error);
|
||||
if (status === 500) console.error('Get delivery failed:', error);
|
||||
res.status(status).json({ error: error.message });
|
||||
res.status(status).json({ error: status === 500 ? 'Internal server error' : error.message });
|
||||
}
|
||||
});
|
||||
|
||||
@@ -656,7 +677,21 @@ export function register(app, basePath = '') {
|
||||
if (status === 500) {
|
||||
logStoreError('Update delivery failed', error);
|
||||
}
|
||||
res.status(status).json({ error: error.message });
|
||||
let errorMessage = error.message;
|
||||
if (status === 500) {
|
||||
errorMessage = 'Internal server error';
|
||||
} else if (
|
||||
status === 409 ||
|
||||
error.message === 'Delivery lines already booked on ledger' ||
|
||||
error.message?.includes('FOREIGN KEY constraint failed') ||
|
||||
error.message?.includes('foreign key constraint') ||
|
||||
error.message?.includes('REFERENCE constraint') ||
|
||||
error.code === 'SQLITE_CONSTRAINT_FOREIGNKEY' ||
|
||||
error.number === 547
|
||||
) {
|
||||
errorMessage = 'Delivery lines are already booked on the ledger and cannot be modified';
|
||||
}
|
||||
res.status(status).json({ error: errorMessage });
|
||||
}
|
||||
});
|
||||
|
||||
@@ -678,7 +713,13 @@ export function register(app, basePath = '') {
|
||||
res.locals.error = error;
|
||||
const status = deliveryErrorStatus(error);
|
||||
if (status === 500) console.error('Delete delivery failed:', error);
|
||||
res.status(status).json({ error: error.message });
|
||||
let errorMessage = error.message;
|
||||
if (status === 500) {
|
||||
errorMessage = 'Internal server error';
|
||||
} else if (status === 409) {
|
||||
errorMessage = 'Delivery in use in ledger';
|
||||
}
|
||||
res.status(status).json({ error: errorMessage });
|
||||
}
|
||||
});
|
||||
|
||||
@@ -822,7 +863,7 @@ export function register(app, basePath = '') {
|
||||
res.locals.error = error;
|
||||
const status = deliveryErrorStatus(error);
|
||||
if (status === 500) console.error('Get delivery file failed:', error);
|
||||
res.status(status).json({ error: error.message });
|
||||
res.status(status).json({ error: status === 500 ? 'Internal server error' : error.message });
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user