SHK Service VertretungsMananger
This commit is contained in:
@@ -61,6 +61,19 @@
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<TypeScriptTarget>ES2015</TypeScriptTarget>
|
||||
<TypeScriptJSXEmit>React</TypeScriptJSXEmit>
|
||||
<TypeScriptModuleKind>ES6</TypeScriptModuleKind>
|
||||
<TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled>
|
||||
<TypeScriptNoImplicitAny>False</TypeScriptNoImplicitAny>
|
||||
<TypeScriptRemoveComments>False</TypeScriptRemoveComments>
|
||||
<TypeScriptOutFile />
|
||||
<TypeScriptOutDir />
|
||||
<TypeScriptGeneratesDeclarations>False</TypeScriptGeneratesDeclarations>
|
||||
<TypeScriptNoEmitOnError>True</TypeScriptNoEmitOnError>
|
||||
<TypeScriptSourceMap>True</TypeScriptSourceMap>
|
||||
<TypeScriptMapRoot />
|
||||
<TypeScriptSourceRoot />
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Antlr3.Runtime, Version=3.5.0.2, Culture=neutral, PublicKeyToken=eb42632606e9261f, processorArchitecture=MSIL">
|
||||
@@ -5079,7 +5092,7 @@
|
||||
<VisualStudio>
|
||||
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
|
||||
<WebProjectProperties>
|
||||
<UseIIS>True</UseIIS>
|
||||
<UseIIS>False</UseIIS>
|
||||
<AutoAssignPort>False</AutoAssignPort>
|
||||
<DevelopmentServerPort>8808</DevelopmentServerPort>
|
||||
<DevelopmentServerVPath>/</DevelopmentServerVPath>
|
||||
|
||||
@@ -47,7 +47,9 @@ namespace BeWoPlanerMobil.Models
|
||||
var mandator = new MobileSessionFacade().OperationsService.GetMandator();
|
||||
|
||||
var showEmployeeSignatureSetting = MobileUtils.GetSettingValue(mandator.Settings, SettingsKeys.ShowSignature);
|
||||
|
||||
#if DEBUG
|
||||
showEmployeeSignatureSetting = "1";
|
||||
#endif
|
||||
return CheckRight(UserRightType.Analysis_ServiceOverview_View) && showEmployeeSignatureSetting != null && showEmployeeSignatureSetting.Equals("1");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<PropertyGroup>
|
||||
<NameOfLastUsedPublishProfile>BeWo2.0</NameOfLastUsedPublishProfile>
|
||||
<UseIISExpress>true</UseIISExpress>
|
||||
<LastActiveSolutionConfig>Release|Any CPU</LastActiveSolutionConfig>
|
||||
<LastActiveSolutionConfig>Debug|Any CPU</LastActiveSolutionConfig>
|
||||
<Use64BitIISExpress>false</Use64BitIISExpress>
|
||||
<IISExpressSSLPort />
|
||||
<IISExpressAnonymousAuthentication />
|
||||
|
||||
@@ -1012,6 +1012,7 @@ namespace BeWo.Report.ReportObjects
|
||||
duration *= (prozent / 100);
|
||||
}
|
||||
|
||||
//System.Diagnostics.Debug.WriteLine("{0:0.##}", duration);
|
||||
if (item.ServiceDescription != null &&
|
||||
item.ServiceDescription.ServiceCategory != null &&
|
||||
item.ServiceDescription.ServiceCategory.IsBillable)
|
||||
|
||||
@@ -39,6 +39,24 @@ namespace AkggMid
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (ro.ApprovedFLSPerWeek == 0)
|
||||
{
|
||||
if (ro.CostBearer2SupportConceptList != null && ro.CostBearer2SupportConceptList.Count > 0)
|
||||
{
|
||||
var c2s = ro.CostBearer2SupportConceptList[0];
|
||||
|
||||
foreach (var scap in c2s.ApprovalPeriodList)
|
||||
{
|
||||
if (scap.StartDate <= ro.EndDate && scap.EndDate >= ro.StartDate && scap.ApprovedBEInterval.HasValue && scap.ApprovedBEPerInterval.HasValue && scap.ApprovedBEInterval.Value == BS.Shared.SupportConceptApprovalInterval.Weekly)
|
||||
{
|
||||
ro.ApprovedFLSPerWeek = scap.ApprovedBEPerInterval.Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
public List<ServicesOverviewRO.ServiceDetail> ErstelleDummyRecords(ServicesOverviewRO pRO)
|
||||
{
|
||||
|
||||
@@ -5,8 +5,12 @@ using System.IO;
|
||||
using System.Text;
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Service.DCEntityMapper;
|
||||
using BeWo.Service.Plugins;
|
||||
using BS.Shared.Core;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using CaritasAhlen.Invoicing;
|
||||
|
||||
namespace CaritasAhlen.Export
|
||||
{
|
||||
@@ -210,9 +214,17 @@ namespace CaritasAhlen.Export
|
||||
{
|
||||
sb.AppendLine();
|
||||
}
|
||||
for (int i = 0; i < row.ItemArray.Length - 1; i++)
|
||||
long oid = (long)row.ItemArray[0];
|
||||
decimal? betrag = null;
|
||||
if (oid > 0)
|
||||
{
|
||||
if (i > 0)
|
||||
betrag = BerechneRechnungsbetrag(oid, date, date.AddMonths(1).AddDays(-1));
|
||||
}
|
||||
|
||||
|
||||
for (int i = 1; i < row.ItemArray.Length - 1; i++)
|
||||
{
|
||||
if (i > 1)
|
||||
{
|
||||
sb.Append(",");
|
||||
}
|
||||
@@ -221,20 +233,35 @@ namespace CaritasAhlen.Export
|
||||
// sb.AppendLine();
|
||||
//}
|
||||
var item = row[i];
|
||||
bool quote = i == 15 || i == 35;
|
||||
bool quote = i == 16 || i == 36;
|
||||
|
||||
if (quote)
|
||||
if (i == 15) // betrag
|
||||
{
|
||||
sb.Append('"');
|
||||
sb.Append(item);
|
||||
sb.Append('"');
|
||||
if (betrag.HasValue)
|
||||
{
|
||||
sb.Append(String.Format("{0:0.00}", betrag).Replace(",", "."));
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Append(item);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Append(item);
|
||||
if (quote)
|
||||
{
|
||||
sb.Append('"');
|
||||
sb.Append(item);
|
||||
sb.Append('"');
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Append(item);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
ErstelleKostenstellenZeilen(row, sb);
|
||||
ErstelleKostenstellenZeilen(row, sb, betrag);
|
||||
}
|
||||
//F,0,050,,BEWO,DA,01012016,012016,iBelegNr1,Belegnr1,220001,,,,999.99, "Name AZ Abrechnung 01/2016 LVR",,,EUR,,,,,,,,,,,R,,,
|
||||
//G,0,1695,,,-999.99,"Name AZ Abrechnung 01/2016 LVR",
|
||||
@@ -242,16 +269,20 @@ namespace CaritasAhlen.Export
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
private static void ErstelleKostenstellenZeilen(DataRow row, StringBuilder sb)
|
||||
private static void ErstelleKostenstellenZeilen(DataRow row, StringBuilder sb, decimal? betrag)
|
||||
{
|
||||
if (row.ItemArray.Length > 15)
|
||||
{
|
||||
var betragObj = row[14];
|
||||
var betragObj = row[15];
|
||||
|
||||
decimal gesamtbetrag = 0;
|
||||
if (betragObj != null)
|
||||
{
|
||||
Decimal.TryParse(betragObj.ToString().Replace(".", ","), out gesamtbetrag);
|
||||
if (!betrag.HasValue)
|
||||
{
|
||||
betrag = gesamtbetrag;
|
||||
}
|
||||
}
|
||||
var kstItem = row[row.ItemArray.Length - 1];
|
||||
|
||||
@@ -261,7 +292,7 @@ namespace CaritasAhlen.Export
|
||||
|
||||
sb.AppendLine();
|
||||
sb.Append(String.Format("K,0,{0},,v,,,,", kst));
|
||||
sb.Append(String.Format("{0:0.00}", gesamtbetrag).Replace(",", "."));
|
||||
sb.Append(String.Format("{0:0.00}", betrag).Replace(",", "."));
|
||||
sb.Append(",,4419,,,,,,");
|
||||
}
|
||||
}
|
||||
@@ -405,6 +436,7 @@ order by p.`LastName`, p.FirstName
|
||||
|
||||
String sql = @"
|
||||
(SELECT
|
||||
cb2sc.Oid,
|
||||
'F',
|
||||
'0',
|
||||
'005',
|
||||
@@ -495,6 +527,7 @@ WHERE c.`IsActive` <> 0 AND sc.`IsActive` <> 0
|
||||
and (sr.`GeleisteteFLM` is not null)#ReplaceCustomerOid#)
|
||||
UNION
|
||||
(SELECT
|
||||
0,
|
||||
'F',
|
||||
'0',
|
||||
'005',
|
||||
@@ -587,6 +620,47 @@ and (sr.`GeleisteteFLM` is not null)#ReplaceCustomerOid#) ORDER BY Verwendung";
|
||||
return sql;
|
||||
}
|
||||
|
||||
private static decimal? BerechneRechnungsbetrag(long c2sOid, DateTime start, DateTime end)
|
||||
{
|
||||
|
||||
var factory = new CustomInvoiceFactory();
|
||||
|
||||
|
||||
Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>> dict = new Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>>();
|
||||
var c2s = DAOFactory.GenericDAO.LoadByID<CostBearer2SupportConcept>(c2sOid);
|
||||
var c2sDc = MapperFactory.SupportConceptCostBearerRelDC_CostBearer2SupportConcept.MapToNewDC(c2s);
|
||||
|
||||
CompactSupportConceptDC sc = CreateCompactSupportConcept(c2sDc);
|
||||
|
||||
|
||||
dict.Add(sc, MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewDCs(c2s.ServiceRecords));
|
||||
|
||||
var creator = factory.CreateInvoiceCreator("Finanzauswertung", null, dict);
|
||||
|
||||
DateTimeSpan span = new DateTimeSpan();
|
||||
span.StartDate = start;
|
||||
span.EndDate = end;
|
||||
|
||||
var invoices = creator.GenerateServiceInvoices(c2sDc.CostBearer.CostBearerOid.Value, span, dict);
|
||||
|
||||
if (invoices != null && invoices.Count == 1)
|
||||
{
|
||||
return invoices[0].ClaimSum ?? 0;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static CompactSupportConceptDC CreateCompactSupportConcept(SupportConceptCostBearerRelDC c2s)
|
||||
{
|
||||
var dc = new CompactSupportConceptDC();
|
||||
dc.SupportConceptOid = c2s.SupportConcept.SupportConceptOid;
|
||||
dc.CostBearerRelOids = new List<long>();
|
||||
dc.CostBearerRelOids.Add(c2s.CostBearer2SupportConceptOid.Value);
|
||||
//dc.IsApproved = c2s.ApprovedStartDate.HasValue && c2s.ApprovedEndDate.HasValue;
|
||||
dc.IsApproved = true;
|
||||
return dc;
|
||||
}
|
||||
|
||||
private static String GetAbschlagszahlungenSql(DateTime date)
|
||||
{
|
||||
String sql = @"
|
||||
|
||||
@@ -12,7 +12,11 @@ namespace PerspektivenEV.Export
|
||||
{
|
||||
public override QueryDC CreateQuery(QueryDC query)
|
||||
{
|
||||
return DatevExporter.CreateQuery(query);
|
||||
var q = DatevExporter.CreateQuery(query);
|
||||
CreateBuchungsExportProtokollEintrag(q);
|
||||
|
||||
return q;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -111,7 +111,6 @@ namespace ProfEggersStiftung
|
||||
// xrLabel16
|
||||
//
|
||||
this.xrLabel16.BackColor = System.Drawing.Color.Transparent;
|
||||
this.xrLabel16.CanShrink = true;
|
||||
this.xrLabel16.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Bold);
|
||||
this.xrLabel16.LocationFloat = new DevExpress.Utils.PointFloat(250F, 35.75F);
|
||||
this.xrLabel16.Name = "xrLabel16";
|
||||
|
||||
@@ -84,7 +84,6 @@ namespace ProfEggersStiftung
|
||||
// xrLabel16
|
||||
//
|
||||
this.xrLabel16.BackColor = System.Drawing.Color.Transparent;
|
||||
this.xrLabel16.CanShrink = true;
|
||||
this.xrLabel16.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Bold);
|
||||
this.xrLabel16.LocationFloat = new DevExpress.Utils.PointFloat(250F, 35.75F);
|
||||
this.xrLabel16.Name = "xrLabel16";
|
||||
|
||||
@@ -0,0 +1,207 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Report.ReportObjects;
|
||||
|
||||
|
||||
namespace SHKService
|
||||
{
|
||||
public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung
|
||||
{
|
||||
//public override bool AddServiceRecordToDuration(ServiceRecord item)
|
||||
//{
|
||||
// if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null)
|
||||
// {
|
||||
// if (item.ServiceDescription.Name != "Pause" && item.ServiceDescription.Name != "Zeitabzug")
|
||||
// {
|
||||
// if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit")
|
||||
// {
|
||||
// return true;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// return false;
|
||||
//}
|
||||
|
||||
//protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList<ServiceRecord> groupFilteredRecords, DateTime berichtsAnfang,
|
||||
// DateTime berichtsEnde)
|
||||
//{
|
||||
// decimal flsGesamt = 0;
|
||||
// decimal arbeitszeit = 0;
|
||||
|
||||
// var sum = new ServiceRecordSummary();
|
||||
// sum.RecordsImBerichtszeitraum = new List<ServiceRecord>();
|
||||
// //base.CorrectOverlappingTimes(groupFilteredRecords);
|
||||
|
||||
// foreach (var item in groupFilteredRecords)
|
||||
// {
|
||||
// if (!IsServiceRecordFehlzeit(item))
|
||||
// {
|
||||
// if (item.Start.Value >= berichtsAnfang && item.Start.Value < berichtsEnde)
|
||||
// {
|
||||
// //if (AddServiceRecordToDuration(item))
|
||||
// //{
|
||||
// decimal duration = 0;
|
||||
|
||||
// if (item.GroupRoundedDuration.HasValue)
|
||||
// {
|
||||
// duration = item.GroupRoundedDuration.Value;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// duration = item.RoundedDuration;
|
||||
// }
|
||||
|
||||
// if (item.ServiceDescription != null &&
|
||||
// item.ServiceDescription.ServiceCategory != null)
|
||||
// {
|
||||
// if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit")
|
||||
// {
|
||||
|
||||
// if (item.ServiceDescription.Name != "Pause")
|
||||
// {
|
||||
// if (item.ServiceDescription.Name != "Zeitabzug")
|
||||
// arbeitszeit += duration;
|
||||
// else
|
||||
// arbeitszeit -= duration;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// //arbeitszeit -= duration;
|
||||
// }
|
||||
// }
|
||||
// else if (item.ServiceDescription.ServiceCategory.IsBillable)
|
||||
// {
|
||||
// flsGesamt += duration;
|
||||
// }
|
||||
|
||||
// }
|
||||
// sum.RecordsImBerichtszeitraum.Add(item);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// sum.IstAbrechenbar = flsGesamt;
|
||||
// sum.IstNichtAbrechenbar = arbeitszeit - flsGesamt;
|
||||
|
||||
// return sum;
|
||||
//}
|
||||
|
||||
//public override MitarbeiterstundenkontoRO.EmployeeDetail BerechneUeberstundenBis(MitarbeiterstundenkontoRO.EmployeeDetail edOrig, IList<ServiceRecord> records, DateTime monat, out decimal? ueberstunden,
|
||||
// out decimal alteExtraUeberstunden)
|
||||
//{
|
||||
// return base.BerechneUeberstundenBis(edOrig, records, monat, out ueberstunden, out alteExtraUeberstunden);
|
||||
//}
|
||||
|
||||
//public override IList<MitarbeiterstundenkontoRO.DayDetail> CreateDayDetails(DateTime berichtStart, DateTime berichtEnde, MitarbeiterstundenkontoRO.EmployeeDetail ed, IList<ServiceRecord> recordsAll)
|
||||
//{
|
||||
// var list = base.CreateDayDetails(berichtStart, berichtEnde, ed, recordsAll);
|
||||
// foreach (var dd in list)
|
||||
// {
|
||||
// dd.MinutesTotal = 0;
|
||||
// dd.SpecialHours = 0;
|
||||
// dd.PauseInMinuten = 0;
|
||||
|
||||
// foreach (var sr in recordsAll)
|
||||
// {
|
||||
// if (sr.Start.HasValue && sr.Start >= berichtStart && sr.Start < berichtEnde && sr.End.HasValue && sr.Start.Value.Day == dd.Date.Day)
|
||||
// {
|
||||
// decimal duration = GetDuration(sr);
|
||||
|
||||
// if (sr.ServiceDescription.Name == "Pause")
|
||||
// {
|
||||
// dd.PauseInMinuten += (decimal)sr.DurationMinutes;
|
||||
|
||||
// }
|
||||
// else if (sr.ServiceDescription.ServiceCategory.Name == "Arbeitszeit")
|
||||
// {
|
||||
// if (sr.ServiceDescription.Name != "Zeitabzug")
|
||||
// dd.MinutesTotal += (decimal)sr.DurationMinutes;
|
||||
// else
|
||||
// dd.MinutesTotal -= (decimal)sr.DurationMinutes;
|
||||
// }
|
||||
// else if (sr.ServiceDescription.Name != "Arbeitszeit" &&
|
||||
// sr.ServiceDescription.ServiceCategory.IsBillable)
|
||||
// {
|
||||
// dd.SpecialHours += (decimal)sr.DurationMinutes;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// if (dd.PauseInMinuten > 0)
|
||||
// {
|
||||
// dd.MinutesTotal -= dd.PauseInMinuten;
|
||||
// if (dd.MinutesTotal < 0)
|
||||
// {
|
||||
// dd.MinutesTotal = 0;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// return list;
|
||||
//}
|
||||
|
||||
//private decimal GetDuration(ServiceRecord sr)
|
||||
//{
|
||||
// decimal duration = 0;
|
||||
|
||||
// if (sr.GroupRoundedDuration.HasValue)
|
||||
// {
|
||||
// duration = sr.GroupRoundedDuration.Value;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// duration = sr.RoundedDuration;
|
||||
// }
|
||||
|
||||
// return duration;
|
||||
//}
|
||||
|
||||
//public override bool SollPauseBerechnen()
|
||||
//{
|
||||
// return true;
|
||||
//}
|
||||
|
||||
//public override bool ShouldCreateDayDetails()
|
||||
//{
|
||||
// return true;
|
||||
//}
|
||||
|
||||
//public override MitarbeiterstundenkontoRO.DayDetail CreateDayDetail(DateTime date, MitarbeiterstundenkontoRO.EmployeeDetail ed)
|
||||
//{
|
||||
// var dd = base.CreateDayDetail(date, ed);
|
||||
// dd.MaxHoursUntilBreak = null;
|
||||
// dd.MaxHoursUntilBreak2 = null;
|
||||
// dd.BreakMinutes = null;
|
||||
// dd.BreakMinutes2 = null;
|
||||
// return dd;
|
||||
//}
|
||||
|
||||
//public override decimal BerechnePauseMinuten(IList<ServiceRecord> srListAlle)
|
||||
//{
|
||||
// var srList = srListAlle.Where(s => s.ServiceDescription.ServiceCategory.Name == "Arbeitszeit");
|
||||
// decimal pausenZeit = 0;
|
||||
|
||||
// List<ServiceRecord> pausen = new List<ServiceRecord>();
|
||||
// List<ServiceRecord> nichtpausen = new List<ServiceRecord>();
|
||||
|
||||
// foreach (var sr in srList)
|
||||
// {
|
||||
// if (sr.ServiceDescription.Name == "Pause")
|
||||
// {
|
||||
// pausen.Add(sr);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// nichtpausen.Add(sr);
|
||||
// }
|
||||
// }
|
||||
|
||||
// foreach (var pause in pausen)
|
||||
// {
|
||||
// pausenZeit += pause.RoundedDuration;
|
||||
// }
|
||||
// return pausenZeit;
|
||||
//}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using BeWo.Report;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Report.ReportObjects;
|
||||
|
||||
|
||||
namespace SHKService
|
||||
{
|
||||
public class CustomMitarbeiterstundenkontoBerechnungMonate : MitarbeiterstundenkontoBerechnungMonate
|
||||
{
|
||||
|
||||
public override MitarbeiterstundenkontoBerechnung CreateMitarbeiterstundenkontoBerechnung()
|
||||
{
|
||||
return new CustomMitarbeiterstundenkontoBerechnung();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
36
ReportImp/SHKServiceSBD/Properties/AssemblyInfo.cs
Normal file
36
ReportImp/SHKServiceSBD/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// Allgemeine Informationen über eine Assembly werden über die folgenden
|
||||
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
|
||||
// die einer Assembly zugeordnet sind.
|
||||
[assembly: AssemblyTitle("KundeXyz")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("KundeXyz")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2020")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly
|
||||
// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von
|
||||
// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
|
||||
[assembly: Guid("c1fed668-adb9-47e0-b589-1389618e1b6e")]
|
||||
|
||||
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
|
||||
//
|
||||
// Hauptversion
|
||||
// Nebenversion
|
||||
// Buildnummer
|
||||
// Revision
|
||||
//
|
||||
// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
|
||||
// indem Sie "*" wie unten gezeigt eingeben:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
1
ReportImp/SHKServiceSBD/Properties/licenses.licx
Normal file
1
ReportImp/SHKServiceSBD/Properties/licenses.licx
Normal file
@@ -0,0 +1 @@
|
||||
DevExpress.XtraReports.UI.XtraReport, DevExpress.XtraReports.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
82
ReportImp/SHKServiceSBD/SHKServiceSBD.csproj
Normal file
82
ReportImp/SHKServiceSBD/SHKServiceSBD.csproj
Normal file
@@ -0,0 +1,82 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{4C29CCFD-4B7A-44CC-B6DD-39AEBA2E4DFE}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>SHKServiceSBD</RootNamespace>
|
||||
<AssemblyName>5344902949_Reports</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>..\..\Host\bin\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>..\..\Host\bin\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DevExpress.Data.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Printing.v17.1.Core, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Utils.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.XtraPrinting.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.XtraReports.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="CustomMitarbeiterstundenkontoBerechnung.cs" />
|
||||
<Compile Include="CustomMitarbeiterstundenkontoBerechnungMonate.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Service\CustomVertretungsManager.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Data\Data.csproj">
|
||||
<Project>{B0D73E3D-4AE7-4024-93A6-DB1F46D7CCEE}</Project>
|
||||
<Name>Data</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\Report\Report.csproj">
|
||||
<Project>{40d8b312-ea64-49e3-a31a-5e57ed4d5654}</Project>
|
||||
<Name>Report</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\Service\Service.csproj">
|
||||
<Project>{094331c3-ecee-4c89-bbfd-4c9ded89f0ef}</Project>
|
||||
<Name>Service</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\Shared\Shared.csproj">
|
||||
<Project>{2f50b83d-a3f0-4ec4-979a-3f9b7e3d8ed4}</Project>
|
||||
<Name>Shared</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Properties\licenses.licx" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Calculations\" />
|
||||
<Folder Include="Invoicing\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
BIN
ReportImp/SHKServiceSBD/SHK_Service_Logo_PNG_02-2021.png
Normal file
BIN
ReportImp/SHKServiceSBD/SHK_Service_Logo_PNG_02-2021.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 110 KiB |
56
ReportImp/SHKServiceSBD/Service/CustomVertretungsManager.cs
Normal file
56
ReportImp/SHKServiceSBD/Service/CustomVertretungsManager.cs
Normal file
@@ -0,0 +1,56 @@
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Service.DCEntityMapper;
|
||||
using BeWo.Service.Plugins;
|
||||
using BeWo.Service.SBD;
|
||||
using BS.Shared;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
|
||||
namespace SHKService.Service
|
||||
{
|
||||
public class CustomVertretungsManager : VertretungsManager
|
||||
{
|
||||
public override List<CompactVertreterEmployeeDC> SucheVertreter(VertreterSucheFilterDC filter)
|
||||
{
|
||||
//var vertretungsListe = CreateVertretungsListe(filter.StartDate, filter.EndDate);
|
||||
|
||||
//// EmployeeOids der Mitarbeiter, die einen abwesenden Mitarbeiter vertreten
|
||||
//var ausgewaehlteVertreter = vertretungsListe.Where(vertretungsItem => vertretungsItem.VertretungsStatus != VertretungsStatus.KlientKrank &&
|
||||
// vertretungsItem.Vertreter != null &&
|
||||
// vertretungsItem.Vertreter.ActivationType == ActivationTypeId.Active).Select(item => item.Vertreter.EmployeeOid);
|
||||
|
||||
//// EmployeeOids der Betreuer abwesender Klienten, die nicht schon einen anderen Klienten vertreten
|
||||
//var employeeOids = vertretungsListe.Where(vertretungsItem => vertretungsItem.Employee != null &&
|
||||
// vertretungsItem.VertretungsStatus == VertretungsStatus.KlientKrank &&
|
||||
// !ausgewaehlteVertreter.Contains(vertretungsItem.Employee.EmployeeOid)).Select(s => s.Employee.EmployeeOid);
|
||||
|
||||
//// EmployeeOids von abwesenden Mitarbeitern
|
||||
//var abwesenendeEmployeeOids = vertretungsListe.Where(vertretungsItem => vertretungsItem.VertretungsStatus != VertretungsStatus.KlientKrank &&
|
||||
// vertretungsItem.Employee != null).Select(item => item.Employee.EmployeeOid);
|
||||
|
||||
//employeeOids = employeeOids.Where(e => !abwesenendeEmployeeOids.Contains(e));
|
||||
var team = DAOFactory.GenericDAO.GetAllActive<Team>().Where(t => t.Name == "Vertretungsplanung").FirstOrDefault();
|
||||
if (team != null)
|
||||
{
|
||||
var allEmps = team.MemberList;
|
||||
var list = MapperFactory.CompactVertreterEmployeeDC_VertreterEmployee.MapToNewDCs(allEmps);
|
||||
|
||||
|
||||
if (filter.CustomerOid.HasValue && filter.VerwendeEntfernungssuche)
|
||||
{
|
||||
GetDistanceForVertreterEmployees(filter.CustomerOid.Value, ref list, allEmps);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
return base.SucheVertreter(filter);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using BeWo.Service.Plugins;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace SHKService.Validation
|
||||
{
|
||||
class CustomServiceRecordValidator : ServiceRecordValidator
|
||||
{
|
||||
public override string[] GetIgnoreCategoriesForOverlappingCheck()
|
||||
{
|
||||
return new[] { "Arbeitszeit" };
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -103,12 +103,8 @@ namespace BeWo.SeWo
|
||||
}
|
||||
//if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null)
|
||||
//{
|
||||
// var p = item.ServiceDescription.ServiceCategory.ProzentStundenkonto ?? item.ServiceDescription.ServiceCategory.ProzentAbrechnung;
|
||||
// if (item.ServiceDescription.ProzentStundenkonto.HasValue)
|
||||
// {
|
||||
// p = item.ServiceDescription.ProzentStundenkonto.Value;
|
||||
// }
|
||||
|
||||
// var p = item.ServiceDescription.ServiceCategory.ProzentAbrechnung;
|
||||
|
||||
// if (p != 100 && p > 0)
|
||||
// {
|
||||
// item.RoundedDuration *= (p / 100);
|
||||
|
||||
@@ -235,6 +235,27 @@ namespace BeWo.SeWo
|
||||
duration = sr.RoundedDuration;
|
||||
}
|
||||
|
||||
if (IsKrankheitAbsenceServiceRecord(sr) || IsUrlaubAbsenceServiceRecord(sr))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
if (sr.ServiceDescription != null && sr.ServiceDescription.ServiceCategory != null)
|
||||
{
|
||||
var p = sr.ServiceDescription.ServiceCategory.ProzentStundenkonto ?? sr.ServiceDescription.ServiceCategory.ProzentAbrechnung;
|
||||
if (sr.ServiceDescription.ProzentStundenkonto.HasValue)
|
||||
{
|
||||
p = sr.ServiceDescription.ProzentStundenkonto.Value;
|
||||
}
|
||||
|
||||
if (p != 100 && p > 0)
|
||||
{
|
||||
duration *= (p / 100);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//if (sr.ServiceDescription.ServiceCategory.Name == "SeWo Ruf" || sr.ServiceDescription.ServiceCategory.Name == "SeWo Notdienst")
|
||||
//{
|
||||
// var p = sr.ServiceDescription.ServiceCategory.Percentage;
|
||||
@@ -269,6 +290,30 @@ namespace BeWo.SeWo
|
||||
return duration;
|
||||
}
|
||||
|
||||
private bool IsKrankheitAbsenceServiceRecord(ServiceRecord item)
|
||||
{
|
||||
if (item.ServiceDescription.Name.ToLower().Contains("krankheit"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (item.ServiceDescription.Name.ToLower().Contains("corona"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private bool IsUrlaubAbsenceServiceRecord(ServiceRecord item)
|
||||
{
|
||||
if (item.ServiceDescription.Name.ToLower().Contains("urlaub"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
public virtual Zeitverteilung BerechneZuschlag(ServiceRecord sr)
|
||||
{
|
||||
Zeitverteilung zv = new Zeitverteilung();
|
||||
|
||||
@@ -162,7 +162,7 @@ namespace SehtMuenster
|
||||
//
|
||||
// xrLine2
|
||||
//
|
||||
this.xrLine2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 221.2551F);
|
||||
this.xrLine2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 250.4218F);
|
||||
this.xrLine2.Name = "xrLine2";
|
||||
this.xrLine2.SizeF = new System.Drawing.SizeF(270F, 9.75F);
|
||||
//
|
||||
@@ -174,7 +174,7 @@ namespace SehtMuenster
|
||||
this.xrLabel12.Multiline = true;
|
||||
this.xrLabel12.Name = "xrLabel12";
|
||||
this.xrLabel12.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel12.SizeF = new System.Drawing.SizeF(663.125F, 162.7291F);
|
||||
this.xrLabel12.SizeF = new System.Drawing.SizeF(663.125F, 203.5419F);
|
||||
this.xrLabel12.StylePriority.UseBackColor = false;
|
||||
this.xrLabel12.StylePriority.UseFont = false;
|
||||
this.xrLabel12.Text = resources.GetString("xrLabel12.Text");
|
||||
@@ -481,7 +481,7 @@ namespace SehtMuenster
|
||||
this.xrLabel12,
|
||||
this.xrCheckBox2,
|
||||
this.xrCheckBox1});
|
||||
this.GroupFooter2.HeightF = 311.2133F;
|
||||
this.GroupFooter2.HeightF = 260.1718F;
|
||||
this.GroupFooter2.Level = 1;
|
||||
this.GroupFooter2.Name = "GroupFooter2";
|
||||
this.GroupFooter2.StylePriority.UseFont = false;
|
||||
|
||||
@@ -125,6 +125,8 @@ nach §§ 75 ff. SGB XII eingehalten wurden und alle hier gemachten Angaben anha
|
||||
Mit freundlichen Grüßen
|
||||
Im Auftrag
|
||||
|
||||
|
||||
|
||||
[CreatorName]
|
||||
Leitung Ambulanter Dienst
|
||||
</value>
|
||||
|
||||
@@ -144,7 +144,7 @@ namespace BeWo.Service.Plugins
|
||||
//t = "9975231461"; // Selwo
|
||||
//t = "8181286349"; // BeWo am Rhein
|
||||
//t = "4595275645"; // Eigenständig
|
||||
//t = "7912635399"; // Prof. Dr. Eggers Stiftung
|
||||
t = "7912635399"; // Prof. Dr. Eggers Stiftung
|
||||
//t = "3549726254"; // Socia
|
||||
//t = "1992495802"; // Monvita
|
||||
//t = "7381352241"; // Ressource e.V.
|
||||
@@ -169,7 +169,7 @@ namespace BeWo.Service.Plugins
|
||||
//t = "8275654834"; // Twg Jonathan
|
||||
//t = "6586058528"; // Freundeskreis Suchtkrankenhilfe e.V. (FFS)
|
||||
//t = "2632162696"; // Hand in Hand (ehemals Pro BeWo Düren)
|
||||
t = "6340891020"; // Caritas Ahlen
|
||||
//t = "6340891020"; // Caritas Ahlen
|
||||
//t = "3659854106"; // alpha e.V.
|
||||
//t = "5809130435"; // Lebenshilfe Kusel
|
||||
//t = "3367947706"; // PaS Mönchengladbach
|
||||
@@ -346,6 +346,7 @@ namespace BeWo.Service.Plugins
|
||||
//t = "3226307161"; // Roman Roger Puth
|
||||
//t = "3522103738"; // AWO Münsterland-Recklinghausen
|
||||
//t = "5592509446"; // Kontakt Verein für psychosoziale Hilfen e.V
|
||||
//t = "5344902949"; // SHK Service GmbH SBD
|
||||
|
||||
return t;
|
||||
#else
|
||||
|
||||
@@ -6,7 +6,7 @@ using System.Text;
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Service.DCEntityMapper;
|
||||
|
||||
using BeWo.Service.ServiceUtils.DistanceCalculator;
|
||||
using BS.Shared;
|
||||
using BS.Shared.Core;
|
||||
using BS.Shared.DataContracts;
|
||||
@@ -17,7 +17,7 @@ using Employee = BeWo.Data.Entities.Employee;
|
||||
|
||||
namespace BeWo.Service.SBD
|
||||
{
|
||||
internal class VertretungsManager
|
||||
public class VertretungsManager
|
||||
{
|
||||
private static List<ContactDC> LoadContactInformationForEntity<T>(long entityOid) where T : BeWoEntityBase
|
||||
{
|
||||
@@ -26,7 +26,69 @@ namespace BeWo.Service.SBD
|
||||
return MapperFactory.ContactDC_Contact.MapToNewDCs(entity.Contacts);
|
||||
}
|
||||
|
||||
public List<VertretungsItemDC> CreateSubstitutions(DateTime start, DateTime end)
|
||||
public virtual List<CompactVertreterEmployeeDC> SucheVertreter(VertreterSucheFilterDC filter)
|
||||
{
|
||||
var vertretungsListe = CreateVertretungsListe(filter.StartDate, filter.EndDate);
|
||||
|
||||
// EmployeeOids der Mitarbeiter, die einen abwesenden Mitarbeiter vertreten
|
||||
var ausgewaehlteVertreter = vertretungsListe.Where(vertretungsItem => vertretungsItem.VertretungsStatus != VertretungsStatus.KlientKrank &&
|
||||
vertretungsItem.Vertreter != null &&
|
||||
vertretungsItem.Vertreter.ActivationType == ActivationTypeId.Active).Select(item => item.Vertreter.EmployeeOid);
|
||||
|
||||
// EmployeeOids der Betreuer abwesender Klienten, die nicht schon einen anderen Klienten vertreten
|
||||
var employeeOids = vertretungsListe.Where(vertretungsItem => vertretungsItem.Employee != null &&
|
||||
vertretungsItem.VertretungsStatus == VertretungsStatus.KlientKrank &&
|
||||
!ausgewaehlteVertreter.Contains(vertretungsItem.Employee.EmployeeOid)).Select(s => s.Employee.EmployeeOid);
|
||||
|
||||
// EmployeeOids von abwesenden Mitarbeitern
|
||||
var abwesenendeEmployeeOids = vertretungsListe.Where(vertretungsItem => vertretungsItem.VertretungsStatus != VertretungsStatus.KlientKrank &&
|
||||
vertretungsItem.Employee != null).Select(item => item.Employee.EmployeeOid);
|
||||
|
||||
employeeOids = employeeOids.Where(e => !abwesenendeEmployeeOids.Contains(e));
|
||||
|
||||
var allEmps = DAOFactory.GenericDAO.GetActiveByIDs<Employee>(employeeOids).ToList();
|
||||
var list = MapperFactory.CompactVertreterEmployeeDC_VertreterEmployee.MapToNewDCs(allEmps);
|
||||
|
||||
//Setze Betreuungszeiten
|
||||
foreach (var vertreter in list)
|
||||
{
|
||||
foreach (var item in vertretungsListe)
|
||||
{
|
||||
if (item.Employee != null && item.Employee.EmployeeOid == vertreter.EmployeeOid)
|
||||
{
|
||||
//if (vertreter.Arbeitszeit == null)
|
||||
//{
|
||||
// vertreter.Arbeitszeit = new List<ArbeitszeitDC>();
|
||||
//}
|
||||
|
||||
//if (vertreter.Arbeitszeit.Count == 0)
|
||||
//{
|
||||
// vertreter.Arbeitszeit.Add(new ArbeitszeitDC
|
||||
// {
|
||||
// Eintraege = new List<ArbeitszeitEintragDC>()
|
||||
// });
|
||||
//}
|
||||
//vertreter.Arbeitszeit[0].Eintraege.AddRange(item.Arbeitszeiten);
|
||||
vertreter.Arbeitszeit = new List<ArbeitszeitDC>();
|
||||
vertreter.Arbeitszeit.Add(
|
||||
new ArbeitszeitDC
|
||||
{
|
||||
Eintraege = item.Arbeitszeiten.ToList()
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (filter.CustomerOid.HasValue && filter.VerwendeEntfernungssuche)
|
||||
{
|
||||
GetDistanceForVertreterEmployees(filter.CustomerOid.Value, ref list, allEmps);
|
||||
}
|
||||
|
||||
return list;
|
||||
|
||||
}
|
||||
|
||||
public virtual List<VertretungsItemDC> CreateSubstitutions(DateTime start, DateTime end)
|
||||
{
|
||||
Dictionary<String, bool> employeeIsAbsenceDict = new Dictionary<String, bool>();
|
||||
Dictionary<String, bool> customerIsAbsenceDict = new Dictionary<String, bool>();
|
||||
@@ -465,7 +527,7 @@ namespace BeWo.Service.SBD
|
||||
}
|
||||
}
|
||||
|
||||
public List<VertretungsItemDC> CreateVertretungsListe(DateTime start, DateTime end)
|
||||
public virtual List<VertretungsItemDC> CreateVertretungsListe(DateTime start, DateTime end)
|
||||
{
|
||||
return CreateSubstitutions(start, end);
|
||||
}
|
||||
@@ -503,7 +565,7 @@ namespace BeWo.Service.SBD
|
||||
}
|
||||
}
|
||||
|
||||
private static void SetSBDInformation(VertretungsItemDC vertretungsItem, Customer customer, Employee employee, bool isEmployeeAbsenceTime)
|
||||
public virtual void SetSBDInformation(VertretungsItemDC vertretungsItem, Customer customer, Employee employee, bool isEmployeeAbsenceTime)
|
||||
{
|
||||
vertretungsItem.CustomerPflege = customer.Pflege ? "Ja" : "Nein";
|
||||
vertretungsItem.CustomerToilettengang = customer.Toilettengang ? "Ja" : "Nein";
|
||||
@@ -874,7 +936,7 @@ namespace BeWo.Service.SBD
|
||||
|
||||
}
|
||||
|
||||
private static void SetSubstitutionColor(VertretungsItemDC vertretungsItem)
|
||||
public virtual void SetSubstitutionColor(VertretungsItemDC vertretungsItem)
|
||||
{
|
||||
switch (vertretungsItem.VertretungsStatus)
|
||||
{
|
||||
@@ -918,7 +980,7 @@ namespace BeWo.Service.SBD
|
||||
}
|
||||
}
|
||||
|
||||
private static void SetTeamleitung(BeWoEntityBase employee, VertretungsItemDC item)
|
||||
public virtual void SetTeamleitung(BeWoEntityBase employee, VertretungsItemDC item)
|
||||
{
|
||||
if (employee.Oid == null)
|
||||
{
|
||||
@@ -944,7 +1006,7 @@ namespace BeWo.Service.SBD
|
||||
item.Teamleitung = sb.ToString();
|
||||
}
|
||||
|
||||
private static void SetzeSchule(VertretungsItemDC newItem, Customer customer)
|
||||
public virtual void SetzeSchule(VertretungsItemDC newItem, Customer customer)
|
||||
{
|
||||
if (customer != null)
|
||||
{
|
||||
@@ -973,7 +1035,7 @@ namespace BeWo.Service.SBD
|
||||
return absenceTime.Start < dateTime.Date.AddDays(1) && absenceTime.End >= dateTime.Date;
|
||||
}
|
||||
|
||||
private static void AddKrankheitsZeitraumAndMeldungToItem(VertretungsItemDC item, AbsenceTimeDC absenceTime)
|
||||
public virtual void AddKrankheitsZeitraumAndMeldungToItem(VertretungsItemDC item, AbsenceTimeDC absenceTime)
|
||||
{
|
||||
if (!absenceTime.Start.HasValue || !absenceTime.End.HasValue)
|
||||
{
|
||||
@@ -1029,7 +1091,7 @@ namespace BeWo.Service.SBD
|
||||
}
|
||||
}
|
||||
|
||||
private static bool GetIsSubstitutedCompletely(IEnumerable<ArbeitszeitEintrag> assistanceTimes, Vertretung substitution, DateTime dateTime)
|
||||
public virtual bool GetIsSubstitutedCompletely(IEnumerable<ArbeitszeitEintrag> assistanceTimes, Vertretung substitution, DateTime dateTime)
|
||||
{
|
||||
var isSubstituted = true;
|
||||
|
||||
@@ -1052,7 +1114,7 @@ namespace BeWo.Service.SBD
|
||||
return isSubstituted;
|
||||
}
|
||||
|
||||
private static void GetVertretungsstatus(VertretungsItemDC vertretungsItem, DateTime dateTime, DateTime absenceTimeStartDate, Customer customer)
|
||||
public virtual void GetVertretungsstatus(VertretungsItemDC vertretungsItem, DateTime dateTime, DateTime absenceTimeStartDate, Customer customer)
|
||||
{
|
||||
MigriereSubstitutionStatus(customer);
|
||||
|
||||
@@ -1087,7 +1149,7 @@ namespace BeWo.Service.SBD
|
||||
}
|
||||
}
|
||||
|
||||
private static string GetEmployeeAddressInfo(long employeeOid)
|
||||
public virtual string GetEmployeeAddressInfo(long employeeOid)
|
||||
{
|
||||
var result = string.Empty;
|
||||
|
||||
@@ -1137,7 +1199,7 @@ namespace BeWo.Service.SBD
|
||||
return result;
|
||||
}
|
||||
|
||||
private static bool IsAbsenceTimeInAssistanceTime(DateTime currentDate, ArbeitszeitEintrag assistanceTime, AbsenceTime absenceTime)
|
||||
public virtual bool IsAbsenceTimeInAssistanceTime(DateTime currentDate, ArbeitszeitEintrag assistanceTime, AbsenceTime absenceTime)
|
||||
{
|
||||
if (currentDate.DayOfWeek != DateTimeUtils.ConvertAppointmentDayOfWeekToDayOfWeek(assistanceTime.Tag) || absenceTime.Start == null)
|
||||
{
|
||||
@@ -1156,7 +1218,7 @@ namespace BeWo.Service.SBD
|
||||
return assistanceTimeDates.Start.IsIntervalOverlappingWithAbsenceTimeInterval(assistanceTimeDates.End, absenceTime.Start.Value, absenceTimeEnd);
|
||||
}
|
||||
|
||||
private static bool IsAbsenceTimeInAssistanceTime(DateTime currentDate, ArbeitszeitEintragDC assistanceTime, AbsenceTime absenceTime)
|
||||
public virtual bool IsAbsenceTimeInAssistanceTime(DateTime currentDate, ArbeitszeitEintragDC assistanceTime, AbsenceTime absenceTime)
|
||||
{
|
||||
if (currentDate.DayOfWeek != DateTimeUtils.ConvertAppointmentDayOfWeekToDayOfWeek(assistanceTime.Tag) || absenceTime.Start == null)
|
||||
{
|
||||
@@ -1179,7 +1241,7 @@ namespace BeWo.Service.SBD
|
||||
return assistanceTimeDates.Start.IsIntervalOverlappingWithAbsenceTimeInterval(assistanceTimeDates.End, absenceTime.Start.Value, absenceTimeEnd);
|
||||
}
|
||||
|
||||
private static List<ArbeitszeitEintrag> GetAssistanceTimesForCustomer(Customer customer, Employee employee, AbsenceTime absenceTime, DateTime start, DateTime end)
|
||||
public virtual List<ArbeitszeitEintrag> GetAssistanceTimesForCustomer(Customer customer, Employee employee, AbsenceTime absenceTime, DateTime start, DateTime end)
|
||||
{
|
||||
var assistanceTimeEntries = new List<ArbeitszeitEintrag>();
|
||||
|
||||
@@ -1230,7 +1292,7 @@ namespace BeWo.Service.SBD
|
||||
return assistanceTimeEntries;
|
||||
}
|
||||
|
||||
private static bool IsArbeitszeitValid(Arbeitszeit arbeitszeit, DateTime time)
|
||||
public virtual bool IsArbeitszeitValid(Arbeitszeit arbeitszeit, DateTime time)
|
||||
{
|
||||
if (arbeitszeit.GueltigVon == null && arbeitszeit.GueltigBis == null)
|
||||
{
|
||||
@@ -1255,7 +1317,7 @@ namespace BeWo.Service.SBD
|
||||
return false;
|
||||
}
|
||||
|
||||
private static List<Arbeitszeit> GetSchoolAssistanceTimes(Customer customer, DateTime start, DateTime end, AbsenceTime absenceTime)
|
||||
public virtual List<Arbeitszeit> GetSchoolAssistanceTimes(Customer customer, DateTime start, DateTime end, AbsenceTime absenceTime)
|
||||
{
|
||||
var allSchoolAssistanceTimes = new List<Arbeitszeit>();
|
||||
|
||||
@@ -1284,5 +1346,24 @@ namespace BeWo.Service.SBD
|
||||
|
||||
return schoolAssistanceTimes;
|
||||
}
|
||||
|
||||
protected void GetDistanceForVertreterEmployees(long customerOid, ref List<CompactVertreterEmployeeDC> list, IList<Employee> employees)
|
||||
{
|
||||
var customer = DAOFactory.GenericDAO.LoadByID<Customer>(customerOid);
|
||||
var school = customer.Customer2OrganisationList.FirstOrDefault(f => f.ValueList.Any(b => b.Entry.Type == ValueListEntryType.EnvironmentOrganisationType && b.Entry.Value.Equals("Schule")));
|
||||
|
||||
var origin = new Address[] { school.Person.Address };
|
||||
var destinations = employees.Select(x => x.Person.Address).ToArray();
|
||||
|
||||
var matrix = AddressRouteManager.GetMatrix(origin, destinations);
|
||||
|
||||
Employee empl; AddressRoute route;
|
||||
foreach (var employee in list)
|
||||
{
|
||||
empl = employees.FirstOrDefault(e => e.Person.Oid.Value == employee.PersonOid);
|
||||
route = matrix.GetRoute(school.Person.Address, empl.Person.Address);
|
||||
employee.AddressRoute = MapperFactory.AddressRouteDC_AddressRoute.MapToNewDC(route);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1470,64 +1470,10 @@ namespace BeWo.Service.ServiceImplementations
|
||||
{
|
||||
try
|
||||
{
|
||||
var vertretungsManager = new VertretungsManager();
|
||||
var vertretungsListe = vertretungsManager.CreateVertretungsListe(filter.StartDate, filter.EndDate);
|
||||
var s = PluginLoader.FindClass<VertretungsManager>();
|
||||
|
||||
// EmployeeOids der Mitarbeiter, die einen abwesenden Mitarbeiter vertreten
|
||||
var ausgewaehlteVertreter = vertretungsListe.Where(vertretungsItem => vertretungsItem.VertretungsStatus != VertretungsStatus.KlientKrank &&
|
||||
vertretungsItem.Vertreter != null &&
|
||||
vertretungsItem.Vertreter.ActivationType == ActivationTypeId.Active).Select(item => item.Vertreter.EmployeeOid);
|
||||
|
||||
// EmployeeOids der Betreuer abwesender Klienten, die nicht schon einen anderen Klienten vertreten
|
||||
var employeeOids = vertretungsListe.Where(vertretungsItem => vertretungsItem.Employee != null &&
|
||||
vertretungsItem.VertretungsStatus == VertretungsStatus.KlientKrank &&
|
||||
!ausgewaehlteVertreter.Contains(vertretungsItem.Employee.EmployeeOid)).Select(s => s.Employee.EmployeeOid);
|
||||
return s.SucheVertreter(filter);
|
||||
|
||||
// EmployeeOids von abwesenden Mitarbeitern
|
||||
var abwesenendeEmployeeOids = vertretungsListe.Where(vertretungsItem => vertretungsItem.VertretungsStatus != VertretungsStatus.KlientKrank &&
|
||||
vertretungsItem.Employee != null).Select(item => item.Employee.EmployeeOid);
|
||||
|
||||
employeeOids = employeeOids.Where(e => !abwesenendeEmployeeOids.Contains(e));
|
||||
|
||||
var allEmps = DAOFactory.GenericDAO.GetActiveByIDs<Employee>(employeeOids).ToList();
|
||||
var list = MapperFactory.CompactVertreterEmployeeDC_VertreterEmployee.MapToNewDCs(allEmps);
|
||||
|
||||
//Setze Betreuungszeiten
|
||||
foreach (var vertreter in list)
|
||||
{
|
||||
foreach (var item in vertretungsListe)
|
||||
{
|
||||
if (item.Employee != null && item.Employee.EmployeeOid == vertreter.EmployeeOid)
|
||||
{
|
||||
//if (vertreter.Arbeitszeit == null)
|
||||
//{
|
||||
// vertreter.Arbeitszeit = new List<ArbeitszeitDC>();
|
||||
//}
|
||||
|
||||
//if (vertreter.Arbeitszeit.Count == 0)
|
||||
//{
|
||||
// vertreter.Arbeitszeit.Add(new ArbeitszeitDC
|
||||
// {
|
||||
// Eintraege = new List<ArbeitszeitEintragDC>()
|
||||
// });
|
||||
//}
|
||||
//vertreter.Arbeitszeit[0].Eintraege.AddRange(item.Arbeitszeiten);
|
||||
vertreter.Arbeitszeit = new List<ArbeitszeitDC>();
|
||||
vertreter.Arbeitszeit.Add(
|
||||
new ArbeitszeitDC
|
||||
{
|
||||
Eintraege = item.Arbeitszeiten.ToList()
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (filter.CustomerOid.HasValue && filter.VerwendeEntfernungssuche)
|
||||
{
|
||||
GetDistanceForVertreterEmployees(filter.CustomerOid.Value, ref list, allEmps);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -1535,24 +1481,7 @@ namespace BeWo.Service.ServiceImplementations
|
||||
}
|
||||
}
|
||||
|
||||
private void GetDistanceForVertreterEmployees(long customerOid, ref List<CompactVertreterEmployeeDC> list, List<Employee> employees)
|
||||
{
|
||||
var customer = DAOFactory.GenericDAO.LoadByID<Customer>(customerOid);
|
||||
var school = customer.Customer2OrganisationList.FirstOrDefault(f => f.ValueList.Any(b => b.Entry.Type == ValueListEntryType.EnvironmentOrganisationType && b.Entry.Value.Equals("Schule")));
|
||||
|
||||
var origin = new Address[] { school.Person.Address };
|
||||
var destinations = employees.Select(x => x.Person.Address).ToArray();
|
||||
|
||||
var matrix = AddressRouteManager.GetMatrix(origin, destinations);
|
||||
|
||||
Employee empl; AddressRoute route;
|
||||
foreach (var employee in list)
|
||||
{
|
||||
empl = employees.FirstOrDefault(e => e.Person.Oid.Value == employee.PersonOid);
|
||||
route = matrix.GetRoute(school.Person.Address, empl.Person.Address);
|
||||
employee.AddressRoute = MapperFactory.AddressRouteDC_AddressRoute.MapToNewDC(route);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public List<EmployeeTokenRelationDC> LoadEmployeeTokenRelationsByOid(IEnumerable<long> pOids)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user