From dfbc0389d6b9b2bd8e92e976248b9992a03979f4 Mon Sep 17 00:00:00 2001
From: 王 垚 <1402714037@qq.com>
Date: 星期三, 08 九月 2021 13:23:26 +0800
Subject: [PATCH] 提料生成送货单 下推数量 =提料计划数量 - 已生成送货单数量

---
 src/BLL/Demo.BillView/PRD/Pro_DayPlanBG.cs |   70 ++++++++++++++++++++---------------
 1 files changed, 40 insertions(+), 30 deletions(-)

diff --git a/src/BLL/Demo.BillView/PRD/Pro_DayPlanBG.cs b/src/BLL/Demo.BillView/PRD/Pro_DayPlanBG.cs
index c1c3940..8effc2d 100644
--- a/src/BLL/Demo.BillView/PRD/Pro_DayPlanBG.cs
+++ b/src/BLL/Demo.BillView/PRD/Pro_DayPlanBG.cs
@@ -36,9 +36,8 @@
             double FHQty = Convert.ToDouble(model.GetValue("FHQty"));
             if (e.Field.Key.Contains("FUseRateNew"))
             {
-                if (e.OldValue == e.NewValue)
+                if (e.OldValue == e.NewValue || e.NewValue == null)
                     return;
-                var m = e.Row;
                 double FNumerator = Convert.ToDouble(model.GetValue("FNumerator", e.Row));//鍒嗗瓙
                 double FDenominator = Convert.ToDouble(model.GetValue("FDenominator", e.Row));//鍒嗘瘝
                 double FUseRateNew = Convert.ToDouble(model.GetValue("FUseRateNew", e.Row));//浣跨敤姣斾緥
@@ -49,20 +48,20 @@
                 }
                 Hqty = Math.Ceiling((FNumerator / FDenominator) * FHQty * (FUseRateNew / 100));
                 this.View.Model.SetValue("FHQtyMustNew", Hqty, e.Row);//鏂拌鍒掓暟閲�
-                
-
-                int FentryID = Convert.ToInt32(model.GetEntryPKValue("FEntity",e.Row));//鏄庣粏琛╥d
-                //鏌ヨ鍚岄」娆$殑搴忓彿
-                string sql = 
-                    $"select top 1 FSEQ from Sc_DayPlanPPBomBillSubBG where FReplaceGroup in(select FReplaceGroup from Sc_DayPlanPPBomBillSubBG where FEntryID = {FentryID} )and FEntryID<> { FentryID} ";
-                int Fseq = DBServiceHelper.ExecuteScalar<int>(Context,sql,0);
-                if (Fseq > 0) {
-                    this.View.Model.SetValue("FUseRateNew", 100 - FUseRateNew, Fseq - 1);//鏂拌鍒掓暟閲�
-                }
+                var m = e.Row;
+                //椤规
+                var pro = model.GetValue("FReplaceGroup", m).ToString();
+                var entrys = model.DataObject.GetValue<DynamicObjectCollection>("FEntity");
+                //LogService.WriteAsync(entrys);
+                //鏌ユ壘鍒扮殑鍚屾壒椤规
+                var finds = entrys.Where(entry => entry.GetValue<string>("FReplaceGroup") == pro && entry.GetValue<int>("Seq") != (m + 1));
+                if (finds.Count() == 0) return;
+                var seq = finds.First().GetValue<int>("Seq");
+                model.SetValue("FUseRateNew", 100 - Convert.ToDouble(e.NewValue), seq - 1);
             }
             if (e.Field.Key.Contains("FHQtyMustNew"))
             {
-                if (e.OldValue == e.NewValue)
+                if (e.OldValue == e.NewValue || e.NewValue == null)
                     return;
                 var m = e.Row;
                 double FNumerator = Convert.ToDouble(model.GetValue("FNumerator", e.Row));//鍒嗗瓙
@@ -74,27 +73,38 @@
                     Hqty = Math.Ceiling(FHQtyMustNew / FHQty * 100);
                 }
                 Hqty = Math.Ceiling(FHQtyMustNew / ((FNumerator / FDenominator) * FHQty) * 100);
-                this.View.Model.SetValue("FUseRateNew", Hqty, e.Row);//鏂拌鍒掓暟閲�
-
-                int FentryID = Convert.ToInt32(model.GetEntryPKValue("FEntity", e.Row));//鏄庣粏琛╥d
-                //鏌ヨ鍚岄」娆$殑搴忓彿
-                string sql =
-                    $"select top 1 FSEQ from Sc_DayPlanPPBomBillSubBG where FReplaceGroup in(select FReplaceGroup from Sc_DayPlanPPBomBillSubBG where FEntryID = {FentryID} )and FEntryID<> { FentryID} ";
-                int Fseq = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
-                if (Fseq > 0)
-                {
-                    double FUseRateNew = Convert.ToDouble(model.GetValue("FUseRateNew", e.Row));//浣跨敤姣斾緥
-                    this.View.Model.SetValue("FUseRateNew", 100 - FUseRateNew, Fseq - 1);//鏂拌鍒掓暟閲�
-                }
+                this.View.Model.SetValue("FUseRateNew", Hqty, e.Row);//鏂扮敤鏂欐瘮渚�
             }
         }
 
-        //public override void BeforeSave(BeforeSaveEventArgs e)
-        //{
-        //    base.BeforeSave(e);
+        public override void BeforeSave(BeforeSaveEventArgs e)
+        {
+            base.BeforeSave(e);
+            var entrys = this.View.Model.DataObject.GetValue<DynamicObjectCollection>("FEntity");
+            string resultMes = "";
+            foreach (var entry in entrys)
+            {
+                var fReplaceGroup = entry["FReplaceGroup"].ToString();
+                //LogService.WriteAsync(entrys);
+                //鏌ユ壘鍒扮殑鍚屾壒椤规
+                var finds = entrys.Where(trys => trys.GetValue<string>("FReplaceGroup") == fReplaceGroup);
+                if (finds.Count() > 1) return;
 
-        //    e.Cancel = true;
-        //}
+                string sql = string.Format(@"/*dialect*/
+select count(*) from Sc_DayPlanPPBomBillSub a 
+join Sc_DayPlanPPBomBillMain b on a.FID = b.FID
+where FREPLACEGROUP = '{0}' and FHMaterSubID<> '{1}' and(FPickedQty + FTranslateQty) > FHQty * ((100 - {2}) / 100.0) * FDwyl and a.FID = {3}", entry["FReplaceGroup"].ToString(), entry["FHMaterSubID_Id"].ToString(), entry["FUseRateNew"].ToString(), entry["FDayPlanId"].ToString());
+                int result = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
+                if (result > 0)
+                    resultMes += $"琛屽彿:" + entry["Seq"].ToString() + ",瀛樺湪鏇夸唬鏂欏叧绯伙紝浣跨敤姣斾緥鍙樻洿鍚庤秴鍑轰簡棰嗙敤鏁伴噺";
+            }
+            if (resultMes != "")
+            {
+                e.Cancel = true;
+                this.View.ShowErrMessage(resultMes);
+            }
+
+        }
     }
 }
 

--
Gitblit v1.9.1