DiakonischesWerkRegensburg/Export/EGeckoExporter.cs - Encoding und Minibugfix

SupportOID=167411
This commit is contained in:
2026-07-07 15:32:37 +02:00
parent 2b60eb62c3
commit 1232b709be

View File

@@ -37,10 +37,24 @@ namespace DiakonischesWerkRegensburg.Export
var dt = ExecuteQuery(GetMonatlicheRechnungenSql(date), date);
var doc = CreateXML(dt);
using (var sw = new StringWriter())
// Der Client schreibt QueryResult als Windows-1252 auf Platte (BeWoUtils.WriteFile).
// Damit die Datei trotzdem gültiges UTF-8 mit passender Deklaration ist, werden alle
// Nicht-ASCII-Zeichen (Umlaute etc.) als numerische Zeichenreferenzen kodiert.
var settings = new XmlWriterSettings
{
doc.Save(sw);
return sw.ToString();
Encoding = Encoding.ASCII,
Indent = true,
OmitXmlDeclaration = true
};
using (var ms = new MemoryStream())
{
using (var writer = XmlWriter.Create(ms, settings))
{
doc.Save(writer);
}
return "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + Environment.NewLine + Encoding.ASCII.GetString(ms.ToArray());
}
}
@@ -163,7 +177,7 @@ namespace DiakonischesWerkRegensburg.Export
INNER JOIN person p ON c.personoid = p.oid
WHERE ib.AccountingPeriodEnd >= ':Monat_Start' AND ib.AccountingPeriodEnd < ':Monat_End' AND ib.IsActive = 1 AND ib.InvoiceId = 'Sammelrechnung' AND ib.IsExported = 0
GROUP BY ib.Oid, ib.InvoiceNumber, ib.InvoiceDate, ib.AccountingPeriodEnd, c.Oid, c.DebitorNumber, p.LastName, p.FirstName
UNION SELECT DISTINCT
UNION SELECT
ib.InvoiceDate AS InvoiceDate,
c.DebitorNumber AS CustomerDebitor,
'1660' AS CustomerCostCenter,
@@ -171,7 +185,7 @@ namespace DiakonischesWerkRegensburg.Export
CONCAT(p.LastName, ', ', p.FirstName) AS Verwendungszweck,
ib.invoicenumber AS InvoiceNumber ,
(SELECT t.name FROM team t INNER JOIN team2customer t2c ON t2c.teamoid = t.oid WHERE t2c.customeroid = c.Oid limit 1) AS TeamName,
CASE WHEN ib.RecipientOrganisation LIKE '%Selbstzahler%' THEN 049030 ELSE 049020 END AS Erloeskonto,
CASE WHEN ib.RecipientOrganisation LIKE '%Selbstzahler%' THEN '049030' ELSE '049020' END AS Erloeskonto,
ib.AccountingPeriodEnd AS Periode,
ib.Oid AS InvoiceOid
FROM
@@ -182,7 +196,8 @@ namespace DiakonischesWerkRegensburg.Export
INNER JOIN invoicebase ib ON ib.costbearer2supportconceptoid = c2s.oid
INNER JOIN serviceinvoice si ON si.invoicebaseoid = ib.oid
INNER JOIN serviceinvoiceperiod sip ON sip.serviceinvoiceoid = si.oid
WHERE ib.`AccountingPeriodEnd` >= ':Monat_Start' AND ib.`AccountingPeriodEnd` < ':Monat_End' AND ib.IsActive = 1 AND ib.InvoiceId IS NULL AND ib.IsExported = 0
WHERE ib.`AccountingPeriodEnd` >= ':Monat_Start' AND ib.`AccountingPeriodEnd` < ':Monat_End' AND ib.IsActive = 1 AND ib.InvoiceId IS NULL AND ib.IsExported = 0
GROUP BY ib.Oid, ib.InvoiceNumber, ib.InvoiceDate, ib.AccountingPeriodEnd, ib.RecipientOrganisation, c.Oid, c.DebitorNumber, p.LastName, p.FirstName
) t
WHERE t.InvoiceOid IS NOT NULL
ORDER BY t.invoicenumber