From 73516f69a0ceb4dc0ad4a3dc81ac5acb925db9cf Mon Sep 17 00:00:00 2001 From: houseassassin Date: Sun, 10 May 2026 16:18:07 +0300 Subject: [PATCH] fix: convert empty numeric fields to null before insert/update orders Co-Authored-By: Claude Sonnet 4.6 --- src/admin/orders/OrderModal.jsx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/admin/orders/OrderModal.jsx b/src/admin/orders/OrderModal.jsx index a22cc69..b2b54d0 100644 --- a/src/admin/orders/OrderModal.jsx +++ b/src/admin/orders/OrderModal.jsx @@ -73,6 +73,13 @@ const OrderModal = ({ order, onClose, onSaved, mode = 'edit' }) => { const set = (e) => setForm((prev) => ({ ...prev, [e.target.name]: e.target.value })); + const toPayload = (f) => ({ + ...f, + area_sqm: f.area_sqm === '' ? null : Number(f.area_sqm), + estimated_cost: f.estimated_cost === '' ? null : Number(f.estimated_cost), + final_cost: f.final_cost === '' ? null : Number(f.final_cost), + }); + const handleSave = async () => { if (!form.name.trim() || !form.phone.trim()) { setError('Имя и телефон обязательны'); @@ -85,11 +92,11 @@ const OrderModal = ({ order, onClose, onSaved, mode = 'edit' }) => { if (mode === 'create') { const { error } = await supabase .from('orders') - .insert({ ...form, source: 'manual' }); + .insert({ ...toPayload(form), source: 'manual' }); if (error) { setError(error.message); setSaving(false); return; } } else { const statusChanged = form.status !== order.status; - const updates = { ...form }; + const updates = { ...toPayload(form) }; if (statusChanged) { if (form.status === 'закрыт') { updates.closed_at = new Date().toISOString();