diff --git a/ReportImp/TwgJonathan/Export/ConturaExporter.cs b/ReportImp/TwgJonathan/Export/ConturaExporter.cs index 039bf8588..14bfa7c9b 100644 --- a/ReportImp/TwgJonathan/Export/ConturaExporter.cs +++ b/ReportImp/TwgJonathan/Export/ConturaExporter.cs @@ -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(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(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;