示例#1
0
        public void DeleteCostColumn()
        {
            TestPrice price;

            using (var scope = new TransactionScope(OnDispose.Rollback)) {
                price = CreateTestSupplierWithPrice();
                scope.VoteCommit();
            }
            var prices = FillPrices();
            var rows   = prices.Select(String.Format("PFirmCode = {0}", price.Supplier.Id));

            Assert.That(rows.Count(), Is.EqualTo(2));
            rows = prices.Select(String.Format("PFirmCode = {0} and PCostType = 1 and PIsParent = 0", price.Supplier.Id));
            Assert.That(rows.Count(), Is.EqualTo(1));
            rows[0].Delete();

            var changes = prices.GetChanges();

            With.Transaction((c, t) => {
                var mcmdDPrice = new MySqlCommand();
                var daPrice    = new MySqlDataAdapter();

                mcmdDPrice.CommandText = "usersettings.DeleteCost";
                mcmdDPrice.CommandType = CommandType.StoredProcedure;
                mcmdDPrice.Parameters.Clear();
                mcmdDPrice.Parameters.Add("?inCostCode", MySqlDbType.Int64, 0, "PCostCode");
                mcmdDPrice.Parameters["?inCostCode"].Direction = ParameterDirection.Input;

                mcmdDPrice.Connection = c;
                daPrice.DeleteCommand = mcmdDPrice;
                daPrice.TableMappings.Clear();
                daPrice.TableMappings.Add("Table", prices.TableName);

                daPrice.Update(changes);
                prices.AcceptChanges();
            });


            using (var scope = new TransactionScope(OnDispose.Rollback)) {
                var resprice = TestPrice.Find(price.Id);
                Assert.That(resprice.Costs.Count, Is.EqualTo(1));

                var cost = TestPriceCost.TryFind(costForDelete.Id);
                Assert.That(cost, Is.EqualTo(null));

                var item = TestPriceItem.TryFind(costForDelete.PriceItem.Id);
                Assert.That(item, Is.EqualTo(null));

                var source = TestPriceSource.TryFind(costForDelete.PriceItem.Source.Id);
                Assert.That(source, Is.EqualTo(null));

                var format = TestFormat.TryFind(costForDelete.PriceItem.Format.Id);
                Assert.That(format, Is.EqualTo(null));
            }
        }
示例#2
0
        public TestPrice CreateTestSupplierWithPrice()
        {
            var priceItem = new TestPriceItem {
                Source = new TestPriceSource {
                    SourceType = PriceSourceType.Email,
                },
                Format = new TestFormat(),
            };

            var priceItem2 = new TestPriceItem {
                Source = new TestPriceSource {
                    SourceType = PriceSourceType.Email,
                },
                Format = new TestFormat(),
            };

            var supplier = TestSupplier.CreateNaked();
            var price    = supplier.Prices[0];

            price.CostType  = CostType.MultiFile;
            price.PriceName = "test";
            price.Costs.Clear();

            var cost = price.NewPriceCost(priceItem, "");

            cost.Name = "test base";
            price.RegionalData[0].BaseCost = cost;

            costForDelete      = price.NewPriceCost(priceItem2, "");
            costForDelete.Name = "test";

            price.Costs[0].PriceItem.Format.PriceFormat = PriceFormatType.NativeDbf;
            price.Costs[1].PriceItem.Format.PriceFormat = PriceFormatType.NativeDbf;

            price.SaveAndFlush();

            return(price);
        }