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 dt = ExecuteQuery(GetMonatlicheRechnungenSql(date), date);
var doc = CreateXML(dt); 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); Encoding = Encoding.ASCII,
return sw.ToString(); 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 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 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 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, ib.InvoiceDate AS InvoiceDate,
c.DebitorNumber AS CustomerDebitor, c.DebitorNumber AS CustomerDebitor,
'1660' AS CustomerCostCenter, '1660' AS CustomerCostCenter,
@@ -171,7 +185,7 @@ namespace DiakonischesWerkRegensburg.Export
CONCAT(p.LastName, ', ', p.FirstName) AS Verwendungszweck, CONCAT(p.LastName, ', ', p.FirstName) AS Verwendungszweck,
ib.invoicenumber AS InvoiceNumber , 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, (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.AccountingPeriodEnd AS Periode,
ib.Oid AS InvoiceOid ib.Oid AS InvoiceOid
FROM FROM
@@ -182,7 +196,8 @@ namespace DiakonischesWerkRegensburg.Export
INNER JOIN invoicebase ib ON ib.costbearer2supportconceptoid = c2s.oid INNER JOIN invoicebase ib ON ib.costbearer2supportconceptoid = c2s.oid
INNER JOIN serviceinvoice si ON si.invoicebaseoid = ib.oid INNER JOIN serviceinvoice si ON si.invoicebaseoid = ib.oid
INNER JOIN serviceinvoiceperiod sip ON sip.serviceinvoiceoid = si.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 ) t
WHERE t.InvoiceOid IS NOT NULL WHERE t.InvoiceOid IS NOT NULL
ORDER BY t.invoicenumber ORDER BY t.invoicenumber