295 lines
12 KiB
C#
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)))));
|
|
}
|
|
}
|
|
} |