public ItemPricing GetCurrentItemPricing(long typeId, long regionId = 10000002, IEnumerable <long> stationIds = null)
        {
            var region         = _eveDb.mapRegions.Single(r => r.regionID == regionId);
            var regionStations = region.stations.ToList();
            var stationDict    = regionStations.ToDictionary(s => s.stationID, s => s.stationName);

            var sellOrders = _liteDb.GetCollection <RegionMarketOrder>("region-market-orders");

            var regionOrders = sellOrders.FindOne(o => o.TypeId == typeId && o.RegionId == regionId);

            if (regionOrders != null)
            {
                foreach (var marketOrder in regionOrders.MarketOrders)
                {
                    marketOrder.StationName = stationDict[marketOrder.StationId];
                }

                var itemPricing = new ItemPricing
                {
                    RegionId          = regionId,
                    LastUpdated       = regionOrders.LastUpdated,
                    MarketOrders      = regionOrders.MarketOrders,
                    AllowedStationIds = stationIds ?? new List <long> {
                        60003760
                    },
                };

                return(itemPricing);
            }

            return(null);
        }
        public TicketItem AddItemToOrder(Item item)
        {
            double itemPrice = item.Price;

            // TODO: VIP! Check for special pricing
            foreach (ItemPricing price in ItemPricing.GetAll(item.Id, true, true))
            {
                itemPrice = price.Price;
            }

            TicketItem ticketItem =
                TicketItem.Add(SessionManager.ActiveTicket.PrimaryKey, item.Id, 1, itemPrice, null, null);

            if (item.IsGrouping)
            {
                var itemGroups  = new List <ItemGroup>(ItemGroup.GetAll(item.Id));
                var ticketItems = new Stack <TicketItem>();
                foreach (TicketItem childTicketItem in itemGroups
                         .Select(itemGroup =>
                                 TicketItem.Add(SessionManager.ActiveTicket.PrimaryKey, itemGroup.TargetItemId,
                                                1, 0, null, null, ticketItem.PrimaryKey.Id)))
                {
                    ticketItems.Push(childTicketItem);
                }

                AddItemToOrder(ticketItems.Pop(), BranchType.Last);
                foreach (TicketItem childTicketItem in ticketItems)
                {
                    AddItemToOrder(childTicketItem, BranchType.Middle);
                }
            }
            return(AddItemToOrder(ticketItem));
        }
Beispiel #3
0
 public ItemPricingModel(ItemPricing itemPricing)
 {
     Id        = itemPricing.Id;
     ItemId    = itemPricing.ItemId;
     DayOfWeek = itemPricing.DayOfWeek;
     StartTime = itemPricing.StartTime;
     EndTime   = itemPricing.EndTime;
     Price     = itemPricing.Price;
 }
        public void Setup()
        {
            dbConnStr = buildConnectionString(CustomerManagementTest.Properties.Settings.Default.TestDb, () => DateTimeOffset.UtcNow.ToString("yyyy-MM-dd_hh:mm:ssZ"));

            using (var db = new CustomerContext(dbConnStr))
            {
                var item = new Item { ItemClass = "iclass", SubscriptionDays = 30, Glacctno = "1234" };

                var itempricing = new ItemPricing { Item = item, OverrideGlacctno = "abcd", PromoCode = "code", UnitPrice = 30M, StartDate = DateTime.UtcNow.AddHours(-1), EndDate = DateTime.UtcNow.AddHours(300) };
                db.Save(itempricing);
                db.SaveChanges();
                id = itempricing.Id;
            }
        }
Beispiel #5
0
        public void TestItemPricing()
        {
            using (var db = new CustomerContext(dbConnStr))
            {
                var item = db.Items.First(p => p.Id == itemId);
                db.Attach(item);
                var itempricing = new ItemPricing { Item=item, OverrideGlacctno="abcd", PromoCode="code", UnitPrice=30M, StartDate=DateTime.UtcNow.AddHours(-1), EndDate=DateTime.UtcNow.AddHours(300)   };
                item.ItemPricings.Add(itempricing);
                db.SaveChanges();
                item = db.Items.First(p => p.Id == itemId);
                Assert.IsTrue(item.ItemPricings.Count == 1, "Did not save Item pricing");

            }
        }
