Beispiel #1
0
        public static bool Return(ObjectModule.Local.Binning gb, ObjectModule.Local.Tracking gt)
        {
            List <SqlCommand> list = new List <SqlCommand>();

            try
            {
                if (gt.STATUS == "REUSE")
                {
                    SqlCommand cmd_Binning = Binning.Update(gb);
                    list.Add(cmd_Binning);
                    SqlCommand cmd_Tracking = Tracking.Update(gt);
                    list.Add(cmd_Tracking);
                }
                else
                {
                    SqlCommand cmd_Tracing = Tracking.Delete(gt.PART_ID);
                    list.Add(cmd_Tracing);
                }

                SqlCommand cmd_History = History.Insert(gt);
                list.Add(cmd_History);
                return(Common.DB.SqlDB.SetData_Rollback(list, StaticRes.Local));
            }
            catch
            {
                return(false);
            }
        }
Beispiel #2
0
 public static SqlCommand Update(ObjectModule.Local.Tracking gt)
 {
     try
     {
         string sql = @"Update Tracking set CURRENT_WEIGHT=@CURRENT_WEIGHT,STATUS=@STATUS,DEVICE=@DEVICE,USER_NAME=@USER_NAME,
                        EQUIP_ID =@EQUIP_ID,LOCID=@LOCID,USER_ID=@USER_ID,LOT_ID=@LOT_ID,ACTION=@ACTION,REMARKS=@REMARKS,
                        UPDATED_TIME=@UPDATED_TIME,WEEK=@WEEK,MONTH=@MONTH,YEAR=@YEAR where PART_ID=@PART_ID ";
         System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(sql);
         cmd.Parameters.Add("@PART_ID", System.Data.SqlDbType.VarChar).Value       = gt.PART_ID;
         cmd.Parameters.Add("@CURRENT_WEIGHT", System.Data.SqlDbType.Float).Value  = gt.CURRENT_WEIGHT;
         cmd.Parameters.Add("@STATUS", System.Data.SqlDbType.VarChar).Value        = gt.STATUS;
         cmd.Parameters.Add("@DEVICE", System.Data.SqlDbType.VarChar).Value        = gt.DEVICE;
         cmd.Parameters.Add("@EQUIP_ID", System.Data.SqlDbType.VarChar).Value      = gt.EQUIP_ID;
         cmd.Parameters.Add("@LOCID", System.Data.SqlDbType.VarChar).Value         = gt.LOCID;
         cmd.Parameters.Add("@USER_ID", System.Data.SqlDbType.VarChar).Value       = gt.USER_ID;
         cmd.Parameters.Add("@USER_NAME", System.Data.SqlDbType.VarChar).Value     = gt.USER_NAME;
         cmd.Parameters.Add("@LOT_ID", System.Data.SqlDbType.VarChar).Value        = gt.LOT_ID;
         cmd.Parameters.Add("@ACTION", System.Data.SqlDbType.VarChar).Value        = gt.ACTION;
         cmd.Parameters.Add("@REMARKS", System.Data.SqlDbType.VarChar).Value       = gt.REMARKS;
         cmd.Parameters.Add("@UPDATED_TIME", System.Data.SqlDbType.DateTime).Value = gt.UPDATED_TIME;
         cmd.Parameters.Add("@WEEK", System.Data.SqlDbType.Int).Value  = gt.WEEK;
         cmd.Parameters.Add("@MONTH", System.Data.SqlDbType.Int).Value = gt.MONTH;
         cmd.Parameters.Add("@YEAR", System.Data.SqlDbType.Int).Value  = gt.YEAR;
         return(cmd);
     }
     catch (SqlException ee)
     {
         throw ee;
     }
 }
