Exemple #1
0
        public static List <MicronBEAssyBELot> GetSplitLots(MicronBEAssyBELot lot, double stdLotSize)
        {
            try
            {
                List <MicronBEAssyBELot> splitLots = new List <MicronBEAssyBELot>();

                int splitQty = (int)Math.Ceiling(lot.UnitQtyDouble / stdLotSize);

                double unitQty = lot.UnitQtyDouble;

                for (int i = 1; i <= splitQty; i++)
                {
                    string splitLotID = GenerateSplitNo(lot, i);

                    double splitLotQty = stdLotSize < unitQty ? stdLotSize : unitQty;

                    MicronBEAssyBELot splitLot = lot.Clone() as MicronBEAssyBELot;
                    splitLot.LotID = splitLotID;

                    splitLot.UnitQtyDouble = splitLotQty;

                    MicronBEAssyPlanInfo plan = new MicronBEAssyPlanInfo();

                    plan.Init(splitLot.CurrentStep);
                    plan.LotID     = splitLot.LotID;
                    plan.UnitQty   = splitLot.UnitQtyDouble;
                    plan.ProductID = splitLot.Product.ProductID;
                    plan.ProcessID = splitLot.Process.ProcessID;

                    splitLot.SetCurrentPlan(plan);

                    unitQty -= splitLotQty;

                    splitLots.Add(splitLot);
                }

                return(splitLots);
            }
            catch (Exception e)
            {
                WriteHelper.WriteErrorHistory(ErrorLevel.FATAL, string.Format("ErrorMessage : {0}   MethodName : {1}", e.Message, System.Reflection.MethodInfo.GetCurrentMethod().Name));
                return(null);
            }
        }