Merge branch 'master' of ssh://float.beyondsoft.de/git/beyondSoft/BeWo
This commit is contained in:
19
BeWo.sln
19
BeWo.sln
@@ -505,6 +505,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AidshilfeEssen", "ReportImp
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutismusKoelnBonn", "ReportImp\AutismusKoelnBonn\AutismusKoelnBonn.csproj", "{43024B23-C380-4DCE-8DC0-930292417A25}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Kimm", "ReportImp\Kimm\Kimm.csproj", "{CEA6A3D2-DDD4-4699-89AE-FEF7908C46D5}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|.NET = Debug|.NET
|
||||
@@ -3932,6 +3934,22 @@ Global
|
||||
{43024B23-C380-4DCE-8DC0-930292417A25}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{43024B23-C380-4DCE-8DC0-930292417A25}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{43024B23-C380-4DCE-8DC0-930292417A25}.Release|x86.Build.0 = Release|Any CPU
|
||||
{CEA6A3D2-DDD4-4699-89AE-FEF7908C46D5}.Debug|.NET.ActiveCfg = Debug|Any CPU
|
||||
{CEA6A3D2-DDD4-4699-89AE-FEF7908C46D5}.Debug|.NET.Build.0 = Debug|Any CPU
|
||||
{CEA6A3D2-DDD4-4699-89AE-FEF7908C46D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{CEA6A3D2-DDD4-4699-89AE-FEF7908C46D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{CEA6A3D2-DDD4-4699-89AE-FEF7908C46D5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{CEA6A3D2-DDD4-4699-89AE-FEF7908C46D5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{CEA6A3D2-DDD4-4699-89AE-FEF7908C46D5}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{CEA6A3D2-DDD4-4699-89AE-FEF7908C46D5}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{CEA6A3D2-DDD4-4699-89AE-FEF7908C46D5}.Release|.NET.ActiveCfg = Release|Any CPU
|
||||
{CEA6A3D2-DDD4-4699-89AE-FEF7908C46D5}.Release|.NET.Build.0 = Release|Any CPU
|
||||
{CEA6A3D2-DDD4-4699-89AE-FEF7908C46D5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{CEA6A3D2-DDD4-4699-89AE-FEF7908C46D5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{CEA6A3D2-DDD4-4699-89AE-FEF7908C46D5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{CEA6A3D2-DDD4-4699-89AE-FEF7908C46D5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{CEA6A3D2-DDD4-4699-89AE-FEF7908C46D5}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{CEA6A3D2-DDD4-4699-89AE-FEF7908C46D5}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
@@ -4180,6 +4198,7 @@ Global
|
||||
{A9B88C6C-8965-4F08-B647-42CF0D8058A5} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{C52AC467-D452-4396-8DB3-D04AC1045CFB} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{43024B23-C380-4DCE-8DC0-930292417A25} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{CEA6A3D2-DDD4-4699-89AE-FEF7908C46D5} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {FBE985BB-9F0F-4DBB-8F94-ABC37A803FF9}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
11
BeWo/packages.config
Normal file
11
BeWo/packages.config
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="ClrHeapAllocationAnalyzer" version="3.0.0" targetFramework="net45" />
|
||||
<package id="CsvHelper" version="15.0.5" targetFramework="net45" />
|
||||
<package id="Microsoft.CSharp" version="4.5.0" targetFramework="net45" />
|
||||
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net45" />
|
||||
<package id="RestSharp" version="105.2.3" targetFramework="net45" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.2" targetFramework="net45" />
|
||||
<package id="System.Threading.Tasks.Extensions" version="4.5.2" targetFramework="net45" />
|
||||
<package id="System.ValueTuple" version="4.4.0" targetFramework="net45" />
|
||||
</packages>
|
||||
@@ -24,7 +24,7 @@
|
||||
<IISExpressUseClassicPipelineMode />
|
||||
<UseGlobalApplicationHostFile />
|
||||
<TargetFrameworkProfile />
|
||||
<Use64BitIISExpress />
|
||||
<Use64BitIISExpress>false</Use64BitIISExpress>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
<TypeScriptToolsVersion>3.7</TypeScriptToolsVersion>
|
||||
@@ -87,8 +87,8 @@
|
||||
<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.SqlServer.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="log4net, Version=2.0.12.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\log4net.2.0.12\lib\net45\log4net.dll</HintPath>
|
||||
<Reference Include="log4net, Version=2.0.13.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\log4net.2.0.13\lib\net45\log4net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=3.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.3.6.0\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
|
||||
@@ -103,8 +103,8 @@
|
||||
</Reference>
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationFramework" />
|
||||
<Reference Include="RestSharp, Version=106.12.0.0, Culture=neutral, PublicKeyToken=598062e77f915f75, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\RestSharp.106.12.0\lib\net452\RestSharp.dll</HintPath>
|
||||
<Reference Include="RestSharp, Version=106.13.0.0, Culture=neutral, PublicKeyToken=598062e77f915f75, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\RestSharp.106.13.0\lib\net452\RestSharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
@@ -812,8 +812,8 @@
|
||||
<Content Include="Scripts\jquery-3.6.0.slim.min.js" />
|
||||
<Content Include="Scripts\devexpress-scripts\knockout-3.5.1.js" />
|
||||
<None Include="Scripts\jquery.validate-vsdoc.js" />
|
||||
<Content Include="Scripts\jquery-ui-1.12.1.js" />
|
||||
<Content Include="Scripts\jquery-ui-1.12.1.min.js" />
|
||||
<Content Include="Scripts\jquery-ui-1.13.0.js" />
|
||||
<Content Include="Scripts\jquery-ui-1.13.0.min.js" />
|
||||
<Content Include="Scripts\jquery.validate.js" />
|
||||
<Content Include="Scripts\jquery.validate.min.js" />
|
||||
<Content Include="Scripts\jquery.validate.unobtrusive.js" />
|
||||
@@ -1324,6 +1324,8 @@
|
||||
<Content Include="Scripts\umd\popper-utils.min.js" />
|
||||
<Content Include="Scripts\umd\popper.js" />
|
||||
<Content Include="Scripts\umd\popper.min.js" />
|
||||
<Content Include="Scripts\utils\list-utils.js" />
|
||||
<Content Include="Scripts\utils\resources-list-utils.js" />
|
||||
<Content Include="Scripts\utils\trimCanvas.js" />
|
||||
<Content Include="Scripts\utils\dateUtils.js" />
|
||||
<Content Include="Scripts\view-scripts\report.js" />
|
||||
@@ -1365,6 +1367,11 @@
|
||||
<Content Include="Views\Scheduler\FiveDaySchedulerPartial.cshtml" />
|
||||
<Content Include="Views\Scheduler\OneDaySchedulerPartial.cshtml" />
|
||||
<Content Include="Views\Scheduler\SevenDaySchedulerPartial.cshtml" />
|
||||
<Content Include="Views\Scheduler\AppointmentIntervalFinderPartial.cshtml" />
|
||||
<Content Include="Views\Scheduler\AppointmentIntervalFinderResultPartial.cshtml" />
|
||||
<Content Include="Views\Scheduler\AppointmentFormPartial.cshtml" />
|
||||
<Content Include="Views\Main\GroupBookingPartial.cshtml" />
|
||||
<Content Include="Views\Main\SingleBookingPartial.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="App_Data\" />
|
||||
@@ -1564,7 +1571,7 @@
|
||||
<VisualStudio>
|
||||
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
|
||||
<WebProjectProperties>
|
||||
<UseIIS>False</UseIIS>
|
||||
<UseIIS>True</UseIIS>
|
||||
<AutoAssignPort>False</AutoAssignPort>
|
||||
<DevelopmentServerPort>8808</DevelopmentServerPort>
|
||||
<DevelopmentServerVPath>/</DevelopmentServerVPath>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<UseIISExpress>true</UseIISExpress>
|
||||
<Use64BitIISExpress />
|
||||
<UseIISExpress>false</UseIISExpress>
|
||||
<Use64BitIISExpress>false</Use64BitIISExpress>
|
||||
<IISExpressSSLPort />
|
||||
<IISExpressAnonymousAuthentication />
|
||||
<IISExpressWindowsAuthentication />
|
||||
|
||||
@@ -95,4 +95,8 @@ $theme-colors: ( "bewo-goal-rating": #0000ff,"bewo-dev": #00cf7c, "primary": #FF
|
||||
}
|
||||
$font-family-sans-serif: 'Signika Negative', sans-serif;
|
||||
|
||||
.interval-finder-customer-text {}
|
||||
|
||||
// col-xxl 1200px und col-xxxl 1800px
|
||||
|
||||
@import "../node_modules/bootstrap/scss/bootstrap";
|
||||
@@ -23,7 +23,9 @@ namespace BeWoPlanerMobil.Controllers
|
||||
ViewData[LoginErrorIndex] = string.Empty;
|
||||
TempData[LoginErrorIndex] = string.Empty;
|
||||
|
||||
if (MobileSessionFacade.IsUserLoggedIn() && !Request.Browser.Browser.Equals("InternetExplorer"))
|
||||
var isUserLoggedIn = MobileSessionFacade.IsUserLoggedIn();
|
||||
|
||||
if (isUserLoggedIn && !Request.Browser.Browser.Equals("InternetExplorer"))
|
||||
{
|
||||
var loginState = MobileUtils.GetLoginState(MobileSessionFacade.Tenant);
|
||||
|
||||
@@ -67,7 +69,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
return RedirectToActionPermanent("Main", "Main");
|
||||
}
|
||||
|
||||
if(MobileSessionFacade.IsUserLoggedIn() && Request.Browser.Browser.Equals("InternetExplorer"))
|
||||
if(isUserLoggedIn && Request.Browser.Browser.Equals("InternetExplorer"))
|
||||
{
|
||||
MobileSessionFacade.LogUserOut();
|
||||
FormsAuthentication.SignOut();
|
||||
|
||||
@@ -175,6 +175,8 @@ namespace BeWoPlanerMobil.Controllers
|
||||
Model.Employees = new List<CompactEmployeeDC> { MobileSessionFacade.LoggedInCompactEmployee };
|
||||
}
|
||||
|
||||
Model.Employees = Model.Employees.OrderBy(e => e.LastName).ThenBy(e => e.FirstName).ToList();
|
||||
|
||||
if(Model?.Employee?.EmployeeOid.HasValue ?? false)
|
||||
{
|
||||
Model.SupportConcepts = EmployeeService.GetActiveSupportConceptsForEmployee(Model.Employee.EmployeeOid, Model.SelectedSupportConceptFilter);
|
||||
|
||||
@@ -237,15 +237,28 @@ namespace BeWoPlanerMobil.Controllers
|
||||
var location = formCollection[FormCollectionConstants.AppointmentLocationKey];
|
||||
var notice = formCollection[FormCollectionConstants.AppointmentNoticeKey];
|
||||
|
||||
var isPrivate = formCollection[FormCollectionConstants.AppointmentIsPrivate] == "true,false";
|
||||
var allDay = formCollection[FormCollectionConstants.AppointmentIsAllDay] == "true,false";
|
||||
|
||||
var isSuccessfulStartTime = DateTime.TryParseExact(rawStartTime, "HH:mm", null, DateTimeStyles.None, out var startTime);
|
||||
var isSuccessfulEndTime = DateTime.TryParseExact(rawEndTime, "HH:mm", null, DateTimeStyles.None, out var endTime);
|
||||
|
||||
if(rawStartTime == null)
|
||||
{
|
||||
rawStartTime = "00:00";
|
||||
}
|
||||
|
||||
if (rawEndTime == null)
|
||||
{
|
||||
rawEndTime = "00:00";
|
||||
}
|
||||
|
||||
var startAndEnd = ConvertStringDatesToDateTimes($"{rawStartDate} {rawStartTime}", $"{rawEndDate} {rawEndTime}");
|
||||
|
||||
var startDate = startAndEnd.StartDate;
|
||||
var endDate = startAndEnd.EndDate;
|
||||
|
||||
if (isSuccessfulStartTime && isSuccessfulEndTime)
|
||||
if (!allDay && isSuccessfulStartTime && isSuccessfulEndTime || allDay)
|
||||
{
|
||||
startDate = startDate.MergeDatesByDate(startTime);
|
||||
endDate = endDate.MergeDatesByDate(endTime);
|
||||
@@ -279,6 +292,8 @@ namespace BeWoPlanerMobil.Controllers
|
||||
appointmentToInsert.Originator = MobileSessionFacade.LoggedInCompactEmployee;
|
||||
appointmentToInsert.Location = location;
|
||||
appointmentToInsert.ActivationType = ActivationTypeId.Active;
|
||||
appointmentToInsert.IsPrivate = isPrivate;
|
||||
appointmentToInsert.AllDay = allDay;
|
||||
|
||||
if (!isNew)
|
||||
{
|
||||
@@ -380,9 +395,15 @@ namespace BeWoPlanerMobil.Controllers
|
||||
if (isSuccessful)
|
||||
{
|
||||
Model.SelectedAppointment = Model.Appointments.FirstOrDefault(app => app.SchedulerAppointmentOid.HasValue && app.SchedulerAppointmentOid.Value == appointmentOid);
|
||||
Model.SelectedResources = Model.SelectedAppointment?.ResourceList ?? new List<ResourceDC>();
|
||||
Model.SelectedEmployees = Model.SelectedAppointment?.EmployeeList.Select(e2a => e2a.Employee).ToList() ?? new List<CompactEmployeeDC>();
|
||||
Model.SelectedCustomers = Model.SelectedAppointment?.CustomerList ?? new List<CompactCustomerDC>();
|
||||
|
||||
if(Model.SelectedAppointment != null)
|
||||
{
|
||||
Model.IsAllDay = Model.SelectedAppointment.AllDay;
|
||||
Model.IsPrivate = Model.SelectedAppointment.IsPrivate;
|
||||
Model.SelectedResources = Model.SelectedAppointment?.ResourceList ?? new List<ResourceDC>();
|
||||
Model.SelectedEmployees = Model.SelectedAppointment?.EmployeeList.Select(e2a => e2a.Employee).ToList() ?? new List<CompactEmployeeDC>();
|
||||
Model.SelectedCustomers = Model.SelectedAppointment?.CustomerList ?? new List<CompactCustomerDC>();
|
||||
}
|
||||
}
|
||||
|
||||
return RedirectToActionPermanent("Scheduler");
|
||||
@@ -395,6 +416,8 @@ namespace BeWoPlanerMobil.Controllers
|
||||
{
|
||||
Model.SelectedAppointment = null;
|
||||
Model.SelectedResources.Clear();
|
||||
Model.IsAllDay = false;
|
||||
Model.IsPrivate = false;
|
||||
}
|
||||
|
||||
return Json(null, JsonRequestBehavior.AllowGet);
|
||||
@@ -467,7 +490,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
public string SelectEmployeesForAppointment(string employeeOids)
|
||||
public string SelectEmployeesForAppointment(string oidString)
|
||||
{
|
||||
if (Model == null)
|
||||
{
|
||||
@@ -475,7 +498,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
return _LeerzeichenFuerGetMethoden;
|
||||
}
|
||||
|
||||
var oidList = ConvertOidStringToList(employeeOids);
|
||||
var oidList = ConvertOidStringToList(oidString);
|
||||
|
||||
Model.SelectedEmployees = Model.AllEmployees.Where(employee => oidList.Contains(employee.EmployeeOid)).ToList();
|
||||
|
||||
@@ -483,7 +506,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
public string SelectCustomersForAppointment(string customerOids)
|
||||
public string SelectCustomersForAppointment(string oidString)
|
||||
{
|
||||
if (Model == null)
|
||||
{
|
||||
@@ -491,7 +514,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
return _LeerzeichenFuerGetMethoden;
|
||||
}
|
||||
|
||||
var oidList = ConvertOidStringToList(customerOids);
|
||||
var oidList = ConvertOidStringToList(oidString);
|
||||
|
||||
Model.SelectedCustomers = Model.AllCustomers.Where(customer => oidList.Contains(customer.CustomerOid)).ToList();
|
||||
|
||||
@@ -549,5 +572,177 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
return RedirectToActionPermanent("Scheduler");
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
[HttpPost]
|
||||
public ActionResult FindFreeIntervals(FormCollection formCollection)
|
||||
{
|
||||
if(Model == null)
|
||||
{
|
||||
return Logout();
|
||||
}
|
||||
|
||||
var d = formCollection["Duration"];
|
||||
var s = formCollection["IntervalStart"];
|
||||
var st = formCollection["IntervalStartTime"];
|
||||
var e = formCollection["IntervalEnd"];
|
||||
var et = formCollection["IntervalEndTime"];
|
||||
|
||||
if (int.TryParse(d, out var duration) && DateTime.TryParse($"{s} {st}", out var start) && DateTime.TryParse($"{e} {et}", out var end) && Model.Employee.EmployeeOid.HasValue)
|
||||
{
|
||||
var customerOids = Model.SelectedCustomersForIntervalFinder.Select(c => c.CustomerOid).ToList();
|
||||
var employeeOids = Model.SelectedEmployeesForIntervalFinder.Select(m => m.EmployeeOid).ToList();
|
||||
var resourceOids = Model.SelectedResourcesForIntervalFinder.Where(w => w.ResourceOid.HasValue).Select(r => r.ResourceOid.Value).ToList();
|
||||
|
||||
Model.FreeIntervals = KalenderService.FindAppointmentsInRange(duration, start, end, resourceOids, customerOids, employeeOids, Model.Employee.EmployeeOid.Value);
|
||||
|
||||
Model.IntervalStartDate = start;
|
||||
Model.IntervalEndDate = end;
|
||||
Model.IntervalDuration = duration;
|
||||
}
|
||||
|
||||
return RedirectToActionPermanent("Scheduler");
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
public string SelectEmployeesForIntervalFinder(string oidString)
|
||||
{
|
||||
if (Model == null)
|
||||
{
|
||||
Logout();
|
||||
return _LeerzeichenFuerGetMethoden;
|
||||
}
|
||||
|
||||
var employeeOids = ConvertOidStringToList(oidString);
|
||||
|
||||
Model.SelectedEmployeesForIntervalFinder = Model.AllEmployees.Where(employee => employeeOids.Contains(employee.EmployeeOid)).ToList();
|
||||
|
||||
return JsonConvert.SerializeObject(Model.SelectedEmployeesForIntervalFinder.OrderBy(o => o.DetailDescription));
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
public string SelectCustomersForIntervalFinder(string oidString)
|
||||
{
|
||||
if (Model == null)
|
||||
{
|
||||
Logout();
|
||||
return _LeerzeichenFuerGetMethoden;
|
||||
}
|
||||
|
||||
var customerOids = ConvertOidStringToList(oidString);
|
||||
|
||||
Model.SelectedCustomersForIntervalFinder = Model.AllCustomers.Where(customer => customerOids.Contains(customer.CustomerOid)).ToList();
|
||||
|
||||
return JsonConvert.SerializeObject(Model.SelectedCustomersForIntervalFinder.OrderBy(o => o.LastNameFirstName));
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
public string SelectResourcesForIntervalFinder(string resourceOids)
|
||||
{
|
||||
if (Model == null)
|
||||
{
|
||||
Logout();
|
||||
return _LeerzeichenFuerGetMethoden;
|
||||
}
|
||||
|
||||
var resourceOidList = ConvertOidStringToList(resourceOids);
|
||||
|
||||
var list = new List<ResourceDC>();
|
||||
|
||||
Model.ResourceCategories2Resources.Values.DoForEach(l => l.DoForEach(s => list.AddIfNotIn(s)));
|
||||
|
||||
Model.SelectedResourcesForIntervalFinder = list.Where(resource => resource.ResourceOid.HasValue && resourceOidList.Contains(resource.ResourceOid.Value)).ToList();
|
||||
|
||||
return JsonConvert.SerializeObject(Model.SelectedResourcesForIntervalFinder);
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
[HttpPost]
|
||||
public ActionResult SetIsInIntervalFinderMode(FormCollection formCollection)
|
||||
{
|
||||
if(Model == null)
|
||||
{
|
||||
return Logout();
|
||||
}
|
||||
|
||||
var newValue = !Model.IsInIntervalFinderMode;
|
||||
|
||||
Model.IsInIntervalFinderMode = newValue;
|
||||
|
||||
if(!newValue)
|
||||
{
|
||||
Model.SelectedEmployeesForIntervalFinder.Clear();
|
||||
Model.SelectedCustomersForIntervalFinder.Clear();
|
||||
Model.SelectedResourcesForIntervalFinder.Clear();
|
||||
}
|
||||
|
||||
return RedirectToActionPermanent("Scheduler");
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
[HttpPost]
|
||||
public ActionResult SelectIntervalForForm(FormCollection formCollection)
|
||||
{
|
||||
if(Model == null)
|
||||
{
|
||||
return Logout();
|
||||
}
|
||||
|
||||
var startStr = formCollection["startDate"];
|
||||
var endStr = formCollection["endDate"];
|
||||
|
||||
if(DateTime.TryParse(startStr, out var startDate) && DateTime.TryParse(endStr, out var endDate))
|
||||
{
|
||||
Model.IsInIntervalFinderMode = false;
|
||||
|
||||
var employees2Appointment = new List<Employee2SchedulerAppointmentDC>();
|
||||
|
||||
Model.SelectedEmployeesForIntervalFinder.DoForEach(employee =>
|
||||
{
|
||||
employees2Appointment.Add(new Employee2SchedulerAppointmentDC
|
||||
{
|
||||
Employee = employee
|
||||
});
|
||||
});
|
||||
|
||||
Model.SelectedAppointment = new SchedulerAppointmentDC()
|
||||
{
|
||||
ActivationType = ActivationTypeId.Active,
|
||||
IsTask = false,
|
||||
IsPrivate = false,
|
||||
Originator = MobileSessionFacade.LoggedInCompactEmployee,
|
||||
StartDate = startDate,
|
||||
EndDate = endDate
|
||||
};
|
||||
|
||||
Model.SelectedCustomers = Model.SelectedCustomersForIntervalFinder.Clone();
|
||||
Model.SelectedEmployees = Model.SelectedEmployeesForIntervalFinder.Clone();
|
||||
Model.SelectedResources = Model.SelectedResourcesForIntervalFinder.Clone();
|
||||
|
||||
Model.SelectedCustomersForIntervalFinder.Clear();
|
||||
Model.SelectedEmployeesForIntervalFinder.Clear();
|
||||
Model.SelectedResourcesForIntervalFinder.Clear();
|
||||
|
||||
Model.IntervalStartDate = null;
|
||||
Model.IntervalEndDate = null;
|
||||
}
|
||||
|
||||
return RedirectToActionPermanent("Scheduler");
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
public string ResetIntervalFinder()
|
||||
{
|
||||
if(Model == null)
|
||||
{
|
||||
return _LeerzeichenFuerGetMethoden;
|
||||
}
|
||||
|
||||
Model.SelectedCustomersForIntervalFinder.Clear();
|
||||
Model.SelectedEmployeesForIntervalFinder.Clear();
|
||||
Model.SelectedResourcesForIntervalFinder.Clear();
|
||||
|
||||
return _LeerzeichenFuerGetMethoden;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ using System.Web.Mvc;
|
||||
using BeWoPlanerMobil.Service;
|
||||
using BeWoPlanerMobil.Util;
|
||||
using BS.Shared;
|
||||
using BS.Shared.Core;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using BS.Shared.Extensions;
|
||||
@@ -132,35 +133,7 @@ namespace BeWoPlanerMobil.Models
|
||||
public List<CompactCustomerDC> SelectedCustomers { get; set; } = new List<CompactCustomerDC>();
|
||||
|
||||
public bool IsInEditMode => SelectedAppointment != null;
|
||||
|
||||
// Wird nicht benötigt
|
||||
public string ColWidth
|
||||
{
|
||||
get
|
||||
{
|
||||
var isOwnAppointment = !IsInEditMode || SelectedAppointment.Originator.EmployeeOid == Employee.EmployeeOid;
|
||||
|
||||
var v1 = HasRightToInsertEmployeeAppointments || IsInEditMode && HasRightToEditEmployeeAppointments;
|
||||
|
||||
var v2 = HasRightToInsertRessourceAppointments || IsInEditMode && HasRightToEditResourceAppointments;
|
||||
|
||||
if(IsInEditMode && !isOwnAppointment)
|
||||
{
|
||||
v2 = HasRightToEditOthersResourceAppointments;
|
||||
}
|
||||
|
||||
var v3 = HasRightToInsertCustomerAppointments || IsInEditMode && HasRightToEditCustomerAppointments;
|
||||
|
||||
var a = v1 ? 1 : 0;
|
||||
var b = v2 ? 1 : 0;
|
||||
var c = v3 ? 1 : 0;
|
||||
|
||||
var dividend = a + b + c;
|
||||
|
||||
return dividend == 0 ? "col-12" : $"col-{12 / a + b + c}";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public bool HasResourcesEmployeesOrCustomers
|
||||
{
|
||||
get
|
||||
@@ -184,6 +157,32 @@ namespace BeWoPlanerMobil.Models
|
||||
|
||||
public bool ShowEmployeeButton => IsInEditMode ? HasRightToInsertEmployeeAppointments : HasRightToEditEmployeeAppointments;
|
||||
public bool ShowCustomerButton => IsInEditMode ? HasRightToInsertCustomerAppointments : HasRightToEditCustomerAppointments;
|
||||
|
||||
//IntervalFinder
|
||||
public List<CompactEmployeeDC> SelectedEmployeesForIntervalFinder { get; set; } = new List<CompactEmployeeDC>();
|
||||
public List<CompactCustomerDC> SelectedCustomersForIntervalFinder { get; set; } = new List<CompactCustomerDC>();
|
||||
public List<ResourceDC> SelectedResourcesForIntervalFinder { get; set; } = new List<ResourceDC>();
|
||||
|
||||
public Dictionary<DateTime, List<DateTimeSpan>> FreeIntervals { get; set; } = new Dictionary<DateTime, List<DateTimeSpan>>();
|
||||
|
||||
public bool IsInIntervalFinderMode { get; set; }
|
||||
public DateTime? IntervalStartDate { get; set; }
|
||||
public DateTime? IntervalEndDate { get; set; }
|
||||
|
||||
public string IntervalStartDateStr => IntervalStartDate.HasValue ? $"{IntervalStartDate:dd.MM.yyyy}" : string.Empty;
|
||||
public string IntervalEndDateStr => IntervalEndDate.HasValue ? $"{IntervalEndDate:dd.MM.yyyy}" : string.Empty;
|
||||
public string IntervalStartTimeStr => IntervalStartDate.HasValue ? $"{IntervalStartDate:HH:mm}" : string.Empty;
|
||||
public string IntervalEndTimeStr => IntervalEndDate.HasValue ? $"{IntervalEndDate:HH:mm}" : string.Empty;
|
||||
|
||||
public int? IntervalDuration { get; set; }
|
||||
|
||||
public string IntervalDurationStr => IntervalDuration.HasValue ? $"{IntervalDuration}" : string.Empty;
|
||||
|
||||
[Display(Name = "Ganztägig")]
|
||||
public bool IsAllDay { get; set; }
|
||||
|
||||
[Display(Name = "Privat")]
|
||||
public bool IsPrivate { get; set; }
|
||||
}
|
||||
|
||||
public class WeekViewObject
|
||||
@@ -197,7 +196,7 @@ namespace BeWoPlanerMobil.Models
|
||||
public KeyValuePair<DateTime, List<AppointmentListItem>> SaturdayAppointments { get; set; }
|
||||
public KeyValuePair<DateTime, List<AppointmentListItem>> SundayAppointments { get; set; }
|
||||
|
||||
public WeekViewObject(IReadOnlyCollection<SchedulerAppointmentDC> appointments, DateTime monday)
|
||||
public WeekViewObject(IEnumerable<SchedulerAppointmentDC> appointments, DateTime monday)
|
||||
{
|
||||
var first = monday.Date;
|
||||
var last = first.AddDays(6);
|
||||
|
||||
@@ -117,7 +117,7 @@ function addEmployeeToGroupBooking() {
|
||||
|
||||
var oidString = "";
|
||||
|
||||
$("#employee-list input:checked").each(function() {
|
||||
$("#group-booking-employee-selection-popup input:checked").each(function() {
|
||||
var oid = $(this).val();
|
||||
|
||||
selectedEmployees.push(oid);
|
||||
|
||||
13
BeWoPlanerMobil/Scripts/jquery-ui-1.12.1.min.js
vendored
13
BeWoPlanerMobil/Scripts/jquery-ui-1.12.1.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
6
BeWoPlanerMobil/Scripts/jquery-ui-1.13.0.min.js
vendored
Normal file
6
BeWoPlanerMobil/Scripts/jquery-ui-1.13.0.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -28,6 +28,19 @@ function showMessagePopup(title, message) {
|
||||
);
|
||||
}
|
||||
|
||||
function showMessagePopupWithHtml(title, messageAsHtml) {
|
||||
$("#popupTitle").text(title);
|
||||
|
||||
$("#modal-body").html(messageAsHtml);
|
||||
|
||||
$("#messagePopup").modal(
|
||||
{
|
||||
backdrop: "static",
|
||||
keyboard: false
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function showMessagePopupWithCallback(title, message, callback, executeCallbackByBothButtons) {
|
||||
$("#popupTitle").text(title);
|
||||
|
||||
@@ -292,4 +305,33 @@ function toggleChevron(chevronId, cardBodyId) {
|
||||
|
||||
function validateNonEmptyString(stringValue) {
|
||||
return !isUndefinedOrNull(stringValue) && !isEmptyOrSpaces(stringValue) && typeof stringValue === "string";
|
||||
}
|
||||
}
|
||||
|
||||
function showCollapsable(collapsableElement) {
|
||||
try {
|
||||
if (collapsableElement === null || collapsableElement === undefined) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!collapsableElement.hasClass("show")) {
|
||||
collapsableElement.addClass("show");
|
||||
}
|
||||
} catch (error) {
|
||||
logError(error.message);
|
||||
}
|
||||
}
|
||||
|
||||
function hideCollapsable(collapsableElement) {
|
||||
try {
|
||||
if (collapsableElement === null || collapsableElement === undefined) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (collapsableElement.hasClass("show")) {
|
||||
collapsableElement.removeClass("show");
|
||||
}
|
||||
} catch (error) {
|
||||
logError(error.message);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,11 +10,14 @@
|
||||
|
||||
$("#scheduler-start-date, #scheduler-end-date").val(moment().format("DD.MM.YYYY"));
|
||||
|
||||
$("#resources-popup input:checked").each(function() {
|
||||
$("#resources-popup input:checked, #customers-popup input:checked, #employees-popup input:checked").each(function() {
|
||||
$(this).prop("checked", false);
|
||||
});
|
||||
|
||||
$("#selected-resources-list").empty();
|
||||
$("#selected-resources-list, #selected-employees-list, #selected-customers-list").empty();
|
||||
|
||||
$("#IsAllDay").prop("checked", false);
|
||||
$("#IsPrivate").prop("checked", false);
|
||||
}
|
||||
|
||||
function submitInsertAppointmentForm() {
|
||||
@@ -28,13 +31,16 @@ function submitSchedulerDateForm() {
|
||||
}
|
||||
|
||||
function validateAppointmentForm() {
|
||||
var isAllDay = $("#IsAllDay").prop("checked") === true;
|
||||
|
||||
|
||||
var startTimePicker = $("#scheduler-start-time-picker");
|
||||
var startDatePicker = $("#scheduler-start-date-picker");
|
||||
var endTimePicker = $("#scheduler-end-time-picker");
|
||||
var endDatePicker = $("#scheduler-end-date-picker");
|
||||
|
||||
var isStartTimeInputEmpty = isEmptyOrSpaces($("#scheduler-start-time").val());
|
||||
var isEndTimeInputEmpty = isEmptyOrSpaces($("#scheduler-end-time").val());
|
||||
var isStartTimeInputEmpty = isAllDay ? false : isEmptyOrSpaces($("#scheduler-start-time").val());
|
||||
var isEndTimeInputEmpty = isAllDay ? false : isEmptyOrSpaces($("#scheduler-end-time").val());
|
||||
var isStartDateInputEmpty = isEmptyOrSpaces($("#scheduler-start-date").val());
|
||||
var isEndDateInputEmpty = isEmptyOrSpaces($("#scheduler-end-date").val());
|
||||
|
||||
@@ -57,14 +63,15 @@ function validateAppointmentForm() {
|
||||
|
||||
var a = startDate === undefined || startDate === null || !startDate.isValid();
|
||||
var b = endDate === undefined || endDate === null || !endDate.isValid();
|
||||
var c = startTime === undefined || startTime === null || !startTime.isValid();
|
||||
var d = endTime === undefined || endTime === null || !endTime.isValid();
|
||||
|
||||
if(a || b || c || d || isStartDateInputEmpty || isStartTimeInputEmpty || isEndTimeInputEmpty || isEndDateInputEmpty) {
|
||||
var c = isAllDay ? false : startTime === undefined || startTime === null || !startTime.isValid();
|
||||
var d = isAllDay ? false : endTime === undefined || endTime === null || !endTime.isValid();
|
||||
|
||||
if (a || b || c || d || isStartDateInputEmpty || isStartTimeInputEmpty || isEndTimeInputEmpty || isEndDateInputEmpty) {
|
||||
|
||||
hideSpinner();
|
||||
$("#messagePopup .modal-body").html('<div class="alert alert-danger" role="alert">Die Zeit- und/oder Datumsangaben sind nicht korrekt.</div>');
|
||||
showMessagePopup("Fehler");
|
||||
|
||||
showMessagePopupWithHtml("Fehler", '<div class="alert alert-danger" role="alert">Die Zeit- und/oder Datumsangaben sind nicht korrekt.</div>');
|
||||
|
||||
$("#scheduler-start-time, #scheduler-end-time").val("");
|
||||
return;
|
||||
}
|
||||
@@ -73,11 +80,23 @@ function validateAppointmentForm() {
|
||||
endDate = startDate.clone();
|
||||
}
|
||||
|
||||
startDate = startDate.hours(startTime.hours());
|
||||
startDate = startDate.minutes(startTime.minutes());
|
||||
var startHours = 0;
|
||||
var startMinutes = 0;
|
||||
var endHours = 0;
|
||||
var endMinutes = 0;
|
||||
|
||||
endDate = endDate.hours(endTime.hours());
|
||||
endDate = endDate.minutes(endTime.minutes());
|
||||
if(isAllDay === false) {
|
||||
startHours = startTime.hours();
|
||||
startMinutes = startTime.minutes();
|
||||
endHours = endTime.hours();
|
||||
endMinutes = endTime.minutes();
|
||||
}
|
||||
|
||||
startDate = startDate.hours(startHours);
|
||||
startDate = startDate.minutes(startMinutes);
|
||||
|
||||
endDate = endDate.hours(endHours);
|
||||
endDate = endDate.minutes(endMinutes);
|
||||
|
||||
if(endDate.isBefore(startDate)) {
|
||||
hideSpinner();
|
||||
@@ -180,14 +199,18 @@ function insertOrUpdateAppointment(formattedStartDate, formattedEndDate, formatt
|
||||
}
|
||||
|
||||
function hideAppointmentForm() {
|
||||
logDebug("hiding appointment form");
|
||||
$("#form-container").addClass("d-none d-sm-none");
|
||||
}
|
||||
|
||||
function showAppointmentForm() {
|
||||
logDebug("showing appointment form");
|
||||
$("#form-container").removeClass("d-none d-sm-none");
|
||||
}
|
||||
|
||||
function toggleAppointmentForm() {
|
||||
logError("toggling appointment form");
|
||||
|
||||
var isVisible = $("#form-container").css("display") === "block";
|
||||
|
||||
if (isVisible) {
|
||||
@@ -197,183 +220,113 @@ function toggleAppointmentForm() {
|
||||
}
|
||||
}
|
||||
|
||||
function changeResourceSelection() {
|
||||
var selectedOids = [];
|
||||
var oidString = "";
|
||||
function listSearchOnChange(searchInputId, entryClass, textClass) {
|
||||
try {
|
||||
var text = $("#" + searchInputId).val().toLowerCase();
|
||||
|
||||
$("#resources-popup input:checked").each(function() {
|
||||
var id = $(this).attr("id");
|
||||
|
||||
selectedOids.push(id.split("-")[0]);
|
||||
});
|
||||
var entries = $("." + entryClass);
|
||||
|
||||
for (var i = 0; i < selectedOids.length; i++) {
|
||||
oidString += selectedOids[i] + ",";
|
||||
if (text.length === 0) {
|
||||
entries.show();
|
||||
}
|
||||
|
||||
$.each(entries, function (index, item) {
|
||||
var customer = $(item);
|
||||
|
||||
if (customer.find("." + textClass).text().toLowerCase().includes(text)) {
|
||||
customer.show();
|
||||
} else {
|
||||
customer.hide();
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
logError(error.message);
|
||||
}
|
||||
|
||||
$.get(getSelectResourcesForAppointmentUrl(), { resourceOids: oidString }).done(updateSelectedResourceList);
|
||||
}
|
||||
|
||||
function updateSelectedResourceList(jsonResult) {
|
||||
var list = $("#selected-resources-list");
|
||||
|
||||
list.empty();
|
||||
|
||||
if (isEmptyOrSpaces(jsonResult)) {
|
||||
return;
|
||||
function resetSearch(searchInputId, entryClass) {
|
||||
try {
|
||||
$("#" + searchInputId).val("");
|
||||
$("." + entryClass).show();
|
||||
} catch (error) {
|
||||
logError(error.message);
|
||||
}
|
||||
|
||||
var resourceList = $.parseJSON(jsonResult);
|
||||
|
||||
$.each(resourceList, function(index, customListItem) {
|
||||
var html =
|
||||
"<div class='list-group-item' id='relation-item-" + customListItem.ResourceOid + "'>" +
|
||||
"<div class='row'>" +
|
||||
"<div class='col my-auto'>" +
|
||||
"<i class='fas fa-cubes text-bewo-resource mr-2'></i>" + customListItem.Name +
|
||||
"</div>" +
|
||||
"<div class='col-auto my-auto'>" +
|
||||
"<button type='button' class='btn btn-primary' onclick='removeSelectedResource(" + customListItem.ResourceOid + ")'>" +
|
||||
"<span class='fas fa-times-circle'></span>" +
|
||||
"</button>" +
|
||||
"</div>" +
|
||||
"</div>" +
|
||||
"</div>";
|
||||
|
||||
list.append(html);
|
||||
});
|
||||
}
|
||||
|
||||
function removeSelectedResource(resourceOid) {
|
||||
$("#relation-item-" + resourceOid).remove();
|
||||
function resourceSearchOnChange(searchInputId) {
|
||||
try {
|
||||
var text = $("#" + searchInputId).val().toLowerCase();
|
||||
|
||||
var checkbox = $("#" + resourceOid + "-checkbox");
|
||||
var entries = $(".resource-text");
|
||||
|
||||
if (checkbox.length) {
|
||||
checkbox.prop("checked", false);
|
||||
if (text.length === 0 || !text.replace(/\s\g/, '').length) {
|
||||
resetResourceSearch(searchInputId);
|
||||
return;
|
||||
}
|
||||
|
||||
$.each(entries, function (index, entry) {
|
||||
var checkbox = $(entry);
|
||||
var categoryCard = checkbox.closest(".category-card");
|
||||
var list = categoryCard.find(".collapse");
|
||||
var resourceName = checkbox.find(".resource-name-label").text().toLowerCase();
|
||||
var includesText = resourceName.includes(text);
|
||||
|
||||
if (includesText) {
|
||||
checkbox.show();
|
||||
categoryCard.show();
|
||||
showCollapsable($(list));
|
||||
} else {
|
||||
checkbox.hide();
|
||||
}
|
||||
});
|
||||
|
||||
var lists = $(".resource-list");
|
||||
|
||||
var cardsToHide = [];
|
||||
|
||||
$.each(lists, function (index, item) {
|
||||
var children = $(item).children();
|
||||
var hasAtLeastOneVisibleChild = false;
|
||||
var card = $(item).parent().parent();
|
||||
|
||||
for (var i = 0; i < children.length; i++) {
|
||||
var child = children[i];
|
||||
|
||||
hasAtLeastOneVisibleChild = $(child).css("display") === "block";
|
||||
|
||||
if (hasAtLeastOneVisibleChild === true) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (hasAtLeastOneVisibleChild === false) {
|
||||
cardsToHide.push(card);
|
||||
}
|
||||
});
|
||||
|
||||
$.each(cardsToHide, function (index, item) {
|
||||
$(item).hide();
|
||||
});
|
||||
} catch (error) {
|
||||
logError(error.message);
|
||||
}
|
||||
|
||||
changeResourceSelection();
|
||||
}
|
||||
|
||||
// Mitarbeiter
|
||||
function changeEmployeeSelection() {
|
||||
var selectedOids = [];
|
||||
var oidString = "";
|
||||
function resetResourceSearch(searchInputId) {
|
||||
try {
|
||||
logDebug("reset resource search: " + searchInputId);
|
||||
|
||||
$("#employees-popup input:checked").each(function () {
|
||||
var id = $(this).attr("id");
|
||||
$("#" + searchInputId).val("");
|
||||
|
||||
selectedOids.push(id.split("-")[1]);
|
||||
});
|
||||
var entries = $(".resource-text");
|
||||
var categoryCard = $(".category-card");
|
||||
var collapsable = categoryCard.find(".collapse");
|
||||
|
||||
for (var i = 0; i < selectedOids.length; i++) {
|
||||
oidString += selectedOids[i] + ",";
|
||||
entries.show();
|
||||
categoryCard.show();
|
||||
|
||||
hideCollapsable(collapsable);
|
||||
} catch(error) {
|
||||
logError(error.message);
|
||||
}
|
||||
|
||||
$.get(getSelectEmployeesForAppointmentUrl(), { employeeOids: oidString }).done(updateSelectedEmployeeList);
|
||||
}
|
||||
|
||||
function updateSelectedEmployeeList(jsonResult) {
|
||||
var list = $("#selected-employees-list");
|
||||
|
||||
list.empty();
|
||||
|
||||
if (isEmptyOrSpaces(jsonResult)) {
|
||||
return;
|
||||
}
|
||||
|
||||
var employeeList = $.parseJSON(jsonResult);
|
||||
|
||||
$.each(employeeList, function (index, customListItem) {
|
||||
var html =
|
||||
"<div class='list-group-item my-auto' id='related-employee-" + customListItem.EmployeeOid + "'>" +
|
||||
"<div class='row'>" +
|
||||
"<div class='input-group'>" +
|
||||
"<div class='input-group-prepend'>" +
|
||||
"<i class='fas fa-user text-bewo-employee h-100'></i>" +
|
||||
"</div>" +
|
||||
"<p class='form-control border-0 bg-transparent text-truncate'>" + customListItem.LastName + ", " + customListItem.FirstName + "<p>" +
|
||||
"<div class='input-group-append'>" +
|
||||
"<button class='btn btn-primary' type='button' onclick='removeSelectedEmployee(" + customListItem.EmployeeOid + ")'><span class='fas fa-times-circle'></span></button>" +
|
||||
"</div>" +
|
||||
"</div>" +
|
||||
"</div>" +
|
||||
"</div>";
|
||||
|
||||
list.append(html);
|
||||
});
|
||||
}
|
||||
|
||||
function removeSelectedEmployee(employeeOid) {
|
||||
$("#related-employee-" + employeeOid).remove();
|
||||
|
||||
var checkbox = $("#employee-" + employeeOid + "-checkbox");
|
||||
|
||||
if (checkbox.length) {
|
||||
checkbox.prop("checked", false);
|
||||
}
|
||||
|
||||
changeEmployeeSelection();
|
||||
}
|
||||
|
||||
// Klienten
|
||||
function changeCustomerSelection() {
|
||||
var selectedOids = [];
|
||||
var oidString = "";
|
||||
|
||||
$("#customers-popup input:checked").each(function () {
|
||||
var id = $(this).attr("id");
|
||||
|
||||
selectedOids.push(id.split("-")[1]);
|
||||
});
|
||||
|
||||
for (var i = 0; i < selectedOids.length; i++) {
|
||||
oidString += selectedOids[i] + ",";
|
||||
}
|
||||
|
||||
$.get(getSelectCustomersForAppointmentUrl(), { customerOids: oidString }).done(updateSelectedCustomerList);
|
||||
}
|
||||
|
||||
function updateSelectedCustomerList(jsonResult) {
|
||||
var list = $("#selected-customers-list");
|
||||
|
||||
list.empty();
|
||||
|
||||
if (isEmptyOrSpaces(jsonResult)) {
|
||||
return;
|
||||
}
|
||||
|
||||
var customerList = $.parseJSON(jsonResult);
|
||||
|
||||
$.each(customerList, function (index, customListItem) {
|
||||
var html =
|
||||
"<div class='list-group-item my-auto' id='related-customer-item-" + customListItem.CustomerOid + "'>" +
|
||||
"<div class='row'>" +
|
||||
"<div class='input-group'>" +
|
||||
"<div class='input-group-prepend'>" +
|
||||
"<i class='fas fa-user text-bewo-customers h-100'></i>" +
|
||||
"</div>" +
|
||||
"<p class='form-control border-0 bg-transparent text-truncate'>" + customListItem.LastName + ", " + customListItem.FirstName+ "<p>" +
|
||||
"<div class='input-group-append'>" +
|
||||
"<button class='btn btn-primary' type='button' onclick='removeSelectedCustomer(" + customListItem.CustomerOid + ")'><span class='fas fa-times-circle'></span></button>" +
|
||||
"</div>" +
|
||||
"</div>" +
|
||||
"</div>" +
|
||||
"</div>";
|
||||
|
||||
list.append(html);
|
||||
});
|
||||
}
|
||||
|
||||
function removeSelectedCustomer(customerOid) {
|
||||
$("#related-customer-" + customerOid).remove();
|
||||
|
||||
var checkbox = $("#customer-" + customerOid + "-checkbox");
|
||||
|
||||
if (checkbox.length) {
|
||||
checkbox.prop("checked", false);
|
||||
}
|
||||
|
||||
changeCustomerSelection();
|
||||
}
|
||||
@@ -49,6 +49,7 @@ namespace BeWoPlanerMobil.Service
|
||||
var serverPath = HttpContext.Current.Server.MapPath("");
|
||||
|
||||
serverPath = Path.Combine(serverPath, ConfigurationManager.AppSettings.Get("MultitenancyPath"));
|
||||
|
||||
serverPath = Path.Combine(serverPath, MobileSessionFacade.Tenant + ".config");
|
||||
|
||||
if (!File.Exists(serverPath))
|
||||
|
||||
@@ -36,6 +36,8 @@
|
||||
public static string AppointmentNoticeKey => "Notice";
|
||||
public static string AppointmentSchedulerDateKey => "SchedulerDate";
|
||||
public static string AppointmentSchedulerOidHolderKey => "scheduler-oid-holder";
|
||||
public static string AppointmentIsPrivate => "IsPrivate";
|
||||
public static string AppointmentIsAllDay => "IsAllDay";
|
||||
|
||||
|
||||
// Auswertung
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using BeWoPlanerMobil.Models;
|
||||
using BS.Shared;
|
||||
|
||||
371
BeWoPlanerMobil/Views/Main/GroupBookingPartial.cshtml
Normal file
371
BeWoPlanerMobil/Views/Main/GroupBookingPartial.cshtml
Normal file
@@ -0,0 +1,371 @@
|
||||
@using BeWoPlanerMobil.Models
|
||||
@model BeWoPlanerMobil.Models.MainModel
|
||||
|
||||
<div class="row">
|
||||
<div class="col col-12">
|
||||
@if (Model != null)
|
||||
{
|
||||
var submitButtonText = Model.IsInEditingMode ? "Speichern" : "Anlegen";
|
||||
|
||||
using (Html.BeginForm("CreateOrUpdateGroupBooking", "Main", FormMethod.Post, new { onreset = "serviceDescriptionSelectOnReset()", id = "groupBookingForm" }))
|
||||
{
|
||||
var startDate = Model.SelectedServiceRecord?.Start?.ToShortDateString() ?? DateTime.Today.ToShortDateString();
|
||||
var endDate = Model.SelectedServiceRecord?.End?.ToShortDateString() ?? DateTime.Today.ToShortDateString();
|
||||
|
||||
var startTime = Model.SelectedServiceRecord?.Start?.ToShortTimeString() ?? string.Empty;
|
||||
var endTime = Model.SelectedServiceRecord?.End?.ToShortTimeString() ?? string.Empty;
|
||||
|
||||
var duration = Model.SelectedServiceRecord?.GroupRoundedDuration?.ToString() ?? string.Empty;
|
||||
var distance = Model.SelectedServiceRecord?.DistanceInMeter?.ToString() ?? string.Empty;
|
||||
|
||||
var notice0 = Model.SelectedServiceRecord?.Notice ?? string.Empty;
|
||||
var noticeList = new[] { string.Empty, string.Empty, string.Empty, string.Empty, string.Empty };
|
||||
|
||||
if (Model.SelectedServiceRecord?.NoticeList != null)
|
||||
{
|
||||
var selectedNoticeList = Model.SelectedServiceRecord.NoticeList;
|
||||
for (var i = 0; i < selectedNoticeList.Count; i++)
|
||||
{
|
||||
noticeList[i] = selectedNoticeList[i] ?? string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
<div class="mt-3">
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="alert alert-danger collapse" role="alert" id="form-alert">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<button type="button" class="btn btn-primary btn-block" data-toggle="modal" data-target="#group-booking-popup" id="support-concepts-and-groups-button">Hilfepläne und Gruppen hinzufügen</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-1">
|
||||
<div class="list-group" id="selected-cb2sc-list">
|
||||
@foreach (var selectedCb2ScRelation in Model.GroupBookingSelectionObject.SelectedRelations)
|
||||
{
|
||||
<div class="list-group-item" id="relation-item-@selectedCb2ScRelation.Value">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<span>
|
||||
@selectedCb2ScRelation.Text1
|
||||
<br />
|
||||
<span class="@selectedCb2ScRelation.TextColor">
|
||||
@selectedCb2ScRelation.Text2
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-auto my-auto">
|
||||
<button type="button" class="btn btn-primary" onclick="removeCb2ScRelation(@selectedCb2ScRelation.Value)">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<button type="button" class="btn btn-primary btn-block" data-toggle="modal" data-target="#group-booking-employee-selection-popup" id="employees-button">
|
||||
Mitarbeiter hinzufügen <span class="badge badge-light text-primary" id="selected-employees-count-badge">@Model.SelectedEmployees.Count</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
@Html.LabelFor(m => m.SelectedServiceCategoryOid)
|
||||
@Html.DropDownListFor(m => m.SelectedServiceCategoryOid, Model.ServiceCategoryListItems, new { onchange = "loadServiceDescriptions()", @class = "custom-select", Id = "category-select" })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="leistung-select">Leistung</label>
|
||||
<select class="custom-select" id="leistung-select" name="ServiceDescription" onchange="setServiceDescription('leistung-select')"></select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="start-date">Startdatum</label>
|
||||
<div class="input-group date" id="start-date-picker" data-target-input="nearest">
|
||||
<input type="text" id="start-date" name="Datum" class="form-control datetimepicker-input" data-target="#start-date-picker" data-toggle="datetimepicker" value="@startDate" />
|
||||
<div class="input-group-append" data-target="#start-date-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-calendar-alt"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (Model.IsEndDateVisible)
|
||||
{
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="start-date">Enddatum</label>
|
||||
<div class="input-group date" id="end-date-picker" data-target-input="nearest">
|
||||
<input type="text" id="end-date" name="Enddatum" class="form-control datetimepicker-input" data-target="#end-date-picker" data-toggle="datetimepicker" value="@endDate" />
|
||||
<div class="input-group-append" data-target="#end-date-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-calendar-alt"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="start-time">Von</label>
|
||||
<div class="input-group date" id="start-time-picker" data-target-input="nearest">
|
||||
<input type="text" id="start-time" name="Start" class="form-control datetimepicker-input" data-target="#start-time-picker" value="@startTime" />
|
||||
<div class="input-group-append" data-target="#start-time-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-clock"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="end-time">Bis</label>
|
||||
<div class="input-group date" id="end-time-picker" data-target-input="nearest">
|
||||
<input type="text" id="end-time" name="Ende" class="form-control datetimepicker-input" data-target="#end-time-picker" value="@endTime" />
|
||||
<div class="input-group-append" data-target="#end-time-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-clock"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="duration">Dauer</label>
|
||||
<input type="text" class="form-control" id="duration" name="Dauer" onchange="onDurationChange()" value="@duration">
|
||||
</div>
|
||||
</div>
|
||||
@if (Model.IsZeiterfassungInStdMin)
|
||||
{
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="hours-minutes-dropdown-btn">Minuten/Stunden</label>
|
||||
<div class="dropdown">
|
||||
<button id="hours-minutes-dropdown-btn" class="btn btn-outline-primary dropdown-toggle w-100" type="button" data-toggle="dropdown">
|
||||
Minuten
|
||||
</button>
|
||||
<div class="dropdown-menu w-100">
|
||||
<a class="dropdown-item" href="#" onclick="toggleHoursMinutesDropdownButton(this)">Minuten</a>
|
||||
<a class="dropdown-item" href="#" onclick="toggleHoursMinutesDropdownButton(this)">Stunden</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
||||
@if (Model.ShowDistanceField)
|
||||
{
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="distance">Gefahrene Kilometer</label>
|
||||
<input type="text" class="form-control" id="distance" name="Distanz" onchange="validateDistanceInput()" value="@distance">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
@if (AbstractModel.HasRightToSeeTextModules)
|
||||
{
|
||||
<div class="form-row" id="textmodule-container">
|
||||
<div class="col-md">
|
||||
<button type="button" class="btn btn-primary form-control mt-3" data-toggle="modal" data-target="#textbausteine-popup" id="textbausteine-button">Textbausteine</button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="form-row">
|
||||
<div class="col-md mt-3">
|
||||
@if (Model.NumberOfDokuTypes == 0)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label for="dokufeld">Dokumentation</label>
|
||||
<textarea class="form-control" name="Dokumentation6" id="dokufeld">@notice0</textarea>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<ul class="nav nav-tabs" role="tab-list">
|
||||
@for (var i = 0; i < Model.Dokutypes.Length; i++)
|
||||
{
|
||||
var currentDokuType = Model.Dokutypes[i];
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="#doku_@i" id="doku_@i-tab" data-toggle="tab" role="tab" aria-controls="doku_@i" class="nav-link@(i == 0 ? " active" : string.Empty)" aria-selected="true">
|
||||
@currentDokuType.DisplayName
|
||||
</a>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
<div class="tab-content" id="dokufelderTab">
|
||||
@for (var i = 0; i < Model.Dokutypes.Length; i++)
|
||||
{
|
||||
var textareaName = i + 1 < 1 ? "Dokumentation" : "Dokumentation" + (i + 1);
|
||||
|
||||
<div class="tab-pane show@(i == 0 ? " active" : string.Empty)" id="doku_@i" role="tabpanel" aria-labelledby="doku_@i-tab">
|
||||
<textarea class="form-control doku-form-control" id="doku-textarea-@i" name="@textareaName">@noticeList[i]</textarea>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
<div class="d-flex bd-highlight mt-3">
|
||||
<div class="mr-auto bd-highlight">
|
||||
<!-- dient nur als Abstandshalter-->
|
||||
</div>
|
||||
<div class="ml-3 bd-highlight">
|
||||
@using (Html.BeginForm("ResetEditingMode", "Main", FormMethod.Post))
|
||||
{
|
||||
<button type="submit" class="btn btn-primary" onclick="showSpinner()">Abbrechen</button>
|
||||
}
|
||||
</div>
|
||||
<div class="ml-3 bd-highlight">
|
||||
<button type="button" class="btn btn-primary" id="create-button" onclick="submitGroupBookingForm()">@submitButtonText</button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- (Gruppenbuchung) Hilfeplan- und Gruppenauswahl Popup -->
|
||||
<div class="modal" data-backdrop="static" tabindex="-1" role="dialog" id="group-booking-popup">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Gruppen und Hilfepläne für Gruppenbuchung</h5>
|
||||
<button type="button" class="close" data-dismiss="modal">
|
||||
<span>×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<nav class="nav nav-pills nav-fill">
|
||||
<a class="nav-item nav-link active" href="#group-booking-supportconcepts" data-toggle="tab" role="tab">Hilfepläne</a>
|
||||
<a class="nav-item nav-link" href="#group-booking-groups" data-toggle="tab" role="tab">Gruppen</a>
|
||||
</nav>
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane show active" role="tabpanel" id="group-booking-supportconcepts">
|
||||
<ul class="list-group">
|
||||
@foreach (var cb2Sc in Model.SupportConceptListObjectsForGroupBooking)
|
||||
{
|
||||
<li class="list-group-item">
|
||||
@{
|
||||
var timeSpanColorClass2 = cb2Sc.IsAboutToExpire ? "text-bewo-is-about-to-expire" : cb2Sc.ExpiresInThreeMonthsOrLess ? "text-bewo-expires-in-three-months" : "text-dark";
|
||||
|
||||
var wasSuccessful = long.TryParse(cb2Sc.CostBearer2SupportConceptOid, out var cb2ScOid);
|
||||
|
||||
var checkedValue = wasSuccessful ? Model.SelectedConceptCostBearerRelations.Any(a => a.CostBearer2SupportConceptOid.Equals(cb2ScOid)) : wasSuccessful;
|
||||
}
|
||||
|
||||
<div class="custom-control custom-checkbox custom-control-inline">
|
||||
<input type="checkbox"
|
||||
@{ if (checkedValue) { @Html.Raw("checked=\"checked\"") ; } }
|
||||
class="custom-control-input" id="cb2sc-checkbox-@cb2Sc.CostBearer2SupportConceptOid" onchange="addCostBearer2SupportConceptsToGroupBooking()" name="cb2sc-checkbox-@cb2Sc.CostBearer2SupportConceptOid" value="@cb2Sc.CostBearer2SupportConceptOid">
|
||||
<label for="cb2sc-checkbox-@cb2Sc.CostBearer2SupportConceptOid" class="custom-control-label">
|
||||
<span class="justify-content-between mb-1 text-dark text-left">
|
||||
@cb2Sc.NameAndDateOfBirth
|
||||
</span>
|
||||
<br />
|
||||
<span class="mb-1 text-left @timeSpanColorClass2">
|
||||
@cb2Sc.SupportConceptTimeSpan
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tab-pane show" role="tabpanel" id="group-booking-groups">
|
||||
<ul class="list-group">
|
||||
@foreach (var group in Model.GroupOfPeopleListItems)
|
||||
{
|
||||
<li class="list-group-item">
|
||||
@{
|
||||
long groupOid;
|
||||
var wasSuccessful = long.TryParse(group.Value, out groupOid);
|
||||
|
||||
var shouldBeChecked = wasSuccessful ? Model.SelectedGroupOfPeopleOids.Contains(groupOid) : wasSuccessful;
|
||||
|
||||
var attribute = shouldBeChecked ? "checked=\"checked\"" : string.Empty;
|
||||
}
|
||||
<div class="custom-control custom-checkbox custom-control-inline">
|
||||
<input type="checkbox" @attribute class="custom-control-input" id="group-checkbox-@group.Value" value="@group.Value" onchange="addCostBearer2SupportConceptsToGroupBooking()" />
|
||||
<label for="group-checkbox-@group.Value" class="custom-control-label">
|
||||
@group.Text
|
||||
</label>
|
||||
</div>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- (Gruppenbuchung) Mitarbeiterauswahl Popup -->
|
||||
<div class="modal" tabindex="-1" role="dialog" id="group-booking-employee-selection-popup">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Mitarbeiter hinzufügen</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" onclick="resetSearch('gb-employee-search-input', 'employee-text')">
|
||||
<span>×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="input-group mb-3">
|
||||
<input class="form-control w-100" type="text" id="gb-employee-search-input" placeholder="Suchen..." oninput="listSearchOnChange('gb-employee-search-input', 'employee-text', 'employee-name-label')" />
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-outline-secondary" type="button" onclick="resetSearch('gb-employee-search-input', 'employee-text')">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@foreach (var employee in Model.Employees)
|
||||
{
|
||||
var checkedValue = Model.SelectedEmployees.Contains(employee) ? "checked=\"checked\"" : string.Empty;
|
||||
|
||||
<div class="custom-control custom-checkbox employee-text">
|
||||
<input type="checkbox" @checkedValue class="custom-control-input" id="group-employee-@employee.EmployeeOid" onchange="addEmployeeToGroupBooking()" value="@employee.EmployeeOid" />
|
||||
<label for="group-employee-@employee.EmployeeOid" class="custom-control-label employee-name-label">@employee.DetailDescription</label>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -341,848 +341,20 @@
|
||||
<div class="container-fluid mb-3" id="main-container">
|
||||
@if(!Model.IsInGroupBookingMode)
|
||||
{
|
||||
<div class="row">
|
||||
<!-- Einzelbuchungsformular -->
|
||||
<div class="col col-12 col-md-5">
|
||||
@if(Model != null)
|
||||
{
|
||||
using(Html.BeginForm("SelectSupportConcept", "Main", FormMethod.Post, new { Id = "selectSupportConceptForm" }))
|
||||
{
|
||||
var selectedSuportConceptTimeSpanColorClass = Model.SelectedSupportConceptListObject.IsAboutToExpire ? "text-bewo-is-about-to-expire" : Model.SelectedSupportConceptListObject.ExpiresInThreeMonthsOrLess ? "text-bewo-expires-in-three-months" : "text-dark";
|
||||
<div>
|
||||
<div class="container p-0">
|
||||
<div class="row">
|
||||
<div class="col mt-3">
|
||||
<div class="list-group">
|
||||
<a href="#" class="list-group-item flex-column align-items-start no-underline" data-toggle="modal" data-target="#supportConceptList">
|
||||
<div class="d-flex">
|
||||
<h5 class="mb-1 text-dark text-left" id="selectedSupportConceptCustomerInfo">@Model.SelectedSupportConceptListObject.NameAndDateOfBirth</h5>
|
||||
</div>
|
||||
<p class="mb-1 text-left @selectedSuportConceptTimeSpanColorClass" id="selectedSupportConceptInfo">
|
||||
@Model.SelectedSupportConceptListObject.SupportConceptTimeSpan
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@if(Model.CostBearer2SupportConceptOid != null && Model.CostBearer2SupportConceptOid > 0)
|
||||
{
|
||||
<div class="col-md-auto mt-3">
|
||||
<button type="button" class="btn btn-outline-primary w-100 h-100" id="statistics-button" data-toggle="modal" data-target="#statistics-popup" onclick="showPieChart()">
|
||||
<span class="d-md-none align-middle">Statistik</span>
|
||||
<span class="fas fa-chart-pie align-middle" style="font-size: 2rem;"></span>
|
||||
</button>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Hilfeplanauswahlpopup modal-dialog-centered-->
|
||||
<div class="modal" role="dialog" tabindex="-1" id="supportConceptList">
|
||||
<div class="modal-dialog text-center" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Hilfeplanauswahl</h5>
|
||||
<button type="button" class="close" data-dismiss="modal">
|
||||
<span>×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- Hilfeplansuche -->
|
||||
<div class="input-group mb-3">
|
||||
<input class="form-control w-100" type="text" placeholder="Suchen..." oninput="supportConceptSearchOnChange()" id="support-concept-search-input" />
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-outline-secondary" type="button" onclick="resetSupportConceptSearch()">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
<!-- Hilfeplanliste -->
|
||||
<div class="list-group">
|
||||
@foreach(var supportConceptListObject in Model.SupportConceptListObjects)
|
||||
{
|
||||
var timeSpanColorClass = supportConceptListObject.IsAboutToExpire ? "text-bewo-is-about-to-expire" : supportConceptListObject.ExpiresInThreeMonthsOrLess ? "text-bewo-expires-in-three-months" : "text-dark";
|
||||
|
||||
<a href="#" class="list-group-item flex-column align-items-start no-underline blubb-test" onclick="selectSupportConcept(@supportConceptListObject.CostBearer2SupportConceptOid)" data-dismiss="modal">
|
||||
<div class="justify-content-between">
|
||||
<h5 class="mb-1 text-dark text-left supportconcept-name-header">
|
||||
@supportConceptListObject.NameAndDateOfBirth
|
||||
</h5>
|
||||
</div>
|
||||
<p class="mb-1 text-left @timeSpanColorClass">
|
||||
@supportConceptListObject.SupportConceptTimeSpan
|
||||
</p>
|
||||
</a>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /Hilfeplanauswahlpopup -->
|
||||
|
||||
<input type="text" class="d-none" name="CostBearer2SupportConceptOid" id="CostBearer2SupportConceptOid" value="@Model.SelectedSupportConceptListObject.CostBearer2SupportConceptOid">
|
||||
}
|
||||
|
||||
using(Html.BeginForm("CreateOrUpdateServiceRecord", "Main", FormMethod.Post, new { onreset = "serviceDescriptionSelectOnReset()", id = "singleBookingForm" }))
|
||||
{
|
||||
<div class="mt-3">
|
||||
<!-- Einzelbuchung: Mitarbeiter -->
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
@Html.LabelFor(m => m.SelectedEmployeeOid)
|
||||
@Html.DropDownListFor(m => m.SelectedEmployeeOid, Model.EmployeeListItems, new { id = "employeesDropDown", @class = "custom-select", onchange = "setSelectedEmployee()" })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@if(Model.SelectedSupportConcept != null && Model.SelectedSupportConcept.Goals.Any())
|
||||
{
|
||||
<!-- Einzelbuchung: Ziele -->
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<button type="button" class="btn btn-primary form-control my-3" data-toggle="collapse" data-target="#goals-container" id="goals-button">Ziele</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="collapse w-100 mt-1 max-vw-50" id="goals-container"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
}
|
||||
|
||||
<!-- Einzelbuchung: Leistungskategorie -->
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
@Html.LabelFor(m => m.SelectedServiceCategoryOid)
|
||||
@Html.DropDownListFor(m => m.SelectedServiceCategoryOid, Model.ServiceCategoryListItems, new { onchange = "loadServiceDescriptions()", @class = "custom-select", Id = "category-select" })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Einzelbuchung: Leistung -->
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="leistung-select">Leistung</label>
|
||||
<select class="custom-select" id="leistung-select" name="ServiceDescription" onchange="setServiceDescription('leistung-select')">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Einzelbuchung: Startdatum -->
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="start-date">Startdatum</label>
|
||||
<div class="input-group date" id="start-date-picker" data-target-input="nearest">
|
||||
<input type="text" id="start-date" name="Datum" class="form-control datetimepicker-input" data-target="#start-date-picker" data-toggle="datetimepicker" value="@Model.StartDateToEdit" />
|
||||
<div class="input-group-append" data-target="#start-date-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text">
|
||||
<i class="fas fa-calendar-alt"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Einzelbuchung: Enddatum -->
|
||||
@if(Model.IsEndDateVisible)
|
||||
{
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="start-date">Enddatum</label>
|
||||
<div class="input-group date" id="end-date-picker" data-target-input="nearest">
|
||||
<input type="text" id="end-date" name="Enddatum" class="form-control datetimepicker-input" data-target="#end-date-picker" data-toggle="datetimepicker" value="@Model.EndDateToEdit" />
|
||||
<div class="input-group-append" data-target="#end-date-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-calendar-alt"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<!-- Einzelbuchung: Von -->
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="start-time">Von</label>
|
||||
<div class="input-group date" id="start-time-picker" data-target-input="nearest">
|
||||
<input type="text" id="start-time" name="Start" class="form-control datetimepicker-input" data-target="#start-time-picker" value="@Model.StartTimeToEdit" />
|
||||
<div class="input-group-append" data-target="#start-time-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-clock"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Einzelbuchung: Bis -->
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="end-time">Bis</label>
|
||||
<div class="input-group date" id="end-time-picker" data-target-input="nearest">
|
||||
<input type="text" id="end-time" name="Ende" class="form-control datetimepicker-input" data-target="#end-time-picker" value="@Model.EndTimeToEdit" />
|
||||
<div class="input-group-append" data-target="#end-time-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-clock"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Einzelbuchung: Dauer -->
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="duration">Dauer</label>
|
||||
<input type="text" class="form-control" id="duration" name="Dauer" onchange="onDurationChange()" value="@Model.DurationToEdit">
|
||||
</div>
|
||||
</div>
|
||||
@if(Model.IsZeiterfassungInStdMin)
|
||||
{
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="hours-minutes-dropdown-btn">Minuten/Stunden</label>
|
||||
<div class="dropdown">
|
||||
<button id="hours-minutes-dropdown-btn" class="btn btn-outline-primary dropdown-toggle w-100" type="button" data-toggle="dropdown">
|
||||
Minuten
|
||||
</button>
|
||||
<div class="dropdown-menu w-100">
|
||||
<a class="dropdown-item" href="#" onclick="toggleHoursMinutesDropdownButton(this)">Minuten</a>
|
||||
<a class="dropdown-item" href="#" onclick="toggleHoursMinutesDropdownButton(this)">Stunden</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
<!-- Einzelbuchung: Distanz -->
|
||||
@if(Model.ShowDistanceField)
|
||||
{
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="distance">Gefahrene Kilometer</label>
|
||||
<input class="form-control" id="distance" name="Distanz" onchange="validateDistanceInput()" value="@Model.DistanceToEdit">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if(AbstractModel.HasRightToSeeTextModules)
|
||||
{
|
||||
<!-- Einzelbuchung: Textbausteine -->
|
||||
<div class="form-row" id="textmodule-container">
|
||||
<div class="col-md">
|
||||
<button type="button" class="btn btn-primary form-control mt-3" data-toggle="modal" data-target="#textbausteine-popup" id="textbausteine-button">Textbausteine</button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
<div class="form-row">
|
||||
<div class="col-md mt-3">
|
||||
@if(Model.NumberOfDokuTypes == 0)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label for="dokufeld">Dokumentation</label>
|
||||
<textarea class="form-control" name="Dokumentation6" id="dokufeld">@Model.NoticeToEdit</textarea>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<ul class="nav nav-tabs" role="tab-list">
|
||||
@for(var i = 0; i < Model.Dokutypes.Length; i++)
|
||||
{
|
||||
var currentDokuType = Model.Dokutypes[i];
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="#doku_@i" id="doku_@i-tab" data-toggle="tab" role="tab" aria-controls="doku_@i" class="nav-link@(i == 0 ? " active" : string.Empty)" aria-selected="true">
|
||||
@currentDokuType.DisplayName
|
||||
</a>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
<div class="tab-content" id="dokufelderTab">
|
||||
@for(var i = 0; i < Model.Dokutypes.Length; i++)
|
||||
{
|
||||
var textareaName = i + 1 < 1 ? "Dokumentation" : "Dokumentation" + (i + 1);
|
||||
|
||||
<div class="tab-pane show@(i == 0 ? " active" : string.Empty)" id="doku_@i" role="tabpanel" aria-labelledby="doku_@i-tab">
|
||||
<textarea class="form-control doku-form-control" id="doku-textarea-@i" name="@textareaName">@Model.NoticeListToEdit[i]</textarea>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="d-flex bd-highlight mt-3">
|
||||
<div class="mr-auto bd-highlight">
|
||||
|
||||
</div>
|
||||
@if(Model.IsInEditingMode)
|
||||
{
|
||||
using(Html.BeginForm("ResetEditingMode", "Main", FormMethod.Post))
|
||||
{
|
||||
<button type="submit" class="btn btn-primary" onclick="showSpinner()">Abbrechen</button>
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="ml-3 bd-highlight">
|
||||
<button type="button" class="btn btn-primary" id="reset-button" onclick="resetSingleBookingForm()">Abbrechen</button>
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="ml-3 bd-highlight">
|
||||
<button type="button" class="btn btn-primary" id="create-button" onclick="submitSingleBookingForm()">@Model.SubmitButtonValue</button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
<!-- /Einzelbuchungsformular -->
|
||||
|
||||
<!-- Liste mit den Einträgen und dem Auswahl-Select -->
|
||||
<div class="col col-12 col-md-7">
|
||||
@if(Model != null)
|
||||
{
|
||||
if(Model.SelectedSupportConcept != null || Model.CostBearer2SupportConceptOid == -2)
|
||||
{
|
||||
<div class="container-fluid w-100 mt-3 p-0">
|
||||
@using(Html.BeginForm("LoadServiceRecords", "Main", FormMethod.Post, new { id = "selectServiceRecordForm" }))
|
||||
{
|
||||
<select name="Records" class="custom-select" onchange="showSpinner();this.form.submit();" id="timeFrameSelect">
|
||||
<option value="-1">Zeitraum wählen</option>
|
||||
<option value="7"
|
||||
@{if(Model.Zeitraum == 7) { @Html.Raw("selected") }}>
|
||||
Letzte 7 Tage
|
||||
</option>
|
||||
<option value="30"
|
||||
@{if(Model.Zeitraum == 30) { @Html.Raw("selected") }}>
|
||||
Letzte 30 Tage
|
||||
</option>
|
||||
<option value="90"
|
||||
@{if(Model.Zeitraum == 90) { @Html.Raw("selected") }}>
|
||||
Letzte 90 Tage
|
||||
</option>
|
||||
<option value="0"
|
||||
@{if(Model.Zeitraum == 0) { @Html.Raw("selected") }}>
|
||||
Alle
|
||||
</option>
|
||||
</select>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
|
||||
|
||||
<div class="container-fluid mt-3">
|
||||
@{
|
||||
foreach(var serviceRecord in Model.ServiceRecords)
|
||||
{
|
||||
if(serviceRecord.Start == null || serviceRecord.End == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var start = serviceRecord.Start.Value;
|
||||
var end = serviceRecord.End.Value;
|
||||
var hasSignatureStr = serviceRecord.SignatureOid.HasValue ? "JA" : "NEIN";
|
||||
|
||||
var duration = (end - start).TotalMinutes;
|
||||
var roundedDuration = MobileUtils.GetDecimalValueWithMaxDecimal(serviceRecord.RoundedDuration, 2);
|
||||
|
||||
if(serviceRecord.ServiceDescription.Category.Percentage > 0 && serviceRecord.ServiceDescription.Category.Percentage < 100)
|
||||
{
|
||||
roundedDuration = roundedDuration * serviceRecord.ServiceDescription.Category.Percentage / 100;
|
||||
}
|
||||
|
||||
var durationStr = serviceRecord.GroupOid.HasValue ? string.Format("{0:###0.#} ({0:###0.#})", roundedDuration) : $"{duration:###0.#} ({roundedDuration:###0.#})";
|
||||
|
||||
var goalsString = string.Empty;
|
||||
|
||||
if(serviceRecord.Goals != null && serviceRecord.Goals.Count > 0)
|
||||
{
|
||||
foreach(var goal in serviceRecord.Goals)
|
||||
{
|
||||
goalsString += goal.TypeDescription;
|
||||
|
||||
if(serviceRecord.Goals.IndexOf(goal) < serviceRecord.Goals.Count - 1)
|
||||
{
|
||||
goalsString += ", ";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var cardBackground = serviceRecord.GroupOid.HasValue ? "bg-bewo-group-booking" : string.Empty;
|
||||
|
||||
<div class="row mb-3">
|
||||
<div class="card w-100 @cardBackground">
|
||||
<div class="card-header" onclick="cardHeaderClick('#chevron-@serviceRecord.ServiceRecordOid', '#collapse-service-record-@serviceRecord.ServiceRecordOid')">
|
||||
<div class="d-inline-flex">
|
||||
<i class="fas fa-chevron-down h-100 text-primary" id="chevron-@serviceRecord.ServiceRecordOid"></i>
|
||||
</div>
|
||||
<div class="p2 d-inline-flex text-primary h-100">
|
||||
<button type="button" class="btn btn-link">
|
||||
@MainModel.GetServiceRecordTimeHeader(serviceRecord, true)
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="collapse-service-record-@serviceRecord.ServiceRecordOid" class="collapse">
|
||||
<div class="card-body">
|
||||
<div class="container">
|
||||
<div class="row mb-3">
|
||||
@if(Model.HasRightToEditServiceRecord(serviceRecord))
|
||||
{
|
||||
using(Html.BeginForm("SelectRecordToEdit", "Main", FormMethod.Post))
|
||||
{
|
||||
<div class="col-auto">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
<span class="fas fa-edit"></span>
|
||||
</button>
|
||||
<input type="hidden" name="service-record-oid-holder" value="@serviceRecord.ServiceRecordOid" />
|
||||
</div>
|
||||
}
|
||||
}
|
||||
|
||||
@if(MainModel.IsAllowedToDeleteServiceRecord(serviceRecord))
|
||||
{
|
||||
<div class="col-auto">
|
||||
<button type="button" class="btn btn-primary" onclick="deleteServiceRecord(@serviceRecord.ServiceRecordOid)">
|
||||
<span class="fas fa-trash-alt"></span>
|
||||
</button>
|
||||
</div>
|
||||
}
|
||||
|
||||
@if(Model.ShowSignature && !serviceRecord.SignatureOid.HasValue)
|
||||
{
|
||||
<div class="col-auto">
|
||||
<button type="button" class="btn btn-primary" onclick="initializeSignature(@serviceRecord.ServiceRecordOid)">
|
||||
<span class="fas fa-signature"></span>
|
||||
</button>
|
||||
</div>
|
||||
}
|
||||
else if(Model.ShowSignature && serviceRecord.SignatureOid.HasValue)
|
||||
{
|
||||
<div class="col-auto">
|
||||
<button type="submit" data-toggle="modal" class="btn btn-primary" onclick="getSignatureImage(@serviceRecord.ServiceRecordOid.Value, @serviceRecord.SignatureOid.Value)">
|
||||
<span class="fas fa-file-contract"></span>
|
||||
</button>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col text-secondary">
|
||||
Minuten (gerundet):
|
||||
</div>
|
||||
<div class="col text-info">
|
||||
@durationStr
|
||||
</div>
|
||||
</div>
|
||||
@if(Model.ShowDistanceField && serviceRecord.DistanceInMeter != null && serviceRecord.DistanceInMeter.Value > 0)
|
||||
{
|
||||
<div class="row">
|
||||
<div class="col text-secondary">
|
||||
Gefahrene Kilometer:
|
||||
</div>
|
||||
<div class="col">
|
||||
@serviceRecord.DistanceInMeter.ToString()
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if(serviceRecord.Goals != null && serviceRecord.Goals.Count > 0)
|
||||
{
|
||||
<div class="row">
|
||||
<div class="col text-secondary">
|
||||
Ziele:
|
||||
</div>
|
||||
<div class="col">
|
||||
@goalsString
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
<div class="row">
|
||||
<div class="col text-secondary">
|
||||
Leistungskategorie:
|
||||
</div>
|
||||
<div class="col">
|
||||
@serviceRecord.ServiceDescription.CategoryName
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col text-secondary">
|
||||
Leistung:
|
||||
</div>
|
||||
<div class="col">
|
||||
@serviceRecord.ServiceDescription.Name
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col text-secondary">
|
||||
Mitarbeiter:
|
||||
</div>
|
||||
<div class="col">
|
||||
@serviceRecord.Employee.ToString()
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col text-secondary">
|
||||
Angelegt am:
|
||||
</div>
|
||||
<div class="col">
|
||||
@serviceRecord.InsertedOn
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@{
|
||||
var header1 = "Dokumentation";
|
||||
if(Model.NumberOfDokuTypes >= 1)
|
||||
{
|
||||
header1 = Model.Dokutypes[0].TypeDescription;
|
||||
}
|
||||
|
||||
<div class="row">
|
||||
<div class="col text-secondary">
|
||||
@header1:
|
||||
</div>
|
||||
<div class="col">
|
||||
@serviceRecord.Notice
|
||||
</div>
|
||||
</div>
|
||||
|
||||
for(var i = 1; i < serviceRecord.NoticeList.Count; i++)
|
||||
{
|
||||
var notice = serviceRecord.NoticeList[i];
|
||||
|
||||
if(string.IsNullOrWhiteSpace(notice) || Model.NumberOfDokuTypes <= i)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var header = $"Dokumentation {i + 1}";
|
||||
|
||||
if(Model.NumberOfDokuTypes >= 2)
|
||||
{
|
||||
if(Model.NumberOfDokuTypes <= i)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
header = Model.Dokutypes[i].TypeDescription;
|
||||
}
|
||||
<div class="row">
|
||||
<div class="col text-secondary">
|
||||
@header:
|
||||
</div>
|
||||
<div class="col">
|
||||
@notice
|
||||
</div>
|
||||
</div>
|
||||
|
||||
}
|
||||
}
|
||||
<div class="row">
|
||||
<div class="col text-secondary">
|
||||
Unterschrieben:
|
||||
</div>
|
||||
<div class="col">
|
||||
@hasSignatureStr
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
<!-- /Liste mit den Einträgen und dem Auswahl-Select -->
|
||||
</div>
|
||||
@Html.Partial("SingleBookingPartial", Model)
|
||||
}
|
||||
</div>
|
||||
|
||||
<div class="container mb-3">
|
||||
@if(Model.IsInGroupBookingMode)
|
||||
{
|
||||
<div class="row">
|
||||
<div class="col col-12">
|
||||
@if(Model != null)
|
||||
{
|
||||
var submitButtonText = Model.IsInEditingMode ? "Speichern" : "Anlegen";
|
||||
|
||||
using(Html.BeginForm("CreateOrUpdateGroupBooking", "Main", FormMethod.Post, new { onreset = "serviceDescriptionSelectOnReset()", id = "groupBookingForm" }))
|
||||
{
|
||||
var startDate = Model.SelectedServiceRecord?.Start?.ToShortDateString() ?? DateTime.Today.ToShortDateString();
|
||||
var endDate = Model.SelectedServiceRecord?.End?.ToShortDateString() ?? DateTime.Today.ToShortDateString();
|
||||
|
||||
var startTime = Model.SelectedServiceRecord?.Start?.ToShortTimeString() ?? string.Empty;
|
||||
var endTime = Model.SelectedServiceRecord?.End?.ToShortTimeString() ?? string.Empty;
|
||||
|
||||
var duration = Model.SelectedServiceRecord?.GroupRoundedDuration?.ToString() ?? string.Empty;
|
||||
var distance = Model.SelectedServiceRecord?.DistanceInMeter?.ToString() ?? string.Empty;
|
||||
|
||||
var notice0 = Model.SelectedServiceRecord?.Notice ?? string.Empty;
|
||||
var noticeList = new string[] { string.Empty, string.Empty, string.Empty, string.Empty, string.Empty };
|
||||
|
||||
if(Model.SelectedServiceRecord?.NoticeList != null)
|
||||
{
|
||||
var selectedNoticeList = Model.SelectedServiceRecord.NoticeList;
|
||||
for(var i = 0; i < selectedNoticeList.Count; i++)
|
||||
{
|
||||
noticeList[i] = selectedNoticeList[i] ?? string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
<div class="mt-3">
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="alert alert-danger collapse" role="alert" id="form-alert">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Gruppenbuchung: Hilfepläne und Gruppen -->
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<button type="button" class="btn btn-primary btn-block" data-toggle="modal" data-target="#group-booking-popup" id="support-concepts-and-groups-button">Hilfepläne und Gruppen hinzufügen</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Gruppenbuchung: Hilfepläne hinzufügen -->
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-1">
|
||||
<div class="list-group" id="selected-cb2sc-list">
|
||||
@foreach(var selectedCb2ScRelation in Model.GroupBookingSelectionObject.SelectedRelations)
|
||||
{
|
||||
<div class="list-group-item" id="relation-item-@selectedCb2ScRelation.Value">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<span>
|
||||
@selectedCb2ScRelation.Text1
|
||||
<br />
|
||||
<span class="@selectedCb2ScRelation.TextColor">
|
||||
@selectedCb2ScRelation.Text2
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-auto my-auto">
|
||||
<button type="button" class="btn btn-primary" onclick="removeCb2ScRelation(@selectedCb2ScRelation.Value)">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Gruppenbuchung: Mitarbeiter hinzufügen -->
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<button type="button" class="btn btn-primary btn-block" data-toggle="modal" data-target="#group-booking-employee-selection-popup" id="employees-button">
|
||||
Mitarbeiter hinzufügen <span class="badge badge-light text-primary" id="selected-employees-count-badge">@Model.SelectedEmployees.Count</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Gruppenbuchung: Leistungskategorien -->
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
@Html.LabelFor(m => m.SelectedServiceCategoryOid)
|
||||
@Html.DropDownListFor(m => m.SelectedServiceCategoryOid, Model.ServiceCategoryListItems, new { onchange = "loadServiceDescriptions()", @class = "custom-select", Id = "category-select" })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Gruppenbuchung: Leistung -->
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="leistung-select">Leistung</label>
|
||||
<select class="custom-select" id="leistung-select" name="ServiceDescription" onchange="setServiceDescription('leistung-select')"></select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Gruppenbuchung: Datum -->
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="start-date">Startdatum</label>
|
||||
<div class="input-group date" id="start-date-picker" data-target-input="nearest">
|
||||
<input type="text" id="start-date" name="Datum" class="form-control datetimepicker-input" data-target="#start-date-picker" data-toggle="datetimepicker" value="@startDate" />
|
||||
<div class="input-group-append" data-target="#start-date-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-calendar-alt"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Gruppenbuchung: Enddatum -->
|
||||
@if(Model.IsEndDateVisible)
|
||||
{
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="start-date">Enddatum</label>
|
||||
<div class="input-group date" id="end-date-picker" data-target-input="nearest">
|
||||
<input type="text" id="end-date" name="Enddatum" class="form-control datetimepicker-input" data-target="#end-date-picker" data-toggle="datetimepicker" value="@endDate" />
|
||||
<div class="input-group-append" data-target="#end-date-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-calendar-alt"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
||||
<!-- Gruppenbuchung: Start- und Endzeit -->
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="start-time">Von</label>
|
||||
<div class="input-group date" id="start-time-picker" data-target-input="nearest">
|
||||
<input type="text" id="start-time" name="Start" class="form-control datetimepicker-input" data-target="#start-time-picker" value="@startTime" />
|
||||
<div class="input-group-append" data-target="#start-time-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-clock"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="end-time">Bis</label>
|
||||
<div class="input-group date" id="end-time-picker" data-target-input="nearest">
|
||||
<input type="text" id="end-time" name="Ende" class="form-control datetimepicker-input" data-target="#end-time-picker" value="@endTime" />
|
||||
<div class="input-group-append" data-target="#end-time-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-clock"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Gruppenbuchung: Dauer -->
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="duration">Dauer</label>
|
||||
<input type="text" class="form-control" id="duration" name="Dauer" onchange="onDurationChange()" value="@duration">
|
||||
</div>
|
||||
</div>
|
||||
@if(Model.IsZeiterfassungInStdMin)
|
||||
{
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="hours-minutes-dropdown-btn">Minuten/Stunden</label>
|
||||
<div class="dropdown">
|
||||
<button id="hours-minutes-dropdown-btn" class="btn btn-outline-primary dropdown-toggle w-100" type="button" data-toggle="dropdown">
|
||||
Minuten
|
||||
</button>
|
||||
<div class="dropdown-menu w-100">
|
||||
<a class="dropdown-item" href="#" onclick="toggleHoursMinutesDropdownButton(this)">Minuten</a>
|
||||
<a class="dropdown-item" href="#" onclick="toggleHoursMinutesDropdownButton(this)">Stunden</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
||||
<!-- Gruppenbuchung: Distanz -->
|
||||
@if(Model.ShowDistanceField)
|
||||
{
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="distance">Gefahrene Kilometer</label>
|
||||
<input type="text" class="form-control" id="distance" name="Distanz" onchange="validateDistanceInput()" value="@distance">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
<!-- Gruppenbuchung: Textbausteine -->
|
||||
@if(AbstractModel.HasRightToSeeTextModules)
|
||||
{
|
||||
<div class="form-row" id="textmodule-container">
|
||||
<div class="col-md">
|
||||
<button type="button" class="btn btn-primary form-control mt-3" data-toggle="modal" data-target="#textbausteine-popup" id="textbausteine-button">Textbausteine</button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
<!-- Gruppenbuchung: Dokufelder -->
|
||||
<div class="form-row">
|
||||
<div class="col-md mt-3">
|
||||
@if(Model.NumberOfDokuTypes == 0)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label for="dokufeld">Dokumentation</label>
|
||||
<textarea class="form-control" name="Dokumentation6" id="dokufeld">@notice0</textarea>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<ul class="nav nav-tabs" role="tab-list">
|
||||
@for(var i = 0; i < Model.Dokutypes.Length; i++)
|
||||
{
|
||||
var currentDokuType = Model.Dokutypes[i];
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="#doku_@i" id="doku_@i-tab" data-toggle="tab" role="tab" aria-controls="doku_@i" class="nav-link@(i == 0 ? " active" : string.Empty)" aria-selected="true">
|
||||
@currentDokuType.DisplayName
|
||||
</a>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
<div class="tab-content" id="dokufelderTab">
|
||||
@for(var i = 0; i < Model.Dokutypes.Length; i++)
|
||||
{
|
||||
var textareaName = i + 1 < 1 ? "Dokumentation" : "Dokumentation" + (i + 1);
|
||||
|
||||
<div class="tab-pane show@(i == 0 ? " active" : string.Empty)" id="doku_@i" role="tabpanel" aria-labelledby="doku_@i-tab">
|
||||
<textarea class="form-control doku-form-control" id="doku-textarea-@i" name="@textareaName">@noticeList[i]</textarea>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
<div class="d-flex bd-highlight mt-3">
|
||||
<div class="mr-auto bd-highlight">
|
||||
<!-- dient nur als Abstandshalter-->
|
||||
</div>
|
||||
<div class="ml-3 bd-highlight">
|
||||
@using(Html.BeginForm("ResetEditingMode", "Main", FormMethod.Post))
|
||||
{
|
||||
<button type="submit" class="btn btn-primary" onclick="showSpinner()">Abbrechen</button>
|
||||
}
|
||||
</div>
|
||||
<div class="ml-3 bd-highlight">
|
||||
<button type="button" class="btn btn-primary" id="create-button" onclick="submitGroupBookingForm()">@submitButtonText</button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
@Html.Partial("GroupBookingPartial", Model)
|
||||
}
|
||||
</div>
|
||||
|
||||
<!-- Textbausteine-Popup-->
|
||||
<div class="modal" tabindex="-1" role="dialog" id="textbausteine-popup">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h6 class="modal-title">Textbausteine</h6>
|
||||
@@ -1220,112 +392,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- (Gruppenbuchung) Hilfeplan- und Gruppenauswahl Popup -->
|
||||
<div class="modal" data-backdrop="static" tabindex="-1" role="dialog" id="group-booking-popup">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Gruppen und Hilfepläne für Gruppenbuchung</h5>
|
||||
<button type="button" class="close" data-dismiss="modal">
|
||||
<span>×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<nav class="nav nav-pills nav-fill">
|
||||
<a class="nav-item nav-link active" href="#group-booking-supportconcepts" data-toggle="tab" role="tab">Hilfepläne</a>
|
||||
<a class="nav-item nav-link" href="#group-booking-groups" data-toggle="tab" role="tab">Gruppen</a>
|
||||
</nav>
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane show active" role="tabpanel" id="group-booking-supportconcepts">
|
||||
<ul class="list-group">
|
||||
@foreach(var cb2Sc in Model.SupportConceptListObjectsForGroupBooking)
|
||||
{
|
||||
<li class="list-group-item">
|
||||
@{
|
||||
var timeSpanColorClass2 = cb2Sc.IsAboutToExpire ? "text-bewo-is-about-to-expire" : cb2Sc.ExpiresInThreeMonthsOrLess ? "text-bewo-expires-in-three-months" : "text-dark";
|
||||
|
||||
var wasSuccessful = long.TryParse(cb2Sc.CostBearer2SupportConceptOid, out var cb2ScOid);
|
||||
|
||||
var checkedValue = wasSuccessful ? Model.SelectedConceptCostBearerRelations.Any(a => a.CostBearer2SupportConceptOid.Equals(cb2ScOid)) : wasSuccessful;
|
||||
}
|
||||
|
||||
<div class="custom-control custom-checkbox custom-control-inline">
|
||||
<input type="checkbox"
|
||||
@{ if(checkedValue) { @Html.Raw("checked=\"checked\"") ; } }
|
||||
class="custom-control-input" id="cb2sc-checkbox-@cb2Sc.CostBearer2SupportConceptOid" onchange="addCostBearer2SupportConceptsToGroupBooking()" name="cb2sc-checkbox-@cb2Sc.CostBearer2SupportConceptOid" value="@cb2Sc.CostBearer2SupportConceptOid">
|
||||
<label for="cb2sc-checkbox-@cb2Sc.CostBearer2SupportConceptOid" class="custom-control-label">
|
||||
<span class="justify-content-between mb-1 text-dark text-left">
|
||||
@cb2Sc.NameAndDateOfBirth
|
||||
</span>
|
||||
<br />
|
||||
<span class="mb-1 text-left @timeSpanColorClass2">
|
||||
@cb2Sc.SupportConceptTimeSpan
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tab-pane show" role="tabpanel" id="group-booking-groups">
|
||||
<ul class="list-group">
|
||||
@foreach(var group in Model.GroupOfPeopleListItems)
|
||||
{
|
||||
<li class="list-group-item">
|
||||
@{
|
||||
long groupOid;
|
||||
var wasSuccessful = long.TryParse(group.Value, out groupOid);
|
||||
|
||||
var shouldBeChecked = wasSuccessful ? Model.SelectedGroupOfPeopleOids.Contains(groupOid) : wasSuccessful;
|
||||
|
||||
var attribute = shouldBeChecked ? "checked=\"checked\"" : string.Empty;
|
||||
}
|
||||
<div class="custom-control custom-checkbox custom-control-inline">
|
||||
<input type="checkbox" @attribute class="custom-control-input" id="group-checkbox-@group.Value" value="@group.Value" onchange="addCostBearer2SupportConceptsToGroupBooking()" />
|
||||
<label for="group-checkbox-@group.Value" class="custom-control-label">
|
||||
@group.Text
|
||||
</label>
|
||||
</div>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- (Gruppenbuchung) Mitarbeiterauswahl Popup -->
|
||||
<div class="modal" tabindex="-1" role="dialog" id="group-booking-employee-selection-popup">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Mitarbeiter hinzufügen</h5>
|
||||
<button type="button" class="close" data-dismiss="modal">
|
||||
<span>×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<ul class="list-group" id="employee-list">
|
||||
@foreach(var employee in Model.Employees)
|
||||
{
|
||||
<li class="list-group-item">
|
||||
@{
|
||||
var checkedValue = Model.SelectedEmployees.Contains(employee) ? "checked=\"checked\"" : string.Empty;
|
||||
}
|
||||
|
||||
<div class="custom-control custom-checkbox custom-control-inline">
|
||||
<input type="checkbox" @checkedValue class="custom-control-input" id="group-employee-@employee.EmployeeOid" onchange="addEmployeeToGroupBooking()" value="@employee.EmployeeOid" />
|
||||
<label for="group-employee-@employee.EmployeeOid" class="custom-control-label">@employee.DetailDescription</label>
|
||||
</div>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Unterschriften-Layover -->
|
||||
<div class="container-fluid d-none mb-3" id="signature-container">
|
||||
@@ -1404,7 +471,7 @@
|
||||
|
||||
<!-- Statistik-Popup -->
|
||||
<div id="statistics-popup" class="modal" tabindex="-1" role="dialog">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h6 class="modal-title" id="statistics-header"></h6>
|
||||
|
||||
563
BeWoPlanerMobil/Views/Main/SingleBookingPartial.cshtml
Normal file
563
BeWoPlanerMobil/Views/Main/SingleBookingPartial.cshtml
Normal file
@@ -0,0 +1,563 @@
|
||||
@using BeWoPlanerMobil.Models
|
||||
@using BeWoPlanerMobil.Util
|
||||
@model MainModel
|
||||
|
||||
<div class="row">
|
||||
<!-- Einzelbuchungsformular -->
|
||||
<div class="col col-12 col-md-5">
|
||||
@if (Model != null)
|
||||
{
|
||||
using (Html.BeginForm("SelectSupportConcept", "Main", FormMethod.Post, new { Id = "selectSupportConceptForm" }))
|
||||
{
|
||||
var selectedSuportConceptTimeSpanColorClass = Model.SelectedSupportConceptListObject.IsAboutToExpire ? "text-bewo-is-about-to-expire" : Model.SelectedSupportConceptListObject.ExpiresInThreeMonthsOrLess ? "text-bewo-expires-in-three-months" : "text-dark";
|
||||
<div>
|
||||
<div class="container p-0">
|
||||
<div class="row">
|
||||
<div class="col mt-3">
|
||||
<div class="list-group">
|
||||
<a href="#" class="list-group-item flex-column align-items-start no-underline" data-toggle="modal" data-target="#supportConceptList">
|
||||
<div class="d-flex">
|
||||
<h5 class="mb-1 text-dark text-left" id="selectedSupportConceptCustomerInfo">@Model.SelectedSupportConceptListObject.NameAndDateOfBirth</h5>
|
||||
</div>
|
||||
<p class="mb-1 text-left @selectedSuportConceptTimeSpanColorClass" id="selectedSupportConceptInfo">
|
||||
@Model.SelectedSupportConceptListObject.SupportConceptTimeSpan
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@if (Model.CostBearer2SupportConceptOid != null && Model.CostBearer2SupportConceptOid > 0)
|
||||
{
|
||||
<div class="col-md-auto mt-3">
|
||||
<button type="button" class="btn btn-outline-primary w-100 h-100" id="statistics-button" data-toggle="modal" data-target="#statistics-popup" onclick="showPieChart()">
|
||||
<span class="d-md-none align-middle">Statistik</span>
|
||||
<span class="fas fa-chart-pie align-middle" style="font-size: 2rem;"></span>
|
||||
</button>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Hilfeplanauswahlpopup modal-dialog-centered-->
|
||||
<div class="modal" role="dialog" tabindex="-1" id="supportConceptList">
|
||||
<div class="modal-dialog text-center" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Hilfeplanauswahl</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" onclick="resetSupportConceptSearch()">
|
||||
<span>×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- Hilfeplansuche -->
|
||||
<div class="input-group mb-3">
|
||||
<input class="form-control w-100" type="text" placeholder="Suchen..." oninput="supportConceptSearchOnChange()" id="support-concept-search-input" />
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-outline-secondary" type="button" onclick="resetSupportConceptSearch()">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
<!-- Hilfeplanliste -->
|
||||
<div class="list-group">
|
||||
@foreach (var supportConceptListObject in Model.SupportConceptListObjects)
|
||||
{
|
||||
var timeSpanColorClass = supportConceptListObject.IsAboutToExpire ? "text-bewo-is-about-to-expire" : supportConceptListObject.ExpiresInThreeMonthsOrLess ? "text-bewo-expires-in-three-months" : "text-dark";
|
||||
|
||||
<a href="#" class="list-group-item flex-column align-items-start no-underline blubb-test" onclick="selectSupportConcept(@supportConceptListObject.CostBearer2SupportConceptOid)" data-dismiss="modal">
|
||||
<div class="justify-content-between">
|
||||
<h5 class="mb-1 text-dark text-left supportconcept-name-header">
|
||||
@supportConceptListObject.NameAndDateOfBirth
|
||||
</h5>
|
||||
</div>
|
||||
<p class="mb-1 text-left @timeSpanColorClass">
|
||||
@supportConceptListObject.SupportConceptTimeSpan
|
||||
</p>
|
||||
</a>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /Hilfeplanauswahlpopup -->
|
||||
|
||||
<input type="text" class="d-none" name="CostBearer2SupportConceptOid" id="CostBearer2SupportConceptOid" value="@Model.SelectedSupportConceptListObject.CostBearer2SupportConceptOid">
|
||||
}
|
||||
|
||||
using (Html.BeginForm("CreateOrUpdateServiceRecord", "Main", FormMethod.Post, new { onreset = "serviceDescriptionSelectOnReset()", id = "singleBookingForm" }))
|
||||
{
|
||||
<div class="mt-3">
|
||||
<!-- Einzelbuchung: Mitarbeiter -->
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
@Html.LabelFor(m => m.SelectedEmployeeOid)
|
||||
@Html.DropDownListFor(m => m.SelectedEmployeeOid, Model.EmployeeListItems, new { id = "employeesDropDown", @class = "custom-select", onchange = "setSelectedEmployee()" })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@if (Model.SelectedSupportConcept != null && Model.SelectedSupportConcept.Goals.Any())
|
||||
{
|
||||
<!-- Einzelbuchung: Ziele -->
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<button type="button" class="btn btn-primary form-control my-3" data-toggle="collapse" data-target="#goals-container" id="goals-button">Ziele</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="collapse w-100 mt-1 max-vw-50" id="goals-container"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
}
|
||||
|
||||
<!-- Einzelbuchung: Leistungskategorie -->
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
@Html.LabelFor(m => m.SelectedServiceCategoryOid)
|
||||
@Html.DropDownListFor(m => m.SelectedServiceCategoryOid, Model.ServiceCategoryListItems, new { onchange = "loadServiceDescriptions()", @class = "custom-select", Id = "category-select" })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Einzelbuchung: Leistung -->
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="leistung-select">Leistung</label>
|
||||
<select class="custom-select" id="leistung-select" name="ServiceDescription" onchange="setServiceDescription('leistung-select')">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Einzelbuchung: Startdatum -->
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="start-date">Startdatum</label>
|
||||
<div class="input-group date" id="start-date-picker" data-target-input="nearest">
|
||||
<input type="text" id="start-date" name="Datum" class="form-control datetimepicker-input" data-target="#start-date-picker" data-toggle="datetimepicker" value="@Model.StartDateToEdit" />
|
||||
<div class="input-group-append" data-target="#start-date-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text">
|
||||
<i class="fas fa-calendar-alt"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Einzelbuchung: Enddatum -->
|
||||
@if (Model.IsEndDateVisible)
|
||||
{
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="start-date">Enddatum</label>
|
||||
<div class="input-group date" id="end-date-picker" data-target-input="nearest">
|
||||
<input type="text" id="end-date" name="Enddatum" class="form-control datetimepicker-input" data-target="#end-date-picker" data-toggle="datetimepicker" value="@Model.EndDateToEdit" />
|
||||
<div class="input-group-append" data-target="#end-date-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-calendar-alt"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<!-- Einzelbuchung: Von -->
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="start-time">Von</label>
|
||||
<div class="input-group date" id="start-time-picker" data-target-input="nearest">
|
||||
<input type="text" id="start-time" name="Start" class="form-control datetimepicker-input" data-target="#start-time-picker" value="@Model.StartTimeToEdit" />
|
||||
<div class="input-group-append" data-target="#start-time-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-clock"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Einzelbuchung: Bis -->
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="end-time">Bis</label>
|
||||
<div class="input-group date" id="end-time-picker" data-target-input="nearest">
|
||||
<input type="text" id="end-time" name="Ende" class="form-control datetimepicker-input" data-target="#end-time-picker" value="@Model.EndTimeToEdit" />
|
||||
<div class="input-group-append" data-target="#end-time-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-clock"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Einzelbuchung: Dauer -->
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="duration">Dauer</label>
|
||||
<input type="text" class="form-control" id="duration" name="Dauer" onchange="onDurationChange()" value="@Model.DurationToEdit">
|
||||
</div>
|
||||
</div>
|
||||
@if (Model.IsZeiterfassungInStdMin)
|
||||
{
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="hours-minutes-dropdown-btn">Minuten/Stunden</label>
|
||||
<div class="dropdown">
|
||||
<button id="hours-minutes-dropdown-btn" class="btn btn-outline-primary dropdown-toggle w-100" type="button" data-toggle="dropdown">
|
||||
Minuten
|
||||
</button>
|
||||
<div class="dropdown-menu w-100">
|
||||
<a class="dropdown-item" href="#" onclick="toggleHoursMinutesDropdownButton(this)">Minuten</a>
|
||||
<a class="dropdown-item" href="#" onclick="toggleHoursMinutesDropdownButton(this)">Stunden</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
<!-- Einzelbuchung: Distanz -->
|
||||
@if (Model.ShowDistanceField)
|
||||
{
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="distance">Gefahrene Kilometer</label>
|
||||
<input class="form-control" id="distance" name="Distanz" onchange="validateDistanceInput()" value="@Model.DistanceToEdit">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (AbstractModel.HasRightToSeeTextModules)
|
||||
{
|
||||
<!-- Einzelbuchung: Textbausteine -->
|
||||
<div class="form-row" id="textmodule-container">
|
||||
<div class="col-md">
|
||||
<button type="button" class="btn btn-primary form-control mt-3" data-toggle="modal" data-target="#textbausteine-popup" id="textbausteine-button">Textbausteine</button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
<div class="form-row">
|
||||
<div class="col-md mt-3">
|
||||
@if (Model.NumberOfDokuTypes == 0)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label for="dokufeld">Dokumentation</label>
|
||||
<textarea class="form-control" name="Dokumentation6" id="dokufeld">@Model.NoticeToEdit</textarea>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<ul class="nav nav-tabs" role="tab-list">
|
||||
@for (var i = 0; i < Model.Dokutypes.Length; i++)
|
||||
{
|
||||
var currentDokuType = Model.Dokutypes[i];
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="#doku_@i" id="doku_@i-tab" data-toggle="tab" role="tab" aria-controls="doku_@i" class="nav-link@(i == 0 ? " active" : string.Empty)" aria-selected="true">
|
||||
@currentDokuType.DisplayName
|
||||
</a>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
<div class="tab-content" id="dokufelderTab">
|
||||
@for (var i = 0; i < Model.Dokutypes.Length; i++)
|
||||
{
|
||||
var textareaName = i + 1 < 1 ? "Dokumentation" : "Dokumentation" + (i + 1);
|
||||
|
||||
<div class="tab-pane show@(i == 0 ? " active" : string.Empty)" id="doku_@i" role="tabpanel" aria-labelledby="doku_@i-tab">
|
||||
<textarea class="form-control doku-form-control" id="doku-textarea-@i" name="@textareaName">@Model.NoticeListToEdit[i]</textarea>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="d-flex bd-highlight mt-3">
|
||||
<div class="mr-auto bd-highlight">
|
||||
|
||||
</div>
|
||||
@if (Model.IsInEditingMode)
|
||||
{
|
||||
using (Html.BeginForm("ResetEditingMode", "Main", FormMethod.Post))
|
||||
{
|
||||
<button type="submit" class="btn btn-primary" onclick="showSpinner()">Abbrechen</button>
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="ml-3 bd-highlight">
|
||||
<button type="button" class="btn btn-primary" id="reset-button" onclick="resetSingleBookingForm()">Abbrechen</button>
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="ml-3 bd-highlight">
|
||||
<button type="button" class="btn btn-primary" id="create-button" onclick="submitSingleBookingForm()">@Model.SubmitButtonValue</button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
<!-- /Einzelbuchungsformular -->
|
||||
<!-- Liste mit den Einträgen und dem Auswahl-Select -->
|
||||
<div class="col col-12 col-md-7">
|
||||
@if (Model != null)
|
||||
{
|
||||
if (Model.SelectedSupportConcept != null || Model.CostBearer2SupportConceptOid == -2)
|
||||
{
|
||||
<div class="container-fluid w-100 mt-3 p-0">
|
||||
@using (Html.BeginForm("LoadServiceRecords", "Main", FormMethod.Post, new { id = "selectServiceRecordForm" }))
|
||||
{
|
||||
<select name="Records" class="custom-select" onchange="showSpinner();this.form.submit();" id="timeFrameSelect">
|
||||
<option value="-1">Zeitraum wählen</option>
|
||||
<option value="7"
|
||||
@{if (Model.Zeitraum == 7) { @Html.Raw("selected") }}>
|
||||
Letzte 7 Tage
|
||||
</option>
|
||||
<option value="30"
|
||||
@{if (Model.Zeitraum == 30) { @Html.Raw("selected") }}>
|
||||
Letzte 30 Tage
|
||||
</option>
|
||||
<option value="90"
|
||||
@{if (Model.Zeitraum == 90) { @Html.Raw("selected") }}>
|
||||
Letzte 90 Tage
|
||||
</option>
|
||||
<option value="0"
|
||||
@{if (Model.Zeitraum == 0) { @Html.Raw("selected") }}>
|
||||
Alle
|
||||
</option>
|
||||
</select>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
|
||||
|
||||
<div class="container-fluid mt-3">
|
||||
@{
|
||||
foreach (var serviceRecord in Model.ServiceRecords)
|
||||
{
|
||||
if (serviceRecord.Start == null || serviceRecord.End == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var start = serviceRecord.Start.Value;
|
||||
var end = serviceRecord.End.Value;
|
||||
var hasSignatureStr = serviceRecord.SignatureOid.HasValue ? "JA" : "NEIN";
|
||||
|
||||
var duration = (end - start).TotalMinutes;
|
||||
var roundedDuration = MobileUtils.GetDecimalValueWithMaxDecimal(serviceRecord.RoundedDuration, 2);
|
||||
|
||||
if (serviceRecord.ServiceDescription.Category.Percentage > 0 && serviceRecord.ServiceDescription.Category.Percentage < 100)
|
||||
{
|
||||
roundedDuration = roundedDuration * serviceRecord.ServiceDescription.Category.Percentage / 100;
|
||||
}
|
||||
|
||||
var durationStr = serviceRecord.GroupOid.HasValue ? string.Format("{0:###0.#} ({0:###0.#})", roundedDuration) : $"{duration:###0.#} ({roundedDuration:###0.#})";
|
||||
|
||||
var goalsString = string.Empty;
|
||||
|
||||
if (serviceRecord.Goals != null && serviceRecord.Goals.Count > 0)
|
||||
{
|
||||
foreach (var goal in serviceRecord.Goals)
|
||||
{
|
||||
goalsString += goal.TypeDescription;
|
||||
|
||||
if (serviceRecord.Goals.IndexOf(goal) < serviceRecord.Goals.Count - 1)
|
||||
{
|
||||
goalsString += ", ";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var cardBackground = serviceRecord.GroupOid.HasValue ? "bg-bewo-group-booking" : string.Empty;
|
||||
|
||||
<div class="row mb-3">
|
||||
<div class="card w-100 @cardBackground">
|
||||
<div class="card-header" onclick="cardHeaderClick('#chevron-@serviceRecord.ServiceRecordOid', '#collapse-service-record-@serviceRecord.ServiceRecordOid')">
|
||||
<div class="d-inline-flex">
|
||||
<i class="fas fa-chevron-down h-100 text-primary" id="chevron-@serviceRecord.ServiceRecordOid"></i>
|
||||
</div>
|
||||
<div class="p2 d-inline-flex text-primary h-100">
|
||||
<button type="button" class="btn btn-link">
|
||||
@MainModel.GetServiceRecordTimeHeader(serviceRecord, true)
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="collapse-service-record-@serviceRecord.ServiceRecordOid" class="collapse">
|
||||
<div class="card-body">
|
||||
<div class="container">
|
||||
<div class="row mb-3">
|
||||
@if (Model.HasRightToEditServiceRecord(serviceRecord))
|
||||
{
|
||||
using (Html.BeginForm("SelectRecordToEdit", "Main", FormMethod.Post))
|
||||
{
|
||||
<div class="col-auto">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
<span class="fas fa-edit"></span>
|
||||
</button>
|
||||
<input type="hidden" name="service-record-oid-holder" value="@serviceRecord.ServiceRecordOid" />
|
||||
</div>
|
||||
}
|
||||
}
|
||||
|
||||
@if (MainModel.IsAllowedToDeleteServiceRecord(serviceRecord))
|
||||
{
|
||||
<div class="col-auto">
|
||||
<button type="button" class="btn btn-primary" onclick="deleteServiceRecord(@serviceRecord.ServiceRecordOid)">
|
||||
<span class="fas fa-trash-alt"></span>
|
||||
</button>
|
||||
</div>
|
||||
}
|
||||
|
||||
@if (Model.ShowSignature && !serviceRecord.SignatureOid.HasValue)
|
||||
{
|
||||
<div class="col-auto">
|
||||
<button type="button" class="btn btn-primary" onclick="initializeSignature(@serviceRecord.ServiceRecordOid)">
|
||||
<span class="fas fa-signature"></span>
|
||||
</button>
|
||||
</div>
|
||||
}
|
||||
else if (Model.ShowSignature && serviceRecord.SignatureOid.HasValue)
|
||||
{
|
||||
<div class="col-auto">
|
||||
<button type="submit" data-toggle="modal" class="btn btn-primary" onclick="getSignatureImage(@serviceRecord.ServiceRecordOid.Value, @serviceRecord.SignatureOid.Value)">
|
||||
<span class="fas fa-file-contract"></span>
|
||||
</button>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col text-secondary">
|
||||
Minuten (gerundet):
|
||||
</div>
|
||||
<div class="col text-info">
|
||||
@durationStr
|
||||
</div>
|
||||
</div>
|
||||
@if (Model.ShowDistanceField && serviceRecord.DistanceInMeter != null && serviceRecord.DistanceInMeter.Value > 0)
|
||||
{
|
||||
<div class="row">
|
||||
<div class="col text-secondary">
|
||||
Gefahrene Kilometer:
|
||||
</div>
|
||||
<div class="col">
|
||||
@serviceRecord.DistanceInMeter.ToString()
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (serviceRecord.Goals != null && serviceRecord.Goals.Count > 0)
|
||||
{
|
||||
<div class="row">
|
||||
<div class="col text-secondary">
|
||||
Ziele:
|
||||
</div>
|
||||
<div class="col">
|
||||
@goalsString
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
<div class="row">
|
||||
<div class="col text-secondary">
|
||||
Leistungskategorie:
|
||||
</div>
|
||||
<div class="col">
|
||||
@serviceRecord.ServiceDescription.CategoryName
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col text-secondary">
|
||||
Leistung:
|
||||
</div>
|
||||
<div class="col">
|
||||
@serviceRecord.ServiceDescription.Name
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col text-secondary">
|
||||
Mitarbeiter:
|
||||
</div>
|
||||
<div class="col">
|
||||
@serviceRecord.Employee.ToString()
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col text-secondary">
|
||||
Angelegt am:
|
||||
</div>
|
||||
<div class="col">
|
||||
@serviceRecord.InsertedOn
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@{
|
||||
var header1 = "Dokumentation";
|
||||
if (Model.NumberOfDokuTypes >= 1)
|
||||
{
|
||||
header1 = Model.Dokutypes[0].TypeDescription;
|
||||
}
|
||||
|
||||
<div class="row">
|
||||
<div class="col text-secondary">
|
||||
@header1:
|
||||
</div>
|
||||
<div class="col">
|
||||
@serviceRecord.Notice
|
||||
</div>
|
||||
</div>
|
||||
|
||||
for (var i = 1; i < serviceRecord.NoticeList.Count; i++)
|
||||
{
|
||||
var notice = serviceRecord.NoticeList[i];
|
||||
|
||||
if (string.IsNullOrWhiteSpace(notice) || Model.NumberOfDokuTypes <= i)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var header = $"Dokumentation {i + 1}";
|
||||
|
||||
if (Model.NumberOfDokuTypes >= 2)
|
||||
{
|
||||
if (Model.NumberOfDokuTypes <= i)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
header = Model.Dokutypes[i].TypeDescription;
|
||||
}
|
||||
<div class="row">
|
||||
<div class="col text-secondary">
|
||||
@header:
|
||||
</div>
|
||||
<div class="col">
|
||||
@notice
|
||||
</div>
|
||||
</div>
|
||||
|
||||
}
|
||||
}
|
||||
<div class="row">
|
||||
<div class="col text-secondary">
|
||||
Unterschrieben:
|
||||
</div>
|
||||
<div class="col">
|
||||
@hasSignatureStr
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
<!-- /Liste mit den Einträgen und dem Auswahl-Select -->
|
||||
</div>
|
||||
@@ -187,8 +187,6 @@
|
||||
customerSignatureOidsString += signatureOid + ",";
|
||||
}
|
||||
|
||||
customerSignatureOidsString = customerSignatureOidsString.TrimEnd(',');
|
||||
|
||||
var employeeSignatureOidsString = "";
|
||||
|
||||
foreach(var employeeSignatureOid in result.EmployeeSignatureOids)
|
||||
@@ -196,8 +194,6 @@
|
||||
employeeSignatureOidsString += employeeSignatureOid + ",";
|
||||
}
|
||||
|
||||
employeeSignatureOidsString = employeeSignatureOidsString.TrimEnd(',');
|
||||
|
||||
var employeeSignatureState = result.EmployeeSignatureState;
|
||||
var customerSignatureState = result.CustomerSignatureState;
|
||||
|
||||
|
||||
386
BeWoPlanerMobil/Views/Scheduler/AppointmentFormPartial.cshtml
Normal file
386
BeWoPlanerMobil/Views/Scheduler/AppointmentFormPartial.cshtml
Normal file
@@ -0,0 +1,386 @@
|
||||
@using BeWoPlanerMobil.Models
|
||||
@model SchedulerModel
|
||||
<script>
|
||||
function alldayChange() {
|
||||
try {
|
||||
if ($("#IsAllDay").prop("checked")) {
|
||||
$("#scheduler-start-time, #scheduler-end-time").attr("disabled", true);
|
||||
} else {
|
||||
$("#scheduler-start-time, #scheduler-end-time").attr("disabled", false);
|
||||
}
|
||||
} catch(error) {
|
||||
logError(error.message);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@using (Html.BeginForm("InsertOrUpdateAppointment", "Scheduler", FormMethod.Post, new { id = "insert-appointment-form" }))
|
||||
{
|
||||
<div class="mt-3">
|
||||
<div class="form-row">
|
||||
<div class="col-12">
|
||||
<div class="form-group mb-1">
|
||||
<label for="scheduler-start-date">Start</label>
|
||||
<div class="input-group date" id="scheduler-start-date-picker" data-target-input="nearest">
|
||||
<input type="text" id="scheduler-start-date" name="StartDate" class="form-control datetimepicker-input" data-target="#scheduler-start-date-picker" data-toggle="datetimepicker" value="@Model.StartDateToEdit" />
|
||||
<div class="input-group-append" data-target="#scheduler-start-date-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-calendar-alt"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group mb-1">
|
||||
<label for="scheduler-start-time">Von</label>
|
||||
<div class="input-group date" id="scheduler-start-time-picker" data-target-input="nearest">
|
||||
<input type="text" id="scheduler-start-time" name="StartTime" class="form-control datetimepicker-input" data-target="#scheduler-start-time-picker" value="@Model.StartTimeToEdit" />
|
||||
<div class="input-group-append" data-target="#scheduler-start-time-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-clock"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-12">
|
||||
<div class="form-group mb-1">
|
||||
<label for="scheduler-end-date">Ende</label>
|
||||
<div class="input-group date" id="scheduler-end-date-picker" data-target-input="nearest">
|
||||
<input type="text" id="scheduler-end-date" name="EndDate" class="form-control datetimepicker-input" data-target="#scheduler-end-date-picker" data-toggle="datetimepicker" value="@Model.EndDateToEdit" />
|
||||
<div class="input-group-append" data-target="#scheduler-end-date-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-calendar-alt"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group mb-1">
|
||||
<label for="scheduler-end-time">Bis</label>
|
||||
<div class="input-group date" id="scheduler-end-time-picker" data-target-input="nearest">
|
||||
<input type="text" id="scheduler-end-time" name="EndTime" class="form-control datetimepicker-input" data-target="#scheduler-end-time-picker" value="@Model.EndTimeToEdit" />
|
||||
<div class="input-group-append" data-target="#scheduler-end-time-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-clock"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-6 mx-auto">
|
||||
<div class="custom-control custom-checkbox custom-control-inline mx-auto">
|
||||
@Html.CheckBoxFor(m => m.IsPrivate, new { @class = "custom-control-input" })
|
||||
@Html.LabelFor(m => m.IsPrivate, new { @class="custom-control-label" })
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 mx-auto">
|
||||
<div class="custom-control custom-checkbox custom-control-inline mx-auto">
|
||||
@Html.CheckBoxFor(m => m.IsAllDay, new { @class = "custom-control-input", onchange = "alldayChange()" })
|
||||
@Html.LabelFor(m => m.IsAllDay, new { @class = "custom-control-label" })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (Model.HasResourcesEmployeesOrCustomers)
|
||||
{
|
||||
<div class="form-row">
|
||||
@if (AbstractModel.HasRightToInsertEmployeeAppointments)
|
||||
{
|
||||
<div class="col-md">
|
||||
<div class="form-group my-1">
|
||||
<button type="button" class="btn btn-primary w-100" data-toggle="modal" data-target="#employees-popup">Mitarbeiter<br />hinzufügen</button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (AbstractModel.HasRightToInsertCustomerAppointments)
|
||||
{
|
||||
<div class="col-md">
|
||||
<div class="form-group my-1">
|
||||
<button type="button" class="btn btn-primary w-100" data-toggle="modal" data-target="#customers-popup">Klienten<br />hinzufügen</button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (AbstractModel.HasRightToInsertRessourceAppointments && Model.ResourceCategories2Resources.Any())
|
||||
{
|
||||
<div class="col-md">
|
||||
<div class="form-group my-1">
|
||||
<button type="button" class="btn btn-primary w-100" data-toggle="modal" data-target="#resources-popup">Ressourcen<br />hinzufügen</button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
@if (AbstractModel.HasRightToInsertEmployeeAppointments)
|
||||
{
|
||||
<div class="col-12">
|
||||
<div class="form-group my-1">
|
||||
<div class="list-group" id="selected-employees-list">
|
||||
@foreach (var selectedEmployee in Model.SelectedEmployees)
|
||||
{
|
||||
<div class="list-group-item my-auto" id="related-employee-@selectedEmployee.EmployeeOid">
|
||||
<div class="row">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<i class="fas fa-user text-bewo-employee h-100"></i>
|
||||
</div>
|
||||
<p class="form-control border-0 bg-transparent text-truncate">
|
||||
@selectedEmployee.DetailDescription
|
||||
</p>
|
||||
<div class="input-group-append">
|
||||
<button type="button" class="btn btn-primary" onclick="removeSelectedItem(@selectedEmployee.EmployeeOid, '-checkbox', false, '@Url.Action("SelectEmployeesForAppointment", "Scheduler")', 'employees-popup', 'selected-employees-list', 'related-employee-')">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (AbstractModel.HasRightToInsertCustomerAppointments)
|
||||
{
|
||||
<div class="col-12">
|
||||
<div class="form-group my-1">
|
||||
<div class="list-group" id="selected-customers-list">
|
||||
@foreach (var selectedCustomer in Model.SelectedCustomers)
|
||||
{
|
||||
<div class="list-group-item my-auto" id="related-customer-@selectedCustomer.CustomerOid">
|
||||
<div class="row">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<i class="fas fa-user text-bewo-customers h-100"></i>
|
||||
</div>
|
||||
<p class="form-control border-0 bg-transparent text-truncate">
|
||||
@selectedCustomer.DetailDescription
|
||||
</p>
|
||||
<div class="input-group-append">
|
||||
@{
|
||||
var url = Url.Action("SelectCustomersForAppointment", "Scheduler");
|
||||
var oid = selectedCustomer.CustomerOid;
|
||||
|
||||
var onClickParams = $"{oid}, '-checkbox', true, '{url}', 'customers-popup', 'selected-customers-list', 'related-customer-'";
|
||||
}
|
||||
|
||||
<button type="button" class="btn btn-primary" onclick="removeSelectedItem(@onClickParams)">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (AbstractModel.HasRightToInsertRessourceAppointments && Model.ResourceCategories2Resources.Any())
|
||||
{
|
||||
<div class="col-12">
|
||||
<div class="form-group my-1">
|
||||
<div class="list-group" id="selected-resources-list">
|
||||
@foreach (var selectedResource in Model.SelectedResources)
|
||||
{
|
||||
<div class="list-group-item my-auto" id="relation-item-@selectedResource.ResourceOid">
|
||||
<div class="row">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<i class="fas fa-cubes text-bewo-resource h-100"></i>
|
||||
</div>
|
||||
<p class="form-control border-0 bg-transparent text-truncate">
|
||||
@selectedResource.Name
|
||||
</p>
|
||||
<div class="input-group-append">
|
||||
<button type="button" class="btn btn-primary" onclick="removeSelectedResource('relation-item-@selectedResource.ResourceOid', 'resource-@selectedResource.ResourceOid-checkbox', 'resources-popup', '@Url.Action("SelectResourcesForAppointment", "Scheduler")', 'selected-resources-list')">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="subject">Betreff</label>
|
||||
<input type="text" id="subject" name="Subject" class="form-control" value="@Model.SubjectToEdit" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="location">Ort</label>
|
||||
<input type="text" id="location" name="Location" class="form-control" value="@Model.LocationToEdit" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="notice">Notiz</label>
|
||||
<textarea class="form-control" id="notice" name="Notice">@Model.DescriptionToEdit</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="d-flex bd-highlight mt-3">
|
||||
<div class="mr-auto bd-highlight">
|
||||
<!-- Abstandshalter -->
|
||||
</div>
|
||||
<div class="ml-3 bd-highlight">
|
||||
<button type="button" class="btn btn-primary" id="reset-button" onclick="resetInsertAppointmentForm()">Abbrechen</button>
|
||||
</div>
|
||||
<div class="ml-3 bd-highlight">
|
||||
<button type="button" class="btn btn-primary" id="create-button" onclick="submitInsertAppointmentForm()">Speichern</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (AbstractModel.HasRightToInsertRessourceAppointments && Model.ResourceCategories2Resources.Any())
|
||||
{
|
||||
<div class="modal" tabindex="-1" role="dialog" id="resources-popup">
|
||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h6 class="modal-title text-center w-100">Ressourcen</h6>
|
||||
<button type="button" class="close" data-dismiss="modal" onclick="resetResourceSearch('resource-search-input')">
|
||||
<span>×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="container-fluid">
|
||||
<div class="input-group mb-3">
|
||||
<input class="form-control w-100" type="text" placeholder="Suchen..." oninput="resourceSearchOnChange('resource-search-input')" id="resource-search-input" />
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-outline-secondary" type="button" onclick="resetResourceSearch('resource-search-input')">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@foreach (var category2Resources in Model.ResourceCategories2Resources)
|
||||
{
|
||||
<div class="card w-100 mb-3 category-card" id="resource-category-@category2Resources.Key.ValueListEntryOid">
|
||||
<div class="card-header" data-toggle="collapse" data-target="#collapsable-resource-category-@category2Resources.Key.ValueListEntryOid">
|
||||
<div class="d-flex align-items-center">
|
||||
<h5 class="mr-auto">@category2Resources.Key.DisplayName</h5>
|
||||
<div class="btn-group" role="group">
|
||||
<span class="fas fa-chevron-down text-primary"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="collapse" id="collapsable-resource-category-@category2Resources.Key.ValueListEntryOid">
|
||||
<div class="card-body resource-list">
|
||||
@foreach (var resource in category2Resources.Value)
|
||||
{
|
||||
var checkedValue = Model.SelectedResources.Contains(resource) ? "checked" : string.Empty;
|
||||
|
||||
<div class="custom-control custom-checkbox resource-text">
|
||||
<input type="checkbox" class="custom-control-input" id="resource-@resource.ResourceOid-checkbox" @checkedValue onchange="changeResourceSelection('resources-popup', '@Url.Action("SelectResourcesForAppointment", "Scheduler")', 'selected-resources-list', 'relation-item-', '-checkbox')" />
|
||||
<label class="custom-control-label resource-name-label" for="resource-@resource.ResourceOid-checkbox">@resource.Name</label>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary" data-dismiss="modal">Übernehmen</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
@if (AbstractModel.HasRightToInsertEmployeeAppointments && Model.AllEmployees.Any())
|
||||
{
|
||||
<div class="modal" tabindex="-1" role="dialog" id="employees-popup">
|
||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h6 class="modal-title text-center w-100">Mitarbeiter</h6>
|
||||
<button type="button" class="close" data-dismiss="modal" onclick="resetSearch('employee-search-input', 'employee-text')">
|
||||
<span>×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="container-fluid">
|
||||
<div class="input-group mb-3">
|
||||
<input class="form-control w-100" type="text" placeholder="Suchen..." oninput="listSearchOnChange('employee-search-input', 'employee-text', 'employee-name-label')" id="employee-search-input" />
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-outline-secondary" type="button" onclick="resetSearch('employee-search-input', 'employee-text')">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@foreach (var employee in Model.AllEmployees)
|
||||
{
|
||||
var checkedValue = Model.SelectedEmployees.Contains(employee) ? "checked" : string.Empty;
|
||||
|
||||
<div class="custom-control custom-checkbox employee-text">
|
||||
<input type="checkbox" class="custom-control-input" id="employee-@employee.EmployeeOid-checkbox" @checkedValue onchange="changeItemListSelection('@Url.Action("SelectEmployeesForAppointment", "Scheduler")', 'employees-popup', 'selected-employees-list', 'related-employee-', false, '-checkbox')" />
|
||||
<label class="custom-control-label employee-name-label" for="employee-@employee.EmployeeOid-checkbox">@employee.DetailDescription</label>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary" data-dismiss="modal">Übernehmen</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
@if (AbstractModel.HasRightToInsertCustomerAppointments && Model.AllCustomers.Any())
|
||||
{
|
||||
<div class="modal" tabindex="-1" role="dialog" id="customers-popup">
|
||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h6 class="modal-title text-center w-100">Klienten</h6>
|
||||
<button type="button" class="close" data-dismiss="modal" onclick="resetSearch('customer-search-input', 'customer-text')">
|
||||
<span>×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="container-fluid">
|
||||
<div class="input-group mb-3">
|
||||
<input class="form-control w-100" type="text" placeholder="Suchen..." oninput="listSearchOnChange('customer-search-input', 'customer-text', 'customer-name-label')" id="customer-search-input" />
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-outline-secondary" type="button" onclick="resetSearch('customer-search-input', 'customer-text')">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@foreach (var customer in Model.AllCustomers)
|
||||
{
|
||||
var checkedValue = Model.SelectedCustomers.Contains(customer) ? "checked" : string.Empty;
|
||||
|
||||
<div class="custom-control custom-checkbox customer-text">
|
||||
<input type="checkbox" class="custom-control-input" id="customer-@customer.CustomerOid-checkbox" @checkedValue onchange="changeItemListSelection('@Url.Action("SelectCustomersForAppointment", "Scheduler")', 'customers-popup', 'selected-customers-list', 'related-customer-', true, '-checkbox')" />
|
||||
<label class="custom-control-label customer-name-label" for="customer-@customer.CustomerOid-checkbox">@customer.DetailDescription</label>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary" data-dismiss="modal">Übernehmen</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@@ -0,0 +1,408 @@
|
||||
@using BeWoPlanerMobil.Models
|
||||
@model BeWoPlanerMobil.Models.SchedulerModel
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
$("#scheduler-interval-start-picker").datetimepicker({
|
||||
locale: "de",
|
||||
format: "L"
|
||||
});
|
||||
|
||||
$("#scheduler-interval-end-picker").datetimepicker({
|
||||
locale: "de",
|
||||
format: "L"
|
||||
});
|
||||
|
||||
$("#scheduler-interval-start-time-picker").datetimepicker({
|
||||
locale: "de",
|
||||
format: "LT"
|
||||
});
|
||||
|
||||
$("#scheduler-interval-end-time-picker").datetimepicker({
|
||||
locale: "de",
|
||||
format: "LT"
|
||||
});
|
||||
});
|
||||
|
||||
function resetIntervalFinderForm() {
|
||||
$("#scheduler-interval-start-time, #scheduler-interval-end-time, #duration").val("");
|
||||
$("#scheduler-interval-start, #scheduler-interval-end").val(moment().format("DD.MM.YYYY"));
|
||||
|
||||
$("#resources-interval-finder-popup input:checked, #customers-interval-finder-popup input:checked, #employees-interval-finder-popup input:checked").each(function() {
|
||||
$(this).prop("checked", false);
|
||||
});
|
||||
|
||||
$("#selected-resources-interval-finder-list, #selected-employees-interval-finder-list, #selected-customers-interval-finder-list").empty();
|
||||
|
||||
var url = '@Url.Action("ResetIntervalFinder", "Scheduler")';
|
||||
|
||||
$.get(url);
|
||||
}
|
||||
|
||||
function submitIntervalFinderForm() {
|
||||
try {
|
||||
showSpinner();
|
||||
$("#find-appointment-intervals-form").submit();
|
||||
} catch(error) {
|
||||
logError(error.message);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<div id="interval-form-container">
|
||||
@using (Html.BeginForm("FindFreeIntervals", "Scheduler", FormMethod.Post, new { id = "find-appointment-intervals-form" }))
|
||||
{
|
||||
<div class="mt-3">
|
||||
<div class="form-row">
|
||||
<div class="col-12">
|
||||
<div class="form-group mb-1">
|
||||
<label for="scheduler-interval-start">Datum-Zeitraum (von)</label>
|
||||
<div class="input-group date" id="scheduler-interval-start-picker" data-target-input="nearest">
|
||||
<input value="@Model.IntervalStartDateStr" type="text" id="scheduler-interval-start" name="IntervalStart" class="form-control datetimepicker-input" data-target="#scheduler-interval-start-picker" data-toggle="datetimepicker" />
|
||||
<div class="input-group-append" data-target="#scheduler-interval-start-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-calendar-alt"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group mb-1">
|
||||
<label for="scheduler-interval-start-time">Zwischen Uhrzeit (von)</label>
|
||||
<div class="input-group date" id="scheduler-interval-start-time-picker" data-target-input="nearest">
|
||||
<input value="@Model.IntervalStartTimeStr" type="text" id="scheduler-interval-start-time" name="IntervalStartTime" class="form-control datetimepicker-input" data-target="#scheduler-interval-start-time-picker" />
|
||||
<div class="input-group-append" data-target="#scheduler-interval-start-time-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-clock"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-12">
|
||||
<div class="form-group mb-1">
|
||||
<label for="scheduler-interval-end">Datum-Zeitraum (bis)</label>
|
||||
<div class="input-group date" id="scheduler-interval-end-picker" data-target-input="nearest">
|
||||
<input value="@Model.IntervalEndDateStr" type="text" id="scheduler-interval-end" name="IntervalEnd" class="form-control datetimepicker-input" data-target="#scheduler-interval-end-picker" data-toggle="datetimepicker" />
|
||||
<div class="input-group-append" data-target="#scheduler-interval-end-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-calendar-alt"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-group mb-1">
|
||||
<label for="scheduler-interval-end-time">Zwischen Uhrzeit (bis)</label>
|
||||
<div class="input-group date" id="scheduler-interval-end-time-picker" data-target-input="nearest">
|
||||
<input value="@Model.IntervalEndTimeStr" type="text" id="scheduler-interval-end-time" name="IntervalEndTime" class="form-control datetimepicker-input" data-target="#scheduler-interval-end-time-picker" />
|
||||
<div class="input-group-append" data-target="#scheduler-interval-end-time-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-clock"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="interval-duration">Dauer</label>
|
||||
<input value="@Model.IntervalDurationStr" type="number" id="interval-duration" name="Duration" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (Model.HasResourcesEmployeesOrCustomers)
|
||||
{
|
||||
<!-- Hinzufügen-Buttons -->
|
||||
<div class="form-row">
|
||||
@if (AbstractModel.HasRightToInsertEmployeeAppointments)
|
||||
{
|
||||
<div class="col-md">
|
||||
<div class="form-group my-1">
|
||||
<button type="button" class="btn btn-primary w-100" data-toggle="modal" data-target="#employees-interval-finder-popup">Mitarbeiter<br/>hinzufügen</button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (AbstractModel.HasRightToInsertCustomerAppointments)
|
||||
{
|
||||
<div class="col-md">
|
||||
<div class="form-group my-1">
|
||||
<button type="button" class="btn btn-primary w-100" data-toggle="modal" data-target="#customers-interval-finder-popup">Klienten<br />hinzufügen</button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (AbstractModel.HasRightToInsertRessourceAppointments && Model.ResourceCategories2Resources.Any())
|
||||
{
|
||||
<div class="col-md">
|
||||
<div class="form-group my-1">
|
||||
<button type="button" class="btn btn-primary w-100" data-toggle="modal" data-target="#resources-interval-finder-popup">Ressourcen<br />hinzufügen</button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
@if (AbstractModel.HasRightToInsertEmployeeAppointments)
|
||||
{
|
||||
<div class="col-12">
|
||||
<div class="form-group my-1">
|
||||
<div class="list-group" id="selected-employees-interval-finder-list">
|
||||
@foreach (var selectedEmployee in Model.SelectedEmployeesForIntervalFinder)
|
||||
{
|
||||
<div class="list-group-item my-auto" id="related-employee-interval-finder-@selectedEmployee.EmployeeOid">
|
||||
<div class="row">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<i class="fas fa-user text-bewo-employee h-100"></i>
|
||||
</div>
|
||||
<p class="form-control border-0 bg-transparent text-truncate">
|
||||
@selectedEmployee.DetailDescription
|
||||
</p>
|
||||
<div class="input-group-append">
|
||||
@{
|
||||
var url = Url.Action("SelectEmployeesForIntervalFinder", "Scheduler");
|
||||
var oid = selectedEmployee.EmployeeOid;
|
||||
|
||||
var onClickParams = $"{oid}, '-interval-finder-checkbox', false, '{url}', 'employees-interval-finder-popup', 'employees-interval-finder-popup', 'related-employee-interval-finder-'";
|
||||
}
|
||||
|
||||
<button type="button" class="btn btn-primary" onclick="removeSelectedItem(@onClickParams)">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (AbstractModel.HasRightToInsertCustomerAppointments)
|
||||
{
|
||||
<div class="col-12">
|
||||
<div class="form-group my-1">
|
||||
<div class="list-group" id="selected-customers-interval-finder-list">
|
||||
@foreach (var selectedCustomer in Model.SelectedCustomersForIntervalFinder)
|
||||
{
|
||||
<div class="list-group-item my-auto" id="related-customer-interval-finder-@selectedCustomer.CustomerOid">
|
||||
<div class="row">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<i class="fas fa-user text-bewo-customers h-100"></i>
|
||||
</div>
|
||||
<p class="form-control border-0 bg-transparent text-truncate">
|
||||
@selectedCustomer.DetailDescription
|
||||
</p>
|
||||
<div class="input-group-append">
|
||||
@{
|
||||
var url = Url.Action("SelectCustomersForIntervalFinder", "Scheduler");
|
||||
var oid = selectedCustomer.CustomerOid;
|
||||
|
||||
var onClickParams = $"{oid}, '-interval-finder-checkbox', false, '{url}', 'customers-interval-finder-popup', 'customers-interval-finder-popup', 'related-customer-interval-finder-'";
|
||||
}
|
||||
<button type="button" class="btn btn-primary" onclick="removeSelectedItem(@onClickParams)">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (AbstractModel.HasRightToInsertRessourceAppointments && Model.ResourceCategories2Resources.Any())
|
||||
{
|
||||
<div class="col-12">
|
||||
<div class="form-group my-1">
|
||||
<div class="list-group" id="selected-resources-interval-finder-list">
|
||||
@foreach (var selectedResource in Model.SelectedResourcesForIntervalFinder)
|
||||
{
|
||||
<div class="list-group-item my-auto" id="related-resource-interval-finder-item-@selectedResource.ResourceOid">
|
||||
<div class="row">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<i class="fas fa-cubes text-bewo-resource h-100"></i>
|
||||
</div>
|
||||
<p class="form-control border-0 bg-transparent text-truncate">
|
||||
@selectedResource.Name
|
||||
</p>
|
||||
<div class="input-group-append">
|
||||
<button type="button" class="btn btn-primary" onclick="removeSelectedResource('related-resource-interval-finder-item-@selectedResource.ResourceOid', 'resource-@selectedResource.ResourceOid-interval-finder-checkbox', 'resources-interval-finder-popup', '@Url.Action("SelectResourcesForIntervalFinder", "Scheduler")', 'selected-resources-interval-finder-list')">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="d-flex bd-highlight mt-3">
|
||||
<div class="mr-auto bd-highlight">
|
||||
<!-- Abstandshalter -->
|
||||
</div>
|
||||
<div class="ml-3 bd-highlight">
|
||||
<button type="button" class="btn btn-primary" id="reset-interval-finder-button" onclick="resetIntervalFinderForm()">Abbrechen</button>
|
||||
</div>
|
||||
<div class="ml-3 bd-highlight">
|
||||
<button type="button" class="btn btn-primary" id="find-interval-finder-button" onclick="submitIntervalFinderForm()">Intervalle Prüfen</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (AbstractModel.HasRightToInsertRessourceAppointments && Model.ResourceCategories2Resources.Any())
|
||||
{
|
||||
<div class="modal" tabindex="-1" role="dialog" id="resources-interval-finder-popup">
|
||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h6 class="modal-title text-center w-100">Ressourcen</h6>
|
||||
<button type="button" class="close" data-dismiss="modal" onclick="resetResourceSearch('interval-finder-resource-search-input')">
|
||||
<span>×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="container-fluid">
|
||||
<div class="input-group mb-3">
|
||||
<input class="form-control w-100" type="text" placeholder="Suchen..." oninput="resourceSearchOnChange('interval-finder-resource-search-input')" id="interval-finder-resource-search-input" />
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-outline-secondary" type="button" onclick="resetResourceSearch('interval-finder-resource-search-input')">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@foreach(var category2Resources in Model.ResourceCategories2Resources)
|
||||
{
|
||||
<div class="card w-100 mb-3 category-card" id="resource-category-@category2Resources.Key.ValueListEntryOid">
|
||||
<div class="card-header" data-toggle="collapse" data-target="#collapsable-resource-category-interval-finder-@category2Resources.Key.ValueListEntryOid">
|
||||
<div class="d-flex align-items-center">
|
||||
<h5 class="mr-auto">@category2Resources.Key.DisplayName</h5>
|
||||
<div class="btn-group" role="group">
|
||||
<span class="fas fa-chevron-down text-primary"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="collapse" id="collapsable-resource-category-interval-finder-@category2Resources.Key.ValueListEntryOid">
|
||||
<div class="card-body resource-list">
|
||||
@foreach(var resource in category2Resources.Value)
|
||||
{
|
||||
var checkedValue = Model.SelectedResourcesForIntervalFinder.Contains(resource) ? "checked" : string.Empty;
|
||||
|
||||
<div class="custom-control custom-checkbox resource-text">
|
||||
<input type="checkbox" class="custom-control-input" id="resource-@resource.ResourceOid-interval-finder-checkbox" @checkedValue onchange="changeResourceSelection('resources-interval-finder-popup', '@Url.Action("SelectResourcesForIntervalFinder", "Scheduler")', 'selected-resources-interval-finder-list', 'related-resource-interval-finder-item-', '-interval-finder-checkbox')"/>
|
||||
<label class="custom-control-label resource-name-label" for="resource-@resource.ResourceOid-interval-finder-checkbox">@resource.Name</label>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary" data-dismiss="modal">Übernehmen</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
@if (AbstractModel.HasRightToInsertEmployeeAppointments && Model.AllEmployees.Any())
|
||||
{
|
||||
<div class="modal" tabindex="-1" role="dialog" id="employees-interval-finder-popup">
|
||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h6 class="modal-title text-center w-100">Mitarbeiter</h6>
|
||||
<button type="button" class="close" data-dismiss="modal" onclick="resetSearch('interval-finder-employee-search-input', 'interval-finder-employee-text')">
|
||||
<span>×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="container-fluid">
|
||||
<div class="input-group mb-3">
|
||||
<input class="form-control w-100" type="text" placeholder="Suchen..." oninput="listSearchOnChange('interval-finder-employee-search-input', 'interval-finder-employee-text', 'interval-finder-employee-name-label')" id="interval-finder-employee-search-input" />
|
||||
<div class="input-group-append">
|
||||
<button type="button" class="btn btn-outline-secondary" onclick="resetSearch('interval-finder-employee-search-input', 'interval-finder-employee-text')">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@foreach(var employee in Model.AllEmployees)
|
||||
{
|
||||
var checkedValue = Model.SelectedEmployeesForIntervalFinder.Contains(employee) ? "checked" : string.Empty;
|
||||
|
||||
var url = Url.Action("SelectEmployeesForIntervalFinder", "Scheduler");
|
||||
|
||||
var onClickParams = $"'{url}', 'employees-interval-finder-popup', 'selected-employees-interval-finder-list', 'related-employee-interval-finder-', false, '-interval-finder-checkbox'";
|
||||
|
||||
<div class="custom-control custom-checkbox interval-finder-employee-text">
|
||||
<input type="checkbox" class="custom-control-input" id="employee-@employee.EmployeeOid-interval-finder-checkbox" @checkedValue onchange="changeItemListSelection(@onClickParams)" />
|
||||
<label class="custom-control-label interval-finder-employee-name-label" for="employee-@employee.EmployeeOid-interval-finder-checkbox">@employee.DetailDescription</label>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary" data-dismiss="modal">Übernehmen</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
@if (AbstractModel.HasRightToInsertCustomerAppointments && Model.AllCustomers.Any())
|
||||
{
|
||||
<div class="modal" tabindex="-1" role="dialog" id="customers-interval-finder-popup">
|
||||
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h6 class="modal-title text-center w-100">Klienten</h6>
|
||||
<button type="button" class="close" data-dismiss="modal" onclick="resetSearch('interval-finder-customer-search-input', 'interval-finder-customer-text')">
|
||||
<span>×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="container-fluid">
|
||||
<div class="input-group mb-3">
|
||||
<input class="form-control w-100" type="text" placeholder="Suchen..." oninput="listSearchOnChange('interval-finder-customer-search-input', 'interval-finder-customer-text', 'interval-finder-customer-name-label')" id="interval-finder-customer-search-input"/>
|
||||
<div class="input-group-append">
|
||||
<button type="button" class="btn btn-outline-secondary" onclick="resetSearch('interval-finder-customer-search-input', 'interval-finder-customer-text')">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@foreach(var customer in Model.AllCustomers)
|
||||
{
|
||||
var checkedValue = Model.SelectedCustomersForIntervalFinder.Contains(customer) ? "checked" : string.Empty;
|
||||
|
||||
var url = Url.Action("SelectCustomersForIntervalFinder", "Scheduler");
|
||||
|
||||
var onClickParams = $"'{url}', 'customers-interval-finder-popup', 'selected-customers-interval-finder-list', 'related-customer-interval-finder-', true, '-interval-finder-checkbox'";
|
||||
|
||||
<div class="custom-control custom-checkbox interval-finder-customer-text">
|
||||
<input type="checkbox" class="custom-control-input" id="customer-@customer.CustomerOid-interval-finder-checkbox" @checkedValue onchange="changeItemListSelection(@onClickParams)"/>
|
||||
<label class="custom-control-label interval-finder-customer-name-label" for="customer-@customer.CustomerOid-interval-finder-checkbox">@customer.DetailDescription</label>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary" data-dismiss="modal">Übernehmen</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
@model BeWoPlanerMobil.Models.SchedulerModel
|
||||
|
||||
<script>
|
||||
$(window).ready(showSize);
|
||||
|
||||
$(window).resize(showSize);
|
||||
|
||||
function showSize() {
|
||||
var width = $(window).width();
|
||||
|
||||
var breakingPoint = getBreakingPoint(width);
|
||||
|
||||
//console.log(breakingPoint + "(" + width + "px)");
|
||||
}
|
||||
</script>
|
||||
|
||||
@if (Model.FreeIntervals.Count > 0)
|
||||
{
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
@foreach(var kv in Model.FreeIntervals)
|
||||
{
|
||||
<div class="col-sm-12 col-md-6 col-lg-4">
|
||||
<div class="card w-100 mb-3">
|
||||
<div class="card-header" data-toggle="collapse" data-target="#collapsable-date-list-@kv.Key.Ticks">
|
||||
<div class="d-flex align-items-center">
|
||||
<h5 class="mr-auto">@kv.Key.ToShortDateString()</h5>
|
||||
<div class="btn-group" role="group">
|
||||
<span class="fas fa-chevron-down text-primary"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="collapse" id="collapsable-date-list-@kv.Key.Ticks">
|
||||
<div class="card-body px-1 py-1">
|
||||
<div class="form-group my-0">
|
||||
<div class="list-group">
|
||||
@foreach(var dts in kv.Value)
|
||||
{
|
||||
<div class="list-group-item my-auto">
|
||||
@using(Html.BeginForm("SelectIntervalForForm", "Scheduler", FormMethod.Post))
|
||||
{
|
||||
<div class="input-group">
|
||||
<p class="form-control border-0 bg-transparent">
|
||||
@dts.StartDate.ToString("HH:mm") - @dts.EndDate.ToString("HH:mm")
|
||||
</p>
|
||||
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-primary" type="submit" onclick="showSpinner()">
|
||||
<span class="far fa-calendar-plus"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" value="@dts.StartDate.ToString("dd.MM.yyyy HH:mm")" name="startDate"/>
|
||||
<input type="hidden" value="@dts.EndDate.ToString("dd.MM.yyyy HH:mm")" name="endDate"/>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
@using BeWoPlanerMobil.Models;
|
||||
@using BeWoPlanerMobil.Util
|
||||
@using NHibernate.Criterion
|
||||
@using BeWoPlanerMobil.Models
|
||||
|
||||
@model SchedulerModel
|
||||
@{
|
||||
@@ -47,39 +45,25 @@
|
||||
return "@Url.Action("CheckForOverlappingAppointments", "Scheduler")";
|
||||
}
|
||||
|
||||
function getSelectResourcesForAppointmentUrl() {
|
||||
return "@Url.Action("SelectResourcesForAppointment", "Scheduler")";
|
||||
}
|
||||
|
||||
function getCheckResourcesAvailabilityUrl() {
|
||||
return "@Url.Action("CheckResourcesAvailability", "Scheduler")";
|
||||
}
|
||||
|
||||
function getIsAppointmentSelectedUrl() {
|
||||
return "@Url.Action("HasSelectedAppointment", "Scheduler")";
|
||||
}
|
||||
|
||||
function getSelectEmployeesForAppointmentUrl() {
|
||||
return "@Url.Action("SelectEmployeesForAppointment", "Scheduler")";
|
||||
}
|
||||
|
||||
function getSelectCustomersForAppointmentUrl() {
|
||||
return "@Url.Action("SelectCustomersForAppointment", "Scheduler")";
|
||||
}
|
||||
|
||||
|
||||
|
||||
$(document).ready(function() {
|
||||
@if (Model?.SelectedAppointment != null)
|
||||
@if(Model != null)
|
||||
{
|
||||
<text>
|
||||
showAppointmentForm();
|
||||
</text>
|
||||
if (Model.SelectedAppointment != null && !Model.IsInIntervalFinderMode)
|
||||
{
|
||||
<text>
|
||||
showAppointmentForm();
|
||||
</text>
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<div class="container mt-3">
|
||||
@if(Html.IsInDebugMode())
|
||||
@*@if(Html.IsInDebugMode())
|
||||
{
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-auto px-1">
|
||||
@@ -96,7 +80,7 @@
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}*@
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-auto pr-1 pl-0 pt-1">
|
||||
@using(Html.BeginForm("NavigateToPreviousDate", "Scheduler", FormMethod.Post))
|
||||
@@ -147,220 +131,45 @@
|
||||
}
|
||||
}
|
||||
<div class="col col-12 @editorCol col-lg-3">
|
||||
<div id="form-container" class="d-none d-sm-none d-md-block">
|
||||
@using (Html.BeginForm("InsertOrUpdateAppointment", "Scheduler", FormMethod.Post, new { id = "insert-appointment-form" }))
|
||||
{
|
||||
<div class="mt-3">
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="scheduler-start-date">Start</label>
|
||||
<div class="input-group date" id="scheduler-start-date-picker" data-target-input="nearest">
|
||||
<input type="text" id="scheduler-start-date" name="StartDate" class="form-control datetimepicker-input" data-target="#scheduler-start-date-picker" data-toggle="datetimepicker" value="@Model.StartDateToEdit" />
|
||||
<div class="input-group-append" data-target="#scheduler-start-date-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-calendar-alt"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="scheduler-start-time">Von</label>
|
||||
<div class="input-group date" id="scheduler-start-time-picker" data-target-input="nearest">
|
||||
<input type="text" id="scheduler-start-time" name="StartTime" class="form-control datetimepicker-input" data-target="#scheduler-start-time-picker" value="@Model.StartTimeToEdit" />
|
||||
<div class="input-group-append" data-target="#scheduler-start-time-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-clock"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="scheduler-end-date">Ende</label>
|
||||
<div class="input-group date" id="scheduler-end-date-picker" data-target-input="nearest">
|
||||
<input type="text" id="scheduler-end-date" name="EndDate" class="form-control datetimepicker-input" data-target="#scheduler-end-date-picker" data-toggle="datetimepicker" value="@Model.EndDateToEdit" />
|
||||
<div class="input-group-append" data-target="#scheduler-end-date-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-calendar-alt"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="scheduler-end-time">Bis</label>
|
||||
<div class="input-group date" id="scheduler-end-time-picker" data-target-input="nearest">
|
||||
<input type="text" id="scheduler-end-time" name="EndTime" class="form-control datetimepicker-input" data-target="#scheduler-end-time-picker" value="@Model.EndTimeToEdit" />
|
||||
<div class="input-group-append" data-target="#scheduler-end-time-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text"><i class="fas fa-clock"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (Model.HasResourcesEmployeesOrCustomers)
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
@using (Html.BeginForm("SetIsInIntervalFinderMode", "Scheduler", FormMethod.Post))
|
||||
{
|
||||
<div class="form-row">
|
||||
@if (AbstractModel.HasRightToInsertEmployeeAppointments)
|
||||
{
|
||||
<div class="col-md">
|
||||
<div class="form-group my-1">
|
||||
<button type="button" class="btn btn-primary w-100" data-toggle="modal" data-target="#employees-popup">Mitarbeiter hinzufügen</button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (AbstractModel.HasRightToInsertCustomerAppointments)
|
||||
{
|
||||
<div class="col-md">
|
||||
<div class="form-group my-1">
|
||||
<button type="button" class="btn btn-primary w-100" data-toggle="modal" data-target="#customers-popup">Klienten hinzufügen</button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (AbstractModel.HasRightToInsertRessourceAppointments && Model.ResourceCategories2Resources.Any())
|
||||
{
|
||||
<div class="col-md">
|
||||
<div class="form-group my-1">
|
||||
<button type="button" class="btn btn-primary w-100" data-toggle="modal" data-target="#resources-popup">Ressourcen hinzufügen</button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
var buttonValue = Model.IsInIntervalFinderMode ? "Zurück" : "Freie Termine suchen";
|
||||
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
@if (AbstractModel.HasRightToInsertEmployeeAppointments)
|
||||
{
|
||||
<div class="col-md">
|
||||
<div class="form-group my-1">
|
||||
<div class="list-group" id="selected-employees-list">
|
||||
@foreach (var selectedEmployee in Model.SelectedEmployees)
|
||||
{
|
||||
<div class="list-group-item my-auto" id="related-employee-@selectedEmployee.EmployeeOid">
|
||||
<div class="row">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<i class="fas fa-user text-bewo-employee h-100"></i>
|
||||
</div>
|
||||
<p class="form-control border-0 bg-transparent text-truncate">
|
||||
@selectedEmployee.DetailDescription
|
||||
</p>
|
||||
<div class="input-group-append">
|
||||
<button type="button" class="btn btn-primary" onclick="removeSelectedEmployee(@selectedEmployee.EmployeeOid)">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (AbstractModel.HasRightToInsertCustomerAppointments)
|
||||
{
|
||||
<div class="col-md">
|
||||
<div class="form-group my-1">
|
||||
<div class="list-group" id="selected-customers-list">
|
||||
@foreach (var selectedCustomer in Model.SelectedCustomers)
|
||||
{
|
||||
<div class="list-group-item my-auto" id="related-customer-@selectedCustomer.CustomerOid">
|
||||
<div class="row">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<i class="fas fa-user text-bewo-customers h-100"></i>
|
||||
</div>
|
||||
<p class="form-control border-0 bg-transparent text-truncate">
|
||||
@selectedCustomer.DetailDescription
|
||||
</p>
|
||||
<div class="input-group-append">
|
||||
<button type="button" class="btn btn-primary" onclick="removeSelectedCustomer(@selectedCustomer.CustomerOid)">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (AbstractModel.HasRightToInsertRessourceAppointments && Model.ResourceCategories2Resources.Any())
|
||||
{
|
||||
<div class="col-md">
|
||||
<div class="form-group my-1">
|
||||
<div class="list-group" id="selected-resources-list">
|
||||
@foreach (var selectedResource in Model.SelectedResources)
|
||||
{
|
||||
<div class="list-group-item my-auto" id="relation-item-@selectedResource.ResourceOid">
|
||||
<div class="row">
|
||||
<div class="col my-auto">
|
||||
<i class="fas fa-cubes text-bewo-resource mr-2"></i>
|
||||
@selectedResource.Name
|
||||
</div>
|
||||
<div class="col-auto my-auto">
|
||||
<button type="button" class="btn btn-primary" onclick="removeSelectedResource(@selectedResource.ResourceOid)">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
<button id="find-free-appointments-btn" type="submit" class="btn btn-primary" onclick="showSpinner()">@buttonValue</button>
|
||||
}
|
||||
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="subject">Betreff</label>
|
||||
<input type="text" id="subject" name="Subject" class="form-control" value="@Model.SubjectToEdit" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="location">Ort</label>
|
||||
<input type="text" id="location" name="Location" class="form-control" value="@Model.LocationToEdit" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<label for="notice">Notiz</label>
|
||||
<textarea class="form-control" id="notice" name="Notice">@Model.DescriptionToEdit</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="d-flex bd-highlight mt-3">
|
||||
<div class="mr-auto bd-highlight">
|
||||
<!-- Abstandshalter -->
|
||||
</div>
|
||||
<div class="ml-3 bd-highlight">
|
||||
<button type="button" class="btn btn-primary" id="reset-button" onclick="resetInsertAppointmentForm()">Abbrechen</button>
|
||||
</div>
|
||||
<div class="ml-3 bd-highlight">
|
||||
<button type="button" class="btn btn-primary" id="create-button" onclick="submitInsertAppointmentForm()">Speichern</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (Model.IsInIntervalFinderMode)
|
||||
{
|
||||
<!-- Intervallfinder -->
|
||||
<div id="interval-finder-container">
|
||||
@Html.Partial("AppointmentIntervalFinderPartial", Model)
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<!-- Formular -->
|
||||
<div id="form-container" class="d-none d-sm-none d-md-block">
|
||||
@Html.Partial("AppointmentFormPartial", Model)
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
||||
<!-- Terminliste -->
|
||||
<div class="col col-12 @listCol col-lg-9 mt-3">
|
||||
@if (Model.SelectedSchedulerView == "1")
|
||||
<!-- TODO: VORERST NICHT LÖSCHEN!-->
|
||||
@if(Model.IsInIntervalFinderMode)
|
||||
{
|
||||
@Html.Partial("AppointmentIntervalFinderResultPartial", Model)
|
||||
}
|
||||
else
|
||||
{
|
||||
@Html.Partial("OneDaySchedulerPartial", Model)
|
||||
}
|
||||
|
||||
@*@if (Model.SelectedSchedulerView == "1")
|
||||
{
|
||||
@Html.Partial("OneDaySchedulerPartial", Model)
|
||||
}
|
||||
@@ -371,121 +180,7 @@
|
||||
else if (Model.SelectedSchedulerView == "7")
|
||||
{
|
||||
@Html.Partial("SevenDaySchedulerPartial", Model)
|
||||
}
|
||||
}*@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (AbstractModel.HasRightToInsertRessourceAppointments && Model.ResourceCategories2Resources.Any())
|
||||
{
|
||||
<div class="modal" tabindex="-1" role="dialog" id="resources-popup">
|
||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h6 class="modal-title">Ressourcen</h6>
|
||||
<button type="button" class="close" data-dismiss="modal">
|
||||
<span>×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="container-fluid">
|
||||
@foreach (var category2Resources in Model.ResourceCategories2Resources)
|
||||
{
|
||||
<div class="card w-100 mb-3" id="resource-category-@category2Resources.Key.ValueListEntryOid">
|
||||
<div class="card-header" data-toggle="collapse" data-target="#collapsable-resource-category-@category2Resources.Key.ValueListEntryOid">
|
||||
<div class="d-flex align-items-center">
|
||||
<h5 class="mr-auto">@category2Resources.Key.DisplayName</h5>
|
||||
<div class="btn-group" role="group">
|
||||
<span class="fas fa-chevron-down text-primary"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="collapse" id="collapsable-resource-category-@category2Resources.Key.ValueListEntryOid">
|
||||
<div class="card-body">
|
||||
@foreach (var resource in category2Resources.Value)
|
||||
{
|
||||
var checkedValue = Model.SelectedResources.Contains(resource) ? "checked" : string.Empty;
|
||||
|
||||
<div class="custom-control custom-checkbox">
|
||||
<input type="checkbox" class="custom-control-input" id="@resource.ResourceOid-checkbox" @checkedValue onchange="changeResourceSelection()" />
|
||||
<label class="custom-control-label" for="@resource.ResourceOid-checkbox">@resource.Name</label>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary" data-dismiss="modal">Übernehmen</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
@if (AbstractModel.HasRightToInsertEmployeeAppointments && Model.AllEmployees.Any())
|
||||
{
|
||||
<div class="modal" tabindex="-1" role="dialog" id="employees-popup">
|
||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h6 class="modal-title">Mitarbeiter</h6>
|
||||
<button type="button" class="close" data-dismiss="modal">
|
||||
<span>×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="container-fluid">
|
||||
@foreach (var employee in Model.AllEmployees)
|
||||
{
|
||||
var checkedValue = Model.SelectedEmployees.Contains(employee) ? "checked" : string.Empty;
|
||||
|
||||
<div class="custom-control custom-checkbox">
|
||||
<input type="checkbox" class="custom-control-input" id="employee-@employee.EmployeeOid-checkbox" @checkedValue onchange="changeEmployeeSelection()" />
|
||||
<label class="custom-control-label" for="employee-@employee.EmployeeOid-checkbox">@employee.DetailDescription</label>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary" data-dismiss="modal">Übernehmen</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
@if (AbstractModel.HasRightToInsertCustomerAppointments && Model.AllCustomers.Any())
|
||||
{
|
||||
<div class="modal" tabindex="-1" role="dialog" id="customers-popup">
|
||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h6 class="modal-title">Klienten</h6>
|
||||
<button type="button" class="close" data-dismiss="modal">
|
||||
<span>×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="container-fluid">
|
||||
@foreach (var customer in Model.AllCustomers)
|
||||
{
|
||||
var checkedValue = Model.SelectedCustomers.Contains(customer) ? "checked" : string.Empty;
|
||||
|
||||
<div class="custom-control custom-checkbox">
|
||||
<input type="checkbox" class="custom-control-input" id="customer-@customer.CustomerOid-checkbox" @checkedValue onchange="changeCustomerSelection()" />
|
||||
<label class="custom-control-label" for="customer-@customer.CustomerOid-checkbox">@customer.DetailDescription</label>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary" data-dismiss="modal">Übernehmen</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
<!-- TODO: Mitarbeiter hinzufügen und vielleicht in dem Zuge auch Klienten? Oder doch erst den Scheduler von DevExpress testen? -->
|
||||
</div>
|
||||
@@ -15,7 +15,7 @@
|
||||
<!-- jquery first, then Popper.js, then Bootstrap JS -->
|
||||
<script src="@Url.Content("~/Scripts/jquery-3.6.0.min.js")" type="text/javascript"></script>
|
||||
|
||||
<script src="@Url.Content("~/Scripts/jquery-ui-1.12.1.min.js")"></script>
|
||||
<script src="@Url.Content("~/Scripts/jquery-ui-1.13.0.min.js")"></script>
|
||||
<script src="@Url.Content("~/Scripts/src-min/ace.js")"></script>
|
||||
<script src="@Url.Content("~/Scripts/devexpress-scripts/knockout-3.5.1.js")"></script>
|
||||
<script src="@Url.Content("~/node_modules/cldrjs/dist/cldr.js")"></script>
|
||||
@@ -41,6 +41,8 @@
|
||||
<script src="~/Scripts/view-scripts/report.js?v=1.10"></script>
|
||||
<script src="~/Scripts/signature_pad-3.2.min.js?v=1.10"></script>
|
||||
<script src="~/Scripts/utils/trimCanvas.js?v=1.10"></script>
|
||||
<script src="~/Scripts/utils/resources-list-utils.js?v=1.10"></script>
|
||||
<script src="~/Scripts/utils/list-utils.js?v=1.10"></script>
|
||||
|
||||
@Html.DevExpress().GetStyleSheets(
|
||||
new StyleSheet { ExtensionSuite = ExtensionSuite.NavigationAndLayout },
|
||||
@@ -86,7 +88,7 @@
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
try {
|
||||
logWidthAndBreakingPoint();
|
||||
//logWidthAndBreakingPoint();
|
||||
|
||||
var timeoutInMilliseconds = parseInt("@AbstractBaseController.TimeoutLimit", 10) * 60 * 1000;
|
||||
|
||||
@@ -132,7 +134,7 @@
|
||||
});
|
||||
|
||||
$(window).resize(function() {
|
||||
logWidthAndBreakingPoint();
|
||||
//logWidthAndBreakingPoint();
|
||||
});
|
||||
|
||||
function logWidthAndBreakingPoint() {
|
||||
@@ -256,7 +258,7 @@
|
||||
<i class="fas fa-file-invoice text-bewo-report">
|
||||
|
||||
</i>
|
||||
Auswertung
|
||||
Quittierungsbelege
|
||||
</button>
|
||||
</li>
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<configuration>
|
||||
<configSections>
|
||||
@@ -227,6 +227,7 @@
|
||||
<forms loginUrl="~/Login" />
|
||||
</authentication>
|
||||
<sessionState timeout="20" />
|
||||
<identity impersonate="false" />
|
||||
</system.web>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
|
||||
350
BeWoPlanerMobil/package-lock.json
generated
350
BeWoPlanerMobil/package-lock.json
generated
@@ -1,19 +1,305 @@
|
||||
{
|
||||
"name": "bewoplanermobil",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 1,
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "bewoplanermobil",
|
||||
"version": "1.0.0",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"bootstrap": "^4.4.1",
|
||||
"globalize": "^1.7.0",
|
||||
"sass": "^1.27.0"
|
||||
}
|
||||
},
|
||||
"node_modules/anymatch": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
|
||||
"integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
|
||||
"dependencies": {
|
||||
"normalize-path": "^3.0.0",
|
||||
"picomatch": "^2.0.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 8"
|
||||
}
|
||||
},
|
||||
"node_modules/binary-extensions": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
|
||||
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/bootstrap": {
|
||||
"version": "4.4.1",
|
||||
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.4.1.tgz",
|
||||
"integrity": "sha512-tbx5cHubwE6e2ZG7nqM3g/FZ5PQEDMWmMGNrCUBVRPHXTJaH7CBDdsLeu3eCh3B1tzAxTnAbtmrzvWEvT2NNEA==",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/bootstrap"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"jquery": "1.9.1 - 3",
|
||||
"popper.js": "^1.16.0"
|
||||
}
|
||||
},
|
||||
"node_modules/braces": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
|
||||
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
||||
"dependencies": {
|
||||
"fill-range": "^7.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/chokidar": {
|
||||
"version": "3.5.3",
|
||||
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
|
||||
"integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "individual",
|
||||
"url": "https://paulmillr.com/funding/"
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"anymatch": "~3.1.2",
|
||||
"braces": "~3.0.2",
|
||||
"glob-parent": "~5.1.2",
|
||||
"is-binary-path": "~2.1.0",
|
||||
"is-glob": "~4.0.1",
|
||||
"normalize-path": "~3.0.0",
|
||||
"readdirp": "~3.6.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 8.10.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"fsevents": "~2.3.2"
|
||||
}
|
||||
},
|
||||
"node_modules/cldrjs": {
|
||||
"version": "0.5.5",
|
||||
"resolved": "https://registry.npmjs.org/cldrjs/-/cldrjs-0.5.5.tgz",
|
||||
"integrity": "sha512-KDwzwbmLIPfCgd8JERVDpQKrUUM1U4KpFJJg2IROv89rF172lLufoJnqJ/Wea6fXL5bO6WjuLMzY8V52UWPvkA=="
|
||||
},
|
||||
"node_modules/fill-range": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
||||
"dependencies": {
|
||||
"to-regex-range": "^5.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/fsevents": {
|
||||
"version": "2.3.2",
|
||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
|
||||
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
|
||||
"hasInstallScript": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
],
|
||||
"engines": {
|
||||
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/glob-parent": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
|
||||
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
|
||||
"dependencies": {
|
||||
"is-glob": "^4.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/globalize": {
|
||||
"version": "1.7.0",
|
||||
"resolved": "https://registry.npmjs.org/globalize/-/globalize-1.7.0.tgz",
|
||||
"integrity": "sha512-faR46vTIbFCeAemyuc9E6/d7Wrx9k2ae2L60UhakztFg6VuE42gENVJNuPFtt7Sdjrk9m2w8+py7Jj+JTNy59w==",
|
||||
"dependencies": {
|
||||
"cldrjs": "^0.5.4"
|
||||
}
|
||||
},
|
||||
"node_modules/is-binary-path": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
|
||||
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
|
||||
"dependencies": {
|
||||
"binary-extensions": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/is-extglob": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
||||
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/is-glob": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
|
||||
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
|
||||
"dependencies": {
|
||||
"is-extglob": "^2.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/is-number": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
||||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
||||
"engines": {
|
||||
"node": ">=0.12.0"
|
||||
}
|
||||
},
|
||||
"node_modules/normalize-path": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
|
||||
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/picomatch": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
|
||||
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
|
||||
"engines": {
|
||||
"node": ">=8.6"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/jonschlinkert"
|
||||
}
|
||||
},
|
||||
"node_modules/readdirp": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
|
||||
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
|
||||
"dependencies": {
|
||||
"picomatch": "^2.2.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/sass": {
|
||||
"version": "1.27.0",
|
||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.27.0.tgz",
|
||||
"integrity": "sha512-0gcrER56OkzotK/GGwgg4fPrKuiFlPNitO7eUJ18Bs+/NBlofJfMxmxqpqJxjae9vu0Wq8TZzrSyxZal00WDig==",
|
||||
"dependencies": {
|
||||
"chokidar": ">=2.0.0 <4.0.0"
|
||||
},
|
||||
"bin": {
|
||||
"sass": "sass.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/to-regex-range": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
||||
"dependencies": {
|
||||
"is-number": "^7.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"anymatch": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
|
||||
"integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
|
||||
"requires": {
|
||||
"normalize-path": "^3.0.0",
|
||||
"picomatch": "^2.0.4"
|
||||
}
|
||||
},
|
||||
"binary-extensions": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
|
||||
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
|
||||
},
|
||||
"bootstrap": {
|
||||
"version": "4.4.1",
|
||||
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.4.1.tgz",
|
||||
"integrity": "sha512-tbx5cHubwE6e2ZG7nqM3g/FZ5PQEDMWmMGNrCUBVRPHXTJaH7CBDdsLeu3eCh3B1tzAxTnAbtmrzvWEvT2NNEA=="
|
||||
"integrity": "sha512-tbx5cHubwE6e2ZG7nqM3g/FZ5PQEDMWmMGNrCUBVRPHXTJaH7CBDdsLeu3eCh3B1tzAxTnAbtmrzvWEvT2NNEA==",
|
||||
"requires": {}
|
||||
},
|
||||
"braces": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
|
||||
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
||||
"requires": {
|
||||
"fill-range": "^7.0.1"
|
||||
}
|
||||
},
|
||||
"chokidar": {
|
||||
"version": "3.5.3",
|
||||
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
|
||||
"integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
|
||||
"requires": {
|
||||
"anymatch": "~3.1.2",
|
||||
"braces": "~3.0.2",
|
||||
"fsevents": "~2.3.2",
|
||||
"glob-parent": "~5.1.2",
|
||||
"is-binary-path": "~2.1.0",
|
||||
"is-glob": "~4.0.1",
|
||||
"normalize-path": "~3.0.0",
|
||||
"readdirp": "~3.6.0"
|
||||
}
|
||||
},
|
||||
"cldrjs": {
|
||||
"version": "0.5.5",
|
||||
"resolved": "https://registry.npmjs.org/cldrjs/-/cldrjs-0.5.5.tgz",
|
||||
"integrity": "sha512-KDwzwbmLIPfCgd8JERVDpQKrUUM1U4KpFJJg2IROv89rF172lLufoJnqJ/Wea6fXL5bO6WjuLMzY8V52UWPvkA=="
|
||||
},
|
||||
"fill-range": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
||||
"requires": {
|
||||
"to-regex-range": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"fsevents": {
|
||||
"version": "2.3.2",
|
||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
|
||||
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
|
||||
"optional": true
|
||||
},
|
||||
"glob-parent": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
|
||||
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
|
||||
"requires": {
|
||||
"is-glob": "^4.0.1"
|
||||
}
|
||||
},
|
||||
"globalize": {
|
||||
"version": "1.7.0",
|
||||
"resolved": "https://registry.npmjs.org/globalize/-/globalize-1.7.0.tgz",
|
||||
@@ -21,6 +307,66 @@
|
||||
"requires": {
|
||||
"cldrjs": "^0.5.4"
|
||||
}
|
||||
},
|
||||
"is-binary-path": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
|
||||
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
|
||||
"requires": {
|
||||
"binary-extensions": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"is-extglob": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
||||
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
|
||||
},
|
||||
"is-glob": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
|
||||
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
|
||||
"requires": {
|
||||
"is-extglob": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"is-number": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
||||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
|
||||
},
|
||||
"normalize-path": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
|
||||
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
|
||||
},
|
||||
"picomatch": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
|
||||
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
|
||||
},
|
||||
"readdirp": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
|
||||
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
|
||||
"requires": {
|
||||
"picomatch": "^2.2.1"
|
||||
}
|
||||
},
|
||||
"sass": {
|
||||
"version": "1.27.0",
|
||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.27.0.tgz",
|
||||
"integrity": "sha512-0gcrER56OkzotK/GGwgg4fPrKuiFlPNitO7eUJ18Bs+/NBlofJfMxmxqpqJxjae9vu0Wq8TZzrSyxZal00WDig==",
|
||||
"requires": {
|
||||
"chokidar": ">=2.0.0 <4.0.0"
|
||||
}
|
||||
},
|
||||
"to-regex-range": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
||||
"requires": {
|
||||
"is-number": "^7.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"bootstrap": "^4.4.1",
|
||||
"globalize": "^1.7.0"
|
||||
"globalize": "^1.7.0",
|
||||
"sass": "^1.27.0"
|
||||
},
|
||||
"devDependencies": {},
|
||||
"description": ""
|
||||
}
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
<package id="cldrjs" version="0.5.1" targetFramework="net472" />
|
||||
<package id="EntityFramework" version="6.4.4" targetFramework="net472" />
|
||||
<package id="jQuery" version="3.6.0" targetFramework="net472" />
|
||||
<package id="jQuery.UI.Combined" version="1.12.1" targetFramework="net472" />
|
||||
<package id="jQuery.UI.Combined" version="1.13.0" targetFramework="net472" />
|
||||
<package id="jQuery.Validation" version="1.19.3" targetFramework="net472" />
|
||||
<package id="log4net" version="2.0.12" targetFramework="net472" />
|
||||
<package id="log4net" version="2.0.13" targetFramework="net472" />
|
||||
<package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net472" />
|
||||
<package id="Microsoft.AspNet.Providers.Core" version="2.0.0" targetFramework="net472" />
|
||||
<package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net472" />
|
||||
@@ -25,9 +25,10 @@
|
||||
<package id="Microsoft.jQuery.Unobtrusive.Ajax" version="3.2.6" targetFramework="net472" />
|
||||
<package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.12" targetFramework="net472" />
|
||||
<package id="Microsoft.Net.Http" version="2.2.29" targetFramework="net472" />
|
||||
<package id="Microsoft.NETCore.Portable.Compatibility" version="1.0.1" targetFramework="net472" />
|
||||
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net40" />
|
||||
<package id="Moment.js" version="2.29.1" targetFramework="net472" />
|
||||
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net472" />
|
||||
<package id="RestSharp" version="106.12.0" targetFramework="net472" />
|
||||
<package id="RestSharp" version="106.13.0" targetFramework="net472" />
|
||||
<package id="WebGrease" version="1.6.0" targetFramework="net472" />
|
||||
</packages>
|
||||
4
Controls/packages.config
Normal file
4
Controls/packages.config
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="ClrHeapAllocationAnalyzer" version="3.0.0" targetFramework="net45" />
|
||||
</packages>
|
||||
@@ -127,7 +127,7 @@ namespace BeWo.Data
|
||||
var name = context.Request.Params["ctl00$tb_login"];
|
||||
var password = context.Request.Params["ctl00$tb_password"];
|
||||
|
||||
if (!Utils.IsAnyNullOrEmpty(name, password))
|
||||
if (!BS.Shared.Core.Utils.IsAnyNullOrEmpty(name, password))
|
||||
{
|
||||
ApplicationUser user = DAOFactory.UserDAO.FindUserByLoginName(name);
|
||||
|
||||
@@ -164,7 +164,7 @@ namespace BeWo.Data
|
||||
lPassword = context.Request.Params["token"];
|
||||
}
|
||||
|
||||
if (!Utils.IsAnyNullOrEmpty(lUserName, lPassword))
|
||||
if (!BS.Shared.Core.Utils.IsAnyNullOrEmpty(lUserName, lPassword))
|
||||
{
|
||||
string ip = null;
|
||||
if (context.Request != null)
|
||||
|
||||
@@ -54,5 +54,10 @@ namespace BeWo.Data.Access
|
||||
{
|
||||
//WORKAROUND: Bei geleichzeitigen Asynchronen Calls kann e
|
||||
}
|
||||
|
||||
protected ICriteria CreateCriteriaIsActiveWithAlias<T>(string alias) where T : BeWoEntityBase
|
||||
{
|
||||
return Session.CreateCriteria(typeof(T), alias).Add(Restrictions.Eq(BeWoEntityBase.PropertyName_IsActive, ActivationTypeId.Active));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,12 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Data.Utils;
|
||||
using BeWo.View.Navigation.Filter;
|
||||
using BS.Shared.Extensions;
|
||||
using NHibernate;
|
||||
@@ -488,7 +490,7 @@ namespace BeWo.Data.Access
|
||||
if(!IsNullOrEmpty(pCustomerReferenceNumber))
|
||||
lCriteria.Add(Restrictions.Eq(Customer.PropertyName_ReferenceNumber, pCustomerReferenceNumber));
|
||||
|
||||
if(!Utils.AreAllNullOrEmpty(pCustomerFirstName, pCustomerLastName))
|
||||
if(!BS.Shared.Core.Utils.AreAllNullOrEmpty(pCustomerFirstName, pCustomerLastName))
|
||||
lCriteria.CreateCriteria(Customer.PropertyName_Person)
|
||||
.Add(Restrictions.Like(Person.PropertyName_FirstName, pCustomerFirstName, MatchMode.Anywhere))
|
||||
.Add(Restrictions.Like(Person.PropertyName_LastName, pCustomerLastName, MatchMode.Anywhere));
|
||||
@@ -1417,8 +1419,8 @@ namespace BeWo.Data.Access
|
||||
var schedulerAppointments = appointments as IList<SchedulerAppointment> ?? appointments.ToList();
|
||||
|
||||
// Serientermine anhand der RecurrenceInfo erzeugen und den schedulerAppointments hinzufügen ------------------------------------------------------------
|
||||
var deletedOccurences = schedulerAppointments.Where(app => app.Type == 4).Select(app => Utils.GetOccurrenceId(app.RecurrenceInfo)).ToList();
|
||||
var changedOccurences = schedulerAppointments.Where(app => app.Type == 3).Select(app => Utils.GetOccurrenceId(app.RecurrenceInfo)).ToList();
|
||||
var deletedOccurences = schedulerAppointments.Where(app => app.Type == 4).Select(app => BS.Shared.Core.Utils.GetOccurrenceId(app.RecurrenceInfo)).ToList();
|
||||
var changedOccurences = schedulerAppointments.Where(app => app.Type == 3).Select(app => BS.Shared.Core.Utils.GetOccurrenceId(app.RecurrenceInfo)).ToList();
|
||||
|
||||
var recurringAppointmentsCriteria = CreateRecurrenceCriteria(start, end).Add(Restrictions.Eq(nameof(SchedulerAppointment.Type), 1));
|
||||
|
||||
@@ -2772,20 +2774,10 @@ namespace BeWo.Data.Access
|
||||
var employee2SchedCrit = Subqueries.PropertyIn(BeWoEntityBase.PropertyName_Oid, detachedCriteria1);
|
||||
|
||||
var originatorCrit = Restrictions.In(SchedulerAppointment.PropertyName_Originator, pSelectedEmployees);
|
||||
//var notEmployee2SchedCrit = Subqueries.PropertyNotex(BeWoEntityBase.PropertyName_Oid, detachedCriteria1);
|
||||
|
||||
//and not exists(
|
||||
// SELECT
|
||||
//this_0_.Oid as y0_
|
||||
//FROM
|
||||
// Employee2NewSchApp this_0_
|
||||
// WHERE
|
||||
//this_0_.NewSchAppOid = this_.Oid
|
||||
// )
|
||||
|
||||
var detachedCriteria2 = DetachedCriteria.For<Employee2SchedulerAppointment>("e2s2")
|
||||
.SetProjection(Projections.Property(BeWoEntityBase.PropertyName_Oid))
|
||||
.Add(Restrictions.EqProperty("e2s2." + Employee2SchedulerAppointment.PropertyName_SchedulerAppointment, "sa.Oid"));
|
||||
//.Add(Restrictions.Eq(Employee2SchedulerAppointment.PropertyName_SchedulerAppointment + ".Oid", mainCriteria.SetProjection(Projections.Property(Employee2SchedulerAppointment.PropertyName_Oid))));
|
||||
|
||||
var employee2SchedCrit2 = Subqueries.NotExists(detachedCriteria2);
|
||||
|
||||
@@ -2832,7 +2824,6 @@ namespace BeWo.Data.Access
|
||||
resourceCriterion = Expression.Sql(blah);
|
||||
}
|
||||
|
||||
// AND {SchedulerAppointment.PropertyName_RecurrenceInfo} IS NOT NULL AND {SchedulerAppointment.PropertyName_RecurrenceInfo} NOT LIKE '%Index%'
|
||||
var listOfCriterias = new List<ICriterion>
|
||||
{
|
||||
employeeCriterion,
|
||||
@@ -2957,13 +2948,18 @@ namespace BeWo.Data.Access
|
||||
return ownAppointmentCriterion;
|
||||
}
|
||||
|
||||
private ICriteria CreateRecurrenceCriteria(DateTime start, DateTime end, bool pIncludeInactiveOnes = false)
|
||||
private ICriteria CreateRecurrenceCriteria(DateTime start, DateTime end, bool pIncludeInactiveOnes = false, bool excludeTasks = false)
|
||||
{
|
||||
var recurrenceBetween = Format("'{0:yyyy-MM-dd} 00:00:00' BETWEEN STR_TO_DATE(SUBSTRING({1}, 24, 19), '%m/%d/%Y %H:%i:%s') AND STR_TO_DATE(SUBSTRING({1}, 50, 19), '%m/%d/%Y %H:%i:%s')", start, SchedulerAppointment.PropertyName_RecurrenceInfo);
|
||||
var recurrenceAfter = $"'{start:yyyy-MM-dd} 00:00:00' > STR_TO_DATE(SUBSTRING({SchedulerAppointment.PropertyName_RecurrenceInfo}, 24, 19), '%m/%d/%Y %H:%i:%s')";
|
||||
|
||||
var criteria = CreateCriteria<SchedulerAppointment>("sa");
|
||||
|
||||
if(!excludeTasks)
|
||||
{
|
||||
criteria.Add(Restrictions.Not(Restrictions.Eq(nameof(SchedulerAppointment.IsTask), true)));
|
||||
}
|
||||
|
||||
if(!pIncludeInactiveOnes)
|
||||
{
|
||||
criteria.Add(Restrictions.Eq(BeWoEntityBase.PropertyName_IsActive, ActivationTypeId.Active));
|
||||
@@ -3324,7 +3320,7 @@ namespace BeWo.Data.Access
|
||||
{
|
||||
var c = CreateCriteria<SchedulerAppointment>();
|
||||
|
||||
c.Add(Restrictions.Eq(nameof(BeWoEntityBase.Notice), Utils.TestAppointmentNotice));
|
||||
c.Add(Restrictions.Eq(nameof(BeWoEntityBase.Notice), BS.Shared.Core.Utils.TestAppointmentNotice));
|
||||
|
||||
return c.List<SchedulerAppointment>();
|
||||
}
|
||||
@@ -4635,5 +4631,203 @@ namespace BeWo.Data.Access
|
||||
|
||||
return list.ToList();
|
||||
}
|
||||
|
||||
// TODO: Intervalle werden als frei angezeigt, wenn sie am Ende eines Tages sind und sich mit Serienterminen überschneiden
|
||||
public Dictionary<DateTime, List<DateTimeSpan>> FindAppointmentsInRange(int duration, DateTime intervalStart, DateTime intervalEnd, List<long> resourceOids, List<long> customerOids, List<long> employeeOids, long loggedInEmployeeOid, int intervalBuffer = 30, bool skipWeekends = true)
|
||||
{
|
||||
var result = new List<SchedulerAppointment>();
|
||||
var intervals = IntervalFinderHelper.CreateIntervals(duration, intervalStart, intervalEnd, skipWeekends, intervalBuffer);
|
||||
|
||||
var subset = IntervalFinderHelper.GenereateIntervalsForChecking(intervalStart, intervalEnd);
|
||||
|
||||
var sw = new Stopwatch();
|
||||
sw.Start();
|
||||
|
||||
foreach (var dts in subset)
|
||||
{
|
||||
var start = dts.StartDate.MergeDatesByDate(intervalStart);
|
||||
var end = dts.EndDate.MergeDatesByDate(intervalEnd);
|
||||
|
||||
var apptmts = LoadAppointmentsForIntervalFinder(start, end, resourceOids, customerOids, employeeOids, loggedInEmployeeOid, skipWeekends);
|
||||
|
||||
result.AddRangeIfElementsNotIn(apptmts);
|
||||
}
|
||||
|
||||
sw.Stop();
|
||||
|
||||
var ms = sw.ElapsedMilliseconds;
|
||||
Debug.WriteLine($"FindAppointmentsInRange: Es dauerte {ms}ms {result.Count} Termine zwischen dem {intervalStart:dd.MM.yyyy HH:mm} und dem {intervalEnd:dd.MM.yyyy HH:mm} aus der Datenbank zu laden");
|
||||
|
||||
|
||||
/*
|
||||
|
||||
Normal = 0,
|
||||
Pattern = 1,
|
||||
Occurrence = 2,
|
||||
ChangedOccurrence = 3,
|
||||
DeletedOccurrence = 4
|
||||
|
||||
*/
|
||||
|
||||
var changedOccurrences = result.Where(a => a.Type == 3).Select(s => BS.Shared.Core.Utils.GetOccurrenceId(s.RecurrenceInfo)).ToList();
|
||||
var deletedOccurrences = result.Where(a => a.Type == 4).Select(s => BS.Shared.Core.Utils.GetOccurrenceId(s.RecurrenceInfo)).ToList();
|
||||
|
||||
var kek = IntervalFinderHelper.GetRecurrencesForIntervalFinder(result, intervalStart, intervalEnd, changedOccurrences, deletedOccurrences, skipWeekends);
|
||||
|
||||
result.AddRange(kek);
|
||||
|
||||
var freeIntervals = new List<DateTimeSpan>();
|
||||
|
||||
if (intervals.Count > 0)
|
||||
{
|
||||
if(result.Count > 0)
|
||||
{
|
||||
foreach (var interval in intervals)
|
||||
{
|
||||
if (!result.Any(a => a.StartDate.HasValue && a.EndDate.HasValue && a.StartDate.Value.IsInInterval(a.EndDate.Value, interval.StartDate, interval.EndDate)))
|
||||
{
|
||||
freeIntervals.Add(interval);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return IntervalFinderHelper.CreateFreeIntervalsDictionary(intervals);
|
||||
}
|
||||
}
|
||||
|
||||
return IntervalFinderHelper.CreateFreeIntervalsDictionary(freeIntervals);
|
||||
}
|
||||
|
||||
private IEnumerable<SchedulerAppointment> LoadAppointmentsForIntervalFinder(DateTime intervalStart, DateTime intervalEnd, IReadOnlyCollection<long> resourceOids, IReadOnlyCollection<long> customerOids, List<long> employeeOids, long loggedInEmployeeOid, bool skipWeekends)
|
||||
{
|
||||
var result = new List<SchedulerAppointment>();
|
||||
|
||||
if (intervalStart < intervalEnd)
|
||||
{
|
||||
var intervals = IntervalFinderHelper.GenerateIntervalsForCriteria(intervalStart, intervalEnd, skipWeekends);
|
||||
|
||||
var intervalRecurrenceCriterias = IntervalFinderHelper.CreateIntervalRecurrenceCriterias(intervals, skipWeekends);
|
||||
|
||||
var or = CreateOrCriteria(intervalRecurrenceCriterias);
|
||||
|
||||
var criteria = CreateCriteriaIsActiveWithAlias<SchedulerAppointment>("sa")
|
||||
.Add(Restrictions.Not(Restrictions.Eq(nameof(SchedulerAppointment.IsTask), true)));
|
||||
|
||||
if(intervals.Count > 0)
|
||||
{
|
||||
if(intervals.Count > 1)
|
||||
{
|
||||
var criterionList = new List<ICriterion>();
|
||||
|
||||
foreach (var dts in intervals)
|
||||
{
|
||||
criterionList.AddIfNotIn(
|
||||
Restrictions.Or(
|
||||
Restrictions.Between(nameof(SchedulerAppointment.StartDate), dts.StartDate, dts.EndDate),
|
||||
Restrictions.Or(
|
||||
Restrictions.Between(nameof(SchedulerAppointment.EndDate), dts.StartDate, dts.EndDate),
|
||||
Restrictions.And(
|
||||
Restrictions.Lt(nameof(SchedulerAppointment.StartDate), dts.StartDate),
|
||||
Restrictions.Gt(nameof(SchedulerAppointment.EndDate), dts.EndDate)))
|
||||
));
|
||||
}
|
||||
|
||||
criteria.Add(Restrictions.Or(or, CreateOrCriteria(criterionList)));
|
||||
}
|
||||
else
|
||||
{
|
||||
var dts = intervals.FirstOrDefault();
|
||||
|
||||
if (dts != null)
|
||||
{
|
||||
var cri = Restrictions.Or(
|
||||
Restrictions.Between(nameof(SchedulerAppointment.StartDate), dts.StartDate, dts.EndDate),
|
||||
Restrictions.Or(
|
||||
Restrictions.Between(nameof(SchedulerAppointment.EndDate), dts.StartDate, dts.EndDate),
|
||||
Restrictions.And(
|
||||
Restrictions.Lt(nameof(SchedulerAppointment.StartDate), dts.StartDate),
|
||||
Restrictions.Gt(nameof(SchedulerAppointment.EndDate), dts.EndDate)))
|
||||
);
|
||||
|
||||
criteria.Add(Restrictions.Or(or, cri));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ICriterion resourceCriterion = null;
|
||||
ICriterion customerCriterion = null;
|
||||
|
||||
if (employeeOids.Count == 0)
|
||||
{
|
||||
employeeOids.Add(loggedInEmployeeOid);
|
||||
}
|
||||
|
||||
var detachedCriteria1 = DetachedCriteria.For<Employee2SchedulerAppointment>()
|
||||
.Add(Restrictions.In(nameof(Employee2SchedulerAppointment.Employee) + ".Oid", employeeOids))
|
||||
.SetProjection(Projections.Property(nameof(Employee2SchedulerAppointment.SchedulerAppointmentOid)));
|
||||
var employee2SchedCrit = Subqueries.PropertyIn(nameof(BeWoEntityBase.Oid), detachedCriteria1);
|
||||
|
||||
var originatorCrit = Restrictions.In(nameof(SchedulerAppointment.Originator), employeeOids);
|
||||
|
||||
var detachedCriteria2 = DetachedCriteria.For<Employee2SchedulerAppointment>("e2s2")
|
||||
.SetProjection(Projections.Property(nameof(BeWoEntityBase.Oid)))
|
||||
.Add(Restrictions.EqProperty("e2s2." + nameof(Employee2SchedulerAppointment.SchedulerAppointmentOid), "sa.Oid"));
|
||||
|
||||
var employee2SchedCrit2 = Subqueries.NotExists(detachedCriteria2);
|
||||
|
||||
var and = Restrictions.And(originatorCrit, employee2SchedCrit2);
|
||||
|
||||
var employeeCriterion = Restrictions.Or(employee2SchedCrit, and);
|
||||
|
||||
if (customerOids?.Count > 0)
|
||||
{
|
||||
var customerSql = $"{BeWoEntityBase.PropertyName_Oid} IN (SELECT newschappoid FROM customer2newschapp WHERE customeroid IN ({customerOids.ToSeparatedString(",")}))";
|
||||
customerCriterion = Expression.Sql(customerSql);
|
||||
}
|
||||
|
||||
if (resourceOids?.Count > 0)
|
||||
{
|
||||
var resourceSql = $"{BeWoEntityBase.PropertyName_Oid} IN (SELECT newschappoid FROM resource2newschapp WHERE resourceoid IN ({resourceOids.ToSeparatedString(",")}))";
|
||||
resourceCriterion = Expression.Sql(resourceSql);
|
||||
}
|
||||
|
||||
var listOfCriterias = new List<ICriterion>
|
||||
{
|
||||
employeeCriterion,
|
||||
customerCriterion,
|
||||
resourceCriterion
|
||||
};
|
||||
|
||||
if (listOfCriterias.Count > 0)
|
||||
{
|
||||
var orCriteria = CreateOrCriteria(listOfCriterias);
|
||||
|
||||
if (orCriteria != null)
|
||||
{
|
||||
criteria.Add(orCriteria);
|
||||
}
|
||||
}
|
||||
|
||||
var criteriaAsString = criteria.ToString();
|
||||
|
||||
var appointments = criteria.List<SchedulerAppointment>().ToList();
|
||||
|
||||
result.AddRange(appointments);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static string GetGeneratedSql(ICriteria criteria)
|
||||
{
|
||||
var criteriaImpl = (CriteriaImpl) criteria;
|
||||
var sessionImpl = (SessionImpl) criteriaImpl.Session;
|
||||
var factory = (SessionFactoryImpl) sessionImpl.SessionFactory;
|
||||
var implementors = factory.GetImplementors(criteriaImpl.EntityOrClassName);
|
||||
var loader = new CriteriaLoader((IOuterJoinLoadable) factory.GetEntityPersister(implementors[0]), factory, criteriaImpl, implementors[0], sessionImpl.EnabledFilters);
|
||||
|
||||
return loader.SqlString.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -200,6 +200,7 @@
|
||||
<Compile Include="Entities\AbwesenheitsInformationPrint.cs" />
|
||||
<Compile Include="Entities\AddressHistory.cs" />
|
||||
<Compile Include="Entities\ConfirmationReceiptSignature.cs" />
|
||||
<Compile Include="Entities\ContractHistory.cs" />
|
||||
<Compile Include="Entities\CostBearer2SupportConceptHistory.cs" />
|
||||
<Compile Include="Entities\Dienstvertretung.cs" />
|
||||
<Compile Include="Entities\Dokumentvorlage.cs" />
|
||||
@@ -375,6 +376,8 @@
|
||||
<Compile Include="Entities\Employee.cs" />
|
||||
<Compile Include="Entities\Person.cs" />
|
||||
<Compile Include="UpdInsInterceptor.cs" />
|
||||
<Compile Include="Utils\AppointmentSearchResult.cs" />
|
||||
<Compile Include="Utils\IntervalFinderHelper.cs" />
|
||||
<Compile Include="WCFHibernateSessionManager.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
@@ -721,6 +724,9 @@
|
||||
<EmbeddedResource Include="Mappings\SupportConceptApprovalPeriodHistory.hbm.xml">
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Mappings\ContractHistory.hbm.xml">
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Content Include="Mappings\Timesheet2Mail.hbm.xml" />
|
||||
<EmbeddedResource Include="Mappings\ContactHistory.hbm.xml">
|
||||
<SubType>Designer</SubType>
|
||||
@@ -885,6 +891,7 @@
|
||||
<Analyzer Include="..\packages\Microsoft.CodeAnalysis.Analyzers.2.9.6\analyzers\dotnet\cs\Microsoft.CodeAnalysis.Analyzers.dll" />
|
||||
<Analyzer Include="..\packages\Microsoft.CodeAnalysis.Analyzers.2.9.6\analyzers\dotnet\cs\Microsoft.CodeAnalysis.CSharp.Analyzers.dll" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
|
||||
206
Data/Entities/ContractHistory.cs
Normal file
206
Data/Entities/ContractHistory.cs
Normal file
@@ -0,0 +1,206 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Collections;
|
||||
using BS.Shared;
|
||||
|
||||
namespace BeWo.Data.Entities
|
||||
{
|
||||
public class ContractHistory : BeWoEntityBase
|
||||
{
|
||||
public static string PropertyName_ContractHistoryProbationPeriod = "ContractHistoryProbationPeriod";
|
||||
public static string PropertyName_ContractHistoryWeeklyDays = "ContractHistoryWeeklyDays";
|
||||
public static string PropertyName_ContractHistoryCancellationPeriod = "ContractHistoryCancellationPeriod";
|
||||
public static string PropertyName_ContractHistoryEntryDate = "ContractHistoryEntryDate";
|
||||
public static string PropertyName_ContractHistoryContractEndDate = "ContractHistoryContractEndDate";
|
||||
public static string PropertyName_ContractHistoryHourlyRate = "ContractHistoryHourlyRate";
|
||||
public static string PropertyName_ContractHistoryWeeklyFLS = "ContractHistoryWeeklyFLS";
|
||||
public static string PropertyName_ContractHistoryMonthlyFLS = "ContractHistoryMonthlyFLS";
|
||||
public static string PropertyName_ContractHistoryWeeklyTotalHours = "ContractHistoryWeeklyTotalHours";
|
||||
public static string PropertyName_ContractHistoryMonthlyTotalHours = "ContractHistoryMonthlyTotalHours";
|
||||
public static string PropertyName_ContractHistoryLeaveDays = "ContractHistoryLeaveDays";
|
||||
public static string PropertyName_ContractHistoryEmployeeOid = "ContractHistoryEmployeeOid";
|
||||
public static string PropertyName_ContractHistoryEmploymentType = "ContractHistoryEmploymentType";
|
||||
|
||||
private StatementType _ChangeType;
|
||||
|
||||
private decimal? _LeaveDays;
|
||||
private decimal? _WeeklyTotalHours;
|
||||
private decimal? _MonthlyTotalHours;
|
||||
private decimal? _WeeklyFLS;
|
||||
private decimal? _MonthlyFLS;
|
||||
private decimal? _HourlyRate;
|
||||
private DateTime? _EntryDate;
|
||||
private DateTime? _ContractEndDate;
|
||||
private int _CancellationPeriod;
|
||||
private int _ProbationPeriod;
|
||||
private int? _WeeklyDays;
|
||||
private long _EmployeeOid;
|
||||
private EmploymentType _EmploymentType;
|
||||
|
||||
public ContractHistory()
|
||||
{
|
||||
this._Tid = TableID.ContractHistory;
|
||||
}
|
||||
|
||||
public virtual StatementType ChangeType
|
||||
{
|
||||
get
|
||||
{
|
||||
return _ChangeType;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (AreDifferent(_ChangeType, value))
|
||||
{
|
||||
_ChangeType = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public virtual EmploymentType ContractHistoryEmploymentType
|
||||
{
|
||||
get { return this._EmploymentType; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._EmploymentType, value))
|
||||
{
|
||||
this._EmploymentType = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public virtual decimal? ContractHistoryLeaveDays
|
||||
{
|
||||
get { return _LeaveDays; }
|
||||
set
|
||||
{
|
||||
if (base.AreDifferent(_LeaveDays, value))
|
||||
_LeaveDays = value;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual decimal? ContractHistoryWeeklyTotalHours
|
||||
{
|
||||
get { return _WeeklyTotalHours; }
|
||||
set
|
||||
{
|
||||
if (base.AreDifferent(_WeeklyTotalHours, value))
|
||||
_WeeklyTotalHours = value;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual decimal? ContractHistoryMonthlyTotalHours
|
||||
{
|
||||
get { return _MonthlyTotalHours; }
|
||||
set
|
||||
{
|
||||
if (base.AreDifferent(_MonthlyTotalHours, value))
|
||||
_MonthlyTotalHours = value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public virtual decimal? ContractHistoryWeeklyFLS
|
||||
{
|
||||
get { return _WeeklyFLS; }
|
||||
set
|
||||
{
|
||||
if (base.AreDifferent(_WeeklyFLS, value))
|
||||
_WeeklyFLS = value;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual decimal? ContractHistoryMonthlyFLS
|
||||
{
|
||||
get { return _MonthlyFLS; }
|
||||
set
|
||||
{
|
||||
if (base.AreDifferent(_MonthlyFLS, value))
|
||||
_MonthlyFLS = value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public virtual int ContractHistoryProbationPeriod
|
||||
{
|
||||
get { return _ProbationPeriod; }
|
||||
set
|
||||
{
|
||||
if (base.AreDifferent(_ProbationPeriod, value))
|
||||
_ProbationPeriod = value;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual int? ContractHistoryWeeklyDays
|
||||
{
|
||||
get { return _WeeklyDays; }
|
||||
set
|
||||
{
|
||||
if (base.AreDifferent(_WeeklyDays, value))
|
||||
_WeeklyDays = value;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual int ContractHistoryCancellationPeriod
|
||||
{
|
||||
get { return _CancellationPeriod; }
|
||||
set
|
||||
{
|
||||
if (base.AreDifferent(_CancellationPeriod, value))
|
||||
_CancellationPeriod = value;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual DateTime? ContractHistoryEntryDate
|
||||
{
|
||||
get { return _EntryDate; }
|
||||
set
|
||||
{
|
||||
if (base.AreDifferent(_EntryDate, value))
|
||||
_EntryDate = value;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual DateTime? ContractHistoryContractEndDate
|
||||
{
|
||||
get { return _ContractEndDate; }
|
||||
set
|
||||
{
|
||||
if (base.AreDifferent(_ContractEndDate, value))
|
||||
_ContractEndDate = value;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual decimal? ContractHistoryHourlyRate
|
||||
{
|
||||
get { return _HourlyRate; }
|
||||
set
|
||||
{
|
||||
if (base.AreDifferent(_HourlyRate, value))
|
||||
_HourlyRate = value;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual long ContractHistoryEmployeeOid
|
||||
{
|
||||
get { return _EmployeeOid; }
|
||||
set
|
||||
{
|
||||
if (base.AreDifferent(_EmployeeOid, value))
|
||||
_EmployeeOid = value;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual CostRatePeriod ContractHistoryHourlyRateCostRateValue { get; set; }
|
||||
|
||||
public virtual decimal? ContractHistoryProbationPeriod2 { get; set; }
|
||||
|
||||
public virtual ValueListEntry ContractHistoryContractTypeValueListEntry { get; set; }
|
||||
|
||||
public virtual ValueListEntry ContractHistoryQualifikationsBedarfValueListEntry { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -154,7 +154,7 @@ namespace BeWo.Data.ICD10
|
||||
}
|
||||
}
|
||||
|
||||
return Utils.Compress(sr.ToString());
|
||||
return BS.Shared.Core.Utils.Compress(sr.ToString());
|
||||
}
|
||||
|
||||
public static string GetDiagnosisForCode(string code)
|
||||
|
||||
37
Data/Mappings/ContractHistory.hbm.xml
Normal file
37
Data/Mappings/ContractHistory.hbm.xml
Normal file
@@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
|
||||
<class name="BeWo.Data.Entities.ContractHistory,BeWo.Data" table="ContractHistory" >
|
||||
<id name="Oid" column="Oid" type="Int64" unsaved-value="null" >
|
||||
<generator class="identity"/>
|
||||
</id>
|
||||
|
||||
<version type="Int64" column="Version" name="Version" />
|
||||
<property column="Tid" type="BS.Shared.TableID, BS.Shared" name="_Tid" access="field" />
|
||||
<property column="Notice" type="String" name="Notice" length="1024" />
|
||||
<property column="InsTs" type="DateTime" name="InsTs" />
|
||||
<property column="InsUser" type="String" name="InsUser" length="256" />
|
||||
<property column="UdpUser" type="String" name="UdpUser" length="256" />
|
||||
<property column="IsActive" type="BS.Shared.ActivationTypeId, BS.Shared" name="IsActive" />
|
||||
<property column="SystemEntryID" type="BS.Shared.SystemEntryID, BS.Shared" name="SystemEntryID" />
|
||||
<property column="ChangeType" type="BS.Shared.StatementType, BS.Shared" name="ChangeType" />
|
||||
<property column="ContractHistoryEmployeeOid" type="Int64" name="ContractHistoryEmployeeOid"/>
|
||||
<property column="ContractHistoryHourlyRate" type="Decimal" name="ContractHistoryHourlyRate" />
|
||||
<property column="ContractHistoryWeeklyFLS" type="Decimal" name="ContractHistoryWeeklyFLS" />
|
||||
<property column="ContractHistoryMonthlyFLS" type="Decimal" name="ContractHistoryMonthlyFLS" />
|
||||
<property column="ContractHistoryWeeklyTotalHours" type="Decimal" name="ContractHistoryWeeklyTotalHours" />
|
||||
<property column="ContractHistoryMonthlyTotalHours" type="Decimal" name="ContractHistoryMonthlyTotalHours" />
|
||||
<property column="ContractHistoryLeaveDays" type="Decimal" name="ContractHistoryLeaveDays" />
|
||||
<property column="ContractHistoryEntryDate" type="DateTime" name="ContractHistoryEntryDate" />
|
||||
<property column="ContractHistoryContractEndDate" type="DateTime" name="ContractHistoryContractEndDate" />
|
||||
<property column="ContractHistoryCancellationPeriod" type="Int32" name="ContractHistoryCancellationPeriod" />
|
||||
<property column="ContractHistoryProbationPeriod" type="Int32" name="ContractHistoryProbationPeriod" />
|
||||
<property column="ContractHistoryProbationPeriod2" type="Decimal" name="ContractHistoryProbationPeriod2" />
|
||||
<property column="ContractHistoryWeeklyDays" type="Int32" name="ContractHistoryWeeklyDays" />
|
||||
<many-to-one name="ContractHistoryEmploymentType" column="ContractHistoryEmploymentTypeOid" class="BeWo.Data.Entities.EmploymentType,BeWo.Data" cascade="none" />
|
||||
<many-to-one name="ContractHistoryHourlyRateCostRateValue" column="ContractHistoryHourlyRateCostRateValueOid" class="BeWo.Data.Entities.CostRatePeriod,BeWo.Data" cascade="none" />
|
||||
<many-to-one name="ContractHistoryContractTypeValueListEntry" column="ContractHistoryContractTypeValueListEntryOid" class="BeWo.Data.Entities.ValueListEntry,BeWo.Data" cascade="none" />
|
||||
<many-to-one name="ContractHistoryQualifikationsBedarfValueListEntry" column="ContractHistoryQualifikationsBedarfValueListEntryOid" class="BeWo.Data.Entities.ValueListEntry,BeWo.Data" cascade="none" />
|
||||
</class>
|
||||
</hibernate-mapping>
|
||||
|
||||
|
||||
13
Data/Utils/AppointmentSearchResult.cs
Normal file
13
Data/Utils/AppointmentSearchResult.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using System.Collections.Generic;
|
||||
using BeWo.Data.Entities;
|
||||
using BS.Shared.Core;
|
||||
|
||||
namespace BeWo.Data.Utils
|
||||
{
|
||||
public class AppointmentSearchResult
|
||||
{
|
||||
public List<SchedulerAppointment> Appointments { get; set; } = new List<SchedulerAppointment>();
|
||||
|
||||
public List<DateTimeSpan> Intervals { get; set; } = new List<DateTimeSpan>();
|
||||
}
|
||||
}
|
||||
320
Data/Utils/IntervalFinderHelper.cs
Normal file
320
Data/Utils/IntervalFinderHelper.cs
Normal file
@@ -0,0 +1,320 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using BeWo.Data.Entities;
|
||||
using BS.Shared.Core;
|
||||
using BS.Shared.Extensions;
|
||||
using DevExpress.XtraScheduler;
|
||||
using DevExpress.XtraScheduler.Compatibility;
|
||||
using NHibernate.Criterion;
|
||||
using NHibernate.SqlCommand;
|
||||
|
||||
namespace BeWo.Data.Utils
|
||||
{
|
||||
public class IntervalFinderHelper
|
||||
{
|
||||
public static List<DateTimeSpan> GenerateIntervalsForCriteria(DateTime intervalStart, DateTime intervalEnd, bool skipWeekends)
|
||||
{
|
||||
var result = new List<DateTimeSpan>();
|
||||
|
||||
if (intervalEnd <= intervalStart)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
var start = intervalStart;
|
||||
var end = start.MergeDatesByDate(intervalEnd);
|
||||
|
||||
while (end <= intervalEnd)
|
||||
{
|
||||
end = start.MergeDatesByDate(intervalEnd);
|
||||
|
||||
if (skipWeekends && (start.Date.DayOfWeek == DayOfWeek.Saturday || start.Date.DayOfWeek == DayOfWeek.Sunday))
|
||||
{
|
||||
start = start.AddDays(1);
|
||||
end = start.MergeDatesByDate(intervalEnd);
|
||||
continue;
|
||||
}
|
||||
|
||||
result.AddIfNotIn(new DateTimeSpan(start, end));
|
||||
|
||||
start = start.AddDays(1);
|
||||
end = start.MergeDatesByDate(intervalEnd);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static List<ICriterion> CreateIntervalRecurrenceCriterias(List<DateTimeSpan> intervals, bool skipWeekends)
|
||||
{
|
||||
var result = new List<ICriterion>();
|
||||
|
||||
foreach(var interval in intervals)
|
||||
{
|
||||
var start = interval.StartDate;
|
||||
var end = interval.EndDate;
|
||||
|
||||
result.AddIfNotIn(CreateRecurrenceCriterion(start, end));
|
||||
}
|
||||
|
||||
// TODO: KGW
|
||||
//for (var i = 0; i < totalDays; i++)
|
||||
//{
|
||||
// start = start.AddDays(i).MergeDatesByDate(startDate);
|
||||
|
||||
// if (skipWeekends && (start.DayOfWeek == DayOfWeek.Saturday || start.DayOfWeek == DayOfWeek.Sunday))
|
||||
// {
|
||||
// continue;
|
||||
// }
|
||||
|
||||
// DateTime e;
|
||||
// var end = start.MergeDatesByDate(endDate);
|
||||
|
||||
// while ((e = start.AddMinutes(duration)) <= end && start <= end.AddMinutes(-1 * duration))
|
||||
// {
|
||||
// result.AddIfNotIn(CreateRecurrenceCriterion(start, e));
|
||||
|
||||
// start = start.AddMinutes(intervalBuffer);
|
||||
// }
|
||||
//}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static ICriterion CreateRecurrenceCriterion(DateTime start, DateTime end)
|
||||
{
|
||||
var recurrenceBetween = $"'{start:yyyy-MM-dd HH:mm:ss}' BETWEEN STR_TO_DATE(SUBSTRING(RecurrenceInfo, 24, 19), '%m/%d/%Y %H:%i:%s') AND STR_TO_DATE(SUBSTRING(RecurrenceInfo, 50, 19), '%m/%d/%Y %H:%i:%s')";
|
||||
var recurrenceAfter = $"'{start:yyyy-MM-dd HH:mm:ss}' > STR_TO_DATE(SUBSTRING(RecurrenceInfo, 24, 19), '%m/%d/%Y %H:%i:%s')";
|
||||
|
||||
var result = Restrictions.Or(
|
||||
Restrictions.And(
|
||||
Restrictions.Not(Restrictions.Like(nameof(SchedulerAppointment.RecurrenceInfo), "Range", MatchMode.Anywhere)),
|
||||
Restrictions.Like(nameof(SchedulerAppointment.RecurrenceInfo), "OccurrenceCount=\"10\"", MatchMode.Anywhere)),
|
||||
Restrictions.Or(
|
||||
Restrictions.Or(
|
||||
Restrictions.And(Restrictions.Lt(nameof(SchedulerAppointment.StartDate), end), Restrictions.Ge(nameof(SchedulerAppointment.EndDate), start)),
|
||||
Restrictions.Or(Restrictions.And(
|
||||
Restrictions.Like(nameof(SchedulerAppointment.RecurrenceInfo), "End", MatchMode.Anywhere),
|
||||
Restrictions.And(Restrictions.IsNotNull(nameof(SchedulerAppointment.RecurrenceInfo)), Expression.Sql(new SqlString(recurrenceBetween)))
|
||||
), Restrictions.And(
|
||||
Restrictions.And(
|
||||
Restrictions.IsNotNull(nameof(SchedulerAppointment.RecurrenceInfo)),
|
||||
Restrictions.Not(Restrictions.Like(nameof(SchedulerAppointment.RecurrenceInfo), "End", MatchMode.Anywhere))),
|
||||
Expression.Sql(recurrenceAfter)))
|
||||
),
|
||||
Restrictions.And(Restrictions.Eq(nameof(SchedulerAppointment.Type), 3), Expression.Sql(new SqlString(recurrenceBetween)))));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static Dictionary<DateTime, List<DateTimeSpan>> CreateFreeIntervalsDictionary(IEnumerable<DateTimeSpan> freeIntervals)
|
||||
{
|
||||
var result = new Dictionary<DateTime, List<DateTimeSpan>>();
|
||||
|
||||
var groupedIntervals = from dateTimeSpan in freeIntervals group dateTimeSpan by dateTimeSpan.StartDate.Date;
|
||||
|
||||
var unsortedDictionary = new Dictionary<DateTime, List<DateTimeSpan>>();
|
||||
|
||||
foreach (var grouping in groupedIntervals)
|
||||
{
|
||||
var orderedList = grouping.OrderBy(dateTimeSpan => dateTimeSpan.StartDate).ToList();
|
||||
|
||||
unsortedDictionary.AddOrUpdateValueInDictionary(grouping.Key, orderedList);
|
||||
}
|
||||
|
||||
var keys = unsortedDictionary.Keys.OrderBy(key => key.Date).ToList();
|
||||
|
||||
foreach (var key in keys)
|
||||
{
|
||||
result.Add(key, unsortedDictionary[key]);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static List<DateTimeSpan> CreateIntervals(int duration, DateTime intervalStart, DateTime intervalEnd, bool skipWeekends, int intervalBuffer)
|
||||
{
|
||||
var result = new List<DateTimeSpan>();
|
||||
|
||||
if (duration > 0 && intervalStart < intervalEnd && intervalBuffer > 10)
|
||||
{
|
||||
var timeSpan = intervalEnd - intervalStart;
|
||||
|
||||
var totalDays = Convert.ToInt32(Math.Ceiling(timeSpan.TotalDays));
|
||||
|
||||
for (var i = 0; i < totalDays; i++)
|
||||
{
|
||||
var start = intervalStart.AddDays(i).MergeDatesByDate(intervalStart);
|
||||
|
||||
if (skipWeekends && (start.DayOfWeek == DayOfWeek.Saturday || start.DayOfWeek == DayOfWeek.Sunday))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
DateTime e;
|
||||
var end = start.MergeDatesByDate(intervalEnd);
|
||||
|
||||
while ((e = start.AddMinutes(duration)) <= end && start <= end.AddMinutes(-1 * duration))
|
||||
{
|
||||
result.Add(new DateTimeSpan(start, e));
|
||||
|
||||
start = start.AddMinutes(intervalBuffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static List<DateTimeSpan> GenereateIntervalsForChecking(DateTime intervalStart, DateTime intervalEnd)
|
||||
{
|
||||
var start = intervalStart.Date;
|
||||
var end = intervalEnd.Date;
|
||||
|
||||
var result = new List<DateTimeSpan>();
|
||||
|
||||
if (end < start)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
var days = Convert.ToInt32((end - start).TotalDays);
|
||||
|
||||
if (days == 0)
|
||||
{
|
||||
days = 1;
|
||||
}
|
||||
|
||||
var rest = days % 6;
|
||||
var limit = (days - rest) / 6;
|
||||
|
||||
var s = start;
|
||||
DateTime e;
|
||||
|
||||
for (var i = 0; i < limit; i++)
|
||||
{
|
||||
e = s.AddDays(5);
|
||||
|
||||
result.Add(new DateTimeSpan(s, e));
|
||||
|
||||
s = e.AddDays(1);
|
||||
}
|
||||
|
||||
if (rest > 0)
|
||||
{
|
||||
e = s.AddDays(rest);
|
||||
|
||||
if (rest == 1)
|
||||
{
|
||||
e = e.AddDays(-1);
|
||||
}
|
||||
|
||||
result.Add(new DateTimeSpan(s, e));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static IEnumerable<SchedulerAppointment> CalculateRecurrences(IEnumerable<SchedulerAppointment> appointments, DateTime start, DateTime end, IReadOnlyCollection<RecurrenceInformation> changedOccurrences, IReadOnlyCollection<RecurrenceInformation> deletedOccurrences)
|
||||
{
|
||||
var result = new List<SchedulerAppointment>();
|
||||
|
||||
var interval = new TimeInterval(start, end);
|
||||
|
||||
foreach (var appointment in appointments.Where(app => app.RecurrenceInfo != null && app.Type == 1 && app.StartDate.HasValue && app.EndDate.HasValue))
|
||||
{
|
||||
var recurrenceInfo = new RecurrenceInfo();
|
||||
recurrenceInfo.FromXml(appointment.RecurrenceInfo);
|
||||
var occurrenceCalculator = OccurrenceCalculator.CreateInstance(recurrenceInfo);
|
||||
|
||||
var pattern = StaticAppointmentFactory.CreateAppointment(AppointmentType.Pattern);
|
||||
pattern.RecurrenceInfo.FromXml(appointment.RecurrenceInfo);
|
||||
pattern.Start = pattern.RecurrenceInfo.Start;
|
||||
pattern.End = pattern.RecurrenceInfo.End;
|
||||
var patternId = pattern.RecurrenceInfo.Id.ToString();
|
||||
|
||||
var occurrences = occurrenceCalculator.CalcOccurrences(interval, pattern);
|
||||
|
||||
if (occurrences.Count > 0)
|
||||
{
|
||||
foreach (var app in occurrences.GetAppointments(interval))
|
||||
{
|
||||
if(appointment.EndDate == null || appointment.StartDate == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var index = app.RecurrenceIndex;
|
||||
|
||||
var duration = (appointment.EndDate.Value - appointment.StartDate.Value).TotalMinutes;
|
||||
|
||||
var s = app.Start;
|
||||
var e = app.Start.AddMinutes(duration);
|
||||
|
||||
var isOutOfInterval = s.AreInBetweenDates(e, start, end) == false;
|
||||
var isChangedOccurrence = changedOccurrences.Any(a => a.PatternId.Equals(patternId) && a.Index == index);
|
||||
var isDeletedOccurrence = deletedOccurrences.Any(a => a.PatternId.Equals(patternId) && a.Index == index);
|
||||
|
||||
if (isOutOfInterval || isChangedOccurrence || isDeletedOccurrence)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var recurringAppointment = new SchedulerAppointment
|
||||
{
|
||||
AllDay = appointment.AllDay,
|
||||
CustomerList = appointment.CustomerList,
|
||||
Notice = appointment.Notice,
|
||||
EmployeeList = appointment.EmployeeList,
|
||||
EndDate = app.Start.AddMinutes(duration),
|
||||
FormerBookingSequenceOid = appointment.FormerBookingSequenceOid,
|
||||
IsPrivate = appointment.IsPrivate,
|
||||
Location = appointment.Location,
|
||||
Originator = appointment.Originator,
|
||||
RecurrenceInfo = app.RecurrenceInfo.ToXml(),
|
||||
ReminderInfo = appointment.ReminderInfo,
|
||||
ResourceList = appointment.ResourceList,
|
||||
StartDate = app.Start,
|
||||
Subject = appointment.Subject ?? string.Empty,
|
||||
Type = appointment.Type
|
||||
};
|
||||
|
||||
result.AddIfNotIn(recurringAppointment);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static IEnumerable<SchedulerAppointment> GetRecurrencesForIntervalFinder(List<SchedulerAppointment> appointments, DateTime startDate, DateTime endDate, IReadOnlyCollection<RecurrenceInformation> changedOccurrences, IReadOnlyCollection<RecurrenceInformation> deletedOccurrences, bool skipWeekends)
|
||||
{
|
||||
var result = new List<SchedulerAppointment>();
|
||||
|
||||
var dayCount = Convert.ToInt32(Math.Ceiling((endDate - startDate).TotalDays));
|
||||
|
||||
if (dayCount <= 0)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
for (var i = 0; i < dayCount; i++)
|
||||
{
|
||||
var start = startDate.AddDays(i);
|
||||
|
||||
if (skipWeekends && (start.DayOfWeek == DayOfWeek.Saturday || start.DayOfWeek == DayOfWeek.Sunday))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var end = start.MergeDatesByDate(endDate);
|
||||
|
||||
var calculatedRecurrences = CalculateRecurrences(appointments, start, end, changedOccurrences, deletedOccurrences);
|
||||
|
||||
result.AddRange(calculatedRecurrences);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
28
Data/packages.config
Normal file
28
Data/packages.config
Normal file
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="ClrHeapAllocationAnalyzer" version="3.0.0" targetFramework="net472" />
|
||||
<package id="EntityFramework" version="6.4.0" targetFramework="net45" />
|
||||
<package id="Microsoft.AspNet.Providers.Core" version="2.0.0" targetFramework="net45" />
|
||||
<package id="Microsoft.CodeAnalysis" version="3.4.0" targetFramework="net472" />
|
||||
<package id="Microsoft.CodeAnalysis.Analyzers" version="2.9.6" targetFramework="net472" developmentDependency="true" />
|
||||
<package id="Microsoft.CodeAnalysis.Common" version="3.4.0" targetFramework="net472" />
|
||||
<package id="Microsoft.CodeAnalysis.CSharp" version="3.4.0" targetFramework="net472" />
|
||||
<package id="Microsoft.CodeAnalysis.CSharp.Workspaces" version="3.4.0" targetFramework="net472" />
|
||||
<package id="Microsoft.CodeAnalysis.VisualBasic" version="3.4.0" targetFramework="net472" />
|
||||
<package id="Microsoft.CodeAnalysis.VisualBasic.Workspaces" version="3.4.0" targetFramework="net472" />
|
||||
<package id="Microsoft.CodeAnalysis.Workspaces.Common" version="3.4.0" targetFramework="net472" />
|
||||
<package id="System.Buffers" version="4.4.0" targetFramework="net472" />
|
||||
<package id="System.Collections.Immutable" version="1.5.0" targetFramework="net472" />
|
||||
<package id="System.Composition" version="1.0.31" targetFramework="net472" />
|
||||
<package id="System.Composition.AttributedModel" version="1.0.31" targetFramework="net472" />
|
||||
<package id="System.Composition.Convention" version="1.0.31" targetFramework="net472" />
|
||||
<package id="System.Composition.Hosting" version="1.0.31" targetFramework="net472" />
|
||||
<package id="System.Composition.Runtime" version="1.0.31" targetFramework="net472" />
|
||||
<package id="System.Composition.TypedParts" version="1.0.31" targetFramework="net472" />
|
||||
<package id="System.Memory" version="4.5.3" targetFramework="net472" />
|
||||
<package id="System.Numerics.Vectors" version="4.4.0" targetFramework="net472" />
|
||||
<package id="System.Reflection.Metadata" version="1.6.0" targetFramework="net472" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.2" targetFramework="net472" />
|
||||
<package id="System.Text.Encoding.CodePages" version="4.5.1" targetFramework="net472" />
|
||||
<package id="System.Threading.Tasks.Extensions" version="4.5.3" targetFramework="net472" />
|
||||
</packages>
|
||||
36
Model/Changes_2022_02_11_ContractHistory.txt
Normal file
36
Model/Changes_2022_02_11_ContractHistory.txt
Normal file
@@ -0,0 +1,36 @@
|
||||
CREATE TABLE `contracthistory` (
|
||||
`Oid` bigint NOT NULL AUTO_INCREMENT,
|
||||
`Tid` int NOT NULL,
|
||||
`ContractHistoryEmployeeOid` bigint DEFAULT NULL,
|
||||
`ContractHistoryEmploymentTypeOid` bigint DEFAULT NULL,
|
||||
`Notice` mediumtext,
|
||||
`ChangeType` tinyint NOT NULL DEFAULT '0',
|
||||
`ContractHistoryHourlyRate` decimal(18,10) DEFAULT NULL,
|
||||
`ContractHistoryEntryDate` datetime DEFAULT NULL,
|
||||
`ContractHistoryContractEndDate` datetime DEFAULT NULL,
|
||||
`ContractHistoryCancellationPeriod` int DEFAULT NULL,
|
||||
`ContractHistoryProbationPeriod` int DEFAULT NULL,
|
||||
`ContractHistoryWeeklyFls` decimal(18,10) DEFAULT NULL,
|
||||
`ContractHistoryWeeklyTotalhours` decimal(18,10) DEFAULT NULL,
|
||||
`ContractHistoryLeaveDays` decimal(18,10) DEFAULT NULL,
|
||||
`InsTs` datetime DEFAULT NULL,
|
||||
`InsUser` varchar(256) DEFAULT NULL,
|
||||
`Version` bigint DEFAULT NULL,
|
||||
`UdpUser` varchar(256) DEFAULT NULL,
|
||||
`IsActive` tinyint DEFAULT NULL,
|
||||
`SystemEntryID` int DEFAULT NULL,
|
||||
`ContractHistoryWeeklyDays` int DEFAULT NULL,
|
||||
`ContractHistoryMonthlyTotalHours` decimal(18,10) DEFAULT NULL,
|
||||
`ContractHistoryMonthlyFLS` decimal(18,10) DEFAULT NULL,
|
||||
`ContractHistoryHourlyRateCostRateValueOid` bigint DEFAULT NULL,
|
||||
`ContractHistoryProbationPeriod2` decimal(18,10) DEFAULT NULL,
|
||||
`ContractHistoryContractTypeValueListEntryOid` bigint DEFAULT NULL,
|
||||
`ContractHistoryQualifikationsBedarfValueListEntryOid` bigint DEFAULT NULL,
|
||||
PRIMARY KEY (`Oid`))
|
||||
ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
|
||||
|
||||
ALTER TABLE `bewodemo`.`contracthistory`
|
||||
ADD COLUMN `UpdTs` DATETIME NULL DEFAULT NULL AFTER `ContractHistoryQualifikationsBedarfValueListEntryOid`;
|
||||
|
||||
ALTER TABLE `bewodemo`.`contracthistory`
|
||||
CHANGE COLUMN `UpdTs` `UpdTs` DATETIME NULL DEFAULT NULL AFTER `UdpUser`;
|
||||
@@ -211,7 +211,11 @@ namespace BeWo.Report.ReportObjects
|
||||
lResult.OrganisationDebitorNumber = org.DebitorNumber;
|
||||
lResult.OrganisationCostCenter = org.CostCenter;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
lResult.OrganisationDebitorNumber = "";
|
||||
lResult.OrganisationCostCenter = "";
|
||||
}
|
||||
lResult.AccountingPeriod = String.Format("{0:dd.MM.yyyy}-{1:dd.MM.yyyy}", pDC.InvoiceBase.AccountingPeriodStart, pDC.InvoiceBase.AccountingPeriodEnd);
|
||||
|
||||
lResult.AccountingPeriodStart = pDC.InvoiceBase.AccountingPeriodStart.Value;
|
||||
|
||||
25
Report/packages.config
Normal file
25
Report/packages.config
Normal file
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Microsoft.CodeAnalysis" version="3.4.0" targetFramework="net472" />
|
||||
<package id="Microsoft.CodeAnalysis.Analyzers" version="2.9.6" targetFramework="net472" developmentDependency="true" />
|
||||
<package id="Microsoft.CodeAnalysis.Common" version="3.4.0" targetFramework="net472" />
|
||||
<package id="Microsoft.CodeAnalysis.CSharp" version="3.4.0" targetFramework="net472" />
|
||||
<package id="Microsoft.CodeAnalysis.CSharp.Workspaces" version="3.4.0" targetFramework="net472" />
|
||||
<package id="Microsoft.CodeAnalysis.VisualBasic" version="3.4.0" targetFramework="net472" />
|
||||
<package id="Microsoft.CodeAnalysis.VisualBasic.Workspaces" version="3.4.0" targetFramework="net472" />
|
||||
<package id="Microsoft.CodeAnalysis.Workspaces.Common" version="3.4.0" targetFramework="net472" />
|
||||
<package id="System.Buffers" version="4.4.0" targetFramework="net472" />
|
||||
<package id="System.Collections.Immutable" version="1.5.0" targetFramework="net472" />
|
||||
<package id="System.Composition" version="1.0.31" targetFramework="net472" />
|
||||
<package id="System.Composition.AttributedModel" version="1.0.31" targetFramework="net472" />
|
||||
<package id="System.Composition.Convention" version="1.0.31" targetFramework="net472" />
|
||||
<package id="System.Composition.Hosting" version="1.0.31" targetFramework="net472" />
|
||||
<package id="System.Composition.Runtime" version="1.0.31" targetFramework="net472" />
|
||||
<package id="System.Composition.TypedParts" version="1.0.31" targetFramework="net472" />
|
||||
<package id="System.Memory" version="4.5.3" targetFramework="net472" />
|
||||
<package id="System.Numerics.Vectors" version="4.4.0" targetFramework="net472" />
|
||||
<package id="System.Reflection.Metadata" version="1.6.0" targetFramework="net472" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.2" targetFramework="net472" />
|
||||
<package id="System.Text.Encoding.CodePages" version="4.5.1" targetFramework="net472" />
|
||||
<package id="System.Threading.Tasks.Extensions" version="4.5.3" targetFramework="net472" />
|
||||
</packages>
|
||||
@@ -50,6 +50,7 @@
|
||||
<ItemGroup>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Service\CustomCustomerService.cs" />
|
||||
<Compile Include="Service\CustomEmployeeService.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Data\Data.csproj">
|
||||
|
||||
@@ -30,22 +30,22 @@ namespace AutismusKoelnBonn
|
||||
var folder_01_06 = CreateBeWoFolder("Vollmachten", cOid, folder_01.Oid);
|
||||
|
||||
//Ordner 2
|
||||
var folder_02 = CreateBeWoFolder("Verwaltungsdaten", cOid, null);
|
||||
var folder_02 = CreateBeWoFolder("Verwaltungsdaten - moveAUT", cOid, null);
|
||||
var folder_02_01 = CreateBeWoFolder("Erstkontakt bis Betreuungsbeginn", cOid, folder_02.Oid);
|
||||
var folder_02_02 = CreateBeWoFolder("Verträge mit Leistungsanbieter", cOid, folder_02.Oid);
|
||||
var folder_02_02_01 = CreateBeWoFolder("Betreuung", cOid, folder_02_02.Oid);
|
||||
var folder_02_02_02 = CreateBeWoFolder("Therapie", cOid, folder_02_02.Oid);
|
||||
var folder_02_02_03 = CreateBeWoFolder("Wohnen", cOid, folder_02_02.Oid);
|
||||
var folder_02_02_04 = CreateBeWoFolder("Einverständiserklärung", cOid, folder_02_02.Oid);
|
||||
var folder_02_02_04 = CreateBeWoFolder("Einverständniserklärung", cOid, folder_02_02.Oid);
|
||||
var folder_02_03 = CreateBeWoFolder("Leistungsträger (LT) - chron. Aufzählung (Ablage nach Datum)", cOid, folder_02.Oid);
|
||||
var folder_02_03_01 = CreateBeWoFolder("Selbstzahler", cOid, folder_02_03.Oid);
|
||||
var folder_02_03_01_01 = CreateBeWoFolder("Hilfeplangespräche", cOid, folder_02_03_01.Oid);
|
||||
var folder_02_03_01_02 = CreateBeWoFolder("Sachstandsbericht", cOid, folder_02_03_01.Oid);
|
||||
var folder_02_03_01_03 = CreateBeWoFolder("Kostenübernehme / Bewilligungen", cOid, folder_02_03_01.Oid);
|
||||
var folder_02_03_01_03 = CreateBeWoFolder("Kostenübernahme / Bewilligungen", cOid, folder_02_03_01.Oid);
|
||||
var folder_02_03_01_04 = CreateBeWoFolder("Rechnungswesen", cOid, folder_02_03_01.Oid);
|
||||
var folder_02_03_01_04_01 = CreateBeWoFolder("Leistungsnachweise", cOid, folder_02_03_01_04.Oid);
|
||||
var folder_02_03_01_04_02 = CreateBeWoFolder("Rechnungen", cOid, folder_02_03_01_04.Oid);
|
||||
var folder_02_03_01_04_03 = CreateBeWoFolder("Monatsabrechnungen", cOid, folder_02_03_01_04.Oid);
|
||||
var folder_02_03_01_04_03 = CreateBeWoFolder("Monatsabrechnung", cOid, folder_02_03_01_04.Oid);
|
||||
var folder_02_03_01_04_04 = CreateBeWoFolder("Eigenanteil", cOid, folder_02_03_01_04.Oid);
|
||||
var folder_02_03_01_05 = CreateBeWoFolder("Kommunikation/Schriftverkehr mit LT", cOid, folder_02_03_01.Oid);
|
||||
var folder_02_03_01_06 = CreateBeWoFolder("Abschlussbericht", cOid, folder_02_03_01.Oid);
|
||||
@@ -57,7 +57,7 @@ namespace AutismusKoelnBonn
|
||||
var folder_02_03_02_04 = CreateBeWoFolder("Rechnungswesen", cOid, folder_02_03_02.Oid);
|
||||
var folder_02_03_02_04_01 = CreateBeWoFolder("Leistungsnachweise", cOid, folder_02_03_02_04.Oid);
|
||||
var folder_02_03_02_04_02 = CreateBeWoFolder("Rechnungen", cOid, folder_02_03_02_04.Oid);
|
||||
var folder_02_03_02_04_03 = CreateBeWoFolder("Monatsabrechnungen", cOid, folder_02_03_02_04.Oid);
|
||||
var folder_02_03_02_04_03 = CreateBeWoFolder("Monatsabrechnung", cOid, folder_02_03_02_04.Oid);
|
||||
var folder_02_03_02_04_04 = CreateBeWoFolder("Eigenanteil", cOid, folder_02_03_02_04.Oid);
|
||||
var folder_02_03_02_05 = CreateBeWoFolder("Kommunikation/Schriftverkehr mit LT", cOid, folder_02_03_02.Oid);
|
||||
var folder_02_03_02_06 = CreateBeWoFolder("Abschlussbericht", cOid, folder_02_03_02.Oid);
|
||||
@@ -65,7 +65,7 @@ namespace AutismusKoelnBonn
|
||||
var folder_02_03_03 = CreateBeWoFolder("LVR / LWL", cOid, folder_02_03.Oid);
|
||||
var folder_02_03_03_01 = CreateBeWoFolder("Bedarfsanzeigen", cOid, folder_02_03_03.Oid);
|
||||
var folder_02_03_03_02 = CreateBeWoFolder("Antrag BEI_NRW / IHP", cOid, folder_02_03_03.Oid);
|
||||
var folder_02_03_03_03 = CreateBeWoFolder("Antrag BEI_NRW", cOid, folder_02_03_03.Oid);
|
||||
var folder_02_03_03_03 = CreateBeWoFolder("Anlagen BEI_NRW", cOid, folder_02_03_03.Oid);
|
||||
var folder_02_03_03_03_01 = CreateBeWoFolder("Vorlage Checkliste Blanko", cOid, folder_02_03_03_03.Oid);
|
||||
var folder_02_03_03_03_02 = CreateBeWoFolder("Fachärztliche Stellungsnahme", cOid, folder_02_03_03_03.Oid);
|
||||
var folder_02_03_03_03_03 = CreateBeWoFolder("Grundsicherung", cOid, folder_02_03_03_03.Oid);
|
||||
@@ -99,11 +99,11 @@ namespace AutismusKoelnBonn
|
||||
var folder_02_03_05 = CreateBeWoFolder("Sozialamt", cOid, folder_02_03.Oid);
|
||||
var folder_02_03_05_01 = CreateBeWoFolder("Hilfeplangespräche", cOid, folder_02_03_05.Oid);
|
||||
var folder_02_03_05_02 = CreateBeWoFolder("Sachstandsbericht", cOid, folder_02_03_05.Oid);
|
||||
var folder_02_03_05_03 = CreateBeWoFolder("Kostenübernahme", cOid, folder_02_03_05.Oid);
|
||||
var folder_02_03_05_03 = CreateBeWoFolder("Kostenübernahme / Bewilligungen", cOid, folder_02_03_05.Oid);
|
||||
var folder_02_03_05_04 = CreateBeWoFolder("Rechnungswesen", cOid, folder_02_03_05.Oid);
|
||||
var folder_02_03_05_05_01 = CreateBeWoFolder("Leistungsnachweise", cOid, folder_02_03_05_04.Oid);
|
||||
var folder_02_03_05_05_02 = CreateBeWoFolder("Rechnungen", cOid, folder_02_03_05_04.Oid);
|
||||
var folder_02_03_05_05_03 = CreateBeWoFolder("Monatsabrechnungen", cOid, folder_02_03_05_04.Oid);
|
||||
var folder_02_03_05_05_03 = CreateBeWoFolder("Monatsabrechnung", cOid, folder_02_03_05_04.Oid);
|
||||
var folder_02_03_05_05_04 = CreateBeWoFolder("Eigenanteil", cOid, folder_02_03_05_04.Oid);
|
||||
var folder_02_03_05_05 = CreateBeWoFolder("Kommunikation / Schriftverkehr mit LT", cOid, folder_02_03_05.Oid);
|
||||
var folder_02_03_05_06 = CreateBeWoFolder("Abschlussbericht", cOid, folder_02_03_05.Oid);
|
||||
@@ -149,11 +149,18 @@ namespace AutismusKoelnBonn
|
||||
var folder_03_05_03 = CreateBeWoFolder("Gruppenangbote", cOid, folder_03_05.Oid);
|
||||
var folder_03_05_04 = CreateBeWoFolder("Andere", cOid, folder_03_05.Oid);
|
||||
|
||||
var folder_03_06 = CreateBeWoFolder("Rechtliche Betreuung", cOid, folder_03.Oid);
|
||||
var folder_03_06_01 = CreateBeWoFolder("Bestellungsurkunde", cOid, folder_03_06.Oid);
|
||||
var folder_03_06_02 = CreateBeWoFolder("Kommunikation / Schriftverkehr", cOid, folder_03_06.Oid);
|
||||
var folder_03_06_03 = CreateBeWoFolder("Protokolle", cOid, folder_03_06.Oid);
|
||||
var folder_03_06_04 = CreateBeWoFolder("Absprachen", cOid, folder_03_06.Oid);
|
||||
// Unklar ob Ordner 1st oder 2nd Level
|
||||
var folder_035 = CreateBeWoFolder("Rechtliche Betreuung", cOid, null);
|
||||
var folder_035_01 = CreateBeWoFolder("Bestellungsurkunde", cOid, folder_035.Oid);
|
||||
var folder_035_02 = CreateBeWoFolder("Kommunikation / Schriftverkehr", cOid, folder_035.Oid);
|
||||
var folder_035_03 = CreateBeWoFolder("Protokolle", cOid, folder_035.Oid);
|
||||
var folder_035_04 = CreateBeWoFolder("Absprachen", cOid, folder_035.Oid);
|
||||
|
||||
//var folder_03_06 = CreateBeWoFolder("Rechtliche Betreuung", cOid, folder_03.Oid);
|
||||
//var folder_03_06_01 = CreateBeWoFolder("Bestellungsurkunde", cOid, folder_03_06.Oid);
|
||||
//var folder_03_06_02 = CreateBeWoFolder("Kommunikation / Schriftverkehr", cOid, folder_03_06.Oid);
|
||||
//var folder_03_06_03 = CreateBeWoFolder("Protokolle", cOid, folder_03_06.Oid);
|
||||
//var folder_03_06_04 = CreateBeWoFolder("Absprachen", cOid, folder_03_06.Oid);
|
||||
|
||||
var folder_04 = CreateBeWoFolder("Therapeutische Daten", cOid, null);
|
||||
var folder_04_01 = CreateBeWoFolder("Anamnese, Assessments", cOid, folder_04.Oid);
|
||||
|
||||
122
ReportImp/AutismusKoelnBonn/Service/CustomEmployeeService.cs
Normal file
122
ReportImp/AutismusKoelnBonn/Service/CustomEmployeeService.cs
Normal file
@@ -0,0 +1,122 @@
|
||||
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.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AutismusKoelnBonn
|
||||
{
|
||||
public class CustomEmployeeService : EmployeeService
|
||||
{
|
||||
public override long InsertNewEmployee(EmployeeDC pEmployeeDC)
|
||||
{
|
||||
var eOid = base.InsertNewEmployee(pEmployeeDC);
|
||||
|
||||
var folder01 = CreateBeWoFolder("Teil 1: Personalführung", eOid, null);
|
||||
var folder01_01 = CreateBeWoFolder("Personaldaten", eOid, folder01.Oid);
|
||||
var folder01_02 = CreateBeWoFolder("Vertragsdaten", eOid, folder01.Oid);
|
||||
var folder01_02_01 = CreateBeWoFolder("Arbeitsvertrag und Anlagen", eOid, folder01_02.Oid);
|
||||
var folder01_02_02 = CreateBeWoFolder("Arbeitsmaterialien", eOid, folder01_02.Oid);
|
||||
var folder01_02_03 = CreateBeWoFolder("Anstellungsschreiben", eOid, folder01_02.Oid);
|
||||
var folder01_02_04 = CreateBeWoFolder("sämtliche Vertragsänderungen der Folgezeit", eOid, folder01_02.Oid);
|
||||
var folder01_02_05 = CreateBeWoFolder("Vollmachten", eOid, folder01_02.Oid);
|
||||
var folder01_02_06 = CreateBeWoFolder("Verschwiegenheitsverpflichtungen", eOid, folder01_02.Oid);
|
||||
var folder01_02_07 = CreateBeWoFolder("Zurverfügungsstellung eines Dienstwagens", eOid, folder01_02.Oid);
|
||||
var folder01_02_08 = CreateBeWoFolder("Kündigung, Aufhebungsvereinbarung", eOid, folder01_02.Oid);
|
||||
|
||||
var folder01_03 = CreateBeWoFolder("Entwicklungsdaten", eOid, folder01.Oid);
|
||||
var folder01_03_01 = CreateBeWoFolder("Seminarbesuche", eOid, folder01_03.Oid);
|
||||
var folder01_03_02 = CreateBeWoFolder("Aus- und Weiterbildungsmaßnahmen", eOid, folder01_03.Oid);
|
||||
var folder01_03_03 = CreateBeWoFolder("Mitarbeitergespräche", eOid, folder01_03.Oid);
|
||||
var folder01_03_04 = CreateBeWoFolder("Beurteilungen", eOid, folder01_03.Oid);
|
||||
var folder01_03_05 = CreateBeWoFolder("Zwischenzeugnisse", eOid, folder01_03.Oid);
|
||||
var folder01_03_06 = CreateBeWoFolder("Endzeugnis", eOid, folder01_03.Oid);
|
||||
var folder01_03_07 = CreateBeWoFolder("Disziplinarmaßnahmen", eOid, folder01_03.Oid);
|
||||
var folder01_03_08 = CreateBeWoFolder("Abmahnungen", eOid, folder01_03.Oid);
|
||||
var folder01_03_09 = CreateBeWoFolder("Beförderungsvorschläge", eOid, folder01_03.Oid);
|
||||
|
||||
var folder01_04 = CreateBeWoFolder("Allgemeindaten", eOid, folder01.Oid);
|
||||
var folder01_04_01 = CreateBeWoFolder("Bescheinigungen", eOid, folder01_04.Oid);
|
||||
var folder01_04_02 = CreateBeWoFolder("Arbeits-/Aufenthaltserlaubnisse", eOid, folder01_04.Oid);
|
||||
var folder01_04_03 = CreateBeWoFolder("Pfändungen, Vorschüsse", eOid, folder01_04.Oid);
|
||||
var folder01_04_04 = CreateBeWoFolder("Personalmeldungen", eOid, folder01_04.Oid);
|
||||
var folder01_04_05 = CreateBeWoFolder("Vermerke über Fehlzeiten, wie Arbeitsunfähigkeit und Urlaub", eOid, folder01_04.Oid);
|
||||
var folder01_04_06 = CreateBeWoFolder("Urlaubsanträge", eOid, folder01_04.Oid);
|
||||
var folder01_04_07 = CreateBeWoFolder("Unfallanzeigen und Untersuchungsbefunde", eOid, folder01_04.Oid);
|
||||
var folder01_04_08 = CreateBeWoFolder("Werkwohnung", eOid, folder01_04.Oid);
|
||||
var folder01_04_09 = CreateBeWoFolder("Jubiläen", eOid, folder01_04.Oid);
|
||||
var folder01_04_010 = CreateBeWoFolder("Beihilfen und Darlehen", eOid, folder01_04.Oid);
|
||||
var folder01_04_011 = CreateBeWoFolder("Schriftverkehr mit den Mitarbeitern", eOid, folder01_04.Oid);
|
||||
var folder01_04_012 = CreateBeWoFolder("Schriftverkehr mit Dritten bezüglich des Arbeitnehmers", eOid, folder01_04.Oid);
|
||||
var folder01_04_013 = CreateBeWoFolder("Durchschriften über Betriebsratsanhörungen und Betriebsratsinformation", eOid, folder01_04.Oid);
|
||||
|
||||
var folder01_05 = CreateBeWoFolder("Vorvertragsdaten", eOid, folder01.Oid);
|
||||
var folder01_05_01 = CreateBeWoFolder("Bewerbungsunterlagen (Bewerbungsschreiben, Zeugnisse, Referenzen, Lebenslauf, Lichtbild)", eOid, folder01_05.Oid);
|
||||
var folder01_05_02 = CreateBeWoFolder("Interviewbogen mit Stellungnahmen beteiligter Gesprächspartner", eOid, folder01_05.Oid);
|
||||
var folder01_05_03 = CreateBeWoFolder("Personalfragebogen", eOid, folder01_05.Oid);
|
||||
var folder01_05_04 = CreateBeWoFolder("Eignungstest", eOid, folder01_05.Oid);
|
||||
var folder01_05_05 = CreateBeWoFolder("ärztliche Tauglichkeitsfeststellungen, Gutachten und Befunde", eOid, folder01_05.Oid);
|
||||
var folder01_05_06 = CreateBeWoFolder("Auskünfte Dritter", eOid, folder01_05.Oid);
|
||||
var folder01_05_07 = CreateBeWoFolder("allgemeine Bewerbungskorrespondenz und Regulierung der Vorstellungskosten", eOid, folder01_05.Oid);
|
||||
|
||||
|
||||
var folder02 = CreateBeWoFolder("Teil 2: Abrechnung", eOid, null);
|
||||
var folder02_01 = CreateBeWoFolder("Stammdaten", eOid, folder02.Oid);
|
||||
var folder02_01_01 = CreateBeWoFolder("Lohn-/Gehaltsvereinbarungen", eOid, folder02_01.Oid);
|
||||
var folder02_01_02 = CreateBeWoFolder("Entgeltänderungen", eOid, folder02_01.Oid);
|
||||
var folder02_01_03 = CreateBeWoFolder("Versetzungsmeldung", eOid, folder02_01.Oid);
|
||||
|
||||
var folder02_02 = CreateBeWoFolder("Variable Daten", eOid, folder02.Oid);
|
||||
var folder02_02_01 = CreateBeWoFolder("vorübergehende Gehaltskürzung", eOid, folder02_02.Oid);
|
||||
var folder02_02_02 = CreateBeWoFolder("Prämien", eOid, folder02_02.Oid);
|
||||
var folder02_02_03 = CreateBeWoFolder("Sonderzahlungen", eOid, folder02_02.Oid);
|
||||
var folder02_02_04 = CreateBeWoFolder("Fahrgelderstattung", eOid, folder02_02.Oid);
|
||||
var folder02_02_05 = CreateBeWoFolder("sonstige Aufwandserstattung", eOid, folder02_02.Oid);
|
||||
var folder02_02_06 = CreateBeWoFolder("Lohnzettel", eOid, folder02_02.Oid);
|
||||
|
||||
var folder02_03 = CreateBeWoFolder("Überweisungsdaten", eOid, folder02.Oid);
|
||||
var folder02_03_01 = CreateBeWoFolder("Vermögensbildung", eOid, folder02_03.Oid);
|
||||
var folder02_03_02 = CreateBeWoFolder("Sozialversicherung", eOid, folder02_03.Oid);
|
||||
var folder02_03_03 = CreateBeWoFolder("sonstige Versicherungen", eOid, folder02_03.Oid);
|
||||
var folder02_03_04 = CreateBeWoFolder("Mieten", eOid, folder02_03.Oid);
|
||||
var folder02_03_05 = CreateBeWoFolder("Pfändungen", eOid, folder02_03.Oid);
|
||||
var folder02_03_06 = CreateBeWoFolder("Darlehensrückzahlung", eOid, folder02_03.Oid);
|
||||
|
||||
var folder02_04 = CreateBeWoFolder("Lohnsteuer (ELStAM-Verfahren)", eOid, folder02.Oid);
|
||||
var folder02_04_01 = CreateBeWoFolder("Identifikationsnummer des Arbeitsnehmers", eOid, folder02_04.Oid);
|
||||
var folder02_04_02 = CreateBeWoFolder("melderechtliches Geburtsdatum", eOid, folder02_04.Oid);
|
||||
var folder02_04_03 = CreateBeWoFolder("Tag des Beginns des Dienstverhältnisses", eOid, folder02_04.Oid);
|
||||
var folder02_04_04 = CreateBeWoFolder("Angabe, ob es sich um ein erstes oder weiteres Dienstverhältnis handelt", eOid, folder02_04.Oid);
|
||||
var folder02_04_05 = CreateBeWoFolder("Angabe, ob und in welcher Höhe ein Freibetrag bzw. Hinzurechnungsbetrag abgerufen werden soll", eOid, folder02_04.Oid);
|
||||
|
||||
var folder02_05 = CreateBeWoFolder("Kranken- und Sozialversicherung", eOid, folder02.Oid);
|
||||
var folder02_05_01 = CreateBeWoFolder("Mitgliedschaftsbescheinigung der privaten oder gesetzlichen Krankenkasse", eOid, folder02_05.Oid);
|
||||
var folder02_05_02 = CreateBeWoFolder("Kopie Sozialversicherungsausweis", eOid, folder02_05.Oid);
|
||||
|
||||
var folder02_06 = CreateBeWoFolder("Allgemeindaten", eOid, folder02.Oid);
|
||||
var folder02_06_01 = CreateBeWoFolder("Bescheinigungen", eOid, folder02_06.Oid);
|
||||
var folder02_06_02 = CreateBeWoFolder("Schriftverkehr", eOid, folder02_06.Oid);
|
||||
|
||||
|
||||
return eOid;
|
||||
}
|
||||
|
||||
private BeWoFolder CreateBeWoFolder(string name, long? eOid, long? parentOid)
|
||||
{
|
||||
BeWoFolder f = new BeWoFolder();
|
||||
f.Name = name;
|
||||
f.ObjectOid = eOid;
|
||||
f.ObjectTid = TableID.Employee;
|
||||
f.ParentBeWoFolderOid = parentOid;
|
||||
|
||||
DAOFactory.GenericDAO.Insert(f);
|
||||
|
||||
return f;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -99,6 +99,8 @@ namespace DomizielAnsbach
|
||||
}
|
||||
return new XtraReport();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -52,6 +52,12 @@
|
||||
<Compile Include="Invoicing\PBInvoiceCreation.cs" />
|
||||
<Compile Include="Invoicing\CustomCalculations.cs" />
|
||||
<Compile Include="Invoicing\AbwInvoiceCreation.cs" />
|
||||
<Compile Include="QuittierungsbelegAbw.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="QuittierungsbelegAbw.Designer.cs">
|
||||
<DependentUpon>QuittierungsbelegAbw.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="RechnungBezirk.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
@@ -131,6 +137,9 @@
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="QuittierungsbelegAbw.resx">
|
||||
<DependentUpon>QuittierungsbelegAbw.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="RechnungBezirk.resx">
|
||||
<DependentUpon>RechnungBezirk.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
|
||||
629
ReportImp/DomizielAnsbach/QuittierungsbelegAbw.Designer.cs
generated
Normal file
629
ReportImp/DomizielAnsbach/QuittierungsbelegAbw.Designer.cs
generated
Normal file
@@ -0,0 +1,629 @@
|
||||
using BeWo.Report.ReportObjects;
|
||||
namespace DomizielAnsbach
|
||||
{
|
||||
partial class QuittierungsbelegAbw
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(QuittierungsbelegAbw));
|
||||
this.Detail = new DevExpress.XtraReports.UI.DetailBand();
|
||||
this.xrTableServiceRecords1 = new DevExpress.XtraReports.UI.XRTable();
|
||||
this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow();
|
||||
this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.DetailReport = new DevExpress.XtraReports.UI.DetailReportBand();
|
||||
this.Detail1 = new DevExpress.XtraReports.UI.DetailBand();
|
||||
this.xrTable3 = new DevExpress.XtraReports.UI.XRTable();
|
||||
this.xrTableRow6 = new DevExpress.XtraReports.UI.XRTableRow();
|
||||
this.xrTableCell13 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell15 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.picSignature = new DevExpress.XtraReports.UI.XRPictureBox();
|
||||
this.GroupHeader1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
|
||||
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.formattingRuleStartDate = new DevExpress.XtraReports.UI.FormattingRule();
|
||||
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
|
||||
this.xrPictureBox1 = new DevExpress.XtraReports.UI.XRPictureBox();
|
||||
this.xrLabel29 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.lblBewilligteStunden = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel25 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel24 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel23 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel18 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel15 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel14 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel13 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel12 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.formattingRuleServiceDesc = new DevExpress.XtraReports.UI.FormattingRule();
|
||||
this.formattingRuleCostBearer = new DevExpress.XtraReports.UI.FormattingRule();
|
||||
this.formattingRuleEmployeeName = new DevExpress.XtraReports.UI.FormattingRule();
|
||||
this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand();
|
||||
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
|
||||
this.ReportFooter = new DevExpress.XtraReports.UI.ReportFooterBand();
|
||||
this.xrLabel3 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel2 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel6 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel5 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.fieldAbrechenbareMinuten = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.fieldBillableFLS = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.fieldAbrechenbareFLS = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTableServiceRecords1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
|
||||
//
|
||||
// Detail
|
||||
//
|
||||
this.Detail.Font = new System.Drawing.Font("Arial", 11F);
|
||||
this.Detail.HeightF = 0F;
|
||||
this.Detail.Name = "Detail";
|
||||
this.Detail.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
|
||||
this.Detail.StylePriority.UseFont = false;
|
||||
this.Detail.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
|
||||
//
|
||||
// xrTableServiceRecords1
|
||||
//
|
||||
this.xrTableServiceRecords1.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
|
||||
| DevExpress.XtraPrinting.BorderSide.Right)
|
||||
| DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrTableServiceRecords1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
|
||||
this.xrTableServiceRecords1.Name = "xrTableServiceRecords1";
|
||||
this.xrTableServiceRecords1.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
|
||||
this.xrTableServiceRecords1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
|
||||
this.xrTableRow2});
|
||||
this.xrTableServiceRecords1.SizeF = new System.Drawing.SizeF(670F, 60F);
|
||||
this.xrTableServiceRecords1.StylePriority.UseBackColor = false;
|
||||
this.xrTableServiceRecords1.StylePriority.UseBorders = false;
|
||||
this.xrTableServiceRecords1.StylePriority.UseFont = false;
|
||||
this.xrTableServiceRecords1.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableServiceRecords1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
|
||||
//
|
||||
// xrTableRow2
|
||||
//
|
||||
this.xrTableRow2.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
|
||||
this.xrTableCell3,
|
||||
this.xrTableCell1,
|
||||
this.xrTableCell4,
|
||||
this.xrTableCell11});
|
||||
this.xrTableRow2.Name = "xrTableRow2";
|
||||
this.xrTableRow2.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
|
||||
this.xrTableRow2.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableRow2.Weight = 1.875D;
|
||||
//
|
||||
// xrTableCell3
|
||||
//
|
||||
this.xrTableCell3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(219)))), ((int)(((byte)(238)))), ((int)(((byte)(243)))));
|
||||
this.xrTableCell3.Name = "xrTableCell3";
|
||||
this.xrTableCell3.StylePriority.UseBackColor = false;
|
||||
this.xrTableCell3.StylePriority.UseFont = false;
|
||||
this.xrTableCell3.StylePriority.UsePadding = false;
|
||||
this.xrTableCell3.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell3.Text = "Datum";
|
||||
this.xrTableCell3.Weight = 0.26824509954648823D;
|
||||
//
|
||||
// xrTableCell1
|
||||
//
|
||||
this.xrTableCell1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(219)))), ((int)(((byte)(238)))), ((int)(((byte)(243)))));
|
||||
this.xrTableCell1.Multiline = true;
|
||||
this.xrTableCell1.Name = "xrTableCell1";
|
||||
this.xrTableCell1.StylePriority.UseBackColor = false;
|
||||
this.xrTableCell1.Text = "Dauer des Kontaktes";
|
||||
this.xrTableCell1.Weight = 0.26824509735842855D;
|
||||
//
|
||||
// xrTableCell4
|
||||
//
|
||||
this.xrTableCell4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(219)))), ((int)(((byte)(238)))), ((int)(((byte)(243)))));
|
||||
this.xrTableCell4.Name = "xrTableCell4";
|
||||
this.xrTableCell4.StylePriority.UseBackColor = false;
|
||||
this.xrTableCell4.StylePriority.UsePadding = false;
|
||||
this.xrTableCell4.Text = "Art des Kontaktes bzw. der Tätigkeit";
|
||||
this.xrTableCell4.Weight = 0.78034937589068865D;
|
||||
//
|
||||
// xrTableCell11
|
||||
//
|
||||
this.xrTableCell11.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(219)))), ((int)(((byte)(238)))), ((int)(((byte)(243)))));
|
||||
this.xrTableCell11.Multiline = true;
|
||||
this.xrTableCell11.Name = "xrTableCell11";
|
||||
this.xrTableCell11.StylePriority.UseBackColor = false;
|
||||
this.xrTableCell11.StylePriority.UseFont = false;
|
||||
this.xrTableCell11.StylePriority.UsePadding = false;
|
||||
this.xrTableCell11.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell11.Text = "Unterschrift Budgetnehmer";
|
||||
this.xrTableCell11.Weight = 0.31701693373906548D;
|
||||
//
|
||||
// DetailReport
|
||||
//
|
||||
this.DetailReport.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
|
||||
this.Detail1,
|
||||
this.GroupHeader1});
|
||||
this.DetailReport.DataMember = "Services";
|
||||
this.DetailReport.DataSource = this.bindingSource1;
|
||||
this.DetailReport.Level = 0;
|
||||
this.DetailReport.Name = "DetailReport";
|
||||
this.DetailReport.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
|
||||
this.DetailReport.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
|
||||
//
|
||||
// Detail1
|
||||
//
|
||||
this.Detail1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
this.xrTable3});
|
||||
this.Detail1.Font = new System.Drawing.Font("Arial", 11F);
|
||||
this.Detail1.HeightF = 25F;
|
||||
this.Detail1.Name = "Detail1";
|
||||
this.Detail1.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
|
||||
this.Detail1.StylePriority.UseFont = false;
|
||||
this.Detail1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
|
||||
//
|
||||
// xrTable3
|
||||
//
|
||||
this.xrTable3.BorderColor = System.Drawing.Color.Black;
|
||||
this.xrTable3.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
|
||||
| DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrTable3.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
|
||||
this.xrTable3.Name = "xrTable3";
|
||||
this.xrTable3.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
|
||||
this.xrTable3.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
|
||||
this.xrTableRow6});
|
||||
this.xrTable3.SizeF = new System.Drawing.SizeF(669.9999F, 25F);
|
||||
this.xrTable3.StylePriority.UseFont = false;
|
||||
this.xrTable3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
|
||||
//
|
||||
// xrTableRow6
|
||||
//
|
||||
this.xrTableRow6.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
|
||||
this.xrTableCell13,
|
||||
this.xrTableCell2,
|
||||
this.xrTableCell15,
|
||||
this.xrTableCell5});
|
||||
this.xrTableRow6.Name = "xrTableRow6";
|
||||
this.xrTableRow6.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
|
||||
this.xrTableRow6.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
|
||||
this.xrTableRow6.Weight = 1.25D;
|
||||
//
|
||||
// xrTableCell13
|
||||
//
|
||||
this.xrTableCell13.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.StartDate", "{0:dd.MM.yyyy}")});
|
||||
this.xrTableCell13.Name = "xrTableCell13";
|
||||
this.xrTableCell13.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 3, 0, 100F);
|
||||
this.xrTableCell13.StylePriority.UseFont = false;
|
||||
this.xrTableCell13.StylePriority.UsePadding = false;
|
||||
this.xrTableCell13.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell13.Text = "xrTableCell13";
|
||||
this.xrTableCell13.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
|
||||
this.xrTableCell13.Weight = 0.13888887377323028D;
|
||||
//
|
||||
// xrTableCell2
|
||||
//
|
||||
this.xrTableCell2.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.Minutes", "{0:0.##} Min.")});
|
||||
this.xrTableCell2.Name = "xrTableCell2";
|
||||
this.xrTableCell2.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 3, 0, 100F);
|
||||
this.xrTableCell2.StylePriority.UsePadding = false;
|
||||
this.xrTableCell2.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
|
||||
this.xrTableCell2.Weight = 0.13888887698574931D;
|
||||
//
|
||||
// xrTableCell15
|
||||
//
|
||||
this.xrTableCell15.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.Notice", "{0:0.##}")});
|
||||
this.xrTableCell15.Name = "xrTableCell15";
|
||||
this.xrTableCell15.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 3, 3, 0, 100F);
|
||||
this.xrTableCell15.StylePriority.UseFont = false;
|
||||
this.xrTableCell15.StylePriority.UsePadding = false;
|
||||
this.xrTableCell15.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell15.Text = "xrTableCell15";
|
||||
this.xrTableCell15.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
|
||||
this.xrTableCell15.Weight = 0.40404036892472889D;
|
||||
//
|
||||
// xrTableCell5
|
||||
//
|
||||
this.xrTableCell5.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
this.picSignature});
|
||||
this.xrTableCell5.Name = "xrTableCell5";
|
||||
this.xrTableCell5.StylePriority.UsePadding = false;
|
||||
this.xrTableCell5.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell5.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell5.Weight = 0.16414128592247781D;
|
||||
//
|
||||
// picSignature
|
||||
//
|
||||
this.picSignature.Borders = DevExpress.XtraPrinting.BorderSide.None;
|
||||
this.picSignature.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Tag", null, "Services.Signature")});
|
||||
this.picSignature.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
|
||||
this.picSignature.Name = "picSignature";
|
||||
this.picSignature.SizeF = new System.Drawing.SizeF(130F, 25F);
|
||||
this.picSignature.Sizing = DevExpress.XtraPrinting.ImageSizeMode.ZoomImage;
|
||||
this.picSignature.StylePriority.UseBorders = false;
|
||||
this.picSignature.BeforePrint += new System.Drawing.Printing.PrintEventHandler(this.picSignature_BeforePrint);
|
||||
//
|
||||
// GroupHeader1
|
||||
//
|
||||
this.GroupHeader1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
this.xrTableServiceRecords1});
|
||||
this.GroupHeader1.Font = new System.Drawing.Font("Arial", 11F);
|
||||
this.GroupHeader1.HeightF = 60F;
|
||||
this.GroupHeader1.Name = "GroupHeader1";
|
||||
this.GroupHeader1.RepeatEveryPage = true;
|
||||
this.GroupHeader1.StylePriority.UseFont = false;
|
||||
//
|
||||
// bindingSource1
|
||||
//
|
||||
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
|
||||
//
|
||||
// formattingRuleStartDate
|
||||
//
|
||||
this.formattingRuleStartDate.Condition = "[StartDate2] < [StartDate]";
|
||||
this.formattingRuleStartDate.DataMember = "ServicesDouble";
|
||||
this.formattingRuleStartDate.Formatting.Visible = DevExpress.Utils.DefaultBoolean.False;
|
||||
this.formattingRuleStartDate.Name = "formattingRuleStartDate";
|
||||
//
|
||||
// ReportHeader
|
||||
//
|
||||
this.ReportHeader.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
this.xrPictureBox1,
|
||||
this.xrLabel29,
|
||||
this.lblBewilligteStunden,
|
||||
this.xrLabel25,
|
||||
this.xrLabel24,
|
||||
this.xrLabel23,
|
||||
this.xrLabel18,
|
||||
this.xrLabel15,
|
||||
this.xrLabel14,
|
||||
this.xrLabel13,
|
||||
this.xrLabel12,
|
||||
this.xrLabel1});
|
||||
this.ReportHeader.Font = new System.Drawing.Font("Arial", 11F);
|
||||
this.ReportHeader.HeightF = 250F;
|
||||
this.ReportHeader.Name = "ReportHeader";
|
||||
this.ReportHeader.StylePriority.UseFont = false;
|
||||
//
|
||||
// xrPictureBox1
|
||||
//
|
||||
this.xrPictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("xrPictureBox1.Image")));
|
||||
this.xrPictureBox1.LocationFloat = new DevExpress.Utils.PointFloat(490.4167F, 0F);
|
||||
this.xrPictureBox1.Name = "xrPictureBox1";
|
||||
this.xrPictureBox1.SizeF = new System.Drawing.SizeF(186.5833F, 120F);
|
||||
this.xrPictureBox1.Sizing = DevExpress.XtraPrinting.ImageSizeMode.ZoomImage;
|
||||
//
|
||||
// xrLabel29
|
||||
//
|
||||
this.xrLabel29.Font = new System.Drawing.Font("Calibri", 16F, System.Drawing.FontStyle.Bold);
|
||||
this.xrLabel29.LocationFloat = new DevExpress.Utils.PointFloat(269.9134F, 200F);
|
||||
this.xrLabel29.Name = "xrLabel29";
|
||||
this.xrLabel29.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel29.SizeF = new System.Drawing.SizeF(220.5033F, 29.99998F);
|
||||
this.xrLabel29.StylePriority.UseBorders = false;
|
||||
this.xrLabel29.StylePriority.UseFont = false;
|
||||
this.xrLabel29.Text = "[Month] [Year]";
|
||||
//
|
||||
// lblBewilligteStunden
|
||||
//
|
||||
this.lblBewilligteStunden.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ApprovedFLSPerWeek", "{0:0.0} h/Woche")});
|
||||
this.lblBewilligteStunden.Font = new System.Drawing.Font("Calibri", 16F, System.Drawing.FontStyle.Bold);
|
||||
this.lblBewilligteStunden.LocationFloat = new DevExpress.Utils.PointFloat(269.9134F, 170F);
|
||||
this.lblBewilligteStunden.Name = "lblBewilligteStunden";
|
||||
this.lblBewilligteStunden.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.lblBewilligteStunden.SizeF = new System.Drawing.SizeF(220.5033F, 29.99998F);
|
||||
this.lblBewilligteStunden.StylePriority.UseBorders = false;
|
||||
this.lblBewilligteStunden.StylePriority.UseFont = false;
|
||||
//
|
||||
// xrLabel25
|
||||
//
|
||||
this.xrLabel25.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ApprovedStartDate")});
|
||||
this.xrLabel25.Font = new System.Drawing.Font("Calibri", 16F, System.Drawing.FontStyle.Bold);
|
||||
this.xrLabel25.LocationFloat = new DevExpress.Utils.PointFloat(269.9134F, 140F);
|
||||
this.xrLabel25.Name = "xrLabel25";
|
||||
this.xrLabel25.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel25.SizeF = new System.Drawing.SizeF(220.5033F, 30.00002F);
|
||||
this.xrLabel25.StylePriority.UseBorders = false;
|
||||
this.xrLabel25.StylePriority.UseFont = false;
|
||||
//
|
||||
// xrLabel24
|
||||
//
|
||||
this.xrLabel24.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "CustomerBirthday", "{0:dd.MM.yyyy}")});
|
||||
this.xrLabel24.Font = new System.Drawing.Font("Calibri", 16F, System.Drawing.FontStyle.Bold);
|
||||
this.xrLabel24.LocationFloat = new DevExpress.Utils.PointFloat(269.9134F, 110F);
|
||||
this.xrLabel24.Name = "xrLabel24";
|
||||
this.xrLabel24.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel24.SizeF = new System.Drawing.SizeF(220.5033F, 30.00002F);
|
||||
this.xrLabel24.StylePriority.UseBorders = false;
|
||||
this.xrLabel24.StylePriority.UseFont = false;
|
||||
//
|
||||
// xrLabel23
|
||||
//
|
||||
this.xrLabel23.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "CustomerName")});
|
||||
this.xrLabel23.Font = new System.Drawing.Font("Calibri", 16F, System.Drawing.FontStyle.Bold);
|
||||
this.xrLabel23.LocationFloat = new DevExpress.Utils.PointFloat(269.9134F, 80.00002F);
|
||||
this.xrLabel23.Name = "xrLabel23";
|
||||
this.xrLabel23.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel23.SizeF = new System.Drawing.SizeF(220.5033F, 29.99999F);
|
||||
this.xrLabel23.StylePriority.UseBorders = false;
|
||||
this.xrLabel23.StylePriority.UseFont = false;
|
||||
//
|
||||
// xrLabel18
|
||||
//
|
||||
this.xrLabel18.Font = new System.Drawing.Font("Calibri", 16F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrLabel18.LocationFloat = new DevExpress.Utils.PointFloat(0F, 200F);
|
||||
this.xrLabel18.Name = "xrLabel18";
|
||||
this.xrLabel18.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel18.SizeF = new System.Drawing.SizeF(269.9133F, 30F);
|
||||
this.xrLabel18.StylePriority.UseFont = false;
|
||||
this.xrLabel18.Text = "Betreuungsmonat: ";
|
||||
//
|
||||
// xrLabel15
|
||||
//
|
||||
this.xrLabel15.Font = new System.Drawing.Font("Calibri", 16F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrLabel15.LocationFloat = new DevExpress.Utils.PointFloat(0F, 170F);
|
||||
this.xrLabel15.Name = "xrLabel15";
|
||||
this.xrLabel15.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel15.SizeF = new System.Drawing.SizeF(269.9133F, 30F);
|
||||
this.xrLabel15.StylePriority.UseFont = false;
|
||||
this.xrLabel15.Text = "Betreuungsschlüssel:";
|
||||
//
|
||||
// xrLabel14
|
||||
//
|
||||
this.xrLabel14.Font = new System.Drawing.Font("Calibri", 16F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrLabel14.LocationFloat = new DevExpress.Utils.PointFloat(0F, 140F);
|
||||
this.xrLabel14.Name = "xrLabel14";
|
||||
this.xrLabel14.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel14.SizeF = new System.Drawing.SizeF(269.9133F, 30F);
|
||||
this.xrLabel14.StylePriority.UseFont = false;
|
||||
this.xrLabel14.Text = "Im PB seit:";
|
||||
//
|
||||
// xrLabel13
|
||||
//
|
||||
this.xrLabel13.Font = new System.Drawing.Font("Calibri", 16F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrLabel13.LocationFloat = new DevExpress.Utils.PointFloat(0F, 110F);
|
||||
this.xrLabel13.Name = "xrLabel13";
|
||||
this.xrLabel13.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel13.SizeF = new System.Drawing.SizeF(269.9133F, 29.99999F);
|
||||
this.xrLabel13.StylePriority.UseFont = false;
|
||||
this.xrLabel13.Text = "Geburtsdatum:";
|
||||
//
|
||||
// xrLabel12
|
||||
//
|
||||
this.xrLabel12.Font = new System.Drawing.Font("Calibri", 16F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrLabel12.LocationFloat = new DevExpress.Utils.PointFloat(0F, 80.00002F);
|
||||
this.xrLabel12.Name = "xrLabel12";
|
||||
this.xrLabel12.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel12.SizeF = new System.Drawing.SizeF(269.9133F, 30F);
|
||||
this.xrLabel12.StylePriority.UseFont = false;
|
||||
this.xrLabel12.Text = "Name der/des Betreuten:";
|
||||
//
|
||||
// xrLabel1
|
||||
//
|
||||
this.xrLabel1.Font = new System.Drawing.Font("Calibri", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
|
||||
this.xrLabel1.Multiline = true;
|
||||
this.xrLabel1.Name = "xrLabel1";
|
||||
this.xrLabel1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel1.SizeF = new System.Drawing.SizeF(480F, 36.45833F);
|
||||
this.xrLabel1.StylePriority.UseFont = false;
|
||||
this.xrLabel1.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel1.Text = "Monatsübersicht für Persönliches Budget";
|
||||
this.xrLabel1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
|
||||
//
|
||||
// formattingRuleServiceDesc
|
||||
//
|
||||
this.formattingRuleServiceDesc.Condition = "[StartDate2] < [StartDate]";
|
||||
this.formattingRuleServiceDesc.DataMember = "ServicesDouble";
|
||||
this.formattingRuleServiceDesc.Formatting.Visible = DevExpress.Utils.DefaultBoolean.False;
|
||||
this.formattingRuleServiceDesc.Name = "formattingRuleServiceDesc";
|
||||
//
|
||||
// formattingRuleCostBearer
|
||||
//
|
||||
this.formattingRuleCostBearer.Condition = "[StartDate2] < [StartDate]";
|
||||
this.formattingRuleCostBearer.DataMember = "ServicesDouble";
|
||||
this.formattingRuleCostBearer.Formatting.Visible = DevExpress.Utils.DefaultBoolean.False;
|
||||
this.formattingRuleCostBearer.Name = "formattingRuleCostBearer";
|
||||
//
|
||||
// formattingRuleEmployeeName
|
||||
//
|
||||
this.formattingRuleEmployeeName.Condition = "[StartDate2] < [StartDate]";
|
||||
this.formattingRuleEmployeeName.DataMember = "ServicesDouble";
|
||||
this.formattingRuleEmployeeName.Formatting.Visible = DevExpress.Utils.DefaultBoolean.False;
|
||||
this.formattingRuleEmployeeName.Name = "formattingRuleEmployeeName";
|
||||
//
|
||||
// topMarginBand1
|
||||
//
|
||||
this.topMarginBand1.Font = new System.Drawing.Font("Times New Roman", 9.75F);
|
||||
this.topMarginBand1.HeightF = 80F;
|
||||
this.topMarginBand1.Name = "topMarginBand1";
|
||||
this.topMarginBand1.StylePriority.UseFont = false;
|
||||
//
|
||||
// bottomMarginBand1
|
||||
//
|
||||
this.bottomMarginBand1.HeightF = 30F;
|
||||
this.bottomMarginBand1.Name = "bottomMarginBand1";
|
||||
//
|
||||
// ReportFooter
|
||||
//
|
||||
this.ReportFooter.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
this.xrLabel3,
|
||||
this.xrLabel2,
|
||||
this.xrLabel6,
|
||||
this.xrLabel5});
|
||||
this.ReportFooter.Font = new System.Drawing.Font("Arial", 11F);
|
||||
this.ReportFooter.HeightF = 80.08324F;
|
||||
this.ReportFooter.Name = "ReportFooter";
|
||||
this.ReportFooter.StylePriority.UseFont = false;
|
||||
//
|
||||
// xrLabel3
|
||||
//
|
||||
this.xrLabel3.Font = new System.Drawing.Font("Calibri", 11F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(540F, 62.08327F);
|
||||
this.xrLabel3.Name = "xrLabel3";
|
||||
this.xrLabel3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel3.SizeF = new System.Drawing.SizeF(137F, 17.99997F);
|
||||
this.xrLabel3.StylePriority.UseBorders = false;
|
||||
this.xrLabel3.StylePriority.UseFont = false;
|
||||
this.xrLabel3.Text = "Berufsbezeichnung";
|
||||
//
|
||||
// xrLabel2
|
||||
//
|
||||
this.xrLabel2.Font = new System.Drawing.Font("Calibri", 11F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(178.3263F, 62.08327F);
|
||||
this.xrLabel2.Name = "xrLabel2";
|
||||
this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel2.SizeF = new System.Drawing.SizeF(281.5348F, 17.99997F);
|
||||
this.xrLabel2.StylePriority.UseBorders = false;
|
||||
this.xrLabel2.StylePriority.UseFont = false;
|
||||
this.xrLabel2.Text = "Unterschrift des Bezugsbetreuers";
|
||||
//
|
||||
// xrLabel6
|
||||
//
|
||||
this.xrLabel6.Font = new System.Drawing.Font("Calibri", 11F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrLabel6.LocationFloat = new DevExpress.Utils.PointFloat(0.6944444F, 62.08327F);
|
||||
this.xrLabel6.Name = "xrLabel6";
|
||||
this.xrLabel6.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel6.SizeF = new System.Drawing.SizeF(121.7362F, 17.99997F);
|
||||
this.xrLabel6.StylePriority.UseBorders = false;
|
||||
this.xrLabel6.StylePriority.UseFont = false;
|
||||
this.xrLabel6.Text = "Ort, Datum";
|
||||
//
|
||||
// xrLabel5
|
||||
//
|
||||
this.xrLabel5.Borders = DevExpress.XtraPrinting.BorderSide.Top;
|
||||
this.xrLabel5.LocationFloat = new DevExpress.Utils.PointFloat(0F, 51.72221F);
|
||||
this.xrLabel5.Name = "xrLabel5";
|
||||
this.xrLabel5.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel5.SizeF = new System.Drawing.SizeF(670.0001F, 10.36106F);
|
||||
this.xrLabel5.StylePriority.UseBorders = false;
|
||||
this.xrLabel5.StylePriority.UseFont = false;
|
||||
//
|
||||
// fieldAbrechenbareMinuten
|
||||
//
|
||||
this.fieldAbrechenbareMinuten.DataMember = "Services";
|
||||
this.fieldAbrechenbareMinuten.Expression = "Iif([IsBillable], [Minutes], 0)";
|
||||
this.fieldAbrechenbareMinuten.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
|
||||
this.fieldAbrechenbareMinuten.Name = "fieldAbrechenbareMinuten";
|
||||
//
|
||||
// fieldBillableFLS
|
||||
//
|
||||
this.fieldBillableFLS.Expression = "[TotalFLMBillable] / 60";
|
||||
this.fieldBillableFLS.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
|
||||
this.fieldBillableFLS.Name = "fieldBillableFLS";
|
||||
//
|
||||
// fieldAbrechenbareFLS
|
||||
//
|
||||
this.fieldAbrechenbareFLS.Expression = "([TotalFLMBillable] / 60) * 1.2";
|
||||
this.fieldAbrechenbareFLS.FieldType = DevExpress.XtraReports.UI.FieldType.Decimal;
|
||||
this.fieldAbrechenbareFLS.Name = "fieldAbrechenbareFLS";
|
||||
//
|
||||
// QuittierungsbelegPB
|
||||
//
|
||||
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
|
||||
this.Detail,
|
||||
this.DetailReport,
|
||||
this.ReportHeader,
|
||||
this.topMarginBand1,
|
||||
this.bottomMarginBand1,
|
||||
this.ReportFooter});
|
||||
this.CalculatedFields.AddRange(new DevExpress.XtraReports.UI.CalculatedField[] {
|
||||
this.fieldAbrechenbareMinuten,
|
||||
this.fieldBillableFLS,
|
||||
this.fieldAbrechenbareFLS});
|
||||
this.DataSource = this.bindingSource1;
|
||||
this.FormattingRuleSheet.AddRange(new DevExpress.XtraReports.UI.FormattingRule[] {
|
||||
this.formattingRuleStartDate,
|
||||
this.formattingRuleServiceDesc,
|
||||
this.formattingRuleCostBearer,
|
||||
this.formattingRuleEmployeeName});
|
||||
this.Margins = new System.Drawing.Printing.Margins(75, 75, 80, 30);
|
||||
this.PageHeight = 1169;
|
||||
this.PageWidth = 827;
|
||||
this.PaperKind = System.Drawing.Printing.PaperKind.A4;
|
||||
this.SnapGridSize = 9F;
|
||||
this.Version = "17.1";
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTableServiceRecords1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private DevExpress.XtraReports.UI.DetailBand Detail;
|
||||
private System.Windows.Forms.BindingSource bindingSource1;
|
||||
private DevExpress.XtraReports.UI.DetailReportBand DetailReport;
|
||||
private DevExpress.XtraReports.UI.DetailBand Detail1;
|
||||
private DevExpress.XtraReports.UI.XRTable xrTable3;
|
||||
private DevExpress.XtraReports.UI.XRTableRow xrTableRow6;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell15;
|
||||
private DevExpress.XtraReports.UI.ReportHeaderBand ReportHeader;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel1;
|
||||
private DevExpress.XtraReports.UI.XRTable xrTableServiceRecords1;
|
||||
private DevExpress.XtraReports.UI.XRTableRow xrTableRow2;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell3;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell11;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell13;
|
||||
private DevExpress.XtraReports.UI.FormattingRule formattingRuleStartDate;
|
||||
private DevExpress.XtraReports.UI.FormattingRule formattingRuleServiceDesc;
|
||||
private DevExpress.XtraReports.UI.FormattingRule formattingRuleCostBearer;
|
||||
private DevExpress.XtraReports.UI.FormattingRule formattingRuleEmployeeName;
|
||||
private DevExpress.XtraReports.UI.TopMarginBand topMarginBand1;
|
||||
private DevExpress.XtraReports.UI.BottomMarginBand bottomMarginBand1;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel12;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel18;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel15;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel14;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel13;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel29;
|
||||
private DevExpress.XtraReports.UI.XRLabel lblBewilligteStunden;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel25;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel24;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel23;
|
||||
private DevExpress.XtraReports.UI.ReportFooterBand ReportFooter;
|
||||
private DevExpress.XtraReports.UI.CalculatedField fieldAbrechenbareMinuten;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel6;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel5;
|
||||
private DevExpress.XtraReports.UI.CalculatedField fieldBillableFLS;
|
||||
private DevExpress.XtraReports.UI.CalculatedField fieldAbrechenbareFLS;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell1;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell2;
|
||||
private DevExpress.XtraReports.UI.XRPictureBox xrPictureBox1;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell4;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell5;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel3;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel2;
|
||||
private DevExpress.XtraReports.UI.GroupHeaderBand GroupHeader1;
|
||||
private DevExpress.XtraReports.UI.XRPictureBox picSignature;
|
||||
}
|
||||
}
|
||||
119
ReportImp/DomizielAnsbach/QuittierungsbelegAbw.cs
Normal file
119
ReportImp/DomizielAnsbach/QuittierungsbelegAbw.cs
Normal file
@@ -0,0 +1,119 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using BeWo.Report;
|
||||
using BeWo.Report.ReportObjects;
|
||||
using BeWo.Service.ServiceImplementations;
|
||||
using BS.Shared.Core;
|
||||
using BS.Shared.DataContracts;
|
||||
using DevExpress.XtraReports.UI;
|
||||
|
||||
|
||||
|
||||
namespace DomizielAnsbach
|
||||
{
|
||||
public partial class QuittierungsbelegAbw : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<ServicesOverviewRO>
|
||||
{
|
||||
public QuittierungsbelegAbw()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public void SetReportDataSource(ServicesOverviewRO pRO)
|
||||
{
|
||||
if (pRO.Services != null)
|
||||
{
|
||||
List<ServicesOverviewRO.ServiceDetail> servicesBillable = new List<ServicesOverviewRO.ServiceDetail>();
|
||||
|
||||
double minuten = 0;
|
||||
foreach (ServicesOverviewRO.ServiceDetail s in pRO.Services)
|
||||
{
|
||||
if (s.IsBillable)
|
||||
{
|
||||
ServicesOverviewRO.CreateSignatureString(s);
|
||||
if (s.ServiceCategory.ToLower().IndexOf("assistenz") < 0)
|
||||
{
|
||||
servicesBillable.Add(s);
|
||||
minuten += s.Minutes;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pRO.TotalFLMBillable = minuten;
|
||||
pRO.Services = servicesBillable;
|
||||
}
|
||||
|
||||
var approved = pRO.ApprovedFLSPerWeek;
|
||||
|
||||
SupportConceptPeriodStatisticsDC stats = GetFlsStatistics(pRO, "assistenz"); ;
|
||||
|
||||
|
||||
if (stats != null)
|
||||
{
|
||||
approved = stats.MinutesApprovedPerWeek / 60;
|
||||
}
|
||||
|
||||
lblBewilligteStunden.Text = string.Format("{0:0.##}", approved);
|
||||
|
||||
this.bindingSource1.DataSource = pRO;
|
||||
}
|
||||
|
||||
private SupportConceptPeriodStatisticsDC GetFlsStatistics(ServicesOverviewRO ro, String assName)
|
||||
{
|
||||
if (ro.CostBearer2SupportConceptList != null && ro.CostBearer2SupportConceptList.Count > 0)
|
||||
{
|
||||
var service = new OperationsServiceImp();
|
||||
|
||||
foreach (var cb2sc in ro.CostBearer2SupportConceptList)
|
||||
{
|
||||
long cb2scOid = cb2sc.Oid.Value;
|
||||
|
||||
|
||||
var stats = service.CreateSupportConceptStatistics(cb2scOid, ro.EndDate);
|
||||
|
||||
if (stats.PeriodStatistics != null && stats.PeriodStatistics.Count > 0)
|
||||
{
|
||||
foreach (var ps in stats.PeriodStatistics)
|
||||
{
|
||||
if ((ps.SupportConceptApprovalPeriod != null && ps.SupportConceptApprovalPeriod.ServiceCategory != null &&
|
||||
!ps.SupportConceptApprovalPeriod.ServiceCategory.Name.ToLower().Contains(assName)) || ps.SupportConceptApprovalPeriod.ServiceCategory == null)
|
||||
{
|
||||
return ps;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private void picSignature_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
|
||||
{
|
||||
XRPictureBox xrBox = sender as XRPictureBox;
|
||||
//var test = this.GetCurrent
|
||||
string base64String = xrBox.Tag as string;
|
||||
if (!String.IsNullOrWhiteSpace(base64String))
|
||||
{
|
||||
var base64Data = Regex.Match(base64String, @"data:image/(?<type>.+?),(?<data>.+)").Groups["data"].Value;
|
||||
var binData = Convert.FromBase64String(base64Data);
|
||||
Image img = ByteArrayToImage(binData);
|
||||
xrBox.Image = Utils.CropImage(img);
|
||||
}
|
||||
else
|
||||
{
|
||||
xrBox.Image = null;
|
||||
}
|
||||
}
|
||||
|
||||
public Image ByteArrayToImage(byte[] byteArrayIn)
|
||||
{
|
||||
using (var memoryStream = new MemoryStream(byteArrayIn))
|
||||
{
|
||||
return Image.FromStream(memoryStream);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
427
ReportImp/DomizielAnsbach/QuittierungsbelegAbw.resx
Normal file
427
ReportImp/DomizielAnsbach/QuittierungsbelegAbw.resx
Normal file
@@ -0,0 +1,427 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>21, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="xrPictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,5 +1,7 @@
|
||||
using System;
|
||||
using System.Text;
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Report;
|
||||
using BeWo.Report.ReportObjects;
|
||||
using BS.Shared.Core;
|
||||
@@ -49,16 +51,27 @@ namespace DomizielAnsbach
|
||||
lblAdresse.Text = sb.ToString();
|
||||
DateTime start = pRO.AccountingPeriodStart;
|
||||
DateTime end = pRO.AccountingPeriodEnd;
|
||||
//if (start.Month == end.Month && start.Year == end.Year)
|
||||
//{
|
||||
// lblAbrechnungszeitraum.Text = String.Format("hiermit berechnen wir für den Monat {0:MMMM yyyy} folgende erbrachte Tätigkeiten:", start);
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// lblAbrechnungszeitraum.Text = String.Format("hiermit berechnen wir für den Zeitraum {0:MMMM yyyy} - {1:MMMM yyyy} folgende erbrachte Tätigkeiten:", start, end);
|
||||
//}
|
||||
|
||||
//if (start.Month == end.Month && start.Year == end.Year)
|
||||
//{
|
||||
// lblAbrechnungszeitraum.Text = String.Format("hiermit berechnen wir für den Monat {0:MMMM yyyy} folgende erbrachte Tätigkeiten:", start);
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// lblAbrechnungszeitraum.Text = String.Format("hiermit berechnen wir für den Zeitraum {0:MMMM yyyy} - {1:MMMM yyyy} folgende erbrachte Tätigkeiten:", start, end);
|
||||
//}
|
||||
SetKundennummer(pRO);
|
||||
this.bindingSource1.DataSource = pRO;
|
||||
}
|
||||
|
||||
private void SetKundennummer(ServiceInvoiceRO pRO)
|
||||
{
|
||||
if (pRO.InvoiceBase.RecipientOrganisationOid.HasValue)
|
||||
{
|
||||
var org = DAOFactory.GenericDAO.LoadByID<Organisation>(pRO.InvoiceBase.RecipientOrganisationOid.Value);
|
||||
pRO.OrganisationDebitorNumber = org.DebitorNumber;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -18,6 +18,7 @@ namespace Kimm
|
||||
var list = base.GetFeiertage(year);
|
||||
|
||||
list.Add(new DateTime(year, 12, 31));
|
||||
list.Add(new DateTime(year, 12, 24));
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
BIN
ReportImp/Kimm/Logo-KIMM.png
Normal file
BIN
ReportImp/Kimm/Logo-KIMM.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.8 KiB |
627
ReportImp/Kimm/Quittierungsbeleg.Designer.cs
generated
627
ReportImp/Kimm/Quittierungsbeleg.Designer.cs
generated
@@ -39,12 +39,10 @@ namespace Kimm
|
||||
this.xrTableCell13 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell14 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell10 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell15 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell44 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell50 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.picSignature = new DevExpress.XtraReports.UI.XRPictureBox();
|
||||
this.GroupHeader1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
|
||||
this.xrTableServiceRecords1 = new DevExpress.XtraReports.UI.XRTable();
|
||||
this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow();
|
||||
@@ -64,8 +62,6 @@ namespace Kimm
|
||||
this.xrTableCell49 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.formattingRuleStartDate = new DevExpress.XtraReports.UI.FormattingRule();
|
||||
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
|
||||
this.xrLabel14 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel16 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel7 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel8 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel6 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
@@ -79,47 +75,17 @@ namespace Kimm
|
||||
this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand();
|
||||
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
|
||||
this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand();
|
||||
this.lblUnterschriftKlient = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.lblUnterschriftMitarbeiter = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrTableAbwesenheiten = new DevExpress.XtraReports.UI.XRTable();
|
||||
this.xrTableRow3 = new DevExpress.XtraReports.UI.XRTableRow();
|
||||
this.xrTableCell16 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell17 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell18 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableRow4 = new DevExpress.XtraReports.UI.XRTableRow();
|
||||
this.xrTableCell19 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell20 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell21 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableRow5 = new DevExpress.XtraReports.UI.XRTableRow();
|
||||
this.xrTableCell22 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell23 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell24 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableRow7 = new DevExpress.XtraReports.UI.XRTableRow();
|
||||
this.xrTableCell25 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell26 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell27 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableRow8 = new DevExpress.XtraReports.UI.XRTableRow();
|
||||
this.xrTableCell29 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell30 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell31 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.lblHatAbwesenheiten = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.lblHatGruppen = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrRichText2 = new DevExpress.XtraReports.UI.XRRichText();
|
||||
this.xrRichText1 = new DevExpress.XtraReports.UI.XRRichText();
|
||||
this.xrLabel15 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel13 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel12 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel11 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel10 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel9 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.fieldKontaktArt = new DevExpress.XtraReports.UI.CalculatedField();
|
||||
this.xrPictureBox3 = new DevExpress.XtraReports.UI.XRPictureBox();
|
||||
this.picSignature = new DevExpress.XtraReports.UI.XRPictureBox();
|
||||
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.xrLabel11 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel12 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTableServiceRecords1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTableAbwesenheiten)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText2)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
|
||||
//
|
||||
@@ -163,7 +129,7 @@ namespace Kimm
|
||||
this.xrTable3.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
|
||||
this.xrTable3.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
|
||||
this.xrTableRow6});
|
||||
this.xrTable3.SizeF = new System.Drawing.SizeF(735F, 20F);
|
||||
this.xrTable3.SizeF = new System.Drawing.SizeF(762F, 20F);
|
||||
this.xrTable3.StylePriority.UseFont = false;
|
||||
this.xrTable3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
|
||||
//
|
||||
@@ -173,7 +139,6 @@ namespace Kimm
|
||||
this.xrTableCell13,
|
||||
this.xrTableCell14,
|
||||
this.xrTableCell10,
|
||||
this.xrTableCell2,
|
||||
this.xrTableCell15,
|
||||
this.xrTableCell12,
|
||||
this.xrTableCell44,
|
||||
@@ -209,7 +174,7 @@ namespace Kimm
|
||||
this.xrTableCell14.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell14.Text = "xrTableCell14";
|
||||
this.xrTableCell14.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell14.Weight = 0.094696981389528381D;
|
||||
this.xrTableCell14.Weight = 0.095691579001991059D;
|
||||
//
|
||||
// xrTableCell10
|
||||
//
|
||||
@@ -223,24 +188,12 @@ namespace Kimm
|
||||
this.xrTableCell10.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell10.Text = "xrTableCell10";
|
||||
this.xrTableCell10.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell10.Weight = 0.094696933224158855D;
|
||||
//
|
||||
// xrTableCell2
|
||||
//
|
||||
this.xrTableCell2.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.fieldKontaktArt")});
|
||||
this.xrTableCell2.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrTableCell2.Name = "xrTableCell2";
|
||||
this.xrTableCell2.StylePriority.UseFont = false;
|
||||
this.xrTableCell2.StylePriority.UsePadding = false;
|
||||
this.xrTableCell2.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell2.Weight = 0.05366162346946534D;
|
||||
this.xrTableCell10.Weight = 0.095135773020489228D;
|
||||
//
|
||||
// xrTableCell15
|
||||
//
|
||||
this.xrTableCell15.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.CustomerCount", "{0:0}")});
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Services.ServiceCategory")});
|
||||
this.xrTableCell15.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrTableCell15.Name = "xrTableCell15";
|
||||
this.xrTableCell15.StylePriority.UseBorders = false;
|
||||
@@ -248,7 +201,7 @@ namespace Kimm
|
||||
this.xrTableCell15.StylePriority.UsePadding = false;
|
||||
this.xrTableCell15.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell15.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell15.Weight = 0.05366162346946534D;
|
||||
this.xrTableCell15.Weight = 0.20987004159462966D;
|
||||
//
|
||||
// xrTableCell12
|
||||
//
|
||||
@@ -261,7 +214,7 @@ namespace Kimm
|
||||
this.xrTableCell12.StylePriority.UsePadding = false;
|
||||
this.xrTableCell12.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell12.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell12.Weight = 0.10732323052948757D;
|
||||
this.xrTableCell12.Weight = 0.084426309557355375D;
|
||||
//
|
||||
// xrTableCell44
|
||||
//
|
||||
@@ -273,7 +226,7 @@ namespace Kimm
|
||||
this.xrTableCell44.StylePriority.UsePadding = false;
|
||||
this.xrTableCell44.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell44.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell44.Weight = 0.20202019104791347D;
|
||||
this.xrTableCell44.Weight = 0.16070398498018312D;
|
||||
//
|
||||
// xrTableCell50
|
||||
//
|
||||
@@ -285,19 +238,7 @@ namespace Kimm
|
||||
this.xrTableCell50.StylePriority.UsePadding = false;
|
||||
this.xrTableCell50.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell50.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
|
||||
this.xrTableCell50.Weight = 0.20202019042968572D;
|
||||
//
|
||||
// picSignature
|
||||
//
|
||||
this.picSignature.Borders = DevExpress.XtraPrinting.BorderSide.None;
|
||||
this.picSignature.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Tag", null, "Services.Signature")});
|
||||
this.picSignature.LocationFloat = new DevExpress.Utils.PointFloat(1F, 1F);
|
||||
this.picSignature.Name = "picSignature";
|
||||
this.picSignature.SizeF = new System.Drawing.SizeF(158F, 18F);
|
||||
this.picSignature.Sizing = DevExpress.XtraPrinting.ImageSizeMode.ZoomImage;
|
||||
this.picSignature.StylePriority.UseBorders = false;
|
||||
this.picSignature.BeforePrint += new System.Drawing.Printing.PrintEventHandler(this.picSignature_BeforePrint);
|
||||
this.xrTableCell50.Weight = 0.1622530854050562D;
|
||||
//
|
||||
// GroupHeader1
|
||||
//
|
||||
@@ -318,7 +259,7 @@ namespace Kimm
|
||||
this.xrTableServiceRecords1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
|
||||
this.xrTableRow2,
|
||||
this.xrTableRow1});
|
||||
this.xrTableServiceRecords1.SizeF = new System.Drawing.SizeF(735F, 70F);
|
||||
this.xrTableServiceRecords1.SizeF = new System.Drawing.SizeF(762F, 70F);
|
||||
this.xrTableServiceRecords1.StylePriority.UseBackColor = false;
|
||||
this.xrTableServiceRecords1.StylePriority.UseBorders = false;
|
||||
this.xrTableServiceRecords1.StylePriority.UseFont = false;
|
||||
@@ -380,9 +321,9 @@ namespace Kimm
|
||||
this.xrTableCell11.StylePriority.UseFont = false;
|
||||
this.xrTableCell11.StylePriority.UsePadding = false;
|
||||
this.xrTableCell11.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell11.Text = "Angebot";
|
||||
this.xrTableCell11.Text = "Leistungskategorie";
|
||||
this.xrTableCell11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.BottomCenter;
|
||||
this.xrTableCell11.Weight = 0.23743016759776542D;
|
||||
this.xrTableCell11.Weight = 0.46215195232219181D;
|
||||
//
|
||||
// xrTableCell9
|
||||
//
|
||||
@@ -398,7 +339,7 @@ namespace Kimm
|
||||
this.xrTableCell9.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell9.Text = "FLS in";
|
||||
this.xrTableCell9.TextAlignment = DevExpress.XtraPrinting.TextAlignment.BottomCenter;
|
||||
this.xrTableCell9.Weight = 0.23743016759776536D;
|
||||
this.xrTableCell9.Weight = 0.1859140259789468D;
|
||||
//
|
||||
// xrTableCell28
|
||||
//
|
||||
@@ -409,9 +350,9 @@ namespace Kimm
|
||||
this.xrTableCell28.StylePriority.UseBorders = false;
|
||||
this.xrTableCell28.StylePriority.UseFont = false;
|
||||
this.xrTableCell28.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell28.Text = "Betreuerin / Betreuer";
|
||||
this.xrTableCell28.Text = "Fachkraft";
|
||||
this.xrTableCell28.TextAlignment = DevExpress.XtraPrinting.TextAlignment.BottomCenter;
|
||||
this.xrTableCell28.Weight = 0.44692737430167595D;
|
||||
this.xrTableCell28.Weight = 0.35388414978518545D;
|
||||
//
|
||||
// xrTableCell48
|
||||
//
|
||||
@@ -425,7 +366,7 @@ namespace Kimm
|
||||
this.xrTableCell48.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell48.Text = "Unterschrift";
|
||||
this.xrTableCell48.TextAlignment = DevExpress.XtraPrinting.TextAlignment.BottomCenter;
|
||||
this.xrTableCell48.Weight = 0.44692737430167606D;
|
||||
this.xrTableCell48.Weight = 0.35729510561997474D;
|
||||
//
|
||||
// xrTableRow1
|
||||
//
|
||||
@@ -478,8 +419,7 @@ namespace Kimm
|
||||
//
|
||||
// xrTableCell6
|
||||
//
|
||||
this.xrTableCell6.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
|
||||
| DevExpress.XtraPrinting.BorderSide.Right)
|
||||
this.xrTableCell6.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
|
||||
| DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrTableCell6.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrTableCell6.Multiline = true;
|
||||
@@ -487,9 +427,8 @@ namespace Kimm
|
||||
this.xrTableCell6.StylePriority.UseBorders = false;
|
||||
this.xrTableCell6.StylePriority.UseFont = false;
|
||||
this.xrTableCell6.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell6.Text = "Art /\r\nAnzahl\r\nKlienten";
|
||||
this.xrTableCell6.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell6.Weight = 0.23743016759776545D;
|
||||
this.xrTableCell6.Weight = 0.46215195232219181D;
|
||||
//
|
||||
// xrTableCell7
|
||||
//
|
||||
@@ -503,9 +442,9 @@ namespace Kimm
|
||||
this.xrTableCell7.StylePriority.UseBorders = false;
|
||||
this.xrTableCell7.StylePriority.UseFont = false;
|
||||
this.xrTableCell7.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell7.Text = "Minuten\r\n(ohne 1,2)";
|
||||
this.xrTableCell7.Text = "Minuten\r\n";
|
||||
this.xrTableCell7.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
|
||||
this.xrTableCell7.Weight = 0.23743016759776536D;
|
||||
this.xrTableCell7.Weight = 0.1859140259789468D;
|
||||
//
|
||||
// xrTableCell43
|
||||
//
|
||||
@@ -515,7 +454,7 @@ namespace Kimm
|
||||
this.xrTableCell43.Name = "xrTableCell43";
|
||||
this.xrTableCell43.StylePriority.UseBorders = false;
|
||||
this.xrTableCell43.StylePriority.UseFont = false;
|
||||
this.xrTableCell43.Weight = 0.44692737430167595D;
|
||||
this.xrTableCell43.Weight = 0.35387584252869314D;
|
||||
//
|
||||
// xrTableCell49
|
||||
//
|
||||
@@ -529,7 +468,7 @@ namespace Kimm
|
||||
this.xrTableCell49.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell49.Text = "Klientin / Klient";
|
||||
this.xrTableCell49.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
|
||||
this.xrTableCell49.Weight = 0.44692737430167606D;
|
||||
this.xrTableCell49.Weight = 0.35730341287646705D;
|
||||
//
|
||||
// formattingRuleStartDate
|
||||
//
|
||||
@@ -541,8 +480,6 @@ namespace Kimm
|
||||
// ReportHeader
|
||||
//
|
||||
this.ReportHeader.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
this.xrLabel14,
|
||||
this.xrLabel16,
|
||||
this.xrLabel7,
|
||||
this.xrLabel8,
|
||||
this.xrLabel6,
|
||||
@@ -553,41 +490,6 @@ namespace Kimm
|
||||
this.ReportHeader.HeightF = 130F;
|
||||
this.ReportHeader.Name = "ReportHeader";
|
||||
//
|
||||
// xrLabel14
|
||||
//
|
||||
this.xrLabel14.BackColor = System.Drawing.Color.Gainsboro;
|
||||
this.xrLabel14.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
|
||||
| DevExpress.XtraPrinting.BorderSide.Right)));
|
||||
this.xrLabel14.Font = new System.Drawing.Font("Arial", 10F);
|
||||
this.xrLabel14.LocationFloat = new DevExpress.Utils.PointFloat(414.9999F, 47.1111F);
|
||||
this.xrLabel14.Name = "xrLabel14";
|
||||
this.xrLabel14.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
|
||||
this.xrLabel14.SizeF = new System.Drawing.SizeF(178.7501F, 30.50001F);
|
||||
this.xrLabel14.StylePriority.UseBackColor = false;
|
||||
this.xrLabel14.StylePriority.UseBorders = false;
|
||||
this.xrLabel14.StylePriority.UseFont = false;
|
||||
this.xrLabel14.StylePriority.UsePadding = false;
|
||||
this.xrLabel14.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel14.Text = "Bewilligte FLS wöchentlich";
|
||||
this.xrLabel14.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
|
||||
//
|
||||
// xrLabel16
|
||||
//
|
||||
this.xrLabel16.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Top | DevExpress.XtraPrinting.BorderSide.Right)));
|
||||
this.xrLabel16.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ApprovedFLSPerWeek", "{0:0.##}")});
|
||||
this.xrLabel16.Font = new System.Drawing.Font("Arial", 10F);
|
||||
this.xrLabel16.LocationFloat = new DevExpress.Utils.PointFloat(593.75F, 47.1111F);
|
||||
this.xrLabel16.Name = "xrLabel16";
|
||||
this.xrLabel16.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
|
||||
this.xrLabel16.SizeF = new System.Drawing.SizeF(100.2502F, 30.50001F);
|
||||
this.xrLabel16.StylePriority.UseBackColor = false;
|
||||
this.xrLabel16.StylePriority.UseBorders = false;
|
||||
this.xrLabel16.StylePriority.UseFont = false;
|
||||
this.xrLabel16.StylePriority.UsePadding = false;
|
||||
this.xrLabel16.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel16.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
|
||||
//
|
||||
// xrLabel7
|
||||
//
|
||||
this.xrLabel7.BackColor = System.Drawing.Color.Gainsboro;
|
||||
@@ -701,10 +603,10 @@ namespace Kimm
|
||||
this.xrLabel2.Multiline = true;
|
||||
this.xrLabel2.Name = "xrLabel2";
|
||||
this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel2.SizeF = new System.Drawing.SizeF(674.9998F, 25F);
|
||||
this.xrLabel2.SizeF = new System.Drawing.SizeF(747F, 25F);
|
||||
this.xrLabel2.StylePriority.UseFont = false;
|
||||
this.xrLabel2.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel2.Text = "Quittierungsbeleg [Mandator.Name]";
|
||||
this.xrLabel2.Text = "Quittierungsbeleg KIMM flexible Kinder- und Jugendhilfe";
|
||||
this.xrLabel2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
|
||||
//
|
||||
// formattingRuleServiceDesc
|
||||
@@ -730,7 +632,9 @@ namespace Kimm
|
||||
//
|
||||
// topMarginBand1
|
||||
//
|
||||
this.topMarginBand1.HeightF = 100F;
|
||||
this.topMarginBand1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
this.xrPictureBox3});
|
||||
this.topMarginBand1.HeightF = 118.0208F;
|
||||
this.topMarginBand1.Name = "topMarginBand1";
|
||||
//
|
||||
// bottomMarginBand1
|
||||
@@ -741,15 +645,6 @@ namespace Kimm
|
||||
// GroupFooter1
|
||||
//
|
||||
this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
this.lblUnterschriftKlient,
|
||||
this.lblUnterschriftMitarbeiter,
|
||||
this.xrTableAbwesenheiten,
|
||||
this.lblHatAbwesenheiten,
|
||||
this.lblHatGruppen,
|
||||
this.xrRichText2,
|
||||
this.xrRichText1,
|
||||
this.xrLabel15,
|
||||
this.xrLabel13,
|
||||
this.xrLabel12,
|
||||
this.xrLabel11,
|
||||
this.xrLabel10,
|
||||
@@ -759,371 +654,15 @@ namespace Kimm
|
||||
this.GroupFooter1.KeepTogether = true;
|
||||
this.GroupFooter1.Name = "GroupFooter1";
|
||||
//
|
||||
// lblUnterschriftKlient
|
||||
//
|
||||
this.lblUnterschriftKlient.Borders = DevExpress.XtraPrinting.BorderSide.Top;
|
||||
this.lblUnterschriftKlient.Font = new System.Drawing.Font("Arial", 10F);
|
||||
this.lblUnterschriftKlient.LocationFloat = new DevExpress.Utils.PointFloat(94.99999F, 250F);
|
||||
this.lblUnterschriftKlient.Name = "lblUnterschriftKlient";
|
||||
this.lblUnterschriftKlient.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
|
||||
this.lblUnterschriftKlient.SizeF = new System.Drawing.SizeF(271.8472F, 20F);
|
||||
this.lblUnterschriftKlient.StylePriority.UseBackColor = false;
|
||||
this.lblUnterschriftKlient.StylePriority.UseBorders = false;
|
||||
this.lblUnterschriftKlient.StylePriority.UseFont = false;
|
||||
this.lblUnterschriftKlient.StylePriority.UsePadding = false;
|
||||
this.lblUnterschriftKlient.StylePriority.UseTextAlignment = false;
|
||||
this.lblUnterschriftKlient.Text = "Datum, Unterschrift Klient/in";
|
||||
this.lblUnterschriftKlient.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
//
|
||||
// lblUnterschriftMitarbeiter
|
||||
//
|
||||
this.lblUnterschriftMitarbeiter.Borders = DevExpress.XtraPrinting.BorderSide.Top;
|
||||
this.lblUnterschriftMitarbeiter.Font = new System.Drawing.Font("Arial", 10F);
|
||||
this.lblUnterschriftMitarbeiter.LocationFloat = new DevExpress.Utils.PointFloat(398.31F, 250F);
|
||||
this.lblUnterschriftMitarbeiter.Name = "lblUnterschriftMitarbeiter";
|
||||
this.lblUnterschriftMitarbeiter.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
|
||||
this.lblUnterschriftMitarbeiter.SizeF = new System.Drawing.SizeF(336.6944F, 19.99998F);
|
||||
this.lblUnterschriftMitarbeiter.StylePriority.UseBackColor = false;
|
||||
this.lblUnterschriftMitarbeiter.StylePriority.UseBorders = false;
|
||||
this.lblUnterschriftMitarbeiter.StylePriority.UseFont = false;
|
||||
this.lblUnterschriftMitarbeiter.StylePriority.UsePadding = false;
|
||||
this.lblUnterschriftMitarbeiter.StylePriority.UseTextAlignment = false;
|
||||
this.lblUnterschriftMitarbeiter.Text = "Datum, verantwortliche/r Mitarbeiter/in";
|
||||
this.lblUnterschriftMitarbeiter.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
//
|
||||
// xrTableAbwesenheiten
|
||||
//
|
||||
this.xrTableAbwesenheiten.BorderColor = System.Drawing.Color.Black;
|
||||
this.xrTableAbwesenheiten.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
|
||||
| DevExpress.XtraPrinting.BorderSide.Right)
|
||||
| DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrTableAbwesenheiten.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrTableAbwesenheiten.LocationFloat = new DevExpress.Utils.PointFloat(170F, 79.99997F);
|
||||
this.xrTableAbwesenheiten.Name = "xrTableAbwesenheiten";
|
||||
this.xrTableAbwesenheiten.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
|
||||
this.xrTableAbwesenheiten.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
|
||||
this.xrTableRow3,
|
||||
this.xrTableRow4,
|
||||
this.xrTableRow5,
|
||||
this.xrTableRow7,
|
||||
this.xrTableRow8});
|
||||
this.xrTableAbwesenheiten.SizeF = new System.Drawing.SizeF(230F, 100F);
|
||||
this.xrTableAbwesenheiten.StylePriority.UseBorders = false;
|
||||
this.xrTableAbwesenheiten.StylePriority.UseFont = false;
|
||||
this.xrTableAbwesenheiten.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
|
||||
//
|
||||
// xrTableRow3
|
||||
//
|
||||
this.xrTableRow3.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
|
||||
this.xrTableCell16,
|
||||
this.xrTableCell17,
|
||||
this.xrTableCell18});
|
||||
this.xrTableRow3.Name = "xrTableRow3";
|
||||
this.xrTableRow3.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
|
||||
this.xrTableRow3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
|
||||
this.xrTableRow3.Weight = 1D;
|
||||
//
|
||||
// xrTableCell16
|
||||
//
|
||||
this.xrTableCell16.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrTableCell16.Name = "xrTableCell16";
|
||||
this.xrTableCell16.StylePriority.UseBorders = false;
|
||||
this.xrTableCell16.StylePriority.UseFont = false;
|
||||
this.xrTableCell16.StylePriority.UsePadding = false;
|
||||
this.xrTableCell16.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell16.Text = "von";
|
||||
this.xrTableCell16.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell16.Weight = 0.1073232364991462D;
|
||||
//
|
||||
// xrTableCell17
|
||||
//
|
||||
this.xrTableCell17.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrTableCell17.Name = "xrTableCell17";
|
||||
this.xrTableCell17.StylePriority.UseBorders = false;
|
||||
this.xrTableCell17.StylePriority.UseFont = false;
|
||||
this.xrTableCell17.StylePriority.UsePadding = false;
|
||||
this.xrTableCell17.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell17.Text = "bis";
|
||||
this.xrTableCell17.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell17.Weight = 0.10732323432577288D;
|
||||
//
|
||||
// xrTableCell18
|
||||
//
|
||||
this.xrTableCell18.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrTableCell18.Name = "xrTableCell18";
|
||||
this.xrTableCell18.StylePriority.UseBorders = false;
|
||||
this.xrTableCell18.StylePriority.UseFont = false;
|
||||
this.xrTableCell18.StylePriority.UsePadding = false;
|
||||
this.xrTableCell18.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell18.Text = "Tage";
|
||||
this.xrTableCell18.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell18.Weight = 0.075757568269402914D;
|
||||
//
|
||||
// xrTableRow4
|
||||
//
|
||||
this.xrTableRow4.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
|
||||
this.xrTableCell19,
|
||||
this.xrTableCell20,
|
||||
this.xrTableCell21});
|
||||
this.xrTableRow4.Name = "xrTableRow4";
|
||||
this.xrTableRow4.Weight = 1D;
|
||||
//
|
||||
// xrTableCell19
|
||||
//
|
||||
this.xrTableCell19.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrTableCell19.Name = "xrTableCell19";
|
||||
this.xrTableCell19.StylePriority.UseFont = false;
|
||||
this.xrTableCell19.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell19.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell19.Weight = 0.1073232364991462D;
|
||||
//
|
||||
// xrTableCell20
|
||||
//
|
||||
this.xrTableCell20.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrTableCell20.Name = "xrTableCell20";
|
||||
this.xrTableCell20.StylePriority.UseFont = false;
|
||||
this.xrTableCell20.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell20.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell20.Weight = 0.10732323432577288D;
|
||||
//
|
||||
// xrTableCell21
|
||||
//
|
||||
this.xrTableCell21.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrTableCell21.Name = "xrTableCell21";
|
||||
this.xrTableCell21.StylePriority.UseFont = false;
|
||||
this.xrTableCell21.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell21.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell21.Weight = 0.075757568269402914D;
|
||||
//
|
||||
// xrTableRow5
|
||||
//
|
||||
this.xrTableRow5.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
|
||||
this.xrTableCell22,
|
||||
this.xrTableCell23,
|
||||
this.xrTableCell24});
|
||||
this.xrTableRow5.Name = "xrTableRow5";
|
||||
this.xrTableRow5.Weight = 1D;
|
||||
//
|
||||
// xrTableCell22
|
||||
//
|
||||
this.xrTableCell22.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrTableCell22.Name = "xrTableCell22";
|
||||
this.xrTableCell22.StylePriority.UseFont = false;
|
||||
this.xrTableCell22.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell22.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell22.Weight = 0.1073232364991462D;
|
||||
//
|
||||
// xrTableCell23
|
||||
//
|
||||
this.xrTableCell23.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrTableCell23.Name = "xrTableCell23";
|
||||
this.xrTableCell23.StylePriority.UseFont = false;
|
||||
this.xrTableCell23.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell23.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell23.Weight = 0.10732323432577288D;
|
||||
//
|
||||
// xrTableCell24
|
||||
//
|
||||
this.xrTableCell24.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrTableCell24.Name = "xrTableCell24";
|
||||
this.xrTableCell24.StylePriority.UseFont = false;
|
||||
this.xrTableCell24.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell24.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell24.Weight = 0.075757568269402914D;
|
||||
//
|
||||
// xrTableRow7
|
||||
//
|
||||
this.xrTableRow7.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
|
||||
this.xrTableCell25,
|
||||
this.xrTableCell26,
|
||||
this.xrTableCell27});
|
||||
this.xrTableRow7.Name = "xrTableRow7";
|
||||
this.xrTableRow7.Weight = 1D;
|
||||
//
|
||||
// xrTableCell25
|
||||
//
|
||||
this.xrTableCell25.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrTableCell25.Name = "xrTableCell25";
|
||||
this.xrTableCell25.StylePriority.UseFont = false;
|
||||
this.xrTableCell25.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell25.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell25.Weight = 0.1073232364991462D;
|
||||
//
|
||||
// xrTableCell26
|
||||
//
|
||||
this.xrTableCell26.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrTableCell26.Name = "xrTableCell26";
|
||||
this.xrTableCell26.StylePriority.UseFont = false;
|
||||
this.xrTableCell26.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell26.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell26.Weight = 0.10732323432577288D;
|
||||
//
|
||||
// xrTableCell27
|
||||
//
|
||||
this.xrTableCell27.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrTableCell27.Name = "xrTableCell27";
|
||||
this.xrTableCell27.StylePriority.UseFont = false;
|
||||
this.xrTableCell27.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell27.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell27.Weight = 0.075757568269402914D;
|
||||
//
|
||||
// xrTableRow8
|
||||
//
|
||||
this.xrTableRow8.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
|
||||
this.xrTableCell29,
|
||||
this.xrTableCell30,
|
||||
this.xrTableCell31});
|
||||
this.xrTableRow8.Name = "xrTableRow8";
|
||||
this.xrTableRow8.Weight = 1D;
|
||||
//
|
||||
// xrTableCell29
|
||||
//
|
||||
this.xrTableCell29.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrTableCell29.Name = "xrTableCell29";
|
||||
this.xrTableCell29.StylePriority.UseFont = false;
|
||||
this.xrTableCell29.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell29.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell29.Weight = 0.1073232364991462D;
|
||||
//
|
||||
// xrTableCell30
|
||||
//
|
||||
this.xrTableCell30.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrTableCell30.Name = "xrTableCell30";
|
||||
this.xrTableCell30.StylePriority.UseFont = false;
|
||||
this.xrTableCell30.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell30.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell30.Weight = 0.10732323432577288D;
|
||||
//
|
||||
// xrTableCell31
|
||||
//
|
||||
this.xrTableCell31.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrTableCell31.Name = "xrTableCell31";
|
||||
this.xrTableCell31.StylePriority.UseFont = false;
|
||||
this.xrTableCell31.StylePriority.UseTextAlignment = false;
|
||||
this.xrTableCell31.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
this.xrTableCell31.Weight = 0.075757568269402914D;
|
||||
//
|
||||
// lblHatAbwesenheiten
|
||||
//
|
||||
this.lblHatAbwesenheiten.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
|
||||
| DevExpress.XtraPrinting.BorderSide.Right)
|
||||
| DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.lblHatAbwesenheiten.Font = new System.Drawing.Font("Arial", 10F);
|
||||
this.lblHatAbwesenheiten.LocationFloat = new DevExpress.Utils.PointFloat(435.1388F, 130F);
|
||||
this.lblHatAbwesenheiten.Name = "lblHatAbwesenheiten";
|
||||
this.lblHatAbwesenheiten.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
|
||||
this.lblHatAbwesenheiten.SizeF = new System.Drawing.SizeF(30F, 30F);
|
||||
this.lblHatAbwesenheiten.StylePriority.UseBackColor = false;
|
||||
this.lblHatAbwesenheiten.StylePriority.UseBorders = false;
|
||||
this.lblHatAbwesenheiten.StylePriority.UseFont = false;
|
||||
this.lblHatAbwesenheiten.StylePriority.UsePadding = false;
|
||||
this.lblHatAbwesenheiten.StylePriority.UseTextAlignment = false;
|
||||
this.lblHatAbwesenheiten.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
//
|
||||
// lblHatGruppen
|
||||
//
|
||||
this.lblHatGruppen.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
|
||||
| DevExpress.XtraPrinting.BorderSide.Right)
|
||||
| DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.lblHatGruppen.Font = new System.Drawing.Font("Arial", 10F);
|
||||
this.lblHatGruppen.LocationFloat = new DevExpress.Utils.PointFloat(435.1388F, 79.99997F);
|
||||
this.lblHatGruppen.Name = "lblHatGruppen";
|
||||
this.lblHatGruppen.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
|
||||
this.lblHatGruppen.SizeF = new System.Drawing.SizeF(30F, 30F);
|
||||
this.lblHatGruppen.StylePriority.UseBackColor = false;
|
||||
this.lblHatGruppen.StylePriority.UseBorders = false;
|
||||
this.lblHatGruppen.StylePriority.UseFont = false;
|
||||
this.lblHatGruppen.StylePriority.UsePadding = false;
|
||||
this.lblHatGruppen.StylePriority.UseTextAlignment = false;
|
||||
this.lblHatGruppen.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
//
|
||||
// xrRichText2
|
||||
//
|
||||
this.xrRichText2.Font = new System.Drawing.Font("Arial", 8F);
|
||||
this.xrRichText2.LocationFloat = new DevExpress.Utils.PointFloat(474.4723F, 130F);
|
||||
this.xrRichText2.Name = "xrRichText2";
|
||||
this.xrRichText2.SerializableRtfString = resources.GetString("xrRichText2.SerializableRtfString");
|
||||
this.xrRichText2.SizeF = new System.Drawing.SizeF(264.972F, 68.05556F);
|
||||
this.xrRichText2.StylePriority.UseFont = false;
|
||||
//
|
||||
// xrRichText1
|
||||
//
|
||||
this.xrRichText1.Font = new System.Drawing.Font("Arial", 8F);
|
||||
this.xrRichText1.LocationFloat = new DevExpress.Utils.PointFloat(474.4723F, 79.99997F);
|
||||
this.xrRichText1.Name = "xrRichText1";
|
||||
this.xrRichText1.SerializableRtfString = resources.GetString("xrRichText1.SerializableRtfString");
|
||||
this.xrRichText1.SizeF = new System.Drawing.SizeF(264.9721F, 50F);
|
||||
this.xrRichText1.StylePriority.UseFont = false;
|
||||
//
|
||||
// xrLabel15
|
||||
//
|
||||
this.xrLabel15.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Underline);
|
||||
this.xrLabel15.LocationFloat = new DevExpress.Utils.PointFloat(0F, 79.99997F);
|
||||
this.xrLabel15.Multiline = true;
|
||||
this.xrLabel15.Name = "xrLabel15";
|
||||
this.xrLabel15.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
|
||||
this.xrLabel15.SizeF = new System.Drawing.SizeF(170F, 43.61115F);
|
||||
this.xrLabel15.StylePriority.UseBackColor = false;
|
||||
this.xrLabel15.StylePriority.UseBorders = false;
|
||||
this.xrLabel15.StylePriority.UseFont = false;
|
||||
this.xrLabel15.StylePriority.UsePadding = false;
|
||||
this.xrLabel15.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel15.Text = "Krankenhausaufenthalte/\r\nstat. Rehamaßnahmen:";
|
||||
this.xrLabel15.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
|
||||
//
|
||||
// xrLabel13
|
||||
//
|
||||
this.xrLabel13.Font = new System.Drawing.Font("Arial", 10F);
|
||||
this.xrLabel13.LocationFloat = new DevExpress.Utils.PointFloat(0F, 39.99998F);
|
||||
this.xrLabel13.Name = "xrLabel13";
|
||||
this.xrLabel13.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
|
||||
this.xrLabel13.SizeF = new System.Drawing.SizeF(320F, 20F);
|
||||
this.xrLabel13.StylePriority.UseBackColor = false;
|
||||
this.xrLabel13.StylePriority.UseBorders = false;
|
||||
this.xrLabel13.StylePriority.UseFont = false;
|
||||
this.xrLabel13.StylePriority.UsePadding = false;
|
||||
this.xrLabel13.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel13.Text = "GR = Gruppenangebot";
|
||||
this.xrLabel13.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
|
||||
//
|
||||
// xrLabel12
|
||||
//
|
||||
this.xrLabel12.Font = new System.Drawing.Font("Arial", 10F);
|
||||
this.xrLabel12.LocationFloat = new DevExpress.Utils.PointFloat(0F, 19.99999F);
|
||||
this.xrLabel12.Name = "xrLabel12";
|
||||
this.xrLabel12.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
|
||||
this.xrLabel12.SizeF = new System.Drawing.SizeF(320F, 20F);
|
||||
this.xrLabel12.StylePriority.UseBackColor = false;
|
||||
this.xrLabel12.StylePriority.UseBorders = false;
|
||||
this.xrLabel12.StylePriority.UseFont = false;
|
||||
this.xrLabel12.StylePriority.UsePadding = false;
|
||||
this.xrLabel12.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel12.Text = "E = ear to ear, face to face";
|
||||
this.xrLabel12.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
|
||||
//
|
||||
// xrLabel11
|
||||
//
|
||||
this.xrLabel11.Font = new System.Drawing.Font("Arial", 8F);
|
||||
this.xrLabel11.LocationFloat = new DevExpress.Utils.PointFloat(415F, 19.99999F);
|
||||
this.xrLabel11.Name = "xrLabel11";
|
||||
this.xrLabel11.SizeF = new System.Drawing.SizeF(320F, 20F);
|
||||
this.xrLabel11.StylePriority.UseBackColor = false;
|
||||
this.xrLabel11.StylePriority.UseBorders = false;
|
||||
this.xrLabel11.StylePriority.UseFont = false;
|
||||
this.xrLabel11.StylePriority.UsePadding = false;
|
||||
this.xrLabel11.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel11.Text = "Ohne Faktor 1,2 (wird erst bei Abrechnung eingerechnet)";
|
||||
this.xrLabel11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter;
|
||||
//
|
||||
// xrLabel10
|
||||
//
|
||||
this.xrLabel10.BackColor = System.Drawing.Color.Gainsboro;
|
||||
this.xrLabel10.Borders = ((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Right | DevExpress.XtraPrinting.BorderSide.Bottom)));
|
||||
this.xrLabel10.Font = new System.Drawing.Font("Arial", 10F);
|
||||
this.xrLabel10.LocationFloat = new DevExpress.Utils.PointFloat(415F, 0F);
|
||||
this.xrLabel10.LocationFloat = new DevExpress.Utils.PointFloat(496.8219F, 0F);
|
||||
this.xrLabel10.Name = "xrLabel10";
|
||||
this.xrLabel10.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
|
||||
this.xrLabel10.SizeF = new System.Drawing.SizeF(320F, 20F);
|
||||
this.xrLabel10.SizeF = new System.Drawing.SizeF(265.1779F, 20F);
|
||||
this.xrLabel10.StylePriority.UseBackColor = false;
|
||||
this.xrLabel10.StylePriority.UseBorders = false;
|
||||
this.xrLabel10.StylePriority.UseFont = false;
|
||||
@@ -1136,10 +675,10 @@ namespace Kimm
|
||||
//
|
||||
this.xrLabel9.Borders = DevExpress.XtraPrinting.BorderSide.Right;
|
||||
this.xrLabel9.Font = new System.Drawing.Font("Arial", 10F);
|
||||
this.xrLabel9.LocationFloat = new DevExpress.Utils.PointFloat(245F, 0F);
|
||||
this.xrLabel9.LocationFloat = new DevExpress.Utils.PointFloat(340.9146F, 0F);
|
||||
this.xrLabel9.Name = "xrLabel9";
|
||||
this.xrLabel9.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
|
||||
this.xrLabel9.SizeF = new System.Drawing.SizeF(85F, 20F);
|
||||
this.xrLabel9.SizeF = new System.Drawing.SizeF(86.58545F, 20F);
|
||||
this.xrLabel9.StylePriority.UseBackColor = false;
|
||||
this.xrLabel9.StylePriority.UseBorders = false;
|
||||
this.xrLabel9.StylePriority.UseFont = false;
|
||||
@@ -1154,10 +693,10 @@ namespace Kimm
|
||||
this.xrLabel1.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Text", null, "TotalFLMBillable", "{0:0.##}")});
|
||||
this.xrLabel1.Font = new System.Drawing.Font("Arial", 10F);
|
||||
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(330F, 0F);
|
||||
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(427.5F, 0F);
|
||||
this.xrLabel1.Name = "xrLabel1";
|
||||
this.xrLabel1.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
|
||||
this.xrLabel1.SizeF = new System.Drawing.SizeF(85F, 20F);
|
||||
this.xrLabel1.SizeF = new System.Drawing.SizeF(69.3219F, 20F);
|
||||
this.xrLabel1.StylePriority.UseBackColor = false;
|
||||
this.xrLabel1.StylePriority.UseBorders = false;
|
||||
this.xrLabel1.StylePriority.UseFont = false;
|
||||
@@ -1172,10 +711,62 @@ namespace Kimm
|
||||
this.fieldKontaktArt.FieldType = DevExpress.XtraReports.UI.FieldType.String;
|
||||
this.fieldKontaktArt.Name = "fieldKontaktArt";
|
||||
//
|
||||
// xrPictureBox3
|
||||
//
|
||||
this.xrPictureBox3.Image = ((System.Drawing.Image)(resources.GetObject("xrPictureBox3.Image")));
|
||||
this.xrPictureBox3.LocationFloat = new DevExpress.Utils.PointFloat(0F, 38.33332F);
|
||||
this.xrPictureBox3.Name = "xrPictureBox3";
|
||||
this.xrPictureBox3.SizeF = new System.Drawing.SizeF(747F, 59.27081F);
|
||||
this.xrPictureBox3.Sizing = DevExpress.XtraPrinting.ImageSizeMode.ZoomImage;
|
||||
//
|
||||
// picSignature
|
||||
//
|
||||
this.picSignature.Borders = DevExpress.XtraPrinting.BorderSide.None;
|
||||
this.picSignature.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
|
||||
new DevExpress.XtraReports.UI.XRBinding("Tag", null, "Services.Signature")});
|
||||
this.picSignature.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0.9999911F);
|
||||
this.picSignature.Name = "picSignature";
|
||||
this.picSignature.SizeF = new System.Drawing.SizeF(133.2249F, 18F);
|
||||
this.picSignature.Sizing = DevExpress.XtraPrinting.ImageSizeMode.ZoomImage;
|
||||
this.picSignature.StylePriority.UseBorders = false;
|
||||
this.picSignature.BeforePrint += new System.Drawing.Printing.PrintEventHandler(this.picSignature_BeforePrint);
|
||||
//
|
||||
// bindingSource1
|
||||
//
|
||||
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServicesOverviewRO);
|
||||
//
|
||||
// xrLabel11
|
||||
//
|
||||
this.xrLabel11.Borders = DevExpress.XtraPrinting.BorderSide.None;
|
||||
this.xrLabel11.Font = new System.Drawing.Font("Arial", 10F);
|
||||
this.xrLabel11.LocationFloat = new DevExpress.Utils.PointFloat(0F, 74.29544F);
|
||||
this.xrLabel11.Name = "xrLabel11";
|
||||
this.xrLabel11.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
|
||||
this.xrLabel11.SizeF = new System.Drawing.SizeF(761.9999F, 61.75001F);
|
||||
this.xrLabel11.StylePriority.UseBackColor = false;
|
||||
this.xrLabel11.StylePriority.UseBorders = false;
|
||||
this.xrLabel11.StylePriority.UseFont = false;
|
||||
this.xrLabel11.StylePriority.UsePadding = false;
|
||||
this.xrLabel11.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel11.Text = resources.GetString("xrLabel11.Text");
|
||||
this.xrLabel11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
|
||||
//
|
||||
// xrLabel12
|
||||
//
|
||||
this.xrLabel12.Borders = DevExpress.XtraPrinting.BorderSide.None;
|
||||
this.xrLabel12.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.xrLabel12.LocationFloat = new DevExpress.Utils.PointFloat(0.0001300465F, 55.15907F);
|
||||
this.xrLabel12.Name = "xrLabel12";
|
||||
this.xrLabel12.Padding = new DevExpress.XtraPrinting.PaddingInfo(3, 2, 0, 0, 100F);
|
||||
this.xrLabel12.SizeF = new System.Drawing.SizeF(761.9999F, 19.13637F);
|
||||
this.xrLabel12.StylePriority.UseBackColor = false;
|
||||
this.xrLabel12.StylePriority.UseBorders = false;
|
||||
this.xrLabel12.StylePriority.UseFont = false;
|
||||
this.xrLabel12.StylePriority.UsePadding = false;
|
||||
this.xrLabel12.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel12.Text = "Hinweis:";
|
||||
this.xrLabel12.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
|
||||
//
|
||||
// Quittierungsbeleg
|
||||
//
|
||||
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
|
||||
@@ -1194,16 +785,13 @@ namespace Kimm
|
||||
this.formattingRuleServiceDesc,
|
||||
this.formattingRuleCostBearer,
|
||||
this.formattingRuleEmployeeName});
|
||||
this.Margins = new System.Drawing.Printing.Margins(50, 30, 100, 30);
|
||||
this.Margins = new System.Drawing.Printing.Margins(35, 30, 118, 30);
|
||||
this.PageHeight = 1169;
|
||||
this.PageWidth = 827;
|
||||
this.PaperKind = System.Drawing.Printing.PaperKind.A4;
|
||||
this.Version = "17.1";
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTableServiceRecords1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTableAbwesenheiten)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText2)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrRichText1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
|
||||
|
||||
@@ -1256,44 +844,13 @@ namespace Kimm
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell12;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell44;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell50;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell2;
|
||||
private DevExpress.XtraReports.UI.CalculatedField fieldKontaktArt;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel11;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel10;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel9;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel1;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel13;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel12;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel15;
|
||||
private DevExpress.XtraReports.UI.XRRichText xrRichText1;
|
||||
private DevExpress.XtraReports.UI.XRRichText xrRichText2;
|
||||
private DevExpress.XtraReports.UI.XRLabel lblHatAbwesenheiten;
|
||||
private DevExpress.XtraReports.UI.XRLabel lblHatGruppen;
|
||||
private DevExpress.XtraReports.UI.XRTable xrTableAbwesenheiten;
|
||||
private DevExpress.XtraReports.UI.XRTableRow xrTableRow3;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell16;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell17;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell18;
|
||||
private DevExpress.XtraReports.UI.XRLabel lblUnterschriftKlient;
|
||||
private DevExpress.XtraReports.UI.XRLabel lblUnterschriftMitarbeiter;
|
||||
private DevExpress.XtraReports.UI.XRTableRow xrTableRow4;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell19;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell20;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell21;
|
||||
private DevExpress.XtraReports.UI.XRTableRow xrTableRow5;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell22;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell23;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell24;
|
||||
private DevExpress.XtraReports.UI.XRTableRow xrTableRow7;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell25;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell26;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell27;
|
||||
private DevExpress.XtraReports.UI.XRTableRow xrTableRow8;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell29;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell30;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell31;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel14;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel16;
|
||||
private DevExpress.XtraReports.UI.XRPictureBox xrPictureBox3;
|
||||
private DevExpress.XtraReports.UI.XRPictureBox picSignature;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel11;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel12;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,65 +50,65 @@ namespace Kimm
|
||||
pRO.Services = servicesBillable;
|
||||
}
|
||||
|
||||
if (String.IsNullOrWhiteSpace(pRO.AbsenceTimes))
|
||||
{
|
||||
lblHatAbwesenheiten.Text = "X";
|
||||
}
|
||||
//if (String.IsNullOrWhiteSpace(pRO.AbsenceTimes))
|
||||
//{
|
||||
// lblHatAbwesenheiten.Text = "X";
|
||||
//}
|
||||
|
||||
if (!hatGruppen)
|
||||
{
|
||||
lblHatGruppen.Text = "X";
|
||||
}
|
||||
//if (!hatGruppen)
|
||||
//{
|
||||
// lblHatGruppen.Text = "X";
|
||||
//}
|
||||
|
||||
ErstelleAbwesenheitenTabelle(pRO);
|
||||
//ErstelleAbwesenheitenTabelle(pRO);
|
||||
|
||||
bindingSource1.DataSource = pRO;
|
||||
}
|
||||
|
||||
private void ErstelleAbwesenheitenTabelle(ServicesOverviewRO pRo)
|
||||
{
|
||||
if (pRo.Abwesenheiten != null)
|
||||
{
|
||||
int newRows = 0;
|
||||
int index = 1;
|
||||
foreach (var at in pRo.Abwesenheiten)
|
||||
{
|
||||
DevExpress.XtraReports.UI.XRTableRow row = null;
|
||||
if (index < xrTableAbwesenheiten.Rows.Count)
|
||||
{
|
||||
row = xrTableAbwesenheiten.Rows[index];
|
||||
}
|
||||
else
|
||||
{
|
||||
row = xrTableAbwesenheiten.InsertRowBelow(xrTableAbwesenheiten.Rows[xrTableAbwesenheiten.Rows.Count - 1]);
|
||||
newRows++;
|
||||
}
|
||||
//private void ErstelleAbwesenheitenTabelle(ServicesOverviewRO pRo)
|
||||
//{
|
||||
// if (pRo.Abwesenheiten != null)
|
||||
// {
|
||||
// int newRows = 0;
|
||||
// int index = 1;
|
||||
// foreach (var at in pRo.Abwesenheiten)
|
||||
// {
|
||||
// DevExpress.XtraReports.UI.XRTableRow row = null;
|
||||
// if (index < xrTableAbwesenheiten.Rows.Count)
|
||||
// {
|
||||
// row = xrTableAbwesenheiten.Rows[index];
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// row = xrTableAbwesenheiten.InsertRowBelow(xrTableAbwesenheiten.Rows[xrTableAbwesenheiten.Rows.Count - 1]);
|
||||
// newRows++;
|
||||
// }
|
||||
|
||||
row.Cells[0].Text = String.Format("{0:dd.MM.yyyy}", at.Start);
|
||||
int? days = null;
|
||||
// row.Cells[0].Text = String.Format("{0:dd.MM.yyyy}", at.Start);
|
||||
// int? days = null;
|
||||
|
||||
if (at.End.HasValue)
|
||||
{
|
||||
row.Cells[1].Text = String.Format("{0:dd.MM.yyyy}", at.End);
|
||||
days = (int)at.End.Value.Subtract(at.Start.Value).TotalDays + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
row.Cells[1].Text = "unbekannt";
|
||||
}
|
||||
// if (at.End.HasValue)
|
||||
// {
|
||||
// row.Cells[1].Text = String.Format("{0:dd.MM.yyyy}", at.End);
|
||||
// days = (int)at.End.Value.Subtract(at.Start.Value).TotalDays + 1;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// row.Cells[1].Text = "unbekannt";
|
||||
// }
|
||||
|
||||
row.Cells[2].Text = String.Format("{0:0}", days);
|
||||
// row.Cells[2].Text = String.Format("{0:0}", days);
|
||||
|
||||
index++;
|
||||
}
|
||||
// index++;
|
||||
// }
|
||||
|
||||
if (newRows > 0)
|
||||
{
|
||||
lblUnterschriftKlient.Top += newRows * 20;
|
||||
lblUnterschriftMitarbeiter.Top += newRows * 20;
|
||||
}
|
||||
}
|
||||
}
|
||||
// if (newRows > 0)
|
||||
// {
|
||||
// lblUnterschriftKlient.Top += newRows * 20;
|
||||
// lblUnterschriftMitarbeiter.Top += newRows * 20;
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
private void picSignature_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
|
||||
{
|
||||
|
||||
@@ -120,10 +120,180 @@
|
||||
<metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>21, 17</value>
|
||||
</metadata>
|
||||
<data name="xrRichText2.SerializableRtfString" xml:space="preserve">
|
||||
<value>ewBcAHIAdABmADEAXABkAGUAZgBmADAAewBcAGYAbwBuAHQAdABiAGwAewBcAGYAMAAgAEMAYQBsAGkAYgByAGkAOwB9AHsAXABmADEAIABUAGkAbQBlAHMAIABOAGUAdwAgAFIAbwBtAGEAbgA7AH0AewBcAGYAMgAgAEEAcgBpAGEAbAA7AH0AfQB7AFwAYwBvAGwAbwByAHQAYgBsACAAOwBcAHIAZQBkADAAXABnAHIAZQBlAG4AMABcAGIAbAB1AGUAMAAgADsAXAByAGUAZAAwAFwAZwByAGUAZQBuADAAXABiAGwAdQBlADIANQA1ACAAOwB9AHsAXAAqAFwAZABlAGYAYwBoAHAAIABcAGYAMQBcAGYAcwAyADQAfQB7AFwAcwB0AHkAbABlAHMAaABlAGUAdAAgAHsAXABxAGwAXABmADEAXABmAHMAMgA0ACAATgBvAHIAbQBhAGwAOwB9AHsAXAAqAFwAYwBzADEAXABmADEAXABmAHMAMgA0AFwAYwBmADEAIABEAGUAZgBhAHUAbAB0ACAAUABhAHIAYQBnAHIAYQBwAGgAIABGAG8AbgB0ADsAfQB7AFwAKgBcAGMAcwAyAFwAcwBiAGEAcwBlAGQAbwBuADEAXABmADEAXABmAHMAMgA0AFwAYwBmADEAIABMAGkAbgBlACAATgB1AG0AYgBlAHIAOwB9AHsAXAAqAFwAYwBzADMAXAB1AGwAXABmADEAXABmAHMAMgA0AFwAYwBmADIAIABIAHkAcABlAHIAbABpAG4AawA7AH0AewBcACoAXAB0AHMANABcAHQAcwByAG8AdwBkAFwAZgAxAFwAZgBzADIANABcAHEAbABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgBsADMAXAB0AHMAYwBlAGwAbABwAGEAZABkAGwAMQAwADgAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAYgAzAFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHIAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAcgAxADAAOABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgB0ADMAXAB0AHMAdgBlAHIAdABhAGwAdABcAGMAbAB0AHgAbAByAHQAYgAgAE4AbwByAG0AYQBsACAAVABhAGIAbABlADsAfQB7AFwAKgBcAHQAcwA1AFwAdABzAHIAbwB3AGQAXABzAGIAYQBzAGUAZABvAG4ANABcAGYAMQBcAGYAcwAyADQAXABxAGwAXAB0AHIAYgByAGQAcgB0AFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAGwAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAYgBcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHIAYgByAGQAcgByAFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAGgAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAdgBcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAbAAzAFwAdABzAGMAZQBsAGwAcABhAGQAZABsADEAMAA4AFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHIAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAcgAxADAAOABcAHQAcwB2AGUAcgB0AGEAbAB0AFwAYwBsAHQAeABsAHIAdABiACAAVABhAGIAbABlACAAUwBpAG0AcABsAGUAIAAxADsAfQB9AHsAXAAqAFwAbABpAHMAdABvAHYAZQByAHIAaQBkAGUAdABhAGIAbABlAH0AXABuAG8AdQBpAGMAbwBtAHAAYQB0AFwAcwBwAGwAeQB0AHcAbgBpAG4AZQBcAGgAdABtAGEAdQB0AHMAcABcAHAAYQByAGQAXABwAGwAYQBpAG4AXABxAGwAewBcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgAEsAZQBpAG4AZQAgAH0AewBcAGwAYQBuAGcAMQAwADMAMQBcAGwAYQBuAGcAZgBlADEAMAAzADEAXAB1AGwAXABmADIAXABmAHMAMgAwAFwAYwBmADEAIABLAHIAYQBuAGsAZQBuAGgAYQB1AHMAYQB1AGYAZQBuAHQAaABhAGwAdABlAH0AXABsAGEAbgBnADEAMAAzADEAXABsAGEAbgBnAGYAZQAxADAAMwAxAFwAdQBsAFwAZgAyAFwAZgBzADIAMABcAGMAZgAxAFwAcABhAHIAXABwAGEAcgBkAFwAcABsAGEAaQBuAFwAcQBsAHsAXABsAGEAbgBnADEAMAAzADEAXABsAGEAbgBnAGYAZQAxADAAMwAxAFwAdQBsAFwAZgAyAFwAZgBzADIAMABcAGMAZgAxACAAYgBlAGsAYQBuAG4AdAAgAG8AZABlAHIAIAB9AFwAbABhAG4AZwAxADAAMwAxAFwAbABhAG4AZwBmAGUAMQAwADMAMQBcAHUAbABcAGYAMgBcAGYAcwAyADAAXABjAGYAMQBcAHAAYQByAFwAcABhAHIAZABcAHAAbABhAGkAbgBcAHEAbAB7AFwAbABhAG4AZwAxADAAMwAxAFwAbABhAG4AZwBmAGUAMQAwADMAMQBcAHUAbABcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgAGEAYgByAGUAYwBoAG4AdQBuAGcAcwByAGUAbABlAHYAYQBuAHQAfQB7AFwAbABhAG4AZwAxADAAMwAxAFwAbABhAG4AZwBmAGUAMQAwADMAMQBcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgACAAaQBtACAAQQBiAHIAZQBjAGgAbgB1AG4AZwBzAHoAZQBpAHQAcgBhAHUAbQB9AFwAbABhAG4AZwAxADAAMwAxAFwAbABhAG4AZwBmAGUAMQAwADMAMQBcAGYAMQBcAGYAcwAyADQAXABjAGYAMQBcAHAAYQByAH0A</value>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="xrPictureBox3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAfQAAABtCAYAAABXyJO1AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAd
|
||||
hwAAHYcBj+XxZQAAJuxJREFUeF7tnGGy47yWHN9KHLMar987Grs0CRkgkiQgUNK9t5kRGeF4VXXI7m/E
|
||||
/uf/fJr/85///d9F/qebm5ubm5ub30T9j/n9j/rr/NW/x7/657q5ubn5U9jHOhLfDGJ/h5H412J/piKV
|
||||
P8d//df/+m+T+J/C/h4i8TJ2OxLf/AHsv28kvrkK+0jXUnsZu7knk5e46s6r1M83qU1zxY1V6nfYSuXP
|
||||
YR+fSPxPYX8PkXgZux2Jb/4A9t83Ev9bvPNDareLVKaxW6NyYhi7EYk/hr1DLbVh7EYk/hj2DrXU/hz2
|
||||
8YnEf4aRP1f9568lXsZuR+Ib+M1/N/W71xL/O9hHNBIvYXdrqQ1h+1fk3DB2IxJ/DHuHWmrD2I0ilY9g
|
||||
z6+l9uewj08k/vXM/NmsG4mXsduR+Ob/8dv/fuz9I/G/g31Ei1Rexm7WUjvFtitydgjbF6l8BHt+LbVh
|
||||
7EaRykew59dS+3PYxycS/3rszxaJG6wXiZex25H4n8f+biLxr8DePxL/O9hHtEjlJexeLbVTbLsiZ4ex
|
||||
G0UqH8GeX0ttGLtRS+3t2LNrqf057OMTiX899meLxA3Wi8TL2O1I/M9jfzdFKj8ee/dI/O9gH9FaatPY
|
||||
rVpqp9h2Rc4OYzdqqb0de3YttWHsRi21t2PPrqX2I7APxqiceGKdSPzrmfmzWTcSL2O3I/GPx949Eh9i
|
||||
u0j8ZKTzk7H3j8T/DvYRraU2hd2ppTaM3XhFzk1hd2qpvRV77laqw9iNrVTfij23ltqPwD4Yo3LiiXUi
|
||||
8Z9g9M+27RWJl7HbkfjHY+8eiXexTSRuGO39VOz9I/G/g31Ea6lNYXdqqQ1jN45kdgl2fyvVt2HP3Ep1
|
||||
GLuxlepbsefWUvsR2AdjVE48sU4k/qewv4dIvIzdjsQ/Hnv3SLzLK5vfiv1ZI/G/g31Ea6kNYze2Up1m
|
||||
u93eLRJfgt3fSvVt2DO3Uh3Gbmyl+lbsubXUfgT2wRiVE0+sE4n/KezvIRIvY7cj8Y/H3j0SK9aPxH8O
|
||||
+7NG4n8H+4jWUhvGbtRSuwS7H4kvwe5vpfo27JlbqQ5jN0zqb8OeWUvtR2AfjEg8hd2JxP8U9vcQiZex
|
||||
25H4x2PvHomV2f5vx/68kfjfwT6itdSGsP1Wqpdg9yPxMnZ7TyZvwZ63leowdsOk/hbseVup/gjsgxGJ
|
||||
p7A7kfifwv4eIvEydjsS/3js3SNxh3Uj8Z/E/ryR+N/BPqK11IawfS21y7BnROJl7PaeTN6CPW8r1WHs
|
||||
hkn9LdjztlL9EdgHIxJPYXci8T+F/T1E4mXsdiT+8di7R+KOme5fwf7MkfjfwT6itdROse1Wqpdhz4jE
|
||||
y9jtPZm8BXveVqrD2I09mVyOPWsr1R+BfTAi8RR2JxJP8eqN7W50O7KzTiRusF607DGYZHujSDzFFTdm
|
||||
2T6zSNxgvUisWD8Sn2LbrVQvwW5v/7fiYzDBFTe22M1aatdgH9FaaqfYtpbapdhzIvEydntPJm/BnreV
|
||||
6jB2Y08ml2PP2kr1R2A/xkg8hd2JxKfY1qSuWD8SK9aPxE+sE4kbrDci81NsG4lPsa1J/XLsWZG4YbRX
|
||||
Y5tIrFh/RObT2K0RmZ9i261Uh7C9Sf067CNaS+0U29ZSuxR7TiRexm4fyexy7FlbqQ5jN/Zkcjn2rK1U
|
||||
fwT2g4zEU9idSHyI7Y5kpryrb71I3GC9UTlxiO0i8SG2O5LZpdhzIvET60TiXWwTiTusOyNnhrEbo3Li
|
||||
ENvtyeQQ2+3J5DrsI1pL7RDb1VK7HHtWJF7Gbh/J7FLsOSb1YezGnkwux561leqPwH6QkXgKuxOJd7HN
|
||||
iMw7rBuJO0a71ovEDdabkTO72CYS72KbEZlfhj0jEj+wPBIfYrtI3GHdWTl1im1n5Ixi/RGZ72KbPZlc
|
||||
h31Ea6kdYrtaapdjz4rEy9jtI5ldij3HpD6M3TiS2aXYc0zqX8d+kJF4CrsTiRXrF6kMdbaMdkd7wbqR
|
||||
uMF6RSoPLC9SUawfiRXrF6m8/D6z2P1I/MDySHyI7SJxh3Uj8RPr1FLbxTZFKk+sE4kV60fiB5ZHYsX6
|
||||
RSqPDv/Pa7EPaC21XWxTS+0t2PMi8TJ2+0yml2HPMKkPYzeOZHYp9hyT+tfZ/jiLxFPYnUisjPatF4k7
|
||||
rBuJn5zlNdtukbjBepG4wXpFKh3WjcTKaN96kfgS7H4kXn4H20bijplusH4kVqwfiTusG4k7rBuJG6wX
|
||||
iTtmum/BPqJFKrvYppbaW7DnReJl7PaZTC/DnmFSH8ZuHMnsUuw5JvWvYz/USDyF3YnEHdaNxB3WjcQd
|
||||
Z92zfIv1I3GD9SJxh3UjcYd1I3HHTDfM9mex+5F4+fm2j8QdM91g/UisWD8Sd1g3EnfMdMNMf6b7Fuwj
|
||||
WqSyi22KVN6GPTMSL2O3z2R6GfYMk/owduNMppdg9/dk8nXshxqJp7A7kbhjphusH4k7rBuJu5z/eZdt
|
||||
v0jcYL1IrMz0rRuJO2a6wfqReBm7Hc+yUWwfiTtmuoWZjXUjsWL9SNxgvUiszPRnum/BPqJFKor1a6m9
|
||||
DXtmJF7Gbp/J9DLsGSb1YezGmUwvwe7vyeTr2A91ROYN1ovEDdaLxLvMbvb6e//7EbaJxA3Wi8SK9SNx
|
||||
g/UicYP1IrFi/Ui8jN2Oe9ljNIHdiMQdM92CbSJxg/UisWL9SNww2quxTSRuGO29DfuIFqko1i9SeSv2
|
||||
3Ei8jN0ekfkl2H2T+jB240yml2D392TydeyHOiLzButF4obR3pbZ3V7f/rcztpsicYP1IrFi/UjcYL1I
|
||||
3DDa2/LqbgS7fSSzYexGJO6Y6RZsE4kbRns1tonEDaO9GttE4obRXsH6ezI5xj6iRSod1q2l9lbsuZF4
|
||||
Gbs9IvNl7PaeTIaxG2cyvQS7vyeTr2M/sBGZN1gvEjeM9rbYLhJ3WNekfojtInGD9SKxYv1I3GC9SNww
|
||||
2tvy6m4Eu30ks2HsRiTumOkWbBOJG0Z7NbaJxA2jvRrbROKG0V7B+nsyOcY+okUqHdatpfZW7LmReBm7
|
||||
PSLzZez2nkyGsRsjMl/Gbu/J5OvYD2xE5g3Wi8QNo70ttovEivVrqZ1i20jcYL1IvMvoxnqRuGG0t+XV
|
||||
3Qh2O55lo9g+EnfMdAu2icQNo70a20TiJ9aJxIeM7kZ7BevvyeQY+4gWqTRYr5ba27FnR+Jl7PaIzJex
|
||||
23syGcZujMh8Gbu9J5OvYz+wEZk3WC8SN4z2amxTpKJYv5baKbaNxA3Wi8S7jG6sF4kbRns1tonEy9jt
|
||||
eJaNYvtI3DHTLdgmEj+xTiTexTaR+MlIx7BdJG4Y7RWsvyeTY+wjWqTSYL1aam/Hnh2Jl7Hbo3JiCbu7
|
||||
J5Nh7MaIzJewu0cy+zr2A4vEU9idSNxgvRU5u4ttIvEQto/EDdaLxLuMbqwXiRus96qcXMZuR+KX//4K
|
||||
to3EHTPdgm0i8RPrROJdbBOJn+x17H8f8XF0w2ivYP09mRxjH9EilQbrFal8BHt+JF7GbhdH8lXs7p5M
|
||||
hrEbIzJfwu4eyezr2A8sEk9hdyJxg/VW5OwutonEQ9g+EjdYLxLvMrqxXiRusN6KnF3C7kbil//+CraN
|
||||
xB0z3YJtIvET60TiXWwTiZ9YZ0XONoz23oZ9RItUnlinltpHsOdH4mXsdnEkX8Xu7slkGLsxIvMl7O6R
|
||||
zL6O/VAj8RR2JxI3WG9Fzu5imyKVU2wbiRusF4l3Gd1YLxI3WG9Fzi5hdyPxA8sj8SG2i8QdM92CbSLx
|
||||
E+tE4l1sE4mfWGdFzjaM9t6GfUSLVJ5Yp0jlY9g7ROJl7HZxJF/Bbh7JbBi7URzJV7CbRzL7OvZDjcRT
|
||||
2J1I3GC9I5m9jN0sUjnFtpG4wXqReJfRjfUicYP1jmT2Vuy5kfiB5ZH4ENtF4o6ZbsE2kfiJdSLxLraJ
|
||||
xE+scySzKa668zL2ES1SeWKdIpWPYe8QiZex28WRfAW7eSSzYexGcSRfwW4eyezr2A81Ek9hdyJxw2jv
|
||||
CuxZW6keYrtI3GC9SLzL6MZ6kbhhtPdJ7J0i8RPrROJdbBOJO2a6BdtE4ifWicS72CYSP7FOJL6Ed98/
|
||||
xT6iRSoPLC9S+Sj2HpF4GbtdpPK2vxO7dySzYexGcSR/Fbt3JtOvYz/USDyF3YnEDdaLxJdhzzCpH2K7
|
||||
SNxgvUi8y+jGepG4YbT3SeydIvET60TiXWwTiTtmugXbROKG0V6NbSJxw2jvVd59/xT7iBapPLC8SOWj
|
||||
2HtE4mXsdpHK2/5O7N6RzIaxG8WR/FXs3plMv479UCPxFHYnEjdYLxJfhj1jTya72CYSN1gvEivWj8QN
|
||||
1ovEDdaLxF/B3icSN1gvEivWj8QdM92CbSJxw2ivxjaRuGG09yrvvn+KfUSLVE4/xNQ+ir1HJF7Gbhep
|
||||
DHVewe4dyWwYu1Gk8pY/m906k+nXsR9qJJ7C7kTiButF4kuw+3Eve4wOsE0kbrBeJFasH4kbrBeJG6wX
|
||||
ib+CvU8kbrBeJFasH4k7ZroF20TiButFYsX6kbjBepF4mXfeHsI+okUqb/m4r2LvUqSyhN0tUnnLO9it
|
||||
M5kOYzeKVH7tn+1d2A81Ek9hdyJxh3Uj8TJHty2LxIr1I3GD9SKxMtO3biRusF4k/gr2PpG4w7qRuMO6
|
||||
kbhjpluwTSRusF4kVqwfiRusF4mXeeftIewjWqTylo/7KvYuRSrL2O1I/MDyIpUp7M6IzIewfSR+YHmR
|
||||
yjR260ymX8d+qJF4CrsTiTusG4mXsLuR+MFZvsX6kbjBepFYmelbNxJ3WDcSfxx7l0jcYd1I3GHdSNwx
|
||||
0y3YJhI3WC8SK9aPxA3Wi8TLvPP2EPYRLZ7l8XHkC9i7FKksY7cj8QPLi1SmsDsjMh/C9pH4geVFKtPY
|
||||
rTOZfh37oUbiKexOJFasH4lfZuSmdSJxh3UjcYP1InGHdSNxh3UjcYd1I/HHsXeJxB3WLVJpsF4k7pjp
|
||||
FmwTiTusG4k7rBuJO6wbiZd4191h7CNaHMm/hb1PkcoydjsSP7C8SGUKuzMi8yFsH4mfWCcST2F3RmT+
|
||||
deyHGomnsDuRWLF+kYpy1Klv1BI3jPaCdSNxg/UicYP1IrFi/UisWL9IRRnpzFI/u5ZYsX4kbrBeJO6Y
|
||||
6RZsE4k7rFuk0mC9SNxh3SIVZaZTS/QZ7CM6Kie+gr1PkcoydjsSP7FOJJ7C7ozIfAjbR+In1ilSGcZu
|
||||
jMj869gPNRJPYXci8S62GZUTDaO9YN1I3GC9SNxgvdrRzh7Wj8SK9WfkzCXY/UisWL9I5Yl1InHHTLdg
|
||||
m0isWH9WTinWn5EzHTPdt2Af0VE58RXsfYpUlrHbkfiJdSLxMHZjVE4MYftI/MQ6RSrD2I0RmX8d+6FG
|
||||
4insTiTexTYzcuaB5ZG4w7qRuMF6kbjBejNyZhfbROJdbDMqJy7B7kfiXWwTiZ9YJxJ3zHQLtonEu9hm
|
||||
Rs7sYptROdEx030L9hEdlRNfwd6nSGUZux2Jn1inSGUI24/KiSFsH4mfWKdIZRi7EY+y+Bj/AOyHGomn
|
||||
sDuR+BTbjsj8wVlu2CYSP7FOJG6w3ojMT7FtJD7EdqNyYhm7HYl3sU2RygPLI3HHTLdgm0h8iO1G5cQh
|
||||
thuRecdM9y3YR3RGznwce5cilWXsdiR+Yp0ilSFsPyonhrB9JG6wXiQexm7Eoyw+xj8A+6FG4insTiQe
|
||||
wvZ7MnlinUi8i20i8RPrRGLF+nsyGcL2kXgI2+/J5DLsGZH4ENtF4geWR+KOmW7BNpH4FNseyWwYu3Ek
|
||||
M2W2fzn2EZ2RMx/H3qVIZRm7HYkbrBeJh7B9PMqKjwOD2D4SN1ivSOUU2xZH8ptzvvYBeQP1n+Wn/Xl+
|
||||
8rv9K7z7v8G7778V+4jOyJmPY+9SpLKM3Y7EDdaLxEPYPh5lxceBQWwfiRusV6Ryim2LI/nNzc3NzQD2
|
||||
EZ2VUx/F3qNIZRm7HYkbrFekcojtimd5fBwZxPaRuMO6kfgU2xZH8pubm5ubAewjOiunPoq9R5HKMnY7
|
||||
EjdYr0jlENsVz/L4ODKI7YtUGqwXiU+xbSSefp+bm5ubG8E+ouZR93How9h7FKksY7cjcYd1I/Ehtiue
|
||||
5fFxZBDbF6k0WC8SH2K7IpXp97m5ubm5EewjalJf+rhfib1DkcoydjsSd1g3Eh9iu0h8+OeN1IawfZFK
|
||||
g/WKVHaxTZHK0v2bm5ubG7CP6FaqDyyPxB/D3qFIZRm7HYk7rBuJD7FdJD7880ZqQ9i+SKXDupF4F9sU
|
||||
qbz0Pjc3Nzc3G+wjWkutYbT3TuwdilSWsduRuMO6RSqK9YtUDjuR2hC2L1LpsG4k3sU2kfiB5bXUbm5u
|
||||
bm6OsA9oLbUG60Xij2DPL1JZxm5HYsX6kVixfpHKYSdSG8L2RSod1o3Eu9gmEj+wvJbazc3Nzc0R9gGt
|
||||
pdZgvUj8Eez5tdSWsLuRWLF+JFasH4kfWF5LbQjbF6l0WDcSK9YvUnlgeS21m5ubm5sj7ANapKLM9q/G
|
||||
nl9LbQm7G4kV60dixfqR+Il1ilSGsH2RSod1i1Q6rFuk8sDyWmo3Nzc3N0fYB7RIRbF+JH479uxaakvY
|
||||
3UisWD8Sd1i3SOWJdYpUhrB9kYpi/UjcYd1I/MQ6tdRubm5ubo6wD2iRyi6vbK7Cnl1LbQm7G4kV6xep
|
||||
NFivSOWJdYpUhrB9kYpi/UjcYd1I/MQ6tdRuPsz2/0/rIvHNzSn2fz+RuMF6kfjjXPEuV9yYwj6gRSq7
|
||||
vLK5Cnt2LbUl7G4k3sU2kbjBepG4wXpFKkPYvkhFsX4kbrBekcoT69RSu/kw9jGKxDc3p9j//UTiButF
|
||||
4ksZubt9j5FNwbZFKu/BPqCR+BDbReK3Y88uUlnC7kbiXWwTiRusF4kbrFekMoTti1QU60fiBusVqTyx
|
||||
Ti21mw9jH6NIfHNziv3fTyRusF4kvoSZ+zPdGtvVUnsP9gGNxKesbFexZxepLGF3I/EutonEDdaLxA3W
|
||||
K1IZwvZFKor1I3GD9SJxg/Vqqd18GPsYReKbm1Ps/34icYP1IvEydjsSd8x0a2xXS+092Ac0Ep+ysl3F
|
||||
nl2ksoTdjcS72CYSP7FOkUqD9YpUhrB9kcoutonET6wTiRusV0vt5sPYxygS39ycYv/3E4kbrBeJl7Hb
|
||||
kbhjpluwTZHKe7EPaCQ+xbaR+K3Yc4tUlrC7kXgX20TiJ9aJxB3WLVIZwvZFKrvYJhI/sU4kbrBeLbWb
|
||||
D2MfpUi8jN2OxDd/APvvG4kbrBeJL2Hm/ky3YJtI/H7sAxqJh1jdv4o9t0hlCbsbiQ+xXSR+YHkk7rBu
|
||||
kcoQti9S2cU2kfiB5UUqDdarpXbzYezDFImXsduR+OYPYP99I3GD9SLxJczcn+kWXtlcin1AI/EQq/tX
|
||||
secWqSxhdyPxIbaLxA8sj8Qd1i1SGcL2RSq72CYSP7A8EndYt5bazYexj1MkXsZuR+KbP4D9943EDdaL
|
||||
xB/nlXd5ZXMp9gGNxEPYPhK/DXtmkcoSdjcSH2K7SPzSu1u3ltopti1S2cU2kfiB5ZG4w7q11G4+jH2c
|
||||
IvEydjsS3/wB7L9vJG6wXiT+OLPvYv1I/BnsAxqJh7nixiz2zCKVJexuJD7EdpH4pXe3bi21U2xbpHKI
|
||||
7SLxab5le2crtZsPYx+nSLyM3Y7EN38A++8biRusF4k/zuy7WD8Sfwb7gEbiYa64MYs9s0hlCbtbpLKL
|
||||
bSLxS3/v1q+ldopti1QOsV08yuJjLFi3ltrNh7GPUyRexm5H4ps/gP33jcQN1ovEH2f2XawfiT+DfUAj
|
||||
8TB2IxK/BXtekcoSdrdIZRfbFI/yx3gH69dSO8W2RSqH2C4eZfExFqxbS+3mw9jHKRIvY7cj8c0fwP77
|
||||
RuIG60XijzP7LtaPxJ/BPqCReIqr7oxizytSWcLuFqkcYrt4lu1h/Vpqp9i2SOUQ28WzbA/r11L7Z/nU
|
||||
B2J7v35mLfEydjsS/1je9a7vuhvq2++4X9jer59ZS9xgvUj8ZO9/v5r6HUaeaf1I/BLTN+wDGomnuOrO
|
||||
KPa8IpUl7G6RyiG2O5OpYv1aaqfYtkjlENvFs2wP69dS+yr1D3T0R3bV5kym09itEZkvY7cjccdMt2Cb
|
||||
SHyKbY9kNozd2Ep1GLtxJtNp7NaIzBusNyonDrFdJO4Y7VrvSGaK9U3qPfYBjcRT2J1IfDn2rCKVJexu
|
||||
kcohtjuS2S62qaV2im2LVA6x3ZlMFevXUvsqUz8qmNlYd0bODGM3RuXEMnY7EnfMdAu2icSH2G5UThxi
|
||||
uz2ZHGK7GTkzjN0YlRMN1puVU4r1I3HHaNd6RzLrsO6RzFrsA1qkMozdiMSXY88qUlnC7hapHGK7I5nt
|
||||
YptaaqfYtkjlENudyVSxfi21rzL8g6qY2Vh3Vk6dYtsZObOM3Y7EHTPdgm0i8S62mZEzu9jmTKa72GZW
|
||||
Tp1i2xk502C9WTmlWD8Sd4x2rXckswbrjcj8/2Mf0CKVKa66M4I9q0hlCbtbpHKI7Y5ktottaqmdYtsi
|
||||
lUNsdyZTxfq11L7K0I9pw8zGukUqQz96qrvYppba0PusYrcjccdMt2CbSKxYv3a0s4f1iyP5HtYvUjl9
|
||||
70h1F9vUUpv+c1hv60jvcUywbiTuGO1a70hmT6xTPMvj40jBPqBFKlPYnUh8KfacWmovYzeLVA6x3ZHM
|
||||
drFNLbVTbFukcopt92Syi21qqX2V0x+SMLOZ6QbrR+JdbBOJG6wXiZex25G4Y6ZbsE0kVqwfiRusF4k7
|
||||
rBuJG0Z7hSv6kXgX20TiButF4gbrReIO60biDutG4o6ZbrB+JN7FNpH4iXUi8f9gH9AilSnsTiS+FHtO
|
||||
LbWXsZtFKofY7khmu9imltopti1SOcW2ezLZxTa11L7K6Q9JmNnMdIP1I7Fi/UjcYd1IvIzdjsQdM92C
|
||||
bSJxh3UjcYd1I3HHTDfM9Ge6wfqRWLF+JO6wbiRusF4kVqwfiRusF4k7ZrrB+pFYsX4k7jjt2ge0SGWa
|
||||
K28dYc+ppfYydrNI5RDbHclsF9vUUjvFtkUqp9h2Tya72KaW2lc5/SEJM5uZbmF2c0U/Ei9jtyNxx0y3
|
||||
YJtI3DHTDdaPxA3Wi8TKTH+mW5jdXNGPxA3Wi8SK9SNxg/UiccdMN1g/EitX9CPxNR/3LVfeOsOeVaTy
|
||||
MnazSOUQ2+3J5BDb1VI7xbZFKqfYdk8mu9imltpXOfwR7TCzmekWbBOJG6wXiRXrR+Jl7HYk7pjpFmwT
|
||||
iRusF4kV60fihtFejW0iccNor8Y2kbjBepFYsX4kbrBeJFasH4kbrBeJO2a6wfqRWJnth92NfTxrH6UX
|
||||
sFuR+FLsOUUqL2M3i1QOsd2eTA6xXS21U2xbpHKKbfdksottaql9ld0f0QEzm5luwTaRuMF6kVixfiRe
|
||||
xm5H4o6ZbsE2kbhhtFdjm0jcMNqrsU0kbhjt1dgmEjeM9mpsE4kbrBeJFetH4gbrReKOmW6wfiTumOnW
|
||||
7O7s41n7KL2A3YrEl2LPKVJ5GbtZpHKI7fZkcojtaqmdYtsilVNsuyeTXWxTS+2r7P6IDpjZzHQLtonE
|
||||
DaO9GttE4mXsdiTumOkWbBOJG0Z7NbaJxA2jvRrbROKG0V6NbSJxw2ivxjaRuMF6kVixfiRusF4k7pjp
|
||||
ButH4o6Zbs3uzj6etY/SC9itSHwp9pwilZexm0Uqh9huTyaH2K6W2im2LVI5xbYm9UNsV0vtq+z+iA6Y
|
||||
2cx0C7aJxA2jvRrbROJl7HYk7pjpFmwTiRtGezW2icRPrBOJd7FNJG4Y7dXYJhI3jPZqbBOJG6wXiRXr
|
||||
R+IG60XijplusH4k7pjp1uzu7ONZ+yi9iN2LxJdhzyhSeRm7WaRyiO32ZHKI7WqpnWLbIpVTbGtSP8R2
|
||||
tdS+yu6P6ICZzUy3YJtI3DDaq7FNJF7GbkfijpluwTaRuGG0V2ObSPxkpLPH6Ha0V2ObSPzEOpF4F9tE
|
||||
4gbrRWLF+pG4wXqRuGOmG6wfiTtmujW7O/t41j5KL2L3IvFl2DOKVF7GbhapHGK7PZkcYrtaaqfYtkjl
|
||||
FNua1A+x3VaqX2P3R3TAzGamW7BNJH5inUi8i20i8TJ2OxJ3zHQLtonET6wTiXexTSR+ctSx7EymDaO9
|
||||
GttE4ifWicS72CYSN1gvEivWj8QN1ovEHTPdYP1I3HHUtezIx8g+nLWP0ovYvUh8GfaMIpWXsZtFKqfY
|
||||
1qR+iO1qqZ1i2yKVU2xrUj/Edlupfo3dH9EBM5uZbsE2kfiJdSLxLraJxMvY7UjcMdMt2CYSP7FOJN7F
|
||||
NpH4iXVW5GzDaK/GNpH4iXUi8S62icQN1ovEivUjcYP1InHHTDdYPxJ3WPdVHwftw1n7KL2I3StSuQS7
|
||||
X6TyMnazSOUU226leopta6mdYtsilVNsa1I/xHZbqX6N3R/RATObmW7BNpH4iXUi8S62icTL2O1I3DHT
|
||||
LdgmEj+xTiTexTaR+Il1VuRsw2ivxjaR+Il1IvEutonEDdaLxIr1I3GD9SJxx0w3WD8Sd1j3VR8H7cNZ
|
||||
+ygtYDcj8SXY/SKVl7GbRSqn2HYr1VNsW0vtFNsWqZxiW5P6IbbbSvVr7P6IDpjZzHQLtonET6wTiXex
|
||||
TSRexm5H4o6ZbsE2kfiJdSLxLraJxE+sMyLzIV7Z2yYSP7FOJN7FNpG4wXqRWLF+JG6wXiTumOkG60fi
|
||||
DuuOyLzHPpy11F7GbkbiS7D7RSovYzeLVE6x7Vaqp9i2ltopti1SGcL2tdROse1Wql9j6ocFM5uZbsE2
|
||||
kfiJdSLxLraJxMvY7UjcMdMt2CYSP7FOJN7FNpH4iXUi8SW8ct82kfiJdSLxLraJxA3Wi8SK9SNxg/Ui
|
||||
ccdMN1g/EndYNxLPYx/OWmovYzeLVJax20UqL2H3aqmdYtutVE+xbS21U2xbpDKE7WupnWLbrVS/xis/
|
||||
vJnNTLdgm0jcMNqrsU0kXsZuR+KOmW7BNpH4iXUi8S62icRPrBOJL+GV+7aJxA2jvRrbROIG60VixfqR
|
||||
uMF6kbhjphusH4k7rBuJ57EPZy21l7GbRSrL2O0ilZewe7XUhrB9kcoQtq+ldopti1SGsH0ttVNsu5Xq
|
||||
13jlhzezmekWbBOJG0Z7NbaJxMvY7UjcMdMt2CYSN4z2amwTiRtGe6/yyn3bROKG0V6NbSJxg/UisWL9
|
||||
SNxgvUjcMdMN1o/EHdaNxPPYh7OW2hJ2NxIvY7eLVF7C7tVSG8L2RSpD2L6W2im2LVIZxm5E4iFsv5Xq
|
||||
13jlhzezmekWbBOJG0Z7NbaJxMvY7UjcMdMt2CYSN4z2amwTiRusF4mXeeW2bSJxw2ivxjaRuMF6kVix
|
||||
fiRusF4k7pjpButH4g7rRuJ57MNZS20JuxuJl7HbRSovYfdqqQ3zrhu11E6xbZHKMO+6sZXq17AfXiRW
|
||||
Zvoz3YJtInGD9SKxYv1IvIzdjsQd1o3EivUjcYP1IrFi/UjcYL1IvMwrt20TiRusF4kV60fiButFYsX6
|
||||
kbjBepG4Y6YbrB+JO6xbpDKHfThrqS1hd4tUlrC7RSovYfdqqX0Ue49aaqfYtkhlmtXtmVS/hv3oIrEy
|
||||
05/pFmwTiRusF4kV60fiZex2JO6wbiRWrB+JG6wXiRXrR+IG60XiZV65bZtI3GC9SKxYPxI3WC8SK9aP
|
||||
xA3Wi8QdM91g/UisWD8Sz2EfzlpqS9jdIpUl7G6RykvYvVpqH8Xeo5baKbYtUvko9h5bqX4N+9FFYmWm
|
||||
P9Mt2CYSd1g3EndYNxIvY7cjcYd1I7Fi/UjcMdMN1o/EHdaNxEu8ctc2kbjDupG4w7qRuMF6kVixfiRu
|
||||
sF4k7pjpButHYsX6kXgO+3DWUlvC7hapLGF3i1Rewu7VUvso9h611E6xbZHKR7H32Er1a9iPrkil413d
|
||||
gm0icYd1i1QarBeJl7HbkbjDukUqHdaNxB3WjcQd1o3EHdYtUtnlrLO9d9YPtonEHdaNxB3WjcQN1ovE
|
||||
ivUjcYP1InHHTDdYPxLvYptIvEvXsw9nLbVl7HaRysvYzSKVl7B7tdQ+ir1HLbVTbFuk8lHsPbZS/Sr1
|
||||
j80c7Rgz3YJtIrFi/Vpqhz0qy9jtSKxYv3akEx/HBOvWUhvuGdafkTMdM92CbSKxYv1aaoc9Kg3Wi8SK
|
||||
9SNxg/UiccdMN1g/Eu9imxk587l/tOx2kcrL2M0ilZewe7XUPoq9Ry21U2xbpPJR7D22Uv0q9mOalVMd
|
||||
M92CbSLxLraZkTPL2O1IrFj/FTmnWH9WTinWn5EzHTPdgm0isWL9WTnVYL1IrFg/EjdYLxJ3zHSD9SPx
|
||||
IbYblROf+0fLbhepvIzdLFJ5CbtXS+2j2HvUUjvFtkUqH8XeYyvVr2M/qBk50zHTLdgmEh9iu1E5sYzd
|
||||
jsS72GZWTu1imxk5c4jtRmTeMdMt2CYSH2K7UTnRYL1IrFg/EjdYLxJ3zHSD9SPxKbYd9XHAPpy1j9IF
|
||||
2O1aai9h94pUXsLu1VL7KPYetdROsW2Rykex99hK9UdgP6gRmSuz/WCbSHyKbY9kdhn2jEh8im3PZDqE
|
||||
7UflxCm2PZKZMtsPtonEp9j2SGaK9SOxYv1I3GC9SNwx0w3Wj8TD2I0jmX3uHy27XUttGrt1JtNTbFtL
|
||||
7aPYe9RSO8W2tdQ+hr3DVqo/CvtxbaX647F3L1K5HHtWJB7C9lupLrF3r/7fa4mnsDtFKj8ae+8ilZsJ
|
||||
7O+xSKXFPpy11C7B7hep7GKbVTl9iO2KVD6KvUcttVNsW0vtY9g7bKV684ewD1Uk/hXY+0fim5vPYR/O
|
||||
WmqXYPeLVBTrXyWP2MU2RSofxd6jltoptq2l9jHsHbZSvfkj2D+CRSq/gt/+/jd/CPtw1lK7BLtfS63B
|
||||
elfKY3axTZHKR7H3qKV2im2LVD6KvcdWqjd/BPuHMBL/Cuz9I/HNzWexD2eRymXYM2qpNVjvSnnMLrYp
|
||||
Uvko9h611IawfST+KPYeW6ne/BHsH8JI/Cuw94/ENzefxT6cRSqXYc+opdZh3avkEbvYpkjlo9h71FIb
|
||||
wvaR+KPYe9RSu/kj2D+CRSq/Anv/SHxz81ns41mkcin2nFpqHdZdldOnrGyvxt6lltowq/ur2L7HVmo3
|
||||
fwD7B7BI5euMvMv23Wup3Nx8nk9+QO1ZtdQOsd2snJpiZXsV9Z9hK5VprrhxBfV7bKVy84uxf/hqqX2d
|
||||
s3ezvJbazc13+cSHc/uhrqVyc4D9vRWp/FrszxSJb3459o9fLbWvY+82Kidubv4N7INdpHJzgv3dReJf
|
||||
i/2ZIvHNL8f+AYzEPwZ7x1E5cXPzb2Af7Eh8M8Bf/fv7q3+um//ht/wDaO85IvObm5ubef7qP3j3P+Z/
|
||||
k9/2j1/9vkdSv7n5Iv/5z/8FeX4DRRH6hqYAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="xrRichText1.SerializableRtfString" xml:space="preserve">
|
||||
<value>ewBcAHIAdABmADEAXABkAGUAZgBmADAAewBcAGYAbwBuAHQAdABiAGwAewBcAGYAMAAgAEMAYQBsAGkAYgByAGkAOwB9AHsAXABmADEAIABUAGkAbQBlAHMAIABOAGUAdwAgAFIAbwBtAGEAbgA7AH0AewBcAGYAMgAgAEEAcgBpAGEAbAA7AH0AfQB7AFwAYwBvAGwAbwByAHQAYgBsACAAOwBcAHIAZQBkADAAXABnAHIAZQBlAG4AMABcAGIAbAB1AGUAMAAgADsAXAByAGUAZAAwAFwAZwByAGUAZQBuADAAXABiAGwAdQBlADIANQA1ACAAOwB9AHsAXAAqAFwAZABlAGYAYwBoAHAAIABcAGYAMQBcAGYAcwAyADQAfQB7AFwAcwB0AHkAbABlAHMAaABlAGUAdAAgAHsAXABxAGwAXABmADEAXABmAHMAMgA0ACAATgBvAHIAbQBhAGwAOwB9AHsAXAAqAFwAYwBzADEAXABmADEAXABmAHMAMgA0AFwAYwBmADEAIABEAGUAZgBhAHUAbAB0ACAAUABhAHIAYQBnAHIAYQBwAGgAIABGAG8AbgB0ADsAfQB7AFwAKgBcAGMAcwAyAFwAcwBiAGEAcwBlAGQAbwBuADEAXABmADEAXABmAHMAMgA0AFwAYwBmADEAIABMAGkAbgBlACAATgB1AG0AYgBlAHIAOwB9AHsAXAAqAFwAYwBzADMAXAB1AGwAXABmADEAXABmAHMAMgA0AFwAYwBmADIAIABIAHkAcABlAHIAbABpAG4AawA7AH0AewBcACoAXAB0AHMANABcAHQAcwByAG8AdwBkAFwAZgAxAFwAZgBzADIANABcAHEAbABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgBsADMAXAB0AHMAYwBlAGwAbABwAGEAZABkAGwAMQAwADgAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAYgAzAFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHIAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAcgAxADAAOABcAHQAcwBjAGUAbABsAHAAYQBkAGQAZgB0ADMAXAB0AHMAdgBlAHIAdABhAGwAdABcAGMAbAB0AHgAbAByAHQAYgAgAE4AbwByAG0AYQBsACAAVABhAGIAbABlADsAfQB7AFwAKgBcAHQAcwA1AFwAdABzAHIAbwB3AGQAXABzAGIAYQBzAGUAZABvAG4ANABcAGYAMQBcAGYAcwAyADQAXABxAGwAXAB0AHIAYgByAGQAcgB0AFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAGwAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAYgBcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHIAYgByAGQAcgByAFwAYgByAGQAcgBzAFwAYgByAGQAcgB3ADEAMABcAHQAcgBiAHIAZAByAGgAXABiAHIAZAByAHMAXABiAHIAZAByAHcAMQAwAFwAdAByAGIAcgBkAHIAdgBcAGIAcgBkAHIAcwBcAGIAcgBkAHIAdwAxADAAXAB0AHMAYwBlAGwAbABwAGEAZABkAGYAbAAzAFwAdABzAGMAZQBsAGwAcABhAGQAZABsADEAMAA4AFwAdABzAGMAZQBsAGwAcABhAGQAZABmAHIAMwBcAHQAcwBjAGUAbABsAHAAYQBkAGQAcgAxADAAOABcAHQAcwB2AGUAcgB0AGEAbAB0AFwAYwBsAHQAeABsAHIAdABiACAAVABhAGIAbABlACAAUwBpAG0AcABsAGUAIAAxADsAfQB9AHsAXAAqAFwAbABpAHMAdABvAHYAZQByAHIAaQBkAGUAdABhAGIAbABlAH0AXABuAG8AdQBpAGMAbwBtAHAAYQB0AFwAcwBwAGwAeQB0AHcAbgBpAG4AZQBcAGgAdABtAGEAdQB0AHMAcABcAHAAYQByAGQAXABwAGwAYQBpAG4AXABxAGwAewBcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgAEsAZQBpAG4AZQAgAH0AewBcAHUAbABcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgAEcAcgB1AHAAcABlAG4AYQBuAGcAZQBiAG8AdABlAH0AewBcAGYAMgBcAGYAcwAyADAAXABjAGYAMQAgACAAaQBtACAAQQBiAHIAZQBjAGgAbgB1AG4AZwBzAHoAZQBpAHQAcgBhAHUAbQB9AFwAZgAxAFwAZgBzADIANABcAGMAZgAxAFwAcABhAHIAfQA=</value>
|
||||
<data name="xrLabel11.Text" xml:space="preserve">
|
||||
<value>Die Unterschriften erfolgen digital über das Smartphone nach durchgeführter Leistung. Eine Veränderung der Einträge in Bezug auf Datum und/oder Zeit ist danach nicht mehr möglich. Detaillierte Angaben zu den geleisteten Inhalten entnehmen Sie bitte der beigefügten Dokumentation.</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -202,8 +202,11 @@ namespace LebenshilfeTrier
|
||||
else if (scap.ApprovedBETotal.HasValue)
|
||||
{
|
||||
var monate = DateTimeUtils.GetTotalMonths(scap.StartDate.Value, scap.EndDate.Value);
|
||||
proMonat = scap.ApprovedBETotal.Value / monate.GanzeMonate;
|
||||
proWoche = proMonat / 4.33m;
|
||||
if (monate.GanzeMonate > 0)
|
||||
{
|
||||
proMonat = scap.ApprovedBETotal.Value / monate.GanzeMonate;
|
||||
proWoche = proMonat / 4.33m;
|
||||
}
|
||||
}
|
||||
wochenLabel.Text = String.Format("{0:0.00}", proWoche);
|
||||
monatsLabel.Text = String.Format("{0:0.00}", proMonat);
|
||||
|
||||
@@ -41,15 +41,12 @@ namespace PraxisPusteblume
|
||||
this.xrLabel6 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel3 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.rtAnschriftNormal = new DevExpress.XtraReports.UI.XRRichText();
|
||||
this.lblAdresse = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrPictureBox1 = new DevExpress.XtraReports.UI.XRPictureBox();
|
||||
this.rtKopfNormal = new DevExpress.XtraReports.UI.XRRichText();
|
||||
this.ruleRateFactorNull = new DevExpress.XtraReports.UI.FormattingRule();
|
||||
this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand();
|
||||
this.rtKopfIfs = new DevExpress.XtraReports.UI.XRRichText();
|
||||
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
|
||||
this.rtFussIfs = new DevExpress.XtraReports.UI.XRRichText();
|
||||
this.rtFussNormal = new DevExpress.XtraReports.UI.XRRichText();
|
||||
this.Page1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
|
||||
this.xrTable2 = new DevExpress.XtraReports.UI.XRTable();
|
||||
@@ -73,6 +70,7 @@ namespace PraxisPusteblume
|
||||
this.xrTableCell15 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand();
|
||||
this.lblZahlbar = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.lblNotice = new DevExpress.XtraReports.UI.XRLabel();
|
||||
@@ -85,17 +83,13 @@ namespace PraxisPusteblume
|
||||
this.cellGesamtStunden = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.cellGesamtSumme = new DevExpress.XtraReports.UI.XRTableCell();
|
||||
this.xrLabel14 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
|
||||
((System.ComponentModel.ISupportInitialize)(this.rtAnschriftIfs)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.rtAnschriftNormal)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.rtKopfNormal)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.rtKopfIfs)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.rtFussIfs)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.rtFussNormal)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
|
||||
//
|
||||
// Detail
|
||||
@@ -117,7 +111,6 @@ namespace PraxisPusteblume
|
||||
this.xrLabel6,
|
||||
this.xrLabel3,
|
||||
this.xrLabel1,
|
||||
this.rtAnschriftNormal,
|
||||
this.lblAdresse});
|
||||
this.ReportHeader.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.ReportHeader.HeightF = 185.4584F;
|
||||
@@ -127,7 +120,7 @@ namespace PraxisPusteblume
|
||||
// rtAnschriftIfs
|
||||
//
|
||||
this.rtAnschriftIfs.Font = new System.Drawing.Font("Verdana", 10F);
|
||||
this.rtAnschriftIfs.LocationFloat = new DevExpress.Utils.PointFloat(245.8331F, 81.79175F);
|
||||
this.rtAnschriftIfs.LocationFloat = new DevExpress.Utils.PointFloat(45.83333F, 0F);
|
||||
this.rtAnschriftIfs.Name = "rtAnschriftIfs";
|
||||
this.rtAnschriftIfs.SerializableRtfString = resources.GetString("rtAnschriftIfs.SerializableRtfString");
|
||||
this.rtAnschriftIfs.SizeF = new System.Drawing.SizeF(371.875F, 32.2917F);
|
||||
@@ -210,14 +203,6 @@ namespace PraxisPusteblume
|
||||
this.xrLabel1.StylePriority.UseFont = false;
|
||||
this.xrLabel1.Text = "Ansprechpartnerin:";
|
||||
//
|
||||
// rtAnschriftNormal
|
||||
//
|
||||
this.rtAnschriftNormal.Font = new System.Drawing.Font("Verdana", 10F);
|
||||
this.rtAnschriftNormal.LocationFloat = new DevExpress.Utils.PointFloat(45.83333F, 0F);
|
||||
this.rtAnschriftNormal.Name = "rtAnschriftNormal";
|
||||
this.rtAnschriftNormal.SerializableRtfString = resources.GetString("rtAnschriftNormal.SerializableRtfString");
|
||||
this.rtAnschriftNormal.SizeF = new System.Drawing.SizeF(371.875F, 32.2917F);
|
||||
//
|
||||
// lblAdresse
|
||||
//
|
||||
this.lblAdresse.LocationFloat = new DevExpress.Utils.PointFloat(45.83333F, 32.29173F);
|
||||
@@ -253,36 +238,18 @@ namespace PraxisPusteblume
|
||||
// topMarginBand1
|
||||
//
|
||||
this.topMarginBand1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
this.rtKopfIfs,
|
||||
this.rtKopfNormal,
|
||||
this.xrPictureBox1});
|
||||
this.topMarginBand1.HeightF = 201F;
|
||||
this.topMarginBand1.Name = "topMarginBand1";
|
||||
//
|
||||
// rtKopfIfs
|
||||
//
|
||||
this.rtKopfIfs.Font = new System.Drawing.Font("Verdana", 10F);
|
||||
this.rtKopfIfs.LocationFloat = new DevExpress.Utils.PointFloat(245.354F, 34.0625F);
|
||||
this.rtKopfIfs.Name = "rtKopfIfs";
|
||||
this.rtKopfIfs.SerializableRtfString = resources.GetString("rtKopfIfs.SerializableRtfString");
|
||||
this.rtKopfIfs.SizeF = new System.Drawing.SizeF(261.2915F, 156.6458F);
|
||||
//
|
||||
// bottomMarginBand1
|
||||
//
|
||||
this.bottomMarginBand1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
this.rtFussIfs,
|
||||
this.rtFussNormal});
|
||||
this.bottomMarginBand1.HeightF = 100F;
|
||||
this.bottomMarginBand1.Name = "bottomMarginBand1";
|
||||
//
|
||||
// rtFussIfs
|
||||
//
|
||||
this.rtFussIfs.Font = new System.Drawing.Font("Verdana", 10F);
|
||||
this.rtFussIfs.LocationFloat = new DevExpress.Utils.PointFloat(12.50079F, 15.12499F);
|
||||
this.rtFussIfs.Name = "rtFussIfs";
|
||||
this.rtFussIfs.SerializableRtfString = resources.GetString("rtFussIfs.SerializableRtfString");
|
||||
this.rtFussIfs.SizeF = new System.Drawing.SizeF(726.9984F, 69.75002F);
|
||||
//
|
||||
// rtFussNormal
|
||||
//
|
||||
this.rtFussNormal.Font = new System.Drawing.Font("Verdana", 10F);
|
||||
@@ -536,6 +503,10 @@ namespace PraxisPusteblume
|
||||
this.xrTableCell1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
|
||||
this.xrTableCell1.Weight = 0.15384615384615372D;
|
||||
//
|
||||
// bindingSource1
|
||||
//
|
||||
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServiceInvoiceRO);
|
||||
//
|
||||
// GroupFooter1
|
||||
//
|
||||
this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
@@ -688,10 +659,6 @@ namespace PraxisPusteblume
|
||||
this.xrLabel14.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel14.Text = "Mit freundlichen Grüßen\r\nIhr Pusteblume-Team";
|
||||
//
|
||||
// bindingSource1
|
||||
//
|
||||
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServiceInvoiceRO);
|
||||
//
|
||||
// SammelrechnungNachKlienten
|
||||
//
|
||||
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
|
||||
@@ -714,15 +681,12 @@ namespace PraxisPusteblume
|
||||
this.PaperKind = System.Drawing.Printing.PaperKind.A4;
|
||||
this.Version = "17.1";
|
||||
((System.ComponentModel.ISupportInitialize)(this.rtAnschriftIfs)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.rtAnschriftNormal)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.rtKopfNormal)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.rtKopfIfs)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.rtFussIfs)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.rtFussNormal)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
|
||||
|
||||
}
|
||||
@@ -747,7 +711,6 @@ namespace PraxisPusteblume
|
||||
private DevExpress.XtraReports.UI.XRTableRow xrTableRow10;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell12;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell15;
|
||||
private DevExpress.XtraReports.UI.XRRichText rtAnschriftNormal;
|
||||
private DevExpress.XtraReports.UI.XRLabel lblNachweisFuer;
|
||||
private DevExpress.XtraReports.UI.XRRichText rtFussNormal;
|
||||
private DevExpress.XtraReports.UI.XRPictureBox xrPictureBox1;
|
||||
@@ -771,8 +734,6 @@ namespace PraxisPusteblume
|
||||
private DevExpress.XtraReports.UI.XRLabel lblMonat;
|
||||
private DevExpress.XtraReports.UI.XRLabel lblZahlbar;
|
||||
private DevExpress.XtraReports.UI.XRRichText rtAnschriftIfs;
|
||||
private DevExpress.XtraReports.UI.XRRichText rtKopfIfs;
|
||||
private DevExpress.XtraReports.UI.XRRichText rtFussIfs;
|
||||
private DevExpress.XtraReports.UI.XRTable xrTable2;
|
||||
private DevExpress.XtraReports.UI.XRTableRow xrTableRow2;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell5;
|
||||
|
||||
@@ -161,18 +161,18 @@ namespace PraxisPusteblume
|
||||
}
|
||||
|
||||
}
|
||||
isIfs = true;
|
||||
isIfs = false;
|
||||
|
||||
rtAnschriftIfs.Location = rtAnschriftNormal.Location;
|
||||
rtFussIfs.Location = rtFussNormal.Location;
|
||||
rtKopfIfs.Location = rtKopfNormal.Location;
|
||||
//rtAnschriftIfs.Location = rtAnschriftNormal.Location;
|
||||
//rtFussIfs.Location = rtFussNormal.Location;
|
||||
//rtKopfIfs.Location = rtKopfNormal.Location;
|
||||
|
||||
rtAnschriftIfs.Visible = isIfs;
|
||||
rtFussIfs.Visible = isIfs;
|
||||
rtKopfIfs.Visible = isIfs;
|
||||
rtAnschriftNormal.Visible = !isIfs;
|
||||
rtFussNormal.Visible = !isIfs;
|
||||
rtKopfNormal.Visible = !isIfs;
|
||||
//rtAnschriftIfs.Visible = isIfs;
|
||||
//rtFussIfs.Visible = isIfs;
|
||||
//rtKopfIfs.Visible = isIfs;
|
||||
//rtAnschriftNormal.Visible = !isIfs;
|
||||
//rtFussNormal.Visible = !isIfs;
|
||||
//rtKopfNormal.Visible = !isIfs;
|
||||
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -20,7 +20,7 @@ namespace BeWo.SeWo
|
||||
|
||||
public override void HandleServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList<ServiceRecord> groupFilteredRecords, Contract contract)
|
||||
{
|
||||
StundenBerechnungHelper.CorrectOverlappingTimes(groupFilteredRecords.OrderBy(s => s.Start).ToList());
|
||||
StundenBerechnungHelper.CorrectOverlappingTimes(groupFilteredRecords.Where(s => s.ServiceDescription.ServiceCategory.Name != "SeWo Ruf" && s.ServiceDescription.ServiceCategory.Name != "SeWo Notdienst").OrderBy(s => s.Start).ToList());
|
||||
}
|
||||
|
||||
public override void CreateEmployeeDetails(MitarbeiterstundenkontoRO ro)
|
||||
|
||||
85
ReportImp/SeWo/Zeitzuschlagsbeleg.Designer.cs
generated
85
ReportImp/SeWo/Zeitzuschlagsbeleg.Designer.cs
generated
@@ -33,6 +33,8 @@ namespace BeWo.SeWo
|
||||
this.Detail = new DevExpress.XtraReports.UI.DetailBand();
|
||||
this.formattingRuleStartDate = new DevExpress.XtraReports.UI.FormattingRule();
|
||||
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
|
||||
this.xrLabel9 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.lblRufGesamt = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel14 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.lblGesamtKm = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel12 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
@@ -617,8 +619,8 @@ namespace BeWo.SeWo
|
||||
this.xrLabel2 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.xrLabel9 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel11 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.lblNotGesamt = new DevExpress.XtraReports.UI.XRLabel();
|
||||
this.xrLabel15 = new DevExpress.XtraReports.UI.XRLabel();
|
||||
((System.ComponentModel.ISupportInitialize)(this.table1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
|
||||
@@ -640,8 +642,10 @@ namespace BeWo.SeWo
|
||||
// ReportHeader
|
||||
//
|
||||
this.ReportHeader.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
|
||||
this.lblNotGesamt,
|
||||
this.xrLabel15,
|
||||
this.xrLabel9,
|
||||
this.xrLabel11,
|
||||
this.lblRufGesamt,
|
||||
this.xrLabel14,
|
||||
this.lblGesamtKm,
|
||||
this.xrLabel12,
|
||||
@@ -657,9 +661,34 @@ namespace BeWo.SeWo
|
||||
this.ReportHeader.Name = "ReportHeader";
|
||||
this.ReportHeader.StylePriority.UseFont = false;
|
||||
//
|
||||
// xrLabel9
|
||||
//
|
||||
this.xrLabel9.LocationFloat = new DevExpress.Utils.PointFloat(694.0004F, 40.00003F);
|
||||
this.xrLabel9.Multiline = true;
|
||||
this.xrLabel9.Name = "xrLabel9";
|
||||
this.xrLabel9.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel9.SizeF = new System.Drawing.SizeF(95.99976F, 20F);
|
||||
this.xrLabel9.StylePriority.UseBorders = false;
|
||||
this.xrLabel9.StylePriority.UseFont = false;
|
||||
this.xrLabel9.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel9.Text = "SeWo Ruf:";
|
||||
this.xrLabel9.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
|
||||
//
|
||||
// lblRufGesamt
|
||||
//
|
||||
this.lblRufGesamt.LocationFloat = new DevExpress.Utils.PointFloat(790.0002F, 40.00003F);
|
||||
this.lblRufGesamt.Multiline = true;
|
||||
this.lblRufGesamt.Name = "lblRufGesamt";
|
||||
this.lblRufGesamt.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.lblRufGesamt.SizeF = new System.Drawing.SizeF(72.00012F, 20F);
|
||||
this.lblRufGesamt.StylePriority.UseBorders = false;
|
||||
this.lblRufGesamt.StylePriority.UseFont = false;
|
||||
this.lblRufGesamt.StylePriority.UseTextAlignment = false;
|
||||
this.lblRufGesamt.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
|
||||
//
|
||||
// xrLabel14
|
||||
//
|
||||
this.xrLabel14.LocationFloat = new DevExpress.Utils.PointFloat(718.0003F, 20.00001F);
|
||||
this.xrLabel14.LocationFloat = new DevExpress.Utils.PointFloat(694.0002F, 20F);
|
||||
this.xrLabel14.Multiline = true;
|
||||
this.xrLabel14.Name = "xrLabel14";
|
||||
this.xrLabel14.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
@@ -672,7 +701,7 @@ namespace BeWo.SeWo
|
||||
//
|
||||
// lblGesamtKm
|
||||
//
|
||||
this.lblGesamtKm.LocationFloat = new DevExpress.Utils.PointFloat(886.0001F, 20.00001F);
|
||||
this.lblGesamtKm.LocationFloat = new DevExpress.Utils.PointFloat(862.0003F, 20F);
|
||||
this.lblGesamtKm.Multiline = true;
|
||||
this.lblGesamtKm.Name = "lblGesamtKm";
|
||||
this.lblGesamtKm.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
@@ -5048,30 +5077,30 @@ namespace BeWo.SeWo
|
||||
//
|
||||
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.MitarbeiterstundenkontoRO.EmployeeDetail);
|
||||
//
|
||||
// xrLabel9
|
||||
// lblNotGesamt
|
||||
//
|
||||
this.xrLabel9.LocationFloat = new DevExpress.Utils.PointFloat(718.0003F, 40.00003F);
|
||||
this.xrLabel9.Multiline = true;
|
||||
this.xrLabel9.Name = "xrLabel9";
|
||||
this.xrLabel9.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel9.SizeF = new System.Drawing.SizeF(167.9998F, 20F);
|
||||
this.xrLabel9.StylePriority.UseBorders = false;
|
||||
this.xrLabel9.StylePriority.UseFont = false;
|
||||
this.xrLabel9.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel9.Text = "SeWo Notdienst";
|
||||
this.xrLabel9.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
|
||||
this.lblNotGesamt.LocationFloat = new DevExpress.Utils.PointFloat(982.0001F, 40F);
|
||||
this.lblNotGesamt.Multiline = true;
|
||||
this.lblNotGesamt.Name = "lblNotGesamt";
|
||||
this.lblNotGesamt.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.lblNotGesamt.SizeF = new System.Drawing.SizeF(76.99988F, 20F);
|
||||
this.lblNotGesamt.StylePriority.UseBorders = false;
|
||||
this.lblNotGesamt.StylePriority.UseFont = false;
|
||||
this.lblNotGesamt.StylePriority.UseTextAlignment = false;
|
||||
this.lblNotGesamt.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
|
||||
//
|
||||
// xrLabel11
|
||||
// xrLabel15
|
||||
//
|
||||
this.xrLabel11.LocationFloat = new DevExpress.Utils.PointFloat(886.0002F, 40.00003F);
|
||||
this.xrLabel11.Multiline = true;
|
||||
this.xrLabel11.Name = "xrLabel11";
|
||||
this.xrLabel11.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel11.SizeF = new System.Drawing.SizeF(158.0002F, 20F);
|
||||
this.xrLabel11.StylePriority.UseBorders = false;
|
||||
this.xrLabel11.StylePriority.UseFont = false;
|
||||
this.xrLabel11.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
|
||||
this.xrLabel15.LocationFloat = new DevExpress.Utils.PointFloat(862.0003F, 40F);
|
||||
this.xrLabel15.Multiline = true;
|
||||
this.xrLabel15.Name = "xrLabel15";
|
||||
this.xrLabel15.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
|
||||
this.xrLabel15.SizeF = new System.Drawing.SizeF(119.9998F, 20F);
|
||||
this.xrLabel15.StylePriority.UseBorders = false;
|
||||
this.xrLabel15.StylePriority.UseFont = false;
|
||||
this.xrLabel15.StylePriority.UseTextAlignment = false;
|
||||
this.xrLabel15.Text = "SeWo Notdienst:";
|
||||
this.xrLabel15.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
|
||||
//
|
||||
// Zeitzuschlagsbeleg
|
||||
//
|
||||
@@ -5691,6 +5720,8 @@ namespace BeWo.SeWo
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel8;
|
||||
private DevExpress.XtraReports.UI.XRTableCell xrTableCell376;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel9;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel11;
|
||||
private DevExpress.XtraReports.UI.XRLabel lblRufGesamt;
|
||||
private DevExpress.XtraReports.UI.XRLabel lblNotGesamt;
|
||||
private DevExpress.XtraReports.UI.XRLabel xrLabel15;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,6 +46,9 @@ namespace BeWo.SeWo
|
||||
private void FillTableData(DateTime monat, MitarbeiterstundenkontoRO.EmployeeDetail ed)
|
||||
{
|
||||
decimal kmTotal = 0;
|
||||
decimal rufTotal = 0;
|
||||
decimal notdienstTotal = 0;
|
||||
|
||||
if (ed.ServiceRecordsInSelectedTimeSpan != null)
|
||||
{
|
||||
foreach (var sr in ed.ServiceRecordsInSelectedTimeSpan)
|
||||
@@ -54,13 +57,27 @@ namespace BeWo.SeWo
|
||||
{
|
||||
kmTotal += sr.DistanceInMeter.Value;
|
||||
}
|
||||
|
||||
if (sr.ServiceDescription.ServiceCategory.Name == "SeWo Ruf")
|
||||
{
|
||||
rufTotal += GetDuration(sr);
|
||||
}
|
||||
else if (sr.ServiceDescription.ServiceCategory.Name == "SeWo Notdienst")
|
||||
{
|
||||
notdienstTotal += GetDuration(sr);
|
||||
}
|
||||
else
|
||||
{
|
||||
AddValueToTable(sr);
|
||||
}
|
||||
|
||||
AddValueToTable(sr);
|
||||
}
|
||||
}
|
||||
|
||||
BerechneGesamtsummen();
|
||||
lblGesamtKm.Text = String.Format("{0:0.00} km", kmTotal);
|
||||
lblRufGesamt.Text = String.Format("{0:0.00} Std.", rufTotal / 60);
|
||||
lblNotGesamt.Text = String.Format("{0:0.00} Std.", notdienstTotal / 60);
|
||||
}
|
||||
|
||||
private void BerechneGesamtsummen()
|
||||
@@ -211,24 +228,24 @@ namespace BeWo.SeWo
|
||||
duration = sr.RoundedDuration;
|
||||
}
|
||||
|
||||
if (sr.ServiceDescription.ServiceCategory.Name == "SeWo Ruf" || sr.ServiceDescription.ServiceCategory.Name == "SeWo Notdienst")
|
||||
{
|
||||
var p = sr.ServiceDescription.ServiceCategory.Percentage;
|
||||
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;
|
||||
// if (p != 100 && p > 0)
|
||||
// {
|
||||
// duration *= (p / 100);
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var p = sr.ServiceDescription.ServiceCategory.Percentage;
|
||||
if (p != 100 && p > 0)
|
||||
{
|
||||
duration *= (p / 100);
|
||||
// }
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// var p = sr.ServiceDescription.ServiceCategory.Percentage;
|
||||
// if (p != 100 && p > 0)
|
||||
// {
|
||||
// duration *= (p / 100);
|
||||
|
||||
}
|
||||
}
|
||||
// }
|
||||
//}
|
||||
//var p = sr.ServiceDescription.ServiceCategory.Percentage;
|
||||
//if (p != 100 && p > 0)
|
||||
//{
|
||||
|
||||
26
ReportService/packages.config
Normal file
26
ReportService/packages.config
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="ClrHeapAllocationAnalyzer" version="3.0.0" targetFramework="net472" />
|
||||
<package id="Microsoft.CodeAnalysis" version="3.4.0" targetFramework="net472" />
|
||||
<package id="Microsoft.CodeAnalysis.Analyzers" version="2.9.6" targetFramework="net472" developmentDependency="true" />
|
||||
<package id="Microsoft.CodeAnalysis.Common" version="3.4.0" targetFramework="net472" />
|
||||
<package id="Microsoft.CodeAnalysis.CSharp" version="3.4.0" targetFramework="net472" />
|
||||
<package id="Microsoft.CodeAnalysis.CSharp.Workspaces" version="3.4.0" targetFramework="net472" />
|
||||
<package id="Microsoft.CodeAnalysis.VisualBasic" version="3.4.0" targetFramework="net472" />
|
||||
<package id="Microsoft.CodeAnalysis.VisualBasic.Workspaces" version="3.4.0" targetFramework="net472" />
|
||||
<package id="Microsoft.CodeAnalysis.Workspaces.Common" version="3.4.0" targetFramework="net472" />
|
||||
<package id="System.Buffers" version="4.4.0" targetFramework="net472" />
|
||||
<package id="System.Collections.Immutable" version="1.5.0" targetFramework="net472" />
|
||||
<package id="System.Composition" version="1.0.31" targetFramework="net472" />
|
||||
<package id="System.Composition.AttributedModel" version="1.0.31" targetFramework="net472" />
|
||||
<package id="System.Composition.Convention" version="1.0.31" targetFramework="net472" />
|
||||
<package id="System.Composition.Hosting" version="1.0.31" targetFramework="net472" />
|
||||
<package id="System.Composition.Runtime" version="1.0.31" targetFramework="net472" />
|
||||
<package id="System.Composition.TypedParts" version="1.0.31" targetFramework="net472" />
|
||||
<package id="System.Memory" version="4.5.3" targetFramework="net472" />
|
||||
<package id="System.Numerics.Vectors" version="4.4.0" targetFramework="net472" />
|
||||
<package id="System.Reflection.Metadata" version="1.6.0" targetFramework="net472" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.2" targetFramework="net472" />
|
||||
<package id="System.Text.Encoding.CodePages" version="4.5.1" targetFramework="net472" />
|
||||
<package id="System.Threading.Tasks.Extensions" version="4.5.3" targetFramework="net472" />
|
||||
</packages>
|
||||
@@ -17,35 +17,32 @@ namespace BeWo.Service.DCEntityMapper
|
||||
pDataContract.SchedulerAppointmentOid = pEntity.Oid;
|
||||
pDataContract.NewSchedulerAppointmentVersion = pEntity.Version;
|
||||
|
||||
pDataContract.AllDay = pEntity.AllDay;
|
||||
pDataContract.EndDate = pEntity.EndDate;
|
||||
pDataContract.StartDate = pEntity.StartDate;
|
||||
pDataContract.Status = pEntity.Status;
|
||||
pDataContract.Subject = pEntity.Subject;
|
||||
pDataContract.Type = pEntity.Type;
|
||||
pDataContract.Location = pEntity.Location;
|
||||
pDataContract.Description = pEntity.Notice;
|
||||
pDataContract.AllDay = pEntity.AllDay;
|
||||
pDataContract.EndDate = pEntity.EndDate;
|
||||
pDataContract.StartDate = pEntity.StartDate;
|
||||
pDataContract.Status = pEntity.Status;
|
||||
pDataContract.Subject = pEntity.Subject;
|
||||
pDataContract.Type = pEntity.Type;
|
||||
pDataContract.Location = pEntity.Location;
|
||||
pDataContract.Description = pEntity.Notice;
|
||||
pDataContract.RecurrenceInfo = pEntity.RecurrenceInfo;
|
||||
pDataContract.ReminderInfo = pEntity.ReminderInfo;
|
||||
pDataContract.ReminderInfo = pEntity.ReminderInfo;
|
||||
|
||||
pDataContract.IsPrivate = pEntity.IsPrivate;
|
||||
pDataContract.IsPrivate = pEntity.IsPrivate;
|
||||
pDataContract.CustomerList = MapperFactory.CompactCustomerDC_Customer.MapToNewDCs(pEntity.CustomerList);
|
||||
pDataContract.ResourceList = MapperFactory.ResourceDC_Resource.MapToNewDCs(pEntity.ResourceList);
|
||||
pDataContract.EmployeeList = MapperFactory.Employee2SchedulerAppointmentDC_Employee2SchedulerAppointment.MapToNewDCs(pEntity.EmployeeList);
|
||||
|
||||
pDataContract.IsTask = pEntity.IsTask;
|
||||
pDataContract.IsTask = pEntity.IsTask;
|
||||
pDataContract.TaskDescription = pEntity.TaskDescription;
|
||||
pDataContract.CompletedNotice = pEntity.CompletedNotice;
|
||||
pDataContract.CompletedDate = pEntity.CompletedDate;
|
||||
|
||||
pDataContract.DueDate = pEntity.DueDate;
|
||||
pDataContract.CompletedDate = pEntity.CompletedDate;
|
||||
|
||||
pDataContract.DueDate = pEntity.DueDate;
|
||||
pDataContract.FormerBookingSequenceOid = pEntity.FormerBookingSequenceOid;
|
||||
pDataContract.SupportConceptList = MapperFactory.CompactSupportConceptDC_SupportConcept.MapToNewDCs(pEntity.SupportConceptList);
|
||||
|
||||
pDataContract.FormerTaskOid = pEntity.FormerTaskOid;
|
||||
|
||||
pDataContract.HasServiceRecordEntry = pEntity.HasServiceRecordEntry;
|
||||
pDataContract.SupportConceptList = MapperFactory.CompactSupportConceptDC_SupportConcept.MapToNewDCs(pEntity.SupportConceptList);
|
||||
pDataContract.FormerTaskOid = pEntity.FormerTaskOid;
|
||||
pDataContract.HasServiceRecordEntry = pEntity.HasServiceRecordEntry;
|
||||
|
||||
if (pEntity.Originator != null)
|
||||
{
|
||||
@@ -61,29 +58,25 @@ namespace BeWo.Service.DCEntityMapper
|
||||
{
|
||||
ConcurrencyCheck(pDataContract.NewSchedulerAppointmentVersion, pEntity);
|
||||
|
||||
pEntity.Oid = pDataContract.SchedulerAppointmentOid;
|
||||
pEntity.Version = pDataContract.NewSchedulerAppointmentVersion;
|
||||
|
||||
pEntity.AllDay = pDataContract.AllDay;
|
||||
pEntity.EndDate = pDataContract.EndDate;
|
||||
pEntity.StartDate = pDataContract.StartDate;
|
||||
pEntity.Status = pDataContract.Status;
|
||||
pEntity.Subject = pDataContract.Subject;
|
||||
pEntity.Type = pDataContract.Type;
|
||||
pEntity.Location = pDataContract.Location;
|
||||
pEntity.Notice = pDataContract.Description;
|
||||
pEntity.RecurrenceInfo = pDataContract.RecurrenceInfo;
|
||||
pEntity.ReminderInfo = pDataContract.ReminderInfo;
|
||||
|
||||
pEntity.Oid = pDataContract.SchedulerAppointmentOid;
|
||||
pEntity.Version = pDataContract.NewSchedulerAppointmentVersion;
|
||||
pEntity.AllDay = pDataContract.AllDay;
|
||||
pEntity.EndDate = pDataContract.EndDate;
|
||||
pEntity.StartDate = pDataContract.StartDate;
|
||||
pEntity.Status = pDataContract.Status;
|
||||
pEntity.Subject = pDataContract.Subject;
|
||||
pEntity.Type = pDataContract.Type;
|
||||
pEntity.Location = pDataContract.Location;
|
||||
pEntity.Notice = pDataContract.Description;
|
||||
pEntity.RecurrenceInfo = pDataContract.RecurrenceInfo;
|
||||
pEntity.ReminderInfo = pDataContract.ReminderInfo;
|
||||
pEntity.FormerBookingSequenceOid = pDataContract.FormerBookingSequenceOid;
|
||||
|
||||
pEntity.IsTask = pDataContract.IsTask;
|
||||
pEntity.TaskDescription = pDataContract.TaskDescription;
|
||||
pEntity.CompletedNotice = pDataContract.CompletedNotice;
|
||||
pEntity.CompletedDate = pDataContract.CompletedDate;
|
||||
pEntity.DueDate = pDataContract.DueDate;
|
||||
|
||||
pEntity.FormerTaskOid = pDataContract.FormerTaskOid;
|
||||
pEntity.IsTask = pDataContract.IsTask;
|
||||
pEntity.TaskDescription = pDataContract.TaskDescription;
|
||||
pEntity.CompletedNotice = pDataContract.CompletedNotice;
|
||||
pEntity.CompletedDate = pDataContract.CompletedDate;
|
||||
pEntity.DueDate = pDataContract.DueDate;
|
||||
pEntity.FormerTaskOid = pDataContract.FormerTaskOid;
|
||||
|
||||
if (pDataContract.Originator != null)
|
||||
{
|
||||
@@ -91,8 +84,7 @@ namespace BeWo.Service.DCEntityMapper
|
||||
}
|
||||
|
||||
pEntity.IsPrivate = pDataContract.IsPrivate;
|
||||
|
||||
pEntity.HasServiceRecordEntry = pDataContract.HasServiceRecordEntry;
|
||||
pEntity.HasServiceRecordEntry = pDataContract.HasServiceRecordEntry;
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace BeWo.Service.Plugins
|
||||
//t = "1193188501"; // Aids Hilfe Dortmund
|
||||
//t = "7860351957"; // SKF Alsdorf
|
||||
//t = "3311520228"; // Die Düne
|
||||
t = "1352143437"; // Sewo
|
||||
//t = "1352143437"; // Sewo
|
||||
//t = "7107514623"; // BeWo Neuss
|
||||
//t = "9098141768"; // Fib e.V. Marburg
|
||||
//t = "1505148718"; // VSD Hamm
|
||||
@@ -84,7 +84,7 @@ namespace BeWo.Service.Plugins
|
||||
//t = "4867997795"; // ADiK Kleve
|
||||
//t = "3184859776"; // Sergej Becker
|
||||
//t = "7752610643"; // BWK Gbr
|
||||
//t = "3785623125"; // Betreuwo
|
||||
t = "3785623125"; // Betreuwo
|
||||
//t = "7130228334"; // LH Borken
|
||||
//t = "4209820830"; // VKM Hamm
|
||||
//t = "5700328131"; // Betreutes Wohnen St. Ludgerus Essen-Werden
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ServiceModel;
|
||||
|
||||
using BS.Shared.Core;
|
||||
using BS.Shared.DataContracts;
|
||||
|
||||
namespace BeWo.Service.ServiceContracts
|
||||
@@ -224,5 +224,9 @@ namespace BeWo.Service.ServiceContracts
|
||||
[FaultContract(typeof(BeWoFault))]
|
||||
[OperationContract]
|
||||
List<SchedulerAppointmentDC> LoadOccurrencesByRecurrenceId(string recurrenceId);
|
||||
|
||||
[FaultContract(typeof(BeWoFault))]
|
||||
[OperationContract]
|
||||
Dictionary<DateTime, List<DateTimeSpan>> FindAppointmentsInRange(int duration, DateTime startDate, DateTime endDate, List<long> resourceOids, List<long> customerOids, List<long> employeeOids, long loggedInEmployeeOid, int intervalBuffer = 30, bool skipWeekends = true);
|
||||
}
|
||||
}
|
||||
@@ -1662,6 +1662,8 @@ namespace BeWo.Service.ServiceImplementations
|
||||
|
||||
CustomerServiceImp.MakeNewPersonHistoryEntry(employee.Person, statementType);
|
||||
|
||||
MakeNewContractHistoryEntry(employee, statementType);
|
||||
|
||||
DAOFactory.GenericDAO.Insert(employeeHistory);
|
||||
}
|
||||
catch (Exception e)
|
||||
@@ -2132,5 +2134,43 @@ namespace BeWo.Service.ServiceImplementations
|
||||
throw Utils.CreateBeWoFaultException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
public void MakeNewContractHistoryEntry(Employee employee, StatementType statementType)
|
||||
{
|
||||
foreach (var contract in employee.Contracts)
|
||||
{
|
||||
var historyEntry = new ContractHistory()
|
||||
{
|
||||
ContractHistoryCancellationPeriod = contract.CancellationPeriod,
|
||||
ContractHistoryContractEndDate = contract.ContractEndDate,
|
||||
ContractHistoryContractTypeValueListEntry = contract.ContractTypeValueListEntry,
|
||||
ContractHistoryEmployeeOid = employee.Oid.Value,
|
||||
ContractHistoryEmploymentType = contract.EmploymentType,
|
||||
ContractHistoryEntryDate = contract.EntryDate,
|
||||
ContractHistoryHourlyRate = contract.HourlyRate,
|
||||
ContractHistoryHourlyRateCostRateValue = contract.HourlyRateCostRateValue,
|
||||
ContractHistoryLeaveDays = contract.LeaveDays,
|
||||
ContractHistoryMonthlyFLS = contract.MonthlyFLS,
|
||||
ContractHistoryMonthlyTotalHours = contract.MonthlyTotalHours,
|
||||
ContractHistoryProbationPeriod = contract.ProbationPeriod,
|
||||
ContractHistoryProbationPeriod2 = contract.ProbationPeriod2,
|
||||
ContractHistoryQualifikationsBedarfValueListEntry = contract.QualifikationsBedarfValueListEntry,
|
||||
ContractHistoryWeeklyDays = contract.WeeklyDays,
|
||||
ContractHistoryWeeklyFLS = contract.WeeklyFLS,
|
||||
ContractHistoryWeeklyTotalHours = contract.WeeklyTotalHours,
|
||||
IsActive = contract.IsActive,
|
||||
Notice = contract.Notice,
|
||||
InsTs = contract.InsTs,
|
||||
InsUser = contract.InsUser,
|
||||
SystemEntryID = contract.SystemEntryID,
|
||||
Version = contract.Version,
|
||||
UdpUser = employee.UdpUser,
|
||||
UpdTs = employee.UpdTs,
|
||||
ChangeType = statementType
|
||||
};
|
||||
DAOFactory.GenericDAO.Insert(historyEntry);
|
||||
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -18,6 +18,7 @@ using BS.Shared.Core;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using BS.Shared.Extensions;
|
||||
using DevExpress.Utils;
|
||||
using DevExpress.XtraScheduler;
|
||||
using static System.String;
|
||||
using Resource = BeWo.Data.Entities.Resource;
|
||||
@@ -1190,7 +1191,7 @@ namespace BeWo.Service.ServiceImplementations
|
||||
|
||||
var result = FilterAppointments(all, pEmployeeOid, filteredEmployeeOids, pSelectedCustomer, pSelectedResources, pCustomersOnly, pResourcesOnly, pShowTasks);
|
||||
|
||||
//Check fehlerhaftes RecurrenceInfos
|
||||
//Check fehlerhafte RecurrenceInfos
|
||||
foreach(var app in result)
|
||||
{
|
||||
if(!IsNullOrEmpty(app.RecurrenceInfo))
|
||||
@@ -2314,5 +2315,19 @@ namespace BeWo.Service.ServiceImplementations
|
||||
throw Utils.CreateBeWoFaultException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public Dictionary<DateTime, List<DateTimeSpan>> FindAppointmentsInRange(int duration, DateTime startDate, DateTime endDate, List<long> resourceOids, List<long> customerOids, List<long> employeeOids, long loggedInEmployeeOid, int intervalBuffer = 30, bool skipWeekends = true)
|
||||
{
|
||||
try
|
||||
{
|
||||
var intervals = DAOFactory.SearchDAO.FindAppointmentsInRange(duration, startDate, endDate, resourceOids, customerOids, employeeOids, loggedInEmployeeOid, intervalBuffer, skipWeekends);
|
||||
|
||||
return intervals;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw Utils.CreateBeWoFaultException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -163,7 +163,8 @@ namespace BS.Shared
|
||||
AbwesenheitsInformationPrint = 156,
|
||||
SupportConceptHistory = 157,
|
||||
Costbearer2SupportConceptHistory = 158,
|
||||
SupportConceptApprovalPeriodHistory = 159
|
||||
SupportConceptApprovalPeriodHistory = 159,
|
||||
ContractHistory = 160,
|
||||
}
|
||||
|
||||
public enum SystemEntryID
|
||||
|
||||
@@ -184,6 +184,16 @@ namespace BS.Shared.Core
|
||||
|
||||
return new ArbeitszeitEintragDateTimeObject(start, end);
|
||||
}
|
||||
|
||||
public static string GetTwoDateString(this DateTime date1, DateTime date2)
|
||||
{
|
||||
if (date1.Date.Equals(date2.Date))
|
||||
{
|
||||
return date2 > date1 ? $"{date1:dd.MM.yyyy HH:mm} - {date2:HH:mm}" : $"{date2:dd.MM.yyyy HH:mm} - {date1:HH:mm}";
|
||||
}
|
||||
|
||||
return date2 > date1 ? $"{date1:dd.MM.yyyy HH:mm} - {date2:dd.MM.yyyy HH:mm}" : $"{date2:dd.MM.yyyy HH:mm} - {date1:dd.MM.yyyy HH:mm}";
|
||||
}
|
||||
}
|
||||
|
||||
public class AnzahlMonate
|
||||
|
||||
@@ -100,5 +100,10 @@ namespace BS.Shared.Extensions
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static List<T> Clone<T>(this IList<T> list)
|
||||
{
|
||||
return list?.ToList() ?? new List<T>();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user