예제 #1
0
        public CBasketSet MergeUsedToAvailable(CBasketSet inBasket, Boolean trayFlag)
        {
            BasketTypeEnum type1 = BasketTypeEnum.Available;
            BasketTypeEnum type2 = BasketTypeEnum.Used;
            String         name  = "MergeUsedToAvailable";

            if (trayFlag)
            {
                type1 = BasketTypeEnum.AvailableTray;
                type2 = BasketTypeEnum.UsedTray;
                name  = name + "Tray";
            }

            CBasketSet output = new CBasketSet();

            CProcessingResult res = new CProcessingResult(name);

            res.SetInputBasketSet(inBasket.Clone());

            ArrayList useds  = inBasket.GetAllBasketByType(type2);
            ArrayList avails = inBasket.GetAllBasketByType(type1);

            if (avails != null)
            {
                foreach (CBasket a in avails)
                {
                    //Move the original 'Available' basket
                    CBasket na = new CBasket(type1);
                    na.CopyEntireFrom(a);
                    output.AddBasket(na);
                }
            }

            if (useds != null)
            {
                foreach (CBasket u in useds)
                {
                    CBasket nb = new CBasket(type1);
                    nb.CopyEntireFrom(u);

                    output.AddBasket(nb);
                }
            }

            Hashtable filterSet = new Hashtable();

            filterSet[type1] = null;
            filterSet[type2] = null;
            copyBasketsExc(output, inBasket, filterSet);

            res.IsOperation = true;
            res.SetOutputBasketSet(output);
            res.SetStatus(ProcessingResultStatus.ProcessingSuccess);
            addProcessingResult(res);

            return(output);
        }
예제 #2
0
        public CBasket GetBasket(BasketTypeEnum type, int idx)
        {
            ArrayList arr = (ArrayList)baskets[type];

            if (arr == null)
            {
                return(null);
            }

            CBasket b = (CBasket)arr[idx];

            return(b);
        }
예제 #3
0
        public CBasketItemDisplay(CBasketItem bi, BasketTypeEnum bt, int groupNum, int seq, CBasket bk)
        {
            initWeight();

            basket     = bk;
            basketType = bt;
            grpNum     = groupNum;
            sequence   = seq;
            bki        = bi;
            si         = (MSelectedItem)bi.Item;

            amount      = bki.GetAmount();
            totalAmount = bki.GetTotal();
        }
예제 #4
0
        public CBasketItemDisplay(CTable tb)
        {
            initWeight();

            basketType = (BasketTypeEnum)CUtil.StringToInt(tb.GetFieldValue("BASKET_TYPE"));
            basket     = new CBasket(basketType);


            grpNum   = CUtil.StringToInt(tb.GetFieldValue("GROUP_NO"));
            sequence = CUtil.StringToInt(tb.GetFieldValue("GROUP_NO"));

            double  qty      = CUtil.StringToDouble(tb.GetFieldValue("QUANTITY"));
            double  amt      = CUtil.StringToDouble(tb.GetFieldValue("AMOUNT"));
            double  tot      = CUtil.StringToDouble(tb.GetFieldValue("TOTAL_AMOUNT"));
            double  discount = CUtil.StringToDouble(tb.GetFieldValue("DISCOUNT"));
            Boolean isPriced = tb.GetFieldValue("IS_PRICED").Equals("Y");

            String code = tb.GetFieldValue("CODE");

            sequence = 1;
            id       = tb.GetFieldValue("BILL_SIM_DISPLAY_ID");
            //CTable o = new CTable("");

            si             = new MSelectedItem(tb);
            si.TrayFlag    = tb.GetFieldValue("IS_TRAY");
            isTray         = si.TrayFlag.Equals("Y");
            si.EnabledFlag = "Y";
            si.VoucherID   = tb.GetFieldValue("VOUCHER_ID");
            si.VoucherNo   = tb.GetFieldValue("VOUCHER_CODE");
            si.VoucherName = tb.GetFieldValue("VOUCHER_NAME");
            si.FreeText    = tb.GetFieldValue("FREE_TEXT");

            bki = new CBasketItem(code, si, qty, amt);
            bki.SetDiscount(discount);
            if (qty != 0)
            {
                if (isPriced)
                {
                    bki.SetUnitPrice(amt / qty);
                }
            }

            amount      = amt;
            totalAmount = tot;
        }
예제 #5
0
        public void AddBasket(CBasket b)
        {
            BasketTypeEnum type = b.BasketType;
            ArrayList      arr  = (ArrayList)baskets[type];

            if (arr == null)
            {
                arr           = new ArrayList();
                baskets[type] = arr;
            }

            arr.Add(b);

            if (!types.Contains(type))
            {
                types.Add(type);
            }
        }
        private double getSumAmount(CBasketSet input, BasketTypeEnum type)
        {
            ArrayList baskets = input.GetAllBasketByType(type);

            if (baskets == null)
            {
                return(0.00);
            }

            double total = 0.00;

            foreach (CBasket bk in baskets)
            {
                BasketTypeEnum bt = bk.BasketType;

                if (type != bt)
                {
                    continue;
                }

                if (!isInBasketType(bt))
                {
                    continue;
                }

                if (bt == BasketTypeEnum.Bundled)
                {
                    total = total + bk.BundledAmount;
                }
                else
                {
                    int cnt = bk.GetBasketItemCount();
                    for (int i = 0; i < cnt; i++)
                    {
                        CBasketItem bi = bk.GetBasketItem(i);
                        total = total + bi.GetAmount();
                    }
                }
            }

            return(total);
        }
예제 #7
0
        private static double getBundleAvgAmount(ArrayList sorted, int groupNo, BasketTypeEnum bundleType)
        {
            double cnt = 0.00;
            double amt = 0.00;

            foreach (CBasketItemDisplay id in sorted)
            {
                if ((id.BasketType == bundleType) && (id.GroupNo == groupNo))
                {
                    if (id.Sequence == 0)
                    {
                        amt = id.BundledAmount;
                    }

                    cnt = cnt + id.Quantity;
                }
            }

            return(amt / cnt);
        }
        private Boolean isInBasketType(BasketTypeEnum bt)
        {
            MPackage          pkg = getPackage();
            MBasketTypeConfig cfg = new MBasketTypeConfig(new CTable(""));

            cfg.DeserializeConfig(pkg.DiscountBasketTypeConfig, pkg.BasketConfigType);

            foreach (MMasterRef vm in cfg.SelectedBaskets)
            {
                if (vm.EnabledFlag.Equals("Y"))
                {
                    if (bt.ToString().Equals(vm.Code))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
예제 #9
0
        protected CBasket finalizeBasket(CBasket bskt, BasketTypeEnum retType)
        {
            CBasket nbk = new CBasket(retType);

            if (bskt == null)
            {
                return(nbk);
            }

            int cnt = bskt.GetBasketItemCount();

            for (int i = 0; i < cnt; i++)
            {
                CBasketItem bi = bskt.GetBasketItem(i);
                if (bi.TempLeftQty > 0)
                {
                    bi.Quantity = bi.TempLeftQty;
                    nbk.AddBasketItem(bi);
                }
            }

            return(nbk);
        }
예제 #10
0
        public CBasketSet SumInGroup(CBasketSet inBasket, BasketTypeEnum bt)
        {
            CBasketSet output = new CBasketSet();

            CProcessingResult res = new CProcessingResult("SumInGroup-" + bt.ToString());

            res.SetInputBasketSet(inBasket.Clone());

            Hashtable quantities = new Hashtable();
            Hashtable objects    = new Hashtable();
            ArrayList keys       = new ArrayList();

            ArrayList items = inBasket.GetAllBasketByType(bt);

            if (items == null)
            {
                items = new ArrayList();
            }

            foreach (CBasket b in items)
            {
                int cnt = b.GetBasketItemCount();

                for (int i = 0; i < cnt; i++)
                {
                    CBasketItem bi = b.GetBasketItem(i);
                    object      o  = quantities[bi.Key];
                    if (o == null)
                    {
                        quantities[bi.Key] = bi.Quantity;
                        objects[bi.Key]    = bi;

                        keys.Add(bi.Key);
                    }
                    else
                    {
                        double tmp = (double)quantities[bi.Key];
                        tmp = tmp + bi.Quantity;
                        quantities[bi.Key] = tmp;
                    }
                }
            }

            CBasket bkt = new CBasket(bt);

            foreach (String k in keys)
            {
                CBasketItem bi  = (CBasketItem)objects[k];
                double      qty = (double)quantities[k];
                CBasketItem bki = new CBasketItem(k, bi.Item, qty);

                bkt.AddBasketItem(bki);
            }

            if (bkt.GetBasketItemCount() > 0)
            {
                output.AddBasket(bkt);
            }

            Hashtable filterSet = new Hashtable();

            filterSet[bt] = null;
            copyBasketsExc(output, inBasket, filterSet);

            res.IsOperation = true;
            res.SetOutputBasketSet(output);
            res.SetStatus(ProcessingResultStatus.ProcessingSuccess);
            addProcessingResult(res);

            return(output);
        }
예제 #11
0
        public ArrayList GetAllBasketByType(BasketTypeEnum type)
        {
            ArrayList arr = (ArrayList)baskets[type];

            return(arr);
        }
예제 #12
0
 public CBasket(BasketTypeEnum type)
 {
     bt = type;
 }