Merge branch 'master' of ssh://float.ownsoft.de/git/beyondSoft/BeWo

This commit is contained in:
2025-12-04 14:49:42 +01:00
15 changed files with 278 additions and 127 deletions

View File

@@ -50,7 +50,7 @@ namespace BeWoPlanerMobil.Controllers
public bool SkipModelInitialization { get; set; }
public bool SkipServiceRecordInitialization { get; set; }
public MainModel Model
{
get
@@ -1144,7 +1144,8 @@ namespace BeWoPlanerMobil.Controllers
if(objectOid <= 0)
{
return RedirectToAction("Main", "Main", Model);
//return RedirectToAction("Main", "Main", Model);
return RedirectToActionPermanent("Main", "Main");
}
var serviceRecord = GetServiceRecordDC(objectOid, false);
@@ -1154,7 +1155,8 @@ namespace BeWoPlanerMobil.Controllers
Log.Error("Einzelunterschrift konnte nicht gespeichert werden, da der Zeiterfassungseintrag im Model nicht gefunden werden konnte.");
TempData[TempDataConstants.ErrorMessageKey] = "Beim Speichern der Unterschrift ist ein Fehler aufgetreten. Bitte wenden Sie sich an Ihren Administrator.";
return RedirectToAction("Main", "Main", Model);
//return RedirectToAction("Main", "Main", Model);
return RedirectToActionPermanent("Main", "Main");
}
long? oid;
@@ -1166,7 +1168,8 @@ namespace BeWoPlanerMobil.Controllers
if(!isValid)
{
TempData[TempDataConstants.ErrorMessageKey] = "Das Unterschriftenfeld darf nicht leer sein.";
return RedirectToAction("Main", "Main", Model);
//return RedirectToAction("Main", "Main", Model);
return RedirectToActionPermanent("Main", "Main");
}
oid = OperationsService.InsertSignature(new SignatureDC
@@ -1191,7 +1194,8 @@ namespace BeWoPlanerMobil.Controllers
Log.Error("Fehler beim Speichern der Einzelunterschrift: " + ex.Message, ex);
}
return RedirectToAction("Main", "Main", Model);
//return RedirectToAction("Main", "Main", Model);
return RedirectToActionPermanent("Main", "Main");
}
[Authorize]

View File

