diff --git a/database/migrations/2026_06_10_110001_create_raw_materials_table.php b/database/migrations/2026_06_10_110001_create_raw_materials_table.php index 86dd2f3..2826459 100644 --- a/database/migrations/2026_06_10_110001_create_raw_materials_table.php +++ b/database/migrations/2026_06_10_110001_create_raw_materials_table.php @@ -1,5 +1,6 @@ id(); $table->string('name', 200); - $table->string('unit', 20); + $table->enum('unit', array_column(RawMaterialUnit::cases(), 'value')); $table->boolean('is_active')->default(true); $table->timestamp('created_at')->useCurrent(); diff --git a/resources/js/components/admin/master/raw-materials/RawMaterialForm.vue b/resources/js/components/admin/master/raw-materials/RawMaterialForm.vue index 6a973d2..7ceee12 100644 --- a/resources/js/components/admin/master/raw-materials/RawMaterialForm.vue +++ b/resources/js/components/admin/master/raw-materials/RawMaterialForm.vue @@ -29,6 +29,7 @@ import { appendMediaToFormData, createMediaUploadState } from '@/types/media'; import type { EnumOption, RawMaterialPriceFormItem, + RawMaterialUnit, } from '@/types/raw-material'; const props = withDefaults( @@ -36,7 +37,7 @@ const props = withDefaults( units: EnumOption[]; initialData?: { name?: string; - unit?: string; + unit?: RawMaterialUnit; prices?: Array<{ id?: number; variant?: string; diff --git a/resources/js/types/raw-material.ts b/resources/js/types/raw-material.ts index 75cd903..63c956a 100644 --- a/resources/js/types/raw-material.ts +++ b/resources/js/types/raw-material.ts @@ -1,7 +1,9 @@ import type { MediaItem, MediaUploadState } from '@/types/media'; +export type RawMaterialUnit = 'yard' | 'meter' | 'kilogram'; + export type EnumOption = { - value: string; + value: RawMaterialUnit; label: string; }; @@ -20,7 +22,7 @@ export type RawMaterialPrice = { export type RawMaterialListItem = { id: number; name: string; - unit: string; + unit: RawMaterialUnit; unit_label: string; unit_abbreviation: string; is_active: boolean; @@ -38,7 +40,7 @@ export type RawMaterialPriceFormItem = { export type RawMaterialFormData = { name: string; - unit: string; + unit: RawMaterialUnit; prices: Array<{ id?: number; variant: string;