/// <summary> /// ความเคลื่อนไหว ของ Store Front All Trancsaction /// </summary> /// <param name="args"></param> public static void Main(string[] args) { SingletonPOsTransaction.Instance(); using (SSLsEntities db = new SSLsEntities()) { string input = ""; List <ObjectPOsTransaction> objs = new List <ObjectPOsTransaction>(); do { input = Console.ReadLine(); string[] splitInput = input.Split('-'); if (splitInput.Count() == 3) { // pass string code = splitInput[0]; ProductDetails productDtl = db.ProductDetails.Include("Products").FirstOrDefault(w => w.Enable == true && w.Code == code); decimal qty = decimal.Parse(splitInput[1]); int fkTransaction = int.Parse(splitInput[2]); objs.Add(new ObjectPOsTransaction() { ProductDetail = productDtl, ActionQty = qty, FKTransaction = fkTransaction }); } } while (input != "*"); Console.WriteLine(" ****************** End Input *************** "); foreach (var item in objs) { Console.WriteLine("Product: " + item.ProductDetail.Code + " Qty*" + item.ProductDetail.PackSize + ": " + item.ActionQty + " Small Unit: " + (item.ActionQty * item.ProductDetail.PackSize)); } Console.WriteLine(" ****************** End Process *************** "); POsTransactionProcess(objs); Console.Read(); } }
/// <summary> /// Main Process Store Front Transaction /// </summary> /// <param name="list">map มา และกรุ๊ปมา ให้เรียบร้อย</param> public static void POsTransactionProcess(List <ObjectPOsTransaction> list) { using (SSLsEntities db = new SSLsEntities()) { decimal actionQty = 0; decimal actionQtyUnit = 0; foreach (var item in list) { PosStock headerStock = db.PosStock.FirstOrDefault(w => w.Enable == true && w.FKProduct == item.ProductDetail.FKProduct); TransactionType transaction = SingletonPOsTransaction.Instance().TransactionTypes.SingleOrDefault(w => w.Id == item.FKTransaction); if (transaction.IsPlus) { // แสดงว่า ค่า + actionQtyUnit = item.ActionQty; // จำนวนหน่วย actionQty = item.ActionQty * item.ProductDetail.PackSize; // จำนวน เล็กสุด ชิ้น } else { actionQtyUnit = -item.ActionQty; // จำนวนหน่วย actionQty = -item.ActionQty * item.ProductDetail.PackSize; // จำนวน เล็กสุด ชิ้น } // ถ้าไม่มีใน pos store front if (headerStock == null) { // is add headerStock = new PosStock(); headerStock.Name = item.ProductDetail.Name; headerStock.Description = "Auto Add"; headerStock.CreateDate = DateTime.Now; headerStock.CreateBy = SingletonAuthen.Instance().Id; headerStock.UpdateDate = DateTime.Now; headerStock.UpdateBy = SingletonAuthen.Instance().Id; headerStock.Enable = true; headerStock.CurrentQty = actionQty; headerStock.FKProduct = item.ProductDetail.FKProduct; // details PosStockDetails details = new PosStockDetails(); details.Description = transaction.Name; details.CreateDate = DateTime.Now; details.CreateBy = SingletonAuthen.Instance().Id; details.UpdateBy = SingletonAuthen.Instance().Id; details.UpdateDate = DateTime.Now; details.Enable = true; details.FKTransactionType = item.FKTransaction; details.ActionQty = actionQty; details.ActionQtyUnit = actionQtyUnit; details.FKProductDetails = item.ProductDetail.Id; headerStock.PosStockDetails.Add(details); db.PosStock.Add(headerStock); } else // ถ้ามีแล้วใน store front { // add transaction ก่อน PosStockDetails details = new PosStockDetails(); details.Description = transaction.Name; details.CreateDate = DateTime.Now; details.CreateBy = SingletonAuthen.Instance().Id; details.UpdateBy = SingletonAuthen.Instance().Id; details.UpdateDate = DateTime.Now; details.Enable = true; details.FKTransactionType = item.FKTransaction; details.ActionQty = actionQty; details.ActionQtyUnit = actionQtyUnit; details.FKProductDetails = item.ProductDetail.Id; details.FKPosStock = headerStock.Id; db.PosStockDetails.Add(details); // is Update header headerStock.UpdateDate = DateTime.Now; headerStock.UpdateBy = SingletonAuthen.Instance().Id; headerStock.CurrentQty = headerStock.CurrentQty + actionQty; db.Entry(headerStock).State = EntityState.Modified; } } db.SaveChanges(); } }