@@ -389,6 +389,8 @@
}
function readWholeLocalStorage() {
console.log(`Es wurden ${localStorage.length} lokale gespeicherte Werte gefunden:`);
logInfo3(`Es wurden ${localStorage.length} lokale gespeicherte Werte gefunden:`);
for(let i = 0; i < localStorage.length; i++) {
@@ -445,26 +447,27 @@
if(Html.IsInDebugMode())
{
<div class="btn-group">
<button type="button" class="btn btn-outline-danger" onclick="deleteBwpLocalStorage()">
<i class="fas fa-trash"></i>
</button>
<button type="button" class="btn btn-outline-info" onclick="readWholeLocalStorage()">
<i class="far fa-eye"></i>
</button>
<script type="text/javascript">
function devTest() {
try {
} catch(error) {
console.error(error);
}
}
</script>
<button class="btn btn-outline-primary" type="button" onclick="devTest()">
<i class="fas fa-bug"></i>
</button>
</div>
<div class="btn-group">
<button type="button" class="btn btn-outline-danger" onclick="deleteBwpLocalStorage()">
<i class="fas fa-trash"></i>
</button>
<button type="button" class="btn btn-outline-info" onclick="readWholeLocalStorage()">
<i class="far fa-eye"></i>
</button>
<script type="text/javascript">
function devTest() {
try {
console.warn("Diese Methode ist noch ohne Funktion.");
} catch(error) {
console.error(error);
}
}
</script>
<button class="btn btn-outline-primary" type="button" onclick="devTest()">
<i class="fas fa-bug"></i>
</button>
</div>
}
}

View File

@@ -1,4 +1,5 @@
@using BeWoPlanerMobil.Util
@using BS.Shared
@model BeWoPlanerMobil.Models.MainModel
<script type="text/javascript">
@@ -206,73 +207,84 @@ else
var info = $"{nameAndDateOfBirth} | {supportConceptTimeSpan}";
var klient = Model.ServiceRecord2Monatsunterschrift.ServiceRecord.Customer.Sex == Sex.Male ? "Klient" : "Klientin";
<div id="sr-sg-container"></div>
<div id="single-signature-modal" class="modal" tabindex="-1" role="dialog" data-backdrop="static">
<div class="modal-dialog modal-xl modal-dialog-scrollable" style="max-width: 98% !important;" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Unterschrift</h5>
<button type="button" class="close" data-dismiss="modal">
<span>&times;</span>
</button>
</div>
<div class="modal-body">
<table class="table table-sm table-striped service-record-table m-0">
<tr>
<td class="text-secondary">
Hilfeplan:
</td>
<td>
@info
</td>
</tr>
<tr>
<td class="text-secondary">
Kategorie
</td>
<td>
@Model.ServiceRecord2Monatsunterschrift.Kategorie
</td>
</tr>
<tr>
<td class="text-secondary">
Leistung
</td>
<td>
@Model.ServiceRecord2Monatsunterschrift.Leistung
</td>
</tr>
<tr>
<td class="text-secondary">
Mitarbeiter
</td>
<td>
@Model.ServiceRecord2Monatsunterschrift.Mitarbeiter
</td>
</tr>
<tr>
<td class="text-secondary">
Datum / Uhrzeit
</td>
<td>
@Model.ServiceRecord2Monatsunterschrift.DatumSchraegstrichUhrzeit
</td>
</tr>
</table>
<div class="modal-body">
<div class="card w-100" style="overflow-y: scroll !important;">
<div class="card-header small" onclick="cardHeaderClick2(this)">
<div class="d-inline-flex text-primary h-100">
<i class="text-primary fas @Html.GetCollapsibleChevron(Model, "single-signature-collapse")"></i>
<button type="button" class="btn btn-link">
Unterschrift von @klient @Model.ServiceRecord2Monatsunterschrift.ServiceRecord.Customer.LastNameFirstName für den Eintrag vom @Model.ServiceRecord2Monatsunterschrift.DatumSchraegstrichUhrzeit
</button>
</div>
</div>
<div class="collapse" id="single-signature-collapse">
<div class="card-body p-1 w-100">
<table class="table table-sm table-striped service-record-table m-0 w-100">
<tr>
<td class="text-secondary">
Hilfeplan:
</td>
<td>
@info
</td>
</tr>
<tr>
<td class="text-secondary">
Kategorie
</td>
<td>
@Model.ServiceRecord2Monatsunterschrift.Kategorie
</td>
</tr>
<tr>
<td class="text-secondary">
Leistung
</td>
<td>
@Model.ServiceRecord2Monatsunterschrift.Leistung
</td>
</tr>
<tr>
<td class="text-secondary">
Mitarbeiter
</td>
<td>
@Model.ServiceRecord2Monatsunterschrift.Mitarbeiter
</td>
</tr>
<tr>
<td class="text-secondary">
Datum / Uhrzeit
</td>
<td>
@Model.ServiceRecord2Monatsunterschrift.DatumSchraegstrichUhrzeit
</td>
</tr>
</table>
</div>
</div>
</div>
<input type="hidden" id="service-record-oid-holder" value="@Model.ServiceRecord2Monatsunterschrift.ServiceRecord.ServiceRecordOid" />
<div class="mt-3" id="single-signature-canvas-row">
<div class="canvas-container" id="single-signature-canvas-container">
<input type="hidden" id="service-record-oid-holder" value="@Model.ServiceRecord2Monatsunterschrift.ServiceRecord.ServiceRecordOid"/>
<div class="mt-3" id="single-signature-canvas-row">
<div class="canvas-container" id="single-signature-canvas-container">
<canvas id="single-signature-sketch-pad" class="bg-white" style="border: 1px solid #343A40;" width="500" height="200"></canvas>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" id="single-signature-cancel-btn">Abbrechen</button>
<button type="button" class="btn btn-primary" id="single-signature-clear-btn">Neu</button>
<button type="button" class="btn btn-primary" id="single-signature-ok-btn">OK</button>
<button type="button" class="btn btn-secondary btn-sm" id="single-signature-cancel-btn">Abbrechen</button>
<button type="button" class="btn btn-primary btn-sm" id="single-signature-clear-btn">Neu</button>
<button type="button" class="btn btn-primary btn-sm" id="single-signature-ok-btn">OK</button>
</div>
</div>
</div>

View File

@@ -91,18 +91,18 @@
<Compile Include="QuittierungsbelegMitDatum.Designer.cs">
<DependentUpon>QuittierungsbelegMitDatum.cs</DependentUpon>
</Compile>
<Compile Include="ServiceInvoiceReportFLS.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="ServiceInvoiceReportFLS.Designer.cs">
<DependentUpon>ServiceInvoiceReportFLS.cs</DependentUpon>
</Compile>
<Compile Include="ServiceInvoiceReport.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="ServiceInvoiceReport.Designer.cs">
<DependentUpon>ServiceInvoiceReport.cs</DependentUpon>
</Compile>
<Compile Include="ServiceInvoiceReportFLS.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="ServiceInvoiceReportFLS.Designer.cs">
<DependentUpon>ServiceInvoiceReportFLS.cs</DependentUpon>
</Compile>
<Compile Include="Service\CustomAccountingService.cs" />
<Compile Include="Service\ServiceRecordValidator.cs" />
<Compile Include="Translation\CustomTranslationDictionary.cs" />
@@ -127,12 +127,11 @@
<DependentUpon>QuittierungsbelegMitDatum.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="ServiceInvoiceReportFLS.resx">
<DependentUpon>ServiceInvoiceReportFLS.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="ServiceInvoiceReport.resx">
<DependentUpon>ServiceInvoiceReport.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ServiceInvoiceReportFLS.resx">
<DependentUpon>ServiceInvoiceReportFLS.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>

View File

@@ -88,9 +88,9 @@ namespace HshCologne
this.xrTableCell33 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell35 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell46 = new DevExpress.XtraReports.UI.XRTableCell();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.GroupHeader1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.xrSubreport1 = new DevExpress.XtraReports.UI.XRSubreport();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.xrTable8)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable9)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
@@ -159,7 +159,7 @@ namespace HshCologne
this.xrLabel7.SizeF = new System.Drawing.SizeF(317F, 17F);
this.xrLabel7.StylePriority.UseBorders = false;
this.xrLabel7.StylePriority.UseFont = false;
this.xrLabel7.Text = "IFH Cologne GmbH * Clevischer Ring 127* 51063 Köln";
this.xrLabel7.Text = "IFH Cologne GmbH * Schanzenstr. 36 / Geb. 234 * 51063 Köln";
//
// xrTable8
//
@@ -768,10 +768,6 @@ namespace HshCologne
this.xrTableCell46.TextFormatString = "{0:C2}";
this.xrTableCell46.Weight = 0.57828633439123656D;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServiceInvoiceRO);
//
// GroupHeader1
//
this.GroupHeader1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
@@ -786,6 +782,10 @@ namespace HshCologne
this.xrSubreport1.ReportSource = new HshCologne.ServiceInvoiceReportFLS();
this.xrSubreport1.SizeF = new System.Drawing.SizeF(650F, 90F);
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServiceInvoiceRO);
//
// ServiceInvoiceReport
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {

View File

@@ -41,7 +41,8 @@ namespace HshCologne
if (c != null)
{
pRO.CustomerCostCenter = GetSozialarbeiter(pRO, c);
GetBetreuungsart(pRO, c);
var hauptbetreuer = c.Employee2CustomerList.FirstOrDefault(
e2c => e2c.ValueList.Any(ve => ve.Entry.SystemEntryID.HasValue
&& ve.Entry.SystemEntryID.Value == SystemEntryID.EmployeeRoleMainAttendant));
@@ -180,10 +181,11 @@ namespace HshCologne
{
sb.AppendLine(pRO.RecipientContactPerson);
}
if (!String.IsNullOrEmpty(pRO.RecipientDivision) && !String.IsNullOrEmpty(pRO.RecipientOrganisation) && pRO.RecipientOrganisation.ToLower() != "selbstzahler")
{
sb.AppendLine(pRO.RecipientDivision);
}
// Ist bei denen mit internen Angaben befüllt
//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);

View File

@@ -33,6 +33,9 @@ namespace HshCologne
if (pRO.ServiceInvoicePeriods != null && pRO.ServiceInvoicePeriods.Count > 0)
{
decimal custKm = 0;
bool festeKm = false;
if (pRO.ServiceInvoicePeriods.All(sip => sip.ServiceInvoiceItems != null))
{
if (pRO.ServiceInvoicePeriods.Any(sip => sip.Notice == "Familienhilfe" || sip.Notice == "Schulbegleitung" || sip.Notice == "Fachleistungsstunden"))
@@ -46,6 +49,12 @@ namespace HshCologne
if (sip.ServiceInvoiceItems.Any(ii => ii.UnitDescription == "Fahrtkosten"))
{
sip.ServiceInvoiceItems = sip.ServiceInvoiceItems.Where(ii => ii.UnitDescription != "Fahrtkosten" && ii.UnitDescription != "Tagessatz").ToList();
// Check ob nachträgliche der Fahrtkilometer, wenn diese automatisch über InvoiceCreation vergeben werden
var c = DAOFactory.GenericDAO.LoadByID<Customer>(sip.Customer.CustomerOid);
if (c.HealthInsurance.IsNotNullOrEmpty() && decimal.TryParse(c.HealthInsurance, out custKm))
{
festeKm = true;
}
}
if (sip.ServiceInvoiceItems.Any(ii => ii.ServiceDescription == "Tagessatz"))
{
@@ -65,11 +74,20 @@ namespace HshCologne
{
ii.Hours = Math.Round(ii.ServiceRecord.RoundedDuration / 60, 2, MidpointRounding.AwayFromZero);
}
// Angabe der Fahrtkilometer
if (ii.ServiceRecord.DistanceInMeter.HasValue)
{
ii.RateFactor = ii.ServiceRecord.DistanceInMeter.Value.ToString("n2");
}
// Angabe der Fahrtkilometer, wenn diese automatisch über InvoiceCreation vergeben werden
if (festeKm)
{
var leistungen = new List<string> { "HPG", "Hausbesuch", "Abholung und Begleitung", "Einsatz HPG", "Fachgespräch" };
if (leistungen.Contains(ii.ServiceRecord.ServiceDescription.Name))
{
ii.RateFactor = custKm.ToString("n2");
}
}
}
}
}

View File

@@ -62,7 +62,7 @@ namespace Mittelpunkt.Service
}
}
if (bruttogehaltFuerArbeitszuschlaege != null && stundensatzFuerArbeitszuschlaege is null)
if (bruttogehaltFuerArbeitszuschlaege != null && stundensatzFuerArbeitszuschlaege is null && currentContract.WeeklyTotalHours.HasValue && currentContract.WeeklyTotalHours > 0)
{
stundensatzFuerArbeitszuschlaege = bruttogehaltFuerArbeitszuschlaege / currentContract.WeeklyTotalHours / (decimal)4.33;
stundensatzFuerArbeitszuschlaege = Math.Round((decimal)stundensatzFuerArbeitszuschlaege, 2, MidpointRounding.AwayFromZero);

View File

@@ -16,11 +16,14 @@ namespace PerspektivenEV.Service
public override List<CompactEmployeeDC> GetAllActiveEmployeesCompact()
{
var employees = DAOFactory.GenericDAO.GetAllActive<Employee>();
var filteredEmployees = FilterList(employees);
if (filteredEmployees.Count == 0)
var filteredEmployees = employees;
if (UserRightHelper.GetLoggedInUser().Oid != 6)
{
filteredEmployees = FilterTeamList(employees);
filteredEmployees = FilterList(employees);
if (filteredEmployees.Count == 0)
{
filteredEmployees = FilterTeamList(employees);
}
}
return MapperFactory.CompactEmployeeDC_Employee.MapToNewDCs(filteredEmployees);
}
@@ -28,9 +31,7 @@ namespace PerspektivenEV.Service
public static IList<Employee> FilterTeamList(IList<Employee> employees)
{
List<Employee> newList = new List<Employee>();
var loggedInUser = UserRightHelper.GetLoggedInUser();
var teams = DAOFactory.SearchDAO.FindAllActiveTeamsOfEmployee(loggedInUser.Employee.Oid.Value);
foreach (var e in employees)
@@ -49,6 +50,5 @@ namespace PerspektivenEV.Service
var employees = DAOFactory.GenericDAO.GetAllActiveAndArchived<Employee>();
return MapperFactory.CompactEmployeeDC_Employee.MapToNewDCs(FilterList(employees));
}
}
}

