feat(admin): move allow_update_discount option to product level
All checks were successful
Staging Build / build (push) Successful in 2m50s

This commit is contained in:
DanielS
2026-07-10 09:15:34 +02:00
parent bc6487bba4
commit 27fe6c6eef
7 changed files with 39 additions and 31 deletions

View File

@@ -49,7 +49,6 @@ const categorySchema = z.object({
show_in_kauf: z.boolean().default(true),
show_in_abo: z.boolean().default(true),
resets_others: z.boolean().default(false),
allow_update_discount: z.boolean().default(true),
})
type CategoryFormValues = z.infer<typeof categorySchema>
@@ -78,7 +77,6 @@ export function CategoryDialog({
show_in_kauf: category?.show_in_kauf ?? true,
show_in_abo: category?.show_in_abo ?? true,
resets_others: category?.resets_others ?? false,
allow_update_discount: category?.allow_update_discount ?? true,
},
})
@@ -296,29 +294,6 @@ export function CategoryDialog({
)}
/>
<FormField
control={form.control}
name="allow_update_discount"
render={({ field }) => (
<FormItem className="flex flex-row items-start space-x-3 space-y-0 rounded-lg border border-slate-200 dark:border-white/10 bg-slate-50 dark:bg-white/5 p-4">
<FormControl>
<Checkbox
checked={field.value}
onCheckedChange={field.onChange}
/>
</FormControl>
<div className="space-y-1 leading-none">
<FormLabel className="text-slate-900 dark:text-white font-semibold cursor-pointer">
Update-Rabatt erlauben
</FormLabel>
<p className="text-xs text-slate-500 dark:text-slate-400">
Wenn aktiv, erhalten Kauf-Lizenzen dieser Kategorie den Update-Rabatt.
</p>
</div>
</FormItem>
)}
/>
<div className="grid grid-cols-2 gap-4">
<FormField
control={form.control}

View File

@@ -61,6 +61,7 @@ const productSchema = z.object({
requirements: z.array(z.string()).default([]),
exclusions: z.array(z.string()).default([]),
modules: z.array(moduleSchema).default([]),
allow_update_discount: z.boolean().default(true),
})
type ProductFormValues = z.infer<typeof productSchema>
@@ -93,6 +94,7 @@ export function CreateProductDialog({
show_in_abo: product ? (product.show_in_abo ?? true) : true,
requirements: product?.requirements || [],
exclusions: product?.exclusions || [],
allow_update_discount: product ? (product.allow_update_discount ?? true) : true,
modules: product?.modules?.map(m => ({
id: m.id,
name: m.name,
@@ -277,6 +279,30 @@ export function CreateProductDialog({
/>
</div>
{form.watch('billing_interval') === 'one_time' && (
<FormField
control={form.control}
name="allow_update_discount"
render={({ field }) => (
<FormItem className="flex flex-row items-start space-x-3 space-y-0 rounded-md border p-4 bg-slate-50 dark:bg-white/5 border-slate-200 dark:border-white/10">
<FormControl>
<Checkbox
checked={field.value}
onCheckedChange={field.onChange}
/>
</FormControl>
<div className="space-y-1 leading-none">
<FormLabel className="text-slate-900 dark:text-white font-medium cursor-pointer">Update-Rabatt erlauben</FormLabel>
<FormDescription className="text-xs text-slate-500">
Kunden erhalten für dieses Produkt den selektiven Update-Rabatt.
</FormDescription>
</div>
</FormItem>
)}
/>
)}
<FormField
control={form.control}
name="description"