From ad7c468f3c216c5b6bc93304efb1f4232bb80f51 Mon Sep 17 00:00:00 2001 From: HirschleM Date: Fri, 21 Mar 2025 10:06:30 +0100 Subject: [PATCH 1/3] MH: Lebenshilfe Stade MID QB + Abrechnung --- .../Invoicing/CustomInvoiceCreation.cs | 2 +- .../LebenshilfeStadeMID/Quittierungsbeleg.cs | 2 +- .../SbdRechnung.Designer.cs | 38 ++----------------- .../LebenshilfeStadeMID/SbdRechnung.resx | 2 +- .../Service/CustomSaveInterceptor.cs | 2 + 5 files changed, 8 insertions(+), 38 deletions(-) diff --git a/ReportImp/LebenshilfeStadeMID/Invoicing/CustomInvoiceCreation.cs b/ReportImp/LebenshilfeStadeMID/Invoicing/CustomInvoiceCreation.cs index b5641d6d0..39aa2ff40 100644 --- a/ReportImp/LebenshilfeStadeMID/Invoicing/CustomInvoiceCreation.cs +++ b/ReportImp/LebenshilfeStadeMID/Invoicing/CustomInvoiceCreation.cs @@ -50,7 +50,7 @@ namespace LebenshilfeStadeMID.Invoicing var ende = scap.EndDate.HasValue ? scap.EndDate.Value : invoicePeriod.EndDate; var serviceRecordsImSchuljahr = DAOFactory.SearchDAO.FindServiceRecordsInSpan(scap.CostBearer2SupportConcept.Oid.Value, new DateTimeSpan(start, ende)); int maxKrankheitstage = GetMaximalAbrechenbareKrankheitstage(scap, serviceRecordsImSchuljahr); - int nochUebrigeKrankheitstage = GetUebrigeAbrechenbareKrankheitstage(maxKrankheitstage, serviceRecordsImSchuljahr.Where(s => s.Start < start).ToList()); + int nochUebrigeKrankheitstage = GetUebrigeAbrechenbareKrankheitstage(maxKrankheitstage, serviceRecordsImSchuljahr.Where(s => s.Start < invoicePeriod.StartDate).ToList()); foreach (ServiceRecordDC iServiceRecord in serviceRecordsInPeriod) { diff --git a/ReportImp/LebenshilfeStadeMID/Quittierungsbeleg.cs b/ReportImp/LebenshilfeStadeMID/Quittierungsbeleg.cs index 4123dc19d..ce7f3a6bf 100644 --- a/ReportImp/LebenshilfeStadeMID/Quittierungsbeleg.cs +++ b/ReportImp/LebenshilfeStadeMID/Quittierungsbeleg.cs @@ -67,7 +67,7 @@ namespace LebenshilfeStadeMID verfuegungszeiten.Remove(vz); } // Zusatzleistung in eigentlichen ServiceRecord eintragen und aus Liste entfernen, dass der nicht mehrfach übertragen wird - else if (zl != null) + if (zl != null) { sd.Notice2 = string.Format("{0:0}", zl.Minutes); sd.Minutes += zl.Minutes; diff --git a/ReportImp/LebenshilfeStadeMID/SbdRechnung.Designer.cs b/ReportImp/LebenshilfeStadeMID/SbdRechnung.Designer.cs index 07ba5df3d..6cbe5e64c 100644 --- a/ReportImp/LebenshilfeStadeMID/SbdRechnung.Designer.cs +++ b/ReportImp/LebenshilfeStadeMID/SbdRechnung.Designer.cs @@ -51,8 +51,6 @@ namespace LebenshilfeStadeMID this.xrLabel3 = new DevExpress.XtraReports.UI.XRLabel(); this.xrLabel12 = new DevExpress.XtraReports.UI.XRLabel(); this.xrLabel11 = new DevExpress.XtraReports.UI.XRLabel(); - this.xrLabel10 = new DevExpress.XtraReports.UI.XRLabel(); - this.xrLabel4 = new DevExpress.XtraReports.UI.XRLabel(); this.xrLabel5 = new DevExpress.XtraReports.UI.XRLabel(); this.xrLabel13 = new DevExpress.XtraReports.UI.XRLabel(); this.GroupHeader1 = new DevExpress.XtraReports.UI.GroupHeaderBand(); @@ -329,38 +327,12 @@ namespace LebenshilfeStadeMID this.xrLabel11.Text = "Betreute(r):"; this.xrLabel11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.BottomLeft; // - // xrLabel10 - // - this.xrLabel10.Font = new DevExpress.Drawing.DXFont("Arial", 11F); - this.xrLabel10.LocationFloat = new DevExpress.Utils.PointFloat(206.917F, 389.4479F); - this.xrLabel10.Name = "xrLabel10"; - this.xrLabel10.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); - this.xrLabel10.SizeF = new System.Drawing.SizeF(470.54F, 20F); - this.xrLabel10.StylePriority.UseBorders = false; - this.xrLabel10.StylePriority.UseFont = false; - this.xrLabel10.StylePriority.UseTextAlignment = false; - this.xrLabel10.Text = "[CustomerStreet], [CustomerPostalCode] [CustomerTown]"; - this.xrLabel10.TextAlignment = DevExpress.XtraPrinting.TextAlignment.BottomLeft; - // - // xrLabel4 - // - this.xrLabel4.Font = new DevExpress.Drawing.DXFont("Arial", 11F); - this.xrLabel4.LocationFloat = new DevExpress.Utils.PointFloat(0.4585266F, 389.4479F); - this.xrLabel4.Name = "xrLabel4"; - this.xrLabel4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); - this.xrLabel4.SizeF = new System.Drawing.SizeF(206.4585F, 20F); - this.xrLabel4.StylePriority.UseBorders = false; - this.xrLabel4.StylePriority.UseFont = false; - this.xrLabel4.StylePriority.UseTextAlignment = false; - this.xrLabel4.Text = "wohnhaft:"; - this.xrLabel4.TextAlignment = DevExpress.XtraPrinting.TextAlignment.BottomLeft; - // // xrLabel5 // this.xrLabel5.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { new DevExpress.XtraReports.UI.XRBinding("Text", null, "CustomerReferenceNumber")}); this.xrLabel5.Font = new DevExpress.Drawing.DXFont("Arial", 11F); - this.xrLabel5.LocationFloat = new DevExpress.Utils.PointFloat(206.917F, 409.4481F); + this.xrLabel5.LocationFloat = new DevExpress.Utils.PointFloat(206.4585F, 389.4479F); this.xrLabel5.Name = "xrLabel5"; this.xrLabel5.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); this.xrLabel5.SizeF = new System.Drawing.SizeF(281.25F, 20F); @@ -372,7 +344,7 @@ namespace LebenshilfeStadeMID // xrLabel13 // this.xrLabel13.Font = new DevExpress.Drawing.DXFont("Arial", 11F); - this.xrLabel13.LocationFloat = new DevExpress.Utils.PointFloat(0.4585266F, 409.4481F); + this.xrLabel13.LocationFloat = new DevExpress.Utils.PointFloat(0F, 389.4479F); this.xrLabel13.Name = "xrLabel13"; this.xrLabel13.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); this.xrLabel13.SizeF = new System.Drawing.SizeF(206.4585F, 20F); @@ -494,13 +466,11 @@ namespace LebenshilfeStadeMID this.xrLabel3, this.xrLabel12, this.xrLabel11, - this.xrLabel10, - this.xrLabel4, this.xrLabel5, this.xrLabel13, this.lblAdresse}); this.GroupHeader2.Font = new DevExpress.Drawing.DXFont("Arial", 10F); - this.GroupHeader2.HeightF = 429.4481F; + this.GroupHeader2.HeightF = 419.2878F; this.GroupHeader2.Level = 1; this.GroupHeader2.Name = "GroupHeader2"; this.GroupHeader2.StylePriority.UseFont = false; @@ -767,8 +737,6 @@ namespace LebenshilfeStadeMID private DevExpress.XtraReports.UI.XRLabel xrLabel3; private DevExpress.XtraReports.UI.XRLabel xrLabel12; private DevExpress.XtraReports.UI.XRLabel xrLabel11; - private DevExpress.XtraReports.UI.XRLabel xrLabel10; - private DevExpress.XtraReports.UI.XRLabel xrLabel4; private DevExpress.XtraReports.UI.XRLabel xrLabel5; private DevExpress.XtraReports.UI.XRLabel xrLabel13; private DevExpress.XtraReports.UI.GroupHeaderBand GroupHeader1; diff --git a/ReportImp/LebenshilfeStadeMID/SbdRechnung.resx b/ReportImp/LebenshilfeStadeMID/SbdRechnung.resx index 0901914b8..30f034d0a 100644 --- a/ReportImp/LebenshilfeStadeMID/SbdRechnung.resx +++ b/ReportImp/LebenshilfeStadeMID/SbdRechnung.resx @@ -125,6 +125,6 @@ Wir stellen diese hiermit in Rechnung. - iVBORw0KGgoAAAANSUhEUgAABCYAAACmCAYAAAAGVI70AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwwAADsMBx2+oZAAAF+9JREFUeF7t3d2vJGd9J/D5C+AfwHck0i7cxpF9F+dmiIRZKZKJgFs7ygoJhRnyIrxE2rG0a9lsTHA2kRyEyc7uSpaNfWEWUDyrxXhINMResIKdeFC8EjhxEpJFIuRVUYdvz9S4ps6vq6uqq7vOnPNp6aPRnH7qV9V1+qKe73lezqy8vLy8vLy8vLy8vLy8vLy8FnrdCCae+eZfrH71mT8e5Ad/988AAAAAk/39P/7LOo+4EUz8/P94eXXmw18Y5Oqf/e3qzb/+BwAAAIBJ/v8P/mmdRwgmAAAAgIMTTAAAAACLEUwAAAAAixFMAAAAAIsRTAAAAACLEUwAAAAAixFMAAAAAIsRTAAAAACLEUwAAAAAixFMAAAAAIsRTAAAAACLEUwAAAAAixFMAAAAAIsRTAAAAACLEUwAAAAAixFMAAAAAIsRTAAAAACLEUwAAAAAixFMAAAAAIsRTAAAAACLEUwAAAAAixFMAAAAAIsRTAAAAACLEUwAAAAAixFMAAAAAIsRTAAAADc8/dKbqwtfuLr62FOv3pD/5+dVe4BdCSYAAOCU+vq3v78OHBI+vOfRK+Uzf9u5J18p6wDsQjABAACnVIKG6jl/k3dfeH712hs/LGsBTCWYAACAU+rei8Of/Rvv/52XyloAUwkmAADglMoIiOo5f5sEGlU9gCkEEwAAcAplfYnqGX+oTz33elkXYCzBBAAAnEIXnr1aPuMPddv9l8q6AGMJJgAA4BSaOo2jLeFGVRtgDMEEAACcQtXz/VhvP//l9ZSQqj7AUIIJAAA4ZS5963vl8/0UGXlRnQNgKMEEAAAcQ1lc8s6HL6+35/zYU6+WbaZ67Y0fls/3U9lCFNiFYAIAAI6RTI1IR7/77D33lIl7HnvxyDl2IZwAphJMAADAMXHfxZfX6zZUz97vefRKecxUCTredq4+11TnnnylPBdAH8EEAAAsLFMrhuySMfcuGPdeHP7sP1SmoFTnAthEMAEAAAv6/It/vrrt/kvl83Yl600kyKhqjZVzZ5RD446HLpfnHEs4AYwhmAAAgIUkZKies4fYx7SJTO9owoqsQbHLVA/hBDCUYAIAAA4sIx6y40b1jD1URlnMNXKiT4KK6vxDPH75u2VNgDbBBAAAHNClb31v0HoSQ+xj1EQl4cSUXTyykOchwhPg1iaYAACAA0kosWnXjalSszrXPkwJJ3JMVQugIZgAAIAD2EcoEYfu+E8JJzLioqoFEIIJAADYs32FErHEdImx4USu0XoTb3nhD76x+tJzL5Su/r+/LI9hvG/80Z+W9zjyXnXMWF/6vbp+fsftdv/pwU+u3vveu0v/54U/vKntJvluPPXMF1cPPvzI6hfP/dLqAx/80A352ef+2xPlcbcCwQQAAOzRPkOJxhw7YPzJG8Of7ROEvOPjw7c4bbzn0StlvdPmAx/40Opd//bflNLRrY5hvAcfeqS8x5H3qmPGqmpHfsftdh89/8tlu/jil5+/qW0locNP3n57eXyje85biWACAAD25BChRNx78eXy/Nucf/LV9TSL80+9sr7Oqs0mF569Wl7LNlWtufz3//n5dees8p8f/C/lMUvI9VQdyxBMzOekBBMJJarjuub6TEsQTAAAwB5kVMEhQolISFBdQ5+vf/v7R+rkZ1XbSj5f9/gh9rnexK8/8l/LDlvcd9+/L49ZgmDiME5CMJEpJ9UxFcEEAABwQzrtc20Jus27HvjKqDUmMmWjGSHRrfXuB54fNaXj7KevHKmxzT6ncwgmaDsJwcR/+MSF8piKYAIAALjhzocvl8/Pc0swMCaUyFoUt93fvzZEpndUx1ZSr6qxTUKb+y6+PGqExhCCCdoOEUzkd1lJoNBuNzWYuOunfro8Ju79+V9Yf18at/LCqYIJAACYUdZ7qJ6d55SFJ4dOiegbIbHJ0MU0E4q87dz06SpTpqD0EUzQdohgYqipwUTVPm7/iZ84UTu4CCYAAGAmU0cQjJGpG1lUszp/V0Y/TF3nIsfd+cnLZd22sVuHtt3x0Pb6YwgmaDvJwUS+Q1X7W5VgAgAAZrDvHTgySmLoSIbn/uivtk7ZGKqq35bPXR03RKZ0PP3Sm2XdKQQTtN3qwcQLf/CNsn0IJloEEwAAsP/FLrOWRHXeStZtmDMg+ewL3ynP05ZRHNWxQ1U1pzhEMJFdEn7ztz+zrveBD35o9ZO3376uf/f7/t36/7947pdWTz3zxfLYxtBg4smn/9e6Xmo37zfnmBJg5NoffPiRdY1oajbX/olfe2DdGa6ObWTrytTo6l5P2uU6m/PkPk259rRN/Rx711133XQfIr+HvF9d99Bgon1fmt9nU3vb77Jbt9ENDoYEE811NHKvqvaRe9FuG333tfku5XM136fmd5LP+bmLTyw6NUQwAQAAO9rXuhIJJB6//N3Bi0RmPYnsrFHVmur9j71Unqtt189f1Zxin8FEOm19HcWudP42dfK3BRM5rh1GbJLPNKQzmQ5vOqBVjUpf3U3X3nT0c/3tAGGT3Mu+ax97zZHFINs1hgQTfW0a+V1sutaqfUwJJnLvqveHaoctjQRETdiyTdqlfbfGIQgmAABgB7tMZdgkC0omkKjO12cfAUlGX1TnastCnNWxQw1dyHObfQUTCQqGdLa70tGrwom+YOLR3/rM4I5k9HWaY0zHtC2fN+FAt15fMJG/ylfvbZLgoVs/UmfKNXc75n2hQ9776EfHBU3Vfa7axtLBRK413/mq3TYJjZo6hyKYAACAHcw9hSPTIsZsAdrIqIqq3hyGrG2xy+4c5558paw51j6CiXTOp3SSG1U40RdMTLHps40NCrpy7d3O+KZrz/aYU+5Tgph2/V3u95hgYso5EmS060fVLpYMJvI7GzLipk/3Xu6bYAIAACaaexeOqaFE3Pnw18qac0jt6pxt2WGjOnaILNRZ1RxrH8HE3Xe/r6wXd/3UT6875OnEpdOaLRyrdt2RAXMHE5FObfsc6Zz2db7zuXLdkSkQVZvodlA3XfvUMCEjM9r1E1RU7Ro5f1v7ve49yLW3359DdxRJ1SZybe12hwwm+j53vqP5rqZN9H2/qxEz+yKYAACAieba+SIy4mBqKJFdOKqacxkynSPrYVTHDjV0x5E+cwcTmQZR1Yrqr+frv1Rv6Ohl9ELTrtuhriT0SCc9ndV0IPP/ql2jG370TVPojlKIjOrYFKy0R00MufZIrbTdVLOtHShsqp+fd0dvNHJ8Pu8uwUTqb7vH0b13VZtIvXa7IcFEPl8+Q6MvpMn3rN02EiSkRtU+ckx1Dzd9V6rv+L4IJgAAYIJd11VoSyiRtSqq8wyRBSqrunNK+FGdu3Hh2avlcUPNMWpi7mBiU8iQzvamTvKm6RPthRk3db4bY0OPRvsv3NX7kRrtum2bOsLtzvi2a0/99tSVXHdfSBLt+pvCgSm/v23BRH6P7cAo+sKA6P5uqjYxJZjoSthQtY9u/Ubf9Xc/a9umAKlquw+CCQAAmOCex14sn5Gn2HXxx13Wdxjq83/Yf41zLAK666iJOYOJvr88b/tLctXJy1SH5v2+zn065u1abQkeqmMazY4KfWtL9O26kEChOmZMqFIN/8+97Bs5kQChadtXP6NCsn3nplCoa1swsamj3je1pRsIVG2i2+5QwUTf/avaNzYdl2uo2s9NMAEAABPMNY1j1874vqdxNLYFE7FrQLLrqIk5g4neTuGPOsgPPvzIRpt28Gg61H2dx/bogUpfpznrXaRNX4c8Oy5U19yojonm/H3X3hfY9I2aaAcT28KERhZ3/MSvPbAOKtrnaeur1RcA9QU73UCgahPddocKJjYFQPlOVr/vRr7T1XHbvo9zEUwAAMBIc+2AMcduFP/x2dfK2nMbEkzMsV3pLqNH5gwmhnaQx2j++tzXud/2F+q+62o6qwkoqvd30Zy/79r7pgr0XXfea9plxEXf6IpKOt3VufvO2ReijAkEqjbRbXeIYKJvlM9U7d/NPgkmAABgpDnWl8hUkKr2WOeffLWsP7chwcTjl79bHjtGFtGsag8hmLjWWe2rP9Wu1963kGi389u3EGef7l/3++5VX4d705SW6AYCVZvotjtEMNHXfqrqPPsgmAAAgJF2HRmwS+e76zgFE3ONJKlqD3Hcg4mmMzy1cx9919WsBbGPax8STLQXvezq6zRXIUH++p+RH2MDivY19N2H6pxt1THR7ahXbaLb7lBTOaq2u9h0nrkJJgAAYKRd1pd41wNfmbwtaOU4TeWI6tixpk7nONQaE3ff/b51x3asIZ37Zp2ITfqOzTnSJv9W70fCi/Y1DdUsatl3/vZ1do0NJtpybNrkvlfHt7WnaOSYqk1sO2d1THQ76lWb6LZbeo2JyGceq2+x1DkJJgAAYIRdpivsui1oJYFBda65HTKYmLr2xpzBRFR1IgsvVu2H6uvcZ/eOTbtObFtDoFlnoW/xxm3BxzZLBBNtCUiG7pqRulWb2HbO6pjoBgJVm+i2O1Qw0Xdvqh1TjgvBBAAAjLDLNqFzLHZZOcR2odn9ozp31zs+vvtuJfsIJn7u5z647ugN8fzX/u+6Xt9OEmnXPf9QfZ37yM4Z3WMSSiQQqdo32h3P7DpRtUnw0TflYpu+a6/aN3K/qmNiTDAR+ZxVnWh32E9jMNG3lseUcO5QBBMAADDCHQ9dLp+Nt0mHvao3h/c/9lJ5zjkNHTEx9f60ZQ2PqvY2fcHEGD/7s/es6/V1DNPBzzaLfaMbspXlemvRTie4r3PfaLZ3/NJzL6z/3bQFaaNZX6LR1ynPtX/u4uYh+un45/2csxvA9F17u13X0GAiHevcs5x/070dup3naQwmom86R8KJvpETCa2yDWu+I9X7+yKYAACAEd594fny2XibTz33ellvDnMtOlk5++iVdSjxJ28Me/afI5hIjar2NnMHE9E3NL6RjnRbd2TDlGBirG6AENvWZEjns3vt3QDk0MFEN0zIvexeY/v9rvZUldMaTPQFN40h97WqvS+CCQAAGKF6Lt4mUy2qWnPax+4cWVizOlefOYKJqGpvs49gYj2FYsCii32GBhM5z5RtMjetG5Frn1KvbelgYox81vZogNMaTES+E9VxY1R190UwAQAAA2W3iOq5eJusS1HVm1t2/KjOP1aClKFTN7rmCiamLBK6j2Ai0sHvW29im6HBRH7e1xmtJMzYNOUh0lHfJVg5dDCxS4e6u4PEaQ4m4tHf+sxOwVRVc18EEwAAMFA6y9Vz8TbZyaOqN7dM6ZhjIczPvvCdsv4QcwUTU+7ZvoKJRobIb1pUsk+3w7ypc990NtMhHXKeMTtspCM+tpOa9t2FMjdde7TbdQ0NJvrqb5J7VS3oeZyCiXPnf6VsF1/6va/e1LaxazARCaamhGoJs6p6+yKYAACAgbJbRPVcvE1Va1+yFsQuIyd2XQvj7efn2SFkXzuYzCGd4HRs0znsBgj5WSQ0SJBRjWZIUJHju7oBRv6fNS6acyQoaGr3LWDYJ9eU41OnHVQ0tSPXkk5xdfyma4+qfSPXWx0T7XPlfuUczTVG9x6n09xcZ98OI6nbPVdj0+drVMdE93e0T333bOx1pFZGUOT71B1Bk/ub+5kAI22mfrd2IZgAAICBpowGmLqQ4y4STmRni+p6Grd9/H/fWEPizoe/tg4zhm4Jusmci3BeePZqeQ7g5BFMAADAQFOCialbX84hQUHChwQPjWwt2p2qsWsg0choi+oeTJH1PKpzACePYAIAAAY6++kr5XNxn31uE3rc3Hb/pfIejHWIXUyA40MwAQAAA01ZY+K0/OU/Uy+qzz/FaQpzAMEEAAAMNmW70NMQTMw5hWOJNTmAZQkmAABghOq5uM9rb/ywrHNSzBlKRLZkrc4DnFyCCQAAGGHsAphVjZNi7lDinsdeLM8DnGyCCQAAGGHbNpxdVY2TYMq0lm2yi0h1rlvDN1cf/rEzqzM/80TxHtBHMAEAACOMXeSxqnEre/qlN1cfe+rV8rPuYi+jJX73vaszZ87crB0c/P751TvP/Pjqw7/fOmay4xFMfPZnfnQNP3Z+9dXivbX1Zz6zOvu7xXuwEMEEAACMMHakwElaMyHrZVSfcQ5z36evfuTHV2eOhA5PrM6e8GCiCWM2BQ9bgwtYgGACAABGGBtMZIvRqs6tJp/7tvsvlZ9xV+/4+KXynNM9sTo7ZFTASQwmeq/j2n1550e+WbwHyxFMAADASNWz8SZvP//lW3pnjgQSdz48bsHPseafxrG9A74eOfCjNm3Xgoxrxx79ecf1KRFNm3d+5Ik6EDjSbkIoMLLGtdEi7119tvveejTFXEEMzEcwAQAAI73rga+Uz8ebpGNf1TnODhFINPYxqqQJHnpHTRQjJtKpv+mYqjNfTJe4EXS0g4kj7SaMWJhS43qQ0f3spnFwXAkmAABgpLELYMb7f+elstZxkl0xLnzh6t6mbHRlCkd2OUkIUl3Prt4aFbFhlEARTBx1bWrEW0FA9/+N6yMtbgQTG6ZUrIOGYjRDaWqN6rgJoQgciGACAABGSge+ej7e5jiGE1l0MmHEuy88X17zvmTUyaeee728pnld76QnNOiOFtgYTBydznGjQ79hNMKRMGBTu0FhyHU71DgynWNUIAKHJZgAAIAJ7nho2jSHBAAJNqqah9KMjDh0GNF2+EVBr4cN7XCi6OAfnQJyLXC4OZioQoE6mGiHG28ZF0xMqnH92OZzrD9Xd+QFHBOCCQAAmGDs7hxtWRDzY0+9etBFMXOu37j0+sHWjdgkIyUWWwy0Gyps+//aLsHElvBgm51qtK/nWihzdJQHHA+CCQAAmOjsp6+Uz8lDJaC47+LLq6dferOsP0WmZjx++Tvr4CPe8+iVRUdGtGVNiUV3KNkWRFRBwPpn7bUZNq3VcH1Exo1RCZ1AY5Ida1yfvvHhTbt0wDEhmAAAgInSyX7buS+Xz8pTJEDIOhRNqDBUpmUkgKhqHiePX/5ueR/n98Tq7JHdJzojGpp2N40k6IYO14/pBBHX1m9oBxhvtbup/pEdNX4kQcdN17DF1hrXz13utnE9LOlc/w1HQhdYhmACAAB2kM529azMzTKFo7p/+/FWh7yt6oBfCxmuvb/u/F8PAt76WT1qoX1cu93NwcfReoPXl2jrrdEXTDRrZmw4p2CCY0IwAQAAO9p1SsdJlykcmWJS3TsAwQQAAOwoUzrS+a6emU+77F6y6LoSwLEnmAAAgBlkRMCc603c6nIvLjx7tbxXAG2CCQAAmMmnnnu9fG4+bTJK4uvf/n55jwC6BBMAADCjey8Of54+aTKd5XA7bwAnhWACAABmlhED1fPzSZVpG+eefMVaEsAkggkAAJhZOujZHrN6hj5p7nnsxdGBxNde+5vy58DpJJgAAIA9OMnhREZIJJCwjgQwB8EEAADsScKJk7TmRNaQMGUDmJtgAgAA9uzzL/75LbuVaMKIhCvZcaT6bAC7EkwAAMABZJRBRhvcCgFFM1XDDhvAIQgmAADggG6FgCIjPKprB9gHwQQAACwk0yPOfvpK+ax9CJmmkfNfePaqMAJYjGACAACOgQQDmTqR0RR3PHT5hrlGViSESL3UTyBy6VvfK68D4NAEEwAAcMwltGgkVEi40MjClO3/N5r2AgjguBNMAAAAAIsRTAAAAACLEUwAAAAAixFMAAAAAIsRTAAAAACLEUwAAAAAixFMAAAAAIsRTAAAAACLEUwAAAAAixFMAAAAAIsRTAAAAACLEUwAAAAAixFMAAAAAIsRTAAAAACLEUwAAAAAixFMAAAAAIsRTAAAAACLEUwAAAAAixFMAAAAAIsRTAAAAACLEUwAAAAAixFMAAAAAIsRTAAAAACLEUwAAAAAixFMAAAAAIsRTAAAAACLEUwAAAAAixFMAAAAAIsRTAAAAACLEUwAAAAAixFMAAAAAIsRTAAAAACLEUwAAAAAixFMAAAAAIsRTAAAAACLEUwAAAAAixFMAAAAAIsRTAAAAACLEUwAAAAAixFMAAAAAIsRTAAAAACLEUwAAAAAixFMAAAAAIsRTAAAAACLEUwAAAAAixFMAAAAAIsRTAAAAACLEUwAAAAAixFMAAAAAIsRTAAAAACLEUwAAAAAixFMAAAAAIs5Ekw8882/WP3qM388yA/+7p8BAAAAJvv7f/yX1Wq1Wv0rlUztxdqZQFkAAAAASUVORK5CYII= + iVBORw0KGgoAAAANSUhEUgAABCYAAACmCAYAAAAGVI70AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwwAADsMBx2+oZAAAF/FJREFUeF7t3d/vJWV9B/D9C/QfkDtr0sKtGLgTbxYTsIkJGOAWTBsSo7vYGqgmXZKW7NpCobUJGtBu24SwwMVSIe42FVk0q2yFKChrShOhYmtbE6vWGnOaz9l9dofP/Dgzc+ac+f54neQV2O8888wzc74X87y/z48DCx8fHx8fHx8fHx8fHx8fH5+ZPgfK/zz10o8Xn3rqe7387Be/BgAAABjtl7/6zduDiY/+3cuLA3c+3cv5f/ufxVv/+b8AAAAAo/z3z/5PMAEAAADMQzABAAAAzEYwAQAAAMxGMAEAAADMRjABAAAAzEYwAQAAAMxGMAEAAADMRjABAAAAzEYwAQAAAMxGMAEAAADMRjABAAAAzEYwAQAAAMxGMAEAAADMRjABAAAAzEYwAQAAAMxGMAEAAADMRjABAAAAzEYwAQAAAMxGMAEAAADMRjABAAAAzEYwAQAAAMxGMAEAAADMRjABAAAAzEYwAQAAAMxGMAEAAADMRjABAABc8uS5txZHnj6/uOvEq5fEv+PnuSzAFAQTAACwT33zBz9dBg4RPlz/0Nna+3526PFXanUArEswAQAA+1QEDfkdv8tVR55bvPbmz2v1AKxDMAEAAPvU7cf7v/sXN3/+XK0egHUIJgAAYJ+KERD5Hb+PCDRyXQBjCSYAAGAfivUl8vv9EA+cer1WJ8AYggkAANiHjpw8X3u/H+KKe07X6gQYQzABAAD70NhpHFURbuR6AYYSTAAAwD6U3+3HeOfhZ5dTQnLdAEMIJgAAYJ85/d2f1N7tx4qRF7l+gCEEEwAAsAPF4pLXHjuz3J7zrhOv1o6v47U3f157t1+HLUSBdQgmAABgB4mpEdHRz+/eU0+ZuOnhF2vXWIdwAhhLMAEAADvEHcdfXq7bkN+7w/UPna2VX0cEHe841HytsQ49/krtOgCrCCYAAGBmMbWizy4ZU++Ccfvx/u/+fcUUlHwdgC6CCQAAmNETL/5occU9p2vv2m1ivYkIMnI9Y8S1Y5RDcc3RM7XrjSGcAIYQTAAAwEwiZMjv2H1tYtpETO8oYUWsQbHOVA/hBNCXYAIAALYsRjzEjhv5/XqIGGUx1ciJLhFU5Gv39eiZN2r1AWSCCQAA2KLT3/1Jr/Uk+tjEqIkmEU6M2cUjFvLcRngC7G6CCQAA2JIIJdp23Rgr6szX2ZQx4USck+sBqBJMAADAFmwilAjb7viPCSdixEWuB6AQTAAAwIZtKpQIc0yXGBpORButN3HZ89/49uKZU883Ov+v/14rzzjf/s6/1J5vEcdy+TGe+Uq97hDfcbXcn9z32cUNN9zY6J+e/1at3ibxu3HiqS8v7jt2/+Ljhz65uOXW2y6Jn33xbx6rnbNbCCYAAGCDNhlKFFPsgPH9N/u/20cQ8q67+29xWlz/0NlaXfvRLbfctrjyd367UXR0c3nGue/o/bXnW8SxXH6MXG8R33G13CcO/0GtTPHlZ5+r1ZtF6PC+q6+undt1zd1EMAEAABuyjVAi3H785dq1+zj8+KvLaRaHT7yybGc+3uXIyfO1dvSR65nS3/79E8vOWZM/ve/PauXnIpjYjr0STEQokc9pMtU9zUEwAQAAGxCjCrYRSoQICfL1V/nmD35aqyd+lsu1ifvL5/exyfUm/vz+v6p11oo77vj9Wvm5CCa2Yy8EEzHlJJdvM9U9zUEwAQAAE4tO+1Rbgq5y5b1fHbTGREzZKCMkcl1X3fvcoCkdBx88W6tjlU1O5xBMULUXgok/+vSRWvk2U93THAQTAAAwsWuPnam9O29CBANDQolYi+KKe7rXhojpHfm8NlFfPr+PCG3uOP7yoBEafQgmqNpGMJGnDBURKFTLjQ0mrnv/B2rli9s/+nsXFt+8aDcvnCqYAACACcV6D/m9eWqx8GTfKRFdIyTa9F1MM0KRdxzqX282ZgpKF8EEVdsIJvoaG0zkssXV733vrg4iMsEEAABMZOwIgiFi6kYsqpmv3SRGPwwJJKrivGs/e6ZWZzZ069Cqa46urn8IwQRVezmYyFNFdjvBBAAATGDTO3DEKIm+IxlOfec/Vk7Z6CvXncV953P6iikdT557q1bnWIIJqnZ7MPH8N75dK1sIJioEEwAAsPnFLmMtiXzNNrFuw5QBySPP/7B2jSxGceTzhsj1jbWNYCJ2SfjLv/7Csr5bbr1t8b6rr17Wf+OHfnf5748f+uTixFNfrp1X1TeYePzJf1jWF3Vf6pBevMaYACPaft+x+5d1hFJnafunP3PvsjOcz6uKrSujjiy3J8pFO8t14jmNaXuULW2+7rrr3vYcQnwPcbyp3X2DiepzKd9nqXvVd5nrvdS+EYtflnYU8axy2SKexarvoKr8LsV9ld+n8p3EfX7x+GOzTg0RTAAAwJo2ta5EBBKPnnmj9yKRsZ5E7KyR61nHzQ+fq10nW/f+c31jbTKYiE5bV0cxi85fU2c5rAom4rxqGNEm7qlPZzI6vNUgYpWuetvaXjr60f5qgNAmnmXbNca0OcRikNU6+gQTXWWK+C7a2prLFmOCiXh2+dgQTaNAIiAqYcsqUS7K5zq2QTABAABrWGcqQ5tYUDICiXytVdYNCJrE6It8nSwW4sznDdF3Ic9VNhVMRFDQp7OdRUevKZxo69yHhz73hd4dydDVaQ5DOqZVcb8RDuT62toeneL4q3z+eZcIHnL9IeoZ0+bcMe8KHeLYJz4xLGhqes65XDF3MBFtjd/5XKaPCI3yfW6aYAIAANYw9RSOmBYxZAvQIkZV5Lqm0mdti3V25zj0+Cu1+sbYRDARnfMxneSiKZxo69yP1XZvQ4OCLNqeO+NtbY/tMcc8pwhipnreQ4KJMdeIICM/41ymmDOYiO+sz4ibLvlZbppgAgAARpp6F46xoUS49tgLtfqmEnXn62Wxw0Y+r69YqDPXN8Ymgokbb/xQra7iuvd/YNkhL399jy0cc5mQRwa0de7XkdcXiM5pV+c77ivaHWIKRD5e5A5qW9u7rtUlRmZU64+gIpepiutXVY/lZ9AVTIyVR5Hk48WcwUTXfcfvaPyulu++6/c73+smCSYAAGCkqXa+CDHiYGwoEbtw5Pqm1Gc6R6yHkc8bos+ojFWmDiZiGkSup2j66/nyL9UtHb0YvVDK5Q51kwg9opO+XPzx6P3Lf+cyVTn86JqmkEcphBjV0RasVEdN9Gl7iLqibFudVdVAoa3++HkevVHE+XG/6wQTUf+qZxzys8vHq/VVy/UJJuL+4h6KrpAmfs+qZUMECVFHLls9p+kZtv2uNP2Ob4pgAgAARlh3XYWqCCVirYp8jb5igcpc59Qi/MjXrTpy8nztnCGmGDUxdTDRFjJEZ7upgxfapk9UF2Zs63wXTR3CrtCjqP6FOx8roo5cd9HWEa52xle1PeqvTl2Jdrd1fJvqbwsHxnx/q4KJ+B6rgVFoewZF/m7y8WJMMJF1jaDI9fdpf77XqrYAKZfbFMEEAACMcNPDL9bej8dad/HHddZ36OuJb3W3cYpFQNcdNTFlMNH1l+fcOc2aOnkx1aEc7+rcR8c811dE8JDLV5UdFdrCkWqZJhEo5PJhSKjSNPw/nmXTMymq00W66o9RIbF9Z1solK0KJto66l1TW3IgkI+3ldtWMNH1/HLZPuflUSibIpgAAIARpprGsW5nfNPTOIpVwURYNyBZd9TElMFEZ6fw1tsW9x27v1XbDh6lQ93WCQx5qkDW1WmO9S6iTFeHPHZcyO2tyuWLcv2utncFNl2jJqrBRFfbq2Jxx09/5t5lUJGv1aeurgCoK9jJgUA+3lZuW8FEWwAUv5P5u65q25p11e/jVAQTAAAw0FQ7YEyxG8Ufn3ytVu8m9AkmptiudJ3RI1MGE12d2rHKX5+7Over/kLd1a7SWY2AIh9bV7l+V9vbRiCsanc1mIgRF22d6zbR6W66dtc1u0KUIYFAPt5WbhvBRNcon7Gq380mCSYAAGCgKdaXiKkgud4xDj/+aq3uTegTTDx65o3aeUPFIpq53r4EExc6q131j7Vu27sWEs2d366FOLvkv+53Pat8zXz9XL7IgUA+3lZuG8FEV/mxmq6zCYIJAAAYaN2RAet0vrOdFExMNZIk19vXTg8mSmd4bOd+VbvKWhBdZcbqE0xUF73MujrNTSFB/PU/Rn4MDSiqbeh6Dk3XrMrli9xRz8fbym0jmOhqz1ht15maYAIAAAZaZ32JK+/96uhtQZvspKkcIZ83xtjpHFMGE12dwth5Ijq2Q/Xp3Jd1Itp0nVs6210d8ggvcrv6KItadl0/t7Wq63mWdreJc6PMql1JQnWKRtdzWHXNXL7IHfV8vK3ctoKJriAnf6d9dC2WOiXBBAAADLDOdIV1twVtEoFBvs4mbDOYGLv2xpTBRMh1FLHwYi47RFfnPnbvaNt1YtUaAmWdha7FG1cFH6t0tT2XrerqZK8KCaoiIOlaALTaYd+PwUTXs2naMWWnEEwAAMAA62wTOrbDvcq6u2H0Ebt/5Os2edfd40eTFGOfU1cw8ZGP3Lrs6PXx3Av/vKyvayeJMvphjK7OfYidM/I5EUpEIJLLVlU7nrHrRD4eIvjomnKxSlfbc9mqrk72qpAg69o2db8HE11reYwJ57ZFMAEAAANcc/RM7b24j+iw57qmcvPD52rXm1rfERNjn09VrOGR6+2jK5gY4sMfvmlZX1fHMDr4sc1i1+iG2MpyubVo6gR3de6Lsr3jM6eeX/63bQvSoqwvUXR1yqPtXzzePkQ/Ov5xPK6ZA5iutud6qrqeZfX5RMc6nllcv+3Zdo0I2e/BROiazhHhRNfIiQitYhvW+B3JxzZJMAEAAANcdeS52ntxHw+cer1W11SmWnSyycGHzi5Die+/2e/df4pgIurI9fYxdTARuobGF9GRrsojG3InuKtzP1YOEMKqNRmi85nbngOQXG9X2/P1q7o62dXnk8OEeJa5jfn8qupUlVxX2zWb5PJFDgTy8bZy2wwmuoKbos9zzfVukmACAAAGyO/EfcRUi1zP1DaxO0csrJmvs8oUwUTI9faxiWBiOYViRQd/ldwJbuvcx3W6/trdpm3diGj7mPqq5g4mhoh7rY4G6KorfydZLl/kQCAfbyu3zWAixO9EPmeoXOcmCSYAAKCn2C0ivxP3EetS5Lo2IXb8yNceI4KUvlM3sqmCiTGLhG4imAjRwe9ab2KV3Alu69zHz7s6o00izGib8hCio75OsLLtYGKdDnXeQWI/BxPhoc99Ya1gKte3SYIJAADoKTrL+Z24j9jJI9e1CTGlY4qFMB95/oe1uvuaKpgY88w2FUwUMUS+bVHJLrnD3Na5L53N6JD2uU7bSIkm0REf2kmN8nmhzLa2h3zNqq5OdjUk6Kq/TTyr3M5yz7lsse1g4tDhP6yVKZ75ytdq1w9dzyzX3yaCqTGhWoRZua5NEkwAAEBPsVtEfifuI9ezSbEWxDojJ9ZdC+Odh9cPRsLYnTm2ITrB0bGNzmEOEOJnIUKDCDKaRjNEUBHnZznAiH/HGhflGhEUlLq7FjDsEm2K86OealBR6g7RljxSomhr+6qOfrQ3ly+q14rnFdcobWx6xtFpLu1sCiSKqDdfq+maTXL5In9Hm9T1zIa2I+qKERTx+5RH0MTzjecZAUaUGfu7tQ7BBAAA9DRmNMDYhRzXEeFE7GyR21J1xd3/eGkNiWuPvbAMM/puCdpmykU4j5w8X6sf2JsEEwAA0NOYYGLs1pdTiKAgwocIHorYWjRP1Vg3kChitEW+/7FiPY9cP7A3CSYAAKCngw+erb0Tr7Lu1Ijd5Ip7Ttfuf4xt7GIC7ByCCQAA6GnMGhP75S//MfUi3/tY+ynMAQQTAADQ25jtQvdDMDHlFI451uQA5iWYAACAAfI78SqvvfnzWh17yZShRIgtWfM1gL1NMAEAAAMMXQAzn7+XTB1K3PTwi7VrAHufYAIAAAZYtQ1nls/fK8ZMa1kldhHJ19k9Xlrc+VsHFgc++FjDMaCLYAIAAAYYushjPn+3e/LcW4u7Trxau891bWS0xJduWBw4cODtqsHB1w8v3n3gPYs7v95w7mA7I5h45IMHFgd+6/Diaw3Hlpb3fGBx8EsNx2AmggkAABhg6EiBvbRmQqyXke9vKlM/p6997D2LA7XQ4bHFwT0eTJQwpi14WBlcwAwEEwAAMMDQYCK2GM117EZx31fcc7p2f1N4192na9dbz2OLgx2d80v2YjDR2Y4Lz+XdH3up4RjMRzABAAAD5ffiLu88/Oyu3pkjAolrjw1b8HOo6adxrO6AL0cOpGkeF4KMC+fWf55cnBJRyrz7Y481BwK1cu1tajWwjgujRW5YPJKPLUdTTBXEwHQEEwAAMNCV93619m7cJTr2uY6dbhuBRLGJUSUleGgMFYqGERPRqX/bOU2d+YbpEpeCjmowUSu3OjCpGVNHyzoSpnGwUwkmAABgoKELYIabP3+uVs9OE7tiHHn6/MambGQxhSN2OYkQJLdlCpdHRbSMEmgIJuouTI24HATkfxcXR1pcCiZaplQsg4aG0QyNxtbRdF6PQANmIpgAAICBogOf34372InhRCw6GWHEVUeeq7V3k2LUyQOnXq+1Z3oXO+kRGuTRAq3BRH06x6UOfctohFoY0Fau9ZoN1qijNp1jZZgB8xFMAADACNccHTfNIQKACDZyfdtURkZsO4yo2sT0jW4Xw4ZqONHQwa9PAUkjJBrOqZbLwUQ13Lis6fwG69SRQo3lfeWRF7BDCCYAAGCEobtzVMWCmHedeHWri2LGtf7i9OtbWzeiTYyU2OZ9v00OFVb9e2mdYKKp3ABr1VFtT89dSmAmggkAABjp4INna+/IQ0RAccfxlxdPnnurVvdYMTXj0TM/XAYf4fqHzs46MqIq1pSYLZQIuaO/6t+XflZdm6FtrYbmNSbq5YZYs46L0zfuzNM6YIcRTAAAwEjRyX7HoWdr78ljRYAQ61CUUKGvmJYRAUSub6d59MwbtWe4GY8tDub1JPKIhlKuc8eLy+tTVMOBC+s3VAOMyjoWnbtyXAw6hkypWFnHxWvX7jdcXiujMdyohS4wD8EEAACsITrb+T2ZupjCkZ/d5tQXr2zrnF8IGS4cX3b+LwYBl3/WPGqhel61XG0dh1TfyrUhmnTW0RVMlDUzWq4pmGCHEEwAAMCa1p3SsdfFFI6YYpKfG0AQTAAAwJpiSkd0vvP7Mk8vdy+ZdV0JYMcTTAAAwARiRMCU603sdvEsjpw8X3tOAJlgAgAAJvLAqddr78z7UYyS+OYPflp7PgBNBBMAADCh24/3f5/ea2I6y/Z23gD2CsEEAABMLEYM5HfnvSymbRx6/BVrSQCjCCYAAGBi0UGP7THz+/NedNPDLw4OJF547b9qPwP2L8EEAABswF4OJ2KERAQS1pEApiCYAACADYlwYi+tORFrSJiyAUxNMAEAABv2xIs/2rVbiUYYEeFK7DiS7wtgCoIJAADYghhlEKMNdkNAUaZq2GED2AbBBAAAbNFuCChihEduN8CmCCYAAGAmMT3i4INna+/Z2xLTNOL6R06eF0YAsxFMAADADhDBQEydiNEU1xw9c8lUIysihIj6ov4IRE5/9ye1NgDMQTABAAA7XIQWRYQKES4UsTBl9d9FKS+AAHY6wQQAAAAwG8EEAAAAMBvBBAAAADAbwQQAAAAwG8EEAAAAMBvBBAAAADAbwQQAAAAwG8EEAAAAMBvBBAAAADAbwQQAAAAwG8EEAAAAMBvBBAAAADAbwQQAAAAwG8EEAAAAMBvBBAAAADAbwQQAAAAwG8EEAAAAMBvBBAAAADAbwQQAAAAwG8EEAAAAMBvBBAAAADAbwQQAAAAwG8EEAAAAMBvBBAAAADAbwQQAAAAwG8EEAAAAMBvBBAAAADAbwQQAAAAwG8EEAAAAMBvBBAAAADAbwQQAAAAwG8EEAAAAMBvBBAAAADAbwQQAAAAwG8EEAAAAMBvBBAAAADAbwQQAAAAwG8EEAAAAMBvBBAAAADAbwQQAAAAwG8EEAAAAMBvBBAAAADAbwQQAAAAwG8EEAAAAMBvBBAAAADAbwQQAAAAwG8EEAAAAMBvBBAAAADAbwQQAAAAwG8EEAAAAMBvBBAAAADAbwQQAAAAwm1ow8dRLP1586qnv9fKzX/waAAAAYLRf/uo3yzzi/wGVTO3FlkaqbwAAAABJRU5ErkJggg== \ No newline at end of file diff --git a/ReportImp/LebenshilfeStadeMID/Service/CustomSaveInterceptor.cs b/ReportImp/LebenshilfeStadeMID/Service/CustomSaveInterceptor.cs index c7844e0a3..4e0344935 100644 --- a/ReportImp/LebenshilfeStadeMID/Service/CustomSaveInterceptor.cs +++ b/ReportImp/LebenshilfeStadeMID/Service/CustomSaveInterceptor.cs @@ -125,6 +125,8 @@ namespace LebenshilfeStadeMID.Service verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("verfügungszeit einfache schulassistenz(jas)")); else if (serviceRecord.ServiceDescription.Name.ToLower().Contains("qualifizierte schulassistenz (jas)") || serviceRecord.ServiceDescription.Name.ToLower().Contains("kind krank qualifiziert (jas)")|| serviceRecord.ServiceDescription.Name.ToLower().Contains("kind krank (jas)")) verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("verfügungszeit fachlich (jas)")); + else if (serviceRecord.ServiceDescription.Name.ToLower().Contains("75%-fachliche schulassistenz jas") || serviceRecord.ServiceDescription.Name.ToLower().Contains("75%-kind krank qualifiziert jas") ) + verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("75%-verfügungszeit fachlich jas")); return verfuegungszeit; } From 821a068ba415cd3c68cabf81cb92a09eaf31bbb4 Mon Sep 17 00:00:00 2001 From: HirschleM Date: Fri, 21 Mar 2025 11:52:57 +0100 Subject: [PATCH 2/3] MH: LH Stade MID Datev Export --- .../Export/CustomDataExporter.cs | 29 ++ .../Export/DatevExporter.cs | 391 ++++++++++++++++++ .../LebenshilfeStadeMID.csproj | 2 + 3 files changed, 422 insertions(+) create mode 100644 ReportImp/LebenshilfeStadeMID/Export/CustomDataExporter.cs create mode 100644 ReportImp/LebenshilfeStadeMID/Export/DatevExporter.cs diff --git a/ReportImp/LebenshilfeStadeMID/Export/CustomDataExporter.cs b/ReportImp/LebenshilfeStadeMID/Export/CustomDataExporter.cs new file mode 100644 index 000000000..5c0a8c2c3 --- /dev/null +++ b/ReportImp/LebenshilfeStadeMID/Export/CustomDataExporter.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using BeWo.Service.Core; +using BeWo.Service.Plugins; +using BS.Shared.Core; +using BS.Shared.DataContracts; +using Utils = BS.Shared.Core.Utils; + +namespace LebenshilfeStadeMID.Export +{ + public class CustomDataExporter : DataExporter + { + public override string CreateExportString(string pFileID, string[] pHeaderCaption, string[][] pContent) + { + + if (pHeaderCaption != null && pHeaderCaption.Length > 0 && pHeaderCaption[0].Contains("Sage")) + { + return DiamantExporter.CreateExportString(pHeaderCaption, pContent); + } + return base.CreateExportString(pFileID, pHeaderCaption, pContent); + + } + + public override QueryDC CreateQuery(QueryDC query) + { + return DatevExporter.CreateQuery(query); + } + } +} diff --git a/ReportImp/LebenshilfeStadeMID/Export/DatevExporter.cs b/ReportImp/LebenshilfeStadeMID/Export/DatevExporter.cs new file mode 100644 index 000000000..7da7d9cab --- /dev/null +++ b/ReportImp/LebenshilfeStadeMID/Export/DatevExporter.cs @@ -0,0 +1,391 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.Text; +using BeWo.Data.Access; +using BeWo.Data.Entities; +using BeWo.Service.DCEntityMapper; +using BS.Shared; +using BS.Shared.DataContracts; +using BS.Shared.Extensions; + +namespace LebenshilfeStadeMID.Export +{ + public class DatevExporter + { + + public static QueryDC CreateQuery(QueryDC query) + { + DateTime dt = DateTime.Now; + DateTime.TryParse(query.Parameter[0].Value.ToString(), out dt); + + query.FileName = String.Format("Datev Export {0:yyyyMM}.csv", dt); + query.QueryResult = GetAbrechnungenString(dt); + + + return query; + } + + //public static string CreateExportString(string[] pHeaderCaption, string[][] pContent) + //{ + // if (pHeaderCaption != null && pHeaderCaption.Length > 1 && pHeaderCaption[0].Contains("DatevListe")) + // { + // DateTime dt = DateTime.Now; + + // DateTime.TryParse(pHeaderCaption[1], out dt); + + // return GetAbrechnungenString(dt); + + // } + + // return null; + //} + + + + public static String GetAbrechnungenString(DateTime date) + { + StringBuilder sb = new StringBuilder(); + sb.AppendLine("Umsatz (ohne Soll/Haben-Kz);Soll/Haben-Kennzeichen;WKZ Umsatz;Kurs;Basis-Umsatz;WKZ Basis-Umsatz;Konto;Gegenkonto (ohne BU-Schlüssel);BU-Schlüssel;Belegdatum;Belegfeld 1;Belegfeld 2;Skonto;Buchungstext;Postensperre;Diverse Adressnummer;Geschäftspartnerbank;Sachverhalt;Zinssperre;Beleglink;Beleginfo - Art 1;Beleginfo - Inhalt 1;Beleginfo - Art 2;Beleginfo - Inhalt 2;Beleginfo - Art 3;Beleginfo - Inhalt 3;Beleginfo - Art 4;Beleginfo - Inhalt 4;Beleginfo - Art 5;Beleginfo - Inhalt 5;Beleginfo - Art 6;Beleginfo - Inhalt 6;Beleginfo - Art 7;Beleginfo - Inhalt 7;Beleginfo - Art 8;Beleginfo - Inhalt 8;KOST1 - Kostenstelle;KOST2 - Kostenstelle;Festschreibung"); + //Herr Zenker + + + var s = GetMonatlicheRechnungenString(date); + if (!String.IsNullOrWhiteSpace(s)) + { + sb.Append(s); + } + + + return sb.ToString(); + } + + public static String GetMonatlicheRechnungenString(DateTime date) + { + //"Umsatz (ohne Soll/Haben-Kz);Soll/Haben-Kennzeichen;WKZ Umsatz;Kurs;Basis-Umsatz;WKZ Basis-Umsatz;Konto;Gegenkonto (ohne BU-Schlüssel);BU-Schlüssel;Belegdatum;Belegfeld 1;Belegfeld 2;Skonto;Buchungstext;Postensperre;Diverse Adressnummer;Geschäftspartnerbank;Sachverhalt;Zinssperre;Beleglink;Beleginfo - Art 1;Beleginfo - Inhalt 1;Beleginfo - Art 2;Beleginfo - Inhalt 2;Beleginfo - Art 3;Beleginfo - Inhalt 3;Beleginfo - Art 4;Beleginfo - Inhalt 4;Beleginfo - Art 5;Beleginfo - Inhalt 5;Beleginfo - Art 6;Beleginfo - Inhalt 6;Beleginfo - Art 7;Beleginfo - Inhalt 7;Beleginfo - Art 8;Beleginfo - Inhalt 8;KOST1 - Kostenstelle;KOST2 - Kostenstelle;Festschreibung" + //100,18;S;;;;;48400;;;3101;;;;;;;;;;;;;;;;;;;;;;;;;;;50;;0 + //100,18;S;;;;;48400;ggk;;3101;rgnummer;;;buchungstext;;;;;;;;;;;;;;;;;;;;;;;50;;0 + var sql = GetMonatlicheRechnungenSql(date); + + /* +sip.Claim, +c.DebitorNumber, + ib.InvoiceDate, + ib.invoicenumber + c.CostCenter, +c2s.Oid + */ + var dt = ExecuteQuery(sql, date); + + + StringBuilder sb = new StringBuilder(); + foreach (DataRow row in dt.Rows) + { + if (sb.Length > 0) + { + sb.AppendLine(); + } + sb.Append(String.Format("{0:0.00}", row[0])); + sb.Append(";S;;;;;"); + sb.Append(String.Format("{0:0.00}", row[1])); + sb.Append(";"); + sb.Append("4002"); // Erlöskonto + sb.Append(";;"); + + DateTime lastDate = new DateTime(date.Year, date.Month, 1); + lastDate = lastDate.AddMonths(1).AddDays(-1); + + sb.Append(String.Format("{0:ddMM}", lastDate)); + sb.Append(";"); + sb.Append(String.Format("{0}", row[3])); + sb.Append(";;;"); + + String buchungstext = ""; + + /* + * + * +Name, Vorname Rechnungsadressat wenn kein Name, Vorname vorhanden, dann das Feld Firma ausgeben - plus Name, Vorname Kunde - +plus Datum aus Leistung Format mmjj + +wenn Re-Adressat gleich Kunde, dann nur den Name, Vorname des Kunden ausgeben." +Bsp. LK Stade - Mustermann, Max - 11.2019 + + */ + long? c2sOid = (long?)row[5]; + + if (c2sOid.HasValue) + { + var c2s = DAOFactory.GenericDAO.LoadByID(c2sOid.Value); + + var c = c2s.SupportConcept.Customer; + + String firma = c2s.CostBearer.Organisation.Name; + + buchungstext = String.Format("{0} - {1}, {2} - {3:MM.yyyy}", firma, c.Person.LastName, c.Person.FirstName, date); + } + //else + //{ + // int test = 0; + //} + + + + sb.Append(buchungstext); + + sb.Append(";;;;;;;;;;;;;;;;;;;;;;;639;;0"); + } + + return sb.ToString(); + } + + private static Dictionary CreateHourlyRateDict(List catOids, DateTime date) + { + Dictionary dict = new Dictionary(); + + foreach (var oid in catOids) + { + var cat = DAOFactory.GenericDAO.LoadByID(oid); + + var crps = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(cat.CostRatePeriods); + + var cp = crps.GetCostRatePeriodForDate(CostRatePeriodType.AmountOfMoney, date); + + if (cp != null && cp.CostRateValue.HasValue) + { + dict.Add(oid, cp.CostRateValue.Value); + } + } + + return dict; + } + + private static String GetMonatlicheRechnungenSql(DateTime date) + { + + String sql = @" + select + sip.Claim, +c.DebitorNumber, + ib.InvoiceDate, + ib.invoicenumber, + c.CostCenter, +c2s.Oid + 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 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; + } + +// private static String GetMonatlicheAbrechnungStringForCatsSql(DateTime date, IList includeCatOids, IList excludeOids, bool holeEinzel, bool holeGruppen) +// { + +// String sql = @" +//SELECT distinct +//c.`DebitorNumber` AS 'Debitoren Nr.', +//c.`CostCenter` AS 'Kostenstelle', +//CONCAT(p.`LastName`, ', ', p.`FirstName`) as Name, +//org.`Name` as 'Kostentraeger', +//ROUND(sr.`GeleisteteFLM` / 60, 2) as 'FLS', +// IF(crpRateFactor.`CostRateValue` is null, ROUND((sr.`GeleisteteFLM` / 60) * crpHourlyRate.`CostRateValue`, 2),ROUND(ROUND((sr.`GeleisteteFLM` / 60), 2) * crpHourlyRate.`CostRateValue` * ((100 + crpRateFactor.`CostRateValue`)/100), 2)) AS 'Forderung', +//':Monat_MM' AS 'Belegnr.', +//ROUND(crpHourlyRate.`CostRateValue`,2) as 'Stundensatz', ROUND(crpRateFactor.`CostRateValue`,2) as 'Pauschaler Faktor in %' +//FROM `supportconcept` sc +//INNER JOIN `costbearer2supportconcept` cb2sc ON sc.`Oid` = cb2sc.`SupportConceptOid` +//INNER JOIN `costbearer` cb ON cb2sc.`CostBearerOid` = cb.`Oid` +//INNER JOIN +// (SELECT crp.`ObjectOid`, crp.costratetype, crp.`CostRateValue`, If(crp.Enddate is null, '9999-01-01', crp.enddate) as aenddatum, crptemp.enddatum FROM `costrateperiod` crp +// inner join (SELECT crpi.`ObjectOid`, Min(If(crpi.Enddate is null, '9999-01-01', crpi.enddate)) as enddatum FROM `costrateperiod` crpi +// WHERE crpi.`ObjectTid` = 22 AND crpi.`CostRateType` = 0 AND (crpi.`EndDate` is null or crpi.`EndDate` > ':Monat_Start') +// group by crpi.objectoid) as crptemp on crptemp.objectoid = crp.objectoid +// WHERE crp.`ObjectTid` = 22 and crp.costratetype = 0 +// having aenddatum = crptemp.enddatum) +// AS crpHourlyRate ON crpHourlyRate.`ObjectOid` = cb.`Oid` +//LEFT JOIN +// (SELECT crp.`ObjectOid`, crp.costratetype, crp.`CostRateValue`, If(crp.Enddate is null, '9999-01-01', crp.enddate) as aenddatum, crptemp.enddatum FROM `costrateperiod` crp +// inner join (SELECT crpi.`ObjectOid`, Min(If(crpi.Enddate is null, '9999-01-01', crpi.enddate)) as enddatum FROM `costrateperiod` crpi +// WHERE crpi.`ObjectTid` = 22 AND crpi.`CostRateType` = 2 AND (crpi.`EndDate` is null or crpi.`EndDate` > ':Monat_Start') +// group by crpi.objectoid) as crptemp on crptemp.objectoid = crp.objectoid +// WHERE crp.`ObjectTid` = 22 and crp.costratetype = 2 +// having aenddatum = crptemp.enddatum) +// AS crpRateFactor ON crpRateFactor.`ObjectOid` = cb.`Oid` +//INNER JOIN `organisation` org ON org.`CostBearerOid` = cb.`Oid` +//INNER JOIN `customer` c ON sc.`CustomerOid` = c.`Oid` +//INNER JOIN `person` p on c.`PersonOid` = p.`Oid` +//INNER JOIN +// (SELECT +// v2o.`ObjectOid`, +// v2o.`ValueListEntryOid` +// FROM `valuelistentry2object` v2o +// WHERE v2o.`ValueListEntryOid` in (12,13,14) ) as vle2o ON vle2o.`ObjectOid` = c.`Oid` +//INNER JOIN `valuelistentry` vle on vle.`Oid` = vle2o.`ValueListEntryOid` +//INNER JOIN +// (SELECT sr2.`CostBearer2SupportConceptOid`, SUM(sr2.`roundedduration` / IF(sr2.`GroupEmployeeCount` is null, 1, sr2.`GroupEmployeeCount`)) AS GeleisteteFLM FROM `servicerecord` sr2 +// INNER JOIN `servicedescription` sd ON sr2.`ServiceDescriptionOid` = sd.`Oid` +// INNER JOIN `servicecategory` sc ON sd.`ServiceCategoryOid` = sc.`Oid` +// WHERE sr2.`StartDate` >= ':Monat_Start' AND sr2.`StartDate` < ':Monat_End' AND sc.`Billable` = 1:IncludeCatOidList:ExcludeCatOidList GROUP BY sr2.`CostBearer2SupportConceptOid`) +// AS sr ON sr.`CostBearer2SupportConceptOid` = cb2sc.`Oid` +//WHERE c.`IsActive` <> 0 AND sc.`IsActive` <> 0 and +//((If (cb2sc.`ApprovedStartDate` is null, cb2sc.`RequestedStartDate`, cb2sc.`ApprovedStartDate`) < ':Monat_End' and +//If (cb2sc.`ApprovedEndDate` is null, cb2sc.`RequestedEndDate`, cb2sc.`ApprovedEndDate`) >= ':Monat_Start' +//and GeleisteteFLM is null) or GeleisteteFLM is not null) +//ORDER BY p.`LastName` +//"; + +//String sqlalt = @" +// SELECT +//CONCAT(p.Lastname, ', ', p.Firstname), +//c.DebitorNumber as 'DebKonto', +//DATE_FORMAT(DATE_ADD(':Monat_End',INTERVAL -1 DAY), '%d.%m.%Y') as 'Datum', +//c.`CostCenter` AS 'Kst', +//ROUND(sr.`GeleisteteFLM` / 60, 2) as 'Text', +//IF(crpRateFactor.`CostRateValue` is null, +// 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 ), 2), +// ROUND(ROUND((sr.`GeleisteteFLM` / 60) * ((100 + crpRateFactor.`CostRateValue`)/100), 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 ), 2)) AS 'Betrag', +// '', +// '', +// '', +//sr.`GeleisteteFLM`, +//sr.CatOid +//FROM `supportconcept` sc +//INNER JOIN `costbearer2supportconcept` cb2sc ON sc.`Oid` = cb2sc.`SupportConceptOid` +//INNER JOIN `costbearer` cb ON cb2sc.`CostBearerOid` = cb.`Oid` +//LEFT JOIN +// (SELECT crp.`ObjectOid`, crp.`CostRateValue` FROM `costrateperiod` crp +// WHERE crp.`ObjectTid` = 22 AND crp.`CostRateType` = 2 AND (crp.`EndDate` is null or crp.`EndDate` > NOW())) +// AS crpRateFactor ON crpRateFactor.`ObjectOid` = cb.`Oid` +//INNER JOIN `organisation` org ON org.`CostBearerOid` = cb.`Oid` +//INNER JOIN `customer` c ON sc.`CustomerOid` = c.`Oid` +//INNER JOIN `person` p on c.`PersonOid` = p.`Oid` +//LEFT JOIN +// (SELECT sr2.`CostBearer2SupportConceptOid`, SUM(sr2.`roundedduration` / IF(sr2.`GroupEmployeeCount` is null, 1, sr2.`GroupEmployeeCount`)) AS GeleisteteFLM, sc.Oid as CatOid FROM `servicerecord` sr2 +// INNER JOIN `servicedescription` sd ON sr2.`ServiceDescriptionOid` = sd.`Oid` +// INNER JOIN `servicecategory` sc ON sd.`ServiceCategoryOid` = sc.`Oid` +// WHERE sr2.`StartDate` >= ':Monat_Start' AND sr2.`StartDate` < ':Monat_End' AND sc.`Billable` = 1 AND sc.oid in (CATOIDLIST) :Gruppenfilter GROUP BY sr2.`CostBearer2SupportConceptOid`) +// AS sr ON sr.`CostBearer2SupportConceptOid` = cb2sc.`Oid` +//WHERE c.`IsActive` <> 0 AND sc.`IsActive` <> 0 +//and (sr.`GeleisteteFLM` is not null) +//ORDER BY p.`LastName`, p.`FirstName`, cb2sc.`ApprovedStartDate` +//"; + +// String includeString = ""; +// String excludeString = ""; +// if (includeCatOids != null && includeCatOids.Count > 0) +// { +// StringBuilder oidList = new StringBuilder(); + +// foreach (var catOid in includeCatOids) +// { +// if (oidList.Length > 0) +// oidList.Append(","); +// oidList.Append(catOid); +// } + +// includeString = String.Format(" AND sc.oid in ({0})", oidList.ToString()); +// } + +// if (excludeOids != null && excludeOids.Count > 0) +// { +// StringBuilder notoidList = new StringBuilder(); + +// foreach (var catOid in excludeOids) +// { +// if (notoidList.Length > 0) +// notoidList.Append(","); +// notoidList.Append(catOid); +// } +// excludeString = String.Format(" AND sc.oid not in ({0})", notoidList.ToString()); +// } + +// String gruppenfilter = ""; + +// if (!holeEinzel || !holeGruppen) +// { +// if (holeGruppen) +// { +// gruppenfilter = "AND sr2.GroupOid is not null"; +// } +// else +// { +// gruppenfilter = "AND sr2.GroupOid is null"; +// } +// } +// sql = sql.Replace(":Gruppenfilter", gruppenfilter); +// sql = sql.Replace(":IncludeCatOidList", includeString); +// sql = sql.Replace(":ExcludeCatOidList", excludeString); +// return sql; +// } + + +// private static String GetAbschlagszahlungenSql(DateTime date) +// { +// String sql = @" +//SELECT +//date_format(at.BookingDate, '%d.%m.%Y') as 'Belegdatum', +//':Belegnr', +//'S13690' as 'Konto Soll', +//'' as 'Kostenstelle Soll', +//c.DebitorNumber as 'Konto Haben', +//'' as 'Kostenstelle Haben', +//Round(at.Amount, 2) as 'Betrag', +//CONCAT('Abschlagszahlung,', p.FirstName, ' ', p.LastName) as 'Buchungstext' +//from accountingtransaction at +//join costbearer2supportconcept c2s on c2s.oid = at.costbearer2supportconceptoid +//join supportconcept sc on sc.oid = c2s.supportconceptoid +//join customer c on sc.customeroid = c.oid +//join person p on c.personoid = p.oid +//WHERE at.`BookingDate` >= ':Monat_Start' AND at.`BookingDate` < ':Monat_End' and c.`IsActive` <> 0 AND sc.`IsActive` <> 0 +//ORDER BY p.`LastName`, p.`FirstName` +//"; +// return sql; +// } + +// private static String GetSelbstzahlerSql(DateTime date) +// { +// String sql = @" +//SELECT +//date_format(ib.InvoiceDate, '%d.%m.%Y') as 'Belegdatum', +//ib.InvoiceNumber as 'Belegnummer', +//c.DebitorNumber as 'Konto Soll', +//'' as 'Kostenstelle Soll', +//'S86400' as 'Konto Haben', +//c.CostCenter as 'Kostenstelle Haben', +//Round(ii.AmountTotal, 2) as 'Betrag', +//CONCAT('Eigenanteil, ', p.`FirstName`, ' ', p.`LastName`) as 'Buchungstext' +//from invoicebase ib +//join invoiceitem ii on ii.invoicebaseoid = ib.oid +//join customer c on c.oid = ib.recipientcustomeroid +//join `person` p on c.`PersonOid` = p.`Oid` +//where ib.`InvoiceDate` >= ':Monat_Start' AND ib.`InvoiceDate` < ':Monat_End' +//and ib.type = 0 and ib.isactive = 1 and c.isactive <> 0 +//"; + +// 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_MM", String.Format("{0:MM}", 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 diff --git a/ReportImp/LebenshilfeStadeMID/LebenshilfeStadeMID.csproj b/ReportImp/LebenshilfeStadeMID/LebenshilfeStadeMID.csproj index f268a556d..a30e34ff7 100644 --- a/ReportImp/LebenshilfeStadeMID/LebenshilfeStadeMID.csproj +++ b/ReportImp/LebenshilfeStadeMID/LebenshilfeStadeMID.csproj @@ -61,6 +61,8 @@ + + From dfaf7ee0b71c785ea2775b2dc1d6da60b70ee37d Mon Sep 17 00:00:00 2001 From: HirschleM Date: Fri, 21 Mar 2025 12:02:26 +0100 Subject: [PATCH 3/3] MH: Lebenshilfe Stade (+ MID) Datev Exporter ungenutzte Funktionen raus --- .../LebenshilfeStade/Export/DatevExporter.cs | 208 ---------------- .../Export/DatevExporter.cs | 224 ------------------ 2 files changed, 432 deletions(-) diff --git a/ReportImp/LebenshilfeStade/Export/DatevExporter.cs b/ReportImp/LebenshilfeStade/Export/DatevExporter.cs index 01b5e9698..e59ce227c 100644 --- a/ReportImp/LebenshilfeStade/Export/DatevExporter.cs +++ b/ReportImp/LebenshilfeStade/Export/DatevExporter.cs @@ -139,28 +139,6 @@ Bsp. LK Stade - Mustermann, Max - 11.2019 return sb.ToString(); } - - private static Dictionary CreateHourlyRateDict(List catOids, DateTime date) - { - Dictionary dict = new Dictionary(); - - foreach (var oid in catOids) - { - var cat = DAOFactory.GenericDAO.LoadByID(oid); - - var crps = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(cat.CostRatePeriods); - - var cp = crps.GetCostRatePeriodForDate(CostRatePeriodType.AmountOfMoney, date); - - if (cp != null && cp.CostRateValue.HasValue) - { - dict.Add(oid, cp.CostRateValue.Value); - } - } - - return dict; - } - private static String GetMonatlicheRechnungenSql(DateTime date) { @@ -187,192 +165,6 @@ order by ib.invoicenumber return sql; } - private static String GetMonatlicheAbrechnungStringForCatsSql(DateTime date, IList includeCatOids, IList excludeOids, bool holeEinzel, bool holeGruppen) - { - - String sql = @" -SELECT distinct -c.`DebitorNumber` AS 'Debitoren Nr.', -c.`CostCenter` AS 'Kostenstelle', -CONCAT(p.`LastName`, ', ', p.`FirstName`) as Name, -org.`Name` as 'Kostentraeger', -ROUND(sr.`GeleisteteFLM` / 60, 2) as 'FLS', - IF(crpRateFactor.`CostRateValue` is null, ROUND((sr.`GeleisteteFLM` / 60) * crpHourlyRate.`CostRateValue`, 2),ROUND(ROUND((sr.`GeleisteteFLM` / 60), 2) * crpHourlyRate.`CostRateValue` * ((100 + crpRateFactor.`CostRateValue`)/100), 2)) AS 'Forderung', -':Monat_MM' AS 'Belegnr.', -ROUND(crpHourlyRate.`CostRateValue`,2) as 'Stundensatz', ROUND(crpRateFactor.`CostRateValue`,2) as 'Pauschaler Faktor in %' -FROM `supportconcept` sc -INNER JOIN `costbearer2supportconcept` cb2sc ON sc.`Oid` = cb2sc.`SupportConceptOid` -INNER JOIN `costbearer` cb ON cb2sc.`CostBearerOid` = cb.`Oid` -INNER JOIN - (SELECT crp.`ObjectOid`, crp.costratetype, crp.`CostRateValue`, If(crp.Enddate is null, '9999-01-01', crp.enddate) as aenddatum, crptemp.enddatum FROM `costrateperiod` crp - inner join (SELECT crpi.`ObjectOid`, Min(If(crpi.Enddate is null, '9999-01-01', crpi.enddate)) as enddatum FROM `costrateperiod` crpi - WHERE crpi.`ObjectTid` = 22 AND crpi.`CostRateType` = 0 AND (crpi.`EndDate` is null or crpi.`EndDate` > ':Monat_Start') - group by crpi.objectoid) as crptemp on crptemp.objectoid = crp.objectoid - WHERE crp.`ObjectTid` = 22 and crp.costratetype = 0 - having aenddatum = crptemp.enddatum) - AS crpHourlyRate ON crpHourlyRate.`ObjectOid` = cb.`Oid` -LEFT JOIN - (SELECT crp.`ObjectOid`, crp.costratetype, crp.`CostRateValue`, If(crp.Enddate is null, '9999-01-01', crp.enddate) as aenddatum, crptemp.enddatum FROM `costrateperiod` crp - inner join (SELECT crpi.`ObjectOid`, Min(If(crpi.Enddate is null, '9999-01-01', crpi.enddate)) as enddatum FROM `costrateperiod` crpi - WHERE crpi.`ObjectTid` = 22 AND crpi.`CostRateType` = 2 AND (crpi.`EndDate` is null or crpi.`EndDate` > ':Monat_Start') - group by crpi.objectoid) as crptemp on crptemp.objectoid = crp.objectoid - WHERE crp.`ObjectTid` = 22 and crp.costratetype = 2 - having aenddatum = crptemp.enddatum) - AS crpRateFactor ON crpRateFactor.`ObjectOid` = cb.`Oid` -INNER JOIN `organisation` org ON org.`CostBearerOid` = cb.`Oid` -INNER JOIN `customer` c ON sc.`CustomerOid` = c.`Oid` -INNER JOIN `person` p on c.`PersonOid` = p.`Oid` -INNER JOIN - (SELECT - v2o.`ObjectOid`, - v2o.`ValueListEntryOid` - FROM `valuelistentry2object` v2o - WHERE v2o.`ValueListEntryOid` in (12,13,14) ) as vle2o ON vle2o.`ObjectOid` = c.`Oid` -INNER JOIN `valuelistentry` vle on vle.`Oid` = vle2o.`ValueListEntryOid` -INNER JOIN - (SELECT sr2.`CostBearer2SupportConceptOid`, SUM(sr2.`roundedduration` / IF(sr2.`GroupEmployeeCount` is null, 1, sr2.`GroupEmployeeCount`)) AS GeleisteteFLM FROM `servicerecord` sr2 - INNER JOIN `servicedescription` sd ON sr2.`ServiceDescriptionOid` = sd.`Oid` - INNER JOIN `servicecategory` sc ON sd.`ServiceCategoryOid` = sc.`Oid` - WHERE sr2.`StartDate` >= ':Monat_Start' AND sr2.`StartDate` < ':Monat_End' AND sc.`Billable` = 1:IncludeCatOidList:ExcludeCatOidList GROUP BY sr2.`CostBearer2SupportConceptOid`) - AS sr ON sr.`CostBearer2SupportConceptOid` = cb2sc.`Oid` -WHERE c.`IsActive` <> 0 AND sc.`IsActive` <> 0 and -((If (cb2sc.`ApprovedStartDate` is null, cb2sc.`RequestedStartDate`, cb2sc.`ApprovedStartDate`) < ':Monat_End' and -If (cb2sc.`ApprovedEndDate` is null, cb2sc.`RequestedEndDate`, cb2sc.`ApprovedEndDate`) >= ':Monat_Start' -and GeleisteteFLM is null) or GeleisteteFLM is not null) -ORDER BY p.`LastName` -"; - -String sqlalt = @" - SELECT -CONCAT(p.Lastname, ', ', p.Firstname), -c.DebitorNumber as 'DebKonto', -DATE_FORMAT(DATE_ADD(':Monat_End',INTERVAL -1 DAY), '%d.%m.%Y') as 'Datum', -c.`CostCenter` AS 'Kst', -ROUND(sr.`GeleisteteFLM` / 60, 2) as 'Text', -IF(crpRateFactor.`CostRateValue` is null, - 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 ), 2), - ROUND(ROUND((sr.`GeleisteteFLM` / 60) * ((100 + crpRateFactor.`CostRateValue`)/100), 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 ), 2)) AS 'Betrag', - '', - '', - '', -sr.`GeleisteteFLM`, -sr.CatOid -FROM `supportconcept` sc -INNER JOIN `costbearer2supportconcept` cb2sc ON sc.`Oid` = cb2sc.`SupportConceptOid` -INNER JOIN `costbearer` cb ON cb2sc.`CostBearerOid` = cb.`Oid` -LEFT JOIN - (SELECT crp.`ObjectOid`, crp.`CostRateValue` FROM `costrateperiod` crp - WHERE crp.`ObjectTid` = 22 AND crp.`CostRateType` = 2 AND (crp.`EndDate` is null or crp.`EndDate` > NOW())) - AS crpRateFactor ON crpRateFactor.`ObjectOid` = cb.`Oid` -INNER JOIN `organisation` org ON org.`CostBearerOid` = cb.`Oid` -INNER JOIN `customer` c ON sc.`CustomerOid` = c.`Oid` -INNER JOIN `person` p on c.`PersonOid` = p.`Oid` -LEFT JOIN - (SELECT sr2.`CostBearer2SupportConceptOid`, SUM(sr2.`roundedduration` / IF(sr2.`GroupEmployeeCount` is null, 1, sr2.`GroupEmployeeCount`)) AS GeleisteteFLM, sc.Oid as CatOid FROM `servicerecord` sr2 - INNER JOIN `servicedescription` sd ON sr2.`ServiceDescriptionOid` = sd.`Oid` - INNER JOIN `servicecategory` sc ON sd.`ServiceCategoryOid` = sc.`Oid` - WHERE sr2.`StartDate` >= ':Monat_Start' AND sr2.`StartDate` < ':Monat_End' AND sc.`Billable` = 1 AND sc.oid in (CATOIDLIST) :Gruppenfilter GROUP BY sr2.`CostBearer2SupportConceptOid`) - AS sr ON sr.`CostBearer2SupportConceptOid` = cb2sc.`Oid` -WHERE c.`IsActive` <> 0 AND sc.`IsActive` <> 0 -and (sr.`GeleisteteFLM` is not null) -ORDER BY p.`LastName`, p.`FirstName`, cb2sc.`ApprovedStartDate` -"; - - String includeString = ""; - String excludeString = ""; - if (includeCatOids != null && includeCatOids.Count > 0) - { - StringBuilder oidList = new StringBuilder(); - - foreach (var catOid in includeCatOids) - { - if (oidList.Length > 0) - oidList.Append(","); - oidList.Append(catOid); - } - - includeString = String.Format(" AND sc.oid in ({0})", oidList.ToString()); - } - - if (excludeOids != null && excludeOids.Count > 0) - { - StringBuilder notoidList = new StringBuilder(); - - foreach (var catOid in excludeOids) - { - if (notoidList.Length > 0) - notoidList.Append(","); - notoidList.Append(catOid); - } - excludeString = String.Format(" AND sc.oid not in ({0})", notoidList.ToString()); - } - - String gruppenfilter = ""; - - if (!holeEinzel || !holeGruppen) - { - if (holeGruppen) - { - gruppenfilter = "AND sr2.GroupOid is not null"; - } - else - { - gruppenfilter = "AND sr2.GroupOid is null"; - } - } - sql = sql.Replace(":Gruppenfilter", gruppenfilter); - sql = sql.Replace(":IncludeCatOidList", includeString); - sql = sql.Replace(":ExcludeCatOidList", excludeString); - return sql; - } - - - private static String GetAbschlagszahlungenSql(DateTime date) - { - String sql = @" -SELECT -date_format(at.BookingDate, '%d.%m.%Y') as 'Belegdatum', -':Belegnr', -'S13690' as 'Konto Soll', -'' as 'Kostenstelle Soll', -c.DebitorNumber as 'Konto Haben', -'' as 'Kostenstelle Haben', -Round(at.Amount, 2) as 'Betrag', -CONCAT('Abschlagszahlung,', p.FirstName, ' ', p.LastName) as 'Buchungstext' -from accountingtransaction at -join costbearer2supportconcept c2s on c2s.oid = at.costbearer2supportconceptoid -join supportconcept sc on sc.oid = c2s.supportconceptoid -join customer c on sc.customeroid = c.oid -join person p on c.personoid = p.oid -WHERE at.`BookingDate` >= ':Monat_Start' AND at.`BookingDate` < ':Monat_End' and c.`IsActive` <> 0 AND sc.`IsActive` <> 0 -ORDER BY p.`LastName`, p.`FirstName` -"; - return sql; - } - - private static String GetSelbstzahlerSql(DateTime date) - { - String sql = @" -SELECT -date_format(ib.InvoiceDate, '%d.%m.%Y') as 'Belegdatum', -ib.InvoiceNumber as 'Belegnummer', -c.DebitorNumber as 'Konto Soll', -'' as 'Kostenstelle Soll', -'S86400' as 'Konto Haben', -c.CostCenter as 'Kostenstelle Haben', -Round(ii.AmountTotal, 2) as 'Betrag', -CONCAT('Eigenanteil, ', p.`FirstName`, ' ', p.`LastName`) as 'Buchungstext' -from invoicebase ib -join invoiceitem ii on ii.invoicebaseoid = ib.oid -join customer c on c.oid = ib.recipientcustomeroid -join `person` p on c.`PersonOid` = p.`Oid` -where ib.`InvoiceDate` >= ':Monat_Start' AND ib.`InvoiceDate` < ':Monat_End' -and ib.type = 0 and ib.isactive = 1 and c.isactive <> 0 -"; - - return sql; - } - public static DataTable ExecuteQuery(String sql, DateTime dt) { var newsql = sql; diff --git a/ReportImp/LebenshilfeStadeMID/Export/DatevExporter.cs b/ReportImp/LebenshilfeStadeMID/Export/DatevExporter.cs index 7da7d9cab..7309f9f26 100644 --- a/ReportImp/LebenshilfeStadeMID/Export/DatevExporter.cs +++ b/ReportImp/LebenshilfeStadeMID/Export/DatevExporter.cs @@ -27,23 +27,6 @@ namespace LebenshilfeStadeMID.Export return query; } - //public static string CreateExportString(string[] pHeaderCaption, string[][] pContent) - //{ - // if (pHeaderCaption != null && pHeaderCaption.Length > 1 && pHeaderCaption[0].Contains("DatevListe")) - // { - // DateTime dt = DateTime.Now; - - // DateTime.TryParse(pHeaderCaption[1], out dt); - - // return GetAbrechnungenString(dt); - - // } - - // return null; - //} - - - public static String GetAbrechnungenString(DateTime date) { StringBuilder sb = new StringBuilder(); @@ -140,27 +123,6 @@ Bsp. LK Stade - Mustermann, Max - 11.2019 return sb.ToString(); } - private static Dictionary CreateHourlyRateDict(List catOids, DateTime date) - { - Dictionary dict = new Dictionary(); - - foreach (var oid in catOids) - { - var cat = DAOFactory.GenericDAO.LoadByID(oid); - - var crps = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(cat.CostRatePeriods); - - var cp = crps.GetCostRatePeriodForDate(CostRatePeriodType.AmountOfMoney, date); - - if (cp != null && cp.CostRateValue.HasValue) - { - dict.Add(oid, cp.CostRateValue.Value); - } - } - - return dict; - } - private static String GetMonatlicheRechnungenSql(DateTime date) { @@ -187,192 +149,6 @@ order by ib.invoicenumber return sql; } -// private static String GetMonatlicheAbrechnungStringForCatsSql(DateTime date, IList includeCatOids, IList excludeOids, bool holeEinzel, bool holeGruppen) -// { - -// String sql = @" -//SELECT distinct -//c.`DebitorNumber` AS 'Debitoren Nr.', -//c.`CostCenter` AS 'Kostenstelle', -//CONCAT(p.`LastName`, ', ', p.`FirstName`) as Name, -//org.`Name` as 'Kostentraeger', -//ROUND(sr.`GeleisteteFLM` / 60, 2) as 'FLS', -// IF(crpRateFactor.`CostRateValue` is null, ROUND((sr.`GeleisteteFLM` / 60) * crpHourlyRate.`CostRateValue`, 2),ROUND(ROUND((sr.`GeleisteteFLM` / 60), 2) * crpHourlyRate.`CostRateValue` * ((100 + crpRateFactor.`CostRateValue`)/100), 2)) AS 'Forderung', -//':Monat_MM' AS 'Belegnr.', -//ROUND(crpHourlyRate.`CostRateValue`,2) as 'Stundensatz', ROUND(crpRateFactor.`CostRateValue`,2) as 'Pauschaler Faktor in %' -//FROM `supportconcept` sc -//INNER JOIN `costbearer2supportconcept` cb2sc ON sc.`Oid` = cb2sc.`SupportConceptOid` -//INNER JOIN `costbearer` cb ON cb2sc.`CostBearerOid` = cb.`Oid` -//INNER JOIN -// (SELECT crp.`ObjectOid`, crp.costratetype, crp.`CostRateValue`, If(crp.Enddate is null, '9999-01-01', crp.enddate) as aenddatum, crptemp.enddatum FROM `costrateperiod` crp -// inner join (SELECT crpi.`ObjectOid`, Min(If(crpi.Enddate is null, '9999-01-01', crpi.enddate)) as enddatum FROM `costrateperiod` crpi -// WHERE crpi.`ObjectTid` = 22 AND crpi.`CostRateType` = 0 AND (crpi.`EndDate` is null or crpi.`EndDate` > ':Monat_Start') -// group by crpi.objectoid) as crptemp on crptemp.objectoid = crp.objectoid -// WHERE crp.`ObjectTid` = 22 and crp.costratetype = 0 -// having aenddatum = crptemp.enddatum) -// AS crpHourlyRate ON crpHourlyRate.`ObjectOid` = cb.`Oid` -//LEFT JOIN -// (SELECT crp.`ObjectOid`, crp.costratetype, crp.`CostRateValue`, If(crp.Enddate is null, '9999-01-01', crp.enddate) as aenddatum, crptemp.enddatum FROM `costrateperiod` crp -// inner join (SELECT crpi.`ObjectOid`, Min(If(crpi.Enddate is null, '9999-01-01', crpi.enddate)) as enddatum FROM `costrateperiod` crpi -// WHERE crpi.`ObjectTid` = 22 AND crpi.`CostRateType` = 2 AND (crpi.`EndDate` is null or crpi.`EndDate` > ':Monat_Start') -// group by crpi.objectoid) as crptemp on crptemp.objectoid = crp.objectoid -// WHERE crp.`ObjectTid` = 22 and crp.costratetype = 2 -// having aenddatum = crptemp.enddatum) -// AS crpRateFactor ON crpRateFactor.`ObjectOid` = cb.`Oid` -//INNER JOIN `organisation` org ON org.`CostBearerOid` = cb.`Oid` -//INNER JOIN `customer` c ON sc.`CustomerOid` = c.`Oid` -//INNER JOIN `person` p on c.`PersonOid` = p.`Oid` -//INNER JOIN -// (SELECT -// v2o.`ObjectOid`, -// v2o.`ValueListEntryOid` -// FROM `valuelistentry2object` v2o -// WHERE v2o.`ValueListEntryOid` in (12,13,14) ) as vle2o ON vle2o.`ObjectOid` = c.`Oid` -//INNER JOIN `valuelistentry` vle on vle.`Oid` = vle2o.`ValueListEntryOid` -//INNER JOIN -// (SELECT sr2.`CostBearer2SupportConceptOid`, SUM(sr2.`roundedduration` / IF(sr2.`GroupEmployeeCount` is null, 1, sr2.`GroupEmployeeCount`)) AS GeleisteteFLM FROM `servicerecord` sr2 -// INNER JOIN `servicedescription` sd ON sr2.`ServiceDescriptionOid` = sd.`Oid` -// INNER JOIN `servicecategory` sc ON sd.`ServiceCategoryOid` = sc.`Oid` -// WHERE sr2.`StartDate` >= ':Monat_Start' AND sr2.`StartDate` < ':Monat_End' AND sc.`Billable` = 1:IncludeCatOidList:ExcludeCatOidList GROUP BY sr2.`CostBearer2SupportConceptOid`) -// AS sr ON sr.`CostBearer2SupportConceptOid` = cb2sc.`Oid` -//WHERE c.`IsActive` <> 0 AND sc.`IsActive` <> 0 and -//((If (cb2sc.`ApprovedStartDate` is null, cb2sc.`RequestedStartDate`, cb2sc.`ApprovedStartDate`) < ':Monat_End' and -//If (cb2sc.`ApprovedEndDate` is null, cb2sc.`RequestedEndDate`, cb2sc.`ApprovedEndDate`) >= ':Monat_Start' -//and GeleisteteFLM is null) or GeleisteteFLM is not null) -//ORDER BY p.`LastName` -//"; - -//String sqlalt = @" -// SELECT -//CONCAT(p.Lastname, ', ', p.Firstname), -//c.DebitorNumber as 'DebKonto', -//DATE_FORMAT(DATE_ADD(':Monat_End',INTERVAL -1 DAY), '%d.%m.%Y') as 'Datum', -//c.`CostCenter` AS 'Kst', -//ROUND(sr.`GeleisteteFLM` / 60, 2) as 'Text', -//IF(crpRateFactor.`CostRateValue` is null, -// 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 ), 2), -// ROUND(ROUND((sr.`GeleisteteFLM` / 60) * ((100 + crpRateFactor.`CostRateValue`)/100), 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 ), 2)) AS 'Betrag', -// '', -// '', -// '', -//sr.`GeleisteteFLM`, -//sr.CatOid -//FROM `supportconcept` sc -//INNER JOIN `costbearer2supportconcept` cb2sc ON sc.`Oid` = cb2sc.`SupportConceptOid` -//INNER JOIN `costbearer` cb ON cb2sc.`CostBearerOid` = cb.`Oid` -//LEFT JOIN -// (SELECT crp.`ObjectOid`, crp.`CostRateValue` FROM `costrateperiod` crp -// WHERE crp.`ObjectTid` = 22 AND crp.`CostRateType` = 2 AND (crp.`EndDate` is null or crp.`EndDate` > NOW())) -// AS crpRateFactor ON crpRateFactor.`ObjectOid` = cb.`Oid` -//INNER JOIN `organisation` org ON org.`CostBearerOid` = cb.`Oid` -//INNER JOIN `customer` c ON sc.`CustomerOid` = c.`Oid` -//INNER JOIN `person` p on c.`PersonOid` = p.`Oid` -//LEFT JOIN -// (SELECT sr2.`CostBearer2SupportConceptOid`, SUM(sr2.`roundedduration` / IF(sr2.`GroupEmployeeCount` is null, 1, sr2.`GroupEmployeeCount`)) AS GeleisteteFLM, sc.Oid as CatOid FROM `servicerecord` sr2 -// INNER JOIN `servicedescription` sd ON sr2.`ServiceDescriptionOid` = sd.`Oid` -// INNER JOIN `servicecategory` sc ON sd.`ServiceCategoryOid` = sc.`Oid` -// WHERE sr2.`StartDate` >= ':Monat_Start' AND sr2.`StartDate` < ':Monat_End' AND sc.`Billable` = 1 AND sc.oid in (CATOIDLIST) :Gruppenfilter GROUP BY sr2.`CostBearer2SupportConceptOid`) -// AS sr ON sr.`CostBearer2SupportConceptOid` = cb2sc.`Oid` -//WHERE c.`IsActive` <> 0 AND sc.`IsActive` <> 0 -//and (sr.`GeleisteteFLM` is not null) -//ORDER BY p.`LastName`, p.`FirstName`, cb2sc.`ApprovedStartDate` -//"; - -// String includeString = ""; -// String excludeString = ""; -// if (includeCatOids != null && includeCatOids.Count > 0) -// { -// StringBuilder oidList = new StringBuilder(); - -// foreach (var catOid in includeCatOids) -// { -// if (oidList.Length > 0) -// oidList.Append(","); -// oidList.Append(catOid); -// } - -// includeString = String.Format(" AND sc.oid in ({0})", oidList.ToString()); -// } - -// if (excludeOids != null && excludeOids.Count > 0) -// { -// StringBuilder notoidList = new StringBuilder(); - -// foreach (var catOid in excludeOids) -// { -// if (notoidList.Length > 0) -// notoidList.Append(","); -// notoidList.Append(catOid); -// } -// excludeString = String.Format(" AND sc.oid not in ({0})", notoidList.ToString()); -// } - -// String gruppenfilter = ""; - -// if (!holeEinzel || !holeGruppen) -// { -// if (holeGruppen) -// { -// gruppenfilter = "AND sr2.GroupOid is not null"; -// } -// else -// { -// gruppenfilter = "AND sr2.GroupOid is null"; -// } -// } -// sql = sql.Replace(":Gruppenfilter", gruppenfilter); -// sql = sql.Replace(":IncludeCatOidList", includeString); -// sql = sql.Replace(":ExcludeCatOidList", excludeString); -// return sql; -// } - - -// private static String GetAbschlagszahlungenSql(DateTime date) -// { -// String sql = @" -//SELECT -//date_format(at.BookingDate, '%d.%m.%Y') as 'Belegdatum', -//':Belegnr', -//'S13690' as 'Konto Soll', -//'' as 'Kostenstelle Soll', -//c.DebitorNumber as 'Konto Haben', -//'' as 'Kostenstelle Haben', -//Round(at.Amount, 2) as 'Betrag', -//CONCAT('Abschlagszahlung,', p.FirstName, ' ', p.LastName) as 'Buchungstext' -//from accountingtransaction at -//join costbearer2supportconcept c2s on c2s.oid = at.costbearer2supportconceptoid -//join supportconcept sc on sc.oid = c2s.supportconceptoid -//join customer c on sc.customeroid = c.oid -//join person p on c.personoid = p.oid -//WHERE at.`BookingDate` >= ':Monat_Start' AND at.`BookingDate` < ':Monat_End' and c.`IsActive` <> 0 AND sc.`IsActive` <> 0 -//ORDER BY p.`LastName`, p.`FirstName` -//"; -// return sql; -// } - -// private static String GetSelbstzahlerSql(DateTime date) -// { -// String sql = @" -//SELECT -//date_format(ib.InvoiceDate, '%d.%m.%Y') as 'Belegdatum', -//ib.InvoiceNumber as 'Belegnummer', -//c.DebitorNumber as 'Konto Soll', -//'' as 'Kostenstelle Soll', -//'S86400' as 'Konto Haben', -//c.CostCenter as 'Kostenstelle Haben', -//Round(ii.AmountTotal, 2) as 'Betrag', -//CONCAT('Eigenanteil, ', p.`FirstName`, ' ', p.`LastName`) as 'Buchungstext' -//from invoicebase ib -//join invoiceitem ii on ii.invoicebaseoid = ib.oid -//join customer c on c.oid = ib.recipientcustomeroid -//join `person` p on c.`PersonOid` = p.`Oid` -//where ib.`InvoiceDate` >= ':Monat_Start' AND ib.`InvoiceDate` < ':Monat_End' -//and ib.type = 0 and ib.isactive = 1 and c.isactive <> 0 -//"; - -// return sql; -// } - public static DataTable ExecuteQuery(String sql, DateTime dt) { var newsql = sql;