View File

@@ -20,5 +20,109 @@ namespace PerspektivenEV.Service
return stat;
}
public override ServiceRecordStatisticsInfoDC GetServiceRecordStatisticInfo(long costBearer2SupportConceptOid, DateTime statisticsDate)
{
var stats = CreateSupportConceptStatisticsImpl(costBearer2SupportConceptOid, statisticsDate);
var dc = new ServiceRecordStatisticsInfoDC();
// Zusätzliches Einblenden der Stunden Bewilligt bisher und dann Einfärben der Erbrachten Stunden bei mehr als 10 % Abweichung
dc.Header = new string[5];
dc.Header[0] = "Bewilligungszeitraum:";
dc.Header[1] = "Geleistet diese Woche/Gesamt:";
dc.Header[2] = "Bewilligt bisher:";
dc.Header[3] = "Bewilligt pro Woche/Gesamt:";
dc.Header[4] = "Frei pro Woche(Ø)/Gesamt:";
dc.ForegroundColor = new string[5];
dc.ForegroundColor[0] = "#FF2B508B";
dc.ForegroundColor[1] = "#FF2B508B";
dc.ForegroundColor[2] = "#FF2B508B";
dc.ForegroundColor[3] = "#FF2B508B";
dc.ForegroundColor[4] = "#FF2B508B";
dc.PeriodStatisticInfos = new List<ServiceRecordPeriodStatisticsInfoDC>();
if (stats != null)
{
if (stats.PeriodStatistics.Count > 1 && !TimeSpanIsEqual(stats))
dc.PeriodStatisticInfos.Add(CreateTotalStatistics(stats, statisticsDate));
foreach (var pdc in stats.PeriodStatistics)
{
dc.PeriodStatisticInfos.Add(CreateServiceRecordPeriodStatisticsInfo(stats, pdc, statisticsDate));
}
}
return dc;
}
public ServiceRecordPeriodStatisticsInfoDC CreateTotalStatistics(SupportConceptStatisticsDC stats, DateTime statisticsDate)
{
var dc = CreateDefaultServiceRecordPeriodStatisticsInfo(5);
dc.LeftValues[0] = "Gesamt";
dc.LeftValues[1] = String.Format("{0:0.00}", stats.MinutesProvidedThisWeek / 60);
dc.RightValues[1] = String.Format("{0:0.00}", stats.MinutesProvidedTotalRounded / 60);
dc.LeftValues[2] = " ";
dc.RightValues[2] = String.Format("{0:0.00}", stats.ApprovedMinutesTillNow / 60);
dc.LeftValues[3] = String.Format("{0:0.00}", stats.MinutesApprovedPerWeek / 60);
dc.RightValues[3] = String.Format("{0:0.00}", stats.MinutesApprovedTotal / 60);
dc.LeftValues[4] = String.Format("{0:0.00}", stats.MinutesFreePerWeekAverage / 60);
dc.RightValues[4] = " ";
return dc;
}
public ServiceRecordPeriodStatisticsInfoDC CreateServiceRecordPeriodStatisticsInfo(SupportConceptStatisticsDC stats, SupportConceptPeriodStatisticsDC periodStats, DateTime statisticsDate)
{
var dc = CreateDefaultServiceRecordPeriodStatisticsInfo(5);
if (periodStats.SupportConceptApprovalPeriod != null)
{
if (periodStats.SupportConceptApprovalPeriod.ServiceCategory != null)
{
dc.LeftValues[0] = String.Format("{0}",
periodStats.SupportConceptApprovalPeriod.ServiceCategory.Name);
}
else
{
dc.LeftValues[0] = String.Format("{0:dd.MM.yy} - {1:dd.MM.yy}",
periodStats.SupportConceptApprovalPeriod.StartDate,
periodStats.SupportConceptApprovalPeriod.EndDate);
}
}
dc.LeftValues[1] = String.Format("{0:0.00}", periodStats.MinutesProvidedThisWeek / 60);
dc.RightValues[1] = String.Format("{0:0.00}", periodStats.MinutesProvidedTotalRounded / 60);
dc.LeftValues[2] = " ";
dc.RightValues[2] = String.Format("{0:0.00}", periodStats.ApprovedMinutesTillNow / 60);
dc.LeftValues[3] = String.Format("{0:0.00}", periodStats.MinutesApprovedPerWeek / 60);
dc.RightValues[3] = String.Format("{0:0.00}", periodStats.MinutesApprovedTotal / 60);
dc.LeftValues[4] = String.Format("{0:0.00}", periodStats.MinutesFreePerWeek / 60);
dc.RightValues[4] = String.Format("{0:0.00}", (periodStats.MinutesApprovedTotal - periodStats.MinutesProvidedTotalRounded) / 60);
dc.RightValueColors[1] = "#FF008000";
// Einfärben, wenn die bisher erbrachten Stunden um mehr als 10 % von den bisher Bewilligten Stunden abweichen
var freeTotal = periodStats.MinutesProvidedTotalRounded - periodStats.ApprovedMinutesTillNow;
if (periodStats.MinutesApprovedTotal > 0 && freeTotal.HasValue)
{
if (Math.Abs(freeTotal.Value) > periodStats.ApprovedMinutesTillNow * 0.10m)
{
dc.RightValueColors[1] = "#FFFF0000";
}
}
return dc;
}
}
}

