Esempio n. 1
0
 private void TriggerBuying(Item item)
 {
     AudioManager.Instance.PlayItemBuy();
     BuyingItem?.Invoke(item);
 }
        private double calculateValue(int theItemId, double theStockQuantity)
        {
            double returnValue = 0;

            try {
                Item       item = itemManagerImpl.getItemById(theItemId);
                BuyingItem buyingItem_request = new BuyingItem();
                buyingItem_request.ItemId     = theItemId;
                buyingItem_request.OrderBy    = "modified_date DESC";
                buyingItem_request.LimitStart = 0;
                buyingItem_request.LimitEnd   = 10;
                List <BuyingItem> list_buyingItem = buyingInvoiceManagerImpl.getItem(buyingItem_request);

                double itemsLeftForCalculating = theStockQuantity;
                double lastBuyingPrice         = 0;
                String m          = item.DefaultBuyingMode;
                double lastBPrice = 1;
                double quantity   = 0;

                foreach (BuyingItem buyingItem_a in list_buyingItem)
                {
                    lastBuyingPrice = buyingItem_a.BuyingPriceActual;
                    m          = buyingItem_a.BuyingMode;
                    lastBPrice = buyingItem_a.BuyingPriceActual;
                    quantity   = buyingItem_a.BuyingMode == "p" ? (buyingItem_a.Quantity + buyingItem_a.FreeQuantity) * item.QuantityPerPack : (buyingItem_a.Quantity + buyingItem_a.FreeQuantity);
                    if (itemsLeftForCalculating > 0)
                    {
                        if (itemsLeftForCalculating < (quantity))
                        {
                            if (buyingItem_a.BuyingMode == "u")
                            {
                                returnValue += itemsLeftForCalculating * buyingItem_a.BuyingPriceActual;
                            }
                            else
                            {
                                returnValue += itemsLeftForCalculating * (buyingItem_a.BuyingPriceActual / item.QuantityPerPack);
                            }
                            itemsLeftForCalculating = 0;
                        }
                        else
                        {
                            returnValue             += (buyingItem_a.Quantity + buyingItem_a.FreeQuantity) * buyingItem_a.BuyingPriceActual;
                            itemsLeftForCalculating -= (quantity);
                        }
                    }
                }

                if (itemsLeftForCalculating > 0)
                {
                    if (m == "u")
                    {
                        returnValue += lastBuyingPrice * itemsLeftForCalculating;
                    }
                    else
                    {
                        returnValue += itemsLeftForCalculating * (lastBuyingPrice / item.QuantityPerPack);
                        //returnValue += lastBuyingPrice * itemsLeftForCalculating;
                        //returnValue += (lastBuyingPrice * lastBPrice) * itemsLeftForCalculating;
                    }
                }
            } catch (Exception) { }

            return(returnValue);
        }