Beispiel #6
0
        private void btnAddPrice_Click(object sender, EventArgs e)
        {
            var itemPrice = new ItemPricing()
            {
                ItemCode     = txtCode.Text,
                UnitPrice    = Convert.ToDecimal(txtNewPrice.Text),
                NotedDate    = MegaService.GetComputeTime(),
                ComputerCode = MegaService.GetComputerCode(),
                ComputeTime  = MegaService.GetComputeTime()
            };

            using (var context = new MegaEntities())
            {
                context.ItemPricings.Add(itemPrice);
            }

            txtNewPrice.Clear();
            txtNewPrice.Focus();

            newPrice = itemPrice.UnitPrice;

            dgvList.Rows.Add((dgvList.Rows.Count + 1), itemPrice.NotedDate, itemPrice.UnitPrice.ToString("C2"));
        }
        private void map(ItemPricing itemPricing, DAL.ItemPricing dalItemPricing)
        {
            bool isNew = itemPricing.Id == 0;
            bool isModified = false;

            if (dalItemPricing.ItemId != itemPricing.ItemId)
            {
                dalItemPricing.ItemId = itemPricing.ItemId;
                isModified = true;
            }

            if (dalItemPricing.StartDate != itemPricing.StartDate)
            {
                dalItemPricing.StartDate = itemPricing.StartDate;
                isModified = true;
            }

            if (dalItemPricing.EndDate != itemPricing.EndDate)
            {
                dalItemPricing.EndDate = itemPricing.EndDate;
                isModified = true;
            }

            if (dalItemPricing.OverrideGlacctno != itemPricing.OverrideGlacctno)
            {
                dalItemPricing.OverrideGlacctno = itemPricing.OverrideGlacctno;
                isModified = true;
            }

            if (dalItemPricing.UnitPrice != itemPricing.UnitPrice)
            {
                dalItemPricing.UnitPrice = itemPricing.UnitPrice;
                isModified = true;
            }

            if (dalItemPricing.Description != itemPricing.Description)
            {
                dalItemPricing.Description = itemPricing.Description;
                isModified = true;
            }

            if (dalItemPricing.PromoCode != itemPricing.PromoCode)
            {
                dalItemPricing.PromoCode = itemPricing.PromoCode;
                isModified = true;
            }

            if (isNew)
            {
                dalItemPricing.CreatedBy = itemPricing.LastChangedBy;
                dalItemPricing.CreatedDate = DateTime.Now;
            }

            if (isModified)
            {
                dalItemPricing.LastChangedBy = itemPricing.LastChangedBy;
                dalItemPricing.LastChangedDate = DateTime.Now;
            }
        }
 private void map(DAL.ItemPricing dalItemPricing, ItemPricing itemPricing)
 {
     itemPricing.Id = dalItemPricing.Id;
     itemPricing.ItemId = dalItemPricing.ItemId;
     itemPricing.StartDate = dalItemPricing.StartDate;
     itemPricing.EndDate = dalItemPricing.EndDate;
     itemPricing.OverrideGlacctno = dalItemPricing.OverrideGlacctno;
     itemPricing.UnitPrice = dalItemPricing.UnitPrice;
     itemPricing.Description = dalItemPricing.Description;
     itemPricing.PromoCode = dalItemPricing.PromoCode;
 }
 internal static void Delete(DAL.CustomersDataContext dc, ItemPricing itemPricing)
 {
     DAL.ItemPricing dalItemPricing = findRecord(dc, itemPricing.Id);
     dalItemPricing.Deleted = true;
     dc.SubmitChanges();
 }