View File

@@ -172,7 +172,7 @@ namespace PerspektivenEV
i.Duration = String.Format("{0:MMMM yyyy}", start);
}
if (!i.ServiceDescription.Contains("Anfahrt") && !i.ServiceDescription.Contains("Handgeld") && !i.ServiceDescription.ToLower().Contains("pauschale")
&& !i.ServiceDescription.Contains("gefahren") && !i.ServiceDescription.Contains("Terminabsage") && !i.ServiceDescription.Contains("Eigenanteil"))
&& !i.ServiceDescription.Contains("gefahren") && !i.ServiceDescription.ToLower().Contains("absage") && !i.ServiceDescription.Contains("Eigenanteil"))
{
if (start.Month == end.Month && start.Year == end.Year)
i.ServiceDescription = String.Format("{0:MMMM yyyy}", start);
@@ -184,11 +184,16 @@ namespace PerspektivenEV
if (start.Month == end.Month && start.Year == end.Year)
i.ServiceDescription = "Anfahrt(en)";
}
else if (i.ServiceDescription.Contains("Terminabsage"))
else if (i.ServiceDescription.ToLower().Contains("terminabsage"))
{
if (start.Month == end.Month && start.Year == end.Year)
i.ServiceDescription = "Terminabsage";
}
else if (i.ServiceDescription.ToLower().Contains("absage"))
{
if (start.Month == end.Month && start.Year == end.Year)
i.ServiceDescription = "Kurzfristige Absage";
}
}
}
}

