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

This commit is contained in:
2026-01-29 14:03:57 +01:00
37 changed files with 2312 additions and 417 deletions

View File

@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16 # Visual Studio Version 17
VisualStudioVersion = 16.0.31729.503 VisualStudioVersion = 17.14.36908.2 d17.14
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BeWoPlanerMobil", "BeWoPlanerMobil\BeWoPlanerMobil.csproj", "{284B02ED-114A-426C-9162-31BB6CF05589}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BeWoPlanerMobil", "BeWoPlanerMobil\BeWoPlanerMobil.csproj", "{284B02ED-114A-426C-9162-31BB6CF05589}"
EndProject EndProject
@@ -27,6 +27,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FeidPartnerReports", "Repor
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PaSMoenchengladbach", "ReportImp\PaSMoenchengladbach\PaSMoenchengladbach.csproj", "{EA3C4BE1-6128-4FC9-8194-3C4202233371}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PaSMoenchengladbach", "ReportImp\PaSMoenchengladbach\PaSMoenchengladbach.csproj", "{EA3C4BE1-6128-4FC9-8194-3C4202233371}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Host", "Host\Host.csproj", "{E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@@ -100,6 +102,12 @@ Global
{EA3C4BE1-6128-4FC9-8194-3C4202233371}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU {EA3C4BE1-6128-4FC9-8194-3C4202233371}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
{EA3C4BE1-6128-4FC9-8194-3C4202233371}.Release|Any CPU.ActiveCfg = Release|Any CPU {EA3C4BE1-6128-4FC9-8194-3C4202233371}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EA3C4BE1-6128-4FC9-8194-3C4202233371}.Release|Any CPU.Build.0 = Release|Any CPU {EA3C4BE1-6128-4FC9-8194-3C4202233371}.Release|Any CPU.Build.0 = Release|Any CPU
{E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
{E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
{E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

View File

@@ -307,7 +307,9 @@
<Compile Include="Controllers\CustomerController.cs" /> <Compile Include="Controllers\CustomerController.cs" />
<Compile Include="Controllers\DevToolsController.cs" /> <Compile Include="Controllers\DevToolsController.cs" />
<Compile Include="Controllers\DevExpressSchedulerController.cs" /> <Compile Include="Controllers\DevExpressSchedulerController.cs" />
<Compile Include="Controllers\EmployeeController.cs" />
<Compile Include="Controllers\ExternalSignatureController.cs" /> <Compile Include="Controllers\ExternalSignatureController.cs" />
<Compile Include="Controllers\IAbsenceTimeController.cs" />
<Compile Include="Controllers\PersonController.cs" /> <Compile Include="Controllers\PersonController.cs" />
<Compile Include="Controllers\SignableController.cs" /> <Compile Include="Controllers\SignableController.cs" />
<Compile Include="Controllers\ReportBaseController.cs" /> <Compile Include="Controllers\ReportBaseController.cs" />
@@ -316,6 +318,10 @@
<Compile Include="Controllers\SchedulerController.cs" /> <Compile Include="Controllers\SchedulerController.cs" />
<Compile Include="Models\AbstractModel.cs" /> <Compile Include="Models\AbstractModel.cs" />
<Compile Include="Models\DevExpressSchedulerSessionModel.cs" /> <Compile Include="Models\DevExpressSchedulerSessionModel.cs" />
<Compile Include="Models\EmployeeModel.cs" />
<Compile Include="Models\EmployeeSessionModel.cs" />
<Compile Include="Models\IAbsenceTimeModel.cs" />
<Compile Include="Models\IAbsenceTimeSessionModel.cs" />
<Compile Include="Models\MokZiel.cs" /> <Compile Include="Models\MokZiel.cs" />
<Compile Include="Models\MokSupportConceptListObject.cs" /> <Compile Include="Models\MokSupportConceptListObject.cs" />
<Compile Include="Models\MokMandator.cs" /> <Compile Include="Models\MokMandator.cs" />
@@ -688,6 +694,9 @@
<Content Include="Views\Main\Zeiterfassungspartial.cshtml" /> <Content Include="Views\Main\Zeiterfassungspartial.cshtml" />
<Content Include="Views\Main\SingleSignaturePopupPartial.cshtml" /> <Content Include="Views\Main\SingleSignaturePopupPartial.cshtml" />
<Content Include="Views\Person\Person.cshtml" /> <Content Include="Views\Person\Person.cshtml" />
<Content Include="Views\Employee\Employee.cshtml" />
<Content Include="Views\Shared\AbsenceTimeFormPartial.cshtml" />
<Content Include="Views\Shared\AbsenceTimePartial.cshtml" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="packages.config" /> <Content Include="packages.config" />
@@ -727,15 +736,9 @@
<Name>Shared</Name> <Name>Shared</Name>
</ProjectReference> </ProjectReference>
</ItemGroup> </ItemGroup>
<ItemGroup>
<Content Include="Views\Customer\CustomerAbsenceTimePartial.cshtml" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="Views\Customer\CustomerBargeldkassen.cshtml" /> <Content Include="Views\Customer\CustomerBargeldkassen.cshtml" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Content Include="Views\Customer\CustomerAbsenceTimeFormPartial.cshtml" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="Views\Report\QuittierungsbelegsPreviewPartial.cshtml" /> <Content Include="Views\Report\QuittierungsbelegsPreviewPartial.cshtml" />
</ItemGroup> </ItemGroup>

View File

@@ -15,7 +15,7 @@
<Controller_SelectedScaffolderCategoryPath>root/Common/MVC/Controller</Controller_SelectedScaffolderCategoryPath> <Controller_SelectedScaffolderCategoryPath>root/Common/MVC/Controller</Controller_SelectedScaffolderCategoryPath>
<WebStackScaffolding_ControllerDialogWidth>600</WebStackScaffolding_ControllerDialogWidth> <WebStackScaffolding_ControllerDialogWidth>600</WebStackScaffolding_ControllerDialogWidth>
<WebStackScaffolding_IsLayoutPageSelected>False</WebStackScaffolding_IsLayoutPageSelected> <WebStackScaffolding_IsLayoutPageSelected>False</WebStackScaffolding_IsLayoutPageSelected>
<WebStackScaffolding_IsPartialViewSelected>False</WebStackScaffolding_IsPartialViewSelected> <WebStackScaffolding_IsPartialViewSelected>True</WebStackScaffolding_IsPartialViewSelected>
<WebStackScaffolding_IsReferencingScriptLibrariesSelected>False</WebStackScaffolding_IsReferencingScriptLibrariesSelected> <WebStackScaffolding_IsReferencingScriptLibrariesSelected>False</WebStackScaffolding_IsReferencingScriptLibrariesSelected>
<WebStackScaffolding_LayoutPageFile> <WebStackScaffolding_LayoutPageFile>
</WebStackScaffolding_LayoutPageFile> </WebStackScaffolding_LayoutPageFile>

View File

@@ -18,44 +18,30 @@ using DevExpress.XtraReports.UI;
namespace BeWoPlanerMobil.Controllers namespace BeWoPlanerMobil.Controllers
{ {
public class CustomerController : ReportBaseController public class CustomerController : ReportBaseController, IAbsenceTimeController
{ {
public CustomerController() public CustomerController() { }
{
}
private CustomerModel _Model; private CustomerModel _Model;
public CustomerModel Model public CustomerModel Model
{ {
get get
{ {
if (!MobileSessionFacade.IsUserLoggedIn()) if(!MobileSessionFacade.IsUserLoggedIn())
{ {
Logout(); Logout();
return null; return null;
} }
if (_Model == null) if(_Model != null)
{ {
_Model = new CustomerModel(); return _Model;
InitModel(_Model);
InitViewModel();
} }
//if (((CustomerModel) Session[ModelSessionConstants.CustomerModelKey])?.LoggedInEmployee is null) _Model = new CustomerModel();
//{
// _Model = new CustomerModel();
// InitModel(_Model); InitModel(_Model);
InitViewModel();
// Session[ModelSessionConstants.CustomerModelKey] = _Model;
//}
//else
//{
// _Model = (CustomerModel)Session[ModelSessionConstants.CustomerModelKey];
//}
return _Model; return _Model;
} }
@@ -112,9 +98,10 @@ namespace BeWoPlanerMobil.Controllers
Model.Customers = new List<CompactCustomerDC>(); Model.Customers = new List<CompactCustomerDC>();
} }
if(Model.CustomerSessionModel.SelectedCustomerOid.HasValue) var selectedCustomerOid = Model.CustomerSessionModel.SelectedAbsenceTimeObjectOid;
if(selectedCustomerOid.HasValue)
{ {
Model.SelectedCustomer = CustomerService.LoadCustomer(Model.CustomerSessionModel.SelectedCustomerOid.Value); Model.SelectedCustomer = CustomerService.LoadCustomer(selectedCustomerOid.Value);
} }
if(Model.IsAllowedToSeeMedikamentenliste) if(Model.IsAllowedToSeeMedikamentenliste)
@@ -1271,11 +1258,11 @@ namespace BeWoPlanerMobil.Controllers
var startDateString = formCollection["customer-absence-time-start-date"]; var startDateString = formCollection["customer-absence-time-start-date"];
var startTimeString = formCollection["customer-absence-time-start-time"]; var startTimeString = formCollection["customer-absence-time-start-time"];
var endDateString = formCollection["customer-absence-time-end-date"]; var endDateString = formCollection["customer-absence-time-end-date"];
var endTimeString = formCollection["customer-absence-time-end-time"]; var endTimeString = formCollection["customer-absence-time-end-time"];
var category = formCollection["customer-absence-time-category"]; var category = formCollection["customer-absence-time-category"];
var notice = formCollection["customer-absence-time-notice"]; var notice = formCollection["customer-absence-time-notice"];
var allDay = "on" == formCollection["customer-absence-time-allday-cb"]; var allDay = "on" == formCollection["customer-absence-time-allday-cb"];
if(allDay) if(allDay)
{ {
@@ -1340,7 +1327,6 @@ namespace BeWoPlanerMobil.Controllers
if(absenceTimeOid == 0) if(absenceTimeOid == 0)
{ {
return RedirectToActionPermanent("Customer", Model); return RedirectToActionPermanent("Customer", Model);
//return "Es ist ein Fehler bei der Auswahl der zu bearbeitenden Abwesenheit aufgetreten.<br />Bitte wenden Sie sich an Ihren Systemadministrator.";
} }
var selectedAbsenceTime = Model.SelectedCustomer.AbsenceTimes.FirstOrDefault(absenceTime => absenceTime.AbsenceTimeOid.HasValue && absenceTime.AbsenceTimeOid.Value.Equals(absenceTimeOid)); var selectedAbsenceTime = Model.SelectedCustomer.AbsenceTimes.FirstOrDefault(absenceTime => absenceTime.AbsenceTimeOid.HasValue && absenceTime.AbsenceTimeOid.Value.Equals(absenceTimeOid));
@@ -1348,13 +1334,11 @@ namespace BeWoPlanerMobil.Controllers
if(selectedAbsenceTime is null) if(selectedAbsenceTime is null)
{ {
return RedirectToActionPermanent("Customer", Model); return RedirectToActionPermanent("Customer", Model);
//return "Es ist ein Fehler bei der Auswahl der zu bearbeitenden Abwesenheit aufgetreten.<br />Bitte wenden Sie sich an Ihren Systemadministrator.";
} }
Model.SelectedAbsenceTimeOid = absenceTimeOid; Model.SelectedAbsenceTimeOid = absenceTimeOid;
Model.SelectedAbsenceReasonOid = selectedAbsenceTime.Reason.AbsenceReasonOid; Model.SelectedAbsenceReasonOid = selectedAbsenceTime.Reason.AbsenceReasonOid;
//return LeerzeichenFuerGetMethoden;
return RedirectToActionPermanent("Customer", Model); return RedirectToActionPermanent("Customer", Model);
} }
@@ -1382,7 +1366,7 @@ namespace BeWoPlanerMobil.Controllers
TempData[TempDataConstants.DoLogoutKey] = true; TempData[TempDataConstants.DoLogoutKey] = true;
} }
return PartialView("CustomerAbsenceTimeFormPartial", Model); return PartialView("AbsenceTimeFormPartial", Model);
} }
[Authorize] [Authorize]
@@ -1400,7 +1384,7 @@ namespace BeWoPlanerMobil.Controllers
if(Model is null) if(Model is null)
{ {
TempData[TempDataConstants.DoLogoutKey] = true; TempData[TempDataConstants.DoLogoutKey] = true;
return PartialView("CustomerAbsenceTimePartial"); return PartialView("AbsenceTimePartial");
} }
var absenceTime2Delete = Model.SelectedCustomer.AbsenceTimes.FirstOrDefault(absenceTime => absenceTime.AbsenceTimeOid.HasValue && absenceTime.AbsenceTimeOid.Equals(absenceTimeOid)); var absenceTime2Delete = Model.SelectedCustomer.AbsenceTimes.FirstOrDefault(absenceTime => absenceTime.AbsenceTimeOid.HasValue && absenceTime.AbsenceTimeOid.Equals(absenceTimeOid));
@@ -1418,7 +1402,7 @@ namespace BeWoPlanerMobil.Controllers
LoadCustomerToModel(customer.CustomerOid); LoadCustomerToModel(customer.CustomerOid);
return PartialView("CustomerAbsenceTimePartial", Model); return PartialView("AbsenceTimePartial", Model);
} }
#endregion #endregion

View File

@@ -0,0 +1,280 @@
using System;
using System.Diagnostics;
using System.Linq;
using System.Web.Mvc;
using BeWoPlanerMobil.Models;
using BeWoPlanerMobil.Service;
using BeWoPlanerMobil.Util;
using BS.Shared;
using BS.Shared.DataContracts;
namespace BeWoPlanerMobil.Controllers
{
public class EmployeeController : AbstractBaseController, IAbsenceTimeController
{
public EmployeeController() { }
[Authorize]
public override string SaveCollapsibleStatus(bool isOpen, string identifier)
{
return SaveCollapsibleStatusToModel(Model, isOpen, identifier);
}
private EmployeeModel _Model;
public EmployeeModel Model
{
get
{
if(false == MobileSessionFacade.IsUserLoggedIn())
{
Logout();
return null;
}
if(_Model != null)
{
return _Model;
}
_Model = new EmployeeModel();
InitModel(_Model);
InitViewModel();
return _Model;
}
}
[Authorize]
public ActionResult Employee(long? id)
{
if(!MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
{
return Logout();
}
if(id.HasValue)
{
LoadEmployeeToModel(id);
}
return View(Model);
}
private void InitViewModel()
{
if(!MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
{
Logout();
return;
}
Model.AllAbsenceReasons = CustomerService.GetAllAbsenceReasons()
.Where(ar => ar.Sichtbarkeit is null ||
ar.Sichtbarkeit == AbsenceReasonVisibilityType.Employee ||
ar.Sichtbarkeit == AbsenceReasonVisibilityType.All)
.ToList();
if(Model.EmployeeSessionModel.SelectedAbsenceTimeObjectOid != null)
{
Model.SelectedEmployee = EmployeeService.LoadEmployee(Model.EmployeeSessionModel.SelectedAbsenceTimeObjectOid.Value);
Model.AbsenceTimeObject = Model.SelectedEmployee;
}
var selectedAbsenceTimeOid = Model.EmployeeSessionModel.SelectedAbsenceTimeOid;
if(selectedAbsenceTimeOid.HasValue && Model.SelectedEmployee != null)
{
Model.SelectedAbsenceTime = Model.SelectedEmployee.AbsenceTimes.FirstOrDefault(absenceTime => absenceTime.AbsenceTimeOid?.Equals(selectedAbsenceTimeOid.Value) ?? false);
}
}
private void LoadEmployeeToModel(long? employeeOid)
{
if(employeeOid == -1)
{
Model.EmployeeSessionModel.ResetValues();
return;
}
if(Model.SelectedEmployeeOid.HasValue && Model.SelectedEmployeeOid != employeeOid)
{
Model.EmployeeSessionModel.ResetValues();
}
Model.SelectedEmployeeOid = employeeOid;
if(employeeOid != null)
{
Model.SelectedEmployee = EmployeeService.LoadEmployee(Model.EmployeeSessionModel.SelectedAbsenceTimeObjectOid.Value);
Model.AbsenceTimeObject = Model.SelectedEmployee;
}
}
[Authorize]
[HttpPost]
public ActionResult CreateOrUpdateAbsenceTime(FormCollection formCollection)
{
if(Model is null)
{
TempData[TempDataConstants.DoLogoutKey] = true;
return Logout();
}
var selectedAbsenceTime = Model.SelectedAbsenceTime;
var oid = selectedAbsenceTime?.AbsenceTimeOid;
var isNew = oid is null;
var startDateString = formCollection["employee-absence-time-start-date"];
var startTimeString = formCollection["employee-absence-time-start-time"];
var endDateString = formCollection["employee-absence-time-end-date"];
var endTimeString = formCollection["employee-absence-time-end-time"];
var category = formCollection["employee-absence-time-category"];
var notice = formCollection["employee-absence-time-notice"];
var allDay = "on" == formCollection["employee-absence-time-allday-cb"];
if(allDay)
{
startTimeString = null;
endTimeString = null;
}
var startString = $"{startDateString} {startTimeString ?? "00:00"}";
var endString = $"{endDateString} {endTimeString ?? "00:00"}";
var start = DateTime.Parse(startString);
var end = string.IsNullOrWhiteSpace(endDateString) && string.IsNullOrWhiteSpace(endTimeString) ? null : (DateTime?) DateTime.Parse(endString);
var categoryOid = long.Parse(category);
var absenceReason = Model.AllAbsenceReasons.FirstOrDefault(ar => ar.AbsenceReasonOid.HasValue && ar.AbsenceReasonOid.Value.Equals(categoryOid));
var employee = Model.SelectedEmployee;
if(isNew)
{
var absenceTime = new AbsenceTimeDC
{
EmployeeOid = employee.EmployeeOid,
Reason = absenceReason,
Start = start,
End = end,
Notice = notice
};
OperationsService.InsertNewEmployeeAbsenceTime(employee.EmployeeOid.Value, absenceTime);
}
else
{
selectedAbsenceTime.Start = start;
selectedAbsenceTime.End = end;
selectedAbsenceTime.Reason = absenceReason;
selectedAbsenceTime.Notice = notice;
OperationsService.UpdateAbsenceTime(selectedAbsenceTime);
}
LoadEmployeeToModel(employee.EmployeeOid);
Model.SelectedAbsenceTime = null;
Model.SelectedAbsenceTimeOid = null;
Model.SelectedAbsenceReasonOid = -1;
return RedirectToActionPermanent("Employee");
}
[Authorize]
[HttpPost]
public ActionResult SelectAbsenceTime(long absenceTimeOid)
{
if(Model is null)
{
TempData[TempDataConstants.DoLogoutKey] = true;
return Logout();
}
if(absenceTimeOid == 0)
{
return RedirectToActionPermanent("Employee", Model);
}
var selectedAbsenceTime = Model.SelectedEmployee.AbsenceTimes.FirstOrDefault(absenceTime => absenceTime.EmployeeOid?.Equals(absenceTimeOid) ?? false);
if(selectedAbsenceTime is null)
{
return RedirectToActionPermanent("Employee", Model);
}
Model.SelectedAbsenceTimeOid = absenceTimeOid;
Model.SelectedAbsenceReasonOid = selectedAbsenceTime.Reason.AbsenceReasonOid;
return RedirectToActionPermanent("Employee", Model);
}
[Authorize]
public string SetSelectedAbsenceTimeOid(long absenceTimeOid)
{
var selectedAbsenceTime = Model.SelectedEmployee.AbsenceTimes.FirstOrDefault(absenceTime => absenceTime.AbsenceTimeOid?.Equals(absenceTimeOid) ?? false);
if(selectedAbsenceTime is null)
{
return "Es ist ein Fehler bei der Auswahl der zu bearbeitenden Abwesenheit aufgetreten.<br />Bitte wenden Sie sich an Ihren Systemadministrator";
}
Model.SelectedAbsenceTimeOid = absenceTimeOid;
Model.SelectedAbsenceReasonOid = selectedAbsenceTime.Reason.AbsenceReasonOid;
return LeerzeichenFuerGetMethoden;
}
[Authorize]
public ActionResult LoadAbsenceTimeToForm()
{
if(Model is null)
{
TempData[TempDataConstants.DoLogoutKey] = true;
}
return PartialView("AbsenceTimeFormPartial", Model);
}
[Authorize]
public string DeselectAbsenceTime()
{
Model.SelectedAbsenceTimeOid = null;
Model.SelectedAbsenceReasonOid = -1;
return LeerzeichenFuerGetMethoden;
}
[Authorize]
public ActionResult DeleteAbsenceTime(long absenceTimeOid)
{
if(Model is null)
{
TempData[TempDataConstants.DoLogoutKey] = true;
return PartialView("AbsenceTimePartial");
}
var absenceTime2Delete = Model.SelectedEmployee.AbsenceTimes.FirstOrDefault(absenceTime => absenceTime.AbsenceTimeOid?.Equals(absenceTimeOid) ?? false);
if(absenceTime2Delete is null)
{
ViewData["AbsenceTimeError"] = "Beim Löschen der Abwesenheit ist ein Fehler aufgetreten!<br/><br/>Bitte wenden Sie sich an Ihren Administrator.";
}
var employee = Model.SelectedEmployee;
employee.AbsenceTimes.Remove(absenceTime2Delete);
EmployeeService.UpdateEmployee(employee);
LoadEmployeeToModel(employee.EmployeeOid);
return PartialView("AbsenceTimePartial", Model);
}
}
}

View File

@@ -0,0 +1,27 @@
using System.Web.Mvc;
namespace BeWoPlanerMobil.Controllers
{
internal interface IAbsenceTimeController
{
[Authorize]
[HttpPost]
ActionResult CreateOrUpdateAbsenceTime(FormCollection formCollection);
[Authorize]
[HttpPost]
ActionResult SelectAbsenceTime(long absenceTimeOid);
[Authorize]
string SetSelectedAbsenceTimeOid(long absenceTimeOid);
[Authorize]
ActionResult LoadAbsenceTimeToForm();
[Authorize]
string DeselectAbsenceTime();
[Authorize]
ActionResult DeleteAbsenceTime(long absenceTimeOid);
}
}

View File

@@ -3362,10 +3362,20 @@ namespace BeWoPlanerMobil.Controllers
return RedirectToMain(); return RedirectToMain();
} }
/// <summary>
/// Leitet zur Mitarbeiter-Seite weiter, die bis jetzt aber nur die Abwesenheiten des angemeldeten Mitarbeiters anzeigt
/// </summary>
/// <returns>Aufruf zur Mitarbeiter-Seite</returns>
[Authorize] [Authorize]
public ActionResult RedirectToPersons() public ActionResult RedirectToPersons()
{ {
return RedirectToActionPermanent("Person", "Person"); return RedirectToActionPermanent("Person", "Person", new { id = Model.LoggedInEmployee?.EmployeeOid });
}
[Authorize]
public ActionResult RedirectToEmployees()
{
return RedirectToActionPermanent("Employee", "Employee", new { id = Model.LoggedInEmployee?.EmployeeOid });
} }
[Authorize] [Authorize]

View File

@@ -0,0 +1,93 @@
using BeWoPlanerMobil.Models;
using BeWoPlanerMobil.Service;
using DevExpress.Web.Internal.XmlProcessor;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace BeWoPlanerMobil.Controllers
{
public class PersonController : AbstractBaseController
{
public PersonController() { }
private PersonModel _Model;
public PersonModel Model
{
get
{
if(!MobileSessionFacade.IsUserLoggedIn())
{
Logout();
return null;
}
if(_Model is null)
{
_Model = new PersonModel();
InitModel(_Model);
InitViewModel();
}
return _Model;
}
}
[Authorize]
public ActionResult Person(long? id)
{
try
{
if(!MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
{
return Logout();
}
if(id.HasValue)
{
LoadPersonToModel(id);
}
}
catch(Exception exception)
{
Log.Info("Exception: " + exception.Message + "\n" + exception.StackTrace);
if(exception.InnerException != null)
{
Log.Info("\n\nInnerException: " + exception.InnerException.Message + "\n" + exception.InnerException.StackTrace);
}
throw;
}
return View(Model);
}
private void InitViewModel()
{
if(!MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
{
Logout();
return;
}
}
private void LoadPersonToModel(long? personOid)
{
if(personOid is null || (personOid.Value > 0 && false == Model.Persons.Any(p => p.PersonOid.Equals(personOid.Value))))
{
return;
}
}
public override string SaveCollapsibleStatus(bool isOpen, string identifier)
{
throw new NotImplementedException();
}
}
}

View File

@@ -51,8 +51,8 @@ namespace BeWoPlanerMobil.Models
public static string TimeOfLastAction public static string TimeOfLastAction
{ {
get { return MobileSessionFacade.TimeOfLastAction; } get => MobileSessionFacade.TimeOfLastAction;
set { MobileSessionFacade.TimeOfLastAction = value; } set => MobileSessionFacade.TimeOfLastAction = value;
} }
public bool HasRightToInsertRessourceAppointments => CheckRight(UserRightType.KalenderRessourcentermineAnlegen) || CheckRight(UserRightType.CreateAll); public bool HasRightToInsertRessourceAppointments => CheckRight(UserRightType.KalenderRessourcentermineAnlegen) || CheckRight(UserRightType.CreateAll);
@@ -223,6 +223,11 @@ namespace BeWoPlanerMobil.Models
public bool HasRightToViewCustomerDocuments => CheckForAtLeastOneRight(new[] { UserRightType.ViewAll, UserRightType.DokumenteKlienten }); public bool HasRightToViewCustomerDocuments => CheckForAtLeastOneRight(new[] { UserRightType.ViewAll, UserRightType.DokumenteKlienten });
public bool HasRightToViewOwnEmployee => CheckForAtLeastOneRight(new[] { UserRightType.ViewAll, UserRightType.Employee_AllowViewOwnEmployees }) &&
CheckForAtLeastOneRight(new[] { UserRightType.EditAll, UserRightType.Employee_AllowEditOwnEmployees });
//public string UserMessage { get; set; } //public string UserMessage { get; set; }
public XtraReport Report { get; set; } public XtraReport Report { get; set; }
@@ -260,7 +265,9 @@ namespace BeWoPlanerMobil.Models
public List<CompactPersonDC> Persons { get; set; } = new List<CompactPersonDC>(); public List<CompactPersonDC> Persons { get; set; } = new List<CompactPersonDC>();
public Dictionary<string, bool> Collapsibles2IsShown { get => SessionModel.Collapsibles2IsShown; public Dictionary<string, bool> Collapsibles2IsShown
{
get => SessionModel.Collapsibles2IsShown;
set => SessionModel.Collapsibles2IsShown = value; set => SessionModel.Collapsibles2IsShown = value;
} }

View File

@@ -11,23 +11,29 @@ using DevExpress.XtraReports.UI;
namespace BeWoPlanerMobil.Models namespace BeWoPlanerMobil.Models
{ {
public class CustomerModel : AbstractModel, ISignable public class CustomerModel : AbstractModel, ISignable, IAbsenceTimeModel
{ {
public string HtmlPrefix => "customer";
public IAbsenceTime AbsenceTimeObject
{
get => SelectedCustomer;
set => SelectedCustomer = (CustomerDC) value;
}
public CustomerModel() public CustomerModel()
{ {
SessionModel = new CustomerSessionModel(); SessionModel = new CustomerSessionModel();
} }
public CustomerSessionModel CustomerSessionModel public CustomerSessionModel CustomerSessionModel => SessionModel as CustomerSessionModel;
{
get
{
return SessionModel as CustomerSessionModel;
}
}
[Display(Name = "Klient")] [Display(Name = "Klient")]
public long? SelectedCustomerOid { get { return CustomerSessionModel.SelectedCustomerOid; } set { CustomerSessionModel.SelectedCustomerOid = value; } } public long? SelectedCustomerOid
{
get => CustomerSessionModel.SelectedAbsenceTimeObjectOid;
set => CustomerSessionModel.SelectedAbsenceTimeObjectOid = value;
}
public CustomerDC SelectedCustomer { get; set; } public CustomerDC SelectedCustomer { get; set; }
@@ -47,7 +53,11 @@ namespace BeWoPlanerMobil.Models
public JsonCustomer SelectedJsonCustomer => SelectedCustomer != null ? new JsonCustomer(SelectedCustomer, FolderTree, ICD10Diagnosen) : null; public JsonCustomer SelectedJsonCustomer => SelectedCustomer != null ? new JsonCustomer(SelectedCustomer, FolderTree, ICD10Diagnosen) : null;
[Display(Name = "Filter")] [Display(Name = "Filter")]
public CustomerFilterEnum SelectedCustomerFilter { get { return CustomerSessionModel.SelectedCustomerFilter; } set { CustomerSessionModel.SelectedCustomerFilter = value; } } public CustomerFilterEnum SelectedCustomerFilter
{
get => CustomerSessionModel.SelectedCustomerFilter;
set => CustomerSessionModel.SelectedCustomerFilter = value;
}
public List<SelectListItem> CustomerFilter public List<SelectListItem> CustomerFilter
{ {
@@ -93,7 +103,11 @@ namespace BeWoPlanerMobil.Models
public List<CustomerReportType> ReportTypes { get; set; } public List<CustomerReportType> ReportTypes { get; set; }
[Display(Name = "Bericht")] [Display(Name = "Bericht")]
public CustomerReportType SelectedReportType { get { return CustomerSessionModel.SelectedReportType; } set { CustomerSessionModel.SelectedReportType = value; } } public CustomerReportType SelectedReportType
{
get => CustomerSessionModel.SelectedReportType;
set => CustomerSessionModel.SelectedReportType = value;
}
public List<SelectListItem> ReportTypeItems public List<SelectListItem> ReportTypeItems
{ {
@@ -117,7 +131,11 @@ namespace BeWoPlanerMobil.Models
public List<BargeldkassenDC> Bargeldkassen { get; set; } = new List<BargeldkassenDC>(); public List<BargeldkassenDC> Bargeldkassen { get; set; } = new List<BargeldkassenDC>();
[Display(Name = "Kategorie")] [Display(Name = "Kategorie")]
public long? SelectedAbsenceReasonOid { get { return CustomerSessionModel.SelectedAbsenceReasonOid; } set { CustomerSessionModel.SelectedAbsenceReasonOid = value; } } public long? SelectedAbsenceReasonOid
{
get => CustomerSessionModel.SelectedAbsenceReasonOid;
set => CustomerSessionModel.SelectedAbsenceReasonOid = value;
}
public List<AbsenceReasonDC> AllAbsenceReasons { get; set; } public List<AbsenceReasonDC> AllAbsenceReasons { get; set; }
@@ -145,7 +163,11 @@ namespace BeWoPlanerMobil.Models
} }
} }
public long? SelectedAbsenceTimeOid { get { return CustomerSessionModel.SelectedAbsenceTimeOid; } set { CustomerSessionModel.SelectedAbsenceTimeOid = value; } } public long? SelectedAbsenceTimeOid
{
get => CustomerSessionModel.SelectedAbsenceTimeOid;
set => CustomerSessionModel.SelectedAbsenceTimeOid = value;
}
public AbsenceTimeDC SelectedAbsenceTime { get; set; } public AbsenceTimeDC SelectedAbsenceTime { get; set; }
//{ //{
@@ -157,19 +179,28 @@ namespace BeWoPlanerMobil.Models
// } // }
//} //}
public long? SelectedBargeldkasseOid { get { return CustomerSessionModel.SelectedBargeldkasseOid; } set { CustomerSessionModel.SelectedBargeldkasseOid = value; } } public long? SelectedBargeldkasseOid
{
get => CustomerSessionModel.SelectedBargeldkasseOid;
set => CustomerSessionModel.SelectedBargeldkasseOid = value;
}
public BargeldkassenDC SelectedBargeldkasse { get; set; } public BargeldkassenDC SelectedBargeldkasse { get; set; }
[Display(Name="Auszahlunsintervall")] [Display(Name = "Auszahlunsintervall")]
public int SelectedAuszahlungsintervall { get { return CustomerSessionModel.SelectedAuszahlungsintervall; } set { CustomerSessionModel.SelectedAuszahlungsintervall = value; } } public int SelectedAuszahlungsintervall
public List<SelectListItem> Auszahlungsintervalle => {
get => CustomerSessionModel.SelectedAuszahlungsintervall;
set => CustomerSessionModel.SelectedAuszahlungsintervall = value;
}
public List<SelectListItem> Auszahlungsintervalle =>
new List<SelectListItem> new List<SelectListItem>
{ {
new SelectListItem{Value = ((int) Auszahlungsintervall.Kein).ToString(), Text = "Kein"}, new SelectListItem { Value = ((int) Auszahlungsintervall.Kein).ToString(), Text = "Kein" },
new SelectListItem{Value = ((int) Auszahlungsintervall.Monatlich).ToString(), Text = "Monatlich"}, new SelectListItem { Value = ((int) Auszahlungsintervall.Monatlich).ToString(), Text = "Monatlich" },
new SelectListItem{Value = ((int) Auszahlungsintervall.Woechentlich).ToString(), Text = "Wöchentlich"}, new SelectListItem { Value = ((int) Auszahlungsintervall.Woechentlich).ToString(), Text = "Wöchentlich" },
new SelectListItem{Value = ((int) Auszahlungsintervall.Taeglich).ToString(), Text = "Täglich"}, new SelectListItem { Value = ((int) Auszahlungsintervall.Taeglich).ToString(), Text = "Täglich" }
}; };
public XtraReport BargeldkassenReportObject { get; set; } public XtraReport BargeldkassenReportObject { get; set; }
@@ -177,17 +208,26 @@ namespace BeWoPlanerMobil.Models
public XtraReport ZahlungsbelegsReportObject { get; set; } public XtraReport ZahlungsbelegsReportObject { get; set; }
public long? SelectedBargeldtransaktionOid { get { return CustomerSessionModel.SelectedBargeldtransaktionOid; } set { CustomerSessionModel.SelectedBargeldtransaktionOid = value; } } public long? SelectedBargeldtransaktionOid
{
get => CustomerSessionModel.SelectedBargeldtransaktionOid;
set => CustomerSessionModel.SelectedBargeldtransaktionOid = value;
}
public BargeldtransaktionDC SelectedBargeldtransaktion { get; set; } public BargeldtransaktionDC SelectedBargeldtransaktion { get; set; }
[Display(Name = "Art")] [Display(Name = "Art")]
public int SelectedTransaktionsart { get { return CustomerSessionModel.SelectedTransaktionsart; } set { CustomerSessionModel.SelectedTransaktionsart = value; } } public int SelectedTransaktionsart
{
get => CustomerSessionModel.SelectedTransaktionsart;
set => CustomerSessionModel.SelectedTransaktionsart = value;
}
public List<SelectListItem> Transaktionsarten => public List<SelectListItem> Transaktionsarten =>
new List<SelectListItem> new List<SelectListItem>
{ {
new SelectListItem{Value=((int) Zahlungstyp.Einzahlung).ToString(), Text = "Einzahlung"}, new SelectListItem { Value = ((int) Zahlungstyp.Einzahlung).ToString(), Text = "Einzahlung" },
new SelectListItem{Value=((int) Zahlungstyp.Auszahlung).ToString(), Text = "Auszahlung"} new SelectListItem { Value = ((int) Zahlungstyp.Auszahlung).ToString(), Text = "Auszahlung" }
}; };
public List<BargeldtransaktionshistoryDC> BargeldtransaktionshistoryEntries { get; set; } = new List<BargeldtransaktionshistoryDC>(); public List<BargeldtransaktionshistoryDC> BargeldtransaktionshistoryEntries { get; set; } = new List<BargeldtransaktionshistoryDC>();

View File

@@ -1,23 +1,13 @@
using System; using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web.Mvc;
using BeWo.View.Navigation.Filter; using BeWo.View.Navigation.Filter;
using BeWoPlanerMobil.Controllers; using BeWoPlanerMobil.Controllers;
using BeWoPlanerMobil.Service;
using BeWoPlanerMobil.Util;
using BS.Shared;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using DevExpress.XtraReports.UI;
namespace BeWoPlanerMobil.Models namespace BeWoPlanerMobil.Models
{ {
[Serializable] [Serializable]
public class CustomerSessionModel : BaseSessionModel public class CustomerSessionModel : BaseSessionModel, IAbsenceTimeSessionModel
{ {
public long? SelectedCustomerOid { get; set; } public long? SelectedAbsenceTimeObjectOid { get; set; }
public CustomerFilterEnum SelectedCustomerFilter { get; set; } public CustomerFilterEnum SelectedCustomerFilter { get; set; }
@@ -39,7 +29,7 @@ namespace BeWoPlanerMobil.Models
{ {
base.ResetValues(); base.ResetValues();
SelectedCustomerOid = null; SelectedAbsenceTimeObjectOid = null;
//SelectedCustomerFilter = CustomerFilterEnum.All; //SelectedCustomerFilter = CustomerFilterEnum.All;
//SelectedReportType = CustomerReportType.Medikamentenliste; //SelectedReportType = CustomerReportType.Medikamentenliste;
SelectedAbsenceReasonOid = null; SelectedAbsenceReasonOid = null;

View File

@@ -0,0 +1,75 @@
using BS.Shared.DataContracts;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
namespace BeWoPlanerMobil.Models
{
public class EmployeeModel : AbstractModel, IAbsenceTimeModel
{
public string HtmlPrefix => "employee";
public EmployeeSessionModel EmployeeSessionModel => SessionModel as EmployeeSessionModel;
public EmployeeDC SelectedEmployee { get; set; }
public IAbsenceTime AbsenceTimeObject
{
get => SelectedEmployee;
set => SelectedEmployee = (EmployeeDC) value;
}
public AbsenceTimeDC SelectedAbsenceTime { get; set; }
[Display(Name = "Mitarbeiter")]
public long? SelectedEmployeeOid
{
get => EmployeeSessionModel.SelectedAbsenceTimeObjectOid;
set => EmployeeSessionModel.SelectedAbsenceTimeObjectOid = value;
}
public EmployeeModel()
{
SessionModel = new EmployeeSessionModel();
}
public List<AbsenceReasonDC> AllAbsenceReasons { get; set; }
public List<SelectListItem> AbsenceReasonItems
{
get
{
var result = new List<SelectListItem> { new SelectListItem { Value = "-1", Text = string.Empty } };
foreach(var absenceReason in AllAbsenceReasons)
{
if(absenceReason.AbsenceReasonOid is null)
{
continue;
}
result.Add(new SelectListItem
{
Value = absenceReason.AbsenceReasonOid.Value.ToString(),
Text = absenceReason.Description
});
}
return result;
}
}
[Display(Name = "Kategorie")]
public long? SelectedAbsenceReasonOid
{
get => EmployeeSessionModel.SelectedAbsenceReasonOid;
set => EmployeeSessionModel.SelectedAbsenceReasonOid = value;
}
public long? SelectedAbsenceTimeOid
{
get => EmployeeSessionModel.SelectedAbsenceTimeOid;
set => EmployeeSessionModel.SelectedAbsenceTimeOid = value;
}
}
}

View File

@@ -0,0 +1,21 @@
using System;
namespace BeWoPlanerMobil.Models
{
[Serializable]
public class EmployeeSessionModel : BaseSessionModel, IAbsenceTimeSessionModel
{
public long? SelectedAbsenceTimeObjectOid { get; set; }
public long? SelectedAbsenceReasonOid { get; set; }
public long? SelectedAbsenceTimeOid { get; set; }
public override void ResetValues()
{
base.ResetValues();
SelectedAbsenceTimeObjectOid = null;
SelectedAbsenceReasonOid = null;
SelectedAbsenceTimeOid = null;
}
}
}

View File

@@ -0,0 +1,17 @@
using BS.Shared.DataContracts;
using System.Collections.Generic;
using System.Web.Mvc;
namespace BeWoPlanerMobil.Models
{
public interface IAbsenceTimeModel
{
string HtmlPrefix { get; }
long? SelectedAbsenceTimeOid { get; set; }
long? SelectedAbsenceReasonOid { get; set; }
AbsenceTimeDC SelectedAbsenceTime { get; set; }
IAbsenceTime AbsenceTimeObject { get; set; }
Dictionary<string, bool> Collapsibles2IsShown { get; set; }
List<SelectListItem> AbsenceReasonItems { get; }
}
}

View File

@@ -0,0 +1,7 @@
namespace BeWoPlanerMobil.Models
{
internal interface IAbsenceTimeSessionModel
{
long? SelectedAbsenceTimeObjectOid { get; set; }
}
}

View File

@@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
using BS.Shared.DataContracts;
namespace BeWoPlanerMobil.Models
{
public class PersonModel : AbstractModel
{
public PersonModel()
{
SessionModel = new PersonSessionModel();
}
public PersonSessionModel PersonSessionModel => SessionModel as PersonSessionModel;
[Display(Name = "Person")]
public long? SelectedPersonOid
{
get => PersonSessionModel.SelectedPersonOid;
set => PersonSessionModel.SelectedPersonOid = value;
}
public PersonDC SelectedPerson { get; set; }
}
}

View File

@@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace BeWoPlanerMobil.Models
{
[Serializable]
public class PersonSessionModel : BaseSessionModel
{
public long? SelectedPersonOid { get; set; }
public override void ResetValues()
{
base.ResetValues();
SelectedPersonOid = null;
}
}
}

View File

@@ -1,7 +1,4 @@
using System.Web.Mvc; namespace BeWoPlanerMobil.Util
using BS.Shared;
namespace BeWoPlanerMobil.Util
{ {
internal interface ISignable internal interface ISignable
{ {

View File

@@ -496,7 +496,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="col-sm-12 col-md-6 col-lg-12 mt-2 px-1"> <div class="col-sm-12 col-md-6 col-lg-12 mt-2 px-1">
<div class="card w-100 h-100"> <div class="card w-100 h-100">
<div class="card-header"> <div class="card-header">
@@ -803,32 +803,32 @@
@* ----- Dokumente ----- *@ @* ----- Dokumente ----- *@
if(Model.HasRightToViewCustomerDocuments) if(Model.HasRightToViewCustomerDocuments)
{ {
<div class="col-12"> <div class="col-12">
<div class="card w-100 h-100 my-1"> <div class="card w-100 h-100 my-1">
<div class="card-header" onclick="cardHeaderClick2(this)"> <div class="card-header" onclick="cardHeaderClick2(this)">
<div class="d-inline-flex"> <div class="d-inline-flex">
<i class="fas fa-chevron-down h-100 text-bewo-customer-card-header"></i> <i class="fas fa-chevron-down h-100 text-bewo-customer-card-header"></i>
</div> </div>
<div class="d-inline d-inline-flex text-bewo-customer-card-header h-100"> <div class="d-inline d-inline-flex text-bewo-customer-card-header h-100">
<button type="button" class="btn btn-link text-bewo-customer-card-header" style="font-size: 20px;"> <button type="button" class="btn btn-link text-bewo-customer-card-header" style="font-size: 20px;">
Dokumente Dokumente
</button> </button>
</div> </div>
</div> </div>
<div class="collapse @Html.GetCollapsibleClass(Model.Collapsibles2IsShown, "customer-documents-collapsible")" id="customer-documents-collapsible"> <div class="collapse @Html.GetCollapsibleClass(Model.Collapsibles2IsShown, "customer-documents-collapsible")" id="customer-documents-collapsible">
<div class="card-body"> <div class="card-body">
<div class="container-fluid px-0" id="customer-document-container"> <div class="container-fluid px-0" id="customer-document-container">
@Html.Partial("DocumentPartial", Model) @Html.Partial("DocumentPartial", Model)
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
} }
@* ----- Medikamentenliste ----- *@ @* ----- Medikamentenliste ----- *@
if (Model.IsAllowedToSeeMedikamentenliste && Model.SelectedCustomer.Medikamentenverordnungslisten.Any()) if(Model.IsAllowedToSeeMedikamentenliste && Model.SelectedCustomer.Medikamentenverordnungslisten.Any())
{ {
<div class="col-12"> <div class="col-12">
<div class="card w-100 h-100 my-1"> <div class="card w-100 h-100 my-1">
<div class="card-header" onclick="cardHeaderClick2(this)"> <div class="card-header" onclick="cardHeaderClick2(this)">
@@ -1028,13 +1028,13 @@
</div> </div>
</div> </div>
<div class="collapse @Html.GetCollapsibleClass(Model.Collapsibles2IsShown, "customer-abwesenheiten-collapsible")" id="customer-abwesenheiten-collapsible"> <div class="collapse @Html.GetCollapsibleClass(Model.Collapsibles2IsShown, "customer-abwesenheiten-collapsible")" id="customer-abwesenheiten-collapsible">
<div class="card-body"> <div class="card-body p-2">
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#customer-absence-times-form-popup" onclick="calcAbsenceTimePrependWidth()"> <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#customer-absence-times-form-popup" onclick="calcAbsenceTimePrependWidth()">
Abwesenheit hinzufügen Abwesenheit hinzufügen
</button> </button>
<hr /> <hr class="my-2" />
<div id="absence-times-container"> <div id="absence-times-container">
@Html.Partial("CustomerAbsenceTimePartial", Model) @Html.Partial("AbsenceTimePartial", Model)
</div> </div>
</div> </div>
</div> </div>
@@ -1060,7 +1060,7 @@
</button> </button>
</div> </div>
</div> </div>
<div class="collapse @Html.GetCollapsibleClass(Model.Collapsibles2IsShown, "customer-betreuung-collapsible")", id="customer-betreuung-collapsible"> <div class="collapse @Html.GetCollapsibleClass(Model.Collapsibles2IsShown, "customer-betreuung-collapsible")" , id="customer-betreuung-collapsible">
<div class="card-body p-1"> <div class="card-body p-1">
<div id="betreuungscontainer"> <div id="betreuungscontainer">
@Html.Partial("CustomerBetreuungPartial", Model) @Html.Partial("CustomerBetreuungPartial", Model)
@@ -1085,11 +1085,11 @@
</button> </button>
</div> </div>
<div class="modal-body p-2" id="customer-absence-time-modal-body"> <div class="modal-body p-2" id="customer-absence-time-modal-body">
@Html.Partial("CustomerAbsenceTimeFormPartial", Model) @Html.Partial("AbsenceTimeFormPartial", Model)
</div> </div>
<div class="modal-footer p-2"> <div class="modal-footer p-2">
<button class="btn btn-primary" type="button" onclick="submitCustomerAbsenceTimesForm()">OK</button> <button class="btn btn-primary" type="button" onclick="submitAbsenceTimesForm()">OK</button>
<button class="btn btn-secondary" type="button" data-dismiss="modal" onclick="clearCustomerAbsenceTimesForm()">Abbrechen</button> <button class="btn btn-secondary" type="button" data-dismiss="modal" onclick="clearAbsenceTimesForm()">Abbrechen</button>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -1,233 +0,0 @@
@using BeWoPlanerMobil.Models;
@using BS.Shared.Extensions
@model CustomerModel
<script type="text/javascript">
var initialDatePrependWidth = 0;
function calcAbsenceTimePrependWidth() {
try {
setTimeout(function () {
if(initialDatePrependWidth <= 0 && $.isNumeric(getMaxWidth("customer-absence-time-prepend"))) {
initialDatePrependWidth = getMaxWidth("customer-absence-time-prepend");
}
if(initialDatePrependWidth <= 0) {
return;
}
$(".customer-absence-time-prepend").width(getMaxWidth("customer-absence-time-prepend"));
});
} catch(error) {
showErrorPopup(error);
}
}
function validateAbsenceTimeForm() {
try {
$("#form-validation-result-column").addClass("d-none");
$("#form-validation-result-container").html("");
let validationMessage = "";
const allDay = $("#customer-absence-time-allday-cb").is(":checked");
const startDateString = $("#customer-absence-time-start-date-input").val();
const endDateString = $("#customer-absence-time-end-date-input").val(); // z.B. 2025-05-20
const startTimeString = $("#customer-absence-time-start-time-input").val(); // z.B. 09:17
const endTimeString = $("#customer-absence-time-end-time-input").val();
const isInfinite = endDateString.length === 0 && endTimeString.length === 0;
const start = allDay ? new Date(startDateString) : combineDateAndTime(new Date(startDateString), startTimeString);
const end = allDay ? new Date(endDateString) : combineDateAndTime(new Date(endDateString), endTimeString);
const isStartValid = false === isNaN(start.getTime());
const isEndValid = false === isNaN(end.getTime()) || isInfinite;
if(!isStartValid || !isEndValid) {
return "Die Datumsangaben sind ungültig!";
}
const selectedOption = $("#absence-reason-select option:selected");
if(!isInfinite && end.getTime() < start.getTime()) {
validationMessage = "Das Startdatum muss vor dem Enddatum liegen.";
}
if(selectedOption.val() === "-1") {
if(validationMessage.length === 0) {
validationMessage = "Die Kategorie darf nicht leer sein.";
} else {
validationMessage += "<br />Die Kategorie darf nicht leer sein.";
}
}
return validationMessage;
} catch(error) {
showErrorPopup(error);
}
}
function toggleAllDay() {
try {
const checkbox = $("#customer-absence-time-allday-cb");
const isChecked = checkbox.is(":checked");
if(isChecked === true) {
$("#customer-absence-time-start-time-input, #customer-absence-time-end-time-input").val(null);
}
$("#customer-absence-time-start-time-input, #customer-absence-time-end-time-input").prop("disabled", isChecked);
} catch(error) {
showErrorPopup(error);
}
}
function submitCustomerAbsenceTimesForm() {
try {
const validationMessage = validateAbsenceTimeForm();
if(validationMessage !== undefined && validationMessage !== null && validationMessage.length > 0) {
$("#form-validation-result-row").removeClass("d-none");
$("#form-validation-result-container").html(validationMessage);
return;
}
showSpinner();
$("#create-absence-time-form").submit();
$("#customer-absence-times-form-popup").modal("hide");
} catch(error) {
showErrorPopup(error);
}
}
function clearCustomerAbsenceTimesForm() {
try {
$("#customer-absence-time-notice, #customer-absence-time-start-date, #customer-absence-time-end-date, #customer-absence-time-start-time, #customer-absence-time-end-time").val("");
$.get("@Url.Action("DeselectAbsenceTime")");
//$.get("@Url.Action("DeselectAbsenceTime")").done(function() {
// $("#customer-absence-time-modal-body").load('@Url.Action("LoadAbsenceTimeToForm", "Customer")').load();
//});
} catch(error) {
showErrorPopup(error);
}
}
</script>
@using(Html.BeginForm("CreateOrUpdateAbsenceTime", "Customer", FormMethod.Post, new { id = "create-absence-time-form" }))
{
var isAllDay = Model.SelectedAbsenceTime?.Start?.IsTimeZero() ?? true;
var allDay = isAllDay ? "checked" : "";
var isDisabled = isAllDay ? "disabled" : "";
var startDate = Model.SelectedAbsenceTime?.Start?.ToString("yyyy-MM-dd");
var endDate = Model.SelectedAbsenceTime?.End?.ToString("yyyy-MM-dd");
var startTime = Model.SelectedAbsenceTime?.Start?.ToString("HH:mm");
var endTime = Model.SelectedAbsenceTime?.End?.ToString("HH:mm");
if(startTime?.Equals("00:00") ?? false)
{
startTime = string.Empty;
}
if(endTime?.Equals("00:00") ?? false)
{
endTime = string.Empty;
}
<input type="hidden" name="customer-absence-time-oid" value="@Model.SelectedAbsenceTime?.AbsenceTimeOid" />
<div class="form-row d-none" id="form-validation-result-row">
<div class="col-12">
<div class="alert alert-danger mb-0" role="alert" id="form-validation-result-container"></div>
</div>
</div>
@* Neue Datums- und Zeitinputs *@
<div class="form-row">
<div class="col-md-6 mt-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
Startdatum
</span>
</div>
<input type="date" value="@startDate" class="form-control" id="customer-absence-time-start-date-input" name="customer-absence-time-start-date" />
</div>
</div>
<div class="col-md-6 mt-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
Enddatum
</span>
</div>
<input type="date" value="@endDate" class="form-control" id="customer-absence-time-end-date-input" name="customer-absence-time-end-date" />
</div>
</div>
</div>
<div class="form-row">
<div class="col-md-6 mt-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
Von
</span>
</div>
<input type="time" class="form-control" id="customer-absence-time-start-time-input" name="customer-absence-time-start-time" @isDisabled value="@startTime" />
</div>
</div>
<div class="col-md-6 mt-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
Bis
</span>
</div>
<input type="time" class="form-control" id="customer-absence-time-end-time-input" name="customer-absence-time-end-time" @isDisabled value="@endTime" />
</div>
</div>
</div>
@* /Neue Datums- und Zeitinputs *@
<div class="form-row">
<div class="col-md py-1">
<div class="custom-control custom-checkbox custom-control-inline">
<input type="checkbox" class="custom-control-input" name="customer-absence-time-allday-cb" id="customer-absence-time-allday-cb" onclick="toggleAllDay()" @allDay />
<label class="custom-control-label" for="customer-absence-time-allday-cb">ganztägig</label>
</div>
</div>
</div>
<div class="form-row">
<div class="col-md">
<div class="form-group mb-2 mt-0">
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text customer-absence-time-prepend">
Kategorie
</div>
</div>
@Html.DropDownListFor(m => m.SelectedAbsenceReasonOid, Model.AbsenceReasonItems, new { @class = "custom-select", Id = "absence-reason-select", Name = "customer-absence-time-category" })
</div>
</div>
</div>
</div>
<div class="form-row">
<div class="col-md">
<div class="form-group mb-1">
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text customer-absence-time-prepend">
Erläuterung
</div>
</div>
<textarea class="form-control" autocomplete="on" id="customer-absence-time-notice" name="customer-absence-time-notice" maxlength="1024">@(Model.SelectedAbsenceTime?.Notice ?? string.Empty)</textarea>
</div>
</div>
</div>
</div>
}

View File

@@ -0,0 +1,81 @@
@using BeWoPlanerMobil.Util
@model BeWoPlanerMobil.Models.EmployeeModel
@{
ViewBag.Title = "Mitarbeiter";
var selectedEmployeeName = Model.SelectedEmployee.FirstName + " " + Model.SelectedEmployee.LastName;
}
<script type="text/javascript">
$(document).ready(function() {
$(".collapse").on("shown.bs.collapse", function () {
window.saveCollapsibleState($(this).attr("id"), "@Url.Action("SaveCollapsibleStatus")");
});
$(".collapse").on("hidden.bs.collapse", function() {
window.saveCollapsibleState($(this).attr("id"), "@Url.Action("SaveCollapsibleStatus")");
});
});
</script>
<div class="container-fluid mt-1 px-0 lg-max-width">
<div class="col-12">
<div class="card">
<div class="card-header">
@selectedEmployeeName
</div>
<div class="card-body p-2">
@if(Model.HasRightToViewOwnEmployee)
{
<div class="card w-100 h-100 my-1">
<div class="card-header" onclick="cardHeaderClick2(this)">
<div class="d-inline-flex">
<i class="fas fa-chevron-down h-100 text-bewo-employee-card-header"></i>
</div>
<div class="d-inline d-inline-flex text-bewo-employee-card-header h-100">
<button type="button" class="btn btn-link text-bewo-employee-card-header" style="font-size: 20px;">
Abwesenheiten
</button>
</div>
</div>
<div class="collapse @Html.GetCollapsibleClass(Model.Collapsibles2IsShown, "employee-abwesenheiten-collapsible")" id="employee-abwesenheiten-collapsible">
<div class="card-body p-2">
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#employee-absence-times-form-popup" onclick="calcAbsenceTimePrependWidth()">
Abwesenheit hinzufügen
</button>
<hr class="my-2"/>
<div id="absence-times-container">
@Html.Partial("AbsenceTimePartial", Model)
</div>
</div>
</div>
</div>
}
</div>
</div>
</div>
</div>
@if(Model.HasRightToViewOwnEmployee)
{
<div class="modal" tabindex="-1" role="dialog" id="employee-absence-times-form-popup">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title font-weight-bold">Abwesenheit hinzufügen</h5>
<button class="close" type="button" data-dismiss="modal">
<span>&times;</span>
</button>
</div>
<div class="modal-body p-2" id="employee-absence-time-modal-body">
@Html.Partial("AbsenceTimeFormPartial", Model)
</div>
<div class="modal-footer p-2">
<button class="btn btn-primary" type="button" onclick="submitAbsenceTimesForm()">OK</button>
<button class="btn btn-secondary" type="button" data-dismiss="modal" onclick="clearAbsenceTimesForm()">Abbrechen</button>
</div>
</div>
</div>
</div>
}

View File

@@ -0,0 +1 @@
@model BeWoPlanerMobil.Models.PersonModel

View File

@@ -0,0 +1,237 @@
@using BeWoPlanerMobil.Models;
@using BS.Shared.Extensions
@model IAbsenceTimeModel
@{
var controllerName = Model is EmployeeModel ? "Employee" : "Customer";
var prefix = Model.HtmlPrefix;
}
<script type="text/javascript">
var initialDatePrependWidth = 0;
function calcAbsenceTimePrependWidth() {
try {
setTimeout(function () {
if(initialDatePrependWidth <= 0 && $.isNumeric(getMaxWidth(`absence-time-prepend`))) {
initialDatePrependWidth = getMaxWidth(`absence-time-prepend`);
}
if(initialDatePrependWidth <= 0) {
return;
}
$(`.absence-time-prepend`).width(getMaxWidth(`absence-time-prepend`));
});
} catch(error) {
showErrorPopup(error);
}
}
function validateAbsenceTimeForm() {
try {
$("#form-validation-result-column").addClass("d-none");
$("#form-validation-result-container").html("");
let validationMessage = "";
const allDay = $(`#@Model.HtmlPrefix-absence-time-allday-cb`).is(":checked");
const startDateString = $(`#@Model.HtmlPrefix-absence-time-start-date-input`).val();
const endDateString = $(`#@Model.HtmlPrefix-absence-time-end-date-input`).val(); // z.B. 2025-05-20
const startTimeString = $(`#@Model.HtmlPrefix-absence-time-start-time-input`).val(); // z.B. 09:17
const endTimeString = $(`#@Model.HtmlPrefix-absence-time-end-time-input`).val();
const isInfinite = endDateString.length === 0 && endTimeString.length === 0;
const start = allDay ? new Date(startDateString) : combineDateAndTime(new Date(startDateString), startTimeString);
const end = allDay ? new Date(endDateString) : combineDateAndTime(new Date(endDateString), endTimeString);
const isStartValid = false === isNaN(start.getTime());
const isEndValid = false === isNaN(end.getTime()) || isInfinite;
if(!isStartValid || !isEndValid) {
return "Die Datumsangaben sind ungültig!";
}
const selectedOption = $("#absence-reason-select option:selected");
if(!isInfinite && end.getTime() < start.getTime()) {
validationMessage = "Das Startdatum muss vor dem Enddatum liegen.";
}
if(selectedOption.val() === "-1") {
if(validationMessage.length === 0) {
validationMessage = "Die Kategorie darf nicht leer sein.";
} else {
validationMessage += "<br />Die Kategorie darf nicht leer sein.";
}
}
return validationMessage;
} catch(error) {
showErrorPopup(error);
}
}
function toggleAllDay() {
try {
const checkbox = $(`#@Model.HtmlPrefix-absence-time-allday-cb`);
const isChecked = checkbox.is(":checked");
if(isChecked === true) {
$(`#@Model.HtmlPrefix-absence-time-start-time-input, #@Model.HtmlPrefix-absence-time-end-time-input`).val(null);
}
$(`#@Model.HtmlPrefix-absence-time-start-time-input, #@Model.HtmlPrefix-absence-time-end-time-input`).prop("disabled", isChecked);
} catch(error) {
showErrorPopup(error);
}
}
function submitAbsenceTimesForm() {
try {
const validationMessage = validateAbsenceTimeForm();
if(validationMessage !== undefined && validationMessage !== null && validationMessage.length > 0) {
$("#form-validation-result-row").removeClass("d-none");
$("#form-validation-result-container").html(validationMessage);
return;
}
showSpinner();
$("#create-absence-time-form").submit();
$(`#@Model.HtmlPrefix-absence-times-form-popup`).modal("hide");
} catch(error) {
showErrorPopup(error);
}
}
function clearAbsenceTimesForm() {
try {
$(`#@Model.HtmlPrefix-absence-time-notice, #@Model.HtmlPrefix-absence-time-start-date, #@Model.HtmlPrefix-absence-time-end-date, #@Model.HtmlPrefix-absence-time-start-time, #@Model.HtmlPrefix-absence-time-end-time`).val("");
$.get("@Url.Action("DeselectAbsenceTime", controllerName)");
} catch(error) {
showErrorPopup(error);
}
}
</script>
@using(Html.BeginForm("CreateOrUpdateAbsenceTime", controllerName, FormMethod.Post, new { id = "create-absence-time-form" }))
{
var isAllDay = Model.SelectedAbsenceTime?.Start?.IsTimeZero() ?? false;
var allDay = isAllDay ? "checked" : "";
var isDisabled = isAllDay ? "disabled" : "";
var startDate = Model.SelectedAbsenceTime?.Start?.ToString("yyyy-MM-dd");
var endDate = Model.SelectedAbsenceTime?.End?.ToString("yyyy-MM-dd");
var startTime = Model.SelectedAbsenceTime?.Start?.ToString("HH:mm");
var endTime = Model.SelectedAbsenceTime?.End?.ToString("HH:mm");
if(startTime?.Equals("00:00") ?? false)
{
startTime = string.Empty;
}
if(endTime?.Equals("00:00") ?? false)
{
endTime = string.Empty;
}
var absenceTimeOid = Model.SelectedAbsenceTime?.AbsenceTimeOid;
<input type="hidden" name="@prefix-absence-time-oid" value="@absenceTimeOid" />
<div class="form-row d-none" id="form-validation-result-row">
<div class="col-12">
<div class="alert alert-danger mb-0" role="alert" id="form-validation-result-container"></div>
</div>
</div>
#region Datumsangaben
<div class="form-row">
<div class="col-md-6 mt-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
Startdatum
</span>
</div>
<input type="date" value="@startDate" class="form-control" id="@prefix-absence-time-start-date-input" name="@prefix-absence-time-start-date" />
</div>
</div>
<div class="col-md-6 mt-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
Enddatum
</span>
</div>
<input type="date" value="@endDate" class="form-control" id="@prefix-absence-time-end-date-input" name="@prefix-absence-time-end-date" />
</div>
</div>
</div>
<div class="form-row">
<div class="col-md-6 mt-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
Von
</span>
</div>
<input type="time" class="form-control" id="@prefix-absence-time-start-time-input" name="@prefix-absence-time-start-time" @isDisabled value="@startTime" />
</div>
</div>
<div class="col-md-6 mt-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
Bis
</span>
</div>
<input type="time" class="form-control" id="@prefix-absence-time-end-time-input" name="@prefix-absence-time-end-time" @isDisabled value="@endTime" />
</div>
</div>
</div>
<div class="form-row">
<div class="col-md py-1">
<div class="custom-control custom-checkbox custom-control-inline">
<input type="checkbox" class="custom-control-input" name="@prefix-absence-time-allday-cb" id="@prefix-absence-time-allday-cb" onclick="toggleAllDay()" @allDay />
<label class="custom-control-label" for="@prefix-absence-time-allday-cb">Ganztäglich</label>
</div>
</div>
</div>
#endregion
<div class="form-row">
<div class="col-md">
<div class="form-group mb-2 mt-0">
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text absence-time-prepend">
Kategorie
</div>
</div>
@Html.DropDownListFor(m => m.SelectedAbsenceReasonOid, Model.AbsenceReasonItems, new { @class = "custom-select", Id = "absence-reason-select", Name = Model.HtmlPrefix + "-absence-time-category" })
</div>
</div>
</div>
</div>
<div class="form-row">
<div class="col-md">
<div class="form-group mb-1">
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text absence-time-prepend">
Erläuterung
</div>
</div>
<textarea class="form-control" autocomplete="on" id="@prefix-absence-time-notice" name="@prefix-absence-time-notice" maxlength="1024">@(Model.SelectedAbsenceTime?.Notice ?? string.Empty)</textarea>
</div>
</div>
</div>
</div>
}

View File

@@ -1,74 +1,77 @@
@using BeWoPlanerMobil.Models; @using BeWoPlanerMobil.Models
@using BeWoPlanerMobil.Util @using BeWoPlanerMobil.Util
@using BS.Shared.Extensions @using BS.Shared.Extensions
@model BeWoPlanerMobil.Models.IAbsenceTimeModel
@model CustomerModel @{
var controllerName = Model is CustomerModel ? "Customer" : "Employee";
}
<script type="text/javascript"> <script type="text/javascript">
@if(ViewData["AbsenceTimeError"] is string testMessage) @if(ViewData["AbsenceTimeError"] is string testMessage)
{ {
<text> <text>
showMessagePopupWithHtml("Fehler", "<div class='alert' role='alert'>@Html.Raw(ViewData["AbsenceTimeError"])</div>"); showMessagePopupWithHtml("Fehler", "<div class='alert' role='alert'>@Html.Raw(ViewData["AbsenceTimeError"])</div>");
</text> </text>
} }
$(window).ready(function() { $(window).ready(function() {
@if(!(Model.SelectedAbsenceTime is null)) @if(Model.SelectedAbsenceTime != null)
{ {
<text> <text>
$("#customer-absence-times-form-popup").modal("show"); $("#absence-times-form-popup").modal("show");
</text> </text>
} }
}); });
function deleteAbsenceTime(absenceTimeOid, absenceTimeSpanDescription) { function deleteAbsenceTime(absenceTimeOid, absenceTimeSpanDescription) {
try {
event.stopPropagation();
const word = absenceTimeSpanDescription.includes("Ab") ? "" : "vom ";
showMessagePopupWithCallback("Abwesenheit löschen",
`Möchten Sie wirklich die Abwesenheit ${word}${absenceTimeSpanDescription.toLowerCase()} löschen?`,
function() {
showSpinner();
$("#absence-times-container").load("@Url.Action("DeleteAbsenceTime", controllerName)", {absenceTimeOid: absenceTimeOid}, function() {
hideSpinner();
});
},
false);
} catch (error) {
showErrorPopup(error);
}
}
function selectAbsenceTime(absenceTimeOid) {
try { try {
event.stopPropagation(); event.stopPropagation();
$.get("@Url.Action("SetSelectedAbsenceTimeOid", controllerName)", {absenceTimeOid: absenceTimeOid}).done(function(result) {
var word = absenceTimeSpanDescription.includes("Ab") ? "" : "vom "; if(result !== undefined && result !== null && result.length > 1) {
showMessagePopupWithHtml("Fehler", `<div class='alert alert-danger' role='alert'>${result}</div>`);
showMessagePopupWithCallback("Abwesenheit löschen", } else if(result !== undefined && result !== null && result.length === 1) {
"Möchten Sie wirklich die Abwesenheit " + word + absenceTimeSpanDescription.toLowerCase() + " löschen?", $(`#@Model.HtmlPrefix-absence-time-modal-body`).load('@Url.Action("LoadAbsenceTimeToForm", controllerName)', function () {
function() { calcAbsenceTimePrependWidth();
showSpinner(); $(`#@Model.HtmlPrefix-absence-times-form-popup`).modal("show");
});
$("#absence-times-container").load("@Url.Action("DeleteAbsenceTime")", {absenceTimeOid: absenceTimeOid}, function() { }
hideSpinner(); });
}); } catch (error) {
}, showErrorPopup(error);
false); }
} catch (error) { }
showErrorPopup(error);
}
}
function selectAbsenceTime(absenceTimeOid) {
try {
event.stopPropagation();
$.get("@Url.Action("SetSelectedAbsenceTimeOid")", { absenceTimeOid: absenceTimeOid }).done(function(result) {
if(result !== undefined && result !== null && result.length > 1) {
showMessagePopupWithHtml("Fehler", "<div class='alert alert-danger' role='alert'>" + result + "</div>");
} else if(result !== undefined && result !== null && result.length === 1) {
$("#customer-absence-time-modal-body").load('@Url.Action("LoadAbsenceTimeToForm", "Customer")', function () {
calcAbsenceTimePrependWidth();
$("#customer-absence-times-form-popup").modal("show");
});
}
});
} catch (error) {
showErrorPopup(error);
}
}
</script> </script>
@foreach(var absenceTime in Model.SelectedCustomer.AbsenceTimes.OrderByDescending(at => at.Start)) @foreach(var absenceTime in Model.AbsenceTimeObject.AbsenceTimes.OrderByDescending(at => at.Start))
{ {
if(absenceTime.Start is null) if(absenceTime.Start is null)
{ {
continue; continue;
} }
<div class="row mb-3"> <div class="row mx-0 px-0 mb-2">
<div class="card w-100"> <div class="card w-100">
<div class="card-header" onclick="cardHeaderClick2(this)"> <div class="card-header" onclick="cardHeaderClick2(this)">
<div class="row"> <div class="row">
@@ -98,7 +101,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="collapse @Html.GetCollapsibleClass(Model.Collapsibles2IsShown, $"customer-absence-time-{absenceTime.AbsenceTimeOid}")" id="customer-absence-time-@absenceTime.AbsenceTimeOid"> <div class="collapse @Html.GetCollapsibleClass(Model.Collapsibles2IsShown, $"{Model.HtmlPrefix}-absence-time-{absenceTime.AbsenceTimeOid}")" id="customer-absence-time-@absenceTime.AbsenceTimeOid">
<div class="card-body"> <div class="card-body">
<div class="container-fluid px-0"> <div class="container-fluid px-0">
<div class="row"> <div class="row">

View File

@@ -412,7 +412,18 @@
} }
} }
@if(Model.HasRightToViewOwnEmployee)
{
using(Html.BeginForm("RedirectToEmployees", "Main", FormMethod.Post))
{
<li class="nav-item">
<button class="btn btn-link text-light no-underline" onclick="showSpinner()">
<i class="fas fa-user text-bewo-employee"></i>
Mitarbeiter
</button>
</li>
}
}
@if (Model.IsAllowedToSeeCustomers) @if (Model.IsAllowedToSeeCustomers)
{ {

View File

@@ -83,6 +83,14 @@ namespace Ruhrstern.Invoicing
return ii; return ii;
} }
public override void SetRecipientInformation(ServiceInvoice serviceInvoice, CostBearer costBearer)
{
base.SetRecipientInformation(serviceInvoice, costBearer);
if (costBearer.Organisation.Name.ToLower() == "selbstzahler")
{
serviceInvoice.InvoiceBase.InvoiceId = "BeWo";
}
}
public override IList<InvoiceItem> CreateSummaryInvoiceItems(IList<InvoiceItem> itemList, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap, Calculations calc) public override IList<InvoiceItem> CreateSummaryInvoiceItems(IList<InvoiceItem> itemList, DateTimeSpan invoicePeriod, SupportConceptApprovalPeriod scap, Calculations calc)
{ {

View File

@@ -18,7 +18,11 @@ namespace Ruhrstern
public void SetReportDataSource(ServiceInvoiceRO pRO) public void SetReportDataSource(ServiceInvoiceRO pRO)
{ {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
if (!String.IsNullOrEmpty(pRO.RecipientOrganisation) && !String.IsNullOrEmpty(pRO.RecipientOrganisation.Trim())) if (!String.IsNullOrEmpty(pRO.RecipientOrganisation) && pRO.RecipientOrganisation.ToLower() != "selbstzahler")
{
sb.AppendLine(pRO.RecipientOrganisation);
}
if (!String.IsNullOrEmpty(pRO.RecipientOrganisation) && !String.IsNullOrEmpty(pRO.RecipientOrganisation.Trim()) && pRO.RecipientOrganisation.ToLower() != "selbstzahler")
{ {
sb.AppendLine(pRO.RecipientOrganisation); sb.AppendLine(pRO.RecipientOrganisation);
} }
@@ -26,7 +30,7 @@ namespace Ruhrstern
{ {
sb.AppendLine(pRO.RecipientContactPerson); sb.AppendLine(pRO.RecipientContactPerson);
} }
if (!String.IsNullOrEmpty(pRO.RecipientDivision) && !String.IsNullOrEmpty(pRO.RecipientDivision.Trim())) if (!String.IsNullOrEmpty(pRO.RecipientDivision) && !String.IsNullOrEmpty(pRO.RecipientOrganisation) && pRO.RecipientOrganisation.ToLower() != "selbstzahler")
{ {
sb.AppendLine(pRO.RecipientDivision); sb.AppendLine(pRO.RecipientDivision);
} }

View File

@@ -0,0 +1,919 @@
using BeWo.Report.ReportObjects;
namespace Ruhrstern
{
partial class ServiceInvoiceReportBeWo
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <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);
}
/// <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(ServiceInvoiceReportBeWo));
DevExpress.XtraReports.UI.XRWatermark xrWatermark1 = new DevExpress.XtraReports.UI.XRWatermark();
this.Detail = new DevExpress.XtraReports.UI.DetailBand();
this.ReportHeader = new DevExpress.XtraReports.UI.ReportHeaderBand();
this.ruleRateFactorNull = new DevExpress.XtraReports.UI.FormattingRule();
this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand();
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
this.Page1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.lblAdresse = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel4 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel3 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel2 = new DevExpress.XtraReports.UI.XRLabel();
this.lblAnrede = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel8 = new DevExpress.XtraReports.UI.XRLabel();
this.lblAbrechnungszeitraum = new DevExpress.XtraReports.UI.XRLabel();
this.xrTable2 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow5 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell13 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow4 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow3 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow8 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow7 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrLabel15 = new DevExpress.XtraReports.UI.XRLabel();
this.xrTable4 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow10 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell9 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow14 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrLabel14 = new DevExpress.XtraReports.UI.XRLabel();
this.DetailReport = new DevExpress.XtraReports.UI.DetailReportBand();
this.Detail1 = new DevExpress.XtraReports.UI.DetailBand();
this.xrTable5 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow23 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell32 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell37 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell35 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell33 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell36 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell38 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell34 = new DevExpress.XtraReports.UI.XRTableCell();
this.DetailReport2 = new DevExpress.XtraReports.UI.DetailReportBand();
this.Detail3 = new DevExpress.XtraReports.UI.DetailBand();
this.xrTable6 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow25 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell40 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell42 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell43 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell44 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell45 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell46 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell47 = new DevExpress.XtraReports.UI.XRTableCell();
this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand();
this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
this.xrPictureBox1 = new DevExpress.XtraReports.UI.XRPictureBox();
this.xrLabel7 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel6 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel5 = new DevExpress.XtraReports.UI.XRLabel();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable6)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
//
// Detail
//
this.Detail.HeightF = 0F;
this.Detail.Name = "Detail";
this.Detail.Padding = new DevExpress.XtraPrinting.PaddingInfo(0, 0, 0, 0, 100F);
this.Detail.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
//
// ReportHeader
//
this.ReportHeader.Font = new DevExpress.Drawing.DXFont("Verdana", 10F);
this.ReportHeader.HeightF = 0F;
this.ReportHeader.Name = "ReportHeader";
this.ReportHeader.StylePriority.UseFont = false;
//
// ruleRateFactorNull
//
this.ruleRateFactorNull.Condition = "[RateFactorText2] == ?";
this.ruleRateFactorNull.Formatting.Visible = DevExpress.Utils.DefaultBoolean.False;
this.ruleRateFactorNull.Name = "ruleRateFactorNull";
//
// topMarginBand1
//
this.topMarginBand1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrPictureBox1});
this.topMarginBand1.HeightF = 157.5F;
this.topMarginBand1.Name = "topMarginBand1";
//
// bottomMarginBand1
//
this.bottomMarginBand1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel7});
this.bottomMarginBand1.HeightF = 50F;
this.bottomMarginBand1.Name = "bottomMarginBand1";
//
// Page1
//
this.Page1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel6,
this.lblAdresse,
this.xrLabel4,
this.xrLabel3,
this.xrLabel2,
this.lblAnrede,
this.xrLabel8,
this.lblAbrechnungszeitraum,
this.xrTable2});
this.Page1.Font = new DevExpress.Drawing.DXFont("Verdana", 10F);
this.Page1.HeightF = 447.8333F;
this.Page1.Name = "Page1";
this.Page1.StylePriority.UseFont = false;
//
// lblAdresse
//
this.lblAdresse.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.lblAdresse.Multiline = true;
this.lblAdresse.Name = "lblAdresse";
this.lblAdresse.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.lblAdresse.SizeF = new System.Drawing.SizeF(317F, 111.5F);
this.lblAdresse.StylePriority.UseFont = false;
this.lblAdresse.Text = "[RecipientOrganisation]\r\n[RecipientContactPerson]\r\n[RecipientDivision]\r\n[Recipien" +
"tStreet]\r\n[RecipientPostCodeAndTown]";
//
// xrLabel4
//
this.xrLabel4.BackColor = System.Drawing.Color.Transparent;
this.xrLabel4.CanShrink = true;
this.xrLabel4.Font = new DevExpress.Drawing.DXFont("Verdana", 9.75F, DevExpress.Drawing.DXFontStyle.Bold, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrLabel4.LocationFloat = new DevExpress.Utils.PointFloat(0.0001907349F, 301.6666F);
this.xrLabel4.Multiline = true;
this.xrLabel4.Name = "xrLabel4";
this.xrLabel4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel4.SizeF = new System.Drawing.SizeF(650F, 20F);
this.xrLabel4.StylePriority.UseBackColor = false;
this.xrLabel4.StylePriority.UseFont = false;
this.xrLabel4.Text = "[CustomerReferenceNumber]";
this.xrLabel4.WordWrap = false;
//
// xrLabel3
//
this.xrLabel3.BackColor = System.Drawing.Color.Transparent;
this.xrLabel3.CanShrink = true;
this.xrLabel3.Font = new DevExpress.Drawing.DXFont("Verdana", 9.75F, DevExpress.Drawing.DXFontStyle.Bold, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(0.0001907349F, 281.6666F);
this.xrLabel3.Name = "xrLabel3";
this.xrLabel3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel3.SizeF = new System.Drawing.SizeF(650F, 20F);
this.xrLabel3.StylePriority.UseBackColor = false;
this.xrLabel3.StylePriority.UseFont = false;
this.xrLabel3.Text = "Abrechnung Betreuungsleistungen für [CustomerSalutation] [CustomerName], geb. [Cu" +
"stomerBirthdate!dd.MM.yyyy]";
this.xrLabel3.WordWrap = false;
//
// xrLabel2
//
this.xrLabel2.BackColor = System.Drawing.Color.Transparent;
this.xrLabel2.CanShrink = true;
this.xrLabel2.Font = new DevExpress.Drawing.DXFont("Verdana", 9.75F, DevExpress.Drawing.DXFontStyle.Bold, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(0.0001907349F, 261.6666F);
this.xrLabel2.Name = "xrLabel2";
this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel2.SizeF = new System.Drawing.SizeF(650F, 20F);
this.xrLabel2.StylePriority.UseBackColor = false;
this.xrLabel2.StylePriority.UseFont = false;
this.xrLabel2.Text = "Rechnung Nr. [InvoiceNumber]";
this.xrLabel2.WordWrap = false;
//
// lblAnrede
//
this.lblAnrede.LocationFloat = new DevExpress.Utils.PointFloat(0F, 376.6666F);
this.lblAnrede.Name = "lblAnrede";
this.lblAnrede.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.lblAnrede.SizeF = new System.Drawing.SizeF(317F, 17F);
this.lblAnrede.StylePriority.UseFont = false;
this.lblAnrede.Text = "Sehr geehrte Damen und Herren,";
//
// xrLabel8
//
this.xrLabel8.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "InvoiceDate")});
this.xrLabel8.LocationFloat = new DevExpress.Utils.PointFloat(376F, 200.125F);
this.xrLabel8.Name = "xrLabel8";
this.xrLabel8.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel8.SizeF = new System.Drawing.SizeF(274F, 23F);
this.xrLabel8.StylePriority.UseTextAlignment = false;
this.xrLabel8.Text = "xrLabel8";
this.xrLabel8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
//
// lblAbrechnungszeitraum
//
this.lblAbrechnungszeitraum.LocationFloat = new DevExpress.Utils.PointFloat(0F, 416.2499F);
this.lblAbrechnungszeitraum.Multiline = true;
this.lblAbrechnungszeitraum.Name = "lblAbrechnungszeitraum";
this.lblAbrechnungszeitraum.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.lblAbrechnungszeitraum.SizeF = new System.Drawing.SizeF(642F, 31.58334F);
this.lblAbrechnungszeitraum.StylePriority.UseFont = false;
this.lblAbrechnungszeitraum.Text = "hiermit berechnen wir für den ... folgende erbrachte Tätigkeiten:";
//
// xrTable2
//
this.xrTable2.LocationFloat = new DevExpress.Utils.PointFloat(376F, 56.45843F);
this.xrTable2.Name = "xrTable2";
this.xrTable2.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow2,
this.xrTableRow5,
this.xrTableRow4,
this.xrTableRow3,
this.xrTableRow8,
this.xrTableRow7});
this.xrTable2.SizeF = new System.Drawing.SizeF(274F, 114F);
//
// xrTableRow2
//
this.xrTableRow2.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell4});
this.xrTableRow2.Name = "xrTableRow2";
this.xrTableRow2.Weight = 0.13245033112582783D;
//
// xrTableCell4
//
this.xrTableCell4.CanShrink = true;
this.xrTableCell4.Name = "xrTableCell4";
this.xrTableCell4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell4.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
this.xrTableCell4.StylePriority.UseFont = false;
this.xrTableCell4.StylePriority.UseTextAlignment = false;
this.xrTableCell4.Text = "Ihr(e) Ansprechpartner(in):";
this.xrTableCell4.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell4.Weight = 1D;
//
// xrTableRow5
//
this.xrTableRow5.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell13});
this.xrTableRow5.Name = "xrTableRow5";
this.xrTableRow5.Weight = 0.13245033112582783D;
//
// xrTableCell13
//
this.xrTableCell13.CanShrink = true;
this.xrTableCell13.Name = "xrTableCell13";
this.xrTableCell13.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell13.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
this.xrTableCell13.StylePriority.UseFont = false;
this.xrTableCell13.StylePriority.UseTextAlignment = false;
this.xrTableCell13.Text = "[SenderContactPerson]";
this.xrTableCell13.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell13.Weight = 1D;
//
// xrTableRow4
//
this.xrTableRow4.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell11});
this.xrTableRow4.Name = "xrTableRow4";
this.xrTableRow4.Weight = 0.13245033112582783D;
//
// xrTableCell11
//
this.xrTableCell11.CanShrink = true;
this.xrTableCell11.Name = "xrTableCell11";
this.xrTableCell11.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell11.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
this.xrTableCell11.StylePriority.UseFont = false;
this.xrTableCell11.StylePriority.UseTextAlignment = false;
this.xrTableCell11.Text = "[SenderContactPersonDivision]";
this.xrTableCell11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell11.Weight = 1D;
//
// xrTableRow3
//
this.xrTableRow3.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell8});
this.xrTableRow3.Name = "xrTableRow3";
this.xrTableRow3.Weight = 0.13245033112582783D;
//
// xrTableCell8
//
this.xrTableCell8.CanShrink = true;
this.xrTableCell8.Name = "xrTableCell8";
this.xrTableCell8.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell8.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
this.xrTableCell8.StylePriority.UseFont = false;
this.xrTableCell8.StylePriority.UseTextAlignment = false;
this.xrTableCell8.Text = "[SenderContactPersonMail]";
this.xrTableCell8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableCell8.Weight = 1D;
//
// xrTableRow8
//
this.xrTableRow8.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell5});
this.xrTableRow8.Name = "xrTableRow8";
this.xrTableRow8.Weight = 0.11258278145695365D;
//
// xrTableCell5
//
this.xrTableCell5.Name = "xrTableCell5";
this.xrTableCell5.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell5.Weight = 1D;
//
// xrTableRow7
//
this.xrTableRow7.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell3});
this.xrTableRow7.Name = "xrTableRow7";
this.xrTableRow7.StylePriority.UseTextAlignment = false;
this.xrTableRow7.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
this.xrTableRow7.Weight = 0.11258278145695365D;
//
// xrTableCell3
//
this.xrTableCell3.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "BusinessPartnerId")});
this.xrTableCell3.Multiline = true;
this.xrTableCell3.Name = "xrTableCell3";
this.xrTableCell3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell3.TextFormatString = "GP-Nr.: {0}";
this.xrTableCell3.Weight = 1D;
//
// xrLabel15
//
this.xrLabel15.Font = new DevExpress.Drawing.DXFont("Verdana", 10F);
this.xrLabel15.LocationFloat = new DevExpress.Utils.PointFloat(0F, 192.7083F);
this.xrLabel15.Name = "xrLabel15";
this.xrLabel15.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel15.SizeF = new System.Drawing.SizeF(175F, 17F);
this.xrLabel15.StylePriority.UseFont = false;
this.xrLabel15.Text = "Mit freundlichen Grüßen";
//
// xrTable4
//
this.xrTable4.Font = new DevExpress.Drawing.DXFont("Verdana", 10F);
this.xrTable4.LocationFloat = new DevExpress.Utils.PointFloat(0F, 146.875F);
this.xrTable4.Name = "xrTable4";
this.xrTable4.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow10,
this.xrTableRow14});
this.xrTable4.SizeF = new System.Drawing.SizeF(650F, 26F);
this.xrTable4.StylePriority.UseFont = false;
//
// xrTableRow10
//
this.xrTableRow10.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell9});
this.xrTableRow10.Name = "xrTableRow10";
this.xrTableRow10.Weight = 0.38095238095238093D;
//
// xrTableCell9
//
this.xrTableCell9.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Notice")});
this.xrTableCell9.Name = "xrTableCell9";
this.xrTableCell9.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell9.StylePriority.UsePadding = false;
this.xrTableCell9.Text = "xrTableCell1";
this.xrTableCell9.Weight = 3D;
//
// xrTableRow14
//
this.xrTableRow14.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell12});
this.xrTableRow14.Name = "xrTableRow14";
this.xrTableRow14.Weight = 0.23809523809523808D;
//
// xrTableCell12
//
this.xrTableCell12.Name = "xrTableCell12";
this.xrTableCell12.Weight = 3D;
//
// xrLabel14
//
this.xrLabel14.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "CreatorName")});
this.xrLabel14.Font = new DevExpress.Drawing.DXFont("Verdana", 10F);
this.xrLabel14.LocationFloat = new DevExpress.Utils.PointFloat(0F, 267.7083F);
this.xrLabel14.Name = "xrLabel14";
this.xrLabel14.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel14.SizeF = new System.Drawing.SizeF(225F, 17F);
this.xrLabel14.StylePriority.UseFont = false;
this.xrLabel14.Text = "[CreatorName]";
//
// DetailReport
//
this.DetailReport.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail1,
this.DetailReport2});
this.DetailReport.DataMember = "ServiceInvoicePeriods";
this.DetailReport.DataSource = this.bindingSource1;
this.DetailReport.Level = 0;
this.DetailReport.Name = "DetailReport";
//
// Detail1
//
this.Detail1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTable5});
this.Detail1.HeightF = 25F;
this.Detail1.Name = "Detail1";
//
// xrTable5
//
this.xrTable5.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrTable5.Name = "xrTable5";
this.xrTable5.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow23});
this.xrTable5.SizeF = new System.Drawing.SizeF(677F, 25F);
//
// xrTableRow23
//
this.xrTableRow23.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell32,
this.xrTableCell37,
this.xrTableCell35,
this.xrTableCell33,
this.xrTableCell36,
this.xrTableCell38,
this.xrTableCell34});
this.xrTableRow23.Name = "xrTableRow23";
this.xrTableRow23.Weight = 1D;
//
// xrTableCell32
//
this.xrTableCell32.BackColor = System.Drawing.Color.Gainsboro;
this.xrTableCell32.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell32.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell32.Name = "xrTableCell32";
this.xrTableCell32.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell32.StylePriority.UseBackColor = false;
this.xrTableCell32.StylePriority.UseBorderColor = false;
this.xrTableCell32.StylePriority.UseBorders = false;
this.xrTableCell32.StylePriority.UsePadding = false;
this.xrTableCell32.StylePriority.UseTextAlignment = false;
this.xrTableCell32.Text = "Zeitraum";
this.xrTableCell32.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell32.Weight = 0.62463077449375981D;
//
// xrTableCell37
//
this.xrTableCell37.BackColor = System.Drawing.Color.Gainsboro;
this.xrTableCell37.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell37.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell37.Name = "xrTableCell37";
this.xrTableCell37.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell37.StylePriority.UseBackColor = false;
this.xrTableCell37.StylePriority.UseBorderColor = false;
this.xrTableCell37.StylePriority.UseBorders = false;
this.xrTableCell37.StylePriority.UsePadding = false;
this.xrTableCell37.StylePriority.UseTextAlignment = false;
this.xrTableCell37.Text = "Leistung";
this.xrTableCell37.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell37.Weight = 0.85081236260328186D;
//
// xrTableCell35
//
this.xrTableCell35.BackColor = System.Drawing.Color.Gainsboro;
this.xrTableCell35.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell35.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell35.Name = "xrTableCell35";
this.xrTableCell35.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell35.StylePriority.UseBackColor = false;
this.xrTableCell35.StylePriority.UseBorderColor = false;
this.xrTableCell35.StylePriority.UseBorders = false;
this.xrTableCell35.StylePriority.UsePadding = false;
this.xrTableCell35.StylePriority.UseTextAlignment = false;
this.xrTableCell35.Text = "Satz";
this.xrTableCell35.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell35.Weight = 0.23245943032832414D;
//
// xrTableCell33
//
this.xrTableCell33.BackColor = System.Drawing.Color.Gainsboro;
this.xrTableCell33.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell33.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell33.Name = "xrTableCell33";
this.xrTableCell33.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell33.StylePriority.UseBackColor = false;
this.xrTableCell33.StylePriority.UseBorderColor = false;
this.xrTableCell33.StylePriority.UseBorders = false;
this.xrTableCell33.StylePriority.UsePadding = false;
this.xrTableCell33.StylePriority.UseTextAlignment = false;
this.xrTableCell33.Text = "Stunden";
this.xrTableCell33.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell33.Weight = 0.2893277257020575D;
//
// xrTableCell36
//
this.xrTableCell36.BackColor = System.Drawing.Color.Gainsboro;
this.xrTableCell36.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell36.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell36.Name = "xrTableCell36";
this.xrTableCell36.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell36.StylePriority.UseBackColor = false;
this.xrTableCell36.StylePriority.UseBorderColor = false;
this.xrTableCell36.StylePriority.UseBorders = false;
this.xrTableCell36.StylePriority.UsePadding = false;
this.xrTableCell36.StylePriority.UseTextAlignment = false;
this.xrTableCell36.Text = "Betrag";
this.xrTableCell36.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell36.Weight = 0.26310971709438763D;
//
// xrTableCell38
//
this.xrTableCell38.BackColor = System.Drawing.Color.Gainsboro;
this.xrTableCell38.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell38.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell38.Name = "xrTableCell38";
this.xrTableCell38.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell38.StylePriority.UseBackColor = false;
this.xrTableCell38.StylePriority.UseBorderColor = false;
this.xrTableCell38.StylePriority.UseBorders = false;
this.xrTableCell38.StylePriority.UsePadding = false;
this.xrTableCell38.StylePriority.UseTextAlignment = false;
this.xrTableCell38.Text = "pausch Fakt.";
this.xrTableCell38.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell38.Weight = 0.42042083402151886D;
//
// xrTableCell34
//
this.xrTableCell34.BackColor = System.Drawing.Color.Gainsboro;
this.xrTableCell34.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell34.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell34.Name = "xrTableCell34";
this.xrTableCell34.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell34.StylePriority.UseBackColor = false;
this.xrTableCell34.StylePriority.UseBorderColor = false;
this.xrTableCell34.StylePriority.UseBorders = false;
this.xrTableCell34.StylePriority.UsePadding = false;
this.xrTableCell34.StylePriority.UseTextAlignment = false;
this.xrTableCell34.Text = "Gesamt";
this.xrTableCell34.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell34.Weight = 0.31923915575667006D;
//
// DetailReport2
//
this.DetailReport2.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail3,
this.GroupFooter1});
this.DetailReport2.DataMember = "ServiceInvoicePeriods.ServiceInvoiceItems";
this.DetailReport2.DataSource = this.bindingSource1;
this.DetailReport2.Level = 0;
this.DetailReport2.Name = "DetailReport2";
this.DetailReport2.PageBreak = DevExpress.XtraReports.UI.PageBreak.AfterBand;
//
// Detail3
//
this.Detail3.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTable6});
this.Detail3.HeightF = 25F;
this.Detail3.Name = "Detail3";
//
// xrTable6
//
this.xrTable6.Font = new DevExpress.Drawing.DXFont("Verdana", 8.25F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrTable6.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrTable6.Name = "xrTable6";
this.xrTable6.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow25});
this.xrTable6.SizeF = new System.Drawing.SizeF(677F, 25F);
this.xrTable6.StylePriority.UseFont = false;
//
// xrTableRow25
//
this.xrTableRow25.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell40,
this.xrTableCell42,
this.xrTableCell43,
this.xrTableCell44,
this.xrTableCell45,
this.xrTableCell46,
this.xrTableCell47});
this.xrTableRow25.Name = "xrTableRow25";
this.xrTableRow25.Weight = 1D;
//
// xrTableCell40
//
this.xrTableCell40.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell40.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell40.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.Duration")});
this.xrTableCell40.Name = "xrTableCell40";
this.xrTableCell40.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell40.StylePriority.UseBorderColor = false;
this.xrTableCell40.StylePriority.UseBorders = false;
this.xrTableCell40.StylePriority.UsePadding = false;
this.xrTableCell40.StylePriority.UseTextAlignment = false;
this.xrTableCell40.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell40.Weight = 0.62463084211025488D;
//
// xrTableCell42
//
this.xrTableCell42.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell42.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell42.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.ServiceDescription")});
this.xrTableCell42.Name = "xrTableCell42";
this.xrTableCell42.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell42.StylePriority.UseBorderColor = false;
this.xrTableCell42.StylePriority.UseBorders = false;
this.xrTableCell42.StylePriority.UsePadding = false;
this.xrTableCell42.StylePriority.UseTextAlignment = false;
this.xrTableCell42.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell42.Weight = 0.85081229498678679D;
//
// xrTableCell43
//
this.xrTableCell43.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell43.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell43.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.HourlyRate", "{0:0.00}")});
this.xrTableCell43.Name = "xrTableCell43";
this.xrTableCell43.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell43.StylePriority.UseBorderColor = false;
this.xrTableCell43.StylePriority.UseBorders = false;
this.xrTableCell43.StylePriority.UsePadding = false;
this.xrTableCell43.StylePriority.UseTextAlignment = false;
this.xrTableCell43.Text = "xrTableCell43";
this.xrTableCell43.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell43.Weight = 0.23245943032832414D;
//
// xrTableCell44
//
this.xrTableCell44.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell44.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell44.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.Hours", "{0:0.##}")});
this.xrTableCell44.Name = "xrTableCell44";
this.xrTableCell44.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell44.StylePriority.UseBorderColor = false;
this.xrTableCell44.StylePriority.UseBorders = false;
this.xrTableCell44.StylePriority.UsePadding = false;
this.xrTableCell44.StylePriority.UseTextAlignment = false;
this.xrTableCell44.Text = "xrTableCell44";
this.xrTableCell44.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell44.Weight = 0.2893277257020575D;
//
// xrTableCell45
//
this.xrTableCell45.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell45.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell45.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.NetAmount", "{0:0.00}")});
this.xrTableCell45.Name = "xrTableCell45";
this.xrTableCell45.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell45.StylePriority.UseBorderColor = false;
this.xrTableCell45.StylePriority.UseBorders = false;
this.xrTableCell45.StylePriority.UsePadding = false;
this.xrTableCell45.StylePriority.UseTextAlignment = false;
this.xrTableCell45.Text = "xrTableCell45";
this.xrTableCell45.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell45.Weight = 0.26310971709438763D;
//
// xrTableCell46
//
this.xrTableCell46.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell46.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell46.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.RateFactor")});
this.xrTableCell46.Name = "xrTableCell46";
this.xrTableCell46.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell46.StylePriority.UseBorderColor = false;
this.xrTableCell46.StylePriority.UseBorders = false;
this.xrTableCell46.StylePriority.UsePadding = false;
this.xrTableCell46.StylePriority.UseTextAlignment = false;
this.xrTableCell46.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell46.Weight = 0.42042083402151886D;
//
// xrTableCell47
//
this.xrTableCell47.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell47.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell47.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "ServiceInvoicePeriods.ServiceInvoiceItems.GrossAmount")});
this.xrTableCell47.Name = "xrTableCell47";
this.xrTableCell47.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell47.StylePriority.UseBorderColor = false;
this.xrTableCell47.StylePriority.UseBorders = false;
this.xrTableCell47.StylePriority.UsePadding = false;
this.xrTableCell47.StylePriority.UseTextAlignment = false;
this.xrTableCell47.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell47.Weight = 0.31923915575667006D;
//
// GroupFooter1
//
this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel5,
this.xrLabel1,
this.xrTable4,
this.xrLabel14,
this.xrLabel15});
this.GroupFooter1.HeightF = 284.7083F;
this.GroupFooter1.Name = "GroupFooter1";
//
// xrLabel1
//
this.xrLabel1.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "GrossClaim", "Gesamtsumme: {0}")});
this.xrLabel1.Font = new DevExpress.Drawing.DXFont("Verdana", 9F, DevExpress.Drawing.DXFontStyle.Bold);
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(420.9999F, 0F);
this.xrLabel1.Name = "xrLabel1";
this.xrLabel1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 5, 0, 0, 100F);
this.xrLabel1.SizeF = new System.Drawing.SizeF(255.8333F, 25F);
this.xrLabel1.StylePriority.UseFont = false;
this.xrLabel1.StylePriority.UsePadding = false;
this.xrLabel1.StylePriority.UseTextAlignment = false;
this.xrLabel1.Text = "xrLabel1";
this.xrLabel1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
//
// xrPictureBox1
//
this.xrPictureBox1.ImageSource = new DevExpress.XtraPrinting.Drawing.ImageSource("img", resources.GetString("xrPictureBox1.ImageSource"));
this.xrPictureBox1.LocationFloat = new DevExpress.Utils.PointFloat(448.4886F, 0F);
this.xrPictureBox1.Name = "xrPictureBox1";
this.xrPictureBox1.SizeF = new System.Drawing.SizeF(228.5114F, 138.9036F);
this.xrPictureBox1.Sizing = DevExpress.XtraPrinting.ImageSizeMode.ZoomImage;
//
// xrLabel7
//
this.xrLabel7.Font = new DevExpress.Drawing.DXFont("Verdana", 10F);
this.xrLabel7.LocationFloat = new DevExpress.Utils.PointFloat(0.0001907349F, 9.999974F);
this.xrLabel7.Name = "xrLabel7";
this.xrLabel7.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel7.SizeF = new System.Drawing.SizeF(649.9998F, 17F);
this.xrLabel7.StylePriority.UseFont = false;
this.xrLabel7.StylePriority.UseTextAlignment = false;
this.xrLabel7.Text = "IBAN DE62 3702 0500 0001 5580 00 ";
this.xrLabel7.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter;
//
// xrLabel6
//
this.xrLabel6.LocationFloat = new DevExpress.Utils.PointFloat(376F, 5.45845F);
this.xrLabel6.Multiline = true;
this.xrLabel6.Name = "xrLabel6";
this.xrLabel6.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel6.ProcessNullValues = DevExpress.XtraReports.UI.ValueSuppressType.SuppressAndShrink;
this.xrLabel6.SizeF = new System.Drawing.SizeF(274F, 50.99996F);
this.xrLabel6.StylePriority.UseFont = false;
this.xrLabel6.StylePriority.UseTextAlignment = false;
this.xrLabel6.Text = "BEWO RUHRSTERN GmbH\r\nZiegelstr. 12, 45139 Essen";
this.xrLabel6.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight;
//
// xrLabel5
//
this.xrLabel5.BackColor = System.Drawing.Color.Transparent;
this.xrLabel5.CanShrink = true;
this.xrLabel5.Font = new DevExpress.Drawing.DXFont("verdana", 10F);
this.xrLabel5.LocationFloat = new DevExpress.Utils.PointFloat(0F, 69.79166F);
this.xrLabel5.Multiline = true;
this.xrLabel5.Name = "xrLabel5";
this.xrLabel5.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel5.SizeF = new System.Drawing.SizeF(650.7152F, 63.75001F);
this.xrLabel5.StylePriority.UseBackColor = false;
this.xrLabel5.StylePriority.UseFont = false;
this.xrLabel5.Text = resources.GetString("xrLabel5.Text");
this.xrLabel5.WordWrap = false;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServiceInvoiceRO);
//
// ServiceInvoiceReportBeWo
//
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail,
this.ReportHeader,
this.topMarginBand1,
this.bottomMarginBand1,
this.Page1,
this.DetailReport});
this.DataSource = this.bindingSource1;
this.ExportOptions.PrintPreview.DefaultFileName = "Spitzabrechnung";
this.Font = new DevExpress.Drawing.DXFont("Verdana", 10F);
this.FormattingRuleSheet.AddRange(new DevExpress.XtraReports.UI.FormattingRule[] {
this.ruleRateFactorNull});
this.Margins = new DevExpress.Drawing.DXMargins(75F, 75F, 157.5F, 50F);
this.PageHeight = 1169;
this.PageWidth = 827;
this.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4;
this.Version = "23.2";
xrWatermark1.Id = "Watermark1";
this.Watermarks.Add(xrWatermark1);
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable6)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
}
private DevExpress.XtraReports.UI.DetailBand Detail;
private System.Windows.Forms.BindingSource bindingSource1;
private DevExpress.XtraReports.UI.ReportHeaderBand ReportHeader;
private DevExpress.XtraReports.UI.FormattingRule ruleRateFactorNull;
private DevExpress.XtraReports.UI.TopMarginBand topMarginBand1;
private DevExpress.XtraReports.UI.BottomMarginBand bottomMarginBand1;
private DevExpress.XtraReports.UI.GroupHeaderBand Page1;
private DevExpress.XtraReports.UI.XRLabel xrLabel4;
private DevExpress.XtraReports.UI.XRLabel xrLabel3;
private DevExpress.XtraReports.UI.XRLabel xrLabel2;
private DevExpress.XtraReports.UI.XRLabel lblAnrede;
private DevExpress.XtraReports.UI.XRLabel xrLabel8;
private DevExpress.XtraReports.UI.XRLabel lblAbrechnungszeitraum;
private DevExpress.XtraReports.UI.XRTable xrTable2;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow2;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell4;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow5;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell13;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow4;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell11;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow3;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell8;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow8;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell5;
private DevExpress.XtraReports.UI.XRLabel xrLabel15;
private DevExpress.XtraReports.UI.XRTable xrTable4;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow10;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell9;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow14;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell12;
private DevExpress.XtraReports.UI.XRLabel xrLabel14;
private DevExpress.XtraReports.UI.DetailReportBand DetailReport;
private DevExpress.XtraReports.UI.DetailBand Detail1;
private DevExpress.XtraReports.UI.XRTable xrTable5;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow23;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell32;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell37;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell35;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell33;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell36;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell38;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell34;
private DevExpress.XtraReports.UI.DetailReportBand DetailReport2;
private DevExpress.XtraReports.UI.DetailBand Detail3;
private DevExpress.XtraReports.UI.XRTable xrTable6;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow25;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell40;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell42;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell43;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell44;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell45;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell46;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell47;
private DevExpress.XtraReports.UI.XRLabel lblAdresse;
private DevExpress.XtraReports.UI.GroupFooterBand GroupFooter1;
private DevExpress.XtraReports.UI.XRLabel xrLabel1;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow7;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell3;
private DevExpress.XtraReports.UI.XRPictureBox xrPictureBox1;
private DevExpress.XtraReports.UI.XRLabel xrLabel7;
private DevExpress.XtraReports.UI.XRLabel xrLabel6;
private DevExpress.XtraReports.UI.XRLabel xrLabel5;
}
}

