王 垚
2020-11-26 a0e7ad65f78935d8b4818f063f6974db567d199d
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
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
 
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Demo.BillView
{
    [Description("齐套分析物料明细")]
    [HotUpdate]
    public class ProCompleteAnalysisMateriel : AbstractDynamicFormPlugIn
    {
        bool did = false;
 
        public override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
 
            if (this.View.OpenParameter.GetCustomParameter("FHMainICMOInterIDr") == null)
            {
                SearchList();
            }
            else
            {
                if (did)
                    return;
                string FHMainICMOInterIDr = this.View.OpenParameter.GetCustomParameter("FHMainICMOInterIDr").ToString();//主生产订单主内码
                                                                                                                        //string FBillNo = this.View.OpenParameter.GetCustomParameter("FBillNo").ToString();
                string sql = string.Format(@"/*dialect*/select a.*,b.FBILLNO FBILLNOs from JIT_MOMaterReadysBill a  
                                        left join T_PRD_MO b on a.FHMainICMOInterIDr=b.FID
                                        where FHMainICMOInterIDr ='{0}' ", FHMainICMOInterIDr);
                DataTable dt = DBServiceHelper.ExecuteDataSet(this.Context, sql).Tables[0];
                if (dt.Rows.Count > 0)
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        /*
                        计划发料数量 = 计划总数量 * 单位用料
                        齐套数量 = 齐套数 * 单位用料(考虑分层级* 父级)
                        缺料数量 = 1 - 2
                        是否齐套 = 缺料 < 0 ?
                        */
                        decimal FPlanIssueCount = Convert.ToDecimal(dt.Rows[i]["FSumPlanCount"]) * Convert.ToDecimal(dt.Rows[i]["FUNITDOSAGE"]);//计划发料数量
                        decimal FCompleteCount = Convert.ToDecimal(dt.Rows[i]["FCompleteCount"]) * Convert.ToDecimal(dt.Rows[i]["FUNITDOSAGE"]);//齐套数量
 
                        decimal FLackCount = FPlanIssueCount - FCompleteCount;//缺料数量
                        this.Model.CreateNewEntryRow("FEntity");
                        this.Model.SetValue("FSEQ", i + 1, i);//序号
                        this.Model.SetValue("FMateralDetailId", dt.Rows[i]["FHMATERID"], i);
                        this.Model.SetValue("FScOrderNoDetail", dt.Rows[i]["FBILLNOs"], i);//生产订单号
                        this.Model.SetValue("FOccupyCount", FCompleteCount, i);//     
                        this.Model.SetValue("FCurrentCount", dt.Rows[i]["FHStockQty"], i);//当前库存情况  
                    }
                }
 
                did = true;
 
            }
 
 
        }
 
        /// <summary>
        /// 查询事件
        /// </summary>
        public void SearchList()
        {
            string sqlwhere = " where 1=1";
            string sql = string.Format(@"/*dialect*/select a.*,b.FBILLNO FBILLNOs from JIT_MOMaterReadysBill a  
                                        left join T_PRD_MO b on a.FHMainICMOInterIDr=b.FID
                                         ");
 
            //生产订单号
            string PRDBillNo = Convert.ToString(this.Model.GetValue("FScOrderNo"));
            if (!string.IsNullOrEmpty(PRDBillNo))
                sqlwhere += $" and FPRDBillNo='{PRDBillNo}'";
 
            sql += sqlwhere;
            DataTable dt = DBServiceHelper.ExecuteDataSet(this.Context, sql).Tables[0];
            this.Model.DeleteEntryData("FEntity");
            if (dt.Rows.Count > 0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    /*
                        计划发料数量 = 计划总数量 * 单位用料
                        齐套数量 = 齐套数 * 单位用料(考虑分层级* 父级)
                        缺料数量 = 1 - 2
                        是否齐套 = 缺料 < 0 ?
                        */
                    decimal FPlanIssueCount = Convert.ToDecimal(dt.Rows[i]["FSumPlanCount"]) * Convert.ToDecimal(dt.Rows[i]["FUNITDOSAGE"]);//计划发料数量
                    decimal FCompleteCount = Convert.ToDecimal(dt.Rows[i]["FCompleteCount"]) * Convert.ToDecimal(dt.Rows[i]["FUNITDOSAGE"]);//齐套数量
 
                    decimal FLackCount = FPlanIssueCount - FCompleteCount;//缺料数量
                    this.Model.CreateNewEntryRow("FEntity");
                    this.Model.SetValue("FSEQ", i + 1, i);//序号
                    this.Model.SetValue("FMateralDetailId", dt.Rows[i]["FHMATERID"], i);
                    this.Model.SetValue("FScOrderNoDetail", dt.Rows[i]["FBILLNOs"], i);//生产订单号
                    this.Model.SetValue("FOccupyCount", FCompleteCount, i);//     
                    this.Model.SetValue("FCurrentCount", dt.Rows[i]["FHStockQty"], i);//当前库存情况  
                }
            }
            this.View.UpdateView();
 
            did = true;
        }
 
 
        public override void BarItemClick(BarItemClickEventArgs e)
        {
            base.BarItemClick(e);
            if (e.BarItemKey.ToUpper() == "TBFILTER")
            {
                SearchList();
            }
        }
    }
}