Seit die PDFs der Fassung 6 im Repo liegen, stellt knUnterlagenFehlen den Fall "Fassung 6 ohne PDF" mit setAnhangPfadFuerTests nach (vertragsAnhang.js, nur für Tests, Vorgabe aus). Vier Nachweis-Tests erwarten jetzt wortlaut: 'freigegeben'. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
45 lines
2.3 KiB
JavaScript
45 lines
2.3 KiB
JavaScript
/**
|
|
* Vertragsunterlagen (PDF) als Mail-Anhang der Bestaetigungen K01 (Abo), K12 (Wechsel) und K13 (Zusatzspeicher-Plus), mit der Auskunft, ob sie fehlen.
|
|
*
|
|
* Fassung 6 (config.abo.termsVersionNeu) liefert die PDFs erst nach der Freigabe (build-legal-pdfs.sh abo6); bis dahin fehlt die Datei. Dann darf die
|
|
* Kundenmail nicht behaupten, die Unterlagen haengten an (Block ohne_anhang statt anhang), und das Team bekommt in T02, T12 bzw. T13 den Block
|
|
* anhang_fehlt und sendet sie von Hand nach (Muster K38/T24). Alle aelteren Fassungen bleiben, wie sie waren: ohne Datei geht die Mail ohne Anhang
|
|
* raus, Vorlage und Text unveraendert (fehlt bleibt false).
|
|
*/
|
|
|
|
import { access, readFile } from 'node:fs/promises'
|
|
import { contractAttachmentFor } from './products.js'
|
|
import { istNeueFassung } from './vertragsNachweis.js'
|
|
|
|
/** Nur für Tests: lenkt den Pfad des PDFs um (fn(pfad, termsVersion) -> pfad; null = normal), um „PDF fehlt“ nachzustellen. */
|
|
let pfadFuerTests = null
|
|
export function setAnhangPfadFuerTests(fn) {
|
|
pfadFuerTests = typeof fn === 'function' ? fn : null
|
|
}
|
|
function anhangVon(termsVersion) {
|
|
const a = contractAttachmentFor(termsVersion)
|
|
return pfadFuerTests ? { ...a, path: pfadFuerTests(a.path, termsVersion) } : a
|
|
}
|
|
|
|
/**
|
|
* @param {string} termsVersion zugestimmte Fassung (die Fassung der Zustimmung, nicht die des Abos)
|
|
* @param {string} tag Kennung fuer das Log, z. B. 'abo'
|
|
* @returns {Promise<{ attachments: Array<{ filename: string, content: Buffer, contentType: string }>, fehlt: boolean }>}
|
|
* fehlt: nur bei Fassung 6 und nicht lesbarer Datei
|
|
*/
|
|
export async function ladeVertragsAnhang(termsVersion, tag) {
|
|
const { filename, path } = anhangVon(termsVersion)
|
|
const content = await readFile(path).catch((err) => {
|
|
console.error(`[${tag}] Vertragsunterlagen ${filename} nicht lesbar:`, err.message)
|
|
return null
|
|
})
|
|
return { attachments: content ? [{ filename, content, contentType: 'application/pdf' }] : [], fehlt: !content && istNeueFassung(termsVersion) }
|
|
}
|
|
|
|
/** Fehlen die PDFs der Fassung 6 (ohne Log, ohne Lesen der Datei)? Für ein später gesendetes T12; ältere Fassungen: nie. */
|
|
export async function anhangFehlt(termsVersion) {
|
|
if (!istNeueFassung(termsVersion)) return false
|
|
const { path } = anhangVon(termsVersion)
|
|
return access(path).then(() => false, () => true)
|
|
}
|