Konflikte gelöst.

This commit is contained in:
2025-01-17 16:32:01 +01:00
892 changed files with 150017 additions and 183923 deletions

1
.gitignore vendored
View File

@@ -10,6 +10,7 @@
/BeWoPlanerMobil/bin
/BeWoPlanerMobil/obj
/Host/bin
/Host/binRelease
/Host/obj
/Controls/bin
/Controls/obj

View File

@@ -39,16 +39,16 @@
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>true</UpdateRequired>
<MapFileExtensions>false</MapFileExtensions>
<InstallUrl>https://app.ownsoft.de/</InstallUrl>
<InstallUrl>https://app.ownsoft.de/test/</InstallUrl>
<TargetCulture>de-DE</TargetCulture>
<ProductName>BeWoPlaner</ProductName>
<PublisherName>ownSoft GmbH</PublisherName>
<MinimumRequiredVersion>2.0.1.253</MinimumRequiredVersion>
<MinimumRequiredVersion>2.0.1.258</MinimumRequiredVersion>
<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
<WebPage>publish.htm</WebPage>
<OpenBrowserOnPublish>false</OpenBrowserOnPublish>
<TrustUrlParameters>true</TrustUrlParameters>
<ApplicationRevision>254</ApplicationRevision>
<ApplicationRevision>259</ApplicationRevision>
<ApplicationVersion>2.0.1.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<CreateDesktopShortcut>true</CreateDesktopShortcut>
@@ -391,14 +391,26 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="View\Controls\ComboBoxes\ComboBoxEmployeeSearch.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="View\Controls\CustomerVermittlungArbeitControl.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="View\Controls\Utils\ColorPicker.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="View\Controls\Wohnhilfe\CustomerWohnhilfeControl.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="View\Detail\Administration\SoziotherapieSettingsView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="View\Detail\CustomerVermittlungArbeitView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@@ -447,6 +459,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="View\Document\SingleTemplateSelectionView.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="View\HilfeplanImportView.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
@@ -543,11 +559,11 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="View\Detail\TemplatePrintSelection.xaml">
<Page Include="View\Document\TemplatePrintSelection.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="View\Detail\VorlageEditView.xaml">
<Page Include="View\Document\VorlageEditView.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
@@ -651,7 +667,7 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="View\Master\DokumenteView.xaml">
<Page Include="View\Document\DokumenteView.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</Page>
<Page Include="View\Master\SchedulingMasterView.xaml">
@@ -962,6 +978,8 @@
<DependentUpon>BSLogoControl.xaml</DependentUpon>
</Compile>
<Compile Include="Converter\AnonymizationRight2VisibilityConverter.cs" />
<Compile Include="Converter\ValidationToTooltipConverter.cs" />
<Compile Include="Converter\ValidationToBrushConverter.cs" />
<Compile Include="Converter\BooleanOrVisibilityMultiConverter.cs" />
<Compile Include="Converter\BooleanAndVisibilityMultiConverter.cs" />
<Compile Include="Converter\BoolNullCheckConverter.cs" />
@@ -995,6 +1013,7 @@
<Compile Include="Converter\StringLengthVisibilityMultiConverter.cs" />
<Compile Include="Converter\TooltipTextConverter.cs" />
<Compile Include="Converter\UserPermission2BoolConverter.cs" />
<Compile Include="Converter\ValidationConverter.cs" />
<Compile Include="Converter\ValueConverterGroup.cs" />
<Compile Include="Core\AutoLockUI.cs" />
<Compile Include="Core\BeWoUtils.cs" />
@@ -1298,12 +1317,22 @@
<Compile Include="ViewModel\OrganisationPersonRelationVM.cs" />
<Compile Include="ViewModel\TextModuleVM.cs" />
<Compile Include="ViewModel\VerordnungslistenVM.cs" />
<Compile Include="View\Controls\ComboBoxes\ComboBoxEmployeeSearch.xaml.cs">
<DependentUpon>ComboBoxEmployeeSearch.xaml</DependentUpon>
</Compile>
<Compile Include="View\Controls\ComboBoxes\ComboBoxGenericSearch.cs" />
<Compile Include="View\Controls\CustomerVermittlungArbeitControl.xaml.cs">
<DependentUpon>CustomerVermittlungArbeitControl.xaml</DependentUpon>
</Compile>
<Compile Include="View\Controls\Utils\ColorPicker.xaml.cs">
<DependentUpon>ColorPicker.xaml</DependentUpon>
</Compile>
<Compile Include="View\Controls\Wohnhilfe\CustomerWohnhilfeControl.xaml.cs">
<DependentUpon>CustomerWohnhilfeControl.xaml</DependentUpon>
</Compile>
<Compile Include="View\Detail\Administration\SoziotherapieSettingsView.xaml.cs">
<DependentUpon>SoziotherapieSettingsView.xaml</DependentUpon>
</Compile>
<Compile Include="View\Detail\CustomerVermittlungArbeitView.xaml.cs">
<DependentUpon>CustomerVermittlungArbeitView.xaml</DependentUpon>
</Compile>
@@ -1340,6 +1369,10 @@
<Compile Include="View\Detail\Wohneinheit\WohneinheitVerwaltungViewV2.xaml.cs">
<DependentUpon>WohneinheitVerwaltungViewV2.xaml</DependentUpon>
</Compile>
<Compile Include="View\Document\DokumentViewHelper.cs" />
<Compile Include="View\Document\SingleTemplateSelectionView.xaml.cs">
<DependentUpon>SingleTemplateSelectionView.xaml</DependentUpon>
</Compile>
<Compile Include="View\HilfeplanImportView.xaml.cs">
<DependentUpon>HilfeplanImportView.xaml</DependentUpon>
</Compile>
@@ -1427,10 +1460,10 @@
<Compile Include="View\Detail\Suchergebnis.xaml.cs">
<DependentUpon>Suchergebnis.xaml</DependentUpon>
</Compile>
<Compile Include="View\Detail\TemplatePrintSelection.xaml.cs">
<Compile Include="View\Document\TemplatePrintSelection.xaml.cs">
<DependentUpon>TemplatePrintSelection.xaml</DependentUpon>
</Compile>
<Compile Include="View\Detail\VorlageEditView.xaml.cs">
<Compile Include="View\Document\VorlageEditView.xaml.cs">
<DependentUpon>VorlageEditView.xaml</DependentUpon>
</Compile>
<Compile Include="View\Detail\RatingTypeView.xaml.cs">
@@ -1511,7 +1544,7 @@
<Compile Include="View\HomeView.xaml.cs">
<DependentUpon>HomeView.xaml</DependentUpon>
</Compile>
<Compile Include="View\Master\DokumenteView.xaml.cs">
<Compile Include="View\Document\DokumenteView.xaml.cs">
<DependentUpon>DokumenteView.xaml</DependentUpon>
</Compile>
<Compile Include="View\Master\SchedulingMasterView.xaml.cs">
@@ -2887,392 +2920,392 @@
<ItemGroup>
<PublishFile Include="Blacklight.Wpf.Controls">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Charts.v23.2.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Data.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Data.v23.2.Linq">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Office.v23.2.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.PivotGrid.v23.2.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Printing.v23.2.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.RichEdit.v23.2.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.RichEdit.v23.2.Export">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Sparkline.v23.2.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Utils.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Accordion.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Charts.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Core.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Docking.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Grid.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Grid.v23.2.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Layout.v23.2.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Mvvm.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Printing.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Printing.v23.2.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Ribbon.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Scheduler.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Themes.LightGray.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Themes.Office2007Black.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Themes.Office2010Black.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Themes.Office2013.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Themes.Office2016White.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraBars.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraCharts.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraEditors.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraNavBar.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraPivotGrid.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraPrinting.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraReports.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraScheduler.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraScheduler.v23.2.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraScheduler.v23.2.Reporting">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraTreeList.v23.2">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
</ItemGroup>
@@ -3412,6 +3445,7 @@
<ItemGroup>
<Resource Include="Ressources\Icons\chatbot.png" />
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>

View File

@@ -2,14 +2,14 @@
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PublishUrlHistory>D:\Projects\beyondsoft\BeWoPlaner\Publish\|publish\|D:\Projects\beyondsoft\BeWoPlaner\PublishTest\|D:\Projects\beyondsoft\BeWoPlaner\PublishDev\|D:\Projects\beyondsoft\BeWoPlaner\Publish45\</PublishUrlHistory>
<InstallUrlHistory>https://app.ownsoft.de/|https://app.ownsoft.de/test/|https://app.ownsoft.de/dev/|http://app.ownsoft.de/dev/|http://app.beyondsoft.de/dev/</InstallUrlHistory>
<InstallUrlHistory>https://app.ownsoft.de/test/|https://app.ownsoft.de/|https://app.ownsoft.de/dev/|http://app.ownsoft.de/dev/|http://app.beyondsoft.de/dev/</InstallUrlHistory>
<SupportUrlHistory />
<UpdateUrlHistory>https://app.ownsoft.de/|https://app.ownsoft.de/bewoplaner.application/</UpdateUrlHistory>
<BootstrapperUrlHistory />
<ErrorReportUrlHistory />
<FallbackCulture>de-DE</FallbackCulture>
<VerifyUploadedFiles>false</VerifyUploadedFiles>
<ProjectView>ProjectFiles</ProjectView>
<ProjectView>ShowAllFiles</ProjectView>
</PropertyGroup>
<PropertyGroup>
<EnableSecurityDebugging>false</EnableSecurityDebugging>

View File

@@ -83,6 +83,16 @@
<conv:EnumTranslationConverter x:Key="EnumTranslationConverter" />
<conv:TooltipTextConverter x:Key="TooltipTextConverter" />
<conv:ValidationConverter x:Key="ValidationConverter" />
<conv:ValueConverterGroup x:Key="Validation2BrushConverter">
<conv:ValidationConverter />
<conv:ValidationToBrushConverter />
</conv:ValueConverterGroup>
<conv:ValueConverterGroup x:Key="Validation2TooltipConverter">
<conv:ValidationConverter />
<conv:ValidationToTooltipConverter />
</conv:ValueConverterGroup>
<conv:UserPermission2BoolConverter x:Key="UserPermission2BoolConverter" />
<conv:ValueConverterGroup x:Key="UserPermission2ReverseBoolConverter">
<conv:UserPermission2BoolConverter />

View File

@@ -45,17 +45,19 @@ namespace BeWo
{
private static DebugMessageLogView _DebugMessageLogView;
private static FrameworkElement _lockedContent;
public static LoginControl LoginControl;
public static MainControl MainControl;
public static string ShortVersion = "3.22";
public static string Version = "Version 3.22";
public static string ShortVersion = "3.23";
public static string Version = "Version 3.24 TEST";
public static int RenderTier = 0;
public static bool IsInDesignMode = DesignerProperties.GetIsInDesignMode(new DependencyObject());
internal static string IpAddress = string.Empty;
internal static string Tenant = string.Empty;
@@ -648,6 +650,11 @@ namespace BeWo
AppSettings.ShowInfoButtonInCalender = showInfoButtonInCalender;
BS.Shared.Settings.ApplicationSettings.SupportConceptExpirationLimitInMonths = AppSettings.HilfeplanAuslaufAuswahl;
if(MainControl is object)
{
MainControl.UpdateMandator();
}
}
}
@@ -862,6 +869,7 @@ namespace BeWo
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastSelectedServiceRecordTimeIntervalDays, _AppSettings.LastSelectedServiceRecordTimeIntervalDays.ToString(), _LoggedOnUser.Settings);
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastSelectedServiceRecordMonth, _AppSettings.LastSelectedServiceRecordMonth.ToString(), _LoggedOnUser.Settings);
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastKassenSortOrder, _AppSettings.LastKassenSortOrder.ToString(), _LoggedOnUser.Settings);
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastBewilligungSortOrder, _AppSettings.LastBewilligungSortOrder.ToString(), _LoggedOnUser.Settings);
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LetzteZeiterfassungsDauer, ((int)_AppSettings.LetzteZeiterfassungsDauer).ToString(), _LoggedOnUser.Settings);
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.SchedulerViewType, ((int) _AppSettings.SchedulerViewType).ToString(), _LoggedOnUser.Settings);
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.SchedulerTimelineViewDayCount, _AppSettings.SchedulerTimelineViewDayCount.ToString(), _LoggedOnUser.Settings);
@@ -976,6 +984,11 @@ namespace BeWo
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
}
public static void ShowInfoMessage(string message)
{
MessageBox.Show(message, "Information", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
public static void ShowErrorMessage(Exception e)
{
if (e is FaultException<BeWoFault>)
@@ -1170,6 +1183,11 @@ namespace BeWo
_AppSettings.LastKassenSortOrder = Convert.ToInt32(UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastKassenSortOrder, settings));
}
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastBewilligungSortOrder, settings);
if (val != null)
{
_AppSettings.LastBewilligungSortOrder = Convert.ToInt32(UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastBewilligungSortOrder, settings));
}
val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LetzteZeiterfassungsDauer, settings);
if (val != null)
{
@@ -1294,12 +1312,17 @@ namespace BeWo
foreach (var blubb in openWindowCollection)
{
var abc = (Window)blubb;
var title = abc.Title;
if (!abc.Title.Equals("BeWoPlaner") && blubb.GetType() == typeof(WindowContentHolder))
if (!title.Equals("BeWoPlaner") && blubb.GetType() == typeof(WindowContentHolder))
{
abc.Close();
}
else if (abc.Title.IndexOf("Popup") >= 0)
else if (title.IndexOf("Popup") >= 0)
{
abc.Close();
}
else if (title.IndexOf("Druckvorschau") >= 0)
{
abc.Close();
}

View File

@@ -27,7 +27,7 @@ namespace BeWo.Converter
case GkvState.WaitingForDakota: return "Warte auf Übertragung";
case GkvState.WaitingForKrankenkasse: return "Warte auf Gkv";
case GkvState.WaitingForKrankenkasseTooLong: return "Keine Antwort von Gkv";
case GkvState.WaitingForUrbelege: return "Sende Urbelege";
case GkvState.WaitingForUrbelege: return "Urbelege per Post senden";
}
return state.ToString();

View File

@@ -12,7 +12,7 @@ namespace BeWo.Converter
if (value is null)
return null;
return "Test";
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)

View File

@@ -13,7 +13,12 @@ namespace BeWo.Converter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if(value is GkvAbrechnungVM gkv)
if (value is bool val_bool)
{
return val_bool ? null : parameter;
}
if (value is GkvAbrechnungVM gkv)
{
if (parameter is string s)
{
@@ -29,6 +34,12 @@ namespace BeWo.Converter
return invoice.IsGkvValidError;
}
if (value is MandatorVM mandator)
{
return mandator.CanEditIKLeistungserbringerTooltip;
}
return "xxx";
}

View File

@@ -14,20 +14,34 @@ namespace BeWo.Converter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is UserRightType type)
try
{
return BeWoApp.HasLoggedOnUserRight(type);
}
if (value is UserRightType type)
{
return BeWoApp.HasLoggedOnUserRight(type);
}
if (parameter is UserRightType type2)
{
return BeWoApp.HasLoggedOnUserRight(type2);
}
if (parameter is UserRightType type2)
{
return BeWoApp.HasLoggedOnUserRight(type2);
}
if (parameter is string setting && !string.IsNullOrWhiteSpace(setting))
if (parameter is string setting && !string.IsNullOrWhiteSpace(setting))
{
if (setting == SettingsKeys.AllowGkvAbrechnung)
return BeWoApp.AppSettings.AllowGkvAbrechnung;
if (setting == SettingsKeys.ShowGkvBzEinzel)
return BeWoApp.Mandator.ShowGkvBzEinzel;
if (setting == SettingsKeys.ShowGkvBzUrbelege)
return BeWoApp.Mandator.ShowGkvBzUrbelege;
}
}
catch (Exception)
{
if (setting == SettingsKeys.AllowGkvAbrechnung)
return BeWoApp.AppSettings.AllowGkvAbrechnung;
if (BeWoApp.IsInDesignMode)
return true;
}
return false;

View File

@@ -0,0 +1,32 @@
using BeWo.ViewModel;
using BS.Shared;
using BS.Shared.Core;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
using System.Windows.Media;
namespace BeWo.Converter
{
public class ValidationConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if(value is string val_str && parameter is ValidationType val_type)
{
return Validator.IsValid(val_type, val_str);
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
using System.Windows.Media;
namespace BeWo.Converter
{
public class ValidationToBrushConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if(value is null)
{
return Brushes.Black;
}
if(value is bool val_bool)
{
return val_bool ? Brushes.Black : Brushes.Red;
}
return Brushes.Blue;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,36 @@
using BS.Shared;
using BS.Shared.Core;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
using System.Windows.Media;
namespace BeWo.Converter
{
public class ValidationToTooltipConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is null)
{
return null;
}
if (value is bool val_bool && parameter is ValidationType val_type)
{
return val_bool ? null : Validator.InvalidTooltipTxt(val_type);
}
return "xxx";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic;
using BeWo.View.Navigation.Filter;
using BS.Shared;
using DevExpress.Xpf.Accordion;
using DevExpress.Xpf.Scheduling;
using DevExpress.XtraScheduler;
@@ -41,6 +42,8 @@ namespace BeWo.Core.Config
private int mLastKassenSortOrder = 1;
private int mLastBewilligungSortOrder = 0;
private ZeiterfassungsDauer mLetzteZeiterfassungsDauer = ZeiterfassungsDauer.Minuten;
public enum WindowStateType
@@ -352,6 +355,20 @@ namespace BeWo.Core.Config
IsDirty = true;
}
}
}
public int LastBewilligungSortOrder
{
get { return mLastBewilligungSortOrder; }
set
{
if (mLastBewilligungSortOrder != value)
{
mLastBewilligungSortOrder = value;
IsDirty = true;
}
}
}
@@ -421,6 +438,8 @@ namespace BeWo.Core.Config
public bool ShowPivotGrid { get; set; }
public string ExpandedAdministrationItems { get; set; }
public string SelectedAdministrationItem { get; set; }
public bool ShowUrlaubsplanung { get; set; }
public bool DontShowSpitzabrechnung { get; set; }
public bool ShowDienstplanung { get; set; }

View File

@@ -125,9 +125,9 @@ namespace BeWo
AutoLogin = true,
SelectView = UIContext.Finance,
SelectIndex = 8,
Username = "m1",
Password = "bewobewo",
Profilename = "5000000000"
//Username = "m1",
//Password = "bewobewo",
//Profilename = "5000000000"
});
return name2config;

View File

@@ -61,9 +61,9 @@
HorizontalAlignment="Stretch"
Grid.IsSharedSizeScope="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="150" />
<ColumnDefinition x:Name="column2" Width="150" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
@@ -71,8 +71,9 @@
</Grid.RowDefinitions>
<!--<Frame x:Name="chatFrame" Grid.Column="2" Grid.Row="0" />-->
<TextBlock
x:Name="txt_logo"
Width="Auto"
Margin="5,2,0,0"
Margin="5,2,5,2"
HorizontalAlignment="Center">
<Hyperlink
Foreground="Transparent"
@@ -99,7 +100,35 @@
</InlineUIContainer>
</Hyperlink>
</TextBlock>
<TextBlock
x:Name="txt_logo2"
Width="Auto"
Margin="5,2,5,2"
HorizontalAlignment="Center">
<Hyperlink
x:Name="hyperlink_2"
Foreground="Transparent"
RequestNavigate="Hyperlink_OnRequestNavigate"
TargetName="newWindow">
<InlineUIContainer>
<Image
x:Name="image2"
Width="130"
HorizontalAlignment="Left"
RenderTransformOrigin="0.5,0.5"
Style="{StaticResource toolbarImageStyle}">
<Image.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1" ScaleY="1" />
<SkewTransform AngleX="0" AngleY="0" />
<RotateTransform Angle="0" />
<TranslateTransform X="0" Y="0" />
</TransformGroup>
</Image.RenderTransform>
</Image>
</InlineUIContainer>
</Hyperlink>
</TextBlock>
<!--<TextBlock HorizontalAlignment="Right" Width="Auto" Margin="0,2,5,0" Grid.Column="2">
<Hyperlink NavigateUri="http://www.bewoplaner.de" TargetName="newWindow" Foreground="Transparent" RequestNavigate="Hyperlink_OnRequestNavigate">
<InlineUIContainer>

View File

@@ -22,11 +22,13 @@ using BeWo.ServiceProxy;
using BeWo.View;
using BeWo.View.Detail;
using BeWo.View.Detail.Zeiterfassung;
using BeWo.View.Document;
using BeWo.View.Master;
using BeWo.View.Navigation;
using BeWo.ViewModel;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using BS.Shared.Translation;
@@ -51,7 +53,8 @@ namespace BeWo
Vertretungen,
CustomerTeam,
Scheduling,
Finance
Finance,
Administration
}
public partial class MainControl
@@ -167,6 +170,8 @@ namespace BeWo
#if DEBUG
//DebugHelperViewButton.Visibility = Visibility.Visible;
#endif
UpdateMandator();
}
public List<ModalViewWindow> OpenedModalViewWindows { get; set; }
@@ -246,6 +251,9 @@ namespace BeWo
private BeWoView GetViewForUIContext(UIContext uiContext)
{
if (uiContext == UIContext.Administration)
return new AdministrationView();
if (!_Views.ContainsKey(uiContext))
{
BeWoView view = null;
@@ -783,6 +791,42 @@ namespace BeWo
}, (s, e) => e.CanExecute = _CurrentDetailView != null));
}
internal void UpdateMandator()
{
if (BeWoApp.Mandator is null)
return;
var url = BeWoApp.Mandator.Website.ToNullIfEmpty();
var haslogo = BeWoApp.Mandator.Logo?.Original is object;
if (haslogo)
{
image2.Source = Utils.CreateBitmapImageFromByteArray(BeWoApp.Mandator.Logo.Original);
Grid.SetColumn(txt_logo, 2);
txt_logo2.Visibility = Visibility.Visible;
if(Uri.TryCreate(url, UriKind.RelativeOrAbsolute, out Uri res))
{
hyperlink_2.NavigateUri = res;
}
else
{
hyperlink_2.NavigateUri = null;
}
column2.Width = new GridLength(1, GridUnitType.Auto);
}
else
{
Grid.SetColumn(txt_logo, 0);
txt_logo2.Visibility = Visibility.Collapsed;
column2.Width = new GridLength(150);
}
}
private void NavigateToParentView(BeWoView beWoView)
{
if (beWoView is CustomerNavigationView && !_Views.ContainsKey(UIContext.Customer))
@@ -913,7 +957,7 @@ namespace BeWo
{
if (DoSaveCheck())
{
NavigateTo(new AdministrationView());
NavigateTo(GetViewForUIContext(UIContext.Administration));
}
}
@@ -1188,7 +1232,13 @@ namespace BeWo
private void Hyperlink_OnRequestNavigate(object sender, RequestNavigateEventArgs e)
{
// Hier Token anfordern; Hier nicht notwendig -> Link auf www.beyondsoft.de
Process.Start(new ProcessStartInfo((sender as Hyperlink).NavigateUri.ToString()));
var url = (sender as Hyperlink).NavigateUri.ToString();
if (string.IsNullOrWhiteSpace(url))
return;
Process.Start(new ProcessStartInfo(url));
}
private void button_Support_Click(object sender, RoutedEventArgs e)
@@ -1796,5 +1846,5 @@ namespace BeWo
NavigateTo(GetViewForUIContext(UIContext.Scheduling));
}
}
}
}
}

View File

@@ -1892,6 +1892,8 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<System.Collections.Generic.List<string>>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.Core.DateTimeSpan>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<BS.Shared.DataContracts.SchedulerAppointmentDC, bool>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<BS.Shared.Core.DateTimeSpan, System.Collections.Generic.Dictionary<System.DateTime, bool>>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<System.DateTime, bool>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<BS.Shared.DataContracts.ValueListEntryDC, System.Collections.Generic.List<BS.Shared.DataContracts.ResourceDC>>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<System.DateTime, System.Collections.Generic.List<BS.Shared.Core.DateTimeSpan>>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<string, System.Collections.Generic.List<string>>))]
@@ -2064,6 +2066,7 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<BS.Shared.DataContracts.Compact.CompactCustomerDC, bool>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<long, bool>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<BS.Shared.DataContracts.ServiceRecordDC, System.Collections.Generic.List<BS.Shared.ServiceRecordValidationResult>>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Invoicing.BankAccountDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Reports.AuslastungAnalysisRootDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Reports.AccountingReportDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Reports.AccountingReportRowDC>))]
@@ -4815,6 +4818,12 @@ namespace BeWo.ServiceProxy
"ultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.Dictionary<BS.Shared.DataContracts.SchedulerAppointmentDC, bool> OverlappingAppointmentsExistForMultiple(System.Collections.Generic.List<BS.Shared.DataContracts.SchedulerAppointmentDC> appointments);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IResourceService/FindAppointmentsInRangeForIntervalFinder", ReplyAction="http://tempuri.org/IResourceService/FindAppointmentsInRangeForIntervalFinderRespo" +
"nse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IResourceService/FindAppointmentsInRangeForIntervalFinderBeWoF" +
"aultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.Dictionary<BS.Shared.Core.DateTimeSpan, System.Collections.Generic.Dictionary<System.DateTime, bool>> FindAppointmentsInRangeForIntervalFinder(int duration, System.DateTime startDate, System.DateTime endDate, System.Collections.Generic.List<long> resourceOids, System.Collections.Generic.List<long> customerOids, System.Collections.Generic.List<long> employeeOids, long loggedInEmployeeOid, int intervalBuffer, bool skipWeekends);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IResourceService/DeactivateResource", ReplyAction="http://tempuri.org/IResourceService/DeactivateResourceResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IResourceService/DeactivateResourceBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
void DeactivateResource(long pOid, long pVersion);
@@ -5154,6 +5163,11 @@ namespace BeWo.ServiceProxy
return base.Channel.OverlappingAppointmentsExistForMultiple(appointments);
}
public System.Collections.Generic.Dictionary<BS.Shared.Core.DateTimeSpan, System.Collections.Generic.Dictionary<System.DateTime, bool>> FindAppointmentsInRangeForIntervalFinder(int duration, System.DateTime startDate, System.DateTime endDate, System.Collections.Generic.List<long> resourceOids, System.Collections.Generic.List<long> customerOids, System.Collections.Generic.List<long> employeeOids, long loggedInEmployeeOid, int intervalBuffer, bool skipWeekends)
{
return base.Channel.FindAppointmentsInRangeForIntervalFinder(duration, startDate, endDate, resourceOids, customerOids, employeeOids, loggedInEmployeeOid, intervalBuffer, skipWeekends);
}
public void DeactivateResource(long pOid, long pVersion)
{
base.Channel.DeactivateResource(pOid, pVersion);
@@ -5480,6 +5494,19 @@ namespace BeWo.ServiceProxy
public interface IOperationsService
{
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetEmployeesServiceRecordsWithStartEndDateP" +
"aginated", ReplyAction="http://tempuri.org/IOperationsService/GetEmployeesServiceRecordsWithStartEndDateP" +
"aginatedResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetEmployeesServiceRecordsWithStartEndDateP" +
"aginatedBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.ServiceRecordDC> GetEmployeesServiceRecordsWithStartEndDatePaginated(out int rowCount, long pEmployeeOid, System.DateTime start, System.DateTime ende, int firstResult, int maxResults);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetEmployeesServiceRecords2Paginated", ReplyAction="http://tempuri.org/IOperationsService/GetEmployeesServiceRecords2PaginatedRespons" +
"e")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetEmployeesServiceRecords2PaginatedBeWoFau" +
"ltFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.ServiceRecordDC> GetEmployeesServiceRecords2Paginated(out int rowCount, long pEmployeeOid, System.Nullable<long> days, int firstResult, int maxResults);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetCustomerServiceRecordsWithStartEndDatePa" +
"ginated", ReplyAction="http://tempuri.org/IOperationsService/GetCustomerServiceRecordsWithStartEndDatePa" +
"ginatedResponse")]
@@ -5592,6 +5619,10 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/InsertTemplateBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
BS.Shared.DataContracts.DokumentvorlageDC InsertTemplate(BS.Shared.DataContracts.DokumentvorlageDC dc);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetPlatzhalterForTemplate", ReplyAction="http://tempuri.org/IOperationsService/GetPlatzhalterForTemplateResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetPlatzhalterForTemplateBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.PlatzhalterDC> GetPlatzhalterForTemplate(BS.Shared.DataContracts.VorlagentabelleDC vt);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetPlatzhalterForSupportConcept", ReplyAction="http://tempuri.org/IOperationsService/GetPlatzhalterForSupportConceptResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetPlatzhalterForSupportConceptBeWoFaultFau" +
"lt", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
@@ -5617,6 +5648,10 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetDokumentvorlagenInFolderBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.DokumentvorlageDC> GetDokumentvorlagenInFolder(long folderOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetDokumentvorlagenForType", ReplyAction="http://tempuri.org/IOperationsService/GetDokumentvorlagenForTypeResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetDokumentvorlagenForTypeBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.DokumentvorlageDC> GetDokumentvorlagenForType(BS.Shared.TableID objecTid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetSupportConceptsById", ReplyAction="http://tempuri.org/IOperationsService/GetSupportConceptsByIdResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetSupportConceptsByIdBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.SupportConceptDC> GetSupportConceptsById(System.Collections.Generic.List<long> idList);
@@ -6135,6 +6170,8 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<System.Collections.Generic.List<string>>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.Core.DateTimeSpan>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<BS.Shared.DataContracts.SchedulerAppointmentDC, bool>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<BS.Shared.Core.DateTimeSpan, System.Collections.Generic.Dictionary<System.DateTime, bool>>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<System.DateTime, bool>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<BS.Shared.DataContracts.ValueListEntryDC, System.Collections.Generic.List<BS.Shared.DataContracts.ResourceDC>>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<System.DateTime, System.Collections.Generic.List<BS.Shared.Core.DateTimeSpan>>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<string, System.Collections.Generic.List<string>>))]
@@ -6307,6 +6344,7 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<BS.Shared.DataContracts.Compact.CompactCustomerDC, bool>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<long, bool>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<BS.Shared.DataContracts.ServiceRecordDC, System.Collections.Generic.List<BS.Shared.ServiceRecordValidationResult>>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Invoicing.BankAccountDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Reports.AuslastungAnalysisRootDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Reports.AccountingReportDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Reports.AccountingReportRowDC>))]
@@ -6365,19 +6403,6 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.QueryDC>))]
string GetDakotaFileFormat(object param);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetEmployeesServiceRecordsWithStartEndDateP" +
"aginated", ReplyAction="http://tempuri.org/IOperationsService/GetEmployeesServiceRecordsWithStartEndDateP" +
"aginatedResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetEmployeesServiceRecordsWithStartEndDateP" +
"aginatedBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.ServiceRecordDC> GetEmployeesServiceRecordsWithStartEndDatePaginated(out int rowCount, long pEmployeeOid, System.DateTime start, System.DateTime ende, int firstResult, int maxResults);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetEmployeesServiceRecords2Paginated", ReplyAction="http://tempuri.org/IOperationsService/GetEmployeesServiceRecords2PaginatedRespons" +
"e")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetEmployeesServiceRecords2PaginatedBeWoFau" +
"ltFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.ServiceRecordDC> GetEmployeesServiceRecords2Paginated(out int rowCount, long pEmployeeOid, System.Nullable<long> days, int firstResult, int maxResults);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/AnonymizeEmployee", ReplyAction="http://tempuri.org/IOperationsService/AnonymizeEmployeeResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/AnonymizeEmployeeBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
void AnonymizeEmployee(long pEmployeeOid);
@@ -7561,6 +7586,16 @@ namespace BeWo.ServiceProxy
{
}
public System.Collections.Generic.List<BS.Shared.DataContracts.ServiceRecordDC> GetEmployeesServiceRecordsWithStartEndDatePaginated(out int rowCount, long pEmployeeOid, System.DateTime start, System.DateTime ende, int firstResult, int maxResults)
{
return base.Channel.GetEmployeesServiceRecordsWithStartEndDatePaginated(out rowCount, pEmployeeOid, start, ende, firstResult, maxResults);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.ServiceRecordDC> GetEmployeesServiceRecords2Paginated(out int rowCount, long pEmployeeOid, System.Nullable<long> days, int firstResult, int maxResults)
{
return base.Channel.GetEmployeesServiceRecords2Paginated(out rowCount, pEmployeeOid, days, firstResult, maxResults);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.ServiceRecordDC> GetCustomerServiceRecordsWithStartEndDatePaginated(out int rowCount, long pCustomerOid, long costbearer2SupportConceptOid, System.DateTime start, System.DateTime ende, int firstResult, int maxResults)
{
return base.Channel.GetCustomerServiceRecordsWithStartEndDatePaginated(out rowCount, pCustomerOid, costbearer2SupportConceptOid, start, ende, firstResult, maxResults);
@@ -7671,6 +7706,11 @@ namespace BeWo.ServiceProxy
return base.Channel.InsertTemplate(dc);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.PlatzhalterDC> GetPlatzhalterForTemplate(BS.Shared.DataContracts.VorlagentabelleDC vt)
{
return base.Channel.GetPlatzhalterForTemplate(vt);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.PlatzhalterDC> GetPlatzhalterForSupportConcept()
{
return base.Channel.GetPlatzhalterForSupportConcept();
@@ -7701,6 +7741,11 @@ namespace BeWo.ServiceProxy
return base.Channel.GetDokumentvorlagenInFolder(folderOid);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.DokumentvorlageDC> GetDokumentvorlagenForType(BS.Shared.TableID objecTid)
{
return base.Channel.GetDokumentvorlagenForType(objecTid);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.SupportConceptDC> GetSupportConceptsById(System.Collections.Generic.List<long> idList)
{
return base.Channel.GetSupportConceptsById(idList);
@@ -7931,16 +7976,6 @@ namespace BeWo.ServiceProxy
return base.Channel.GetDakotaFileFormat(param);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.ServiceRecordDC> GetEmployeesServiceRecordsWithStartEndDatePaginated(out int rowCount, long pEmployeeOid, System.DateTime start, System.DateTime ende, int firstResult, int maxResults)
{
return base.Channel.GetEmployeesServiceRecordsWithStartEndDatePaginated(out rowCount, pEmployeeOid, start, ende, firstResult, maxResults);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.ServiceRecordDC> GetEmployeesServiceRecords2Paginated(out int rowCount, long pEmployeeOid, System.Nullable<long> days, int firstResult, int maxResults)
{
return base.Channel.GetEmployeesServiceRecords2Paginated(out rowCount, pEmployeeOid, days, firstResult, maxResults);
}
public void AnonymizeEmployee(long pEmployeeOid)
{
base.Channel.AnonymizeEmployee(pEmployeeOid);

View File

@@ -4,6 +4,7 @@ using System.Diagnostics;
using System.Linq;
using System.ServiceModel;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using BeWo.Multitenancy;
@@ -75,17 +76,14 @@ namespace BeWo.ServiceProxy
{
DoAsync<AccountingServiceClient, IAccountingService, T>(pFunc, pCallBack, true);
}
public static void DoAccountingServiceAsync(Action<IAccountingService> pAction)
{
DoAsync<AccountingServiceClient, IAccountingService>(pAction, true);
}
public static void DoAccountingServiceAsync(Action<IAccountingService> pAction, Action callback)
{
DoAsync<AccountingServiceClient, IAccountingService>(pAction, callback, true);
}
public static T DoAccountingServiceSync<T>(Func<IAccountingService, T> pFunc)
{
try
@@ -99,19 +97,16 @@ namespace BeWo.ServiceProxy
return default(T);
}
public static void DoAnalysisServiceAsync<T>(Func<IAnalysisService, T> pFunc, Action<T> pCallBack)
{
DoAsync<AnalysisServiceClient, IAnalysisService, T>(pFunc, pCallBack, true);
}
public static void DoAnalysisServiceAsync<T>(Func<IAnalysisService, T> pFunc, Action<T> pCallBack, bool showWaitDialog)
{
DoAsync<AnalysisServiceClient, IAnalysisService, T>(pFunc, pCallBack, showWaitDialog);
}
public static void DoAccountingServiceSync(Action<IAccountingService> pAction)
{
pAction.Invoke(GetInstance<AccountingServiceClient, IAccountingService>());
@@ -806,17 +801,6 @@ namespace BeWo.ServiceProxy
}
}
private static void EndWaiting()
{
Monitor.Enter(_Lock);
if ((--_RunningAsyncs) == 0 && BeWoApp.MainControl != null)
{
BeWoApp.MainControl.EndWaiting();
}
Monitor.Exit(_Lock);
}
private static TInterface GetInstance<TClient, TInterface>()
where TClient : ClientBase<TInterface>, TInterface, new()
where TInterface : class
@@ -878,7 +862,7 @@ namespace BeWo.ServiceProxy
BeWoApp.ShowErrorMessage(e);
}
private static void StartWaiting()
private static void StartWaiting()
{
Monitor.Enter(_Lock);
if ((++_RunningAsyncs) == 1 && BeWoApp.MainControl != null)
@@ -889,5 +873,49 @@ namespace BeWo.ServiceProxy
Monitor.Exit(_Lock);
}
private static void EndWaiting()
{
Monitor.Enter(_Lock);
if ((--_RunningAsyncs) == 0 && BeWoApp.MainControl != null)
{
BeWoApp.MainControl.EndWaiting();
}
Monitor.Exit(_Lock);
}
//public static bool IsWaiting()
//{
// return _RunningAsyncs != 0;
//}
//public static void WaitUntilAsyncIsFinished(Action<bool> callback = null)
//{
// if (!IsWaiting())
// {
// callback(true);
// return;
// }
// try
// {
// Task.Run(() => WaitUntil(() => !IsWaiting(), callback));
// }
// catch(Exception)
// {
// callback(false);
// }
//}
//private static async Task WaitUntil(Func<bool> condition, Action<bool> callback, int frequency = 25, int timeout = -1)
//{
// var waitTask = Task.Run(async () =>
// {
// while (!condition()) await Task.Delay(frequency);
// callback(true);
// });
// if (waitTask != await Task.WhenAny(waitTask,
// Task.Delay(timeout)))
// throw new TimeoutException();
//}
}
}

View File

@@ -2515,7 +2515,7 @@
x:Name="PART_NewButton"
Grid.Column="2"
Width="{Binding Path=ActualHeight, RelativeSource={RelativeSource Self}}"
Height="20"
Height="18"
Margin="1,0,1,0"
Padding="0"
VerticalAlignment="Stretch"
@@ -2537,7 +2537,7 @@
x:Name="PART_DeleteButton"
Grid.Column="3"
Width="{Binding Path=ActualHeight, RelativeSource={RelativeSource Self}}"
Height="20"
Height="18"
Margin="1,0,1,0"
Padding="0"
VerticalAlignment="Stretch"

View File

@@ -10,194 +10,198 @@ using BS.Shared;
namespace BeWo.View
{
public class BeWoView : UserControl
{
public Action ModalEditViewUpdateCallback;
public class BeWoView : UserControl
{
public Action ModalEditViewUpdateCallback;
public virtual bool IsDoneWithInsertOrUpdate { get; set; }
public virtual bool IsDoneWithInsertOrUpdate { get; set; }
public event EventHandler BlendOutComplete;
public event EventHandler BlendOutComplete;
public virtual bool CanDelete
{
get
{
return false;
}
}
public virtual bool CanDelete
{
get
{
return false;
}
}
public virtual bool CanExcelExport
{
get
{
return false;
}
}
public virtual bool CanExcelExport
{
get
{
return false;
}
}
public virtual bool CanWordExport
{
get
{
return false;
}
}
public virtual bool CanWordExport
{
get
{
return false;
}
}
public virtual bool IsDirty
{
get
{
return false;
}
}
public virtual bool IsDirty
{
get
{
return false;
}
}
public virtual BeWoView ParentView { get; set; }
public virtual BeWoView ParentView { get; set; }
public virtual string SaveObjectName
{
get
{
return this.Title;
}
}
public virtual string SaveObjectName
{
get
{
return this.Title;
}
}
public virtual string Title
{
get
{
return string.Empty;
}
}
public virtual string Title
{
get
{
return string.Empty;
}
}
public virtual bool IsInWindow { get; set; }
public virtual bool IsInWindow { get; set; }
internal virtual DependencyObject ValidationOnSaveRootElement
{
get
{
return this;
}
}
internal virtual DependencyObject ValidationOnSaveRootElement
{
get
{
return this;
}
}
protected MainControl MainControl
{
get
{
return BeWoApp.MainControl;
}
}
protected MainControl MainControl
{
get
{
return BeWoApp.MainControl;
}
}
public void BlendIn()
{
DoubleAnimation lAnim = new DoubleAnimation(1, new Duration(TimeSpan.FromSeconds(0.3)));
this.BeginAnimation(OpacityProperty, lAnim);
}
public void BlendIn()
{
DoubleAnimation lAnim = new DoubleAnimation(1, new Duration(TimeSpan.FromSeconds(0.3)));
this.BeginAnimation(OpacityProperty, lAnim);
}
public void BlendOut()
{
DoubleAnimation lAnim = new DoubleAnimation(0, new Duration(TimeSpan.FromSeconds(0.3)));
lAnim.Completed += (s, e) =>
{
if (this.BlendOutComplete != null)
{
this.BlendOutComplete(this, e);
}
};
this.BeginAnimation(OpacityProperty, lAnim);
}
public void BlendOut()
{
DoubleAnimation lAnim = new DoubleAnimation(0, new Duration(TimeSpan.FromSeconds(0.3)));
lAnim.Completed += (s, e) =>
{
if (this.BlendOutComplete != null)
{
this.BlendOutComplete(this, e);
}
};
this.BeginAnimation(OpacityProperty, lAnim);
}
public virtual void Delete()
{
}
public virtual void Delete()
{
}
public virtual void ExportToExcel(string pFileID)
{
}
public virtual void ExportToExcel(string pFileID)
{
}
public virtual void ExportToWord(string pFileID)
{
}
public virtual void ExportToWord(string pFileID)
{
}
public virtual void ModalPopUpCloseInvoked()
{
}
public virtual void ModalPopUpCloseInvoked()
{
}
public virtual void ModalPopUpSaveInvoked()
{
}
public virtual void ModalPopUpSaveInvoked()
{
}
public virtual void ChildViewClosed()
{
}
public virtual void ChildViewClosed()
{
}
public bool SaveData()
{
if (!BeWoApp.HasLoggedOnUserRight(this.GetSaveDemands()))
{
MessageBox.Show("Sie besitzen nicht die nötigen Rechte um zu speichern. Bitte wenden Sie sich an den Administrator!", "Autorisierung fehlgeschlagen", MessageBoxButton.OK, MessageBoxImage.Warning);
return false;
}
public bool SaveData()
{
if (!BeWoApp.HasLoggedOnUserRight(this.GetSaveDemands()))
{
MessageBox.Show("Sie besitzen nicht die nötigen Rechte um zu speichern. Bitte wenden Sie sich an den Administrator!", "Autorisierung fehlgeschlagen", MessageBoxButton.OK, MessageBoxImage.Warning);
return false;
}
var lValid = ValidationTrigger.Validate(this.ValidationOnSaveRootElement);
if (lValid)
{
Save();
}
else
{
MessageBox.Show("Bitte füllen Sie alle Pflichtfelder aus!", "Speichern nicht möglich", MessageBoxButton.OK, MessageBoxImage.Warning);
}
var lValid = ValidationTrigger.Validate(this.ValidationOnSaveRootElement);
if (lValid)
{
Save();
}
else
{
MessageBox.Show("Bitte füllen Sie alle Pflichtfelder aus!", "Speichern nicht möglich", MessageBoxButton.OK, MessageBoxImage.Warning);
}
return lValid;
}
return lValid;
}
public virtual MessageBoxResult ShowSaveQuestion()
{
return string.IsNullOrEmpty(this.SaveObjectName) ? MessageBox.Show("Wollen Sie die Änderungen speichern?", "Änderungen speichern", MessageBoxButton.YesNoCancel, MessageBoxImage.Question) : MessageBox.Show("Wollen Sie die Änderungen an " + this.SaveObjectName + " speichern?", "Änderungen speichern", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
}
public virtual MessageBoxResult ShowSaveQuestion()
{
return string.IsNullOrEmpty(this.SaveObjectName) ? MessageBox.Show("Wollen Sie die Änderungen speichern?", "Änderungen speichern", MessageBoxButton.YesNoCancel, MessageBoxImage.Question) : MessageBox.Show("Wollen Sie die Änderungen an " + this.SaveObjectName + " speichern?", "Änderungen speichern", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
}
internal virtual bool DoSaveCheck()
{
if (this.IsDirty)
{
MessageBoxResult lResult = this.ShowSaveQuestion();
if (lResult == MessageBoxResult.Cancel)
{
this.Focus();
return false;
}
/// <summary>
/// Gibt false zurück, wenn Speicherfrage abgelehnt wird, sonst true
/// </summary>
/// <returns></returns>
internal virtual bool DoSaveCheck()
{
if (!IsDirty)
return true;
if (lResult == MessageBoxResult.Yes)
{
this.SaveData();
}
}
MessageBoxResult lResult = this.ShowSaveQuestion();
if (lResult == MessageBoxResult.Cancel)
{
this.Focus();
return false;
}
return true;
}
if (lResult == MessageBoxResult.Yes)
{
this.SaveData();
}
protected virtual UserRightType[] GetSaveDemands()
{
return null;
}
return true;
}
protected virtual UserRightType[] GetSaveDemands()
{
return null;
}
protected virtual void Save()
{
}
protected virtual void Save()
{
}
protected bool Validate(DependencyObject lElement)
{
return ValidationTrigger.Validate(lElement);
}
protected bool Validate(DependencyObject lElement)
{
return ValidationTrigger.Validate(lElement);
}
protected virtual void popup_Closed(object sender, EventArgs e)
{
this.MainControl.AnimateOpacity(1, 100);
}
protected virtual void popup_Closed(object sender, EventArgs e)
{
this.MainControl.AnimateOpacity(1, 100);
}
protected virtual void popup_Opened(object sender, EventArgs e)
{
this.MainControl.AnimateOpacity(0.5, 200);
}
}
protected virtual void popup_Opened(object sender, EventArgs e)
{
this.MainControl.AnimateOpacity(0.5, 200);
}
}
}

View File

@@ -1,15 +1,22 @@
<Window x:Class="BeWo.View.BeWoWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="BeWoPlaner" MinHeight="300" MinWidth="300"
WindowStyle="None"
WindowStartupLocation="CenterOwner"
AllowsTransparency="True"
Background="Transparent"
ResizeMode="CanResizeWithGrip" Closing="Window_Closing" Closed="Window_Closed">
<Window
x:Class="BeWo.View.BeWoWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="BeWoPlaner"
MinWidth="300"
MinHeight="300"
AllowsTransparency="True"
Background="Transparent"
Closed="Window_Closed"
Closing="Window_Closing"
ResizeMode="CanResizeWithGrip"
WindowStartupLocation="CenterOwner"
WindowStyle="None">
<Grid>
<GroupBox x:Name="rootGroupBox" Style="{DynamicResource MainContentGroupBoxWithoutMaximizeBtnStyle}" MouseLeftButtonDown="RootGroupBox_OnMouseLeftButtonDown" MouseDoubleClick="RootGroupBox_OnMouseDoubleClick">
</GroupBox>
<GroupBox
x:Name="rootGroupBox"
MouseDoubleClick="RootGroupBox_OnMouseDoubleClick"
MouseLeftButtonDown="RootGroupBox_OnMouseLeftButtonDown"
Style="{DynamicResource MainContentGroupBoxWithoutMaximizeBtnStyle}" />
</Grid>
</Window>

View File

@@ -1,5 +1,6 @@
using BeWo.View.Controls;
using BeWo.ViewModel;
using BS.Shared.Extensions;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -12,7 +13,7 @@ namespace BeWo.View
{
public static class BeWoWindowBuilder
{
public static BeWoWindow GetTextViewer(string title, string text, bool fixed_size = false, double height = 600, double width = 400)
public static BeWoWindow GetTextViewer(string title, string text, bool fixed_size = false, double height = 600, double width = 600)
{
if (fixed_size)
return GetTextViewer(title, text, height, height, height, width, width, width);
@@ -36,11 +37,12 @@ namespace BeWo.View
return beWoWindow;
}
public static BeWoWindow GetGkvAbrechnungDetailWindow(GkvAbrechnungVM vM, double height = 800, double width = 600)
public static BeWoWindow GetGkvAbrechnungDetailWindow(GkvAbrechnungVM vM, double height = 800, double width = 900)
{
var detail = new GkvAbrechnungDetailControl(vM);
var beWoWindow = GetGenericBeWoWindow("GKV-Abrechnung Nr. " + vM.GkvAbrechnungOid + ": Details", 100, height, 1000, 400, width, 1600);
var detail = new GkvAbrechnungDetailControl(vM, beWoWindow);
beWoWindow.GroupBoxContent = detail;
return beWoWindow;
@@ -54,11 +56,6 @@ namespace BeWo.View
return beWoWindow;
}
public static void ShowErrorMessageBox(string text)
{
MessageBox.Show(text, "Fehler", MessageBoxButton.OK, MessageBoxImage.Asterisk);
}
private static BeWoWindow GetGenericBeWoWindow(string title, double min_height, double height, double max_height, double min_width, double width, double max_width)
{
var beWoWindow = new BeWoWindow();
@@ -77,5 +74,18 @@ namespace BeWo.View
return beWoWindow;
}
public static void ShowErrorMessageBox(string text)
{
MessageBox.Show(text, "Fehler", MessageBoxButton.OK, MessageBoxImage.Asterisk);
}
public static void ShowTitleErrorMessageBox(string text, string title)
{
if (title.IsNullOrWhiteSpace())
ShowErrorMessageBox(text);
else
MessageBox.Show(text, "Fehler", MessageBoxButton.OK, MessageBoxImage.Asterisk);
}
}
}

View File

@@ -0,0 +1,31 @@
<local:ComboBoxGenericSearch
x:Class="BeWo.View.Controls.ComboBoxes.ComboBoxEmployeeSearch"
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:local="clr-namespace:BeWo.View.Controls.ComboBoxes"
xmlns:localSearchView="clr-namespace:BeWo.View.Search"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
x:Name="root"
d:DesignWidth="200"
mc:Ignorable="d">
<Grid>
<uc:PopUpEdit
x:Name="popupedit"
MinHeight="23"
DeleteButtonVisibility="Visible"
DeleteClick="popupedit_DeleteClick"
IsReadOnly="True"
PopUpClick="popupedit_PopUpClick" />
<Popup
x:Name="popup"
Width="370"
Height="250"
Margin="10"
Placement="MousePoint"
StaysOpen="False">
<localSearchView:EmployeeSearchView x:Name="searchview" />
</Popup>
</Grid>
</local:ComboBoxGenericSearch>

View File

@@ -0,0 +1,85 @@
using BeWo.View.Search;
using BS.Shared.Core;
using BS.Shared.DataContracts.Compact;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
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;
namespace BeWo.View.Controls.ComboBoxes
{
/// <summary>
/// Interaktionslogik für ComboBoxEmployeeSearch.xaml
/// </summary>
public partial class ComboBoxEmployeeSearch : ComboBoxGenericSearch
{
// Using a DependencyProperty as the backing store for SelectedCompactEmployeeDC. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SelectedCompactEmployeeDCProperty =
DependencyProperty.Register("SelectedCompactEmployeeDC",
typeof(CompactEmployeeDC),
typeof(ComboBoxEmployeeSearch),
new UIPropertyMetadata(null,
selectCompactEmployee2));
public CompactEmployeeDC SelectedCompactEmployeeDC
{
get { return (CompactEmployeeDC)GetValue(SelectedCompactEmployeeDCProperty); }
set { SetValue(SelectedCompactEmployeeDCProperty, value); }
}
static ComboBoxEmployeeSearch()
{
SearchModeProperty.OverrideMetadata(typeof(ComboBoxEmployeeSearch), new UIPropertyMetadata(SearchMode.All, updateSearchMode));
}
public ComboBoxEmployeeSearch()
{
InitializeComponent();
}
private void popupedit_PopUpClick(object sender, EventArgs e)
{
searchview.ItemSelected += searchview_Selected;
popup.IsOpen = true;
}
private void searchview_Selected(object sender, EventArgs<CompactEmployeeDC> e)
{
popup.IsOpen = false;
searchview.ItemSelected -= searchview_Selected;
SelectedCompactEmployeeDC = e.Data;
popupedit.Focus();
}
private static void selectCompactEmployee2(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var control = d as ComboBoxEmployeeSearch;
control.popupedit.Text = e.NewValue?.ToString();
}
private static void updateSearchMode(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var control = d as ComboBoxEmployeeSearch;
control.searchview.SearchMode = (SearchMode)e.NewValue;
}
private void popupedit_DeleteClick(object sender, RoutedEventArgs e)
{
SelectedCompactEmployeeDC = null;
}
}
}

View File

@@ -0,0 +1,34 @@
using BeWo.View.Search;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
namespace BeWo.View.Controls.ComboBoxes
{
public class ComboBoxGenericSearch : UserControl
{
// Using a DependencyProperty as the backing store for DeleteButtonVisibility. This enables animation, styling, binding, etc...
public static readonly DependencyProperty DeleteButtonVisibilityProperty =
DependencyProperty.Register("DeleteButtonVisibility", typeof(Visibility), typeof(ComboBoxGenericSearch), new PropertyMetadata(null));
// Using a DependencyProperty as the backing store for MyProperty. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SearchModeProperty =
DependencyProperty.Register("SearchMode", typeof(SearchMode), typeof(ComboBoxGenericSearch), new UIPropertyMetadata(SearchMode.All));
public Visibility DeleteButtonVisibility
{
get { return (Visibility)GetValue(DeleteButtonVisibilityProperty); }
set { SetValue(DeleteButtonVisibilityProperty, value); }
}
public SearchMode SearchMode
{
get { return (SearchMode)GetValue(SearchModeProperty); }
set { SetValue(SearchModeProperty, value); }
}
}
}

View File

@@ -34,7 +34,7 @@ namespace BeWo.View.Controls
if (overtime != null)
{
TxtUeberstunden.Text = string.Format("{0:0.00}", overtime.Betrag);
TxtAuszahlungsart.Text = overtime.Auszahlungsart.Name;
TxtAuszahlungsart.Text = overtime.Auszahlungsart != null ? overtime.Auszahlungsart.Name : "-";
TxtUeberstunden.Visibility = Visibility.Visible;
TxtAuszahlungsart.Visibility = Visibility.Visible;

View File

@@ -136,7 +136,8 @@
Grid.Column="2"
Margin="3"
HorizontalAlignment="Left"
IsChecked="{Binding UrbelegeGesendet}" />
IsChecked="{Binding UrbelegeGesendet}"
IsEnabled="{Binding IsUrbelegeEditEnabled}"/>
<Label
Grid.Row="14"
Grid.Column="0"
@@ -148,7 +149,8 @@
Grid.Column="2"
Margin="3"
HorizontalAlignment="Left"
IsChecked="{Binding Bezahlt}" />
IsChecked="{Binding Bezahlt}"
IsEnabled="{Binding IsBezahltEditEnabled}"/>
<Label
Grid.Row="15"
Grid.Column="0"
@@ -352,6 +354,11 @@
FieldName="IKKostentrager"
Header="Kostentrager"
ReadOnly="True" />
<dxg:GridColumn
AllowEditing="False"
FieldName="IKDatenannahmestelle"
Header="Datenannahmestelle"
ReadOnly="True" />
<dxg:GridColumn
AllowEditing="False"
FieldName="Rechnungsnummer"
@@ -412,6 +419,48 @@
FieldName="SentDakotaSuccess"
Header="Sent Dakota"
IsEnabledBinding="{Binding Source=false}" />
<dxg:GridColumn
x:Name="ColumnButtons2"
Width="Auto"
AllowEditing="False"
Header=" ">
<dxg:GridColumn.DisplayTemplate>
<ControlTemplate>
<ControlTemplate.Resources />
<StackPanel Margin="1" Orientation="Horizontal">
<StackPanel.Resources />
<Button
x:Name="btn_auftragsdatei"
Width="17"
Height="15"
Margin="1"
Padding="0"
VerticalAlignment="Center"
Click="btn_auftragsdatei_Click"
Content="¥"
FontFamily="Webdings"
FontSize="9"
Foreground="#BBBBBB"
ToolTip="Auftragsdatei anzeigen" />
<!--<Button Click="btn_nutz_Click" Content="¥" Padding="0" Margin="1" ToolTip="Nutzdatendatei" Foreground="#BBBBBB" FontSize="10" FontFamily="Webdings" x:Name="btn_nutz" Height="17" Width="20" VerticalAlignment="Center" />
<Button Click="btn_auf_Click" Content="¥" Padding="0" Margin="1" ToolTip="Auftragsdatei" Foreground="#BBBBBB" FontSize="10" FontFamily="Webdings" x:Name="btn_auf" Height="17" Width="20" VerticalAlignment="Center" />-->
<Button
x:Name="btn_nutzdatendatei"
Width="17"
Height="15"
Margin="1"
Padding="0"
VerticalAlignment="Center"
Click="btn_nutzdatendatei_Click"
Content="¥"
FontFamily="Webdings"
FontSize="9"
Foreground="#BBBBBB"
ToolTip="Nutzdatendatei anzeigen" />
</StackPanel>
</ControlTemplate>
</dxg:GridColumn.DisplayTemplate>
</dxg:GridColumn>
<dxg:GridColumn
Width="100"
AllowEditing="False"

View File

@@ -1,6 +1,8 @@
using BeWo.Core;
using BeWo.ViewModel;
using BeWo.ViewModel.ListViewModel;
using BS.Shared.DataContracts.GkvAbrechnung;
using BS.Shared.Extensions;
using DevExpress.Xpf.Grid;
using System;
using System.Collections.Generic;
@@ -24,14 +26,18 @@ namespace BeWo.View.Controls
/// </summary>
public partial class GkvAbrechnungDetailControl : UserControl
{
public GkvAbrechnungVM GkvAbrechnungVM { get; set; }
public GkvAbrechnungVM GkvAbrechnungVM { get; set; }
public GkvAbrechnungDetailControl(GkvAbrechnungVM vm)
public Window Window { get; private set; }
public GkvAbrechnungDetailControl(GkvAbrechnungVM vm, Window window)
{
InitializeComponent();
GkvAbrechnungVM = vm;
DataContext = vm;
Window = window;
}
private void Hyperlink_OnRequestNavigate(object sender, RequestNavigateEventArgs e)
@@ -50,5 +56,27 @@ namespace BeWo.View.Controls
}
}
}
private void btn_auftragsdatei_Click(object sender, RoutedEventArgs e)
{
var vm = datagrid_transfer.GetCurrentValue<GkvTransferProtokollDC>();
var window = BeWoWindowBuilder.GetTextViewer("Auftragsdatei", vm.Auftragsdatei);
window.Owner = Window;
window.ShowDialog();
}
private void btn_nutzdatendatei_Click(object sender, RoutedEventArgs e)
{
var vm = datagrid_transfer.GetCurrentValue<GkvTransferProtokollDC>();
var window = BeWoWindowBuilder.GetTextViewer("Nutzdatendatei", vm.Nutzdatendatei);
window.Owner = Window;
window.ShowDialog();
}
}
}

View File

@@ -1,26 +1,46 @@
<UserControl x:Class="BeWo.View.Controls.ListboxSelectControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:validation="clr-namespace:BeWo.Validation"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
mc:Ignorable="d"
d:DesignHeight="230" d:DesignWidth="300">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<ListBox x:Name="Listbox" Grid.ColumnSpan="3" Margin="3, 3, 3, 0" SelectionMode="Single" FontSize="14" MouseDoubleClick="Listbox_OnMouseDoubleClick"/>
<Button x:Name="SelectButton" Grid.Row="1" Grid.Column="1" Content=" Auswählen " Margin="3" Click="SelectButton_Click"/>
<Button x:Name="CancelButton" Grid.Row="1" Grid.Column="2" Content=" Abbrechen " Margin="3" Click="CancelButton_Click"/>
</Grid>
<UserControl
x:Class="BeWo.View.Controls.ListboxSelectControl"
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:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:validation="clr-namespace:BeWo.Validation"
d:DesignHeight="230"
d:DesignWidth="300"
mc:Ignorable="d">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<ListBox
x:Name="Listbox"
Grid.ColumnSpan="3"
Margin="3,3,3,0"
FontSize="14"
MouseDoubleClick="Listbox_OnMouseDoubleClick"
SelectionMode="Single" />
<Button
x:Name="SelectButton"
Grid.Row="1"
Grid.Column="1"
Margin="3"
Click="SelectButton_Click"
Content=" Auswählen " />
<Button
x:Name="CancelButton"
Grid.Row="1"
Grid.Column="2"
Margin="3"
Click="CancelButton_Click"
Content=" Abbrechen " />
</Grid>
</UserControl>

View File

@@ -0,0 +1,79 @@
<UserControl
x:Class="BeWo.View.Controls.Utils.ColorPicker"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:BeWo.Controls.Controls;assembly=BeWo.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
x:Name="root"
d:DesignWidth="100"
mc:Ignorable="d">
<Grid>
<Button
x:Name="btn"
Height="24"
Padding="0"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch"
dx:ThemeManager.ThemeName="None"
Background="White"
BorderBrush="Black"
BorderThickness="1"
Click="button_select_color_Click"
Style="{x:Null}">
<Grid Background="{Binding ElementName=root, Path=SelectedColor}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<Button
x:Name="delete_btn"
Grid.Column="1"
Width="18"
Height="18"
Margin="2"
Click="delete_btn_DeleteClick">
X
</Button>
</Grid>
</Button>
<Popup
x:Name="popup_color"
Placement="MousePoint"
StaysOpen="false">
<ListBox
x:Name="listbox_colorpicker"
BorderThickness="0"
ItemsSource="{Binding ElementName=root, Path=AllBrushes}"
SelectionChanged="listbox_colorpicker_SelectionChanged">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid
Columns="12"
IsItemsHost="True"
Rows="12" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Border
Height="20"
MinWidth="20"
HorizontalAlignment="Stretch"
Background="{Binding}"
BorderBrush="Black"
BorderThickness="1"
CornerRadius="1" />
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Margin" Value="2" />
<Setter Property="Padding" Value="0" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
</Popup>
</Grid>
</UserControl>

View File

@@ -0,0 +1,88 @@
using BeWo.Core;
using BS.Shared.Extensions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
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 Color = System.Drawing.Color;
namespace BeWo.View.Controls.Utils
{
/// <summary>
/// Interaktionslogik für ColorPicker.xaml
/// </summary>
public partial class ColorPicker : UserControl
{
public SolidColorBrush SelectedColor
{
get { return (SolidColorBrush)GetValue(SelectedColorProperty); }
set { SetValue(SelectedColorProperty, value); }
}
// Using a DependencyProperty as the backing store for SelectedColor. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SelectedColorProperty =
DependencyProperty.Register("SelectedColor", typeof(SolidColorBrush), typeof(ColorPicker), new PropertyMetadata(null, SelectedColor_Update));
private static void SelectedColor_Update(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
//var btn = (d as ColorPicker).btn;
//btn.Background = e.NewValue as SolidColorBrush;
//btn.DataContext = e.NewValue as SolidColorBrush;
}
public ColorPicker()
{
InitializeComponent();
}
public List<SolidColorBrush> AllBrushes
{
get
{
var lTemp = typeof(Color).GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Static).Select(pi => (Color)pi.GetGetMethod().Invoke(null, null)).ToList();
lTemp.Sort((x, y) => x.GetBrightness().CompareTo(y.GetBrightness()));
return lTemp.Select(c => new SolidColorBrush(System.Windows.Media.Color.FromArgb(c.A, c.R, c.G, c.B))).ToList();
}
}
private void listbox_colorpicker_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.AddedItems.Count == 1)
{
var selection = e.AddedItems[0] as SolidColorBrush;
SelectedColor = selection;
popup_color.IsOpen = false;
}
}
private void button_select_color_Click(object sender, RoutedEventArgs e)
{
popup_color.IsOpen = true;
}
private void delete_btn_DeleteClick(object sender, RoutedEventArgs e)
{
SelectedColor = null;
listbox_colorpicker.SelectedItem = null;
e.Handled = true;
}
}
}

View File

@@ -113,7 +113,7 @@
Grid.Column="2"
EditValue="{Binding Path=AlterAmStichtag, UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="{Binding PermissionCustomerWohnhilfeManage, Mode=OneTime, Converter={StaticResource BoolReverseConverter}, ElementName=root}"
Style="{StaticResource BaseNumberTextEdit}"/>
Style="{StaticResource BaseNumberTextEdit}" />
<Label Grid.Row="3" Grid.Column="0">B1040 Haushaltsgröße</Label>
<dxe:TextEdit

View File

@@ -2,6 +2,7 @@
x:Class="BeWo.View.Detail.Accounting.GkvAbrechnungOverview"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:core="clr-namespace:BS.Shared.Core;assembly=BS.Shared"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:localView="clr-namespace:BeWo.View"
@@ -135,22 +136,26 @@
<StackPanel.Resources />
<Button
x:Name="btn_details"
Width="20"
Width="18"
Height="18"
Margin="1"
Padding="0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
Click="btn_details_Click"
Content="¥"
FontFamily="Webdings"
FontSize="11"
FontFamily="Wingdings"
FontSize="8"
Foreground="#FFFFFF"
ToolTip="Details anzeigen" />
ToolTip="Details anzeigen">
1
</Button>
<!--<Button Click="btn_nutz_Click" Content="¥" Padding="0" Margin="1" ToolTip="Nutzdatendatei" Foreground="#BBBBBB" FontSize="10" FontFamily="Webdings" x:Name="btn_nutz" Height="17" Width="20" VerticalAlignment="Center" />
<Button Click="btn_auf_Click" Content="¥" Padding="0" Margin="1" ToolTip="Auftragsdatei" Foreground="#BBBBBB" FontSize="10" FontFamily="Webdings" x:Name="btn_auf" Height="17" Width="20" VerticalAlignment="Center" />-->
<Button
x:Name="btn_send"
Width="20"
Width="18"
Height="18"
Margin="1"
Padding="0"
@@ -158,12 +163,69 @@
Click="btn_send_Click"
Content="*"
FontFamily="Wingdings"
FontSize="11"
FontSize="9"
Foreground="#ffffff"
IsEnabled="{Binding Row.IsReady2Send}"
ToolTip="{Binding Row, Converter={StaticResource TooltipTextConverter}, ConverterParameter=Send}"
ToolTipService.ShowOnDisabled="True"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static shared:UserRightType.Finance_Gkv_Send}}" />
<Button
x:Name="btn_report"
Width="18"
Height="18"
Margin="1"
VerticalAlignment="Center"
IsEnabled="{Binding Row.IsFormularEnabled}"
ToolTip="Begleitzettel einzeln anzeigen"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.ShowGkvBzEinzel}}">
<TextBlock Padding="0">
<Hyperlink
NavigateUri="{Binding DisplayText, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"
RequestNavigate="Hyperlink_OnRequestNavigate"
TextDecorations="None"
TargetName="_NewWindow">
<TextBlock
Width="12"
Height="12"
Padding="0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontFamily="Wingdings 2"
FontSize="12"
Foreground="#FFFFFF"
Text="0"
TextAlignment="Center" />
</Hyperlink>
</TextBlock>
</Button>
<Button
x:Name="btn_report2"
Width="18"
Height="18"
Margin="1"
VerticalAlignment="Center"
IsEnabled="{Binding Row.IsFormularEnabled}"
ToolTip="Begleitzettel mit Quittierungsbelegen anzeigen"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.ShowGkvBzUrbelege}}">
<TextBlock Padding="0">
<Hyperlink
NavigateUri="{Binding DisplayText, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"
RequestNavigate="Hyperlink_OnRequestNavigate2"
TextDecorations="None"
TargetName="_NewWindow">
<TextBlock
Width="12"
Height="12"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontFamily="Wingdings 2"
FontSize="11"
Foreground="#FFFFFF"
Text="1"
TextAlignment="Center" />
</Hyperlink>
</TextBlock>
</Button>
<Button
x:Name="btn_delete"
Width="20"
@@ -174,7 +236,7 @@
Click="btn_delete_Click"
Content="r"
FontFamily="Webdings"
FontSize="11"
FontSize="12"
Foreground="#FF0000"
ToolTip="Löschen"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static shared:UserRightType.Finance_Gkv_Delete}}" />
@@ -197,7 +259,7 @@
<dxg:GridColumn
Width="Auto"
AllowEditing="False"
FieldName="ErstelltAm"
FieldName="ErstelltAmDate"
Header="Erstelldatum"
ReadOnly="True">
<dxg:GridColumn.EditSettings>
@@ -243,7 +305,8 @@
x:Name="UrbelegeColumn"
Width="Auto"
FieldName="UrbelegeGesendet"
Header="Urbelege gesendet">
Header="Urbelege gesendet"
IsEnabledBinding="{Binding IsUrbelegeEditEnabled}">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<dxe:CheckEdit Name="PART_Editor" />
@@ -254,7 +317,8 @@
x:Name="PaidColumn"
Width="Auto"
FieldName="Bezahlt"
Header="Bezahlt">
Header="Bezahlt"
IsEnabledBinding="{Binding IsBezahltEditEnabled}">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<dxe:CheckEdit Name="PART_Editor" />
@@ -299,7 +363,13 @@
RowMinHeight="24"
ScrollingMode="Smart"
ShownEditor="gridView_ShownEditor"
SnapsToDevicePixels="True" />
SnapsToDevicePixels="True">
<dxg:TableView.RuntimeLocalizationStrings>
<dxg:GridRuntimeStringCollection>
<dxg:RuntimeStringIdInfo Id="GridGroupPanelText" Value="Ziehen Sie eine Spaltenüberschrift hierher, um nach dieser Spalte zu gruppieren." />
</dxg:GridRuntimeStringCollection>
</dxg:TableView.RuntimeLocalizationStrings>
</dxg:TableView>
</dxg:GridControl.View>
</dxg:GridControl>
</Grid>

View File

@@ -63,8 +63,6 @@ namespace BeWo.View.Detail.Accounting
private void RefreshGkvAbrechnungenList()
{
var test = datagrid_gkvAbrechnungen;
ServiceFacade.DoAccountingServiceAsync(s => s.GetFilteredGkvAbrechnungen(null), UpdateGkvAbrechnungList);
}
@@ -112,6 +110,9 @@ namespace BeWo.View.Detail.Accounting
CriteriaOperator.FromLambda<GkvAbrechnungDC>(gkv => gkv.AbrechnungsZeitraumStart <= filter_start && filter_ende <= gkv.AbrechnungsZeitraumEnde));
}
}
gridView.BestFitColumns();
gridView.BestFitColumn(ColumnButtons);
}
private void NewGkvAbrechnungPopUpViewCancelButtonClicked(object sender, EventArgs e)
@@ -120,25 +121,45 @@ namespace BeWo.View.Detail.Accounting
}
private void NewGkvAbrechnungPopUpViewCreateButtonClicked(object sender, EventArgs<GkvAbrechnungDC> e)
{
var gkv_abrechnung = e.Data;
var checked_invoice_bases = _NewGkvAbrechnungPopUpView.ViewModel.InvoiceBases.Where(x => x.IsChecked);
// MessageBox.Show("Sie haben keine Rechnung hinzugefügt.", "GKV-Abrechnung erstellen", MessageBoxButton.OK, MessageBoxImage.Warning);
if (!checked_invoice_bases.Any())
return;
var success = ValidatorExtended.TryValidateGkvAbrechnung(gkv_abrechnung, checked_invoice_bases, false);
if (!success)
{
var txt = "Sie haben Rechnungen mit verschiedenen Rechnungsadressen ausgewählt.";
var result = MessageBox.Show(txt, "Hinweis", MessageBoxButton.OK);
return;
}
var already_used_invoices = checked_invoice_bases.Where(x => x.IsAlreadyInActiveGkvAbrechnung.Value);
if (already_used_invoices.Any())
{
var txt = "Sie haben eine oder mehrere Rechnungen ausgewählt, welche bereits in einer anderen aktiven GKV-Abrechnung enthalten sind. Möchten Sie fortfahren?";
var txt = "Sie haben eine oder mehrere Rechnungen ausgewählt, welche bereits in einer " +
"anderen aktiven GKV-Abrechnung enthalten sind. Möchten Sie fortfahren?";
var result = MessageBox.Show(txt, "Hinweis", MessageBoxButton.OKCancel);
if (result != MessageBoxResult.OK)
return;
}
var bereits_bezahlt = checked_invoice_bases.Where(x => x.IsPaid);
if (bereits_bezahlt.Any())
{
var txt = "Sie haben eine oder mehrere Rechnungen ausgewählt, welche bereits als 'Bezahlt' " +
"markiert sind. Möchten Sie fortfahren?";
var result = MessageBox.Show(txt, "Hinweis", MessageBoxButton.OKCancel);
if (result != MessageBoxResult.OK)
return;
}
MainControl.CloseCurrentPopUp();
var gkv_abrechnung = e.Data;
var gkv_filter = new GkvAbrechnungCreateRequestDC
{
GkvAbrechnungDC = gkv_abrechnung,
@@ -155,7 +176,7 @@ namespace BeWo.View.Detail.Accounting
}
else
{
BeWoWindowBuilder.ShowErrorMessageBox(cb.Message);
BeWoWindowBuilder.ShowTitleErrorMessageBox(cb.Message, cb.TitleMessage);
}
}));
}
@@ -232,10 +253,14 @@ namespace BeWo.View.Detail.Accounting
private void NewButton_OnClick(object sender, RoutedEventArgs e)
{
GkvAbrechnungDC gkvAbrechnungDC = new GkvAbrechnungDC();
int year = DateTime.Now.Year;
int month = DateTime.Now.Month - 1;
gkvAbrechnungDC.AbrechnungsZeitraumStart = new DateTime(year, month, 1);
gkvAbrechnungDC.AbrechnungsZeitraumEnde = new DateTime(year, month, DateTime.DaysInMonth(year, month));
var start = DateTime.Today.AddMonths(-1);
var first = new DateTime(start.Year, start.Month, 1);
var last = first.AddMonths(1).AddDays(-1);
gkvAbrechnungDC.AbrechnungsZeitraumStart = first;
gkvAbrechnungDC.AbrechnungsZeitraumEnde = last;
GkvAbrechnungVM gkvAbrechnungVM = new GkvAbrechnungVM(gkvAbrechnungDC);
_NewGkvAbrechnungPopUpView.Clear();
_NewGkvAbrechnungPopUpView.ViewModel = gkvAbrechnungVM;
@@ -291,14 +316,14 @@ namespace BeWo.View.Detail.Accounting
if (gkvAbrechnungVM is null)
return;
if (gkvAbrechnungVM.GkvState == GkvState.WaitingForKrankenkasseTooLong)
if (gkvAbrechnungVM.GkvState == GkvState.WaitingForKrankenkasseTooLong && BeWoApp.Mandator.ColorWaitTooLong is string colorWaiting)
{
e.Result = Brushes.Orange;
e.Result = ColorExtensions.ParseSolidColorBrush(colorWaiting);
e.Handled = true;
}
else if (gkvAbrechnungVM.GkvState == GkvState.WaitingForUrbelege)
else if (gkvAbrechnungVM.GkvState == GkvState.WaitingForUrbelege && BeWoApp.Mandator.ColorSendUrbelege is string colorSend)
{
e.Result = Brushes.Green;
e.Result = ColorExtensions.ParseSolidColorBrush(colorSend);
e.Handled = true;
}
}
@@ -364,7 +389,40 @@ namespace BeWo.View.Detail.Accounting
{
_Viewmodel.FirePropertyChangedItself();
if (_NewGkvAbrechnungPopUpView.PopupObjectList is object)
_NewGkvAbrechnungPopUpView.PopupObjectList = null;
RefreshGkvAbrechnungenList();
}
private void Hyperlink_OnRequestNavigate(object sender, RequestNavigateEventArgs e)
{
var vm = datagrid_gkvAbrechnungen.GetCurrentValue<GkvAbrechnungVM>();
string what2send = "unterschriebene Leistungsnachweise";
if (vm.Verfahrensstufe != GkvVerfahrensstufe.Echt)
what2send += " und Rechnungen";
BeWoApp.ShowInfoMessage($"Begleitzettel bitte inklusive der enthaltenen Urbelege ({what2send}) ausdrucken, " +
$"Anzahl der Urbelege noch eintragen und alles zusammen versenden.");
BeWoUtils.NavigateToReportUri(vm.ReportLink, "Druckvorschau");
}
private void Hyperlink_OnRequestNavigate2(object sender, RequestNavigateEventArgs e)
{
var vm = datagrid_gkvAbrechnungen.GetCurrentValue<GkvAbrechnungVM>();
string what2send = "Leistungsnachweise";
if (vm.Verfahrensstufe != GkvVerfahrensstufe.Echt)
what2send += " und Rechnungen";
BeWoApp.ShowInfoMessage($"Begleitzettel bitte inklusive der enthaltenen Urbelege ({what2send}) ausdrucken, " +
$"Anzahl der Urbelege noch eintragen und alles zusammen versenden.");
BeWoUtils.NavigateToReportUri(vm.ReportLink2, "Druckvorschau");
}
}
}

View File

@@ -113,7 +113,7 @@
Grid.Column="2"
Margin="3,0,0,0"
VerticalAlignment="Center"
ToolTip="Gesetzliche Krankenversicherung">
ToolTip="Alle verfügbaren Krankenkassen, welche für den digitalen Datenaustausch bereit sind und nicht ausgeblendet werden.">
GKV:
</Label>
<uc:PopUpEdit
@@ -294,11 +294,9 @@
Width="370"
Height="250"
Margin="10"
Closed="popup_Closed"
Opened="popup_Opened"
Placement="MousePoint"
StaysOpen="False">
<localSearchView:OrganisationSearchView x:Name="gkvsearchview" SearchMode="OnlyValid" />
<localSearchView:OrganisationSearchView x:Name="gkvsearchview" SearchMode="OnlyValidGkvOrganisations" />
</Popup>
</Grid>
</GroupBox>

View File

@@ -60,6 +60,12 @@ namespace BeWo.View.Detail.Accounting
}
}
public object PopupObjectList
{
get => gkvsearchview.ObjectList;
set => gkvsearchview.ObjectList = value as List<CompactOrganisationDC>;
}
public DateTime FilterStart
{
get => ViewModel.AbrechnungsZeitraumStart.Value;

View File

@@ -0,0 +1,146 @@
<view:BeWoView
x:Class="BeWo.View.Detail.Administration.SoziotherapieSettingsView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:comboboxes="clr-namespace:BeWo.View.Controls.ComboBoxes"
xmlns:core="clr-namespace:BS.Shared.Core;assembly=BS.Shared"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:BeWo.View.Detail.Administration"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:utils="clr-namespace:BeWo.View.Controls.Utils"
xmlns:view="clr-namespace:BeWo.View"
mc:Ignorable="d">
<Grid HorizontalAlignment="Left" IsSharedSizeScope="True">
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<GroupBox
x:Name="groupBoxSozio"
Margin="3"
Header="Soziotherapie"
Style="{StaticResource ObjectEditGroupBox}">
<!-- Kann frei genutzt werden -->
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="g1" />
<ColumnDefinition Width="200" />
</Grid.ColumnDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center"
ToolTip="Wenn kein Ansprechpartner hinterlegt ist, so wird der aktuelle Benutzer als Ansprechpartner verwendet.">
IK Nummer (Leistungserbringer)
</Label>
<TextBox
Grid.Row="0"
Grid.Column="1"
Height="23"
Margin="3"
IsEnabled="{Binding Path=CanEditIKLeistungserbringer}"
Text="{Binding Path=IKLeistungserbringer, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{Binding Path=CanEditIKLeistungserbringerTooltip}"
ToolTipService.ShowOnDisabled="True" />
<Label
Grid.Row="1"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Ansprechpartner
</Label>
<comboboxes:ComboBoxEmployeeSearch
Grid.Row="1"
Grid.Column="1"
Height="24"
Margin="3"
SearchMode="All"
SelectedCompactEmployeeDC="{Binding SoziotherapieAnsprechpartner, Mode=TwoWay}" />
</Grid>
</GroupBox>
<GroupBox
x:Name="groupBoxGkvAnsicht"
Grid.Row="1"
Margin="3"
Header="GKV-Abrechnung Ansicht"
Style="{StaticResource ObjectEditGroupBox}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="g1" />
<ColumnDefinition Width="200" />
</Grid.ColumnDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
<Label.ToolTip>
Einstellung, bei der die Abrechnung erfolgreich digital übertragen wurde und bereit für den postalischen Versand der Urbelege ist.
</Label.ToolTip>
<Label.Content>
"Bereit für Urbelege" Signalfarbe
</Label.Content>
</Label>
<utils:ColorPicker
Grid.Row="0"
Grid.Column="1"
Margin="3"
SelectedColor="{Binding ColorWaitTooLong, Mode=TwoWay}" />
<Label
Grid.Row="1"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
<Label.ToolTip>
Einstellung, bei der 28 Tage vergangen sind, ohne dass Feedback von der Krankenkasse eingegangen ist.
</Label.ToolTip>
<Label.Content>
"Wartezeit überschritten" Signalfarbe
</Label.Content>
</Label>
<utils:ColorPicker
Grid.Row="1"
Grid.Column="1"
Margin="3"
SelectedColor="{Binding ColorSendUrbelege, Mode=TwoWay}" />
<Label
Grid.Row="2"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
'Begleitzettel einzeln drucken' anzeigen
</Label>
<CheckBox
Grid.Row="2"
Grid.Column="1"
Margin="6,3,3,3"
IsChecked="{Binding ShowGkvBzEinzel}" />
<Label
Grid.Row="3"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
'Begleitzettel inkl. Leistungsnachweis' drucken
</Label>
<CheckBox
Grid.Row="3"
Grid.Column="1"
Margin="6,3,3,3"
IsChecked="{Binding ShowGkvBzUrbelege}" />
</Grid>
</GroupBox>
</Grid>
</view:BeWoView>

View File

@@ -0,0 +1,82 @@
using BeWo.ServiceProxy;
using BeWo.View.Master;
using BeWo.ViewModel;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
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;
namespace BeWo.View.Detail.Administration
{
/// <summary>
/// Interaktionslogik für SoziotherapieSettingView.xaml
/// </summary>
public partial class SoziotherapieSettingsView : BeWoView
{
private AdministrationView _Parent;
private MandatorVM _ViewModel;
public SoziotherapieSettingsView(AdministrationView parent)
{
InitializeComponent();
_Parent = parent;
ViewModel = parent.MandatorVM;
}
public override bool IsDirty
{
get { return ViewModel != null && ViewModel.IsDirty; }
}
internal MandatorVM ViewModel
{
get
{
return _ViewModel;
}
set
{
DataContext = value;
_ViewModel = value;
}
}
protected override void Save()
{
var invoiceNumberList = new List<InvoiceNumberDC>();
foreach (var ivm in this.ViewModel.InvoiceNumberList)
{
invoiceNumberList.Add(ivm.CommitToDataContract());
}
ServiceFacade.DoAccountingServiceAsync(
s => s.UpdateInvoiceNumberList(invoiceNumberList),
inl => ServiceFacade.DoOperationsServiceAsync(
s => s.UpdateMandator(this.ViewModel.CommitToDataContract()),
m => this.Dispatch(
delegate
{
var vmList = new List<InvoiceNumberVM>();
foreach (var indc in inl)
{
vmList.Add(new InvoiceNumberVM(indc));
}
_Parent.MandatorVM = new MandatorVM(vmList, m);
BeWoApp.Mandator = m;
})));
}
}
}

View File

@@ -14,6 +14,7 @@
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:r="clr-namespace:BeWo.Security"
xmlns:shared="clr-namespace:BS.Shared;assembly=BS.Shared"
xmlns:t="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns:val="clr-namespace:BeWo.Validation"
@@ -954,10 +955,28 @@
Grid.Row="5"
Grid.Column="2"
Content="{markup:Translate Versichertennummer}" />
<TextBox
Grid.Row="5"
Grid.Column="3"
Height="23"
Margin="3"
Foreground="{Binding Path=InsuranceNumber, Converter={StaticResource Validation2BrushConverter}, ConverterParameter={x:Static shared:ValidationType.CustomerVersichertennummer}}"
Text="{Binding Path=InsuranceNumber, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{Binding Path=InsuranceNumber, Converter={StaticResource Validation2TooltipConverter}, ConverterParameter={x:Static shared:ValidationType.CustomerVersichertennummer}}"
ToolTipService.ShowOnDisabled="True" />
<Label
Grid.Row="6"
Grid.Column="2"
Content="{markup:Translate Versichertenstatus}" />
<TextBox
Grid.Row="6"
Grid.Column="3"
Height="23"
Margin="3"
Foreground="{Binding Path=VersichertenStatus, Converter={StaticResource Validation2BrushConverter}, ConverterParameter={x:Static shared:ValidationType.CustomerVersichertenstatus}}"
Text="{Binding Path=VersichertenStatus, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{Binding Path=VersichertenStatus, Converter={StaticResource Validation2TooltipConverter}, ConverterParameter={x:Static shared:ValidationType.CustomerVersichertenstatus}}"
ToolTipService.ShowOnDisabled="True" />
<Label
x:Name="lblArchiviert"
Grid.Row="7"
@@ -1163,18 +1182,6 @@
Height="23"
Margin="3"
Text="{Binding Path=HealthInsurance, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="5"
Grid.Column="3"
Height="23"
Margin="3"
Text="{Binding Path=InsuranceNumber, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="6"
Grid.Column="3"
Height="23"
Margin="3"
Text="{Binding Path=VersichertenStatus, UpdateSourceTrigger=PropertyChanged}" />
<CheckBox
x:Name="chkArchiviert"
Grid.Row="7"
@@ -3913,6 +3920,6 @@
StaysOpen="False">
<localSearchView:OrganisationSearchView x:Name="personOrganisationsearchview" />
</Popup>
<Border x:Name="popup_content" Margin="0,10,0,-10" />
<Border x:Name="popup_content" Margin="0,10,0,-10" Height="1" Width="1"/>
</Grid>
</localView:BeWoView>

View File

@@ -91,7 +91,7 @@ namespace BeWo.View.Detail
get { return (DefaultBoolean)(Convert.ToInt32(BeWoApp.LoggedOnUser.HasRight(UserRightType.BargeldverwaltungBearbeiten)) + 1); }
}
public static readonly string[] GradDerBehinderungComboBoxQuelle = { "20", "30", "40", "50", "60", "70", "80", "90", "100" };
public static readonly string[] GradDerBehinderungComboBoxQuelle = {"", "20", "30", "40", "50", "60", "70", "80", "90", "100" };
public CustomerView(CustomerVM pCustomerVM)
{

View File

@@ -56,7 +56,12 @@
</Button>
</StackPanel>
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal">
<CheckBox x:Name="checkbox_size" IsChecked="{Binding Path=IsLarge, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Visibility="Hidden">Groß</CheckBox>
<CheckBox
x:Name="checkbox_size"
IsChecked="{Binding Path=IsLarge, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Visibility="Hidden">
Groß
</CheckBox>
</StackPanel>
<TabControl
x:Name="tabcontrol_NotizenKategorien"

View File

@@ -11,7 +11,7 @@
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Focusable="True">
<Grid x:Name="root">
<Grid x:Name="root" IsSharedSizeScope="True">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
@@ -27,37 +27,64 @@
<ColumnDefinition Width="Auto" SharedSizeGroup="g1" />
<ColumnDefinition Width="*" MaxWidth="420" />
</Grid.ColumnDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Name
</Label>
<TextBox
Grid.Row="0"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=Name, UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="1"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
IK Nummer (Leistungserbringer)
</Label>
<TextBox
Grid.Row="1"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=IKLeistungserbringer, UpdateSourceTrigger=PropertyChanged}" />
<GroupBox
Grid.Row="2"
Grid.Row="0"
Grid.Column="0"
Grid.ColumnSpan="2"
Margin="3"
Header="Allgemeine Informationen"
Style="{StaticResource ObjectEditGroupBox}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="g1" />
<ColumnDefinition Width="*" MaxWidth="420" />
</Grid.ColumnDefinitions>
<Label Margin="3" VerticalAlignment="Center">
Name
</Label>
<TextBox
Grid.Row="0"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=Name, UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="1"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Webseite
</Label>
<TextBox
Grid.Row="1"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=Website, UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="2"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Logo
</Label>
<dxe:ImageEdit
x:Name="ImageEdit"
Grid.Row="2"
Grid.Column="1"
MaxHeight="200"
Margin="3"
MouseDoubleClick="Img_OnMouseDoubleClick"
RenderOptions.BitmapScalingMode="HighQuality" />
</Grid>
</GroupBox>
<GroupBox
Grid.Row="1"
Grid.ColumnSpan="2"
Margin="3,20,3,3"
Header="Adresse"
@@ -70,7 +97,7 @@
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="g1" />
<ColumnDefinition Width="150" />
<ColumnDefinition Width="200" />
</Grid.ColumnDefinitions>
<Label
@@ -116,12 +143,101 @@
</Grid>
</GroupBox>
<GroupBox
Grid.Row="3"
Grid.Row="2"
Grid.ColumnSpan="2"
Margin="3,20,3,3"
Header="Einstellungen"
Header="Bankverbindung"
Style="{StaticResource ObjectEditGroupBox}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="g1" />
<ColumnDefinition Width="200" />
</Grid.ColumnDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center"
Visibility="Collapsed">
Konto
</Label>
<TextBox
Grid.Row="0"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=AccountNumber, UpdateSourceTrigger=PropertyChanged}"
Visibility="Collapsed" />
<Label
Grid.Row="1"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center"
Visibility="Collapsed">
BLZ
</Label>
<TextBox
Grid.Row="1"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=BankCode, UpdateSourceTrigger=PropertyChanged}"
Visibility="Collapsed" />
<Label
Grid.Row="2"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Kreditinstitut
</Label>
<TextBox
Grid.Row="2"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=BankName, UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="3"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
IBAN
</Label>
<TextBox
Grid.Row="3"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=IBAN, UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="4"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
BIC
</Label>
<TextBox
Grid.Row="4"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=Bic, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</GroupBox>
<GroupBox
Grid.Row="4"
Grid.ColumnSpan="2"
Margin="3,20,3,3"
Header="Anwendungseinstellungen"
Style="{StaticResource ObjectEditGroupBox}">
<Grid x:Name="EinstellungenGrid">
<Grid.RowDefinitions>
@@ -212,7 +328,7 @@
</GroupBox>
<GroupBox
Grid.Row="4"
Grid.Row="5"
Grid.ColumnSpan="2"
Margin="3,20,3,3"
Header="{markup:Translate Zeiterfassung}"
@@ -334,7 +450,7 @@
Grid.ColumnSpan="2"
Margin="3,20,3,5"
Content="{markup:Translate Arbeitszeit mit BeWoPlaner erfassen}"
IsChecked="{Binding Path=EnableArbeitszeiterfassung}" />
IsChecked="{Binding Path=EnableArbeitszeiterfassung}" Checked="EnableArbeitszeiterfassung_Checked" Unchecked="EnableArbeitszeiterfassung_Checked"/>
<CheckBox
x:Name="EnableAutomaticPauses"
Grid.Row="8"
@@ -374,7 +490,7 @@
</GroupBox>
<GroupBox
Grid.Row="5"
Grid.Row="6"
Grid.ColumnSpan="2"
Margin="3,20,3,3"
Header="Rechnungsnummer"
@@ -476,26 +592,6 @@
</Grid>
</GroupBox>
<GroupBox
x:Name="groupBoxSozio"
Grid.Row="6"
Grid.ColumnSpan="2"
Margin="3,20,3,3"
Header="Soziotherapie"
Style="{StaticResource ObjectEditGroupBox}"
Visibility="Collapsed">
<!-- Kann frei genutzt werden -->
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
</Grid>
</GroupBox>
<GroupBox
x:Name="GroupOwnChatSettings"
Grid.Row="7"

View File

@@ -2,8 +2,12 @@
using System.Collections.Generic;
using System.Windows;
using System.Windows.Documents;
using System.Windows.Input;
using BeWo.Core;
using BeWo.ServiceProxy;
using BeWo.View.Master;
using BeWo.ViewModel;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
@@ -11,12 +15,14 @@ namespace BeWo.View.Detail
{
public partial class MandatorView : BeWoView
{
private MandatorVM _Viewmodel;
private AdministrationView _Parent;
private MandatorVM _ViewModel;
public MandatorView(MandatorVM viewModel)
public MandatorView(AdministrationView parent)
{
InitializeComponent();
ViewModel = viewModel;
_Parent = parent;
ViewModel = parent.MandatorVM;
if (BeWoApp.LoggedOnUser.HasRight(BS.Shared.UserRightType.ChatAdminSettings) && BeWoApp.AppSettings.ShowOwnChatSettings)
{
@@ -38,19 +44,18 @@ namespace BeWo.View.Detail
TextBlockShowWarning.Visibility = Visibility.Collapsed;
SpinEditShowWarning.Visibility = Visibility.Collapsed;
}
if (!BeWoApp.AppSettings.AllowGkvAbrechnung)
else
{
groupBoxSozio.Visibility = Visibility.Collapsed;
SetArbeitszeiterfassungControlsEnabled();
}
ComboZeiteinheit.ItemsSource = new List<String> { "Minuten", "Stunden", "Stunden und Minuten" };
if (viewModel.EinheitZeiterfassung.Equals("1"))
if (ViewModel.EinheitZeiterfassung.Equals("1"))
{
ComboZeiteinheit.SelectedIndex = 1;
}
else if (viewModel.EinheitZeiterfassung.Equals("2"))
else if (ViewModel.EinheitZeiterfassung.Equals("2"))
{
ComboZeiteinheit.SelectedIndex = 2;
}
@@ -59,7 +64,12 @@ namespace BeWo.View.Detail
ComboZeiteinheit.SelectedIndex = 0;
}
if (_ViewModel.Logo.Original is byte[] bytes)
{
ImageEdit.Source = Utils.CreateBitmapImageFromByteArray(bytes);
}
ImageEdit.EditValueChanged += Image_EditValueChanged;
#if DEBUG
try
{
@@ -79,17 +89,17 @@ namespace BeWo.View.Detail
get { return ViewModel != null && ViewModel.IsDirty; }
}
private MandatorVM ViewModel
internal MandatorVM ViewModel
{
get
{
return this._Viewmodel;
return _ViewModel;
}
set
{
this.DataContext = value;
this._Viewmodel = value;
DataContext = value;
_ViewModel = value;
if (ViewModel.InvoiceNumberList.Count > 1)
{
@@ -113,10 +123,11 @@ namespace BeWo.View.Detail
{
invoiceNumberList.Add(ivm.CommitToDataContract());
}
ServiceFacade.DoAccountingServiceAsync(
s => s.UpdateInvoiceNumberList(invoiceNumberList),
inl => ServiceFacade.DoOperationsServiceAsync(
s => s.UpdateMandator(this.ViewModel.CommitToDataContract()),
s => s.UpdateMandator(ViewModel.CommitToDataContract()),
m => this.Dispatch(
delegate
{
@@ -125,7 +136,7 @@ namespace BeWo.View.Detail
{
vmList.Add(new InvoiceNumberVM(indc));
}
this.ViewModel = new MandatorVM(vmList, m);
_Parent.MandatorVM = new MandatorVM(vmList, m);
BeWoApp.Mandator = m;
})));
}
@@ -149,8 +160,31 @@ namespace BeWo.View.Detail
else
{
ViewModel.EinheitZeiterfassung = "0";
}
}
}
private void Img_OnMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
BeWoUtils.ShowImageForm(ImageEdit.Source);
}
void Image_EditValueChanged(object sender, DevExpress.Xpf.Editors.EditValueChangedEventArgs e)
{
_ViewModel.Logo.Original = ImageEdit.EditValue as byte[];
}
private void EnableArbeitszeiterfassung_Checked(object sender, RoutedEventArgs e)
{
SetArbeitszeiterfassungControlsEnabled();
}
private void SetArbeitszeiterfassungControlsEnabled()
{
EnableAutomaticPauses.IsEnabled = EnableArbeitszeiterfassung.IsChecked.HasValue && EnableArbeitszeiterfassung.IsChecked.Value;
EnableRestTimeWarning.IsEnabled = EnableArbeitszeiterfassung.IsChecked.HasValue && EnableArbeitszeiterfassung.IsChecked.Value;
TextBlockShowWarning.IsEnabled = EnableArbeitszeiterfassung.IsChecked.HasValue && EnableArbeitszeiterfassung.IsChecked.Value;
SpinEditShowWarning.IsEnabled = EnableArbeitszeiterfassung.IsChecked.HasValue && EnableArbeitszeiterfassung.IsChecked.Value;
}
}
}

View File

@@ -165,432 +165,433 @@
Header="Details"
IsSelected="True">
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<GroupBox Header="Eigenschaften" Style="{StaticResource ObjectEditGroupBox}">
<Grid x:Name="grid_details">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MaxWidth="300" />
<ColumnDefinition Width="*" MaxWidth="300" />
<ColumnDefinition Width="*" MaxWidth="300" />
</Grid.ColumnDefinitions>
<Grid Grid.ColumnSpan="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<GroupBox Header="Eigenschaften" Style="{StaticResource ObjectEditGroupBox}">
<Grid x:Name="grid_details">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Content="Name" />
<TextBox
Grid.Row="0"
Grid.Column="1"
Width="300"
Height="23"
Margin="10,3,3,3"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Text="{val:ValidationBinding Path=Name,
UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="1"
Grid.Column="0"
Content="{markup:Translate OrganisationAbteilung}" />
<TextBox
Grid.Row="1"
Grid.Column="1"
Width="300"
Height="23"
Margin="10,3,3,3"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Text="{val:ValidationBinding Path=Name2,
UpdateSourceTrigger=PropertyChanged}" />
<Label
x:Name="lblDebitorNumber"
Grid.Row="2"
Content="{markup:Translate Kundennummer}" />
<TextBox
x:Name="txtDebitorNumber"
Grid.Row="2"
Grid.Column="1"
Width="300"
Height="23"
Margin="10,3,3,3"
HorizontalAlignment="Left"
Text="{val:ValidationBinding Path=DebitorNumber,
UpdateSourceTrigger=PropertyChanged}" />
<Label
x:Name="lblGeschaeftspartnernummer"
Grid.Row="3"
Content="{markup:Translate Geschäftspartnernummer}" />
<TextBox
x:Name="txtGeschaeftspartnernummer"
Grid.Row="3"
Grid.Column="1"
Width="300"
Height="23"
Margin="10,3,3,3"
HorizontalAlignment="Left"
Text="{val:ValidationBinding Path=BusinessPartnerId,
UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="4"
Grid.Column="0"
Content="Funktion" />
<uc:NullItemComboBox
x:Name="comboBox_Function"
Grid.Row="4"
Grid.Column="1"
Width="300"
Height="23"
Margin="10,3,3,3"
HorizontalAlignment="Left"
SelectedValue="{Binding Path=Function, Mode=TwoWay}" />
<Label
x:Name="lblArchiviert"
Grid.Row="5"
Grid.Column="0"
Content="Archiviert" />
<CheckBox
x:Name="chkArchiviert"
Grid.Row="5"
Grid.Column="1"
Height="23"
Margin="10,6,3,0"
VerticalAlignment="Stretch"
IsChecked="{Binding Path=IsArchived, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
<GroupBox
Grid.Row="1"
Grid.Column="0"
Margin="0,8,0,0"
Header="Adresse"
Style="{StaticResource ObjectEditGroupBox}">
<Grid HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="label" />
<ColumnDefinition
Width="*"
MinWidth="50"
MaxWidth="200" />
</Grid.ColumnDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Adresszusatz
</Label>
<Label
Grid.Row="1"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Strasse
</Label>
<Label
Grid.Row="2"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Postleitzahl
</Label>
<Label
Grid.Row="3"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Ort
</Label>
<Label
Grid.Row="4"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Postfach
</Label>
<TextBox
Grid.Row="0"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=AddressLine1, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="1"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=Street, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="2"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=PostalCode, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="3"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=Town, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="4"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=POBox, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</GroupBox>
<GroupBox
Grid.Row="1"
Grid.Column="1"
Margin="8,8,0,0"
Header="Rechnungsadresse"
Style="{StaticResource ObjectEditGroupBox}">
<Grid HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="label" />
<ColumnDefinition
Width="*"
MinWidth="50"
MaxWidth="200" />
</Grid.ColumnDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Adresszusatz
</Label>
<Label
Grid.Row="1"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Strasse
</Label>
<Label
Grid.Row="2"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Postleitzahl
</Label>
<Label
Grid.Row="3"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Ort
</Label>
<Label
Grid.Row="4"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Postfach
</Label>
<TextBox
Grid.Row="0"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=InvoiceAddressLine1, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="1"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=InvoiceAddressStreet, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="2"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=InvoiceAddressPostalCode, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="3"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=InvoiceAddressTown, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="4"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=InvoiceAddressPOBox, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</GroupBox>
<GroupBox
Grid.Row="1"
Grid.Column="2"
Margin="8,8,0,0"
HorizontalAlignment="Stretch"
Header="Kontakt"
Style="{StaticResource ObjectEditGroupBox}">
<Grid HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="label" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition
Width="*"
MinWidth="50"
MaxWidth="200" />
</Grid.ColumnDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Telefon
</Label>
<Label
Grid.Row="1"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Fax
</Label>
<Label
Grid.Row="2"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Mail
</Label>
<Label
Grid.Row="3"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Homepage
</Label>
<Label
Grid.Row="4"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center"
Content="{markup:Translate Ansprechpartner}" />
<TextBox
Grid.Row="0"
Grid.Column="1"
Grid.ColumnSpan="2"
Height="23"
Margin="3"
Text="{Binding Path=Phone, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="1"
Grid.Column="1"
Grid.ColumnSpan="2"
Height="23"
Margin="3"
Text="{Binding Path=Fax, UpdateSourceTrigger=PropertyChanged}" />
<Button
Grid.Row="2"
Grid.Column="1"
Height="21"
Margin="3"
Click="EMailButton_OnClick"
Content="*"
FontFamily="Wingdings"
IsEnabled="{Binding Path=EMail, Converter={StaticResource ObjectBoolConverter}}" />
<TextBox
Grid.Row="2"
Grid.Column="2"
Height="23"
Margin="3"
Text="{Binding Path=EMail, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="3"
Grid.Column="1"
Grid.ColumnSpan="2"
Height="23"
Margin="3"
Text="{Binding Path=Website, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="4"
Grid.Column="1"
Grid.ColumnSpan="2"
Height="23"
Margin="3"
Text="{Binding Path=ContactPerson, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</GroupBox>
<GroupBox
Grid.Row="2"
Grid.Column="0"
Grid.ColumnSpan="3"
Width="360"
HorizontalAlignment="Left"
Margin="0,8,0,0"
Header="GKV-Abrechnung"
Style="{StaticResource ObjectEditGroupBox}">
<GroupBox.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\..\Styles\ModernOrangeBlack.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</GroupBox.Resources>
<Grid HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MaxWidth="300" />
<ColumnDefinition Width="*" MaxWidth="300" />
<ColumnDefinition Width="*" MaxWidth="300" />
</Grid.ColumnDefinitions>
<Grid Grid.ColumnSpan="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition
Width="*"
MinWidth="50"
MaxWidth="200" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Content="Name" />
<TextBox
Grid.Row="0"
Grid.Column="1"
Width="300"
Height="23"
Margin="10,3,3,3"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Text="{val:ValidationBinding Path=Name,
UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="1"
Grid.Column="0"
Content="{markup:Translate OrganisationAbteilung}" />
<TextBox
Grid.Row="1"
Grid.Column="1"
Width="300"
Height="23"
Margin="10,3,3,3"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Text="{val:ValidationBinding Path=Name2,
UpdateSourceTrigger=PropertyChanged}" />
<Label
x:Name="lblDebitorNumber"
Grid.Row="2"
Content="{markup:Translate Kundennummer}" />
<TextBox
x:Name="txtDebitorNumber"
Grid.Row="2"
Grid.Column="1"
Width="300"
Height="23"
Margin="10,3,3,3"
HorizontalAlignment="Left"
Text="{val:ValidationBinding Path=DebitorNumber,
UpdateSourceTrigger=PropertyChanged}" />
<Label
x:Name="lblGeschaeftspartnernummer"
Grid.Row="3"
Content="{markup:Translate Geschäftspartnernummer}" />
<TextBox
x:Name="txtGeschaeftspartnernummer"
Grid.Row="3"
Grid.Column="1"
Width="300"
Height="23"
Margin="10,3,3,3"
HorizontalAlignment="Left"
Text="{val:ValidationBinding Path=BusinessPartnerId,
UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="4"
Grid.Column="0"
Content="Funktion" />
<uc:NullItemComboBox
x:Name="comboBox_Function"
Grid.Row="4"
Grid.Column="1"
Width="300"
Height="23"
Margin="10,3,3,3"
HorizontalAlignment="Left"
SelectedValue="{Binding Path=Function, Mode=TwoWay}" />
<Label
x:Name="lblArchiviert"
Grid.Row="5"
Grid.Column="0"
Content="Archiviert" />
<CheckBox
x:Name="chkArchiviert"
Grid.Row="5"
Grid.Column="1"
Height="23"
Margin="10,6,3,0"
VerticalAlignment="Stretch"
IsChecked="{Binding Path=IsArchived, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
<GroupBox
Grid.Row="1"
Grid.Column="0"
Margin="0,8,0,0"
Header="Adresse"
Style="{StaticResource ObjectEditGroupBox}">
<Grid HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="label" />
<ColumnDefinition
Width="*"
MinWidth="50"
MaxWidth="200" />
</Grid.ColumnDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Adresszusatz
</Label>
<Label
Grid.Row="1"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Strasse
</Label>
<Label
Grid.Row="2"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Postleitzahl
</Label>
<Label
Grid.Row="3"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Ort
</Label>
<Label
Grid.Row="4"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Postfach
</Label>
<TextBox
Grid.Row="0"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=AddressLine1, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="1"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=Street, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="2"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=PostalCode, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="3"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=Town, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="4"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=POBox, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</GroupBox>
<GroupBox
Grid.Row="1"
Grid.Column="1"
Margin="8,8,0,0"
Header="Rechnungsadresse"
Style="{StaticResource ObjectEditGroupBox}">
<Grid HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="label" />
<ColumnDefinition
Width="*"
MinWidth="50"
MaxWidth="200" />
</Grid.ColumnDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Adresszusatz
</Label>
<Label
Grid.Row="1"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Strasse
</Label>
<Label
Grid.Row="2"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Postleitzahl
</Label>
<Label
Grid.Row="3"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Ort
</Label>
<Label
Grid.Row="4"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Postfach
</Label>
<TextBox
Grid.Row="0"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=InvoiceAddressLine1, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="1"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=InvoiceAddressStreet, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="2"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=InvoiceAddressPostalCode, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="3"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=InvoiceAddressTown, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="4"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=InvoiceAddressPOBox, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</GroupBox>
<GroupBox
Grid.Row="1"
Grid.Column="2"
Margin="8,8,0,0"
HorizontalAlignment="Stretch"
Header="Kontakt"
Style="{StaticResource ObjectEditGroupBox}">
<Grid HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="label" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition
Width="*"
MinWidth="50"
MaxWidth="200" />
</Grid.ColumnDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Telefon
</Label>
<Label
Grid.Row="1"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Fax
</Label>
<Label
Grid.Row="2"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Mail
</Label>
<Label
Grid.Row="3"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center">
Homepage
</Label>
<Label
Grid.Row="4"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center"
Content="{markup:Translate Ansprechpartner}" />
<TextBox
Grid.Row="0"
Grid.Column="1"
Grid.ColumnSpan="2"
Height="23"
Margin="3"
Text="{Binding Path=Phone, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="1"
Grid.Column="1"
Grid.ColumnSpan="2"
Height="23"
Margin="3"
Text="{Binding Path=Fax, UpdateSourceTrigger=PropertyChanged}" />
<Button
Grid.Row="2"
Grid.Column="1"
Height="21"
Margin="3"
Click="EMailButton_OnClick"
Content="*"
FontFamily="Wingdings"
IsEnabled="{Binding Path=EMail, Converter={StaticResource ObjectBoolConverter}}" />
<TextBox
Grid.Row="2"
Grid.Column="2"
Height="23"
Margin="3"
Text="{Binding Path=EMail, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="3"
Grid.Column="1"
Grid.ColumnSpan="2"
Height="23"
Margin="3"
Text="{Binding Path=Website, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="4"
Grid.Column="1"
Grid.ColumnSpan="2"
Height="23"
Margin="3"
Text="{Binding Path=ContactPerson, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</GroupBox>
<GroupBox
Grid.Row="2"
Grid.Column="0"
Grid.ColumnSpan="3"
Width="360"
Margin="0,8,0,0"
HorizontalAlignment="Left"
Header="GKV-Abrechnung"
Style="{StaticResource ObjectEditGroupBox}">
<GroupBox.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\..\Styles\ModernOrangeBlack.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</GroupBox.Resources>
<Grid HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition
Width="*"
MinWidth="50"
MaxWidth="200" />
</Grid.ColumnDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
VerticalAlignment="Center">
@@ -602,9 +603,10 @@
HorizontalAlignment="Stretch">
<TextBox
Grid.Row="0"
Grid.Column="1"
Text="{Binding Path=IKKrankenkasse, UpdateSourceTrigger=PropertyChanged}" />
Foreground="{Binding Path=IKKrankenkasse, Converter={StaticResource Validation2BrushConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationIKNumber}}"
Text="{Binding Path=IKKrankenkasse, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{Binding Path=IKKrankenkasse, Converter={StaticResource Validation2TooltipConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationIKNumber}}"
ToolTipService.ShowOnDisabled="True" />
</DockPanel>
<Label
Grid.Row="1"
@@ -613,20 +615,23 @@
ToolTip="Abrechnungscode + Tarifkennzeichen. Zum Beispiel: 6901000">
Leistungserbringergruppe
</Label>
<TextBox
Grid.Row="1"
Grid.Column="1"
Foreground="{Binding Path=Leistungserbringergruppe, Converter={StaticResource Validation2BrushConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationLeistungserbringergruppe}}"
Text="{Binding Path=Leistungserbringergruppe, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{Binding Path=Leistungserbringergruppe, Converter={StaticResource Validation2TooltipConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationLeistungserbringergruppe}}"
ToolTipService.ShowOnDisabled="True" />
<Button
x:Name="btn_ik"
Grid.Row="2"
Grid.Column="1"
Click="IKNumber_Button_Click"
Click="button_ik_ermitteln_click"
IsEnabled="{Binding IsIKNumberValid}"
Style="{StaticResource PrimaryButtonSmall}"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}">
Weitere IK's ermitteln
</Button>
<TextBox
Grid.Row="1"
Grid.Column="1"
Text="{Binding Path=Leistungserbringergruppe, UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="3"
Grid.Column="0"
@@ -636,7 +641,10 @@
<TextBox
Grid.Row="3"
Grid.Column="1"
Text="{Binding Path=IKKostentrager, UpdateSourceTrigger=PropertyChanged}" />
Foreground="{Binding Path=IKKostentrager, Converter={StaticResource Validation2BrushConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationIKNumber}}"
Text="{Binding Path=IKKostentrager, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{Binding Path=IKKostentrager, Converter={StaticResource Validation2TooltipConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationIKNumber}}"
ToolTipService.ShowOnDisabled="True" />
<Label
Grid.Row="4"
Grid.Column="0"
@@ -646,7 +654,10 @@
<TextBox
Grid.Row="4"
Grid.Column="1"
Text="{Binding Path=IKDatenannahmestelle, UpdateSourceTrigger=PropertyChanged}" />
Foreground="{Binding Path=IKDatenannahmestelle, Converter={StaticResource Validation2BrushConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationIKNumber}}"
Text="{Binding Path=IKDatenannahmestelle, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{Binding Path=IKDatenannahmestelle, Converter={StaticResource Validation2TooltipConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationIKNumber}}"
ToolTipService.ShowOnDisabled="True" />
<Label
Grid.Row="5"
Grid.Column="0"
@@ -658,9 +669,12 @@
<TextBox
Grid.Row="5"
Grid.Column="1"
Foreground="{Binding Path=BezDatenannahmestelle, Converter={StaticResource Validation2BrushConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationBezDatenannahmestelle}}"
Text="{Binding Path=BezDatenannahmestelle, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{Binding Path=BezDatenannahmestelle, Converter={StaticResource Validation2TooltipConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationBezDatenannahmestelle}}"
ToolTipService.ShowOnDisabled="True"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}" />
<Label
<!--<Label
Grid.Row="6"
Grid.Column="0"
VerticalAlignment="Center"
@@ -671,7 +685,7 @@
Grid.Row="6"
Grid.Column="1"
IsChecked="{Binding Echtverfahren}"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}" />
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}" />-->
<Label
x:Name="label_verfahrensstufe"
Grid.Row="7"
@@ -686,10 +700,37 @@
Grid.Column="1"
Orientation="Horizontal"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}">
<RadioButton GroupName="a" IsChecked="{Binding Path=VerfahrensstufeInt, Converter={StaticResource RadioBoolToIntConverter}, ConverterParameter=0}">Test</RadioButton>
<RadioButton GroupName="a" IsChecked="{Binding Path=VerfahrensstufeInt, Converter={StaticResource RadioBoolToIntConverter}, ConverterParameter=1}">Erprobung</RadioButton>
<RadioButton GroupName="a" IsChecked="{Binding Path=VerfahrensstufeInt, Converter={StaticResource RadioBoolToIntConverter}, ConverterParameter=2}">Echt</RadioButton>
<RadioButton
x:Name="rb_test"
GroupName="a"
IsChecked="{Binding Path=VerfahrensstufeInt, Converter={StaticResource RadioBoolToIntConverter}, ConverterParameter=0}">
Test
</RadioButton>
<RadioButton
x:Name="rb_erpr"
GroupName="a"
IsChecked="{Binding Path=VerfahrensstufeInt, Converter={StaticResource RadioBoolToIntConverter}, ConverterParameter=1}">
Erprobung
</RadioButton>
<RadioButton
x:Name="rb_echt"
GroupName="a"
IsChecked="{Binding Path=VerfahrensstufeInt, Converter={StaticResource RadioBoolToIntConverter}, ConverterParameter=2}">
Echt
</RadioButton>
</StackPanel>
<Label
Grid.Row="8"
Grid.Column="0"
VerticalAlignment="Center"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}">
Ausblenden
</Label>
<CheckBox
Grid.Row="8"
Grid.Column="1"
IsChecked="{Binding GkvAusblenden, UpdateSourceTrigger=PropertyChanged}"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}" />
</Grid>
</GroupBox>
<GroupBox

View File

@@ -1,4 +1,5 @@
using System;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
@@ -22,35 +23,35 @@ using DevExpress.Xpf.Grid;
namespace BeWo.View.Detail
{
public partial class OrganisationView
{
private OrganisationVM _ViewModel;
public partial class OrganisationView
{
private OrganisationVM _ViewModel;
private GridControl grid_GroupBoxPersonGrid;
private GridControl grid_GroupBoxPersonGrid;
public OrganisationView(OrganisationVM pOrganisationVM)
{
InitializeComponent();
ViewModel = pOrganisationVM;
public OrganisationView(OrganisationVM pOrganisationVM)
{
InitializeComponent();
ViewModel = pOrganisationVM;
if (pOrganisationVM.VarFields == null || pOrganisationVM.VarFields.VMList.Count == 0)
{
tabitem_varFields.Visibility = Visibility.Collapsed;
}
tabitem_costbearer.Visibility = BeWoApp.LoggedOnUser.HasRight(UserRightType.OrganisationView_AllowEditCostBearer) ? Visibility.Visible : Visibility.Collapsed;
if (BeWoApp.Mandator != null && BeWoApp.Mandator.AllowSbd)
{
tabitem_schuldienst.Visibility = Visibility.Visible;
}
else
{
tabitem_schuldienst.Visibility = Visibility.Collapsed;
}
tabitem_costbearer.Visibility = BeWoApp.LoggedOnUser.HasRight(UserRightType.OrganisationView_AllowEditCostBearer) ? Visibility.Visible : Visibility.Collapsed;
if (BeWoApp.Mandator != null && BeWoApp.Mandator.AllowSbd)
{
tabitem_schuldienst.Visibility = Visibility.Visible;
}
else
{
tabitem_schuldienst.Visibility = Visibility.Collapsed;
}
comboBox_Function.ItemsSource = _ViewModel.Functions;
comboBox_Function.ItemsSource = _ViewModel.Functions;
Combobox_Rolle.ItemsSource = _ViewModel.RoleInOrganisations;
Combobox_Rolle.ItemsSource = _ViewModel.RoleInOrganisations;
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Organisation_AllowArchiving))
{
@@ -61,288 +62,300 @@ namespace BeWo.View.Detail
{
tabitem_documents.Visibility = Visibility.Collapsed;
}
#if !DEBUG
label_verfahrensstufe.Visibility = Visibility.Collapsed;
radiobuttons_verfahrensstufe.Visibility = Visibility.Collapsed;
#endif
}
public event EventHandler<EventArgs<OrganisationVM>> OrganisationSavedOrUpdated;
public override bool IsDirty
{
get
{
return ViewModel != null && ViewModel.IsDirty;
}
}
public override string Title
{
get
{
return "Organisationen";
}
}
internal OrganisationVM ViewModel
{
get
{
return _ViewModel;
}
set
{
_ViewModel = value;
DataContext = value;
if (tabitem_schuldienst.Content != null)
{
if (tabitem_schuldienst.Content is StundenplanView view)
{
view.ViewModel = value.Arbeitszeiten;
view.RefreshView();
}
}
}
}
protected override UserRightType[] GetSaveDemands()
{
return ViewModel.IsNew ? new[] { UserRightType.CreateAll, UserRightType.OrganisationView_Create } : new[] { UserRightType.EditAll, UserRightType.OrganisationView_Edit };
}
protected override void Save()
{
var lDC = ViewModel.CommitToDataContract();
if (ViewModel.IsNew)
{
IsDoneWithInsertOrUpdate = false;
ServiceFacade.DoCustomerServiceAsync(s => s.InsertNewOrganisation(lDC), ReloadViewModel);
}
else
{
IsDoneWithInsertOrUpdate = false;
ServiceFacade.DoCustomerServiceAsync(s => s.UpdateOrganisation(lDC), ReloadViewModel);
}
Cache.GetInstance().ClearSupportConceptTree();
BeWoApp.MainControl.ResetView(UIContext.Organisation);
}
private void ReloadViewModel(long pOid)
{
VMFactory.CreateOrganisationVMAsync(
pOid,
cb => this.Dispatch(
delegate
{
if (OrganisationSavedOrUpdated != null)
{
OrganisationSavedOrUpdated(this, new EventArgs<OrganisationVM>(cb));
}
ViewModel = cb;
if (ModalEditViewUpdateCallback != null)
{
ModalEditViewUpdateCallback();
}
}));
IsDoneWithInsertOrUpdate = true;
}
public void ReloadViewModel()
{
if (ViewModel.DataContract.OrganisationOid.HasValue)
{
ReloadViewModel(ViewModel.DataContract.OrganisationOid.Value);
}
}
private void bt_addQualificationRate_Click(object sender, RoutedEventArgs e)
{
var stand = ViewModel.CostRatePeriods.GetLatestRate(CostRatePeriodType.HourlyRate);
if (stand != null)
{
ViewModel.CostRatePeriods.NewVM.CostRateValue = stand.CostRateValue;
}
ViewModel.CostRatePeriods.NewVM.ValueListEntry = (ValueListEntryDC) cb_qualifications.SelectedItem;
ViewModel.CostRatePeriods.NewVM.CostRateType = CostRatePeriodType.HourlyRate;
ViewModel.CostRatePeriods.AddNewVMToList();
}
private void button_deleteCostRatePeriodGroup_Click(object sender, RoutedEventArgs e)
{
var valueListEntry = (sender as Button).Tag as ValueListEntryDC;
ViewModel.CostRatePeriods.VMList.RemoveRange(i => i.ValueListEntry != null && i.ValueListEntry.ValueListEntryOid.Equals(valueListEntry.ValueListEntryOid));
}
private void tabitem_documents_Selected(object sender, RoutedEventArgs e)
{
if (ViewModel.IsNew)
{
MessageBox.Show("Bevor zu einem Datensatz Dokumente hinterlegt werden können, muss dieser gespeichert werden.", "Erst speichern bitte", MessageBoxButton.OK, MessageBoxImage.Information);
return;
}
if (tabitem_documents.Content == null)
{
tabitem_documents.Content = new BeWoFileView(TableID.Organisation, ViewModel.DataContract.OrganisationOid.Value);
}
}
private void TabItemsPersons_Selected(object sender, RoutedEventArgs e)
{
if (grid_GroupBoxPersonGrid == null)
{
grid_GroupBoxPersonGrid = gridroot.Resources["datagrid_PersonRelation"] as GridControl;
GroupBoxPersonGrid.Content = grid_GroupBoxPersonGrid;
}
}
private void Button_deleteAnsprechpartnerClick(object sender, RoutedEventArgs e)
{
var vm = grid_GroupBoxPersonGrid.GetCurrentValue<OrganisationPersonRelationVM>();
if (MessageBox.Show(String.Format("Möchten Sie " + Translator.Translate("den gewählten Ansprechpartner") + " '{0}, {1}' wirklich löschen?", vm.Person.LastName, vm.Person.FirstName) , "Löschen",
MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
ViewModel.PersonRelations.VMList.Remove(vm);
BeWoWpfUtils.RefreshDXGrid(grid_GroupBoxPersonGrid);
ServiceFacade.DoOperationsServiceSync(s =>
s.DeletePerson2OrganisationRelation(vm.DataContract.Organisation2PersonOid.Value));
}
}
private void TableView_OnRowDoubleClick(object sender, RowDoubleClickEventArgs e)
{
var grid = (GridControl) gridroot.Resources["datagrid_PersonRelation"];
var selectedPerson = (grid.GetRow(e.HitInfo.RowHandle) as OrganisationPersonRelationVM).Person;
if (selectedPerson == null || !BeWoApp.LoggedOnUser.HasRight(UserRightType.PersonView_View))
return;
VMFactory.CreatePersonVMAsync(selectedPerson.PersonOid,
cb => this.Dispatch(
() => BeWoUtils.OpenModalViewWindow<PersonVM, PersonDC, OrganisationView>(cb, this, () => this.Dispatch(
() => BeWoUtils.UpdateAllViews(selectedPerson)), personSavedOrUpdated: (s, args) => this.Dispatch(delegate { }))));
}
private void EMailButton_OnClick(object sender, RoutedEventArgs e)
{
BeWoUtils.OpenMailClient(ViewModel.EMail);
}
private void Hyperlink_OnRequestNavigate(object sender, RequestNavigateEventArgs e)
{
BeWoUtils.OpenMailClient(e.Uri.ToString());
}
private void CreateNewAnsprechpartner_OnClick(object sender, RoutedEventArgs e)
{
if (ValidationTrigger.Validate(groupbox_newOrganisationAnsprechpartner) && pes != null)
{
var mail = textbox_mail.Text;
var fax = textbox_fax.Text;
var phone = textbox_phone.Text;
var notice = textbox_notice.Text;
var ldc = ViewModel.CommitToDataContract();
if (pes.PersonOid != 0)
{
//ViewModel.PersonRelations.AddNewVMToList();
ServiceFacade.DoOperationsServiceSync(s => s.CreateNewPerson2OrganisationRelation(ldc.OrganisationOid.Value, (ValueListEntryDC) Combobox_Rolle.SelectedItem, pes.PersonOid, mail, fax, phone.ToString(), notice.ToString()));
Save();
}
textbox_mail.Text = "";
textbox_fax.Text = "";
textbox_phone.Text = "";
textbox_notice.Text = "";
//ReloadViewModel();
pes = null;
}
}
CompactPersonDC pes = new CompactPersonDC();
private void popupedit_Person_PopUpClick(object sender, RoutedEventArgs e)
{
personsearchview.ItemSelected += personsearchview_EnvironmentPersonSelected;
popup_person.IsOpen = true;
}
private void personsearchview_EnvironmentPersonSelected(object sender, EventArgs<CompactPersonDC> e)
{
popup_person.IsOpen = false;
personsearchview.ItemSelected -= personsearchview_EnvironmentPersonSelected;
pes = e.Data;
popupedit_environmentPersonSearch.Text = pes.FirstName +" "+ pes.LastName;
popupedit_environmentPersonSearch.Focus();
}
private void tabitem_SchulDienst_Selected(object sender, RoutedEventArgs e)
{
if (GridSBD.Children.Count == 0)
{
var sp = new StundenplanView(ViewModel.Arbeitszeiten, Translator.Translate("OrganisationStundenplan"));
Grid.SetRow(sp, 0);
GridSBD.Children.Add(sp);
var ov = new SbdOrganisationView(ViewModel.Feiertage);
ov.Margin = new Thickness(0, 10, 0, 0);
Grid.SetRow(ov, 1);
GridSBD.Children.Add(ov);
}
}
private void IKNumber_Button_Click(object sender, RoutedEventArgs e)
{
var req = new GkvAbrechnungGetIKRequestDC();
req.IKKrankenkasse = ViewModel.IKKrankenkasse;
req.Leistungserbringergruppe = ViewModel.Leistungserbringergruppe;
ServiceFacade.DoAccountingServiceAsync(x => x.SendGetIKRequest(req), cb => Dispatcher.Invoke(() => IKRequestCallback(req, cb)));
}
private void IKRequestCallback(GkvAbrechnungGetIKRequestDC req, GkvAbrechnungGetIKResponseDC response)
public event EventHandler<EventArgs<OrganisationVM>> OrganisationSavedOrUpdated;
public override bool IsDirty
{
if(response is null || !response.Success)
get
{
MessageBox.Show($"Interner Serverfehler.", "Fehler");
return;
}
return ViewModel != null && ViewModel.IsDirty;
}
}
public override string Title
{
get
{
return "Organisationen";
}
}
internal OrganisationVM ViewModel
{
get
{
return _ViewModel;
}
set
{
_ViewModel = value;
DataContext = value;
if (tabitem_schuldienst.Content != null)
{
if (tabitem_schuldienst.Content is StundenplanView view)
{
view.ViewModel = value.Arbeitszeiten;
view.RefreshView();
}
}
}
}
protected override UserRightType[] GetSaveDemands()
{
return ViewModel.IsNew ? new[] { UserRightType.CreateAll, UserRightType.OrganisationView_Create } : new[] { UserRightType.EditAll, UserRightType.OrganisationView_Edit };
}
protected override void Save()
{
var lDC = ViewModel.CommitToDataContract();
if (ViewModel.IsNew)
{
IsDoneWithInsertOrUpdate = false;
ServiceFacade.DoCustomerServiceAsync(s => s.InsertNewOrganisation(lDC), ReloadViewModel);
}
else
{
IsDoneWithInsertOrUpdate = false;
ServiceFacade.DoCustomerServiceAsync(s => s.UpdateOrganisation(lDC), ReloadViewModel);
}
Cache.GetInstance().ClearSupportConceptTree();
BeWoApp.MainControl.ResetView(UIContext.Organisation);
}
private void ReloadViewModel(long pOid)
{
VMFactory.CreateOrganisationVMAsync(
pOid,
cb => this.Dispatch(
delegate
{
if (OrganisationSavedOrUpdated != null)
{
OrganisationSavedOrUpdated(this, new EventArgs<OrganisationVM>(cb));
}
ViewModel = cb;
if (ModalEditViewUpdateCallback != null)
{
ModalEditViewUpdateCallback();
}
}));
IsDoneWithInsertOrUpdate = true;
}
public void ReloadViewModel()
{
if (ViewModel.DataContract.OrganisationOid.HasValue)
{
ReloadViewModel(ViewModel.DataContract.OrganisationOid.Value);
}
}
private void bt_addQualificationRate_Click(object sender, RoutedEventArgs e)
{
var stand = ViewModel.CostRatePeriods.GetLatestRate(CostRatePeriodType.HourlyRate);
if (stand != null)
{
ViewModel.CostRatePeriods.NewVM.CostRateValue = stand.CostRateValue;
}
ViewModel.CostRatePeriods.NewVM.ValueListEntry = (ValueListEntryDC)cb_qualifications.SelectedItem;
ViewModel.CostRatePeriods.NewVM.CostRateType = CostRatePeriodType.HourlyRate;
ViewModel.CostRatePeriods.AddNewVMToList();
}
private void button_deleteCostRatePeriodGroup_Click(object sender, RoutedEventArgs e)
{
var valueListEntry = (sender as Button).Tag as ValueListEntryDC;
ViewModel.CostRatePeriods.VMList.RemoveRange(i => i.ValueListEntry != null && i.ValueListEntry.ValueListEntryOid.Equals(valueListEntry.ValueListEntryOid));
}
private void tabitem_documents_Selected(object sender, RoutedEventArgs e)
{
if (ViewModel.IsNew)
{
MessageBox.Show("Bevor zu einem Datensatz Dokumente hinterlegt werden können, muss dieser gespeichert werden.", "Erst speichern bitte", MessageBoxButton.OK, MessageBoxImage.Information);
return;
}
if (tabitem_documents.Content == null)
{
tabitem_documents.Content = new BeWoFileView(TableID.Organisation, ViewModel.DataContract.OrganisationOid.Value);
}
}
private void TabItemsPersons_Selected(object sender, RoutedEventArgs e)
{
if (grid_GroupBoxPersonGrid == null)
{
grid_GroupBoxPersonGrid = gridroot.Resources["datagrid_PersonRelation"] as GridControl;
GroupBoxPersonGrid.Content = grid_GroupBoxPersonGrid;
}
}
private void Button_deleteAnsprechpartnerClick(object sender, RoutedEventArgs e)
{
var vm = grid_GroupBoxPersonGrid.GetCurrentValue<OrganisationPersonRelationVM>();
if (MessageBox.Show(String.Format("Möchten Sie " + Translator.Translate("den gewählten Ansprechpartner") + " '{0}, {1}' wirklich löschen?", vm.Person.LastName, vm.Person.FirstName), "Löschen",
MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
ViewModel.PersonRelations.VMList.Remove(vm);
BeWoWpfUtils.RefreshDXGrid(grid_GroupBoxPersonGrid);
ServiceFacade.DoOperationsServiceSync(s =>
s.DeletePerson2OrganisationRelation(vm.DataContract.Organisation2PersonOid.Value));
}
}
private void TableView_OnRowDoubleClick(object sender, RowDoubleClickEventArgs e)
{
var grid = (GridControl)gridroot.Resources["datagrid_PersonRelation"];
var selectedPerson = (grid.GetRow(e.HitInfo.RowHandle) as OrganisationPersonRelationVM).Person;
if (selectedPerson == null || !BeWoApp.LoggedOnUser.HasRight(UserRightType.PersonView_View))
return;
VMFactory.CreatePersonVMAsync(selectedPerson.PersonOid,
cb => this.Dispatch(
() => BeWoUtils.OpenModalViewWindow<PersonVM, PersonDC, OrganisationView>(cb, this, () => this.Dispatch(
() => BeWoUtils.UpdateAllViews(selectedPerson)), personSavedOrUpdated: (s, args) => this.Dispatch(delegate { }))));
}
private void EMailButton_OnClick(object sender, RoutedEventArgs e)
{
BeWoUtils.OpenMailClient(ViewModel.EMail);
}
private void Hyperlink_OnRequestNavigate(object sender, RequestNavigateEventArgs e)
{
BeWoUtils.OpenMailClient(e.Uri.ToString());
}
private void CreateNewAnsprechpartner_OnClick(object sender, RoutedEventArgs e)
{
if (ValidationTrigger.Validate(groupbox_newOrganisationAnsprechpartner) && pes != null)
{
var mail = textbox_mail.Text;
var fax = textbox_fax.Text;
var phone = textbox_phone.Text;
var notice = textbox_notice.Text;
var ldc = ViewModel.CommitToDataContract();
if (pes.PersonOid != 0)
{
//ViewModel.PersonRelations.AddNewVMToList();
ServiceFacade.DoOperationsServiceSync(s => s.CreateNewPerson2OrganisationRelation(ldc.OrganisationOid.Value, (ValueListEntryDC)Combobox_Rolle.SelectedItem, pes.PersonOid, mail, fax, phone.ToString(), notice.ToString()));
Save();
}
textbox_mail.Text = "";
textbox_fax.Text = "";
textbox_phone.Text = "";
textbox_notice.Text = "";
//ReloadViewModel();
pes = null;
}
}
CompactPersonDC pes = new CompactPersonDC();
private void popupedit_Person_PopUpClick(object sender, RoutedEventArgs e)
{
personsearchview.ItemSelected += personsearchview_EnvironmentPersonSelected;
popup_person.IsOpen = true;
}
private void personsearchview_EnvironmentPersonSelected(object sender, EventArgs<CompactPersonDC> e)
{
popup_person.IsOpen = false;
personsearchview.ItemSelected -= personsearchview_EnvironmentPersonSelected;
pes = e.Data;
popupedit_environmentPersonSearch.Text = pes.FirstName + " " + pes.LastName;
popupedit_environmentPersonSearch.Focus();
}
private void tabitem_SchulDienst_Selected(object sender, RoutedEventArgs e)
{
if (GridSBD.Children.Count == 0)
{
var sp = new StundenplanView(ViewModel.Arbeitszeiten, Translator.Translate("OrganisationStundenplan"));
Grid.SetRow(sp, 0);
GridSBD.Children.Add(sp);
var ov = new SbdOrganisationView(ViewModel.Feiertage);
ov.Margin = new Thickness(0, 10, 0, 0);
Grid.SetRow(ov, 1);
GridSBD.Children.Add(ov);
}
}
private void button_ik_ermitteln_click(object sender, RoutedEventArgs e)
{
var req = new GkvAbrechnungGetIKRequestDC();
req.OrganisationOid = ViewModel.DataContract.OrganisationOid;
req.IKKrankenkasse = ViewModel.IKKrankenkasse;
req.Leistungserbringergruppe = ViewModel.Leistungserbringergruppe;
ServiceFacade.DoAccountingServiceAsync(x => x.SendGetIKRequest(req), cb => Dispatcher.Invoke(() => IKRequestCallback(req, cb)));
}
private void IKRequestCallback(GkvAbrechnungGetIKRequestDC req, GkvAbrechnungGetIKResponseDC response)
{
if (response is null || !response.Success)
{
MessageBox.Show($"Interner Serverfehler.", "Fehler");
return;
}
if (!response.Gefunden)
{
MessageBox.Show($"Für die Organisation mit dem IK \"{req.IKKrankenkasse}\" und Leistungserbringergruppe \"{req.Leistungserbringergruppe}\" konnte keine Datenannahmestelle gefunden werden. " +
$"Bitte informieren Sie sich bei der Krankenkasse, ob zum elektronischen Datenaustausch " +
$"eine seperate Anmeldung benötigt wird.", "Fehler");
return;
MessageBox.Show($"Für die Organisation mit dem IK \"{req.IKKrankenkasse}\" und Leistungserbringergruppe \"{req.Leistungserbringergruppe}\" " +
$"konnte keine Datenannahmestelle gefunden werden. Wenn Sie dennoch den elektronischen Datenaustausch mit der Krankenkasse " +
$"durchführen möchten, informieren Sie sich bitte bei der Krankenkasse, ob zum elektronischen Datenaustausch eine seperate " +
$"Anmeldung benötigt wird.", "Fehler");
return;
}
ViewModel.BezDatenannahmestelle = response.BezDatenannahmestelle;
ViewModel.IKKostentrager = response.IKKostentrager;
ViewModel.IKDatenannahmestelle = response.IKDatenannahmestelle;
if (response.BereitsEnthalten)
{
var orgas = response.BereitsEnthaltenBei.Select(x => $"\"{x}\"");
var orga_str = response.BereitsEnthaltenBei.Count == 1
? $"der Organisation {orgas.First()}"
: $"den Organisationen {string.Join(",", orgas.ToArray())}";
var title = "Doppeltes IK Krankenkasse gefunden";
var msg = $"Das eingegebene IK der Krankenkasse \"{req.IKKrankenkasse}\" wurde bereits bei {orga_str} hinterlegt. Eine fehlerhafte Benennung der IKs führt zu einer fehlerhaften Weiterleitung Ihrer Daten. Möchten Sie fortfahren?";
CommandManager.InvalidateRequerySuggested();
}
var result = MessageBox.Show(msg, title, MessageBoxButton.OKCancel);
if (result != MessageBoxResult.OK)
return;
}
ViewModel.BezDatenannahmestelle = response.BezDatenannahmestelle;
ViewModel.IKKostentrager = response.IKKostentrager;
ViewModel.IKDatenannahmestelle = response.IKDatenannahmestelle;
CommandManager.InvalidateRequerySuggested();
}
}
}

View File

@@ -74,7 +74,7 @@
/>
</dxg:GridControl.View>
<dxg:GridControl.Columns>
<dxg:GridColumn FieldName="GoalEntry" Header="Ziel" ReadOnly="True" MinWidth="60" Width="300" />
<dxg:GridColumn FieldName="GoalEntry.DisplayName" Header="Ziel" ReadOnly="True" MinWidth="60" Width="300" />
<dxg:GridColumn FieldName="RatingType" Header="Bewertung" Width="300" x:Name="ColumnRatingType">
<dxg:GridColumn.EditSettings>
<dxe:ComboBoxEditSettings x:Name="ColumnRatingTypeComboBox"/>

View File

@@ -9,7 +9,11 @@ namespace BeWo.View.Detail.Report
{
public partial class SupportConceptAnalysisListViewItem : UserControl
{
public static readonly DependencyProperty OverviewItemProperty = DependencyProperty.Register("OverviewItem", typeof(KeyValuePair<string, List<SupportConceptOverviewDC>>), typeof(SupportConceptAnalysisListViewItem), new UIPropertyMetadata(new KeyValuePair<string, List<SupportConceptOverviewDC>>(), (s, e) => ((SupportConceptAnalysisListViewItem)s).DataContext = e.NewValue));
public static readonly DependencyProperty OverviewItemProperty = DependencyProperty.Register("OverviewItem",
typeof(KeyValuePair<string, List<SupportConceptOverviewDC>>),
typeof(SupportConceptAnalysisListViewItem),
new UIPropertyMetadata(new KeyValuePair<string, List<SupportConceptOverviewDC>>(),
(s, e) => ((SupportConceptAnalysisListViewItem)s).DataContext = e.NewValue));
public SupportConceptAnalysisListViewItem()
{

View File

@@ -420,7 +420,7 @@
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="23" />
<RowDefinition Height="25" />
</Grid.RowDefinitions>
<TextBlock Text="Details" Margin="0 1"
VerticalAlignment="Bottom"
@@ -522,9 +522,10 @@
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="23" />
<RowDefinition Height="25" />
</Grid.RowDefinitions>
<TextBlock Text="{markup:Translate Bewilligungen}" TextElement.FontSize="16"
VerticalAlignment="Bottom"
@@ -532,9 +533,13 @@
TextElement.FontFamily="Microsoft Sans Serif"
Margin="0 1"
/>
<Button Margin="5,0,0,0" x:Name="button_addApprovalPeriod" Tag="{Binding}"
<StackPanel Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Stretch" Margin="5,0,3,0">
<Label Content="Sortierung:" />
<ComboBox Height="23" Loaded="SortComboBox_Loaded" Tag="{Binding}" VerticalAlignment="Top" MinWidth="180" ItemsSource="{Binding SortItems}" SelectedIndex="{Binding SelectedSortIndex}" SelectionChanged="SortComboBox_SelectionChanged"/>
</StackPanel>
<Button Margin="5,0,0,0" x:Name="button_addApprovalPeriod" Tag="{Binding}"
Click="button_addApprovalPeriod_Click"
HorizontalAlignment="Center" Grid.Column="1"
HorizontalAlignment="Center" Grid.Column="2"
Width="21" Height="21" VerticalAlignment="Top">
<Grid Width="18" HorizontalAlignment="Center"
VerticalAlignment="Center">
@@ -560,7 +565,7 @@
</GroupBox.Header>
<ListView x:Name="listViewCostBearer" Grid.Row="1"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ItemsSource="{Binding ApprovalPeriodList.VMList}"
ItemsSource="{Binding SortedVMList}"
Background="Transparent" BorderBrush="Transparent"
HorizontalAlignment="Left">
<ListView.ItemContainerStyle>

View File

@@ -246,6 +246,20 @@ namespace BeWo.View.Detail
#region Public Methods
//private void InitSortCombo(ComboBox cb)
//{
// var list = new List<String>();
// list.Add("aufsteigend");
// list.Add("absteigend");
// cb.ItemsSource = list;
// cb.SelectedIndex = BeWoApp.AppSettings.LastBewilligungSortOrder;
//}
public override void ModalPopUpCloseInvoked()
{
this.MainControl.CloseCurrentPopUp();
@@ -1992,29 +2006,33 @@ namespace BeWo.View.Detail
{
foreach (var g in goals)
{
if (!g.ValueListEntryOid.HasValue && g.ParentOid.HasValue)
if (!g.ValueListEntryOid.HasValue)
{
var parent = FindGoalTreeItem(ViewModel.CombinedGoalTree, g.ParentOid.Value);
if (parent != null)
if (g.Parent != null)
{
ViewModel.AddTreeItem(parent, g.Type, g.TypeDescription, "", "", null);
var parent = FindGoalTreeItem(ViewModel.CombinedGoalTree, g.Parent.TypeDescription);
if (parent != null)
{
ViewModel.AddTreeItem(parent, g.Type, g.TypeDescription, "", "", null);
}
}
}
}
}
private SupportConceptGoalTreeItem FindGoalTreeItem(IList<SupportConceptGoalTreeItem> treeItems, long oid)
private SupportConceptGoalTreeItem FindGoalTreeItem(IList<SupportConceptGoalTreeItem> treeItems, String ziel)
{
if (treeItems != null)
{
foreach (var item in treeItems)
{
if (item.GoalEntryVM.DataContract.ValueListEntryOid == oid)
if (item.GoalEntryVM.Description == ziel)
{
return item;
}
var p = FindGoalTreeItem(item.Items, oid);
var p = FindGoalTreeItem(item.Items, ziel);
if (p != null)
{
return p;
@@ -2023,6 +2041,63 @@ namespace BeWo.View.Detail
}
return null;
}
private void SortComboBox_Loaded(object sender, RoutedEventArgs e)
{
var cb = sender as ComboBox;
if (cb != null)
{
//InitSortCombo(cb);
}
}
private void SortComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var cb = sender as ComboBox;
//if (cb != null)
//{
var cb2 = e.OriginalSource as DependencyObject;
var sp2 = VisualTreeHelper.GetParent(cb2);
//Finde ListView
var sp = cb.Parent as StackPanel;
if (sp2 == sp)
{
int test = 0;
}
var g = sp.Parent as Grid;
var gb = g.Parent as GroupBox;
var lv = gb.Content as ListView;
//lv.ItemsSource = null;
var c2s = cb.Tag as SupportConceptCostBearerRelVM;
//var list = lv.ItemsSource as BindingList<SupportConceptApprovalPeriodVM>;
//lv.ItemsSource = null;
//if (cb.SelectedIndex == 0)
//{
// list.Sort((a, b) => a.StartDate.HasValue ? a.StartDate.Value.CompareTo(b.StartDate) : 0);
//}
//else
//{
// list.Sort((a, b) => b.StartDate.HasValue ? b.StartDate.Value.CompareTo(a.StartDate) : 0);
//}
//list.Sort((a, b) => b.StartDate.HasValue ? b.StartDate.Value.CompareTo(a.StartDate) : 0);
//lv.Items.SortDescriptions.Add(new SortDescription { PropertyName = "StartDate", Direction = ListSortDirection.Descending });
//lv.ItemsSource = c2s.ApprovalPeriodList.VMList;
//lv.ItemsSource.RaisePropertyChanged
//BeWoApp.AppSettings.LastBewilligungSortOrder = cb.SelectedIndex;
BeWoApp.SaveAppSettings();
//}
}
}
public class ValueListEntryTypeToColorConverter : IValueConverter
@@ -2044,4 +2119,6 @@ namespace BeWo.View.Detail
throw new NotImplementedException();
}
}
}

View File

@@ -94,40 +94,43 @@ namespace BeWo.View.Detail
private List<TableObject> GetListForYear(List<AbwesenheitsInformationDC> information)
{
List<TableObject> tableObjects = new List<TableObject>();
var absencetimes = ServiceFacade.DoEmployeeServiceSync(s => s.GetAllEmployeeAbsenceTimesForYear(Information[0].Year)); // Prüfen, ob z.B. 27.12.2020 - 05.01.2021 drin wäre
List<long?> empOids = new List<long?>();
foreach (var info in information)
empOids.Add(info.Employee.EmployeeOid);
var dictUrlaub = ServiceFacade.DoEmployeeServiceSync(s => s.BerechneAnzEinerAbwesenheitFuerMehrereMitarbeiter(empOids, information[0].Year, "urlaub"));
var dictKrankheit = ServiceFacade.DoEmployeeServiceSync(s => s.BerechneAnzEinerAbwesenheitFuerMehrereMitarbeiter(empOids, information[0].Year, "krank"));
foreach (var info in information)
if (information != null && information.Count > 0)
{
decimal anzGeschenkteTage = 0;
foreach (var eintrag in info.GeschenkteUrlaubstage)
var absencetimes = ServiceFacade.DoEmployeeServiceSync(s => s.GetAllEmployeeAbsenceTimesForYear(Information[0].Year)); // Prüfen, ob z.B. 27.12.2020 - 05.01.2021 drin wäre
List<long?> empOids = new List<long?>();
foreach (var info in information)
empOids.Add(info.Employee.EmployeeOid);
var dictUrlaub = ServiceFacade.DoEmployeeServiceSync(s => s.BerechneAnzEinerAbwesenheitFuerMehrereMitarbeiter(empOids, information[0].Year, "urlaub"));
var dictKrankheit = ServiceFacade.DoEmployeeServiceSync(s => s.BerechneAnzEinerAbwesenheitFuerMehrereMitarbeiter(empOids, information[0].Year, "krank"));
foreach (var info in information)
{
anzGeschenkteTage += eintrag.AnzahlTage;
decimal anzGeschenkteTage = 0;
foreach (var eintrag in info.GeschenkteUrlaubstage)
{
anzGeschenkteTage += eintrag.AnzahlTage;
}
TableObject to = new TableObject()
{
Name = info.Employee.LastNameFirstName,
ResturlaubVorjahr = string.Format("{0:0.00}", info.Employee.Urlaubskonto.ResturlaubVorjahrTotal),
VerfallenerResturlaub = string.Format("{0:0.00}", info.Employee.Urlaubskonto.VerfallenerUrlaub),
Urlaubsanspruch = string.Format("{0:0.00}", info.Employee.Urlaubskonto.Urlaubsanspruch - anzGeschenkteTage),
Resturlaub = string.Format("{0:0.00}", info.Employee.Urlaubskonto.Resturlaub),
TageKrankheit = string.Format("{0:0.00}", dictKrankheit.First(d => d.Key == info.Employee.EmployeeOid).Value),
TageUrlaub = string.Format("{0:0.00}", dictUrlaub.First(d => d.Key == info.Employee.EmployeeOid).Value),
GeschenkteUrlaubstage = string.Format("{0:0.00}", anzGeschenkteTage)
};
//TageKrankheit und TageUrlaub setzen
tableObjects.Add(to);
}
TableObject to = new TableObject()
{
Name = info.Employee.LastNameFirstName,
ResturlaubVorjahr = string.Format("{0:0.00}", info.Employee.Urlaubskonto.ResturlaubVorjahrTotal),
VerfallenerResturlaub = string.Format("{0:0.00}", info.Employee.Urlaubskonto.VerfallenerUrlaub),
Urlaubsanspruch = string.Format("{0:0.00}", info.Employee.Urlaubskonto.Urlaubsanspruch - anzGeschenkteTage),
Resturlaub = string.Format("{0:0.00}", info.Employee.Urlaubskonto.Resturlaub),
TageKrankheit = string.Format("{0:0.00}", dictKrankheit.First(d => d.Key == info.Employee.EmployeeOid).Value),
TageUrlaub = string.Format("{0:0.00}", dictUrlaub.First(d => d.Key == info.Employee.EmployeeOid).Value),
GeschenkteUrlaubstage = string.Format("{0:0.00}", anzGeschenkteTage)
};
//TageKrankheit und TageUrlaub setzen
tableObjects.Add(to);
}
return tableObjects;
}

View File

@@ -4854,7 +4854,7 @@ namespace BeWo.View.Detail.Zeiterfassung
if(textbausteineSearchView.ServiceCategoryOid > 0)
{
var selectedTextmodules = textModules.Where(w => w.ServiceCategory != null && w.ServiceCategory.ServiceCategoryOid == textbausteineSearchView.ServiceCategoryOid || w.ServiceCategory == null).ToList();
var selectedTextmodules = textModules.Where(w => !w.IsParent && (w.ServiceCategory == null || (w.ServiceCategory.ServiceCategoryOid == textbausteineSearchView.ServiceCategoryOid))).ToList();
textModules = Utils.GetParentTextModules(selectedTextmodules);
textModules.AddRangeIfElementsNotIn(selectedTextmodules);

View File

@@ -0,0 +1,283 @@
using BeWo.ServiceProxy;
using BeWo.ViewModel;
using BS.Shared;
using BS.Shared.DataContracts;
using BS.Shared.Translation;
using DevExpress.Utils;
using DevExpress.Xpf.Grid;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media.Imaging;
namespace BeWo.View.Document
{
public class DokumentViewHelper
{
public static void OpenTemplateSelectionDialog(List<DokumentvorlageDC> alleVorlagen, TableID objectTid, long objectOid)
{
var alleVorlagenTabellen = ServiceFacade.DoOperationsServiceSync(s => s.GetVorlagentabelleDCs());
var tabelle = alleVorlagenTabellen.FirstOrDefault(v => v.VorlagentabelleObjectTid.HasValue && v.VorlagentabelleObjectTid.Value == (int)objectTid);
if (tabelle != null)
{
var view = new SingleTemplateSelectionView();
var customerFolderList = VMFactory.CreateFolderList(objectTid, objectOid);
var templateFolderList = VMFactory.CreateFolderList(TableID.Vorlagentabelle, tabelle.VorlagentabelleOid.Value);
view.InitView(tabelle, alleVorlagen, templateFolderList, customerFolderList, true, false);
var beWoWindow = BeWoWindowBuilder.GetBeWoWindow(Translator.Translate("Vorlage auswählen"), view, 500, 500);
view.ButtonCancelClicked += () => beWoWindow.Close();
view.ButtonCreateForSelectionClicked += () =>
{
beWoWindow.Close();
};
beWoWindow.ShowDialog();
}
}
public static void CreateTemplateTreeViewItems(TreeListControl treeControl, IList<VorlagentabelleDC> vorlagentabellen, List<BeWoFolderDC> allFolder, bool expandItems)
{
treeControl.BeginDataUpdate();
foreach (var table in vorlagentabellen)
{
TreeListNode node = new TreeListNode();
DocumentTreeItemDC dc = new DocumentTreeItemDC()
{
DocTreeItemOid = table.VorlagentabelleOid,
ParentOid = null,
Name = table.Tabellenname,
Table = BS.Shared.TableID.Vorlagentabelle,
ObjectOid = table.VorlagentabelleOid,
Node = node,
BeWoFolderDC = new BeWoFolderDC { Name = "RootFolder", SubFolders = new List<BeWoFolderDC>() }
};
DocumentTreeItemVM vm = new DocumentTreeItemVM(dc);
node.Content = vm;
treeControl.View.Nodes.Add(node);
node.IsExpandButtonVisible = DefaultBoolean.True;
node.IsExpanded = expandItems;
node.Image = LoadImage(table.ImageName);
}
if (allFolder != null && allFolder.Count > 0)
{
AddFolderToTreeView(treeControl, allFolder, expandItems);
}
treeControl.EndDataUpdate();
}
public static void AddTemplatesToTreeView(TreeListControl treeControl, List<DokumentvorlageDC> allTemplates, bool expandItems)
{
treeControl.BeginDataUpdate();
foreach (var template in allTemplates)
{
TreeListNode parentNode = FindParentNodeForTemplate(treeControl.View.Nodes, template);
if (parentNode != null)
{
parentNode.IsExpandButtonVisible = DefaultBoolean.True;
var parentVm = parentNode.Content as DocumentTreeItemVM;
DocumentTreeItemDC dc = new DocumentTreeItemDC()
{
DocTreeItemOid = template.DokumentvorlageOid,
ParentOid = parentVm.DocTreeItemOid,
Name = template.Name,
Dokumentvorlage = template,
Table = TableID.Dokumentvorlage
};
DocumentTreeItemVM folder_vm = new DocumentTreeItemVM(dc);
var newFolderNode = new TreeListNode()
{
Content = folder_vm,
IsExpandButtonVisible = DefaultBoolean.False,
Tag = template,
IsExpanded = expandItems,
Image = LoadDocumentImage()
};
dc.Node = newFolderNode;
parentNode.Nodes.Add(newFolderNode);
}
}
treeControl.EndDataUpdate();
}
private static TreeListNode FindParentNodeForTemplate(TreeListNodeCollection nodes, DokumentvorlageDC template)
{
foreach (TreeListNode node in nodes)
{
var docVm = node.Content as DocumentTreeItemVM;
if (docVm != null && docVm.DocTreeItemOid.HasValue && docVm.DocTreeItemOid == template.Parent)
{
return node;
}
var childNode = FindParentNodeForTemplate(node.Nodes, template);
if (childNode != null)
{
return childNode;
}
}
return null;
}
public static void AddFolderToTreeView(TreeListControl treeControl, List<BeWoFolderDC> folders, bool expandItems)
{
treeControl.BeginDataUpdate();
foreach (var node in treeControl.View.Nodes)
{
AddFolderToNode(node, folders, expandItems);
}
treeControl.EndDataUpdate();
}
private static void AddFolderToNode(TreeListNode parentNode, List<BeWoFolderDC> folders, bool expandItems)
{
if (parentNode != null && folders != null)
{
var parentVm = parentNode.Content as DocumentTreeItemVM;
foreach (var folder in folders)
{
if (folder.BeWoFolderOid.HasValue)
{
//if (parentVm != null && parentVm.DocTreeItemOid == folder.ObjectOid)
//{
DocumentTreeItemDC dc = new DocumentTreeItemDC()
{
DocTreeItemOid = folder.BeWoFolderOid,
ParentOid = parentVm.DocTreeItemOid,
Name = folder.Name,
FilesInFolder = new List<FileAttachmentDC>(),
BeWoFolderDC = folder,
Table = parentVm.DataContract.Table,
ObjectOid = parentVm.DataContract.ObjectOid
};
if (folder.Files.Count != 0)
{
foreach (var file in folder.Files)
{
dc.FilesInFolder.Add(file);
}
}
DocumentTreeItemVM folder_vm = new DocumentTreeItemVM(dc);
var newFolderNode = new TreeListNode()
{
Content = folder_vm,
IsExpandButtonVisible = folder.SubFolders != null && folder.SubFolders.Count > 0 ? DefaultBoolean.True : DefaultBoolean.False,
IsExpanded = expandItems,
Tag = false,
Image = LoadFolderImage()
};
dc.Node = newFolderNode;
parentNode.Nodes.Add(newFolderNode);
AddFolderToNode(newFolderNode, folder.SubFolders, expandItems);
//}
}
else
{
if (folder.ObjectOid.HasValue && folder.ObjectOid == parentVm.DocTreeItemOid)
{
AddFolderToNode(parentNode, folder.SubFolders, expandItems);
}
}
}
}
}
private static void GenerateFolderStructureForSelectedNode(TreeListNode node, List<BeWoFolderDC> folderDCs, bool hideAlleOrdner)
{
if (node.Nodes.Count == 0)
{
var content = node.Content as DocumentTreeItemVM;
foreach (var folder in folderDCs)
{
TreeListNode newNode_folder = null;
if (folder.BeWoFolderOid.HasValue || !hideAlleOrdner)
{
DocumentTreeItemDC folder_dc = new DocumentTreeItemDC()
{
DocTreeItemOid = folder.BeWoFolderOid,
ParentOid = content.DocTreeItemOid,
Name = folder.Name,
FilesInFolder = new List<FileAttachmentDC>(),
BeWoFolderDC = folder,
Table = content.DataContract.Table,
ObjectOid = content.DataContract.ObjectOid
};
if (folder.Files.Count != 0)
{
foreach (var file in folder.Files)
{
folder_dc.FilesInFolder.Add(file);
}
}
DocumentTreeItemVM folder_vm = new DocumentTreeItemVM(folder_dc);
newNode_folder = new TreeListNode()
{
Content = folder_vm,
IsExpandButtonVisible = folder.SubFolders != null && folder.SubFolders.Count > 0 ? DefaultBoolean.True : DefaultBoolean.False,
Tag = false,
Image = LoadFolderImage()
};
folder_dc.Node = newNode_folder;
node.Nodes.Add(newNode_folder);
}
else
{
newNode_folder = node;
if (content.DataContract.BeWoFolderDC == null)
{
content.DataContract.BeWoFolderDC = folder;
}
}
if (folder.SubFolders.Count != 0)
{
GenerateFolderStructureForSelectedNode(newNode_folder, folder.SubFolders, hideAlleOrdner);
}
}
}
}
private static BitmapImage LoadImage(string imageName)
{
if (String.IsNullOrEmpty(imageName))
{
return null;
}
return new BitmapImage(new Uri("/Ressources/Icons/" + imageName + ".png", UriKind.Relative));
}
private static BitmapImage LoadFolderImage()
{
return LoadImage("Folder");
}
private static BitmapImage LoadDocumentImage()
{
return LoadImage("Document48");
}
}
}

View File

@@ -1,5 +1,5 @@
<localView:BeWoView
x:Class="BeWo.View.Master.DokumenteView"
x:Class="BeWo.View.Document.DokumenteView"
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"
@@ -11,6 +11,7 @@
xmlns:localView="clr-namespace:BeWo.View"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:master="clr-namespace:BeWo.View.Master"
xmlns:doc="clr-namespace:BeWo.View.Document"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
Width="Auto"
Height="Auto"
@@ -79,8 +80,8 @@
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
<master:DeleteButtonVisibilityConverter x:Key="DeleteButtonVisibilityConverter" />
<master:EditButtonVisibilityConverter x:Key="EditButtonVisibilityConverter" />
<doc:DeleteButtonVisibilityConverter x:Key="DeleteButtonVisibilityConverter" />
<doc:EditButtonVisibilityConverter x:Key="EditButtonVisibilityConverter" />
</localView:BeWoView.Resources>
@@ -535,7 +536,9 @@
ShowIndicator="False"
ShowNodeImages="True"
ShowVerticalLines="False"
VerticalScrollbarVisibility="Auto" />
VerticalScrollbarVisibility="Auto"
AutoExpandOnDrag="True"
NavigationStyle="Cell"/>
</dxg:TreeListControl.View>
</dxg:TreeListControl>
<!--
@@ -609,8 +612,7 @@
x:Name="datagrid_templates"
Grid.Row="0"
Grid.Column="1"
Margin="2,3,5,5"
DataSource="{Binding SelectedItem.Files, ElementName=treeview}">
Margin="2,3,5,5">
<dxg:GridControl.Columns>
<dxg:GridColumn
Width="24"
@@ -635,7 +637,7 @@
Width="*"
AllowEditing="False"
FieldName="Name"
Header="Dateiname" />
Header="Name" />
<dxg:GridColumn
Width="*"
AllowEditing="False"
@@ -680,7 +682,7 @@
<dxg:TableView
x:Name="TemplateTableView"
AutoWidth="false"
NavigationStyle="Cell"
NavigationStyle="Row"
ShowGroupPanel="False"
ShowGroupedColumns="false"
ShowTotalSummary="False" />

View File

@@ -40,8 +40,9 @@ using System.Text;
using BS.Shared.Translation;
using System.Windows.Data;
using System.Globalization;
using System.ComponentModel;
namespace BeWo.View.Master
namespace BeWo.View.Document
{
public partial class DokumenteView
{
@@ -51,7 +52,7 @@ namespace BeWo.View.Master
private readonly long? _ObjectOid;
private readonly TableID _ObjectTid;
private TreeViewItem _SelectedTreeNode;
private List<VorlagentabelleDC> alleVorlagenTabellen;
public DokumenteView()
{
InitializeComponent();
@@ -841,16 +842,20 @@ namespace BeWo.View.Master
private void DocumentsTreeView_LostFocus(object sender, RoutedEventArgs e)
{
var row = DocumentsTreeView.FocusedRow as DocumentTreeItemVM;
if (row != null)
SaveFolder(row);
}
private void SaveFolder(DocumentTreeItemVM vm)
{
if (vm != null)
{
if (row.IsDirty && !row.Name.Equals(row.DataContract.Name))
if (vm.IsDirty && !vm.Name.Equals(vm.DataContract.Name))
{
row.DataContract.BeWoFolderDC.Name = row.Name;
row.DataContract.Name = row.Name;
vm.DataContract.BeWoFolderDC.Name = vm.Name;
vm.DataContract.Name = vm.Name;
ServiceFacade.DoOperationsServiceAsync(
s => s.UpdateFolder(row.DataContract.BeWoFolderDC),
r => row.DataContract.BeWoFolderDC.BeWoFolderVersion = r.BeWoFolderVersion);
s => s.UpdateFolder(vm.DataContract.BeWoFolderDC),
r => vm.DataContract.BeWoFolderDC.BeWoFolderVersion = r.BeWoFolderVersion);
}
}
}
@@ -1264,48 +1269,36 @@ namespace BeWo.View.Master
public void InitTemplateMenuItems()
{
template_treeview_control.BeginDataUpdate();
alleVorlagenTabellen = ServiceFacade.DoOperationsServiceSync(s => s.GetVorlagentabelleDCs());
DokumentViewHelper.CreateTemplateTreeViewItems(template_treeview_control, alleVorlagenTabellen, null, false);
Dictionary<string, string> firstLevel = GetFirstLevelDictionaryForTemplates();
var liste = ServiceFacade.DoOperationsServiceSync(s => s.GetVorlagentabelleDCs());
string[] iconNames = new string[] { "IDBadgeDisabled", "UserHomeMaleDisabled", "UserBusinessMaleDisabled" };
int counter = 1;
foreach (var table in liste)
{
TreeListNode node = new TreeListNode();
DocumentTreeItemDC dc = new DocumentTreeItemDC()
{
DocTreeItemOid = counter,
ParentOid = null,
Name = table.Tabellenname,
Table = TableID.Vorlagentabelle,
ObjectOid = table.VorlagentabelleOid,
Node = node,
BeWoFolderDC = new BeWoFolderDC { Name = "RootFolder", SubFolders = new List<BeWoFolderDC>() }
};
DocumentTreeItemVM vm = new DocumentTreeItemVM(dc);
node.Content = vm;
TemplateTreeView.Nodes.Add(node);
node.IsExpandButtonVisible = DefaultBoolean.True;
node.Image = LoadImage(table.ImageName);
//string[] iconNames = new string[] { "IDBadgeDisabled", "UserHomeMaleDisabled", "UserBusinessMaleDisabled" };
//foreach (var table in alleVorlagenTabellen)
//{
// TreeListNode node = new TreeListNode();
// DocumentTreeItemDC dc = new DocumentTreeItemDC()
// {
// DocTreeItemOid = table.VorlagentabelleOid,
// ParentOid = null,
// Name = table.Tabellenname,
// Table = TableID.Vorlagentabelle,
// ObjectOid = table.VorlagentabelleOid,
// Node = node,
// BeWoFolderDC = new BeWoFolderDC { Name = "RootFolder", SubFolders = new List<BeWoFolderDC>() }
// };
// DocumentTreeItemVM vm = new DocumentTreeItemVM(dc);
// node.Content = vm;
// TemplateTreeView.Nodes.Add(node);
// node.IsExpandButtonVisible = DefaultBoolean.True;
// node.Image = LoadImage(table.ImageName);
counter++;
}
template_treeview_control.EndDataUpdate();
}
private Dictionary<string, string> GetFirstLevelDictionaryForTemplates()
{
Dictionary<string, string> firstLevel = new Dictionary<string, string>();
firstLevel.Add("supportConcepts", "Hilfepläne");
firstLevel.Add("customers", Translator.Translate("Klienten"));
firstLevel.Add("employee", Translator.Translate("MitarbeiterPlural"));
return firstLevel;
//}
//template_treeview_control.EndDataUpdate();
}
private void templateTreeListView_NodeExpanding(object sender, TreeListNodeAllowEventArgs e)
@@ -1315,13 +1308,12 @@ namespace BeWo.View.Master
//if (vm.Name.Equals("Hilfepläne") || vm.Name.Equals("Klienten") || vm.Name.Equals("Mitarbeiter"))
//{
List<BeWoFolderDC> folderDCs = new List<BeWoFolderDC>();
if (vm.DocTreeItemOid.HasValue)
//List<BeWoFolderDC> folderDCs = new List<BeWoFolderDC>();
if (node.Nodes.Count == 0 && vm.DocTreeItemOid.HasValue)
{
folderDCs = VMFactory.CreateFolderList(TableID.Vorlagentabelle, (long)vm.DocTreeItemOid);
GenerateFolderStructureForSelectedNode(node, folderDCs, true);
var folderDCs = VMFactory.CreateFolderList(TableID.Vorlagentabelle, (long)vm.DocTreeItemOid);
DokumentViewHelper.AddFolderToTreeView(template_treeview_control, folderDCs, false);
//GenerateFolderStructureForSelectedNode(node, folderDCs, true);
}
//}
@@ -1395,13 +1387,26 @@ namespace BeWo.View.Master
{
if (e.OriginalSource is MenuItem)
{
var row = TemplateTreeView.SelectedRows[0] as DocumentTreeItemVM;
var twi = e.OriginalSource as MenuItem;
DocumentTreeItemVM row = null;
TreeListNode selectedNode = null;
var selection = template_treeview_control.GetSelectedNodes();
if (selection != null && selection.Length > 0)
{
selectedNode = selection[0];
row = selectedNode.Content as DocumentTreeItemVM;
}
if (selectedNode == null || row == null)
{
return;
}
if (twi.Header.Equals("Neuer Ordner"))
{
TreeListNode node = new TreeListNode();
node.IsExpandButtonVisible = DefaultBoolean.True;
node.IsExpandButtonVisible = DefaultBoolean.False;
node.Image = LoadFolderImage();
BeWoFolderDC folderDC = new BeWoFolderDC()
@@ -1432,6 +1437,7 @@ namespace BeWo.View.Master
dc.Node.Content = vm;
row.DataContract.Node.Nodes.Add(dc.Node);
row.DataContract.Node.IsExpanded = true;
row.DataContract.Node.IsExpandButtonVisible = DefaultBoolean.True;
}
else if (twi.Header.Equals("Umbenennen"))
{
@@ -1444,20 +1450,20 @@ namespace BeWo.View.Master
else if (twi.Header.Equals("Neue Vorlage"))
{
var vm = new DokumentvorlageVM(new DokumentvorlageDC());
VorlagentabelleDC tabelle = ServiceFacade.DoOperationsServiceSync(s => s.GetVorlagentabelleById((long)row.DataContract.BeWoFolderDC.ObjectOid));
vm.Tabellenzugehoerigkeit = (long)tabelle.VorlagentabelleObjectTid;
vm.Parent = row.DataContract.BeWoFolderDC.BeWoFolderOid;
var savedTemplate = EditTemplate(vm);
if(savedTemplate != null)
if (savedTemplate != null)
{
if(savedTemplate.IsDirty)
if (savedTemplate.IsDirty)
{
var savedDC = SaveInDatabase(savedTemplate);
savedTemplate = new DokumentvorlageVM(savedDC);
var tableitems = datagrid_templates.ItemsSource as List<DokumentvorlageVM>;
datagrid_templates.ItemsSource = new List<DokumentvorlageVM>();
var tableitems = datagrid_templates.ItemsSource as BindingList<DokumentvorlageVM>;
datagrid_templates.ItemsSource = new BindingList<DokumentvorlageVM>();
tableitems.Add(savedTemplate);
datagrid_templates.ItemsSource = tableitems;
@@ -1472,12 +1478,15 @@ namespace BeWo.View.Master
private DokumentvorlageVM EditTemplate(DokumentvorlageVM vm)
{
var row = TemplateTreeView.SelectedRows[0] as DocumentTreeItemVM;
var folder = ServiceFacade.DoOperationsServiceSync(s => s.GetFolderById((long)row.DataContract.BeWoFolderDC.BeWoFolderOid));
long? tabelle = folder.ObjectOid;
//var folder = ServiceFacade.DoOperationsServiceSync(s => s.GetFolderById((long)row.DataContract.BeWoFolderDC.BeWoFolderOid));
var vt = GetVorlagenTabelleFromSelectedTreeItem(row);
if (vt == null)
{
return null;
}
var control = new VorlageEditView();
control.InitView(vm, tabelle);
control.InitView(vt, vm);
var beWoWindow = new BeWoWindow
{
rootGroupBox = { Header = "Vorlage bearbeiten" },
@@ -1493,6 +1502,11 @@ namespace BeWo.View.Master
control.ButtonSavedClicked += () =>
{
saved = true;
if (control.ViewModel.IsDirty)
{
var dc = SaveInDatabase(control.ViewModel);
vm.DataContract = dc;
}
beWoWindow.Close();
};
@@ -1510,6 +1524,21 @@ namespace BeWo.View.Master
return control.ViewModel;
}
private VorlagentabelleDC GetVorlagenTabelleFromSelectedTreeItem(DocumentTreeItemVM row)
{
if (row != null && row.DataContract != null && row.DataContract.ObjectOid.HasValue)
{
foreach (var item in alleVorlagenTabellen)
{
if (item.VorlagentabelleOid == row.DataContract.ObjectOid)
{
return item;
}
}
}
return null;
}
private DokumentvorlageDC SaveInDatabase(DokumentvorlageVM savedTemplate)
{
var dc = savedTemplate.CommitToDataContract();
@@ -1526,6 +1555,10 @@ namespace BeWo.View.Master
private void EditSelectedTemplateFolder()
{
TemplateTreeView.AllowEditing = true;
//template_treeview_control.Focus();
//var h = TemplateTreeView.FocusedRowHandle;
//TemplateTreeView.SelectCell(h, template_treeview_control.Columns[0]);
}
private void TemplateTreeView_FocusedRowChanged(object sender, FocusedRowChangedEventArgs e)
@@ -1536,18 +1569,8 @@ namespace BeWo.View.Master
private void TemplateTreeView_LostFocus(object sender, RoutedEventArgs e)
{
var row = TemplateTreeView.FocusedRow as DocumentTreeItemVM;
if (row != null)
{
if (row.IsDirty && !row.Name.Equals(row.DataContract.Name))
{
row.DataContract.BeWoFolderDC.Name = row.Name;
row.DataContract.Name = row.Name;
ServiceFacade.DoOperationsServiceAsync(
s => s.UpdateFolder(row.DataContract.BeWoFolderDC),
r => row.DataContract.BeWoFolderDC.BeWoFolderVersion = r.BeWoFolderVersion);
}
}
SaveFolder(row);
}
private void DeleteTemplateFolderWithAllSubfolders(BeWoFolderDC folder)
{
@@ -1600,13 +1623,13 @@ namespace BeWo.View.Master
if (selected == null || selected.DataContract.BeWoFolderDC.Name == "RootFolder")
{
datagrid_templates.ItemsSource = new List<DokumentvorlageVM>();
datagrid_templates.ItemsSource = new BindingList<DokumentvorlageVM>();
return;
}
var vmList = new List<DokumentvorlageVM>();
var vmList = new BindingList<DokumentvorlageVM>();
//BeWoFolderDC folderDC = ServiceFacade.DoOperationsServiceSync(s => s.GetFolderById((long)selected.DocTreeItemOid));
//var folderDC_Oid = folderDC.BeWoFolderOid;
if (selected.DataContract.BeWoFolderDC == null)
@@ -1633,20 +1656,16 @@ namespace BeWo.View.Master
{
var templateVM = datagrid_templates.SelectedItem as DokumentvorlageVM;
EditTemplate(templateVM);
if(templateVM.IsDirty)
{
var dc = SaveInDatabase(templateVM);
templateVM.DataContract = dc;
}
}
private void PrintTemplate_Click(object sender, RoutedEventArgs e)
{
var templateVM = datagrid_templates.SelectedItem as DokumentvorlageVM;
var liste = ServiceFacade.DoOperationsServiceSync(s => s.GetVorlagentabelleDCs());
//var liste = ServiceFacade.DoOperationsServiceSync(s => s.GetVorlagentabelleDCs());
long vorlagentabelle = 0;
foreach (var item in liste)
foreach (var item in alleVorlagenTabellen)
{
if(item.VorlagentabelleObjectTid == templateVM.Tabellenzugehoerigkeit)
{
@@ -1816,8 +1835,8 @@ namespace BeWo.View.Master
{
ServiceFacade.DoOperationsServiceSync(s => s.DeleteTemplates(listeMitDemDC));
var gridItemsSource = this.datagrid_templates.ItemsSource as List<DokumentvorlageVM>;
datagrid_templates.ItemsSource = new List<DokumentvorlageVM>();
var gridItemsSource = this.datagrid_templates.ItemsSource as BindingList<DokumentvorlageVM>;
datagrid_templates.ItemsSource = new BindingList<DokumentvorlageVM>();
gridItemsSource.Remove(selectedTemplate);
this.datagrid_templates.ItemsSource = gridItemsSource;

View File

@@ -0,0 +1,64 @@
<localView:BeWoView x:Class="BeWo.View.Document.SingleTemplateSelectionView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:localView="clr-namespace:BeWo.View"
xmlns:localViewControls="clr-namespace:BeWo.View.Controls"
xmlns:localSearchView="clr-namespace:BeWo.View.Search"
xmlns:val="clr-namespace:BeWo.Validation"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:core="clr-namespace:BS.Shared.Core;assembly=BS.Shared"
xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars"
xmlns:dxre="http://schemas.devexpress.com/winfx/2008/xaml/richedit"
xmlns:dxr="http://schemas.devexpress.com/winfx/2008/xaml/ribbon"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
Focusable="True">
<Grid Background="{StaticResource ObjectEditBackgroundBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition x:Name="GridRowTemplate" Height="*" />
<RowDefinition Height="Auto" />
<RowDefinition x:Name="GridRowFolder" Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label Margin="0,0,0,0" x:Name="lblTemplate" Content="Vorlage:"/>
<dxg:TreeListControl x:Name="treelistcontrol_template" Grid.Row="1" DefaultSorting="Name" Margin="5,0,5,0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
<dxg:TreeListControl.Columns>
<dxg:TreeListColumn FieldName="Name" AllowSorting="True"/>
</dxg:TreeListControl.Columns>
<dxg:TreeListControl.View>
<dxg:TreeListView x:Name="TreeView_template" ShowColumnHeaders="False" ShowIndicator="False" ShowHorizontalLines="False" ShowVerticalLines="False" AutoWidth="True"
FocusedRowChanged="DocumentsTreeView_FocusedRowChanged" PreviewMouseLeftButtonDown="DocumentsTreeView_folderStructureForSelection_PreviewMouseLeftButtonDown"
NodeExpanding="DocumentsTreeView_NodeExpanding" AllowEditing="False" ShowNodeImages="True" PrintNodeImages="True"
KeyFieldName="{Binding DocumentTreeItemVM.DocTreeItemOid}" ParentFieldName="Binding DocumentTreeItemVM.ParentOid">
</dxg:TreeListView>
</dxg:TreeListControl.View>
</dxg:TreeListControl>
<CheckBox x:Name="chkSaveDoc" Content="Dokument abspeichern" Grid.Row="2" Checked="CheckBox_Checked" Margin="5,8,0,0" Unchecked="CheckBox_Unchecked" />
<dxg:TreeListControl x:Name="treelistcontrol_folderStructureForSelection" Grid.Row="3" DefaultSorting="Name" Margin="5,5,5,0" VerticalAlignment="Stretch" Visibility="Visible">
<dxg:TreeListControl.Columns>
<dxg:TreeListColumn FieldName="Name" AllowSorting="True"/>
</dxg:TreeListControl.Columns>
<dxg:TreeListControl.View>
<dxg:TreeListView x:Name="TreeView_folderStructureForSelection" ShowColumnHeaders="False" ShowIndicator="False" ShowHorizontalLines="False" ShowVerticalLines="False" AutoWidth="True"
FocusedRowChanged="DocumentsTreeView_FocusedRowChanged" PreviewMouseLeftButtonDown="DocumentsTreeView_folderStructureForSelection_PreviewMouseLeftButtonDown"
NodeExpanding="DocumentsTreeView_NodeExpanding" AllowEditing="False" ShowNodeImages="True" PrintNodeImages="True"
KeyFieldName="{Binding DocumentTreeItemVM.DocTreeItemOid}" ParentFieldName="Binding DocumentTreeItemVM.ParentOid">
</dxg:TreeListView>
</dxg:TreeListControl.View>
</dxg:TreeListControl>
<WrapPanel Grid.Row="4" VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="0 5 5 5">
<Button x:Name="Button_CreateTemplateBasedDocument_OnlyOne" Content="Dokument erstellen" Margin="0 0 5 0" Click="Button_CreateTemplateForSelection_Click" />
<Button x:Name="Button_Cancel_OnlyOne" Content="Abbrechen" Click="Button_Cancel_Click" />
</WrapPanel>
</Grid>
</localView:BeWoView>

View File

@@ -0,0 +1,235 @@
using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using BeWo.Controls;
using BeWo.Core;
using BeWo.ServiceProxy;
using BeWo.Validation;
using BeWo.View.Search;
using BeWo.ViewModel;
using BeWo.ViewModel.ListViewModel;
using BeWo.Core.Service;
using BS.Shared;
using BS.Shared.Extensions;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.ClientPartials;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Services;
using BS.Shared.Translation;
using DevExpress.Xpf.RichEdit;
using SupportConceptService = BeWo.Core.Service.SupportConceptService;
using System.Linq;
using DevExpress.Xpf.Grid;
using System.Windows.Media.Imaging;
using DevExpress.Utils;
namespace BeWo.View.Document
{
public partial class SingleTemplateSelectionView
{
public event Action ButtonCreateClicked;
public event Action ButtonCreateForSelectionClicked;
public event Action ButtonCreateForAllClicked;
public event Action ButtonCancelClicked;
private VorlagentabelleDC vorlagenTabelle;
private List<DokumentvorlageDC> alleVorlagen;
private List<BeWoFolderDC> allTemplateFolder;
private List<BeWoFolderDC> allObjectFolder;
public SingleTemplateSelectionView()
{
InitializeComponent();
}
public DocumentTreeItemVM SelectedFolder { get; set; }
public DokumentvorlageDC SelectedTemplate { get; set; }
public void InitView(VorlagentabelleDC vt, List<DokumentvorlageDC> alleVorlagen, List<BeWoFolderDC> allTemplateFolder, List<BeWoFolderDC> allObjectFolder, bool showTemplateTree, bool showDocumentTree)
{
//tableId = tid;
this.vorlagenTabelle = vt;
this.alleVorlagen = alleVorlagen;
this.allTemplateFolder = allTemplateFolder;
this.allObjectFolder = allObjectFolder;
DokumentViewHelper.CreateTemplateTreeViewItems(treelistcontrol_template, new List<VorlagentabelleDC>() { vt }, allTemplateFolder, true);
DokumentViewHelper.AddTemplatesToTreeView(treelistcontrol_template, alleVorlagen, true);
List<PrintSelectionVM> vms = new List<PrintSelectionVM>();
if (!showTemplateTree)
{
lblTemplate.Visibility = Visibility.Collapsed;
treelistcontrol_template.Visibility = Visibility.Collapsed;
GridRowTemplate.Height = GridLength.Auto;
}
if (!showDocumentTree)
{
chkSaveDoc.Visibility = Visibility.Collapsed;
treelistcontrol_folderStructureForSelection.Visibility = Visibility.Collapsed;
GridRowFolder.Height = GridLength.Auto;
}
Focus();
}
//private void Button_CreateTemplateBasedDocument_Click(object sender, RoutedEventArgs e)
//{
// selectedFolder = null;
// var selected = GetSelectedElements();
// if (selected == null || selected.Count == 0)
// {
// MessageBox.Show("Es muss mindestens ein Datensatz ausgewählt werden.", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Information);
// return;
// }
// ButtonCreateClicked?.Invoke();
//}
private void Button_CreateTemplateForSelection_Click(object sender, RoutedEventArgs e)
{
var selected = treelistcontrol_template.SelectedItem as DocumentTreeItemVM;
if (selected == null ||selected.DataContract.Dokumentvorlage == null)
{
MessageBox.Show("Bitte wählen Sie eine Vorlage aus.", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Information);
return;
}
SelectedTemplate = selected.DataContract.Dokumentvorlage;
ButtonCreateForSelectionClicked?.Invoke();
}
//private void Button_CreateTemplateBasedDocumentForAll_Click(object sender, RoutedEventArgs e)
//{
// var selected = datagrid_enabled_for_template.ItemsSource as List<PrintSelectionVM>;
// ButtonCreateForAllClicked?.Invoke();
//}
private void Button_Cancel_Click(object sender, RoutedEventArgs e)
{
ButtonCancelClicked?.Invoke();
}
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
treelistcontrol_folderStructureForSelection.Visibility = Visibility.Visible;
}
private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
{
SelectedFolder = null;
treelistcontrol_folderStructureForSelection.Visibility = Visibility.Collapsed;
}
//private void GenerateFolderStructure(TableID table, TreeListNode node, List<BeWoFolderDC> folderDCs)
//{
// if (node == null)
// {
// node = new TreeListNode()
// {
// IsExpandButtonVisible = DefaultBoolean.True,
// Tag = false,
// Image = LoadFolderImage()
// };
// }
// var content = node.Content as DocumentTreeItemVM;
// foreach (var folder in folderDCs)
// {
// //Falls kein übergeordneter Knoten exisitert
// //if(content == null)
// //{
// // PrintSelectionVM selected = combobox_elementList.SelectedItem as PrintSelectionVM;
// // var dc = new DocumentTreeItemDC()
// // {
// // DocTreeItemOid = 0,
// // ParentOid = null,
// // Name = "Alle Ordner",
// // Table = table
// // };
// // content = new DocumentTreeItemVM(dc);
// // node.Content = content;
// // DocumentsTreeView_folderStructureForSelection.Nodes.Add(node);
// //}
// PrintSelectionVM selected = combobox_elementList.SelectedItem as PrintSelectionVM;
// DocumentTreeItemDC folder_dc = new DocumentTreeItemDC()
// {
// DocTreeItemOid = folder.BeWoFolderOid,
// ParentOid = null,
// Name = folder.Name,
// FilesInFolder = new List<FileAttachmentDC>(),
// BeWoFolderDC = folder,
// Table = table,
// ObjectOid = selected.ObjectOid
// };
// if (content != null)
// folder_dc.ParentOid = content.DocTreeItemOid;
// DocumentTreeItemVM folder_vm = new DocumentTreeItemVM(folder_dc);
// TreeListNode newNode_folder = new TreeListNode()
// {
// Content = folder_vm,
// IsExpandButtonVisible = DefaultBoolean.True,
// Tag = false,
// Image = LoadFolderImage()
// };
// folder_dc.Node = newNode_folder;
// if(node.Content == null)
// DocumentsTreeView_folderStructureForSelection.Nodes.Add(newNode_folder);
// else
// node.Nodes.Add(newNode_folder);
// if (folder.SubFolders.Count != 0)
// {
// GenerateFolderStructure(table, newNode_folder, folder.SubFolders);
// }
// }
//}
private BitmapImage LoadFolderImage()
{
return new BitmapImage(new Uri("/Ressources/Icons/Folder.png", UriKind.Relative));
}
private void DocumentsTreeView_FocusedRowChanged(object sender, DevExpress.Xpf.Grid.FocusedRowChangedEventArgs e)
{
//if(DocumentsTreeView_folderStructureForSelection.SelectedRows.Count != 0)
// selectedFolder = DocumentsTreeView_folderStructureForSelection.SelectedRows[0] as DocumentTreeItemVM;
}
private void DocumentsTreeView_NodeExpanding(object sender, DevExpress.Xpf.Grid.TreeList.TreeListNodeAllowEventArgs e)
{
}
private void DocumentsTreeView_folderStructureForSelection_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (TreeView_template.SelectedRows.Count != 0)
SelectedFolder = TreeView_template.SelectedRows[0] as DocumentTreeItemVM;
}
//public List<PrintSelectionVM> SelectAllElements()
//{
// return datagrid_enabled_for_template.ItemsSource as List<PrintSelectionVM>;
//}
}
}

View File

@@ -1,4 +1,4 @@
<localView:BeWoView x:Class="BeWo.View.Detail.TemplatePrintSelection"
<localView:BeWoView x:Class="BeWo.View.Document.TemplatePrintSelection"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:localView="clr-namespace:BeWo.View"
@@ -13,7 +13,6 @@
xmlns:dxr="http://schemas.devexpress.com/winfx/2008/xaml/ribbon"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
Height="Auto" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Focusable="True">
<TabControl>
<TabItem>
@@ -52,7 +51,7 @@
<WrapPanel Grid.Row="2" VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="0 50 5 5">
<Button x:Name="Button_Cancel_OnlyOne" Content="Abbrechen" Click="Button_Cancel_Click" Margin="0 0 5 0" />
<Button x:Name="Button_CreateTemplateBasedDocument_OnlyOne" Content="Dokument für Auswahl erstellen" Click="Button_CreateTemplateForSelection_Click" />
<Button x:Name="Button_CreateTemplateBasedDocument_OnlyOne" Content="Dokument erstellen" Click="Button_CreateTemplateForSelection_Click" />
</WrapPanel>
</Grid>

View File

@@ -28,7 +28,7 @@ using DevExpress.Xpf.Grid;
using System.Windows.Media.Imaging;
using DevExpress.Utils;
namespace BeWo.View.Detail
namespace BeWo.View.Document
{
public partial class TemplatePrintSelection
{

View File

@@ -1,4 +1,4 @@
<localView:BeWoView x:Class="BeWo.View.Detail.VorlageEditView"
<localView:BeWoView x:Class="BeWo.View.Document.VorlageEditView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:localView="clr-namespace:BeWo.View"
@@ -37,8 +37,8 @@
<Label Grid.Column="0" Grid.Row="0" Content="Name" />
<Label Grid.Column="0" Grid.Row="1" Content="Beschreibung" />
<dxe:TextEdit x:Name="TextEdit_Vorlagenname" Grid.Column="1" Grid.Row="0" Height="23" Margin="3,0,3,3" EditValueChanged="TextEdit_Vorlagenname_EditValueChanged"/>
<dxe:TextEdit x:Name="TextEdit_Beschreibung" Grid.Column="1" Grid.Row="1" Height="23" Margin="3,0,3,3" EditValueChanged="TextEdit_Beschreibung_EditValueChanged"/>
<TextBox x:Name="TextEdit_Vorlagenname" Grid.Column="1" Grid.Row="0" Height="23" Margin="3,0,3,3" Text="{Binding Name}"/>
<TextBox x:Name="TextEdit_Beschreibung" Grid.Column="1" Grid.Row="1" MinHeight="60" AcceptsReturn="True" AcceptsTab="True" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Height="23" Margin="3,0,3,3" Text="{Binding Beschreibung}"/>
</Grid>
<Grid Grid.Row="1" Margin="3 10 3 0">

View File

@@ -28,18 +28,18 @@ using System.Drawing;
using DevExpress.Office.Utils;
using System.Windows.Media.Imaging;
namespace BeWo.View.Detail
namespace BeWo.View.Document
{
public partial class VorlageEditView
{
List<PlatzhalterVM> Templates = new List<PlatzhalterVM>();
Dictionary<string, BitmapImage> ImageTypeToImage = new Dictionary<string, BitmapImage>();
private DokumentvorlageVM _ViewModel;
public DokumentvorlageDC Vorlage;
public event Action ButtonSavedClicked;
public event Action ButtonCancelClicked;
public VorlagentabelleDC VorlagenTabelle { get; set; }
public DokumentvorlageVM ViewModel { get; set; }
public VorlageEditView()
@@ -56,46 +56,27 @@ namespace BeWo.View.Detail
// !_SelectedEmployee.Equals(ViewModel.SelectedVMForEditing.Employee))
// return true;
return _ViewModel != null && _ViewModel.IsDirty;
return ViewModel != null && ViewModel.IsDirty;
}
}
public void InitView(DokumentvorlageVM pVM, long? tabelle)
public void InitView(VorlagentabelleDC vorlagenTabelle, DokumentvorlageVM pVM)
{
InitializeComponent();
ViewModel = pVM;
_ViewModel = pVM;
VorlagenTabelle = vorlagenTabelle;
var copy = new DokumentvorlageVM(pVM.DataContract);
ViewModel = copy;
DataContext = pVM;
if(pVM.Name != null)
{
TextEdit_Vorlagenname.EditValue = pVM.Name;
TextEdit_Vorlagenname.DataContext = pVM.Name;
TextEdit_Vorlagenname.Text = pVM.Name;
}
if (pVM.Beschreibung != null)
{
TextEdit_Beschreibung.EditValue = pVM.Beschreibung;
TextEdit_Beschreibung.DataContext = pVM.Beschreibung;
TextEdit_Beschreibung.Text = pVM.Beschreibung;
}
if (pVM.Text != null)
{
EditorControl.RtfText = pVM.RTFText;
}
switch(tabelle)
{
case 1: Templates = TemplatesForSupportConcepts();break;
case 2: Templates = TemplatesForCustomers();break;
case 3: Templates = TemplatesForEmployee();break;
}
//LoadImagesForNodes(Templates);
TreeListControlTemplates.ItemsSource = Templates;
TreeListControlTemplates.ItemsSource = GetPlatzhalter();
Focus();
}
@@ -163,20 +144,11 @@ namespace BeWo.View.Detail
// return templates;
//}
private List<PlatzhalterVM> TemplatesForSupportConcepts()
private List<PlatzhalterVM> GetPlatzhalter()
{
return ConvertListOfDataContractsToViewModels(ServiceFacade.DoOperationsServiceSync(s => s.GetPlatzhalterForSupportConcept()));
return ConvertListOfDataContractsToViewModels(ServiceFacade.DoOperationsServiceSync(s => s.GetPlatzhalterForTemplate(VorlagenTabelle)));
}
private List<PlatzhalterVM> TemplatesForCustomers()
{
return ConvertListOfDataContractsToViewModels(ServiceFacade.DoOperationsServiceSync(s => s.GetPlatzhalterForCustomer()));
}
private List<PlatzhalterVM> TemplatesForEmployee()
{
return ConvertListOfDataContractsToViewModels(ServiceFacade.DoOperationsServiceSync(s => s.GetPlatzhalterForEmployee()));
}
/*
private void combobox_templates_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
@@ -229,16 +201,6 @@ namespace BeWo.View.Detail
ButtonCancelClicked?.Invoke();
}
}
private void TextEdit_Vorlagenname_EditValueChanged(object sender, DevExpress.Xpf.Editors.EditValueChangedEventArgs e)
{
if (TextEdit_Vorlagenname.EditValue != null)
ViewModel.Name = TextEdit_Vorlagenname.EditValue.ToString();
}
private void TextEdit_Beschreibung_EditValueChanged(object sender, DevExpress.Xpf.Editors.EditValueChangedEventArgs e)
{
if (TextEdit_Beschreibung.EditValue != null)
ViewModel.Beschreibung = TextEdit_Beschreibung.EditValue.ToString();
}
// Mouseup, um die aktuelle Position des Cursors zu speichern, um dort den Platzhalter an der aktuellen Stelle einzusetzen
// Klappt nur, wenn in Text geklickt wird und nicht hinter ein Wort..

View File

@@ -1,21 +1,32 @@
<localView:BeWoView x:Class="BeWo.View.Master.AdministrationView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:dxa="http://schemas.devexpress.com/winfx/2008/xaml/accordion"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns:localView="clr-namespace:BeWo.View"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:t="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
Height="Auto" Width="Auto"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Focusable="True">
<localView:BeWoView
x:Class="BeWo.View.Master.AdministrationView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:core="clr-namespace:BS.Shared.Core;assembly=BS.Shared"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
xmlns:dxa="http://schemas.devexpress.com/winfx/2008/xaml/accordion"
xmlns:localView="clr-namespace:BeWo.View"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:t="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
Width="Auto"
Height="Auto"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Focusable="True"
Loaded="AdministrationView_Loaded">
<Grid>
<uc:ShadowChrome>
<GroupBox Style="{StaticResource MainContentGroupBoxStyle}">
<GroupBox.Header>
<StackPanel Orientation="Horizontal" VerticalAlignment="Bottom" Margin="0,11,0,0">
<Image Source="..\..\Ressources\Icons\ConfigurationDisabled.png" RenderTransformOrigin="0.5,0.5"
Width="32">
<StackPanel
Margin="0,11,0,0"
VerticalAlignment="Bottom"
Orientation="Horizontal">
<Image
Width="32"
RenderTransformOrigin="0.5,0.5"
Source="..\..\Ressources\Icons\ConfigurationDisabled.png">
<Image.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1.3" ScaleY="1.3" />
@@ -25,10 +36,16 @@
</TransformGroup>
</Image.RenderTransform>
</Image>
<TextBox Text="Verwaltung" Margin="10,0,0,0" Background="{x:Null}"
Foreground="{DynamicResource MainGroupBoxForegroundBrush}" FontSize="22"
BorderBrush="{x:Null}" VerticalAlignment="Stretch" Padding="0,0,0,0"
BorderThickness="0,0,0,0" />
<TextBox
Margin="10,0,0,0"
Padding="0,0,0,0"
VerticalAlignment="Stretch"
Background="{x:Null}"
BorderBrush="{x:Null}"
BorderThickness="0,0,0,0"
FontSize="22"
Foreground="{DynamicResource MainGroupBoxForegroundBrush}"
Text="Verwaltung" />
</StackPanel>
</GroupBox.Header>
<Grid Margin="0,0,0,0" Background="{StaticResource ObjectEditBackgroundBrush}">
@@ -37,61 +54,205 @@
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Rectangle Fill="{DynamicResource AdministrationContentBrush}" Height="6" />
<Rectangle Height="6" Fill="{DynamicResource AdministrationContentBrush}" />
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="255"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="255" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Border Margin="5" VerticalAlignment="Stretch" Background="Transparent" >
<dxa:AccordionControl x:Name="Root" Background="Transparent" VerticalAlignment="Top" dx:ThemeManager.ThemeName="Office2013" BorderThickness="0" RootItemExpandButtonPosition="Left">
<dxa:AccordionItem Header="{markup:Translate Allgemein}" Tag="Header" Foreground="{StaticResource TabItemTextBrush}">
<dxa:AccordionItem Header="{markup:Translate Einstellungen}" Name="TabitemMandator" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Ankündigungen}" Name="TabitemNews" Selected="Tabitem_Selected" Foreground="Black"/>
<Border
Margin="5"
VerticalAlignment="Stretch"
Background="Transparent">
<dxa:AccordionControl
x:Name="Root"
VerticalAlignment="Top"
dx:ThemeManager.ThemeName="Office2013"
Background="Transparent"
BorderThickness="0"
RootItemExpandButtonPosition="Left">
<dxa:AccordionItem
Foreground="{StaticResource TabItemTextBrush}"
Header="{markup:Translate Allgemein}"
Tag="Header">
<dxa:AccordionItem
Name="TabitemMandator"
Foreground="Black"
Header="{markup:Translate Einstellungen}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemNews"
Foreground="Black"
Header="{markup:Translate Ankündigungen}"
Selected="Tabitem_Selected" />
</dxa:AccordionItem>
<dxa:AccordionItem Header="{markup:Translate Klienten}" Foreground="{StaticResource TabItemTextBrush}" >
<dxa:AccordionItem Header="{markup:Translate Behinderungskategorien}" Name="TabitemDisablityTypes" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Betreuungsarten}" Name="TabitemCustomerCareTypes" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Gründe für Beendigung der Betreuung}" Name="TabitemTerminationReasons" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Medikamentenarten}" Name="TabitemMedikamentenarten" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Rollen des Umfeldes}" Name="TabitemEnvironmentRoles" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Vermittlung}" Name="TabitemPlacementObjectives" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{t:Translate Falldaten}" Foreground="Black" Name="TabitemFalldaten">
<dxa:AccordionItem Header="{markup:Translate Auftragsherkunft}" Name="TabitemAuftragsherkunft" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Vermittlungsgrundlage}" Name="TabitemVermittlungsgrundlage" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Foreground="{StaticResource TabItemTextBrush}" Header="{markup:Translate Klienten}">
<dxa:AccordionItem
Name="TabitemDisablityTypes"
Foreground="Black"
Header="{markup:Translate Behinderungskategorien}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemCustomerCareTypes"
Foreground="Black"
Header="{markup:Translate Betreuungsarten}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemTerminationReasons"
Foreground="Black"
Header="{markup:Translate Gründe für Beendigung der Betreuung}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemMedikamentenarten"
Foreground="Black"
Header="{markup:Translate Medikamentenarten}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemEnvironmentRoles"
Foreground="Black"
Header="{markup:Translate Rollen des Umfeldes}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemPlacementObjectives"
Foreground="Black"
Header="{markup:Translate Vermittlung}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemFalldaten"
Foreground="Black"
Header="{t:Translate Falldaten}">
<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>
</dxa:AccordionItem>
<dxa:AccordionItem Header="{t:Translate MitarbeiterPlural}" Foreground="{StaticResource TabItemTextBrush}">
<dxa:AccordionItem Header="{markup:Translate Qualifikationen}" Name="TabitemQualificationTypes" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Beschäftigungsarten}" Name="TabitemEmploymentTypes" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Qualifikationsbedarf}" Name="TabitemQualifikationsbedarf" Selected="Tabitem_Selected" Foreground="Black" Visibility="Collapsed"/>
<dxa:AccordionItem Header="{markup:Translate Rollen des Personals}" Name="TabitemRoles" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Schwerpunkte des Personals}" Name="TabitemActivityFocus" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Überstunden Auszahlungsarten}" Name="TabitemAuszahlungsarten" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Vertragsarten}" Name="TabitemContracttypes" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Foreground="{StaticResource TabItemTextBrush}" Header="{t:Translate MitarbeiterPlural}">
<dxa:AccordionItem
Name="TabitemQualificationTypes"
Foreground="Black"
Header="{markup:Translate Qualifikationen}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemEmploymentTypes"
Foreground="Black"
Header="{markup:Translate Beschäftigungsarten}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemQualifikationsbedarf"
Foreground="Black"
Header="{markup:Translate Qualifikationsbedarf}"
Selected="Tabitem_Selected"
Visibility="Collapsed" />
<dxa:AccordionItem
Name="TabitemRoles"
Foreground="Black"
Header="{markup:Translate Rollen des Personals}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemActivityFocus"
Foreground="Black"
Header="{markup:Translate Schwerpunkte des Personals}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemAuszahlungsarten"
Foreground="Black"
Header="{markup:Translate Überstunden Auszahlungsarten}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemContracttypes"
Foreground="Black"
Header="{markup:Translate Vertragsarten}"
Selected="Tabitem_Selected" />
</dxa:AccordionItem>
<dxa:AccordionItem Header="{markup:Translate Personen}" Foreground="{StaticResource TabItemTextBrush}">
<dxa:AccordionItem Header="{markup:Translate Aufenthaltsstatus}" Name="TabitemAufenthaltsstatus" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Funktionen}" Name="TabitemFunctions" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Nationalitäten}" Name="TabitemNationality" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Titel}" Name="TabitemTitles" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Foreground="{StaticResource TabItemTextBrush}" Header="{markup:Translate Personen}">
<dxa:AccordionItem
Name="TabitemAufenthaltsstatus"
Foreground="Black"
Header="{markup:Translate Aufenthaltsstatus}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemFunctions"
Foreground="Black"
Header="{markup:Translate Funktionen}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemNationality"
Foreground="Black"
Header="{markup:Translate Nationalitäten}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemTitles"
Foreground="Black"
Header="{markup:Translate Titel}"
Selected="Tabitem_Selected" />
</dxa:AccordionItem>
<dxa:AccordionItem Header="{markup:Translate Zeiterfassung}" Foreground="{StaticResource TabItemTextBrush}">
<dxa:AccordionItem Header="{markup:Translate Angebote}" Name="TabitemAdditionalServiceRegions" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Bereiche}" Name="TabitemAdditionalServices" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Bewertungsskala}" Name="TabitemRatingTypes" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Dokumentationsfelder}" Name="TabitemDokumenttype" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Leistungskategorien}" Name="TabitemServiceCategories" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Leistungen}" Name="TabitemServiceDescriptions" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Punktebogen Werte}" Name="TabitemAssessmentSheetValues" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Punktebogen Kategorien}" Name="TabitemAssessmentSheetCategories" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Textbausteine}" Name="TabitemTextbausteine" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Foreground="{StaticResource TabItemTextBrush}" Header="{markup:Translate Zeiterfassung}">
<dxa:AccordionItem
Name="TabitemAdditionalServiceRegions"
Foreground="Black"
Header="{markup:Translate Angebote}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemAdditionalServices"
Foreground="Black"
Header="{markup:Translate Bereiche}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemRatingTypes"
Foreground="Black"
Header="{markup:Translate Bewertungsskala}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemDokumenttype"
Foreground="Black"
Header="{markup:Translate Dokumentationsfelder}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemServiceCategories"
Foreground="Black"
Header="{markup:Translate Leistungskategorien}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemServiceDescriptions"
Foreground="Black"
Header="{markup:Translate Leistungen}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemAssessmentSheetValues"
Foreground="Black"
Header="{markup:Translate Punktebogen Werte}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemAssessmentSheetCategories"
Foreground="Black"
Header="{markup:Translate Punktebogen Kategorien}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemTextbausteine"
Foreground="Black"
Header="{markup:Translate Textbausteine}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem Header="{markup:Translate Ziele und Maßnahmen}" Name="TabitemGoalcategories" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Maßnahmenkatalog}" Name="TabitemMassnahmen" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem
Name="TabitemGoalcategories"
Foreground="Black"
Header="{markup:Translate Ziele und Maßnahmen}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemMassnahmen"
Foreground="Black"
Header="{markup:Translate Maßnahmenkatalog}"
Selected="Tabitem_Selected" />
@@ -100,45 +261,110 @@
</dxa:AccordionItem>
<dxa:AccordionItem Header="{markup:Translate Kalender}" Foreground="{StaticResource TabItemTextBrush}">
<dxa:AccordionItem Header="{markup:Translate Ressourcenkategorien}" Name="TabitemResourceCategories" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Ressource}" Name="TabitemResources" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Foreground="{StaticResource TabItemTextBrush}" Header="{markup:Translate Kalender}">
<dxa:AccordionItem
Name="TabitemResourceCategories"
Foreground="Black"
Header="{markup:Translate Ressourcenkategorien}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemResources"
Foreground="Black"
Header="{markup:Translate Ressource}"
Selected="Tabitem_Selected" />
</dxa:AccordionItem>
<dxa:AccordionItem Header="Sonstiges" Foreground="{StaticResource TabItemTextBrush}">
<dxa:AccordionItem Header="{markup:Translate Abwesenheitskategorien}" Name="TabitemAbsenceCategories" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Budgets}" Name="TabitemBudgets" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Preise}" Name="TabitemPreise" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Dienste}" Name="TabitemDienste" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Finanzkategorien}" Name="TabitemFinazCategories" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Notizenkategorie}" Name="TabitemNotizenkategorie" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Header="{markup:Translate Schulbegleitender Dienst}" Name="TabitemSbd" Selected="Tabitem_Selected" Foreground="Black"/>
<dxa:AccordionItem Foreground="{StaticResource TabItemTextBrush}" Header="Sonstiges">
<dxa:AccordionItem
Name="TabitemAbsenceCategories"
Foreground="Black"
Header="{markup:Translate Abwesenheitskategorien}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemBudgets"
Foreground="Black"
Header="{markup:Translate Budgets}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemPreise"
Foreground="Black"
Header="{markup:Translate Preise}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemDienste"
Foreground="Black"
Header="{markup:Translate Dienste}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemFinazCategories"
Foreground="Black"
Header="{markup:Translate Finanzkategorien}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemNotizenkategorie"
Foreground="Black"
Header="{markup:Translate Notizenkategorie}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemSbd"
Foreground="Black"
Header="{markup:Translate Schulbegleitender Dienst}"
Selected="Tabitem_Selected" />
<dxa:AccordionItem
Name="TabitemSozioTherapie"
Foreground="Black"
Header="{markup:Translate Soziotherapie}"
Selected="Tabitem_Selected"
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}" />
</dxa:AccordionItem>
</dxa:AccordionControl>
</Border>
<ScrollViewer Grid.Column="1" VerticalScrollBarVisibility="Auto">
<Border Margin="5" VerticalAlignment="Stretch" x:Name="ContentBorder" >
</Border>
<ScrollViewer
Grid.Column="1"
PreviewMouseWheel="ScrollViewer_PreviewMouseWheel"
VerticalScrollBarVisibility="Auto">
<Border
x:Name="ContentBorder"
Margin="5"
VerticalAlignment="Stretch" />
</ScrollViewer>
</Grid>
<Border Grid.Row="2" Grid.ColumnSpan="3" Height="40" Margin="0,0,0,0" VerticalAlignment="Stretch"
Background="#FF000000">
<Border
Grid.Row="2"
Grid.ColumnSpan="3"
Height="40"
Margin="0,0,0,0"
VerticalAlignment="Stretch"
Background="#FF000000">
<Border.OpacityMask>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#19000000" Offset="0" />
<GradientStop Color="#33FFFFFF" Offset="1" />
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#19000000" />
<GradientStop Offset="1" Color="#33FFFFFF" />
</LinearGradientBrush>
</Border.OpacityMask>
</Border>
<StackPanel Grid.ColumnSpan="3" Grid.Row="2" Orientation="Horizontal" VerticalAlignment="Center"
Height="Auto" Margin="0,5,5,0" HorizontalAlignment="Right">
<Button x:Name="btnSave" Command="ApplicationCommands.Save" Content="Speichern" Margin="0,0,2,0"
Height="25" />
<Button x:Name="btnClose" Command="ApplicationCommands.Close" Content="Schließen" Margin="0,0,0,0"
Height="25" />
<StackPanel
Grid.Row="2"
Grid.ColumnSpan="3"
Height="Auto"
Margin="0,5,5,0"
HorizontalAlignment="Right"
VerticalAlignment="Center"
Orientation="Horizontal">
<Button
x:Name="btnSave"
Height="25"
Margin="0,0,2,0"
Command="ApplicationCommands.Save"
Content="Speichern" />
<Button
x:Name="btnClose"
Height="25"
Margin="0,0,0,0"
Command="ApplicationCommands.Close"
Content="Schließen" />
</StackPanel>
</Grid>
</GroupBox>

View File

@@ -13,413 +13,595 @@ using BeWo.View.Detail;
using BeWo.ViewModel;
using BeWo.ViewModel.ListViewModel;
using DevExpress.Xpf.Accordion;
using BeWo.View.Detail.Administration;
using System.Linq;
using System.Threading.Tasks;
using System.Threading;
namespace BeWo.View.Master
{
public partial class AdministrationView
{
private readonly Dictionary<String, BeWoView> _OpenViews = new Dictionary<String, BeWoView>();
public partial class AdministrationView
{
private readonly Dictionary<string, BeWoView> _OpenViews = new Dictionary<string, BeWoView>();
private BeWoView _SelectedView;
private BeWoView _SelectedView;
private MandatorVM _MandatorVM;
public AdministrationView()
{
InitializeComponent();
//GenerateNewView(TabitemMandator);
Root.SelectedItem = TabitemMandator;
public AdministrationView()
{
InitializeComponent();
//GenerateNewView(TabitemMandator);
this.Loaded += AdministrationView_Loaded;
MouseMove += (s, e) =>
{
var p = e.GetPosition(btnSave);
if (p.X >= 0 && p.X < btnSave.ActualWidth && p.Y >= 0 && p.Y < btnSave.ActualHeight)
{
Root.Focus();
}
};
MouseMove += (s, e) =>
{
var p = e.GetPosition(btnSave);
#region Rechte
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.AssessmentSheet_View))
{
TabitemAssessmentSheetValues.Visibility = Visibility.Collapsed;
TabitemAssessmentSheetCategories.Visibility = Visibility.Collapsed;
}
if (p.X >= 0 && p.X < btnSave.ActualWidth && p.Y >= 0 && p.Y < btnSave.ActualHeight)
{
Root.Focus();
}
};
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.AdditionalService_View))
{
TabitemAdditionalServices.Visibility = Visibility.Collapsed;
TabitemAdditionalServiceRegions.Visibility = Visibility.Collapsed;
}
#region Rechte
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.AssessmentSheet_View))
{
TabitemAssessmentSheetValues.Visibility = Visibility.Collapsed;
TabitemAssessmentSheetCategories.Visibility = Visibility.Collapsed;
}
TabitemAuszahlungsarten.Visibility = BeWoApp.LoggedOnUser.HasRight(UserRightType.OvertimeView)
? Visibility.Visible
: Visibility.Collapsed;
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.AdditionalService_View))
{
TabitemAdditionalServices.Visibility = Visibility.Collapsed;
TabitemAdditionalServiceRegions.Visibility = Visibility.Collapsed;
}
if (!BeWoApp.AppSettings.IsMedicationAllowed)
{
TabitemMedikamentenarten.Visibility = Visibility.Collapsed;
}
TabitemAuszahlungsarten.Visibility = BeWoApp.LoggedOnUser.HasRight(UserRightType.OvertimeView)
? Visibility.Visible
: Visibility.Collapsed;
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.TextbausteineAlleAnsehen) &&
!BeWoApp.LoggedOnUser.HasRight(UserRightType.TextbausteineAlleBearbeiten))
{
TabitemTextbausteine.Visibility = Visibility.Collapsed;
}
if (!BeWoApp.AppSettings.IsMedicationAllowed)
{
TabitemMedikamentenarten.Visibility = Visibility.Collapsed;
}
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.TextbausteineAlleAnsehen) &&
!BeWoApp.LoggedOnUser.HasRight(UserRightType.TextbausteineAlleBearbeiten))
{
TabitemTextbausteine.Visibility = Visibility.Collapsed;
}
if (BeWoApp.Mandator != null && BeWoApp.Mandator.AllowSbd)
{
TabitemSbd.Visibility = Visibility.Visible;
}
else
{
TabitemSbd.Visibility = Visibility.Collapsed;
}
if (BeWoApp.Mandator != null && BeWoApp.Mandator.AllowSbd)
{
TabitemSbd.Visibility = Visibility.Visible;
}
else
{
TabitemSbd.Visibility = Visibility.Collapsed;
}
#if DEBUG
TabitemSbd.Visibility = Visibility.Visible;
TabitemSbd.Visibility = Visibility.Visible;
#endif
if (BeWoApp.AppSettings.ShowDienstplanung)
{
TabitemDienste.Visibility = Visibility.Visible;
}
else
{
TabitemDienste.Visibility = Visibility.Collapsed;
}
//if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.ChatAdminSettings) || !BeWoApp.AppSettings.ShowOwnChatSettings)
//{
// TabitemOwnChatSettings.Visibility = Visibility.Collapsed;
//}
if (BeWoApp.AppSettings.ShowDienstplanung)
{
TabitemDienste.Visibility = Visibility.Visible;
}
else
{
TabitemDienste.Visibility = Visibility.Collapsed;
}
//if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.ChatAdminSettings) || !BeWoApp.AppSettings.ShowOwnChatSettings)
//{
// TabitemOwnChatSettings.Visibility = Visibility.Collapsed;
//}
#if DEBUG
TabitemDienste.Visibility = Visibility.Visible;
TabitemDienste.Visibility = Visibility.Visible;
#endif
if (!BeWoApp.AppSettings.ShowWohnhilfe)
{
TabitemFalldaten.Visibility = Visibility.Collapsed;
}
#endregion
if (!BeWoApp.AppSettings.ShowWohnhilfe)
{
TabitemFalldaten.Visibility = Visibility.Collapsed;
}
#endregion
}
}
private void AdministrationView_Loaded(object sender, RoutedEventArgs e)
{
ExpandItems();
}
private void ExpandItems()
{
if (!String.IsNullOrEmpty(BeWoApp.AppSettings.ExpandedAdministrationItems))
{
foreach (AccordionItem item in Root.Items)
{
item.IsExpanded = false;
if (BeWoApp.AppSettings.ExpandedAdministrationItems.Contains(":" + item.Header))
{
item.ExpandSubtree();
item.IsExpanded = true;
}
}
}
else
{
//foreach (AccordionItem item in Root.Items)
//{
// item.IsExpanded = true;
//}
}
}
public override bool IsDirty => SelectedView != null &&
SelectedView.IsDirty;
public BeWoView SelectedView
{
get => _SelectedView;
set
{
if (value == null) return;
private void Tabitem_Selected(object sender, RoutedEventArgs e)
{
if (!(sender is AccordionItem selectedAccordionItem))
return;
_SelectedView = value;
ContentBorder.Child = value;
}
}
public MandatorVM MandatorVM
{
get => _MandatorVM;
set
{
_MandatorVM = value;
if (_OpenViews.ContainsKey(selectedAccordionItem.Header.ToString()))
SetView(_OpenViews[selectedAccordionItem.Header.ToString()]);
else
GenerateNewView(selectedAccordionItem);
}
if (_OpenViews.TryGetValue(TabitemMandator.Header.ToString(), out var cachedView) && cachedView is MandatorView mandatorView)
{
mandatorView.ViewModel = value;
}
public override bool IsDirty => SelectedView != null &&
SelectedView.IsDirty;
if (_OpenViews.TryGetValue(TabitemSozioTherapie.Header.ToString(), out var cachedView2) && cachedView2 is SoziotherapieSettingsView soziotherapieSettingsView)
{
soziotherapieSettingsView.ViewModel = value;
}
}
}
internal override DependencyObject ValidationOnSaveRootElement =>
SelectedView.ValidationOnSaveRootElement;
public BeWoView SelectedView
{
get => _SelectedView;
set
{
if (value == null) return;
private void AdministrationView_Loaded(object sender, RoutedEventArgs e)
{
ExpandItems();
}
private void Tabitem_Selected(object sender, RoutedEventArgs e)
{
if (!(sender is AccordionItem selectedAccordionItem))
return;
_SelectedView = value;
ContentBorder.Child = value;
}
}
var header = selectedAccordionItem.Header.ToString();
if (_OpenViews.TryGetValue(header, out var view))
{
if (view is object)
SetView(_OpenViews[header]);
}
else
GenerateNewView(selectedAccordionItem);
internal override DependencyObject ValidationOnSaveRootElement =>
SelectedView.ValidationOnSaveRootElement;
BeWoApp.AppSettings.SelectedAdministrationItem = header;
}
internal override bool DoSaveCheck()
{
BeWoApp.AppSettings.ExpandedAdministrationItems = "";
// // ALT - BITTE NICHT ENTFERNEN
// // Kann verwendet werden, wenn das cachen vom Asynchronen Speichern doch zu Fehlern führt
//internal override bool DoSaveCheck()
//{
// var selected = (AccordionItem)Root.SelectedItem;
// var header = selected.Header.ToString();
if (Root != null)
{
foreach (AccordionItem ai in Root.Items)
{
if (ai.IsExpanded)
{
BeWoApp.AppSettings.ExpandedAdministrationItems += ":" + ai.Header;
}
}
}
// BeWoApp.AppSettings.ExpandedAdministrationItems = "";
if (!(Root.SelectedItem is AccordionItem item) || !_OpenViews.ContainsKey(item.Header.ToString())) return true;
// if (Root != null)
// {
// foreach (AccordionItem ai in Root.Items)
// {
// if (ai.IsExpanded)
// {
// BeWoApp.AppSettings.ExpandedAdministrationItems += ":" + ai.Header;
// }
// }
// }
var lDoSave = SelectedView.DoSaveCheck();
// if (SelectedView is null)
// return true;
if (!lDoSave || !IsDirty) return lDoSave;
// var lDoSave = SelectedView.DoSaveCheck();
_OpenViews.Remove(((AccordionItem)Root.SelectedItem).Header.ToString());
// // Speicheranfrage abgelehnt
// if (!lDoSave)
// return false;
return true;
}
// // Synchron gespeichert o. keine Änderung
// if (!IsDirty)
// return true;
protected override void Save()
{
SelectedView.SaveData();
}
// if (selected == TabitemMandator || selected == TabitemSozioTherapie)
// {
// _OpenViews.Remove(TabitemMandator.Header.ToString());
// _OpenViews.Remove(TabitemSozioTherapie.Header.ToString());
private void AddView(AccordionItem pTabItem, BeWoView pView)
{
pView.VerticalAlignment = VerticalAlignment.Top;
// MandatorVM = null;
// }
// else
// {
// _OpenViews.Remove(header);
// }
if (ActualHeight > 120 && !(pView is MandatorView))
{
pView.MaxHeight = ActualHeight - 120;
}
// return true;
//}
_OpenViews.Add(pTabItem.Header.ToString(), pView);
SetView(pView);
}
internal override bool DoSaveCheck()
{
var selected = (AccordionItem)Root.SelectedItem;
var header = selected.Header.ToString();
private void SetView(BeWoView newView)
{
if (newView == null || Equals(newView, SelectedView)) return;
BeWoApp.AppSettings.ExpandedAdministrationItems = "";
newView.Margin = new Thickness(0);
if (Root != null)
{
foreach (AccordionItem ai in Root.Items)
{
if (ai.IsExpanded)
{
BeWoApp.AppSettings.ExpandedAdministrationItems += ":" + ai.Header;
}
}
}
if (ContentBorder.Child == null)
SelectedView = newView;
else if (DoSaveCheck())
SelectedView = newView;
}
if (SelectedView is null)
return true;
private void GenerateNewView(AccordionItem accordionItem)
{
if (accordionItem == null)
return;
var lDoSave = SelectedView.DoSaveCheck();
switch (accordionItem.Name)
{
case nameof(TabitemMandator):
ServiceFacade.DoAccountingServiceAsync(s => s.LoadInvoiceNumberList(),
inl => ServiceFacade.DoOperationsServiceAsync(
s => s.GetMandator(),
m =>
this.Dispatch(() =>
{
var vmList = new List<InvoiceNumberVM>();
foreach (var indc in inl)
{
vmList.Add(new InvoiceNumberVM(indc));
}
AddView(TabitemMandator, new MandatorView(new MandatorVM(vmList, m)));
})));
return;
case nameof(TabitemQualificationTypes):
VMFactory.CreateValueListVMAsync(ValueListEntryType.StaffQualificationsType,
r => this.Dispatch(() => AddView(TabitemQualificationTypes, new ValueListView(r))));
return;
case nameof(TabitemQualifikationsbedarf):
VMFactory.CreateValueListVMAsync(ValueListEntryType.QualifikationsBedarf,
r => this.Dispatch(() => AddView(TabitemQualifikationsbedarf, new ValueListView(r))));
return;
case nameof(TabitemAbsenceCategories):
VMFactory.CreateAbsenceReasonListVMAsync(r =>
this.Dispatch(() => AddView(TabitemAbsenceCategories, new AbsenceReasonView(r))));
return;
case nameof(TabitemDisablityTypes):
VMFactory.CreateValueListVMAsync(ValueListEntryType.DisabilityType,
r => this.Dispatch(() => AddView(TabitemDisablityTypes, new ValueListView(r))));
return;
case nameof(TabitemEmploymentTypes):
VMFactory.CreateEmploymentTypeListVMAsync(r =>
this.Dispatch(() => AddView(TabitemEmploymentTypes, new EmploymentTypeView(r))));
return;
case nameof(TabitemCustomerCareTypes):
VMFactory.CreateValueListVMAsync(ValueListEntryType.CustomerCareType,
r => this.Dispatch(() => AddView(TabitemCustomerCareTypes, new ValueListView(r))));
return;
case nameof(TabitemTerminationReasons):
VMFactory.CreateValueListVMAsync(ValueListEntryType.TerminationReasonType,
r => this.Dispatch(() => AddView(TabitemTerminationReasons, new ValueListView(r))));
return;
case nameof(TabitemPlacementObjectives):
VMFactory.CreateValueListVMAsync(ValueListEntryType.PlacementObjectiveType,
r => this.Dispatch(() => AddView(TabitemPlacementObjectives, new ValueListView(r))));
return;
case nameof(TabitemTitles):
VMFactory.CreateValueListVMAsync(ValueListEntryType.TitleType,
r => this.Dispatch(() => AddView(TabitemTitles, new ValueListView(r))));
return;
case nameof(TabitemFunctions):
VMFactory.CreateValueListVMAsync(ValueListEntryType.FunctionType,
personFunctionList => VMFactory.CreateValueListVMAsync(
ValueListEntryType.OrganisationFunctionType,
orgFunctionList =>
this.Dispatch(() => AddView(TabitemFunctions,
new EnvironmentRoleView(personFunctionList, orgFunctionList)))));
return;
case nameof(TabitemNationality):
VMFactory.CreateValueListVMAsync(ValueListEntryType.Nationality,
natList =>
this.Dispatch(() => AddView(TabitemNationality, new ValueListView(natList))));
return;
case nameof(TabitemAufenthaltsstatus):
VMFactory.CreateValueListVMAsync(ValueListEntryType.Aufenthaltsstatus,
orgList =>
this.Dispatch(() => AddView(TabitemAufenthaltsstatus, new AufenthaltsView(orgList))));
return;
case nameof(TabitemFinazCategories):
VMFactory.CreateValueListVMAsync(ValueListEntryType.AccountingTransactionType,
r => this.Dispatch(() => AddView(TabitemFinazCategories, new ValueListView(r))));
return;
case nameof(TabitemServiceCategories):
VMFactory.CreateServiceCategoryListVMAsync(r =>
this.Dispatch(() => AddView(TabitemServiceCategories, new ServiceCategoryView(r))));
return;
case nameof(TabitemServiceDescriptions):
VMFactory.CreateServiceDescriptionListVMAsync(r =>
this.Dispatch(() => AddView(TabitemServiceDescriptions, new ServiceDescriptionView(r))));
return;
case nameof(TabitemTextbausteine):
VMFactory.CreateTextModuleListVMAsync(
r => this.Dispatch(() => AddView(TabitemTextbausteine, new TextbausteinView(r, true))), true,
true);
return;
case nameof(TabitemMedikamentenarten):
VMFactory.CreateMedArtListVMAsync(r =>
this.Dispatch(() => AddView(TabitemMedikamentenarten, new MedikamentenartenView(r))));
return;
case nameof(TabitemRoles):
VMFactory.CreateValueListVMAsync(ValueListEntryType.StaffRoleType,
r => this.Dispatch(() => AddView(TabitemRoles, new ValueListView(r))));
return;
case nameof(TabitemEnvironmentRoles):
VMFactory.CreateValueListVMAsync(ValueListEntryType.EnvironmentPersonType,
personList => VMFactory.CreateValueListVMAsync(ValueListEntryType.RoleInOrganisationType,
roleInOrgList => VMFactory.CreateValueListVMAsync(
ValueListEntryType.EnvironmentOrganisationType,
orgList => VMFactory.CreateValueListVMAsync(ValueListEntryType.RoleInFamily,
roleInFamily => this.Dispatch(() => AddView(TabitemEnvironmentRoles,
new EnvironmentRoleView(personList, orgList, roleInOrgList, roleInFamily)))))));
return;
case nameof(TabitemActivityFocus):
VMFactory.CreateValueListVMAsync(ValueListEntryType.StaffActivityFocusType,
r => this.Dispatch(() => AddView(TabitemActivityFocus, new ValueListView(r))));
return;
case nameof(TabitemResourceCategories):
VMFactory.CreateValueListVMAsync(ValueListEntryType.ResourceCategory,
r => this.Dispatch(() => AddView(TabitemResourceCategories, new ValueListView(r))));
return;
case nameof(TabitemResources):
VMFactory.CreateResourceListVMAsync(r =>
this.Dispatch(() => AddView(TabitemResources, new RessourceView(r))));
return;
case nameof(TabitemGoalcategories):
VMFactory.CreateGoalCategoryVMAsync(r =>
this.Dispatch(() => AddView(TabitemGoalcategories, new MassnahmenTreeViewView(r))));
return;
case nameof(TabitemMassnahmen):
VMFactory.CreateValueListVMAsync(ValueListEntryType.MassnahmenKatalog,
r => this.Dispatch(() => AddView(TabitemMassnahmen, new ValueListView(r))));
return;
case nameof(TabitemNews):
ServiceFacade.DoEmployeeServiceAsync(s => s.GetAllNewsItems(),
cb => this.Dispatch(() => AddView(TabitemNews, new NewsItemView(new NewsItemListVM(cb)))));
return;
case nameof(TabitemAssessmentSheetValues):
VMFactory.CreateAssessmentSheetValueListVM(m =>
this.Dispatch(() => AddView(TabitemAssessmentSheetValues, new AssessmentSheetValueView(m))));
return;
case nameof(TabitemAssessmentSheetCategories):
VMFactory.CreateAssessmentSheetCategoryListVM(m => this.Dispatch(() =>
AddView(TabitemAssessmentSheetCategories, new AssessmentSheetCategoryView(m))));
return;
case nameof(TabitemAdditionalServices):
VMFactory.CreateAdditionalServiceListVMAsync(r =>
this.Dispatch(() => AddView(TabitemAdditionalServices, new AdditionalServiceAddView(r))));
return;
case nameof(TabitemAdditionalServiceRegions):
VMFactory.CreateAdditionalServiceRegionListVMAsync(r =>
this.Dispatch(
() => AddView(TabitemAdditionalServiceRegions, new AdditionalServiceRegionView(r))));
return;
case nameof(TabitemAuszahlungsarten):
VMFactory.CreateAuszahlungsartenListVMAsync(r =>
this.Dispatch(() => AddView(TabitemAuszahlungsarten, new AuszahlungsartenAddView(r))));
return;
case nameof(TabitemDokumenttype):
VMFactory.CreateValueListVMAsync(ValueListEntryType.DocumentType,
r => this.Dispatch(() => AddView(TabitemDokumenttype, new DokumentationstypView(r))));
return;
case nameof(TabitemSbd):
VMFactory.CreateSbdAdminVMAsync(r => this.Dispatch(() => AddView(TabitemSbd, new SbdAdminView(r))));
return;
case nameof(TabitemContracttypes):
VMFactory.CreateValueListVMAsync(ValueListEntryType.ContractType,
r => this.Dispatch(() => AddView(TabitemContracttypes, new ValueListView(r))));
return;
case nameof(TabitemBudgets):
VMFactory.CreateBudgetListVMAsync(r =>
this.Dispatch(() => AddView(TabitemBudgets, new BudgetView(r))));
return;
case nameof(TabitemPreise):
VMFactory.CreatePreisListVMAsync(r =>
this.Dispatch(() => AddView(TabitemPreise, new PreisView(r))));
return;
case nameof(TabitemDienste):
VMFactory.CreateDienstListVMAsync(r =>
this.Dispatch(() => AddView(TabitemDienste, new DienstView(r))));
return;
case nameof(TabitemNotizenkategorie):
VMFactory.CreateValueListVMAsync(ValueListEntryType.NotizenKategorieEmployee,
notizEmpList => VMFactory.CreateValueListVMAsync(ValueListEntryType.NotizenKategorieCustomer,
notizCosList => this.Dispatch(() => AddView(TabitemNotizenkategorie, new NotizenKategorieView(notizEmpList, notizCosList)))));
return;
case nameof(TabitemRatingTypes):
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;
}
// Speicheranfrage abgelehnt
if (!lDoSave)
return false;
throw new ArgumentOutOfRangeException(nameof(accordionItem));
}
}
// Synchron gespeichert o. keine Änderung
if (!IsDirty)
return true;
// Asynchrones speichern
//if (ServiceFacade.IsWaiting())
if(false)
{
//Task.Run(() => ServiceFacade.WaitUntilAsyncIsFinished((s) => DoSaveCheckCallback(s, selected, header)));
}
// Verwerfen
else
{
DoSaveCheckCallback(false, selected, header);
}
return true;
}
private void DoSaveCheckCallback(bool success, AccordionItem selected, string header)
{
Monitor.Enter(_OpenViews);
if (!success || _OpenViews[header].IsDirty)
{
if (selected == TabitemMandator || selected == TabitemSozioTherapie)
{
_OpenViews.Remove(TabitemMandator.Header.ToString());
_OpenViews.Remove(TabitemSozioTherapie.Header.ToString());
_MandatorVM = null;
}
else
{
_OpenViews.Remove(header);
}
}
Monitor.Exit(_OpenViews);
}
protected override void Save()
{
SelectedView.SaveData();
}
private void ExpandItems()
{
if (!String.IsNullOrEmpty(BeWoApp.AppSettings.ExpandedAdministrationItems))
{
foreach (AccordionItem item in Root.Items)
{
item.IsExpanded = false;
if (BeWoApp.AppSettings.ExpandedAdministrationItems.Contains(":" + item.Header))
{
item.ExpandSubtree();
item.IsExpanded = true;
}
}
}
else
{
//foreach (AccordionItem item in Root.Items)
//{
// item.IsExpanded = true;
//}
}
if (BeWoApp.AppSettings.SelectedAdministrationItem is string selected)
{
Root.SelectedItem = searchAccordionItem(selected);
}
else
{
Root.SelectedItem = TabitemMandator;
}
}
private void AddView(AccordionItem pTabItem, BeWoView pView)
{
pView.VerticalAlignment = VerticalAlignment.Top;
if (ActualHeight > 120 && !(pView is MandatorView))
{
pView.MaxHeight = ActualHeight - 120;
}
_OpenViews[pTabItem.Header.ToString()] = pView;
SetView(pView);
}
private void SetView(BeWoView newView)
{
if (newView == null || Equals(newView, SelectedView)) return;
newView.Margin = new Thickness(0);
if (ContentBorder.Child == null || DoSaveCheck())
{
SelectedView = newView;
//ServiceFacade.WaitUntilAsyncIsFinished((s) => Dispatcher.Invoke(() => SelectedView = newView));
}
}
private void GenerateNewView(AccordionItem accordionItem)
{
if (accordionItem == null)
return;
var header = accordionItem.Header.ToString();
if (_OpenViews.TryGetValue(header, out var view))
{
return;
}
else
{
_OpenViews.Add(header, null);
}
switch (accordionItem.Name)
{
case nameof(TabitemMandator):
CheckMandatorVM(() => AddView(TabitemMandator, new MandatorView(this)));
return;
case nameof(TabitemQualificationTypes):
VMFactory.CreateValueListVMAsync(ValueListEntryType.StaffQualificationsType,
r => this.Dispatch(() => AddView(TabitemQualificationTypes, new ValueListView(r))));
return;
case nameof(TabitemQualifikationsbedarf):
VMFactory.CreateValueListVMAsync(ValueListEntryType.QualifikationsBedarf,
r => this.Dispatch(() => AddView(TabitemQualifikationsbedarf, new ValueListView(r))));
return;
case nameof(TabitemAbsenceCategories):
VMFactory.CreateAbsenceReasonListVMAsync(r =>
this.Dispatch(() => AddView(TabitemAbsenceCategories, new AbsenceReasonView(r))));
return;
case nameof(TabitemDisablityTypes):
VMFactory.CreateValueListVMAsync(ValueListEntryType.DisabilityType,
r => this.Dispatch(() => AddView(TabitemDisablityTypes, new ValueListView(r))));
return;
case nameof(TabitemEmploymentTypes):
VMFactory.CreateEmploymentTypeListVMAsync(r =>
this.Dispatch(() => AddView(TabitemEmploymentTypes, new EmploymentTypeView(r))));
return;
case nameof(TabitemCustomerCareTypes):
VMFactory.CreateValueListVMAsync(ValueListEntryType.CustomerCareType,
r => this.Dispatch(() => AddView(TabitemCustomerCareTypes, new ValueListView(r))));
return;
case nameof(TabitemTerminationReasons):
VMFactory.CreateValueListVMAsync(ValueListEntryType.TerminationReasonType,
r => this.Dispatch(() => AddView(TabitemTerminationReasons, new ValueListView(r))));
return;
case nameof(TabitemPlacementObjectives):
VMFactory.CreateValueListVMAsync(ValueListEntryType.PlacementObjectiveType,
r => this.Dispatch(() => AddView(TabitemPlacementObjectives, new ValueListView(r))));
return;
case nameof(TabitemTitles):
VMFactory.CreateValueListVMAsync(ValueListEntryType.TitleType,
r => this.Dispatch(() => AddView(TabitemTitles, new ValueListView(r))));
return;
case nameof(TabitemFunctions):
VMFactory.CreateValueListVMAsync(ValueListEntryType.FunctionType,
personFunctionList => VMFactory.CreateValueListVMAsync(
ValueListEntryType.OrganisationFunctionType,
orgFunctionList =>
this.Dispatch(() => AddView(TabitemFunctions,
new EnvironmentRoleView(personFunctionList, orgFunctionList)))));
return;
case nameof(TabitemNationality):
VMFactory.CreateValueListVMAsync(ValueListEntryType.Nationality,
natList =>
this.Dispatch(() => AddView(TabitemNationality, new ValueListView(natList))));
return;
case nameof(TabitemAufenthaltsstatus):
VMFactory.CreateValueListVMAsync(ValueListEntryType.Aufenthaltsstatus,
orgList =>
this.Dispatch(() => AddView(TabitemAufenthaltsstatus, new AufenthaltsView(orgList))));
return;
case nameof(TabitemFinazCategories):
VMFactory.CreateValueListVMAsync(ValueListEntryType.AccountingTransactionType,
r => this.Dispatch(() => AddView(TabitemFinazCategories, new ValueListView(r))));
return;
case nameof(TabitemServiceCategories):
VMFactory.CreateServiceCategoryListVMAsync(r =>
this.Dispatch(() => AddView(TabitemServiceCategories, new ServiceCategoryView(r))));
return;
case nameof(TabitemServiceDescriptions):
VMFactory.CreateServiceDescriptionListVMAsync(r =>
this.Dispatch(() => AddView(TabitemServiceDescriptions, new ServiceDescriptionView(r))));
return;
case nameof(TabitemTextbausteine):
VMFactory.CreateTextModuleListVMAsync(
r => this.Dispatch(() => AddView(TabitemTextbausteine, new TextbausteinView(r, true))), true,
true);
return;
case nameof(TabitemMedikamentenarten):
VMFactory.CreateMedArtListVMAsync(r =>
this.Dispatch(() => AddView(TabitemMedikamentenarten, new MedikamentenartenView(r))));
return;
case nameof(TabitemRoles):
VMFactory.CreateValueListVMAsync(ValueListEntryType.StaffRoleType,
r => this.Dispatch(() => AddView(TabitemRoles, new ValueListView(r))));
return;
case nameof(TabitemEnvironmentRoles):
VMFactory.CreateValueListVMAsync(ValueListEntryType.EnvironmentPersonType,
personList => VMFactory.CreateValueListVMAsync(ValueListEntryType.RoleInOrganisationType,
roleInOrgList => VMFactory.CreateValueListVMAsync(
ValueListEntryType.EnvironmentOrganisationType,
orgList => VMFactory.CreateValueListVMAsync(ValueListEntryType.RoleInFamily,
roleInFamily => this.Dispatch(() => AddView(TabitemEnvironmentRoles,
new EnvironmentRoleView(personList, orgList, roleInOrgList, roleInFamily)))))));
return;
case nameof(TabitemActivityFocus):
VMFactory.CreateValueListVMAsync(ValueListEntryType.StaffActivityFocusType,
r => this.Dispatch(() => AddView(TabitemActivityFocus, new ValueListView(r))));
return;
case nameof(TabitemResourceCategories):
VMFactory.CreateValueListVMAsync(ValueListEntryType.ResourceCategory,
r => this.Dispatch(() => AddView(TabitemResourceCategories, new ValueListView(r))));
return;
case nameof(TabitemResources):
VMFactory.CreateResourceListVMAsync(r =>
this.Dispatch(() => AddView(TabitemResources, new RessourceView(r))));
return;
case nameof(TabitemGoalcategories):
VMFactory.CreateGoalCategoryVMAsync(r =>
this.Dispatch(() => AddView(TabitemGoalcategories, new MassnahmenTreeViewView(r))));
return;
case nameof(TabitemMassnahmen):
VMFactory.CreateValueListVMAsync(ValueListEntryType.MassnahmenKatalog,
r => this.Dispatch(() => AddView(TabitemMassnahmen, new ValueListView(r))));
return;
case nameof(TabitemNews):
ServiceFacade.DoEmployeeServiceAsync(s => s.GetAllNewsItems(),
cb => this.Dispatch(() => AddView(TabitemNews, new NewsItemView(new NewsItemListVM(cb)))));
return;
case nameof(TabitemAssessmentSheetValues):
VMFactory.CreateAssessmentSheetValueListVM(m =>
this.Dispatch(() => AddView(TabitemAssessmentSheetValues, new AssessmentSheetValueView(m))));
return;
case nameof(TabitemAssessmentSheetCategories):
VMFactory.CreateAssessmentSheetCategoryListVM(m => this.Dispatch(() =>
AddView(TabitemAssessmentSheetCategories, new AssessmentSheetCategoryView(m))));
return;
case nameof(TabitemAdditionalServices):
VMFactory.CreateAdditionalServiceListVMAsync(r =>
this.Dispatch(() => AddView(TabitemAdditionalServices, new AdditionalServiceAddView(r))));
return;
case nameof(TabitemAdditionalServiceRegions):
VMFactory.CreateAdditionalServiceRegionListVMAsync(r =>
this.Dispatch(
() => AddView(TabitemAdditionalServiceRegions, new AdditionalServiceRegionView(r))));
return;
case nameof(TabitemAuszahlungsarten):
VMFactory.CreateAuszahlungsartenListVMAsync(r =>
this.Dispatch(() => AddView(TabitemAuszahlungsarten, new AuszahlungsartenAddView(r))));
return;
case nameof(TabitemDokumenttype):
VMFactory.CreateValueListVMAsync(ValueListEntryType.DocumentType,
r => this.Dispatch(() => AddView(TabitemDokumenttype, new DokumentationstypView(r))));
return;
case nameof(TabitemSbd):
VMFactory.CreateSbdAdminVMAsync(r => this.Dispatch(() => AddView(TabitemSbd, new SbdAdminView(r))));
return;
case nameof(TabitemContracttypes):
VMFactory.CreateValueListVMAsync(ValueListEntryType.ContractType,
r => this.Dispatch(() => AddView(TabitemContracttypes, new ValueListView(r))));
return;
case nameof(TabitemBudgets):
VMFactory.CreateBudgetListVMAsync(r =>
this.Dispatch(() => AddView(TabitemBudgets, new BudgetView(r))));
return;
case nameof(TabitemPreise):
VMFactory.CreatePreisListVMAsync(r =>
this.Dispatch(() => AddView(TabitemPreise, new PreisView(r))));
return;
case nameof(TabitemDienste):
VMFactory.CreateDienstListVMAsync(r =>
this.Dispatch(() => AddView(TabitemDienste, new DienstView(r))));
return;
case nameof(TabitemNotizenkategorie):
VMFactory.CreateValueListVMAsync(ValueListEntryType.NotizenKategorieEmployee,
notizEmpList => VMFactory.CreateValueListVMAsync(ValueListEntryType.NotizenKategorieCustomer,
notizCosList => this.Dispatch(() => AddView(TabitemNotizenkategorie, new NotizenKategorieView(notizEmpList, notizCosList)))));
return;
case nameof(TabitemRatingTypes):
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(TabitemSozioTherapie):
CheckMandatorVM(() => AddView(TabitemSozioTherapie, new SoziotherapieSettingsView(this)));
return;
}
throw new ArgumentOutOfRangeException(nameof(accordionItem));
}
private void CheckMandatorVM(Action callbackAddView)
{
if (MandatorVM is object)
{
callbackAddView();
}
else
{
ServiceFacade.DoAccountingServiceAsync(s => s.LoadInvoiceNumberList(),
inl => ServiceFacade.DoOperationsServiceAsync(
s => s.GetMandator(),
m =>
this.Dispatch(() =>
{
var vmList = new List<InvoiceNumberVM>();
foreach (var indc in inl)
{
vmList.Add(new InvoiceNumberVM(indc));
}
MandatorVM = new MandatorVM(vmList, m);
callbackAddView();
})));
}
}
private AccordionItem searchAccordionItem(string header)
{
foreach (var item in Root.Items)
{
var rtn = searchAccordionItem(item as AccordionItem, header);
if (rtn is object)
return rtn;
}
return null;
}
private AccordionItem searchAccordionItem(AccordionItem accordion, string header)
{
if (accordion is null)
return null;
if (!accordion.Items.Any())
{
if (header == accordion.Header.ToString())
return accordion;
else
return null;
}
foreach (var item in accordion.Items)
{
var rtn = searchAccordionItem(item as AccordionItem, header);
if (rtn is object)
return rtn;
}
return null;
}
private void ScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
//e.Handled = true;
}
}
}

View File

@@ -65,7 +65,7 @@
<Hyperlink TargetName="_NewWindow" Foreground="#FFFFFFFF" Click="Hyperlink_AusArchivHolen_Click" Tag="{Binding}">Aus Archiv holen</Hyperlink>
</TextBlock>
<TextBlock VerticalAlignment="Center" Grid.Column="6" Grid.Row="0" Grid.RowSpan="2">
<Hyperlink TargetName="_NewWindow" Foreground="#FFFFFFFF" NavigateUri="{Binding Converter={StaticResource CustomerDCPrintURLConverter}}" RequestNavigate="Hyperlink_OnRequestNavigate">Drucken</Hyperlink>
<Hyperlink TargetName="_NewWindow" Foreground="#FFFFFFFF" NavigateUri="{Binding Converter={StaticResource CustomerDCPrintURLConverter}}" RequestNavigate="Hyperlink_OnRequestNavigate" Tag="{Binding}">Drucken</Hyperlink>
</TextBlock>
</Grid>
</Border>

View File

@@ -24,6 +24,7 @@ using BS.Shared.Translation;
using Microsoft.Win32;
using BeWo.AI;
using BeWo.View.Document;
namespace BeWo.View.Navigation
{
@@ -357,9 +358,27 @@ namespace BeWo.View.Navigation
private void Hyperlink_OnRequestNavigate(object sender, RequestNavigateEventArgs e)
{
BeWoUtils.NavigateToReportUri(((Hyperlink)sender).NavigateUri.ToString(), "Druckvorschau");
//var alleVorlagen = ServiceFacade.DoOperationsServiceSync(s => s.Getvor());
var alleVorlagen = ServiceFacade.DoOperationsServiceSync(s => s.GetDokumentvorlagenForType(TableID.Customer));
if (alleVorlagen.Count > 0)
{
var c = (CompactCustomerDC)((Hyperlink)sender).Tag;
DokumentViewHelper.OpenTemplateSelectionDialog(alleVorlagen, TableID.Customer, c.CustomerOid);
}
else
{
BeWoUtils.NavigateToReportUri(((Hyperlink)sender).NavigateUri.ToString(), "Druckvorschau");
}
//var folderDCs = VMFactory.CreateFolderList(TableID.Vorlagentabelle, (long)vm.DocTreeItemOid);
}
private void MainNavigationView_OnOpenMailMergeWindow(List<IFilterableDC> allCustomers, IFilterableDC selectedCustomer)
{
var mmw = new MailMergeWindow(this, typeof(CustomerDC), objectList.ToList(), selectedCustomer) { Sorter = new CustomerSorter() };

View File

@@ -1,119 +1,310 @@
<localView:BeWoView x:Class="BeWo.View.Navigation.MainNavigationView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns:local="clr-namespace:BeWo.Core"
xmlns:localView="clr-namespace:BeWo.View"
xmlns:localNavView="clr-namespace:BeWo.View.Navigation"
Focusable="True" Loaded="OnLoaded">
<localView:BeWoView.CommandBindings>
<CommandBinding Command="local:BeWoCommands.Excel" Executed="ExcelCommand_Executed" CanExecute="ExcelCommand_CanExecute" />
<CommandBinding Command="ApplicationCommands.Open" Executed="OpenCommand_Executed" CanExecute="OpenCommand_CanExecute" />
</localView:BeWoView.CommandBindings>
<uc:ShadowChrome>
<GroupBox x:Name="mainGroup" Style="{StaticResource MainContentGroupBoxStyle}" Header="MainGroup">
<GroupBox x:Name="contentGroup" Style="{StaticResource CustomerNavigationStyle}">
<GroupBox.Header>
<StackPanel Orientation="Horizontal">
<Label Content="Suche" Foreground="#FFFFFFFF" FontSize="14" Margin="0,-5,0,0" />
<TextBox Height="20" x:Name="textbox_search" MinWidth="90" Margin="3,-5,0,0" Width="300" TabIndex="0" Template="{DynamicResource SearchTextBoxTemplate}" BorderThickness="0,0,0,0" />
<Button x:Name="ReloadButton" Click="ReloadButton_OnClick" Margin="5,-3,0,0" ToolTip="Liste aktualisieren" Width="36" Height="24">
<localView:BeWoView
x:Class="BeWo.View.Navigation.MainNavigationView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:BeWo.Core"
xmlns:localNavView="clr-namespace:BeWo.View.Navigation"
xmlns:localView="clr-namespace:BeWo.View"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
Focusable="True"
Loaded="OnLoaded">
<localView:BeWoView.CommandBindings>
<CommandBinding
CanExecute="ExcelCommand_CanExecute"
Command="local:BeWoCommands.Excel"
Executed="ExcelCommand_Executed" />
<CommandBinding
CanExecute="OpenCommand_CanExecute"
Command="ApplicationCommands.Open"
Executed="OpenCommand_Executed" />
</localView:BeWoView.CommandBindings>
<uc:ShadowChrome>
<GroupBox
x:Name="mainGroup"
Header="MainGroup"
Style="{StaticResource MainContentGroupBoxStyle}">
<GroupBox x:Name="contentGroup" Style="{StaticResource CustomerNavigationStyle}">
<GroupBox.Header>
<StackPanel Orientation="Horizontal">
<Label
Margin="0,-5,0,0"
Content="Suche"
FontSize="14"
Foreground="#FFFFFFFF" />
<TextBox
x:Name="textbox_search"
Width="300"
Height="20"
MinWidth="90"
Margin="3,-5,0,0"
BorderThickness="0,0,0,0"
TabIndex="0"
Template="{DynamicResource SearchTextBoxTemplate}" />
<Button
x:Name="ReloadButton"
Width="36"
Height="24"
Margin="5,-3,0,0"
Click="ReloadButton_OnClick"
ToolTip="Liste aktualisieren">
<Button.Template>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Image x:Name="imgDisabled" Source="..\..\Ressources\Icons\SymbolRefresh32Disabled.png" />
<Image x:Name="imgEnabled" Source="..\..\Ressources\Icons\SymbolRefresh32.png" Opacity="0"/>
<Image
x:Name="imgEnabled"
Opacity="0"
Source="..\..\Ressources\Icons\SymbolRefresh32.png" />
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Opacity" TargetName="imgEnabled" Value="1"/>
<Setter TargetName="imgEnabled" Property="Opacity" Value="1" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
</Button>
</StackPanel>
</GroupBox.Header>
<Grid x:Name="mainContentGrid" Margin="0,3,0,0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="250" />
</Grid.ColumnDefinitions>
<StackPanel Orientation="Vertical" Margin="10,0,0,0">
<TextBlock x:Name="searchCountLabel" HorizontalAlignment="Left" Text="{Binding Path=Items.Count, Converter={StaticResource StringFormatConverter}, ConverterParameter=Suchergebnisse: \{0\}, ElementName=objectListBox}" FontFamily="Microsoft Sans Serif" FontSize="14" />
<StackPanel Orientation="Horizontal" x:Name="sortPanel">
<TextBlock x:Name="sortLabel" HorizontalAlignment="Left" Text="Sortiert nach" FontFamily="Microsoft Sans Serif" FontSize="12" Margin="0,2,0,0" />
<ComboBox x:Name="sortCombo" HorizontalAlignment="Left" FontFamily="Microsoft Sans Serif" FontSize="12" Margin="10,0,0,0" MinWidth="100" DisplayMemberPath="DisplayName" SelectionChanged="sortCombo_SelectionChanged" Style="{DynamicResource SortComboBox}" />
<ToggleButton Style="{DynamicResource SortDirectionToggleButtonStyle}" x:Name="sortDirectionToggleButton" Click="sortDirectionToggleButton_Click" />
<CheckBox FontFamily="Microsoft Sans Serif" FontSize="12" Margin="10,0,0,0" Content=" Archivierte Objekte anzeigen" VerticalAlignment="Center" x:Name="chkShowArchived" Foreground="{DynamicResource MainGroupBoxForegroundBrush}" />
<CheckBox FontFamily="Microsoft Sans Serif" FontSize="12" Margin="10,0,0,0" Content=" Gelöschte Objekte anzeigen" VerticalAlignment="Center" x:Name="chkShowDeleted" Foreground="{DynamicResource MainGroupBoxForegroundBrush}" />
</StackPanel>
</StackPanel>
<ListBox x:Name="objectListBox" IsSynchronizedWithCurrentItem="True" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2" MinWidth="200" MinHeight="200" Margin="10,10,0,20" TabIndex="1" AlternationCount="-1" Style="{StaticResource NavigationListStyle}" Background="{x:Null}" MouseDoubleClick="objectListBox_MouseDoubleClick" SelectionChanged="objectListBox_SelectionChanged">
<ListBox.ItemsSource>
<MultiBinding x:Name="ListBoxMultiBinding" Converter="{StaticResource FilterDCConverter}">
<Binding />
<Binding ElementName="textbox_search" Path="Text" />
<Binding ElementName="chkShowArchived" Path="IsChecked" />
<Binding Path="CustomFilter">
<Binding.RelativeSource>
<RelativeSource Mode="FindAncestor" AncestorType="{x:Type localNavView:MainNavigationView}" />
</Binding.RelativeSource>
</Binding>
<Binding ElementName="chkShowDeleted" Path="IsChecked" />
</MultiBinding>
</ListBox.ItemsSource>
</ListBox>
<Grid Grid.Row="0" Grid.RowSpan="2" Grid.Column="3" Margin="20,0,5,0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<StackPanel>
<TextBlock HorizontalAlignment="Left" Text=" Zuletzt angesehen" FontFamily="Microsoft Sans Serif" FontSize="14" />
<Path Data="M 0,0 H 250" Stroke="#FFFB6F0E" StrokeThickness="2" Fill="{DynamicResource LightOrangeBrush}" Margin="0,3,0,0" />
<ListBox x:Name="objectHistoryListBox" IsSynchronizedWithCurrentItem="True" MinWidth="200" Margin="0,5,0,20" TabIndex="1" AlternationCount="-1" Style="{StaticResource NavigationListStyle}" Background="{x:Null}" MouseDoubleClick="objectHistoryListBox_MouseDoubleClick" SelectionChanged="objectListBox_SelectionChanged" />
</StackPanel>
<StackPanel x:Name="stackPanle_details" Visibility="Hidden" Grid.Row="1" Margin="0 10 0 0">
<TextBlock HorizontalAlignment="Left" Text="Details
" FontFamily="Microsoft Sans Serif" FontSize="14" />
<Path Data="M 0,0 H 250" Stroke="#FFFB6F0E" StrokeThickness="2" Fill="{DynamicResource LightOrangeBrush}" Margin="0,3,0,0" />
<ContentPresenter x:Name="details_presenter" />
</StackPanel>
</Grid>
<Border Grid.Row="2" Grid.ColumnSpan="3" Grid.Column="0" Height="40" Margin="0,10,0,0" VerticalAlignment="Stretch" Background="#FF000000">
<Border.OpacityMask>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#19000000" Offset="0" />
<GradientStop Color="#33FFFFFF" Offset="1" />
</LinearGradientBrush>
</Border.OpacityMask>
</Border>
<StackPanel Grid.ColumnSpan="3" Grid.Column="0" Grid.Row="2" Orientation="Horizontal" VerticalAlignment="Stretch" Height="40" Margin="5,10,0,0">
<Button x:Name="btnNew" Content="Neu" Style="{StaticResource NavigationToolbarButtonStyle}" Margin="3,0,0,0" Click="btnNew_Click" />
<Button x:Name="btnImport" Visibility="Collapsed" Content="Importieren" Style="{StaticResource NavigationToolbarButtonStyle}" Margin="3,0,0,0" Click="btnImport_Click" />
<Button x:Name="btnCopy" Visibility="Collapsed" Content="Kopieren" Style="{StaticResource NavigationToolbarButtonStyle}" Margin="10,0,0,0" Click="btnCopy_Click" />
<Button x:Name="btnEdit" Content="Öffnen" Style="{StaticResource NavigationToolbarButtonStyle}" Margin="10,0,0,0" Click="btnEdit_Click" />
<Button x:Name="btnArchive" Content="Archivieren" Style="{StaticResource NavigationToolbarButtonStyle}" Margin="10,0,0,0" Click="btnArchive_Click" />
<Button x:Name="btnDelete" Content="Löschen" Style="{StaticResource NavigationToolbarButtonStyle}" Margin="10,0,0,0" Click="btnDelete_Click" />
<Button x:Name="btnOpenAi" Visibility="Collapsed" Content="KI" Style="{StaticResource NavigationToolbarButtonStyle}" Margin="10,0,0,0" Click="btnOpenAi_Click" />
<TextBlock x:Name="textblock_link" VerticalAlignment="Center" Margin="20 0 0 0" FontSize="16">
<Hyperlink x:Name="linkExcelExport" TargetName="newWindow" Foreground="White" RequestNavigate="linkExcelExport_RequestNavigate">Excel Export</Hyperlink>
</TextBlock>
<TextBlock x:Name="textblock_print" VerticalAlignment="Center" Margin="20 0 0 0" FontSize="16">
<Hyperlink x:Name="linkPrint" TargetName="newWindow" Foreground="White" RequestNavigate="linkPrint_RequestNavigate" NavigateUri="http://www.ownsoft.de">Liste drucken</Hyperlink>
</StackPanel>
</GroupBox.Header>
<Grid x:Name="mainContentGrid" Margin="0,3,0,0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="250" />
</Grid.ColumnDefinitions>
<StackPanel Margin="10,0,0,0" Orientation="Vertical">
<TextBlock
x:Name="searchCountLabel"
HorizontalAlignment="Left"
FontFamily="Microsoft Sans Serif"
FontSize="14"
Text="{Binding Path=Items.Count, Converter={StaticResource StringFormatConverter}, ConverterParameter=Suchergebnisse: \{0\}, ElementName=objectListBox}" />
<StackPanel x:Name="sortPanel" Orientation="Horizontal">
<TextBlock
x:Name="sortLabel"
Margin="0,2,0,0"
HorizontalAlignment="Left"
FontFamily="Microsoft Sans Serif"
FontSize="12"
Text="Sortiert nach" />
<ComboBox
x:Name="sortCombo"
MinWidth="100"
Margin="10,0,0,0"
HorizontalAlignment="Left"
DisplayMemberPath="DisplayName"
FontFamily="Microsoft Sans Serif"
FontSize="12"
SelectionChanged="sortCombo_SelectionChanged"
Style="{DynamicResource SortComboBox}" />
<ToggleButton
x:Name="sortDirectionToggleButton"
Click="sortDirectionToggleButton_Click"
Style="{DynamicResource SortDirectionToggleButtonStyle}" />
<CheckBox
x:Name="chkShowArchived"
Margin="10,0,0,0"
VerticalAlignment="Center"
Content=" Archivierte Objekte anzeigen"
FontFamily="Microsoft Sans Serif"
FontSize="12"
Foreground="{DynamicResource MainGroupBoxForegroundBrush}" />
<CheckBox
x:Name="chkShowDeleted"
Margin="10,0,0,0"
VerticalAlignment="Center"
Content=" Gelöschte Objekte anzeigen"
FontFamily="Microsoft Sans Serif"
FontSize="12"
Foreground="{DynamicResource MainGroupBoxForegroundBrush}" />
</StackPanel>
</StackPanel>
<ListBox
x:Name="objectListBox"
Grid.Row="1"
Grid.Column="0"
Grid.ColumnSpan="2"
MinWidth="200"
MinHeight="200"
Margin="10,10,0,20"
AlternationCount="-1"
Background="{x:Null}"
IsSynchronizedWithCurrentItem="True"
MouseDoubleClick="objectListBox_MouseDoubleClick"
SelectionChanged="objectListBox_SelectionChanged"
Style="{StaticResource NavigationListStyle}"
TabIndex="1">
<ListBox.ItemsSource>
<MultiBinding x:Name="ListBoxMultiBinding" Converter="{StaticResource FilterDCConverter}">
<Binding />
<Binding ElementName="textbox_search" Path="Text" />
<Binding ElementName="chkShowArchived" Path="IsChecked" />
<Binding Path="CustomFilter">
<Binding.RelativeSource>
<RelativeSource AncestorType="{x:Type localNavView:MainNavigationView}" Mode="FindAncestor" />
</Binding.RelativeSource>
</Binding>
<Binding ElementName="chkShowDeleted" Path="IsChecked" />
</MultiBinding>
</ListBox.ItemsSource>
</ListBox>
<Grid
Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="3"
Margin="20,0,5,0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<StackPanel>
<TextBlock
HorizontalAlignment="Left"
FontFamily="Microsoft Sans Serif"
FontSize="14"
Text=" Zuletzt angesehen" />
<Path
Margin="0,3,0,0"
Data="M 0,0 H 250"
Fill="{DynamicResource LightOrangeBrush}"
Stroke="#FFFB6F0E"
StrokeThickness="2" />
<ListBox
x:Name="objectHistoryListBox"
MinWidth="200"
Margin="0,5,0,20"
AlternationCount="-1"
Background="{x:Null}"
IsSynchronizedWithCurrentItem="True"
MouseDoubleClick="objectHistoryListBox_MouseDoubleClick"
SelectionChanged="objectListBox_SelectionChanged"
Style="{StaticResource NavigationListStyle}"
TabIndex="1" />
</StackPanel>
<StackPanel
x:Name="stackPanle_details"
Grid.Row="1"
Margin="0,10,0,0"
Visibility="Hidden">
<TextBlock
HorizontalAlignment="Left"
FontFamily="Microsoft Sans Serif"
FontSize="14"
Text="Details " />
<Path
Margin="0,3,0,0"
Data="M 0,0 H 250"
Fill="{DynamicResource LightOrangeBrush}"
Stroke="#FFFB6F0E"
StrokeThickness="2" />
<ContentPresenter x:Name="details_presenter" />
</StackPanel>
</Grid>
<Border
Grid.Row="2"
Grid.Column="0"
Grid.ColumnSpan="3"
Height="40"
Margin="0,10,0,0"
VerticalAlignment="Stretch"
Background="#FF000000">
<Border.OpacityMask>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#19000000" />
<GradientStop Offset="1" Color="#33FFFFFF" />
</LinearGradientBrush>
</Border.OpacityMask>
</Border>
<StackPanel
Grid.Row="2"
Grid.Column="0"
Grid.ColumnSpan="3"
Height="40"
Margin="5,10,0,0"
VerticalAlignment="Stretch"
Orientation="Horizontal">
<Button
x:Name="btnNew"
Margin="3,0,0,0"
Click="btnNew_Click"
Content="Neu"
Style="{StaticResource NavigationToolbarButtonStyle}" />
<Button
x:Name="btnImport"
Margin="3,0,0,0"
Click="btnImport_Click"
Content="Importieren"
Style="{StaticResource NavigationToolbarButtonStyle}"
Visibility="Collapsed" />
<Button
x:Name="btnCopy"
Margin="10,0,0,0"
Click="btnCopy_Click"
Content="Kopieren"
Style="{StaticResource NavigationToolbarButtonStyle}"
Visibility="Collapsed" />
<Button
x:Name="btnEdit"
Margin="10,0,0,0"
Click="btnEdit_Click"
Content="Öffnen"
Style="{StaticResource NavigationToolbarButtonStyle}" />
<Button
x:Name="btnArchive"
Margin="10,0,0,0"
Click="btnArchive_Click"
Content="Archivieren"
Style="{StaticResource NavigationToolbarButtonStyle}" />
<Button
x:Name="btnDelete"
Margin="10,0,0,0"
Click="btnDelete_Click"
Content="Löschen"
Style="{StaticResource NavigationToolbarButtonStyle}" />
<Button
x:Name="btnOpenAi"
Margin="10,0,0,0"
Click="btnOpenAi_Click"
Content="KI"
Style="{StaticResource NavigationToolbarButtonStyle}"
Visibility="Collapsed" />
<TextBlock
x:Name="textblock_link"
Margin="20,0,0,0"
VerticalAlignment="Center"
FontSize="16">
<Hyperlink
x:Name="linkExcelExport"
Foreground="White"
RequestNavigate="linkExcelExport_RequestNavigate"
TargetName="newWindow">
Excel Export
</Hyperlink>
</TextBlock>
<TextBlock
x:Name="textblock_print"
Margin="20,0,0,0"
VerticalAlignment="Center"
FontSize="16">
<Hyperlink
x:Name="linkPrint"
Foreground="White"
NavigateUri="http://www.ownsoft.de"
RequestNavigate="linkPrint_RequestNavigate"
TargetName="newWindow">
Liste drucken
</Hyperlink>
</TextBlock>
<!-- ###CB SERIENBRIEF<Button x:Name="MailMergeButton" Content="Serienbrief drucken" Style="{StaticResource NavigationToolbarButtonStyle}" Margin="10,0,0,0" Click="btnMailMerge_Click" /> -->
</StackPanel>
</Grid>
</GroupBox>
</GroupBox>
</uc:ShadowChrome>
</StackPanel>
</Grid>
</GroupBox>
</GroupBox>
</uc:ShadowChrome>
</localView:BeWoView>

View File

@@ -32,11 +32,16 @@
</Grid.RowDefinitions>
<TextBlock Foreground="Black" FontSize="12" Grid.Column="0" VerticalAlignment="Center" Text="{markup:Translate Hilfeplan:}" />
<TextBlock x:Name="textblockHilfeplan" Foreground="Black" FontSize="12" Grid.Column="0" VerticalAlignment="Center" Text="{markup:Translate Hilfeplan:}" />
<uc:PopUpEdit x:Name="popupedit_CostBeaerer" Width="250" Height="23" Margin="3" Grid.Column="1"
IsReadOnly="True" DeleteButtonVisibility="Collapsed"
PopUpClick="popupedit_CostBeaerer_PopUpClick" MaxWidth="300"
Cursor="Arrow" PreviewMouseDoubleClick="Popupedit_CostBeaerer_OnPreviewMouseDoubleClick"/>
<dxe:CheckEdit x:Name="chkAllSupportConcepts" Margin="3 5 3 3" Foreground="Black" FontSize="12"
Grid.Column="2" Grid.Row="0" VerticalAlignment="Center"
Content="Alle Hilfepläne"
IsChecked="False" Checked="chkAllSupportConcepts_Checked" Unchecked="chkAllSupportConcepts_Unchecked" />
<Popup Margin="10" x:Name="popup_costBearer" StaysOpen="False" Placement="MousePoint" Width="450" Grid.Row="4" Grid.ColumnSpan="5" Height="400" Closed="popup_Closed" Opened="popup_Opened">
<localSearchView:SupportConceptSearchView x:Name="supportconceptsearchview" ItemSelected="SupportConceptSearchView_ItemSelected" SearchMode="All" />
</Popup>

View File

@@ -79,13 +79,30 @@ namespace BeWo.View.Report.Rating
private void LinkPdfExport_OnRequestNavigate(object sender, RequestNavigateEventArgs e)
{
string url = GenerateURL();
BeWoUtils.NavigateToReportUri(url, Translator.Translate("Bewertungsstatistik"));
//System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo((sender as System.Windows.Documents.Hyperlink).NavigateUri.ToString()));
// Wenn das Häkchen für alle Hilfepläne gesetzt ist wird eine andere URL erstellt, in der der Hilfeplan null ist
if (chkAllSupportConcepts.IsChecked.HasValue && chkAllSupportConcepts.IsChecked.Value)
{
string url = GenerateURLForAllSupportConcepts();
BeWoUtils.NavigateToReportUri(url, Translator.Translate("Bewertungsstatistik"));
}
// Sonst Standard
else
{
string url = GenerateURL();
if (!String.IsNullOrEmpty(url))
{
BeWoUtils.NavigateToReportUri(url, Translator.Translate("Bewertungsstatistik"));
}
//System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo((sender as System.Windows.Documents.Hyperlink).NavigateUri.ToString()));
}
}
private string GenerateURL()
{
if (_SelectedSupportConcept == null)
{
return "";
}
string url = "";
url += BeWoApp.SiteOfOrigin + "/ReportView.aspx?";
@@ -144,6 +161,57 @@ namespace BeWo.View.Report.Rating
return url;
}
private string GenerateURLForAllSupportConcepts()
{
string url = "";
url += BeWoApp.SiteOfOrigin + "/ReportView.aspx?";
DateTime? start = SupportConceptRatingView.StartDate;
DateTime? end = SupportConceptRatingView.EndDate;
try
{
// Ist das Häkchen für den gesamten Zeitraum gesetzt, werden auf dem Server Start und Ende auf den ersten bzw. letzten Hilfeplan gesetzt
if (chkTotalTimeSpan.IsChecked == true)
{
SupportConceptRatingView.StartDate = null;
SupportConceptRatingView.EndDate = null;
start = null;
end = null;
}
// Sonst den Wert aus den Datumsfeldern nehmen
else
{
SupportConceptRatingView.StartDate = dp_start.DateTime;
SupportConceptRatingView.EndDate = dp_end.DateTime;
start = dp_start.DateTime;
end = dp_end.DateTime;
}
}
catch
{
// nix
}
if (start != null)
{
url += "&start=" + start;
}
if (end != null)
{
url += "&end=" + end;
}
url += "&type=" + Utils.EnumName(ReportTypes.BewertungsstatistikReport);
url = BeWoWpfUtils.GetHTMLEncodedURL(url);
this.linkPdfExport.NavigateUri = new Uri(url);
return url;
}
private void UpdateRatingView()
{
VMFactory.CreateSupportConceptVMAsync(_SelectedSupportConcept.SupportConceptOid,
@@ -177,7 +245,21 @@ namespace BeWo.View.Report.Rating
}
private void chkAllSupportConcepts_Checked(object sender, RoutedEventArgs e)
{
button_generate.Visibility = Visibility.Hidden;
popupedit_CostBeaerer.Visibility = Visibility.Hidden;
BorderRatingView.Visibility = Visibility.Hidden;
textblockHilfeplan.Visibility = Visibility.Hidden;
GenerateURLForAllSupportConcepts();
}
private void chkAllSupportConcepts_Unchecked(object sender, RoutedEventArgs e)
{
button_generate.Visibility = Visibility.Visible;
popupedit_CostBeaerer.Visibility = Visibility.Visible;
textblockHilfeplan.Visibility = Visibility.Visible;
}
}
}

View File

@@ -17,7 +17,6 @@ namespace BeWo.View.Search
{
public class GenericSearchView<T> : UserControl where T : class, IFilterableDC
{
private readonly ListBox _ResultListBox;
private readonly Grid _Root;
@@ -152,6 +151,11 @@ namespace BeWo.View.Search
ListItemStyle = FindResource("NavigationListStyleWithSampleDescAsToolTip") as Style;
}
}
_ResultListBox.PreviewMouseWheel += (s, e) =>
{
};
}
protected Grid HeaderGrid { get; set; }

View File

@@ -1,95 +1,166 @@
<UserControl x:Class="BeWo.View.Search.MultiEmployeeSearch"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:converter="clr-namespace:BeWo.Scheduler.Converter"
mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300">
<UserControl.Resources>
<converter:CheckBoxConverter x:Key="CheckBoxConverter" />
</UserControl.Resources>
<UserControl
x:Class="BeWo.View.Search.MultiEmployeeSearch"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:converter="clr-namespace:BeWo.Scheduler.Converter"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
d:DesignHeight="300"
d:DesignWidth="300"
mc:Ignorable="d">
<UserControl.Resources>
<converter:CheckBoxConverter x:Key="CheckBoxConverter" />
</UserControl.Resources>
<Grid Background="Black">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label Content="Suche:" Grid.Column="0" Grid.Row="0" Margin="3" Foreground="#FFD2D2D2" VerticalAlignment="Center" />
<TextBox x:Name="SuchTextBox" Grid.Column="1" Grid.Row="0" Margin="0,3,3,3" TextChanged="SuchTextBox_OnPreviewKeyDown" />
<ListBox Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="1" x:Name="listbox_result" ItemsSource="{Binding Path=AngezeigteMitarbeiter, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" HorizontalContentAlignment="Stretch" BorderThickness="0" Margin="2">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Border CornerRadius="5" MinHeight="23" Background="{StaticResource EmployeeContentBrush}" Margin="0,1,3,1" />
<Border x:Name="ItemBorder" CornerRadius="5" MinHeight="23" Background="#FF000000" Margin="0,1,3,1">
<Border.OpacityMask>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#19000000" Offset="0" />
<GradientStop Color="#26000000" Offset="1" />
</LinearGradientBrush>
</Border.OpacityMask>
</Border>
<Border BorderBrush="{x:Null}" Height="23" CornerRadius="5">
<CheckBox Margin="6,0,0,0" VerticalAlignment="Center" Foreground="#FFD2D2D2" FontFamily="Microsoft Sans Serif" Tag="{Binding}" Content="{Binding Path=DetailDescription}" Checked="EmployeeCheckedEvent" Unchecked="EmployeeCheckedEvent" PreviewMouseDown="EmployeeLB_OnClick">
<CheckBox.IsChecked>
<MultiBinding Converter="{StaticResource CheckBoxConverter}" ConverterParameter="Mitarbeiter" UpdateSourceTrigger="PropertyChanged" NotifyOnSourceUpdated="True">
<Binding Path="EmployeeOid" Mode="OneWay" />
<Binding Path="AusgewaehlteMitarbeiter" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type UserControl}}" />
</MultiBinding>
</CheckBox.IsChecked>
</CheckBox>
</Border>
</Grid>
<DataTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="OpacityMask" TargetName="ItemBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#33000000" Offset="0" />
<GradientStop Color="#66000000" Offset="1" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="ListBoxItem.IsSelected" Value="True">
<Setter Property="OpacityMask" TargetName="ItemBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#99000000" Offset="0" />
<GradientStop Color="#CC000000" Offset="1" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="ListBoxItem.IsSelected" Value="True" />
<Condition Property="Selector.IsSelectionActive" Value="False" />
</MultiTrigger.Conditions>
<Setter Property="OpacityMask" TargetName="ItemBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#99000000" Offset="0" />
<GradientStop Color="#B2000000" Offset="1" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</MultiTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Grid Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<CheckBox HorizontalAlignment="Left" VerticalAlignment="Center" Margin="12,3,3,3" Foreground="#FFD2D2D2" Grid.Column="0" Content="Alle auswählen" Checked="AlleSelektierenCBUnChecked" Unchecked="AlleSelektierenCBUnChecked" IsThreeState="False" />
<Button HorizontalAlignment="Right" Grid.Column="1" Margin="3" Content="Schließen" Width="70" Height="25" Command="ApplicationCommands.Close" />
</Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Margin="3"
VerticalAlignment="Center"
Content="Suche:"
Foreground="#FFD2D2D2" />
<TextBox
x:Name="SuchTextBox"
Grid.Row="0"
Grid.Column="1"
Margin="0,3,3,3"
TextChanged="SuchTextBox_OnPreviewKeyDown" />
<ListBox
x:Name="listbox_result"
Grid.Row="1"
Grid.Column="0"
Grid.ColumnSpan="2"
Margin="2"
HorizontalContentAlignment="Stretch"
BorderThickness="0"
ItemsSource="{Binding Path=AngezeigteMitarbeiter, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Border
MinHeight="23"
Margin="0,1,3,1"
Background="{StaticResource EmployeeContentBrush}"
CornerRadius="5" />
<Border
x:Name="ItemBorder"
MinHeight="23"
Margin="0,1,3,1"
Background="#FF000000"
CornerRadius="5">
<Border.OpacityMask>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#19000000" />
<GradientStop Offset="1" Color="#26000000" />
</LinearGradientBrush>
</Border.OpacityMask>
</Border>
<Border
Height="23"
BorderBrush="{x:Null}"
CornerRadius="5">
<CheckBox
Margin="6,0,0,0"
VerticalAlignment="Center"
Checked="EmployeeCheckedEvent"
Content="{Binding Path=DetailDescription}"
FontFamily="Microsoft Sans Serif"
Foreground="#FFD2D2D2"
PreviewMouseDown="EmployeeLB_OnClick"
Tag="{Binding}"
Unchecked="EmployeeCheckedEvent">
<CheckBox.IsChecked>
<MultiBinding
Converter="{StaticResource CheckBoxConverter}"
ConverterParameter="Mitarbeiter"
NotifyOnSourceUpdated="True"
UpdateSourceTrigger="PropertyChanged">
<Binding Mode="OneWay" Path="EmployeeOid" />
<Binding
Mode="TwoWay"
Path="AusgewaehlteMitarbeiter"
RelativeSource="{RelativeSource FindAncestor,
AncestorType={x:Type UserControl}}"
UpdateSourceTrigger="PropertyChanged" />
</MultiBinding>
</CheckBox.IsChecked>
</CheckBox>
</Border>
</Grid>
<DataTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="ItemBorder" Property="OpacityMask">
<Setter.Value>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#33000000" />
<GradientStop Offset="1" Color="#66000000" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="ListBoxItem.IsSelected" Value="True">
<Setter TargetName="ItemBorder" Property="OpacityMask">
<Setter.Value>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#99000000" />
<GradientStop Offset="1" Color="#CC000000" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="ListBoxItem.IsSelected" Value="True" />
<Condition Property="Selector.IsSelectionActive" Value="False" />
</MultiTrigger.Conditions>
<Setter TargetName="ItemBorder" Property="OpacityMask">
<Setter.Value>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#99000000" />
<GradientStop Offset="1" Color="#B2000000" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</MultiTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Grid
Grid.Row="2"
Grid.Column="0"
Grid.ColumnSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<CheckBox
Grid.Column="0"
Margin="12,3,3,3"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Checked="AlleSelektierenCBUnChecked"
Content="Alle auswählen"
Foreground="#FFD2D2D2"
IsThreeState="False"
Unchecked="AlleSelektierenCBUnChecked" />
<Button
Grid.Column="1"
Width="70"
Height="25"
Margin="3"
HorizontalAlignment="Right"
Command="ApplicationCommands.Close"
Content="Schließen" />
</Grid>
</Grid>
</UserControl>

View File

@@ -32,7 +32,7 @@ namespace BeWo.View.Search
pCallBack(r);
});
}
else if (this.SearchMode == SearchMode.OnlyValid)
else if (this.SearchMode == SearchMode.OnlyValidGkvOrganisations)
{
ServiceFacade.DoCustomerServiceAsync(
s => s.GetAllGkvValidOrganisationsCompact(),

View File

@@ -8,6 +8,6 @@
ActiveCostbearer2SupportConcepts,
OnlyToOrganisationRelatedPersons,
OnlyTeamMember,
OnlyValid
OnlyValidGkvOrganisations
}
}

View File

@@ -1,5 +1,7 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using BS.Shared;
using BS.Shared.Core;
@@ -41,6 +43,16 @@ namespace BeWo.ViewModel
return (pMember == null && pNewValue != null) || (pMember != null && !pMember.Equals(pNewValue));
}
protected bool AreDifferent<T>(object pMember, object pNewValue)
{
if(pMember is IEnumerable<T> l1 && pNewValue is IEnumerable<T> l2)
{
return !Enumerable.SequenceEqual(l1, l2);
}
return AreDifferent(pMember, pNewValue);
}
protected bool AreEqual(object x, object y)
{
NullCompareResult lResult = Utils.NullCompare(x, y);

View File

@@ -932,18 +932,34 @@ namespace BeWo.ViewModel
}
}
}
public string InsuranceNumber
{
get { return _InsuranceNumber; }
set
{
if (!AreDifferent(_InsuranceNumber, value))
return;
_InsuranceNumber = value;
StoreDirtyInformation(AreDifferent(DataContract.InsuranceNumber, value), PropertyName_InsuranceNumber);
FirePropertyChanged(PropertyName_InsuranceNumber);
}
}
public string VersichertenStatus
{
get { return _VersichertenStatus; }
set
{
if (AreDifferent(_VersichertenStatus, value))
{
_VersichertenStatus = value;
StoreDirtyInformation(AreDifferent(DataContract.VersichertenStatus, value), nameof(VersichertenStatus));
FirePropertyChanged(nameof(VersichertenStatus));
}
if (!AreDifferent(_VersichertenStatus, value))
return;
_VersichertenStatus = value;
StoreDirtyInformation(AreDifferent(DataContract.VersichertenStatus, value), nameof(VersichertenStatus));
FirePropertyChanged(nameof(VersichertenStatus));
}
}
public string Environment
@@ -1707,26 +1723,12 @@ namespace BeWo.ViewModel
set
{
if (AreDifferent(_HealthInsurance, value))
{
_HealthInsurance = value;
StoreDirtyInformation(AreDifferent(DataContract.BemerkungenSbd, value), PropertyName_HealthInsurance);
FirePropertyChanged(PropertyName_HealthInsurance);
}
}
}
public string InsuranceNumber
{
get { return _InsuranceNumber; }
if (!AreDifferent(_HealthInsurance, value))
return;
set
{
if (AreDifferent(_InsuranceNumber, value))
{
_InsuranceNumber = value;
StoreDirtyInformation(AreDifferent(DataContract.BemerkungenSbd, value), PropertyName_InsuranceNumber);
FirePropertyChanged(PropertyName_InsuranceNumber);
}
_HealthInsurance = value;
StoreDirtyInformation(AreDifferent(DataContract.HealthInsurance, value), PropertyName_HealthInsurance);
FirePropertyChanged(PropertyName_HealthInsurance);
}
}
public ObservableSortCollection<ValueListEntryDC> EintragKategorien
@@ -2071,13 +2073,13 @@ namespace BeWo.ViewModel
pDataContract.Toilettengang = _Toilettengang;
pDataContract.Aggressiv = _Aggressiv;
pDataContract.Schutzstufe = _Schutzstufe;
pDataContract.Uebernahmeort = _Uebernahmeort;
pDataContract.Verhalten = _Verhalten;
pDataContract.Betreuungsbedarf = _Betreuungsbedarf;
pDataContract.BemerkungenSbd = _BemerkungenSbd;
pDataContract.HealthInsurance = _HealthInsurance;
pDataContract.InsuranceNumber = _InsuranceNumber;
pDataContract.VersichertenStatus = _VersichertenStatus;
pDataContract.Uebernahmeort = _Uebernahmeort;
pDataContract.Verhalten = _Verhalten;
pDataContract.Betreuungsbedarf = _Betreuungsbedarf;
pDataContract.BemerkungenSbd = _BemerkungenSbd;
pDataContract.HealthInsurance = _HealthInsurance;
pDataContract.InsuranceNumber = _InsuranceNumber?.Trim();
pDataContract.VersichertenStatus = _VersichertenStatus?.Trim();
pDataContract.Hygienebelehrung = _Hygienebelehrung;
pDataContract.Migrationshintergrund = _Migrationshintergrund;
pDataContract.SubstitutionNeed = _SubstitutionNeed;

View File

@@ -13,6 +13,7 @@ using BS.Shared.DataContracts.Compact;
using BS.Shared.DataContracts.GkvAbrechnung;
using BS.Shared.Extensions;
using BS.Shared.Interface;
using BS.Shared.ReportRequests;
using DevExpress.Xpf.Core;
namespace BeWo.ViewModel
@@ -96,14 +97,16 @@ namespace BeWo.ViewModel
set
{
if (this.AreDifferent(this._ErstelltAm, value))
if (AreDifferent(_ErstelltAm, value))
{
this._ErstelltAm = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.ErstelltAm, value), nameof(ErstelltAm));
this.FirePropertyChanged(nameof(ErstelltAm));
_ErstelltAm = value;
StoreDirtyInformation(AreDifferent(DataContract.ErstelltAm, value), nameof(ErstelltAm));
FirePropertyChanged(nameof(ErstelltAm));
FirePropertyChanged(nameof(ErstelltAmDate));
}
}
}
public DateTime ErstelltAmDate => ErstelltAm.Date;
public long? GkvAbrechnungOid
{
get { return this._GkvAbrechnungOid; }
@@ -188,6 +191,7 @@ namespace BeWo.ViewModel
StoreDirtyInformation(AreDifferent(DataContract.UrbelegeGesendet, value), nameof(UrbelegeGesendet));
FirePropertyChanged(nameof(UrbelegeGesendet));
FirePropertyChanged(nameof(GkvState));
FirePropertyChanged(nameof(IsBezahltEditEnabled));
}
}
public GkvState GkvState
@@ -308,7 +312,7 @@ namespace BeWo.ViewModel
get
{
if (LastTransferProtokoll is GkvTransferProtokollDC last)
return last.ErstelltAm;
return last.ErstelltAm?.Date;
return null;
}
@@ -338,6 +342,20 @@ namespace BeWo.ViewModel
}
}
public bool IsFormularEnabled => LastTransferProtokoll is object ;
public bool IsUrbelegeEditEnabled => LastTransferProtokoll is object;
public bool IsBezahltEditEnabled => UrbelegeGesendet;
public GkvAbrechnungReportRequest ReportRequest
=> new GkvAbrechnungReportRequest(DataContract.GkvAbrechnungOid.Value, false);
public string ReportLink
=> BeWoApp.SiteOfOrigin + "/ReportView.aspx" + ReportRequest.GetUrlPathString();
public GkvAbrechnungReportRequest ReportRequest2
=> new GkvAbrechnungReportRequest(DataContract.GkvAbrechnungOid.Value, true);
public string ReportLink2
=> BeWoApp.SiteOfOrigin + "/ReportView.aspx" + ReportRequest2.GetUrlPathString();
public void FirePropertyIsReady2CreateChanged()
=> FirePropertyChanged(nameof(IsReady2Create));
public bool IsReady2Create
@@ -425,9 +443,9 @@ namespace BeWo.ViewModel
req.GkvAbrechnungOid = GkvAbrechnungOid.Value;
ServiceFacade.DoAccountingServiceAsync(s => s.SendNewGkvAbrechnung(req),
cb => Application.Current.Dispatch(() => Update(cb)), true);
cb => Application.Current.Dispatch(() => UpdateBySendResponse(cb)), true);
}
public void Update(GkvAbrechnungSendResponseDC cb)
public void UpdateBySendResponse(GkvAbrechnungSendResponseDC cb)
{
var dc = cb.GkvAbrechnungDC;

View File

@@ -1,4 +1,5 @@
using System;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using BS.Shared;
using BS.Shared.Core;
@@ -6,80 +7,82 @@ using BS.Shared.DataContracts;
namespace BeWo.ViewModel
{
public class ImageVM : AbstractDCMapperVM<ImageDC>
{
private string _Filename;
private string _Fullname;
private byte[] _Original;
private byte[] _MediumThumbnail;
private byte[] _SmallThumbnail;
public class ImageVM : AbstractDCMapperVM<ImageDC>
{
private string _Filename;
private string _Fullname;
private byte[] _Original;
private byte[] _MediumThumbnail;
private byte[] _SmallThumbnail;
public ImageVM() : this(new ImageDC())
{
public ImageVM() : this(new ImageDC())
{
}
public ImageVM(ImageDC dc) : base(dc, dc.Oid == null)
{
}
public ImageVM(ImageDC dc) : base(dc, dc.Oid == null)
{
}
}
public string Filename
{
get { return _Filename; }
set
{
if (!AreDifferent(_Filename, value))
return;
public string Filename
{
get { return _Filename; }
set
{
if (!AreDifferent(_Filename, value))
return;
_Filename = value;
StoreDirtyInformation(AreDifferent(DataContract.Filename, value), nameof(Filename));
FirePropertyChanged(nameof(Filename));
}
}
public string Fullname
{
get { return _Fullname; }
set
{
if (!AreDifferent(_Fullname, value))
return;
_Filename = value;
StoreDirtyInformation(AreDifferent(DataContract.Filename, value), nameof(Filename));
FirePropertyChanged(nameof(Filename));
}
}
public string Fullname
{
get { return _Fullname; }
set
{
if (!AreDifferent(_Fullname, value))
return;
_Fullname = value;
StoreDirtyInformation(AreDifferent(DataContract.Fullname, value), nameof(Fullname));
FirePropertyChanged(nameof(Fullname));
}
}
public byte[] Original
{
get { return _Original; }
set
{
if (!AreDifferent(_Original, value))
return;
_Fullname = value;
StoreDirtyInformation(AreDifferent(DataContract.Fullname, value), nameof(Fullname));
FirePropertyChanged(nameof(Fullname));
}
}
public byte[] Original
{
get { return _Original; }
set
{
if (!AreDifferent<byte>(_Original, value))
return;
_Original = value;
StoreDirtyInformation(AreDifferent(DataContract.Original, value), nameof(Original));
FirePropertyChanged(nameof(Original));
FirePropertyChanged(nameof(BitmapImage));
}
}
_Original = value;
StoreDirtyInformation(AreDifferent<byte>(DataContract.Original, value), nameof(Original));
FirePropertyChanged(nameof(Original));
FirePropertyChanged(nameof(BitmapImage));
}
}
public BitmapImage BitmapImage => Utils.CreateBitmapImageFromByteArray(Original);
public BitmapImage BitmapImage => Utils.CreateBitmapImageFromByteArray(Original);
protected override void InitByDataContract(ImageDC pDataContract)
{
_Filename = pDataContract.Filename;
_Fullname = pDataContract.Fullname;
_Original = pDataContract.Original;
}
protected override void InitByDataContract(ImageDC pDataContract)
{
_Filename = pDataContract.Filename;
_Fullname = pDataContract.Fullname;
_Original = pDataContract.Original;
_MediumThumbnail = pDataContract.MediumThumbnail;
_SmallThumbnail = pDataContract.SmallThumbnail;
}
protected override ImageDC MapToDataContract(ImageDC pDataContract, bool doCommit)
{
pDataContract.Filename = _Filename;
pDataContract.Fullname = _Fullname;
pDataContract.Original = _Original;
protected override ImageDC MapToDataContract(ImageDC pDataContract, bool doCommit)
{
pDataContract.Filename = _Filename;
pDataContract.Fullname = _Fullname;
pDataContract.Original = _Original;
return pDataContract;
}
}
return pDataContract;
}
}
}

View File

@@ -9,11 +9,12 @@ using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using BS.Shared.Interface;
using BS.Shared.Translation;
namespace BeWo.ViewModel
{
public class InvoiceBaseVM : AbstractDCMapperVM<InvoiceBaseDC>
public class InvoiceBaseVM : AbstractDCMapperVM<InvoiceBaseDC>, IInvoiceBase
{
public static string PropertyName_AccountingPeriodEnd = "AccountingPeriodEnd";
@@ -116,85 +117,45 @@ namespace BeWo.ViewModel
};
private DateTime? _AccountingPeriodEnd;
private DateTime? _AccountingPeriodStart;
private string _CreatorFirstName = string.Empty;
private string _CreatorLastName = string.Empty;
private string _CustomerReferenceNumber = string.Empty;
private DateTime? _DueDate;
private int? _DunningLetterCount;
private DateTime? _InvoiceDate;
private InvoiceItemListVM _InvoiceItems;
private string _InvoiceNumber = string.Empty;
private string _InvoiceTitle = string.Empty;
internal bool _IsReviewed;
internal bool _IsSent;
internal bool _IsExported;
internal bool _IsPaid;
private string _PartialPayment = string.Empty;
internal bool _NeuErstellen;
internal bool _DiffErstellen;
internal bool _IsChecked;
private string _Notice = string.Empty;
private long? _RecipientCostBearerOid;
private long? _RecipientCustomerOid;
private string _RecipientDivision = string.Empty;
private string _RecipientOrganisation = string.Empty;
private long? _RecipientOrganisationOid;
private String _RecipientPostBox;
private string _RecipientPersonFirstName = string.Empty;
private string _RecipientPersonLastName = string.Empty;
private long? _RecipientPersonOid;
private string _RecipientPostCode = string.Empty;
private string _RecipientAddressLine1 = string.Empty;
private string _RecipientStreet = string.Empty;
private string _RecipientTown = string.Empty;
private string _SenderDivision = string.Empty;
private string _SenderFax = string.Empty;
private string _SenderFirstName = string.Empty;
private string _SenderLastName = string.Empty;
private string _SenderOrganisation = string.Empty;
private string _SenderPhone = string.Empty;
private long? _SupportConceptOid;
private decimal? _TotalAmount;
public InvoiceBaseVM(InvoiceBaseDC pDC) : this(pDC, false) { }
@@ -922,6 +883,8 @@ namespace BeWo.ViewModel
}
}
public string SenderAddressLine1 { get; set; }
public decimal? TotalAmount
{
get { return _TotalAmount; }
@@ -954,6 +917,10 @@ namespace BeWo.ViewModel
get; set;
}
public string SenderStreet => DataContract.SenderStreet;
public string SenderTown => DataContract.SenderTown;
public string SenderPostCode => DataContract.SenderPostCode;
protected override void InitByDataContract(InvoiceBaseDC pDataContract)
{
_SupportConceptOid = pDataContract.SupportConceptOid;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,7 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using BeWo.Core;
using BeWo.Validation;
using BeWo.ViewModel.ListViewModel;
@@ -108,6 +110,94 @@ namespace BeWo.ViewModel
}
}
public List<String> SortItems
{
get
{
var list = new List<String>();
list.Add("aufsteigend");
list.Add("absteigend");
return list;
}
}
public int SelectedSortIndex
{
get
{
return BeWoApp.AppSettings.LastBewilligungSortOrder;
}
set
{
BeWoApp.AppSettings.LastBewilligungSortOrder = value;
this.FirePropertyChanged("SelectedSortIndex");
this.FirePropertyChanged("SortedVMList");
}
}
public BindingList<SupportConceptApprovalPeriodVM> SortedVMList
{
get
{
var list = this.ApprovalPeriodList.VMList;
if (list.Count > 1)
{
//Entferne die Items aus der Originalliste und füge sie später wieder hinzu, sonst aktualisiert sich die View nicht:-(
var copyList = new BindingList<SupportConceptApprovalPeriodVM>();
foreach (var item in list)
{
copyList.Add(item);
}
list.Clear();
if (SelectedSortIndex == 0)
{
copyList.Sort((a, b) => a.StartDate.HasValue ? a.StartDate.Value.CompareTo(b.StartDate) : 0);
}
else
{
copyList.Sort((a, b) => b.StartDate.HasValue ? b.StartDate.Value.CompareTo(a.StartDate) : 0);
}
foreach (var item in copyList)
{
list.Add(item);
}
}
return list;
}
}
//public ObservableCollection<SupportConceptApprovalPeriodVM> SortedVMList
//{
// get
// {
// var list = this.ApprovalPeriodList.VMList;
// if (SelectedSortIndex == 0)
// {
// list.Sort((a, b) => a.StartDate.HasValue ? a.StartDate.Value.CompareTo(b.StartDate) : 0);
// }
// else
// {
// list.Sort((a, b) => b.StartDate.HasValue ? b.StartDate.Value.CompareTo(a.StartDate) : 0);
// }
// var sortedlist = new ObservableCollection<SupportConceptApprovalPeriodVM>();
// sortedlist.AddRange(list);
// return sortedlist;
// }
//}
// public decimal RateFactor
// {
// get { return _RateFactor; }

View File

@@ -8,9 +8,6 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Server", "Server", "{FEB0336B-F053-40B6-92DD-7DE56AB9408A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ReportImp", "ReportImp", "{D8A691C5-146D-4613-86CC-438F02FE9106}"
ProjectSection(SolutionItems) = preProject
ReportImp\Wabe\Wabe.csproj = ReportImp\Wabe\Wabe.csproj
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BeWo", "BeWo\BeWo.csproj", "{3FEBB560-9275-413A-9767-BB68C44EEBC3}"
ProjectSection(ProjectDependencies) = postProject
@@ -887,6 +884,20 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ArcheTecklenburg", "ReportI
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LebenshilfeRemscheidWohngruppe", "ReportImp\LebenshilfeRemscheidWohngruppe\LebenshilfeRemscheidWohngruppe.csproj", "{A17118EF-CC8C-4984-8225-8B9155CC14D8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Intego", "ReportImp\Intego\Intego.csproj", "{23A3DE8B-C179-4C40-855B-1E36FBFF76F1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WendepunktVelbert", "ReportImp\WendepunktVelbert\WendepunktVelbert.csproj", "{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jusina", "ReportImp\Jusina\Jusina.csproj", "{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClaudiaHeizmannHeilpaedagogik", "ReportImp\ClaudiaHeizmannHeilpaedagogik\ClaudiaHeizmannHeilpaedagogik.csproj", "{BA5DDD2F-7282-4793-A898-B664936B1703}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OwnSoftTest5Mrd", "ReportImp\OwnSoftTest5Mrd\OwnSoftTest5Mrd.csproj", "{0AB07D34-D1B6-441F-8F1F-E5B310DA666E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BeWoAuxilioRitter", "ReportImp\BeWoAuxilioRitter\BeWoAuxilioRitter.csproj", "{D08B6F46-EB00-4A05-B1AB-A00E189C2C66}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PeterVomBrocke", "ReportImp\PeterVomBrocke\PeterVomBrocke.csproj", "{886B622D-2C89-494B-BD3A-48F1E3A95197}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|.NET = Debug|.NET
@@ -10882,6 +10893,174 @@ Global
{A17118EF-CC8C-4984-8225-8B9155CC14D8}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{A17118EF-CC8C-4984-8225-8B9155CC14D8}.Release|x86.ActiveCfg = Release|Any CPU
{A17118EF-CC8C-4984-8225-8B9155CC14D8}.Release|x86.Build.0 = Release|Any CPU
{23A3DE8B-C179-4C40-855B-1E36FBFF76F1}.Debug|.NET.ActiveCfg = Debug|Any CPU
{23A3DE8B-C179-4C40-855B-1E36FBFF76F1}.Debug|.NET.Build.0 = Debug|Any CPU
{23A3DE8B-C179-4C40-855B-1E36FBFF76F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{23A3DE8B-C179-4C40-855B-1E36FBFF76F1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{23A3DE8B-C179-4C40-855B-1E36FBFF76F1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{23A3DE8B-C179-4C40-855B-1E36FBFF76F1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{23A3DE8B-C179-4C40-855B-1E36FBFF76F1}.Debug|x86.ActiveCfg = Debug|Any CPU
{23A3DE8B-C179-4C40-855B-1E36FBFF76F1}.Debug|x86.Build.0 = Debug|Any CPU
{23A3DE8B-C179-4C40-855B-1E36FBFF76F1}.DebugRemote|.NET.ActiveCfg = Debug|Any CPU
{23A3DE8B-C179-4C40-855B-1E36FBFF76F1}.DebugRemote|.NET.Build.0 = Debug|Any CPU
{23A3DE8B-C179-4C40-855B-1E36FBFF76F1}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
{23A3DE8B-C179-4C40-855B-1E36FBFF76F1}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
{23A3DE8B-C179-4C40-855B-1E36FBFF76F1}.DebugRemote|Mixed Platforms.ActiveCfg = Debug|Any CPU
{23A3DE8B-C179-4C40-855B-1E36FBFF76F1}.DebugRemote|Mixed Platforms.Build.0 = Debug|Any CPU
{23A3DE8B-C179-4C40-855B-1E36FBFF76F1}.DebugRemote|x86.ActiveCfg = Debug|Any CPU
{23A3DE8B-C179-4C40-855B-1E36FBFF76F1}.DebugRemote|x86.Build.0 = Debug|Any CPU
{23A3DE8B-C179-4C40-855B-1E36FBFF76F1}.Release|.NET.ActiveCfg = Release|Any CPU
{23A3DE8B-C179-4C40-855B-1E36FBFF76F1}.Release|.NET.Build.0 = Release|Any CPU
{23A3DE8B-C179-4C40-855B-1E36FBFF76F1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{23A3DE8B-C179-4C40-855B-1E36FBFF76F1}.Release|Any CPU.Build.0 = Release|Any CPU
{23A3DE8B-C179-4C40-855B-1E36FBFF76F1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{23A3DE8B-C179-4C40-855B-1E36FBFF76F1}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{23A3DE8B-C179-4C40-855B-1E36FBFF76F1}.Release|x86.ActiveCfg = Release|Any CPU
{23A3DE8B-C179-4C40-855B-1E36FBFF76F1}.Release|x86.Build.0 = Release|Any CPU
{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B}.Debug|.NET.ActiveCfg = Debug|Any CPU
{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B}.Debug|.NET.Build.0 = Debug|Any CPU
{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B}.Debug|x86.ActiveCfg = Debug|Any CPU
{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B}.Debug|x86.Build.0 = Debug|Any CPU
{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B}.DebugRemote|.NET.ActiveCfg = Debug|Any CPU
{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B}.DebugRemote|.NET.Build.0 = Debug|Any CPU
{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B}.DebugRemote|Mixed Platforms.ActiveCfg = Debug|Any CPU
{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B}.DebugRemote|Mixed Platforms.Build.0 = Debug|Any CPU
{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B}.DebugRemote|x86.ActiveCfg = Debug|Any CPU
{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B}.DebugRemote|x86.Build.0 = Debug|Any CPU
{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B}.Release|.NET.ActiveCfg = Release|Any CPU
{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B}.Release|.NET.Build.0 = Release|Any CPU
{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B}.Release|Any CPU.Build.0 = Release|Any CPU
{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B}.Release|x86.ActiveCfg = Release|Any CPU
{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B}.Release|x86.Build.0 = Release|Any CPU
{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7}.Debug|.NET.ActiveCfg = Debug|Any CPU
{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7}.Debug|.NET.Build.0 = Debug|Any CPU
{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7}.Debug|x86.ActiveCfg = Debug|Any CPU
{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7}.Debug|x86.Build.0 = Debug|Any CPU
{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7}.DebugRemote|.NET.ActiveCfg = Debug|Any CPU
{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7}.DebugRemote|.NET.Build.0 = Debug|Any CPU
{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7}.DebugRemote|Mixed Platforms.ActiveCfg = Debug|Any CPU
{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7}.DebugRemote|Mixed Platforms.Build.0 = Debug|Any CPU
{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7}.DebugRemote|x86.ActiveCfg = Debug|Any CPU
{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7}.DebugRemote|x86.Build.0 = Debug|Any CPU
{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7}.Release|.NET.ActiveCfg = Release|Any CPU
{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7}.Release|.NET.Build.0 = Release|Any CPU
{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7}.Release|Any CPU.Build.0 = Release|Any CPU
{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7}.Release|x86.ActiveCfg = Release|Any CPU
{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7}.Release|x86.Build.0 = Release|Any CPU
{BA5DDD2F-7282-4793-A898-B664936B1703}.Debug|.NET.ActiveCfg = Debug|Any CPU
{BA5DDD2F-7282-4793-A898-B664936B1703}.Debug|.NET.Build.0 = Debug|Any CPU
{BA5DDD2F-7282-4793-A898-B664936B1703}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BA5DDD2F-7282-4793-A898-B664936B1703}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BA5DDD2F-7282-4793-A898-B664936B1703}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{BA5DDD2F-7282-4793-A898-B664936B1703}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{BA5DDD2F-7282-4793-A898-B664936B1703}.Debug|x86.ActiveCfg = Debug|Any CPU
{BA5DDD2F-7282-4793-A898-B664936B1703}.Debug|x86.Build.0 = Debug|Any CPU
{BA5DDD2F-7282-4793-A898-B664936B1703}.DebugRemote|.NET.ActiveCfg = Debug|Any CPU
{BA5DDD2F-7282-4793-A898-B664936B1703}.DebugRemote|.NET.Build.0 = Debug|Any CPU
{BA5DDD2F-7282-4793-A898-B664936B1703}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
{BA5DDD2F-7282-4793-A898-B664936B1703}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
{BA5DDD2F-7282-4793-A898-B664936B1703}.DebugRemote|Mixed Platforms.ActiveCfg = Debug|Any CPU
{BA5DDD2F-7282-4793-A898-B664936B1703}.DebugRemote|Mixed Platforms.Build.0 = Debug|Any CPU
{BA5DDD2F-7282-4793-A898-B664936B1703}.DebugRemote|x86.ActiveCfg = Debug|Any CPU
{BA5DDD2F-7282-4793-A898-B664936B1703}.DebugRemote|x86.Build.0 = Debug|Any CPU
{BA5DDD2F-7282-4793-A898-B664936B1703}.Release|.NET.ActiveCfg = Release|Any CPU
{BA5DDD2F-7282-4793-A898-B664936B1703}.Release|.NET.Build.0 = Release|Any CPU
{BA5DDD2F-7282-4793-A898-B664936B1703}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BA5DDD2F-7282-4793-A898-B664936B1703}.Release|Any CPU.Build.0 = Release|Any CPU
{BA5DDD2F-7282-4793-A898-B664936B1703}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{BA5DDD2F-7282-4793-A898-B664936B1703}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{BA5DDD2F-7282-4793-A898-B664936B1703}.Release|x86.ActiveCfg = Release|Any CPU
{BA5DDD2F-7282-4793-A898-B664936B1703}.Release|x86.Build.0 = Release|Any CPU
{0AB07D34-D1B6-441F-8F1F-E5B310DA666E}.Debug|.NET.ActiveCfg = Debug|Any CPU
{0AB07D34-D1B6-441F-8F1F-E5B310DA666E}.Debug|.NET.Build.0 = Debug|Any CPU
{0AB07D34-D1B6-441F-8F1F-E5B310DA666E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0AB07D34-D1B6-441F-8F1F-E5B310DA666E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0AB07D34-D1B6-441F-8F1F-E5B310DA666E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{0AB07D34-D1B6-441F-8F1F-E5B310DA666E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{0AB07D34-D1B6-441F-8F1F-E5B310DA666E}.Debug|x86.ActiveCfg = Debug|Any CPU
{0AB07D34-D1B6-441F-8F1F-E5B310DA666E}.Debug|x86.Build.0 = Debug|Any CPU
{0AB07D34-D1B6-441F-8F1F-E5B310DA666E}.DebugRemote|.NET.ActiveCfg = Debug|Any CPU
{0AB07D34-D1B6-441F-8F1F-E5B310DA666E}.DebugRemote|.NET.Build.0 = Debug|Any CPU
{0AB07D34-D1B6-441F-8F1F-E5B310DA666E}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
{0AB07D34-D1B6-441F-8F1F-E5B310DA666E}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
{0AB07D34-D1B6-441F-8F1F-E5B310DA666E}.DebugRemote|Mixed Platforms.ActiveCfg = Debug|Any CPU
{0AB07D34-D1B6-441F-8F1F-E5B310DA666E}.DebugRemote|Mixed Platforms.Build.0 = Debug|Any CPU
{0AB07D34-D1B6-441F-8F1F-E5B310DA666E}.DebugRemote|x86.ActiveCfg = Debug|Any CPU
{0AB07D34-D1B6-441F-8F1F-E5B310DA666E}.DebugRemote|x86.Build.0 = Debug|Any CPU
{0AB07D34-D1B6-441F-8F1F-E5B310DA666E}.Release|.NET.ActiveCfg = Release|Any CPU
{0AB07D34-D1B6-441F-8F1F-E5B310DA666E}.Release|.NET.Build.0 = Release|Any CPU
{0AB07D34-D1B6-441F-8F1F-E5B310DA666E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0AB07D34-D1B6-441F-8F1F-E5B310DA666E}.Release|Any CPU.Build.0 = Release|Any CPU
{0AB07D34-D1B6-441F-8F1F-E5B310DA666E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{0AB07D34-D1B6-441F-8F1F-E5B310DA666E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{0AB07D34-D1B6-441F-8F1F-E5B310DA666E}.Release|x86.ActiveCfg = Release|Any CPU
{0AB07D34-D1B6-441F-8F1F-E5B310DA666E}.Release|x86.Build.0 = Release|Any CPU
{D08B6F46-EB00-4A05-B1AB-A00E189C2C66}.Debug|.NET.ActiveCfg = Debug|Any CPU
{D08B6F46-EB00-4A05-B1AB-A00E189C2C66}.Debug|.NET.Build.0 = Debug|Any CPU
{D08B6F46-EB00-4A05-B1AB-A00E189C2C66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D08B6F46-EB00-4A05-B1AB-A00E189C2C66}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D08B6F46-EB00-4A05-B1AB-A00E189C2C66}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{D08B6F46-EB00-4A05-B1AB-A00E189C2C66}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{D08B6F46-EB00-4A05-B1AB-A00E189C2C66}.Debug|x86.ActiveCfg = Debug|Any CPU
{D08B6F46-EB00-4A05-B1AB-A00E189C2C66}.Debug|x86.Build.0 = Debug|Any CPU
{D08B6F46-EB00-4A05-B1AB-A00E189C2C66}.DebugRemote|.NET.ActiveCfg = Debug|Any CPU
{D08B6F46-EB00-4A05-B1AB-A00E189C2C66}.DebugRemote|.NET.Build.0 = Debug|Any CPU
{D08B6F46-EB00-4A05-B1AB-A00E189C2C66}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
{D08B6F46-EB00-4A05-B1AB-A00E189C2C66}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
{D08B6F46-EB00-4A05-B1AB-A00E189C2C66}.DebugRemote|Mixed Platforms.ActiveCfg = Debug|Any CPU
{D08B6F46-EB00-4A05-B1AB-A00E189C2C66}.DebugRemote|Mixed Platforms.Build.0 = Debug|Any CPU
{D08B6F46-EB00-4A05-B1AB-A00E189C2C66}.DebugRemote|x86.ActiveCfg = Debug|Any CPU
{D08B6F46-EB00-4A05-B1AB-A00E189C2C66}.DebugRemote|x86.Build.0 = Debug|Any CPU
{D08B6F46-EB00-4A05-B1AB-A00E189C2C66}.Release|.NET.ActiveCfg = Release|Any CPU
{D08B6F46-EB00-4A05-B1AB-A00E189C2C66}.Release|.NET.Build.0 = Release|Any CPU
{D08B6F46-EB00-4A05-B1AB-A00E189C2C66}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D08B6F46-EB00-4A05-B1AB-A00E189C2C66}.Release|Any CPU.Build.0 = Release|Any CPU
{D08B6F46-EB00-4A05-B1AB-A00E189C2C66}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{D08B6F46-EB00-4A05-B1AB-A00E189C2C66}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{D08B6F46-EB00-4A05-B1AB-A00E189C2C66}.Release|x86.ActiveCfg = Release|Any CPU
{D08B6F46-EB00-4A05-B1AB-A00E189C2C66}.Release|x86.Build.0 = Release|Any CPU
{886B622D-2C89-494B-BD3A-48F1E3A95197}.Debug|.NET.ActiveCfg = Debug|Any CPU
{886B622D-2C89-494B-BD3A-48F1E3A95197}.Debug|.NET.Build.0 = Debug|Any CPU
{886B622D-2C89-494B-BD3A-48F1E3A95197}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{886B622D-2C89-494B-BD3A-48F1E3A95197}.Debug|Any CPU.Build.0 = Debug|Any CPU
{886B622D-2C89-494B-BD3A-48F1E3A95197}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{886B622D-2C89-494B-BD3A-48F1E3A95197}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{886B622D-2C89-494B-BD3A-48F1E3A95197}.Debug|x86.ActiveCfg = Debug|Any CPU
{886B622D-2C89-494B-BD3A-48F1E3A95197}.Debug|x86.Build.0 = Debug|Any CPU
{886B622D-2C89-494B-BD3A-48F1E3A95197}.DebugRemote|.NET.ActiveCfg = Debug|Any CPU
{886B622D-2C89-494B-BD3A-48F1E3A95197}.DebugRemote|.NET.Build.0 = Debug|Any CPU
{886B622D-2C89-494B-BD3A-48F1E3A95197}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
{886B622D-2C89-494B-BD3A-48F1E3A95197}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
{886B622D-2C89-494B-BD3A-48F1E3A95197}.DebugRemote|Mixed Platforms.ActiveCfg = Debug|Any CPU
{886B622D-2C89-494B-BD3A-48F1E3A95197}.DebugRemote|Mixed Platforms.Build.0 = Debug|Any CPU
{886B622D-2C89-494B-BD3A-48F1E3A95197}.DebugRemote|x86.ActiveCfg = Debug|Any CPU
{886B622D-2C89-494B-BD3A-48F1E3A95197}.DebugRemote|x86.Build.0 = Debug|Any CPU
{886B622D-2C89-494B-BD3A-48F1E3A95197}.Release|.NET.ActiveCfg = Release|Any CPU
{886B622D-2C89-494B-BD3A-48F1E3A95197}.Release|.NET.Build.0 = Release|Any CPU
{886B622D-2C89-494B-BD3A-48F1E3A95197}.Release|Any CPU.ActiveCfg = Release|Any CPU
{886B622D-2C89-494B-BD3A-48F1E3A95197}.Release|Any CPU.Build.0 = Release|Any CPU
{886B622D-2C89-494B-BD3A-48F1E3A95197}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{886B622D-2C89-494B-BD3A-48F1E3A95197}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{886B622D-2C89-494B-BD3A-48F1E3A95197}.Release|x86.ActiveCfg = Release|Any CPU
{886B622D-2C89-494B-BD3A-48F1E3A95197}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -11322,6 +11501,13 @@ Global
{DFBB3D88-26B8-4691-B9A7-6E5D5804018A} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{F5D34922-2D1D-419F-B81F-0DEF5D80E5BD} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{A17118EF-CC8C-4984-8225-8B9155CC14D8} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{23A3DE8B-C179-4C40-855B-1E36FBFF76F1} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{5BC38A8A-6BFB-405C-BF79-2C2594B80F6B} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{E65C96E4-FD76-4C92-B161-B1E07ABBE1A7} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{BA5DDD2F-7282-4793-A898-B664936B1703} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{0AB07D34-D1B6-441F-8F1F-E5B310DA666E} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{D08B6F46-EB00-4A05-B1AB-A00E189C2C66} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{886B622D-2C89-494B-BD3A-48F1E3A95197} = {D8A691C5-146D-4613-86CC-438F02FE9106}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {FBE985BB-9F0F-4DBB-8F94-ABC37A803FF9}

View File

@@ -21,6 +21,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Kundenprojekte", "Kundenpro
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SynpraxReports", "ReportImp\SynpraxReports\SynpraxReports.csproj", "{FC9F4E38-977B-4877-9E05-D04068D3C807}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HausDuelken", "ReportImp\HausDuelken\HausDuelken.csproj", "{ED3DBD24-B774-41E5-A856-99FF78D828A8}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -76,12 +78,19 @@ Global
{FC9F4E38-977B-4877-9E05-D04068D3C807}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
{FC9F4E38-977B-4877-9E05-D04068D3C807}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FC9F4E38-977B-4877-9E05-D04068D3C807}.Release|Any CPU.Build.0 = Release|Any CPU
{ED3DBD24-B774-41E5-A856-99FF78D828A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{ED3DBD24-B774-41E5-A856-99FF78D828A8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{ED3DBD24-B774-41E5-A856-99FF78D828A8}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
{ED3DBD24-B774-41E5-A856-99FF78D828A8}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
{ED3DBD24-B774-41E5-A856-99FF78D828A8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ED3DBD24-B774-41E5-A856-99FF78D828A8}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{FC9F4E38-977B-4877-9E05-D04068D3C807} = {30DD24EE-2ED9-4E31-BCB5-AD995E8541BD}
{ED3DBD24-B774-41E5-A856-99FF78D828A8} = {30DD24EE-2ED9-4E31-BCB5-AD995E8541BD}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {75267284-7070-4045-9FC8-0FC3C56C1AD3}

View File

@@ -708,7 +708,7 @@
<VisualStudio>
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
<WebProjectProperties>
<UseIIS>True</UseIIS>
<UseIIS>False</UseIIS>
<AutoAssignPort>False</AutoAssignPort>
<DevelopmentServerPort>8808</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>

View File

@@ -151,5 +151,14 @@
<Name>Shared</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup />
<ItemGroup>
<Content Include="KTDatei\AO05Q424.ke0.txt" />
<Content Include="KTDatei\BK05Q424.ke1.txt" />
<Content Include="KTDatei\BN05Q424.ke1.txt" />
<Content Include="KTDatei\EK05Q324.ke4.txt" />
<Content Include="KTDatei\IK05Q424.ke0.txt" />
<Content Include="KTDatei\LK05Q223.ke0.txt" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@@ -96,5 +96,17 @@ namespace Dakota
return input.Trim();
}
}
public static string GetVersichertenstatus(string versichertenStatus)
{
if (versichertenStatus.Length < 5)
return FillFromRight(versichertenStatus, 5, '0');
else if (versichertenStatus.Length == 5)
return versichertenStatus;
else if (versichertenStatus.Length == 7)
return versichertenStatus.Substring(0, 5);
else
throw new ArgumentException($"VersichertenStatus \"{versichertenStatus}\" ist ungültig.");
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,118 @@
UNA:+,? '
UNB+UNOC:3+109908701+999999999+230207:1030+00001++LK05Q223KE0'
UNH+00001+KOTR:02:001:KV'
IDK+101308719+99+LKK Schlesw.-Holst. u. Hamburg'
VDT+19950801'
FKT+02'
VKG+01+101308719+5++++++00'
VKG+03+102109128+5++07++++00'
VKG+09+661430035+5++28++++00'
NAM+01+SVLFG+ehem. LKK SHH'
ANS+1+34131+Kassel+Weißensteinstr. 70 - 72'
UNT+000010+00001'
UNH+00002+KOTR:02:001:KV'
IDK+102108731+99+LKK Niedersachsen-Bremen'
VDT+19950801'
FKT+02'
VKG+01+102108731+5++++++00'
VKG+03+102109128+5++07++++00'
VKG+09+661430035+5++28++++00'
NAM+01+SVLFG+ehem. LKK NB'
ANS+1+34131+Kassel+Weißensteinstr. 70 - 72'
UNT+000010+00002'
UNH+00003+KOTR:02:001:KV'
IDK+103708773+99+LKK Nordrhein-Westfalen'
VDT+19950801'
FKT+02'
VKG+01+103708773+5++++++00'
VKG+03+102109128+5++07++++00'
VKG+09+661430035+5++28++++00'
NAM+01+SVLFG+ehem. LKK NRW'
ANS+1+34131+Kassel+Weißensteinstr. 70 - 72'
UNT+000010+00003'
UNH+00004+KOTR:02:001:KV'
IDK+100609049+99+LKK Mittel- u. Ostdeutschland'
VDT+19950801'
FKT+02'
VKG+01+100609049+5++++++00'
VKG+03+102109128+5++07++++00'
VKG+09+661430035+5++28++++00'
NAM+01+SVLFG+ehem. LKK MOD'
ANS+1+34131+Kassel+Weißensteinstr. 70 - 72'
UNT+000010+00004'
UNH+00005+KOTR:02:001:KV'
IDK+105508787+99+LKK Hessen,Rheinl.-Pf.,Saarl.'
VDT+19950801'
FKT+02'
VKG+01+105508787+5++++++00'
VKG+03+102109128+5++07++++00'
VKG+09+661430035+5++28++++00'
NAM+01+SVLFG+ehem. LKK HRS'
ANS+1+34131+Kassel+Weißensteinstr. 70 - 72'
UNT+000010+00005'
UNH+00006+KOTR:02:001:KV'
IDK+105508890+99+KK für den Gartenbau'
VDT+19950801'
FKT+02'
VKG+01+105508890+5++++++00'
VKG+03+102109128+5++07++++00'
VKG+09+661430035+5++28++++00'
NAM+01+SVLFG+ehem. GB-KK West'
ANS+1+34131+Kassel+Weißensteinstr. 70 - 72'
UNT+000010+00006'
UNH+00007+KOTR:02:001:KV'
IDK+108008880+99+LKK Baden-Württemberg'
VDT+19950801'
FKT+02'
VKG+01+108008880+5++++++00'
VKG+03+102109128+5++07++++00'
VKG+09+661430035+5++28++++00'
NAM+01+SVLFG+ehem. LKK BW'
ANS+1+34131+Kassel+Weißensteinstr. 70 - 72'
UNT+000010+00007'
UNH+00008+KOTR:02:001:KV'
IDK+108608820+99+LKK Franken und Oberbayern'
VDT+19950801'
FKT+02'
VKG+01+108608820+5++++++00'
VKG+03+102109128+5++07++++00'
VKG+09+661430035+5++28++++00'
NAM+01+SVLFG+ehem. LKK FOB'
ANS+1+34131+Kassel+Weißensteinstr. 70 - 72'
UNT+000010+00008'
UNH+00009+KOTR:02:001:KV'
IDK+109008837+99+LKK N.bayern/Oberpf. u. Schwa.'
VDT+19950801'
FKT+02'
VKG+01+109008837+5++++++00'
VKG+03+102109128+5++07++++00'
VKG+09+661430035+5++28++++00'
NAM+01+SVLFG+ehem. LKK NOS'
ANS+1+34131+Kassel+Weißensteinstr. 70 - 72'
UNT+000010+00009'
UNH+00010+KOTR:02:001:KV'
IDK+661430035+99+DAVASO GmbH'
VDT+20210101'
FKT+04'
NAM+01+DAVASO GmbH+c/o SVLFG'
ANS+1+04425+Taucha+Gärtnerweg 12'
UNT+000007+00010'
UNH+00011+KOTR:02:001:KV'
IDK+102109128+99+BITMARCK'
VDT+20020101'
FKT+04'
NAM+01+BITMARCK Service GmbH'
ANS+2+45004+Essen+Postfach 10 04 53'
ASP+01+0800-24862725+0800-2486272532+servicedesk@bitmarck.de'
UEM+1+00+I8'
DFU+01+070+++++le@bitmarck-daten.de'
DFU+02+016+++++dav-ftam.bitmarck-daten.de?:9000'
UEM+4+08+I8'
UEM+4+09+I8'
UEM+4+10+I8'
UEM+4+11+I8'
UEM+4+12+I8'
UEM+4+13+I8'
UEM+7+14+I8'
UNT+000018+00011'
UNZ+000011+00001'

View File

@@ -194,16 +194,16 @@ namespace Dakota.Logic
info.IKAbsender = DakotaConfig.IKAbsender;
info.IKKostentrager = infoParameter.IKKostentrager;
info.IKKrankenkasse = infoParameter.IKKrankenkasse;
info.IKLeistungserbringer = infoParameter.IKLeistungserbringer;
info.IKLeistungserbringer = infoParameter.AddressInformation.IKLeistungserbringer;
info.Rechnungsnummer = infoParameter.InvoiceBase.InvoiceNumber;
info.Rechnungsdatum = infoParameter.InvoiceBase.InvoiceDate.Value;
info.Rechnungsart = SchlüsselRechnungsart.AbrechnungÜberAbrechnungsstelleOhneInkassovollmacht;
info.Name1 = infoParameter.Mandator.Name;
info.Name2 = "Rene Evertz";
info.Name3 = "Entwickler bei ownSoft";
info.Name4 = "dakota.exchange@ownsoft.de";
info.Name1 = infoParameter.AddressInformation.OrganisationName;
info.Name2 = infoParameter.AddressInformation.Phone;
info.Name3 = infoParameter.AddressInformation.Mail;
info.Name4 = "Entwicklung dakota.exchange@ownsoft.de";
return info;
}
@@ -215,7 +215,7 @@ namespace Dakota.Logic
info.IKAbsender = DakotaConfig.IKAbsender;
info.IKKostentrager = infoParameter.IKKostentrager;
info.IKKrankenkasse = infoParameter.IKKrankenkasse;
info.IKLeistungserbringer = infoParameter.IKLeistungserbringer;
info.IKLeistungserbringer = infoParameter.AddressInformation.IKLeistungserbringer;
info.Rechnungsnummer = infoParameter.InvoiceBase.InvoiceNumber;
info.Rechnungsdatum = infoParameter.InvoiceBase.InvoiceDate.Value;
@@ -229,12 +229,9 @@ namespace Dakota.Logic
{
var info = new InfoAbrechnungsfall();
var versicherten_status = infoParameter.Customer.VersichertenStatus;
var versicherten_status_kurz = versicherten_status.Substring(0, 5);
info.VersichtertenNummer = infoParameter.Customer.InsuranceNumber;
info.Versichertenstatus = versicherten_status_kurz;
info.Beleginformation = SchlüsselBeleginformation.KeineBeleguebermittlung;
info.Versichertenstatus = DakotaUtils.GetVersichertenstatus(infoParameter.Customer.VersichertenStatus);
info.Beleginformation = SchlüsselBeleginformation.BelegePerPost;
info.Belegnummer = infoParameter.Customer.CustomerOid.ToString();
info.VersichtertenVorname = infoParameter.Customer.FirstName;

View File

@@ -61,7 +61,6 @@ namespace Dakota.Logic
return new Tuple<string, string, string, string>(datenannahmestelle, search.Item2, search.Item3, bez);
}
}
return null;
@@ -84,7 +83,9 @@ namespace Dakota.Logic
if (verweis is object && verweis.IKVerknüpfungspartners != kostentrager)
return GetIKNummern(dict, ikkrankenkasse, abrechnungscode, tarifkennzeichen, verweis.IKVerknüpfungspartners);
var datenannahmestellen = search.SegmentVKG.Where(x => x.ArtDerVerknüpfung == Models.Schlüssels.SchlüsselArtDerVerknüpfung.DatenannahmestelleMitEntschlusselungsbefugnis);
var datenannahmestellen = search.SegmentVKG
.Where(x => x.ArtDerVerknüpfung == Models.Schlüssels.SchlüsselArtDerVerknüpfung.DatenannahmestelleMitEntschlusselungsbefugnis)
.ToList();
// Hat keinen Verweis auf Kostenträger oder Datenannahmestelle gefunden
if (datenannahmestellen is null || !datenannahmestellen.Any())
@@ -93,17 +94,39 @@ namespace Dakota.Logic
if (datenannahmestellen.Count() == 1)
return GetIKNummern(datenannahmestellen.First(), kostentrager, ikkrankenkasse);
var datenannahmestellen_2 = datenannahmestellen.Where(x => x.Abrechnungscode == abrechnungscode);
// Abrechnungscode "69" <=> Sozio
var datenannahmestellen_2 = datenannahmestellen
.Where(x => x.Abrechnungscode == abrechnungscode)
.ToList();
if (datenannahmestellen_2.Count() == 1)
return GetIKNummern(datenannahmestellen_2.First(), kostentrager, ikkrankenkasse);
var datenannahmestellen_3 = datenannahmestellen_2.Where(x => x.Tarifkennzeichen == tarifkennzeichen);
// Tarifkennzeichen
var datenannahmestellen_3 = datenannahmestellen_2
.Where(x => x.Tarifkennzeichen == tarifkennzeichen)
.ToList();
if (datenannahmestellen_3.Count() == 1)
return GetIKNummern(datenannahmestellen_3.First(), kostentrager, ikkrankenkasse);
throw new GkvException($"Keine oder mehrere Datenannahmestellen für {ikkrankenkasse} gefunden.");
// ArtDesÜbermittlungsmediums "1" <=> Datenfernübertragung
var filter_list = datenannahmestellen_3;
if(!filter_list.Any())
filter_list = datenannahmestellen_2;
if (!filter_list.Any())
filter_list = datenannahmestellen;
filter_list = filter_list
.Where(x => x.ArtDesÜbermittlungsmediums == "1")
.ToList();
if (filter_list.Count() == 1)
return GetIKNummern(filter_list.First(), kostentrager, ikkrankenkasse);
return null;
}
private Tuple<string, string, string> GetIKNummern(SegmentKTDVKG vkg, string kostentrager, string ikkrankenkasse)

View File

@@ -1,4 +1,5 @@
using BS.Shared.DataContracts;
using BeWo.Data.Models;
using BS.Shared.DataContracts;
using Dakota.Models.Infos;
using System;
using System.Collections.Generic;
@@ -40,7 +41,7 @@ namespace Dakota.Logic
IsSammelrechnung = isSammelrechnung;
}
public void Add(ServiceInvoiceDC serviceInvoice, OrganisationDC organisation, CustomerDC customer, MandatorDC mandator, int datenaustauschreferenz, int transfernummer)
public void Add(ServiceInvoiceDC serviceInvoice, OrganisationDC organisation, CustomerDC customer, AddressInformation address, int datenaustauschreferenz, int transfernummer)
{
try
{
@@ -56,8 +57,10 @@ namespace Dakota.Logic
// "E" - Echtdaten
// "T" - Testdaten
// Annahme: "E" auch für Erprobungsverfahrenstufe
var verfahrenkennung = verfahrensstufe == 0 ? "TSOL0" : "ESOL0";
// Zusatz: "T" bei Erprobungsverfahrenstufe
var isTest = verfahrensstufe == BS.Shared.GkvVerfahrensstufe.Test || verfahrensstufe == BS.Shared.GkvVerfahrensstufe.Erprobung;
var verfahrenkennung = isTest ? "TSOL0" : "ESOL0";
var logischer_dateiname = DakotaConfig.GetLogischerDateiname(Month).Trim();
var info_nutz_add = DakotaInfoCreator.GetEmptyInfoNutzdatendatei(DakotaConfig.IKAbsender, organisation.IKDatenannahmestelle, (int)verfahrensstufe, logischer_dateiname, datenaustauschreferenz);
@@ -73,7 +76,7 @@ namespace Dakota.Logic
{
foreach (var invoice in peroid.InvoiceItems)
{
var info_nutz_item = new InfoParameterInvoiceItem(serviceInvoice, invoice, organisation, customer, mandator);
var info_nutz_item = new InfoParameterInvoiceItem(serviceInvoice, invoice, organisation, customer, address);
DakotaInfoCreator.AddInfoParameter(nutzdaten, info_nutz_item, Version);
}

View File

@@ -102,11 +102,13 @@ namespace Dakota.Models.Blocke
{
var sumseg = new decimal[3];
Dictionary<int, decimal[]> segments = new Dictionary<int, decimal[]>();
Dictionary<string, decimal[]> segments = new Dictionary<string, decimal[]>();
foreach (var fall in NachrichtSLLA.BlockKlienten)
{
int status = 11;
var versicherten_status = fall.SegmentSLLAINV.Versichertenstatus.GetValue();
var schlüssel_summenstatus = SchlüsselSummenstatus.Parse(versicherten_status);
var status = schlüssel_summenstatus.Value;
if (!segments.ContainsKey(status))
{
@@ -133,7 +135,7 @@ namespace Dakota.Models.Blocke
NachrichtSLGA.SegmentGES00.Gesamtbruttobetrag.SetValue(sumseg[1]);
NachrichtSLGA.SegmentGES00.GesamtbetragZuzahlung.SetValue(sumseg[2]);
foreach (var key in segments.Keys)
foreach (var key in segments.Keys.OrderBy(x => x))
{
var segment = new SegmentSLGAGES();
var array = segments[key];

View File

@@ -4,103 +4,112 @@ using System;
namespace Dakota.Models.Daten
{
internal class Datenelement : Dateneinheit
{
private protected string _Value;
private protected bool _IgnoreCheck;
internal class Datenelement : Dateneinheit
{
private protected string _Value;
private protected bool _IgnoreCheck;
public int MinStellen { get; set; }
public int MaxStellen { get; set; }
public Feldart Feldart { get; set; }
public int MinStellen { get; set; }
public int MaxStellen { get; set; }
public Feldart Feldart { get; set; }
public Datenelement(string title)
{
Title = title;
public Datenelement(string title)
{
Title = title;
_IgnoreCheck = false;
}
public Datenelement(string title, int min, int max, Feldart art) : this(title)
{
MinStellen = min;
MaxStellen = max;
Feldart = art;
}
public Datenelement(string title, int count, Feldart art) : this(title, count, count, art)
{
_IgnoreCheck = false;
}
public Datenelement(string title, int min, int max, Feldart art) : this(title)
{
MinStellen = min;
MaxStellen = max;
Feldart = art;
}
public Datenelement(string title, int count, Feldart art) : this(title, count, count, art)
{
}
}
public override string GetValue()
{
if (!HasValue())
{
if (Feldart == Feldart.Muss)
{
// Auffüllen
throw new GkvException($"Das Feld \"{Title}\" muss gefüllt sein!");
}
else
{
// Leer lassen
public override string GetValue()
{
if (!HasValue())
{
if (Feldart == Feldart.Muss)
{
// Auffüllen
throw new GkvException($"Das Feld \"{Title}\" muss gefüllt sein!");
}
else
{
// Leer lassen
return string.Empty;
}
}
return string.Empty;
}
}
if (!_IgnoreCheck)
{
if(_Value.Length < MinStellen)
{
throw new GkvException($"Das Feld \"{Title}\" hat bei der Auswertung {_Value.Length} Stellen ergeben! Nach Vorgabe muss es jedoch mindestens {MinStellen} Stellen haben");
}
else if (_Value.Length > MaxStellen)
{
throw new GkvException($"Das Feld \"{Title}\" hat bei der Auswertung {_Value.Length} Stellen ergeben! Nach Vorgabe darf es jedoch maximal {MaxStellen} Stellen haben");
}
}
if (!_IgnoreCheck)
{
if (_Value.Length < MinStellen)
{
throw new GkvException($"Das Feld \"{Title}\" hat bei der Auswertung {_Value.Length} Stellen ergeben! Nach Vorgabe muss es jedoch mindestens {MinStellen} Stellen haben");
}
else if (_Value.Length > MaxStellen)
{
throw new GkvException($"Das Feld \"{Title}\" hat bei der Auswertung {_Value.Length} Stellen ergeben! Nach Vorgabe darf es jedoch maximal {MaxStellen} Stellen haben");
}
}
return _Value;
}
return _Value;
}
public void ClearValue()
{
_Value = null;
}
public override bool HasValue()
{
return !string.IsNullOrEmpty(_Value);
}
public void SetValue(int value)
{
if (Feldart == Feldart.Kann && value == 0)
return;
public void ClearValue()
{
_Value = null;
}
public override bool HasValue()
{
return !string.IsNullOrEmpty(_Value);
}
public void SetValue(int value)
{
if (Feldart == Feldart.Kann && value == 0)
return;
SetValue(value.ToString());
}
public void SetValue(Schlüssel schlussel)
{
if (schlussel is null)
return;
SetValue(schlussel.Value);
}
public void SetValue(string value)
{
if (value is null)
return;
SetValue(value.ToString());
}
public void SetValue(Schlüssel schlussel)
{
if (schlussel is null)
return;
SetValue(schlussel.Value);
}
public void SetValue(string value)
{
if (value is null)
return;
if (value.Length < MinStellen)
{
throw new GkvException($"Das Feld \"{Title}\" hat bei der Erstellung {_Value.Length} Stellen ergeben! Nach Vorgabe muss es jedoch mindestens {MinStellen} Stellen haben");
}
value = value.Trim();
if (value.Length > MaxStellen)
{
throw new GkvException($"Das Feld \"{Title}\" hat bei der Erstellung {_Value.Length} Stellen ergeben! Nach Vorgabe darf es jedoch maximal {MaxStellen} Stellen haben");
}
if (value.Length < MinStellen)
{
throw new GkvException($"Das Feld \"{Title}\" hat bei der Erstellung {_Value.Length} Stellen ergeben! Nach Vorgabe muss es jedoch mindestens {MinStellen} Stellen haben");
}
var mod_value = DakotaUtils.ClearTextString(value);
if (value.Length > MaxStellen)
{
throw new GkvException($"Das Feld \"{Title}\" hat bei der Erstellung {_Value.Length} Stellen ergeben! Nach Vorgabe darf es jedoch maximal {MaxStellen} Stellen haben");
}
_Value = mod_value;
}
}
try
{
var mod_value = DakotaUtils.ClearTextString(value);
_Value = mod_value;
}
catch (Exception e)
{
throw new Exception($"Fehler bei Feld \'{Title}\' mit Wert \"{value}\"", e);
}
}
}
}

View File

@@ -1,4 +1,5 @@
using BS.Shared.DataContracts;
using BeWo.Data.Models;
using BS.Shared.DataContracts;
using Dakota.Models.Schlüssels;
using System;
using System.Collections.Generic;
@@ -15,22 +16,21 @@ namespace Dakota.Models.Infos
public ServiceInvoiceDC ServiceInvoice { get; set; }
public CustomerDC Customer { get; set; }
public OrganisationDC Organisation { get; set; }
public MandatorDC Mandator { get; set; }
public AddressInformation AddressInformation { get; set; }
public string Abrechnungsposition { get; set; }
public string IKKostentrager => Organisation.IKKostentrager;
public string IKKrankenkasse => Organisation.IKKrankenkasse;
public string IKLeistungserbringer => Mandator.IKLeistungserbringer;
public InfoParameterInvoiceItem(ServiceInvoiceDC serviceInvoice, InvoiceItemDC invoiceItem, OrganisationDC organisation, CustomerDC customer, MandatorDC mandator)
public InfoParameterInvoiceItem(ServiceInvoiceDC serviceInvoice, InvoiceItemDC invoiceItem, OrganisationDC organisation, CustomerDC customer, AddressInformation addressInformation)
{
InvoiceItem = invoiceItem;
InvoiceBase = serviceInvoice.InvoiceBase;
ServiceInvoice = serviceInvoice;
Customer = customer;
Organisation = organisation;
Mandator = mandator;
AddressInformation = addressInformation;
// Todo: Valid prüfen
Abrechnungsposition = invoiceItem.UnitDescription?.Substring(6) ?? "TODO";

View File

@@ -35,18 +35,20 @@ namespace Dakota.Models.Nachrichten
public static bool TryParse(string[] rows, string filename, int firstline, out NachrichtKTD nachricht)
{
nachricht = null;
try
{
nachricht = Parse(rows, filename, firstline);
return true;
}
catch(Exception e)
catch(Exception)
{
nachricht = null;
}
return false;
}
return false;
}
public static NachrichtKTD Parse(string[] rows, string filename, int firstline)
{

View File

@@ -62,7 +62,7 @@ namespace Dakota.Models.Nachrichten
SegmentSLLAFKT.IKLeistungserbringers.SetValue(info.IKLeistungserbringer);
SegmentSLLAFKT.IKKostenträgers.SetValue(info.IKKostentrager);
SegmentSLLAFKT.IKKrankenkasse.SetValue(info.IKKrankenkasse);
SegmentSLLAFKT.IKRechnungsstellers.SetValue(info.IKAbsender);
//SegmentSLLAFKT.IKRechnungsstellers.SetValue(info.IKAbsender);
foreach (var infofall in info.Abrechnungsfalle.OrderBy(x => x.InfosAbrechnungsposition.Min(y => y.DatumDerLeistungserbringung)))
{

View File

@@ -15,5 +15,21 @@ namespace Dakota.Models.Schlüssels
public static SchlüsselSummenstatus Angehörige => new SchlüsselSummenstatus("31");
public static SchlüsselSummenstatus Rentner => new SchlüsselSummenstatus("51");
public static SchlüsselSummenstatus NichtZugehörigerStatus => new SchlüsselSummenstatus("99");
public static SchlüsselSummenstatus Parse(string versichtenstatus)
{
var status_key = versichtenstatus.FirstOrDefault();
if (status_key == '1')
return Mitglieder;
if (status_key == '3')
return Angehörige;
if (status_key == '5')
return Rentner;
return NichtZugehörigerStatus;
}
}
}

View File

@@ -4,13 +4,26 @@
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<appSettings>
<add key="GkvAbrechnungResultFolderPath" value="C:\GkvAbrechnung\Results\" />
<add key="GkvAbrechnungQueueFolderPath" value="C:\GkvAbrechnung\Queue\" />
<add key="GkvAbrechnungFailedFolderPath" value="C:\GkvAbrechnung\Failed\" />
<add key="GkvAbrechnungResultFolderPath" value="C:\GkvAbrechnung\Results\" />
<add key="GkvAbrechnungQueueFolderPath" value="C:\GkvAbrechnung\Data\Queue\" />
<add key="GkvAbrechnungCopyFolderPath" value="C:\GkvAbrechnung\Data\QueueCopy\" />
<add key="GkvAbrechnungFailedFolderPath" value="C:\GkvAbrechnung\Data\QueueFailed\" />
<add key="GkvAbrechnungSuccessFolderPath" value="C:\GkvAbrechnung\Data\QueueSuccess\" />
<add key="GkvAbrechnungCopySave" value="True" />
<add key="GkvAbrechnungFailedSave" value="True" />
<add key="GkvAbrechnungSuccessSave" value="True" />
<add key="DakotaExePath" value="C:\Program Files (x86)\ITSG\dakotale\dakota30.exe" />
<add key="DakotaFolder" value="C:\dakotale\" />
<add key="ProcessWaitForExitMs" value="10000" />
<add key="LogPath" value="C:\GkvAbrechnung\Sender\log.txt" />
<add key="LogFileName" value="logs.txt" />
<add key="LogSingleFile" value="True" />
<add key="GkvSecretKey" value="DfDGNGn72PKfSYxSUsmRdzuBtpR9novewlmYU3gsjiFgSkaZZeylUXlbO42cWNqiKgLdMUFtWUNZT962F1raQDR7HGUzCNYsFeC" />
<add key="SendMailModuleSmtpServer" value="mail.ownsoft.de" />
<add key="SendMailModuleGkvEnabled" value="true" />
<add key="SendMailModuleGkvSmtpUser" value="bewoplaner.support@ownsoft.de" />
<add key="SendMailModuleGkvSmtpPassword" value="JJVjJntw2yaRDAxInotF" />
<add key="SendMailModuleGkvSender" value="noreply@bewoplaner.de" />
<add key="SendMailModuleGkvReceiver" value="dakota.exchange@ownsoft.de" />
</appSettings>
</configuration>

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