Implement transaction service

This commit is contained in:
2025-07-04 16:10:39 +02:00
parent a7db2bc89a
commit a2b0c7c15e

View File

@@ -0,0 +1,44 @@
import { IndJob } from '@/lib/types';
import type { IndTransactionRecord, IndTransactionRecordNoId } from '../lib/pbtypes';
import pb from '../lib/pocketbase';
import { getJob, updateJob } from './jobService';
export async function createTransaction(
job: IndJob,
transaction: IndTransactionRecordNoId,
type: 'expenditure' | 'income'
): Promise<void> {
console.log('Adding transaction:', transaction);
// Create the transaction
transaction.job = job.id;
const createdTransaction = await pb.collection<IndTransactionRecord>('ind_transaction').create(transaction);
// Update the job to include the new transaction
const field = type === 'expenditure' ? 'expenditures' : 'income';
const currentIds = job[field] || [];
await updateJob(job.id, {
[field]: [...currentIds, createdTransaction.id]
});
}
export async function updateTransaction(
transactionId: string,
updates: Partial<IndTransactionRecord>
): Promise<void> {
await pb.collection<IndTransactionRecord>('ind_transaction').update(transactionId, updates);
}
export async function deleteTransaction(job: IndJob, transactionId: string): Promise<void> {
// Delete the transaction
await pb.collection<IndTransactionRecord>('ind_transaction').delete(transactionId);
// Remove from both expenditures and income arrays
const expenditures = job.expenditures.filter(ex => ex.id !== transactionId);
const income = job.income.filter(pero => pero.id !== transactionId);
await updateJob(job.id, {
expenditures: expenditures.map(ex => ex.id),
income: income.map(pero => pero.id)
});
}