#region
|
|
using System;
|
using System.Collections.Generic;
|
using System.Windows.Forms;
|
using CSFrameworkV5.Business;
|
using CSFrameworkV5.Common;
|
using CSFrameworkV5.Core;
|
using CSFrameworkV5.Library.CommonClass;
|
using DevExpress.XtraEditors.Controls;
|
|
#endregion
|
|
namespace CSFrameworkV5.Library
|
{
|
/// <summary>
|
/// 生成单据向导窗体
|
/// </summary>
|
public partial class frmGenerateWizard : Form
|
{
|
private bool _GenSuccess; //生成数据是否成功的标志
|
private List<IDocGenerateItem> _items;
|
|
private frmGenerateWizard()
|
{
|
InitializeComponent();
|
}
|
|
private IDocGenerateItem CurrentItem => _items[rgItems.SelectedIndex];
|
|
private void btnCancel_Click(object sender, EventArgs e)
|
{
|
Close();
|
}
|
|
private void btnGen_Click(object sender, EventArgs e)
|
{
|
if (ValidateWizard())
|
{
|
//查找目标窗体是否打开
|
var targetForm =
|
MdiTools.FindForm(CurrentItem.TargetFormType.FullName);
|
|
if (targetForm == null) //没有打开目标窗体,程序自动打开
|
{
|
var mainForm =
|
MdiTools
|
.MainForm as
|
IMdiForm; //MDI主窗体
|
targetForm = MdiTools.OpenChildForm(mainForm,
|
CurrentItem.TargetFormType); //打开目标窗体
|
}
|
else
|
{
|
if (!(targetForm is IBusinessSupportable))
|
{
|
Msg.Warning("不支持生成目标窗体的数据!");
|
return; //不是MDI子窗体,退出
|
}
|
|
if ((targetForm as IDataOperatable).DataChanged)
|
{
|
Msg.Warning("目标窗体 '" + CurrentItem.TargetFormName +
|
"' 正在修改数据!请保存或取消修改后才能生成!");
|
return;
|
}
|
|
targetForm.Activate(); //目标窗体已打开,激活显示
|
}
|
|
try
|
{
|
frmWaitingEx.ShowMe(this);
|
|
//调用目标窗体的新增方法
|
(targetForm as IDataOperatable).DoAdd(null);
|
|
//开始生成单据
|
_GenSuccess =
|
CurrentItem.Generate((targetForm as frmBaseBusinessForm)
|
.BLL);
|
}
|
finally
|
{
|
frmWaitingEx.HideMe(this);
|
}
|
|
if (_GenSuccess)
|
{
|
Msg.ShowInformation("生成单据成功,请修改相关数据然后保存!");
|
Close();
|
targetForm.Activate(); //显示目标窗体
|
}
|
else
|
{
|
Msg.ShowError("生成单据失败!");
|
}
|
}
|
}
|
|
public static void ExecuteWizard(List<IDocGenerateItem> items)
|
{
|
var form = new frmGenerateWizard();
|
form.LoadItems(items);
|
form.ShowDialog();
|
}
|
|
private void LoadItems(List<IDocGenerateItem> items)
|
{
|
_items = items;
|
|
foreach (var item in items)
|
rgItems.Properties.Items.Add(
|
new RadioGroupItem("N", item.ItemCaption));
|
|
rgItems.Height = 30 * items.Count;
|
if (items.Count > 0) rgItems.SelectedIndex = 0;
|
}
|
|
private void rgItems_SelectedIndexChanged(object sender, EventArgs e)
|
{
|
pnlDocNo.Visible = CurrentItem.IsDocNoRequired;
|
if (pnlDocNo.Visible) textEdit1.Focus();
|
}
|
|
private bool ValidateWizard()
|
{
|
//由其它单生成本单
|
if (CurrentItem.IsDocNoRequired)
|
{
|
if (textEdit1.Text == "")
|
{
|
Msg.Warning("请输入单据号码!");
|
textEdit1.Focus();
|
return false;
|
}
|
|
if (!CurrentItem.IsDocNoExists(textEdit1.Text))
|
{
|
Msg.Warning("单据号码不存在!");
|
textEdit1.Focus();
|
return false;
|
}
|
|
CurrentItem.SetDocNo(textEdit1.Text); //设置单据号码
|
}
|
|
return true;
|
}
|
}
|
}
|