Merge branch 'master' into feature_rene_18_ai

This commit is contained in:
2026-06-23 11:54:25 +02:00
491 changed files with 51748 additions and 42158 deletions

1
.gitignore vendored
View File

@@ -417,3 +417,4 @@ FodyWeavers.xsd
/ReportImp/RatPlusTat/CustomBudgetnachweisAnhangRO.cs
/.claude/worktrees
/.claude
/CLAUDE.md

View File

@@ -16,7 +16,7 @@
<EnableSecurityDebugging>true</EnableSecurityDebugging>
<TargetZone>Internet</TargetZone>
<GenerateManifests>true</GenerateManifests>
<SignManifests>false</SignManifests>
<SignManifests>true</SignManifests>
<ManifestKeyFile>
</ManifestKeyFile>
<ManifestCertificateThumbprint>8E3A8E81F1C6F67A1C6D239593544EA33D8AC6A7</ManifestCertificateThumbprint>
@@ -43,12 +43,12 @@
<TargetCulture>de-DE</TargetCulture>
<ProductName>BeWoPlaner</ProductName>
<PublisherName>ownSoft GmbH</PublisherName>
<MinimumRequiredVersion>2.0.1.293</MinimumRequiredVersion>
<MinimumRequiredVersion>2.0.1.297</MinimumRequiredVersion>
<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
<WebPage>publish.htm</WebPage>
<OpenBrowserOnPublish>false</OpenBrowserOnPublish>
<TrustUrlParameters>true</TrustUrlParameters>
<ApplicationRevision>294</ApplicationRevision>
<ApplicationRevision>298</ApplicationRevision>
<ApplicationVersion>2.0.1.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<CreateDesktopShortcut>true</CreateDesktopShortcut>
@@ -222,6 +222,12 @@
<Compile Include="View\Developer\DeveloperView.xaml.cs">
<DependentUpon>DeveloperView.xaml</DependentUpon>
</Compile>
<Compile Include="View\Detail\Wohneinheit\CustomerWohneinheitenView.xaml.cs">
<DependentUpon>CustomerWohneinheitenView.xaml</DependentUpon>
</Compile>
<Compile Include="View\Detail\Wohneinheit\CustomerWohneinheitBelegungEditPopup.xaml.cs">
<DependentUpon>CustomerWohneinheitBelegungEditPopup.xaml</DependentUpon>
</Compile>
<Compile Include="View\Document\TeamFolderRightView.xaml.cs">
<DependentUpon>TeamFolderRightView.xaml</DependentUpon>
</Compile>
@@ -374,6 +380,14 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="View\Detail\Wohneinheit\CustomerWohneinheitenView.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="View\Detail\Wohneinheit\CustomerWohneinheitBelegungEditPopup.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="View\Document\TeamFolderRightView.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>

View File

@@ -57,7 +57,7 @@ namespace BeWo
public static LoginControl LoginControl;
public static MainControl MainControl;
public static string ShortVersion = "3.31";
public static string ShortVersion = "3.32";
public static string Version => BeWoAppInfo.BeWoAppVersion.ToString();
public static int RenderTier = 0;

View File

@@ -15,12 +15,12 @@ namespace BeWo
{
var baseVersion = new Version(BeWoApp.ShortVersion);
var stage = BeWoClientReleaseStage.Sandbox;
var stageVersion = new Version("5.1.4");
var stageVersion = new Version("5.1.6");
var feature = BeWoClientFeature.AI;
#if !DEBUG
//stage = BeWoClientReleaseStage.Release;
//feature = BeWoClientFeature.None;
stage = BeWoClientReleaseStage.Release;
feature = BeWoClientFeature.None;
#endif
BeWoAppVersion = new BeWoAppVersion(baseVersion, stage, stageVersion, feature);

View File

@@ -13,7 +13,7 @@ namespace BeWo.Converter
if (value is null)
return null;
var t = ((DelegateCommand)value).CanExecute(null);
//var t = ((DelegateCommand)value).CanExecute(null);
return value;
}

View File

@@ -17,7 +17,15 @@ namespace BeWo.Scheduler.Utils
public static CustomFieldStorage GetCustomFieldStorage(this Appointment appointment)
{
return appointment.CustomFields[nameof(CustomFieldStorage)] as CustomFieldStorage;
try
{
return appointment.CustomFields[nameof(CustomFieldStorage)] as CustomFieldStorage;
}
catch (Exception)
{
}
return new CustomFieldStorage();
}
public static bool CF_IsTask(this Appointment appointment)

View File

@@ -7,6 +7,7 @@ using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
@@ -419,13 +420,11 @@ namespace BeWo.Scheduler.View
private DateTime? _SelectedAppointmentStartDate;
private readonly SchedulerAppointmentDC _SelectedAppointmentFromHomePanelView;
private bool _IsComingFromHomeDragPanel;
private SchedulerAppointmentDC _SelectedAppointmentFromHomePanelView;
public NewSchedulerView(DateTime pIntervalStartDate, SchedulerAppointmentDC pAppointment)
{
_IsComingFromHomeDragPanel = true;
_SelectedAppointmentFromHomePanelView = pAppointment;
_SelectedAppointmentStartDate = pIntervalStartDate;
@@ -500,11 +499,14 @@ namespace BeWo.Scheduler.View
if(_IstErsterAufruf)
{
if(MainControl.HatNeueTermine && !_IsComingFromHomeDragPanel)
if(MainControl.HatNeueTermine && _SelectedAppointmentFromHomePanelView == null)
{
FensterOeffnen();
}
else
{
OpenAppointmentFromHomePanel();
}
_IstErsterAufruf = false;
}
});
@@ -512,7 +514,7 @@ namespace BeWo.Scheduler.View
private void InitScheduler()
{
if(_IsComingFromHomeDragPanel && _SelectedAppointmentStartDate.HasValue)
if(_SelectedAppointmentFromHomePanelView != null && _SelectedAppointmentStartDate.HasValue)
{
var monday = _SelectedAppointmentStartDate.Value.FirstDateOfWeek(_SelectedAppointmentStartDate.Value.GetIso8601WeekOfYear());
@@ -530,7 +532,7 @@ namespace BeWo.Scheduler.View
Scheduler.DayView.AppointmentDisplayOptions.ShowReminder = true;
Scheduler.DayView.ResourcesPerPage = 1;
Scheduler.WorkWeekView.ShowFullWeek = _IsComingFromHomeDragPanel && Scheduler.Start.DayOfWeek.Equals(DayOfWeek.Saturday) || Scheduler.Start.DayOfWeek.Equals(DayOfWeek.Sunday);
Scheduler.WorkWeekView.ShowFullWeek = _SelectedAppointmentFromHomePanelView != null && (Scheduler.Start.DayOfWeek.Equals(DayOfWeek.Saturday) || Scheduler.Start.DayOfWeek.Equals(DayOfWeek.Sunday));
Scheduler.WorkWeekView.ShowWorkTimeOnly = false;
Scheduler.WorkWeekView.NavigationButtonVisibility = NavigationButtonVisibility.Always;
@@ -2250,41 +2252,6 @@ namespace BeWo.Scheduler.View
Scheduler.Storage.RefreshData();
Scheduler.Storage.RefreshUI();
if(_IsComingFromHomeDragPanel && _SelectedAppointmentFromHomePanelView != null)
{
var apps = Scheduler.ActiveView.GetAppointments().ToList();
var oid = _SelectedAppointmentFromHomePanelView.SchedulerAppointmentOid;
Appointment appointmentToOpen;
if(oid != null)
{
appointmentToOpen = apps.FirstOrDefault(app =>
{
var oidValue = app.CF_SchedulerAppointmentOid();
return oidValue.HasValue && oidValue.Value == oid;
});
if(appointmentToOpen != null)
{
Scheduler.ShowEditAppointmentForm(appointmentToOpen);
}
}
else if(_SelectedAppointmentFromHomePanelView.RecurrenceId != null && _SelectedAppointmentFromHomePanelView.RecurrenceIndex > 0)
{
appointmentToOpen = apps.FirstOrDefault(appointment => appointment.RecurrenceInfo.Id.ToString().Equals(_SelectedAppointmentFromHomePanelView.RecurrenceId));
if(appointmentToOpen != null)
{
Scheduler.ShowEditAppointmentForm(appointmentToOpen);
}
}
_IsComingFromHomeDragPanel = false;
}
callback?.Invoke();
});
});
@@ -2298,6 +2265,54 @@ namespace BeWo.Scheduler.View
}
});
}
public void OpenAppointmentFromHomePanel()
{
if (_SelectedAppointmentFromHomePanelView != null)
{
var apps = Scheduler.ActiveView.GetAppointments().ToList();
var oid = _SelectedAppointmentFromHomePanelView.SchedulerAppointmentOid;
Appointment appointmentToOpen = null;
if (oid != null)
{
appointmentToOpen = apps.FirstOrDefault(app =>
{
var oidValue = app.CF_SchedulerAppointmentOid();
return oidValue.HasValue && oidValue.Value == oid;
});
//if(appointmentToOpenFormHomePanel != null)
//{
// Scheduler.ShowEditAppointmentForm(appointmentToOpenFormHomePanel);
//}
}
else if (_SelectedAppointmentFromHomePanelView.RecurrenceId != null && _SelectedAppointmentFromHomePanelView.RecurrenceIndex > 0)
{
appointmentToOpen = apps.FirstOrDefault(appointment => appointment.RecurrenceInfo.Id.ToString().Equals(_SelectedAppointmentFromHomePanelView.RecurrenceId));
//if(appointmentToOpenFormHomePanel != null)
//{
// Scheduler.ShowEditAppointmentForm(appointmentToOpenFormHomePanel);
//}
}
if (appointmentToOpen != null)
{
Scheduler.ShowEditAppointmentForm(appointmentToOpen);
}
_SelectedAppointmentFromHomePanelView = null;
}
//while (_IsComingFromHomeDragPanel)
//{
//Thread.Sleep(100);
//}
}
private void ExportButton_OnClick(object sender, RoutedEventArgs e)
{

View File

@@ -17,6 +17,22 @@ namespace BeWo.ServiceProxy
public interface ICustomerService
{
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/SetVertretungGewuenscht", ReplyAction="http://tempuri.org/ICustomerService/SetVertretungGewuenschtResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/ICustomerService/SetVertretungGewuenschtBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
void SetVertretungGewuenscht(long pCustomerOid, bool vertWunsch);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/SetVertretungDringendErforderlich", ReplyAction="http://tempuri.org/ICustomerService/SetVertretungDringendErforderlichResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/ICustomerService/SetVertretungDringendErforderlichBeWoFaultFau" +
"lt", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
void SetVertretungDringendErforderlich(long pCustomerOid, bool vertDringendEr);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/GetActiveCompactCustomerEmployeeRelationsByEm" +
"ployeeId", ReplyAction="http://tempuri.org/ICustomerService/GetActiveCompactCustomerEmployeeRelationsByEm" +
"ployeeIdResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/ICustomerService/GetActiveCompactCustomerEmployeeRelationsByEm" +
"ployeeIdBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactCustomerDC> GetActiveCompactCustomerEmployeeRelationsByEmployeeId(long empOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/SetBenutzerPasswortChatAppCode", ReplyAction="http://tempuri.org/ICustomerService/SetBenutzerPasswortChatAppCodeResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/ICustomerService/SetBenutzerPasswortChatAppCodeBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
void SetBenutzerPasswortChatAppCode(long pCustomerOid, string benutzerName, string passwort);
@@ -48,11 +64,27 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/ConvertToNewSubstitutionType", ReplyAction="http://tempuri.org/ICustomerService/ConvertToNewSubstitutionTypeResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/ICustomerService/ConvertToNewSubstitutionTypeBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.CustomerPersonRelationDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.CustomerPersonRelationDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactCustomerDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactCustomerDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactOrganisationDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactPersonDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactEmployeeDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactSupportConceptDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactCostBearerDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactCostBearerDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactSupportConceptDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactPersonDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactTeamDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactOrganisationDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactWohnheimDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactWohnheimDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactTokenDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactEmployeeDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.AbsenceTimeDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.AbsenceTimeDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.AbsenceReasonDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.CustomerPersonRelationDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.CustomerPersonRelationDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.CostRatePeriodDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.CostRatePeriodDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.ValueListEntryDC))]
@@ -113,7 +145,10 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.CustomerVermittlungArbeitDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.CustomerVermittlungArbeitDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.BeWoDataContract))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.CustomerVgaAuftragsherkunft))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.CustomerVermittlungBearbeitungsstatus))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.CustomerVgaVerlauf))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.CustomerVgaVermittlungsGrundlage))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.CustomerOrganisationRelationDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.CustomerOrganisationRelationDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.MedikamentenverordnungslisteDC>))]
@@ -180,22 +215,6 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.ImageDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.ImageDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.AppointmentCategoryDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactCustomerDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactOrganisationDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactPersonDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactEmployeeDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactSupportConceptDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactCostBearerDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactCostBearerDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactSupportConceptDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactCustomerDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactPersonDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactTeamDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactOrganisationDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactWohnheimDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactWohnheimDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactTokenDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactEmployeeDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.AbsenceReasonVisibilityType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.ActivationTypeId))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.Sex))]
@@ -340,6 +359,18 @@ namespace BeWo.ServiceProxy
"ultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
BS.Shared.DataContracts.SupportConceptCostBearerRelDC GetSupportConceptCostBearerRelationById(long oid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/LoadCompactSupportConceptDC", ReplyAction="http://tempuri.org/ICustomerService/LoadCompactSupportConceptDCResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/ICustomerService/LoadCompactSupportConceptDCBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
BS.Shared.DataContracts.Compact.CompactSupportConceptDC LoadCompactSupportConceptDC(long pOid, System.Nullable<long> currentEmployeeOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/GetCompactCustomerDC", ReplyAction="http://tempuri.org/ICustomerService/GetCompactCustomerDCResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/ICustomerService/GetCompactCustomerDCBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
BS.Shared.DataContracts.Compact.CompactCustomerDC GetCompactCustomerDC(long pOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/GetAllActiveCompactCustomers", ReplyAction="http://tempuri.org/ICustomerService/GetAllActiveCompactCustomersResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/ICustomerService/GetAllActiveCompactCustomersBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactCustomerDC> GetAllActiveCompactCustomers();
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/ServiceRecordOutOfSupportConcept", ReplyAction="http://tempuri.org/ICustomerService/ServiceRecordOutOfSupportConceptResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/ICustomerService/ServiceRecordOutOfSupportConceptBeWoFaultFaul" +
"t", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
@@ -696,22 +727,6 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/ICustomerService/SetAbWelchenKrankheitsTagBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
void SetAbWelchenKrankheitsTag(long pCustomerOid, int abWelcherKt);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/SetVertretungGewuenscht", ReplyAction="http://tempuri.org/ICustomerService/SetVertretungGewuenschtResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/ICustomerService/SetVertretungGewuenschtBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
void SetVertretungGewuenscht(long pCustomerOid, bool vertWunsch);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/SetVertretungDringendErforderlich", ReplyAction="http://tempuri.org/ICustomerService/SetVertretungDringendErforderlichResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/ICustomerService/SetVertretungDringendErforderlichBeWoFaultFau" +
"lt", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
void SetVertretungDringendErforderlich(long pCustomerOid, bool vertDringendEr);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/GetActiveCompactCustomerEmployeeRelationsByEm" +
"ployeeId", ReplyAction="http://tempuri.org/ICustomerService/GetActiveCompactCustomerEmployeeRelationsByEm" +
"ployeeIdResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/ICustomerService/GetActiveCompactCustomerEmployeeRelationsByEm" +
"ployeeIdBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactCustomerDC> GetActiveCompactCustomerEmployeeRelationsByEmployeeId(long empOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/ArchiveCustomer", ReplyAction="http://tempuri.org/ICustomerService/ArchiveCustomerResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/ICustomerService/ArchiveCustomerBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
void ArchiveCustomer(long pOid, long pVersion);
@@ -893,6 +908,14 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/ICustomerService/UpdateWohnheimBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
long UpdateWohnheim(BS.Shared.DataContracts.WohnheimDC dc, System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactEmployeeDC> employeeDCs);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/UpdateWohneinheitBelegungen", ReplyAction="http://tempuri.org/ICustomerService/UpdateWohneinheitBelegungenResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/ICustomerService/UpdateWohneinheitBelegungenBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.WohneinheitBelegungDC> UpdateWohneinheitBelegungen(System.Collections.Generic.List<BS.Shared.DataContracts.WohneinheitBelegungDC> dcs);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/DeleteWohneinheitBelegungen", ReplyAction="http://tempuri.org/ICustomerService/DeleteWohneinheitBelegungenResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/ICustomerService/DeleteWohneinheitBelegungenBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
bool DeleteWohneinheitBelegungen(System.Collections.Generic.List<BS.Shared.DataContracts.WohneinheitBelegungDC> dcs);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/InsertNewWohnheim", ReplyAction="http://tempuri.org/ICustomerService/InsertNewWohnheimResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/ICustomerService/InsertNewWohnheimBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
long InsertNewWohnheim(BS.Shared.DataContracts.WohnheimDC pWohnheimDC);
@@ -901,6 +924,10 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/ICustomerService/LoadWohnheimBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
BS.Shared.DataContracts.WohnheimDC LoadWohnheim(long pWohnheimOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/LoadWohneinheitenForCustomer", ReplyAction="http://tempuri.org/ICustomerService/LoadWohneinheitenForCustomerResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/ICustomerService/LoadWohneinheitenForCustomerBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.WohneinheitBelegungDC> LoadWohneinheitenForCustomer(long customerOid, System.Nullable<System.DateTime> datum);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/GetCustomerWithPersonOid", ReplyAction="http://tempuri.org/ICustomerService/GetCustomerWithPersonOidResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/ICustomerService/GetCustomerWithPersonOidBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
BS.Shared.DataContracts.CustomerDC GetCustomerWithPersonOid(long pPersonOid);
@@ -1062,18 +1089,6 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/GetAllCustomerGoals", ReplyAction="http://tempuri.org/ICustomerService/GetAllCustomerGoalsResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/ICustomerService/GetAllCustomerGoalsBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.ValueListEntryDC> GetAllCustomerGoals(long pCustomerOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/LoadCompactSupportConceptDC", ReplyAction="http://tempuri.org/ICustomerService/LoadCompactSupportConceptDCResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/ICustomerService/LoadCompactSupportConceptDCBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
BS.Shared.DataContracts.Compact.CompactSupportConceptDC LoadCompactSupportConceptDC(long pOid, System.Nullable<long> currentEmployeeOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/GetCompactCustomerDC", ReplyAction="http://tempuri.org/ICustomerService/GetCompactCustomerDCResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/ICustomerService/GetCompactCustomerDCBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
BS.Shared.DataContracts.Compact.CompactCustomerDC GetCompactCustomerDC(long pOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/GetAllActiveCompactCustomers", ReplyAction="http://tempuri.org/ICustomerService/GetAllActiveCompactCustomersResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/ICustomerService/GetAllActiveCompactCustomersBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactCustomerDC> GetAllActiveCompactCustomers();
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
@@ -1110,6 +1125,21 @@ namespace BeWo.ServiceProxy
{
}
public void SetVertretungGewuenscht(long pCustomerOid, bool vertWunsch)
{
base.Channel.SetVertretungGewuenscht(pCustomerOid, vertWunsch);
}
public void SetVertretungDringendErforderlich(long pCustomerOid, bool vertDringendEr)
{
base.Channel.SetVertretungDringendErforderlich(pCustomerOid, vertDringendEr);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactCustomerDC> GetActiveCompactCustomerEmployeeRelationsByEmployeeId(long empOid)
{
return base.Channel.GetActiveCompactCustomerEmployeeRelationsByEmployeeId(empOid);
}
public void SetBenutzerPasswortChatAppCode(long pCustomerOid, string benutzerName, string passwort)
{
base.Channel.SetBenutzerPasswortChatAppCode(pCustomerOid, benutzerName, passwort);
@@ -1210,6 +1240,21 @@ namespace BeWo.ServiceProxy
return base.Channel.GetSupportConceptCostBearerRelationById(oid);
}
public BS.Shared.DataContracts.Compact.CompactSupportConceptDC LoadCompactSupportConceptDC(long pOid, System.Nullable<long> currentEmployeeOid)
{
return base.Channel.LoadCompactSupportConceptDC(pOid, currentEmployeeOid);
}
public BS.Shared.DataContracts.Compact.CompactCustomerDC GetCompactCustomerDC(long pOid)
{
return base.Channel.GetCompactCustomerDC(pOid);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactCustomerDC> GetAllActiveCompactCustomers()
{
return base.Channel.GetAllActiveCompactCustomers();
}
public bool ServiceRecordOutOfSupportConcept(BS.Shared.DataContracts.SupportConceptDC pSupportConcept)
{
return base.Channel.ServiceRecordOutOfSupportConcept(pSupportConcept);
@@ -1620,21 +1665,6 @@ namespace BeWo.ServiceProxy
base.Channel.SetAbWelchenKrankheitsTag(pCustomerOid, abWelcherKt);
}
public void SetVertretungGewuenscht(long pCustomerOid, bool vertWunsch)
{
base.Channel.SetVertretungGewuenscht(pCustomerOid, vertWunsch);
}
public void SetVertretungDringendErforderlich(long pCustomerOid, bool vertDringendEr)
{
base.Channel.SetVertretungDringendErforderlich(pCustomerOid, vertDringendEr);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactCustomerDC> GetActiveCompactCustomerEmployeeRelationsByEmployeeId(long empOid)
{
return base.Channel.GetActiveCompactCustomerEmployeeRelationsByEmployeeId(empOid);
}
public void ArchiveCustomer(long pOid, long pVersion)
{
base.Channel.ArchiveCustomer(pOid, pVersion);
@@ -1840,6 +1870,16 @@ namespace BeWo.ServiceProxy
return base.Channel.UpdateWohnheim(dc, employeeDCs);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.WohneinheitBelegungDC> UpdateWohneinheitBelegungen(System.Collections.Generic.List<BS.Shared.DataContracts.WohneinheitBelegungDC> dcs)
{
return base.Channel.UpdateWohneinheitBelegungen(dcs);
}
public bool DeleteWohneinheitBelegungen(System.Collections.Generic.List<BS.Shared.DataContracts.WohneinheitBelegungDC> dcs)
{
return base.Channel.DeleteWohneinheitBelegungen(dcs);
}
public long InsertNewWohnheim(BS.Shared.DataContracts.WohnheimDC pWohnheimDC)
{
return base.Channel.InsertNewWohnheim(pWohnheimDC);
@@ -1850,6 +1890,11 @@ namespace BeWo.ServiceProxy
return base.Channel.LoadWohnheim(pWohnheimOid);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.WohneinheitBelegungDC> LoadWohneinheitenForCustomer(long customerOid, System.Nullable<System.DateTime> datum)
{
return base.Channel.LoadWohneinheitenForCustomer(customerOid, datum);
}
public BS.Shared.DataContracts.CustomerDC GetCustomerWithPersonOid(long pPersonOid)
{
return base.Channel.GetCustomerWithPersonOid(pPersonOid);
@@ -2044,20 +2089,5 @@ namespace BeWo.ServiceProxy
{
return base.Channel.GetAllCustomerGoals(pCustomerOid);
}
public BS.Shared.DataContracts.Compact.CompactSupportConceptDC LoadCompactSupportConceptDC(long pOid, System.Nullable<long> currentEmployeeOid)
{
return base.Channel.LoadCompactSupportConceptDC(pOid, currentEmployeeOid);
}
public BS.Shared.DataContracts.Compact.CompactCustomerDC GetCompactCustomerDC(long pOid)
{
return base.Channel.GetCompactCustomerDC(pOid);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactCustomerDC> GetAllActiveCompactCustomers()
{
return base.Channel.GetAllActiveCompactCustomers();
}
}
}

View File

@@ -584,7 +584,10 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.CustomerCostBearerRelationDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.CustomerVermittlungArbeitDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.CustomerVermittlungArbeitDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.CustomerVgaAuftragsherkunft))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.CustomerVermittlungBearbeitungsstatus))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.CustomerVgaVerlauf))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.CustomerVgaVermittlungsGrundlage))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.CustomerOrganisationRelationDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.CustomerOrganisationRelationDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.CustomerPersonRelationDC>))]

View File

@@ -42,6 +42,12 @@
TargetType="{x:Type dxe:TextEdit}">
<Setter Property="Mask" Value="######0.00 $" />
</Style>
<Style
x:Key="TextEditCurrencyNullable"
BasedOn="{StaticResource BaseNumberMaskTextEdit}"
TargetType="{x:Type dxe:TextEdit}">
<Setter Property="Mask" Value="#######.## $" />
</Style>
<Style
x:Key="TextEditHours"
BasedOn="{StaticResource BaseNumberMaskTextEdit}"

View File

@@ -198,6 +198,7 @@
CornerRadius="0, 10, 10, 10">
<Grid Margin="4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
@@ -205,17 +206,15 @@
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<!--<Border BorderThickness="1" Grid.ColumnSpan="2" Grid.RowSpan="2" BorderBrush="Black"></Border>-->
<!--<Border BorderThickness="1" Grid.ColumnSpan="1" Grid.RowSpan="1" BorderBrush="Black"></Border>-->
<TextBlock
Grid.Row="0"
Grid.ColumnSpan="2"
Margin="0,0,0,4"
Padding="0"
VerticalAlignment="Center"
FontSize="12"
FontWeight="Medium"
Foreground="{DynamicResource TextForegroundSecondary}"
Style="{StaticResource TextBlockStyle}"
Text="{Binding DurationSec, StringFormat=Nachgedacht für {0} Sekunden}">
<TextBlock.ToolTip>
<Grid Margin="0,4,0,4">
@@ -246,6 +245,15 @@
</Grid>
</TextBlock.ToolTip>
</TextBlock>
<TextBlock
Grid.Column="1"
Margin="9,0,0,3"
HorizontalAlignment="Left"
VerticalAlignment="Top"
FontSize="12"
FontWeight="Bold"
Text="⋮"
Visibility="{Binding DataContext.AssistentCommands, RelativeSource={RelativeSource AncestorType=ItemsControl}, Converter={StaticResource CollectionCountToVisibilityConverter}}" />
<!--<TextBlock
Grid.Row="1"
Grid.ColumnSpan="2"
@@ -258,7 +266,7 @@
Text="{Binding DurationSec, StringFormat=Nachgedacht für {0} Sekunden}" />-->
<TextBox
Grid.Row="1"
Grid.ColumnSpan="2"
Grid.ColumnSpan="3"
Margin="0,4,0,0"
Padding="-3"
VerticalAlignment="Center"
@@ -319,7 +327,19 @@
</ContextMenu>
</Border.ContextMenu>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<TextBox Padding="12,8,12,8" Style="{StaticResource MessageTextBoxStyle}" />
<!--<TextBlock Grid.Column="1" Text="⋮"
Margin="3,8,12,8"
VerticalAlignment="Top"
HorizontalAlignment="Left"
FontSize="12"
FontWeight="Bold"/>-->
</Grid>
</Border>
</DataTemplate>

View File

@@ -4048,30 +4048,7 @@
FontSize="14"
Foreground="#FFD2D2D2"
Text="{Binding Path=Teams}" />
<TextBlock
Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="5"
Margin="0,0,3,0"
VerticalAlignment="Center"
FontFamily="Microsoft Sans Serif"
FontSize="12"
Foreground="#FFD2D2D2">
<TextBlock.Visibility>
<Binding ConverterParameter="Employee" Path="IsDeleted">
<Binding.Converter>
<conv:AnonymizationRight2VisibilityConverter />
</Binding.Converter>
</Binding>
</TextBlock.Visibility>
<Hyperlink
Click="Hyperlink_Employee_Anonymize_Click"
Foreground="#FFF97E7B"
Tag="{Binding}"
TargetName="_NewWindow">
Anonymisieren
</Hyperlink>
</TextBlock>
<TextBlock
Grid.Row="0"
Grid.RowSpan="2"

View File

@@ -630,7 +630,7 @@
FixedWidth="True"
Header="Datum"
SortOrder="Descending" />
<dxg:GridColumn
<!--<dxg:GridColumn
AllowEditing="{Binding Path=BargeldtransaktionenBearbeitenAlsDefaultBooelan, RelativeSource={RelativeSource AncestorType={x:Type view:BargeldkassenView}}}"
FieldName="Zahlungstyp"
FixedWidth="True"
@@ -638,12 +638,12 @@
<dxg:GridColumn.EditSettings>
<dxe:ComboBoxEditSettings IsTextEditable="False" ItemsSource="{Binding Path=Values, Source={x:Static core:DisplayEnum.Zahlungstyp}}" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
</dxg:GridColumn>-->
<dxg:GridColumn
AllowEditing="{Binding Path=BargeldtransaktionenBearbeitenAlsDefaultBooelan, RelativeSource={RelativeSource AncestorType={x:Type view:BargeldkassenView}}}"
FieldName="Betrag"
FieldName="BetragEinzahlung"
FixedWidth="True"
Header="Betrag">
Header="Einzahlung">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings
Mask="c"
@@ -651,6 +651,30 @@
MaskUseAsDisplayFormat="True" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
<dxg:GridColumn
AllowEditing="{Binding Path=BargeldtransaktionenBearbeitenAlsDefaultBooelan, RelativeSource={RelativeSource AncestorType={x:Type view:BargeldkassenView}}}"
FieldName="BetragAuszahlung"
FixedWidth="True"
Header="Auszahlung">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings
Mask="c"
MaskType="Numeric"
MaskUseAsDisplayFormat="True" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
<dxg:GridColumn
AllowEditing="False"
FieldName="Transaktionskassenbestand"
FixedWidth="True"
Header="Saldo">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings
Mask="c"
MaskType="Numeric"
MaskUseAsDisplayFormat="True" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
<dxg:GridColumn
AllowEditing="{Binding Path=BargeldtransaktionenBearbeitenAlsDefaultBooelan, RelativeSource={RelativeSource AncestorType={x:Type view:BargeldkassenView}}}"
FieldName="Belegnummer"
@@ -660,16 +684,21 @@
<dxe:TextEditSettings />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
<dxg:GridColumn
AllowEditing="False"
FieldName="InsUser"
FixedWidth="True"
Header="Angelegt von" />
<dxg:GridColumn
AllowEditing="{Binding Path=BargeldtransaktionenBearbeitenAlsDefaultBooelan, RelativeSource={RelativeSource AncestorType={x:Type view:BargeldkassenView}}}"
FieldName="Notice"
Header="Notiz" />
<dxg:GridColumn
AllowEditing="False"
FieldName="InsUser"
FixedWidth="True"
Header="Angelegt von" />
<dxg:GridColumn
AllowEditing="False"
FieldName="InsTs"
EditSettings="{dxe:DateSettings DisplayFormat=dd.MM.yyyy HH:mm}"
FixedWidth="True"
Header="Angelegt am" />
<dxg:GridColumn
FieldName="X"
Header="Drucken"
@@ -699,7 +728,9 @@
NavigationStyle="Cell"
ShowGroupPanel="False"
ShowGroupedColumns="False"
ShowTotalSummary="False" />
ShowTotalSummary="False"
ShowingEditor="TableView_ShowingEditor"
/>
</dxg:GridControl.View>
</dxg:GridControl>
</GroupBox>

View File

@@ -21,6 +21,7 @@ using BS.Shared.Translation;
using DevExpress.Utils;
using DevExpress.Xpf.Editors;
using DevExpress.Xpf.Grid;
using DevExpress.XtraEditors.Filtering;
namespace BeWo.View
{
@@ -602,6 +603,23 @@ namespace BeWo.View
BeWoApp.AppSettings.LastKassenSortOrder = SortComboBox.SelectedIndex;
BeWoApp.SaveAppSettings();
}
private void TableView_ShowingEditor(object sender, ShowingEditorEventArgs e)
{
var bvm = e.Row as BargeldtransaktionsVM;
if (bvm != null)
{
if (e.Column.FieldName == "BetragAuszahlung" && bvm.Zahlungstyp.Enum == Zahlungstyp.Einzahlung)
{
e.Cancel = true;
}
else if (e.Column.FieldName == "BetragEinzahlung" && bvm.Zahlungstyp.Enum == Zahlungstyp.Auszahlung)
{
e.Cancel = true;
}
}
}
}
public class KassenSortOrderItem

View File

@@ -215,11 +215,11 @@
x:Name="comboBox_Auftragsherkunft"
Grid.Row="9"
Grid.Column="1"
DisplayMemberPath="TypeDescription"
HorizontalAlignment="Stretch"
IsEnabled="{Binding PermissionCustomerGemeinnutzigeArbeitManage, Mode=OneTime, ElementName=root}"
ItemsSource="{Binding Path=DataContext.Auftragsherkunfte, RelativeSource={RelativeSource AncestorType={x:Type GroupBox}, AncestorLevel=2, Mode=FindAncestor}}"
ItemsSource="{Binding Path=CustomerVgaAuftragsherkunftTypes}"
SelectedValue="{Binding Path=Auftragsherkunft, Mode=TwoWay}"
Style="{StaticResource PrimaryNullItemComboBox}" />
Style="{StaticResource EnumTranslationNullItemComboBox}" />
<Label
Grid.Row="10"
@@ -229,10 +229,12 @@
x:Name="comboBox_Vermittlungsgrundlage"
Grid.Row="10"
Grid.Column="1"
DisplayMemberPath="TypeDescription"
MaxWidth="300"
HorizontalAlignment="Stretch"
IsEnabled="{Binding PermissionCustomerGemeinnutzigeArbeitManage, Mode=OneTime, ElementName=root}"
ItemsSource="{Binding Path=DataContext.Vermittlungsgrundlagen, RelativeSource={RelativeSource AncestorType={x:Type GroupBox}, AncestorLevel=2, Mode=FindAncestor}}"
SelectedValue="{Binding Path=Vermittlungsgrundlage, Mode=TwoWay}" />
ItemsSource="{Binding Path=CustomerVgaVermittlungsGrundlageTypes}"
SelectedValue="{Binding Path=Vermittlungsgrundlage, Mode=TwoWay}"
Style="{StaticResource EnumTranslationNullItemComboBox}" />
<Label
Grid.Row="11"
@@ -263,7 +265,7 @@
Grid.Column="1"
EditValue="{Binding Path=Tagessatzhohe, UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="{Binding PermissionCustomerGemeinnutzigeArbeitManage, Mode=OneTime, Converter={StaticResource BoolReverseConverter}, ElementName=root}"
Style="{StaticResource TextEditCurrency}" />
Style="{StaticResource TextEditNumberDecimalNullable}" />
<Label
Grid.Row="14"
@@ -274,33 +276,42 @@
Grid.Column="1"
EditValue="{Binding Path=HoheDerGeldstrafe, UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="{Binding PermissionCustomerGemeinnutzigeArbeitManage, Mode=OneTime, Converter={StaticResource BoolReverseConverter}, ElementName=root}"
Style="{StaticResource TextEditCurrency}" />
Style="{StaticResource TextEditNumberDecimalNullable}" />
<Label
Grid.Row="15"
Grid.Column="0"
Content="Zu leistende Arbeitsstunden" />
Content="Höhe der Gerichtskosten" />
<dxe:TextEdit
Grid.Row="15"
Grid.Column="1"
EditValue="{Binding Path=Gerichtskosten, UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="{Binding PermissionCustomerGemeinnutzigeArbeitManage, Mode=OneTime, Converter={StaticResource BoolReverseConverter}, ElementName=root}"
Style="{StaticResource TextEditNumberDecimalNullable}" />
<Label
Grid.Row="16"
Grid.Column="0"
Content="Zu leistende Arbeitsstunden" />
<dxe:TextEdit
Grid.Row="16"
Grid.Column="1"
EditValue="{Binding Path=ZuLeistendeArbeitsstunden, UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="{Binding PermissionCustomerGemeinnutzigeArbeitManage, Mode=OneTime, Converter={StaticResource BoolReverseConverter}, ElementName=root}"
Style="{StaticResource TextEditHours}" />
<Label
Grid.Row="16"
Grid.Row="17"
Grid.Column="0"
Content="Frist" />
<dxe:DateEdit
Grid.Row="16"
Grid.Row="17"
Grid.Column="1"
EditValue="{Binding Path=Frist, UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="{Binding PermissionCustomerGemeinnutzigeArbeitManage, Mode=OneTime, Converter={StaticResource BoolReverseConverter}, ElementName=root}"/>
<Label
Grid.Row="17"
Grid.Row="18"
Grid.Column="0"
Content="Hinweis" />
<TextBox
Grid.Row="17"
Grid.Row="18"
Grid.Column="1"
IsReadOnly="{Binding PermissionCustomerGemeinnutzigeArbeitManage, Mode=OneTime, Converter={StaticResource BoolReverseConverter}, ElementName=root}"
Text="{Binding Path=Hinweis, UpdateSourceTrigger=PropertyChanged}" />
@@ -324,7 +335,7 @@
<Label
Grid.Row="1"
Grid.Column="2"
Content="Bearbeitungsstatus" />
Content="Fallstatus" />
<uc:NullItemComboBox
x:Name="combobox_bearbeitungsstatus"
Grid.Row="1"
@@ -353,11 +364,11 @@
x:Name="comboBox_Verlauf"
Grid.Row="3"
Grid.Column="3"
DisplayMemberPath="TypeDescription"
HorizontalAlignment="Stretch"
IsEnabled="{Binding PermissionCustomerGemeinnutzigeArbeitManage, Mode=OneTime, ElementName=root}"
ItemsSource="{Binding Path=DataContext.Verlaeufe, RelativeSource={RelativeSource AncestorType={x:Type GroupBox}, AncestorLevel=2, Mode=FindAncestor}}"
ItemsSource="{Binding Path=CustomerVgaVerlaufTypes}"
SelectedValue="{Binding Path=Verlauf, Mode=TwoWay}"
Style="{StaticResource PrimaryNullItemComboBox}" />
Style="{StaticResource EnumTranslationNullItemComboBox}" />
<Label
Grid.Row="4"
Grid.Column="2"
@@ -379,43 +390,62 @@
EditValue="{Binding Path=ErsparteHafttage, UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="{Binding PermissionCustomerGemeinnutzigeArbeitManage, Mode=OneTime, Converter={StaticResource BoolReverseConverter}, ElementName=root}"
Style="{StaticResource TextEditDays}" />
<Label
Grid.Row="6"
Grid.Column="2"
Content="Anzahl der Raten" />
<dxe:TextEdit
Grid.Row="6"
Grid.Column="3"
EditValue="{Binding Path=AnzahlRaten, UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="{Binding PermissionCustomerGemeinnutzigeArbeitManage, Mode=OneTime, Converter={StaticResource BoolReverseConverter}, ElementName=root}"
Style="{StaticResource TextEditNumberDecimalNullable}" />
<Label
Grid.Row="7"
Grid.Column="2"
Content="Höhe der Raten" />
<dxe:TextEdit
Grid.Row="7"
Grid.Column="3"
EditValue="{Binding Path=RatenHoehe, UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="{Binding PermissionCustomerGemeinnutzigeArbeitManage, Mode=OneTime, Converter={StaticResource BoolReverseConverter}, ElementName=root}"
Style="{StaticResource TextEditNumberDecimalNullable}" />
<Label
Grid.Row="8"
Grid.Column="2"
Content="Geleistete Ratenzahlung" />
<dxe:TextEdit
Grid.Row="6"
Grid.Row="8"
Grid.Column="3"
EditValue="{Binding Path=GeleisteteRatenzahlung, UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="{Binding PermissionCustomerGemeinnutzigeArbeitManage, Mode=OneTime, Converter={StaticResource BoolReverseConverter}, ElementName=root}"
Style="{StaticResource TextEditCurrency}" />
Style="{StaticResource TextEditNumberDecimalNullable}" />
<Label
Grid.Row="7"
Grid.Row="9"
Grid.Column="2"
Content="Geleistete Einmalzahlung" />
<dxe:TextEdit
Grid.Row="7"
Grid.Row="9"
Grid.Column="3"
EditValue="{Binding Path=GeleisteteEinmalzahlung, UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="{Binding PermissionCustomerGemeinnutzigeArbeitManage, Mode=OneTime, Converter={StaticResource BoolReverseConverter}, ElementName=root}"
Style="{StaticResource TextEditCurrency}" />
Style="{StaticResource TextEditNumberDecimalNullable}" />
<Label
Grid.Row="8"
Grid.Row="10"
Grid.Column="2"
Content="BWH" />
<TextBox
Grid.Row="8"
Grid.Row="10"
Grid.Column="3"
IsReadOnly="{Binding PermissionCustomerGemeinnutzigeArbeitManage, Mode=OneTime, Converter={StaticResource BoolReverseConverter}, ElementName=root}"
Text="{Binding Path=Bewaehrungshelfer, UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="9"
Grid.Row="11"
Grid.Column="2"
Content="Bemerkung" />
<TextBox
Grid.Row="9"
Grid.Row="11"
Grid.Column="3"
Grid.RowSpan="9"
Height="190"

View File

@@ -46,7 +46,7 @@
<TextBox
Grid.Row="0"
Grid.Column="2"
IsEnabled="{Binding IsEditingMode}"
IsEnabled="{Binding ViewModel.CanEdit}"
Text="{Binding ViewModel.Title, UpdateSourceTrigger=PropertyChanged}" />
<Label Grid.Row="1" Grid.Column="0">
@@ -55,7 +55,7 @@
<TextBox
Grid.Row="1"
Grid.Column="2"
IsEnabled="{Binding IsEditingMode}"
IsEnabled="{Binding ViewModel.CanEdit}"
MaxLength="1024"
Style="{StaticResource TextBoxNoticeLarge}"
Text="{Binding ViewModel.Description, UpdateSourceTrigger=PropertyChanged}"
@@ -77,7 +77,7 @@
Grid.Column="2"
Margin="3"
IsChecked="{Binding ViewModel.IsPublic}"
IsEnabled="{Binding ViewModel.CanShareEdit, UpdateSourceTrigger=PropertyChanged}" />
IsEnabled="{Binding ViewModel.CanShareEdit}" />
<StackPanel
Grid.Row="6"

View File

@@ -81,9 +81,9 @@
<Label
Grid.Row="2"
Grid.Column="2"
HorizontalAlignment="Center"
FontSize="10"
Foreground="DarkGray"
HorizontalAlignment="Center"
Visibility="{Binding ViewModel.IsPromptVisible, Converter={StaticResource BoolVisibilityConverter}, ConverterParameter=Reverse}">
nicht sichtbar
</Label>
@@ -99,13 +99,13 @@
IsEnabled="False"
SelectedCompactEmployeeDC="{Binding ViewModel.Creator}" />
<!--<Label Grid.Row="4" Grid.Column="0">Öffentlich</Label>
<Label Grid.Row="4" Grid.Column="0">Öffentlich</Label>
<dxe:CheckEdit
Grid.Row="4"
Grid.Column="2"
Margin="3"
IsChecked="{Binding ViewModel.IsPublic}"
IsEnabled="{Binding ViewModel.CanShareEdit, UpdateSourceTrigger=PropertyChanged}" />-->
IsEnabled="{Binding ViewModel.CanShareEdit}" />
<Label Grid.Row="5" Grid.Column="0">Favorit</Label>
<dxe:CheckEdit

View File

@@ -41,6 +41,7 @@
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Label Grid.Row="0" Grid.Column="0">Name</Label>
@@ -187,17 +188,17 @@
IsEnabled="False"
SelectedCompactEmployeeDC="{Binding ViewModel.Creator}" />
<!--<Label Grid.Row="4" Grid.Column="0">Öffentlich</Label>
<Label Grid.Row="6" Grid.Column="0">Öffentlich</Label>
<dxe:CheckEdit
Grid.Row="4"
Grid.Row="6"
Grid.Column="2"
Margin="3"
IsChecked="{Binding ViewModel.IsPublic}"
IsEnabled="{Binding ViewModel.CanShareEdit, UpdateSourceTrigger=PropertyChanged}" />-->
IsEnabled="{Binding ViewModel.CanShareEdit}" />
<Label Grid.Row="6" Grid.Column="0">Favorit</Label>
<Label Grid.Row="7" Grid.Column="0">Favorit</Label>
<dxe:CheckEdit
Grid.Row="6"
Grid.Row="7"
Grid.Column="2"
Margin="3"
IsChecked="{Binding ViewModel.IsFavorite}"
@@ -205,7 +206,7 @@
<StackPanel
Grid.Row="7"
Grid.Row="8"
Grid.ColumnSpan="3"
Margin="0,19,0,0"
HorizontalAlignment="Right"

View File

@@ -37,7 +37,10 @@ namespace BeWo.View.Detail.AI
ViewModel = viewmodel;
var viewmodel2 = new AiPromptbausteinSelectionComplexViewModel(ViewModel.ViewModel.ActionType, ViewModel.FolderListVM, false, false);
var folder_dc = ViewModel.FolderListVM.CopyToDCList(true);
var folder_vm = new AiPromptbausteinFolderListVM(folder_dc);
var viewmodel2 = new AiPromptbausteinSelectionComplexViewModel(ViewModel.ViewModel.ActionType, folder_vm, false, false);
var control = new AiPromptbausteinComplexSelectionView(viewmodel2);
viewmodel2.ItemAccepted += (s, e) =>

View File

@@ -995,9 +995,20 @@
ToolTipService.InitialShowDelay="0"
ToolTipService.ShowOnDisabled="True" />
<Label
x:Name="lblArchiviert"
Grid.Row="7"
Grid.Column="2"
Content="{markup:Translate BG Nummer}" />
<TextBox
Grid.Row="7"
Grid.Column="3"
Height="23"
Margin="3"
Foreground="{Binding Path=BGNummer}"
Text="{Binding Path=BGNummer, UpdateSourceTrigger=PropertyChanged}"/>
<Label
x:Name="lblArchiviert"
Grid.Row="8"
Grid.Column="2"
Content="Archiviert" />
<Label
@@ -1201,7 +1212,7 @@
Text="{Binding Path=HealthInsurance, UpdateSourceTrigger=PropertyChanged}" />
<CheckBox
x:Name="chkArchiviert"
Grid.Row="7"
Grid.Row="8"
Grid.Column="3"
Height="23"
Margin="3,5,3,1"
@@ -3743,144 +3754,11 @@
<TabItem
Name="tabitem_Bargeldverwaltung"
Header="Bargeldverwaltung"
Selector.Selected="Tabitem_Bargeldverwaltung_OnSelected">
<!--<Grid x:Name="BargeldverwaltungsGrid">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Grid.Row="0" Orientation="Horizontal" Grid.ColumnSpan="2">
<Label VerticalAlignment="Center">Kassenbestand</Label>
<dxe:TextEdit MaskType="Numeric" Mask="c" MaskUseAsDisplayFormat="True" Height="23" Margin="3" EditMode="InplaceInactive"
Width="100" EditValue="{Binding Path=Kassenbestand, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Center" />
<Label VerticalAlignment="Center">Auszahlungsintervall</Label>
<dxe:ComboBoxEdit VerticalAlignment="Center" Height="23" HorizontalAlignment="Left" Width="150" IsTextEditable="False" Margin="3,0,3,3" IsEnabled="{Binding Path=DarfBargeldtransaktionenBearbeiten, RelativeSource={RelativeSource AncestorType={x:Type detail:CustomerView}}}"
ItemsSource="{Binding Path=Values, Source={x:Static core:DisplayEnum.Auszahlungsintervall}}"
EditValue="{Binding Path=Auszahlungsintervall, UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
<StackPanel Grid.Column="3" Grid.Row="0" HorizontalAlignment="Right" Orientation="Horizontal">
<uc:NullItemComboBox x:Name="KassenbuchMonatsCB" Margin="3">
<ComboBoxItem>1</ComboBoxItem>
<ComboBoxItem>2</ComboBoxItem>
<ComboBoxItem>3</ComboBoxItem>
<ComboBoxItem>4</ComboBoxItem>
<ComboBoxItem>5</ComboBoxItem>
<ComboBoxItem>6</ComboBoxItem>
<ComboBoxItem>7</ComboBoxItem>
<ComboBoxItem>8</ComboBoxItem>
<ComboBoxItem>9</ComboBoxItem>
<ComboBoxItem>10</ComboBoxItem>
<ComboBoxItem>11</ComboBoxItem>
<ComboBoxItem>12</ComboBoxItem>
</uc:NullItemComboBox>
<uc:NullItemComboBox x:Name="KassenbuchJahresCB" Margin="3" />
<TextBlock Margin="3" FontSize="14" VerticalAlignment="Center" PreviewMouseLeftButtonDown="UIElement_OnPreviewMouseLeftButtonDown">
<Hyperlink x:Name="LinkKassenbuchDrucken" TargetName="_NewWindow" Foreground="#FF2B508B">
<Run Text="Kassenbuch Drucken" />
</Hyperlink>
</TextBlock>
</StackPanel>
<GroupBox x:Name="NeueZahlungsGroupBox" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="4" Style="{StaticResource ObjectEditGroupBox}" Header="Neue Zahlung">
<Grid x:Name="NeueTransaktionsGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Grid.Row="0">Datum</Label>
<dxe:DateEdit Grid.Column="1" Grid.Row="0" Width="100" MaskType="DateTimeAdvancingCaret" Height="23" Margin="3" EditValue="{val:ValidationBinding Path=Bargeldtransaktionsliste.NewVM.Zahlungsdatum, UpdateSourceTrigger=PropertyChanged}" />
<Label Grid.Column="2" Grid.Row="0">Art</Label>
<dxe:ComboBoxEdit Grid.Column="3" Grid.Row="0" Height="23" HorizontalAlignment="Left" Width="150" IsTextEditable="False" Margin="3,0,3,3"
EditValue="{val:ValidationBinding Path=Bargeldtransaktionsliste.NewVM.Zahlungstyp, UpdateSourceTrigger=PropertyChanged}"
ItemsSource="{Binding Path=Values, Source={x:Static core:DisplayEnum.Zahlungstyp}}" />
<Label Grid.Column="4" Grid.Row="0">Betrag</Label>
<dxe:TextEdit Grid.Column="5" Grid.Row="0" MaskType="Numeric" Mask="########0.00" MaskUseAsDisplayFormat="True" Height="23" Margin="3" Width="100"
EditValue="{val:ValidationBinding Path=Bargeldtransaktionsliste.NewVM.Betrag, UpdateSourceTrigger=PropertyChanged}" />
<Label Grid.Row="1" Grid.Column="0" Content="Notiz" />
<TextBox Margin="3" Grid.Column="1" Grid.ColumnSpan="5" Grid.Row="1"
Text="{Binding Path=Bargeldtransaktionsliste.NewVM.Notice, UpdateSourceTrigger=PropertyChanged}" Height="60"
VerticalAlignment="Stretch" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Left"
ScrollViewer.CanContentScroll="False" VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Hidden" TextWrapping="Wrap" AcceptsReturn="True"
AutoWordSelection="True" Language="de-DE" SpellCheck.IsEnabled="True" />
<Button Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="6" HorizontalAlignment="Right" Margin="3" Click="AddBargeldTransaktion">Hinzufügen</Button>
</Grid>
</Grid>
</GroupBox>
<GroupBox Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="4" Style="{StaticResource ObjectEditGroupBox}" Header="Ein- und Auszahlungen">
<dxg:GridControl Name="grid_bargeldtransaktionen" ItemsSource="{Binding Path=Bargeldtransaktionsliste.VMList}" CustomColumnSort="Grid_Bargeldtransaktionen_OnCustomColumnSort">
<dxg:GridControl.Columns>
<dxg:GridColumn Header="" FixedWidth="True" Width="24" ReadOnly="True" Visible="{Binding Path=DarfBargeldtransaktionenBearbeiten, RelativeSource={RelativeSource AncestorType={x:Type detail:CustomerView}}}">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<Button Content="r" Click="button_bargeldtransaktionDeleteClick" FontFamily="Webdings" Width="18" Height="18" VerticalAlignment="Center" />
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
<dxg:GridColumn Header="Datum" FieldName="Zahlungsdatum" EditSettings="{dxe:DateSettings DisplayFormat=d}" AllowEditing="{Binding Path=BargeldtransaktionenBearbeitenAlsDefaultBooelan, RelativeSource={RelativeSource AncestorType={x:Type detail:CustomerView}}}" />
<dxg:GridColumn Header="Art" FieldName="Zahlungstyp" AllowEditing="{Binding Path=BargeldtransaktionenBearbeitenAlsDefaultBooelan, RelativeSource={RelativeSource AncestorType={x:Type detail:CustomerView}}}">
<dxg:GridColumn.EditSettings>
<dxe:ComboBoxEditSettings ItemsSource="{Binding Path=Values, Source={x:Static core:DisplayEnum.Zahlungstyp}}" IsTextEditable="False" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
<dxg:GridColumn Header="Betrag" FieldName="Betrag" AllowEditing="{Binding Path=BargeldtransaktionenBearbeitenAlsDefaultBooelan, RelativeSource={RelativeSource AncestorType={x:Type detail:CustomerView}}}">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings MaskType="Numeric" Mask="c" MaskUseAsDisplayFormat="True" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
<dxg:GridColumn Header="Notiz" FieldName="Notice" AllowEditing="{Binding Path=BargeldtransaktionenBearbeitenAlsDefaultBooelan, RelativeSource={RelativeSource AncestorType={x:Type detail:CustomerView}}}"/>
<dxg:GridColumn FieldName="X" Header="Drucken" ReadOnly="True">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<TextBlock x:Name="textblock_link_pdfexport" VerticalAlignment="Center" Margin="3,0,0,0">
<Hyperlink x:Name="LinkZahlungsbelegDrucken" Click="LinkZahlungsbelegDruckenClick" TargetName="_NewWindow"
Foreground="#FF2B508B">
<Run Text="Zahlungsbeleg Drucken" />
</Hyperlink>
</TextBlock>
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView NavigationStyle="Cell" Margin="2 2 2 2" AutoWidth="True"
ShowAutoFilterRow="False" ShowGroupPanel="False" ShowGroupedColumns="False"
ShowTotalSummary="False" />
</dxg:GridControl.View>
</dxg:GridControl>
</GroupBox>
</Grid>-->
</TabItem>
Selector.Selected="Tabitem_Bargeldverwaltung_OnSelected" />
<TabItem
Name="tabitem_Wohnungsverwaltung"
Header="{t:Translate Wohneinheiten}"
Selector.Selected="Tabitem_Wohnungsverwaltung_OnSelected" />
<TabItem
Name="tabitem_chatservice"
Header="ownChat"

View File

@@ -55,6 +55,7 @@ using DevExpress.Mvvm;
using System.Collections;
using BeWo.Core.Commands;
using BeWo.ViewModel.View.AI;
using BeWo.View.Detail.Wohneinheit;
namespace BeWo.View.Detail
{
@@ -249,7 +250,11 @@ namespace BeWo.View.Detail
ButtonNeuAusAktuellerVerordnung.Visibility = Visibility.Collapsed;
ButtonNeueMedikamentenverordnung.Visibility = Visibility.Collapsed;
}
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.WohnheimView_Wohneinheit_Belegung_Manage))
{
tabitem_Wohnungsverwaltung.Visibility = Visibility.Collapsed;
}
var l = new List<int>();
for (var i = 9; i >= 0; i--)
{
@@ -1910,6 +1915,29 @@ namespace BeWo.View.Detail
}
}
private void Tabitem_Wohnungsverwaltung_OnSelected(object sender, RoutedEventArgs e)
{
if (ViewModel.IsNew)
{
MessageBox.Show("Bevor Sie Wohneinheiten zuordnen können, muss dieser Datensatz zuerst gespeichert werden.", "Erst speichern bitte", MessageBoxButton.OK, MessageBoxImage.Information);
return;
//BargeldverwaltungsGrid.Visibility = Visibility.Collapsed;
}
//else
//{
// grid_bargeldtransaktionen.Columns[1].SortMode = ColumnSortMode.Custom;
// grid_bargeldtransaktionen.SortBy(grid_bargeldtransaktionen.Columns[1]);
//}
if (tabitem_Wohnungsverwaltung.Content == null)
{
var view = new CustomerWohneinheitenView(ViewModel.DataContract.CustomerOid.Value);
tabitem_Wohnungsverwaltung.Content = view;
}
}
private void popupedit_behinderungsarten_PopUpClick(object sender, RoutedEventArgs e)
{
PopupBehinderungsarten.IsOpen = true;

View File

@@ -739,8 +739,8 @@
Grid.Row="2"
Grid.Column="3"
VerticalAlignment="Center"
ToolTip="Postfachanschrift der Datenannahmestelle">
Postfachanschrift
ToolTip="Postfach- oder Großkundenanschrift der Datenannahmestelle">
Postfach- / GK-Anschrift
</Label>
<TextBox
x:Name="txt_postfachanschrift"
@@ -753,8 +753,8 @@
Grid.Row="3"
Grid.Column="3"
VerticalAlignment="Center"
ToolTip="Großkundenanschrift der Datenannahmestelle">
Großkundenanschrift
ToolTip="Papierannahmeanschrift für die Datenannahmestelle">
Papierannahmeanschrift
</Label>
<TextBox
x:Name="txt_grosskundenanschrift"

View File

@@ -144,7 +144,7 @@
<DataTemplate x:Key="AppointmentTooltipContentTemplate" />
</localView:BeWoView.Resources>
<Grid>
<Grid x:Name="_RootGrid">
<GroupBox Header="Abwesenheiten" Style="{StaticResource ObjectEditGroupBox}">
<Grid>
<Grid.ColumnDefinitions>

View File

@@ -13,6 +13,8 @@ using DevExpress.XtraScheduler;
using System;
using System.Collections.Generic;
using System.Linq;
// Claude - Task für async/await-Unterstützung (Hintergrundladen)
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Forms;
@@ -77,18 +79,37 @@ namespace BeWo.View.Detail.Report
public List<CompactTeamDC> SelectedTeams => FilterTeams.SelectedItems.Cast<CompactTeamDC>().ToList();
private void Button_Click(object sender, RoutedEventArgs e)
// Claude - Servicaufrufe laufen asynchron im Hintergrund; WaitLayer2 zeigt Ladeindikator;
// - Hauptfenster wird während des Ladens komplett deaktiviert (keine Interaktion möglich)
private async void Button_Click(object sender, RoutedEventArgs e)
{
UpdateFilter();
SelectedMonth = _MonthPicker.SelectedMonth;
SelectedYear = (int)_YearPicker.SelectedItem;
UrlaubsplanerRootObj = ServiceFacade.DoEmployeeServiceSync(s => s.BuildUrlaubsplanerRootObject(_SelectedFilter));
var waitLayer = new WaitLayer2();
_RootGrid.Children.Add(waitLayer);
BeWoApp.CurrentBeWo.MainWindow.IsEnabled = false;
UpdateScheduler(false);
ColorizeFeiertage();
ApplyFeiertagCellStyle();
try
{
var filter = _SelectedFilter;
UrlaubsplanerRootObj = await Task.Run(() =>
ServiceFacade.DoEmployeeServiceSync(s => s.BuildUrlaubsplanerRootObject(filter)));
var absenceOverview = await Task.Run(() =>
ServiceFacade.DoEmployeeServiceSync(x => x.GetAbsenceOverview(filter)));
UpdateScheduler(false, absenceOverview);
ColorizeFeiertage();
ApplyFeiertagCellStyle();
}
finally
{
_RootGrid.Children.Remove(waitLayer);
BeWoApp.CurrentBeWo.MainWindow.IsEnabled = true;
}
}
private void ColorizeFeiertage()
@@ -254,10 +275,14 @@ namespace BeWo.View.Detail.Report
}
public void UpdateScheduler(bool neuLaden)
// Claude - optionaler Parameter absenceOverview: vorgeladene Daten aus Button_Click werden übergeben, um doppelten Serviceaufruf zu vermeiden
public void UpdateScheduler(bool neuLaden, List<EmployeeDC> absenceOverview = null)
{
var absenceReasons = _AbsenceReasonDCs;
var absenceOverview = ServiceFacade.DoEmployeeServiceSync(x => x.GetAbsenceOverview(_SelectedFilter));
if (absenceOverview == null)
absenceOverview = ServiceFacade.DoEmployeeServiceSync(x => x.GetAbsenceOverview(_SelectedFilter));
_ListOfEmployee = absenceOverview;
var start = new DateTime(_SelectedFilter.Year, _SelectedFilter.Month, 1);

View File

@@ -92,7 +92,15 @@ namespace BeWo.View.Detail
MessageBox.Show("Bitte wählen Sie ein Teamleitung aus", "Speichern nicht möglich", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
if (this.ViewModel.IsOwnChatTeam)
{
var employees = ViewModel.OwnChatMember.Where(o => o.Person.PersonType == PersonType.Employee).ToList();
if (employees.Count == 0)
{
MessageBox.Show(Translator.Translate("Bitte wählen Sie mindestens eine Mitarbeiterin oder einen Mitarbeiter aus"), "Speichern nicht möglich", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
}
var lDC = ViewModel.CommitToDataContract();

View File

@@ -23,10 +23,10 @@
<dxg:GridColumn FieldName="ResturlaubVorjahr" Header="Resturlaub Vorjahr" Width="*" AllowEditing="False"/>
<dxg:GridColumn FieldName="VerfallenerResturlaub" Header="Davon verfallen" Width="*" AllowEditing="False"/>
<dxg:GridColumn FieldName="Urlaubsanspruch" Header="Urlaubsanspruch (Jahr)" Width="*" AllowEditing="False"/>
<dxg:GridColumn FieldName="GeschenkteUrlaubstage" Header="Geschenkte Urlaubstage" Width="*" AllowEditing="False"/>
<dxg:GridColumn FieldName="TageUrlaub" Header="Tage Urlaub" Width="*" AllowEditing="False"/>
<dxg:GridColumn FieldName="Resturlaub" Header="Resturlaub" Width="*" AllowEditing="False"/>
<dxg:GridColumn FieldName="TageKrankheit" Header="Tage Krankheit" Width="*" AllowEditing="False"/>
<dxg:GridColumn FieldName="TageUrlaub" Header="Tage Urlaub" Width="*" AllowEditing="False"/>
<dxg:GridColumn FieldName="GeschenkteUrlaubstage" Header="Geschenkte Urlaubstage" Width="*" AllowEditing="False"/>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView AutoWidth="false" ShowGroupPanel="False" ShowGroupedColumns="false" ShowTotalSummary="False" NavigationStyle="Cell" />
@@ -56,10 +56,10 @@
<dxg:GridColumn FieldName="ResturlaubVorjahr" Header="Resturlaub Vorjahr" Width="*" AllowEditing="False"/>
<dxg:GridColumn FieldName="VerfallenerResturlaub" Header="Davon verfallen" Width="*" AllowEditing="False"/>
<dxg:GridColumn FieldName="Urlaubsanspruch" Header="Urlaubsanspruch (Jahr)" Width="*" AllowEditing="False"/>
<dxg:GridColumn FieldName="GeschenkteUrlaubstage" Header="Geschenkte Urlaubstage" Width="*" AllowEditing="False"/>
<dxg:GridColumn FieldName="TageUrlaub" Header="Tage Urlaub" Width="*" AllowEditing="False"/>
<dxg:GridColumn FieldName="Resturlaub" Header="Resturlaub" Width="*" AllowEditing="False"/>
<dxg:GridColumn FieldName="TageKrankheit" Header="Tage Krankheit" Width="*" AllowEditing="False"/>
<dxg:GridColumn FieldName="TageUrlaub" Header="Tage Urlaub" Width="*" AllowEditing="False"/>
<dxg:GridColumn FieldName="GeschenkteUrlaubstage" Header="Geschenkte Urlaubstage" Width="*" AllowEditing="False"/>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView AutoWidth="false" ShowGroupPanel="False" ShowGroupedColumns="false" ShowTotalSummary="False" NavigationStyle="Cell"/>

View File

@@ -0,0 +1,128 @@
<Popup
x:Class="BeWo.View.Detail.Wohneinheit.CustomerWohneinheitBelegungEditPopup"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:local="clr-namespace:BeWo.View.Controls"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:viewmodel="clr-namespace:BeWo.ViewModel"
xmlns:t="clr-namespace:BeWo.MultiLanguage.Markup"
x:Name="root_Popup"
Height="400"
d:DataContext="{d:DesignInstance Type=viewmodel:WohneinheitBelegungVM}"
Closed="root_Popup_Closed"
Opened="Popup_Opened"
Placement="MousePoint"
StaysOpen="True"
mc:Ignorable="d">
<Popup.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\..\..\Styles\ModernOrangeBlack.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Popup.Resources>
<Border
Padding="3"
VerticalAlignment="Stretch"
Background="White"
BorderBrush="Gray"
BorderThickness="1">
<GroupBox
x:Name="groupbox_newBelegung"
Header="Belegung erstellen"
Style="{StaticResource ObjectEditGroupBox}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="10" />
<RowDefinition Height="Auto" />
<RowDefinition Height="10" />
<RowDefinition Height="*" />
<RowDefinition Height="0" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="10" />
<ColumnDefinition Width="*" MinWidth="200" />
<ColumnDefinition Width="20" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="10" />
<ColumnDefinition Width="*" MinWidth="200" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="{t:Translate Wohnprojekt}"/>
<ComboBox
x:Name="combobox_Wohnprojekt"
Grid.Row="0"
Grid.Column="2"
Grid.ColumnSpan="5"
SelectionChanged="WohnprojektComboBox_ItemSelected" />
<Label Grid.Row="1">
Wohneinheit
</Label>
<ComboBox
x:Name="combobox_Wohneinheit"
Grid.Row="1"
Grid.Column="2"
Grid.ColumnSpan="5"
Height="27"
SelectionChanged="WohneinheitComboBox_ItemSelected"
/>
<Label Grid.Row="3">
Beginn
</Label>
<dxe:DateEdit
Grid.Row="3"
Grid.Column="2"
EditValue="{Binding Path=CurrentVM.StartDate, UpdateSourceTrigger=PropertyChanged}"
ShowClearButton="False" />
<Label Grid.Row="3" Grid.Column="4">
Ende
</Label>
<dxe:DateEdit
Grid.Row="3"
Grid.Column="6"
EditValue="{Binding Path=CurrentVM.EndDate, UpdateSourceTrigger=PropertyChanged}"
ShowClearButton="True" />
<Label Grid.Row="5" Content="Notiz" />
<TextBox
Grid.Row="5"
Grid.Column="2"
Grid.ColumnSpan="5"
Style="{StaticResource TextBoxNoticeLarge}"
Text="{Binding Path=CurrentVM.Kommentar, UpdateSourceTrigger=PropertyChanged}" />
<StackPanel
Grid.Row="7"
Grid.ColumnSpan="7"
Margin="3"
HorizontalAlignment="Right"
Orientation="Horizontal">
<Button
x:Name="btn_save"
Margin="3"
Click="Save_Button_Click"
IsEnabled="{Binding Path=CurrentVM.CanSave, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}">
Hinzufügen
</Button>
<Button
x:Name="btn_cancel"
Margin="3"
Click="Cancel_Button_Click">
Abbrechen
</Button>
</StackPanel>
</Grid>
</GroupBox>
</Border>
</Popup>

View File

@@ -0,0 +1,199 @@
using BeWo.ServiceProxy;
using BeWo.ViewModel;
using BeWo.ViewModel.ListViewModel;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Translation;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using static DevExpress.Utils.Drawing.Helpers.NativeMethods;
namespace BeWo.View.Detail.Wohneinheit
{
/// <summary>
/// Interaktionslogik für CustomerWohneinheitBelegungEditPopup.xaml
/// </summary>
public partial class CustomerWohneinheitBelegungEditPopup : Popup
{
List<CompactWohnheimDC> _Wohnheime = null;
Dictionary<long, WohnheimDC> _WohnheidOid2Einheiten = new Dictionary<long, WohnheimDC>();
public WohneinheitBelegungListVM ViewModel
{
get { return DataContext as WohneinheitBelegungListVM; }
}
public List<CompactWohnheimDC> Wohnheime
{
get
{
return _Wohnheime;
}
}
public bool AddMode { get; set; }
public long CustomerOid { get; internal set; }
public CustomerWohneinheitBelegungEditPopup()
{
InitializeComponent();
}
private void Save_Button_Click(object sender, RoutedEventArgs e)
{
//var doppelt = CheckDoppelbelegung(ViewModel.NewVM);
//StaysOpen = false;
//if (doppelt == null || MessageBox.Show(Translator.Translate(String.Format("Die ausgewählte Person wohnt zum angegebenen Zeitpunkt bereits in der Wohnung {0}.\r\n\r\nMöchten Sie trotzdem speichern?", doppelt.Wohneinheit)), "Überschneidung", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
//{
ViewModel.AddNewVMToList();
IsOpen = false;
//}
}
private WohneinheitBelegungVM CheckDoppelbelegung(WohneinheitBelegungVM newVM)
{
foreach (var vm in ViewModel.VMList)
{
if (DateTimeUtils.IsOverlapping(vm.StartDate, vm.EndDate, newVM.StartDate, newVM.EndDate))
{
return vm;
}
}
return null;
}
private void Cancel_Button_Click(object sender, RoutedEventArgs e)
{
ViewModel.CloseNewVM();
IsOpen = false;
}
private void Popup_Opened(object sender, EventArgs e)
{
if (_Wohnheime == null)
{
_Wohnheime = ServiceFacade.DoCustomerServiceSync(s => s.GetAllActiveWohnheimeCompact()).OrderBy(w => w.WohnheimName).ToList();
}
var listvm = ViewModel;
AddMode = listvm.EditVM is null;
combobox_Wohnprojekt.ItemsSource = _Wohnheime;
if (AddMode)
{
btn_cancel.Visibility = Visibility.Visible;
btn_save.Visibility = Visibility.Visible;
StaysOpen = true;
groupbox_newBelegung.Header = "Belegung erstellen";
combobox_Wohnprojekt.SelectedItem = null;
combobox_Wohneinheit.SelectedItem = null;
if (listvm.CurrentVM.Customer == null)
{
listvm.CurrentVM.Customer = new CompactCustomerDC { CustomerOid = CustomerOid };
}
}
else
{
btn_cancel.Visibility = Visibility.Collapsed;
btn_save.Visibility = Visibility.Collapsed;
StaysOpen = false;
groupbox_newBelegung.Header = "Belegung bearbeiten";
if (listvm.CurrentVM.Wohneinheit is object)
{
long wohnheimOid = listvm.CurrentVM.Wohneinheit.DataContract.WohnheimOid;
long wohneinheitOid = listvm.CurrentVM.Wohneinheit.Oid.Value;
combobox_Wohnprojekt.SelectedItem = _Wohnheime.FirstOrDefault(w => w.WohnheimOid == wohnheimOid);
UpdateWohneinheitComboBox(wohneinheitOid);
}
}
}
private void root_Popup_Closed(object sender, EventArgs e)
{
var vmlist = ViewModel;
var currentvm = vmlist.CurrentVM;
root_Popup.Focus();
if (currentvm is object)
{
if (AddMode)
{
vmlist.CloseNewVM();
}
else
{
vmlist.CloseEditVM();
}
}
}
private void WohnprojektComboBox_ItemSelected(object sender, SelectionChangedEventArgs e)
{
UpdateWohneinheitComboBox(null);
}
private void UpdateWohneinheitComboBox(long? selectedWohneinheitOid)
{
var wohneim = combobox_Wohnprojekt.SelectedItem as CompactWohnheimDC;
if (wohneim != null)
{
var wohnheimOid = wohneim.WohnheimOid;
if (!_WohnheidOid2Einheiten.ContainsKey(wohnheimOid))
{
var wh = ServiceFacade.DoCustomerServiceSync(s => s.LoadWohnheim(wohnheimOid));
foreach (var item in wh.Wohneinheiten)
{
item.WohnheimOid = wh.WohnheimOid.Value;
}
_WohnheidOid2Einheiten.Add(wohnheimOid, wh);
}
var list = _WohnheidOid2Einheiten[wohnheimOid].Wohneinheiten;
var vmlist = new WohneinheitListVM(list);
combobox_Wohneinheit.ItemsSource = vmlist.VMList;
if (selectedWohneinheitOid.HasValue)
{
combobox_Wohneinheit.SelectedItem = vmlist.VMList.FirstOrDefault(w => w.Oid == selectedWohneinheitOid);
}
}
}
private void WohneinheitComboBox_ItemSelected(object sender, SelectionChangedEventArgs e)
{
ViewModel.CurrentVM.SetNewWohneinheit(combobox_Wohneinheit.SelectedItem as WohneinheitVM);
}
}
}

View File

@@ -0,0 +1,132 @@
<view:BeWoView
x:Class="BeWo.View.Detail.Wohneinheit.CustomerWohneinheitenView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:BeWo.View.Controls"
xmlns:core="clr-namespace:BS.Shared.Core;assembly=BS.Shared"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:BeWo.View.Detail.Wohneinheit"
xmlns:t="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:validation="clr-namespace:BeWo.Validation"
xmlns:view="clr-namespace:BeWo.View"
Width="Auto"
Height="Auto"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Focusable="True"
mc:Ignorable="d">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<GroupBox
x:Name="groupbox_Wohneinheit_Buchung"
Header="{t:Translate Wohnungsbelegung}"
Style="{StaticResource ObjectEditGroupBox}"
Visibility="Visible">
<Grid Margin="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="26*" />
<ColumnDefinition Width="29*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Button
Grid.ColumnSpan="2"
Margin="3"
HorizontalAlignment="Left"
Click="Button_NewBelegung_Click"
Content="Belegung hinzufügen"
Visibility="{Binding Path=PermissionWohneinheitBelegungManage, Converter={StaticResource BoolVisibilityConverter}}" />
<dxg:GridControl
x:Name="datagrid_belegung"
Grid.Row="1"
Grid.ColumnSpan="2"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
DataSource="{Binding VMList}">
<dxg:GridColumn
x:Name="ColumnButtons2"
Width="Auto"
AllowEditing="False"
FieldName="ReportLink"
Header=" "
Visible="{Binding Path=PermissionWohneinheitBelegungManage}">
<dxg:GridColumn.DisplayTemplate>
<ControlTemplate>
<StackPanel Margin="1" Orientation="Horizontal">
<Button
x:Name="btn_delete"
Width="20"
Height="18"
Margin="1"
Padding="0"
VerticalAlignment="Center"
Click="btn_belegung_delete_Click"
Content="r"
FontFamily="Webdings"
FontSize="11"
Foreground="#FFFFFF"
ToolTip="Löschen" />
</StackPanel>
</ControlTemplate>
</dxg:GridColumn.DisplayTemplate>
</dxg:GridColumn>
<dxg:GridColumn
Width="200"
AllowEditing="False"
FieldName="Wohneinheit.Wohnname"
Header="Wohnungsname"
ReadOnly="True" />
<dxg:GridColumn
Width="150"
AllowEditing="False"
FieldName="Wohneinheit.Zimmername"
Header="Zimmername"
ReadOnly="True" />
<dxg:GridColumn
Width="100"
AllowEditing="False"
FieldName="StartDate"
Header="Start"
ReadOnly="True">
<dxg:GridColumn.EditSettings>
<dxe:DateEditSettings HorizontalContentAlignment="Right" DisplayFormat="d" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
<dxg:GridColumn
Width="100"
AllowEditing="False"
FieldName="EndDate"
Header="Ende"
ReadOnly="True">
<dxg:GridColumn.EditSettings>
<dxe:DateEditSettings HorizontalContentAlignment="Right" DisplayFormat="d" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
<dxg:GridColumn
Width="*"
MinWidth="50"
AllowEditing="False"
FieldName="Kommentar"
Header="Kommentar" />
<dxg:GridControl.View>
<dxg:TableView
x:Name="datagridview2"
BestFitMode="AllRows"
BestFitModeOnSourceChange="AllRows"
NavigationStyle="Cell"
RowDoubleClick="datagridview2_RowDoubleClick" />
</dxg:GridControl.View>
</dxg:GridControl>
</Grid>
</GroupBox>
<local:CustomerWohneinheitBelegungEditPopup Closed="popup_newBelegung_Closed" x:Name="popup_newBelegung" />
</Grid>
</view:BeWoView>

View File

@@ -0,0 +1,361 @@
using BeWo.Annotations;
using BeWo.Core;
using BeWo.ServiceProxy;
using BeWo.Validation;
using BeWo.View.Controls;
using BeWo.ViewModel;
using BeWo.ViewModel.ListViewModel;
using BS.Shared;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
using BS.Shared.Translation;
using DevExpress.Utils;
using DevExpress.Xpf.Editors;
using DevExpress.Xpf.Grid;
using DevExpress.XtraEditors.Filtering;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
namespace BeWo.View.Detail.Wohneinheit
{
public partial class CustomerWohneinheitenView
{
public WohneinheitBelegungVM NewWohneinheitBelegung { get; set; }
private WohneinheitBelegungListVM _ViewModel;
private WohneinheitBelegungListVM ViewModel
{
get { return _ViewModel; }
set
{
DataContext = value;
_ViewModel = value;
}
}
private readonly long _customerOid;
public override bool IsDirty
{
get
{
return ViewModel != null && ViewModel.IsDirty;
}
}
public CustomerWohneinheitenView(long customerOid)
{
InitializeComponent();
this._customerOid = customerOid;
popup_newBelegung.CustomerOid = customerOid;
NewWohneinheitBelegung = new WohneinheitBelegungVM(new WohneinheitBelegungDC());
InitRights();
ReloadViewModel();
}
private void InitRights()
{
bool editRight;
DefaultBoolean editRightAsDefaultBoolean;
bool deleteRight;
bool createRight;
editRight = BeWoApp.LoggedOnUser.HasRight(UserRightType.WohnheimView_Wohneinheit_Belegung_Manage) || BeWoApp.LoggedOnUser.HasRight(UserRightType.EditAll);
editRightAsDefaultBoolean = (DefaultBoolean)(Convert.ToInt32((BeWoApp.LoggedOnUser.HasRight(UserRightType.WohnheimView_Wohneinheit_Belegung_Manage)) || BeWoApp.LoggedOnUser.HasRight(UserRightType.EditAll)) + 1);
deleteRight = BeWoApp.LoggedOnUser.HasRight(UserRightType.WohnheimView_Wohneinheit_Belegung_Manage) || BeWoApp.LoggedOnUser.HasRight(UserRightType.DeleteAll);
createRight = BeWoApp.LoggedOnUser.HasRight(UserRightType.WohnheimView_Wohneinheit_Belegung_Manage) || BeWoApp.LoggedOnUser.HasRight(UserRightType.CreateAll);
}
private void ReloadViewModel()
{
ServiceFacade.DoCustomerServiceAsync(s => s.LoadWohneinheitenForCustomer(_customerOid, null), r => this.Dispatch(
delegate
{
if (r.Any())
{
ViewModel = new WohneinheitBelegungListVM(r);
}
else
{
ViewModel = new WohneinheitBelegungListVM(new List<WohneinheitBelegungDC>());
}
}));
}
private void ButtonBargeldtransaktionDeleteClick(object sender, RoutedEventArgs e)
{
var btn = ((Button) sender);
var transaktion = ((BargeldtransaktionsVM) ((EditGridCellData) btn.Tag).RowData.Row);
if (MessageBox.Show("Möchten Sie den Eintrag wirklich löschen?", "Transaktion löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.No)
{
return;
}
var cellEditor = ((CellEditor) btn.TemplatedParent).RowData.View;
var selectedBargeldkasse = (BargeldkassenVM) cellEditor.DataControl.Tag;
var removingSuccessfull = selectedBargeldkasse.Bargeldtransaktionen.VMList.Remove(transaktion);
selectedBargeldkasse.RecalculateTransaktionsbestaende();
var kb = selectedBargeldkasse.Kassenbestand;
ServiceFacade.DoOperationsServiceAsync(s => s.UpdateBargeldkasse(selectedBargeldkasse.CommitToDataContract()), r => this.Dispatch(ReloadViewModel));
}
private void ButtonAddBargeldkasseClick(object sender, RoutedEventArgs e)
{
var neu = ViewModel.NewVM;
//neu.ObjectOid = currentObjectOid;
//neu.ObjectTid = currentObjectTid;
//String name = neu.Kassenname;
//ServiceFacade.DoOperationsServiceAsync(s => s.InsertNewBargeldkasse(neu.CommitToDataContract()), r => this.Dispatch(delegate
//{
// popup_newBargeldkasse.IsOpen = false;
// ViewModel.NewVM = new BargeldkassenVM(new BargeldkassenDC());
// ReloadViewModel(true, name);
//}));
}
private void ButtonAddBargeldtransaktionClick(object sender, RoutedEventArgs e)
{
//if (!Validate(groupbox_newBargeldtransaktion))
//{
// return;
//}
//if (!NewBargeldtransaktion.Betrag.HasValue || NewBargeldtransaktion.Zahlungstyp == null)
//{
// return;
//}
//var transaktionsBetrag = NewBargeldtransaktion.Betrag * (NewBargeldtransaktion.Zahlungstyp.Enum == Zahlungstyp.Auszahlung ? -1 : 1);
//var latestTransactionDate = new DateTime(1, 1, 1);
//foreach (var tVM in SelectedBargeldkasse.Bargeldtransaktionen.VMList.Where(tVM => tVM.Zahlungsdatum > latestTransactionDate && tVM.Zahlungsdatum != null))
//{
// latestTransactionDate = tVM.Zahlungsdatum.Value.GetShortDateTime();
//}
//if (NewBargeldtransaktion.Zahlungsdatum <= latestTransactionDate)
//{
// var vorherigeTransaktion = SelectedBargeldkasse.Bargeldtransaktionen.VMList.OrderByDescending(o => o.Zahlungsdatum).FirstOrDefault(f => f.Zahlungsdatum <= NewBargeldtransaktion.Zahlungsdatum);
// var liste = vorherigeTransaktion == null ?
// SelectedBargeldkasse.Bargeldtransaktionen.VMList.OrderBy(o => o.Zahlungsdatum) :
// SelectedBargeldkasse.Bargeldtransaktionen.VMList.Where(w => w.Zahlungsdatum > vorherigeTransaktion.Zahlungsdatum).OrderBy(o => o.Zahlungsdatum);
// NewBargeldtransaktion.Transaktionskassenbestand = (vorherigeTransaktion == null ? 0m : vorherigeTransaktion.Transaktionskassenbestand) + transaktionsBetrag;
// var tmp = NewBargeldtransaktion.Transaktionskassenbestand;
// foreach (var tvm in liste)
// {
// tvm.Transaktionskassenbestand = tmp + tvm.Betrag * (tvm.Zahlungstyp.Enum == Zahlungstyp.Auszahlung ? -1 : 1);
// tmp = tvm.Transaktionskassenbestand != null ? tvm.Transaktionskassenbestand.Value : 0m;
// }
//}
//else
//{
// NewBargeldtransaktion.Transaktionskassenbestand = SelectedBargeldkasse.Kassenbestand + transaktionsBetrag;
//}
//SelectedBargeldkasse.Bargeldtransaktionen.NewVM = NewBargeldtransaktion;
//SelectedBargeldkasse.Bargeldtransaktionen.AddNewVMToList();
//var kb = SelectedBargeldkasse.Kassenbestand;
//NewBargeldtransaktion = new BargeldtransaktionsVM(new BargeldtransaktionDC());
//ServiceFacade.DoOperationsServiceAsync(s => s.UpdateBargeldkasse(SelectedBargeldkasse.CommitToDataContract()), r => this.Dispatch(delegate
//{
// popup_newBargeldtransaktion.IsOpen = false;
// NewBargeldtransaktion = new BargeldtransaktionsVM(new BargeldtransaktionDC());
// SelectedBargeldkasse = null;
// OnPropertyChanged("NewBargeldtransaktion");
// OnPropertyChanged("SelectedBargeldkasse");
// ReloadViewModel(false, null);
//}));
}
private void ButtonCancelAddBargeldtransaktionClick(object sender, RoutedEventArgs e)
{
//NewBargeldtransaktion = new BargeldtransaktionsVM(new BargeldtransaktionDC());
//SelectedBargeldkasse = null;
//OnPropertyChanged("NewBargeldtransaktion");
//OnPropertyChanged("SelectedBargeldkasse");
//popup_newBargeldtransaktion.IsOpen = false;
}
private void ButtonOpenAddBargeldtransaktionClick(object sender, RoutedEventArgs e)
{
//var abc = ((Button) sender).Tag;
//if (abc != null)
//{
// var kasse = (BargeldkassenVM) abc;
// SelectedBargeldkasse = kasse;
// OnPropertyChanged("SelectedBargeldkasse");
//}
//popup_newBargeldtransaktion.IsOpen = true;
}
private void BtnDeleteBargeldkasseClick(object sender, RoutedEventArgs e)
{
//var button = (Button) sender;
//var selectedBargeldkasse = (BargeldkassenVM) button.Tag;
//var result = MessageBox.Show(string.Format("Möchten Sie die Bargeldkasse \"{0}\" wirklich löschen?", selectedBargeldkasse.Kassenname), "Bargeldkasse löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning);
//if (result == MessageBoxResult.No)
//{
// return;
//}
//ViewModel.VMList.Remove(selectedBargeldkasse);
//ServiceFacade.DoOperationsServiceAsync(s => s.DeactivateBargeldkasse(selectedBargeldkasse.DataContract.BargeldkassenOid.Value, selectedBargeldkasse.DataContract.BargeldkassenVersion.Value), () => this.Dispatch(ReloadViewModelOhneSortierung));
}
private void Button_NewBelegung_Click(object sender, RoutedEventArgs e)
{
if (popup_newBelegung.IsOpen)
return;
var success = AddBelegung();
if (success)
popup_newBelegung.IsOpen = true;
}
private void btn_belegung_delete_Click(object sender, RoutedEventArgs e)
{
var listvm = ViewModel;
if (listvm.EditVM is object)
return;
var vm = datagrid_belegung.GetCurrentValue<WohneinheitBelegungVM>();
if (MessageBox.Show(Translator.Translate(String.Format("Sind Sie sicher, dass Sie die Belegung für die Wohneinheit {0} löschen möchten?", vm.Wohneinheit)), "Löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
{
//_ = listvm.VMList.Remove(vm);
ServiceFacade.DoCustomerServiceSync(s => s.DeleteWohneinheitBelegungen(new List<WohneinheitBelegungDC> { vm.CommitToDataContract() }));
ReloadViewModel();
}
e.Handled = true;
}
private void datagridview2_RowDoubleClick(object sender, RowDoubleClickEventArgs e)
{
if (popup_newBelegung.IsOpen)
return;
var vm = datagrid_belegung.GetCurrentValue<WohneinheitBelegungVM>();
var success = EditBelegung(vm);
if (success)
popup_newBelegung.IsOpen = true;
}
public bool AddBelegung(object wohneinheit_oid = null, DateTime? start = null)
{
if (!ViewModel.PermissionWohneinheitBelegungManage)
return false;
var beleg_list_vm = ViewModel;
var vm = beleg_list_vm.NewVM;
var today = DateTime.Today;
var first_next_month = new DateTime(today.Year, today.Month, 1);
vm.StartDate = first_next_month;
if (wohneinheit_oid is long oid)
{
//xxxx vm.Wohneinheit = WohneinheitListVM.VMList.First(x => x.Oid == oid);
}
if (start is DateTime startDate)
{
vm.StartDate = startDate;
}
beleg_list_vm.CurrentVM = vm;
return true;
}
public bool EditBelegung(WohneinheitBelegungVM vm)
{
if (vm is null || !ViewModel.VMList.Contains(vm))
return false;
if (!ViewModel.PermissionWohneinheitBelegungManage)
return false;
ViewModel.EditVM = vm;
ViewModel.CurrentVM = vm;
return true;
}
private void popup_newBelegung_Closed(object sender, EventArgs e)
{
SaveWohneinheitBelegungen();
}
private void SaveWohneinheitBelegungen()
{
var dcList = new List<WohneinheitBelegungDC>();
var dirtyList = ViewModel.VMList.Where(v => v.IsDirty).ToList();
foreach (var vm in dirtyList)
{
var dc = vm.CommitToDataContract();
dc.Wohneinheit = vm.Wohneinheit?.DataContract;
dc.Customer = new CompactCustomerDC { CustomerOid = _customerOid };
dcList.Add(dc);
}
if (dcList.Count > 0)
{
ServiceFacade.DoCustomerServiceSync(s => s.UpdateWohneinheitBelegungen(dcList));
ReloadViewModel();
}
}
}
}

View File

@@ -37,7 +37,7 @@
<Button
Grid.ColumnSpan="2"
Margin="3"
HorizontalAlignment="Right"
HorizontalAlignment="Left"
Click="Button_NewBelegung_Click"
Content="Belegung hinzufügen"
Visibility="{Binding Path=PermissionWohneinheitBelegungManage, Converter={StaticResource BoolVisibilityConverter}}" />
@@ -75,12 +75,6 @@
</ControlTemplate>
</dxg:GridColumn.DisplayTemplate>
</dxg:GridColumn>
<dxg:GridColumn
Width="70"
AllowEditing="False"
FieldName="Oid"
Header="Nr."
ReadOnly="True" />
<dxg:GridColumn
Width="200"
AllowEditing="False"

View File

@@ -42,7 +42,7 @@
</Grid.RowDefinitions>
<StackPanel
Grid.ColumnSpan="2"
HorizontalAlignment="Right"
HorizontalAlignment="Left"
Orientation="Horizontal">
<Button Click="Button_NewChildWohneinheit_Click">
<Button.Visibility>

View File

@@ -502,6 +502,7 @@
Grid.ColumnSpan="3"
Height="23"
Margin="3,0,3,3"
AllowNullInput="False"
EditValue="{val:ValidationBinding Mode=TwoWay,
Path=EditStartDate}"
MaskType="DateTimeAdvancingCaret" />

View File

@@ -3335,10 +3335,13 @@
</Grid.ColumnDefinitions>
<StackPanel
x:Name="PanelConversationButton"
Margin="0"
Margin="3,0"
VerticalAlignment="Center"
Orientation="Horizontal">
<ai:AiChatButton x:Name="btn_ai_conv" DataContext="{Binding AiChatButtonConversationViewModel}">
<ai:AiChatButton
x:Name="btn_ai_conv"
Margin="3,0"
DataContext="{Binding AiChatButtonConversationViewModel}">
<ai:AiChatButton.Resources>
<ResourceDictionary>
<Style BasedOn="{StaticResource NavigationToolbarButtonStyle}" TargetType="{x:Type Button}" />

View File

@@ -5088,9 +5088,12 @@ namespace BeWo.View.Detail.Zeiterfassung
{
var records = GetVisibleRecordVMs();
var context = ViewModel.GetVisibleInformationReferences(records);
var oid = supportConceptSelectionControl.SelectedItem.SupportConceptTreeNodeDC.SupportConcept.SupportConceptOid;
var oid = supportConceptSelectionControl.SelectedItem.SupportConceptTreeNodeDC?.SupportConcept.SupportConceptOid;
var dc = new AiViewContextDC()
if (!chkWithClient.IsChecked.Value)
oid = null;
var dc = new AiViewContextDC()
{
Primary = oid,
References = context

View File

@@ -490,7 +490,7 @@ namespace BeWo.View.Document
var filename = selectedFolder.Name;
window.Close();
SaveRtfInBeWoFolder(defaultFolder, newRtfText, filename, objectTid, objectOid, folderSelectedAction);
SaveRtfInBeWoFolder(selectedFolder, newRtfText, filename, objectTid, objectOid, folderSelectedAction);
}

View File

@@ -308,7 +308,8 @@ namespace BeWo.View
BeWoApp.LoggedOnUser.HasRight(UserRightType.ViewAll)) && sc2.StartDate.HasValue)
{
#if DEBUG
MainControl.NavigateTo(new SchedulingMasterView(sc2.StartDate.Value, sc2) { ParentView = this });
//MainControl.NavigateTo(new SchedulingMasterView(sc2.StartDate.Value, sc2) { ParentView = this });
MainControl.NavigateTo(new SchedulerMasterView(sc2.StartDate.Value, sc2) { ParentView = this });
#else
MainControl.NavigateTo(new SchedulerMasterView(sc2.StartDate.Value, sc2) { ParentView = this });
#endif

View File

@@ -159,27 +159,6 @@
Foreground="Black"
Header="{markup:Translate Vermittlung}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemFalldaten"
Foreground="Black"
Header="{t:Translate Vermittlung gemeinnütziger Arbeit}">
<dxa:AccordionItem
Name="TabitemAuftragsherkunft"
Foreground="Black"
Header="{markup:Translate Auftragsherkunft}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemVermittlungsgrundlage"
Foreground="Black"
Header="{markup:Translate Vermittlungsgrundlage}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemVerlauf"
Foreground="Black"
Header="{markup:Translate Verlauf}"
Selected="Tabitem_Selected" />
</dxa:AccordionItem>
</dxa:AccordionItem>
<dxa:AccordionItem Foreground="{StaticResource TabItemTextBrush}" Header="{t:Translate MitarbeiterPlural}">
<dxa:AccordionItem

View File

@@ -95,10 +95,6 @@ namespace BeWo.View.Master
// TabitemOwnChatSettings.Visibility = Visibility.Collapsed;
//}
if (!BeWoApp.AppSettings.ShowWohnhilfe)
{
TabitemFalldaten.Visibility = Visibility.Collapsed;
}
#if DEBUG
TabitemSbd.Visibility = Visibility.Visible;
@@ -553,18 +549,6 @@ namespace BeWo.View.Master
VMFactory.CreateRatingTypeListVMAsync(r =>
this.Dispatch(() => AddView(TabitemRatingTypes, new RatingTypeView(r))));
return;
case nameof(TabitemAuftragsherkunft):
VMFactory.CreateValueListVMAsync(ValueListEntryType.Auftragsherkunft,
r => this.Dispatch(() => AddView(TabitemAuftragsherkunft, new ValueListView(r))));
return;
case nameof(TabitemVermittlungsgrundlage):
VMFactory.CreateValueListVMAsync(ValueListEntryType.Vermittlungsgrundlage,
r => this.Dispatch(() => AddView(TabitemVermittlungsgrundlage, new ValueListView(r))));
return;
case nameof(TabitemVerlauf):
VMFactory.CreateValueListVMAsync(ValueListEntryType.VgAVerlauf,
r => this.Dispatch(() => AddView(TabitemVerlauf, new ValueListView(r))));
return;
case nameof(TabitemSozioTherapie):
CheckMandatorVM(() => AddView(TabitemSozioTherapie, new SoziotherapieSettingsView(this)));
return;

View File

@@ -190,7 +190,7 @@
x:Name="listbox_messages"
Grid.Row="1"
Background="Transparent"
ItemsSource="{Binding SelectedVM.Messages.VMList, Converter={StaticResource TestDebugConverter}}">
ItemsSource="{Binding SelectedVM.Messages.VMList}">
<ListView.ItemTemplate>
<DataTemplate x:Name="messages_datatemplate" DataType="viewmodel:AiConversationMessageVM">
<TextBlock Text="{Binding Json}" />

View File

@@ -20,6 +20,8 @@ namespace BeWo.View.Master
var scheduler = new NewSchedulerView(pIntervalStartDate, pAppointment);
grid_root.Children.Add(scheduler);
//scheduler.OpenAppointmentFromHomePanel();
}
}
}

View File

@@ -119,21 +119,7 @@
Text="{Binding Path=MainAttendant}" />
<!-- Image x:Name="imgArchiv" Grid.Row="0" Grid.Column="2" Visibility="Collapsed" Grid.RowSpan="2" Source="..\Ressources\Icons\Archiv.png" Margin="0,0,5,0" Height="30" VerticalAlignment="Center" HorizontalAlignment="Stretch" Width="Auto" RenderTransformOrigin="0.5,0.5" / -->
<TextBlock
Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="4"
Margin="0,0,3,0"
VerticalAlignment="Center"
Visibility="{Binding Path=IsDeleted, Converter={StaticResource AnonymizationRight2VisibilityConverter}, ConverterParameter=Customer}">
<Hyperlink
Click="Hyperlink_Anonymize_Click"
Foreground="#FFF97E7B"
Tag="{Binding}"
TargetName="_NewWindow">
Anonymisieren
</Hyperlink>
</TextBlock>
<TextBlock
Grid.Row="0"
Grid.RowSpan="2"

View File

@@ -1,33 +1,33 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using BeWo.Core;
using BeWo.Core;
using BeWo.Core.Commands;
using BeWo.Core.Config;
using BeWo.Core.Service;
using BeWo.MultiLanguage;
using BeWo.ServiceProxy;
using BeWo.View.Detail;
using BeWo.View.Navigation.Filter;
using BeWo.View.Navigation.Sorter;
using BeWo.View.Windows;
using BeWo.ViewModel;
using BeWo.ViewModel.View.AI;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
using BeWo.Core.Service;
using BeWo.MultiLanguage;
using BS.Shared.Translation;
using Microsoft.Win32;
using BeWo.View.Windows;
using DevExpress.Mvvm;
using DevExpress.Xpf.Editors;
using Microsoft.Win32;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using BeWo.Core.Commands;
using BeWo.ViewModel.View.AI;
using System.Windows.Media;
namespace BeWo.View.Navigation
{
@@ -41,6 +41,7 @@ namespace BeWo.View.Navigation
//private readonly CheckBox chkShowOnlyTeamSCs;
private readonly ComboBox supportConceptFilterComboBox;
private readonly ComboBoxEdit betreuungsartFilterComboBox;
private IEnumerable<IFilterableDC> objectList = null;
private IEnumerable<IFilterableDC> recentList = null;
@@ -186,6 +187,39 @@ namespace BeWo.View.Navigation
this.mainNavigationView.sortPanel.Children.Insert(3, lbl);
this.mainNavigationView.sortPanel.Children.Insert(4, this.supportConceptFilterComboBox);
betreuungsartFilterComboBox = new ComboBoxEdit();
betreuungsartFilterComboBox.FontSize = 12;
betreuungsartFilterComboBox.Margin = new Thickness(10, 0, 0, 0);
betreuungsartFilterComboBox.Width = 180;
betreuungsartFilterComboBox.IsTextEditable = false;
betreuungsartFilterComboBox.NullText = Translator.Translate("Nach Betreuungsart filtern");
betreuungsartFilterComboBox.ItemsSource = ServiceFacade.DoValueListServiceSync(s => s.GetAllValueListEntrysByType(ValueListEntryType.CustomerCareType));
betreuungsartFilterComboBox.DisplayMember = "TypeDescription";
betreuungsartFilterComboBox.StyleSettings = new CheckedComboBoxStyleSettings();
betreuungsartFilterComboBox.EditValueChanged += BetreuungsartComboBox_EditValueChanged;
//< dxe:ComboBoxEdit x:Name = "checkedComboBox"
// NullText = "Select categories"
// IsTextEditable = "False"
// ItemsSource = "{Binding Categories}"
// EditValue = "{Binding SelectedCategories}"
// DisplayMember = "CategoryName"
// ShowCustomItems = "True" >
// < dxe:ComboBoxEdit.StyleSettings >
// < dxe:CheckedComboBoxStyleSettings />
// </ dxe:ComboBoxEdit.StyleSettings >
// </ dxe:ComboBoxEdit >
lbl = new TextBlock
{
Text = Translator.Translate("Betreuungsart:"),
FontSize = 12,
Margin = new Thickness(8, 2, -3, 0)
};
mainNavigationView.sortPanel.Children.Insert(5, lbl);
mainNavigationView.sortPanel.Children.Insert(6, betreuungsartFilterComboBox);
this.UpdateCustomFilter();
if (BeWoApp.LoggedOnUser.HasRight(UserRightType.SupportConceptView_Create))
@@ -257,7 +291,12 @@ namespace BeWo.View.Navigation
this.UpdateCustomFilter();
}
private CustomFilter CreateNewCustomFilter()
private void BetreuungsartComboBox_EditValueChanged(object sender, EditValueChangedEventArgs e)
{
UpdateCustomFilter();
}
private CustomFilter CreateNewCustomerFilter()
{
SupportConceptNavigationFilter filter = new SupportConceptNavigationFilter();
if (this.supportConceptFilterComboBox.SelectedItem != null)
@@ -274,6 +313,24 @@ namespace BeWo.View.Navigation
return filter;
}
private CustomFilter CreateNewBetreuungsartFilter()
{
if (betreuungsartFilterComboBox.SelectedItems == null)
return null;
var list = new List<ValueListEntryDC>();
foreach (var item in betreuungsartFilterComboBox.SelectedItems)
{
list.Add(item as ValueListEntryDC);
}
var filter = new ValueListFilter { SelectedValueListEntries = list, ValueListProperty = "CustomerCareTypes" };
return filter;
}
private void OnLoaded(object sender, RoutedEventArgs e)
{
ReloadData(false);
@@ -283,7 +340,7 @@ namespace BeWo.View.Navigation
private void UpdateCustomFilter()
{
mainNavigationView.CustomFilters = new List<CustomFilter> { CreateNewCustomFilter() };
mainNavigationView.CustomFilters = new List<CustomFilter> { CreateNewCustomerFilter(), CreateNewBetreuungsartFilter() };
}
private bool mainNavigationView_ArchiveObject(IFilterableDC obj)

View File

@@ -4,6 +4,7 @@ using System.ComponentModel;
using System.Windows.Media;
using BeWo.ServiceProxy;
using BeWo.View.Navigation.Filter;
using BS.Shared.DataContracts.Compact;
namespace BeWo.View.Search
@@ -25,6 +26,7 @@ namespace BeWo.View.Search
}
public bool FetchReferenceNumbers { get; set; }
public CustomerFilterEnum CustomerFilter { get; set; }
public bool OnlyOwnChat { get; set; }
protected override void GetAll(Action<List<CompactCustomerDC>> pCallBack)

View File

@@ -237,7 +237,10 @@ namespace BeWo.ViewModel
public bool CanShareEdit
{
get => BeWoApp.HasLoggedOnUserRight(UserRightType.AiModulePromptbausteinShare) && Creator?.EmployeeOid is long owner && owner == BeWoApp.CompactLoggedOnEmployee.EmployeeOid;
get => BeWoApp.HasLoggedOnUserRight(UserRightType.AiModulePromptbausteinShare)
&& Creator?.EmployeeOid is long owner
&& owner == BeWoApp.CompactLoggedOnEmployee.EmployeeOid
&& CanEdit;
}
public AiPromptbausteinFolderVM Parent { get; set; }

View File

@@ -126,6 +126,14 @@ namespace BeWo.ViewModel
get => ShowPrompt && ShowPromptByTenant;
}
public bool CanShareEdit
{
get => BeWoApp.HasLoggedOnUserRight(UserRightType.AiModulePromptbausteinShare)
&& Creator?.EmployeeOid is long owner
&& owner == BeWoApp.CompactLoggedOnEmployee.EmployeeOid
&& CanEdit;
}
public string FavoritenHeader => IsFavorite ? "Favorit entfernen" : "Favorit hinzufügen";
protected override void InitByDataContract(AiPromptbausteinPromptDC pDataContract)

View File

@@ -84,7 +84,7 @@ namespace BeWo.ViewModel
public bool CanEdit
{
get => _CanEdit;
get => _CanEdit && BeWoApp.HasLoggedOnUserRight(UserRightType.AiModulePromptbausteineEdit);
set => SetProperty(ref _CanEdit, value, nameof(CanEdit), () => DataContract.CanEdit);
}
@@ -94,6 +94,14 @@ namespace BeWo.ViewModel
set => SetProperty(ref _Steps, value, nameof(Steps));
}
public bool CanShareEdit
{
get => BeWoApp.HasLoggedOnUserRight(UserRightType.AiModulePromptbausteinShare)
&& Creator?.EmployeeOid is long owner
&& owner == BeWoApp.CompactLoggedOnEmployee.EmployeeOid
&& CanEdit;
}
public string FavoritenHeader => IsFavorite ? "Favorit entfernen" : "Favorit hinzufügen";
public override bool IsDirty => base.IsDirty || Steps.IsDirty;

View File

@@ -156,6 +156,7 @@ namespace BeWo.ViewModel
liste.DoForEach(f => f.Transaktionskassenbestand = 0);
var vorherige = liste.FirstOrDefault();
vorherige.Transaktionskassenbestand = Anfangsbestand ?? 0;
if (vorherige != null)
{
foreach (var transaktion in liste)

View File

@@ -23,7 +23,7 @@ namespace BeWo.ViewModel
private EnumValue<Zahlungstyp> _Zahlungstyp;
private DateTime? _Zahlungsdatum;
private decimal? _Betrag;
private decimal? _Transaktionskassenbestand;
private decimal? _Transaktionskassenbestand;
private string _Belegnummer;
private string _Notice;
@@ -125,11 +125,84 @@ namespace BeWo.ViewModel
}
}
public String InsUser
public bool DarfEinzahlungBearbeiten
{
get
{
return Zahlungstyp.Enum == BS.Shared.Zahlungstyp.Einzahlung;
}
}
public bool DarfAuszahlungBearbeiten
{
get
{
return Zahlungstyp.Enum == BS.Shared.Zahlungstyp.Auszahlung;
}
}
public decimal? BetragEinzahlung
{
get {
if (Zahlungstyp.Enum == BS.Shared.Zahlungstyp.Einzahlung)
{
return _Betrag;
}
return null;
}
set
{
if (Zahlungstyp.Enum == BS.Shared.Zahlungstyp.Einzahlung)
{
if (!AreDifferent(_Betrag, value))
{
return;
}
_Betrag = value;
StoreDirtyInformation(AreDifferent(DataContract.Betrag, value), PropertyName_Betrag);
FirePropertyChanged(PropertyName_Betrag);
}
}
}
public decimal? BetragAuszahlung
{
get
{
if (Zahlungstyp.Enum == BS.Shared.Zahlungstyp.Auszahlung)
{
return _Betrag;
}
return null;
}
set
{
if (Zahlungstyp.Enum == BS.Shared.Zahlungstyp.Auszahlung)
{
if (!AreDifferent(_Betrag, value))
{
return;
}
_Betrag = value;
StoreDirtyInformation(AreDifferent(DataContract.Betrag, value), PropertyName_Betrag);
FirePropertyChanged(PropertyName_Betrag);
}
}
}
public String InsUser
{
get { return DataContract.InsUser; }
}
public DateTime? InsTs
{
get { return DataContract.InsTs; }
}
public decimal? Transaktionskassenbestand
{
get { return _Transaktionskassenbestand; }

View File

@@ -230,8 +230,9 @@ namespace BeWo.ViewModel
private String _HealthInsurance;
private String _InsuranceNumber;
private string _VersichertenStatus;
private string _BGNummer;
private ActivationTypeId _ActivationType;
private ActivationTypeId _ActivationType;
private ArbeitszeitListVM _Arbeitszeiten;
private DateTime? _AufenthaltGueltigBis;
@@ -283,9 +284,6 @@ namespace BeWo.ViewModel
var possibleAufenthaltsStatuse = pValueList.Where(vle => vle.Type == ValueListEntryType.Aufenthaltsstatus);
var possibleFamilyStatuse = pValueList.Where(vle => vle.Type == ValueListEntryType.RoleInFamily);
var possibleEintragKategorien = pValueList.Where(vle => vle.Type == ValueListEntryType.NotizenKategorieCustomer);
var possibleauftragsherkunfte = pValueList.Where(vle => vle.Type == ValueListEntryType.Auftragsherkunft);
var possiblevermittlungsgrundlage = pValueList.Where(vle => vle.Type == ValueListEntryType.Vermittlungsgrundlage);
var possibleVgaVerlaeufe = pValueList.Where(vle => vle.Type == ValueListEntryType.VgAVerlauf);
var possibleEinkommenBeginnTypen = pValueList.Where(vle => vle.Type == ValueListEntryType.EinkommenBeginnType);
var possibleEinkommenEndeTypen = pValueList.Where(vle => vle.Type == ValueListEntryType.EinkommenEndeType);
var possibleFremdHilfeTypen = pValueList.Where(vle => vle.Type == ValueListEntryType.FremdHilfeType);
@@ -313,12 +311,7 @@ namespace BeWo.ViewModel
_SozBeziehungenTypen = new ObservableSortCollection<ValueListEntryDC>(possibleSozBeziehungenTypen, Comparer.ValueListEntryDCComparer);
_ErstaufnahmeTypen = new ObservableSortCollection<ValueListEntryDC>(possibleErstaufnahmeTypen, Comparer.ValueListEntryDCComparer);
_RegionTypen = new ObservableSortCollection<ValueListEntryDC>(possibleRegionTypen, Comparer.ValueListEntryDCComparer);
var auftragsherkunfte = new ObservableSortCollection<ValueListEntryDC>(possibleauftragsherkunfte, Comparer.ValueListEntryDCComparer);
var vermittlungsgrundlage = new ObservableSortCollection<ValueListEntryDC>(possiblevermittlungsgrundlage, Comparer.ValueListEntryDCComparer);
var vgaVerlaeufe = new ObservableSortCollection<ValueListEntryDC>(possibleVgaVerlaeufe, Comparer.ValueListEntryDCComparer);
_CustomerGemeinnutzigeArbeitListVM.InitValueListEntrys(auftragsherkunfte, vermittlungsgrundlage, vgaVerlaeufe);
_MedArten = new BindingList<MedArtDC>(pPossibleMedArten);
@@ -1028,7 +1021,23 @@ namespace BeWo.ViewModel
FirePropertyChanged(nameof(VersichertenStatus));
}
}
public string Environment
public string BGNummer
{
get { return _BGNummer; }
set
{
if (!AreDifferent(_BGNummer, value))
return;
_BGNummer = value;
StoreDirtyInformation(AreDifferent(DataContract.BGNummer, value), nameof(BGNummer));
FirePropertyChanged(nameof(BGNummer));
}
}
public string Environment
{
get { return _Environment; }
@@ -2078,7 +2087,8 @@ namespace BeWo.ViewModel
_HealthInsurance = pDataContract.HealthInsurance;
_InsuranceNumber = pDataContract.InsuranceNumber;
_VersichertenStatus = pDataContract.VersichertenStatus;
_Hygienebelehrung = pDataContract.Hygienebelehrung;
_BGNummer = pDataContract.BGNummer;
_Hygienebelehrung = pDataContract.Hygienebelehrung;
_Migrationshintergrund = pDataContract.Migrationshintergrund;
_AufenthaltGueltigBis = pDataContract.AufenthaltGueltigBis;
@@ -2271,7 +2281,8 @@ namespace BeWo.ViewModel
pDataContract.HealthInsurance = _HealthInsurance;
pDataContract.InsuranceNumber = _InsuranceNumber?.Trim();
pDataContract.VersichertenStatus = _VersichertenStatus?.Trim();
pDataContract.Hygienebelehrung = _Hygienebelehrung;
pDataContract.BGNummer = _BGNummer;
pDataContract.Hygienebelehrung = _Hygienebelehrung;
pDataContract.Migrationshintergrund = _Migrationshintergrund;
pDataContract.SubstitutionNeed = _SubstitutionNeed;
pDataContract.AufenthaltGueltigBis = _AufenthaltGueltigBis;

View File

@@ -2,6 +2,7 @@
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using DevExpress.Xpf.Docking.Platform;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -21,13 +22,12 @@ namespace BeWo.ViewModel
private CompactOrganisationDC _Einsatzstelle;
private CompactPersonDC _EinsatzstelleAnsprechpartner;
private DateTime? _Auftragseingang;
private ValueListEntryDC _Auftragsherkunft;
private ObservableSortCollection<ValueListEntryDC> _Auftragsherkunfte;
private ValueListEntryDC _Vermittlungsgrundlage;
private ObservableSortCollection<ValueListEntryDC> _Vermittlungsgrundlagen;
private CustomerVgaAuftragsherkunft? _Auftragsherkunft;
private CustomerVgaVermittlungsGrundlage? _Vermittlungsgrundlage;
private decimal? _Tagessatze;
private decimal? _Tagessatzhohe;
private decimal? _HoheDerGeldstrafe;
private decimal? _Gerichtskosten;
private decimal? _ZuLeistendeArbeitsstunden;
private string _Hinweis;
private DateTime? _Termin;
@@ -36,10 +36,11 @@ namespace BeWo.ViewModel
private string _Bewaehrungshelfer;
private CustomerVermittlungBearbeitungsstatus? _CustomerVermittlungBearbeitungsstatus;
private DateTime? _Auftragsruckgabe;
private ObservableSortCollection<ValueListEntryDC> _Verlaeufe;
private ValueListEntryDC _Verlauf;
private CustomerVgaVerlauf? _Verlauf;
private decimal? _AbgeleisteteStunden;
private decimal? _ErsparteHafttage;
private decimal? _AnzahlRaten;
private decimal? _RatenHoehe;
private decimal? _GeleisteteRatenzahlung;
private string _Bemerkung;
private decimal? _GeleisteteEinmalzahlung;
@@ -213,7 +214,9 @@ namespace BeWo.ViewModel
FirePropertyChanged(nameof(Auftragseingang));
}
}
public ValueListEntryDC Auftragsherkunft
public IEnumerable<CustomerVgaAuftragsherkunft> CustomerVgaAuftragsherkunftTypes => Utils.GetAllEnumValues<CustomerVgaAuftragsherkunft>();
public CustomerVgaAuftragsherkunft? Auftragsherkunft
{
get { return _Auftragsherkunft; }
set
@@ -226,7 +229,9 @@ namespace BeWo.ViewModel
FirePropertyChanged(nameof(Auftragsherkunft));
}
}
public ValueListEntryDC Vermittlungsgrundlage
public IEnumerable<CustomerVgaVermittlungsGrundlage> CustomerVgaVermittlungsGrundlageTypes => Utils.GetAllEnumValues<CustomerVgaVermittlungsGrundlage>();
public CustomerVgaVermittlungsGrundlage? Vermittlungsgrundlage
{
get { return _Vermittlungsgrundlage; }
set
@@ -250,6 +255,7 @@ namespace BeWo.ViewModel
_Tagessatze = value;
StoreDirtyInformation(AreDifferent(DataContract.Tagessatze, value), nameof(Tagessatze));
FirePropertyChanged(nameof(Tagessatze));
UpdateHoheDerGeldstrafe();
}
}
public decimal? Tagessatzhohe
@@ -263,13 +269,36 @@ namespace BeWo.ViewModel
_Tagessatzhohe = value;
StoreDirtyInformation(AreDifferent(DataContract.Tagessatzhohe, value), nameof(Tagessatzhohe));
FirePropertyChanged(nameof(Tagessatzhohe));
UpdateHoheDerGeldstrafe();
}
}
private bool hoheDerGeldstrafeManuellGesetzt = false;
private bool aufrufVonBerechnung = false;
public void UpdateHoheDerGeldstrafe()
{
if (hoheDerGeldstrafeManuellGesetzt || !Tagessatze.HasValue || !Tagessatzhohe.HasValue)
return;
aufrufVonBerechnung = true;
HoheDerGeldstrafe = Tagessatze * Tagessatzhohe;
aufrufVonBerechnung = false;
}
public decimal? HoheDerGeldstrafe
{
get { return _HoheDerGeldstrafe; }
set
{
if (!value.HasValue || value.Value == 0)
{
hoheDerGeldstrafeManuellGesetzt = false;
}
else if (!aufrufVonBerechnung)
{
hoheDerGeldstrafeManuellGesetzt = true;
}
if (!AreDifferent(_HoheDerGeldstrafe, value))
return;
@@ -278,6 +307,21 @@ namespace BeWo.ViewModel
FirePropertyChanged(nameof(HoheDerGeldstrafe));
}
}
public decimal? Gerichtskosten
{
get { return _Gerichtskosten; }
set
{
if (!AreDifferent(_Gerichtskosten, value))
return;
_Gerichtskosten = value;
StoreDirtyInformation(AreDifferent(DataContract.Gerichtskosten, value), nameof(Gerichtskosten));
FirePropertyChanged(nameof(Gerichtskosten));
}
}
public decimal? ZuLeistendeArbeitsstunden
{
get { return _ZuLeistendeArbeitsstunden; }
@@ -387,7 +431,9 @@ namespace BeWo.ViewModel
FirePropertyChanged(nameof(Auftragsruckgabe));
}
}
public ValueListEntryDC Verlauf
public IEnumerable<CustomerVgaVerlauf> CustomerVgaVerlaufTypes => Utils.GetAllEnumValues<CustomerVgaVerlauf>();
public CustomerVgaVerlauf? Verlauf
{
get { return _Verlauf; }
set
@@ -439,6 +485,35 @@ namespace BeWo.ViewModel
FirePropertyChanged(nameof(GeleisteteRatenzahlung));
}
}
public decimal? AnzahlRaten
{
get { return _AnzahlRaten; }
set
{
if (!AreDifferent(_AnzahlRaten, value))
return;
_AnzahlRaten = value;
StoreDirtyInformation(AreDifferent(DataContract.AnzahlRaten, value), nameof(AnzahlRaten));
FirePropertyChanged(nameof(AnzahlRaten));
}
}
public decimal? RatenHoehe
{
get { return _RatenHoehe; }
set
{
if (!AreDifferent(_RatenHoehe, value))
return;
_RatenHoehe = value;
StoreDirtyInformation(AreDifferent(DataContract.RatenHoehe, value), nameof(RatenHoehe));
FirePropertyChanged(nameof(RatenHoehe));
}
}
public string Bemerkung
{
get { return _Bemerkung; }
@@ -686,6 +761,7 @@ namespace BeWo.ViewModel
_Tagessatze = pDataContract.Tagessatze;
_Tagessatzhohe = pDataContract.Tagessatzhohe;
_HoheDerGeldstrafe = pDataContract.HoheDerGeldstrafe;
_Gerichtskosten = pDataContract.Gerichtskosten;
_ZuLeistendeArbeitsstunden = pDataContract.ZuLeistendeArbeitsstunden;
_Hinweis = pDataContract.Hinweis;
_Termin = pDataContract.Termin;
@@ -697,6 +773,8 @@ namespace BeWo.ViewModel
_Verlauf = pDataContract.Verlauf;
_AbgeleisteteStunden = pDataContract.AbgeleisteteStunden;
_ErsparteHafttage = pDataContract.ErsparteHafttage;
_AnzahlRaten = pDataContract.AnzahlRaten;
_RatenHoehe = pDataContract.RatenHoehe;
_GeleisteteRatenzahlung = pDataContract.GeleisteteRatenzahlung;
_Bemerkung = pDataContract.Bemerkung;
_GeleisteteEinmalzahlung = pDataContract.GeleisteteEinmalzahlung;
@@ -722,12 +800,6 @@ namespace BeWo.ViewModel
_EinsatzstelleAnsprechpartner = pDataContract.EinsatzstelleAnsprechpartner;
}
internal void InitValueListEntrys(ObservableSortCollection<ValueListEntryDC> auftragsherkunfte, ObservableSortCollection<ValueListEntryDC> vermittlungsgrundlage, ObservableSortCollection<ValueListEntryDC> verlaeufe)
{
_Auftragsherkunfte = auftragsherkunfte;
_Vermittlungsgrundlagen = vermittlungsgrundlage;
_Verlaeufe = verlaeufe;
}
protected override CustomerVermittlungArbeitDC MapToDataContract(CustomerVermittlungArbeitDC pDataContract, bool doCommit)
{
@@ -741,6 +813,7 @@ namespace BeWo.ViewModel
pDataContract.Tagessatze = _Tagessatze;
pDataContract.Tagessatzhohe = _Tagessatzhohe;
pDataContract.HoheDerGeldstrafe = _HoheDerGeldstrafe;
pDataContract.Gerichtskosten = _Gerichtskosten;
pDataContract.ZuLeistendeArbeitsstunden = _ZuLeistendeArbeitsstunden;
pDataContract.Hinweis = _Hinweis;
pDataContract.Termin = _Termin;
@@ -752,6 +825,8 @@ namespace BeWo.ViewModel
pDataContract.Verlauf = _Verlauf;
pDataContract.AbgeleisteteStunden = _AbgeleisteteStunden;
pDataContract.ErsparteHafttage = _ErsparteHafttage;
pDataContract.AnzahlRaten = _AnzahlRaten;
pDataContract.RatenHoehe = _RatenHoehe;
pDataContract.GeleisteteRatenzahlung = _GeleisteteRatenzahlung;
pDataContract.Bemerkung = _Bemerkung;
pDataContract.GeleisteteEinmalzahlung = _GeleisteteEinmalzahlung;

View File

@@ -11,10 +11,7 @@ namespace BeWo.ViewModel.ListViewModel
{
public class CustomerVermittlungArbeitListVM : AbstractListVM<CustomerVermittlungArbeitDC, CustomerVermittlungArbeitVM>
{
private ObservableSortCollection<ValueListEntryDC> _Auftragsherkunfte;
private ObservableSortCollection<ValueListEntryDC> _Vermittlungsgrundlagen;
private ObservableSortCollection<ValueListEntryDC> _Verlaeufe;
public CustomerVermittlungArbeitListVM(IEnumerable<CustomerVermittlungArbeitDC> arbeiten) : base(arbeiten)
{
AddVMCommand = new DelegateCommand(() => AddNewVMToListAndSelect(true), CanAddVM);
@@ -26,54 +23,11 @@ namespace BeWo.ViewModel.ListViewModel
// CopySelectedVMCommand = new DelegateCommand(CopySelectedWohnhilfe);
}
public ObservableSortCollection<ValueListEntryDC> Auftragsherkunfte
{
get { return _Auftragsherkunfte; }
set
{
if (!AreDifferent(Auftragsherkunfte, value))
return;
_Auftragsherkunfte = value;
FirePropertyChanged(nameof(Auftragsherkunfte));
}
}
public ObservableSortCollection<ValueListEntryDC> Vermittlungsgrundlagen
{
get { return _Vermittlungsgrundlagen; }
set
{
if (!AreDifferent(Vermittlungsgrundlagen, value))
return;
_Vermittlungsgrundlagen = value;
FirePropertyChanged(nameof(Vermittlungsgrundlagen));
}
}
public ObservableSortCollection<ValueListEntryDC> Verlaeufe
{
get { return _Verlaeufe; }
set
{
if (!AreDifferent(Verlaeufe, value))
return;
_Vermittlungsgrundlagen = value;
FirePropertyChanged(nameof(Verlaeufe));
}
}
public bool CanAddVM()
{
return BeWoApp.HasLoggedOnUserRight(BS.Shared.UserRightType.Customer_GemeinnutzigeArbeit_Manage); ;
}
internal void InitValueListEntrys(ObservableSortCollection<ValueListEntryDC> auftragsherkunfte, ObservableSortCollection<ValueListEntryDC> vermittlungsgrundlage, ObservableSortCollection<ValueListEntryDC> verlaeufe)
{
_Auftragsherkunfte = auftragsherkunfte;
_Vermittlungsgrundlagen = vermittlungsgrundlage;
_Verlaeufe = verlaeufe;
}
}
}

View File

@@ -101,8 +101,8 @@ namespace BeWo.ViewModel
private bool _GkvAusblenden;
private AddressVM _HausanschriftDatenannahmestelle;
private AddressVM _PostfachanschriftDatenannahmestelle;
private AddressVM _GrosskundenanschriftDatenannahmestelle;
private AddressVM _PostfachGKanschriftDatenannahmestelle;
private AddressVM _PapierannahmeanschriftDatenannahmestelle;
public OrganisationVM()
{
@@ -424,8 +424,8 @@ namespace BeWo.ViewModel
|| (_ArbeitszeitListe != null && _ArbeitszeitListe.IsDirty)
|| (_Feiertage != null && _Feiertage.IsDirty)
|| (HausanschriftDatenannahmestelle?.IsDirty ?? false)
|| (PostfachanschriftDatenannahmestelle?.IsDirty ?? false)
|| (GrosskundenanschriftDatenannahmestelle?.IsDirty ?? false);
|| (PostfachGKanschriftDatenannahmestelle?.IsDirty ?? false)
|| (PapierannahmeanschriftDatenannahmestelle?.IsDirty ?? false);
}
}
@@ -863,22 +863,22 @@ namespace BeWo.ViewModel
FirePropertyChanged(nameof(HausanschriftDatenannahmestelle));
}
}
public AddressVM PostfachanschriftDatenannahmestelle
public AddressVM PostfachGKanschriftDatenannahmestelle
{
get => _PostfachanschriftDatenannahmestelle;
get => _PostfachGKanschriftDatenannahmestelle;
set
{
_PostfachanschriftDatenannahmestelle = value;
FirePropertyChanged(nameof(PostfachanschriftDatenannahmestelle));
_PostfachGKanschriftDatenannahmestelle = value;
FirePropertyChanged(nameof(PostfachGKanschriftDatenannahmestelle));
}
}
public AddressVM GrosskundenanschriftDatenannahmestelle
public AddressVM PapierannahmeanschriftDatenannahmestelle
{
get => _GrosskundenanschriftDatenannahmestelle;
get => _PapierannahmeanschriftDatenannahmestelle;
set
{
_GrosskundenanschriftDatenannahmestelle = value;
FirePropertyChanged(nameof(GrosskundenanschriftDatenannahmestelle));
_PapierannahmeanschriftDatenannahmestelle = value;
FirePropertyChanged(nameof(PapierannahmeanschriftDatenannahmestelle));
}
}
@@ -1002,11 +1002,11 @@ namespace BeWo.ViewModel
? new AddressVM(dc)
: new AddressVM();
PostfachanschriftDatenannahmestelle = pDataContract.PostfachanschriftDatenannahmestelle is AddressDC dc2
PostfachGKanschriftDatenannahmestelle = pDataContract.PostfachGKanschriftDatenannahmestelle is AddressDC dc2
? new AddressVM(dc2)
: new AddressVM();
GrosskundenanschriftDatenannahmestelle = pDataContract.GrosskundenanschriftDatenannahmestelle is AddressDC dc3
PapierannahmeanschriftDatenannahmestelle = pDataContract.PapierannahmeanschriftDatenannahmestelle is AddressDC dc3
? new AddressVM(dc3)
: new AddressVM();
@@ -1105,15 +1105,15 @@ namespace BeWo.ViewModel
else
pDataContract.HausanschriftDatenannahmestelle = null;
if (PostfachanschriftDatenannahmestelle is object)
pDataContract.PostfachanschriftDatenannahmestelle = PostfachanschriftDatenannahmestelle.CommitToDataContract();
if (PostfachGKanschriftDatenannahmestelle is object)
pDataContract.PostfachGKanschriftDatenannahmestelle = PostfachGKanschriftDatenannahmestelle.CommitToDataContract();
else
pDataContract.PostfachanschriftDatenannahmestelle = null;
pDataContract.PostfachGKanschriftDatenannahmestelle = null;
if (GrosskundenanschriftDatenannahmestelle is object)
pDataContract.GrosskundenanschriftDatenannahmestelle = GrosskundenanschriftDatenannahmestelle.CommitToDataContract();
if (PapierannahmeanschriftDatenannahmestelle is object)
pDataContract.PapierannahmeanschriftDatenannahmestelle = PapierannahmeanschriftDatenannahmestelle.CommitToDataContract();
else
pDataContract.GrosskundenanschriftDatenannahmestelle = null;
pDataContract.PapierannahmeanschriftDatenannahmestelle = null;
return pDataContract;
}
@@ -1132,11 +1132,11 @@ namespace BeWo.ViewModel
HausanschriftDatenannahmestelle.UpdateByDataContract(response.Hausanschrift);
FirePropertyChanged(nameof(HausanschriftDatenannahmestelle));
PostfachanschriftDatenannahmestelle.UpdateByDataContract(response.Postfachanschrift);
FirePropertyChanged(nameof(PostfachanschriftDatenannahmestelle));
PostfachGKanschriftDatenannahmestelle.UpdateByDataContract(response.PostfachGKanschrift);
FirePropertyChanged(nameof(PostfachGKanschriftDatenannahmestelle));
GrosskundenanschriftDatenannahmestelle.UpdateByDataContract(response.Grosskundenanschrift);
FirePropertyChanged(nameof(GrosskundenanschriftDatenannahmestelle));
PapierannahmeanschriftDatenannahmestelle.UpdateByDataContract(response.Papierannahmeanschrift);
FirePropertyChanged(nameof(PapierannahmeanschriftDatenannahmestelle));
}
}
}

View File

@@ -715,8 +715,6 @@ namespace BeWo.ViewModel
ValueListEntryType.Aufenthaltsstatus,
ValueListEntryType.RoleInFamily,
ValueListEntryType.NotizenKategorieCustomer,
ValueListEntryType.Auftragsherkunft,
ValueListEntryType.Vermittlungsgrundlage,
ValueListEntryType.EinkommenBeginnType,
ValueListEntryType.EinkommenEndeType,
ValueListEntryType.FremdHilfeType,
@@ -724,7 +722,6 @@ namespace BeWo.ViewModel
ValueListEntryType.SozBeziehungenType,
ValueListEntryType.ErstaufnahmeType,
ValueListEntryType.RegionType,
ValueListEntryType.VgAVerlauf
};
ServiceFacade.DoValueListServiceAsync(
@@ -936,8 +933,6 @@ namespace BeWo.ViewModel
{
var list = ServiceFacade.DoAiEnhancedServiceSnyc(s => s.GetAiConversations(actionType, reference_oid));
list.Reverse();
return new AiConversationListVM(list);
}

View File

@@ -254,6 +254,8 @@ namespace BeWo.ViewModel.View.AI
conv.Messages.VMList.Add(new AiConversationMessageVM(messages[1]));
conv.Updated = DateTime.Now;
FinishSending();
},
(exception) =>
@@ -305,6 +307,8 @@ namespace BeWo.ViewModel.View.AI
{
MessageInput = string.Empty;
ReloadConversations(ListVM.VMList);
EndSending();
SendNewMessageSuccess?.Invoke(this, EventArgs.Empty);
@@ -355,7 +359,24 @@ namespace BeWo.ViewModel.View.AI
var list = VMFactory.CreateAiConversationListVM(ui_context, reference);
ListVM.VMList.MakeEqualTo(list.VMList);
ReloadConversations(list.VMList);
}
private void ReloadConversations(IEnumerable<AiConversationVM> aiConversations)
{
if(aiConversations is null)
{
throw new ArgumentOutOfRangeException(nameof(aiConversations));
}
var sorted = aiConversations.OrderByDescending(vm => vm.Updated).ToList();
var t0 = ListVM.SelectedVM;
ListVM.VMList.UpdateBy(sorted);
if(ListVM.VMList.Contains(t0))
ListVM.SelectedVM = t0;
ListVM.VMList.ResetBindings();
}
private void OpenSetting()
@@ -538,6 +559,8 @@ namespace BeWo.ViewModel.View.AI
ServiceFacade.DoAiEnhancedServiceAsnyc(x => x.ExecuteAiConversationWithPrompt(cb.Oid.Value, ViewContext, prompt.DataContract.Oid.Value),
cb2 =>
{
vm.Updated = DateTime.Now;
FinishSending();
ServiceFacade.EndManuelWaiting();
@@ -592,8 +615,12 @@ namespace BeWo.ViewModel.View.AI
private void ExecuteChain(AiPromptbausteinRoutineVM routine, int step, Action<Exception> error)
{
var conv = ListVM.SelectedVM;
if (step >= routine.Steps.Count)
{
conv.Updated = DateTime.Now;
FinishSending();
ServiceFacade.EndManuelWaiting();
@@ -601,8 +628,6 @@ namespace BeWo.ViewModel.View.AI
return;
}
var conv = ListVM.SelectedVM;
var custom_viewContext = new AiViewContextDC
{
References = ViewContext.References,

View File

@@ -55,10 +55,25 @@ namespace BeWo.ViewModel
if (_Wohneinheit is object)
_Wohneinheit.PropertyChanged += FirePropertyChanged;
FirePropertyChanged(nameof(Wohneinheit));
FirePropertyChanged(nameof(CanSave));
}
}
public void SetNewWohneinheit(WohneinheitVM wh)
{
if (wh != null && Wohneinheit != null)
{
if (Wohneinheit.Oid != wh.Oid)
{
StoreDirtyInformation(true, nameof(Wohneinheit));
}
}
this.Wohneinheit = wh;
}
public CompactCustomerDC Customer
{
get { return _Customer; }
@@ -86,7 +101,7 @@ namespace BeWo.ViewModel
if (EndDate.HasValue && EndDate.Value < StartDate)
{
EndDate = new DateTime(StartDate.Year, 12, 31);
EndDate = value.Date;
}
}
}
@@ -105,15 +120,7 @@ namespace BeWo.ViewModel
if (value.HasValue && value.Value < StartDate)
{
var new_start = new DateTime(value.Value.Year, value.Value.Month, 1);
if(value == new_start)
new_start = new DateTime(value.Value.Year, 1, 1);
if(value == new_start)
new_start = new DateTime(value.Value.Year - 1, 1, 1);
StartDate = new_start;
StartDate = value.Value.Date;
}
}
}
@@ -167,6 +174,11 @@ namespace BeWo.ViewModel
_EndDate = pDataContract.EndDate;
_Kommentar = pDataContract.Kommentar;
_StartDate = pDataContract.StartDate;
if (pDataContract.Wohneinheit != null)
{
_Wohneinheit = new WohneinheitVM(pDataContract.Wohneinheit);
}
}
protected override WohneinheitBelegungDC MapToDataContract(WohneinheitBelegungDC pDataContract, bool doCommit)
{

View File

@@ -992,6 +992,16 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LebensBruecke", "ReportImp\
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AryaSteffensHeviaTherapie", "ReportImp\AryaSteffensHeviaTherapie\AryaSteffensHeviaTherapie.csproj", "{E23C4943-8677-40DA-A45F-1322D1AD2443}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SonjaZoeller", "ReportImp\SonjaZoeller\SonjaZoeller.csproj", "{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JusinaJugendhilfe", "ReportImp\JusinaJugendhilfe\JusinaJugendhilfe.csproj", "{7005F526-E0FE-49F8-86D5-90F2DAC51E3B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HwHilfswerkInklusionUndTeilhabe", "ReportImp\HwHilfswerkInklusionUndTeilhabe\HwHilfswerkInklusionUndTeilhabe.csproj", "{A65F19C6-A523-4566-8855-9141B9435B95}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CaritasAichachFriedberg", "ReportImp\CaritasAichachFriedberg\CaritasAichachFriedberg.csproj", "{279D4AEA-239C-4A2C-91DE-735EB7A72F96}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PerspektiveAnitaNelles", "ReportImp\PerspektiveAnitaNelles\PerspektiveAnitaNelles.csproj", "{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|.NET = Debug|.NET
@@ -12162,6 +12172,126 @@ Global
{E23C4943-8677-40DA-A45F-1322D1AD2443}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{E23C4943-8677-40DA-A45F-1322D1AD2443}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{E23C4943-8677-40DA-A45F-1322D1AD2443}.Release|x86.ActiveCfg = Release|Any CPU
{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.Debug|.NET.ActiveCfg = Debug|Any CPU
{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.Debug|.NET.Build.0 = Debug|Any CPU
{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.Debug|x86.ActiveCfg = Debug|Any CPU
{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.Debug|x86.Build.0 = Debug|Any CPU
{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.DebugRemote|.NET.ActiveCfg = Debug|Any CPU
{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.DebugRemote|.NET.Build.0 = Debug|Any CPU
{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.DebugRemote|Mixed Platforms.ActiveCfg = Debug|Any CPU
{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.DebugRemote|Mixed Platforms.Build.0 = Debug|Any CPU
{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.DebugRemote|x86.ActiveCfg = Debug|Any CPU
{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.DebugRemote|x86.Build.0 = Debug|Any CPU
{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.Release|.NET.ActiveCfg = Release|Any CPU
{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.Release|.NET.Build.0 = Release|Any CPU
{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.Release|Any CPU.Build.0 = Release|Any CPU
{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.Release|x86.ActiveCfg = Release|Any CPU
{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA}.Release|x86.Build.0 = Release|Any CPU
{7005F526-E0FE-49F8-86D5-90F2DAC51E3B}.Debug|.NET.ActiveCfg = Debug|Any CPU
{7005F526-E0FE-49F8-86D5-90F2DAC51E3B}.Debug|.NET.Build.0 = Debug|Any CPU
{7005F526-E0FE-49F8-86D5-90F2DAC51E3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7005F526-E0FE-49F8-86D5-90F2DAC51E3B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7005F526-E0FE-49F8-86D5-90F2DAC51E3B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{7005F526-E0FE-49F8-86D5-90F2DAC51E3B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{7005F526-E0FE-49F8-86D5-90F2DAC51E3B}.Debug|x86.ActiveCfg = Debug|Any CPU
{7005F526-E0FE-49F8-86D5-90F2DAC51E3B}.Debug|x86.Build.0 = Debug|Any CPU
{7005F526-E0FE-49F8-86D5-90F2DAC51E3B}.DebugRemote|.NET.ActiveCfg = Debug|Any CPU
{7005F526-E0FE-49F8-86D5-90F2DAC51E3B}.DebugRemote|.NET.Build.0 = Debug|Any CPU
{7005F526-E0FE-49F8-86D5-90F2DAC51E3B}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
{7005F526-E0FE-49F8-86D5-90F2DAC51E3B}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
{7005F526-E0FE-49F8-86D5-90F2DAC51E3B}.DebugRemote|Mixed Platforms.ActiveCfg = Debug|Any CPU
{7005F526-E0FE-49F8-86D5-90F2DAC51E3B}.DebugRemote|Mixed Platforms.Build.0 = Debug|Any CPU
{7005F526-E0FE-49F8-86D5-90F2DAC51E3B}.DebugRemote|x86.ActiveCfg = Debug|Any CPU
{7005F526-E0FE-49F8-86D5-90F2DAC51E3B}.DebugRemote|x86.Build.0 = Debug|Any CPU
{7005F526-E0FE-49F8-86D5-90F2DAC51E3B}.Release|.NET.ActiveCfg = Release|Any CPU
{7005F526-E0FE-49F8-86D5-90F2DAC51E3B}.Release|.NET.Build.0 = Release|Any CPU
{7005F526-E0FE-49F8-86D5-90F2DAC51E3B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7005F526-E0FE-49F8-86D5-90F2DAC51E3B}.Release|Any CPU.Build.0 = Release|Any CPU
{7005F526-E0FE-49F8-86D5-90F2DAC51E3B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{7005F526-E0FE-49F8-86D5-90F2DAC51E3B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{7005F526-E0FE-49F8-86D5-90F2DAC51E3B}.Release|x86.ActiveCfg = Release|Any CPU
{7005F526-E0FE-49F8-86D5-90F2DAC51E3B}.Release|x86.Build.0 = Release|Any CPU
{A65F19C6-A523-4566-8855-9141B9435B95}.Debug|.NET.ActiveCfg = Debug|Any CPU
{A65F19C6-A523-4566-8855-9141B9435B95}.Debug|.NET.Build.0 = Debug|Any CPU
{A65F19C6-A523-4566-8855-9141B9435B95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A65F19C6-A523-4566-8855-9141B9435B95}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A65F19C6-A523-4566-8855-9141B9435B95}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{A65F19C6-A523-4566-8855-9141B9435B95}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{A65F19C6-A523-4566-8855-9141B9435B95}.Debug|x86.ActiveCfg = Debug|Any CPU
{A65F19C6-A523-4566-8855-9141B9435B95}.Debug|x86.Build.0 = Debug|Any CPU
{A65F19C6-A523-4566-8855-9141B9435B95}.DebugRemote|.NET.ActiveCfg = Debug|Any CPU
{A65F19C6-A523-4566-8855-9141B9435B95}.DebugRemote|.NET.Build.0 = Debug|Any CPU
{A65F19C6-A523-4566-8855-9141B9435B95}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
{A65F19C6-A523-4566-8855-9141B9435B95}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
{A65F19C6-A523-4566-8855-9141B9435B95}.DebugRemote|Mixed Platforms.ActiveCfg = Debug|Any CPU
{A65F19C6-A523-4566-8855-9141B9435B95}.DebugRemote|Mixed Platforms.Build.0 = Debug|Any CPU
{A65F19C6-A523-4566-8855-9141B9435B95}.DebugRemote|x86.ActiveCfg = Debug|Any CPU
{A65F19C6-A523-4566-8855-9141B9435B95}.DebugRemote|x86.Build.0 = Debug|Any CPU
{A65F19C6-A523-4566-8855-9141B9435B95}.Release|.NET.ActiveCfg = Release|Any CPU
{A65F19C6-A523-4566-8855-9141B9435B95}.Release|.NET.Build.0 = Release|Any CPU
{A65F19C6-A523-4566-8855-9141B9435B95}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A65F19C6-A523-4566-8855-9141B9435B95}.Release|Any CPU.Build.0 = Release|Any CPU
{A65F19C6-A523-4566-8855-9141B9435B95}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{A65F19C6-A523-4566-8855-9141B9435B95}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{A65F19C6-A523-4566-8855-9141B9435B95}.Release|x86.ActiveCfg = Release|Any CPU
{A65F19C6-A523-4566-8855-9141B9435B95}.Release|x86.Build.0 = Release|Any CPU
{279D4AEA-239C-4A2C-91DE-735EB7A72F96}.Debug|.NET.ActiveCfg = Debug|Any CPU
{279D4AEA-239C-4A2C-91DE-735EB7A72F96}.Debug|.NET.Build.0 = Debug|Any CPU
{279D4AEA-239C-4A2C-91DE-735EB7A72F96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{279D4AEA-239C-4A2C-91DE-735EB7A72F96}.Debug|Any CPU.Build.0 = Debug|Any CPU
{279D4AEA-239C-4A2C-91DE-735EB7A72F96}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{279D4AEA-239C-4A2C-91DE-735EB7A72F96}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{279D4AEA-239C-4A2C-91DE-735EB7A72F96}.Debug|x86.ActiveCfg = Debug|Any CPU
{279D4AEA-239C-4A2C-91DE-735EB7A72F96}.Debug|x86.Build.0 = Debug|Any CPU
{279D4AEA-239C-4A2C-91DE-735EB7A72F96}.DebugRemote|.NET.ActiveCfg = Debug|Any CPU
{279D4AEA-239C-4A2C-91DE-735EB7A72F96}.DebugRemote|.NET.Build.0 = Debug|Any CPU
{279D4AEA-239C-4A2C-91DE-735EB7A72F96}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
{279D4AEA-239C-4A2C-91DE-735EB7A72F96}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
{279D4AEA-239C-4A2C-91DE-735EB7A72F96}.DebugRemote|Mixed Platforms.ActiveCfg = Debug|Any CPU
{279D4AEA-239C-4A2C-91DE-735EB7A72F96}.DebugRemote|Mixed Platforms.Build.0 = Debug|Any CPU
{279D4AEA-239C-4A2C-91DE-735EB7A72F96}.DebugRemote|x86.ActiveCfg = Debug|Any CPU
{279D4AEA-239C-4A2C-91DE-735EB7A72F96}.DebugRemote|x86.Build.0 = Debug|Any CPU
{279D4AEA-239C-4A2C-91DE-735EB7A72F96}.Release|.NET.ActiveCfg = Release|Any CPU
{279D4AEA-239C-4A2C-91DE-735EB7A72F96}.Release|.NET.Build.0 = Release|Any CPU
{279D4AEA-239C-4A2C-91DE-735EB7A72F96}.Release|Any CPU.ActiveCfg = Release|Any CPU
{279D4AEA-239C-4A2C-91DE-735EB7A72F96}.Release|Any CPU.Build.0 = Release|Any CPU
{279D4AEA-239C-4A2C-91DE-735EB7A72F96}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{279D4AEA-239C-4A2C-91DE-735EB7A72F96}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{279D4AEA-239C-4A2C-91DE-735EB7A72F96}.Release|x86.ActiveCfg = Release|Any CPU
{279D4AEA-239C-4A2C-91DE-735EB7A72F96}.Release|x86.Build.0 = Release|Any CPU
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D}.Debug|.NET.ActiveCfg = Debug|Any CPU
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D}.Debug|.NET.Build.0 = Debug|Any CPU
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D}.Debug|x86.ActiveCfg = Debug|Any CPU
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D}.Debug|x86.Build.0 = Debug|Any CPU
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D}.DebugRemote|.NET.ActiveCfg = Debug|Any CPU
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D}.DebugRemote|.NET.Build.0 = Debug|Any CPU
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D}.DebugRemote|Mixed Platforms.ActiveCfg = Debug|Any CPU
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D}.DebugRemote|Mixed Platforms.Build.0 = Debug|Any CPU
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D}.DebugRemote|x86.ActiveCfg = Debug|Any CPU
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D}.DebugRemote|x86.Build.0 = Debug|Any CPU
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D}.Release|.NET.ActiveCfg = Release|Any CPU
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D}.Release|.NET.Build.0 = Release|Any CPU
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D}.Release|Any CPU.Build.0 = Release|Any CPU
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D}.Release|x86.ActiveCfg = Release|Any CPU
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -12652,6 +12782,11 @@ Global
{4D48D376-DCAE-4E22-82E3-36692B0FAE29} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{E0B2DAB1-3926-408F-95E5-3CDD54B3421C} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{E23C4943-8677-40DA-A45F-1322D1AD2443} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{B202DD74-4CA3-4A48-A8FB-A7B0E090DDAA} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{7005F526-E0FE-49F8-86D5-90F2DAC51E3B} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{A65F19C6-A523-4566-8855-9141B9435B95} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{279D4AEA-239C-4A2C-91DE-735EB7A72F96} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D} = {D8A691C5-146D-4613-86CC-438F02FE9106}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {FBE985BB-9F0F-4DBB-8F94-ABC37A803FF9}

View File

@@ -305,6 +305,7 @@
<Compile Include="App_Start\RouteConfig.cs" />
<Compile Include="App_Start\WebApiConfig.cs" />
<Compile Include="Controllers\AbstractBaseController.cs" />
<Compile Include="Controllers\SystemController.cs" />
<Compile Include="Controllers\ChatController.cs" />
<Compile Include="Controllers\CustomerController.cs" />
<Compile Include="Controllers\DevToolsController.cs" />
@@ -726,6 +727,8 @@
<Content Include="Views\DevExpressScheduler\NotificationPopupContent.cshtml" />
<Content Include="Views\DevExpressScheduler\NotificationsPopupContent.cshtml" />
<Content Include="Views\DevExpressScheduler\CustomEmployeeSelectPartial.cshtml" />
<Content Include="Views\DevExpressScheduler\CustomCustomerSelectPartial.cshtml" />
<Content Include="Views\DevExpressScheduler\CustomResourceSelectPartial.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="packages.config" />

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<UseIISExpress>false</UseIISExpress>

View File

@@ -73,70 +73,70 @@ namespace BeWoPlanerMobil.Controllers
private static bool convertInProgress = false;
public ActionResult UpdateFiles(String list, String pwd)
{
try
{
if (convertInProgress)
{
return this.Content("Schon gestartet");
}
convertInProgress = true;
//list = "7000000000";
//pwd = "34vteWVTwegvn9wz4vn9";
if (pwd == "34vteWVTwegvn9wz4vn9")
{
String[] nummern = list.Split(',');
//public ActionResult UpdateFiles(String list, String pwd)
//{
// try
// {
// if (convertInProgress)
// {
// return this.Content("Schon gestartet");
// }
// convertInProgress = true;
// //list = "7000000000";
// //pwd = "34vteWVTwegvn9wz4vn9";
// if (pwd == "34vteWVTwegvn9wz4vn9")
// {
// String[] nummern = list.Split(',');
foreach (var knr in nummern)
{
// foreach (var knr in nummern)
// {
System.Web.HttpContext.Current.Items.Remove("hibernateSession");
// System.Web.HttpContext.Current.Items.Remove("hibernateSession");
MobileSessionFacade.Tenant = knr;
// MobileSessionFacade.Tenant = knr;
var isKundennummerVorhanden = ASPHibernateSessionManager.ConfigureHibernateSessionForWebService();
// var isKundennummerVorhanden = ASPHibernateSessionManager.ConfigureHibernateSessionForWebService();
if (isKundennummerVorhanden)
{
Log.Debug($"Start UpdateFiles for {knr} -----------------------------------------------------------------------------------------------------------------------");
// if (isKundennummerVorhanden)
// {
// Log.Debug($"Start UpdateFiles for {knr} -----------------------------------------------------------------------------------------------------------------------");
//var filePath = GetFilePath(12345678);
// //var filePath = GetFilePath(12345678);
//Log.Debug($"File Path = {filePath}");
// //Log.Debug($"File Path = {filePath}");
SaveAllFilesToDisk(knr);
// SaveAllFilesToDisk(knr);
Log.Debug($"Finished UpdateFiles for {knr} -----------------------------------------------------------------------------------------------------------------------");
//var os = new OperationsServiceImp();
//os.SaveAllFilesToDisk();
}
else
{
Log.Debug($"Kundennummer {knr} nicht vorhanden");
// Log.Debug($"Finished UpdateFiles for {knr} -----------------------------------------------------------------------------------------------------------------------");
// //var os = new OperationsServiceImp();
// //os.SaveAllFilesToDisk();
// }
// else
// {
// Log.Debug($"Kundennummer {knr} nicht vorhanden");
}
// }
}
// }
convertInProgress = false;
return this.Content("Erfolgreich 4");
}
// convertInProgress = false;
// return this.Content("Erfolgreich 4");
// }
convertInProgress = false;
return this.Content("Nicht authorisiert");
}
catch (Exception ex)
{
convertInProgress = false;
return this.Content("ERROR " + ex.Message);
// throw(BeWo.Service.Core.Utils.ThrowBeWoFaultException(e));
return null;
}
}
// convertInProgress = false;
// return this.Content("Nicht authorisiert");
// }
// catch (Exception ex)
// {
// convertInProgress = false;
// return this.Content("ERROR " + ex.Message);
// // throw(BeWo.Service.Core.Utils.ThrowBeWoFaultException(e));
// return null;
// }
//}
private void SaveAllFilesToDisk(String knr)
{

View File

@@ -454,6 +454,17 @@ namespace BeWoPlanerMobil.Controllers
return Logout();
}
long personOid = 0;
long customerOid = 0;
if (formCollection["PersonOid"] != null)
{
Int64.TryParse(formCollection["PersonOid"], out personOid);
}
if (formCollection["CustomerOid"] != null)
{
Int64.TryParse(formCollection["CustomerOid"], out customerOid);
}
var firstname = formCollection["vorname"]?.RemoveUppercaseEsszett();
var lastname = formCollection["nachname"]?.RemoveUppercaseEsszett();
var alias = formCollection["alias"]?.RemoveUppercaseEsszett();
@@ -483,6 +494,11 @@ namespace BeWoPlanerMobil.Controllers
var customer = Model.SelectedCustomer;
if (customer.CustomerOid != customerOid)
{
Log.Info(String.Format("Fehler in UpdateCustomer: Die Oid vom SelectedCustomer stimmt nicht mit der CustomerOid aus der FormCollection überein: {0} != {1}", customer.CustomerOid, customerOid));
throw new System.Exception("Es ist leider ein Fehler aufgetreten! Die IDs der Klienten stimmen nicht überein!");
}
if(customer is null)
{
return RedirectToActionPermanent("Customer");

View File

@@ -89,6 +89,13 @@ namespace BeWoPlanerMobil.Controllers
AppointmentModel.PossibleEmployees = EmployeeService.GetAllAuthorizedCompactEmployees();
AppointmentModel.PossibleCustomers = CustomerService.GetAllAuthorizedCompactCustomers();
AppointmentModel.PossibleResources = KalenderService.GetAllResources();
AppointmentModel.ResourceCategories2Resources = new Dictionary<ValueListEntryDC, List<ResourceDC>>();
foreach(var resource in AppointmentModel.PossibleResources)
{
AppointmentModel.ResourceCategories2Resources.AddOrUpdateValueInDictionary(resource.ResourceCategory, resource);
}
}
private void InitViewModel()
@@ -349,13 +356,7 @@ namespace BeWoPlanerMobil.Controllers
{
appointment.CustomerList = AppointmentModel.SelectedCustomers;
appointment.ResourceList = AppointmentModel.SelectedResources;
appointment.EmployeeList = new List<Employee2SchedulerAppointmentDC>();
foreach(var selectedEmployee in AppointmentModel.SelectedEmployees ?? new List<CompactEmployeeDC>())
{
appointment.EmployeeList.Add(new Employee2SchedulerAppointmentDC { Employee = selectedEmployee });
}
appointment.EmployeeList = AppointmentModel.SelectedEmployee2SchedulerAppointments;
appointment.Originator = Model.LoggedInUser.Employee;
@@ -398,41 +399,41 @@ namespace BeWoPlanerMobil.Controllers
ReloadAppointments();
}
[HttpPost]
public ActionResult CustomerMultiSelectPartial(string value)
{
var selectedCustomerOids = GridLookupExtension.GetSelectedValues<long?>("CustomerGridLookup") ?? Array.Empty<long?>();
//[HttpPost]
//public ActionResult CustomerMultiSelectPartial(string value)
//{
// var selectedCustomerOids = GridLookupExtension.GetSelectedValues<long?>("CustomerGridLookup") ?? Array.Empty<long?>();
AppointmentModel.SelectedCustomerOids = selectedCustomerOids.Where(oid => oid.HasValue).Select(oid => oid.Value).ToList();
// AppointmentModel.SelectedCustomerOids = selectedCustomerOids.Where(oid => oid.HasValue).Select(oid => oid.Value).ToList();
return PartialView("CustomerMultiSelectPartial", AppointmentModel);
}
// return PartialView("CustomerMultiSelectPartial", AppointmentModel);
//}
[HttpPost]
public ActionResult ResourceGridLookupPartial(string value)
{
var selectedResourceOids = GridLookupExtension.GetSelectedValues<long?>("ResourceGridLookup") ?? Array.Empty<long?>();
//[HttpPost]
//public ActionResult ResourceGridLookupPartial(string value)
//{
// var selectedResourceOids = GridLookupExtension.GetSelectedValues<long?>("ResourceGridLookup") ?? Array.Empty<long?>();
AppointmentModel.SelectedResourceOids = selectedResourceOids.Where(oid => oid.HasValue).Select(oid => oid.Value).ToList();
// AppointmentModel.SelectedResourceOids = selectedResourceOids.Where(oid => oid.HasValue).Select(oid => oid.Value).ToList();
return PartialView("ResourceMultiSelectPartial", AppointmentModel);
}
// return PartialView("ResourceMultiSelectPartial", AppointmentModel);
//}
[HttpPost]
public ActionResult EmployeeGridLookupPartial(string value)
{
/*
* Im AppointmentModel müssen die PossibleEmployees bleiben, denn daraus wählt man die Mitarbeiter, die noch nicht mit dem Termin
* verknüpft sind und es müssen - zumindest beim Bearbeiten - die bereits mit dem Termin verbundenen Mitarbeiter-zu-Termin-Relationen
* zwischengespeichert werden.
*
*/
var selectedEmployeeOids = GridLookupExtension.GetSelectedValues<long?>("EmployeeGridLookup") ?? Array.Empty<long?>();
//[HttpPost]
//public ActionResult EmployeeGridLookupPartial(string value)
//{
// /*
// * Im AppointmentModel müssen die PossibleEmployees bleiben, denn daraus wählt man die Mitarbeiter, die noch nicht mit dem Termin
// * verknüpft sind und es müssen - zumindest beim Bearbeiten - die bereits mit dem Termin verbundenen Mitarbeiter-zu-Termin-Relationen
// * zwischengespeichert werden.
// *
// */
// var selectedEmployeeOids = GridLookupExtension.GetSelectedValues<long?>("EmployeeGridLookup") ?? Array.Empty<long?>();
AppointmentModel.SelectedEmployeeOids = selectedEmployeeOids.Where(oid => oid.HasValue).Select(oid => oid.Value).ToList();
// AppointmentModel.SelectedEmployeeOids = selectedEmployeeOids.Where(oid => oid.HasValue).Select(oid => oid.Value).ToList();
return PartialView("EmployeeMultiSelectPartial", AppointmentModel);
}
// return PartialView("EmployeeMultiSelectPartial", AppointmentModel);
//}
[Authorize]
public string SelectActiveViewType(string viewTypeName)
@@ -654,7 +655,7 @@ namespace BeWoPlanerMobil.Controllers
}
[Authorize]
public ActionResult UpdateEmployeeSelection(long[] selectedOids)
public ActionResult UpdateEmployeeFilterSelection(long[] selectedOids)
{
if(Model is null)
{
@@ -676,7 +677,7 @@ namespace BeWoPlanerMobil.Controllers
}
[Authorize]
public ActionResult UpdateCustomerSelection(long[] selectedOids)
public ActionResult UpdateCustomerFilterSelection(long[] selectedOids)
{
if(Model is null)
{
@@ -698,7 +699,7 @@ namespace BeWoPlanerMobil.Controllers
}
[Authorize]
public ActionResult UpdateResourceSelection(long[] selectedOids)
public ActionResult UpdateResourceFilterSelection(long[] selectedOids)
{
if(Model is null)
{
@@ -860,5 +861,83 @@ namespace BeWoPlanerMobil.Controllers
return PartialView("SchedulerPagePartial", Model);
}
[Authorize]
public string GetEmployeePageCount()
{
return JsonConvert.SerializeObject(new EditFormInfo(AppointmentModel.EmployeePageCount, AppointmentModel.EmployeePageLimit));
}
[Authorize]
public string GetCustomerPageCount()
{
return JsonConvert.SerializeObject(new EditFormInfo(AppointmentModel.CustomerPageCount, AppointmentModel.CustomerPageLimit));
}
[Authorize]
public string GetResourcePageCount()
{
return JsonConvert.SerializeObject(new EditFormInfo(AppointmentModel.ResourcePageCount, AppointmentModel.ResourcePageLimit));
}
[Authorize]
public string UpdateAppointmentEmployeeSelection(string selectedOids)
{
if(selectedOids is null)
{
selectedOids = string.Empty;
}
var selectedEmployeeOids = selectedOids.Length == 0 ? new List<long>() : selectedOids.Split(',').Select(long.Parse).ToList();
AppointmentModel.SelectedEmployee2SchedulerAppointments = new List<Employee2SchedulerAppointmentDC>();
var employees = AppointmentModel.PossibleEmployees.Where(possibleEmployee => selectedEmployeeOids.Contains(possibleEmployee.EmployeeOid)).ToList();
foreach(var employee in employees)
{
AppointmentModel.SelectedEmployee2SchedulerAppointments.Add(new Employee2SchedulerAppointmentDC { Employee = employee });
}
return LeerzeichenFuerGetMethoden;
}
[Authorize]
public string UpdateAppointmentCustomerSelection(string selectedOids)
{
if(selectedOids is null)
{
selectedOids = string.Empty;
}
AppointmentModel.SelectedCustomerOids = selectedOids.Length == 0 ? new List<long>() : selectedOids.Split(',').Select(long.Parse).ToList();
return LeerzeichenFuerGetMethoden;
}
[Authorize]
public string UpdateAppointmentResourceSelection(string selectedOids)
{
if(selectedOids is null)
{
selectedOids = string.Empty;
}
AppointmentModel.SelectedResourceOids = selectedOids.Length == 0 ? new List<long>() : selectedOids.Split(',').Select(long.Parse).ToList();
return LeerzeichenFuerGetMethoden;
}
}
public class EditFormInfo
{
public int PageCount { get; }
public int PageLimit { get; }
public EditFormInfo(int pageCount, int pageLimit)
{
PageCount = pageCount;
PageLimit = pageLimit;
}
}
}

View File

@@ -1,5 +1,4 @@
using Antlr.Runtime.Tree;
using BeWo.Data.Access;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.AI;
using BeWo.Service.DCEntityMapper;
@@ -14,6 +13,7 @@ using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
using BS.Shared.Services;
using DevExpress.Utils.Extensions;
using DevExpress.XtraScheduler;
using DevExpress.XtraScheduler.Compatibility;
using Newtonsoft.Json;
@@ -28,6 +28,7 @@ using System.Net.Sockets;
using System.Text;
using System.Web.Mvc;
using System.Windows.Forms;
using NHibernate;
using static BeWoPlanerMobil.Util.MobileUtils;
using static BS.Shared.ServiceRecordValidationResult;
using FormCollection = System.Web.Mvc.FormCollection;
@@ -184,6 +185,7 @@ namespace BeWoPlanerMobil.Controllers
}
}
//Einfachbuchung
var allCostBearerRelationsSingleBooking = new List<MokSupportConceptListObject> {
new MokSupportConceptListObject(-1, -1, false, false, false, false)
{
@@ -193,7 +195,10 @@ namespace BeWoPlanerMobil.Controllers
{
NameAndDateOfBirth = "Ohne Hilfeplan"
}};
if (Model.IsInEditingMode && Model.SelectedCostBearerSupportConceptOid.HasValue && Model.SelectedCostBearerSupportConceptOid.Value > 0)
{
allCostBearerRelationsSingleBooking.RemoveAt(allCostBearerRelationsSingleBooking.Count - 1); // Verhindert, dass man Klienten Buchungen ausversehen zu Buchungen ohne Hilfeplan machen kann.
}
var allCostBearerRelationsMultiBooking = new List<MokSupportConceptListObject>();
@@ -302,9 +307,7 @@ namespace BeWoPlanerMobil.Controllers
}
}
}
}
}
if(Model.IsInEditingMode && Model.SelectedServiceRecordOid.HasValue)
@@ -346,7 +349,7 @@ namespace BeWoPlanerMobil.Controllers
Model.ShowServiceRecordInsertedOn = !UserSettingsUtils.GetSettingValueAsBool(Model.Mandator.Settings, SettingsKeys.HideServiceRecordInsertedByAndInsertedOn);
Model.ShowSignature = UserSettingsUtils.GetSettingValueAsBool(Model.Mandator.Settings, SettingsKeys.ShowSignature) && Model.HasRightToProvideSingleSignature;
Model.ShowDistanceField = UserSettingsUtils.GetSettingValueAsBool(Model.Mandator.Settings, SettingsKeys.ShowDistanceFields);
var settingsValue = GetSettingValue(Model.Mandator.Settings, SettingsKeys.IsServiceRecordNoticeMandatory);
@@ -578,16 +581,29 @@ namespace BeWoPlanerMobil.Controllers
public ServiceRecordDC GetServiceRecordDC(long serviceRecordOid, bool getCompact)
{
ServiceRecordDC dc = null;
if (_Model != null)
if(_Model != null)
{
dc = _Model.FindServiceRecord(serviceRecordOid);
}
if (dc == null)
if(dc is null)
{
var sr = DAOFactory.GenericDAO.LoadByID<ServiceRecord>(serviceRecordOid);
if (getCompact)
try
{
dc = new ServiceRecordDC()
NHibernateUtil.Initialize(sr);
}
catch(ObjectNotFoundException exception)
{
TempData[TempDataConstants.ErrorAlertPopupMessage] = "Der ausgewählte Eintrag wurde in der Zwischenzeit gelöscht. Bearbeiten nicht möglich.";
return null;
}
if(getCompact)
{
dc = new ServiceRecordDC
{
Betrag = sr.Betrag,
CostBearer2SupportConceptOid = sr.CostBearer2SupportConceptOid,
@@ -616,8 +632,10 @@ namespace BeWoPlanerMobil.Controllers
ServiceRecordOid = sr.Oid,
Start = sr.Start
};
return dc;
}
dc = MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewDC(sr);
}
@@ -1530,28 +1548,32 @@ namespace BeWoPlanerMobil.Controllers
if(false == Model.IsInEditingMode)
{
if(Model.NewServiceRecord.CostBearer != null && Model.ShowSignature && (Model.NewServiceRecord.ServiceDescription.Category.IsBillable || Model.NewServiceRecord.ServiceDescription.Category.BillableAmount > 0m || Model.NewServiceRecord.ServiceDescription.BillableAmount > 0m))
//if(Model.NewServiceRecord.CostBearer != null && Model.ShowSignature && (Model.NewServiceRecord.ServiceDescription.Category.IsBillable || Model.NewServiceRecord.ServiceDescription.Category.BillableAmount > 0m || Model.NewServiceRecord.ServiceDescription.BillableAmount > 0m))
//{
var dummystats = new SupportConceptStatisticsDC();
dummystats.PeriodStatistics = new List<SupportConceptPeriodStatisticsDC>();
var valRes = OperationsService.ValidateServiceRecord(Model.NewServiceRecord, dummystats, 0, null, null);
var doppelt = valRes.Count > 0 && valRes.FirstOrDefault(v => v.ResultType == DoppelterEintrag) != null;
if(!doppelt)
{
var valRes = OperationsService.ValidateServiceRecord(Model.NewServiceRecord, null, 0, null, null);
var doppelt = valRes.Count > 0 && valRes.FirstOrDefault(v => v.ResultType == DoppelterEintrag) != null;
var oidList = OperationsService.InsertNewServiceRecords(new List<ServiceRecordDC> { Model.NewServiceRecord });
if(!doppelt)
Model.LastCreatedServiceRecordOid = oidList[0];
if(Model.IsAllowedToCreateSignature(Model.NewServiceRecord))
{
var oidList = OperationsService.InsertNewServiceRecords(new List<ServiceRecordDC> { Model.NewServiceRecord });
Model.LastCreatedServiceRecordOid = oidList[0];
if(Model.IsAllowedToCreateSignature(Model.NewServiceRecord))
if(Model.NewServiceRecord.CostBearer != null && Model.ShowSignature && (Model.NewServiceRecord.ServiceDescription.Category.IsBillable || Model.NewServiceRecord.ServiceDescription.Category.BillableAmount > 0m || Model.NewServiceRecord.ServiceDescription.BillableAmount > 0m))
{
if(Model.NewServiceRecord.CostBearer != null && Model.ShowSignature && (Model.NewServiceRecord.ServiceDescription.Category.IsBillable || Model.NewServiceRecord.ServiceDescription.Category.BillableAmount > 0m || Model.NewServiceRecord.ServiceDescription.BillableAmount > 0m))
{
TempData[TempDataConstants.ShowSignatureSuggestionPopup] = true;
}
TempData[TempDataConstants.ShowSignatureSuggestionPopup] = true;
}
}
}
//}
// Es wird ein Termin aus dem Kalender in die Zeiterfassung übertragen
if(appointmentPrototype is object)
{
var serviceRecord = OperationsService.GetServiceRecordById(Model.LastCreatedServiceRecordOid);
@@ -1594,7 +1616,7 @@ namespace BeWoPlanerMobil.Controllers
Model.NewServiceRecord = new ServiceRecordDC();
}
catch (Exception e)
catch(Exception e)
{
Log.Error(e.Message, e);
}

View File

@@ -1332,11 +1332,11 @@ namespace BeWoPlanerMobil.Controllers
var oids = quittierungsbelegItems.Select(s => s.ServiceRecordOid).ToList();
var hasCustomerSignature = srOids.All(a => serviceRecordOidsWithSignature.ContainsValueAtKey(SignatureType.Customer, a));
var hasCustomerSignature = oids.All(a => serviceRecordOidsWithSignature.ContainsValueAtKey(SignatureType.Customer, a));
var employeeSignatureState2 = GetSignatureState(srOids, serviceRecordOidsWithSignature, SignatureType.Employee);
var employeeSignatureState2 = GetSignatureState(oids, serviceRecordOidsWithSignature, SignatureType.Employee);
var customerSignatureState = GetSignatureState(srOids, serviceRecordOidsWithSignature, SignatureType.Customer);
var customerSignatureState = GetSignatureState(oids, serviceRecordOidsWithSignature, SignatureType.Customer);
var customerSignatureOid = hasCustomerSignature ? customerSignatures.FirstOrDefault(cs => cs.ServiceRecords.All(a => a.Customer.CustomerOid.Equals(reportObject.CustomerOid) && a.ServiceRecordOid.HasValue && serviceRecordOidsWithSignature[SignatureType.Customer].Contains(a.ServiceRecordOid.Value)))?.ConfirmationReceiptSignatureOid : null;
var sigs = customerSignatures.Where(cs => cs.ServiceRecords.All(a => a.Customer.CustomerOid.Equals(reportObject.CustomerOid) && a.ServiceRecordOid.HasValue && serviceRecordOidsWithSignature[SignatureType.Customer].Contains(a.ServiceRecordOid.Value))).ToList();

View File

@@ -0,0 +1,81 @@
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.AI;
using BeWo.Service.ServiceImplementations;
using BeWoPlanerMobil.Service;
using BS.Shared;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.ServiceModel.Syndication;
using System.Web.Mvc;
using System.Xml;
namespace BeWoPlanerMobil.Controllers
{
public class SystemController : Controller
{
protected static readonly log4net.ILog Log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public string Index()
{
return "Das ist die <b>Default</b> Aktion... Sie haben hier nix verloren;-)";
}
[System.Web.Http.HttpPost]
public JsonResult GetLicenseCount(string k)
{
try
{
var apikey = Request["API-KEY"];
#if DEBUG
k = "demo"; // Test mit Autismus Köln Bonn
apikey = "SfTexuvxVGhNNyASiy43AnWa97VDcDsULyRTfxuWNC3YbNyLhzk48O7Hfzs7PNiy";
#endif
if (k == null)
{
return Json("99", JsonRequestBehavior.AllowGet);
}
MobileSessionFacade.Tenant = k;
var isKundennummerVorhanden = ASPHibernateSessionManager.ConfigureHibernateSessionForWebService();
if (isKundennummerVorhanden)
{
//var operationsServiceImp = new OperationsServiceImp();
//var mandator = operationsServiceImp.GetMandator2(false);
//if (mandator.Apikey == apikey)
//{
Response.AddHeader("Content-Type", "application/json"); //; charset=utf8
var employees = DAOFactory.GenericDAO.GetAllActive<Employee>();
var appUser = DAOFactory.GenericDAO.GetAllActive<ApplicationUser>();
return Json(new { success = true, employee_count = employees.Count, user_count = appUser.Count }, JsonRequestBehavior.AllowGet);
//}
}
return Json(new { success = false }, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
return Json(new { success = false, message = "Error: " + ex.Message }, JsonRequestBehavior.AllowGet);
}
}
}
}

View File

@@ -3,6 +3,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
namespace BeWoPlanerMobil.Models
{
@@ -30,64 +31,16 @@ namespace BeWoPlanerMobil.Models
public string CompletedNotice { get; set; }
public string CompletedUser { get; set; }
public string TaskDescription { get; set; }
public List<CompactCustomerDC> SelectedCustomers
{
get
{
return SelectedCustomerOids is null ?
null :
PossibleCustomers.Where(customer => SelectedCustomerOids.Contains(customer.CustomerOid)).ToList();
}
set
{
SelectedCustomerOids = value?.Select(customer => customer.CustomerOid).ToList();
}
}
public List<ResourceDC> SelectedResources
{
get
{
return SelectedResourceOids is null ?
null :
PossibleResources.Where(resource => resource.ResourceOid.HasValue && SelectedResourceOids.Contains(resource.ResourceOid.Value)).ToList();
}
set
{
SelectedResourceOids = value?.Where(resource => resource.ResourceOid.HasValue).Select(resource => resource.ResourceOid.Value).ToList();
}
}
public bool HasServiceRecordEntry { get; set; }
public List<ServiceRecordDC> ServiceRecordList { get; set; }
public List<CompactCustomerDC> PossibleCustomers { get; set; }
public List<ResourceDC> PossibleResources { get; set; }
public List<long> SelectedCustomerOids
{
get => AppointmentSessionModel.SelectedCustomerOids;
set => AppointmentSessionModel.SelectedCustomerOids = value;
}
public List<long> SelectedResourceOids
{
get => AppointmentSessionModel.SelectedResourceOids;
set => AppointmentSessionModel.SelectedResourceOids = value;
}
/* Mitarbeiter */
#region Mitarbeiter
public List<CompactEmployeeDC> PossibleEmployees { get; set; }
public int EmployeePageLimit => 10;
public int EmployeePageCount => (PossibleEmployees?.Count ?? 0) / EmployeePageLimit;
public List<Employee2SchedulerAppointmentDC> SelectedEmployee2SchedulerAppointments { get; set; }
public List<CompactEmployeeDC> SelectedEmployees { get; set; }
@@ -103,12 +56,64 @@ namespace BeWoPlanerMobil.Models
get => AppointmentSessionModel.SelectedEmployees2Appointments;
set => AppointmentSessionModel.SelectedEmployees2Appointments = value;
}
/* /Mitarbeiter */
#endregion
#region Klienten
public List<CompactCustomerDC> PossibleCustomers { get; set; }
public int CustomerPageLimit => 10;
public int CustomerPageCount => (PossibleCustomers?.Count ?? 0) / CustomerPageLimit;
public List<CompactCustomerDC> SelectedCustomers
{
get
{
return SelectedCustomerOids is null ? null : PossibleCustomers.Where(customer => SelectedCustomerOids.Contains(customer.CustomerOid)).ToList();
}
set
{
SelectedCustomerOids = value?.Select(customer => customer.CustomerOid).ToList();
}
}
public List<long> SelectedCustomerOids
{
get => AppointmentSessionModel.SelectedCustomerOids;
set => AppointmentSessionModel.SelectedCustomerOids = value;
}
#endregion
#region Ressourcen
public Dictionary<ValueListEntryDC, List<ResourceDC>> ResourceCategories2Resources { get; set; }
public List<ResourceDC> PossibleResources { get; set; }
public int ResourcePageLimit => 10;
public int ResourcePageCount => (ResourceCategories2Resources?.Keys?.Count ?? 0) / ResourcePageLimit;
public List<ResourceDC> SelectedResources
{
get
{
return SelectedResourceOids is null ?
null :
PossibleResources.Where(resource => resource.ResourceOid.HasValue && SelectedResourceOids.Contains(resource.ResourceOid.Value)).ToList();
}
set
{
SelectedResourceOids = value?.Where(resource => resource.ResourceOid.HasValue).Select(resource => resource.ResourceOid.Value).ToList();
}
}
public List<long> SelectedResourceOids
{
get => AppointmentSessionModel.SelectedResourceOids;
set => AppointmentSessionModel.SelectedResourceOids = value;
}
#endregion
public AppointmentModel()
@@ -122,6 +127,13 @@ namespace BeWoPlanerMobil.Models
PossibleResources = possibleResources;
PossibleEmployees = possibleEmployees;
ResourceCategories2Resources = new Dictionary<ValueListEntryDC, List<ResourceDC>>();
foreach(var resource in PossibleResources)
{
ResourceCategories2Resources.AddOrUpdateValueInDictionary(resource.ResourceCategory, resource);
}
SessionModel = new AppointmentSessionModel();
}

View File

@@ -4,20 +4,20 @@ namespace BeWoPlanerMobil.Models
{
public class AppointmentSessionModel : BaseSessionModel
{
public List<long> SelectedCustomerOids { get; set; }
public List<long> SelectedEmployeeOids { get; set; }
public List<long> SelectedCustomerOids { get; set; }
public List<long> SelectedResourceOids { get; set; }
public List<long> SelectedEmployees2Appointments { get; set; }
public List<long> SelectedEmployees2Appointments { get; set; } = new List<long>();
public override void ResetValues()
{
base.ResetValues();
SelectedCustomerOids = null;
SelectedEmployeeOids = null;
SelectedResourceOids = null;
SelectedEmployees2Appointments = null;
SelectedCustomerOids = new List<long>();
SelectedEmployeeOids = new List<long>();
SelectedResourceOids = new List<long>();
SelectedEmployees2Appointments = new List<long>();
}
}
}

View File

@@ -103,29 +103,6 @@ namespace BeWoPlanerMobil.Models
public List<CompactCustomerDC> SelectedCustomersForFiltering { get; set; }
public List<ResourceDC> SelectedResourcesForFiltering { get; set; }
public List<CompactEmployeeDC> SelectedEmployeesForIntervalFinder { get; set; }
public List<CompactCustomerDC> SelectedCustomersForIntervalFinder { get; set; }
public List<ResourceDC> SelectedResourcesForIntervalFinder { get; set; }
public List<long> SelectedEmployeeOidsForIntervalFinder
{
get => DevExpressSchedulerSessionModel.SelectedEmployeeOidsForIntervalFinder;
set => DevExpressSchedulerSessionModel.SelectedEmployeeOidsForIntervalFinder = value;
}
public List<long> SelectedCustomerOidsForIntervalFinder
{
get => DevExpressSchedulerSessionModel.SelectedCustomerOidsForIntervalFinder;
set => DevExpressSchedulerSessionModel.SelectedCustomerOidsForIntervalFinder = value;
}
public List<long> SelectedResourceOidsForIntervalFinder
{
get => DevExpressSchedulerSessionModel.SelectedResourceOidsForIntervalFinder;
set => DevExpressSchedulerSessionModel.SelectedResourceOidsForIntervalFinder = value;
}
public bool ShowTasks
{

View File

@@ -14,10 +14,6 @@ namespace BeWoPlanerMobil.Models
public List<long> SelectedCustomerOidsForFiltering { get; set; }
public List<long> SelectedResourceOidsForFiltering { get; set; }
public List<long> SelectedEmployeeOidsForIntervalFinder { get; set; }
public List<long> SelectedCustomerOidsForIntervalFinder { get; set; }
public List<long> SelectedResourceOidsForIntervalFinder { get; set; }
public List<long> OpenAppointmentOids { get; set; }
public long? AppointmentOid2Answer { get; set; }
@@ -44,10 +40,6 @@ namespace BeWoPlanerMobil.Models
SelectedCustomerOidsForFiltering = new List<long>();
SelectedResourceOidsForFiltering = new List<long>();
SelectedEmployeeOidsForIntervalFinder = new List<long>();
SelectedCustomerOidsForIntervalFinder = new List<long>();
SelectedResourceOidsForIntervalFinder = new List<long>();
OpenAppointmentOids = new List<long>();
ShowTasks = false;

View File

@@ -144,7 +144,7 @@ namespace BeWoPlanerMobil.Service
private static bool ShouldConfigureHibernateSession(HttpApplication context)
{
if(context.Request.FilePath.IndexOf("/Chat/", StringComparison.InvariantCulture) >= 0)
if(context.Request.FilePath.IndexOf("/Chat/", StringComparison.InvariantCulture) >= 0 || context.Request.FilePath.IndexOf("/System/", StringComparison.InvariantCulture) >= 0)
{
return false;
}

View File

@@ -9,6 +9,8 @@ namespace BeWoPlanerMobil.Util
{
public class JsonCustomer
{
public long PersonOid { get; set; }
public long CustomerOid { get; set; }
public string Vorname { get; set; }
public string Nachname { get; set; }
@@ -116,6 +118,8 @@ namespace BeWoPlanerMobil.Util
!string.IsNullOrWhiteSpace(SchwebiAusstAmt);
ICD10Diagnosen = icd10Diagnosen;
PersonOid = customer.PersonOid ?? 0;
CustomerOid = customer.CustomerOid ?? 0;
Vorname = customer.FirstName;
Nachname = customer.LastName;
Alias = customer.CustomerAlias;

View File

@@ -185,10 +185,13 @@
</div>
<div class="collapse @Html.GetCollapsibleClass(Model.Collapsibles2IsShown, "customer-details-collapsible")" id="customer-details-collapsible">
<div class="card-body py-0">
@using(Html.BeginForm("UpdateCustomer", "Customer", FormMethod.Post, new { id = "stammdaten-form", @class = "needs-validation", novalidate = "novalidate" }))
@using (Html.BeginForm("UpdateCustomer", "Customer", FormMethod.Post, new { id = "stammdaten-form", @class = "needs-validation", novalidate = "novalidate" }))
{
var inputDisabled = !Model.HasRightToEditCustomers ? "disabled" : string.Empty;
<input type="hidden" id="PersonOid" name="PersonOid" value="@Model.SelectedJsonCustomer.PersonOid" />
<input type="hidden" id="CustomerOid" name="CustomerOid" value="@Model.SelectedJsonCustomer.CustomerOid" />
<div class="row" id="stammdaten-container">
<div class="col-sm-12 col-md-12 col-lg-6 col-xl-6 mt-2 px-1">
<div class="card">
@@ -196,6 +199,7 @@
<div class="card-title text-bewo-customer-card-header">
Eigenschaften
</div>
<div class="row">
<div class="form-group w-100 mt-1 my-0">
<div class="input-group">
@@ -518,7 +522,7 @@
</div>
</div>
@if(Model.HasRightToEditCustomers)
@if (Model.HasRightToEditCustomers)
{
<div class="col-12 mb-2 px-1 mt-2">
<button type="submit" class="btn btn-primary float-right w-100 m-0" onclick="showSpinner()">Speichern</button>
@@ -1068,7 +1072,7 @@
</div>
<div class="collapse @Html.GetCollapsibleClass(Model.Collapsibles2IsShown, "customer-betreuung-collapsible")" , id="customer-betreuung-collapsible">
<div class="card-body p-1">
<div id="betreuungscontainer">
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3" id="betreuungscontainer">
@Html.Partial("CustomerBetreuungPartial", Model)
</div>
</div>

View File

@@ -10,111 +10,93 @@
@if(hasRelatedEmployees && Model.SelectedCustomer != null)
{
<div class="card w-100 h-100">
<div class="card-header" onclick="cardHeaderClick2(this)">
<div class="d-inline-flex">
<i class="fas fa-chevron-down h-100 text-bewo-customer-card-header" id="chevron-customer-betreuung-list"></i>
</div>
<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;">
Betreuung
</button>
</div>
</div>
<div class="collapse @Html.GetCollapsibleClass(Model.Collapsibles2IsShown, "collapse-customer-betreuung-list")" id="collapse-customer-betreuung-list">
<div class="card-body p-1">
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3">
@foreach(var relation in Model.SelectedCustomer.RelatedEmployees)
{
var start = relation.StartDate.HasValue ? $"{relation.StartDate.Value:dd.MM.yyyy}" : "";
var end = relation.EndDate.HasValue ? $"{relation.EndDate.Value:dd.MM.yyyy}" : "";
foreach(var relation in Model.SelectedCustomer.RelatedEmployees)
{
var start = relation.StartDate.HasValue ? $"{relation.StartDate.Value:dd.MM.yyyy}" : "";
var end = relation.EndDate.HasValue ? $"{relation.EndDate.Value:dd.MM.yyyy}" : "";
var relationRole = relation.RelationRole?.DisplayName ?? string.Empty;
var relationRole = relation.RelationRole?.DisplayName ?? string.Empty;
<div class="col mb-3">
<div class="card h-100">
<div class="card-body">
<table class="w-100">
<tbody>
<tr>
<td class="text-secondary align-text-top">Betreuer:</td>
<td class="text-right align-text-top">@relation.Employee</td>
</tr>
<tr>
<td class="text-secondary align-text-top">Rolle:</td>
<td class="text-right align-text-top">@relationRole</td>
</tr>
@if(!string.IsNullOrWhiteSpace(start))
{
<tr>
<td class="text-secondary align-text-top">Startdatum:</td>
<td class="text-right align-text-top">@start</td>
</tr>
}
@if(!string.IsNullOrWhiteSpace(end))
{
<tr>
<td class="text-secondary align-text-top">Enddatum:</td>
<td class="text-right align-text-top">@end</td>
</tr>
}
@if(!string.IsNullOrWhiteSpace(relation.Notice))
{
<tr>
<td class="text-secondary align-text-top pr-1">Erläuterung:</td>
<td class="text-justify align-text-top">@relation.Notice</td>
</tr>
}
</tbody>
</table>
</div>
</div>
</div>
}
<div class="col mb-3">
<div class="card h-100">
<div class="card-body">
<table class="w-100">
<tbody>
<tr>
<td class="text-secondary align-text-top">Betreuer:</td>
<td class="text-right align-text-top">@relation.Employee</td>
</tr>
<tr>
<td class="text-secondary align-text-top">Rolle:</td>
<td class="text-right align-text-top">@relationRole</td>
</tr>
@if(!string.IsNullOrWhiteSpace(start))
{
<tr>
<td class="text-secondary align-text-top">Startdatum:</td>
<td class="text-right align-text-top">@start</td>
</tr>
}
@if(!string.IsNullOrWhiteSpace(end))
{
<tr>
<td class="text-secondary align-text-top">Enddatum:</td>
<td class="text-right align-text-top">@end</td>
</tr>
}
@if(!string.IsNullOrWhiteSpace(relation.Notice))
{
<tr>
<td class="text-secondary align-text-top pr-1">Erläuterung:</td>
<td class="text-justify align-text-top">@relation.Notice</td>
</tr>
}
</tbody>
</table>
</div>
</div>
</div>
</div>
}
}
@*Teams*@
@if(hasRelatedTeams && Model.SelectedCustomer != null)
{
<div class="card w-100 h-100 mt-3">
<div class="card-header" onclick="cardHeaderClick2(this)">
<div class="d-inline-flex">
<i class="fas fa-chevron-down h-100 text-bewo-customer-card-header" id="chevron-customer-betreuung-teams"></i>
<div class="card w-100 h-100 mt-3">
<div class="card-header" onclick="cardHeaderClick2(this)">
<div class="d-inline-flex">
<i class="fas fa-chevron-down h-100 text-bewo-customer-card-header" id="chevron-customer-betreuung-teams"></i>
</div>
<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;">
Teams
</button>
</div>
</div>
<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;">
Teams
</button>
</div>
</div>
<div class="collapse @Html.GetCollapsibleClass(Model.Collapsibles2IsShown, "collapse-customer-betreuung-teams")" id="collapse-customer-betreuung-teams">
<div class="card-body">
@foreach(var teamRelation in Model.SelectedCustomer.RelatedTeams)
{
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 row-cols-xl-4">
<div class="col mb-0">
<div class="card h-100">
<div class="card-body">
<table class="w-100">
<tbody>
<tr>
<td class="text-secondary">Team:</td>
<td class="text-right">@teamRelation.Team.Name</td>
</tr>
</tbody>
</table>
<div class="collapse @Html.GetCollapsibleClass(Model.Collapsibles2IsShown, "collapse-customer-betreuung-teams")" id="collapse-customer-betreuung-teams">
<div class="card-body">
@foreach(var teamRelation in Model.SelectedCustomer.RelatedTeams)
{
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 row-cols-xl-4">
<div class="col mb-0">
<div class="card h-100">
<div class="card-body">
<table class="w-100">
<tbody>
<tr>
<td class="text-secondary">Team:</td>
<td class="text-right">@teamRelation.Team.Name</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
}
</div>
}
</div>
</div>
</div>
}

View File

@@ -52,7 +52,7 @@
showSpinner();
$("#customer-input-container").load(
"@Url.Action("UpdateCustomerSelection")",
"@Url.Action("UpdateCustomerFilterSelection")",
{ selectedOids: selectedCustomerOids },
() => {
scheduler.Refresh();

View File

@@ -62,7 +62,7 @@
logInfo3(`Es wurden ${selectedEmployeeOids.length} Mitarbeiter ausgewählt.`);
$("#employee-input-container").load(
"@Url.Action("UpdateEmployeeSelection", "DevExpressScheduler")",
"@Url.Action("UpdateEmployeeFilterSelection", "DevExpressScheduler")",
{
selectedOids: selectedEmployeeOids
},

View File

@@ -27,7 +27,7 @@
showSpinner();
$("#resource-input-container").load(
"@Url.Action("UpdateResourceSelection")",
"@Url.Action("UpdateResourceFilterSelection")",
{
selectedOids: selectedResourceOids
},

View File

@@ -6,6 +6,7 @@
@{
Html.EnableClientValidation();
Html.EnableUnobtrusiveJavaScript();
}
<style type="text/css">
@@ -18,6 +19,52 @@
@using(Html.BeginForm())
{
<table id="abc-table">
@* Betreff *@
<tr>
<td>
@Html.DevExpress().Label(
settings =>
{
settings.AssociatedControlName = nameof(SchedulerAppointmentDC.Subject);
settings.Text = "Betreff:";
settings.Width = Unit.Percentage(100);
}).GetHtml()
</td>
<td colspan="3" style="width: 100%; padding: .25em;">
@Html.DevExpress().TextBox(
settings =>
{
settings.Name = nameof(SchedulerAppointmentDC.Subject);
settings.ShowModelErrors = true;
settings.Properties.ValidationSettings.Display = Display.Dynamic;
settings.Width = Unit.Percentage(100);
}).Bind(Model.Subject).GetHtml()
</td>
</tr>
@* Ort *@
<tr>
<td>
@Html.DevExpress().Label(
settings =>
{
settings.AssociatedControlName = nameof(SchedulerAppointmentDC.Location);
settings.Text = "Ort:";
settings.Width = Unit.Percentage(100);
}).GetHtml()
</td>
<td colspan="3" style="width: 100%; padding: .25em;">
@Html.DevExpress().TextBox(
settings =>
{
settings.Name = nameof(SchedulerAppointmentDC.Location);
settings.ShowModelErrors = true;
settings.Properties.ValidationSettings.Display = Display.Dynamic;
settings.Width = Unit.Percentage(100);
}).Bind(Model.Location).GetHtml()
</td>
</tr>
@* Start *@
<tr>
<td style="white-space: nowrap;">
@@ -111,90 +158,24 @@
</table>
</td>
</tr>
@* Mitarbeiter, Klienten, Ressourcen *@
<tr>
<td colspan="4">
<table>
<tr>
<td style="width: 33%; padding: .25em;">
@Html.Partial("EmployeeMultiSelectPartial")
</td>
<td style="width: 33%; padding: .25em;">
@Html.Partial("CustomerMultiSelectPartial")
</td>
<td style="width: 33%; padding: .25em;">
@Html.Partial("ResourceMultiSelectPartial")
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="4">
<table>
<table class="w-100">
<tr>
<td style="width: 33%; padding: .25em;">
@Html.Partial("CustomEmployeeSelectPartial", Model)
</td>
<td style="width: 33%; padding: .25em;">
@Html.Partial("CustomCustomerSelectPartial", Model)
</td>
<td style="width: 33%; padding: .25em;">
@Html.Partial("CustomResourceSelectPartial", Model)
</td>
</tr>
</table>
</td>
</tr>
@* Betreff *@
<tr>
<td>
@Html.DevExpress().Label(
settings =>
{
settings.AssociatedControlName = nameof(SchedulerAppointmentDC.Subject);
settings.Text = "Betreff:";
settings.Width = Unit.Percentage(100);
}).GetHtml()
</td>
<td colspan="3" style="width: 100%; padding: .25em;">
@Html.DevExpress().TextBox(
settings =>
{
settings.Name = nameof(SchedulerAppointmentDC.Subject);
settings.ShowModelErrors = true;
settings.Properties.ValidationSettings.Display = Display.Dynamic;
settings.Width = Unit.Percentage(100);
}).Bind(Model.Subject).GetHtml()
</td>
</tr>
@* Ort *@
<tr>
<td>
@Html.DevExpress().Label(
settings =>
{
settings.AssociatedControlName = nameof(SchedulerAppointmentDC.Location);
settings.Text = "Ort:";
settings.Width = Unit.Percentage(100);
}).GetHtml()
</td>
<td colspan="3" style="width: 100%; padding: .25em;">
@Html.DevExpress().TextBox(
settings =>
{
settings.Name = nameof(SchedulerAppointmentDC.Location);
settings.ShowModelErrors = true;
settings.Properties.ValidationSettings.Display = Display.Dynamic;
settings.Width = Unit.Percentage(100);
}).Bind(Model.Location).GetHtml()
</td>
</tr>
@* Notiz *@
<tr>
<td colspan="4">

View File

@@ -0,0 +1,59 @@
@using BS.Shared.Extensions
@model BeWoPlanerMobil.Models.AppointmentModel
@{
var areAllSelected = Model.SelectedCustomerOids.AreListEqual(Model.PossibleCustomers.Select(customer => customer.CustomerOid).ToList());
var allChecked = areAllSelected ? "checked" : string.Empty;
}
<div class="dropdown w-100" id="customers-dropdown">
<button class="btn btn-bewo-customers dropdown-toggle w-100" type="button" data-toggle="dropdown">
Klienten <span class="badge badge-light">@Model.SelectedCustomerOids.Count</span>
</button>
<div class="dropdown-menu" onclick="event.stopPropagation();">
<div class="dropdown-item py-1 px-2">
<div class="input-group input-group-sm">
<div class="input-group-prepend">
<div class="input-group-text">
<input type="checkbox" @allChecked onclick="selectAllEmployeeCustomerResource('cus')" id="apt-cus-select-all">
</div>
</div>
<input type="text" class="form-control" id="cus-drop-search-input" placeholder="Suchen ..." oninput="onNewSearchInput('cus')">
<div class="input-group-append">
<button type="button" class="btn btn-outline-secondary" onclick="resetNewSearch('cus')">
<span class="fas fa-times-circle"></span>
</button>
</div>
</div>
</div>
<div class="dropdown-divider"></div>
<div id="dropdown-cus-itm-container">
@for(var i = 0; i < Model.PossibleCustomers.Count; i++)
{
var customer = Model.PossibleCustomers[i];
var isChecked = Model.SelectedCustomerOids.Contains(customer.CustomerOid) ? "checked" : string.Empty;
var dNone = i / Model.CustomerPageLimit + 1 != 1 ? " d-none" : string.Empty;
<div class="dropdown-item w-100 @dNone" id="dropdown-item-@i">
<form class="form-inline justify-content-between">
<div class="form-group form-check">
<input class="form-check-input" type="checkbox" id="apt-edit-cus-@customer.CustomerOid" @isChecked onclick="updateEmployeeCustomerResourceSelection('cus')" />
<label for="apt-edit-cus-@customer.CustomerOid" class="form-check-label">
@customer.DetailDescription
</label>
</div>
</form>
</div>
}
</div>
<div class="dropdown-divider" id="apt-cus-pag-divider"></div>
<div class="dropdown-item" id="apt-cus-pag-dropdow-item">
<nav id="apt-cus-pag-nav">
<ul class="pagination justify-content-center" id="apt-cus-pagination">
</ul>
</nav>
</div>
</div>
</div>

View File

@@ -1,80 +1,100 @@
@using BS.Shared
@using BS.Shared.Core.Utilities
@using BS.Shared.Extensions
@model BeWoPlanerMobil.Models.AppointmentModel
<script type="text/javascript">
</script>
<style type="text/css">
li {
cursor: pointer;
}
</style>
@functions
{
string GetParticipationColor(ParticipationAnswer participationAnswer)
{
var background = "";
static string GetParticipationColor(ParticipationAnswer participationAnswer)
{
var background = "";
switch(participationAnswer)
{
case ParticipationAnswer.Zusage:
background = "#48D44E";
break;
case ParticipationAnswer.Vorbehalt:
background = "#B927D9";
break;
case ParticipationAnswer.Absage:
background = "#AB0030";
break;
}
switch(participationAnswer)
{
case ParticipationAnswer.Zusage:
background = "#48D44E";
break;
case ParticipationAnswer.Vorbehalt:
background = "#B927D9";
break;
case ParticipationAnswer.Absage:
background = "#AB0030";
break;
}
return background;
}
return background;
}
}
<div class="dropdown">
<button class="btn btn-bewo-employee dropdown-toggle" type="button" data-toggle="dropdown">
Mitarbeiter
</button>
<div class="dropdown-menu">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
@{
var areAllSelected = Model.SelectedEmployee2SchedulerAppointments.Select(x => x.Employee.EmployeeOid).ToList().AreListEqual(Model.PossibleEmployees.Select(employee => employee.EmployeeOid).ToList());
@foreach(var employee in Model.PossibleEmployees)
{
var isChecked = Model.SelectedEmployeeOids.Contains(employee.EmployeeOid) ? "checked" : string.Empty;
var employee2Appointment = Model.SelectedEmployee2SchedulerAppointments.FirstOrDefault(e2A => e2A.Employee.EmployeeOid.Equals(employee.EmployeeOid));
var allChecked = areAllSelected ? "checked" : string.Empty;
}
var background = "";
<div class="dropdown w-100" id="employees-dropdown">
<button class="btn btn-bewo-employee dropdown-toggle w-100" type="button" data-toggle="dropdown">
Mitarbeiter <span class="badge badge-light">@Model.SelectedEmployee2SchedulerAppointments.Count</span>
</button>
<div class="dropdown-menu" onclick="event.stopPropagation();">
<div class="dropdown-item py-1 px-2">
<div class="input-group input-group-sm">
<div class="input-group-prepend">
<div class="input-group-text">
<input type="checkbox" @allChecked onclick="selectAllEmployeeCustomerResource('emp')" id="apt-emp-select-all">
</div>
</div>
<input type="text" class="form-control" id="emp-drop-search-input" placeholder="Suchen ..." oninput="onNewSearchInput('emp')">
<div class="input-group-append">
<button type="button" class="btn btn-outline-secondary" onclick="resetNewSearch('emp')">
<span class="fas fa-times-circle"></span>
</button>
</div>
</div>
</div>
<div class="dropdown-divider"></div>
<div id="dropdown-emp-itm-container">
@for(var i = 0; i < Model.PossibleEmployees.Count; i++)
{
var employee = Model.PossibleEmployees[i];
var isChecked = Model.SelectedEmployeeOids.Contains(employee.EmployeeOid) ? "checked" : string.Empty;
var employee2Appointment = Model.SelectedEmployee2SchedulerAppointments.FirstOrDefault(e2A => e2A.Employee.EmployeeOid.Equals(employee.EmployeeOid));
if(employee2Appointment != null)
{
background = GetParticipationColor(employee2Appointment.ParticipationAnswer);
}
var background = employee2Appointment is null ? string.Empty : GetParticipationColor(employee2Appointment.ParticipationAnswer);
<div class="input-group mb-3">
<div class="input-group-prepend">
<div class="input-group-text">
var x = WebUtils.CheckColorString(employee.EmployeeColor) ? "" : string.Empty;
</div>
</div>
</div>
var dNone = i / Model.EmployeePageLimit + 1 != 1 ? " d-none" : string.Empty;
<div class="dropdown-item w-100 @dNone" id="dropdown-item-@i">
<form class="form-inline justify-content-between">
<div class="form-group form-check">
<input class="form-check-input" type="checkbox" id="apt-edit-emp-@employee.EmployeeOid" @isChecked onclick="updateEmployeeCustomerResourceSelection('emp')" />
<label for="apt-edit-emp-@employee.EmployeeOid" class="form-check-label">
@employee.DetailDescription
</label>
</div>
<a class="dropdown-item" href="#">@employee.DetailDescription</a>
<form class="form-inline">
<div class="form-group form-check">
<input type="checkbox" @isChecked id="apt-edit-emp-@employee.EmployeeOid" />
<label class="form-check-label" for="apt-edit-emp-@employee.EmployeeOid">@employee.DetailDescription</label>
</div>
</form>
/*
*<form class="form-inline">
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" id="only-my-own-appointments-cb2" @isOnlyOwnAptsChecked onclick="filterAppointments()">
<label class="form-check-label" for="only-my-own-appointments-cb2">Nur meine Termine</label>
</div>
</form>
*/
}
</div>
@if(WebUtils.CheckColorString(employee.EmployeeColor))
{
<div class="float-right" style="width: 10px; height: 10px; background-color: @employee.EmployeeColor; border: 1px solid @employee.EmployeeColor; border-radius: 3px;"></div>
}
</form>
</div>
}
</div>
<div class="dropdown-divider" id="apt-emp-pag-divider"></div>
<div class="dropdown-item" id="apt-emp-pag-dropdow-item">
<nav id="apt-emp-pag-nav">
<ul class="pagination justify-content-center" id="apt-emp-pagination">
</ul>
</nav>
</div>
</div>
</div>

View File

@@ -0,0 +1,128 @@
@using BS.Shared.Core.Utilities
@using BeWoPlanerMobil.Util
@model BeWoPlanerMobil.Models.AppointmentModel
@{
var j = 0;
var areAllSelected = true;
foreach(var category2Resources in Model.ResourceCategories2Resources)
{
var resourceOids = category2Resources.Value.Select(resource => resource.ResourceOid.Value).ToList();
if(false == resourceOids.All(oid => Model.SelectedResourceOids.Contains(oid)))
{
areAllSelected = false;
break;
}
}
var checkedValue = areAllSelected ? "checked" : string.Empty;
}
<div class="dropdown w-100" id="resources-dropdown">
<button class="btn btn-bewo-resource dropdown-toggle w-100" type="button" data-toggle="dropdown">
Ressourcen <span class="badge badge-light">@Model.SelectedResourceOids.Count</span>
</button>
<div class="dropdown-menu" onclick="event.stopPropagation();">
<div class="dropdown-item py-1 px-2">
<div class="input-group input-group-sm">
<div class="input-group-prepend">
<div class="input-group-text">
<input type="checkbox" @checkedValue onclick="selectAllEmployeeCustomerResource('res')" id="apt-res-select-all">
</div>
</div>
<input type="text" class="form-control" id="res-drop-search-input" placeholder="Suchen ..." oninput="onNewResourceSeachInput()">
<div class="input-group-append">
<button type="button" class="btn btn-outline-secondary" onclick="resetNewResourceSearch()">
<span class="fas fa-times-circle"></span>
</button>
</div>
</div>
</div>
<div class="dropdown-divider py-0 px-2"></div>
<div id="dropdown-res-itm-container">
@{
foreach(var category2Resources in Model.ResourceCategories2Resources)
{
var category = category2Resources.Key;
var resources = category2Resources.Value;
var dNone = j / Model.ResourcePageLimit + 1 != 1 ? " d-none" : string.Empty;
<div class="dropdown-item w-100 py-0 px-2 @dNone" id="dropdown-item-@j">
<div class="card mb-1 category-card" id="res-cat-@category.ValueListEntryOid">
<div class="card-header tree-card-header px-2 py-1" onclick="categoryCardHeaderClick('collapsable-res-cat-@category.ValueListEntryOid')">
<div class="d-flex align-items-center m-0">
<h6 class="mr-auto mb-0">@category.DisplayName</h6>
<div class="btn-group" role="group">
<span class="fas fa-chevron-down text-primary"></span>
</div>
</div>
</div>
<div class="collapse @Html.GetCollapsibleClass(Model.Collapsibles2IsShown, $"collapsable-res-cat-{category.ValueListEntryOid}")" id="collapsable-res-cat-@category.ValueListEntryOid">
<div class="card-body resource-list px-2 py-1">
@foreach(var resource in resources)
{
var isChecked = resource.ResourceOid.HasValue && Model.SelectedResourceOids.Contains(resource.ResourceOid.Value) ? "checked" : string.Empty;
<form class="form-inline justify-content-between">
<div class="form-group form-check">
<input class="form-check-input" type="checkbox" id="apt-edit-res-@resource.ResourceOid.Value" @isChecked onclick="updateEmployeeCustomerResourceSelection('res')"/>
<label for="apt-edit-res-@resource.ResourceOid.Value" class="form-check-label">
@resource.DetailDescription
</label>
</div>
@if(WebUtils.CheckColorString(resource.Color))
{
<div class="float-right" style="width: 10px; height: 10px; background-color: @resource.Color; border: 1px solid @resource.Color; border-radius: 3px;"></div>
}
</form>
}
</div>
</div>
</div>
</div>
j++;
}
}
</div>
<div class="dropdown-divider" id="apt-res-pag-divider"></div>
<div class="dropdown-item" id="apt-res-pag-dropdow-item">
<nav id="apt-res-pag-nav">
<ul class="pagination justify-content-center" id="apt-res-pagination">
</ul>
</nav>
</div>
</div>
</div>
@* ToDo: Mit den Kategorien wie im alten Kalendermodul bauen!
@for(var i = 0; i < Model.PossibleResources.Count; i++)
{
var resource = Model.PossibleResources[i];
var isChecked = resource.ResourceOid.HasValue && Model.SelectedResourceOids.Contains(resource.ResourceOid.Value) ? "checked" : string.Empty;
var dNone = i / Model.ResourcePageLimit + 1 != 1 ? " d-none" : string.Empty;
<div class="dropdown-item w-100 @dNone" id="dropdown-item-@i">
<form class="form-inline justify-content-between">
<div class="form-group form-check">
<input class="form-check-input" type="checkbox" id="apt-edit-res-@resource.ResourceOid.Value" @isChecked onclick="updateEmployeeCustomerResourceSelection('res')"/>
<label for="apt-edit-res-@resource.ResourceOid.Value" class="form-check-label">
@resource.DetailDescription
</label>
</div>
@if(WebUtils.CheckColorString(resource.Color))
{
<div class="float-right" style="width: 10px; height: 10px; background-color: @resource.Color; border: 1px solid @resource.Color; border-radius: 3px;"></div>
}
</form>
</div>
}*@

View File

@@ -22,6 +22,20 @@
const vw = $(window).width();
if(editFormPopup.outerWidth() !== undefined) {
$.get("@Url.Action("GetEmployeePageCount")", function(editFormInfo) {
pageCountCallback(editFormInfo, "emp");
});
$.get("@Url.Action("GetCustomerPageCount")", function(editFormInfo) {
pageCountCallback(editFormInfo, "cus");
});
$.get("@Url.Action("GetResourcePageCount")", function(editFormInfo) {
pageCountCallback(editFormInfo, "res");
});
}
if(editFormPopup.outerWidth() !== undefined && vw < 678) {
const newWidth = vw * .95;
@@ -51,6 +65,31 @@
}
}
function pageCountCallback(editFormInfo, prefix) {
const info = JSON.parse(editFormInfo);
const items = $(`#dropdown-${prefix}-itm-container .dropdown-item`);
switch(prefix) {
case "emp":
aptEmpSelPageCount = info.PageCount;
aptEmpSelPageLimit = info.PageLimit;
aptEmpSelItems = items;
break;
case "cus":
aptCusSelPageCount = info.PageCount;
aptCusSelPageLimit = info.PageLimit;
aptCusSelItems = items;
break;
case "res":
aptResSelPageCount = info.PageCount;
aptResSelPageLimit = info.PageLimit;
aptResSelItems = items;
break;
}
window.buildPagination(1, 5, 1, prefix);
}
function OnAppointmentFormSave(s, e) {
if(IsValidAppointment()) {
scheduler.AppointmentFormSave();
@@ -68,6 +107,7 @@
CustomerGridLookup.HideDropDown();
}
// ToDo: Löschen
function CloseEmployeeGridLookup() {
EmployeeGridLookup.ConfirmCurrentSelection();
EmployeeGridLookup.HideDropDown();
@@ -117,7 +157,7 @@
}
function OnAppointmentMenuPopup(s, e) {
const id = scheduler.GetSelectedAppointmentIds()[0];
const id = scheduler.GetSelectedAppointmentIds()[0];
const selectedAppointment = scheduler.GetAppointmentById(id);
for(let i = 0; i < e.item.items.length; i++) {
@@ -125,14 +165,14 @@
switch(currentItem.name) {
case "ToServiceRecord":
if(id === undefined || selectedAppointment.IsAbsenceTime || selectedAppointment.IsTask) {
currentItem.SetVisible(false);
if(id === undefined || selectedAppointment.IsAbsenceTime || selectedAppointment.IsTask) {
currentItem.SetVisible(false);
}
break;
case "ConfirmApt":
if(id === undefined || selectedAppointment.CanConfirm === false) {
currentItem.SetVisible(false);
currentItem.SetVisible(false);
}
break;
case "MaybeApt":
@@ -174,8 +214,8 @@
scheduler.PerformCallback({
apptID: "",
actionId: "FilterAppointments",
args: [selectedBoxes]
actionId: "FilterAppointments",
args: [selectedBoxes]
});
}
@@ -189,15 +229,15 @@
switch(filterType) {
case "employee":
url = "@Url.Action("UpdateEmployeeSelection")";
url = "@Url.Action("UpdateEmployeeFilterSelection")";
getSelectedCountUrl = "@Url.Action("GetSelectedEmployeesForAptFlt")";
break;
case "customer":
url = "@Url.Action("UpdateCustomerSelection")";
url = "@Url.Action("UpdateCustomerFilterSelection")";
getSelectedCountUrl = "@Url.Action("GetSelectedCustomersForAptFlt")";
break;
case "resource":
url = "@Url.Action("UpdateResourceSelection")";
url = "@Url.Action("UpdateResourceFilterSelection")";
getSelectedCountUrl = "@Url.Action("GetSelectedResourcesForAptFlt")";
break;
}
@@ -216,12 +256,304 @@
}
function performReload() {
$("#scheduler-notification-container").load("@Url.Action("GetNotifications")");
$("#scheduler-notification-container").load("@Url.Action("GetNotifications")");
}
function reloadScheduler() {
scheduler.PerformCallback({ apptID: "", actionId: "Reload", args: null }, () => { performReload(); hideSpinner(); });
}
@* CustomECRSelectionPartial *@
function onNewSearchInput(prefix) {
var searchText = $(`#${prefix}-drop-search-input`).val();
const menuItems = $(`#dropdown-${prefix}-itm-container .dropdown-item`);
if(searchText === null || searchText === undefined || searchText.length === 0) {
menuItems.show();
return;
}
menuItems.hide();
$.each(menuItems,
function(index, item) {
const itemText = $(item).text().toLowerCase();
if(itemText.includes(searchText.toLowerCase())) {
$(item).show();
}
}
);
}
function resetNewSearch(prefix) {
$(`#${prefix}-drop-search-input`).val("");
buildPagination(1, 5, 1, prefix);
showPage(1, prefix);
const e = window.event;
e.cancelBubble = true;
if(e.stopPropagation) {
e.stopPropagation();
}
}
var aptEmpSelPageCount = 0;
var aptEmpSelItems = [];
var aptEmpSelCurrentPage = 1;
var aptEmpSelPageLimit = 0;
var aptCusSelPageCount = 0;
var aptCusSelItems = [];
var aptCusSelCurrentPage = 1;
var aptCusSelPageLimit = 0;
var aptResSelPageCount = 0;
var aptResSelItems = [];
var aptResSelCurrentPage = 1;
var aptResSelPageLimit = 0;
function buildPagination(firstShownButton, lastShownButton, activeButton, prefix) {
const pagination = $(`#apt-${prefix}-pagination`);
pagination.empty();
var pageCount = 1;
var currentPage = 1;
switch(prefix) {
case "emp":
pageCount = aptEmpSelPageCount;
currentPage = aptEmpSelCurrentPage;
break;
case "cus":
pageCount = aptCusSelPageCount;
currentPage = aptCusSelCurrentPage;
break;
case "res":
pageCount = aptResSelPageCount;
currentPage = aptResSelCurrentPage;
break;
}
if(prefix === "res") {
logInfo2(`Es gibt ${pageCount} Seiten für die Ressourcen`);
}
if(pageCount <= 1) {
$(`#apt-${prefix}-pag-divider, #apt-${prefix}-pag-dropdow-item`).hide();
return;
}
$(`#apt-${prefix}-pag-divider, #apt-${prefix}-pag-dropdow-item`).show();
var limit = lastShownButton;
if(pageCount < limit) {
limit = pageCount;
}
const firstPageLiClass = firstShownButton === 1 ? "page-item disabled" : "page-igem";
const lastPageLiClass = lastShownButton === pageCount ? "page-item disabled" : "page-igem";
const prevPageLiClass = activeButton === 1 ? "page-item disabled" : "page-item";
const nextPageLiClass = activeButton === pageCount ? "page-item disabled" : "page-igem";
$(`<li class="${firstPageLiClass}" id="first-page-li"><button type="button" class="page-link" tabeindex="-1" onclick="showPage(${1}, '${prefix}')"><span class="fas fa-angle-double-left"></span></button></li>`).appendTo(pagination);
$(`<li class="${prevPageLiClass}" id="prev-page-li"><button type="button" class="page-link" tabeindex="-1" onclick="showPage(${currentPage - 1}, '${prefix}')"><span class="fas fa-angle-left"></span></button></li>`).appendTo(pagination);
for(let i = firstShownButton; i <= limit; i++) {
$(`<li class="page-item ${(i === activeButton ? "active" : "")}"><button class="page-link" tabindex="-1" type="button" onclick="showPage(${i}, '${prefix}')">${i}</button></li>`).appendTo(pagination);
}
$(`<li class="${nextPageLiClass}" id="next-page-li"><button type="button" class="page-link" tabeindex="-1" onclick="showPage(${currentPage + 1}, '${prefix}')"><span class="fas fa-angle-right"></span></button></li>`).appendTo(pagination);
$(`<li class="${lastPageLiClass}" id="last-page-li"><button type="button" class="page-link" tabeindex="-1" onclick="showPage(${pageCount}, '${prefix}')"><span class="fas fa-angle-double-right"></span></button></li>`).appendTo(pagination);
}
function showPage(page, prefix) {
var pageCount = 1;
var items = [];
switch(prefix) {
case "emp":
pageCount = aptEmpSelPageCount;
items = aptEmpSelItems;
break;
case "cus":
pageCount = aptCusSelPageCount;
items = aptCusSelItems;
break;
case "res":
pageCount = aptResSelPageCount;
items = aptResSelItems;
break;
}
const total = (items.length / 10) | 0;
const currentPage = Math.max(1, Math.min(page, total));
switch(prefix) {
case "emp":
aptEmpSelCurrentPage = currentPage;
break;
case "cus":
aptCusSelCurrentPage = currentPage;
break;
case "res":
aptResSelCurrentPage = currentPage;
break;
}
const start = (currentPage - 1) * 10;
const end = currentPage * 10;
items.hide();
$.each(items.slice(start, end), function(index, item) {
$(item).removeClass("d-none");
$(item).show();
});
const last = Math.min(pageCount, currentPage + 2);
const first = Math.max(1, last - 4);
buildPagination(first, last, currentPage, prefix);
}
function updateEmployeeCustomerResourceSelection(prefix) {
const checkedBoxes = $(`#dropdown-${prefix}-itm-container input[type=checkbox]:checked`);
var url = "";
switch(prefix) {
case "emp":
url = "@Url.Action("UpdateAppointmentEmployeeSelection")";
break;
case "cus":
url = "@Url.Action("UpdateAppointmentCustomerSelection")";
break;
case "res":
url = "@Url.Action("UpdateAppointmentResourceSelection")";
break;
}
var selectedOids = [];
checkedBoxes.each(function() {
const id = $(this).prop("id");
const employeeOid = id.split("-")[3];
selectedOids.push(employeeOid.toString());
});
showSpinner();
$.get(
url,
{ selectedOids: selectedOids.join(", ") },
function() {
hideSpinner();
});
}
function selectAllEmployeeCustomerResource(prefix) {
const isChecked = $(`#apt-${prefix}-select-all`).prop("checked");
$(`#dropdown-${prefix}-itm-container input[type=checkbox]`).prop("checked", isChecked);
updateEmployeeCustomerResourceSelection(prefix);
}
function categoryCardHeaderClick(collapsibleId) {
const collapsible = $(`#${collapsibleId}`);
if(collapsible.length === false) {
return;
}
collapsible.collapse("toggle");
const e = window.event;
e.cancelBubble = true;
if(e.stopPropagation) {
e.stopPropagation();
}
}
function onNewResourceSeachInput() {
var searchText = $(`#res-drop-search-input`).val().toLowerCase();
const category2Resources = $(`#dropdown-res-itm-container .dropdown-item`);
const collapse = $(`#dropdown-res-itm-container .dropdown-item .collapse`);
if(searchText === null || searchText === undefined || searchText.length === 0) {
showAllResources();
return;
}
category2Resources.hide();
$.each(category2Resources,
function(index, item) {
const categoryName = $(item).find("h6").text().toLowerCase();
if(categoryName.includes(searchText)) {
$(item).show();
}
const resources = $(item).find("form");
resources.hide();
$.each(resources, function(resourceIndex, resourceItem) {
const itemText = $(resourceItem).text().toLowerCase();
if(itemText.includes(searchText)) {
$(resourceItem).show();
$(item).show();
collapse.collapse("show");
}
});
}
);
}
function resetNewResourceSearch() {
$(`#res-drop-search-input`).val("");
showAllResources();
buildPagination(1, 5, 1, "res");
showPage(1, "res");
const e = window.event;
e.cancelBubble = true;
if(e.stopPropagation) {
e.stopPropagation();
}
}
function showAllResources() {
const category2Resources = $(`#dropdown-res-itm-container .dropdown-item`);
const collapse = $(`#dropdown-res-itm-container .dropdown-item .collapse`);
$.each(category2Resources, function(cardIndex, card) {
$(card).show();
const resources = $(item).find("form");
$.each(resources, function(formIndex, form) {
$(form).show();
});
});
collapse.collapse("show");
}
@* /CustomECRSelectionPartial *@
</script>
<div class="dropdown">

View File

@@ -253,6 +253,8 @@
SelectedEmployee2SchedulerAppointments = employees2Appointment,
SelectedCustomers = customerList,
SelectedResources = resourceList,
SelectedCustomerOids = customerList?.Select(customer => customer.CustomerOid)?.ToList() ?? new List<long>(),
SelectedResourceOids = resourceList?.Select(resource => resource.ResourceOid.Value)?.ToList() ?? new List<long>(),
SelectedEmployeeOids = employees2Appointment.Select(employee2Appointment => employee2Appointment.Employee.EmployeeOid).ToList(),
CompletedNotice = container.Appointment.CustomFields["CompletedNotice"]?.ToString(),
CompletedUser = container.Appointment.CustomFields["CompletedUser"]?.ToString(),

View File

@@ -514,7 +514,7 @@
}
</li>
<li class="nav-item">
<span class="logoff-countdown m-0 p-0">Version 3.31</span>
<span class="logoff-countdown m-0 p-0">Version 3.32</span>
</li>
</ul>

View File

@@ -239,6 +239,31 @@ namespace Dakota.Logic
info.VersichtertenWohnort = infoParameter.Customer.Town;
info.VersichtertenLanderkennung = null;
info.Verordnungsdatum = infoParameter.Customer.Medikamentenverordnungslisten
?.FirstOrDefault(l => l.Gueltig)
?.Medikamentenverordnungen
?.Where(m => m.Verordnungsdatum.HasValue)
?.Max(m => m.Verordnungsdatum);
// TODO: Verordnungsdatum, Genehmigungskennzeichen und DatumGenehmigung am Customer speichern und hier auslesen
if (info.Verordnungsdatum is null)
info.Verordnungsdatum = new DateTime(2025, 6, 30);
info.Genehmigungskennzeichen = infoParameter.Customer.InsuranceNumber;
info.DatumDerGenehmigung = new DateTime(2025, 6, 30);
info.ArtDerGenehmigung = SchlüsselArtDerGenehmigung.HkpGenehmigungImEinzelfall;
if (infoParameter.Customer.ICD10DiagnosisCodes?.Any() is true)
{
foreach (var code in infoParameter.Customer.ICD10DiagnosisCodes)
{
info.DakotaInfoDiagnosen.Add(new InfoBlockDiagnosen
{
Diagnoseschlüssel = code,
Diagnosetext = infoParameter.Customer.ICD10Diagnosis
});
}
}
return info;
}
@@ -256,6 +281,8 @@ namespace Dakota.Logic
{
if (leistungserbringergruppe.Substring(0, 2).Equals("99"))
info.Abrechnungscode = "69";
else if (leistungserbringergruppe.Substring(0, 2).Equals("30"))
info.Abrechnungscode = "31";
else
info.Abrechnungscode = leistungserbringergruppe.Substring(0, 2);
info.Tarifkennzeichen = leistungserbringergruppe.Substring(2, 5);
@@ -272,6 +299,8 @@ namespace Dakota.Logic
info.AnzahlMenge = infoParameter.InvoiceItem.UnitCount.Value;
info.EinzelbetragAbrechnungsposition = infoParameter.InvoiceItem.AmountPerUnit.Value;
info.DatumDerLeistungserbringung = infoParameter.InvoiceItem.ItemPeriodStart.Value;
info.Uhrzeit = infoParameter.InvoiceItem.ServiceRecord?.Start;
info.UhrzeitBis = infoParameter.InvoiceItem.ServiceRecord?.End;
info.BetragZuzahlung = 0;

View File

@@ -70,17 +70,18 @@ namespace Dakota.Logic
IKKrankenkasse = search.Item3
};
AddressDC grosskundenanschrift = null;
foreach (var seg_ans in nachricht.SemgenteANS)
{
var address = GetAddress(seg_ans);
if (seg_ans.ArtDerAnschrift == Models.Schlüssels.SchlüsselArtDerAnschrift.Grosskundenanschrift)
{
sum.Grosskundenanschrift = address;
grosskundenanschrift = address;
}
else if(seg_ans.ArtDerAnschrift == Models.Schlüssels.SchlüsselArtDerAnschrift.Postfachanschrift)
{
sum.Postfachanschrift = address;
sum.PostfachGKanschrift = address;
}
else if(seg_ans.ArtDerAnschrift == Models.Schlüssels.SchlüsselArtDerAnschrift.Hausanschrift)
{
@@ -94,6 +95,51 @@ namespace Dakota.Logic
}
}
if (sum.PostfachGKanschrift == null && grosskundenanschrift != null)
sum.PostfachGKanschrift = grosskundenanschrift;
AddressDC hausanschriftPapierannahmestelle = null;
AddressDC postfachanschriftPapierannahmestelle = null;
AddressDC grosskundenanschriftPapierannahmestelle = null;
var papierIK = GetPapierIK(dict, ikkrankenkasse, abrechnungscode, tarifkennzeichen);
if (papierIK is object && dict.ContainsKey(papierIK))
{
var papierNachricht = dict[papierIK];
foreach (var seg_ans in papierNachricht.SemgenteANS)
{
var address = GetAddress(seg_ans);
if (seg_ans.ArtDerAnschrift == Models.Schlüssels.SchlüsselArtDerAnschrift.Grosskundenanschrift)
{
grosskundenanschriftPapierannahmestelle = address;
}
else if (seg_ans.ArtDerAnschrift == Models.Schlüssels.SchlüsselArtDerAnschrift.Postfachanschrift)
{
postfachanschriftPapierannahmestelle = address;
}
else if (seg_ans.ArtDerAnschrift == Models.Schlüssels.SchlüsselArtDerAnschrift.Hausanschrift)
{
hausanschriftPapierannahmestelle = address;
}
else
{
throw new NotImplementedException();
}
}
if (hausanschriftPapierannahmestelle != null)
sum.Papierannahmeanschrift = hausanschriftPapierannahmestelle;
else if (postfachanschriftPapierannahmestelle != null)
sum.Papierannahmeanschrift = postfachanschriftPapierannahmestelle;
else if (grosskundenanschriftPapierannahmestelle != null)
sum.Papierannahmeanschrift = grosskundenanschriftPapierannahmestelle;
if (sum.Papierannahmeanschrift != null)
sum.Papierannahmeanschrift.AddressLine1 = clear(papierNachricht.SegmentIDK.Kurzbezeichnung);
}
return sum;
}
}
@@ -169,6 +215,62 @@ namespace Dakota.Logic
return new Tuple<string, string, string>(vkg.IKVerknüpfungspartners, kostentrager, ikkrankenkasse);
}
private string GetPapierIK(Dictionary<string, NachrichtKTD> dict, string ikkrankenkasse, string abrechnungscode, string tarifkennzeichen, string kostentrager = null)
{
if (kostentrager is null)
kostentrager = ikkrankenkasse;
var search = dict.SingleOrDefault(kv => kv.Key == kostentrager).Value;
if (search is null)
return null;
var verweis = search.SegmentVKG.FirstOrDefault(x => x.ArtDerVerknüpfung == Models.Schlüssels.SchlüsselArtDerVerknüpfung.Kostentrager);
// Hat Verweis auf weiteren Kostenträger gefunden
if (verweis is object && verweis.IKVerknüpfungspartners != kostentrager)
return GetPapierIK(dict, ikkrankenkasse, abrechnungscode, tarifkennzeichen, verweis.IKVerknüpfungspartners);
var papierannahmestellen = search.SegmentVKG
.Where(x => x.ArtDerVerknüpfung == Models.Schlüssels.SchlüsselArtDerVerknüpfung.PapierAnnahmestelle)
.ToList();
if (papierannahmestellen is null || !papierannahmestellen.Any())
return null;
if (papierannahmestellen.Count() == 1)
return papierannahmestellen.First().IKVerknüpfungspartners;
// Abrechnungscode
var filtered = papierannahmestellen
.Where(x => x.Abrechnungscode == abrechnungscode)
.ToList();
if (filtered.Count() == 1)
return filtered.First().IKVerknüpfungspartners;
// Tarifkennzeichen
var filtered_2 = filtered
.Where(x => x.Tarifkennzeichen == tarifkennzeichen)
.ToList();
if (filtered_2.Count() == 1)
return filtered_2.First().IKVerknüpfungspartners;
var filter_list = filtered_2;
if (!filter_list.Any())
filter_list = filtered;
if (!filter_list.Any())
filter_list = papierannahmestellen;
if (filter_list.Count() == 1)
return filter_list.First().IKVerknüpfungspartners;
return null;
}
private AddressDC GetAddress(SegmentKTDANS segment)
{
var address = new AddressDC();

View File

@@ -14,5 +14,8 @@ namespace Dakota.Models.Schlüssels
public SchlüsselArtDerGenehmigung(string val) : base(val) { }
public static SchlüsselArtDerGenehmigung BereichSonstigeGenehmigungImEinzelfall => new SchlüsselArtDerGenehmigung("N1");
/// <summary>Häusliche Krankenpflege (SLLA: C) - Genehmigung im Einzelfall</summary>
public static SchlüsselArtDerGenehmigung HkpGenehmigungImEinzelfall => new SchlüsselArtDerGenehmigung("C1");
}
}

View File

@@ -80,23 +80,25 @@ namespace BeWo.Data.Access
return x.Count > 0 ? DAOFactory.GenericDAO.GetByID<Wohnheim>(x.First()) : null;
}
public virtual IList<WohneinheitBelegung> FindWohneinheitBelegungForCustomer(long customerOid, DateTime datum)
public virtual IList<WohneinheitBelegung> FindWohneinheitBelegungForCustomer(long customerOid, DateTime? datum)
{
var criteria = CreateCriteriaIsActive<WohneinheitBelegung>()
.Add(Restrictions.Eq(WohneinheitBelegung.PropertyName_Customer, customerOid))
.Add(
.Add(Restrictions.Eq(WohneinheitBelegung.PropertyName_Customer, customerOid));
if (datum.HasValue)
{
criteria.Add(
Restrictions.Or(
Restrictions.And(
Restrictions.Le(WohneinheitBelegung.PropertyName_StartDate, datum.Date),
Restrictions.Ge(WohneinheitBelegung.PropertyName_EndDate, datum.Date)
Restrictions.Le(WohneinheitBelegung.PropertyName_StartDate, datum.Value.Date),
Restrictions.Ge(WohneinheitBelegung.PropertyName_EndDate, datum.Value.Date)
),
Restrictions.And(
Restrictions.Le(WohneinheitBelegung.PropertyName_StartDate, datum.Date),
Restrictions.Le(WohneinheitBelegung.PropertyName_StartDate, datum.Value.Date),
Restrictions.IsNull(WohneinheitBelegung.PropertyName_EndDate)
)
)
);
}
return criteria.List<WohneinheitBelegung>();
}
@@ -2808,7 +2810,17 @@ WHERE sc.Billable = 1 and sr.StartDate >= '{0:yyyy-MM-dd}' and sr.StartDate < '{
return criteria.List<TextModule>();
}
public IEnumerable<AiPromptbausteinFolder> GetOwnActiveRootAiPromptbausteineFolders(AiActionType? aiActionType = null)
public void GetOwnActiveRootTree(AiActionType aiActionType,
out IEnumerable<AiPromptbausteinFolder> folders,
out IEnumerable<AiPromptbausteinPrompt> prompts,
out IEnumerable<AiPromptbausteinRoutine> routines)
{
folders = GetOwnActiveRootAiPromptbausteineFolders(aiActionType);
prompts = GetOwnActiveRootAiPromptbausteinePrompts(aiActionType);
routines = GetOwnActiveRootAiPromptbausteineRoutines(aiActionType);
}
private IEnumerable<AiPromptbausteinFolder> GetOwnActiveRootAiPromptbausteineFolders(AiActionType? aiActionType = null)
{
var emp = UserRightHelper.GetLoggedInEmployee();
var emp_oid = emp.Oid;
@@ -2820,7 +2832,7 @@ WHERE sc.Billable = 1 and sr.StartDate >= '{0:yyyy-MM-dd}' and sr.StartDate < '{
return criteria.List<AiPromptbausteinFolder>();
}
public IEnumerable<AiPromptbausteinPrompt> GetOwnActiveRootAiPromptbausteinePrompts(AiActionType? aiActionType = null)
private IEnumerable<AiPromptbausteinPrompt> GetOwnActiveRootAiPromptbausteinePrompts(AiActionType? aiActionType = null)
{
var emp = UserRightHelper.GetLoggedInEmployee();
var emp_oid = emp.Oid;
@@ -2839,7 +2851,7 @@ WHERE sc.Billable = 1 and sr.StartDate >= '{0:yyyy-MM-dd}' and sr.StartDate < '{
return criteria.List<AiPromptbausteinPrompt>();
}
public IEnumerable<AiPromptbausteinRoutine> GetOwnActiveRootAiPromptbausteineRoutines(AiActionType? aiActionType = null)
private IEnumerable<AiPromptbausteinRoutine> GetOwnActiveRootAiPromptbausteineRoutines(AiActionType? aiActionType = null)
{
var emp = UserRightHelper.GetLoggedInEmployee();
var emp_oid = emp.Oid;
@@ -2858,19 +2870,67 @@ WHERE sc.Billable = 1 and sr.StartDate >= '{0:yyyy-MM-dd}' and sr.StartDate < '{
return criteria.List<AiPromptbausteinRoutine>();
}
public IEnumerable<AiPromptbausteinFolder> GetPublicActiveRootAiPromptbausteineFolders(AiActionType? aiActionType = null)
public void GetPublicActiveRootTree(AiActionType aiActionType,
out IEnumerable<AiPromptbausteinFolder> folders,
out IEnumerable<AiPromptbausteinPrompt> prompts,
out IEnumerable<AiPromptbausteinRoutine> routines)
{
folders = GetPublicActiveRootAiPromptbausteineFolders(aiActionType);
prompts = GetPublicActiveRootAiPromptbausteinePrompts(aiActionType);
routines = GetPublicActiveRootAiPromptbausteineRoutines(aiActionType);
}
private IEnumerable<AiPromptbausteinFolder> GetPublicActiveRootAiPromptbausteineFolders(AiActionType? aiActionType = null)
{
var emp = UserRightHelper.GetLoggedInEmployee();
var emp_oid = emp.Oid;
var criteria = GetAiPromptbausteineFolderRoot(aiActionType);
criteria.Add(Restrictions.Eq(nameof(AiPromptbausteinFolder.IsPublic), true));
criteria.Add(Restrictions.Not(Restrictions.Eq(nameof(AiPromptbausteinFolder.CreatorOid), emp_oid)));
return criteria.List<AiPromptbausteinFolder>();
}
private IEnumerable<AiPromptbausteinPrompt> GetPublicActiveRootAiPromptbausteinePrompts(AiActionType? aiActionType = null)
{
var emp = UserRightHelper.GetLoggedInEmployee();
var emp_oid = emp.Oid;
var criteria = CreateCriteriaIsActive<AiPromptbausteinPrompt>();
criteria.Add(Restrictions.IsNull(nameof(AiPromptbausteinPrompt.ParentFolderOid)));
if (aiActionType is AiActionType actionType)
{
criteria.Add(Restrictions.Eq(nameof(AiPromptbausteinPrompt.ActionType), actionType));
}
criteria.Add(Restrictions.Not(Restrictions.Eq(nameof(AiPromptbausteinPrompt.CreatorOid), emp_oid)));
criteria.Add(Restrictions.Eq(nameof(AiPromptbausteinPrompt.IsOwnsoftPrompt), false));
return criteria.List<AiPromptbausteinPrompt>();
}
private IEnumerable<AiPromptbausteinRoutine> GetPublicActiveRootAiPromptbausteineRoutines(AiActionType? aiActionType = null)
{
var emp = UserRightHelper.GetLoggedInEmployee();
var emp_oid = emp.Oid;
var criteria = CreateCriteriaIsActive<AiPromptbausteinRoutine>();
criteria.Add(Restrictions.IsNull(nameof(AiPromptbausteinRoutine.ParentFolderOid)));
if (aiActionType is AiActionType actionType)
{
criteria.Add(Restrictions.Eq(nameof(AiPromptbausteinRoutine.ActionType), actionType));
}
criteria.Add(Restrictions.Not(Restrictions.Eq(nameof(AiPromptbausteinRoutine.CreatorOid), emp_oid)));
return criteria.List<AiPromptbausteinRoutine>();
}
private ICriteria GetAiPromptbausteineFolderRoot(AiActionType? aiActionType = null)
{
var criteria = CreateCriteriaIsActive<AiPromptbausteinFolder>();

View File

@@ -1,11 +1,12 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using BS.Shared;
using BS.Shared.Core;
namespace BeWo.Data.Entities
{
[DebuggerDisplay("{CostBearer.Organisation.Name} - {SupportConcept.Customer.Person.FirstName} {SupportConcept.Customer.Person.LastName}")]
public class CostBearer2SupportConcept : BeWoEntityBase
{
// public static string PropertyName_HourlyRate = "HourlyRate";

View File

@@ -887,7 +887,8 @@ namespace BeWo.Data.Entities
public virtual string Verhalten { get; set; }
public virtual string Betreuungsbedarf { get; set; }
public virtual string BemerkungenSbd { get; set; }
public virtual string TeamSimpleString
public virtual string BGNummer { get; set; }
public virtual string TeamSimpleString
{
get
{

View File

@@ -23,12 +23,13 @@ namespace BeWo.Data.Entities
public virtual string AktenzeichenGericht { get; set; }
public virtual string EigenesAktenzeichen { get; set; }
public virtual DateTime? Auftragseingang { get; set; }
public virtual ValueListEntry Auftragsherkunft { get; set; }
public virtual ValueListEntry Vermittlungsgrundlage { get; set; }
public virtual CustomerVgaAuftragsherkunft? Auftragsherkunft { get; set; }
public virtual CustomerVgaVermittlungsGrundlage? Vermittlungsgrundlage { get; set; }
public virtual decimal? Tagessatze { get; set; }
public virtual decimal? Tagessatzhohe { get; set; }
public virtual decimal? HoheDerGeldstrafe { get; set; }
public virtual decimal? ZuLeistendeArbeitsstunden { get; set; }
public virtual decimal? Gerichtskosten { get; set; }
public virtual decimal? ZuLeistendeArbeitsstunden { get; set; }
public virtual string Hinweis { get; set; }
public virtual DateTime? Termin { get; set; }
public virtual DateTime? Frist { get; set; }
@@ -36,11 +37,13 @@ namespace BeWo.Data.Entities
public virtual string Bewaehrungshelfer { get; set; }
public virtual CustomerVermittlungBearbeitungsstatus? CustomerVermittlungBearbeitungsstatus { get; set; }
public virtual DateTime? Auftragsruckgabe { get; set; }
public virtual ValueListEntry Verlauf { get; set; }
public virtual CustomerVgaVerlauf? Verlauf { get; set; }
public virtual decimal? AbgeleisteteStunden { get; set; }
public virtual decimal? ErsparteHafttage { get; set; }
public virtual decimal? GeleisteteRatenzahlung { get; set; }
public virtual string Bemerkung { get; set; }
public virtual decimal? AnzahlRaten { get; set; }
public virtual decimal? RatenHoehe { get; set; }
public virtual string Bemerkung { get; set; }
public virtual decimal? GeleisteteEinmalzahlung { get; set; }
public virtual bool GrundArbeitsunfahig { get; set; }

View File

@@ -66,7 +66,7 @@
<property name="Verhalten" type="String" />
<property name="Betreuungsbedarf" type="String" />
<property name="BemerkungenSbd" type="String" />
<property name="BGNummer" type="String" />
<bag name="MerkzeichenListe" table="merkzeichen2customer" generic="true" cascade="all" batch-size="250" lazy="false">
<key column="CustomerOid" />
<element column="Merkzeichen" type="BS.Shared.Merkzeichen, BS.Shared" />

View File

@@ -19,11 +19,12 @@
<property name="AktenzeichenGericht"/>
<property name="EigenesAktenzeichen"/>
<property name="Auftragseingang"/>
<many-to-one name="Auftragsherkunft" column="Auftragsherkunft" class="BeWo.Data.Entities.ValueListEntry, BeWo.Data" cascade="none" />
<many-to-one name="Vermittlungsgrundlage" column="Vermittlungsgrundlage" class="BeWo.Data.Entities.ValueListEntry, BeWo.Data" cascade="none" />
<property name="Auftragsherkunft" column="Auftragsherkunft" type="BS.Shared.DataContracts.CustomerVgaAuftragsherkunft, BS.Shared" />
<property name="Vermittlungsgrundlage" column="Vermittlungsgrundlage" type="BS.Shared.DataContracts.CustomerVgaVermittlungsGrundlage, BS.Shared" />
<property name="Tagessatze"/>
<property name="Tagessatzhohe"/>
<property name="HoheDerGeldstrafe"/>
<property name="Gerichtskosten"/>
<property name="ZuLeistendeArbeitsstunden"/>
<property name="Hinweis"/>
<property name="Termin"/>
@@ -32,10 +33,12 @@
<property name="Bewaehrungshelfer"/>
<property name="CustomerVermittlungBearbeitungsstatus" type="BS.Shared.DataContracts.CustomerVermittlungBearbeitungsstatus, BS.Shared" />
<property name="Auftragsruckgabe"/>
<many-to-one name="Verlauf" column="Verlauf" class="BeWo.Data.Entities.ValueListEntry, BeWo.Data" cascade="none" />
<property name="Verlauf" column="Verlauf" type="BS.Shared.DataContracts.CustomerVgaVerlauf, BS.Shared" />
<property name="AbgeleisteteStunden"/>
<property name="ErsparteHafttage"/>
<property name="GeleisteteRatenzahlung"/>
<property name="AnzahlRaten"/>
<property name="RatenHoehe"/>
<property name="GeleisteteRatenzahlung"/>
<property name="Bemerkung"/>
<property name="GeleisteteEinmalzahlung"/>
<property name="GrundArbeitsunfahig"/>

View File

@@ -191,7 +191,9 @@ namespace BeWo.Data.Security
return "3.29";
if (isRightVersion330(r))
return "3.30";
return BASE_VERSION;
if (isRightVersion331(r))
return "3.31";
return BASE_VERSION;
}
private static bool isRightVersion322(UserRightType r)
@@ -240,5 +242,15 @@ namespace BeWo.Data.Security
|| r == UserRightType.AiVoiceView;
}
}
private static bool isRightVersion331(UserRightType r)
{
return r == UserRightType.VorlagenEditAll
|| r == UserRightType.VorlagenEditOwnTeams
|| r == UserRightType.VorlagenViewAll
|| r == UserRightType.VorlagenViewOwnTeams
|| r == UserRightType.Customer_CreateMedication
|| r == UserRightType.Customer_DeleteMedication;
}
}
}

View File

@@ -212,8 +212,8 @@ namespace Host
response.IKKrankenkasse = resolved.IKKrankenkasse;
response.BezDatenannahmestelle = resolved.BezDatenannahmestelle;
response.Hausanschrift = resolved.Hausanschrift;
response.Postfachanschrift = resolved.Postfachanschrift;
response.Grosskundenanschrift = resolved.Grosskundenanschrift;
response.PostfachGKanschrift = resolved.PostfachGKanschrift;
response.Papierannahmeanschrift = resolved.Papierannahmeanschrift;
}
SendResponse(response);

View File

@@ -13,4 +13,5 @@
<add key="OpenrouteServiceApiKey" value="" />
<add key="GoogleDistanceMatrixApiKey" value="" />
<add key="GkvSecretKey" value="" />
<add key="AppStatusApiKey" value="" />
</appSettings>

View File

@@ -2,7 +2,7 @@ INSERT INTO `.executedscripts`
VALUES ('Changes_2026-04-20 AiPromptroutine 2', CURDATE());
ALTER TABLE `aipromptroutine`
RENAME TO `aipromptbauteinroutine` ;
RENAME TO `aipromptbausteinroutine` ;
ALTER TABLE `aipromptroutinestep`
RENAME TO `aipromptbausteinroutinestep` ;

View File

@@ -0,0 +1,13 @@
ALTER TABLE `CustomerVermittlungArbeit` ADD COLUMN Gerichtskosten decimal(18,10) NULL DEFAULT NULL;
ALTER TABLE `CustomerVermittlungArbeit` ADD COLUMN AnzahlRaten decimal(18,10) NULL DEFAULT NULL;
ALTER TABLE `CustomerVermittlungArbeit` ADD COLUMN RatenHoehe decimal(18,10) NULL DEFAULT NULL;
ALTER TABLE `Customer` ADD COLUMN BGNummer VARCHAR(256) NULL DEFAULT NULL;
ALTER TABLE `customervermittlungarbeit`
DROP FOREIGN KEY `FK_CUSTOMERVERMITTLUNGARBEIT_VERMITTLUNGSGRUNDLAGE`,
DROP FOREIGN KEY `FK_CUSTOMERVERMITTLUNGARBEIT_AUFTRAGSHERKUNFT`;
ALTER TABLE `customervermittlungarbeit`
DROP INDEX `FK_CUSTOMERVERMITTLUNGARBEIT_VERMITTLUNGSGRUNDLAGE` ,
DROP INDEX `FK_CUSTOMERVERMITTLUNGARBEIT_AUFTRAGSHERKUNFT` ;

View File

@@ -0,0 +1,10 @@
INSERT INTO `.executedscripts`
VALUES ('Changes_2026-06-18 AiModel default updaten', CURDATE());
UPDATE `aiconfig` SET `SelectedModelOid` = (
SELECT Oid
FROM aimodel
WHERE ModelName = "gemma3_12b_max_context:latest"
AND ModelSource = 2
AND IsActive=1)
WHERE (`Oid` = '1');

View File

@@ -1356,18 +1356,6 @@ PRIMARY KEY (`Oid`),
CONSTRAINT `FK_CUSTOMERVERMITTLUNGARBEIT_CUSTOMER` FOREIGN KEY (`CustomerOid`) REFERENCES `customer` (`Oid`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=latin1;
ALTER TABLE `customervermittlungarbeit`
ADD CONSTRAINT `FK_CUSTOMERVERMITTLUNGARBEIT_AUFTRAGSHERKUNFT`
FOREIGN KEY (`Auftragsherkunft`)
REFERENCES `valuelistentry` (`Oid`)
ON DELETE SET NULL
ON UPDATE CASCADE,
ADD CONSTRAINT `FK_CUSTOMERVERMITTLUNGARBEIT_VERMITTLUNGSGRUNDLAGE`
FOREIGN KEY (`Vermittlungsgrundlage`)
REFERENCES `valuelistentry` (`Oid`)
ON DELETE SET NULL
ON UPDATE CASCADE;
ALTER TABLE `organisation`
ADD COLUMN `BezDatenannahmestelle` VARCHAR(4096) NULL DEFAULT NULL AFTER `IKDatenannahmestelle`;
@@ -2037,4 +2025,121 @@ CREATE TABLE `aiusersetting` (
`AutoStartRecording` tinyint DEFAULT NULL,
PRIMARY KEY (`Oid`),
CONSTRAINT `FK_AIUSERSETTINGUSEROID_APPLICATIONUSER` FOREIGN KEY (`ApplicationUserOid`) REFERENCES `applicationuser` (`Oid`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1
) ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TABLE `aipromptbausteinroutinestep` (
`Oid` bigint NOT NULL AUTO_INCREMENT,
`InsTs` datetime DEFAULT NULL,
`InsUser` varchar(256) DEFAULT NULL,
`Notice` varchar(1024) DEFAULT NULL,
`Tid` int DEFAULT NULL,
`UdpUser` varchar(256) DEFAULT NULL,
`Version` bigint DEFAULT NULL,
`IsActive` tinyint DEFAULT NULL,
`SystemEntryID` int DEFAULT NULL,
`Position` int,
`PromptReferenceOid` bigint DEFAULT NULL,
`PromptReferenceVersion` bigint,
PRIMARY KEY (`Oid`),
CONSTRAINT `FK_AIPROMPTROUTINESTEP_PROMPT` FOREIGN KEY (`PromptReferenceOid`) REFERENCES `aipromptbausteinprompt` (`Oid`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=latin1;
CREATE TABLE `aipromptbausteinroutine` (
`Oid` bigint NOT NULL AUTO_INCREMENT,
`InsTs` datetime DEFAULT NULL,
`InsUser` varchar(256) DEFAULT NULL,
`Notice` varchar(1024) DEFAULT NULL,
`Tid` int DEFAULT NULL,
`UdpUser` varchar(256) DEFAULT NULL,
`Version` bigint DEFAULT NULL,
`IsActive` tinyint DEFAULT NULL,
`SystemEntryID` int DEFAULT NULL,
`Title` varchar(255),
`Description` varchar(255),
`ParentFolderOid` bigint DEFAULT NULL,
`CreatorOid` bigint,
`IsPublic` tinyint,
`Position` int,
`IsFavorite` tinyint,
`ActionType` int,
PRIMARY KEY (`Oid`),
CONSTRAINT `FK_AIPROMPTROUTINE_EMPLOYEE` FOREIGN KEY (`CreatorOid`) REFERENCES `employee` (`Oid`),
CONSTRAINT `FK_AIPROMPTROUTINE_PARENT` FOREIGN KEY (`ParentFolderOid`) REFERENCES `aipromptbausteinfolder` (`Oid`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=latin1;
CREATE TABLE `teamfolderright` (
`Oid` bigint NOT NULL AUTO_INCREMENT,
`InsTs` datetime DEFAULT NULL,
`InsUser` varchar(256) DEFAULT NULL,
`Notice` varchar(1024) DEFAULT NULL,
`Tid` int DEFAULT NULL,
`UdpUser` varchar(256) DEFAULT NULL,
`UpdTs` datetime DEFAULT NULL,
`Version` bigint DEFAULT NULL,
`IsActive` tinyint DEFAULT NULL,
`SystemEntryID` int DEFAULT NULL,
`TeamOid` bigint DEFAULT NULL,
`BeWoFolderOid` bigint DEFAULT NULL,
`AllowEdit` bigint DEFAULT NULL,
`AllowView` bigint DEFAULT NULL,
PRIMARY KEY (`Oid`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=latin1;
ALTER TABLE `aiconversationmessage`
CHANGE COLUMN `Message` `Message` LONGTEXT NULL DEFAULT NULL ;
ALTER TABLE `CustomerVermittlungArbeit` ADD COLUMN Gerichtskosten decimal(18,10) NULL DEFAULT NULL;
ALTER TABLE `CustomerVermittlungArbeit` ADD COLUMN AnzahlRaten decimal(18,10) NULL DEFAULT NULL;
ALTER TABLE `CustomerVermittlungArbeit` ADD COLUMN RatenHoehe decimal(18,10) NULL DEFAULT NULL;
ALTER TABLE `Customer` ADD COLUMN BGNummer VARCHAR(256) NULL DEFAULT NULL;
ALTER TABLE `customervermittlungarbeit`
DROP FOREIGN KEY `FK_CUSTOMERVERMITTLUNGARBEIT_VERMITTLUNGSGRUNDLAGE`,
DROP FOREIGN KEY `FK_CUSTOMERVERMITTLUNGARBEIT_AUFTRAGSHERKUNFT`;
ALTER TABLE `customervermittlungarbeit`
DROP INDEX `FK_CUSTOMERVERMITTLUNGARBEIT_VERMITTLUNGSGRUNDLAGE` ,
DROP INDEX `FK_CUSTOMERVERMITTLUNGARBEIT_AUFTRAGSHERKUNFT` ;
ALTER TABLE `aipromptbausteinroutine`
ADD COLUMN `RoutineType` INT NULL DEFAULT NULL AFTER `ActionType`;
UPDATE `aipromptbausteinprompt` SET `IsOwnsoftPrompt` = '0' WHERE (`PromptId` IS NULL) AND OID > 0;
UPDATE `aipromptbausteinprompt` SET `IsOwnsoftPrompt` = '1' WHERE (`PromptId` IS NOT NULL) AND OID > 0;
ALTER TABLE `aiconversation`
CHANGE COLUMN `UIContext` `ActionType` INT NULL DEFAULT NULL ;
UPDATE `aiconversation`
SET ActionType = 1 WHERE OID > 0;
CREATE TABLE `aipromptbausteinroutine2empfavorite` (
`AiPromptbausteinRoutineOid` bigint NOT NULL,
`EmployeeOid` bigint NOT NULL,
PRIMARY KEY (`AiPromptbausteinRoutineOid`,`EmployeeOid`),
CONSTRAINT `FK_AIPROMPTBAUSTEINROUTINE2EMPFAV_AIPROMPT` FOREIGN KEY (`AiPromptbausteinRoutineOid`) REFERENCES `aipromptbausteinroutine` (`Oid`),
CONSTRAINT `FK_AIPROMPTBAUSTEINROUTINE2EMPFAV_APPUSER` FOREIGN KEY (`EmployeeOid`) REFERENCES `employee` (`Oid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `aipromptbausteinroutinestep`
ADD COLUMN `RoutineOid` BIGINT NULL AFTER `PromptReferenceVersion`,
ADD INDEX `FK_AIPROMPTROUTINESTEP_ROUTINE_idx` (`RoutineOid` ASC);
ALTER TABLE `aipromptbausteinroutinestep`
ADD CONSTRAINT `FK_AIPROMPTROUTINESTEP_ROUTINE`
FOREIGN KEY (`RoutineOid`)
REFERENCES `aipromptbausteinroutine` (`Oid`)
ON DELETE CASCADE
ON UPDATE CASCADE;
ALTER TABLE `aipromptbausteinroutine`
DROP COLUMN `IsFavorite`;

View File

@@ -0,0 +1,91 @@
SELECT
p.LastName as 'Nachname',
p.Firstname as 'Vorname',
c2s.ApprovedStartDate as 'Bewilligt von',
c2s.ApprovedEndDate as 'Bewilligt bis',
scat.Name as 'Kategorie',
Date_Format(sr.StartDate, '%d.%m.%Y') as 'Datum',
IF (Date_Format(sr.StartDate, '%s') <> '00', '', Date_Format(sr.StartDate, '%H:%i')) as 'von',
IF (Date_Format(sr.StartDate, '%s') <> '00', '', Date_Format(Date_Add(sr.StartDate, INTERVAL sr.Roundedduration MINUTE), '%H:%i')) as 'bis',
Round(sr.Roundedduration, 0) as 'Minuten',
sr.InsUser as 'Angelegt von',
DATE_FORMAT(sr.InsTs, '%d.%m.%Y %H:%i') as 'Angelegt am',
(select CONCAT(emp1p.`FirstName`, ' ', emp1p.`LastName`) from employee emp1 join `person` emp1p on emp1p.`Oid` = emp1.`PersonOid` where emp1.`Oid` in (select employeeoid from `employee2customer` e2c1 join `valuelistentry2object` vl2o on e2c1.`Oid` = vl2o.`ObjectOid` join `valuelistentry` vle on vl2o.`ValueListEntryOid` = vle.`Oid` where e2c1.`CustomerOid` = c.`Oid` and vle.`SystemEntryID` = 3) LIMIT 1) as 'Hauptbetreuung',
(select t.`Name` from team t where t.`Oid` in (select teamoid from `team2customer` t2c where t2c.`CustomerOid` = c.`Oid`) LIMIT 1) as 'Team'
FROM servicerecord sr
join costbearer2supportconcept c2s on sr.costbearer2supportconceptoid = c2s.oid
join supportconcept sc on c2s.supportconceptoid = sc.oid
join customer c on sc.customeroid = c.oid
join person p on c.personoid = p.oid
join servicedescription sd on sd.oid = sr.servicedescriptionoid
join servicecategory scat on scat.oid = sd.servicecategoryoid
LEFT JOIN (
-- direkt unterschriebene SRs
SELECT crs2s.servicerecordoid as signed_oid
FROM confirmationreceiptsignature2servicerecord crs2s
JOIN confirmationreceiptsignature crs ON crs2s.confirmationreceiptsignatureoid = crs.oid
WHERE crs.employeeoid IS NULL AND crs.customeroid IS NOT NULL
UNION
-- SRs, deren Gruppen-Partner unterschrieben ist
SELECT sr_other.oid as signed_oid
FROM servicerecord sr_other
JOIN servicerecord sr_signed ON sr_signed.GroupOid = sr_other.GroupOid
AND sr_other.GroupOid IS NOT NULL
JOIN confirmationreceiptsignature2servicerecord crs2s ON sr_signed.oid = crs2s.servicerecordoid
JOIN confirmationreceiptsignature crs ON crs2s.confirmationreceiptsignatureoid = crs.oid
WHERE crs.employeeoid IS NULL AND crs.customeroid IS NOT NULL
) signed_records ON signed_records.signed_oid = sr.oid
WHERE signed_records.signed_oid IS NULL
AND scat.billable = true
AND sr.startdate >= ':Von' AND sr.startdate < ':bis'
ORDER BY p.Lastname, sr.startdate
INSERT INTO `query` (`Oid`,`Tid`,`Type`,`Title`,`SQL`,`Notice`,`InsTs`,`InsUser`,`UdpUser`,`Version`,`IsActive`,`SystemEntryID`,`UserGroupOids`,`ReportTypeName`,`FileName`,`ExportTitle`) VALUES (4712,24,0,'Einträge ohne Monatsunterschrift des Klienten','SELECT
p.LastName as 'Nachname',
p.Firstname as 'Vorname',
c2s.ApprovedStartDate as 'Bewilligt von',
c2s.ApprovedEndDate as 'Bewilligt bis',
scat.Name as 'Kategorie',
Date_Format(sr.StartDate, '%d.%m.%Y') as 'Datum',
IF (Date_Format(sr.StartDate, '%s') <> '00', '', Date_Format(sr.StartDate, '%H:%i')) as 'von',
IF (Date_Format(sr.StartDate, '%s') <> '00', '', Date_Format(Date_Add(sr.StartDate, INTERVAL sr.Roundedduration MINUTE), '%H:%i')) as 'bis',
Round(sr.Roundedduration, 0) as 'Minuten',
sr.InsUser as 'Angelegt von',
DATE_FORMAT(sr.InsTs, '%d.%m.%Y %H:%i') as 'Angelegt am',
(select CONCAT(emp1p.`FirstName`, ' ', emp1p.`LastName`) from employee emp1 join `person` emp1p on emp1p.`Oid` = emp1.`PersonOid` where emp1.`Oid` in (select employeeoid from `employee2customer` e2c1 join `valuelistentry2object` vl2o on e2c1.`Oid` = vl2o.`ObjectOid` join `valuelistentry` vle on vl2o.`ValueListEntryOid` = vle.`Oid` where e2c1.`CustomerOid` = c.`Oid` and vle.`SystemEntryID` = 3) LIMIT 1) as 'Hauptbetreuung',
(select t.`Name` from team t where t.`Oid` in (select teamoid from `team2customer` t2c where t2c.`CustomerOid` = c.`Oid`) LIMIT 1) as 'Team'
FROM servicerecord sr
join costbearer2supportconcept c2s on sr.costbearer2supportconceptoid = c2s.oid
join supportconcept sc on c2s.supportconceptoid = sc.oid
join customer c on sc.customeroid = c.oid
join person p on c.personoid = p.oid
join servicedescription sd on sd.oid = sr.servicedescriptionoid
join servicecategory scat on scat.oid = sd.servicecategoryoid
LEFT JOIN (
-- direkt unterschriebene SRs
SELECT crs2s.servicerecordoid as signed_oid
FROM confirmationreceiptsignature2servicerecord crs2s
JOIN confirmationreceiptsignature crs ON crs2s.confirmationreceiptsignatureoid = crs.oid
WHERE crs.employeeoid IS NULL AND crs.customeroid IS NOT NULL
UNION
-- SRs, deren Gruppen-Partner unterschrieben ist
SELECT sr_other.oid as signed_oid
FROM servicerecord sr_other
JOIN servicerecord sr_signed ON sr_signed.GroupOid = sr_other.GroupOid
AND sr_other.GroupOid IS NOT NULL
JOIN confirmationreceiptsignature2servicerecord crs2s ON sr_signed.oid = crs2s.servicerecordoid
JOIN confirmationreceiptsignature crs ON crs2s.confirmationreceiptsignatureoid = crs.oid
WHERE crs.employeeoid IS NULL AND crs.customeroid IS NOT NULL
) signed_records ON signed_records.signed_oid = sr.oid
WHERE signed_records.signed_oid IS NULL
AND scat.billable = true
AND sr.startdate >= ':Von' AND sr.startdate < ':bis'
ORDER BY p.Lastname, sr.startdate',NULL,NULL,NULL,NULL,1,1,NULL,'1',NULL,NULL,NULL);
INSERT INTO `parameter` (`QueryOid`,`Tid`,`Name`,`Type`,`DbType`,`InsTs`,`InsUser`,`UdpUser`,`Version`,`IsActive`,`SystemEntryID`,`DefaultValue`) VALUES (4712,25,'Von_bis',5,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'aktueller Monat');

Some files were not shown because too many files have changed in this diff Show More