Files
BeWoPlaner/BeWo/ViewModel/ListViewModel/InvoiceBaseListVM.cs

134 lines
3.6 KiB
C#
Raw Normal View History

2016-06-27 01:45:38 +02:00
using System.Collections.Generic;
using System.ComponentModel;
2025-06-23 10:54:30 +02:00
using System.IO;
2016-06-27 01:45:38 +02:00
using System.Linq;
2025-06-23 10:54:30 +02:00
using System.Windows;
2016-06-27 01:45:38 +02:00
using BeWo.ServiceProxy;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using DevExpress.DataAccess.Native.Web;
2025-06-23 10:54:30 +02:00
using DevExpress.Mvvm;
using DevExpress.Xpf.Editors;
2016-06-27 01:45:38 +02:00
using DevExpress.Xpf.Layout.Core;
namespace BeWo.ViewModel.ListViewModel
{
public class InvoiceBaseListVM : AbstractDCListMapperVM<InvoiceBaseDC, InvoiceBaseVM>
{
public static string PropertyName_DateTimeSpanFilter = "DateTimeSpanFilter";
public static string PropertyName_FilterResultAmountSum = "FilterResultAmountSum";
public static string PropertyName_FilterResultAmountNotPaidSum = "FilterResultAmountNotPaidSum";
private DateTimeSpan _DateTimeSpanFilter;
private BindingList<InvoiceBaseVM> _FilteredInvoices;
public InvoiceBaseListVM(List<InvoiceBaseDC> pDCs) : base(pDCs)
{
2025-06-23 10:54:30 +02:00
VMList.ListChanged += (s, e) => FirePropertyChanged(PropertyName_FilterResultAmountSum);
VMList.ListChanged += (s, e) => FirePropertyChanged(PropertyName_FilterResultAmountNotPaidSum);
2016-06-27 01:45:38 +02:00
bool canExecute(InvoiceBaseVM invoice_vm) => invoice_vm is object && true;
ShowXRechnungCommand = new DelegateCommand<InvoiceBaseVM>(ShowXRechnung, canExecute);
2025-06-23 10:54:30 +02:00
}
2016-06-27 01:45:38 +02:00
public DelegateCommand<InvoiceBaseVM> ShowXRechnungCommand { get; set; }
2016-06-27 01:45:38 +02:00
2025-06-23 10:54:30 +02:00
public DateTimeSpan DateTimeSpanFilter
{
get
{
return _DateTimeSpanFilter;
}
2025-06-23 10:54:30 +02:00
set
2025-06-23 10:54:30 +02:00
{
if (AreDifferent(_DateTimeSpanFilter, value))
2025-06-23 10:54:30 +02:00
{
_DateTimeSpanFilter = value;
FirePropertyChanged(PropertyName_DateTimeSpanFilter);
2025-06-23 10:54:30 +02:00
}
}
}
public decimal? FilterResultAmountSum
{
get
{
return VMList.Sum(e => e.TotalAmount);
}
}
public decimal? FilterResultAmountNotPaidSum
{
get
{
decimal? sum = 0.0m;
foreach (var item in VMList)
sum += item.IsPaid ? item.TotalAmount : 0;
return FilterResultAmountSum - sum;
}
}
public void ShowXRechnung(InvoiceBaseVM invoice_vm)
{
var invoice_base = invoice_vm;
// Holt bereits geladene
if (invoice_base.XRechnungStoredFileVM is StoredFileVM vm && vm.Data is byte[] bytes)
{
2026-06-10 15:41:31 +02:00
BeWoApp.WindowService.ShowERechnungWindow(new MemoryStream(bytes));
return;
}
// Noch nicht geladen
var invoice_base_dc = invoice_base.DataContract;
var invoice_base_oid = invoice_base_dc.InvoiceBaseOid ?? -1;
var invoice_type = (int)invoice_base_dc.Type;
var report_link = invoice_base.ReportLink;
ServiceFacade.DoAccountingEnhancedServiceAsnyc(
x => x.GetXRechnung(invoice_base_oid, invoice_type, report_link),
response =>
2025-06-23 10:54:30 +02:00
{
if (response.Success)
{
if (response.Data.Item1 is StoredFileDC dc)
{
invoice_base.XRechnungStoredFileVM.UpdateByDataContract(dc);
}
bytes = response.Data.Item2;
invoice_base.XRechnungStoredFileVM.Data = bytes;
2026-06-10 15:41:31 +02:00
BeWoApp.WindowService.ShowERechnungWindow(new MemoryStream(bytes));
}
else
{
MessageBox.Show(response.ToErrorString());
}
2025-06-23 10:54:30 +02:00
}
);
}
2016-06-27 01:45:38 +02:00
internal void UpdateList(IList<InvoiceBaseDC> dcList)
{
2025-06-23 10:54:30 +02:00
VMList.Clear();
VMList.AddRange(dcList.Select(CreateVM));
2016-06-27 01:45:38 +02:00
2025-06-23 10:54:30 +02:00
FirePropertyChanged(PropertyName_FilterResultAmountSum);
FirePropertyChanged(PropertyName_FilterResultAmountNotPaidSum);
2016-06-27 01:45:38 +02:00
}
2024-04-29 12:37:18 +02:00
internal void UpdateList(IList<InvoiceBaseVM> vmList)
{
VMList.Clear();
VMList.AddRange(vmList);
2024-04-29 12:37:18 +02:00
FirePropertyChanged(PropertyName_FilterResultAmountSum);
FirePropertyChanged(PropertyName_FilterResultAmountNotPaidSum);
}
}
2016-06-27 01:45:38 +02:00
}