diff --git a/ReportImp/AWOMuensterlandRecklinghausen/AWOMuensterlandRecklinghausen.csproj b/ReportImp/AWOMuensterlandRecklinghausen/AWOMuensterlandRecklinghausen.csproj index f599e3ef6..37ea258f2 100644 --- a/ReportImp/AWOMuensterlandRecklinghausen/AWOMuensterlandRecklinghausen.csproj +++ b/ReportImp/AWOMuensterlandRecklinghausen/AWOMuensterlandRecklinghausen.csproj @@ -56,11 +56,17 @@ - + Component - - Finanzauswertung.cs + + StatusCheckAbrechnung.cs + + + Component + + + Finanzplanung.cs Component @@ -164,8 +170,12 @@ - - Finanzauswertung.cs + + StatusCheckAbrechnung.cs + Designer + + + Finanzplanung.cs Designer diff --git a/ReportImp/AWOMuensterlandRecklinghausen/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/AWOMuensterlandRecklinghausen/CustomMitarbeiterstundenkontoBerechnung.cs index 354b26fa3..b42c56e5f 100644 --- a/ReportImp/AWOMuensterlandRecklinghausen/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/AWOMuensterlandRecklinghausen/CustomMitarbeiterstundenkontoBerechnung.cs @@ -185,7 +185,21 @@ namespace AWOMuensterlandRecklinghausen duration = item.RoundedDuration; } - var d1 = item.Start.Value; + if (item.ServiceDescription != null && (item.ServiceDescription.Name.Contains("UT") || item.ServiceDescription.Name.Contains("Unterrichtsfrei"))) + { + if (emp.Custom6 > 360) + { + emp.Custom6 = emp.Custom6 + 30; + } + duration = emp.Custom6; + } + + if (!item.Notice.IsNullOrEmpty() && item.Notice.StartsWith("KF-Pauschale")) + { + duration = 645; + } + + var d1 = item.Start.Value; //if (item.Start.Value > new DateTime(2023, 05, 19)) //{ // string test = "jep"; @@ -303,6 +317,7 @@ namespace AWOMuensterlandRecklinghausen { if (c.WeeklyTotalHours.HasValue) { + empDetail.Custom6 = c.WeeklyTotalHours.Value; if (c.EmploymentType != null && c.EmploymentType.Name.StartsWith("MA mit")) { weeklyTotalHours = c.WeeklyTotalHours.Value + (c.WeeklyTotalHours.Value * 0.17m); @@ -318,11 +333,13 @@ namespace AWOMuensterlandRecklinghausen empDetail.ArbeitstageProWoche = c.WeeklyDays.Value; } + empDetail.WeeklyFLS = c.WeeklyFLS; empDetail.HourlyRate = c.HourlyRate; empDetail.EmploymentType = c.EmploymentType; } - empDetail.SollProTag = (weeklyTotalHours / empDetail.ArbeitstageProWoche); + empDetail.Custom6 = empDetail.Custom6 * 60 / empDetail.ArbeitstageProWoche; // echte Sollzeit auch für MA-Mit Ferienausgleich + empDetail.SollProTag = weeklyTotalHours / empDetail.ArbeitstageProWoche; empDetail.SollProWoche = weeklyTotalHours; //BerechneSollProWoche(c, empDetail); HandleServiceRecords(empDetail, groupFilteredRecords, c); @@ -467,17 +484,10 @@ namespace AWOMuensterlandRecklinghausen tageUrlaubGesamt += ath2.StundenUrlaub / empDetail.SollProTag; } } - - } tatSollStdGesamt += tatSollStdImVertragsUndBerichtzeitraum; - - flsSollGesamt += BerechneFlsSoll(emp, c, berichtsAnfang, berichtsEnde, tatSollStdImVertragsUndBerichtzeitraum, stundenSollProMonat); - - - berichtsAnfang = berichtsEnde; berichtsEnde = monatsEnde; c = GetNextValidContractForDate(berichtsAnfang, emp); @@ -509,13 +519,8 @@ namespace AWOMuensterlandRecklinghausen empDetail.TageUrlaub = tageUrlaubGesamt; empDetail.TageKrankheit = tageKrankheitGesamt; empDetail.UrlaubUndKrankheit = abwesenheitTageGesamt; - empDetail.StundenSollOhneUrlaubKrankheit = tatSollStdGesamt; - empDetail.FlsSoll = flsSollGesamt; - - - empDetail.MittelbarIst = summaryTotal.IstNichtAbrechenbar; empDetail.Bu = bu; empDetail.FlsIst = summaryTotal.IstAbrechenbar; diff --git a/ReportImp/AWOMuensterlandRecklinghausen/CustomReportCreator.cs b/ReportImp/AWOMuensterlandRecklinghausen/CustomReportCreator.cs index 06dee71ce..029aceaa6 100644 --- a/ReportImp/AWOMuensterlandRecklinghausen/CustomReportCreator.cs +++ b/ReportImp/AWOMuensterlandRecklinghausen/CustomReportCreator.cs @@ -168,6 +168,12 @@ namespace AWOMuensterlandRecklinghausen public override XtraReport CreateQueryReport(long queryOid, string queryReportId) { + if (queryOid == 120) + return CreateFinanzplanung(queryOid, queryReportId); + + if (queryOid == 199) + return CreateStatusCheck(queryOid, queryReportId); + if (queryOid == 1001) return CreateValidationMessageReport(queryOid, queryReportId); @@ -199,7 +205,59 @@ namespace AWOMuensterlandRecklinghausen return new XtraReport(); } + private XtraReport CreateFinanzplanung(long queryOid, string queryReportId) + { + var query = DAOFactory.GenericDAO.LoadByID(queryOid); + if (query == null) + return new XtraReport(); + + var path = Path.Combine(TempPath, queryReportId + ".xml"); + var table = Utils.XMLDeserialize(path); + var qro = QueryRO.Create(query, table); + + + if (qro.Rows.Count > 0) + { + DateTime monat = DateTime.Parse(qro.Rows[0].Field1.ToString()); + DateTime start = new DateTime(monat.Year, 9, 1); + DateTime end = start.AddMonths(1).AddDays(-1); + + var ro = FinanceRO.Create(start, end); + var druck = new Finanzplanung(); + druck.SetReportDataSource(ro); + return druck; + } + + return new XtraReport(); + } + + private XtraReport CreateStatusCheck(long queryOid, string queryReportId) + { + var query = DAOFactory.GenericDAO.LoadByID(queryOid); + + if (query == null) + return new XtraReport(); + + var path = Path.Combine(TempPath, queryReportId + ".xml"); + var table = Utils.XMLDeserialize(path); + var qro = QueryRO.Create(query, table); + + + if (qro.Rows.Count > 0) + { + DateTime monat = DateTime.Parse(qro.Rows[0].Field1.ToString()); + DateTime start = new DateTime(monat.Year, monat.Month, 1); + DateTime end = start.AddMonths(1).AddDays(-1); + + var ro = FinanceRO.Create(start, end); + var druck = new Statuscheck(); + druck.SetReportDataSource(ro); + return druck; + } + + return new XtraReport(); + } //public override XtraReport CreateServiceOverviewReportForCustomers(IList customerOids, int month, int year, long? orgaOid, long? empOid, long? serviceCategoryOid, int startDay, int endDay, bool nurFehlende) //{ diff --git a/ReportImp/AWOMuensterlandRecklinghausen/Export/DiamantExporter.cs b/ReportImp/AWOMuensterlandRecklinghausen/Export/DiamantExporter.cs index 5480d2082..f09da3969 100644 --- a/ReportImp/AWOMuensterlandRecklinghausen/Export/DiamantExporter.cs +++ b/ReportImp/AWOMuensterlandRecklinghausen/Export/DiamantExporter.cs @@ -59,10 +59,11 @@ namespace AWOMuensterlandRecklinghausen.Export StringBuilder sb = new StringBuilder(); List mergedRows = new List(); - Dictionary oid2Row = new Dictionary(); + Dictionary oid2Row = new Dictionary(); foreach (DataRow row in dt.Rows) { - long oid = (long)row[0]; + string oid = row[0].ToString(); + bool storno = false; if (!oid2Row.ContainsKey(oid)) { @@ -81,10 +82,20 @@ namespace AWOMuensterlandRecklinghausen.Export decimal betrag = ErzeugeBetrag(item); if (betrag != 0) { + if (betrag < 0) + { + storno = true; + } sb.Append(String.Format("{0:0.##}", betrag).Replace(",", ".")); sb.Append(";"); } } + else if (i == 16 && storno) + { + sb.Append("Storno "); + sb.Append(item); + sb.Append(";"); + } else if (i == stopIdx) { sb.Append(item); @@ -173,7 +184,7 @@ namespace AWOMuensterlandRecklinghausen.Export String sql = @" SELECT -cb2sc.Oid, +CONCAT(cb2sc.Oid, ib.InvoiceNumber, Round(sip.Claim, 0)) AS OID, 'F', '0', '124', diff --git a/ReportImp/AWOMuensterlandRecklinghausen/Finanzauswertung.cs b/ReportImp/AWOMuensterlandRecklinghausen/Finanzplanung.cs similarity index 93% rename from ReportImp/AWOMuensterlandRecklinghausen/Finanzauswertung.cs rename to ReportImp/AWOMuensterlandRecklinghausen/Finanzplanung.cs index de9316637..d7067b36a 100644 --- a/ReportImp/AWOMuensterlandRecklinghausen/Finanzauswertung.cs +++ b/ReportImp/AWOMuensterlandRecklinghausen/Finanzplanung.cs @@ -8,9 +8,9 @@ using BS.Shared; namespace AWOMuensterlandRecklinghausen { - public partial class Finanzauswertung : DevExpress.XtraReports.UI.XtraReport // , IBeWoReport + public partial class Finanzplanung : DevExpress.XtraReports.UI.XtraReport { - public Finanzauswertung() + public Finanzplanung() { InitializeComponent(); } diff --git a/ReportImp/AWOMuensterlandRecklinghausen/Finanzauswertung.designer.cs b/ReportImp/AWOMuensterlandRecklinghausen/Finanzplanung.designer.cs similarity index 88% rename from ReportImp/AWOMuensterlandRecklinghausen/Finanzauswertung.designer.cs rename to ReportImp/AWOMuensterlandRecklinghausen/Finanzplanung.designer.cs index c56a7c6e1..79cb11d21 100644 --- a/ReportImp/AWOMuensterlandRecklinghausen/Finanzauswertung.designer.cs +++ b/ReportImp/AWOMuensterlandRecklinghausen/Finanzplanung.designer.cs @@ -1,7 +1,7 @@ using BeWo.Report.ReportObjects; namespace AWOMuensterlandRecklinghausen { - partial class Finanzauswertung + partial class Finanzplanung { /// /// Required designer variable. @@ -31,14 +31,17 @@ namespace AWOMuensterlandRecklinghausen { this.components = new System.ComponentModel.Container(); DevExpress.XtraReports.UI.XRSummary xrSummary1 = new DevExpress.XtraReports.UI.XRSummary(); + DevExpress.XtraReports.UI.XRSummary xrSummary2 = new DevExpress.XtraReports.UI.XRSummary(); this.Detail = new DevExpress.XtraReports.UI.DetailBand(); this.Detail1 = new DevExpress.XtraReports.UI.DetailBand(); this.xrTable2 = new DevExpress.XtraReports.UI.XRTable(); this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow(); this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell29 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell26 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell9 = new DevExpress.XtraReports.UI.XRTableCell(); this.lblTitel = new DevExpress.XtraReports.UI.XRLabel(); this.DetailReport = new DevExpress.XtraReports.UI.DetailReportBand(); this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand(); @@ -50,12 +53,16 @@ namespace AWOMuensterlandRecklinghausen this.cellGeleistetImZeitraumHeader = new DevExpress.XtraReports.UI.XRTableCell(); this.cellRateFactorHeader = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell25 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell(); this.GroupFooter2 = new DevExpress.XtraReports.UI.GroupFooterBand(); this.xrTable3 = new DevExpress.XtraReports.UI.XRTable(); this.xrTableRow3 = new DevExpress.XtraReports.UI.XRTableRow(); this.xrTableCell15 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell16 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell(); this.xrTableCell27 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell10 = new DevExpress.XtraReports.UI.XRTableCell(); this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components); this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand(); this.pageFooterBand1 = new DevExpress.XtraReports.UI.PageFooterBand(); @@ -69,9 +76,7 @@ namespace AWOMuensterlandRecklinghausen this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand(); this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand(); this.ReportFooter = new DevExpress.XtraReports.UI.ReportFooterBand(); - this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell(); - this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell(); - this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell(); + this.fieldBillableAmountYear = new DevExpress.XtraReports.UI.CalculatedField(); ((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit(); @@ -105,7 +110,7 @@ namespace AWOMuensterlandRecklinghausen this.xrTable2.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 3, 0, 0, 100F); this.xrTable2.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] { this.xrTableRow2}); - this.xrTable2.SizeF = new System.Drawing.SizeF(817.7084F, 25F); + this.xrTable2.SizeF = new System.Drawing.SizeF(942.9167F, 25F); this.xrTable2.StylePriority.UseBorders = false; this.xrTable2.StylePriority.UseFont = false; this.xrTable2.StylePriority.UsePadding = false; @@ -119,7 +124,8 @@ namespace AWOMuensterlandRecklinghausen this.xrTableCell7, this.xrTableCell3, this.xrTableCell29, - this.xrTableCell26}); + this.xrTableCell26, + this.xrTableCell9}); this.xrTableRow2.Name = "xrTableRow2"; this.xrTableRow2.Weight = 1D; // @@ -140,13 +146,23 @@ namespace AWOMuensterlandRecklinghausen this.xrTableCell7.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft; this.xrTableCell7.Weight = 0.79763655127335309D; // + // xrTableCell3 + // + this.xrTableCell3.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("Text", null, "SupportConceptFinanceList.CustomerName")}); + this.xrTableCell3.Name = "xrTableCell3"; + this.xrTableCell3.StylePriority.UseTextAlignment = false; + this.xrTableCell3.Text = "xrTableCell3"; + this.xrTableCell3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft; + this.xrTableCell3.Weight = 0.79763654045261245D; + // // xrTableCell29 // this.xrTableCell29.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { new DevExpress.XtraReports.UI.XRBinding("Text", null, "SupportConceptFinanceList.Custom3", "{0:0.00}")}); this.xrTableCell29.Name = "xrTableCell29"; this.xrTableCell29.StylePriority.UseTextAlignment = false; - this.xrTableCell29.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; + this.xrTableCell29.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft; this.xrTableCell29.Weight = 0.37389115840758363D; // // xrTableCell26 @@ -158,13 +174,22 @@ namespace AWOMuensterlandRecklinghausen this.xrTableCell26.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; this.xrTableCell26.Weight = 0.55483772008254539D; // + // xrTableCell9 + // + this.xrTableCell9.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("Text", null, "SupportConceptFinanceList.fieldBillableAmountYear", "{0:c}")}); + this.xrTableCell9.Name = "xrTableCell9"; + this.xrTableCell9.StylePriority.UseTextAlignment = false; + this.xrTableCell9.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; + this.xrTableCell9.Weight = 0.55483772008254539D; + // // lblTitel // this.lblTitel.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Bold); this.lblTitel.LocationFloat = new DevExpress.Utils.PointFloat(0F, 10.00001F); this.lblTitel.Name = "lblTitel"; this.lblTitel.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); - this.lblTitel.SizeF = new System.Drawing.SizeF(1030F, 23F); + this.lblTitel.SizeF = new System.Drawing.SizeF(248.1252F, 23F); this.lblTitel.StylePriority.UseFont = false; this.lblTitel.Text = "Wirtschaftsplan"; // @@ -206,7 +231,7 @@ namespace AWOMuensterlandRecklinghausen this.xrTable1.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 3, 0, 0, 100F); this.xrTable1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] { this.xrTableRow1}); - this.xrTable1.SizeF = new System.Drawing.SizeF(817.7084F, 50F); + this.xrTable1.SizeF = new System.Drawing.SizeF(942.9167F, 50F); this.xrTable1.StylePriority.UseBorders = false; this.xrTable1.StylePriority.UseFont = false; this.xrTable1.StylePriority.UsePadding = false; @@ -220,7 +245,8 @@ namespace AWOMuensterlandRecklinghausen this.xrTableCell2, this.cellGeleistetImZeitraumHeader, this.cellRateFactorHeader, - this.xrTableCell25}); + this.xrTableCell25, + this.xrTableCell8}); this.xrTableRow1.Name = "xrTableRow1"; this.xrTableRow1.Weight = 1.3953493323567705D; // @@ -262,6 +288,14 @@ namespace AWOMuensterlandRecklinghausen this.xrTableCell25.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter; this.xrTableCell25.Weight = 0.5548377192100773D; // + // xrTableCell8 + // + this.xrTableCell8.Name = "xrTableCell8"; + this.xrTableCell8.StylePriority.UseTextAlignment = false; + this.xrTableCell8.Text = "Erlöse Prognose Jahr"; + this.xrTableCell8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter; + this.xrTableCell8.Weight = 0.5548377192100773D; + // // GroupFooter2 // this.GroupFooter2.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { @@ -281,7 +315,7 @@ namespace AWOMuensterlandRecklinghausen this.xrTable3.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 3, 0, 0, 100F); this.xrTable3.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] { this.xrTableRow3}); - this.xrTable3.SizeF = new System.Drawing.SizeF(817.7083F, 25F); + this.xrTable3.SizeF = new System.Drawing.SizeF(942.9166F, 25F); this.xrTable3.StylePriority.UseBorders = false; this.xrTable3.StylePriority.UseFont = false; this.xrTable3.StylePriority.UsePadding = false; @@ -295,7 +329,8 @@ namespace AWOMuensterlandRecklinghausen this.xrTableCell16, this.xrTableCell4, this.xrTableCell5, - this.xrTableCell27}); + this.xrTableCell27, + this.xrTableCell10}); this.xrTableRow3.Name = "xrTableRow3"; this.xrTableRow3.Weight = 1D; // @@ -314,6 +349,20 @@ namespace AWOMuensterlandRecklinghausen this.xrTableCell16.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft; this.xrTableCell16.Weight = 0.79763656271187944D; // + // xrTableCell4 + // + this.xrTableCell4.Name = "xrTableCell4"; + this.xrTableCell4.StylePriority.UseTextAlignment = false; + this.xrTableCell4.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; + this.xrTableCell4.Weight = 0.79763690650198149D; + // + // xrTableCell5 + // + this.xrTableCell5.Name = "xrTableCell5"; + this.xrTableCell5.StylePriority.UseTextAlignment = false; + this.xrTableCell5.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; + this.xrTableCell5.Weight = 0.37389109139763022D; + // // xrTableCell27 // this.xrTableCell27.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { @@ -326,6 +375,18 @@ namespace AWOMuensterlandRecklinghausen this.xrTableCell27.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; this.xrTableCell27.Weight = 0.554837159761131D; // + // xrTableCell10 + // + this.xrTableCell10.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("Text", null, "SupportConceptFinanceList.fieldBillableAmountYear")}); + this.xrTableCell10.Name = "xrTableCell10"; + this.xrTableCell10.StylePriority.UseTextAlignment = false; + xrSummary2.FormatString = "{0:c}"; + xrSummary2.Running = DevExpress.XtraReports.UI.SummaryRunning.Report; + this.xrTableCell10.Summary = xrSummary2; + this.xrTableCell10.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; + this.xrTableCell10.Weight = 0.554837159761131D; + // // bindingSource1 // this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.FinanceRO); @@ -349,9 +410,9 @@ namespace AWOMuensterlandRecklinghausen // this.xrPageInfo2.Font = new System.Drawing.Font("Arial", 8F); this.xrPageInfo2.Format = "Seite {0} von {1}"; - this.xrPageInfo2.LocationFloat = new DevExpress.Utils.PointFloat(677.7084F, 25F); + this.xrPageInfo2.LocationFloat = new DevExpress.Utils.PointFloat(817.7084F, 25F); this.xrPageInfo2.Name = "xrPageInfo2"; - this.xrPageInfo2.SizeF = new System.Drawing.SizeF(140F, 23F); + this.xrPageInfo2.SizeF = new System.Drawing.SizeF(125.2083F, 23F); this.xrPageInfo2.StyleName = "PageInfo"; this.xrPageInfo2.StylePriority.UseFont = false; this.xrPageInfo2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight; @@ -362,7 +423,7 @@ namespace AWOMuensterlandRecklinghausen this.xrPageInfo1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 25F); this.xrPageInfo1.Name = "xrPageInfo1"; this.xrPageInfo1.PageInfo = DevExpress.XtraPrinting.PageInfo.DateTime; - this.xrPageInfo1.SizeF = new System.Drawing.SizeF(270.0002F, 23F); + this.xrPageInfo1.SizeF = new System.Drawing.SizeF(248.1252F, 23F); this.xrPageInfo1.StyleName = "PageInfo"; this.xrPageInfo1.StylePriority.UseFont = false; // @@ -431,31 +492,13 @@ namespace AWOMuensterlandRecklinghausen this.ReportFooter.Name = "ReportFooter"; this.ReportFooter.StylePriority.UseFont = false; // - // xrTableCell3 + // fieldBillableAmountYear // - this.xrTableCell3.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { - new DevExpress.XtraReports.UI.XRBinding("Text", null, "SupportConceptFinanceList.CustomerName")}); - this.xrTableCell3.Name = "xrTableCell3"; - this.xrTableCell3.StylePriority.UseTextAlignment = false; - this.xrTableCell3.Text = "xrTableCell3"; - this.xrTableCell3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; - this.xrTableCell3.Weight = 0.79763654045261245D; + this.fieldBillableAmountYear.DataMember = "SupportConceptFinanceList"; + this.fieldBillableAmountYear.Expression = "[BillableAmountInReportTimeSpan]*12"; + this.fieldBillableAmountYear.Name = "fieldBillableAmountYear"; // - // xrTableCell4 - // - this.xrTableCell4.Name = "xrTableCell4"; - this.xrTableCell4.StylePriority.UseTextAlignment = false; - this.xrTableCell4.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; - this.xrTableCell4.Weight = 0.79763690650198149D; - // - // xrTableCell5 - // - this.xrTableCell5.Name = "xrTableCell5"; - this.xrTableCell5.StylePriority.UseTextAlignment = false; - this.xrTableCell5.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; - this.xrTableCell5.Weight = 0.37389109139763022D; - // - // Finanzauswertung + // Finanzplanung // this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] { this.Detail, @@ -465,6 +508,8 @@ namespace AWOMuensterlandRecklinghausen this.topMarginBand1, this.bottomMarginBand1, this.ReportFooter}); + this.CalculatedFields.AddRange(new DevExpress.XtraReports.UI.CalculatedField[] { + this.fieldBillableAmountYear}); this.DataSource = this.bindingSource1; this.Landscape = true; this.Margins = new System.Drawing.Printing.Margins(45, 40, 50, 30); @@ -528,5 +573,9 @@ namespace AWOMuensterlandRecklinghausen private DevExpress.XtraReports.UI.XRTableCell xrTableCell3; private DevExpress.XtraReports.UI.XRTableCell xrTableCell4; private DevExpress.XtraReports.UI.XRTableCell xrTableCell5; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell9; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell8; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell10; + private DevExpress.XtraReports.UI.CalculatedField fieldBillableAmountYear; } } diff --git a/ReportImp/AWOMuensterlandRecklinghausen/Finanzauswertung.resx b/ReportImp/AWOMuensterlandRecklinghausen/Finanzplanung.resx similarity index 100% rename from ReportImp/AWOMuensterlandRecklinghausen/Finanzauswertung.resx rename to ReportImp/AWOMuensterlandRecklinghausen/Finanzplanung.resx diff --git a/ReportImp/AWOMuensterlandRecklinghausen/Invoicing/CustomInvoiceCreation.cs b/ReportImp/AWOMuensterlandRecklinghausen/Invoicing/CustomInvoiceCreation.cs index efbf913dc..eb750d8a4 100644 --- a/ReportImp/AWOMuensterlandRecklinghausen/Invoicing/CustomInvoiceCreation.cs +++ b/ReportImp/AWOMuensterlandRecklinghausen/Invoicing/CustomInvoiceCreation.cs @@ -52,13 +52,21 @@ namespace AWOMuensterlandRecklinghausen.Invoicing else { var emp = DAOFactory.GenericDAO.GetByID(empOid); - if (emp.TaxNumber == null) - { - //throw new FaultException(new BeWoFault(String.Format("Bei Mitarbeiter*in {0} wurde keine Kostenstelle hinterlegt", emp.Person.FirstNameLastName), BeWoFaultType.CustomWithoutDetails)); - emp.TaxNumber = "312510"; - } - ccEmp = emp.TaxNumber.Substring(3, 3); - emp2Value.Add(empOid, ccEmp); + if (emp == null) + { + ccEmp = "312510".Substring(3, 3); + emp2Value.Add(0, ccEmp); + } + else + { + if (emp.TaxNumber == null) + { + //throw new FaultException(new BeWoFault(String.Format("Bei Mitarbeiter*in {0} wurde keine Kostenstelle hinterlegt", emp.Person.FirstNameLastName), BeWoFaultType.CustomWithoutDetails)); + emp.TaxNumber = "312510"; + } + ccEmp = emp.TaxNumber.Substring(3, 3); + emp2Value.Add(empOid, ccEmp); + } } } //Sonderfälle -> wenn MA mit anderer Quali vertritt, teilweise weiter Ursprungskostenstelle: @@ -166,6 +174,11 @@ namespace AWOMuensterlandRecklinghausen.Invoicing item.UnitCount -= (decimal)0.5; //hours = item.UnitCount ?? 0; } + if (item.ServiceRecord.Notice != null && item.ServiceRecord.Notice.StartsWith("KF-Pauschale")) + { + item.UnitCount = 10; + item.ItemDescription = "Klassenfahrt-Pauschale"; + } item.UnitCount = Math.Round(item.UnitCount ?? 0, 2, MidpointRounding.AwayFromZero); hours = item.UnitCount ?? 0; hourlyRate = item.AmountPerUnit ?? 0; diff --git a/ReportImp/AWOMuensterlandRecklinghausen/StatusCheckAbrechnung.cs b/ReportImp/AWOMuensterlandRecklinghausen/StatusCheckAbrechnung.cs new file mode 100644 index 000000000..c6d0b1aad --- /dev/null +++ b/ReportImp/AWOMuensterlandRecklinghausen/StatusCheckAbrechnung.cs @@ -0,0 +1,77 @@ +using System; +using System.Linq; +using BeWo.Data.Access; +using BeWo.Data.Entities; +using BeWo.Report; +using BeWo.Report.ReportObjects; +using BS.Shared; +using BS.Shared.Core; + +namespace AWOMuensterlandRecklinghausen +{ + public partial class Statuscheck : DevExpress.XtraReports.UI.XtraReport + { + public Statuscheck() + { + InitializeComponent(); + } + + public void SetReportDataSource(FinanceRO pRO) + { + DateTime start = pRO.ReportStartDate.Value; + DateTime end = pRO.ReportEndDate.Value; + DateTimeSpan lastMonth = new DateTimeSpan(); + lastMonth.StartDateTime = start; + lastMonth.EndDateTime = end.AddDays(1).AddTicks(-1); + + if (pRO.SupportConceptFinanceList != null) + { + foreach (var scRo in pRO.SupportConceptFinanceList) + { + scRo.Custom1 = GetTeam(scRo); + // Customer c = DAOFactory.GenericDAO.LoadByID(scro.Costbearer2Supportconcept.SupportConcept.Customer.CustomerOid); + + var serviceRecordOids = scRo.ServiceRecords.Select(s => (long)s.ServiceRecordOid).ToList(); + var customerSignature = DAOFactory.SearchDAO.GetConfirmationReceiptSignatureForServiceRecords(serviceRecordOids, SignatureType.Customer); + + if (!(customerSignature?.SignatureImage is null)) + { + //var CustomerSignatureDate = customerSignature.InsTs; + scRo.Custom2 = "x"; + } + var invoices = DAOFactory.SearchDAO.GetServiceInvoices(scRo.Costbearer2Supportconcept.CostBearer2SupportConceptOid.Value, lastMonth); + var count = 0; + foreach (var ii in invoices) + { + if (ii.IsActive.Equals(ActivationTypeId.Active)) + { + count += 1; + if (count == 1) + { + scRo.Custom3 = String.Format("{0:dd.MM.yyyy}", ii.InvoiceBase.InvoiceDate); + } + + if (count > 1) + { + scRo.Custom3 += String.Format(", {0:dd.MM.yyyy}", ii.InvoiceBase.InvoiceDate); + } + } + } + } + } + + this.bindingSource1.DataSource = pRO; + } + + private string GetTeam(FinanceRO.SupportConceptFinanceRO scRo) + { + string team = " "; + Customer c = DAOFactory.GenericDAO.LoadByID(scRo.Costbearer2Supportconcept.SupportConcept.Customer.Oid ?? 0); + if (c.Team2CustomerList.Count > 0) + { + team = c.Team2CustomerList[0].Team.Name; + } + return team; + } + } +} diff --git a/ReportImp/AWOMuensterlandRecklinghausen/StatusCheckAbrechnung.designer.cs b/ReportImp/AWOMuensterlandRecklinghausen/StatusCheckAbrechnung.designer.cs new file mode 100644 index 000000000..0ec9c6056 --- /dev/null +++ b/ReportImp/AWOMuensterlandRecklinghausen/StatusCheckAbrechnung.designer.cs @@ -0,0 +1,475 @@ +using BeWo.Report.ReportObjects; +namespace AWOMuensterlandRecklinghausen +{ + partial class Statuscheck + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.Detail = new DevExpress.XtraReports.UI.DetailBand(); + this.Detail1 = new DevExpress.XtraReports.UI.DetailBand(); + this.xrTable2 = new DevExpress.XtraReports.UI.XRTable(); + this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow(); + this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell29 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell26 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell9 = new DevExpress.XtraReports.UI.XRTableCell(); + this.lblTitel = new DevExpress.XtraReports.UI.XRLabel(); + this.DetailReport = new DevExpress.XtraReports.UI.DetailReportBand(); + this.GroupHeader2 = new DevExpress.XtraReports.UI.GroupHeaderBand(); + this.xrTable1 = new DevExpress.XtraReports.UI.XRTable(); + this.xrTableRow1 = new DevExpress.XtraReports.UI.XRTableRow(); + this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell(); + this.cellGeleistetImZeitraumHeader = new DevExpress.XtraReports.UI.XRTableCell(); + this.cellRateFactorHeader = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell25 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell(); + this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components); + this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand(); + this.pageFooterBand1 = new DevExpress.XtraReports.UI.PageFooterBand(); + this.xrPageInfo2 = new DevExpress.XtraReports.UI.XRPageInfo(); + this.xrPageInfo1 = new DevExpress.XtraReports.UI.XRPageInfo(); + this.Title = new DevExpress.XtraReports.UI.XRControlStyle(); + this.FieldCaption = new DevExpress.XtraReports.UI.XRControlStyle(); + this.PageInfo = new DevExpress.XtraReports.UI.XRControlStyle(); + this.DataField = new DevExpress.XtraReports.UI.XRControlStyle(); + this.fieldFLS = new DevExpress.XtraReports.UI.CalculatedField(); + this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand(); + this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand(); + this.fieldBillableAmountYear = new DevExpress.XtraReports.UI.CalculatedField(); + this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel(); + this.xrLabel2 = new DevExpress.XtraReports.UI.XRLabel(); + ((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this)).BeginInit(); + // + // Detail + // + this.Detail.Expanded = false; + this.Detail.HeightF = 0F; + this.Detail.Name = "Detail"; + this.Detail.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F); + this.Detail.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft; + // + // Detail1 + // + this.Detail1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { + this.xrTable2}); + this.Detail1.Font = new System.Drawing.Font("Arial", 9F); + this.Detail1.HeightF = 25F; + this.Detail1.KeepTogetherWithDetailReports = true; + this.Detail1.Name = "Detail1"; + this.Detail1.StylePriority.UseFont = false; + // + // xrTable2 + // + this.xrTable2.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right) + | DevExpress.XtraPrinting.BorderSide.Bottom))); + this.xrTable2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F); + this.xrTable2.Name = "xrTable2"; + this.xrTable2.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 3, 0, 0, 100F); + this.xrTable2.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] { + this.xrTableRow2}); + this.xrTable2.SizeF = new System.Drawing.SizeF(1084F, 25F); + this.xrTable2.StylePriority.UseBorders = false; + this.xrTable2.StylePriority.UseFont = false; + this.xrTable2.StylePriority.UsePadding = false; + this.xrTable2.StylePriority.UseTextAlignment = false; + this.xrTable2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft; + // + // xrTableRow2 + // + this.xrTableRow2.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] { + this.xrTableCell6, + this.xrTableCell7, + this.xrTableCell3, + this.xrTableCell29, + this.xrTableCell26, + this.xrTableCell9}); + this.xrTableRow2.Name = "xrTableRow2"; + this.xrTableRow2.Weight = 1D; + // + // xrTableCell6 + // + this.xrTableCell6.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("Text", null, "SupportConceptFinanceList.CustomerName")}); + this.xrTableCell6.Multiline = true; + this.xrTableCell6.Name = "xrTableCell6"; + this.xrTableCell6.Weight = 0.88626284710752745D; + // + // xrTableCell7 + // + this.xrTableCell7.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("Text", null, "SupportConceptFinanceList.CostBearerName")}); + this.xrTableCell7.Name = "xrTableCell7"; + this.xrTableCell7.StylePriority.UseTextAlignment = false; + this.xrTableCell7.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft; + this.xrTableCell7.Weight = 0.88626283840426057D; + // + // xrTableCell3 + // + this.xrTableCell3.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("Text", null, "SupportConceptFinanceList.Custom1")}); + this.xrTableCell3.Name = "xrTableCell3"; + this.xrTableCell3.StylePriority.UseTextAlignment = false; + this.xrTableCell3.Text = "xrTableCell3"; + this.xrTableCell3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft; + this.xrTableCell3.Weight = 0.8862628613917658D; + // + // xrTableCell29 + // + this.xrTableCell29.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("Text", null, "SupportConceptFinanceList.Custom2", "{0:0.00}")}); + this.xrTableCell29.Name = "xrTableCell29"; + this.xrTableCell29.StylePriority.UseTextAlignment = false; + this.xrTableCell29.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter; + this.xrTableCell29.Weight = 0.44313142566772529D; + // + // xrTableCell26 + // + this.xrTableCell26.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("Text", null, "SupportConceptFinanceList.Custom3", "{0:c}")}); + this.xrTableCell26.Name = "xrTableCell26"; + this.xrTableCell26.StylePriority.UseTextAlignment = false; + this.xrTableCell26.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter; + this.xrTableCell26.Weight = 0.44313115228486588D; + // + // xrTableCell9 + // + this.xrTableCell9.Name = "xrTableCell9"; + this.xrTableCell9.StylePriority.UseTextAlignment = false; + this.xrTableCell9.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; + this.xrTableCell9.Weight = 1.2584958013667649D; + // + // lblTitel + // + this.lblTitel.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Bold); + this.lblTitel.LocationFloat = new DevExpress.Utils.PointFloat(0F, 10.00001F); + this.lblTitel.Name = "lblTitel"; + this.lblTitel.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + this.lblTitel.SizeF = new System.Drawing.SizeF(200F, 23F); + this.lblTitel.StylePriority.UseFont = false; + this.lblTitel.Text = "Status Abrechnung"; + // + // DetailReport + // + this.DetailReport.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] { + this.Detail1, + this.GroupHeader2}); + this.DetailReport.DataMember = "SupportConceptFinanceList"; + this.DetailReport.DataSource = this.bindingSource1; + this.DetailReport.Level = 0; + this.DetailReport.Name = "DetailReport"; + // + // GroupHeader2 + // + this.GroupHeader2.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { + this.xrTable1}); + this.GroupHeader2.HeightF = 50F; + this.GroupHeader2.Name = "GroupHeader2"; + this.GroupHeader2.RepeatEveryPage = true; + // + // xrTable1 + // + this.xrTable1.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top) + | DevExpress.XtraPrinting.BorderSide.Right) + | DevExpress.XtraPrinting.BorderSide.Bottom))); + this.xrTable1.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold); + this.xrTable1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F); + this.xrTable1.Name = "xrTable1"; + this.xrTable1.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 3, 0, 0, 100F); + this.xrTable1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] { + this.xrTableRow1}); + this.xrTable1.SizeF = new System.Drawing.SizeF(1084F, 50F); + this.xrTable1.StylePriority.UseBorders = false; + this.xrTable1.StylePriority.UseFont = false; + this.xrTable1.StylePriority.UsePadding = false; + this.xrTable1.StylePriority.UseTextAlignment = false; + this.xrTable1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft; + // + // xrTableRow1 + // + this.xrTableRow1.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] { + this.xrTableCell1, + this.xrTableCell2, + this.cellGeleistetImZeitraumHeader, + this.cellRateFactorHeader, + this.xrTableCell25, + this.xrTableCell8}); + this.xrTableRow1.Name = "xrTableRow1"; + this.xrTableRow1.Weight = 1.3953493323567705D; + // + // xrTableCell1 + // + this.xrTableCell1.Name = "xrTableCell1"; + this.xrTableCell1.Text = "Klient, Vorname"; + this.xrTableCell1.Weight = 0.8862628989566943D; + // + // xrTableCell2 + // + this.xrTableCell2.Name = "xrTableCell2"; + this.xrTableCell2.StylePriority.UseTextAlignment = false; + this.xrTableCell2.Text = "Kostenträger"; + this.xrTableCell2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft; + this.xrTableCell2.Weight = 0.88626292606899781D; + // + // cellGeleistetImZeitraumHeader + // + this.cellGeleistetImZeitraumHeader.Name = "cellGeleistetImZeitraumHeader"; + this.cellGeleistetImZeitraumHeader.StylePriority.UseTextAlignment = false; + this.cellGeleistetImZeitraumHeader.Text = "Team"; + this.cellGeleistetImZeitraumHeader.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter; + this.cellGeleistetImZeitraumHeader.Weight = 0.88626290163437182D; + // + // cellRateFactorHeader + // + this.cellRateFactorHeader.Name = "cellRateFactorHeader"; + this.cellRateFactorHeader.StylePriority.UseTextAlignment = false; + this.cellRateFactorHeader.Text = "Gültige Unterschrift"; + this.cellRateFactorHeader.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter; + this.cellRateFactorHeader.Weight = 0.44313145800725584D; + // + // xrTableCell25 + // + this.xrTableCell25.Name = "xrTableCell25"; + this.xrTableCell25.StylePriority.UseTextAlignment = false; + this.xrTableCell25.Text = "Rechnung Ausdruck"; + this.xrTableCell25.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter; + this.xrTableCell25.Weight = 0.44313145010736071D; + // + // xrTableCell8 + // + this.xrTableCell8.Name = "xrTableCell8"; + this.xrTableCell8.StylePriority.UseTextAlignment = false; + this.xrTableCell8.Text = "Bemerkung"; + this.xrTableCell8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter; + this.xrTableCell8.Weight = 1.2584944495007986D; + // + // bindingSource1 + // + this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.FinanceRO); + // + // ReportHeader + // + this.ReportHeader.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { + this.xrLabel2, + this.xrLabel1, + this.lblTitel}); + this.ReportHeader.HeightF = 52.08333F; + this.ReportHeader.Name = "ReportHeader"; + // + // pageFooterBand1 + // + this.pageFooterBand1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { + this.xrPageInfo2, + this.xrPageInfo1}); + this.pageFooterBand1.HeightF = 48.00002F; + this.pageFooterBand1.Name = "pageFooterBand1"; + // + // xrPageInfo2 + // + this.xrPageInfo2.Font = new System.Drawing.Font("Arial", 8F); + this.xrPageInfo2.Format = "Seite {0} von {1}"; + this.xrPageInfo2.LocationFloat = new DevExpress.Utils.PointFloat(799.9999F, 25F); + this.xrPageInfo2.Name = "xrPageInfo2"; + this.xrPageInfo2.SizeF = new System.Drawing.SizeF(284.0002F, 23F); + this.xrPageInfo2.StyleName = "PageInfo"; + this.xrPageInfo2.StylePriority.UseFont = false; + this.xrPageInfo2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight; + // + // xrPageInfo1 + // + this.xrPageInfo1.Font = new System.Drawing.Font("Arial", 8F); + this.xrPageInfo1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 25F); + this.xrPageInfo1.Name = "xrPageInfo1"; + this.xrPageInfo1.PageInfo = DevExpress.XtraPrinting.PageInfo.DateTime; + this.xrPageInfo1.SizeF = new System.Drawing.SizeF(270.0002F, 23F); + this.xrPageInfo1.StyleName = "PageInfo"; + this.xrPageInfo1.StylePriority.UseFont = false; + // + // Title + // + this.Title.BackColor = System.Drawing.Color.White; + this.Title.BorderColor = System.Drawing.SystemColors.ControlText; + this.Title.Borders = DevExpress.XtraPrinting.BorderSide.None; + this.Title.BorderWidth = 1F; + this.Title.Font = new System.Drawing.Font("Times New Roman", 24F); + this.Title.ForeColor = System.Drawing.Color.Black; + this.Title.Name = "Title"; + // + // FieldCaption + // + this.FieldCaption.BackColor = System.Drawing.Color.White; + this.FieldCaption.BorderColor = System.Drawing.SystemColors.ControlText; + this.FieldCaption.Borders = DevExpress.XtraPrinting.BorderSide.None; + this.FieldCaption.BorderWidth = 1F; + this.FieldCaption.Font = new System.Drawing.Font("Times New Roman", 10F, System.Drawing.FontStyle.Bold); + this.FieldCaption.ForeColor = System.Drawing.Color.Black; + this.FieldCaption.Name = "FieldCaption"; + // + // PageInfo + // + this.PageInfo.BackColor = System.Drawing.Color.White; + this.PageInfo.BorderColor = System.Drawing.SystemColors.ControlText; + this.PageInfo.Borders = DevExpress.XtraPrinting.BorderSide.None; + this.PageInfo.BorderWidth = 1F; + this.PageInfo.Font = new System.Drawing.Font("Times New Roman", 8F); + this.PageInfo.ForeColor = System.Drawing.Color.Black; + this.PageInfo.Name = "PageInfo"; + // + // DataField + // + this.DataField.BackColor = System.Drawing.Color.White; + this.DataField.BorderColor = System.Drawing.SystemColors.ControlText; + this.DataField.Borders = DevExpress.XtraPrinting.BorderSide.None; + this.DataField.BorderWidth = 1F; + this.DataField.Font = new System.Drawing.Font("Times New Roman", 8F); + this.DataField.ForeColor = System.Drawing.SystemColors.ControlText; + this.DataField.Name = "DataField"; + // + // fieldFLS + // + this.fieldFLS.DataMember = "FLSReportGroups"; + this.fieldFLS.DataSource = this.bindingSource1; + this.fieldFLS.Expression = "[TotalFLM] / 60"; + this.fieldFLS.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal; + this.fieldFLS.Name = "fieldFLS"; + // + // topMarginBand1 + // + this.topMarginBand1.HeightF = 50F; + this.topMarginBand1.Name = "topMarginBand1"; + // + // bottomMarginBand1 + // + this.bottomMarginBand1.HeightF = 30F; + this.bottomMarginBand1.Name = "bottomMarginBand1"; + // + // fieldBillableAmountYear + // + this.fieldBillableAmountYear.DataMember = "SupportConceptFinanceList"; + this.fieldBillableAmountYear.Expression = "[BillableAmountInReportTimeSpan]*12"; + this.fieldBillableAmountYear.Name = "fieldBillableAmountYear"; + // + // xrLabel1 + // + this.xrLabel1.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold); + this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(200F, 10.00001F); + this.xrLabel1.Name = "xrLabel1"; + this.xrLabel1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + this.xrLabel1.SizeF = new System.Drawing.SizeF(200F, 23F); + this.xrLabel1.StylePriority.UseFont = false; + this.xrLabel1.StylePriority.UseTextAlignment = false; + this.xrLabel1.Text = "Abrechnungszeitraum:"; + this.xrLabel1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft; + // + // xrLabel2 + // + this.xrLabel2.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold); + this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(400F, 10.00001F); + this.xrLabel2.Name = "xrLabel2"; + this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + this.xrLabel2.SizeF = new System.Drawing.SizeF(200F, 23F); + this.xrLabel2.StylePriority.UseFont = false; + this.xrLabel2.StylePriority.UseTextAlignment = false; + this.xrLabel2.Text = "[ReportStartDate!dd.MM.yyyy] - [ReportEndDate!dd.MM.yyyy]"; + this.xrLabel2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft; + // + // Statuscheck + // + this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] { + this.Detail, + this.DetailReport, + this.ReportHeader, + this.pageFooterBand1, + this.topMarginBand1, + this.bottomMarginBand1}); + this.CalculatedFields.AddRange(new DevExpress.XtraReports.UI.CalculatedField[] { + this.fieldBillableAmountYear}); + this.DataSource = this.bindingSource1; + this.Landscape = true; + this.Margins = new System.Drawing.Printing.Margins(45, 40, 50, 30); + this.PageHeight = 827; + this.PageWidth = 1169; + this.PaperKind = System.Drawing.Printing.PaperKind.A4; + this.StyleSheet.AddRange(new DevExpress.XtraReports.UI.XRControlStyle[] { + this.Title, + this.FieldCaption, + this.PageInfo, + this.DataField}); + this.Version = "17.1"; + ((System.ComponentModel.ISupportInitialize)(this.xrTable2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this)).EndInit(); + + } + + #endregion + + private DevExpress.XtraReports.UI.DetailBand Detail; + private System.Windows.Forms.BindingSource bindingSource1; + private DevExpress.XtraReports.UI.DetailBand Detail1; + private DevExpress.XtraReports.UI.DetailReportBand DetailReport; + private DevExpress.XtraReports.UI.ReportHeaderBand ReportHeader; + private DevExpress.XtraReports.UI.PageFooterBand pageFooterBand1; + private DevExpress.XtraReports.UI.XRPageInfo xrPageInfo2; + private DevExpress.XtraReports.UI.XRPageInfo xrPageInfo1; + private DevExpress.XtraReports.UI.XRControlStyle Title; + private DevExpress.XtraReports.UI.XRControlStyle FieldCaption; + private DevExpress.XtraReports.UI.XRControlStyle PageInfo; + private DevExpress.XtraReports.UI.XRControlStyle DataField; + private DevExpress.XtraReports.UI.CalculatedField fieldFLS; + private DevExpress.XtraReports.UI.TopMarginBand topMarginBand1; + private DevExpress.XtraReports.UI.BottomMarginBand bottomMarginBand1; + private DevExpress.XtraReports.UI.XRLabel lblTitel; + private DevExpress.XtraReports.UI.XRTable xrTable2; + private DevExpress.XtraReports.UI.XRTableRow xrTableRow2; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell6; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell7; + private DevExpress.XtraReports.UI.XRTable xrTable1; + private DevExpress.XtraReports.UI.XRTableRow xrTableRow1; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell1; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell2; + private DevExpress.XtraReports.UI.GroupHeaderBand GroupHeader2; + private DevExpress.XtraReports.UI.XRTableCell cellGeleistetImZeitraumHeader; + private DevExpress.XtraReports.UI.XRTableCell cellRateFactorHeader; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell25; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell26; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell29; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell3; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell9; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell8; + private DevExpress.XtraReports.UI.CalculatedField fieldBillableAmountYear; + private DevExpress.XtraReports.UI.XRLabel xrLabel2; + private DevExpress.XtraReports.UI.XRLabel xrLabel1; + } +} diff --git a/ReportImp/AWOMuensterlandRecklinghausen/StatusCheckAbrechnung.resx b/ReportImp/AWOMuensterlandRecklinghausen/StatusCheckAbrechnung.resx new file mode 100644 index 000000000..d25f3eba2 --- /dev/null +++ b/ReportImp/AWOMuensterlandRecklinghausen/StatusCheckAbrechnung.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/ReportImp/AWOMuensterlandRecklinghausen/Validation/ServiceRecordValidator.cs b/ReportImp/AWOMuensterlandRecklinghausen/Validation/ServiceRecordValidator.cs index 55920f6a3..e5da750ab 100644 --- a/ReportImp/AWOMuensterlandRecklinghausen/Validation/ServiceRecordValidator.cs +++ b/ReportImp/AWOMuensterlandRecklinghausen/Validation/ServiceRecordValidator.cs @@ -10,34 +10,95 @@ namespace AWOMuensterlandRecklinghausen.Validation { public class CustomServiceRecordValidator : ServiceRecordValidator { - public override List ValidateServiceRecord(ServiceRecordDC newServiceRecord, SupportConceptStatisticsDC statistics, - int maxDaysEditServiceRecordsAllowed, IList employeeOids, IList cb2scOids) - { - var list = base.ValidateServiceRecord(newServiceRecord, statistics, maxDaysEditServiceRecordsAllowed, employeeOids, cb2scOids); - var vs = PluginLoader.FindClass(); - var ferien = vs.GetFerien(newServiceRecord.Start.Value, "nrw"); - if (ferien != null) - { - var e = DAOFactory.GenericDAO.LoadByID(newServiceRecord.Employee.EmployeeOid); - var c = e.GetValidContractForDate(newServiceRecord.Start.Value); - if (c != null && c.EmploymentType != null) - { - if (c.EmploymentType.Name.StartsWith("MA mit")) - { + public override List ValidateServiceRecord(ServiceRecordDC newServiceRecord, SupportConceptStatisticsDC statistics, + int maxDaysEditServiceRecordsAllowed, IList employeeOids, IList cb2scOids) + { + var list = base.ValidateServiceRecord(newServiceRecord, statistics, maxDaysEditServiceRecordsAllowed, employeeOids, cb2scOids); + var e = DAOFactory.GenericDAO.LoadByID(newServiceRecord.Employee.EmployeeOid); + var c = e.GetValidContractForDate(newServiceRecord.Start.Value); + var vs = PluginLoader.FindClass(); + // Check für MA mit ob Eintrag in den Ferien liegt + var ferien = vs.GetFerien(newServiceRecord.Start.Value, "nrw"); + if (ferien != null) + { + if (c != null && c.EmploymentType != null) + { + if (c.EmploymentType.Name.StartsWith("MA mit")) + { String handlungsOption = "Möchten Sie trotzdem Speichern?"; bool hatDasRechtTrotzdemZuSpeichern = true; list.Add(new ServiceRecordValidationResultDC - { - ResultType = ServiceRecordValidationResult.Custom, - Message = "Achtung dieser Zeiterfassungseintrag liegt in den Schulferien und damit außerhalb Ihrer Arbeitszeit.\n" + handlungsOption, - Allow = hatDasRechtTrotzdemZuSpeichern + { + ResultType = ServiceRecordValidationResult.Custom, + Message = "Achtung dieser Zeiterfassungseintrag liegt in den Schulferien und damit außerhalb Ihrer Arbeitszeit.\n" + handlungsOption, + Allow = hatDasRechtTrotzdemZuSpeichern }); - } - } - } - return list; - } + } + } + } + //Check ob MonatsMax erreicht ist, da Übertragbarkeit nur innerhalb des Monats ok + SupportConceptPeriodStatisticsDC periodStat = GetStatisticsForServiceRecord(statistics, newServiceRecord); + if (periodStat != null) + { + if (periodStat.SupportConceptApprovalPeriod != null && periodStat.SupportConceptApprovalPeriod.IsApprovedBEShifting) + { + + DateTime start = new DateTime(newServiceRecord.Start.Value.Year, newServiceRecord.Start.Value.Month, 1); + DateTime end = start.AddMonths(1).AddDays(-1); + TimeSpan ts = end.Subtract(start); + int arbeitstageProWoche = 5; + var maxDays = (decimal)ts.TotalDays; + + while (start < end) + { + var ferientag = vs.GetFerien(start, "nrw"); + if (c != null && c.WeeklyDays.HasValue && c.WeeklyDays > 0) + { + arbeitstageProWoche = c.WeeklyDays.Value; + } + if (arbeitstageProWoche <= 5 && (start.DayOfWeek == DayOfWeek.Saturday || start.DayOfWeek == DayOfWeek.Sunday)) + { + maxDays -= 1; + } + else + { + if (ferientag != null) + { + maxDays -= 1; + } + else + { + maxDays -= vs.GetFeiertagsFaktor(start); + } + } + start = start.AddDays(1); + } + decimal flsTotalForPeriod = Math.Round(periodStat.MinutesProvidedThisMonth / 60, 2, MidpointRounding.AwayFromZero); + if (periodStat.SupportConceptApprovalPeriod.ApprovedBEInterval.HasValue && periodStat.SupportConceptApprovalPeriod.ApprovedBEInterval.Value == SupportConceptApprovalInterval.Weekly + && periodStat.SupportConceptApprovalPeriod.ApprovedBEPerInterval.HasValue) + { + decimal newtotalfls = newServiceRecord.RoundedDuration / 60 + flsTotalForPeriod; + decimal maxAllowed = periodStat.SupportConceptApprovalPeriod.ApprovedBEPerInterval.Value / arbeitstageProWoche * maxDays; + + if (maxAllowed > 0 && newtotalfls > maxAllowed) + { + String handlungsOption = "Möchten Sie trotzdem Speichern?"; + bool hatDasRechtTrotzdemZuSpeichern = true; + + list.Add(new ServiceRecordValidationResultDC + { + ResultType = ServiceRecordValidationResult.Custom, + Message = "Achtung dieser Zeiterfassungseintrag überschreitet das monatliche Maximum der bewilligten Stunden.\n" + handlungsOption, + Allow = hatDasRechtTrotzdemZuSpeichern + }); + } + } + } + } + + return list; + } } } \ No newline at end of file