Explorar o código

feat: added support for non-integer units in warehouse

unknown hai 4 horas
pai
achega
ba0658fffc

+ 5 - 0
backend/migrations/003_warehouse_units_float.sql

@@ -0,0 +1,5 @@
+-- Migration: 003_warehouse_units_float
+-- Created: 2026-04-20
+-- Description: Change units_count to decimal to support partial units
+
+ALTER TABLE warehouse_stock MODIFY COLUMN units_count decimal(10,2) DEFAULT 0.00;

+ 2 - 2
backend/schemas.py

@@ -264,7 +264,7 @@ class WarehouseItemBase(BaseModel):
     color_name: str
     quantity: float = 0.0 # Total weight
     unit_mass: float = 1.0 # Weight of one unit (e.g. 1kg spool)
-    units_count: int = 0   # Number of units (e.g. 10 spools)
+    units_count: float = 0.0 # Number of units (e.g. 1.5 spools)
     notes: Optional[str] = None
     is_active: bool = True
 
@@ -274,7 +274,7 @@ class WarehouseItemCreate(WarehouseItemBase):
 class WarehouseItemUpdate(BaseModel):
     quantity: Optional[float] = None
     unit_mass: Optional[float] = None
-    units_count: Optional[int] = None
+    units_count: Optional[float] = None
     notes: Optional[str] = None
     is_active: Optional[bool] = None
 

+ 1 - 1
src/components/admin/WarehouseSection.vue

@@ -126,7 +126,7 @@
             </div>
             <div class="space-y-1">
               <label class="text-[10px] font-black uppercase text-muted-foreground ml-1 tracking-widest">{{ t('admin.fields.unitsCount') }}</label>
-              <input v-model.number="form.units_count" type="number" required class="w-full bg-background border border-border/50 rounded-xl px-4 py-3 text-sm focus:ring-2 ring-primary/20 outline-none" />
+              <input v-model.number="form.units_count" type="number" step="0.1" required class="w-full bg-background border border-border/50 rounded-xl px-4 py-3 text-sm focus:ring-2 ring-primary/20 outline-none" />
             </div>
           </div>