diff --git a/src/components/dashboard/reimbursement/ReceiptForm.tsx b/src/components/dashboard/reimbursement/ReceiptForm.tsx
index bc26845..5770c81 100644
--- a/src/components/dashboard/reimbursement/ReceiptForm.tsx
+++ b/src/components/dashboard/reimbursement/ReceiptForm.tsx
@@ -6,7 +6,7 @@ import { motion, AnimatePresence } from 'framer-motion';
import type { ItemizedExpense } from '../../../schemas/pocketbase';
interface ReceiptFormData {
- field: File;
+ file: File;
itemized_expenses: ItemizedExpense[];
tax: number;
date: string;
@@ -134,7 +134,7 @@ export default function ReceiptForm({ onSubmit, onCancel }: ReceiptFormProps) {
}
onSubmit({
- field: file,
+ file: file,
itemized_expenses: itemizedExpenses,
tax,
date,
diff --git a/src/components/dashboard/reimbursement/ReimbursementForm.tsx b/src/components/dashboard/reimbursement/ReimbursementForm.tsx
index dbb9710..8f86f72 100644
--- a/src/components/dashboard/reimbursement/ReimbursementForm.tsx
+++ b/src/components/dashboard/reimbursement/ReimbursementForm.tsx
@@ -10,7 +10,7 @@ import FilePreview from '../universal/FilePreview';
import type { ItemizedExpense, Reimbursement, Receipt } from '../../../schemas/pocketbase';
interface ReceiptFormData {
- field: File;
+ file: File;
itemized_expenses: ItemizedExpense[];
tax: number;
date: string;
@@ -182,7 +182,7 @@ export default function ReimbursementForm() {
// Create receipt record
const formData = new FormData();
- formData.append('field', receiptData.field);
+ formData.append('file', receiptData.file);
formData.append('created_by', userId);
formData.append('itemized_expenses', JSON.stringify(receiptData.itemized_expenses));
formData.append('tax', receiptData.tax.toString());
@@ -636,8 +636,8 @@ export default function ReimbursementForm() {
diff --git a/src/components/dashboard/reimbursement/ReimbursementList.tsx b/src/components/dashboard/reimbursement/ReimbursementList.tsx
index a844122..baa9ce7 100644
--- a/src/components/dashboard/reimbursement/ReimbursementList.tsx
+++ b/src/components/dashboard/reimbursement/ReimbursementList.tsx
@@ -23,6 +23,7 @@ interface ReimbursementRequest extends Omit {
// Extended Receipt interface with component-specific properties
interface ReceiptDetails extends Omit {
+ file: string;
itemized_expenses: ItemizedExpense[];
audited_by: string[];
created: string;
@@ -210,7 +211,7 @@ export default function ReimbursementList() {
...prevMap,
[receiptId]: {
id: receiptRecord.id,
- field: receiptRecord.field,
+ file: receiptRecord.file,
created_by: receiptRecord.created_by,
date: receiptRecord.date,
location_name: receiptRecord.location_name,
@@ -248,9 +249,9 @@ export default function ReimbursementList() {
setSelectedReceipt(receiptDetailsMap[receiptId]);
// Get the file URL using the PocketBase URL and collection info
- const url = `${pb.baseUrl}/api/files/receipts/${receiptId}/${receiptDetailsMap[receiptId].field}`;
+ const url = `${pb.baseUrl}/api/files/receipts/${receiptId}/${receiptDetailsMap[receiptId].file}`;
setPreviewUrl(url);
- setPreviewFilename(receiptDetailsMap[receiptId].field);
+ setPreviewFilename(receiptDetailsMap[receiptId].file);
setShowPreview(true);
return;
}
@@ -268,7 +269,7 @@ export default function ReimbursementList() {
const receiptDetails: ReceiptDetails = {
id: receiptRecord.id,
- field: receiptRecord.field,
+ file: receiptRecord.file,
created_by: receiptRecord.created_by,
itemized_expenses: itemizedExpenses,
tax: receiptRecord.tax,
@@ -290,9 +291,9 @@ export default function ReimbursementList() {
setSelectedReceipt(receiptDetails);
// Get the file URL using the PocketBase URL and collection info
- const url = `${pb.baseUrl}/api/files/receipts/${receiptRecord.id}/${receiptRecord.field}`;
+ const url = `${pb.baseUrl}/api/files/receipts/${receiptRecord.id}/${receiptRecord.file}`;
setPreviewUrl(url);
- setPreviewFilename(receiptRecord.field);
+ setPreviewFilename(receiptRecord.file);
setShowPreview(true);
} else {
throw new Error('Receipt not found');
diff --git a/src/components/dashboard/reimbursement/ReimbursementManagementPortal.tsx b/src/components/dashboard/reimbursement/ReimbursementManagementPortal.tsx
index d91b468..04ea029 100644
--- a/src/components/dashboard/reimbursement/ReimbursementManagementPortal.tsx
+++ b/src/components/dashboard/reimbursement/ReimbursementManagementPortal.tsx
@@ -464,9 +464,13 @@ export default function ReimbursementManagementPortal() {
};
const getReceiptUrl = (receipt: ExtendedReceipt): string => {
- const auth = Authentication.getInstance();
- const pb = auth.getPocketBase();
- return pb.files.getURL(receipt, receipt.field);
+ try {
+ const pb = Authentication.getInstance().getPocketBase();
+ return pb.files.getURL(receipt, receipt.file);
+ } catch (error) {
+ console.error('Error getting receipt URL:', error);
+ return '';
+ }
};
// Add this function to get the user avatar URL
diff --git a/src/schemas/pocketbase/schema.ts b/src/schemas/pocketbase/schema.ts
index 51512d4..354916c 100644
--- a/src/schemas/pocketbase/schema.ts
+++ b/src/schemas/pocketbase/schema.ts
@@ -150,7 +150,7 @@ export interface Reimbursement extends BaseRecord {
* Collection ID: pbc_1571142587
*/
export interface Receipt extends BaseRecord {
- field: string;
+ file: string; // Single file
created_by: string; // Relation to User
itemized_expenses: string; // JSON string of ItemizedExpense[]
tax: number;