diff --git a/ReportImp/ChristopherusHaus/ChristopherusHaus.csproj b/ReportImp/ChristopherusHaus/ChristopherusHaus.csproj index 96167f328..1db21aa5a 100644 --- a/ReportImp/ChristopherusHaus/ChristopherusHaus.csproj +++ b/ReportImp/ChristopherusHaus/ChristopherusHaus.csproj @@ -64,6 +64,7 @@ + Component diff --git a/ReportImp/ChristopherusHaus/Export/CustomDataExporter.cs b/ReportImp/ChristopherusHaus/Export/CustomDataExporter.cs index acc23df48..adc60260b 100644 --- a/ReportImp/ChristopherusHaus/Export/CustomDataExporter.cs +++ b/ReportImp/ChristopherusHaus/Export/CustomDataExporter.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using Bewo.ChristopherusHaus.Export; using BeWo.Service.Plugins; using BS.Shared.Core; using BS.Shared.DataContracts; @@ -12,7 +13,27 @@ namespace BeWo.ChristopherusHaus.Export public override QueryDC CreateQuery(QueryDC query) { - return LohnExporter.CreateQuery(query); + QueryDC q = null; + if (query.Oid == 100) + { + return LohnExporter.CreateQuery(query); + } + else if (query.Oid == 200) + { + q = FibuExport.CreateQuery(query); + } + + CreateBuchungsExportProtokollEintrag(q); + return q; + } + + public override string CreateExportString(string pFileID, string[] pHeaderCaption, string[][] pContent) + { + if (pHeaderCaption != null && pHeaderCaption.Length > 0 && pHeaderCaption[0].Contains("Buchhaltungsexport")) + { + return FibuExport.CreateExportString(pHeaderCaption, pContent); + } + return base.CreateExportString(pFileID, pHeaderCaption, pContent); } } } diff --git a/ReportImp/ChristopherusHaus/Export/SimbaExporter.cs b/ReportImp/ChristopherusHaus/Export/SimbaExporter.cs new file mode 100644 index 000000000..143586d76 --- /dev/null +++ b/ReportImp/ChristopherusHaus/Export/SimbaExporter.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.Text; +using BeWo.Data.Access; +using BeWo.Data.Entities; +using BS.Shared.DataContracts; + +namespace Bewo.ChristopherusHaus.Export +{ + public class FibuExport + { + public static QueryDC CreateQuery(QueryDC query) + { + DateTime dt = DateTime.Now; + DateTime.TryParse(query.Parameter[0].Value.ToString(), out dt); + query.FileName = String.Format("BUCH_BO_{0:yyyyMM}.scs", dt); + query.QueryResult = GetAbrechnungenString(dt); + return query; + } + + public static string CreateExportString(string[] pHeaderCaption, string[][] pContent) + { + if (pHeaderCaption != null && pHeaderCaption.Length > 1 && pHeaderCaption[0].Contains("Fibu")) + { + DateTime dt = DateTime.Now; + DateTime.TryParse(pHeaderCaption[1], out dt); + return GetAbrechnungenString(dt); + } + return null; + } + + public static String GetAbrechnungenString(DateTime dt) + { + StringBuilder sb = new StringBuilder(); + sb.AppendLine("\"MND\";500"); + sb.AppendLine(String.Format("\"BZR\";{0:yyyyMM}", dt)); + + var s = GetMonatlicheRechnungenString(dt); + if (!String.IsNullOrWhiteSpace(s)) + { + sb.Append(s); + } + + return sb.ToString(); + } + + public static String GetMonatlicheRechnungenString(DateTime date) + { + var dt = ExecuteQuery(GetMonatlicheRechnungenSql(date), date); + /* 'BCH', sip.Claim, '8106' as 'Gegenkonto', ib.invoicenumber, ib.InvoiceDate, org.DebitorNumber, '3170', org.Name, p.FirstName, p.LastName*/ + StringBuilder sb = new StringBuilder(); + foreach (DataRow row in dt.Rows) + { + if (sb.Length > 0) + { + sb.AppendLine(); + } + sb.Append(String.Format("\"{0}\"", row[0])); + sb.Append(";"); + sb.Append(String.Format("{0:0.00}", row[1])); + sb.Append(";;;"); + sb.Append(String.Format("{0}", row[2])); + sb.Append(";"); + sb.Append(String.Format("{0}", row[3])); + sb.Append(";;"); + sb.Append(String.Format("{0:ddMMyyyy}", row[4])); + sb.Append(";;"); + sb.Append(String.Format("{0}", row[5])); + sb.Append(";"); + sb.Append(String.Format("{0}", row[6])); + sb.Append(";;;"); + sb.Append(String.Format("\"ISB {0}, {1} {2}\"", row[7], row[8], row[9])); + sb.Append(";\"EUR\";;;;;;;;;;"); + sb.Append(String.Format("{0}", row[3])); + sb.Append(";;;;"); + sb.Append(String.Format("\"Rechnung {0}.pdf\"", row[3])); + } + + return sb.ToString(); + } + + private static String GetMonatlicheRechnungenSql(DateTime date) + { + String sql = @" + select + 'BCH', + sip.Claim, + '8106' as 'Gegenkonto', + ib.invoicenumber, + ib.InvoiceDate, + org.DebitorNumber, + '3170', + org.Name, + p.FirstName, + p.LastName + from + person p + inner join customer c on c.personoid = p.oid + inner join supportconcept sc on sc.customeroid = c.oid + inner join costbearer2supportconcept c2s on c2s.supportconceptoid = sc.oid + inner join costbearer cb on c2s.costbeareroid = cb.oid + inner join organisation org on org.costbeareroid = cb.oid + 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 + order by ib.invoicenumber + "; + + return sql; + } + + public static DataTable ExecuteQuery(String sql, DateTime dt) + { + var newsql = sql; + newsql = newsql.Replace(":Abrechnungsmonat", String.Format("{0:dd.MM.yyyy}", dt)); + newsql = newsql.Replace(":Belegnr", String.Format("{0:yyMM}", dt)); + newsql = newsql.Replace(":Monat_Start", String.Format("{0:yyyy-MM}-01", dt)); + dt = dt.AddMonths(1); + newsql = newsql.Replace(":Monat_End", String.Format("{0:yyyy-MM}-01", dt)); + + return DAOFactory.AdoDAO.ExecuteQuery(newsql).Tables[0]; + } + } +} \ No newline at end of file