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:
@@ -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 = [];
|
||||
|
||||
Reference in New Issue
Block a user