|
|
|
|
@@ -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 });
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|