Advertisement
rstx2

btm-scanready

Oct 24th, 2022
1,142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.75 KB | Software | 0 0
  1. // Get data source
  2. var tbBalanceList = bottomForm.AllKeys.Where(n => n.StartsWith("balance")).ToList();
  3. var TCMSIE = db.TCMS_IEPKList.Where(d => d.Trno == PUFNo && d.Kind == PUFKind).ToList();
  4. var chkLog = db.TCMS_IEPKList_Log.Where(d => d.Trno == PUFNo && d.Kind == PUFKind).ToList();
  5.  
  6. foreach (string idx in tbBalanceList)
  7. {
  8.     // Check if textbox is wrong format
  9.     if (!TbBalanceDecompose(idx, out string itnbr, out string size, out decimal partPrepareQty))
  10.     {
  11.         transc.Rollback();
  12.         return new TransactionResponse { is_invalid = true, is_success = false, message = "Error: Wrong format for textbox element name " + idx + "!" };
  13.     }
  14.  
  15.     // Check if BalanceQty has value
  16.     var strItnbrSizeQty = bottomForm[idx];
  17.     decimal partPrepareBalance;
  18.  
  19.     if (strItnbrSizeQty == "")
  20.         partPrepareBalance = 0;
  21.     else
  22.         partPrepareBalance = Convert.ToDecimal(strItnbrSizeQty);
  23.  
  24.     if (partPrepareBalance != 0)
  25.         isHadPreparationBalance = "Y";
  26.  
  27.     partPrepareQty += partPrepareBalance;
  28.  
  29.     // Check if table TPartPrepareQtys has prepared data
  30.     var TPPQ = db.TPartPrepareQtys.Where(d => d.kind == PUFKind && d.trno == PUFNo && d.itnbr == itnbr && d.size == size).FirstOrDefault();
  31.     if (TPPQ == null)
  32.     {
  33.         TPPQ = new TPartPrepareQtys()
  34.         {
  35.             kind = PUFKind,
  36.             trno = PUFNo,
  37.             itnbr = itnbr,
  38.             size = size,
  39.             PartPrepareBalance = partPrepareBalance,
  40.             PartPrepareQty = partPrepareQty,
  41.             InsertAt = DTNow
  42.         };
  43.  
  44.         db.TPartPrepareQtys.Add(TPPQ);
  45.         db.SaveChanges();
  46.     }
  47.     else
  48.     {
  49.         transc.Rollback();
  50.         return new TransactionResponse { is_invalid = true, is_success = false, message = "Error: " + PUFBarcode + " already prepared!" };
  51.  
  52.     }
  53.  
  54.     // Save confirm to MPS_Material_Detail
  55.  
  56.     // Case partPrepareQty > 0
  57.     if (partPrepareQty > 0)
  58.     {
  59.         decimal remainingQty = partPrepareQty;
  60.  
  61.         var eachTCMSIE = TCMSIE.Where(d => d.Size == size && d.Item_NBR == itnbr).OrderBy(d => d.Cycle_No.Split('#')[1]);
  62.         var eachTCMSIEperseq = TCMSIE.Where(d => d.Size == size && d.Item_NBR == itnbr).GroupBy(i => i.Cycle_No)
  63.                                 .Select(g => new TCMS_IEPKList
  64.                                 {
  65.                                     MO_No = g.Select(x => x.MO_No).First(),
  66.                                     MO_Seq = g.Select(x => x.MO_Seq).First(),
  67.                                     Cycle_No = g.Key,
  68.                                     Item_NBR = g.Select(x => x.Item_NBR).First(),
  69.                                     Size = g.Select(x => x.Size).First(),
  70.                                     P_Qty = g.Sum(x => x.P_Qty),
  71.                                 }).OrderBy(d => d.Cycle_No.Split('#')[1]).ToList();
  72.  
  73.         foreach (var tcmsItem in eachTCMSIEperseq)
  74.         {
  75.             if (remainingQty <= 0)
  76.                 break;
  77.  
  78.             decimal planQty = tcmsItem.P_Qty.Value;
  79.             decimal outputQty = remainingQty > planQty ? planQty : remainingQty;
  80.  
  81.             var matDetailModel = new MPS_Material_Detail
  82.             {
  83.                 MO_No = tcmsItem.MO_No,
  84.                 MO_Batch = tcmsItem.MO_Seq,
  85.                 MO_Sequence = tcmsItem.Cycle_No.Split('#')[1],
  86.                 Material_ID = tcmsItem.Item_NBR,
  87.                 MO_Size = tcmsItem.Size,
  88.                 Trno = PUFNo,
  89.                 Kind = PUFKind,
  90.                 Cycle_No = tcmsItem.Cycle_No,
  91.                 Transaction_Qty = outputQty,
  92.                 InsertAt = DTNow
  93.             };
  94.  
  95.             db.MPS_Material_Detail.Add(matDetailModel);
  96.             db.SaveChanges();
  97.  
  98.             remainingQty -= outputQty;
  99.         }
  100.  
  101.         // Create MO_Sequence 99 item
  102.         if (remainingQty > 0)
  103.         {
  104.             var TCMSIESrc = TCMSIE
  105.                 .Where(d => d.Size == size && d.Item_NBR == itnbr)
  106.                 .Select(d => new { d.MO_No, d.MO_Seq, d.Item_NBR, d.Size })
  107.                 .FirstOrDefault();
  108.  
  109.             var curSeq99Item = db.MPS_Material_Detail
  110.                 .Where(d =>
  111.                     d.MO_No == TCMSIESrc.MO_No && d.MO_Batch == TCMSIESrc.MO_Seq && d.MO_Sequence == "99" &&
  112.                     d.Material_ID == TCMSIESrc.Item_NBR && d.MO_Size == TCMSIESrc.Size)
  113.                 .FirstOrDefault();
  114.  
  115.             // Case MO_Sequence 99 doesn't have in table
  116.             if (curSeq99Item == null)
  117.             {
  118.                 var matDetailModel = new MPS_Material_Detail
  119.                 {
  120.                     MO_No = TCMSIESrc.MO_No,
  121.                     MO_Batch = TCMSIESrc.MO_Seq,
  122.                     MO_Sequence = "99",
  123.                     Material_ID = TCMSIESrc.Item_NBR,
  124.                     MO_Size = TCMSIESrc.Size,
  125.                     Trno = PUFNo,
  126.                     Kind = PUFKind,
  127.                     Transaction_Qty = remainingQty,
  128.                     InsertAt = DTNow
  129.                 };
  130.  
  131.                 db.MPS_Material_Detail.Add(matDetailModel);
  132.                 db.SaveChanges();
  133.  
  134.                 remainingQty = 0;
  135.             }
  136.             else
  137.             {
  138.                 curSeq99Item.Transaction_Qty += remainingQty;
  139.                 curSeq99Item.UpdateAt = DTNow;
  140.  
  141.                 db.Entry(curSeq99Item).State = EntityState.Modified;
  142.                 db.SaveChanges();
  143.  
  144.                 remainingQty = 0;
  145.             }
  146.         }
  147.     }
  148. }
  149.  
  150. var TPPD = new TPartPrepareDates()
  151. {
  152.     kind = PUFKind,
  153.     trno = PUFNo,
  154.     PartPrepareDate = DTNow,
  155.     InsertAt = DTNow,
  156.     isHadPrepareBalance = isHadPreparationBalance,
  157. };
  158.  
  159. db.TPartPrepareDates.Add(TPPD);
  160. db.SaveChanges();
  161.  
  162. TPFS.prepare_at = DTNow;
  163. TPFS.prepare_by = user;
  164. TPFS.prepare_actualAt = DTNow;
  165. //2021-10-5 新增欄位更新 Add By Alan
  166. TPFS.Close_Flag = "N";
  167. TPFS.Biz_Flag = "N";
  168. TPFS.Biz_Finish = null;
  169. TPFS.Update_By = user;
  170.                     TPFS.Update_Time = DTNow;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement