Files
CMT/frontend/components/suppliers/purchase-form.tsx
T
2025-08-16 14:41:12 +02:00

115 lines
3.4 KiB
TypeScript

"use client"
import type React from "react"
import { useState } from "react"
import { Button } from "@/components/ui/button"
import { Input } from "@/components/ui/input"
import { Label } from "@/components/ui/label"
import { Textarea } from "@/components/ui/textarea"
import {
Dialog,
DialogContent,
DialogDescription,
DialogFooter,
DialogHeader,
DialogTitle,
} from "@/components/ui/dialog"
interface PurchaseFormProps {
supplierName: string
open: boolean
onOpenChange: (open: boolean) => void
onSubmit: (purchase: { amount: number; description: string; date: string; invoiceNumber: string }) => void
}
export function PurchaseForm({ supplierName, open, onOpenChange, onSubmit }: PurchaseFormProps) {
const [formData, setFormData] = useState({
amount: 0,
description: "",
date: new Date().toISOString().split("T")[0],
invoiceNumber: "",
})
const handleSubmit = (e: React.FormEvent) => {
e.preventDefault()
onSubmit(formData)
onOpenChange(false)
setFormData({
amount: 0,
description: "",
date: new Date().toISOString().split("T")[0],
invoiceNumber: "",
})
}
return (
<Dialog open={open} onOpenChange={onOpenChange}>
<DialogContent className="sm:max-w-[500px]">
<DialogHeader>
<DialogTitle>Add Purchase</DialogTitle>
<DialogDescription>Record a new purchase from {supplierName}</DialogDescription>
</DialogHeader>
<form onSubmit={handleSubmit} className="space-y-4">
<div className="space-y-2">
<Label htmlFor="amount">Purchase Amount ($) *</Label>
<Input
id="amount"
type="number"
step="0.01"
min="0.01"
value={formData.amount}
onChange={(e) => setFormData({ ...formData, amount: Number.parseFloat(e.target.value) || 0 })}
placeholder="0.00"
required
/>
</div>
<div className="space-y-2">
<Label htmlFor="invoiceNumber">Invoice Number</Label>
<Input
id="invoiceNumber"
value={formData.invoiceNumber}
onChange={(e) => setFormData({ ...formData, invoiceNumber: e.target.value })}
placeholder="INV-001"
/>
</div>
<div className="space-y-2">
<Label htmlFor="date">Purchase Date *</Label>
<Input
id="date"
type="date"
value={formData.date}
onChange={(e) => setFormData({ ...formData, date: e.target.value })}
required
/>
</div>
<div className="space-y-2">
<Label htmlFor="description">Description *</Label>
<Textarea
id="description"
value={formData.description}
onChange={(e) => setFormData({ ...formData, description: e.target.value })}
placeholder="Describe what was purchased"
rows={3}
required
/>
</div>
<DialogFooter>
<Button type="button" variant="outline" onClick={() => onOpenChange(false)}>
Cancel
</Button>
<Button type="submit" disabled={formData.amount <= 0 || !formData.description.trim()}>
Add Purchase
</Button>
</DialogFooter>
</form>
</DialogContent>
</Dialog>
)
}