3 Commits
1.5.0 ... 1.6.0

Author SHA1 Message Date
Deep Golani
2fd38aadd9 Add notes in expense (#126)
* Feature: Added notes in expense

* Add missing notes in form values

* Prettier

---------

Co-authored-by: deep.golani <deep.golani@bfhl.in>
Co-authored-by: Sebastien Castiel <sebastien@castiel.me>
2024-04-05 08:38:38 -04:00
magomzr
b61d1836ea Add titles for a better user experience (#137)
Co-authored-by: Mario Gómez <60667991+mgomezarr@users.noreply.github.com>
2024-04-05 08:29:08 -04:00
Sahil Mehra
c3903849ec Bug: Fixed wrong paid by Name in Reimbursement (#134) 2024-04-02 08:20:56 -04:00
7 changed files with 29 additions and 3 deletions

View File

@@ -0,0 +1,2 @@
-- AlterTable
ALTER TABLE "Expense" ADD COLUMN "notes" TEXT;

View File

@@ -52,6 +52,7 @@ model Expense {
splitMode SplitMode @default(EVENLY)
createdAt DateTime @default(now())
documents ExpenseDocument[]
notes String?
}
model ExpenseDocument {

View File

@@ -51,6 +51,7 @@ export default async function GroupExpensesPage({
prefetch={false}
href={`/groups/${groupId}/expenses/export/json`}
target="_blank"
title="Export to JSON"
>
<Download className="w-4 h-4" />
</Link>
@@ -63,7 +64,10 @@ export default async function GroupExpensesPage({
/>
)}
<Button asChild size="icon">
<Link href={`/groups/${groupId}/expenses/create`}>
<Link
href={`/groups/${groupId}/expenses/create`}
title="Create expense"
>
<Plus className="w-4 h-4" />
</Link>
</Button>

View File

@@ -23,7 +23,7 @@ export function ShareButton({ group }: Props) {
return (
<Popover>
<PopoverTrigger asChild>
<Button size="icon">
<Button title="Share" size="icon">
<Share className="w-4 h-4" />
</Button>
</PopoverTrigger>

View File

@@ -50,6 +50,7 @@ import { useForm } from 'react-hook-form'
import { match } from 'ts-pattern'
import { DeletePopup } from './delete-popup'
import { extractCategoryFromTitle } from './expense-form-actions'
import { Textarea } from './ui/textarea'
export type Props = {
group: NonNullable<Awaited<ReturnType<typeof getGroup>>>
@@ -156,7 +157,7 @@ export function ExpenseForm({
const getSelectedPayer = (field?: { value: string }) => {
if (isCreate && typeof window !== 'undefined') {
const activeUser = localStorage.getItem(`${group.id}-activeUser`)
if (activeUser && activeUser !== 'None') {
if (activeUser && activeUser !== 'None' && field?.value === undefined) {
return activeUser
}
}
@@ -180,6 +181,7 @@ export function ExpenseForm({
saveDefaultSplittingOptions: false,
isReimbursement: expense.isReimbursement,
documents: expense.documents,
notes: expense.notes ?? '',
}
: searchParams.get('reimbursement')
? {
@@ -202,6 +204,7 @@ export function ExpenseForm({
splitMode: defaultSplittingOptions.splitMode,
saveDefaultSplittingOptions: false,
documents: [],
notes: '',
}
: {
title: searchParams.get('title') ?? '',
@@ -228,6 +231,7 @@ export function ExpenseForm({
},
]
: [],
notes: '',
},
})
const [isCategoryLoading, setCategoryLoading] = useState(false)
@@ -400,6 +404,18 @@ export function ExpenseForm({
</FormItem>
)}
/>
<FormField
control={form.control}
name="notes"
render={({ field }) => (
<FormItem className="sm:order-6">
<FormLabel>Notes</FormLabel>
<FormControl>
<Textarea className="text-base" {...field} />
</FormControl>
</FormItem>
)}
/>
</CardContent>
</Card>

View File

@@ -72,6 +72,7 @@ export async function createExpense(
})),
},
},
notes: expenseFormValues.notes,
},
})
}
@@ -185,6 +186,7 @@ export async function updateExpense(
id: doc.id,
})),
},
notes: expenseFormValues.notes,
},
})
}

View File

@@ -117,6 +117,7 @@ export const expenseFormSchema = z
}),
)
.default([]),
notes: z.string().optional(),
})
.superRefine((expense, ctx) => {
let sum = 0