View File

@@ -12,22 +12,28 @@ namespace SozialeDiensteNiederrhein.Service
{
public override List<FeiertagDC> GetFeiertage(int year, String bundesland)
{
var liste = base.GetFeiertage(year, bundesland);
var feiertage = base.GetFeiertage(year, bundesland);
if (year >= 2024)
liste.Add(new FeiertagDC() { Datum = GetOsterSonntag(year).AddDays(-48), Name = "Rosenmontag"});
feiertage.Add(new FeiertagDC() { Datum = GetOsterSonntag(year).AddDays(-48), Name = "Rosenmontag"});
if (year >= 2024)
liste.Add(new FeiertagDC() { Datum = new DateTime(year, 12, 31), Name = "Silvester" });
if (year == 2024)
feiertage.Add(new FeiertagDC() { Datum = new DateTime(year, 12, 31), Name = "Silvester" });
if (year >= 2025)
{
var weihnachten = feiertage.FirstOrDefault(f => f.Name == "Heilig Abend");
if (weihnachten != null)
feiertage.Remove(weihnachten);
}
return liste;
return feiertage;
}
public override decimal GetFeiertagsFaktor(DateTime start)
{
if (start.Month == 12 && (start.Day == 24 || start.Day == 31))
return 0.5m;
return base.GetFeiertagsFaktor(start);
}
}

