diff --git a/BeWo/View/Detail/OrganisationView.xaml.cs b/BeWo/View/Detail/OrganisationView.xaml.cs index e203e625b..81b4b6d08 100644 --- a/BeWo/View/Detail/OrganisationView.xaml.cs +++ b/BeWo/View/Detail/OrganisationView.xaml.cs @@ -22,35 +22,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)) { @@ -66,283 +66,284 @@ namespace BeWo.View.Detail label_verfahrensstufe.Visibility = Visibility.Collapsed; radiobuttons_verfahrensstufe.Visibility = Visibility.Collapsed; #endif - } + } - public event EventHandler> OrganisationSavedOrUpdated; + public event EventHandler> OrganisationSavedOrUpdated; - public override bool IsDirty - { - get - { - return ViewModel != null && ViewModel.IsDirty; - } - } + public override bool IsDirty + { + get + { + return ViewModel != null && ViewModel.IsDirty; + } + } - public override string Title - { - get - { - return "Organisationen"; - } - } + public override string Title + { + get + { + return "Organisationen"; + } + } - internal OrganisationVM ViewModel - { - get - { - return _ViewModel; - } + internal OrganisationVM ViewModel + { + get + { + return _ViewModel; + } - set - { - _ViewModel = value; - DataContext = value; + set + { + _ViewModel = value; + DataContext = value; - if (tabitem_schuldienst.Content != null) - { - if (tabitem_schuldienst.Content is StundenplanView view) - { - view.ViewModel = value.Arbeitszeiten; - view.RefreshView(); - } - } - } - } + 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 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); - } + 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); - } + 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(cb)); - } + private void ReloadViewModel(long pOid) + { + VMFactory.CreateOrganisationVMAsync( + pOid, + cb => this.Dispatch( + delegate + { + if (OrganisationSavedOrUpdated != null) + { + OrganisationSavedOrUpdated(this, new EventArgs(cb)); + } - ViewModel = cb; + ViewModel = cb; - if (ModalEditViewUpdateCallback != null) - { - ModalEditViewUpdateCallback(); - } - })); + if (ModalEditViewUpdateCallback != null) + { + ModalEditViewUpdateCallback(); + } + })); - IsDoneWithInsertOrUpdate = true; - } + IsDoneWithInsertOrUpdate = true; + } - public void ReloadViewModel() - { - if (ViewModel.DataContract.OrganisationOid.HasValue) - { - ReloadViewModel(ViewModel.DataContract.OrganisationOid.Value); - } - } + 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; - } + 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(); - } + 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 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; - } + 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); - } - } + 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 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(); + private void Button_deleteAnsprechpartnerClick(object sender, RoutedEventArgs e) + { + var vm = grid_GroupBoxPersonGrid.GetCurrentValue(); - 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); + 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)); - } - } + 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; + 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; - VMFactory.CreatePersonVMAsync(selectedPerson.PersonOid, - cb => this.Dispatch( - () => BeWoUtils.OpenModalViewWindow(cb, this, () => this.Dispatch( - () => BeWoUtils.UpdateAllViews(selectedPerson)), personSavedOrUpdated: (s, args) => this.Dispatch(delegate { })))); - } + if (selectedPerson == null || !BeWoApp.LoggedOnUser.HasRight(UserRightType.PersonView_View)) + return; - private void EMailButton_OnClick(object sender, RoutedEventArgs e) - { - BeWoUtils.OpenMailClient(ViewModel.EMail); - } + VMFactory.CreatePersonVMAsync(selectedPerson.PersonOid, + cb => this.Dispatch( + () => BeWoUtils.OpenModalViewWindow(cb, this, () => this.Dispatch( + () => BeWoUtils.UpdateAllViews(selectedPerson)), personSavedOrUpdated: (s, args) => this.Dispatch(delegate { })))); + } - private void Hyperlink_OnRequestNavigate(object sender, RequestNavigateEventArgs e) - { - BeWoUtils.OpenMailClient(e.Uri.ToString()); - } + private void EMailButton_OnClick(object sender, RoutedEventArgs e) + { + BeWoUtils.OpenMailClient(ViewModel.EMail); + } - 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; + private void Hyperlink_OnRequestNavigate(object sender, RequestNavigateEventArgs e) + { + BeWoUtils.OpenMailClient(e.Uri.ToString()); + } - var ldc = ViewModel.CommitToDataContract(); + private void CreateNewAnsprechpartner_OnClick(object sender, RoutedEventArgs e) + { + if (ValidationTrigger.Validate(groupbox_newOrganisationAnsprechpartner) && pes != null) + { - if (pes.PersonOid != 0) - { - //ViewModel.PersonRelations.AddNewVMToList(); + var mail = textbox_mail.Text; + var fax = textbox_fax.Text; + var phone = textbox_phone.Text; + var notice = textbox_notice.Text; - ServiceFacade.DoOperationsServiceSync(s => s.CreateNewPerson2OrganisationRelation(ldc.OrganisationOid.Value, (ValueListEntryDC) Combobox_Rolle.SelectedItem, pes.PersonOid, mail, fax, phone.ToString(), notice.ToString())); + var ldc = ViewModel.CommitToDataContract(); - Save(); - } + 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())); - textbox_mail.Text = ""; - textbox_fax.Text = ""; - textbox_phone.Text = ""; - textbox_notice.Text = ""; + Save(); + } - - //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 e) - { - popup_person.IsOpen = false; - personsearchview.ItemSelected -= personsearchview_EnvironmentPersonSelected; - pes = e.Data; - popupedit_environmentPersonSearch.Text = pes.FirstName +" "+ pes.LastName; + textbox_mail.Text = ""; + textbox_fax.Text = ""; + textbox_phone.Text = ""; + textbox_notice.Text = ""; - 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); + //ReloadViewModel(); + pes = null; + } + } - var ov = new SbdOrganisationView(ViewModel.Feiertage); - ov.Margin = new Thickness(0, 10, 0, 0); - Grid.SetRow(ov, 1); - GridSBD.Children.Add(ov); - } - } + 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 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(); + var req = new GkvAbrechnungGetIKRequestDC(); - req.IKKrankenkasse = ViewModel.IKKrankenkasse; - req.Leistungserbringergruppe = ViewModel.Leistungserbringergruppe; + req.IKKrankenkasse = ViewModel.IKKrankenkasse; + req.Leistungserbringergruppe = ViewModel.Leistungserbringergruppe; - ServiceFacade.DoAccountingServiceAsync(x => x.SendGetIKRequest(req), cb => Dispatcher.Invoke(() => IKRequestCallback(req, cb))); + ServiceFacade.DoAccountingServiceAsync(x => x.SendGetIKRequest(req), cb => Dispatcher.Invoke(() => IKRequestCallback(req, cb))); } - private void IKRequestCallback(GkvAbrechnungGetIKRequestDC req, GkvAbrechnungGetIKResponseDC response) + private void IKRequestCallback(GkvAbrechnungGetIKRequestDC req, GkvAbrechnungGetIKResponseDC response) { - if(response is null || !response.Success) + if (response is null || !response.Success) { - MessageBox.Show($"Interner Serverfehler.", "Fehler"); - return; - } + 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}\" \n" + + $"konnte keine Datenannahmestelle gefunden werden. Wenn Sie dennoch den elektronischen Datenaustausch mit der Krankenkasse \n" + + $"durchführen möchten, informieren Sie sich bitte bei der Krankenkasse, ob zum elektronischen Datenaustausch eine seperate \n" + + $"Anmeldung benötigt wird.", "Fehler"); + return; } - ViewModel.BezDatenannahmestelle = response.BezDatenannahmestelle; - ViewModel.IKKostentrager = response.IKKostentrager; - ViewModel.IKDatenannahmestelle = response.IKDatenannahmestelle; + ViewModel.BezDatenannahmestelle = response.BezDatenannahmestelle; + ViewModel.IKKostentrager = response.IKKostentrager; + ViewModel.IKDatenannahmestelle = response.IKDatenannahmestelle; - CommandManager.InvalidateRequerySuggested(); - } + CommandManager.InvalidateRequerySuggested(); + } } } \ No newline at end of file diff --git a/Dakota/Logic/DakotaKTDReader.cs b/Dakota/Logic/DakotaKTDReader.cs index 96247c727..bb2ec6e28 100644 --- a/Dakota/Logic/DakotaKTDReader.cs +++ b/Dakota/Logic/DakotaKTDReader.cs @@ -102,7 +102,7 @@ namespace Dakota.Logic if (datenannahmestellen_3.Count() == 1) return GetIKNummern(datenannahmestellen_3.First(), kostentrager, ikkrankenkasse); - throw new GkvException($"Keine oder mehrere Datenannahmestellen für {ikkrankenkasse} gefunden."); + return null; } private Tuple GetIKNummern(SegmentKTDVKG vkg, string kostentrager, string ikkrankenkasse) diff --git a/DakotaUnitTest/DakotaReaderUnitTest.cs b/DakotaUnitTest/DakotaReaderUnitTest.cs index b6dd8270c..bd0b06abb 100644 --- a/DakotaUnitTest/DakotaReaderUnitTest.cs +++ b/DakotaUnitTest/DakotaReaderUnitTest.cs @@ -74,13 +74,7 @@ namespace DakotaUnitTest { var test = Reader.Resolve("104080005", "69", "08101"); - Assert.IsNotNull(test); - - Assert.IsTrue(test.Item1 == "104212516"); - - Assert.IsTrue(test.Item2 == "104212505"); - - Assert.IsTrue(test.Item3 == "104212505"); + Assert.IsNull(test); } } }