Beispiel #3
0
            public static bool Local_Update(string Slot_ID, string Slot_Index, string Batch_No, string Sapcode, string Description,
                                            string Part_ID, string Thawing_Time, string Ready_Time, string Expiry_Time, string MF_Expiry_Date, string Weight, string Capacity, string Empty_Syringe_Weight)
            {
                #region Update BINNING DB
                ObjectModule.Local.Binning gb = new ObjectModule.Local.Binning();
                gb.BATCH_NO         = Batch_No;
                gb.CAPACITY         = int.Parse(Capacity);
                gb.CURRENT_WEIGHT   = float.Parse(Weight);
                gb.DEPARTMENT       = StaticRes.Global.Current_User.DEPARTMENT;
                gb.DESCRIPTION      = Description;
                gb.EXPIRY_DATETIME  = DateTime.Parse(Expiry_Time);
                gb.MF_EXPIRY_DATE   = DateTime.Parse(MF_Expiry_Date);
                gb.PART_ID          = Part_ID;
                gb.READY_DATETIME   = DateTime.Parse(Ready_Time);
                gb.SAPCODE          = Sapcode;
                gb.SLOT_ID          = int.Parse(Slot_ID);
                gb.SLOT_INDEX       = int.Parse(Slot_Index);
                gb.START_WEIGHT     = float.Parse(Weight);
                gb.STATUS           = StaticRes.Global.Binning_Status.New;
                gb.THAWING_DATETIME = DateTime.Parse(Thawing_Time);
                gb.UPDATED_TIME     = System.DateTime.Now;
                gb.USER_GROUP       = StaticRes.Global.Current_User.USER_GROUP;
                gb.USER_ID          = StaticRes.Global.Current_User.USER_ID;
                gb.USER_NAME        = StaticRes.Global.Current_User.USER_NAME;
                #endregion

                #region Insert Trakcing/History
                ObjectModule.Local.Tracking gt = new ObjectModule.Local.Tracking();
                gt.ACTION               = StaticRes.Global.Event.Load;
                gt.BATCH_NO             = Batch_No;
                gt.CAPACITY             = int.Parse(Capacity);
                gt.CURRENT_WEIGHT       = float.Parse(Weight);
                gt.DEPARTMENT           = StaticRes.Global.Current_User.DEPARTMENT;
                gt.DESCRIPTION          = Description;
                gt.DEVICE               = "";
                gt.EMPTY_SYRINGE_WEIGHT = float.Parse(Empty_Syringe_Weight);
                gt.EQUIP_ID             = "";
                gt.EXPIRY_DATETIME      = DateTime.Parse(Expiry_Time);
                gt.LOCID            = "";
                gt.LOT_ID           = "";
                gt.MF_EXPIRY_DATE   = DateTime.Parse(MF_Expiry_Date);
                gt.MONTH            = System.DateTime.Now.Month;
                gt.PART_ID          = Part_ID;
                gt.READY_DATETIME   = DateTime.Parse(Ready_Time);
                gt.REMARKS          = "";
                gt.SAPCODE          = Sapcode;
                gt.START_WEIGHT     = float.Parse(Weight);
                gt.STATUS           = StaticRes.Global.Status.Load;
                gt.THAWING_DATETIME = DateTime.Parse(Thawing_Time);
                gt.UPDATED_TIME     = System.DateTime.Now;
                gt.USER_ID          = StaticRes.Global.Current_User.USER_ID;
                gt.USER_NAME        = StaticRes.Global.Current_User.USER_NAME;
                gt.WEEK             = Logic.Common.weekofyear(System.DateTime.Now);
                gt.YEAR             = System.DateTime.Now.Year;
                return(DataProvider.Rollback.Load(gb, gt));

                #endregion
            }
Beispiel #4
0
            public static ObjectModule.Local.Tracking PartID_Validate(string Part_ID)
            {
                DataTable dt = DataProvider.Local.Tracking.Select.by_PartID(Part_ID, StaticRes.Global.Status.Unload);

                if (dt.Rows.Count == 0)
                {
                    throw new System.Exception("Invalid Part ID !!\n错误的Part ID!!");
                }
                ObjectModule.Local.Tracking gt = new ObjectModule.Local.Tracking(dt.Rows[0]);
                return(gt);
            }