View File

@@ -72,7 +72,7 @@ namespace BeWo.Service.Import.AvisImport
//Die Bereiche werden immer mit dem Aktenzeichen abgeschlossen. Nimm also alle Zeilen bis obiges Aktenzeichen erneut gefunden wird.
if (line.Contains(aktenzeichen) && !line.Contains("Endabr")) //CB, 08.09.2025: Wurde in einem neuen Fall fälschlicherweise als Ende gefunden, weil das Aktenzeichen in der Endabrechnungs Postition mit aufgeführt war. In diesem Fall von Frau Behrend: "SL 35/2025 Endabr. Behrend 2100444891"
if (line.Contains(aktenzeichen) && (!line.Contains("Endabr") && !line.Contains("GPNr"))) //CB, 08.09.2025: Wurde in einem neuen Fall fälschlicherweise als Ende gefunden, weil das Aktenzeichen in der Endabrechnungs Postition mit aufgeführt war. In diesem Fall von Frau Behrend: "SL 35/2025 Endabr. Behrend 2100444891"
{
endeBereich = true;
bereich.GesamtText = textBereich.ToString();

View File

@@ -192,6 +192,8 @@ namespace BeWo.Service.Plugins
return result.OrderBy(e => e.LastName).ToList();
}
//Filtert die übergebenen Mitarbeiter anhand der Berechtigung (alle, nur Team bzw. nur eigenen)
public static IList<Employee> FilterList(IList<Employee> employees)
{
List<Employee> newList = new List<Employee>();

View File

@@ -335,8 +335,6 @@ namespace BeWo.Service.Plugins
return stats;
}
protected virtual IEnumerable<ServiceRecord> GetServiceRecordsForStatistic(long costBearer2SupportConceptOid)
{
return DAOFactory.SearchDAO.FindServiceRecordsDetailsForLastDays(costBearer2SupportConceptOid, null);
@@ -533,7 +531,6 @@ namespace BeWo.Service.Plugins
return periodStats;
}
protected virtual SupportConceptCostBearerRelDC CreateCb2ScDC(CostBearer2SupportConcept cb2sc)
{
var pDataContract = new SupportConceptCostBearerRelDC();
@@ -706,7 +703,6 @@ namespace BeWo.Service.Plugins
return stats.MinutesApprovedPerWeek * (365m / 84m);
}
protected bool TimeSpanIsEqual(SupportConceptStatisticsDC r)
{
if (r.PeriodStatistics != null && r.PeriodStatistics.Count > 1)