Enhance transaction retrieval in data.js by adding additional fields from the UmsatzBeleg table and implementing a separate query for links data. Update transaction mapping to include new document data and filter links based on transaction IDs.

This commit is contained in:
sebseb7
2025-08-01 15:15:01 +02:00
parent 3f2cad2426
commit 3886e64ef6

View File

@@ -126,12 +126,16 @@ router.get('/transactions/:timeRange', authenticateToken, async (req, res) => {
bat.assigned_kreditor_id,
ak.name as assigned_kreditor_name,
0 as isJTLOnly,
1 as isFromCSV
1 as isFromCSV,
ub.textContent as jtl_document_data,
ub.kUmsatzBeleg,
ub.datevlink
FROM fibdash.CSVTransactions csv
LEFT JOIN eazybusiness.dbo.tZahlungsabgleichUmsatz jtl ON (
ABS(csv.numeric_amount - jtl.fBetrag) < 0.01 AND
ABS(DATEDIFF(day, csv.parsed_date, jtl.dBuchungsdatum)) <= 1
)
LEFT JOIN eazybusiness.dbo.tUmsatzBeleg ub ON ub.kZahlungsabgleichUmsatz = jtl.kZahlungsabgleichUmsatz
LEFT JOIN fibdash.Kreditor k ON csv.kontonummer_iban = k.iban
LEFT JOIN fibdash.BankingAccountTransactions bat ON csv.id = bat.csv_transaction_id
LEFT JOIN fibdash.Kreditor ak ON bat.assigned_kreditor_id = ak.id
@@ -159,8 +163,12 @@ router.get('/transactions/:timeRange', authenticateToken, async (req, res) => {
NULL as assigned_kreditor_id,
NULL as assigned_kreditor_name,
1 as isJTLOnly,
0 as isFromCSV
0 as isFromCSV,
ub.textContent as jtl_document_data,
ub.kUmsatzBeleg,
ub.datevlink
FROM eazybusiness.dbo.tZahlungsabgleichUmsatz jtl
LEFT JOIN eazybusiness.dbo.tUmsatzBeleg ub ON ub.kZahlungsabgleichUmsatz = jtl.kZahlungsabgleichUmsatz
WHERE NOT EXISTS (
SELECT 1 FROM fibdash.CSVTransactions csv
WHERE ABS(csv.numeric_amount - jtl.fBetrag) < 0.01
@@ -171,6 +179,25 @@ router.get('/transactions/:timeRange', authenticateToken, async (req, res) => {
`;
const result = await executeQuery(query);
// Get links data separately to avoid duplicate rows
const linksQuery = `
SELECT
zul.kZahlungsabgleichUmsatz,
zul.linktarget,
zul.linktype,
zul.note,
po.kPdfObjekt,
po.textContent,
po.markDown,
po.extraction
FROM eazybusiness.dbo.tZahlungsabgleichUmsatzLink zul
LEFT JOIN eazybusiness.dbo.tPdfObjekt po ON zul.linktarget = po.kLieferantenbestellung
WHERE zul.linktype = 'kLieferantenBestellung'
`;
const linksResult = await executeQuery(linksQuery);
const linksData = linksResult.recordset || [];
const transactions = result.recordset.map(transaction => ({
...transaction,
parsedDate: new Date(transaction.parsed_date),
@@ -187,8 +214,14 @@ router.get('/transactions/:timeRange', authenticateToken, async (req, res) => {
name: transaction.assigned_kreditor_name,
id: transaction.assigned_kreditor_id
} : null,
pdfs: [],
links: []
pdfs: transaction.jtl_document_data ? [{
content: transaction.jtl_document_data,
kUmsatzBeleg: transaction.kUmsatzBeleg,
datevlink: transaction.datevlink
}] : [],
links: transaction.jtlId ? linksData.filter(link =>
link.kZahlungsabgleichUmsatz === transaction.jtlId
) : []
}));
let filteredTransactions = [];