public string SaveRQ(string MACHIN, string BAR_KAN, int QTY, string USER, TimeSpan TIME_ACTUAL, float PROCESS_SPEED)
 {
     try
     {
         var User     = DbFile.Master_Member.Where(y => y.Mem_Name == USER || y.Code_Mem == USER).FirstOrDefault();
         var CheckBar = DbFile.OTIF_TR_Process.Where(y => y.Bar_Kan == BAR_KAN).Where(z => z.Machine.Equals(MACHIN)).FirstOrDefault();
         var CheckCal = DbFile.OTIF_TR_Cal.Where(y => y.Cal_Tag == BAR_KAN).Where(z => z.Cal_Machine.Equals(MACHIN)).FirstOrDefault();
         // var CheckMASPL = DbFile.Master_Planner.Where(y => y.PL_Tag == BAR_KAN).Where(z => z.PL_Machine.Equals(MACHIN)).FirstOrDefault();
         var CheckMASPL = DbFile.Master_Planner.Where(y => y.PL_Tag == BAR_KAN).Where(z => z.PL_Machine.Equals(MACHIN)).AsEnumerable().OrderByDescending(k => k.PL_Time).GroupBy(k => new { k.PL_Status }).Select(k => k.First()).OrderByDescending(k => k.PL_Status).FirstOrDefault();
         var TR_Pro     = new OTIF_TR_Process();
         var TR_CAL     = new OTIF_TR_Cal();
         if (CheckBar != null)//Edit
         {
             CheckMASPL.PL_Status     = "T";
             CheckCal.Cal_QTY         = QTY;
             CheckCal.Cal_QTY_Balance = CheckMASPL.PL_Qty_T;
             CheckCal.Cal_Update      = DateTime.Now;
             CheckCal.Cal_Update_time = TIME_ACTUAL;
             CheckBar.Machine         = MACHIN;
             CheckBar.QTY             = QTY;
             CheckBar.User            = User.Code_Mem;
             CheckBar.Date_Actual     = DateTime.Now;
             CheckBar.Time_Actual     = TIME_ACTUAL;
             CheckBar.Process_Speed   = PROCESS_SPEED;
             CheckBar.Status          = "T";
             CheckBar.SF_Remain_Qty   = null;
             CheckBar.TR_DateTime     = DateTime.Now;
             DbFile.SaveChanges();
             return("S");
         }
         else //Add new
         {
             CheckMASPL.PL_Status   = "T";
             TR_CAL.Cal_SO          = CheckMASPL.PL_SO;
             TR_CAL.Cal_Machine     = CheckMASPL.PL_Machine;
             TR_CAL.Cal_Tag         = CheckMASPL.PL_Tag;
             TR_CAL.Cal_Status      = "IN";
             TR_CAL.Cal_QTY         = CheckMASPL.PL_Qty_T;
             TR_CAL.Cal_QTY_Balance = CheckMASPL.PL_Qty_T;
             TR_CAL.Cal_LVL         = CheckMASPL.PL_Level;
             TR_CAL.Cal_Create      = DateTime.Now;
             TR_CAL.Cal_Create_time = TIME_ACTUAL;
             TR_Pro.Machine         = MACHIN;
             TR_Pro.Bar_Kan         = BAR_KAN;
             TR_Pro.QTY             = QTY;
             TR_Pro.User            = User.Code_Mem;
             TR_Pro.Date_Actual     = DateTime.Now;
             TR_Pro.Time_Actual     = TIME_ACTUAL;
             TR_Pro.Status          = "T";
             TR_Pro.Process_Speed   = PROCESS_SPEED;
             TR_Pro.Pro_SO          = CheckMASPL.PL_SO;
             TR_Pro.TR_DateTime     = DateTime.Now;
             DbFile.OTIF_TR_Cal.Add(TR_CAL);
             DbFile.OTIF_TR_Process.Add(TR_Pro);
             DbFile.SaveChanges();
             return("S");
         }
     }
     catch { return("N"); }
 }
        [HttpPost] //รายงาน Shopfloor
        public string SaveSHF(string BAR_KAN, string MACHINE, int TRAGET, int QTY, string USER, TimeSpan TIME_ACTUAL, int REMAIN, String ACTUAL_SPEED, string STP, string STC)
        {
            try
            { //เพิ่มข้อมูลใหม่ไป  OTIF_TR_ShopFloor ทุกกรณี
                var User         = DbFile.Master_Member.Where(y => y.Mem_Name == USER || y.Code_Mem == USER).FirstOrDefault();
                var CheckBar     = DbFile.OTIF_TR_Process.Where(y => y.Bar_Kan == BAR_KAN).Where(z => z.Machine.Equals(MACHINE)).FirstOrDefault();
                var CheckMASPL   = DbFile.Master_Planner.Where(y => y.PL_Tag == BAR_KAN).Where(z => z.PL_Machine.Equals(MACHINE)).AsEnumerable().OrderByDescending(k => k.PL_Time).GroupBy(k => new { k.PL_Status }).Select(k => k.First()).OrderByDescending(k => k.PL_Status).FirstOrDefault();
                var CheckCal     = DbFile.OTIF_TR_Cal.Where(y => y.Cal_Tag == BAR_KAN).Where(z => z.Cal_Machine.Equals(MACHINE)).FirstOrDefault();
                var CheckPack    = DbFile.OTIF_TR_Packing.Where(y => y.Pack_Tag == BAR_KAN).Where(z => z.Pack_Machine.Equals(MACHINE)).FirstOrDefault();
                var CheckMachine = DbFile.Master_Machine.Where(y => y.MC_Machine.Equals(MACHINE)).Where(z => z.MC_Process.Equals("Y")).FirstOrDefault();
                var CheckMetal   = DbFile.Master_Metal.Where(y => y.Metal_Material_Des.Contains(CheckMASPL.PL_Type)).FirstOrDefault();

                ClassController CAL     = new ClassController();
                var             TR_SF   = new OTIF_TR_ShopFloor();
                var             TR_PRO  = new OTIF_TR_Process();
                var             TR_CAL  = new OTIF_TR_Cal();
                var             TR_Pack = new OTIF_TR_Packing();
                if (CheckCal != null) //Update Data OTIF_TR_Cal
                {
                    //  CheckCal.Cal_QTY = QTY;
                    CheckCal.Cal_Update      = DateTime.Now;
                    CheckCal.Cal_Update_time = TIME_ACTUAL;
                    // CheckCal.Cal_QTY = CheckMASPL.PL_Qty_T;///////////////////////////////
                    CheckCal.Cal_QTY_Balance = QTY;
                }
                else //Create Data OTIF_TR_Cal
                {
                    TR_CAL.Cal_SO          = CheckMASPL.PL_SO;
                    TR_CAL.Cal_Machine     = CheckMASPL.PL_Machine;
                    TR_CAL.Cal_Tag         = CheckMASPL.PL_Tag;
                    TR_CAL.Cal_Status      = "OUT";
                    TR_CAL.Cal_QTY         = CheckMASPL.PL_Qty_T;
                    TR_CAL.Cal_QTY_Balance = QTY;
                    TR_CAL.Cal_LVL         = CheckMASPL.PL_Level;
                    TR_CAL.Cal_Create      = DateTime.Now;
                    TR_CAL.Cal_Create_time = TIME_ACTUAL;
                    TR_CAL.Cal_Speed       = Double.Parse(ACTUAL_SPEED);
                    DbFile.OTIF_TR_Cal.Add(TR_CAL);
                }
                if (CheckMASPL.PL_Process_Status == "Yes") //ถ้าเป็นล้อ Process สุดท้าย
                {
                    if (CheckPack != null)                 //Update Data OTIF_TR_Packing
                    {
                        CheckPack.Pack_Speed     = Double.Parse(ACTUAL_SPEED);
                        CheckPack.Pack_Update    = DateTime.Now;
                        CheckPack.Pack_QC_Update = DateTime.Now;
                        //  CheckPack.Pack_QTY = CheckMASPL.PL_Qty_T;////////////////////////////
                        CheckPack.Pack_QTY_Balance = QTY;
                        if (CheckMetal != null)
                        {
                            CheckPack.Pack_Weight = (CheckPack.Pack_QTY_Balance) * CheckMetal.Metal_Netweight_W_U;
                        }
                        if (STP == "T")
                        {
                            CheckPack.Pack_Status = "STOP";
                        }
                        else
                        {
                            CheckPack.Pack_Status = "OUT";
                        }
                    }
                    else //Create Data OTIF_TR_Packing
                    {
                        TR_Pack.Pack_SO          = CheckMASPL.PL_SO;
                        TR_Pack.Pack_Machine     = CheckMASPL.PL_Machine;
                        TR_Pack.Pack_Tag         = CheckMASPL.PL_Tag;
                        TR_Pack.Pack_Status      = "OUT";
                        TR_Pack.Pack_QTY         = CheckMASPL.PL_Qty_T;
                        TR_Pack.Pack_QTY_Balance = QTY;
                        TR_Pack.Pack_LVL         = CheckMASPL.PL_Level;
                        TR_Pack.Pack_Create      = DateTime.Now;
                        TR_Pack.Pack_Update      = DateTime.Now;
                        TR_Pack.Pack_QC_Update   = DateTime.Now;
                        TR_Pack.Pack_Create_time = TIME_ACTUAL;
                        TR_Pack.Pack_Speed       = Double.Parse(ACTUAL_SPEED);
                        TR_Pack.Pack_DateTime    = DateTime.Now;
                        TR_Pack.Pack_Reel_Size   = CheckMASPL.PL_Reel_Size;
                        if (CheckMetal != null)
                        {
                            TR_Pack.Pack_Weight = CheckMetal.Metal_Netweight_W_U;
                        }
                        if (CheckMachine != null)
                        {
                            TR_Pack.Pack_Base = "P1";
                        }

                        DbFile.OTIF_TR_Packing.Add(TR_Pack);
                    }
                }

                if (CheckBar != null)
                { //เงื่อนไขนี้ แก้ไขข้อมูลใน OTIF_TR_Process
                    CheckBar.SF_Remain_Qty = REMAIN;
                    if (CheckBar.RT_QTY == null)
                    {
                        CheckBar.RT_QTY = QTY;
                    }
                    else
                    {
                        CheckBar.RT_QTY = QTY;
                    }
                    CheckBar.Process_Speed = Double.Parse(ACTUAL_SPEED);
                    CheckBar.Stop_Process  = STP;
                    // CheckBar.TR_DateTime = DateTime.Now;
                    TR_SF.SF_Kanban  = CheckBar.Bar_Kan;
                    TR_SF.SF_Machine = CheckBar.Machine;
                }
                else
                { //เงื่อนไขนี้เพิ่มข้อมูลใหม่ ใน OTIF_TR_Process
                    TR_PRO.Machine       = MACHINE;
                    TR_PRO.Pro_SO        = CheckMASPL.PL_SO;
                    TR_PRO.Bar_Kan       = BAR_KAN;
                    TR_SF.SF_Kanban      = BAR_KAN;
                    TR_SF.SF_Machine     = MACHINE;
                    TR_PRO.QTY           = TRAGET;
                    TR_PRO.SF_Remain_Qty = REMAIN;
                    TR_PRO.User          = User.Code_Mem;
                    TR_PRO.Date_Actual   = DateTime.Now;
                    TR_PRO.Time_Actual   = TIME_ACTUAL;
                    TR_PRO.Status        = "T";
                    TR_PRO.RT_QTY        = QTY;
                    TR_PRO.Stop_Process  = STP;
                    TR_PRO.Process_Speed = Double.Parse(ACTUAL_SPEED);
                    TR_PRO.TR_DateTime   = DateTime.Now;
                    DbFile.OTIF_TR_Process.Add(TR_PRO);
                }
                CheckMASPL.PL_Status  = "F";
                TR_SF.SF_User         = User.Code_Mem;
                TR_SF.SF_QTY          = QTY;
                TR_SF.SF_Date         = DateTime.Now;
                TR_SF.SF_Time         = TIME_ACTUAL;
                TR_SF.SF_Actual_Speed = Double.Parse(ACTUAL_SPEED);
                TR_SF.SF_Stop_Process = STP;
                TR_SF.SF_Stop_Code    = STC;
                DbFile.OTIF_TR_ShopFloor.Add(TR_SF);
                DbFile.SaveChanges();  //*/
                                       // CAL.Calculator(CheckMASPL.PL_SO, MACHINE);
                return("S");
            }
            catch { return("N"); }
        }