Files
BeWoPlaner/BeWo/View/Detail/Accounting/SettlementInvoiceView.xaml.cs
Alexandra 06332aed88 Erweiterung Rechnungsübersicht um neue Bools,
neues Recht Rechnung nach Versand bearbeiten
2024-06-12 16:58:10 +02:00

295 lines
12 KiB
C#

using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Navigation;
using BS.Shared;
using BS.Shared.DataContracts;
using BeWo.Controls;
using BeWo.Core;
using BeWo.ServiceProxy;
using BeWo.ViewModel;
using BeWo.ViewModel.ListViewModel;
using BS.Shared.Core;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
using BS.Shared.Translation;
using System.Windows.Media;
using System;
namespace BeWo.View.Detail.Accounting
{
public partial class SettlementInvoiceView : BeWoView
{
private readonly SettlementInvoiceItemEditView _EditView;
private readonly SettlementInvoiceItemEditView2 _EditView2;
private CompactSupportConceptDC _SelectedSupportConcept;
public CompactSupportConceptDC SelectedSupportConcept
{
get { return _SelectedSupportConcept; }
set { _SelectedSupportConcept = value; }
}
private SettlementListVM _Viewmodel;
public SettlementInvoiceView()
{
this.InitializeComponent();
this._EditView = new SettlementInvoiceItemEditView();
this._EditView.EditingFinished += (s, e) =>
{
// OpenViewModel(_EditView.ViewModel);
this.ReloadViewModel();
this.MainControl.CloseCurrentPopUp();
};
this._EditView2 = new SettlementInvoiceItemEditView2();
this._EditView2.EditingFinished += (s, e) =>
{
// OpenViewModel(_EditView.ViewModel);
this.ReloadViewModel();
this.MainControl.CloseCurrentPopUp();
};
}
internal SettlementListVM ViewModel
{
get
{
return this._Viewmodel;
}
set
{
this.DataContext = value;
this._Viewmodel = value;
}
}
public void ReloadViewModel()
{
VMFactory.CreateSettlementListForSupportConceptVMAsync(this._SelectedSupportConcept.SupportConceptOid, r => this.Dispatch(delegate { this.ViewModel = r; }));
}
// private void OpenViewModel(SettlementVM vm)
// {
// Dispatcher.BeginInvoke(DispatcherPriority.Normal,
// (Action)delegate
// {
// String url = BeWoApp.SiteOfOrigin.ToString()
// + "/ReportView.aspx?dcid="
// + vm.DataContract.SettlementIvoiceOid.ToString()
// + "&tenant=" + BeWoApp.Tenant
// + "&username=" + BeWoApp.UserName
// + "&rc2password=" + BeWoApp.LoggedOnUser.RC2Password
// + "&type=" + Utils.EnumName<ReportTypes>(ReportTypes.Settlement);
// url = BeWoWpfUtils.GetHTMLEncodedURL(url);
// hyperlinkPrint.NavigateUri = new Uri(url);
// hyperlinkPrint.DoClick();
// });
// }
private void SupportConceptSearchView_ItemSelected(object sender, EventArgs<CompactSupportConceptDC> e)
{
this.popup_costBearer.IsOpen = false;
this.popupedit_CostBeaerer.Text = e.Data.DetailDescription;
this._SelectedSupportConcept = e.Data;
this.ReloadViewModel();
}
private void bt_delete_Click(object sender, RoutedEventArgs e)
{
var vm = BeWoWpfUtils.GetTag<SettlementVM>(sender);
if (vm.DataContract.IsSent && !BeWoApp.LoggedOnUser.HasRight(UserRightType.FinanzenRechnungenNachVersandBearbeiten))
{
MessageBox.Show(Translator.Translate("Sie besitzen nicht das Recht Rechnungen nach Versand zu bearbeiten. Bitte wenden Sie sich an den Administrator!"), "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Exclamation);
return;
}
if (MessageBox.Show("Sind Sie sicher, dass Sie den gewählten Eintrag löschen möchten?", "Spitzabrechnung löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
{
this.ViewModel.VMList.Remove(vm);
ServiceFacade.DoAccountingServiceAsync(s => s.DeactivateSettlementInvoice(new[] { vm.DataContract }.ToList()));
}
}
private void bt_edit_Click(object sender, RoutedEventArgs e)
{
var vm = BeWoWpfUtils.GetTag<SettlementVM>(sender);
if (vm.DataContract.IsSent && !BeWoApp.LoggedOnUser.HasRight(UserRightType.FinanzenRechnungenNachVersandBearbeiten))
{
MessageBox.Show(Translator.Translate("Sie besitzen nicht das Recht Rechnungen nach Versand zu bearbeiten. Bitte wenden Sie sich an den Administrator!"), "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Exclamation);
return;
}
if (vm != null)
{
if (ShowOldEditView(vm))
{
this._EditView.ViewModel = vm;
this.MainControl.ShowControlAsModalPopup(this._EditView);
}
else
{
this._EditView2.ViewModel = vm;
this.MainControl.ShowControlAsModalPopup(this._EditView2);
}
}
}
private void button_addCostBearer_Click(object sender, RoutedEventArgs e)
{
if (ViewModel.VMList.Count > 0)
{
FrageNachRechnungsart();
}
else
{
ErstelleNeueSpitzabrechnung();
}
}
private void ErstelleNeueSpitzabrechnung()
{
ServiceFacade.DoOperationsServiceAsync(
s => s.GenerateInitialSettlementDC(this._SelectedSupportConcept.CostBearerRelOids[0]),
dc =>
{
dc.SupportConceptOid = this._SelectedSupportConcept.SupportConceptOid;
this.Dispatch(
delegate
{
var vm = new SettlementVM(dc);
if (ShowOldEditView(vm))
{
this._EditView.ViewModel = new SettlementVM(dc);
this.MainControl.ShowControlAsModalPopup(this._EditView);
}
else
{
this._EditView2.ViewModel = new SettlementVM(dc);
this.MainControl.ShowControlAsModalPopup(this._EditView2);
}
});
});
}
private void ErstelleDifferenzrechnung()
{
ServiceFacade.DoOperationsServiceAsync(
s => s.GenerateDifferenzSettlementDC(this._SelectedSupportConcept.CostBearerRelOids[0]),
dc =>
{
dc.SupportConceptOid = this._SelectedSupportConcept.SupportConceptOid;
this.Dispatch(
delegate
{
var vm = new SettlementVM(dc);
this._EditView2.ViewModel = new SettlementVM(dc);
this.MainControl.ShowControlAsModalPopup(this._EditView2);
});
});
}
private void FrageNachRechnungsart()
{
//return 0 = Cancel, 1 = Neue Rechnung, 2 = DiffRechnung
var cancelButton = new Button { Content = " Abbrechen " };
cancelButton.Margin = new Thickness(5);
var btnNeueRechnung = new Button { Content = Translator.Translate(" Neue Rechnung erstellen ") };
btnNeueRechnung.Margin = new Thickness(5);
var btnDiffRechnung = new Button { Content = Translator.Translate(" Differenzrechnung erstellen ") };
btnDiffRechnung.Margin = new Thickness(5);
var textBlock = new TextBlock
{
Foreground = Brushes.Black,
Margin = new Thickness(10, 20, 10, 20),
Text = Translator.Translate("Es wurde bereits eine Spitzabrechnung für den ausgewählten Hilfeplan erstellt.\n" +
"Möchten Sie eine neue Rechnung oder eine Differenzrechnung zur letzten\nSpitzabrechnung erstellen?")
};
textBlock.FontSize = 12;
BeWoWindow bewoWindow = BeWoWpfUtils.CreateBeWoPopupWindow(100, 800, true);
cancelButton.Click += delegate { bewoWindow.Close(); };
btnNeueRechnung.Click += delegate
{
bewoWindow.Close();
ErstelleNeueSpitzabrechnung();
};
btnDiffRechnung.Click += delegate
{
bewoWindow.Close();
ErstelleDifferenzrechnung();
};
var centeredStackPanel = new StackPanel { Orientation = Orientation.Vertical, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center };
var buttonStackPanel = new StackPanel { Orientation = Orientation.Horizontal };
buttonStackPanel.HorizontalAlignment = HorizontalAlignment.Right;
buttonStackPanel.Children.Add(btnNeueRechnung);
buttonStackPanel.Children.Add(btnDiffRechnung);
buttonStackPanel.Children.Add(cancelButton);
centeredStackPanel.Children.Add(textBlock);
centeredStackPanel.Children.Add(buttonStackPanel);
var grid = new Grid
{
Background = (LinearGradientBrush)FindResource("ObjectEditBackgroundBrush")
};
grid.Children.Add(centeredStackPanel);
bewoWindow.GroupBoxContent = grid;
bewoWindow.rootGroupBox.Header = "Spitzabrechnung erstellen";
bewoWindow.Owner = BeWoApp.CurrentBeWo.MainWindow;
bewoWindow.Show();
}
private bool ShowOldEditView(SettlementVM vm)
{
if (vm.InvoiceItems == null || vm.InvoiceItems.VMList.Count == 0 || vm.DataContract.DifferentHourlyRateCount > 0)
return true;
return false;
}
private void popupedit_CostBeaerer_PopUpClick(object sender, RoutedEventArgs ev)
{
this.popup_costBearer.IsOpen = true;
}
private void Hyperlink_OnRequestNavigate(object sender, RequestNavigateEventArgs e)
{
BeWoUtils.NavigateToReportUri((sender as System.Windows.Documents.Hyperlink).NavigateUri.ToString(), null);
}
private void Popupedit_CostBeaerer_OnPreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (!BeWoUtils.CheckPopupEditClickableSpace((PopUpEdit)sender, e) || _SelectedSupportConcept == null || !BeWoApp.LoggedOnUser.HasRight(UserRightType.SupportConceptView_Edit))
return;
VMFactory.CreateSupportConceptVMAsync(_SelectedSupportConcept.SupportConceptOid,
cb => this.Dispatch(
() => BeWoUtils.OpenModalViewWindow<SupportConceptVM, SupportConceptDC, SettlementInvoiceView>(cb, this,
() => this.Dispatch(() => BeWoUtils.UpdateAllViews(_SelectedSupportConcept)))));
}
}
}