renamed field to file for consistency for receipts
This commit is contained in:
parent
5a453db3a4
commit
5fd2eb67a0
5 changed files with 21 additions and 16 deletions
|
@ -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,
|
||||
|
|
|
@ -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() {
|
|||
</div>
|
||||
<div className="bg-base-200/50 backdrop-blur-sm rounded-lg p-4 shadow-sm">
|
||||
<FilePreview
|
||||
url={URL.createObjectURL(selectedReceiptDetails.field)}
|
||||
filename={selectedReceiptDetails.field.name}
|
||||
url={URL.createObjectURL(selectedReceiptDetails.file)}
|
||||
filename={selectedReceiptDetails.file.name}
|
||||
isModal={false}
|
||||
/>
|
||||
</div>
|
||||
|
|
|
@ -23,6 +23,7 @@ interface ReimbursementRequest extends Omit<Reimbursement, 'audit_notes'> {
|
|||
|
||||
// Extended Receipt interface with component-specific properties
|
||||
interface ReceiptDetails extends Omit<Receipt, 'itemized_expenses' | 'audited_by'> {
|
||||
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');
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue