#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
{
///
/// 生成单据向导窗体
///
public partial class frmGenerateWizard : Form
{
private bool _GenSuccess; //生成数据是否成功的标志
private List _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 items)
{
var form = new frmGenerateWizard();
form.LoadItems(items);
form.ShowDialog();
}
private void LoadItems(List 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;
}
}
}