예제 #1
0
        //public void CopyFrom(CBasket src)
        //{
        //    TotalAmount = src.TotalAmount;

        //    int cnt = src.GetBasketItemCount();
        //    for (int i = 0; i < cnt; i++)
        //    {
        //        CBasketItem bi = src.GetBasketItem(i);
        //        AddBasketItem(bi);
        //    }
        //}

        public void CopyEntireFrom(CBasket src)
        {
            TotalAmount   = src.TotalAmount;
            BundledAmount = src.BundledAmount;

            int cnt = src.GetBasketItemCount();

            for (int i = 0; i < cnt; i++)
            {
                CBasketItem bi  = src.GetBasketItem(i);
                CBasketItem nbi = new CBasketItem(bi.Key, bi.Item, bi.Quantity);

                nbi.SetFinalDiscount(bi.GetFinalDiscount());
                nbi.IsFinalDiscounted = bi.IsFinalDiscounted;
                nbi.IsPostGift        = bi.IsPostGift;
                nbi.IsTray            = bi.IsTray;

                if (bi.IsPriced())
                {
                    nbi.SetUnitPrice(bi.GetUnitPrice());
                }
                nbi.SetDiscount(bi.GetDiscount());

                AddBasketItem(nbi);
            }
        }
예제 #2
0
        private CBasketSet finalizeOutput(CBasketSet input, CBasket trackingBasket, CBasket used, CBasket free)
        {
            CBasketSet output = new CBasketSet();

            if ((used == null) && (free == null))
            {
                return(input);
            }

            //The original ones
            preserveOriginalGrouping(output, input);

            output.AddBasket(finalizeBasket(trackingBasket, BasketTypeEnum.Available));
            CBasket bundled = finalizeBasket(used, BasketTypeEnum.Bundled);

            output.AddBasket(bundled);

            int cnt = bundled.GetBasketItemCount();

            for (int i = 0; i < cnt; i++)
            {
                CBasketItem bi = bundled.GetBasketItem(i);
                bi.SetUnitPrice(0.00);
            }

            MPackage pkg = getPackage();

            bundled.SetAppliedPackage(getPackage());
            bundled.BundledAmount = triedCount * CUtil.StringToDouble(pkg.BundleAmount);

            return(output);
        }
예제 #3
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;
        }
        private CBasketItem calculatePrice(CBasketItem bi)
        {
            MPackage pkg = getPackage();

            CBasketItem nbi = new CBasketItem(bi.Key, bi.Item, bi.Quantity);

            foreach (MPackagePrice pp in pkg.PackageItemPrices)
            {
                if (pp.EnabledFlag.Equals("N"))
                {
                    continue;
                }

                if (!isItemApplicable(pp, bi))
                {
                    continue;
                }

                MIntervalConfig ivc = new MIntervalConfig(new CTable(""));
                ivc.DeserializeConfig(pp.PricingDefination);

                CPrice o = null;
                if (ivc.SelectionType == 1)
                {
                    //step
                    o = getStepPrice(ivc, bi);
                }
                else
                {
                    //Tier
                    o = getTierPrice(ivc, bi);
                }

                if (o != null)
                {
                    nbi.SetAppliedPackage(pkg);
                    nbi.SetUnitPrice(o.UnitPrice);

                    return(nbi);
                }
            }

            return(null);
        }
예제 #5
0
        private CBasketItem calculateDiscount(CBasketItem bi)
        {
            MPackage      pkg = getPackage();
            MSelectedItem vi  = (MSelectedItem)bi.Item;

            CBasketItem nbi = new CBasketItem(bi.Key, bi.Item, bi.Quantity);

            nbi.SetUnitPrice(bi.GetUnitPrice());

            foreach (MPackageTrayPriceDiscount pp in pkg.PackageTrayByItems)
            {
                if (!isItemApplicable(pp, bi))
                {
                    continue;
                }

                MIntervalConfig ivc = new MIntervalConfig(new CTable(""));
                ivc.DeserializeConfig(pp.DiscountDefination);

                CPrice o = null;
                if (ivc.SelectionType == 1)
                {
                    //step
                    o = getStepDiscount(ivc, bi);
                }
                else
                {
                    //Tier
                    o = getTierDiscount(ivc, bi);
                }

                if (o != null)
                {
                    nbi.SetAppliedPackage(pkg);
                    nbi.SetDiscount(o.DiscountAmount);

                    return(nbi);
                }
            }

            return(null);
        }
예제 #6
0
        private CBasketItem calculatePrice(CBasketItem bi)
        {
            CBasketItem   nbi = new CBasketItem(bi.Key, bi.Item, bi.Quantity);
            MSelectedItem si  = (MSelectedItem)bi.Item;

            String pricingDef = si.PricingDefination;

            if (si.SelectionType.Equals("1"))
            {
                pricingDef = si.ServicePricingDefinition;
            }

            MIntervalConfig ivc = new MIntervalConfig(new CTable(""));

            ivc.DeserializeConfig(pricingDef);

            CPrice o = null;

            if (ivc.SelectionType == 1)
            {
                //step
                o = getStepPrice(ivc, bi);
            }
            else
            {
                //Tier
                o = getTierPrice(ivc, bi);
            }

            if (o != null)
            {
                nbi.SetAppliedPackage(getPackage());
                nbi.SetUnitPrice(o.UnitPrice);

                return(nbi);
            }

            return(null);
        }
예제 #7
0
        private CBasketItem calculatePrice(CBasketItem bi)
        {
            MPackage        pkg        = getPackage();
            MIntervalConfig ivc        = null;
            CPrice          o          = null;
            Boolean         applicable = false;
            CBasketItem     nbi        = new CBasketItem(bi.Key, bi.Item, bi.Quantity);

            foreach (MPackageTrayPriceDiscount pp in pkg.PackageTrayByItems)
            {
                if (pp.EnabledFlag.Equals("N"))
                {
                    continue;
                }

                if (!isItemApplicable(pp, bi))
                {
                    continue;
                }

                //Applicable here

                applicable = true;

                ivc = new MIntervalConfig(new CTable(""));
                ivc.DeserializeConfig(pp.PricingDefination);

                o = null;
                if (ivc.SelectionType == 1)
                {
                    //step
                    o = getStepPrice(ivc, bi);
                }
                else
                {
                    //Tier
                    o = getTierPrice(ivc, bi);
                }

                if (o != null)
                {
                    //Got the price

                    nbi.SetAppliedPackage(pkg);
                    nbi.SetUnitPrice(o.UnitPrice);

                    return(nbi);
                }
            }

            //Applicable but price not match here, or not applicable for all

            if (!applicable)
            {
                //Not applicable for all
                return(null);
            }

            //Get Default Price here
            MSelectedItem si = (MSelectedItem)bi.Item;

            ivc = new MIntervalConfig(new CTable(""));

            String pricingDef = si.PricingDefination;

            if (si.SelectionType.Equals("1"))
            {
                pricingDef = si.ServicePricingDefinition;
            }

            ivc.DeserializeConfig(pricingDef);

            o = null;
            if (ivc.SelectionType == 1)
            {
                //step
                o = getStepPrice(ivc, bi);
            }
            else
            {
                //Tier
                o = getTierPrice(ivc, bi);
            }

            if (o != null)
            {
                nbi.SetAppliedPackage(pkg);
                nbi.SetUnitPrice(o.UnitPrice);

                return(nbi);
            }

            return(null);
        }