啊鑫
2024-07-11 afbf8700d137710713db61955879d0f5acb73738
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#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;
        }
    }
}