Exemple #1
0
        private void SaveBasket()
        {
            DataAccess db = new DataAccess();

            // получить ID накладной, в которую будет включена корзина
            spare_outgo outgo = db.SpareOutgoOpened();

            // - если есть открытая накладная
            // - если нет открытой накладной
            if (outgo == null)
            {
                MessageBox.Show("Не указана текущая открытая накладная!");
                return;
            }
            int OutgoID = outgo.id;

            // создадим Sale
            // посчитаем сумму корзины в разных валютах
            decimal Prur = 0;
            decimal Pbyr = 0;
            decimal Peur = 0;
            decimal Pusd = 0;
            foreach (BasketView item in BasketItems)
            {
                Prur += item.Prur.Value * item.Q.Value;
                Pbyr += item.Pbyr.Value * item.Q.Value;
                Pusd += item.Pusd.Value * item.Q.Value;
                Peur += item.Peur.Value * item.Q.Value;
            }

            // сохранить запись о корзине
            Sale sale = new Sale();
            sale.Pbyr = Pbyr;
            sale.Prur = Prur;
            sale.Pusd = Pusd;
            sale.Peur = Peur;
            Sale s = db.SaleCreate(sale);

            // CreateBasketItem
            foreach (BasketView item in BasketItems)
            {
                // здесь же внутри
                // - уменшается остаток по приходу
                // - идёт связывание с отгрузками
                item.SaleID = s.ID;
                db.BasketCreate(item);

                // обновляем остаток товара в кэше
                SpareContainer.Instance.Update(item.SpareID.Value);
            }

            // Закрыть корзину, очистить список
            grBasket.Visibility = System.Windows.Visibility.Collapsed;
            treeSpareGroups.Visibility = System.Windows.Visibility.Visible;
            BasketItems = new List<BasketView>();
        }