diff --git a/BeWoAllReports.sln b/BeWoAllReports.sln
index 1c4c7a657..bfafe0d5d 100644
--- a/BeWoAllReports.sln
+++ b/BeWoAllReports.sln
@@ -934,6 +934,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OwnSoftTestSchmitzi", "Repo
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BeWoBoland", "ReportImp\BeWoBoland\BeWoBoland.csproj", "{55F0AC0E-4686-4671-8A20-3CF33D0F2F82}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EndartFabrik", "ReportImp\EndartFabrik\EndartFabrik.csproj", "{C6EB0254-6FCB-4143-BC33-73168E836FF8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HalteStelle", "ReportImp\HalteStelle\HalteStelle.csproj", "{D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|.NET = Debug|.NET
@@ -11481,6 +11485,54 @@ Global
{55F0AC0E-4686-4671-8A20-3CF33D0F2F82}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{55F0AC0E-4686-4671-8A20-3CF33D0F2F82}.Release|x86.ActiveCfg = Release|Any CPU
{55F0AC0E-4686-4671-8A20-3CF33D0F2F82}.Release|x86.Build.0 = Release|Any CPU
+ {C6EB0254-6FCB-4143-BC33-73168E836FF8}.Debug|.NET.ActiveCfg = Debug|Any CPU
+ {C6EB0254-6FCB-4143-BC33-73168E836FF8}.Debug|.NET.Build.0 = Debug|Any CPU
+ {C6EB0254-6FCB-4143-BC33-73168E836FF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C6EB0254-6FCB-4143-BC33-73168E836FF8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C6EB0254-6FCB-4143-BC33-73168E836FF8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {C6EB0254-6FCB-4143-BC33-73168E836FF8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {C6EB0254-6FCB-4143-BC33-73168E836FF8}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {C6EB0254-6FCB-4143-BC33-73168E836FF8}.Debug|x86.Build.0 = Debug|Any CPU
+ {C6EB0254-6FCB-4143-BC33-73168E836FF8}.DebugRemote|.NET.ActiveCfg = Debug|Any CPU
+ {C6EB0254-6FCB-4143-BC33-73168E836FF8}.DebugRemote|.NET.Build.0 = Debug|Any CPU
+ {C6EB0254-6FCB-4143-BC33-73168E836FF8}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
+ {C6EB0254-6FCB-4143-BC33-73168E836FF8}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
+ {C6EB0254-6FCB-4143-BC33-73168E836FF8}.DebugRemote|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {C6EB0254-6FCB-4143-BC33-73168E836FF8}.DebugRemote|Mixed Platforms.Build.0 = Debug|Any CPU
+ {C6EB0254-6FCB-4143-BC33-73168E836FF8}.DebugRemote|x86.ActiveCfg = Debug|Any CPU
+ {C6EB0254-6FCB-4143-BC33-73168E836FF8}.DebugRemote|x86.Build.0 = Debug|Any CPU
+ {C6EB0254-6FCB-4143-BC33-73168E836FF8}.Release|.NET.ActiveCfg = Release|Any CPU
+ {C6EB0254-6FCB-4143-BC33-73168E836FF8}.Release|.NET.Build.0 = Release|Any CPU
+ {C6EB0254-6FCB-4143-BC33-73168E836FF8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C6EB0254-6FCB-4143-BC33-73168E836FF8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C6EB0254-6FCB-4143-BC33-73168E836FF8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {C6EB0254-6FCB-4143-BC33-73168E836FF8}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {C6EB0254-6FCB-4143-BC33-73168E836FF8}.Release|x86.ActiveCfg = Release|Any CPU
+ {C6EB0254-6FCB-4143-BC33-73168E836FF8}.Release|x86.Build.0 = Release|Any CPU
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}.Debug|.NET.ActiveCfg = Debug|Any CPU
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}.Debug|.NET.Build.0 = Debug|Any CPU
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}.Debug|x86.Build.0 = Debug|Any CPU
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}.DebugRemote|.NET.ActiveCfg = Debug|Any CPU
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}.DebugRemote|.NET.Build.0 = Debug|Any CPU
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}.DebugRemote|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}.DebugRemote|Mixed Platforms.Build.0 = Debug|Any CPU
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}.DebugRemote|x86.ActiveCfg = Debug|Any CPU
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}.DebugRemote|x86.Build.0 = Debug|Any CPU
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}.Release|.NET.ActiveCfg = Release|Any CPU
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}.Release|.NET.Build.0 = Release|Any CPU
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}.Release|x86.ActiveCfg = Release|Any CPU
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -11944,6 +11996,8 @@ Global
{3D0ED6C8-21D3-46E3-B581-40EEDA98DE12} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{D357755F-6B30-4CA4-88B9-44F624030AAA} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{55F0AC0E-4686-4671-8A20-3CF33D0F2F82} = {D8A691C5-146D-4613-86CC-438F02FE9106}
+ {C6EB0254-6FCB-4143-BC33-73168E836FF8} = {D8A691C5-146D-4613-86CC-438F02FE9106}
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2} = {D8A691C5-146D-4613-86CC-438F02FE9106}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {FBE985BB-9F0F-4DBB-8F94-ABC37A803FF9}
diff --git a/ReportImp/HalteStelle/Calculations/CustomGroupDurationCalculator.cs b/ReportImp/HalteStelle/Calculations/CustomGroupDurationCalculator.cs
new file mode 100644
index 000000000..c12e4220d
--- /dev/null
+++ b/ReportImp/HalteStelle/Calculations/CustomGroupDurationCalculator.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using BeWo.Service.Plugins;
+using BS.Shared.Core;
+using BS.Shared.DataContracts;
+using BS.Shared.Services;
+
+namespace TemplateNeuKunde.Calculations
+{
+ //public class CustomGroupDurationCalculator : GroupDurationCalculator
+ //{
+ // public override GroupDurationDC CalculateGroupDuration(int personCount, int employeeCount, decimal totalDuration)
+ // {
+ // return new GroupDurationDC()
+ // {
+ // SingleDuration = (totalDuration / personCount) * employeeCount,
+ // TotalDuration = totalDuration
+ // };
+ // }
+
+ //}
+}
diff --git a/ReportImp/HalteStelle/Calculations/DefaultCalculations.cs b/ReportImp/HalteStelle/Calculations/DefaultCalculations.cs
new file mode 100644
index 000000000..906e9d981
--- /dev/null
+++ b/ReportImp/HalteStelle/Calculations/DefaultCalculations.cs
@@ -0,0 +1,25 @@
+using System;
+
+namespace TemplateNeuKunde.Calculations
+{
+
+ //public class DefaultCalculations : BS.Shared.Services.Calculations
+ //{
+ // public override int GetRoundedDuration(int minuteInterval, decimal durationInMinutes)
+ // {
+ // decimal lRoundedDuration = durationInMinutes;
+
+ // if (minuteInterval > 0 && durationInMinutes >= 5)
+ // {
+ // lRoundedDuration = durationInMinutes % minuteInterval != 0
+ // ? durationInMinutes + (minuteInterval - (durationInMinutes % minuteInterval))
+ // : durationInMinutes;
+ // }
+
+ // return (int)Math.Round(lRoundedDuration, 0, MidpointRounding.AwayFromZero);
+ // }
+
+
+
+ //}
+}
\ No newline at end of file
diff --git a/ReportImp/HalteStelle/HalteStelle.csproj b/ReportImp/HalteStelle/HalteStelle.csproj
new file mode 100644
index 000000000..1c461648e
--- /dev/null
+++ b/ReportImp/HalteStelle/HalteStelle.csproj
@@ -0,0 +1,97 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {D6B9FA58-F1F4-4737-9FB9-A994AD50AEF2}
+ Library
+ Properties
+ HalteStelle
+ 3475059258_Reports
+ v4.7.2
+ 512
+
+
+
+ true
+ full
+ false
+ ..\..\CustomerDlls\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ ..\..\CustomerDlls\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {B0D73E3D-4AE7-4024-93A6-DB1F46D7CCEE}
+ Data
+
+
+ {40d8b312-ea64-49e3-a31a-5e57ed4d5654}
+ Report
+
+
+ {094331c3-ecee-4c89-bbfd-4c9ded89f0ef}
+ Service
+
+
+ {2f50b83d-a3f0-4ec4-979a-3f9b7e3d8ed4}
+ Shared
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ReportImp/HalteStelle/Import/CustomDataImporter.cs b/ReportImp/HalteStelle/Import/CustomDataImporter.cs
new file mode 100644
index 000000000..8f5a66712
--- /dev/null
+++ b/ReportImp/HalteStelle/Import/CustomDataImporter.cs
@@ -0,0 +1,153 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text.RegularExpressions;
+using BeWo.Data.Access;
+using BeWo.Data.Entities;
+using BeWo.Service.Core;
+using BeWo.Service.Import.AvisImport;
+using BeWo.Service.Plugins;
+using BS.Shared.Core;
+using BS.Shared.DataContracts;
+using Utils = BS.Shared.Core.Utils;
+
+namespace HalteStelle.Import
+{
+ public class CustomLvrAviseImporter : LvrAviseImporter
+ {
+ public override String ImportCsvAvise(String csv)
+ {
+ var reader = new LvrAvisCsvReader();
+ var avise = LeseEinzelAviseLWL(csv);
+ var hilfeplaene = CreateHilfeplanInfos();
+
+ return ImportAvise(avise, hilfeplaene);
+ }
+
+ private List LeseEinzelAviseLWL(string importfile)
+ {
+ List liste = new List();
+ String[] lines = importfile.Split('\n');
+
+ for (int i = 0; i < lines.Count(); i++)
+ {
+ string line = lines[i];
+ var fields = line.Split(';');
+ if (fields.Length >= 11)
+ {
+ if (!String.IsNullOrEmpty(fields[6]) && !String.IsNullOrEmpty(fields[10]) && !String.IsNullOrEmpty(fields[11])
+ && (fields[6].ToString().Contains("Westfalen-Lippe") || fields[6].ToString().Contains("LWL")))
+ {
+ try
+ {
+ DateTime gueltigkeitsTag = DateTime.Now;
+ decimal betrag = 0m;
+
+ var neuerAvis = new Avis();
+ decimal.TryParse(fields[11], out betrag);
+ neuerAvis.Betrag = betrag;
+ fields[10] = fields[10].Trim();
+ if (!String.IsNullOrEmpty(fields[10]))
+ {
+ var zweck = fields[10];
+ string pattern = @"^(?:[^/]*/){5}([^/]*)(?=/?EREF)";
+ Match matchVerwendung = Regex.Match(zweck, pattern);
+ if (matchVerwendung.Success)
+ {
+ neuerAvis.Klient = matchVerwendung.Groups[1].Value.Substring(8).Trim();
+ neuerAvis.Verwendungszweck = matchVerwendung.Groups[1].Value.Substring(8).Trim();
+ neuerAvis.Aktenzeichen = matchVerwendung.Groups[1].Value.Substring(0, 7);
+ }
+ else
+ {
+ neuerAvis.Klient = zweck;
+ neuerAvis.Verwendungszweck = zweck;
+ neuerAvis.Aktenzeichen = zweck;
+ }
+
+ var date = zweck.Substring(23, 10);
+ if (int.TryParse(date, out int resultMonat) && int.TryParse(date, out int resultJahr))
+ {
+ gueltigkeitsTag = new DateTime(resultJahr, resultMonat, 1);
+ }
+ else
+ {
+ if (DateTime.TryParse(date, out DateTime resultHp))
+ {
+ gueltigkeitsTag = resultHp;
+ }
+ else
+ {
+ var datumMonat = fields[4].Substring(fields[4].Length - 7, 2);
+ var datumJahr = fields[4].Substring(fields[4].Length - 4, 4);
+ if (int.TryParse(datumMonat, out int resultMonth) && int.TryParse(datumJahr, out int resultYear))
+ {
+ gueltigkeitsTag = new DateTime(resultYear, resultMonth, 1);
+ }
+ else
+ {
+ if (DateTime.TryParse(fields[4], out DateTime resultDate))
+ {
+ gueltigkeitsTag = resultDate;
+ }
+ }
+ }
+ }
+ neuerAvis.GueltigkeitsDatum = gueltigkeitsTag;
+ }
+ else
+ {
+ neuerAvis.Verwendungszweck = "kein Text";
+ neuerAvis.Aktenzeichen = "kein Text";
+ }
+ neuerAvis.BuchungsDatum = DateTime.Now;
+ //neuerAvis.Sachbearbeiter = fields[13] + ", " + fields[14];
+ if (neuerAvis.Betrag != 0)
+ {
+ liste.Add(neuerAvis);
+ }
+ }
+ catch (Exception e)
+ {
+ //ignore
+ }
+ }
+ }
+ }
+ return liste;
+ }
+
+ public override List CreateHilfeplanInfos()
+ {
+ List liste = new List();
+ var scList = DAOFactory.GenericDAO.GetAllActiveAndArchived();
+
+ foreach (var supportConcept in scList)
+ {
+ foreach (var cb2sc in supportConcept.CostBearer2SupportConceptList)
+ {
+ HilfeplanInfo hi = new HilfeplanInfo();
+ hi.Start = cb2sc.StartDate;
+ hi.Ende = cb2sc.EndDate;
+ var reference = cb2sc.CustomerReferenceNumber;
+ if (!String.IsNullOrEmpty(reference))
+ {
+ reference = reference.Replace("-", "");
+ reference = reference.Replace("/", "").Trim();
+ }
+ hi.Aktenzeichen = reference;
+ hi.CostBearer2SupportConcept = cb2sc;
+ hi.CustomerFirstName = cb2sc.SupportConcept.Customer.Person.FirstName;
+ hi.CustomerLastName = cb2sc.SupportConcept.Customer.Person.LastName;
+
+ if (hi.Start.HasValue && hi.Ende.HasValue && !String.IsNullOrEmpty(hi.Aktenzeichen))
+ {
+ liste.Add(hi);
+ }
+ }
+ }
+
+ return liste;
+ }
+ }
+}
diff --git a/ReportImp/HalteStelle/Invoicing/CustomInvoiceCreation.cs b/ReportImp/HalteStelle/Invoicing/CustomInvoiceCreation.cs
new file mode 100644
index 000000000..7d5aee1ec
--- /dev/null
+++ b/ReportImp/HalteStelle/Invoicing/CustomInvoiceCreation.cs
@@ -0,0 +1,54 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using BeWo.Data.Access;
+using BeWo.Data.Entities;
+using BeWo.Report.ReportObjects;
+using BeWo.Service.DCEntityMapper;
+using BeWo.Service.Invoicing;
+using BS.Shared;
+using BS.Shared.Core;
+using BS.Shared.DataContracts;
+using BS.Shared.Extensions;
+using BS.Shared.Services;
+using Service.Invoicing;
+
+namespace TemplateNeuKunde.Invoicing
+{
+ // public class CustomInvoiceCreation : InvoiceCreation
+ //{
+ // //public override void SetInvoiceId(ServiceInvoice invoice)
+ // //{
+ // // //invoice.InvoiceBase.InvoiceId = "SBD";
+ // // //invoice.InvoiceBase.InvoiceTypeText = "";
+ // //}
+
+
+ // // //Setze für Selbstzahler die Adresse des Klienten
+ // // public override void SetRecipientInformation(ServiceInvoice serviceInvoice, CostBearer costBearer)
+ // // {
+ // // if (costBearer.Organisation.Name == "Selbstzahler")
+ // // {
+ // // serviceInvoice.InvoiceBase.RecipientOrganisationOid = costBearer.Organisation.Oid;
+
+ // // if (serviceInvoice.InvoiceBase.CostBearer2SupportConcept != null)
+ // // {
+ // // var cust = serviceInvoice.InvoiceBase.CostBearer2SupportConcept.SupportConcept.Customer;
+
+ // // if (cust.Person.InvoiceAddress != null)
+ // // {
+ // // serviceInvoice.InvoiceBase.RecipientAddress = cust.Person.InvoiceAddress.CopyToNew();
+ // // }
+ // // else if (cust.Person.Address != null)
+ // // {
+ // // serviceInvoice.InvoiceBase.RecipientAddress = cust.Person.Address.CopyToNew();
+ // // }
+
+ // // serviceInvoice.InvoiceBase.RecipientPersonFirstName = cust.Person.FirstName;
+ // // serviceInvoice.InvoiceBase.RecipientPersonLastName = cust.Person.LastName;
+ // // serviceInvoice.InvoiceBase.RecipientCustomerOid = cust.Oid;
+ // // }
+ // // }
+ // // }
+ // }
+}
diff --git a/ReportImp/HalteStelle/Invoicing/CustomInvoiceFactory.cs b/ReportImp/HalteStelle/Invoicing/CustomInvoiceFactory.cs
new file mode 100644
index 000000000..261ac0d43
--- /dev/null
+++ b/ReportImp/HalteStelle/Invoicing/CustomInvoiceFactory.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using BeWo.Data.Access;
+using BeWo.Data.Entities;
+using BeWo.Service.Invoicing;
+using BS.Shared.DataContracts;
+using BS.Shared.DataContracts.Compact;
+
+namespace TemplateNeuKunde.Invoicing
+{
+ public class CustomInvoiceFactory : InvoiceFactory
+ {
+ // public override InvoiceCreation CreateInvoiceCreator(string specificId, string tenant, Dictionary> supportConcepts2ServiceRecords)
+ // {
+ ////Hier einkommentieren, wenn die Rechnungserstellung von einer bestimmten Kategorie einer Bewilligung abhängt
+ //foreach (var item in supportConcepts2ServiceRecords)
+ //{
+ // var csc = item.Key;
+ // var cb2sc = DAOFactory.GenericDAO.LoadByID(csc.CostBearerRelOids[0]);
+
+ // foreach (var scap in cb2sc.ApprovalPeriodList)
+ // {
+ // if (scap.ServiceCategory != null)
+ // {
+ // var ic = GetInvoiceCreatorForCategory(scap.ServiceCategory.Name);
+ // if (ic != null)
+ // return ic;
+ // }
+ // }
+ //}
+
+ ////Hier einkommentieren, wenn die Rechnungserstellung von einer bestimmten Kategorie oder Organisation eines ServiceRecords abhängt
+ //foreach (var list in supportConcepts2ServiceRecords.Values)
+ // {
+ // foreach (var sr in list)
+ // {
+ // //Hier wird Kategorie geprüft
+ // var ic = GetInvoiceCreatorForCategory(sr.ServiceDescription.Category.Name);
+ // if (ic != null)
+ // return ic;
+
+ // //Hier wird Organisation geprüft
+ // if (sr.CostBearer.Name.ToLower().Contains("selbstzahler"))
+ // {
+ // return new CustomInvoiceCreation();
+ // }
+ // }
+ // }
+
+
+ // return base.CreateInvoiceCreator(specificId, tenant, supportConcepts2ServiceRecords);
+ // }
+
+ // private InvoiceCreation GetInvoiceCreatorForCategory(String catName)
+ // {
+ // if (!String.IsNullOrEmpty(catName))
+ // {
+ // String cat = catName.ToLower().Trim();
+ // if (cat.IndexOf("assistenz") >= 0)
+ // return new CustomInvoiceCreation();
+ // }
+ // return null;
+ // }
+ }
+}
diff --git a/ReportImp/HalteStelle/Invoicing/CustomLWLDiggaBerechnung.cs b/ReportImp/HalteStelle/Invoicing/CustomLWLDiggaBerechnung.cs
new file mode 100644
index 000000000..3d4dcc3af
--- /dev/null
+++ b/ReportImp/HalteStelle/Invoicing/CustomLWLDiggaBerechnung.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using BeWo.Data.Access;
+using BeWo.Data.Entities;
+using BeWo.Service.DCEntityMapper;
+using BeWo.Service.Invoicing;
+using BeWo.Service.Plugins;
+using BS.Shared;
+using BS.Shared.Core;
+using BS.Shared.DataContracts;
+using BS.Shared.Extensions;
+using BS.Shared.Services;
+
+namespace TemplateNeuKunde.Invoicing
+{
+ public class CustomLWLDiggaBerechnung : LWLDiggaBerechnung
+ {
+ public override void InitBerechnung()
+ {
+ //this.Umstellungsdatum = new DateTime(2025, 1, 1);
+ }
+ }
+}
diff --git a/ReportImp/HalteStelle/Properties/AssemblyInfo.cs b/ReportImp/HalteStelle/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..930888dd6
--- /dev/null
+++ b/ReportImp/HalteStelle/Properties/AssemblyInfo.cs
@@ -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")]
diff --git a/ReportImp/HalteStelle/Reporting/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/HalteStelle/Reporting/CustomMitarbeiterstundenkontoBerechnung.cs
new file mode 100644
index 000000000..8b32a2d7b
--- /dev/null
+++ b/ReportImp/HalteStelle/Reporting/CustomMitarbeiterstundenkontoBerechnung.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using BeWo.Data.Entities;
+using BeWo.Report.ReportObjects;
+
+using BS.Shared.Extensions;
+
+
+namespace TemplateNeuKunde.Reporting
+{
+ public class CustomMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung
+ {
+ //Wenn halbe Feiertage konfiguriert werden sollen, muss diese Methode auch im VacationService einkommentiert werden
+ //public override decimal GetFeiertagsFaktor(DateTime start)
+ //{
+ // if (start.Month == 12)
+ // {
+ // if (start.Day == 24 || start.Day == 31)
+ // {
+ // return 0.5m;
+ // }
+ // }
+
+ // return base.GetFeiertagsFaktor(start);
+ //}
+ }
+}
diff --git a/ReportImp/HalteStelle/Reporting/CustomReportCreator.cs b/ReportImp/HalteStelle/Reporting/CustomReportCreator.cs
new file mode 100644
index 000000000..3e064654a
--- /dev/null
+++ b/ReportImp/HalteStelle/Reporting/CustomReportCreator.cs
@@ -0,0 +1,201 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using BeWo.Data.Access;
+using BeWo.Data.Entities;
+using BeWo.Report;
+using BeWo.Report.DefaultReports;
+using BeWo.Report.ReportObjects;
+using BeWo.Service.DCEntityMapper;
+using DevExpress.XtraReports.UI;
+
+namespace TemplateNeuKunde.Reporting
+{
+ //public class CustomReportCreator : DefaultReportCreator
+ //{
+ // //Einkommentiere für LWL Prüfliste, ZAD Nummer und ServiceDescription ergänzen
+
+
+ // //SQL Queries:
+ // //INSERT INTO `query` (`Oid`,`Tid`,`Type`,`Title`,`SQL`,`Notice`,`InsTs`,`InsUser`,`UdpUser`,`Version`,`IsActive`,`SystemEntryID`,`UserGroupOids`,`ReportTypeName`,`FileName`,`ExportTitle`)
+ // //VALUES(500,24,0,'LWL Quittierungsbelege','select \':Von\', \':Bis\', \':Klient/in\'','direct', NULL, NULL, NULL,1,1, NULL,'1', NULL, NULL, NULL);
+
+ // //INSERT INTO `parameter` (`Oid`,`QueryOid`,`Tid`,`Name`,`Type`,`DbType`,`InsTs`,`InsUser`,`UdpUser`,`Version`,`IsActive`,`SystemEntryID`) VALUES(4,500,25,'Von_Bis',5, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+ // //INSERT INTO `parameter` (`Oid`,`QueryOid`,`Tid`,`Name`,`Type`,`DbType`,`InsTs`,`InsUser`,`UdpUser`,`Version`,`IsActive`,`SystemEntryID`) VALUES(5,500,25,'Klient/in',2, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+
+ // //public override XtraReport CreateQueryReport(long queryOid, string queryReportId)
+ // //{
+ // // if (queryOid == 500)
+ // // {
+ // // return CreateLwlPruefliste(CreateQueryRO(queryOid, queryReportId));
+
+ // // }
+ // // return base.CreateQueryReport(queryOid, queryReportId);
+ // //}
+
+ // //private LwlPruefliste CreateLwlPruefliste(QueryRO queryRo)
+ // //{
+ // // var liste = new LwlPruefliste();
+
+ // // if (queryRo.Rows.Count > 0)
+ // // {
+ // // DateTime start = DateTime.MaxValue;
+ // // DateTime end = DateTime.MinValue;
+
+ // // if (queryRo.Rows[0].Field1 != null)
+ // // {
+ // // DateTime.TryParse(queryRo.Rows[0].Field1.ToString(), out start);
+ // // }
+ // // if (queryRo.Rows[0].Field2 != null)
+ // // {
+ // // DateTime.TryParse(queryRo.Rows[0].Field2.ToString(), out end);
+ // // }
+ // // long? customerOid = null;
+ // // if (queryRo.Rows[0].Field3.ToString() == "0")
+ // // {
+ // // var masterReport = new LwlPruefliste();
+ // // //masterReport.CreateDocument();
+
+ // // var customerList = DAOFactory.GenericDAO.GetAllActive();
+ // // var customerListOrd = customerList.OrderBy(c => c.Person.LastNameFirstName).ToList();
+ // // foreach (var c in customerListOrd)
+ // // {
+ // // var ro = LwlPrueflisteRO.Create(start, end, "9011113", c.Oid);
+ // // if (ro.ServiceRecords != null && ro.ServiceRecords.Count > 0)
+ // // {
+ // // try
+ // // {
+ // // liste = new LwlPruefliste();
+ // // liste.SetReportDataSource(ro);
+ // // liste.CreateDocument();
+ // // masterReport.Pages.AddRange(liste.Pages);
+ // // }
+ // // catch
+ // // {
+ // // // ignore - z.B. kein Hilfeplan
+ // // }
+ // // }
+ // // }
+ // // return (LwlPruefliste)masterReport;
+ // // }
+
+ // // if (queryRo.Rows[0].Field3 != null)
+ // // {
+ // // if (Int64.TryParse(queryRo.Rows[0].Field3.ToString(), out var oidOut))
+ // // {
+ // // customerOid = oidOut;
+ // // }
+ // // var ro = LwlPrueflisteRO.Create(start, end, "9011113", customerOid);
+ // // liste.SetReportDataSource(ro);
+ // // return liste;
+ // // }
+ // // }
+
+ // // return liste;
+ // //}
+
+
+ // //Einkommentiere für LWL 2. Seite mit Anhang für Budgetnachweise
+ // //public override XtraReport CreateSettlementReport(string dcId, long? invoiceBaseOid)
+ // //{
+ // // return base.CreateSettlementReport(dcId, invoiceBaseOid, true);
+ // //}
+
+
+ // //public override XtraReport CreateServiceOverviewAllCustomersReport(int month, int year, long orgaOid, long empOid, long? serviceCategoryOid, int startDay, int endDay)
+ // //{
+ // // List lROs = ServicesOverviewRO.Create(month, year, orgaOid, empOid, startDay, endDay);
+
+ // // if (lROs.Count > 0)
+ // // {
+
+ // // var rootReport = CreateServicesOverviewReportForRo(lROs[0], serviceCategoryOid);
+ // // rootReport.CreateDocument();
+
+ // // for (int i = 1; i < lROs.Count; i++)
+ // // {
+ // // var lNext = CreateServicesOverviewReportForRo(lROs[i], serviceCategoryOid);
+ // // lNext.CreateDocument();
+ // // rootReport.Pages.AddRange(lNext.Pages);
+ // // }
+
+ // // return rootReport;
+ // // }
+ // // return new XtraReport();
+ // //}
+
+ // //public override XtraReport CreateServiceOverviewSingleCustomerReport(long customerOid, int month, int year, long orgaOid, long empOid, long? serviceCategoryOid, int startDay, int endDay)
+ // //{
+ // // var ro = ServicesOverviewRO.Create(customerOid, month, year, false, orgaOid, empOid, startDay, endDay, serviceCategoryOid);
+ // // return CreateServicesOverviewReportForRo(ro, serviceCategoryOid);
+ // //}
+ // //public override XtraReport CreateServiceOverviewReportForCustomers(IList customerOids, int month, int year, long? orgaOid, long? empOid, long? serviceCategoryOid, int startDay, int endDay, bool nurFehlende)
+ // //{
+ // // var roList = new List();
+
+ // // foreach (var coid in customerOids)
+ // // {
+ // // var ro = ServicesOverviewRO.Create(coid, month, year, true, orgaOid ?? 0, empOid ?? 0, startDay, endDay, serviceCategoryOid);
+ // // if (ro != null)
+ // // {
+ // // roList.Add(ro);
+ // // }
+ // // }
+
+ // // if (roList.Count > 0)
+ // // {
+
+ // // var rootReport = CreateServicesOverviewReportForRo(roList[0], serviceCategoryOid);
+ // // rootReport.CreateDocument();
+
+ // // for (int i = 1; i < roList.Count; i++)
+ // // {
+ // // var lNext = CreateServicesOverviewReportForRo(roList[i], serviceCategoryOid);
+ // // lNext.CreateDocument();
+ // // rootReport.Pages.AddRange(lNext.Pages);
+ // // }
+
+ // // return rootReport;
+ // // }
+ // // return new XtraReport();
+
+ // //}
+ //public override XtraReport CreateReportForServicesOverviewRo(ServicesOverviewRO ro, String reportId)
+ //{
+ // return CreateServicesOverviewReportForRo(ro, null);
+ //}
+
+ // //private XtraReport CreateServicesOverviewReportForRo(ServicesOverviewRO ro, long? serviceCategoryOid)
+ // //{
+ // // IBeWoReport report = null;
+ // // String kt = "";
+ // // if (!String.IsNullOrWhiteSpace(ro.Costbearer))
+ // // kt = ro.Costbearer.Trim();
+
+ // // String function = "";
+ // // if (ro.CostBearer2SupportConceptList != null)
+ // // {
+ // // foreach (var c2s in ro.CostBearer2SupportConceptList)
+ // // {
+ // // if (c2s.CostBearer.Organisation.Function != null && !String.IsNullOrWhiteSpace(ro.Costbearer) && c2s.CostBearer.Organisation.Name == ro.Costbearer)
+ // // function = c2s.CostBearer.Organisation.Function.Value;
+ // // }
+ // // }
+
+ // // if (kt == "Kreisverwaltung Mainz-Bingen")
+ // // report = new AlzeyTeilhabe.StundenzettelBi2();
+
+ // // if (report == null && function == "Kostenträger Soziotherapie")
+ // // report = new StundenzettelSoziotherapie();
+
+ // // if (report == null)
+ // // report = new AlzeyTeilhabe.StundenzettelWo();
+
+ // // report.SetReportDataSource(ro);
+
+ // // return report as XtraReport;
+ // //}
+
+ //}
+}
diff --git a/ReportImp/HalteStelle/Service/CustomHomeContentGenerator.cs b/ReportImp/HalteStelle/Service/CustomHomeContentGenerator.cs
new file mode 100644
index 000000000..d05aaae5b
--- /dev/null
+++ b/ReportImp/HalteStelle/Service/CustomHomeContentGenerator.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using BeWo.Service.Plugins;
+using BS.Shared;
+using BS.Shared.Core;
+using BS.Shared.DataContracts.Compact;
+
+namespace TemplateNeuKunde.Service
+{
+ //public class CustomHomeContentGenerator : HomeContentGenerator
+ //{
+
+ //Einkommentieren um Geburtstage auszublenden
+ // public override List GetPersonsHavingBirthday(DateTime birthdayUntil)
+ // {
+// return new List();
+ // List alle = base.GetPersonsHavingBirthday(birthdayUntil);
+ // List nurMitarbeiter = new List();
+
+ // foreach (var compactPersonDc in alle)
+ // {
+ // if (compactPersonDc.PersonType == PersonType.Employee)
+ // {
+ // nurMitarbeiter.Add(compactPersonDc);
+ // }
+ // }
+ // return nurMitarbeiter;
+ // }
+ //}
+}
diff --git a/ReportImp/HalteStelle/Service/CustomVacationService.cs b/ReportImp/HalteStelle/Service/CustomVacationService.cs
new file mode 100644
index 000000000..46ee829e7
--- /dev/null
+++ b/ReportImp/HalteStelle/Service/CustomVacationService.cs
@@ -0,0 +1,45 @@
+using BeWo.Data.Access;
+using BeWo.Data.Entities;
+using BeWo.Service.Plugins;
+using BS.Shared;
+using BS.Shared.DataContracts;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.Threading.Tasks;
+
+
+namespace TemplateNeuKunde.Service
+{
+ //public class CustomVacationService : VacationService
+ //{
+ // //public override string Bundesland { get => "Bayern"; }
+
+ // // public override List GetFeiertage(int year, String bundesland)
+ // // {
+ // // List list = base.GetFeiertage(year, bundesland);
+ // // list.Add(new FeiertagDC { Datum = new DateTime(year, 12, 31), Name = "Silvester" });
+
+ // // return list;
+ // // }
+
+
+ // //Wenn halbe Feiertage konfiguriert werden sollen, muss diese Methode auch in CustomMitarbeiterstundenkontoBerechnung einkommentiert werden
+ // //public override decimal GetFeiertagsFaktor(DateTime start)
+ // //{
+ // // if (start.Month == 12)
+ // // {
+ // // if (start.Day == 24 || start.Day == 31)
+ // // {
+ // // return 0.5m;
+ // // }
+ // // }
+
+ // // return base.GetFeiertagsFaktor(start);
+ // //}
+ //}
+
+
+}
diff --git a/ReportImp/HalteStelle/Service/DefaultSaveInterceptor.cs b/ReportImp/HalteStelle/Service/DefaultSaveInterceptor.cs
new file mode 100644
index 000000000..28d127934
--- /dev/null
+++ b/ReportImp/HalteStelle/Service/DefaultSaveInterceptor.cs
@@ -0,0 +1,62 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using BeWo.Data.Access;
+using BeWo.Service.Plugins;
+using BS.Shared;
+using BS.Shared.Core;
+using BS.Shared.DataContracts;
+using BS.Shared.Extensions;
+using BS.Shared.Services;
+
+namespace TemplateNeuKunde.Validation
+{
+
+ //public class DefaultSaveInterceptor : SaveInterceptor
+ // {
+ // public override string AllowSaveCustomer(CustomerDC c)
+ // {
+ // if (c.CustomerOid.HasValue)
+ // {
+ // return null;
+ // }
+
+ // if (!c.DateOfBirth.HasValue)
+ // {
+ // return "Bitte geben Sie ein Geburtsdatum an.";
+ // }
+
+ // if (!String.IsNullOrWhiteSpace(c.FirstName) && !String.IsNullOrWhiteSpace(c.LastName) && c.DateOfBirth.HasValue)
+ // {
+ // var duplicates = DAOFactory.SearchDAO.FindCustomer(c.FirstName, c.LastName, c.DateOfBirth.Value);
+ // if (duplicates != null && duplicates.Count > 0)
+ // {
+ // var dc = duplicates[0];
+ // String archiviert = "";
+
+
+ // if (dc.Person.Sex.HasValue && dc.Person.Sex.Value == Sex.Female)
+ // {
+ // if (dc.IsActive == ActivationTypeId.Archived)
+ // {
+ // archiviert = "archivierte ";
+ // }
+ // return String.Format(
+ // "Es gibt bereits eine {3}Klientin {0} {1}, geb. am {2:dd.MM.yyyy}.", dc.Person.FirstName, dc.Person.LastName, dc.Person.DateOfBirth, archiviert);
+ // }
+ // else
+ // {
+ // if (dc.IsActive == ActivationTypeId.Archived)
+ // {
+ // archiviert = "archivierten ";
+ // }
+ // return String.Format(
+ // "Es gibt bereits einen {3}Klienten {0} {1}, geb. am {2:dd.MM.yyyy}.", dc.Person.FirstName, dc.Person.LastName, dc.Person.DateOfBirth, archiviert);
+ // }
+ // }
+ // }
+ // return base.AllowSaveCustomer(c);
+ // }
+ // }
+}
\ No newline at end of file
diff --git a/ReportImp/HalteStelle/Statistics/CustomServiceRecordStatisticFactory.cs b/ReportImp/HalteStelle/Statistics/CustomServiceRecordStatisticFactory.cs
new file mode 100644
index 000000000..2267e43b3
--- /dev/null
+++ b/ReportImp/HalteStelle/Statistics/CustomServiceRecordStatisticFactory.cs
@@ -0,0 +1,113 @@
+using System;
+using System.Collections.Generic;
+using BeWo.Service.Plugins;
+using BS.Shared;
+using BS.Shared.DataContracts;
+
+
+namespace TemplateNeuKunde.Statistics
+{
+ //public class CustomServiceRecordStatisticFactory : ServiceRecordStatisticFactory
+ // {
+
+ // public override ServiceRecordStatisticsInfoDC GetServiceRecordStatisticInfo(long costBearer2SupportConceptOid, DateTime statisticsDate)
+ // {
+ // var stats = CreateSupportConceptStatisticsImpl(costBearer2SupportConceptOid, statisticsDate);
+
+ // var dc = new ServiceRecordStatisticsInfoDC();
+
+
+
+ // dc.Header = new string[4];
+ // dc.Header[0] = "Bewilligungszeitraum:";
+ // dc.Header[1] = "Geleistet diesen Monat/Gesamt:";
+ // dc.Header[2] = "Bewilligt diesen Monat/Gesamt:";
+ // dc.Header[3] = "Frei diesen Monat/Gesamt:";
+
+ // dc.ForegroundColor = new string[4];
+ // dc.ForegroundColor[0] = "#FF2B508B";
+ // dc.ForegroundColor[1] = "#FF2B508B";
+ // dc.ForegroundColor[2] = "#FF2B508B";
+ // dc.ForegroundColor[3] = "#FF2B508B";
+
+ // dc.PeriodStatisticInfos = new List();
+
+
+ // 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(4);
+ // dc.LeftValues[0] = "Gesamt";
+
+ // dc.LeftValues[1] = String.Format("{0:0.00}", stats.MinutesProvidedThisMonth / 60);
+ // dc.RightValues[1] = String.Format("{0:0.00}", stats.MinutesProvidedTotalRounded / 60);
+
+ // dc.LeftValues[2] = String.Format("{0:0.00}", stats.MinutesApprovedPerMonth / 60);
+ // dc.RightValues[2] = String.Format("{0:0.00}", stats.MinutesApprovedTotal / 60);
+
+ // dc.LeftValues[3] = String.Format("{0:0.00}", (stats.MinutesApprovedPerMonth - stats.MinutesProvidedThisMonth) / 60);
+ // dc.RightValues[3] = String.Format("{0:0.00}", (stats.MinutesApprovedTotal - stats.MinutesProvidedTotalRounded) / 60);
+
+ // return dc;
+ // }
+
+ // public ServiceRecordPeriodStatisticsInfoDC CreateServiceRecordPeriodStatisticsInfo(SupportConceptStatisticsDC stats, SupportConceptPeriodStatisticsDC periodStats, DateTime statisticsDate)
+ // {
+ // var dc = CreateDefaultServiceRecordPeriodStatisticsInfo(4);
+
+ // if (periodStats.SupportConceptApprovalPeriod != null)
+ // {
+ // if (periodStats.SupportConceptApprovalPeriod.ServiceCategory != null)
+ // {
+ // dc.LeftValues[0] = String.Format("{0}: {1:dd.MM.yy} - {2:dd.MM.yy}",
+ // periodStats.SupportConceptApprovalPeriod.ServiceCategory.Name,
+ // periodStats.SupportConceptApprovalPeriod.StartDate,
+ // periodStats.SupportConceptApprovalPeriod.EndDate);
+ // }
+ // 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.MinutesProvidedThisMonth / 60);
+ // dc.RightValues[1] = String.Format("{0:0.00}", periodStats.MinutesProvidedTotalRounded / 60);
+
+ // dc.LeftValues[2] = String.Format("{0:0.00}", periodStats.MinutesApprovedPerMonth / 60);
+ // dc.RightValues[2] = String.Format("{0:0.00}", periodStats.MinutesApprovedTotal / 60);
+
+ // dc.LeftValues[3] = String.Format("{0:0.00}", (periodStats.MinutesApprovedPerMonth - periodStats.MinutesProvidedThisMonth) / 60);
+ // dc.RightValues[3] = String.Format("{0:0.00}", (periodStats.MinutesApprovedTotal - periodStats.MinutesProvidedTotalRounded) / 60);
+
+ // return dc;
+ // }
+
+ // public override decimal GetApprovedMinutesPerMonth(SupportConceptPeriodStatisticsDC periodStats)
+ // {
+ // if (periodStats.SupportConceptApprovalPeriod != null && periodStats.SupportConceptApprovalPeriod.StartDate.HasValue && periodStats.SupportConceptApprovalPeriod.EndDate.HasValue)
+ // {
+ // if (periodStats.SupportConceptApprovalPeriod.ApprovedBEPerInterval.HasValue && periodStats.SupportConceptApprovalPeriod.ApprovedBEInterval.HasValue && periodStats.SupportConceptApprovalPeriod.ApprovedBEInterval.Value == SupportConceptApprovalInterval.Monthly)
+ // {
+ // return periodStats.SupportConceptApprovalPeriod.ApprovedBEPerInterval.Value * 60;
+ // }
+ // }
+ // return base.GetApprovedMinutesPerMonth(periodStats);
+ // }
+ // }
+}
diff --git a/ReportImp/HalteStelle/Validation/ServiceRecordValidator.cs b/ReportImp/HalteStelle/Validation/ServiceRecordValidator.cs
new file mode 100644
index 000000000..3e394fda6
--- /dev/null
+++ b/ReportImp/HalteStelle/Validation/ServiceRecordValidator.cs
@@ -0,0 +1,87 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using BeWo.Data;
+using BeWo.Data.Access;
+using BeWo.Data.Entities;
+using BeWo.Service.DCEntityMapper;
+using BeWo.Service.Plugins;
+using BS.Shared;
+using BS.Shared.DataContracts;
+using BS.Shared.Extensions;
+
+namespace TemplateNeuKunde.Validation
+{
+ //public class CustomServiceRecordValidator : ServiceRecordValidator
+ //{
+ // public override string[] GetIgnoreCategoriesForOverlappingCheck()
+ // {
+ // return new[] { "Arbeitszeiterfassung" };
+ // }
+
+
+ // public override List ValidateServiceRecord(ServiceRecordDC newServiceRecord, SupportConceptStatisticsDC statistics,
+ // int maxDaysEditServiceRecordsAllowed, IList employeeOids, IList cb2scOids)
+ // {
+ // var list = base.ValidateServiceRecord(newServiceRecord, statistics, maxDaysEditServiceRecordsAllowed, employeeOids, cb2scOids);
+
+ // if (newServiceRecord.ServiceDescription.Category.IsBillable && newServiceRecord.RoundedDuration == 0)
+ // {
+
+ // list.Add(new ServiceRecordValidationResultDC
+ // {
+ // ResultType = ServiceRecordValidationResult.Custom,
+ // Message = "Die Dauer muss größer als 0 sein."
+ // });
+
+ // }
+
+ // var sd = newServiceRecord.ServiceDescription.Name.ToLower();
+ // var cat = newServiceRecord.ServiceDescription.Category.Name.ToLower();
+
+ // if (cat.Contains("arztbesuch") ||
+ // cat.Contains("krank") ||
+ // cat.Contains("fortbildung") ||
+ // cat.Contains("urlaub") ||
+ // cat.Contains("indirekte zeiten") ||
+ // (cat.Contains("betrieb") && cat.Contains("zeiten")))
+ // {
+ // if (sd.Contains("abwesend"))
+ // {
+
+ // list.Add(new ServiceRecordValidationResultDC
+ // {
+ // ResultType = ServiceRecordValidationResult.Custom,
+ // Message = "Dieser Eintrag kann nur von Fachleitungen oder Bereichsleitungen angelegt werden."
+ // });
+ // }
+ // }
+
+
+
+ // bool hasZukunftResult = false;
+
+ // foreach (var r in list)
+ // {
+ // if (r.ResultType == ServiceRecordValidationResult.Custom && r.Message.Contains("Zukunft"))
+ // {
+ // hasZukunftResult = true;
+ // }
+ // }
+ // if (!hasZukunftResult)
+ // {
+ // if (newServiceRecord.End.Value > DateTime.Now.AddMinutes(20))
+ // {
+ // list.Add(new ServiceRecordValidationResultDC
+ // {
+ // ResultType = ServiceRecordValidationResult.Custom,
+ // Message = "Das gewählte Datum darf nicht in der Zukunft liegen."
+ // });
+ // }
+ // }
+
+
+ // return list;
+ // }
+ // }
+}
\ No newline at end of file
diff --git a/ReportImp/HalteStelle/app.config b/ReportImp/HalteStelle/app.config
new file mode 100644
index 000000000..677131bde
--- /dev/null
+++ b/ReportImp/HalteStelle/app.config
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file