Move item to another order

This commit is contained in:
2026-01-04 22:14:28 +03:00
parent 74e7dc8fd5
commit 91f18a6a9a

View File

@@ -594,7 +594,7 @@ export default class DBAdapter {
} }
const item = await connection.query( const item = await connection.query(
'SELECT id, order_id FROM order_items WHERE id = ? FOR UPDATE', 'SELECT id, order_id, product_id, quantity FROM order_items WHERE id = ? FOR UPDATE',
[itemId] [itemId]
); );
@@ -608,11 +608,35 @@ export default class DBAdapter {
}); });
} }
await connection.query( if (itemRow.order_id === targetOrderId) {
'UPDATE order_items SET order_id = ? WHERE id = ?', await connection.rollback();
[targetOrderId, itemId] connection.release();
return;
}
const targetItem = await connection.query(
'SELECT id, quantity FROM order_items WHERE order_id = ? AND product_id = ? FOR UPDATE',
[targetOrderId, itemRow.product_id]
); );
const targetItemRow = targetItem?.[0];
if (targetItemRow) {
await connection.query(
'UPDATE order_items SET quantity = ? WHERE id = ?',
[targetItemRow.quantity + itemRow.quantity, targetItemRow.id]
);
await connection.query(
'DELETE FROM order_items WHERE id = ?',
[itemId]
);
} else {
await connection.query(
'UPDATE order_items SET order_id = ? WHERE id = ?',
[targetOrderId, itemId]
);
}
await connection.commit(); await connection.commit();
connection.release(); connection.release();