From a1baf51af8768d667d5063a4a32bbb87339c3a6a Mon Sep 17 00:00:00 2001 From: Alexandra Date: Wed, 28 Jan 2026 14:16:53 +0100 Subject: [PATCH 1/3] =?UTF-8?q?Ruhrstern/Reporting/ServiceInvoiceReportBew?= =?UTF-8?q?o=20-=20neue=20Vorlage=20und=20Logik=20f=C3=BCr=20Selbstzahler?= =?UTF-8?q?=20BeWo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Invoicing/CustomInvoiceCreation.cs | 8 + .../Reporting/ServiceInvoiceReport.cs | 8 +- .../ServiceInvoiceReportBewo.Designer.cs | 919 ++++++++++++++++++ .../Reporting/ServiceInvoiceReportBewo.cs | 103 ++ .../Reporting/ServiceInvoiceReportBewo.resx | 129 +++ ReportImp/Ruhrstern/Ruhrstern.csproj | 10 + 6 files changed, 1175 insertions(+), 2 deletions(-) create mode 100644 ReportImp/Ruhrstern/Reporting/ServiceInvoiceReportBewo.Designer.cs create mode 100644 ReportImp/Ruhrstern/Reporting/ServiceInvoiceReportBewo.cs create mode 100644 ReportImp/Ruhrstern/Reporting/ServiceInvoiceReportBewo.resx diff --git a/ReportImp/Ruhrstern/Invoicing/CustomInvoiceCreation.cs b/ReportImp/Ruhrstern/Invoicing/CustomInvoiceCreation.cs index b7129f733..708786b8c 100644 --- a/ReportImp/Ruhrstern/Invoicing/CustomInvoiceCreation.cs +++ b/ReportImp/Ruhrstern/Invoicing/CustomInvoiceCreation.cs @@ -83,6 +83,14 @@ namespace Ruhrstern.Invoicing return ii; } + public override void SetRecipientInformation(ServiceInvoice serviceInvoice, CostBearer costBearer) + { + base.SetRecipientInformation(serviceInvoice, costBearer); + if (costBearer.Organisation.Name.ToLower() == "selbstzahler") + { + serviceInvoice.InvoiceBase.InvoiceId = "BeWo"; + } + } public override IList CreateSummaryInvoiceItems(IList itemList, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap, Calculations calc) { diff --git a/ReportImp/Ruhrstern/Reporting/ServiceInvoiceReport.cs b/ReportImp/Ruhrstern/Reporting/ServiceInvoiceReport.cs index 209a95fd5..d77b7a388 100644 --- a/ReportImp/Ruhrstern/Reporting/ServiceInvoiceReport.cs +++ b/ReportImp/Ruhrstern/Reporting/ServiceInvoiceReport.cs @@ -18,7 +18,11 @@ namespace Ruhrstern public void SetReportDataSource(ServiceInvoiceRO pRO) { StringBuilder sb = new StringBuilder(); - if (!String.IsNullOrEmpty(pRO.RecipientOrganisation) && !String.IsNullOrEmpty(pRO.RecipientOrganisation.Trim())) + if (!String.IsNullOrEmpty(pRO.RecipientOrganisation) && pRO.RecipientOrganisation.ToLower() != "selbstzahler") + { + sb.AppendLine(pRO.RecipientOrganisation); + } + if (!String.IsNullOrEmpty(pRO.RecipientOrganisation) && !String.IsNullOrEmpty(pRO.RecipientOrganisation.Trim()) && pRO.RecipientOrganisation.ToLower() != "selbstzahler") { sb.AppendLine(pRO.RecipientOrganisation); } @@ -26,7 +30,7 @@ namespace Ruhrstern { sb.AppendLine(pRO.RecipientContactPerson); } - if (!String.IsNullOrEmpty(pRO.RecipientDivision) && !String.IsNullOrEmpty(pRO.RecipientDivision.Trim())) + if (!String.IsNullOrEmpty(pRO.RecipientDivision) && !String.IsNullOrEmpty(pRO.RecipientOrganisation) && pRO.RecipientOrganisation.ToLower() != "selbstzahler") { sb.AppendLine(pRO.RecipientDivision); } diff --git a/ReportImp/Ruhrstern/Reporting/ServiceInvoiceReportBewo.Designer.cs b/ReportImp/Ruhrstern/Reporting/ServiceInvoiceReportBewo.Designer.cs new file mode 100644 index 000000000..03df23432 --- /dev/null +++ b/ReportImp/Ruhrstern/Reporting/ServiceInvoiceReportBewo.Designer.cs @@ -0,0 +1,919 @@ +using BeWo.Report.ReportObjects; +namespace Ruhrstern +{ + partial class ServiceInvoiceReportBeWo + { + /// + /// 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); + } + + + /// + /// 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(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServiceInvoiceReportBeWo)); + DevExpress.XtraReports.UI.XRWatermark xrWatermark1 = new DevExpress.XtraReports.UI.XRWatermark(); + this.Detail = new DevExpress.XtraReports.UI.DetailBand(); + this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand(); + this.ruleRateFactorNull = new DevExpress.XtraReports.UI.FormattingRule(); + this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand(); + this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand(); + this.Page1 = new DevExpress.XtraReports.UI.GroupHeaderBand(); + this.lblAdresse = new DevExpress.XtraReports.UI.XRLabel(); + this.xrLabel4 = new DevExpress.XtraReports.UI.XRLabel(); + this.xrLabel3 = new DevExpress.XtraReports.UI.XRLabel(); + this.xrLabel2 = new DevExpress.XtraReports.UI.XRLabel(); + this.lblAnrede = new DevExpress.XtraReports.UI.XRLabel(); + this.xrLabel8 = new DevExpress.XtraReports.UI.XRLabel(); + this.lblAbrechnungszeitraum = new DevExpress.XtraReports.UI.XRLabel(); + this.xrTable2 = new DevExpress.XtraReports.UI.XRTable(); + this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow(); + this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableRow5 = new DevExpress.XtraReports.UI.XRTableRow(); + this.xrTableCell13 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableRow4 = new DevExpress.XtraReports.UI.XRTableRow(); + this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableRow3 = new DevExpress.XtraReports.UI.XRTableRow(); + this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableRow8 = new DevExpress.XtraReports.UI.XRTableRow(); + this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableRow7 = new DevExpress.XtraReports.UI.XRTableRow(); + this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrLabel15 = new DevExpress.XtraReports.UI.XRLabel(); + this.xrTable4 = new DevExpress.XtraReports.UI.XRTable(); + this.xrTableRow10 = new DevExpress.XtraReports.UI.XRTableRow(); + this.xrTableCell9 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableRow14 = new DevExpress.XtraReports.UI.XRTableRow(); + this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrLabel14 = new DevExpress.XtraReports.UI.XRLabel(); + this.DetailReport = new DevExpress.XtraReports.UI.DetailReportBand(); + this.Detail1 = new DevExpress.XtraReports.UI.DetailBand(); + this.xrTable5 = new DevExpress.XtraReports.UI.XRTable(); + this.xrTableRow23 = new DevExpress.XtraReports.UI.XRTableRow(); + this.xrTableCell32 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell37 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell35 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell33 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell36 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell38 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell34 = new DevExpress.XtraReports.UI.XRTableCell(); + this.DetailReport2 = new DevExpress.XtraReports.UI.DetailReportBand(); + this.Detail3 = new DevExpress.XtraReports.UI.DetailBand(); + this.xrTable6 = new DevExpress.XtraReports.UI.XRTable(); + this.xrTableRow25 = new DevExpress.XtraReports.UI.XRTableRow(); + this.xrTableCell40 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell42 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell43 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell44 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell45 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell46 = new DevExpress.XtraReports.UI.XRTableCell(); + this.xrTableCell47 = new DevExpress.XtraReports.UI.XRTableCell(); + this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand(); + this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel(); + this.xrPictureBox1 = new DevExpress.XtraReports.UI.XRPictureBox(); + this.xrLabel7 = new DevExpress.XtraReports.UI.XRLabel(); + this.xrLabel6 = new DevExpress.XtraReports.UI.XRLabel(); + this.xrLabel5 = new DevExpress.XtraReports.UI.XRLabel(); + this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components); + ((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.xrTable4)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.xrTable5)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.xrTable6)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this)).BeginInit(); + // + // Detail + // + 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; + // + // ReportHeader + // + this.ReportHeader.Font = new DevExpress.Drawing.DXFont("Verdana", 10F); + this.ReportHeader.HeightF = 0F; + this.ReportHeader.Name = "ReportHeader"; + this.ReportHeader.StylePriority.UseFont = false; + // + // ruleRateFactorNull + // + this.ruleRateFactorNull.Condition = "[RateFactorText2] == ?"; + this.ruleRateFactorNull.Formatting.Visible = DevExpress.Utils.DefaultBoolean.False; + this.ruleRateFactorNull.Name = "ruleRateFactorNull"; + // + // topMarginBand1 + // + this.topMarginBand1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { + this.xrPictureBox1}); + this.topMarginBand1.HeightF = 157.5F; + this.topMarginBand1.Name = "topMarginBand1"; + // + // bottomMarginBand1 + // + this.bottomMarginBand1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { + this.xrLabel7}); + this.bottomMarginBand1.HeightF = 50F; + this.bottomMarginBand1.Name = "bottomMarginBand1"; + // + // Page1 + // + this.Page1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { + this.xrLabel6, + this.lblAdresse, + this.xrLabel4, + this.xrLabel3, + this.xrLabel2, + this.lblAnrede, + this.xrLabel8, + this.lblAbrechnungszeitraum, + this.xrTable2}); + this.Page1.Font = new DevExpress.Drawing.DXFont("Verdana", 10F); + this.Page1.HeightF = 447.8333F; + this.Page1.Name = "Page1"; + this.Page1.StylePriority.UseFont = false; + // + // lblAdresse + // + this.lblAdresse.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F); + this.lblAdresse.Multiline = true; + this.lblAdresse.Name = "lblAdresse"; + this.lblAdresse.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + this.lblAdresse.SizeF = new System.Drawing.SizeF(317F, 111.5F); + this.lblAdresse.StylePriority.UseFont = false; + this.lblAdresse.Text = "[RecipientOrganisation]\r\n[RecipientContactPerson]\r\n[RecipientDivision]\r\n[Recipien" + + "tStreet]\r\n[RecipientPostCodeAndTown]"; + // + // xrLabel4 + // + this.xrLabel4.BackColor = System.Drawing.Color.Transparent; + this.xrLabel4.CanShrink = true; + this.xrLabel4.Font = new DevExpress.Drawing.DXFont("Verdana", 9.75F, DevExpress.Drawing.DXFontStyle.Bold, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] { + new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))}); + this.xrLabel4.LocationFloat = new DevExpress.Utils.PointFloat(0.0001907349F, 301.6666F); + this.xrLabel4.Multiline = true; + this.xrLabel4.Name = "xrLabel4"; + this.xrLabel4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + this.xrLabel4.SizeF = new System.Drawing.SizeF(650F, 20F); + this.xrLabel4.StylePriority.UseBackColor = false; + this.xrLabel4.StylePriority.UseFont = false; + this.xrLabel4.Text = "[CustomerReferenceNumber]"; + this.xrLabel4.WordWrap = false; + // + // xrLabel3 + // + this.xrLabel3.BackColor = System.Drawing.Color.Transparent; + this.xrLabel3.CanShrink = true; + this.xrLabel3.Font = new DevExpress.Drawing.DXFont("Verdana", 9.75F, DevExpress.Drawing.DXFontStyle.Bold, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] { + new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))}); + this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(0.0001907349F, 281.6666F); + this.xrLabel3.Name = "xrLabel3"; + this.xrLabel3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + this.xrLabel3.SizeF = new System.Drawing.SizeF(650F, 20F); + this.xrLabel3.StylePriority.UseBackColor = false; + this.xrLabel3.StylePriority.UseFont = false; + this.xrLabel3.Text = "Abrechnung Betreuungsleistungen für [CustomerSalutation] [CustomerName], geb. [Cu" + + "stomerBirthdate!dd.MM.yyyy]"; + this.xrLabel3.WordWrap = false; + // + // xrLabel2 + // + this.xrLabel2.BackColor = System.Drawing.Color.Transparent; + this.xrLabel2.CanShrink = true; + this.xrLabel2.Font = new DevExpress.Drawing.DXFont("Verdana", 9.75F, DevExpress.Drawing.DXFontStyle.Bold, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] { + new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))}); + this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(0.0001907349F, 261.6666F); + this.xrLabel2.Name = "xrLabel2"; + this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + this.xrLabel2.SizeF = new System.Drawing.SizeF(650F, 20F); + this.xrLabel2.StylePriority.UseBackColor = false; + this.xrLabel2.StylePriority.UseFont = false; + this.xrLabel2.Text = "Rechnung Nr. [InvoiceNumber]"; + this.xrLabel2.WordWrap = false; + // + // lblAnrede + // + this.lblAnrede.LocationFloat = new DevExpress.Utils.PointFloat(0F, 376.6666F); + this.lblAnrede.Name = "lblAnrede"; + this.lblAnrede.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + this.lblAnrede.SizeF = new System.Drawing.SizeF(317F, 17F); + this.lblAnrede.StylePriority.UseFont = false; + this.lblAnrede.Text = "Sehr geehrte Damen und Herren,"; + // + // xrLabel8 + // + this.xrLabel8.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("Text", null, "InvoiceDate")}); + this.xrLabel8.LocationFloat = new DevExpress.Utils.PointFloat(376F, 200.125F); + this.xrLabel8.Name = "xrLabel8"; + this.xrLabel8.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + this.xrLabel8.SizeF = new System.Drawing.SizeF(274F, 23F); + this.xrLabel8.StylePriority.UseTextAlignment = false; + this.xrLabel8.Text = "xrLabel8"; + this.xrLabel8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight; + // + // lblAbrechnungszeitraum + // + this.lblAbrechnungszeitraum.LocationFloat = new DevExpress.Utils.PointFloat(0F, 416.2499F); + this.lblAbrechnungszeitraum.Multiline = true; + this.lblAbrechnungszeitraum.Name = "lblAbrechnungszeitraum"; + this.lblAbrechnungszeitraum.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + this.lblAbrechnungszeitraum.SizeF = new System.Drawing.SizeF(642F, 31.58334F); + this.lblAbrechnungszeitraum.StylePriority.UseFont = false; + this.lblAbrechnungszeitraum.Text = "hiermit berechnen wir für den ... folgende erbrachte Tätigkeiten:"; + // + // xrTable2 + // + this.xrTable2.LocationFloat = new DevExpress.Utils.PointFloat(376F, 56.45843F); + this.xrTable2.Name = "xrTable2"; + this.xrTable2.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] { + this.xrTableRow2, + this.xrTableRow5, + this.xrTableRow4, + this.xrTableRow3, + this.xrTableRow8, + this.xrTableRow7}); + this.xrTable2.SizeF = new System.Drawing.SizeF(274F, 114F); + // + // xrTableRow2 + // + this.xrTableRow2.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] { + this.xrTableCell4}); + this.xrTableRow2.Name = "xrTableRow2"; + this.xrTableRow2.Weight = 0.13245033112582783D; + // + // xrTableCell4 + // + this.xrTableCell4.CanShrink = true; + this.xrTableCell4.Name = "xrTableCell4"; + this.xrTableCell4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + this.xrTableCell4.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink; + this.xrTableCell4.StylePriority.UseFont = false; + this.xrTableCell4.StylePriority.UseTextAlignment = false; + this.xrTableCell4.Text = "Ihr(e) Ansprechpartner(in):"; + this.xrTableCell4.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight; + this.xrTableCell4.Weight = 1D; + // + // xrTableRow5 + // + this.xrTableRow5.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] { + this.xrTableCell13}); + this.xrTableRow5.Name = "xrTableRow5"; + this.xrTableRow5.Weight = 0.13245033112582783D; + // + // xrTableCell13 + // + this.xrTableCell13.CanShrink = true; + this.xrTableCell13.Name = "xrTableCell13"; + this.xrTableCell13.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + this.xrTableCell13.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink; + this.xrTableCell13.StylePriority.UseFont = false; + this.xrTableCell13.StylePriority.UseTextAlignment = false; + this.xrTableCell13.Text = "[SenderContactPerson]"; + this.xrTableCell13.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight; + this.xrTableCell13.Weight = 1D; + // + // xrTableRow4 + // + this.xrTableRow4.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] { + this.xrTableCell11}); + this.xrTableRow4.Name = "xrTableRow4"; + this.xrTableRow4.Weight = 0.13245033112582783D; + // + // xrTableCell11 + // + this.xrTableCell11.CanShrink = true; + this.xrTableCell11.Name = "xrTableCell11"; + this.xrTableCell11.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + this.xrTableCell11.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink; + this.xrTableCell11.StylePriority.UseFont = false; + this.xrTableCell11.StylePriority.UseTextAlignment = false; + this.xrTableCell11.Text = "[SenderContactPersonDivision]"; + this.xrTableCell11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight; + this.xrTableCell11.Weight = 1D; + // + // xrTableRow3 + // + this.xrTableRow3.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] { + this.xrTableCell8}); + this.xrTableRow3.Name = "xrTableRow3"; + this.xrTableRow3.Weight = 0.13245033112582783D; + // + // xrTableCell8 + // + this.xrTableCell8.CanShrink = true; + this.xrTableCell8.Name = "xrTableCell8"; + this.xrTableCell8.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + this.xrTableCell8.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink; + this.xrTableCell8.StylePriority.UseFont = false; + this.xrTableCell8.StylePriority.UseTextAlignment = false; + this.xrTableCell8.Text = "[SenderContactPersonMail]"; + this.xrTableCell8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight; + this.xrTableCell8.Weight = 1D; + // + // xrTableRow8 + // + this.xrTableRow8.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] { + this.xrTableCell5}); + this.xrTableRow8.Name = "xrTableRow8"; + this.xrTableRow8.Weight = 0.11258278145695365D; + // + // xrTableCell5 + // + this.xrTableCell5.Name = "xrTableCell5"; + this.xrTableCell5.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + this.xrTableCell5.Weight = 1D; + // + // xrTableRow7 + // + this.xrTableRow7.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] { + this.xrTableCell3}); + this.xrTableRow7.Name = "xrTableRow7"; + this.xrTableRow7.StylePriority.UseTextAlignment = false; + this.xrTableRow7.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight; + this.xrTableRow7.Weight = 0.11258278145695365D; + // + // xrTableCell3 + // + this.xrTableCell3.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("Text", null, "BusinessPartnerId")}); + this.xrTableCell3.Multiline = true; + this.xrTableCell3.Name = "xrTableCell3"; + this.xrTableCell3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + this.xrTableCell3.TextFormatString = "GP-Nr.: {0}"; + this.xrTableCell3.Weight = 1D; + // + // xrLabel15 + // + this.xrLabel15.Font = new DevExpress.Drawing.DXFont("Verdana", 10F); + this.xrLabel15.LocationFloat = new DevExpress.Utils.PointFloat(0F, 192.7083F); + this.xrLabel15.Name = "xrLabel15"; + this.xrLabel15.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + this.xrLabel15.SizeF = new System.Drawing.SizeF(175F, 17F); + this.xrLabel15.StylePriority.UseFont = false; + this.xrLabel15.Text = "Mit freundlichen Grüßen"; + // + // xrTable4 + // + this.xrTable4.Font = new DevExpress.Drawing.DXFont("Verdana", 10F); + this.xrTable4.LocationFloat = new DevExpress.Utils.PointFloat(0F, 146.875F); + this.xrTable4.Name = "xrTable4"; + this.xrTable4.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] { + this.xrTableRow10, + this.xrTableRow14}); + this.xrTable4.SizeF = new System.Drawing.SizeF(650F, 26F); + this.xrTable4.StylePriority.UseFont = false; + // + // xrTableRow10 + // + this.xrTableRow10.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] { + this.xrTableCell9}); + this.xrTableRow10.Name = "xrTableRow10"; + this.xrTableRow10.Weight = 0.38095238095238093D; + // + // xrTableCell9 + // + this.xrTableCell9.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("Text", null, "Notice")}); + this.xrTableCell9.Name = "xrTableCell9"; + this.xrTableCell9.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + this.xrTableCell9.StylePriority.UsePadding = false; + this.xrTableCell9.Text = "xrTableCell1"; + this.xrTableCell9.Weight = 3D; + // + // xrTableRow14 + // + this.xrTableRow14.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] { + this.xrTableCell12}); + this.xrTableRow14.Name = "xrTableRow14"; + this.xrTableRow14.Weight = 0.23809523809523808D; + // + // xrTableCell12 + // + this.xrTableCell12.Name = "xrTableCell12"; + this.xrTableCell12.Weight = 3D; + // + // xrLabel14 + // + this.xrLabel14.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("Text", null, "CreatorName")}); + this.xrLabel14.Font = new DevExpress.Drawing.DXFont("Verdana", 10F); + this.xrLabel14.LocationFloat = new DevExpress.Utils.PointFloat(0F, 267.7083F); + this.xrLabel14.Name = "xrLabel14"; + this.xrLabel14.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + this.xrLabel14.SizeF = new System.Drawing.SizeF(225F, 17F); + this.xrLabel14.StylePriority.UseFont = false; + this.xrLabel14.Text = "[CreatorName]"; + // + // DetailReport + // + this.DetailReport.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] { + this.Detail1, + this.DetailReport2}); + this.DetailReport.DataMember = "ServiceInvoicePeriods"; + this.DetailReport.DataSource = this.bindingSource1; + this.DetailReport.Level = 0; + this.DetailReport.Name = "DetailReport"; + // + // Detail1 + // + this.Detail1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { + this.xrTable5}); + this.Detail1.HeightF = 25F; + this.Detail1.Name = "Detail1"; + // + // xrTable5 + // + this.xrTable5.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F); + this.xrTable5.Name = "xrTable5"; + this.xrTable5.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] { + this.xrTableRow23}); + this.xrTable5.SizeF = new System.Drawing.SizeF(677F, 25F); + // + // xrTableRow23 + // + this.xrTableRow23.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] { + this.xrTableCell32, + this.xrTableCell37, + this.xrTableCell35, + this.xrTableCell33, + this.xrTableCell36, + this.xrTableCell38, + this.xrTableCell34}); + this.xrTableRow23.Name = "xrTableRow23"; + this.xrTableRow23.Weight = 1D; + // + // xrTableCell32 + // + this.xrTableCell32.BackColor = System.Drawing.Color.Gainsboro; + this.xrTableCell32.BorderColor = System.Drawing.Color.DarkGray; + this.xrTableCell32.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top) + | DevExpress.XtraPrinting.BorderSide.Right) + | DevExpress.XtraPrinting.BorderSide.Bottom))); + this.xrTableCell32.Name = "xrTableCell32"; + this.xrTableCell32.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F); + this.xrTableCell32.StylePriority.UseBackColor = false; + this.xrTableCell32.StylePriority.UseBorderColor = false; + this.xrTableCell32.StylePriority.UseBorders = false; + this.xrTableCell32.StylePriority.UsePadding = false; + this.xrTableCell32.StylePriority.UseTextAlignment = false; + this.xrTableCell32.Text = "Zeitraum"; + this.xrTableCell32.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft; + this.xrTableCell32.Weight = 0.62463077449375981D; + // + // xrTableCell37 + // + this.xrTableCell37.BackColor = System.Drawing.Color.Gainsboro; + this.xrTableCell37.BorderColor = System.Drawing.Color.DarkGray; + this.xrTableCell37.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top) + | DevExpress.XtraPrinting.BorderSide.Right) + | DevExpress.XtraPrinting.BorderSide.Bottom))); + this.xrTableCell37.Name = "xrTableCell37"; + this.xrTableCell37.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F); + this.xrTableCell37.StylePriority.UseBackColor = false; + this.xrTableCell37.StylePriority.UseBorderColor = false; + this.xrTableCell37.StylePriority.UseBorders = false; + this.xrTableCell37.StylePriority.UsePadding = false; + this.xrTableCell37.StylePriority.UseTextAlignment = false; + this.xrTableCell37.Text = "Leistung"; + this.xrTableCell37.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft; + this.xrTableCell37.Weight = 0.85081236260328186D; + // + // xrTableCell35 + // + this.xrTableCell35.BackColor = System.Drawing.Color.Gainsboro; + this.xrTableCell35.BorderColor = System.Drawing.Color.DarkGray; + this.xrTableCell35.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top) + | DevExpress.XtraPrinting.BorderSide.Right) + | DevExpress.XtraPrinting.BorderSide.Bottom))); + this.xrTableCell35.Name = "xrTableCell35"; + this.xrTableCell35.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F); + this.xrTableCell35.StylePriority.UseBackColor = false; + this.xrTableCell35.StylePriority.UseBorderColor = false; + this.xrTableCell35.StylePriority.UseBorders = false; + this.xrTableCell35.StylePriority.UsePadding = false; + this.xrTableCell35.StylePriority.UseTextAlignment = false; + this.xrTableCell35.Text = "Satz"; + this.xrTableCell35.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; + this.xrTableCell35.Weight = 0.23245943032832414D; + // + // xrTableCell33 + // + this.xrTableCell33.BackColor = System.Drawing.Color.Gainsboro; + this.xrTableCell33.BorderColor = System.Drawing.Color.DarkGray; + this.xrTableCell33.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top) + | DevExpress.XtraPrinting.BorderSide.Right) + | DevExpress.XtraPrinting.BorderSide.Bottom))); + this.xrTableCell33.Name = "xrTableCell33"; + this.xrTableCell33.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F); + this.xrTableCell33.StylePriority.UseBackColor = false; + this.xrTableCell33.StylePriority.UseBorderColor = false; + this.xrTableCell33.StylePriority.UseBorders = false; + this.xrTableCell33.StylePriority.UsePadding = false; + this.xrTableCell33.StylePriority.UseTextAlignment = false; + this.xrTableCell33.Text = "Stunden"; + this.xrTableCell33.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; + this.xrTableCell33.Weight = 0.2893277257020575D; + // + // xrTableCell36 + // + this.xrTableCell36.BackColor = System.Drawing.Color.Gainsboro; + this.xrTableCell36.BorderColor = System.Drawing.Color.DarkGray; + this.xrTableCell36.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top) + | DevExpress.XtraPrinting.BorderSide.Right) + | DevExpress.XtraPrinting.BorderSide.Bottom))); + this.xrTableCell36.Name = "xrTableCell36"; + this.xrTableCell36.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F); + this.xrTableCell36.StylePriority.UseBackColor = false; + this.xrTableCell36.StylePriority.UseBorderColor = false; + this.xrTableCell36.StylePriority.UseBorders = false; + this.xrTableCell36.StylePriority.UsePadding = false; + this.xrTableCell36.StylePriority.UseTextAlignment = false; + this.xrTableCell36.Text = "Betrag"; + this.xrTableCell36.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; + this.xrTableCell36.Weight = 0.26310971709438763D; + // + // xrTableCell38 + // + this.xrTableCell38.BackColor = System.Drawing.Color.Gainsboro; + this.xrTableCell38.BorderColor = System.Drawing.Color.DarkGray; + this.xrTableCell38.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top) + | DevExpress.XtraPrinting.BorderSide.Right) + | DevExpress.XtraPrinting.BorderSide.Bottom))); + this.xrTableCell38.Name = "xrTableCell38"; + this.xrTableCell38.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F); + this.xrTableCell38.StylePriority.UseBackColor = false; + this.xrTableCell38.StylePriority.UseBorderColor = false; + this.xrTableCell38.StylePriority.UseBorders = false; + this.xrTableCell38.StylePriority.UsePadding = false; + this.xrTableCell38.StylePriority.UseTextAlignment = false; + this.xrTableCell38.Text = "pausch Fakt."; + this.xrTableCell38.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; + this.xrTableCell38.Weight = 0.42042083402151886D; + // + // xrTableCell34 + // + this.xrTableCell34.BackColor = System.Drawing.Color.Gainsboro; + this.xrTableCell34.BorderColor = System.Drawing.Color.DarkGray; + this.xrTableCell34.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top) + | DevExpress.XtraPrinting.BorderSide.Right) + | DevExpress.XtraPrinting.BorderSide.Bottom))); + this.xrTableCell34.Name = "xrTableCell34"; + this.xrTableCell34.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F); + this.xrTableCell34.StylePriority.UseBackColor = false; + this.xrTableCell34.StylePriority.UseBorderColor = false; + this.xrTableCell34.StylePriority.UseBorders = false; + this.xrTableCell34.StylePriority.UsePadding = false; + this.xrTableCell34.StylePriority.UseTextAlignment = false; + this.xrTableCell34.Text = "Gesamt"; + this.xrTableCell34.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; + this.xrTableCell34.Weight = 0.31923915575667006D; + // + // DetailReport2 + // + this.DetailReport2.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] { + this.Detail3, + this.GroupFooter1}); + this.DetailReport2.DataMember = "ServiceInvoicePeriods.ServiceInvoiceItems"; + this.DetailReport2.DataSource = this.bindingSource1; + this.DetailReport2.Level = 0; + this.DetailReport2.Name = "DetailReport2"; + this.DetailReport2.PageBreak = DevExpress.XtraReports.UI.PageBreak.AfterBand; + // + // Detail3 + // + this.Detail3.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { + this.xrTable6}); + this.Detail3.HeightF = 25F; + this.Detail3.Name = "Detail3"; + // + // xrTable6 + // + this.xrTable6.Font = new DevExpress.Drawing.DXFont("Verdana", 8.25F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] { + new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))}); + this.xrTable6.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F); + this.xrTable6.Name = "xrTable6"; + this.xrTable6.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] { + this.xrTableRow25}); + this.xrTable6.SizeF = new System.Drawing.SizeF(677F, 25F); + this.xrTable6.StylePriority.UseFont = false; + // + // xrTableRow25 + // + this.xrTableRow25.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] { + this.xrTableCell40, + this.xrTableCell42, + this.xrTableCell43, + this.xrTableCell44, + this.xrTableCell45, + this.xrTableCell46, + this.xrTableCell47}); + this.xrTableRow25.Name = "xrTableRow25"; + this.xrTableRow25.Weight = 1D; + // + // xrTableCell40 + // + this.xrTableCell40.BorderColor = System.Drawing.Color.DarkGray; + this.xrTableCell40.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right) + | DevExpress.XtraPrinting.BorderSide.Bottom))); + this.xrTableCell40.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.Duration")}); + this.xrTableCell40.Name = "xrTableCell40"; + this.xrTableCell40.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F); + this.xrTableCell40.StylePriority.UseBorderColor = false; + this.xrTableCell40.StylePriority.UseBorders = false; + this.xrTableCell40.StylePriority.UsePadding = false; + this.xrTableCell40.StylePriority.UseTextAlignment = false; + this.xrTableCell40.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft; + this.xrTableCell40.Weight = 0.62463084211025488D; + // + // xrTableCell42 + // + this.xrTableCell42.BorderColor = System.Drawing.Color.DarkGray; + this.xrTableCell42.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right) + | DevExpress.XtraPrinting.BorderSide.Bottom))); + this.xrTableCell42.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.ServiceDescription")}); + this.xrTableCell42.Name = "xrTableCell42"; + this.xrTableCell42.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F); + this.xrTableCell42.StylePriority.UseBorderColor = false; + this.xrTableCell42.StylePriority.UseBorders = false; + this.xrTableCell42.StylePriority.UsePadding = false; + this.xrTableCell42.StylePriority.UseTextAlignment = false; + this.xrTableCell42.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft; + this.xrTableCell42.Weight = 0.85081229498678679D; + // + // xrTableCell43 + // + this.xrTableCell43.BorderColor = System.Drawing.Color.DarkGray; + this.xrTableCell43.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right) + | DevExpress.XtraPrinting.BorderSide.Bottom))); + this.xrTableCell43.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.HourlyRate", "{0:0.00}")}); + this.xrTableCell43.Name = "xrTableCell43"; + this.xrTableCell43.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F); + this.xrTableCell43.StylePriority.UseBorderColor = false; + this.xrTableCell43.StylePriority.UseBorders = false; + this.xrTableCell43.StylePriority.UsePadding = false; + this.xrTableCell43.StylePriority.UseTextAlignment = false; + this.xrTableCell43.Text = "xrTableCell43"; + this.xrTableCell43.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; + this.xrTableCell43.Weight = 0.23245943032832414D; + // + // xrTableCell44 + // + this.xrTableCell44.BorderColor = System.Drawing.Color.DarkGray; + this.xrTableCell44.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right) + | DevExpress.XtraPrinting.BorderSide.Bottom))); + this.xrTableCell44.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.Hours", "{0:0.##}")}); + this.xrTableCell44.Name = "xrTableCell44"; + this.xrTableCell44.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F); + this.xrTableCell44.StylePriority.UseBorderColor = false; + this.xrTableCell44.StylePriority.UseBorders = false; + this.xrTableCell44.StylePriority.UsePadding = false; + this.xrTableCell44.StylePriority.UseTextAlignment = false; + this.xrTableCell44.Text = "xrTableCell44"; + this.xrTableCell44.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; + this.xrTableCell44.Weight = 0.2893277257020575D; + // + // xrTableCell45 + // + this.xrTableCell45.BorderColor = System.Drawing.Color.DarkGray; + this.xrTableCell45.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right) + | DevExpress.XtraPrinting.BorderSide.Bottom))); + this.xrTableCell45.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.NetAmount", "{0:0.00}")}); + this.xrTableCell45.Name = "xrTableCell45"; + this.xrTableCell45.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F); + this.xrTableCell45.StylePriority.UseBorderColor = false; + this.xrTableCell45.StylePriority.UseBorders = false; + this.xrTableCell45.StylePriority.UsePadding = false; + this.xrTableCell45.StylePriority.UseTextAlignment = false; + this.xrTableCell45.Text = "xrTableCell45"; + this.xrTableCell45.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; + this.xrTableCell45.Weight = 0.26310971709438763D; + // + // xrTableCell46 + // + this.xrTableCell46.BorderColor = System.Drawing.Color.DarkGray; + this.xrTableCell46.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right) + | DevExpress.XtraPrinting.BorderSide.Bottom))); + this.xrTableCell46.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.RateFactor")}); + this.xrTableCell46.Name = "xrTableCell46"; + this.xrTableCell46.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F); + this.xrTableCell46.StylePriority.UseBorderColor = false; + this.xrTableCell46.StylePriority.UseBorders = false; + this.xrTableCell46.StylePriority.UsePadding = false; + this.xrTableCell46.StylePriority.UseTextAlignment = false; + this.xrTableCell46.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; + this.xrTableCell46.Weight = 0.42042083402151886D; + // + // xrTableCell47 + // + this.xrTableCell47.BorderColor = System.Drawing.Color.DarkGray; + this.xrTableCell47.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right) + | DevExpress.XtraPrinting.BorderSide.Bottom))); + this.xrTableCell47.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.GrossAmount")}); + this.xrTableCell47.Name = "xrTableCell47"; + this.xrTableCell47.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F); + this.xrTableCell47.StylePriority.UseBorderColor = false; + this.xrTableCell47.StylePriority.UseBorders = false; + this.xrTableCell47.StylePriority.UsePadding = false; + this.xrTableCell47.StylePriority.UseTextAlignment = false; + this.xrTableCell47.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; + this.xrTableCell47.Weight = 0.31923915575667006D; + // + // GroupFooter1 + // + this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { + this.xrLabel5, + this.xrLabel1, + this.xrTable4, + this.xrLabel14, + this.xrLabel15}); + this.GroupFooter1.HeightF = 284.7083F; + this.GroupFooter1.Name = "GroupFooter1"; + // + // xrLabel1 + // + this.xrLabel1.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { + new DevExpress.XtraReports.UI.XRBinding("Text", null, "GrossClaim", "Gesamtsumme: {0}")}); + this.xrLabel1.Font = new DevExpress.Drawing.DXFont("Verdana", 9F, DevExpress.Drawing.DXFontStyle.Bold); + this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(420.9999F, 0F); + this.xrLabel1.Name = "xrLabel1"; + this.xrLabel1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 5, 0, 0, 100F); + this.xrLabel1.SizeF = new System.Drawing.SizeF(255.8333F, 25F); + this.xrLabel1.StylePriority.UseFont = false; + this.xrLabel1.StylePriority.UsePadding = false; + this.xrLabel1.StylePriority.UseTextAlignment = false; + this.xrLabel1.Text = "xrLabel1"; + this.xrLabel1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight; + // + // xrPictureBox1 + // + this.xrPictureBox1.ImageSource = new DevExpress.XtraPrinting.Drawing.ImageSource("img", resources.GetString("xrPictureBox1.ImageSource")); + this.xrPictureBox1.LocationFloat = new DevExpress.Utils.PointFloat(448.4886F, 0F); + this.xrPictureBox1.Name = "xrPictureBox1"; + this.xrPictureBox1.SizeF = new System.Drawing.SizeF(228.5114F, 138.9036F); + this.xrPictureBox1.Sizing = DevExpress.XtraPrinting.ImageSizeMode.ZoomImage; + // + // xrLabel7 + // + this.xrLabel7.Font = new DevExpress.Drawing.DXFont("Verdana", 10F); + this.xrLabel7.LocationFloat = new DevExpress.Utils.PointFloat(0.0001907349F, 9.999974F); + this.xrLabel7.Name = "xrLabel7"; + this.xrLabel7.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + this.xrLabel7.SizeF = new System.Drawing.SizeF(649.9998F, 17F); + this.xrLabel7.StylePriority.UseFont = false; + this.xrLabel7.StylePriority.UseTextAlignment = false; + this.xrLabel7.Text = "IBAN DE62 3702 0500 0001 5580 00 "; + this.xrLabel7.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter; + // + // xrLabel6 + // + this.xrLabel6.LocationFloat = new DevExpress.Utils.PointFloat(376F, 5.45845F); + this.xrLabel6.Multiline = true; + this.xrLabel6.Name = "xrLabel6"; + this.xrLabel6.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + this.xrLabel6.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink; + this.xrLabel6.SizeF = new System.Drawing.SizeF(274F, 50.99996F); + this.xrLabel6.StylePriority.UseFont = false; + this.xrLabel6.StylePriority.UseTextAlignment = false; + this.xrLabel6.Text = "BEWO RUHRSTERN GmbH\r\nZiegelstr. 12, 45139 Essen"; + this.xrLabel6.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight; + // + // xrLabel5 + // + this.xrLabel5.BackColor = System.Drawing.Color.Transparent; + this.xrLabel5.CanShrink = true; + this.xrLabel5.Font = new DevExpress.Drawing.DXFont("verdana", 10F); + this.xrLabel5.LocationFloat = new DevExpress.Utils.PointFloat(0F, 69.79166F); + this.xrLabel5.Multiline = true; + this.xrLabel5.Name = "xrLabel5"; + this.xrLabel5.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F); + this.xrLabel5.SizeF = new System.Drawing.SizeF(650.7152F, 63.75001F); + this.xrLabel5.StylePriority.UseBackColor = false; + this.xrLabel5.StylePriority.UseFont = false; + this.xrLabel5.Text = resources.GetString("xrLabel5.Text"); + this.xrLabel5.WordWrap = false; + // + // bindingSource1 + // + this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServiceInvoiceRO); + // + // ServiceInvoiceReportBeWo + // + this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] { + this.Detail, + this.ReportHeader, + this.topMarginBand1, + this.bottomMarginBand1, + this.Page1, + this.DetailReport}); + this.DataSource = this.bindingSource1; + this.ExportOptions.PrintPreview.DefaultFileName = "Spitzabrechnung"; + this.Font = new DevExpress.Drawing.DXFont("Verdana", 10F); + this.FormattingRuleSheet.AddRange(new DevExpress.XtraReports.UI.FormattingRule[] { + this.ruleRateFactorNull}); + this.Margins = new DevExpress.Drawing.DXMargins(75F, 75F, 157.5F, 50F); + this.PageHeight = 1169; + this.PageWidth = 827; + this.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4; + this.Version = "23.2"; + xrWatermark1.Id = "Watermark1"; + this.Watermarks.Add(xrWatermark1); + ((System.ComponentModel.ISupportInitialize)(this.xrTable2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.xrTable4)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.xrTable5)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.xrTable6)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this)).EndInit(); + + } + + + private DevExpress.XtraReports.UI.DetailBand Detail; + private System.Windows.Forms.BindingSource bindingSource1; + private DevExpress.XtraReports.UI.ReportHeaderBand ReportHeader; + private DevExpress.XtraReports.UI.FormattingRule ruleRateFactorNull; + private DevExpress.XtraReports.UI.TopMarginBand topMarginBand1; + private DevExpress.XtraReports.UI.BottomMarginBand bottomMarginBand1; + private DevExpress.XtraReports.UI.GroupHeaderBand Page1; + private DevExpress.XtraReports.UI.XRLabel xrLabel4; + private DevExpress.XtraReports.UI.XRLabel xrLabel3; + private DevExpress.XtraReports.UI.XRLabel xrLabel2; + private DevExpress.XtraReports.UI.XRLabel lblAnrede; + private DevExpress.XtraReports.UI.XRLabel xrLabel8; + private DevExpress.XtraReports.UI.XRLabel lblAbrechnungszeitraum; + private DevExpress.XtraReports.UI.XRTable xrTable2; + private DevExpress.XtraReports.UI.XRTableRow xrTableRow2; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell4; + private DevExpress.XtraReports.UI.XRTableRow xrTableRow5; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell13; + private DevExpress.XtraReports.UI.XRTableRow xrTableRow4; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell11; + private DevExpress.XtraReports.UI.XRTableRow xrTableRow3; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell8; + private DevExpress.XtraReports.UI.XRTableRow xrTableRow8; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell5; + private DevExpress.XtraReports.UI.XRLabel xrLabel15; + private DevExpress.XtraReports.UI.XRTable xrTable4; + private DevExpress.XtraReports.UI.XRTableRow xrTableRow10; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell9; + private DevExpress.XtraReports.UI.XRTableRow xrTableRow14; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell12; + private DevExpress.XtraReports.UI.XRLabel xrLabel14; + private DevExpress.XtraReports.UI.DetailReportBand DetailReport; + private DevExpress.XtraReports.UI.DetailBand Detail1; + private DevExpress.XtraReports.UI.XRTable xrTable5; + private DevExpress.XtraReports.UI.XRTableRow xrTableRow23; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell32; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell37; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell35; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell33; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell36; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell38; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell34; + private DevExpress.XtraReports.UI.DetailReportBand DetailReport2; + private DevExpress.XtraReports.UI.DetailBand Detail3; + private DevExpress.XtraReports.UI.XRTable xrTable6; + private DevExpress.XtraReports.UI.XRTableRow xrTableRow25; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell40; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell42; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell43; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell44; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell45; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell46; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell47; + private DevExpress.XtraReports.UI.XRLabel lblAdresse; + private DevExpress.XtraReports.UI.GroupFooterBand GroupFooter1; + private DevExpress.XtraReports.UI.XRLabel xrLabel1; + private DevExpress.XtraReports.UI.XRTableRow xrTableRow7; + private DevExpress.XtraReports.UI.XRTableCell xrTableCell3; + private DevExpress.XtraReports.UI.XRPictureBox xrPictureBox1; + private DevExpress.XtraReports.UI.XRLabel xrLabel7; + private DevExpress.XtraReports.UI.XRLabel xrLabel6; + private DevExpress.XtraReports.UI.XRLabel xrLabel5; + } +} diff --git a/ReportImp/Ruhrstern/Reporting/ServiceInvoiceReportBewo.cs b/ReportImp/Ruhrstern/Reporting/ServiceInvoiceReportBewo.cs new file mode 100644 index 000000000..b1a1f5897 --- /dev/null +++ b/ReportImp/Ruhrstern/Reporting/ServiceInvoiceReportBewo.cs @@ -0,0 +1,103 @@ +using System; +using System.Text; +using BeWo.Data.Entities; +using BeWo.Report; +using BeWo.Report.ReportObjects; +using BS.Shared; +using BS.Shared.Core; +using BS.Shared.Extensions; +using DevExpress.XtraReports.UI; + +namespace Ruhrstern +{ + [IDSpecificClass(Identifier = "BeWo")] + public partial class ServiceInvoiceReportBeWo : XtraReport, IBeWoReport + { + public ServiceInvoiceReportBeWo() + { + this.InitializeComponent(); + } + + public void SetReportDataSource(ServiceInvoiceRO pRO) + { + DateTime start = pRO.AccountingPeriodStart; + DateTime end = pRO.AccountingPeriodEnd; + if (start.Month == end.Month && start.Year == end.Year) + { + lblAbrechnungszeitraum.Text = String.Format("hiermit berechnen wir für den Monat {0:MMMM yyyy} folgende erbrachte Tätigkeiten:", start); + } + else + { + lblAbrechnungszeitraum.Text = String.Format("hiermit berechnen wir für den Zeitraum {0:MMMM yyyy} - {1:MMMM yyyy} folgende erbrachte Tätigkeiten:", start, end); + } + + SetzeAdresse(pRO); + SetzeAnrede(pRO); + + this.bindingSource1.DataSource = pRO; + } + + private void SetzeAdresse(ServiceInvoiceRO pRO) + { + StringBuilder sb = new StringBuilder(); + if (!String.IsNullOrEmpty(pRO.RecipientOrganisation) && pRO.RecipientOrganisation.ToLower() != "selbstzahler") + { + sb.AppendLine(pRO.RecipientOrganisation); + } + //if (!String.IsNullOrEmpty(pRO.RecipientAddressLine1)) + //{ + // sb.AppendLine(pRO.RecipientAddressLine1); + //} + if (!String.IsNullOrEmpty(pRO.RecipientContactPerson)) + { + sb.AppendLine(pRO.RecipientContactPerson); + } + if (!String.IsNullOrEmpty(pRO.RecipientDivision) && !String.IsNullOrEmpty(pRO.RecipientOrganisation) && pRO.RecipientOrganisation.ToLower() != "selbstzahler") + { + sb.AppendLine(pRO.RecipientDivision); + } + if (!String.IsNullOrEmpty(pRO.RecipientPoBox)) + { + sb.AppendLine(pRO.RecipientPoBox); + } + else if (!String.IsNullOrEmpty(pRO.RecipientStreet)) + { + sb.AppendLine(pRO.RecipientStreet); + } + if (!String.IsNullOrEmpty(pRO.RecipientPostCodeAndTown)) + { + sb.AppendLine(pRO.RecipientPostCodeAndTown); + } + lblAdresse.Text = sb.ToString(); + } + + private void SetzeAnrede(ServiceInvoiceRO pRO) + { + String anrede = "Sehr geehrte Damen und Herren,"; + var p = GetKontaktPerson(pRO); + + if (p != null) + { + if (p.Sex.HasValue && p.Sex.Value == Sex.Male) + { + anrede = "Sehr geehrter Herr " + p.LastName + ","; + } + else if (p.Sex.HasValue && p.Sex.Value == Sex.Female) + { + anrede = "Sehr geehrte Frau " + p.LastName + ","; + } + } + } + + private Person GetKontaktPerson(ServiceInvoiceRO pRO) + { + if (pRO.ServiceInvoicePeriods.Count > 0) + { + var c2s = pRO.ServiceInvoicePeriods[0].CostBearer2SupportConcept; + return c2s.CostBearerContactPerson; + } + + return null; + } + } +} \ No newline at end of file diff --git a/ReportImp/Ruhrstern/Reporting/ServiceInvoiceReportBewo.resx b/ReportImp/Ruhrstern/Reporting/ServiceInvoiceReportBewo.resx new file mode 100644 index 000000000..cc03703d5 --- /dev/null +++ b/ReportImp/Ruhrstern/Reporting/ServiceInvoiceReportBewo.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 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 + + + Für Rückfragen gerne Mail an verwaltung@ruhrstern.de oder Tel 0201-4797700 +Bitte überweisen Sie den genannten Betrag, unter Angabe der entsprechenden Rechnungsnummer, +innerhalb von vierzehn Tagen auf das folgende Konto: +IBAN DE62 3702 0500 0001 5580 00 + + \ No newline at end of file diff --git a/ReportImp/Ruhrstern/Ruhrstern.csproj b/ReportImp/Ruhrstern/Ruhrstern.csproj index 2de337d60..ea701b8da 100644 --- a/ReportImp/Ruhrstern/Ruhrstern.csproj +++ b/ReportImp/Ruhrstern/Ruhrstern.csproj @@ -77,6 +77,12 @@ Quittierungsbeleg.cs + + Component + + + ServiceInvoiceReportBewo.cs + Component @@ -124,6 +130,10 @@ Quittierungsbeleg.cs Designer + + ServiceInvoiceReportBewo.cs + Designer + ServiceInvoiceReport.cs Designer From de5e7ff8291559c37a3ebf453b2e4c91d2f0428c Mon Sep 17 00:00:00 2001 From: Lyndon Date: Wed, 28 Jan 2026 17:21:08 +0100 Subject: [PATCH 2/3] =?UTF-8?q?MoK:=20Mitarbeiterabwesenheiten=20hinzugef?= =?UTF-8?q?=C3=BCgt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BeWoPlanerMobil.sln | 12 +- BeWoPlanerMobil/BeWoPlanerMobil.csproj | 13 +- BeWoPlanerMobil/BeWoPlanerMobil.csproj.user | 2 +- .../Controllers/CustomerController.cs | 54 ++-- .../Controllers/EmployeeController.cs | 280 ++++++++++++++++++ .../Controllers/IAbsenceTimeController.cs | 27 ++ BeWoPlanerMobil/Controllers/MainController.cs | 14 +- .../Controllers/PersonController.cs | 93 ++++++ BeWoPlanerMobil/Models/AbstractModel.cs | 13 +- BeWoPlanerMobil/Models/CustomerModel.cs | 90 ++++-- .../Models/CustomerSessionModel.cs | 16 +- BeWoPlanerMobil/Models/EmployeeModel.cs | 75 +++++ .../Models/EmployeeSessionModel.cs | 21 ++ BeWoPlanerMobil/Models/IAbsenceTimeModel.cs | 17 ++ .../Models/IAbsenceTimeSessionModel.cs | 7 + BeWoPlanerMobil/Models/PersonModel.cs | 30 ++ BeWoPlanerMobil/Models/PersonSessionModel.cs | 20 ++ BeWoPlanerMobil/Util/ISignable.cs | 5 +- .../Views/Customer/Customer.cshtml | 62 ++-- .../CustomerAbsenceTimeFormPartial.cshtml | 233 --------------- .../Views/Employee/Employee.cshtml | 81 +++++ BeWoPlanerMobil/Views/Person/Person.cshtml | 1 + .../Shared/AbsenceTimeFormPartial.cshtml | 237 +++++++++++++++ .../AbsenceTimePartial.cshtml} | 115 +++---- BeWoPlanerMobil/Views/Shared/_Layout.cshtml | 13 + .../CompactEmployeeDC_Employee.cs | 2 +- .../Compact/CompactEmployeeDC.cs | 2 +- Shared/DataContracts/CustomerDC.cs | 2 +- Shared/DataContracts/EmployeeDC.cs | 2 +- Shared/DataContracts/IAbsenceTime.cs | 12 + Shared/Shared.csproj | 1 + 31 files changed, 1142 insertions(+), 410 deletions(-) create mode 100644 BeWoPlanerMobil/Controllers/EmployeeController.cs create mode 100644 BeWoPlanerMobil/Controllers/IAbsenceTimeController.cs create mode 100644 BeWoPlanerMobil/Controllers/PersonController.cs create mode 100644 BeWoPlanerMobil/Models/EmployeeModel.cs create mode 100644 BeWoPlanerMobil/Models/EmployeeSessionModel.cs create mode 100644 BeWoPlanerMobil/Models/IAbsenceTimeModel.cs create mode 100644 BeWoPlanerMobil/Models/IAbsenceTimeSessionModel.cs create mode 100644 BeWoPlanerMobil/Models/PersonModel.cs create mode 100644 BeWoPlanerMobil/Models/PersonSessionModel.cs delete mode 100644 BeWoPlanerMobil/Views/Customer/CustomerAbsenceTimeFormPartial.cshtml create mode 100644 BeWoPlanerMobil/Views/Employee/Employee.cshtml create mode 100644 BeWoPlanerMobil/Views/Person/Person.cshtml create mode 100644 BeWoPlanerMobil/Views/Shared/AbsenceTimeFormPartial.cshtml rename BeWoPlanerMobil/Views/{Customer/CustomerAbsenceTimePartial.cshtml => Shared/AbsenceTimePartial.cshtml} (54%) create mode 100644 Shared/DataContracts/IAbsenceTime.cs diff --git a/BeWoPlanerMobil.sln b/BeWoPlanerMobil.sln index 0dcc5d657..3d700739c 100644 --- a/BeWoPlanerMobil.sln +++ b/BeWoPlanerMobil.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.31729.503 +# Visual Studio Version 17 +VisualStudioVersion = 17.14.36908.2 d17.14 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BeWoPlanerMobil", "BeWoPlanerMobil\BeWoPlanerMobil.csproj", "{284B02ED-114A-426C-9162-31BB6CF05589}" EndProject @@ -27,6 +27,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FeidPartnerReports", "Repor EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PaSMoenchengladbach", "ReportImp\PaSMoenchengladbach\PaSMoenchengladbach.csproj", "{EA3C4BE1-6128-4FC9-8194-3C4202233371}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Host", "Host\Host.csproj", "{E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -100,6 +102,12 @@ Global {EA3C4BE1-6128-4FC9-8194-3C4202233371}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU {EA3C4BE1-6128-4FC9-8194-3C4202233371}.Release|Any CPU.ActiveCfg = Release|Any CPU {EA3C4BE1-6128-4FC9-8194-3C4202233371}.Release|Any CPU.Build.0 = Release|Any CPU + {E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU + {E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU + {E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/BeWoPlanerMobil/BeWoPlanerMobil.csproj b/BeWoPlanerMobil/BeWoPlanerMobil.csproj index 1ccd4f089..413dc8caa 100644 --- a/BeWoPlanerMobil/BeWoPlanerMobil.csproj +++ b/BeWoPlanerMobil/BeWoPlanerMobil.csproj @@ -307,7 +307,9 @@ + + @@ -316,6 +318,10 @@ + + + + @@ -688,6 +694,9 @@ + + + @@ -728,13 +737,13 @@ - + - + diff --git a/BeWoPlanerMobil/BeWoPlanerMobil.csproj.user b/BeWoPlanerMobil/BeWoPlanerMobil.csproj.user index eeebdd5de..883ab72a1 100644 --- a/BeWoPlanerMobil/BeWoPlanerMobil.csproj.user +++ b/BeWoPlanerMobil/BeWoPlanerMobil.csproj.user @@ -15,7 +15,7 @@ root/Common/MVC/Controller 600 False - False + True False diff --git a/BeWoPlanerMobil/Controllers/CustomerController.cs b/BeWoPlanerMobil/Controllers/CustomerController.cs index 66f4c0c92..e4cf89006 100644 --- a/BeWoPlanerMobil/Controllers/CustomerController.cs +++ b/BeWoPlanerMobil/Controllers/CustomerController.cs @@ -18,44 +18,30 @@ using DevExpress.XtraReports.UI; namespace BeWoPlanerMobil.Controllers { - public class CustomerController : ReportBaseController + public class CustomerController : ReportBaseController, IAbsenceTimeController { - public CustomerController() - { + public CustomerController() { } - } private CustomerModel _Model; public CustomerModel Model { get { - if (!MobileSessionFacade.IsUserLoggedIn()) + if(!MobileSessionFacade.IsUserLoggedIn()) { Logout(); return null; } - if (_Model == null) + if(_Model != null) { - _Model = new CustomerModel(); - - InitModel(_Model); - InitViewModel(); - + return _Model; } - //if (((CustomerModel) Session[ModelSessionConstants.CustomerModelKey])?.LoggedInEmployee is null) - //{ - // _Model = new CustomerModel(); + _Model = new CustomerModel(); - // InitModel(_Model); - - // Session[ModelSessionConstants.CustomerModelKey] = _Model; - //} - //else - //{ - // _Model = (CustomerModel)Session[ModelSessionConstants.CustomerModelKey]; - //} + InitModel(_Model); + InitViewModel(); return _Model; } @@ -112,9 +98,10 @@ namespace BeWoPlanerMobil.Controllers Model.Customers = new List(); } - if(Model.CustomerSessionModel.SelectedCustomerOid.HasValue) + var selectedCustomerOid = Model.CustomerSessionModel.SelectedAbsenceTimeObjectOid; + if(selectedCustomerOid.HasValue) { - Model.SelectedCustomer = CustomerService.LoadCustomer(Model.CustomerSessionModel.SelectedCustomerOid.Value); + Model.SelectedCustomer = CustomerService.LoadCustomer(selectedCustomerOid.Value); } if(Model.IsAllowedToSeeMedikamentenliste) @@ -1271,11 +1258,11 @@ namespace BeWoPlanerMobil.Controllers var startDateString = formCollection["customer-absence-time-start-date"]; var startTimeString = formCollection["customer-absence-time-start-time"]; - var endDateString = formCollection["customer-absence-time-end-date"]; - var endTimeString = formCollection["customer-absence-time-end-time"]; - var category = formCollection["customer-absence-time-category"]; - var notice = formCollection["customer-absence-time-notice"]; - var allDay = "on" == formCollection["customer-absence-time-allday-cb"]; + var endDateString = formCollection["customer-absence-time-end-date"]; + var endTimeString = formCollection["customer-absence-time-end-time"]; + var category = formCollection["customer-absence-time-category"]; + var notice = formCollection["customer-absence-time-notice"]; + var allDay = "on" == formCollection["customer-absence-time-allday-cb"]; if(allDay) { @@ -1340,7 +1327,6 @@ namespace BeWoPlanerMobil.Controllers if(absenceTimeOid == 0) { return RedirectToActionPermanent("Customer", Model); - //return "Es ist ein Fehler bei der Auswahl der zu bearbeitenden Abwesenheit aufgetreten.
Bitte wenden Sie sich an Ihren Systemadministrator."; } var selectedAbsenceTime = Model.SelectedCustomer.AbsenceTimes.FirstOrDefault(absenceTime => absenceTime.AbsenceTimeOid.HasValue && absenceTime.AbsenceTimeOid.Value.Equals(absenceTimeOid)); @@ -1348,13 +1334,11 @@ namespace BeWoPlanerMobil.Controllers if(selectedAbsenceTime is null) { return RedirectToActionPermanent("Customer", Model); - //return "Es ist ein Fehler bei der Auswahl der zu bearbeitenden Abwesenheit aufgetreten.
Bitte wenden Sie sich an Ihren Systemadministrator."; } Model.SelectedAbsenceTimeOid = absenceTimeOid; Model.SelectedAbsenceReasonOid = selectedAbsenceTime.Reason.AbsenceReasonOid; - //return LeerzeichenFuerGetMethoden; return RedirectToActionPermanent("Customer", Model); } @@ -1382,7 +1366,7 @@ namespace BeWoPlanerMobil.Controllers TempData[TempDataConstants.DoLogoutKey] = true; } - return PartialView("CustomerAbsenceTimeFormPartial", Model); + return PartialView("AbsenceTimeFormPartial", Model); } [Authorize] @@ -1400,7 +1384,7 @@ namespace BeWoPlanerMobil.Controllers if(Model is null) { TempData[TempDataConstants.DoLogoutKey] = true; - return PartialView("CustomerAbsenceTimePartial"); + return PartialView("AbsenceTimePartial"); } var absenceTime2Delete = Model.SelectedCustomer.AbsenceTimes.FirstOrDefault(absenceTime => absenceTime.AbsenceTimeOid.HasValue && absenceTime.AbsenceTimeOid.Equals(absenceTimeOid)); @@ -1418,7 +1402,7 @@ namespace BeWoPlanerMobil.Controllers LoadCustomerToModel(customer.CustomerOid); - return PartialView("CustomerAbsenceTimePartial", Model); + return PartialView("AbsenceTimePartial", Model); } #endregion diff --git a/BeWoPlanerMobil/Controllers/EmployeeController.cs b/BeWoPlanerMobil/Controllers/EmployeeController.cs new file mode 100644 index 000000000..1b9e5f0ec --- /dev/null +++ b/BeWoPlanerMobil/Controllers/EmployeeController.cs @@ -0,0 +1,280 @@ +using System; +using System.Diagnostics; +using System.Linq; +using System.Web.Mvc; +using BeWoPlanerMobil.Models; +using BeWoPlanerMobil.Service; +using BeWoPlanerMobil.Util; +using BS.Shared; +using BS.Shared.DataContracts; + +namespace BeWoPlanerMobil.Controllers +{ + public class EmployeeController : AbstractBaseController, IAbsenceTimeController + { + public EmployeeController() { } + + [Authorize] + public override string SaveCollapsibleStatus(bool isOpen, string identifier) + { + return SaveCollapsibleStatusToModel(Model, isOpen, identifier); + } + + private EmployeeModel _Model; + + public EmployeeModel Model + { + get + { + if(false == MobileSessionFacade.IsUserLoggedIn()) + { + Logout(); + return null; + } + + if(_Model != null) + { + return _Model; + } + + _Model = new EmployeeModel(); + + InitModel(_Model); + InitViewModel(); + + return _Model; + } + } + + [Authorize] + public ActionResult Employee(long? id) + { + + if(!MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer")) + { + return Logout(); + } + + if(id.HasValue) + { + LoadEmployeeToModel(id); + } + + return View(Model); + } + + private void InitViewModel() + { + if(!MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer")) + { + Logout(); + return; + } + + Model.AllAbsenceReasons = CustomerService.GetAllAbsenceReasons() + .Where(ar => ar.Sichtbarkeit is null || + ar.Sichtbarkeit == AbsenceReasonVisibilityType.Employee || + ar.Sichtbarkeit == AbsenceReasonVisibilityType.All) + .ToList(); + + if(Model.EmployeeSessionModel.SelectedAbsenceTimeObjectOid != null) + { + Model.SelectedEmployee = EmployeeService.LoadEmployee(Model.EmployeeSessionModel.SelectedAbsenceTimeObjectOid.Value); + Model.AbsenceTimeObject = Model.SelectedEmployee; + } + + var selectedAbsenceTimeOid = Model.EmployeeSessionModel.SelectedAbsenceTimeOid; + + if(selectedAbsenceTimeOid.HasValue && Model.SelectedEmployee != null) + { + Model.SelectedAbsenceTime = Model.SelectedEmployee.AbsenceTimes.FirstOrDefault(absenceTime => absenceTime.AbsenceTimeOid?.Equals(selectedAbsenceTimeOid.Value) ?? false); + } + } + + private void LoadEmployeeToModel(long? employeeOid) + { + if(employeeOid == -1) + { + Model.EmployeeSessionModel.ResetValues(); + return; + } + + if(Model.SelectedEmployeeOid.HasValue && Model.SelectedEmployeeOid != employeeOid) + { + Model.EmployeeSessionModel.ResetValues(); + } + + Model.SelectedEmployeeOid = employeeOid; + + if(employeeOid != null) + { + Model.SelectedEmployee = EmployeeService.LoadEmployee(Model.EmployeeSessionModel.SelectedAbsenceTimeObjectOid.Value); + Model.AbsenceTimeObject = Model.SelectedEmployee; + } + } + + [Authorize] + [HttpPost] + public ActionResult CreateOrUpdateAbsenceTime(FormCollection formCollection) + { + if(Model is null) + { + TempData[TempDataConstants.DoLogoutKey] = true; + return Logout(); + } + + var selectedAbsenceTime = Model.SelectedAbsenceTime; + var oid = selectedAbsenceTime?.AbsenceTimeOid; + + var isNew = oid is null; + + var startDateString = formCollection["employee-absence-time-start-date"]; + var startTimeString = formCollection["employee-absence-time-start-time"]; + var endDateString = formCollection["employee-absence-time-end-date"]; + var endTimeString = formCollection["employee-absence-time-end-time"]; + var category = formCollection["employee-absence-time-category"]; + var notice = formCollection["employee-absence-time-notice"]; + var allDay = "on" == formCollection["employee-absence-time-allday-cb"]; + + if(allDay) + { + startTimeString = null; + endTimeString = null; + } + + var startString = $"{startDateString} {startTimeString ?? "00:00"}"; + var endString = $"{endDateString} {endTimeString ?? "00:00"}"; + + var start = DateTime.Parse(startString); + var end = string.IsNullOrWhiteSpace(endDateString) && string.IsNullOrWhiteSpace(endTimeString) ? null : (DateTime?) DateTime.Parse(endString); + + var categoryOid = long.Parse(category); + + var absenceReason = Model.AllAbsenceReasons.FirstOrDefault(ar => ar.AbsenceReasonOid.HasValue && ar.AbsenceReasonOid.Value.Equals(categoryOid)); + + var employee = Model.SelectedEmployee; + + if(isNew) + { + var absenceTime = new AbsenceTimeDC + { + EmployeeOid = employee.EmployeeOid, + Reason = absenceReason, + Start = start, + End = end, + Notice = notice + }; + + OperationsService.InsertNewEmployeeAbsenceTime(employee.EmployeeOid.Value, absenceTime); + } + else + { + selectedAbsenceTime.Start = start; + selectedAbsenceTime.End = end; + selectedAbsenceTime.Reason = absenceReason; + selectedAbsenceTime.Notice = notice; + + OperationsService.UpdateAbsenceTime(selectedAbsenceTime); + } + + LoadEmployeeToModel(employee.EmployeeOid); + + Model.SelectedAbsenceTime = null; + Model.SelectedAbsenceTimeOid = null; + Model.SelectedAbsenceReasonOid = -1; + + return RedirectToActionPermanent("Employee"); + } + + [Authorize] + [HttpPost] + public ActionResult SelectAbsenceTime(long absenceTimeOid) + { + if(Model is null) + { + TempData[TempDataConstants.DoLogoutKey] = true; + return Logout(); + } + + if(absenceTimeOid == 0) + { + return RedirectToActionPermanent("Employee", Model); + } + + var selectedAbsenceTime = Model.SelectedEmployee.AbsenceTimes.FirstOrDefault(absenceTime => absenceTime.EmployeeOid?.Equals(absenceTimeOid) ?? false); + + if(selectedAbsenceTime is null) + { + return RedirectToActionPermanent("Employee", Model); + } + + Model.SelectedAbsenceTimeOid = absenceTimeOid; + Model.SelectedAbsenceReasonOid = selectedAbsenceTime.Reason.AbsenceReasonOid; + + return RedirectToActionPermanent("Employee", Model); + } + + [Authorize] + public string SetSelectedAbsenceTimeOid(long absenceTimeOid) + { + var selectedAbsenceTime = Model.SelectedEmployee.AbsenceTimes.FirstOrDefault(absenceTime => absenceTime.AbsenceTimeOid?.Equals(absenceTimeOid) ?? false); + + if(selectedAbsenceTime is null) + { + return "Es ist ein Fehler bei der Auswahl der zu bearbeitenden Abwesenheit aufgetreten.
Bitte wenden Sie sich an Ihren Systemadministrator"; + } + + Model.SelectedAbsenceTimeOid = absenceTimeOid; + Model.SelectedAbsenceReasonOid = selectedAbsenceTime.Reason.AbsenceReasonOid; + + return LeerzeichenFuerGetMethoden; + } + + [Authorize] + public ActionResult LoadAbsenceTimeToForm() + { + if(Model is null) + { + TempData[TempDataConstants.DoLogoutKey] = true; + } + + return PartialView("AbsenceTimeFormPartial", Model); + } + + [Authorize] + public string DeselectAbsenceTime() + { + Model.SelectedAbsenceTimeOid = null; + Model.SelectedAbsenceReasonOid = -1; + + return LeerzeichenFuerGetMethoden; + } + + [Authorize] + public ActionResult DeleteAbsenceTime(long absenceTimeOid) + { + if(Model is null) + { + TempData[TempDataConstants.DoLogoutKey] = true; + return PartialView("AbsenceTimePartial"); + } + + var absenceTime2Delete = Model.SelectedEmployee.AbsenceTimes.FirstOrDefault(absenceTime => absenceTime.AbsenceTimeOid?.Equals(absenceTimeOid) ?? false); + + if(absenceTime2Delete is null) + { + ViewData["AbsenceTimeError"] = "Beim Löschen der Abwesenheit ist ein Fehler aufgetreten!

Bitte wenden Sie sich an Ihren Administrator."; + } + + var employee = Model.SelectedEmployee; + + employee.AbsenceTimes.Remove(absenceTime2Delete); + + EmployeeService.UpdateEmployee(employee); + + LoadEmployeeToModel(employee.EmployeeOid); + + return PartialView("AbsenceTimePartial", Model); + } + } +} \ No newline at end of file diff --git a/BeWoPlanerMobil/Controllers/IAbsenceTimeController.cs b/BeWoPlanerMobil/Controllers/IAbsenceTimeController.cs new file mode 100644 index 000000000..231451d84 --- /dev/null +++ b/BeWoPlanerMobil/Controllers/IAbsenceTimeController.cs @@ -0,0 +1,27 @@ +using System.Web.Mvc; + +namespace BeWoPlanerMobil.Controllers +{ + internal interface IAbsenceTimeController + { + [Authorize] + [HttpPost] + ActionResult CreateOrUpdateAbsenceTime(FormCollection formCollection); + + [Authorize] + [HttpPost] + ActionResult SelectAbsenceTime(long absenceTimeOid); + + [Authorize] + string SetSelectedAbsenceTimeOid(long absenceTimeOid); + + [Authorize] + ActionResult LoadAbsenceTimeToForm(); + + [Authorize] + string DeselectAbsenceTime(); + + [Authorize] + ActionResult DeleteAbsenceTime(long absenceTimeOid); + } +} diff --git a/BeWoPlanerMobil/Controllers/MainController.cs b/BeWoPlanerMobil/Controllers/MainController.cs index 0e6ede9ca..1e557bc20 100644 --- a/BeWoPlanerMobil/Controllers/MainController.cs +++ b/BeWoPlanerMobil/Controllers/MainController.cs @@ -3362,10 +3362,22 @@ namespace BeWoPlanerMobil.Controllers return RedirectToMain(); } + /// + /// Leitet zur Mitarbeiter-Seite weiter, die bis jetzt aber nur die Abwesenheiten des angemeldeten Mitarbeiters anzeigt + /// + /// Aufruf zur Mitarbeiter-Seite [Authorize] public ActionResult RedirectToPersons() { - return RedirectToActionPermanent("Person", "Person"); + return RedirectToActionPermanent("Person", "Person", new { id = Model.LoggedInEmployee?.EmployeeOid }); + } + + [Authorize] + public ActionResult RedirectToEmployees() + { + var employeeOid = Model.LoggedInEmployee.EmployeeOid; + + return RedirectToActionPermanent("Employee", "Employee", new { id = Model.LoggedInEmployee?.EmployeeOid }); } [Authorize] diff --git a/BeWoPlanerMobil/Controllers/PersonController.cs b/BeWoPlanerMobil/Controllers/PersonController.cs new file mode 100644 index 000000000..a4116b9cf --- /dev/null +++ b/BeWoPlanerMobil/Controllers/PersonController.cs @@ -0,0 +1,93 @@ +using BeWoPlanerMobil.Models; +using BeWoPlanerMobil.Service; +using DevExpress.Web.Internal.XmlProcessor; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; + +namespace BeWoPlanerMobil.Controllers +{ + public class PersonController : AbstractBaseController + { + public PersonController() { } + + private PersonModel _Model; + + public PersonModel Model + { + get + { + if(!MobileSessionFacade.IsUserLoggedIn()) + { + Logout(); + return null; + } + + if(_Model is null) + { + _Model = new PersonModel(); + + InitModel(_Model); + InitViewModel(); + } + + return _Model; + } + } + + [Authorize] + public ActionResult Person(long? id) + { + try + { + if(!MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer")) + { + return Logout(); + } + + if(id.HasValue) + { + LoadPersonToModel(id); + } + } + catch(Exception exception) + { + Log.Info("Exception: " + exception.Message + "\n" + exception.StackTrace); + if(exception.InnerException != null) + { + Log.Info("\n\nInnerException: " + exception.InnerException.Message + "\n" + exception.InnerException.StackTrace); + } + + throw; + } + + return View(Model); + } + + private void InitViewModel() + { + if(!MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer")) + { + Logout(); + return; + } + + + } + + private void LoadPersonToModel(long? personOid) + { + if(personOid is null || (personOid.Value > 0 && false == Model.Persons.Any(p => p.PersonOid.Equals(personOid.Value)))) + { + return; + } + } + + public override string SaveCollapsibleStatus(bool isOpen, string identifier) + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/BeWoPlanerMobil/Models/AbstractModel.cs b/BeWoPlanerMobil/Models/AbstractModel.cs index 55d7809db..150dd62b5 100644 --- a/BeWoPlanerMobil/Models/AbstractModel.cs +++ b/BeWoPlanerMobil/Models/AbstractModel.cs @@ -51,8 +51,8 @@ namespace BeWoPlanerMobil.Models public static string TimeOfLastAction { - get { return MobileSessionFacade.TimeOfLastAction; } - set { MobileSessionFacade.TimeOfLastAction = value; } + get => MobileSessionFacade.TimeOfLastAction; + set => MobileSessionFacade.TimeOfLastAction = value; } public bool HasRightToInsertRessourceAppointments => CheckRight(UserRightType.KalenderRessourcentermineAnlegen) || CheckRight(UserRightType.CreateAll); @@ -223,6 +223,11 @@ namespace BeWoPlanerMobil.Models public bool HasRightToViewCustomerDocuments => CheckForAtLeastOneRight(new[] { UserRightType.ViewAll, UserRightType.DokumenteKlienten }); + public bool HasRightToViewOwnEmployee => CheckForAtLeastOneRight(new[] { UserRightType.ViewAll, UserRightType.Employee_AllowViewOwnEmployees }) && + CheckForAtLeastOneRight(new[] { UserRightType.EditAll, UserRightType.Employee_AllowEditOwnEmployees }); + + + //public string UserMessage { get; set; } public XtraReport Report { get; set; } @@ -260,7 +265,9 @@ namespace BeWoPlanerMobil.Models public List Persons { get; set; } = new List(); - public Dictionary Collapsibles2IsShown { get => SessionModel.Collapsibles2IsShown; + public Dictionary Collapsibles2IsShown + { + get => SessionModel.Collapsibles2IsShown; set => SessionModel.Collapsibles2IsShown = value; } diff --git a/BeWoPlanerMobil/Models/CustomerModel.cs b/BeWoPlanerMobil/Models/CustomerModel.cs index 688b6b009..c68565302 100644 --- a/BeWoPlanerMobil/Models/CustomerModel.cs +++ b/BeWoPlanerMobil/Models/CustomerModel.cs @@ -11,23 +11,29 @@ using DevExpress.XtraReports.UI; namespace BeWoPlanerMobil.Models { - public class CustomerModel : AbstractModel, ISignable + public class CustomerModel : AbstractModel, ISignable, IAbsenceTimeModel { + public string HtmlPrefix => "customer"; + + public IAbsenceTime AbsenceTimeObject + { + get => SelectedCustomer; + set => SelectedCustomer = (CustomerDC) value; + } + public CustomerModel() { SessionModel = new CustomerSessionModel(); } - public CustomerSessionModel CustomerSessionModel - { - get - { - return SessionModel as CustomerSessionModel; - } - } + public CustomerSessionModel CustomerSessionModel => SessionModel as CustomerSessionModel; [Display(Name = "Klient")] - public long? SelectedCustomerOid { get { return CustomerSessionModel.SelectedCustomerOid; } set { CustomerSessionModel.SelectedCustomerOid = value; } } + public long? SelectedCustomerOid + { + get => CustomerSessionModel.SelectedAbsenceTimeObjectOid; + set => CustomerSessionModel.SelectedAbsenceTimeObjectOid = value; + } public CustomerDC SelectedCustomer { get; set; } @@ -47,7 +53,11 @@ namespace BeWoPlanerMobil.Models public JsonCustomer SelectedJsonCustomer => SelectedCustomer != null ? new JsonCustomer(SelectedCustomer, FolderTree, ICD10Diagnosen) : null; [Display(Name = "Filter")] - public CustomerFilterEnum SelectedCustomerFilter { get { return CustomerSessionModel.SelectedCustomerFilter; } set { CustomerSessionModel.SelectedCustomerFilter = value; } } + public CustomerFilterEnum SelectedCustomerFilter + { + get => CustomerSessionModel.SelectedCustomerFilter; + set => CustomerSessionModel.SelectedCustomerFilter = value; + } public List CustomerFilter { @@ -93,7 +103,11 @@ namespace BeWoPlanerMobil.Models public List ReportTypes { get; set; } [Display(Name = "Bericht")] - public CustomerReportType SelectedReportType { get { return CustomerSessionModel.SelectedReportType; } set { CustomerSessionModel.SelectedReportType = value; } } + public CustomerReportType SelectedReportType + { + get => CustomerSessionModel.SelectedReportType; + set => CustomerSessionModel.SelectedReportType = value; + } public List ReportTypeItems { @@ -117,7 +131,11 @@ namespace BeWoPlanerMobil.Models public List Bargeldkassen { get; set; } = new List(); [Display(Name = "Kategorie")] - public long? SelectedAbsenceReasonOid { get { return CustomerSessionModel.SelectedAbsenceReasonOid; } set { CustomerSessionModel.SelectedAbsenceReasonOid = value; } } + public long? SelectedAbsenceReasonOid + { + get => CustomerSessionModel.SelectedAbsenceReasonOid; + set => CustomerSessionModel.SelectedAbsenceReasonOid = value; + } public List AllAbsenceReasons { get; set; } @@ -145,7 +163,11 @@ namespace BeWoPlanerMobil.Models } } - public long? SelectedAbsenceTimeOid { get { return CustomerSessionModel.SelectedAbsenceTimeOid; } set { CustomerSessionModel.SelectedAbsenceTimeOid = value; } } + public long? SelectedAbsenceTimeOid + { + get => CustomerSessionModel.SelectedAbsenceTimeOid; + set => CustomerSessionModel.SelectedAbsenceTimeOid = value; + } public AbsenceTimeDC SelectedAbsenceTime { get; set; } //{ @@ -157,19 +179,28 @@ namespace BeWoPlanerMobil.Models // } //} - public long? SelectedBargeldkasseOid { get { return CustomerSessionModel.SelectedBargeldkasseOid; } set { CustomerSessionModel.SelectedBargeldkasseOid = value; } } + public long? SelectedBargeldkasseOid + { + get => CustomerSessionModel.SelectedBargeldkasseOid; + set => CustomerSessionModel.SelectedBargeldkasseOid = value; + } public BargeldkassenDC SelectedBargeldkasse { get; set; } - [Display(Name="Auszahlunsintervall")] - public int SelectedAuszahlungsintervall { get { return CustomerSessionModel.SelectedAuszahlungsintervall; } set { CustomerSessionModel.SelectedAuszahlungsintervall = value; } } - public List Auszahlungsintervalle => + [Display(Name = "Auszahlunsintervall")] + public int SelectedAuszahlungsintervall + { + get => CustomerSessionModel.SelectedAuszahlungsintervall; + set => CustomerSessionModel.SelectedAuszahlungsintervall = value; + } + + public List Auszahlungsintervalle => new List { - new SelectListItem{Value = ((int) Auszahlungsintervall.Kein).ToString(), Text = "Kein"}, - new SelectListItem{Value = ((int) Auszahlungsintervall.Monatlich).ToString(), Text = "Monatlich"}, - new SelectListItem{Value = ((int) Auszahlungsintervall.Woechentlich).ToString(), Text = "Wöchentlich"}, - new SelectListItem{Value = ((int) Auszahlungsintervall.Taeglich).ToString(), Text = "Täglich"}, + new SelectListItem { Value = ((int) Auszahlungsintervall.Kein).ToString(), Text = "Kein" }, + new SelectListItem { Value = ((int) Auszahlungsintervall.Monatlich).ToString(), Text = "Monatlich" }, + new SelectListItem { Value = ((int) Auszahlungsintervall.Woechentlich).ToString(), Text = "Wöchentlich" }, + new SelectListItem { Value = ((int) Auszahlungsintervall.Taeglich).ToString(), Text = "Täglich" } }; public XtraReport BargeldkassenReportObject { get; set; } @@ -177,17 +208,26 @@ namespace BeWoPlanerMobil.Models public XtraReport ZahlungsbelegsReportObject { get; set; } - public long? SelectedBargeldtransaktionOid { get { return CustomerSessionModel.SelectedBargeldtransaktionOid; } set { CustomerSessionModel.SelectedBargeldtransaktionOid = value; } } + public long? SelectedBargeldtransaktionOid + { + get => CustomerSessionModel.SelectedBargeldtransaktionOid; + set => CustomerSessionModel.SelectedBargeldtransaktionOid = value; + } public BargeldtransaktionDC SelectedBargeldtransaktion { get; set; } [Display(Name = "Art")] - public int SelectedTransaktionsart { get { return CustomerSessionModel.SelectedTransaktionsart; } set { CustomerSessionModel.SelectedTransaktionsart = value; } } + public int SelectedTransaktionsart + { + get => CustomerSessionModel.SelectedTransaktionsart; + set => CustomerSessionModel.SelectedTransaktionsart = value; + } + public List Transaktionsarten => new List { - new SelectListItem{Value=((int) Zahlungstyp.Einzahlung).ToString(), Text = "Einzahlung"}, - new SelectListItem{Value=((int) Zahlungstyp.Auszahlung).ToString(), Text = "Auszahlung"} + new SelectListItem { Value = ((int) Zahlungstyp.Einzahlung).ToString(), Text = "Einzahlung" }, + new SelectListItem { Value = ((int) Zahlungstyp.Auszahlung).ToString(), Text = "Auszahlung" } }; public List BargeldtransaktionshistoryEntries { get; set; } = new List(); diff --git a/BeWoPlanerMobil/Models/CustomerSessionModel.cs b/BeWoPlanerMobil/Models/CustomerSessionModel.cs index 149059094..517625611 100644 --- a/BeWoPlanerMobil/Models/CustomerSessionModel.cs +++ b/BeWoPlanerMobil/Models/CustomerSessionModel.cs @@ -1,23 +1,13 @@ using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Web.Mvc; using BeWo.View.Navigation.Filter; using BeWoPlanerMobil.Controllers; -using BeWoPlanerMobil.Service; -using BeWoPlanerMobil.Util; -using BS.Shared; -using BS.Shared.DataContracts; -using BS.Shared.DataContracts.Compact; -using DevExpress.XtraReports.UI; namespace BeWoPlanerMobil.Models { [Serializable] - public class CustomerSessionModel : BaseSessionModel + public class CustomerSessionModel : BaseSessionModel, IAbsenceTimeSessionModel { - public long? SelectedCustomerOid { get; set; } + public long? SelectedAbsenceTimeObjectOid { get; set; } public CustomerFilterEnum SelectedCustomerFilter { get; set; } @@ -39,7 +29,7 @@ namespace BeWoPlanerMobil.Models { base.ResetValues(); - SelectedCustomerOid = null; + SelectedAbsenceTimeObjectOid = null; //SelectedCustomerFilter = CustomerFilterEnum.All; //SelectedReportType = CustomerReportType.Medikamentenliste; SelectedAbsenceReasonOid = null; diff --git a/BeWoPlanerMobil/Models/EmployeeModel.cs b/BeWoPlanerMobil/Models/EmployeeModel.cs new file mode 100644 index 000000000..f7563e13c --- /dev/null +++ b/BeWoPlanerMobil/Models/EmployeeModel.cs @@ -0,0 +1,75 @@ +using BS.Shared.DataContracts; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Web.Mvc; + +namespace BeWoPlanerMobil.Models +{ + public class EmployeeModel : AbstractModel, IAbsenceTimeModel + { + public string HtmlPrefix => "employee"; + + public EmployeeSessionModel EmployeeSessionModel => SessionModel as EmployeeSessionModel; + + public EmployeeDC SelectedEmployee { get; set; } + + public IAbsenceTime AbsenceTimeObject + { + get => SelectedEmployee; + set => SelectedEmployee = (EmployeeDC) value; + } + + public AbsenceTimeDC SelectedAbsenceTime { get; set; } + + [Display(Name = "Mitarbeiter")] + public long? SelectedEmployeeOid + { + get => EmployeeSessionModel.SelectedAbsenceTimeObjectOid; + set => EmployeeSessionModel.SelectedAbsenceTimeObjectOid = value; + } + + public EmployeeModel() + { + SessionModel = new EmployeeSessionModel(); + } + + public List AllAbsenceReasons { get; set; } + + public List AbsenceReasonItems + { + get + { + var result = new List { new SelectListItem { Value = "-1", Text = string.Empty } }; + + foreach(var absenceReason in AllAbsenceReasons) + { + if(absenceReason.AbsenceReasonOid is null) + { + continue; + } + + result.Add(new SelectListItem + { + Value = absenceReason.AbsenceReasonOid.Value.ToString(), + Text = absenceReason.Description + }); + } + + return result; + } + } + + [Display(Name = "Kategorie")] + public long? SelectedAbsenceReasonOid + { + get => EmployeeSessionModel.SelectedAbsenceReasonOid; + set => EmployeeSessionModel.SelectedAbsenceReasonOid = value; + } + + public long? SelectedAbsenceTimeOid + { + get => EmployeeSessionModel.SelectedAbsenceTimeOid; + set => EmployeeSessionModel.SelectedAbsenceTimeOid = value; + } + } +} \ No newline at end of file diff --git a/BeWoPlanerMobil/Models/EmployeeSessionModel.cs b/BeWoPlanerMobil/Models/EmployeeSessionModel.cs new file mode 100644 index 000000000..479973b18 --- /dev/null +++ b/BeWoPlanerMobil/Models/EmployeeSessionModel.cs @@ -0,0 +1,21 @@ +using System; + +namespace BeWoPlanerMobil.Models +{ + [Serializable] + public class EmployeeSessionModel : BaseSessionModel, IAbsenceTimeSessionModel + { + public long? SelectedAbsenceTimeObjectOid { get; set; } + public long? SelectedAbsenceReasonOid { get; set; } + public long? SelectedAbsenceTimeOid { get; set; } + + public override void ResetValues() + { + base.ResetValues(); + + SelectedAbsenceTimeObjectOid = null; + SelectedAbsenceReasonOid = null; + SelectedAbsenceTimeOid = null; + } + } +} \ No newline at end of file diff --git a/BeWoPlanerMobil/Models/IAbsenceTimeModel.cs b/BeWoPlanerMobil/Models/IAbsenceTimeModel.cs new file mode 100644 index 000000000..19ed5f6ea --- /dev/null +++ b/BeWoPlanerMobil/Models/IAbsenceTimeModel.cs @@ -0,0 +1,17 @@ +using BS.Shared.DataContracts; +using System.Collections.Generic; +using System.Web.Mvc; + +namespace BeWoPlanerMobil.Models +{ + public interface IAbsenceTimeModel + { + string HtmlPrefix { get; } + long? SelectedAbsenceTimeOid { get; set; } + long? SelectedAbsenceReasonOid { get; set; } + AbsenceTimeDC SelectedAbsenceTime { get; set; } + IAbsenceTime AbsenceTimeObject { get; set; } + Dictionary Collapsibles2IsShown { get; set; } + List AbsenceReasonItems { get; } + } +} diff --git a/BeWoPlanerMobil/Models/IAbsenceTimeSessionModel.cs b/BeWoPlanerMobil/Models/IAbsenceTimeSessionModel.cs new file mode 100644 index 000000000..375023fe3 --- /dev/null +++ b/BeWoPlanerMobil/Models/IAbsenceTimeSessionModel.cs @@ -0,0 +1,7 @@ +namespace BeWoPlanerMobil.Models +{ + internal interface IAbsenceTimeSessionModel + { + long? SelectedAbsenceTimeObjectOid { get; set; } + } +} diff --git a/BeWoPlanerMobil/Models/PersonModel.cs b/BeWoPlanerMobil/Models/PersonModel.cs new file mode 100644 index 000000000..07a42409a --- /dev/null +++ b/BeWoPlanerMobil/Models/PersonModel.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Web; +using BS.Shared.DataContracts; + +namespace BeWoPlanerMobil.Models +{ + public class PersonModel : AbstractModel + { + public PersonModel() + { + SessionModel = new PersonSessionModel(); + } + + public PersonSessionModel PersonSessionModel => SessionModel as PersonSessionModel; + + [Display(Name = "Person")] + public long? SelectedPersonOid + { + get => PersonSessionModel.SelectedPersonOid; + set => PersonSessionModel.SelectedPersonOid = value; + } + + public PersonDC SelectedPerson { get; set; } + + + } +} \ No newline at end of file diff --git a/BeWoPlanerMobil/Models/PersonSessionModel.cs b/BeWoPlanerMobil/Models/PersonSessionModel.cs new file mode 100644 index 000000000..95a1c8977 --- /dev/null +++ b/BeWoPlanerMobil/Models/PersonSessionModel.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace BeWoPlanerMobil.Models +{ + [Serializable] + public class PersonSessionModel : BaseSessionModel + { + public long? SelectedPersonOid { get; set; } + + public override void ResetValues() + { + base.ResetValues(); + + SelectedPersonOid = null; + } + } +} \ No newline at end of file diff --git a/BeWoPlanerMobil/Util/ISignable.cs b/BeWoPlanerMobil/Util/ISignable.cs index 8d3273abf..680656f71 100644 --- a/BeWoPlanerMobil/Util/ISignable.cs +++ b/BeWoPlanerMobil/Util/ISignable.cs @@ -1,7 +1,4 @@ -using System.Web.Mvc; -using BS.Shared; - -namespace BeWoPlanerMobil.Util +namespace BeWoPlanerMobil.Util { internal interface ISignable { diff --git a/BeWoPlanerMobil/Views/Customer/Customer.cshtml b/BeWoPlanerMobil/Views/Customer/Customer.cshtml index 5e6f51a56..1bf318057 100644 --- a/BeWoPlanerMobil/Views/Customer/Customer.cshtml +++ b/BeWoPlanerMobil/Views/Customer/Customer.cshtml @@ -496,7 +496,7 @@ - +
@@ -803,32 +803,32 @@ @* ----- Dokumente ----- *@ if(Model.HasRightToViewCustomerDocuments) { -
-
-
-
- -
-
- -
-
-
-
-
- @Html.Partial("DocumentPartial", Model) -
-
-
-
-
+
+
+
+
+ +
+
+ +
+
+
+
+
+ @Html.Partial("DocumentPartial", Model) +
+
+
+
+
} @* ----- Medikamentenliste ----- *@ - if (Model.IsAllowedToSeeMedikamentenliste && Model.SelectedCustomer.Medikamentenverordnungslisten.Any()) - { + if(Model.IsAllowedToSeeMedikamentenliste && Model.SelectedCustomer.Medikamentenverordnungslisten.Any()) + {
@@ -1028,13 +1028,13 @@
-
+
-
+
- @Html.Partial("CustomerAbsenceTimePartial", Model) + @Html.Partial("AbsenceTimePartial", Model)
@@ -1060,7 +1060,7 @@
-
+
@Html.Partial("CustomerBetreuungPartial", Model) @@ -1085,11 +1085,11 @@
diff --git a/BeWoPlanerMobil/Views/Customer/CustomerAbsenceTimeFormPartial.cshtml b/BeWoPlanerMobil/Views/Customer/CustomerAbsenceTimeFormPartial.cshtml deleted file mode 100644 index cde0bceb9..000000000 --- a/BeWoPlanerMobil/Views/Customer/CustomerAbsenceTimeFormPartial.cshtml +++ /dev/null @@ -1,233 +0,0 @@ -@using BeWoPlanerMobil.Models; -@using BS.Shared.Extensions - -@model CustomerModel - - - -@using(Html.BeginForm("CreateOrUpdateAbsenceTime", "Customer", FormMethod.Post, new { id = "create-absence-time-form" })) -{ - var isAllDay = Model.SelectedAbsenceTime?.Start?.IsTimeZero() ?? false; - var allDay = isAllDay ? "checked" : ""; - var isDisabled = isAllDay ? "disabled" : ""; - var startDate = Model.SelectedAbsenceTime?.Start?.ToString("yyyy-MM-dd"); - var endDate = Model.SelectedAbsenceTime?.End?.ToString("yyyy-MM-dd"); - var startTime = Model.SelectedAbsenceTime?.Start?.ToString("HH:mm"); - var endTime = Model.SelectedAbsenceTime?.End?.ToString("HH:mm"); - - if(startTime?.Equals("00:00") ?? false) - { - startTime = string.Empty; - } - - if(endTime?.Equals("00:00") ?? false) - { - endTime = string.Empty; - } - - - -
-
- -
-
- - @* Neue Datums- und Zeitinputs *@ -
-
-
-
- - Startdatum - -
- -
-
-
-
-
- - Enddatum - -
- -
-
-
- -
-
-
-
- - Von - -
- -
-
-
-
-
- - Bis - -
- -
-
-
- @* /Neue Datums- und Zeitinputs *@ - -
-
-
- - -
-
-
- -
-
-
-
-
-
- Kategorie -
-
- @Html.DropDownListFor(m => m.SelectedAbsenceReasonOid, Model.AbsenceReasonItems, new { @class = "custom-select", Id = "absence-reason-select", Name = "customer-absence-time-category" }) -
-
-
-
- -
-
-
-
-
-
- Erläuterung -
-
- -
-
-
-
-} \ No newline at end of file diff --git a/BeWoPlanerMobil/Views/Employee/Employee.cshtml b/BeWoPlanerMobil/Views/Employee/Employee.cshtml new file mode 100644 index 000000000..77d23e5b1 --- /dev/null +++ b/BeWoPlanerMobil/Views/Employee/Employee.cshtml @@ -0,0 +1,81 @@ +@using BeWoPlanerMobil.Util +@model BeWoPlanerMobil.Models.EmployeeModel + +@{ + ViewBag.Title = "Mitarbeiter"; + + var selectedEmployeeName = Model.SelectedEmployee.FirstName + " " + Model.SelectedEmployee.LastName; +} + + + +
+
+
+
+ @selectedEmployeeName +
+
+ @if(Model.HasRightToViewOwnEmployee) + { +
+
+
+ +
+
+ +
+
+
+
+ +
+
+ @Html.Partial("AbsenceTimePartial", Model) +
+
+
+
+ } +
+
+
+
+ +@if(Model.HasRightToViewOwnEmployee) +{ + +} \ No newline at end of file diff --git a/BeWoPlanerMobil/Views/Person/Person.cshtml b/BeWoPlanerMobil/Views/Person/Person.cshtml new file mode 100644 index 000000000..b65bdad3f --- /dev/null +++ b/BeWoPlanerMobil/Views/Person/Person.cshtml @@ -0,0 +1 @@ +@model BeWoPlanerMobil.Models.PersonModel \ No newline at end of file diff --git a/BeWoPlanerMobil/Views/Shared/AbsenceTimeFormPartial.cshtml b/BeWoPlanerMobil/Views/Shared/AbsenceTimeFormPartial.cshtml new file mode 100644 index 000000000..ae6358675 --- /dev/null +++ b/BeWoPlanerMobil/Views/Shared/AbsenceTimeFormPartial.cshtml @@ -0,0 +1,237 @@ +@using BeWoPlanerMobil.Models; +@using BS.Shared.Extensions + +@model IAbsenceTimeModel + +@{ + var controllerName = Model is EmployeeModel ? "Employee" : "Customer"; + var prefix = Model.HtmlPrefix; +} + + + +@using(Html.BeginForm("CreateOrUpdateAbsenceTime", controllerName, FormMethod.Post, new { id = "create-absence-time-form" })) +{ + var isAllDay = Model.SelectedAbsenceTime?.Start?.IsTimeZero() ?? false; + var allDay = isAllDay ? "checked" : ""; + var isDisabled = isAllDay ? "disabled" : ""; + var startDate = Model.SelectedAbsenceTime?.Start?.ToString("yyyy-MM-dd"); + var endDate = Model.SelectedAbsenceTime?.End?.ToString("yyyy-MM-dd"); + var startTime = Model.SelectedAbsenceTime?.Start?.ToString("HH:mm"); + var endTime = Model.SelectedAbsenceTime?.End?.ToString("HH:mm"); + + if(startTime?.Equals("00:00") ?? false) + { + startTime = string.Empty; + } + + if(endTime?.Equals("00:00") ?? false) + { + endTime = string.Empty; + } + + var absenceTimeOid = Model.SelectedAbsenceTime?.AbsenceTimeOid; + + + +
+
+ +
+
+ + #region Datumsangaben +
+
+
+
+ + Startdatum + +
+ +
+
+
+
+
+ + Enddatum + +
+ +
+
+
+ +
+
+
+
+ + Von + +
+ +
+
+
+
+
+ + Bis + +
+ +
+
+
+ +
+
+
+ + +
+
+
+ #endregion + +
+
+
+
+
+
+ Kategorie +
+
+ @Html.DropDownListFor(m => m.SelectedAbsenceReasonOid, Model.AbsenceReasonItems, new { @class = "custom-select", Id = "absence-reason-select", Name = Model.HtmlPrefix + "-absence-time-category" }) +
+
+
+
+ +
+
+
+
+
+
+ Erläuterung +
+
+ +
+
+
+
+} \ No newline at end of file diff --git a/BeWoPlanerMobil/Views/Customer/CustomerAbsenceTimePartial.cshtml b/BeWoPlanerMobil/Views/Shared/AbsenceTimePartial.cshtml similarity index 54% rename from BeWoPlanerMobil/Views/Customer/CustomerAbsenceTimePartial.cshtml rename to BeWoPlanerMobil/Views/Shared/AbsenceTimePartial.cshtml index 4ce899de4..d4966fde6 100644 --- a/BeWoPlanerMobil/Views/Customer/CustomerAbsenceTimePartial.cshtml +++ b/BeWoPlanerMobil/Views/Shared/AbsenceTimePartial.cshtml @@ -1,74 +1,77 @@ -@using BeWoPlanerMobil.Models; +@using BeWoPlanerMobil.Models @using BeWoPlanerMobil.Util @using BS.Shared.Extensions +@model BeWoPlanerMobil.Models.IAbsenceTimeModel -@model CustomerModel +@{ + var controllerName = Model is CustomerModel ? "Customer" : "Employee"; +} -@foreach(var absenceTime in Model.SelectedCustomer.AbsenceTimes.OrderByDescending(at => at.Start)) +@foreach(var absenceTime in Model.AbsenceTimeObject.AbsenceTimes.OrderByDescending(at => at.Start)) { if(absenceTime.Start is null) { continue; } -
+
@@ -98,7 +101,7 @@
-
+
diff --git a/BeWoPlanerMobil/Views/Shared/_Layout.cshtml b/BeWoPlanerMobil/Views/Shared/_Layout.cshtml index bb1f1f305..c2132ffe8 100644 --- a/BeWoPlanerMobil/Views/Shared/_Layout.cshtml +++ b/BeWoPlanerMobil/Views/Shared/_Layout.cshtml @@ -410,6 +410,19 @@ } } + + if(Model.HasRightToViewOwnEmployee) + { + using(Html.BeginForm("RedirectToEmployees", "Main", FormMethod.Post)) + { + + } + } } diff --git a/Service/DCEntityMapper/CompactEmployeeDC_Employee.cs b/Service/DCEntityMapper/CompactEmployeeDC_Employee.cs index 577c9ecec..83fc7f91d 100644 --- a/Service/DCEntityMapper/CompactEmployeeDC_Employee.cs +++ b/Service/DCEntityMapper/CompactEmployeeDC_Employee.cs @@ -22,7 +22,7 @@ namespace BeWo.Service.DCEntityMapper pDataContract.EmployeeColor = pEntity.EmployeeColor; pDataContract.RelatedCustomerOIDList = pEntity.Employee2CustomerList.Where(w => w.CustomerOid.HasValue).Select(s => s.CustomerOid.Value).ToList(); - return pDataContract; + return pDataContract; } // COMPACT EMPLOYEES ARE NOT EDITABLE diff --git a/Shared/DataContracts/Compact/CompactEmployeeDC.cs b/Shared/DataContracts/Compact/CompactEmployeeDC.cs index 6a6680d15..0cdc3d4f9 100644 --- a/Shared/DataContracts/Compact/CompactEmployeeDC.cs +++ b/Shared/DataContracts/Compact/CompactEmployeeDC.cs @@ -28,7 +28,7 @@ namespace BS.Shared.DataContracts.Compact [DataMember] public String Details2 { get; set; } [DataMember] public String Details3 { get; set; } - [DataMember] + [DataMember] public List RelatedCustomerOIDList { get diff --git a/Shared/DataContracts/CustomerDC.cs b/Shared/DataContracts/CustomerDC.cs index d6e6de530..e61680627 100644 --- a/Shared/DataContracts/CustomerDC.cs +++ b/Shared/DataContracts/CustomerDC.cs @@ -9,7 +9,7 @@ using BS.Shared.DataContracts.Wohnhilfe; namespace BS.Shared.DataContracts { [DataContract] - public class CustomerDC : PersonDC + public class CustomerDC : PersonDC, IAbsenceTime { [DataMember] public List AbsenceTimes { get; set; } [DataMember] public List AssessmentSheetCategoryDCs { get; set; } diff --git a/Shared/DataContracts/EmployeeDC.cs b/Shared/DataContracts/EmployeeDC.cs index f114e4ed3..86af90a57 100644 --- a/Shared/DataContracts/EmployeeDC.cs +++ b/Shared/DataContracts/EmployeeDC.cs @@ -8,7 +8,7 @@ namespace BS.Shared.DataContracts { [DebuggerDisplay("Oid = {EmployeeOid}, Name = {LastNameFirstName}")] [DataContract] - public class EmployeeDC : PersonDC, IDataContract + public class EmployeeDC : PersonDC, IDataContract, IAbsenceTime { private List _Focuses; diff --git a/Shared/DataContracts/IAbsenceTime.cs b/Shared/DataContracts/IAbsenceTime.cs new file mode 100644 index 000000000..50dd0b71d --- /dev/null +++ b/Shared/DataContracts/IAbsenceTime.cs @@ -0,0 +1,12 @@ +using System.Collections.Generic; + +namespace BS.Shared.DataContracts +{ + /// + /// Damit im MoK nur ein PartialView für die darstellung der Abwesenheiten benötigt wird. + /// + public interface IAbsenceTime + { + List AbsenceTimes { get; set; } + } +} diff --git a/Shared/Shared.csproj b/Shared/Shared.csproj index 00d94001b..a10316e4f 100644 --- a/Shared/Shared.csproj +++ b/Shared/Shared.csproj @@ -187,6 +187,7 @@ + From 9a8c7d19ebb3812d4c08bc3e75b84255de442407 Mon Sep 17 00:00:00 2001 From: Lyndon Date: Thu, 29 Jan 2026 08:35:34 +0100 Subject: [PATCH 3/3] MoK: Mitarbeitermodullink aus dem IsDebug-Bereich bei der _Layout.cshtml genommen, sodass er in der Release-Version sichtbar ist. --- BeWoPlanerMobil/Controllers/MainController.cs | 2 -- BeWoPlanerMobil/Views/Shared/_Layout.cshtml | 26 +++++++++---------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/BeWoPlanerMobil/Controllers/MainController.cs b/BeWoPlanerMobil/Controllers/MainController.cs index 1e557bc20..8643b702f 100644 --- a/BeWoPlanerMobil/Controllers/MainController.cs +++ b/BeWoPlanerMobil/Controllers/MainController.cs @@ -3375,8 +3375,6 @@ namespace BeWoPlanerMobil.Controllers [Authorize] public ActionResult RedirectToEmployees() { - var employeeOid = Model.LoggedInEmployee.EmployeeOid; - return RedirectToActionPermanent("Employee", "Employee", new { id = Model.LoggedInEmployee?.EmployeeOid }); } diff --git a/BeWoPlanerMobil/Views/Shared/_Layout.cshtml b/BeWoPlanerMobil/Views/Shared/_Layout.cshtml index c2132ffe8..ff0a8e356 100644 --- a/BeWoPlanerMobil/Views/Shared/_Layout.cshtml +++ b/BeWoPlanerMobil/Views/Shared/_Layout.cshtml @@ -410,22 +410,20 @@ } } - - if(Model.HasRightToViewOwnEmployee) - { - using(Html.BeginForm("RedirectToEmployees", "Main", FormMethod.Post)) - { - - } - } } - + @if(Model.HasRightToViewOwnEmployee) + { + using(Html.BeginForm("RedirectToEmployees", "Main", FormMethod.Post)) + { + + } + } @if (Model.IsAllowedToSeeCustomers) {