diff --git a/app/Services/Manage/CuttingService.php b/app/Services/Manage/CuttingService.php index 8783f4e..fb9f0c2 100644 --- a/app/Services/Manage/CuttingService.php +++ b/app/Services/Manage/CuttingService.php @@ -284,12 +284,12 @@ public function syncDraftMaterial(array $validated, User $user): array ->findOrFail($validated['raw_material_price_id']); $unit = $price->rawMaterial?->unit; - $usageInput = round((float) $validated['material_usage'], 4); - $remainingInput = round((float) $validated['remaining_material'], 4); + $usageInput = round((float) $validated['material_usage'], 2); + $remainingInput = round((float) $validated['remaining_material'], 2); if ($unit !== null && $unit->usesLengthUnit()) { - $materialUsage = round($unit->fromCm($usageInput), 4); - $remainingMaterial = round($unit->fromCm($remainingInput), 4); + $materialUsage = round($unit->fromCm($usageInput), 2); + $remainingMaterial = round($unit->fromCm($remainingInput), 2); } else { $materialUsage = $usageInput; $remainingMaterial = $remainingInput; @@ -655,12 +655,12 @@ private function buildMaterials(array $materials): array } $unit = $price->rawMaterial?->unit; - $usageInput = round((float) $itemData['material_usage'], 4); - $remainingInput = round((float) $itemData['remaining_material'], 4); + $usageInput = round((float) $itemData['material_usage'], 2); + $remainingInput = round((float) $itemData['remaining_material'], 2); if ($unit !== null && $unit->usesLengthUnit()) { - $materialUsage = round($unit->fromCm($usageInput), 4); - $remainingMaterial = round($unit->fromCm($remainingInput), 4); + $materialUsage = round($unit->fromCm($usageInput), 2); + $remainingMaterial = round($unit->fromCm($remainingInput), 2); } else { $materialUsage = $usageInput; $remainingMaterial = $remainingInput; @@ -898,10 +898,10 @@ private function presentDraftMaterial(CuttingMaterial $item): array // Convert stored native unit back to cm for display if ($usesLengthUnit && $unit !== null) { - $materialUsageCm = round($unit->toCm((float) $item->material_usage), 4); - $remainingMaterialCm = round($unit->toCm((float) $item->remaining_material), 4); - $materialUsageDisplay = rtrim(rtrim(number_format($materialUsageCm, 4, '.', ''), '0'), '.'); - $remainingMaterialDisplay = rtrim(rtrim(number_format($remainingMaterialCm, 4, '.', ''), '0'), '.'); + $materialUsageCm = round($unit->toCm((float) $item->material_usage), 2); + $remainingMaterialCm = round($unit->toCm((float) $item->remaining_material), 2); + $materialUsageDisplay = rtrim(rtrim(number_format($materialUsageCm, 2, '.', ''), '0'), '.'); + $remainingMaterialDisplay = rtrim(rtrim(number_format($remainingMaterialCm, 2, '.', ''), '0'), '.'); } else { $materialUsageDisplay = $this->formatQuantityInput((float) $item->material_usage); $remainingMaterialDisplay = $this->formatQuantityInput((float) $item->remaining_material); @@ -942,7 +942,7 @@ private function presentDraftResult(CuttingResult $item): array private function formatQuantityInput(float $value): string { - return rtrim(rtrim(number_format($value, 4, '.', ''), '0'), '.'); + return rtrim(rtrim(number_format($value, 2, '.', ''), '0'), '.'); } private function appendCostPreview(Cutting $cutting): void diff --git a/database/migrations/2026_06_21_040000_update_cutting_materials_decimal_precision.php b/database/migrations/2026_06_21_040000_update_cutting_materials_decimal_precision.php index 4ba2339..59caed8 100644 --- a/database/migrations/2026_06_21_040000_update_cutting_materials_decimal_precision.php +++ b/database/migrations/2026_06_21_040000_update_cutting_materials_decimal_precision.php @@ -9,8 +9,8 @@ public function up(): void { Schema::table('cutting_materials', function (Blueprint $table): void { - $table->decimal('material_usage', 18, 4)->change(); - $table->decimal('remaining_material', 18, 4)->change(); + $table->decimal('material_usage', 18, 2)->change(); + $table->decimal('remaining_material', 18, 2)->change(); }); } diff --git a/resources/js/pages/admin/manage/cuttings/form/CuttingPosForm.vue b/resources/js/pages/admin/manage/cuttings/form/CuttingPosForm.vue index 9226120..f3d91eb 100644 --- a/resources/js/pages/admin/manage/cuttings/form/CuttingPosForm.vue +++ b/resources/js/pages/admin/manage/cuttings/form/CuttingPosForm.vue @@ -313,7 +313,7 @@ async function decreaseMaterialQty(priceId: number) { return; } - const decrement = item.uses_length_unit ? 100 : 1; + const decrement = 1; const nextQty = (Number(item.material_usage) || 0) - decrement; if (nextQty <= 0) { @@ -354,8 +354,8 @@ async function addMaterial( (item) => item.raw_material_price_id === price.id, ); - const defaultUsage = usesLengthUnit(rawMaterial.unit) ? '100' : '1'; - const increment = usesLengthUnit(rawMaterial.unit) ? 100 : 1; + const defaultUsage = '100'; + const increment = 1; const nextUsage = existing ? String((Number(existing.material_usage) || 0) + increment) : defaultUsage;