import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Textarea } from '@/components/ui/textarea'; import { useForm } from '@inertiajs/react'; import AppLayout from '@/layouts/app-layout'; import { Head } from '@inertiajs/react'; import { type BreadcrumbItem } from '@/types'; import InputError from '@/components/input-error'; interface ProcedureFormProps { mode: 'create' | 'edit'; procedure?: { id?: string; code: string; name: string; category: string; description: string; base_price: number; is_taxable: boolean; tax_percentage: number; is_discountable: boolean; requires_approval: boolean; is_active: boolean; }; categories: string[]; defaults?: { is_taxable: boolean; tax_percentage: number; is_discountable: boolean; requires_approval: boolean; is_active: boolean; }; } const breadcrumbs: BreadcrumbItem[] = [ { title: 'Dashboard', href: '/dashboard' }, { title: 'Manajemen Prosedur', href: '/procedures' }, { title: 'Form Prosedur', href: '#' }, ]; export default function ProcedureForm({ mode, procedure, categories = [], defaults }: ProcedureFormProps) { // First ensure categories is an array const availableCategories = Array.isArray(categories) ? categories : []; const { data, setData, post, put, processing, errors, reset } = useForm({ code: procedure?.code || '', name: procedure?.name || '', category: procedure?.category || 'Tindakan', description: procedure?.description || '', base_price: procedure?.base_price || 0, is_taxable: procedure?.is_taxable ?? defaults?.is_taxable ?? true, tax_percentage: procedure?.tax_percentage ?? defaults?.tax_percentage ?? 10.0, is_discountable: procedure?.is_discountable ?? defaults?.is_discountable ?? true, requires_approval: procedure?.requires_approval ?? defaults?.requires_approval ?? false, is_active: procedure?.is_active ?? defaults?.is_active ?? true, }); const onSubmit = (e: React.FormEvent) => { e.preventDefault(); if (mode === 'create') { post(route('procedures.store'), { onSuccess: () => reset(), }); } else { put(route('procedures.update', procedure?.id), { preserveScroll: true, }); } }; const formatCurrency = (value: number) => { return value.toLocaleString('id-ID'); }; const handlePriceChange = (e: React.ChangeEvent) => { const value = e.target.value; const num = parseFloat(value.replace(/\D/g, '')) || 0; setData('base_price', isNaN(num) ? 0 : num); }; return (

{mode === 'create' ? 'Tambah Prosedur Baru' : 'Edit Data Prosedur'}

{/* Basic Information */}
setData('code', e.target.value)} placeholder="PR-001, LAB-002" />
setData('name', e.target.value)} placeholder="Pemeriksaan Darah, Operasi Katarak" />
{/* Description */}