View File

@@ -0,0 +1,103 @@
using System;
using System.Text;
using BeWo.Data.Entities;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.Extensions;
using DevExpress.XtraReports.UI;
namespace Ruhrstern
{
[IDSpecificClass(Identifier = "BeWo")]
public partial class ServiceInvoiceReportBeWo : XtraReport, IBeWoReport<ServiceInvoiceRO>
{
public ServiceInvoiceReportBeWo()
{
this.InitializeComponent();
}
public void SetReportDataSource(ServiceInvoiceRO pRO)
{
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);
}
SetzeAdresse(pRO);
SetzeAnrede(pRO);
this.bindingSource1.DataSource = pRO;
}
private void SetzeAdresse(ServiceInvoiceRO pRO)
{
StringBuilder sb = new StringBuilder();
if (!String.IsNullOrEmpty(pRO.RecipientOrganisation) && pRO.RecipientOrganisation.ToLower() != "selbstzahler")
{
sb.AppendLine(pRO.RecipientOrganisation);
}
//if (!String.IsNullOrEmpty(pRO.RecipientAddressLine1))
//{
// sb.AppendLine(pRO.RecipientAddressLine1);
//}
if (!String.IsNullOrEmpty(pRO.RecipientContactPerson))
{
sb.AppendLine(pRO.RecipientContactPerson);
}
if (!String.IsNullOrEmpty(pRO.RecipientDivision) && !String.IsNullOrEmpty(pRO.RecipientOrganisation) && pRO.RecipientOrganisation.ToLower() != "selbstzahler")
{
sb.AppendLine(pRO.RecipientDivision);
}
if (!String.IsNullOrEmpty(pRO.RecipientPoBox))
{
sb.AppendLine(pRO.RecipientPoBox);
}
else if (!String.IsNullOrEmpty(pRO.RecipientStreet))
{
sb.AppendLine(pRO.RecipientStreet);
}
if (!String.IsNullOrEmpty(pRO.RecipientPostCodeAndTown))
{
sb.AppendLine(pRO.RecipientPostCodeAndTown);
}
lblAdresse.Text = sb.ToString();
}
private void SetzeAnrede(ServiceInvoiceRO pRO)
{
String anrede = "Sehr geehrte Damen und Herren,";
var p = GetKontaktPerson(pRO);
if (p != null)
{
if (p.Sex.HasValue && p.Sex.Value == Sex.Male)
{
anrede = "Sehr geehrter Herr " + p.LastName + ",";
}
else if (p.Sex.HasValue && p.Sex.Value == Sex.Female)
{
anrede = "Sehr geehrte Frau " + p.LastName + ",";
}
}
}
private Person GetKontaktPerson(ServiceInvoiceRO pRO)
{
if (pRO.ServiceInvoicePeriods.Count > 0)
{
var c2s = pRO.ServiceInvoicePeriods[0].CostBearer2SupportConcept;
return c2s.CostBearerContactPerson;
}
return null;
}
}
}

File diff suppressed because one or more lines are too long

View File

@@ -77,6 +77,12 @@
<Compile Include="Reporting\Quittierungsbeleg.Designer.cs"> <Compile Include="Reporting\Quittierungsbeleg.Designer.cs">
<DependentUpon>Quittierungsbeleg.cs</DependentUpon> <DependentUpon>Quittierungsbeleg.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Reporting\ServiceInvoiceReportBewo.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Reporting\ServiceInvoiceReportBewo.Designer.cs">
<DependentUpon>ServiceInvoiceReportBewo.cs</DependentUpon>
</Compile>
<Compile Include="Reporting\ServiceInvoiceReport.cs"> <Compile Include="Reporting\ServiceInvoiceReport.cs">
<SubType>Component</SubType> <SubType>Component</SubType>
</Compile> </Compile>
@@ -124,6 +130,10 @@
<DependentUpon>Quittierungsbeleg.cs</DependentUpon> <DependentUpon>Quittierungsbeleg.cs</DependentUpon>
<SubType>Designer</SubType> <SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Reporting\ServiceInvoiceReportBewo.resx">
<DependentUpon>ServiceInvoiceReportBewo.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Reporting\ServiceInvoiceReport.resx"> <EmbeddedResource Include="Reporting\ServiceInvoiceReport.resx">
<DependentUpon>ServiceInvoiceReport.cs</DependentUpon> <DependentUpon>ServiceInvoiceReport.cs</DependentUpon>
<SubType>Designer</SubType> <SubType>Designer</SubType>

View File

@@ -22,7 +22,7 @@ namespace BeWo.Service.DCEntityMapper
pDataContract.EmployeeColor = pEntity.EmployeeColor; pDataContract.EmployeeColor = pEntity.EmployeeColor;
pDataContract.RelatedCustomerOIDList = pEntity.Employee2CustomerList.Where(w => w.CustomerOid.HasValue).Select(s => s.CustomerOid.Value).ToList(); pDataContract.RelatedCustomerOIDList = pEntity.Employee2CustomerList.Where(w => w.CustomerOid.HasValue).Select(s => s.CustomerOid.Value).ToList();
return pDataContract; return pDataContract;
} }
// COMPACT EMPLOYEES ARE NOT EDITABLE // COMPACT EMPLOYEES ARE NOT EDITABLE

View File

@@ -28,7 +28,7 @@ namespace BS.Shared.DataContracts.Compact
[DataMember] public String Details2 { get; set; } [DataMember] public String Details2 { get; set; }
[DataMember] public String Details3 { get; set; } [DataMember] public String Details3 { get; set; }
[DataMember] [DataMember]
public List<long> RelatedCustomerOIDList public List<long> RelatedCustomerOIDList
{ {
get get

View File

@@ -9,7 +9,7 @@ using BS.Shared.DataContracts.Wohnhilfe;
namespace BS.Shared.DataContracts namespace BS.Shared.DataContracts
{ {
[DataContract] [DataContract]
public class CustomerDC : PersonDC public class CustomerDC : PersonDC, IAbsenceTime
{ {
[DataMember] public List<AbsenceTimeDC> AbsenceTimes { get; set; } [DataMember] public List<AbsenceTimeDC> AbsenceTimes { get; set; }
[DataMember] public List<AssessmentSheetCategoryDC> AssessmentSheetCategoryDCs { get; set; } [DataMember] public List<AssessmentSheetCategoryDC> AssessmentSheetCategoryDCs { get; set; }

View File

@@ -8,7 +8,7 @@ namespace BS.Shared.DataContracts
{ {
[DebuggerDisplay("Oid = {EmployeeOid}, Name = {LastNameFirstName}")] [DebuggerDisplay("Oid = {EmployeeOid}, Name = {LastNameFirstName}")]
[DataContract] [DataContract]
public class EmployeeDC : PersonDC, IDataContract public class EmployeeDC : PersonDC, IDataContract, IAbsenceTime
{ {
private List<ValueListEntryDC> _Focuses; private List<ValueListEntryDC> _Focuses;

View File

@@ -0,0 +1,12 @@
using System.Collections.Generic;
namespace BS.Shared.DataContracts
{
/// <summary>
/// Damit im MoK nur ein PartialView für die darstellung der Abwesenheiten benötigt wird.
/// </summary>
public interface IAbsenceTime
{
List<AbsenceTimeDC> AbsenceTimes { get; set; }
}
}

View File

@@ -187,6 +187,7 @@
<Compile Include="DataContracts\AdminService\AdminServiceSumResponseDetailDC.cs" /> <Compile Include="DataContracts\AdminService\AdminServiceSumResponseDetailDC.cs" />
<Compile Include="DataContracts\AdminService\IAdminServiceDC.cs" /> <Compile Include="DataContracts\AdminService\IAdminServiceDC.cs" />
<Compile Include="DataContracts\AdminService\AdminServiceSumReqDC.cs" /> <Compile Include="DataContracts\AdminService\AdminServiceSumReqDC.cs" />
<Compile Include="DataContracts\IAbsenceTime.cs" />
<Compile Include="DataContracts\Invoicing\GkvAbrechnung\GkvServerGetNumberRequestDC.cs" /> <Compile Include="DataContracts\Invoicing\GkvAbrechnung\GkvServerGetNumberRequestDC.cs" />
<Compile Include="DataContracts\Invoicing\GkvAbrechnung\GkvServerGetNumberResponseDC.cs" /> <Compile Include="DataContracts\Invoicing\GkvAbrechnung\GkvServerGetNumberResponseDC.cs" />
<Compile Include="DataContracts\Person2TeamDC.cs" /> <Compile Include="DataContracts\Person2TeamDC.cs" />