Ejemplo n.º 1
0
        public void AddNewItemInList(PackingListItem item)
        {
            if (listItem == null)
            {
                listItem = new List <PackingListItem>();
            }

            if (item != null && this.databaseItem != null)
            {
                int phan_nguyen = (int)(item.GetQuantity() / databaseItem.GetMaxPacketSize());
                int phan_du     = (int)(item.GetQuantity()) - (int)(phan_nguyen * databaseItem.GetMaxPacketSize());

                if (phan_du == 0 || phan_nguyen == 0)
                {
                    if (phan_nguyen == 0)
                    {
                        item.SetNeedMerger(true);
                    }
                    else
                    {
                        item.SetNeedMerger(false);
                    }

                    listItem.Add(item);
                }
                else
                {
                    //add phan nguyen
                    item.SetQuantity(phan_nguyen * databaseItem.GetMaxPacketSize());
                    item.SetNeedMerger(false);
                    listItem.Add(item);

                    //add phan du
                    PackingListItem item_du = new PackingListItem();

                    item_du.SetColor1(item.GetColor1());
                    item_du.SetColor2(item.GetColor2());
                    item_du.SetNameProduct(item.GetNameProduct());
                    item_du.SetProductSize(item.GetProductSize());
                    item_du.SetQuantity(phan_du);

                    item_du.SetNeedMerger(true);
                    listItem.Add(item_du);
                }
            }
        }
Ejemplo n.º 2
0
        public ParkingParserItem(String name, PackingListItem item, DatabaseItem databaseItem)
        {
            this.nameProduct  = name;
            this.databaseItem = databaseItem;

            this.listItem = new List <PackingListItem>();
            if (item != null)
            {
                int phan_nguyen = (int)(item.GetQuantity() / databaseItem.GetMaxPacketSize());
                int phan_du     = (int)(item.GetQuantity()) - (int)(phan_nguyen * databaseItem.GetMaxPacketSize());

                if (phan_du == 0 || phan_nguyen == 0)
                {
                    if (phan_nguyen == 0)
                    {
                        item.SetNeedMerger(true);
                    }
                    else
                    {
                        item.SetNeedMerger(false);
                    }
                    listItem.Add(item);
                }
                else
                {
                    //add phan nguyen
                    item.SetQuantity(phan_nguyen * databaseItem.GetMaxPacketSize());
                    item.SetNeedMerger(false);
                    listItem.Add(item);

                    //add phan du
                    PackingListItem item_du = new PackingListItem();

                    item_du.SetColor1(item.GetColor1());
                    item_du.SetColor2(item.GetColor2());
                    item_du.SetNameProduct(item.GetNameProduct());
                    item_du.SetProductSize(item.GetProductSize());
                    item_du.SetQuantity(phan_du);

                    item_du.SetNeedMerger(true);
                    listItem.Add(item_du);
                }
            }
        }
        private void SliptToMerger(ParkingParserItem parserItem)
        {
            PackingListItem packingItem;
            int             base_index = 0;

            double totalQunatity = 0;
            double numberItem    = 0;

            foreach (PackingListItem item in parserItem.GetListItem())
            {
                if (item.IsNeedMerger())
                {
                    totalQunatity += item.GetQuantity();
                    numberItem++;
                }
            }

            if (totalQunatity >= parserItem.GetDatabaseItem().GetMaxPacketSize())
            {
                double          sliptQuantity = 0;
                PackingListItem itemAdd       = null;

                for (int run = 0; run < parserItem.GetListItem().Count; run++)
                {
                    if (parserItem.GetListItem().ElementAt(run).IsNeedMerger())
                    {
                        base_index = run;
                        break;
                    }
                }

                //Need to slipt
                parserItem.GetListItem().ElementAt(base_index).SetNeedMerger(false);

                sliptQuantity = parserItem.GetDatabaseItem().GetMaxPacketSize() -
                                parserItem.GetListItem().ElementAt(base_index).GetQuantity();

                while (sliptQuantity > 0)
                {
                    bool found = false;

                    for (int run = base_index + 1; run < parserItem.GetListItem().Count; run++)
                    {
                        if (parserItem.GetListItem().ElementAt(run).IsNeedMerger())
                        {
                            if (parserItem.GetListItem().ElementAt(run).GetQuantity() > sliptQuantity)
                            {
                                found = true;

                                itemAdd = new PackingListItem();

                                itemAdd.SetColor1(parserItem.GetListItem().ElementAt(run).GetColor1());
                                itemAdd.SetColor2(parserItem.GetListItem().ElementAt(run).GetColor2());
                                itemAdd.SetNameProduct(parserItem.GetListItem().ElementAt(run).GetNameProduct());
                                itemAdd.SetNeedMerger(false);
                                itemAdd.SetProductSize(parserItem.GetListItem().ElementAt(run).GetProductSize());
                                itemAdd.SetQuantity(sliptQuantity);

                                parserItem.GetListItem().ElementAt(run).SetQuantity(parserItem.GetListItem().ElementAt(run).GetQuantity() - sliptQuantity);

                                sliptQuantity = 0;
                                parserItem.GetListItem().ElementAt(base_index).AddMergerItem(itemAdd);
                            }
                            else
                            {
                                found = true;

                                packingItem = parserItem.GetListItem().ElementAt(run);

                                packingItem.SetNeedMerger(false);

                                parserItem.GetListItem().RemoveAt(run);

                                parserItem.GetListItem().ElementAt(base_index).AddMergerItem(packingItem);

                                sliptQuantity -= packingItem.GetQuantity();
                            }

                            break;
                        }
                    }

                    if (!found)
                    {
                        break;
                    }
                }

                SliptToMerger(parserItem);
            }
            else /*less than*/ if (numberItem != 0)
            {
                for (int run = 0; run < parserItem.GetListItem().Count; run++)
                {
                    if (parserItem.GetListItem().ElementAt(run).IsNeedMerger())
                    {
                        parserItem.GetListItem().ElementAt(run).SetNeedMerger(false);
                        base_index = run;
                        break;
                    }
                }

                numberItem -= 1;

                while (numberItem > 0)
                {
                    packingItem = null;

                    if (base_index >= parserItem.GetListItem().Count)
                    {
                        break;
                    }

                    for (int run = base_index; run < parserItem.GetListItem().Count; run++)
                    {
                        if (parserItem.GetListItem().ElementAt(run).IsNeedMerger())
                        {
                            packingItem = parserItem.GetListItem().ElementAt(run);

                            packingItem.SetNeedMerger(false);

                            parserItem.GetListItem().RemoveAt(run);
                            break;
                        }
                    }

                    if (packingItem != null)
                    {
                        parserItem.GetListItem().ElementAt(base_index).AddMergerItem(packingItem);
                    }

                    numberItem -= 1;
                }
            }
        }