Example #1
0
        protected override void LoadSale(SaleM s)
        {
            if (s.Discounted == null || s.Discounted.Count != 1 || s.Discounted[0].Discount == null)
            {
                throw new InvalidOperationException("Discounted product data mismatch.");
            }
            var discounted = s.Discounted[0];

            if (discounted.Gifted == null || discounted.Gifted.Count > 1)
            {
                throw new InvalidOperationException("Gifted product data mismatch.");
            }

            Title           = s.Title;
            SelectedProduct = DBService.GetService().GetProduct(discounted.ID, discounted.IsPluno);

            IsDiscountPerAmount = discounted.Amount != 0;
            AmountDiscounted    = discounted.Amount != 0 ? discounted.Amount : 1;
            IsAmountLimited     = discounted.MaxMultiply != 0;
            LimitedAmount       = discounted.MaxMultiply != 0 ? discounted.MaxMultiply : 1;
            IsGiftAvailable     = discounted.Gifted.Count > 0;
            if (discounted.Gifted.Count > 0)
            {
                Gifted = DBService.GetService().GetProduct(
                    discounted.Gifted[0].ID, discounted.Gifted[0].IsPluno);
            }
            Discount = discounted.Discount;
        }
        public static SaleM EditSale(SaleM sale)
        {
            ActivityLogService.Logger.LogFunctionCall(sale);
            if (sale == null)
            {
                return(null);
            }
            try
            {
                if (s_salesMap[sale.Type] == null)
                {
                    throw new ArgumentException("לא ניתן ליצור את המבצע הנדרש");
                }

                var vm = Activator.CreateInstance(s_salesMap[sale.Type], sale);

                if (vm == null || !(vm is SaleViewModel))
                {
                    throw new ArgumentException("לא ניתן לערוך את המבצע הנדרש");
                }

                var svm = vm as SaleViewModel;
                InteropService.OpenWindow(svm);

                return(svm.Conducted);
            }
            catch (Exception ex)
            {
                ActivityLogService.Logger.LogError(ex);
                throw new InvalidOperationException("אירעה שגיאה בעת עריכת המבצע. המידע פגום.", ex);
            }
        }
Example #3
0
        protected override void LoadSale(SaleM s)
        {
            if (s.Discounted == null || s.Discounted.Count != 1 || s.Discounted[0].Discount == null)
            {
                throw new InvalidOperationException("Discounted product data mismatch.");
            }
            var discounted = s.Discounted[0];

            Title           = s.Title;
            SelectedProduct = DBService.GetService().GetProduct(discounted.ID, discounted.IsPluno);
            Discount        = discounted.Discount;
        }
Example #4
0
        protected override void LoadSale(SaleM s)
        {
            if (s.ReqProducts == null || s.ReqProducts.Count != 1 ||
                s.Discounted == null || s.Discounted.Count != 1 ||
                s.ReqProducts[0] != s.Discounted[0])
            {
                throw new SalesException("Selected product data mismatch.");
            }

            Title           = s.Title;
            SelectedProduct = DBService.GetService().GetProduct(s.ReqProducts[0].ID, s.ReqProducts[0].IsPluno);
            BuyAmount       = s.ReqProducts[0].Amount;
            GetAmount       = s.Discounted[0].MaxMultiply;
        }
Example #5
0
        private static List <SalesGroupM> makeSalesForTester()
        {
            var   Sales = new List <SalesGroupM>();
            SaleM s;
            var   reqs = new List <ProdAmountM>();
            var   outs = new List <DiscountedProductM>();

            // Sale 1.1 - Lowered price - 10 NIS discount on any '1_1' product
            outs = new List <DiscountedProductM>();
            outs.Add(new DiscountedProductM("1_1", true, 1, 0,
                                            new DiscountM(10, DiscountTypes.Fix_Discount)));
            s = new SaleM("Sale 1.1", SaleTypes.LowPricedProductAdv,
                          new SalesPropertiesM(0, null, 1, 1), null, outs);
            Sales.Add(new SalesGroupM(s));

            // Sale 1.2 - Lowered price with a gift ('1_3' for free, 3 x '1_2' for 10 NIS)
            outs = new List <DiscountedProductM>();
            outs.Add(new DiscountedProductM("1_2", true, 3, 0,
                                            new DiscountM(10, DiscountTypes.Fix_Price),
                                            new GiftedProductM("1_3", true, 1, new DiscountM(0, DiscountTypes.Fix_Price))));
            s = new SaleM("Sale 1.2", SaleTypes.LowPricedProductAdv,
                          new SalesPropertiesM(0, null, 1, 0), null, outs);
            Sales.Add(new SalesGroupM(s));

            // Sale 2.1 - simple buy and get (buy 3 x '2_1' and get 2 x '2_2' for free)
            reqs = new List <ProdAmountM> {
                new ProdAmountM("2_1", true, 3)
            };
            outs = new List <DiscountedProductM> {
                new DiscountedProductM("2_2", true, 0, 2, new DiscountM(0, DiscountTypes.Fix_Price))
            };
            s = new SaleM("Sale 2.1", SaleTypes.BuyAndGetAdv,
                          new SalesPropertiesM(0, null, 0, 1), reqs, outs);
            Sales.Add(new SalesGroupM(s));

            // Sale 2.2 - simple buy and get with minimum value (buy 2 x '2_3' and get 1.5 x '2_4' for free, one instance for each 200 NIS)
            reqs = new List <ProdAmountM> {
                new ProdAmountM("2_3", true, 2)
            };
            outs = new List <DiscountedProductM> {
                new DiscountedProductM("2_4", true, 0, 1.5, new DiscountM(0, DiscountTypes.Fix_Price))
            };
            s = new SaleM("Sale 2.2", SaleTypes.BuyAndGetAdv,
                          new SalesPropertiesM(200, null, 0, 1), reqs, outs);
            Sales.Add(new SalesGroupM(s));

            return(Sales);
        }
