AkkuratDienstleistungsgesellschaft/Export u Translation - Finetuninig Erlöskonto und Kostenstelle

This commit is contained in:
2025-07-28 11:46:38 +02:00
parent 67a3d39363
commit c607df39ef
2 changed files with 58 additions and 16 deletions

View File

@@ -68,7 +68,7 @@ namespace Akkurat.Export
public static String GetAbrechnungenString(DateTime date)
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("B;Mandant;Monat;Buchungsdatum;Rechnungsnummer;Buchungstext;Betrag;Konto;Gegenkonto;Debitor;Beleg1");
sb.AppendLine("B;Mandant;Monat;Buchungsdatum;Rechnungsnummer;Buchungstext;Betrag;Konto;Gegenkonto;Debitor;Beleg1;Kostenstelle");
var s = GetMonatlicheBetraegeString(date, true);
if (!String.IsNullOrWhiteSpace(s))
@@ -102,7 +102,7 @@ namespace Akkurat.Export
string sql = "";
if (umsaetze)
{
sql = GetMonatlicheBetraegeLvrSql(date);
sql = GetMonatlicheBetraegeSql(date);
return BuildExportString(date, umsaetze, sql);
}
else
@@ -177,7 +177,16 @@ namespace Akkurat.Export
sb.Append(";");
sb.Append(String.Format("{0}", row[1])); //Debitor als Konto
sb.Append(";");
sb.Append("8273"); // String.Format("{0}", row[2])); // Erlöskonto
bool kostenstelle = false;
if (GetKontoUndKostenstelle(row[2].ToString(), out var konto, out var kStelle))
{
sb.Append(konto); // Erlöskonto
kostenstelle = true;
}
else
{
sb.Append("8273"); // Erlöskonto
}
sb.Append(";");
sb.Append(String.Format("{0}", row[1])); //Debitor
sb.Append(";");
@@ -190,10 +199,35 @@ namespace Akkurat.Export
sb.Append(String.Format("{0}", row[4])); //Hilfeplanbez - Vertragsnr.
}
sb.Append(";");
if (kostenstelle)
{
sb.Append(kStelle); // Kostenstelle
}
else
{
sb.Append(""); // Kostenstelle
}
sb.Append(";");
}
return sb.ToString();
}
public static bool GetKontoUndKostenstelle(string notice, out string konto, out string kStelle)
{
var teile = notice.Split(',');
if (teile.Length == 2)
{
konto = teile[0].Trim();
kStelle = teile[1].Trim();
return true;
}
else
{
konto = kStelle = string.Empty;
return false;
}
}
private static String GetDebitorenSql(DateTime date)
{
String sql = @"
@@ -218,7 +252,7 @@ namespace Akkurat.Export
SELECT
Round(si.Claim, 2),
c.DebitorNumber,
c.CostCenter,
c2s.Notice,
CONCAT('Abrechnung ', p.`LastName`, ' ', p.`FirstName`),
ib.InvoiceNumber,
ib.InvoiceDate,
@@ -242,7 +276,7 @@ namespace Akkurat.Export
select
sip.Claim,
c.DebitorNumber,
c.CostCenter,
c2s.Notice,
CONCAT('Abrechnung ', p.`LastName`, ' ', p.`FirstName`),
ib.invoicenumber,
ib.InvoiceDate,
@@ -262,13 +296,13 @@ namespace Akkurat.Export
return sql;
}
private static String GetMonatlicheBetraegeLvrSql(DateTime date)
private static String GetMonatlicheBetraegeSql(DateTime date)
{
String sql = @"
SELECT
sum(qry.Betrag) AS Betrag,
qry.DebitorNumber,
qry.CostCenter,
qry.Kostenstelle,
qry.Verwendung,
qry.Auswahlbezeichnung,
qry.Oid
@@ -278,7 +312,7 @@ namespace Akkurat.Export
IF(crpRateFactor.`CostRateValue` is null, ROUND((sr.`GeleisteteFLM` / 60) * (SELECT crp.`CostRateValue` FROM `costrateperiod` crp WHERE crp.`ObjectTid` = 22 AND crp.`CostRateType` = 0 AND crp.`ObjectOid` = cb2sc.`CostBearerOid` AND(crp.`EndDate` is null or crp.`EndDate` > ':Monat_Start') order by IF(crp.`EndDate` is null, MAKEDATE(9999, 365), crp.`EndDate`) LIMIT 1)),
ROUND(ROUND((sr.`GeleisteteFLM` / 60), 2) * (SELECT crp.`CostRateValue` FROM `costrateperiod` crp WHERE crp.`ObjectTid` = 22 AND crp.`CostRateType` = 0 AND crp.`ObjectOid` = cb2sc.`CostBearerOid` AND(crp.`EndDate` is null or crp.`EndDate` > ':Monat_Start') order by IF(crp.`EndDate` is null, MAKEDATE(9999, 365), crp.`EndDate`) LIMIT 1 ) *((100 + crpRateFactor.`CostRateValue`)/ 100), 2)) AS 'Betrag',
c.DebitorNumber,
c.CostCenter,
cb2sc.Notice AS 'Kostenstelle',
CONCAT(p.`LastName`, ', ', p.`FirstName`) as 'Verwendung',
cb2sc.Auswahlbezeichnung,
cb2sc.Oid
@@ -298,12 +332,12 @@ namespace Akkurat.Export
INNER JOIN `servicecategory` sc ON sd.`ServiceCategoryOid` = sc.`Oid`
WHERE sr2.`StartDate` >= ':Monat_Start' AND sr2.`StartDate` < ':Monat_End' AND sc.`Billable` = 1 and sd.Name <> 'Fehlkontakt' GROUP BY sr2.`CostBearer2SupportConceptOid`)
AS sr ON sr.`CostBearer2SupportConceptOid` = cb2sc.`Oid`
WHERE c.`IsActive` = 1 AND sc.`IsActive` = 1 and org.Name = 'LVR' and(sr.`GeleisteteFLM` is not null))
WHERE c.`IsActive` <> 0 AND sc.`IsActive` <> 0 and(sr.`GeleisteteFLM` is not null))
UNION
(SELECT
ROUND(0.8 * (sr.`GeleisteteFLM` / 60) * (SELECT crp.`CostRateValue` FROM `costrateperiod` crp WHERE crp.`ObjectTid` = 22 AND crp.`CostRateType` = 0 AND crp.`ObjectOid` = cb2sc.`CostBearerOid` AND (crp.`EndDate` is null or crp.`EndDate` > ':Monat_Start') order by IF(crp.`EndDate` is null, MAKEDATE(9999,365),crp.`EndDate`) LIMIT 1 )) AS 'Betrag',
c.DebitorNumber,
c.CostCenter,
c.DebitorNumber,
cb2sc.Notice AS 'Kostenstelle',
CONCAT(p.`LastName`, ', ', p.`FirstName`) as 'Verwendung',
cb2sc.Auswahlbezeichnung,
cb2sc.Oid
@@ -319,7 +353,7 @@ namespace Akkurat.Export
INNER JOIN `servicecategory` sc ON sd.`ServiceCategoryOid` = sc.`Oid`
WHERE sr2.`StartDate` >= ':Monat_Start' AND sr2.`StartDate` < ':Monat_End' AND sc.`Billable` = 1 and sd.Name = 'Fehlkontakt' GROUP BY sr2.`CostBearer2SupportConceptOid`)
AS sr ON sr.`CostBearer2SupportConceptOid` = cb2sc.`Oid`
WHERE c.`IsActive` <> 0 AND sc.`IsActive` <> 0 and org.Name = 'LVR' and (sr.`GeleisteteFLM` is not null)))qry
WHERE c.`IsActive` <> 0 AND sc.`IsActive` <> 0 and (sr.`GeleisteteFLM` is not null)))qry
GROUP BY qry.OID
ORDER BY qry.Verwendung
";
@@ -330,7 +364,7 @@ namespace Akkurat.Export
public static String GetAviseString(DateTime date)
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("B;Mandant;Monat;Buchungsdatum;Rechnungsnummer;Buchungstext;Betrag;Konto;Gegenkonto;Debitor;Beleg1");
sb.AppendLine("B;Mandant;Monat;Buchungsdatum;Rechnungsnummer;Buchungstext;Betrag;Konto;Gegenkonto;Debitor;Beleg1;Kostenstelle");
string export;
var sql = GetAbschlagszahlungenSql(date);
export = BuildAviseString(date, sql);
@@ -375,13 +409,20 @@ namespace Akkurat.Export
sb.Append(";");
sb.Append(String.Format("{0}", row[1])); //Debitor als Konto
sb.Append(";");
sb.Append("1409"); // String.Format("{0}", row[2])); // Erlöskonto
sb.Append("1691"); // String.Format("{0}", row[2])); // Gegenkonot
sb.Append(";");
sb.Append(String.Format("{0}", row[1])); //Debitor
sb.Append(";");
sb.Append(String.Format("{0}", row[6])); //Hilfeplanbez - Vertragsnr.
sb.Append(";");
if (GetKontoUndKostenstelle(row[2].ToString(), out var konto, out var kStelle))
{
sb.Append(kStelle); // Kostenstelle
}
else
{
sb.Append(""); // Kostenstelle
}
}
return sb.ToString();
}
@@ -392,7 +433,7 @@ namespace Akkurat.Export
SELECT
Round(at.Amount, 2) as 'Betrag',
c.DebitorNumber,
c.CostCenter,
c2s.Notice AS 'Kostenstelle',
CONCAT('Abschlagszahlung ', p.FirstName, ' ', p.LastName) as 'Buchungstext',
c.DebitorNumber,
at.BookingDate,

View File

@@ -19,6 +19,7 @@ namespace Akkurat.Translation
{
var dict = base.GetTranslationDictionary();
AddOrReplaceTranslation(dict, "Bezeichnung", "Vertragsnummer");
AddOrReplaceTranslation(dict, "HilfeplanNotiz", "Erlöskto,KostenSt.");
return dict;
}
}