Beispiel #5
0
 private void btn_CapturePartID_Click(object sender, System.Windows.RoutedEventArgs e)
 {
     System.Data.DataTable dt = DataProvider.Local.Tracking.Select.by_PartID(txt_part_id.Text, StaticRes.Global.Status.Unload);
     if (dt.Rows.Count == 0)
     {
         MessageBox.Show("These haven't issue record of part ID:" + txt_part_id.Text, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
         return;
     }
     ObjectModule.Local.Tracking st = new ObjectModule.Local.Tracking(dt.Rows[0]);
     this.txt_mcID.Text    = st.EQUIP_ID;
     this.txt_sapcode.Text = st.SAPCODE;
     //this.txt_expiryTime.Text = st.EXPIRY_TIME.ToString();
 }
Beispiel #6
0
 void Timer_Expiry(object sender, EventArgs e)
 {
     try
     {
         DataTable dt = Logic.Transaction.Expiry_List();
         if (dt.Rows.Count > 0)
         {
             ObjectModule.Local.Tracking track = new ObjectModule.Local.Tracking(dt.Rows[0]);
             new EMS.ExpiryWindow(track).ShowDialog();
         }
     }
     catch
     {
     }
 }
Beispiel #7
0
        public static bool Mix_DataMissing(ObjectModule.Local.Tracking trackingModel)
        {
            try
            {
                List <SqlCommand> cmdList = new List <SqlCommand>();

                cmdList.Add(Tracking.Insert(trackingModel));
                cmdList.Add(History.Insert(trackingModel));


                return(Common.DB.SqlDB.SetData_Rollback(cmdList, StaticRes.Local));
            }
            catch
            {
                return(false);
            }
        }
Beispiel #8
0
 public static SqlCommand Insert(ObjectModule.Local.Tracking gt)
 {
     try
     {
         string sql = @"insert into History
                        (PART_ID,SAPCODE,BATCH_NO,DESCRIPTION,DEPARTMENT,START_WEIGHT,CURRENT_WEIGHT,STATUS,EQUIP_ID,LOCID,THAWING_DATETIME,READY_DATETIME,
                         CAPACITY,EXPIRY_DATETIME,MF_EXPIRY_DATE,LOT_ID,DEVICE,EMPTY_SYRINGE_WEIGHT,USER_ID,USER_NAME,ACTION,REMARKS,UPDATED_TIME,WEEK,MONTH,YEAR) 
                         VALUES                  
                        (@PART_ID,@SAPCODE,@BATCH_NO,@DESCRIPTION,@DEPARTMENT,@START_WEIGHT,@CURRENT_WEIGHT,@STATUS,@EQUIP_ID,@LOCID,@THAWING_DATETIME,@READY_DATETIME,
                         @CAPACITY,@EXPIRY_DATETIME,@MF_EXPIRY_DATE,@LOT_ID,@DEVICE,@EMPTY_SYRINGE_WEIGHT,@USER_ID,@USER_NAME,@ACTION,@REMARKS,@UPDATED_TIME,@WEEK,@MONTH,@YEAR)";
         System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(sql);
         cmd.Parameters.Add("@PART_ID", System.Data.SqlDbType.VarChar).Value            = gt.PART_ID;
         cmd.Parameters.Add("@SAPCODE", System.Data.SqlDbType.VarChar).Value            = gt.SAPCODE;
         cmd.Parameters.Add("@BATCH_NO", System.Data.SqlDbType.VarChar).Value           = gt.BATCH_NO;
         cmd.Parameters.Add("@DESCRIPTION", System.Data.SqlDbType.VarChar).Value        = gt.DESCRIPTION;
         cmd.Parameters.Add("@DEPARTMENT", System.Data.SqlDbType.VarChar).Value         = gt.DEPARTMENT;
         cmd.Parameters.Add("@START_WEIGHT", System.Data.SqlDbType.Float).Value         = gt.START_WEIGHT;
         cmd.Parameters.Add("@CURRENT_WEIGHT", System.Data.SqlDbType.Float).Value       = gt.CURRENT_WEIGHT;
         cmd.Parameters.Add("@CAPACITY", System.Data.SqlDbType.Int).Value               = gt.CAPACITY;
         cmd.Parameters.Add("@STATUS", System.Data.SqlDbType.VarChar).Value             = gt.STATUS;
         cmd.Parameters.Add("@EQUIP_ID", System.Data.SqlDbType.VarChar).Value           = gt.EQUIP_ID;
         cmd.Parameters.Add("@LOCID", System.Data.SqlDbType.VarChar).Value              = gt.LOCID;
         cmd.Parameters.Add("@THAWING_DATETIME", System.Data.SqlDbType.DateTime).Value  = gt.THAWING_DATETIME;
         cmd.Parameters.Add("@READY_DATETIME", System.Data.SqlDbType.DateTime).Value    = gt.READY_DATETIME;
         cmd.Parameters.Add("@EXPIRY_DATETIME", System.Data.SqlDbType.DateTime).Value   = gt.EXPIRY_DATETIME;
         cmd.Parameters.Add("@MF_EXPIRY_DATE", System.Data.SqlDbType.Date).Value        = gt.MF_EXPIRY_DATE;
         cmd.Parameters.Add("@LOT_ID", System.Data.SqlDbType.VarChar).Value             = gt.LOT_ID;
         cmd.Parameters.Add("@DEVICE", System.Data.SqlDbType.VarChar).Value             = gt.DEVICE;
         cmd.Parameters.Add("@EMPTY_SYRINGE_WEIGHT", System.Data.SqlDbType.Float).Value = gt.EMPTY_SYRINGE_WEIGHT;
         cmd.Parameters.Add("@USER_ID", System.Data.SqlDbType.VarChar).Value            = gt.USER_ID;
         cmd.Parameters.Add("@USER_NAME", System.Data.SqlDbType.VarChar).Value          = gt.USER_NAME;
         cmd.Parameters.Add("@ACTION", System.Data.SqlDbType.VarChar).Value             = gt.ACTION;
         cmd.Parameters.Add("@REMARKS", System.Data.SqlDbType.VarChar).Value            = gt.REMARKS;
         cmd.Parameters.Add("@UPDATED_TIME", System.Data.SqlDbType.DateTime).Value      = gt.UPDATED_TIME;
         cmd.Parameters.Add("@WEEK", System.Data.SqlDbType.Int).Value  = gt.WEEK;
         cmd.Parameters.Add("@MONTH", System.Data.SqlDbType.Int).Value = gt.MONTH;
         cmd.Parameters.Add("@YEAR", System.Data.SqlDbType.Int).Value  = gt.YEAR;
         return(cmd);
     }
     catch (SqlException ee)
     {
         throw ee;
     }
 }
Beispiel #9
0
        public static bool Spool_Missing(ObjectModule.Local.Tracking gt, ObjectModule.Local.Binning gb)
        {
            List <SqlCommand> list = new List <SqlCommand>();

            try
            {
                SqlCommand cmd_GEMS_Binning = Binning.Update(gb);
                list.Add(cmd_GEMS_Binning);
                SqlCommand cmd_GEMS_Tracking = Tracking.Delete(gt.PART_ID);
                list.Add(cmd_GEMS_Tracking);
                SqlCommand cmd_GEMS_History = History.Insert(gt);
                list.Add(cmd_GEMS_History);
                return(Common.DB.SqlDB.SetData_Rollback(list, StaticRes.Local));
            }
            catch
            {
                return(false);
            }
        }
Beispiel #10
0
        public static bool Unload(ObjectModule.Local.Binning gb, ObjectModule.Local.Tracking gt)
        {
            List <SqlCommand> list = new List <SqlCommand>();

            try
            {
                SqlCommand cmd_Binning = Binning.Update(gb);
                list.Add(cmd_Binning);
                SqlCommand cmd_Tracking = Tracking.Update(gt);
                list.Add(cmd_Tracking);
                SqlCommand cmd_History = History.Insert(gt);
                list.Add(cmd_History);
                return(Common.DB.SqlDB.SetData_Rollback(list, StaticRes.Local));
            }
            catch
            {
                return(false);
            }
        }
Beispiel #11
0
 public ExpiryWindow(ObjectModule.Local.Tracking tk)
 {
     InitializeComponent();
     try
     {
         tm.Tick    += new EventHandler(Timer);
         tm.Interval = TimeSpan.FromSeconds(0.5);
         tm.Start();
         tracking = tk;
         this.txt_batchNo.Content     = tk.BATCH_NO;
         this.txt_expiryTime.Content  = tk.EXPIRY_DATETIME.ToString();
         this.txt_partID.Content      = tk.PART_ID.ToString();
         this.txt_readyTime.Content   = tk.READY_DATETIME.ToString();
         this.txt_sapcode.Content     = tk.SAPCODE;
         this.txt_thawingTime.Content = tk.THAWING_DATETIME.ToString();
         this.txt_mcID.Content        = tk.EQUIP_ID.ToString();
         HardwareControl.IO_Control.Alarm_Tower_Light_Setting();
         Common.Reports.LogFile.Log("Expiry Alarm : " + this.txt_partID.Content.ToString() + ",Machine ID" + this.txt_mcID.Content.ToString() + "");
     }
     catch (Exception ff)
     {
         MessageBox.Show(ff.Message);
     }
 }
Beispiel #12
0
        public static List <ObjectModule.Local.Summary_List> History_Summary_Search(DateTime dateFrom, DateTime dateTo)
        {
            //return DataProvider.Local.History.Select_Summary(dateFrom, dateTo);
            List <ObjectModule.Local.Summary_List> List = new List <ObjectModule.Local.Summary_List>();
            DataTable dt = DataProvider.Local.History.Select(dateFrom, dateTo, string.Empty, string.Empty, false);
            List <ObjectModule.Local.Tracking> list_history = new List <ObjectModule.Local.Tracking>();

            foreach (DataRow x in dt.Rows)
            {
                ObjectModule.Local.Tracking t = new ObjectModule.Local.Tracking(x);
                list_history.Add(t);
            }
            DataTable dt_partID_List = DataProvider.Local.History.PartID_List(dateFrom, dateTo);

            foreach (DataRow x in dt_partID_List.Rows)
            {
                List <ObjectModule.Local.Tracking> list_load = (from m in list_history where m.PART_ID == x["PART_ID"].ToString() && m.ACTION == StaticRes.Global.Event.Load select m).ToList <ObjectModule.Local.Tracking>();
                if (list_load.Count >= 1)
                {
                    ObjectModule.Local.Tracking     load = list_load.First <ObjectModule.Local.Tracking>();
                    ObjectModule.Local.Summary_List xx   = new ObjectModule.Local.Summary_List();
                    xx.BATCH_NO             = load.BATCH_NO;
                    xx.CAPACITY             = load.CAPACITY.ToString();
                    xx.LOAD_WEIGHT          = load.CURRENT_WEIGHT.ToString();
                    xx.DEPARTMENT           = load.DEPARTMENT;
                    xx.DESCRIPTION          = load.DESCRIPTION;
                    xx.EMPTY_SYRINGE_WEIGHT = load.EMPTY_SYRINGE_WEIGHT.ToString();
                    xx.EXPIRY_DATETIME      = load.EXPIRY_DATETIME.ToString();
                    xx.LOAD_TIME            = load.UPDATED_TIME.ToString();
                    xx.LOAD_USER            = load.USER_ID;
                    xx.LOAD_USER_NAME       = load.USER_NAME;
                    xx.LOAD_WEIGHT          = load.START_WEIGHT.ToString();
                    xx.MF_EXPIRY_DATETIME   = load.MF_EXPIRY_DATE.ToString();
                    xx.PART_ID          = load.PART_ID;
                    xx.READY_DATETIME   = load.READY_DATETIME.ToString();
                    xx.SAPCODE          = load.SAPCODE;
                    xx.THAWING_DATETIME = load.THAWING_DATETIME.ToString();
                    List <ObjectModule.Local.Tracking> list_unload = (from m in list_history where m.PART_ID == x["PART_ID"].ToString() && m.ACTION == StaticRes.Global.Event.Unload select m).ToList <ObjectModule.Local.Tracking>();
                    if (list_unload.Count >= 1)
                    {
                        ObjectModule.Local.Tracking unload = list_unload.First <ObjectModule.Local.Tracking>();
                        xx.UNLOAD_WEIGHT_1    = unload.CURRENT_WEIGHT.ToString();
                        xx.DEVICE_1           = unload.DEVICE.ToString();
                        xx.EQUIP_ID_1         = unload.EQUIP_ID.ToString();
                        xx.LOCID_1            = unload.LOCID.ToString();
                        xx.LOT_ID_1           = unload.LOT_ID.ToString();
                        xx.UNLOAD_TIME_1      = unload.UPDATED_TIME.ToString();
                        xx.UNLOAD_USER_1      = unload.USER_ID;
                        xx.UNLOAD_USER_NAME_1 = unload.USER_NAME;
                        xx.UNLOAD_WEIGHT_1    = unload.CURRENT_WEIGHT.ToString();
                    }
                    if (list_unload.Count == 2)
                    {
                        ObjectModule.Local.Tracking unload = list_unload.Last <ObjectModule.Local.Tracking>();
                        xx.UNLOAD_WEIGHT_2    = unload.CURRENT_WEIGHT.ToString();
                        xx.DEVICE_2           = unload.DEVICE.ToString();
                        xx.EQUIP_ID_2         = unload.EQUIP_ID.ToString();
                        xx.LOCID_2            = unload.LOCID.ToString();
                        xx.LOT_ID_2           = unload.LOT_ID.ToString();
                        xx.UNLOAD_TIME_2      = unload.UPDATED_TIME.ToString();
                        xx.UNLOAD_USER_2      = unload.USER_ID;
                        xx.UNLOAD_USER_NAME_2 = unload.USER_NAME;
                        xx.UNLOAD_WEIGHT_2    = unload.CURRENT_WEIGHT.ToString();
                    }
                    List <ObjectModule.Local.Tracking> list_return = (from m in list_history where m.PART_ID == x["PART_ID"].ToString() && m.ACTION == StaticRes.Global.Event.Reuse select m).ToList <ObjectModule.Local.Tracking>();
                    if (list_return.Count == 1)
                    {
                        ObjectModule.Local.Tracking Return = list_return.First <ObjectModule.Local.Tracking>();
                        xx.RETURN_TIME_1      = Return.UPDATED_TIME.ToString();
                        xx.RETURN_USER_1      = Return.USER_ID;
                        xx.RETURN_USER_NAME_1 = Return.USER_NAME;
                        xx.RETURN_WEIGHT_1    = Return.CURRENT_WEIGHT.ToString();
                    }
                    if (list_return.Count == 2)
                    {
                        ObjectModule.Local.Tracking Return = list_return.Last <ObjectModule.Local.Tracking>();
                        xx.RETURN_TIME_2      = Return.UPDATED_TIME.ToString();
                        xx.RETURN_USER_2      = Return.USER_ID;
                        xx.RETURN_USER_NAME_2 = Return.USER_NAME;
                        xx.RETURN_WEIGHT_2    = Return.CURRENT_WEIGHT.ToString();
                    }
                    List <ObjectModule.Local.Tracking> list_scrap = (from m in list_history where m.PART_ID == x["PART_ID"].ToString() && m.ACTION == StaticRes.Global.Event.Scrap select m).ToList <ObjectModule.Local.Tracking>();
                    if (list_scrap.Count == 1)
                    {
                        ObjectModule.Local.Tracking scrap = list_scrap.First <ObjectModule.Local.Tracking>();
                        xx.SCRAP_TIME      = scrap.UPDATED_TIME.ToString();
                        xx.SCRAP_USER      = scrap.USER_ID;
                        xx.SCRAP_USER_NAME = scrap.USER_NAME;
                        xx.SCRAP_WEIGHT    = scrap.CURRENT_WEIGHT.ToString();
                    }
                    List.Add(xx);
                }
            }
            return(List);
        }
Beispiel #13
0
            public static bool Local_Update(string Part_ID, string Slot_ID, string Slot_Index, string Equip_ID,
                                            string status, string Start_Weight, string Current_Weight, string Sapcode, string Thawing_Time, string Ready_Time, string Expiry_Time,
                                            string Description, string Batch_No, string Capacity, string Remark)
            {
                #region Update BINNING DB
                ObjectModule.Local.Binning gb = new ObjectModule.Local.Binning();
                gb.BATCH_NO         = "";
                gb.CAPACITY         = int.Parse(Capacity);
                gb.CURRENT_WEIGHT   = 0;
                gb.DEPARTMENT       = StaticRes.Global.Current_User.DEPARTMENT;
                gb.DESCRIPTION      = "";
                gb.EXPIRY_DATETIME  = System.DateTime.Now;
                gb.MF_EXPIRY_DATE   = System.DateTime.Now;
                gb.PART_ID          = "";
                gb.READY_DATETIME   = System.DateTime.Now;
                gb.SAPCODE          = "";
                gb.SLOT_ID          = int.Parse(Slot_ID);
                gb.SLOT_INDEX       = int.Parse(Slot_Index);
                gb.START_WEIGHT     = 0;
                gb.STATUS           = StaticRes.Global.Binning_Status.Empty;
                gb.THAWING_DATETIME = System.DateTime.Now;
                gb.UPDATED_TIME     = System.DateTime.Now;
                gb.USER_GROUP       = StaticRes.Global.Current_User.USER_GROUP;
                gb.USER_ID          = StaticRes.Global.Current_User.USER_ID;
                gb.USER_NAME        = StaticRes.Global.Current_User.USER_NAME;
                #endregion

                #region Insert TRACKING/History
                DataTable dt = new DataTable();
                if (status == StaticRes.Global.Status.Load) //New Material
                {
                    dt = DataProvider.Local.Tracking.Select.by_PartID(Part_ID, StaticRes.Global.Status.Load);
                }
                else
                {
                    dt = DataProvider.Local.Tracking.Select.by_PartID(Part_ID, StaticRes.Global.Status.Reuse);
                }
                if (dt.Rows.Count == 0)
                {
                    #region If data missing
                    ObjectModule.Local.Tracking gt = new ObjectModule.Local.Tracking();
                    gt.ACTION               = StaticRes.Global.Event.Remove;
                    gt.BATCH_NO             = Batch_No;
                    gt.CAPACITY             = int.Parse(Capacity);
                    gt.CURRENT_WEIGHT       = float.Parse(Current_Weight);
                    gt.DEPARTMENT           = StaticRes.Global.Current_User.DEPARTMENT;
                    gt.DESCRIPTION          = Description;
                    gt.DEVICE               = "";
                    gt.EMPTY_SYRINGE_WEIGHT = 0;
                    if (Equip_ID.Length > 0)
                    {
                        gt.EQUIP_ID = Equip_ID;
                    }
                    else
                    {
                        gt.EQUIP_ID = "";
                    }
                    gt.EXPIRY_DATETIME  = DateTime.Parse(Expiry_Time);
                    gt.LOCID            = "";
                    gt.LOT_ID           = "";
                    gt.MF_EXPIRY_DATE   = System.DateTime.Now.AddYears(1);
                    gt.MONTH            = System.DateTime.Now.Month;
                    gt.PART_ID          = Part_ID;
                    gt.READY_DATETIME   = DateTime.Parse(Ready_Time);
                    gt.REMARKS          = "Missing";
                    gt.SAPCODE          = Sapcode;
                    gt.START_WEIGHT     = float.Parse(Start_Weight);
                    gt.STATUS           = StaticRes.Global.Status.Unload;
                    gt.THAWING_DATETIME = DateTime.Parse(Thawing_Time);
                    gt.UPDATED_TIME     = System.DateTime.Now;
                    gt.USER_ID          = StaticRes.Global.Current_User.USER_ID;
                    gt.USER_NAME        = StaticRes.Global.Current_User.USER_NAME;
                    gt.WEEK             = Logic.Common.weekofyear(System.DateTime.Now);
                    gt.YEAR             = System.DateTime.Now.Year;
                    return(DataProvider.Rollback.Unload_DataMissing(gb, gt));

                    #endregion
                }
                else
                {
                    ObjectModule.Local.Tracking gt = new ObjectModule.Local.Tracking(dt.Rows[0]);
                    gt.ACTION         = StaticRes.Global.Event.Remove;
                    gt.DEVICE         = "";
                    gt.LOCID          = "";
                    gt.LOT_ID         = "";
                    gt.MONTH          = System.DateTime.Now.Month;
                    gt.UPDATED_TIME   = System.DateTime.Now;
                    gt.USER_ID        = StaticRes.Global.Current_User.USER_ID;
                    gt.USER_NAME      = StaticRes.Global.Current_User.USER_NAME;
                    gt.WEEK           = Logic.Common.weekofyear(System.DateTime.Now);
                    gt.YEAR           = System.DateTime.Now.Year;
                    gt.BATCH_NO       = Batch_No;
                    gt.CAPACITY       = int.Parse(Capacity);
                    gt.CURRENT_WEIGHT = float.Parse(Current_Weight);
                    gt.DEPARTMENT     = StaticRes.Global.Current_User.DEPARTMENT;
                    gt.DESCRIPTION    = Description;
                    if (Equip_ID.Length > 0)
                    {
                        gt.EQUIP_ID = Equip_ID;
                    }
                    else
                    {
                        gt.EQUIP_ID = "";
                    }
                    gt.EXPIRY_DATETIME  = DateTime.Parse(Expiry_Time);
                    gt.PART_ID          = Part_ID;
                    gt.READY_DATETIME   = DateTime.Parse(Ready_Time);
                    gt.REMARKS          = Remark;
                    gt.SAPCODE          = Sapcode;
                    gt.START_WEIGHT     = float.Parse(Start_Weight);
                    gt.STATUS           = StaticRes.Global.Status.Remove;
                    gt.THAWING_DATETIME = DateTime.Parse(Thawing_Time);
                    return(DataProvider.Rollback.Unload(gb, gt));
                }
                #endregion
            }