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); } }
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; }
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; }
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); }
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(); } }
protected abstract void LoadSale(SaleM s);
public BuyAndGetAdvViewModel(SaleM s) : base(s) { }
public FixedPricedProductViewModel(SaleM s) : base(s) { }
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); } }
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; } }
protected override void LoadSale(SaleM s) { }
public LowPricedProductAdvViewModel(SaleM s) : base(s) { }
public DiscountedProductViewModel(SaleM s) : base(s) { }