import xmlbuilder from "xmlbuilder"; import {randomUUID} from "node:crypto"; import dayjs from "dayjs"; export const createSEPAExport = async (server,idsToExport, tenant_id) => { const {data,error} = await server.supabase.from("createddocuments").select().eq("tenant", tenant_id).in("id", idsToExport) const {data:tenantData,error:tenantError} = await server.supabase.from("tenants").select().eq("id", tenant_id).single() console.log(tenantData) console.log(tenantError) console.log(data) let transactions = [] let obj = { Document: { '@xmlns':"urn:iso:std:iso:20022:tech:xsd:pain.008.001.02", 'CstmrDrctDbtInitn': { 'GrpHdr': { 'MsgId': randomUUID(), 'CredDtTm': dayjs().format("YYYY-MM-DDTHH:mm:ss"), 'NbOfTxs': transactions.length, 'CtrlSum': 0, // TODO: Total Sum 'InitgPty': { 'Nm': tenantData.name } }, 'PmtInf': { 'PmtInfId': "", // TODO: Mandatsreferenz, 'PmtMtd': "DD", 'BtchBookg': "true", // TODO: BatchBooking, 'NbOfTxs': transactions.length, 'CtrlSum': 0, //TODO: Total Sum 'PmtTpInf': { 'SvcLvl': { 'Cd': "SEPA" }, 'LclInstrm': { 'Cd': "CORE" // Core für BASIS / B2B für Firmen }, 'SeqTp': "RCUR" // TODO: Unterscheidung Einmalig / Wiederkehrend }, 'ReqdColltnDt': dayjs().add(3, "days").format("YYYY-MM-DDTHH:mm:ss"), 'Cdtr': { 'Nm': tenantData.name }, 'CdtrAcct': { 'Id': { 'IBAN': "DE" // TODO: IBAN Gläubiger EINSETZEN } }, 'CdtrAgt': { 'FinInstnId': { 'BIC': "BIC" // TODO: BIC des Gläubigers einsetzen } }, 'ChrgBr': "SLEV", 'CdtrSchmeId': { 'Id': { 'PrvtId': { 'Othr': { 'Id': tenantData.creditorId, 'SchmeNm': { 'Prty': "SEPA" } } } } }, //TODO ITERATE ALL INVOICES HERE 'DrctDbtTxInf': { 'PmtId': { 'EndToEndId': "" // TODO: EINDEUTIGE ReFERENZ wahrscheinlich RE Nummer }, 'InstdAmt': { '@Ccy':"EUR", '#text':100 //TODO: Rechnungssumme zwei NK mit Punkt }, 'DrctDbtTx': { 'MndtRltdInf': { 'MndtId': "", // TODO: Mandatsref, 'DtOfSgntr': "", //TODO: Unterschrieben am, 'AmdmntInd': "" //TODO: Mandat geändert } }, 'DbtrAgt': { 'FinInstnId': { 'BIC': "", //TODO: BIC Debtor } }, 'Dbtr': { 'Nm': "" // TODO NAME Debtor }, 'DbtrAcct': { 'Id': { 'IBAN': "DE" // TODO IBAN Debtor } }, 'RmtInf': { 'Ustrd': "" //TODO Verwendungszweck Rechnungsnummer } } } } } } let doc = xmlbuilder.create(obj, {encoding: 'UTF-8', standalone: true}) console.log(doc.end({pretty:true})) }