TwgJonathan/Export/ConturaExporter - Mehr Spalten u Mietzahlungsexport

This commit is contained in:
2025-10-27 10:34:42 +01:00
parent 91474e2b8a
commit dec7d82479

View File

@@ -11,7 +11,7 @@ namespace TwgJonathan.Export
{
public class ConturaExporter
{
public static int count = 1;
public static QueryDC CreateQuery(QueryDC query)
{
DateTime dt = DateTime.Now;
@@ -35,15 +35,20 @@ namespace TwgJonathan.Export
public static String GetAbrechnungenString(DateTime date)
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("AnwenderNr;TeilnNr;Wirtschaftsjahr;Wirtschaftsmonat;Buchungssatz;ErfaBuchhnr;ErfaBetrag;FibuBelegNr;BelegDatum;FKontoNr;FGKontoNr;KstKtr;Buchungstext");
sb.AppendLine("AnwenderNr;TeilnNr;Wirtschaftsjahr;Wirtschaftsmonat;WirtJahrBeginn;Benutzer;ErfaQuelle;Bezeichnung;Buchungssatz;Umsatzart;ErfaBuchhnr;VerrBuchhNr;ErfaBetrag;ErfaWaehrung;Steuerschl;" +
"FibuBelegNr;BelegDatum;Faelligkeit;OPBelegNr;OPBelegNr2;LieferBelegNr;FKontoNr;UKontoNr;FGKontoNr;GUKontoNr;KstKtr;LeistKst;Buchungstext;VerteilGruppeK;VerteilGruppeG;Mischfall;AufteilProz;" +
"Umkehrung;Zahlungsart;Bankleitzahl;BankkontoNr;SkontoTage;AusnahmeSkonto;FKontoNrRechnEmpf;UKontoNrRechnEmpf;FKontoNrBetreuter;UKontoNrBetreuter;Aktenzeichen;Unterbringung;Leistungdatum;Geburtsdatum;" +
"Ungesichert;VersichertenNr;Lieferscheinnr;Projektnr1;ProjektNrA;Projektnr2;ProjektNrB;Projektnr3;ProjektNrC;Verwzweck1;BankNr;WMonatVonAbgr;WMonatBisAbgr;OPBelegNrK;OPBelegNrG;LieferKundenNr;" +
"Skontofaelligkeit;Name1;Name2;Name3;Strasse;PLZ;Ort;ScanID");
var s = GetMonatlicheRechnungenString(date);
if (!String.IsNullOrWhiteSpace(s))
{
sb.Append(s);
}
//if (sb.Length > 0)
// sb.AppendLine();
if (sb.Length > 0)
{
sb.AppendLine();
}
//s = GetAbschlagszahlungenString(date);
//if (!String.IsNullOrWhiteSpace(s))
@@ -53,11 +58,11 @@ namespace TwgJonathan.Export
//if (sb.Length > 0)
// sb.AppendLine();
//s = GetSelbstzahlerString(date);
//if (!String.IsNullOrWhiteSpace(s))
//{
// sb.Append(s);
//}
s = GetMietzahlungenString(date);
if (!String.IsNullOrWhiteSpace(s))
{
sb.Append(s);
}
return sb.ToString();
}
@@ -65,21 +70,6 @@ namespace TwgJonathan.Export
public static String GetMonatlicheRechnungenString(DateTime date)
{
var dt = ExecuteQuery(GetMonatlicheRechnungenSql(date), date);
//int idx = Int32.MaxValue;
//foreach (DataRow row in dt.Rows)
//{
// var item = row[2];
// if ((int)item < idx)
// {
// idx = (int)item;
// }
//}
//if (idx == Int32.MaxValue)
//{
// idx = 1;
//}
int idx = 1;
StringBuilder sb = new StringBuilder();
foreach (DataRow row in dt.Rows)
@@ -93,34 +83,91 @@ namespace TwgJonathan.Export
sb.Append(String.Format("{0:yyyy}", date)); // Wirtschaftsjahr
sb.Append(";");
sb.Append(String.Format("{0:0}", date.Month)); // Wirtschaftsmonat
sb.Append(";1;"); //Buchungssatz
sb.Append(String.Format("{0:0}", idx++)); //ErfaBuchhnr
sb.Append(";");
sb.Append(";;;;;1;;"); //Buchungssatz
_ = sb.Append(String.Format("{0:0}", idx++)); //ErfaBuchhnr
sb.Append(";;");
sb.Append(String.Format("{0:0.00}", row[0])); // ErfaBetrag
sb.Append(";");
sb.Append(";;;");
sb.Append(String.Format("{0}", row[2])); // FibuBelegNr
sb.Append(";");
sb.Append(String.Format("{0:dd.MM.yyyy}", row[3])); // Belegdatum
sb.Append(";");
sb.Append(";;;;;");
sb.Append(String.Format("{0}", row[4])); // FKontoNr (Debitor)
sb.Append(";");
sb.Append(";;");
sb.Append(String.Format("{0}", row[1])); // FGKontoNr
sb.Append(";6300;"); // Kostenstelle
sb.Append(";;6300;;"); // Kostenstelle
String buchungstext = "";
long? c2sOid = (long?)row[6];
if (c2sOid.HasValue)
if (row[8] != null && row[8].ToString() == "Allgemeine Rechnung")
{
var c2s = DAOFactory.GenericDAO.LoadByID<CostBearer2SupportConcept>(c2sOid.Value);
var c = c2s.SupportConcept.Customer;
buchungstext = String.Format("{0} {1} {2:0.00}/{3}", c.Person.LastName, c.Person.FirstName, date.Month, date.Year);
buchungstext = buchungstext.Replace(";", ",");
buchungstext = row[8].ToString();
}
else
{
long? c2sOid = (long?)row[6];
if (c2sOid.HasValue)
{
var c2s = DAOFactory.GenericDAO.LoadByID<CostBearer2SupportConcept>(c2sOid.Value);
var c = c2s.SupportConcept.Customer;
buchungstext = String.Format("{0} {1} {2:MM}/{3}", c.Person.LastName, c.Person.FirstName, date, date.Year);
buchungstext = buchungstext.Replace(";", ",");
}
}
sb.Append(buchungstext);
sb.Append(";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"); // Leerspalten
}
count = idx;
return sb.ToString();
}
private static string GetMietzahlungenString(DateTime date)
{
/* Round(scap.ApprovedFixedAmount, 2) AS 'Miete',
'40126' AS 'Gegenkonto',
'123456' AS InvoiceNumber,
cust.CostCenter,
cust.DebitorNumber,
CONCAT(p.LastName, ', ', p.FirstName) AS KlientName */
var dt = ExecuteQuery(GetMonatlicheMietenSql(date), date);
int idx = count;
StringBuilder sb = new StringBuilder();
foreach (DataRow row in dt.Rows)
{
if (sb.Length > 0)
{
sb.AppendLine();
}
sb.Append("172265000;172265;"); // Anwender Nr.;TeilNr
sb.Append(String.Format("{0:yyyy}", date)); // Wirtschaftsjahr
sb.Append(";");
sb.Append(String.Format("{0:0}", date.Month)); // Wirtschaftsmonat
sb.Append(";;;;;1;;"); //Buchungssatz
sb.Append(String.Format("{0:0}", idx)); //ErfaBuchhnr
sb.Append(";;");
sb.Append(String.Format("{0:0.00}", row[0])); // ErfaBetrag
sb.Append(";;;");
sb.Append(String.Format("{0}", idx++)); // FibuBelegNr
sb.Append(";");
sb.Append(String.Format("{0:dd.MM.yyyy}", date)); // Belegdatum
sb.Append(";;;;;");
sb.Append(String.Format("{0}", row[3])); // FKontoNr (Debitor) Debitor für Miete ist in Kostenstelle, da abweicht
sb.Append(";;");
sb.Append(String.Format("{0}", row[1])); // FGKontoNr
sb.Append(";;6300;;"); // Kostenstelle
String buchungstext = "";
if (row[5] != null)
{
buchungstext = row[5].ToString();
buchungstext = String.Format("{0} {1:MM}/{2}", row[5], date, date.Year);
//buchungstext = buchungstext.Replace(";", ",");
}
sb.Append(buchungstext);
sb.Append(";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"); // Leerspalten
}
return sb.ToString();
}
}
private static String GetMonatlicheRechnungenSql(DateTime date)
{
@@ -148,8 +195,48 @@ namespace TwgJonathan.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.`IsExported` = 0
UNION
SELECT DISTINCT
(select sum(ii.AmountTotal) from invoiceitem ii where ii.invoicebaseoid = ib.oid),
'40125' as 'Gegenkonto',
ib.invoicenumber,
ib.InvoiceDate,
'113999',
'6300',
ib.Oid,
ib.InvoiceId,
'Allgemeine Rechnung'
from invoicebase ib
inner join organisation org on org.costbeareroid = ib.RecipientOrganisationOid
WHERE ib.`AccountingPeriodEnd` >= ':Monat_Start' AND ib.`AccountingPeriodEnd` < ':Monat_End' and ib.IsActive = 1
order by ib.invoicenumber
and ib.Type = 2 AND ib.`IsExported` = 0
-- order by ib.invoicenumber
";
return sql;
}
private static String GetMonatlicheMietenSql(DateTime date)
{
//40125 Betreuung
//40126 Mietkostenerstattung
String sql = @"
SELECT
Round(IFNULL(scap.ApprovedFixedAmount, 0), 2) as 'Miete',
'40126' AS 'Gegenkonto',
'123456' AS InvoiceNumber,
cust.CostCenter,
cust.DebitorNumber,
CONCAT(p.LastName, ', ', p.FirstName, ', Miete ') AS KlientName
FROM `person` p join `customer` cust on p.Oid = cust.PersonOid join `supportconcept` sc on cust.Oid = sc.CustomerOid
join `costbearer2supportconcept` cb2sc on sc.Oid = cb2sc.SupportConceptOid join `costbearer` cb on cb2sc.`CostBearerOid` = cb.`Oid`
join `supportconceptapprovalperiod` scap on cb2sc.`Oid` = scap.`CostBearer2SupportConceptOid`
join `organisation` o on cb.`Oid` = o.`CostBearerOid`
WHERE cust.IsActive = 1 AND sc.IsActive = 1 AND (scap.ServicecategoryOid) = 6
AND scap.Start < ':Monat_End' && scap.EndDate > ':Monat_Start'
Order by KlientName
";
return sql;