Merge branch 'master' of ssh://float.ownsoft.de/git/beyondSoft/BeWo
This commit is contained in:
@@ -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]
|
||||
|
||||
@@ -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>
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>×</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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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[] {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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>();
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user