MH: LebenshilfeBadKreuznachAutismuszentrum Gruppendauern angepasst + QB erweitert

This commit is contained in:
2026-03-17 14:15:16 +01:00
parent 0ac77703d1
commit d5589ca9e6
4 changed files with 175 additions and 20 deletions

View File

@@ -0,0 +1,22 @@
using BeWo.Service.Plugins;
using BS.Shared.DataContracts;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LebenshilfeBadKreuznachAutismuszentrum.Calculation
{
public class CustomGroupDurationCalculator : GroupDurationCalculator
{
public override GroupDurationDC CalculateGroupDuration(int personCount, int employeeCount, decimal totalDuration)
{
return new GroupDurationDC()
{
SingleDuration = totalDuration,
TotalDuration = totalDuration
};
}
}
}

View File

@@ -56,6 +56,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Calculation\CustomCalculations.cs" />
<Compile Include="Calculation\CustomGroupDurationCalculator.cs" />
<Compile Include="Invoicing\CustomInvoiceCreation.cs" />
<Compile Include="Invoicing\CustomInvoiceFactory.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
@@ -110,5 +111,8 @@
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Folder Include="Service\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@@ -70,8 +70,16 @@ namespace BeWo.Report.DefaultReports
this.xrTable4 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow9 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell();
this.lblSummeEinzel = new DevExpress.XtraReports.UI.XRTableCell();
this.MinutesAlsStunden = new DevExpress.XtraReports.UI.CalculatedField();
this.xrTableRow1 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell10 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow3 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell13 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell14 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrLabel7 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel8 = new DevExpress.XtraReports.UI.XRLabel();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
@@ -403,6 +411,8 @@ namespace BeWo.Report.DefaultReports
// GroupFooter1
//
this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel8,
this.xrLabel7,
this.xrLabel12,
this.xrLabel13,
this.xrLabel1,
@@ -453,7 +463,7 @@ namespace BeWo.Report.DefaultReports
this.xrLabel1.StylePriority.UseFont = false;
this.xrLabel1.StylePriority.UsePadding = false;
this.xrLabel1.StylePriority.UseTextAlignment = false;
this.xrLabel1.Text = "Gesamtstunden";
this.xrLabel1.Text = "Summe Einzeltermine";
this.xrLabel1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
//
// xrTable4
@@ -462,14 +472,16 @@ namespace BeWo.Report.DefaultReports
this.xrTable4.Name = "xrTable4";
this.xrTable4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 96F);
this.xrTable4.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow9});
this.xrTable4.SizeF = new System.Drawing.SizeF(117.4397F, 25F);
this.xrTableRow9,
this.xrTableRow1,
this.xrTableRow3});
this.xrTable4.SizeF = new System.Drawing.SizeF(117.4397F, 75F);
//
// xrTableRow9
//
this.xrTableRow9.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell1,
this.xrTableCell11});
this.lblSummeEinzel});
this.xrTableRow9.Name = "xrTableRow9";
this.xrTableRow9.Weight = 1D;
//
@@ -483,21 +495,19 @@ namespace BeWo.Report.DefaultReports
this.xrTableCell1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell1.Weight = 0.39058440352233309D;
//
// xrTableCell11
// lblSummeEinzel
//
this.xrTableCell11.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
this.lblSummeEinzel.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell11.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.MinutesAlsStunden")});
this.xrTableCell11.Multiline = true;
this.xrTableCell11.Name = "xrTableCell11";
this.xrTableCell11.StylePriority.UseBorders = false;
this.xrTableCell11.StylePriority.UseTextAlignment = false;
xrSummary1.Running = DevExpress.XtraReports.UI.SummaryRunning.Group;
this.xrTableCell11.Summary = xrSummary1;
this.xrTableCell11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell11.TextFormatString = "{0:0.00}";
this.xrTableCell11.Weight = 0.55682842869226479D;
this.lblSummeEinzel.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "TotalFLMString")});
this.lblSummeEinzel.Multiline = true;
this.lblSummeEinzel.Name = "lblSummeEinzel";
this.lblSummeEinzel.StylePriority.UseBorders = false;
this.lblSummeEinzel.StylePriority.UseTextAlignment = false;
this.lblSummeEinzel.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.lblSummeEinzel.TextFormatString = "{0:0.00}";
this.lblSummeEinzel.Weight = 0.55682842869226479D;
//
// MinutesAlsStunden
//
@@ -506,6 +516,101 @@ namespace BeWo.Report.DefaultReports
this.MinutesAlsStunden.FieldType = DevExpress.XtraReports.UI.FieldType.String;
this.MinutesAlsStunden.Name = "MinutesAlsStunden";
//
// xrTableRow1
//
this.xrTableRow1.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell10,
this.xrTableCell12});
this.xrTableRow1.Name = "xrTableRow1";
this.xrTableRow1.Weight = 1D;
//
// xrTableCell10
//
this.xrTableCell10.Borders = DevExpress.XtraPrinting.BorderSide.Right;
this.xrTableCell10.Multiline = true;
this.xrTableCell10.Name = "xrTableCell10";
this.xrTableCell10.StylePriority.UseBorders = false;
this.xrTableCell10.StylePriority.UseTextAlignment = false;
this.xrTableCell10.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell10.Weight = 0.39058440352233309D;
//
// xrTableCell12
//
this.xrTableCell12.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell12.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "TotalFLSString")});
this.xrTableCell12.Multiline = true;
this.xrTableCell12.Name = "xrTableCell12";
this.xrTableCell12.StylePriority.UseBorders = false;
this.xrTableCell12.StylePriority.UseTextAlignment = false;
this.xrTableCell12.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell12.Weight = 0.55682842869226479D;
//
// xrTableRow3
//
this.xrTableRow3.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell13,
this.xrTableCell14});
this.xrTableRow3.Name = "xrTableRow3";
this.xrTableRow3.Weight = 1D;
//
// xrTableCell13
//
this.xrTableCell13.Borders = DevExpress.XtraPrinting.BorderSide.Right;
this.xrTableCell13.Multiline = true;
this.xrTableCell13.Name = "xrTableCell13";
this.xrTableCell13.StylePriority.UseBorders = false;
this.xrTableCell13.StylePriority.UseTextAlignment = false;
this.xrTableCell13.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell13.Weight = 0.39058440352233309D;
//
// xrTableCell14
//
this.xrTableCell14.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell14.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.MinutesAlsStunden")});
this.xrTableCell14.Multiline = true;
this.xrTableCell14.Name = "xrTableCell14";
this.xrTableCell14.StylePriority.UseBorders = false;
this.xrTableCell14.StylePriority.UseTextAlignment = false;
xrSummary1.Running = DevExpress.XtraReports.UI.SummaryRunning.Group;
this.xrTableCell14.Summary = xrSummary1;
this.xrTableCell14.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
this.xrTableCell14.TextFormatString = "{0:0.00}";
this.xrTableCell14.Weight = 0.55682842869226479D;
//
// xrLabel7
//
this.xrLabel7.Font = new DevExpress.Drawing.DXFont("Arial", 10F);
this.xrLabel7.LocationFloat = new DevExpress.Utils.PointFloat(304.1341F, 25F);
this.xrLabel7.Name = "xrLabel7";
this.xrLabel7.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
this.xrLabel7.SizeF = new System.Drawing.SizeF(304.1992F, 25F);
this.xrLabel7.StylePriority.UseBackColor = false;
this.xrLabel7.StylePriority.UseBorders = false;
this.xrLabel7.StylePriority.UseFont = false;
this.xrLabel7.StylePriority.UsePadding = false;
this.xrLabel7.StylePriority.UseTextAlignment = false;
this.xrLabel7.Text = "Summe Gruppentermine";
this.xrLabel7.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
//
// xrLabel8
//
this.xrLabel8.Font = new DevExpress.Drawing.DXFont("Arial", 10F);
this.xrLabel8.LocationFloat = new DevExpress.Utils.PointFloat(304.1341F, 49.99998F);
this.xrLabel8.Name = "xrLabel8";
this.xrLabel8.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
this.xrLabel8.SizeF = new System.Drawing.SizeF(304.1992F, 25F);
this.xrLabel8.StylePriority.UseBackColor = false;
this.xrLabel8.StylePriority.UseBorders = false;
this.xrLabel8.StylePriority.UseFont = false;
this.xrLabel8.StylePriority.UsePadding = false;
this.xrLabel8.StylePriority.UseTextAlignment = false;
this.xrLabel8.Text = "Gesamtstunden";
this.xrLabel8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
//
// Quittierungsbeleg
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
@@ -573,12 +678,20 @@ namespace BeWo.Report.DefaultReports
private DevExpress.XtraReports.UI.XRLabel xrLabel1;
private DevExpress.XtraReports.UI.XRTable xrTable4;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow9;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell11;
private DevExpress.XtraReports.UI.XRTableCell lblSummeEinzel;
private DevExpress.XtraReports.UI.XRPictureBox xrPictureBox1;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell1;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell4;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell3;
private DevExpress.XtraReports.UI.XRLabel xrLabel12;
private DevExpress.XtraReports.UI.XRLabel xrLabel13;
private DevExpress.XtraReports.UI.XRLabel xrLabel8;
private DevExpress.XtraReports.UI.XRLabel xrLabel7;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow1;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell10;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell12;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow3;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell13;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell14;
}
}

View File

@@ -33,6 +33,8 @@ namespace BeWo.Report.DefaultReports
if (pRO.Services != null)
{
List<ServicesOverviewRO.ServiceDetail> servicesBillable = new List<ServicesOverviewRO.ServiceDetail>();
// Es sollen immer so viele Tage dargestellt werden, wie der Monat hat, also leere Einträge erzeugen
@@ -59,6 +61,13 @@ namespace BeWo.Report.DefaultReports
start = start.AddDays(1);
}
// Summe Einzelstunden
pRO.TotalFLMString = "";
double summeEinzel = 0;
// Summe Gruppenstunden
pRO.TotalFLSString = "";
double summeGruppe = 0;
foreach (var sd in pRO.Services)
{
if (sd.IsBillable || sd.ServiceDescription.ToLower().Contains("fehlkontakt") || sd.ServiceCategory.ToLower().Contains("fehlkontakt"))
@@ -66,12 +75,17 @@ namespace BeWo.Report.DefaultReports
ServicesOverviewRO.CreateSignatureString(sd);
if (sd.ServiceDescription != "leerer Eintrag")
{
sd.Notice5 = "E";
if (sd.IsGroup)
{
//sd.Notice5 = String.Format("{0} Teilnehmer", sd.CustomerCount);
sd.Notice5 = "GR";
hatGruppen = true;
summeGruppe += sd.Minutes / 60;
}
else
{
sd.Notice5 = "E";
summeEinzel += sd.Minutes / 60;
}
}
@@ -84,6 +98,8 @@ namespace BeWo.Report.DefaultReports
}
servicesBillable = servicesBillable.OrderBy(s => s.StartDate).ToList();
pRO.Services = servicesBillable;
pRO.TotalFLMString = string.Format("{0:0.00}", summeEinzel);
pRO.TotalFLSString = string.Format("{0:0.00}", summeGruppe);
}