Beispiel #10
0
        public bool UpdateItem()
        {
            int              categoryId      = itemEditorDetailsControl.CategoryId;
            string           fullName        = itemEditorDetailsControl.FullName;
            string           shortName       = itemEditorDetailsControl.ShortName;
            double           price           = itemEditorDetailsControl.Price;
            PrintDestination printOptionSet  = itemEditorDetailsControl.PrintDestinations;
            bool             isActive        = itemEditorDetailsControl.IsActive;
            int              taxId           = itemEditorDetailsControl.TaxId;
            int              itemOptionSet1  = itemEditorOptionControl.OptionSetId1;
            int              itemOptionSet2  = itemEditorOptionControl.OptionSetId2;
            int              itemOptionSet3  = itemEditorOptionControl.OptionSetId3;
            bool             isReturnable    = itemEditorDetailsControl.IsReturnable;
            bool             isTaxExemptable = itemEditorDetailsControl.IsTaxExemptable;
            bool             isFired         = itemEditorDetailsControl.IsFired;
            bool             isOutOfStock    = itemEditorDetailsControl.IsOutOfStock;
            bool             isGrouping      = itemEditorDetailsControl.IsGrouping;

            // TODO: Implement for delivery and future times
            TimeSpan?prepareTime = null;

            // Verify Category is set
            if (categoryId <= 0)
            {
                PosDialogWindow.ShowDialog(
                    Strings.ItemEditorErrorNoCategory, Strings.ItemEditorInvalidCategory);
                return(false);
            }

            // Verify name is valid and unique
            try
            {
                if (string.IsNullOrEmpty(fullName))
                {
                    throw new Exception(Strings.ItemEditorErrorNoName);
                }
                Item current = Item.Get(fullName);
                if (current != null)
                {
                    if ((ActiveItem == null) ||
                        ((ActiveItem != null) && (current.Id != ActiveItem.Id)))
                    {
                        throw new Exception(Strings.ItemEditorErrorExistingName);
                    }
                }
            }
            catch (Exception ex)
            {
                PosDialogWindow.ShowDialog(ex.Message, Strings.ItemEditorInvalidName);
                return(false);
            }

            // Is there an ActiveItem?
            Item activeItem = ActiveItem;

            if (activeItem == null)
            {
                activeItem = Item.Add(categoryId, fullName, shortName, price, itemOptionSet1,
                                      itemOptionSet2, itemOptionSet3, printOptionSet, isActive, taxId,
                                      prepareTime, isReturnable, isTaxExemptable, isFired, isOutOfStock, isGrouping);
            }
            else
            {
                LogItemChanges(activeItem, itemOptionSet1, itemOptionSet2, itemOptionSet3);
                // Update the category values for the ActiveItem
                activeItem.SetCategory(categoryId);
                activeItem.SetFullName(fullName);
                activeItem.SetShortName(shortName);
                if (Math.Abs(price - activeItem.Price) > double.Epsilon)
                {
                    LogPriceChange(activeItem.Id, activeItem.Price, price);
                }
                activeItem.SetPrice(price);
                activeItem.SetOptionSet1(itemOptionSet1);
                activeItem.SetOptionSet2(itemOptionSet2);
                activeItem.SetOptionSet3(itemOptionSet3);
                activeItem.SetActive(isActive);
                activeItem.SetPrintOptionSet(printOptionSet);
                activeItem.SetTaxId(taxId);
                activeItem.SetPrepareTime(prepareTime);
                activeItem.SetIsReturnable(isReturnable);
                activeItem.SetIsTaxExemptable(isTaxExemptable);
                activeItem.SetIsFired(isFired);
                activeItem.SetIsOutOfStock(isOutOfStock);
                activeItem.SetIsGrouping(isGrouping);
                // Update the database
                activeItem.Update();
            }

            // Update ItemPricing
            List <int> removedIds = new List <int>();

            if (itemEditorSpecialPricing.RemovedItems != null)
            {
                foreach (ItemEditorSpecialPricingControl.ItemPricingModel removed in itemEditorSpecialPricing.RemovedItems)
                {
                    removedIds.Add(removed.Id);
                    ItemPricing.Delete(removed.Id);
                    LogPriceChange(removed.Id, removed.ItemId, removed.Price, null, removed.DayOfWeek, null,
                                   removed.StartTime, null, removed.EndTime, null);
                }
            }
            if (itemEditorSpecialPricing.NewItems != null)
            {
                foreach (ItemEditorSpecialPricingControl.ItemPricingModel added in itemEditorSpecialPricing.NewItems)
                {
                    // ToDo: Placeholder Constants
                    ItemPricing itemPricing =
                        ItemPricing.Add(activeItem.Id, added.DayOfWeek, added.StartTime, added.EndTime, added.Price,
                                        null, null, null, true);
                    LogPriceChange(itemPricing.Id, added.ItemId, null, added.Price, null, added.DayOfWeek,
                                   null, added.StartTime, null, added.EndTime);
                }
            }
            if (itemEditorSpecialPricing.ExistingItems != null)
            {
                foreach (ItemEditorSpecialPricingControl.ItemPricingModel existing in itemEditorSpecialPricing.ExistingItems)
                {
                    if (removedIds.Contains(existing.Id))
                    {
                        continue;
                    }
                    double?     oldPrice = null, newPrice = null;
                    Days?       oldDayOfWeek = null, newDayOfWeek = null;
                    TimeSpan?   oldStartTime = null, newStartTime = null, oldEndTime = null, newEndTime = null;
                    ItemPricing itemPricing = ItemPricing.Get(existing.Id);
                    if (Math.Abs(itemPricing.Price - existing.Price) > double.Epsilon)
                    {
                        oldPrice = itemPricing.Price;
                        newPrice = existing.Price;
                    }
                    if (itemPricing.DayOfWeek != existing.DayOfWeek)
                    {
                        oldDayOfWeek = itemPricing.DayOfWeek;
                        newDayOfWeek = existing.DayOfWeek;
                    }
                    if (itemPricing.StartTime != existing.StartTime)
                    {
                        oldStartTime = itemPricing.StartTime;
                        newStartTime = existing.StartTime;
                    }
                    if (itemPricing.EndTime != existing.EndTime)
                    {
                        oldEndTime = itemPricing.EndTime;
                        newEndTime = existing.EndTime;
                    }
                    itemPricing.SetItemId(existing.ItemId);
                    itemPricing.SetDayOfTheWeek(existing.DayOfWeek);
                    itemPricing.SetPrice(existing.Price);
                    itemPricing.SetStartTime(existing.StartTime);
                    itemPricing.SetEndTime(existing.EndTime);
                    itemPricing.Update();
                    LogPriceChange(itemPricing.Id, itemPricing.ItemId, oldPrice, newPrice, oldDayOfWeek,
                                   newDayOfWeek, oldStartTime, newStartTime, oldEndTime, newEndTime);
                }
            }

            if (ActiveItem == null)
            {
                ActiveItem = activeItem;
            }
            itemEditorGroupingControl.Update(ActiveItem.Id);
            itemEditorIngredientsControl.Update(ActiveItem.Id);
            itemEditorSpecialPricing.ActiveItem = ActiveItem;

            return(true);
        }
        public ItemPricing UpdateItemPricing(long itemPricingId, ItemPricing ip)
        {
            throw new Exception("This is not a valid function, itempricing should never be updated");

            using (var db = Db())
            {
                var itempricing = db.ItemPricings.FirstOrDefault(i => i.Id == itemPricingId);

                db.Attach(itempricing);

                itempricing.StartDate= ip.StartDate;
                itempricing.EndDate = ip.EndDate;
                itempricing.OverrideGlacctno =ip.OverrideGlacctno;
                itempricing.UnitPrice = ip.UnitPrice;
                itempricing.Description = ip.Description;
                itempricing.PromoCode = ip.PromoCode;

                db.SaveChanges();

                return ip;
            }
        }
        public ItemPricing CreateItemPricing(long itemId, DateTime start, DateTime end, string overrideGlacctno, decimal unitprice, string description, string promo )
        {
            using (var db = Db())
            {
                var item = db.Items.FirstOrDefault(i => i.Id == itemId);

                if (item == null)
                    throw new ArgumentNullException("Item does not exist");

                var itempricing = new ItemPricing
                {
                    StartDate = start,
                    EndDate = end,
                    OverrideGlacctno = overrideGlacctno,
                    UnitPrice = unitprice,
                    Description = description,
                    PromoCode = promo
                };

                db.Save(itempricing);
                db.SaveChanges();

                return itempricing;
            }
        }