KetteReports (Die Kette): Sozio-Gruppenlogik überarbeitet (90 statt 60 min-Einheiten, GroupDuration wird nicht durch Teilnehmeranzahl geteilt)

This commit is contained in:
2025-06-24 19:32:58 +02:00
parent 35b2560427
commit 50b1537455
6 changed files with 160 additions and 128 deletions

View File

@@ -0,0 +1,23 @@
using BeWo.Data.Entities;
using BeWo.Service.Plugins;
namespace KetteReports.Calculation
{
public class CustomGroupDurationCalculator : GroupDurationCalculator
{
public override void CalculateGroupDuration(ServiceRecordGroup group)
{
base.CalculateGroupDuration(group);
foreach (var sr in group.ServiceRecordList)
{
if (sr.ServiceDescription.ServiceCategory.Name.ToLower().Contains("soziotherapie"))
{
sr.RoundedDuration = sr.GroupRoundedDuration.Value;
// sr.RoundedDuration = (sr.GroupRoundedDuration.Value * group.EmployeeCount) / group.CustomerCount;
}
}
}
}
}

View File

@@ -118,6 +118,7 @@
<Compile Include="AuswertungSozialpsychiatrie.Designer.cs">
<DependentUpon>AuswertungSozialpsychiatrie.cs</DependentUpon>
</Compile>
<Compile Include="Calculations\CustomGroupDurationCalculator.cs" />
<Compile Include="CustomMitarbeiterstundenkontoBerechnung.cs" />
<Compile Include="CustomMitarbeiterstundenkontoBerechnungMonate.cs" />
<Compile Include="CustomMitarbeiterstundenkontoBerechnungTagesansicht.cs" />

View File

@@ -60,70 +60,75 @@ namespace KetteReports
{
s.IsGroup = true;
gesamtGruppe += s.Minutes;
s.ServiceDescription = "E";
s.Notice5 = "2002672";
s.ServiceDescription = "E";
if (s.Minutes <= 45)
s.Notice5 = "2002678";
else if (s.Minutes <= 60)
s.Notice5 = "2002677";
else
s.Notice5 = "2002672";
}
else
{
gesamt += s.Minutes;
}
if (s.ServiceDescription.Contains("Video"))
{
s.ServiceDescription = "V";
if (s.Minutes <= 30)
if (s.ServiceDescription.Contains("Video"))
{
s.Notice5 = "2001615";
s.ServiceDescription = "V";
if (s.Minutes <= 30)
{
s.Notice5 = "2001615";
}
else
{
s.Notice5 = "2001616";
}
}
else
else if (s.ServiceDescription.Contains("Telefon"))
{
s.Notice5 = "2001616";
s.ServiceDescription = "T";
if (s.Minutes <= 30)
{
s.Notice5 = "2001618";
}
else
{
s.Notice5 = "2001617";
}
}
}
else if (s.ServiceDescription.Contains("Telefon"))
{
s.ServiceDescription = "T";
if (s.Minutes <= 30)
else if (s.ServiceDescription.Contains("Aufsuchende Prob"))
{
s.Notice5 = "2001618";
}
else
{
s.Notice5 = "2001617";
}
}
else if (s.ServiceDescription.Contains("Aufsuchende Prob"))
{
s.ServiceDescription = "A";
s.Notice5 = "2001607";
}
else
{
if (s.ServiceDescription.Contains("Büro"))
{
s.ServiceDescription = "E";
}
else if (s.ServiceDescription.Contains("Aufsuchend"))
{
s.ServiceDescription = "A";
s.ServiceDescription = "A";
s.Notice5 = "2001607";
}
else
{
if (s.ServiceDescription.Contains("Büro"))
{
s.ServiceDescription = "E";
}
else if (s.ServiceDescription.Contains("Aufsuchend"))
{
s.ServiceDescription = "A";
}
if (s.Minutes <= 10)
{
s.Notice5 = "2001613";
}
else if (s.Minutes <= 30)
{
s.Notice5 = "2001612";
}
else if (s.Minutes <= 45)
{
s.Notice5 = "2001611";
}
else
{
s.Notice5 = "2001610";
}
if (s.Minutes <= 10)
{
s.Notice5 = "2001613";
}
else if (s.Minutes <= 30)
{
s.Notice5 = "2001612";
}
else if (s.Minutes <= 45)
{
s.Notice5 = "2001611";
}
else
{
s.Notice5 = "2001610";
}
}
}
}
}
@@ -131,7 +136,7 @@ namespace KetteReports
cellGesamt.Text = String.Format("{0:0.00}", gesamt / 60);
if (gesamtGruppe > 0)
{
cellGesamtGruppe.Text = String.Format("{0:0.00}", gesamtGruppe / 60);
cellGesamtGruppe.Text = String.Format("{0:0.00}", gesamtGruppe / 90);
}
this.bindingSource1.DataSource = pRO;

View File

@@ -915,7 +915,7 @@ namespace KetteReports
// fieldGroup
//
this.fieldGroup.DataMember = "Services";
this.fieldGroup.Expression = "Iif([IsGroup], [Minutes] / 60, ?)";
this.fieldGroup.Expression = "Iif([IsGroup], [Minutes] / 90, ?)";
this.fieldGroup.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
this.fieldGroup.Name = "fieldGroup";
//

View File

@@ -37,7 +37,11 @@ namespace KetteReports
this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand();
this.xrPictureBox1 = new DevExpress.XtraReports.UI.XRPictureBox();
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
this.xrRichText1 = new DevExpress.XtraReports.UI.XRRichText();
this.Page1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel13 = new DevExpress.XtraReports.UI.XRLabel();
this.xrRichText2 = new DevExpress.XtraReports.UI.XRRichText();
this.xrTable2 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow4 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell16 = new DevExpress.XtraReports.UI.XRTableCell();
@@ -89,18 +93,14 @@ namespace KetteReports
this.xrTableRow1 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrLabel13 = new DevExpress.XtraReports.UI.XRLabel();
this.xrRichText2 = new DevExpress.XtraReports.UI.XRRichText();
this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
this.xrRichText1 = new DevExpress.XtraReports.UI.XRRichText();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.xrRichText1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable6)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
//
@@ -148,6 +148,15 @@ namespace KetteReports
this.bottomMarginBand1.Name = "bottomMarginBand1";
this.bottomMarginBand1.StylePriority.UseFont = false;
//
// xrRichText1
//
this.xrRichText1.Font = new DevExpress.Drawing.DXFont("Arial", 8F);
this.xrRichText1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 3.999939F);
this.xrRichText1.Name = "xrRichText1";
this.xrRichText1.SerializableRtfString = resources.GetString("xrRichText1.SerializableRtfString");
this.xrRichText1.SizeF = new System.Drawing.SizeF(677F, 58.00001F);
this.xrRichText1.StylePriority.UseFont = false;
//
// Page1
//
this.Page1.BorderWidth = 2F;
@@ -166,6 +175,49 @@ namespace KetteReports
this.Page1.StylePriority.UseBorderWidth = false;
this.Page1.StylePriority.UseFont = false;
//
// xrLabel1
//
this.xrLabel1.BackColor = System.Drawing.Color.Transparent;
this.xrLabel1.CanShrink = true;
this.xrLabel1.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "DebitorNumber")});
this.xrLabel1.Font = new DevExpress.Drawing.DXFont("Calibri", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 376.0767F);
this.xrLabel1.Multiline = true;
this.xrLabel1.Name = "xrLabel1";
this.xrLabel1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel1.SizeF = new System.Drawing.SizeF(650.72F, 20F);
this.xrLabel1.StylePriority.UseBackColor = false;
this.xrLabel1.StylePriority.UseFont = false;
this.xrLabel1.TextFormatString = "Debitor: {0}";
this.xrLabel1.WordWrap = false;
//
// xrLabel13
//
this.xrLabel13.Borders = DevExpress.XtraPrinting.BorderSide.Bottom;
this.xrLabel13.BorderWidth = 1F;
this.xrLabel13.Font = new DevExpress.Drawing.DXFont("Arial", 7.5F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrLabel13.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrLabel13.Name = "xrLabel13";
this.xrLabel13.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel13.SizeF = new System.Drawing.SizeF(294.196F, 17.00003F);
this.xrLabel13.StylePriority.UseBorders = false;
this.xrLabel13.StylePriority.UseBorderWidth = false;
this.xrLabel13.StylePriority.UseFont = false;
this.xrLabel13.StylePriority.UseTextAlignment = false;
this.xrLabel13.Text = "Die Kette e. V. · Paffrather Str. 70 · 51465 Bergisch Gladbach";
this.xrLabel13.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
//
// xrRichText2
//
this.xrRichText2.Font = new DevExpress.Drawing.DXFont("Arial", 8F);
this.xrRichText2.LocationFloat = new DevExpress.Utils.PointFloat(496.0409F, 0F);
this.xrRichText2.Name = "xrRichText2";
this.xrRichText2.SerializableRtfString = resources.GetString("xrRichText2.SerializableRtfString");
this.xrRichText2.SizeF = new System.Drawing.SizeF(180.9591F, 149.3851F);
this.xrRichText2.StylePriority.UseFont = false;
//
// xrTable2
//
this.xrTable2.Font = new DevExpress.Drawing.DXFont("Calibri", 9F);
@@ -537,7 +589,7 @@ namespace KetteReports
this.xrTableCell3.StylePriority.UseTextAlignment = false;
this.xrTableCell3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell3.TextFormatString = "{0:dd.MM.yyyy}";
this.xrTableCell3.Weight = 0.49411074825218504D;
this.xrTableCell3.Weight = 0.44462999229268751D;
//
// xrTableCell40
//
@@ -556,7 +608,7 @@ namespace KetteReports
this.xrTableCell40.StylePriority.UseTextAlignment = false;
this.xrTableCell40.Text = "Soziotherapie";
this.xrTableCell40.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell40.Weight = 0.574668553042295D;
this.xrTableCell40.Weight = 0.52518812324829744D;
//
// xrTableCell42
//
@@ -574,7 +626,7 @@ namespace KetteReports
this.xrTableCell42.StylePriority.UsePadding = false;
this.xrTableCell42.StylePriority.UseTextAlignment = false;
this.xrTableCell42.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell42.Weight = 0.79841694330105706D;
this.xrTableCell42.Weight = 0.73409337393754315D;
//
// xrTableCell20
//
@@ -593,7 +645,7 @@ namespace KetteReports
this.xrTableCell20.StylePriority.UseTextAlignment = false;
this.xrTableCell20.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell20.TextFormatString = "{0:0.##}";
this.xrTableCell20.Weight = 0.23261646304723091D;
this.xrTableCell20.Weight = 0.27714776626755688D;
//
// xrTableCell44
//
@@ -612,7 +664,7 @@ namespace KetteReports
this.xrTableCell44.StylePriority.UseTextAlignment = false;
this.xrTableCell44.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell44.TextFormatString = "{0:}";
this.xrTableCell44.Weight = 0.256445220290948D;
this.xrTableCell44.Weight = 0.37519867218763103D;
//
// xrTableCell45
//
@@ -702,7 +754,7 @@ namespace KetteReports
this.xrTableCell2.StylePriority.UseTextAlignment = false;
this.xrTableCell2.Text = "Datum";
this.xrTableCell2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell2.Weight = 0.54176126036459427D;
this.xrTableCell2.Weight = 0.48750891297402821D;
//
// xrTableCell32
//
@@ -722,7 +774,7 @@ namespace KetteReports
this.xrTableCell32.StylePriority.UseTextAlignment = false;
this.xrTableCell32.Text = "Positionsnummer";
this.xrTableCell32.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell32.Weight = 0.63008808839302122D;
this.xrTableCell32.Weight = 0.57583578073801267D;
//
// xrTableCell37
//
@@ -742,7 +794,7 @@ namespace KetteReports
this.xrTableCell37.StylePriority.UseTextAlignment = false;
this.xrTableCell37.Text = "Bezeichnung";
this.xrTableCell37.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell37.Weight = 0.87541493837556028D;
this.xrTableCell37.Weight = 0.80488738346229316D;
//
// xrTableCell14
//
@@ -762,7 +814,7 @@ namespace KetteReports
this.xrTableCell14.StylePriority.UseTextAlignment = false;
this.xrTableCell14.Text = "Menge";
this.xrTableCell14.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell14.Weight = 0.25504874611087D;
this.xrTableCell14.Weight = 0.30387512365456576D;
//
// xrTableCell33
//
@@ -782,7 +834,7 @@ namespace KetteReports
this.xrTableCell33.StylePriority.UseTextAlignment = false;
this.xrTableCell33.Text = "Einheit";
this.xrTableCell33.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell33.Weight = 0.28117614915144379D;
this.xrTableCell33.Weight = 0.41138198156658973D;
//
// xrTableCell36
//
@@ -884,58 +936,6 @@ namespace KetteReports
this.xrTableCell5.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell5.Weight = 0.40327538447920763D;
//
// xrLabel13
//
this.xrLabel13.Borders = DevExpress.XtraPrinting.BorderSide.Bottom;
this.xrLabel13.BorderWidth = 1F;
this.xrLabel13.Font = new DevExpress.Drawing.DXFont("Arial", 7.5F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrLabel13.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrLabel13.Name = "xrLabel13";
this.xrLabel13.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel13.SizeF = new System.Drawing.SizeF(294.196F, 17.00003F);
this.xrLabel13.StylePriority.UseBorders = false;
this.xrLabel13.StylePriority.UseBorderWidth = false;
this.xrLabel13.StylePriority.UseFont = false;
this.xrLabel13.StylePriority.UseTextAlignment = false;
this.xrLabel13.Text = "Die Kette e. V. · Paffrather Str. 70 · 51465 Bergisch Gladbach";
this.xrLabel13.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
//
// xrRichText2
//
this.xrRichText2.Font = new DevExpress.Drawing.DXFont("Arial", 8F);
this.xrRichText2.LocationFloat = new DevExpress.Utils.PointFloat(496.0409F, 0F);
this.xrRichText2.Name = "xrRichText2";
this.xrRichText2.SerializableRtfString = resources.GetString("xrRichText2.SerializableRtfString");
this.xrRichText2.SizeF = new System.Drawing.SizeF(180.9591F, 149.3851F);
this.xrRichText2.StylePriority.UseFont = false;
//
// xrLabel1
//
this.xrLabel1.BackColor = System.Drawing.Color.Transparent;
this.xrLabel1.CanShrink = true;
this.xrLabel1.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "DebitorNumber")});
this.xrLabel1.Font = new DevExpress.Drawing.DXFont("Calibri", 10F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 376.0767F);
this.xrLabel1.Multiline = true;
this.xrLabel1.Name = "xrLabel1";
this.xrLabel1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel1.SizeF = new System.Drawing.SizeF(650.72F, 20F);
this.xrLabel1.StylePriority.UseBackColor = false;
this.xrLabel1.StylePriority.UseFont = false;
this.xrLabel1.TextFormatString = "Debitor: {0}";
this.xrLabel1.WordWrap = false;
//
// xrRichText1
//
this.xrRichText1.Font = new DevExpress.Drawing.DXFont("Arial", 8F);
this.xrRichText1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 3.999939F);
this.xrRichText1.Name = "xrRichText1";
this.xrRichText1.SerializableRtfString = resources.GetString("xrRichText1.SerializableRtfString");
this.xrRichText1.SizeF = new System.Drawing.SizeF(677F, 58.00001F);
this.xrRichText1.StylePriority.UseFont = false;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServiceInvoiceRO);
@@ -962,13 +962,13 @@ namespace KetteReports
this.Version = "23.2";
xrWatermark1.Id = "Watermark1";
this.Watermarks.Add(xrWatermark1);
((System.ComponentModel.ISupportInitialize)(this.xrRichText1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable6)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrRichText1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this)).EndInit();

View File

@@ -85,12 +85,15 @@ namespace KetteReports
}
// Einheit setzen
ii.HourlyRateString = "Stunden";
if (ii.ServiceDescription != null && ii.ServiceDescription.ToLower().Contains("hausbesuchspauschale"))
ii.HourlyRateString = "Stunde(n)";
if (ii.ServiceDescription != null)
{
ii.HourlyRateString = "Anzahl";
if (ii.ServiceDescription.ToLower().Contains("hausbesuchspauschale"))
ii.HourlyRateString = "Anzahl";
else if (ii.ServiceDescription.ToLower().Contains("gruppe"))
ii.HourlyRateString = "Einheit(en)";
}
}
}
}
}