//move reserve stock public static void moveReserveStock(int idCstmPODt_Free, int idCstmPODt , int id_tb_Stock, decimal ReserveQty) { using (var db = new DataClasses1DataContext()) { var tbst = db.tb_Stocks.Where(x => x.id == id_tb_Stock).FirstOrDefault(); //**เขียน ShipQty ออกจาก Job //เขียน SHipping Header tb_ShippingH gg = new tb_ShippingH(); int idProductionOrderRM = 0; string shipNo = dbClss.GetNo(5, 2); gg.ShippingNo = shipNo; gg.ShipDate = DateTime.Now; gg.UpdateBy = ClassLib.Classlib.User; gg.UpdateDate = DateTime.Now; gg.CreateBy = ClassLib.Classlib.User; gg.CreateDate = DateTime.Now; gg.ShipName = ClassLib.Classlib.User; var po = db.mh_CustomerPODTs.Where(x => x.id == idCstmPODt) .Join(db.mh_CustomerPOs.Where(x => x.DemandType == 0) , dt => dt.idCustomerPO , hd => hd.id , (dt, hd) => new { hd, dt }).FirstOrDefault(); string cstmPOno = (po != null && po.hd != null) ? po.hd.CustomerPONo : idCstmPODt.ToSt(); gg.Remark = $"Shipping for Move Stock to new CustomerPO ({cstmPOno})"; gg.JobCard = ""; gg.TempJobCard = ""; byte[] barcode = null; gg.BarCode = barcode; gg.Status = "Completed"; gg.ToLocation = "Warehouse"; db.tb_ShippingHs.InsertOnSubmit(gg); db.SubmitChanges(); //Shipping ADD var tool = db.mh_Items.Where(x => x.InternalNo == tbst.CodeNo).FirstOrDefault(); var uom = db.mh_ItemUOMs.Where(x => x.UOMCode == tool.BaseUOM && x.ItemNo == tbst.CodeNo).FirstOrDefault(); var pcsunit = 1.00m; if (uom != null) { pcsunit = uom.QuantityPer; } db.sp_024_tb_Shipping_ADD(shipNo, tbst.CodeNo , ReserveQty //QtyPlan , ReserveQty //QtyShip , "", "", "", "" , tbst.LotNo , "Completed", ClassLib.Classlib.User , "", ""//txtTempJobCard.Text.Trim() , 0, tbst.Location, "Warehouse", tool.BaseUOM, pcsunit , tool.BaseUOM, pcsunit, idCstmPODt_Free , idProductionOrderRM , 1 ); //**Stock Receive ใส่ Customer PODt id ใบใหม่ var amntCost = Math.Round(tbst.UnitCost.ToDecimal() * ReserveQty.ToDecimal(), 2); var s = new tb_Stock(); s.AppDate = Convert.ToDateTime(DateTime.Now, new CultureInfo("en-US")); s.Seq = 1; s.App = "Receive"; s.Appid = 1; s.CreateBy = ClassLib.Classlib.User; s.CreateDate = Convert.ToDateTime(DateTime.Now, new CultureInfo("en-US")); s.DocNo = dbClss.GetNo(33, 2); //MOS -- Move stock free to new CustomerPO s.RefNo = id_tb_Stock.ToSt(); //Refer id tb_Stock ของ stock free Customer PO เก่า s.CodeNo = tbst.CodeNo; s.Type = "Move Stock Free to New Sale Order"; s.QTY = ReserveQty; s.Inbound = s.QTY; s.Outbound = 0; s.Type_i = 1; s.Category = "Invoice"; s.Refid = idCstmPODt_Free; //old idCstmPODt ---> Free Stock s.idCSTMPODt = idCstmPODt; //new idCstmPODt s.Type_in_out = "In"; s.AmountCost = amntCost; if (s.AmountCost > 0) { s.UnitCost = Math.Round(s.AmountCost.ToDecimal() / s.QTY.ToDecimal(), 6); } else { s.UnitCost = 0; } decimal RemainQty = (Convert.ToDecimal(db.Cal_QTY_Remain_Location(s.CodeNo, "Free", 0, "Warehouse", -1))); decimal sum_Remain = Convert.ToDecimal(dbClss.Get_Stock(s.CodeNo, "", "", "RemainAmount", "Warehouse", 0 /*idCstmPODt*/)) + s.AmountCost.ToDecimal(); decimal sum_Qty = RemainQty.ToDecimal() + s.QTY.ToDecimal(); var RemainAmount = sum_Remain; decimal RemainUnitCost = 0.00m; if (sum_Qty <= 0) { RemainUnitCost = 0; } else { RemainUnitCost = Math.Round((Math.Abs(RemainAmount) / Math.Abs(sum_Qty)), 6); } s.RemainQty = sum_Qty; s.RemainUnitCost = RemainUnitCost; s.RemainAmount = RemainAmount; s.Avg = 0; s.CalDate = null; s.Status = "Active"; s.Flag_ClearTemp = 0; s.TLCost = s.AmountCost; s.TLQty = s.QTY; s.ShipQty = 0; s.Location = "Warehouse"; s.LotNo = tbst.LotNo; s.ShelfNo = tbst.ShelfNo; //ต้องไม่ใช่ Item ที่มีในระบบ var c = (from ix in db.mh_Items where ix.InternalNo.Trim().ToUpper() == s.CodeNo.Trim().ToUpper() && ix.Active select ix).ToList(); if (c.Count <= 0) { s.TLQty = 0; s.ShipQty = s.QTY; } db.tb_Stocks.InsertOnSubmit(s); db.SubmitChanges(); //update Stock เข้า item db.sp_010_Update_StockItem(Convert.ToString(s.CodeNo), ""); } }
void DeleteE() { this.Cursor = Cursors.WaitCursor; try { using (var db = new DataClasses1DataContext()) { string pkNo = txtPackingNo.Text.Trim(); var m = db.mh_Packings.Where(x => x.Active && x.PackingNo == pkNo).FirstOrDefault(); if (m != null) { //Shipping H var shipH = new tb_ShippingH(); string shipNo = dbClss.GetNo(5, 2); shipH.ShippingNo = shipNo; shipH.ShipDate = DateTime.Now; shipH.UpdateBy = ClassLib.Classlib.User; shipH.UpdateDate = DateTime.Now; shipH.CreateBy = ClassLib.Classlib.User; shipH.CreateDate = DateTime.Now; shipH.ShipName = ClassLib.Classlib.User; shipH.Remark = $"Shipping for Canncel Packing stock {pkNo}."; shipH.JobCard = ""; shipH.TempJobCard = ""; byte[] barcode = null; shipH.BarCode = barcode; shipH.Status = "Completed"; shipH.ToLocation = "Warehouse"; db.tb_ShippingHs.InsertOnSubmit(shipH); db.SubmitChanges(); dbClss.AddHistory(this.Name, "Packing", $"Cancel Packing {pkNo}", pkNo); var dt = db.mh_PackingDts.Where(x => x.Active && x.PackingNo == pkNo).ToList(); foreach (var d in dt) { //tb_Stock --> Shipping var st = db.tb_Stocks.Where(x => x.RefidJobCode == d.id && x.RefTempJobCode == m.PackingNo && x.TLQty > 0).ToList(); if (st.Count <= 0) { continue; } var tool = db.mh_Items.Where(x => x.InternalNo == d.ItemNo).FirstOrDefault(); var uom = db.mh_ItemUOMs.Where(x => x.ItemNo == d.ItemNo && x.UOMCode == tool.BaseUOM).FirstOrDefault(); var pcsunit = 1.00m; if (uom != null) { pcsunit = uom.QuantityPer; } foreach (var ss in st) { //คืน Qty Customer P/O Dt var so = db.mh_SaleOrderDTs.Where(x => x.id == d.idCstmPODt).FirstOrDefault(); if (so != null) { so.OutQty += d.Qty; db.SubmitChanges(); } //คืน Qty Production ORder var pro = db.mh_ProductionOrders.Where(x => x.id == d.idJob).FirstOrDefault(); if (pro != null) { pro.OutQty += d.Qty; pro.CloseJob = false; db.SubmitChanges(); dbClss.AddHistory("ProductionOrder", "Job Order Sheet", $"Cancel Packing {pkNo} : {d.Qty}", pro.JobNo); } ////stock กลับมาเป็นไม่ฟรี //var slist = db.tb_Stocks.Where(x => x.idCSTMPODt == d.idCstmPODt && x.TLQty > 0).ToList(); //foreach (var s1 in slist) //{ // if (s1.Free.ToBool()) s1.Free = null; //} //db.SubmitChanges(); //เขียน ship ออก จาก id tb_Stock db.sp_057_Cut_Stock(pkNo, ss.CodeNo, ss.TLQty, ClassLib.Classlib.User , "", m.PackingNo, d.id, "Warehouse", "Shipping", "Shipping - Cancel Packing", 3 , ss.id, ss.idCSTMPODt, ss.LotNo, 0); // var shipDt = new tb_Shipping { BasePCSUOM = pcsunit, BaseUOM = tool.BaseUOM, Calbit = false, ClearDate = null, ClearFlag = false, CodeNo = ss.CodeNo, idCSTMPODt = ss.idCSTMPODt, ItemDescription = tool.InternalName, ItemNo = ss.CodeNo, LineName = "", Location = "Warehouse", LotNo = ss.LotNo, MachineName = "", PCSUnit = pcsunit, QTY = ss.TLQty.ToDecimal(), QTYPlan = ss.TLQty.ToDecimal(), Refid = 0, RefNo = "", Remark = "Cancel Packing", Seq = ss.Seq.ToInt(), SerialNo = "", ShippingNo = shipNo, ShipType = "Cancel Packing", Status = "Completed", ToLocation = "Warehouse", UnitCost = ss.UnitCost, UnitShip = tool.BaseUOM, }; db.tb_Shippings.InsertOnSubmit(shipDt); db.SubmitChanges(); } } m.UpdateDate = DateTime.Now; m.UpdateBy = ClassLib.Classlib.User; m.Active = false; dbClss.AddHistory(this.Name, "Packing", $"Cancel Packing {pkNo}", pkNo); db.SubmitChanges(); baseClass.Info("Delete complete.\n"); lblStatus.Text = "Inactive"; btnDelete.Enabled = false; btnSave.Enabled = false; btnNew.Enabled = true; } } } catch (Exception ex) { baseClass.Error(ex.Message); } finally { this.Cursor = Cursors.Default; } }