mirror of
https://github.com/DevExpress/netcore-winforms-demos.git
synced 2025-12-26 03:17:34 +00:00
128 lines
6.0 KiB
C#
128 lines
6.0 KiB
C#
#if !DXCORE3
|
|
namespace DevExpress.DevAV.Modules {
|
|
using System;
|
|
using System.IO;
|
|
using DevExpress.DevAV.ViewModels;
|
|
using DevExpress.Snap.Core.API;
|
|
using DevExpress.XtraRichEdit;
|
|
|
|
public partial class OrderMailMerge : BaseModuleControl, IRibbonModule {
|
|
public OrderMailMerge()
|
|
: base(typeof(OrderMailMergeViewModel)) {
|
|
InitializeComponent();
|
|
BindCommands();
|
|
UpdateUI();
|
|
//
|
|
ViewModel.MailTemplateChanged += ViewModel_MailTemplateChanged;
|
|
ViewModel.MailTemplateSelectedChanged += ViewModel_MailTemplateSelectedChanged;
|
|
ViewModel.PeriodChanged += ViewModel_PeriodChanged;
|
|
ViewModel.Save += ViewModel_Save;
|
|
ViewModel.Modified = snapControl.Modified;
|
|
snapControl.ModifiedChanged += snapControl_ModifiedChanged;
|
|
}
|
|
protected override void OnMVVMContextReleasing() {
|
|
ViewModel.Save -= ViewModel_Save;
|
|
ViewModel.PeriodChanged -= ViewModel_PeriodChanged;
|
|
ViewModel.MailTemplateChanged -= ViewModel_MailTemplateChanged;
|
|
ViewModel.MailTemplateSelectedChanged -= ViewModel_MailTemplateSelectedChanged;
|
|
}
|
|
protected override void OnDisposing() {
|
|
snapControl.ModifiedChanged -= snapControl_ModifiedChanged;
|
|
base.OnDisposing();
|
|
}
|
|
void ViewModel_MailTemplateSelectedChanged(object sender, EventArgs e) {
|
|
UpdateUI();
|
|
}
|
|
void ViewModel_MailTemplateChanged(object sender, EventArgs e) {
|
|
UpdateUI();
|
|
ShowReport();
|
|
}
|
|
void ViewModel_PeriodChanged(object sender, EventArgs e) {
|
|
if(ViewModel.MailTemplate.GetValueOrDefault() == SalesReportType.SalesReport)
|
|
ShowReportByMonth(GetSalesReportPeriod());
|
|
}
|
|
DateTime GetSalesReportPeriod() {
|
|
return (ViewModel.Period.GetValueOrDefault() == OrderMailMergePeriod.ThisMonth) ? DateTime.Now : DateTime.Now.AddMonths(-1);
|
|
}
|
|
void LoadTemplate(SnapDocument document, SalesReportType mailTemplate) {
|
|
string template = (mailTemplate.ToFileName() + ".snx");
|
|
using(var stream = MailMergeTemplatesHelper.GetTemplateStream(template))
|
|
document.LoadDocument(stream, DevExpress.Snap.Core.API.SnapDocumentFormat.Snap);
|
|
ribbonControl.ApplicationDocumentCaption = DevExpress.XtraEditors.EnumDisplayTextHelper.GetDisplayText(mailTemplate);
|
|
ViewModel.Modified = snapControl.Modified;
|
|
}
|
|
void UpdateUI() {
|
|
mailMergeRibbonPage1.Visible = !ViewModel.IsMailTemplateSelected;
|
|
rpbReportRange.Visible = ViewModel.IsMailTemplateSelected && ViewModel.MailTemplate.GetValueOrDefault() == SalesReportType.SalesReport;
|
|
}
|
|
public OrderMailMergeViewModel ViewModel {
|
|
get { return GetViewModel<OrderMailMergeViewModel>(); }
|
|
}
|
|
public OrderCollectionViewModel CollectionViewModel {
|
|
get { return GetParentViewModel<OrderCollectionViewModel>(); }
|
|
}
|
|
protected override void OnLoad(EventArgs ea) {
|
|
base.OnLoad(ea);
|
|
bindingSource.DataSource = CollectionViewModel.SelectedEntity;
|
|
if(snapControl.Document.IsEmpty)
|
|
ShowReport();
|
|
}
|
|
void ShowReport() {
|
|
bindingSource.DataSource = CollectionViewModel.SelectedEntity;
|
|
switch(ViewModel.MailTemplate.GetValueOrDefault()) {
|
|
case SalesReportType.SalesReport:
|
|
snapControl.DataSource = CollectionViewModel.GetOrderItems();
|
|
ShowReportByMonth(GetSalesReportPeriod());
|
|
break;
|
|
case SalesReportType.SalesByStore:
|
|
snapControl.DataSource = CollectionViewModel.GetOrderItems(CollectionViewModel.SelectedEntity.StoreId);
|
|
GenerateReport(null);
|
|
break;
|
|
case SalesReportType.Invoice:
|
|
case SalesReportType.OrderFollowUp:
|
|
LoadTemplate(snapControl.Document, ViewModel.MailTemplate.GetValueOrDefault());
|
|
snapControl.DataSource = bindingSource;
|
|
break;
|
|
}
|
|
}
|
|
void ShowReportByMonth(DateTime month) {
|
|
DateTime start = new DateTime(month.Year, month.Month, 1);
|
|
DateTime end = start.AddMonths(1);
|
|
GenerateReport(document =>
|
|
{
|
|
document.Parameters["startDate"].Value = start;
|
|
document.Parameters["endDate"].Value = end;
|
|
});
|
|
}
|
|
void GenerateReport(Action<SnapDocument> initAction) {
|
|
snapControl.BeginUpdate();
|
|
LoadTemplate(snapControl.Document, ViewModel.MailTemplate.GetValueOrDefault());
|
|
if(initAction != null)
|
|
initAction(snapControl.Document);
|
|
snapControl.EndUpdate();
|
|
using(MemoryStream ms = new MemoryStream()) {
|
|
snapControl.Document.ExportDocument(ms, DocumentFormat.OpenXml);
|
|
ms.Position = 0;
|
|
snapControl.Document.LoadDocument(ms, DocumentFormat.OpenXml);
|
|
}
|
|
ViewModel.Modified = snapControl.Modified;
|
|
}
|
|
void BindCommands() {
|
|
biClose.BindCommand(() => ViewModel.Close(), ViewModel);
|
|
bbiThisMonth.BindCommand(() => ViewModel.SetThisMonthPeriod(), ViewModel);
|
|
bbiPrevMonth.BindCommand(() => ViewModel.SetLastMonthPeriod(), ViewModel);
|
|
}
|
|
void snapControl_ModifiedChanged(object sender, EventArgs e) {
|
|
ViewModel.Modified = snapControl.Modified;
|
|
}
|
|
void ViewModel_Save(object sender, EventArgs e) {
|
|
snapControl.SaveDocumentAs();
|
|
}
|
|
#region
|
|
XtraBars.Ribbon.RibbonControl IRibbonModule.Ribbon {
|
|
get { return ribbonControl; }
|
|
}
|
|
#endregion
|
|
}
|
|
}
|
|
#endif |