import { ok, type ReadonlyDB } from "@tailor-platform/erp-kit/core"; import type { JournalEntrySourceDocumentType } from "../generated/enums"; import type { DB } from "../generated/kysely-tailordb"; export interface GetJournalEntryBySourceInput { sourceDocumentType: JournalEntrySourceDocumentType; sourceDocumentId: string; } /** Returns the original journal entry produced by a source document. */ export async function run(db: ReadonlyDB, input: GetJournalEntryBySourceInput) { const journalEntry = await db .selectFrom("JournalEntry") .selectAll() .where("sourceDocumentType", "=", input.sourceDocumentType) .where("sourceDocumentId", "=", input.sourceDocumentId) .where("reversalOfId", "is", null) .executeTakeFirst(); return ok({ journalEntry: journalEntry ?? null }); }