Example #6
0
        protected SaleViewModel(SaleM s)
        {
            _index = s != null ? s.Index : -1;
            _ID    = s != null ? s.SaleID : -1;
            _prop  = s != null ? s.Properties :
                     CreateSaleProperties();

            PropertiesCommand = new DelegateCommand(propertiesFunc);
            CommitCommand     = new DelegateCommand(CommitFunc);
            CancelCommand     = new DelegateCommand(CancelFunc);

            if (s != null)
            {
                LoadSale(s);
            }
            else
            {
                LoadEmpty();
            }
        }
Example #7
0
 protected abstract void LoadSale(SaleM s);
 public BuyAndGetAdvViewModel(SaleM s) : base(s)
 {
 }
 public FixedPricedProductViewModel(SaleM s) : base(s)
 {
 }
Example #10
0
        public bool EditSale(SaleM sale)
        {
            if (sale == null)
            {
                return(false);
            }
            ActivityLogService.Logger.LogFunctionCall(sale.SaleID);
            _trans = null;
            try
            {
                CheckIsRemote();
                OpenConnection();
                _trans = _conn.BeginTransaction();

                //1. Edit core properties
                string sql = "update sales set Title = @Title, TotalOffPrice = @disAmount, TotalOffType = @disType, " +
                             "MinTotalPrice = @minPrice, MaxTotalPrice = @maxPrice, AllowMultiple = @multiple, " +
                             "Recurrences = @recurrence where SaleID = @saleID";
                _cmd             = new SqlCommand(sql, _conn);
                _cmd.Transaction = _trans;

                _cmd.Parameters.Add(new SqlParameter("@Title", SqlDbType.NVarChar)).Value = sale.Title;
                _cmd.Parameters.Add(new SqlParameter("@disAmount", SqlDbType.Real)).Value = sale.Discount.Amount;
                _cmd.Parameters.Add(new SqlParameter("@disType", SqlDbType.Int)).Value    = (int)sale.Discount.Type;

                _cmd.Parameters.Add(new SqlParameter("@minPrice", SqlDbType.Real)).Value  = sale.Properties.MinPrice;
                _cmd.Parameters.Add(new SqlParameter("@maxPrice", SqlDbType.Real)).Value  = sale.Properties.MaxPrice ?? (object)DBNull.Value;
                _cmd.Parameters.Add(new SqlParameter("@multiple", SqlDbType.Int)).Value   = sale.Properties.InstanceMultiply;
                _cmd.Parameters.Add(new SqlParameter("@recurrence", SqlDbType.Int)).Value = sale.Properties.RecurrencePerInstance;

                _cmd.Parameters.Add(new SqlParameter("@saleID", SqlDbType.Int)).Value = sale.SaleID;
                if (_cmd.ExecuteNonQuery() == 0)
                {
                    throw new InvalidOperationException("Something went wrong while updating sale #" + sale.SaleID + ".");
                }

                //2. Re-insert required products
                sql              = "delete from PluReqSale where SaleID = @saleID";
                _cmd             = new SqlCommand(sql, _conn);
                _cmd.Transaction = _trans;
                _cmd.Parameters.Add(new SqlParameter("@saleID", SqlDbType.Int)).Value = sale.SaleID;
                _cmd.ExecuteNonQuery();

                InsertRequired(sale.ReqProducts, sale.SaleID);

                //4. insert discounted products
                sql              = "delete from PluOutSale where SaleID = @saleID";
                _cmd             = new SqlCommand(sql, _conn);
                _cmd.Transaction = _trans;
                _cmd.Parameters.Add(new SqlParameter("@saleID", SqlDbType.Int)).Value = sale.SaleID;
                _cmd.ExecuteNonQuery();

                InsertDiscounted(sale.Discounted, sale.SaleID);

                _trans.Commit();
                return(true);
            }
            catch (Exception ex)
            {
                ActivityLogService.Logger.LogError(ex);
                _trans?.Rollback();
                return(false);
            }
        }
Example #11
0
        private int InsertSaleM(SaleM sale, int GroupID, int OrderID)
        {
            CheckIsRemote();
            if (_trans == null)
            {
                return(-1);
            }

            string sql;
            int    SaleID = -1;

            try
            {
                //1. create new sales
                sql = "insert into sales (SaleGroupID, GroupIndex, SaleType, Title, TotalOffPrice, TotalOffType, MinTotalPrice, MaxTotalPrice, AllowMultiple, Recurrences) " +
                      "values (@groupID, @groupIndex, @type, @Title, @disAmount, @disType, @minPrice, @maxPrice, @multiple, @recurrence)";
                _cmd             = new SqlCommand(sql, _conn);
                _cmd.Transaction = _trans;

                _cmd.Parameters.Add(new SqlParameter("@groupID", SqlDbType.Int)).Value    = GroupID;
                _cmd.Parameters.Add(new SqlParameter("@groupIndex", SqlDbType.Int)).Value = OrderID;
                _cmd.Parameters.Add(new SqlParameter("@type", SqlDbType.Int)).Value       = (int)sale.Type;
                _cmd.Parameters.Add(new SqlParameter("@Title", SqlDbType.NVarChar)).Value = sale.Title;

                _cmd.Parameters.Add(new SqlParameter("@disAmount", SqlDbType.Real)).Value = sale.Discount.Amount;
                _cmd.Parameters.Add(new SqlParameter("@disType", SqlDbType.Int)).Value    = (int)sale.Discount.Type;

                _cmd.Parameters.Add(new SqlParameter("@minPrice", SqlDbType.Real)).Value  = sale.Properties.MinPrice;
                _cmd.Parameters.Add(new SqlParameter("@maxPrice", SqlDbType.Real)).Value  = sale.Properties.MaxPrice ?? (object)DBNull.Value;
                _cmd.Parameters.Add(new SqlParameter("@multiple", SqlDbType.Int)).Value   = sale.Properties.InstanceMultiply;
                _cmd.Parameters.Add(new SqlParameter("@recurrence", SqlDbType.Int)).Value = sale.Properties.RecurrencePerInstance;
                _cmd.ExecuteNonQuery();

                //2. get SaleID
                sql              = "select max(SaleID) from Sales";
                _cmd             = new SqlCommand(sql, _conn);
                _cmd.Transaction = _trans;
                SaleID           = int.Parse(_cmd.ExecuteScalar().ToString());

                //3. insert required products
                InsertRequired(sale.ReqProducts, SaleID);

                //4. insert discounted products
                InsertDiscounted(sale.Discounted, SaleID);

                //### error!!! move to InsertGroup()
                //5. associate to branches
                if (sale.Properties.IsBroadSale)
                {
                    sql = "insert into SalesPCID(SaleGroupID, pcid, isEnabled, DateFrom, DateTo, HourFrom, HourTo) " +
                          "select @groupID, bhno, 1, @dateFrom, @dateTo, NULL, NULL from branch";
                    _cmd             = new SqlCommand(sql, _conn);
                    _cmd.Transaction = _trans;
                    _cmd.Parameters.Add(new SqlParameter("@groupID", SqlDbType.Int)).Value       = GroupID;
                    _cmd.Parameters.Add(new SqlParameter("@dateFrom", SqlDbType.DateTime)).Value = sale.Properties.DateFrom;
                    _cmd.Parameters.Add(new SqlParameter("@dateTo", SqlDbType.DateTime)).Value   = sale.Properties.DateTo ?? (object)DBNull.Value;
                    _cmd.ExecuteNonQuery();
                }

                return(SaleID);
            }
            catch (Exception ex)
            {
                ActivityLogService.Logger.LogError(ex);
                throw;
            }
        }
Example #12
0
 protected override void LoadSale(SaleM s)
 {
 }
Example #13
0
 public LowPricedProductAdvViewModel(SaleM s) : base(s)
 {
 }
Example #14
0
 public DiscountedProductViewModel(SaleM s) : base(s)
 {
 }