Changes
Co-authored-by: renee-png <262607627+renee-png@users.noreply.github.com>
This commit is contained in:
co-authored by
renee-png
parent
bad5139cd3
commit
8b4318f9c3
@@ -235,8 +235,27 @@ export function GenerateInvoiceDialog({ open, onOpenChange, clientId, clientName
|
||||
) : (
|
||||
<>
|
||||
<div>
|
||||
<Label className="text-xs uppercase tracking-wider text-muted-foreground">Cases to bill</Label>
|
||||
<div className="mt-2 border rounded-md divide-y max-h-[260px] overflow-auto">
|
||||
<div className="flex items-center justify-between mb-2">
|
||||
<Label className="text-xs uppercase tracking-wider text-muted-foreground">Cases to bill</Label>
|
||||
<div className="flex items-center gap-2 text-xs">
|
||||
<button
|
||||
type="button"
|
||||
className="text-primary hover:underline"
|
||||
onClick={() => setSelected(Object.fromEntries(cases.map((c) => [c.id, true])))}
|
||||
>
|
||||
Select all
|
||||
</button>
|
||||
<span className="text-muted-foreground">·</span>
|
||||
<button
|
||||
type="button"
|
||||
className="text-primary hover:underline"
|
||||
onClick={() => setSelected({})}
|
||||
>
|
||||
Clear
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div className="border rounded-md divide-y max-h-[260px] overflow-auto">
|
||||
{cases.map((c) => (
|
||||
<label key={c.id} className="flex items-start gap-3 p-3 cursor-pointer hover:bg-muted/40">
|
||||
<Checkbox
|
||||
@@ -258,6 +277,22 @@ export function GenerateInvoiceDialog({ open, onOpenChange, clientId, clientName
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{selectedIds.length > 1 && (
|
||||
<label className="flex items-start gap-3 p-3 rounded-md border cursor-pointer hover:bg-muted/40">
|
||||
<Checkbox
|
||||
checked={splitPerCase}
|
||||
onCheckedChange={(v) => setSplitPerCase(!!v)}
|
||||
className="mt-0.5"
|
||||
/>
|
||||
<div className="flex-1">
|
||||
<div className="text-sm font-medium">Generate one invoice per selected case</div>
|
||||
<div className="text-xs text-muted-foreground">
|
||||
Creates {selectedIds.length} separate draft invoices instead of one combined invoice.
|
||||
</div>
|
||||
</div>
|
||||
</label>
|
||||
)}
|
||||
|
||||
<div className="grid grid-cols-3 gap-3">
|
||||
<div>
|
||||
<Label>Tax rate (%)</Label>
|
||||
@@ -269,7 +304,9 @@ export function GenerateInvoiceDialog({ open, onOpenChange, clientId, clientName
|
||||
</div>
|
||||
<div className="col-span-1 flex items-end justify-end">
|
||||
<div className="text-right">
|
||||
<div className="text-[10px] uppercase tracking-wider text-muted-foreground">Estimated total</div>
|
||||
<div className="text-[10px] uppercase tracking-wider text-muted-foreground">
|
||||
{splitPerCase && selectedIds.length > 1 ? "Combined total" : "Estimated total"}
|
||||
</div>
|
||||
<div className="font-serif text-xl">{formatCurrency(total)}</div>
|
||||
{tax > 0 && <div className="text-[11px] text-muted-foreground">{formatCurrency(subtotal)} + {formatCurrency(tax)} tax</div>}
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user