/// <summary>
        /// 生成盈亏单
        /// </summary>
        /// <param name="brandID">一个仓库可能对应多个品牌,针对每个品牌生成各自的盈亏单</param>
        private DistributionCommonBillVM <BillStocktakeContrast, BillStocktakeContrastDetails> GenerateContrast(int brandID, IEnumerable <Stock> stocks, IEnumerable <StocktakeAggregationEntityForStockUpdate> stocktakeDatas)
        {
            var contrast = new DistributionCommonBillVM <BillStocktakeContrast, BillStocktakeContrastDetails>();
            var coMaster = contrast.Master;

            coMaster.Remark         = "盘点盈亏";
            coMaster.OrganizationID = VMGlobal.CurrentUser.OrganizationID;
            coMaster.StorageID      = (int)cbxStorage.SelectedValue;
            coMaster.BrandID        = brandID;

            var pids = stocks.Select(o => o.ProductID).Union(stocktakeDatas.Select(o => o.ProductID)).ToArray();//获取库存和盘点的成品ID并集
            List <BillStocktakeContrastDetails> coDetails = new List <BillStocktakeContrastDetails>();
            Stock stock = null;
            StocktakeAggregationEntityForStockUpdate st = null;

            foreach (var pid in pids)
            {
                stock = stocks.FirstOrDefault(o => o.ProductID == pid);
                st    = stocktakeDatas.FirstOrDefault(o => o.ProductID == pid);
                coDetails.Add(new BillStocktakeContrastDetails
                {
                    ProductID    = pid,
                    QuaStockOrig = stock == null ? 0 : stock.Quantity,
                    QuaStocktake = st == null ? 0 : st.Quantity
                });
            }
            coDetails.ForEach(o => o.Quantity = o.QuaStocktake - o.QuaStockOrig);
            coDetails.RemoveAll(o => o.Quantity == 0);
            contrast.Details = coDetails;

            return(contrast);
        }
Esempio n. 2
0
 public override Style SelectStyle(object item, DependencyObject container)
 {
     if (item is StocktakeAggregationEntityForStockUpdate)
     {
         StocktakeAggregationEntityForStockUpdate p = item as StocktakeAggregationEntityForStockUpdate;
         if (p.Quantity != p.StockQuantity)
         {
             return(NotEqualStyle);
         }
     }
     return(base.SelectStyle(item, container));
 }
        private void btnSearch_Click(object sender, RoutedEventArgs e)
        {
            if (cbxStorage.SelectedIndex == -1)
            {
                cbxStorage.Focus();
                MessageBox.Show("请选择盘点仓库");
                return;
            }
            var filters = new CompositeFilterDescriptorCollection();

            //filters.AddRange(billFilter.FilterDescriptors.ToList());
            filters.Add(billFilter.FilterDescriptors);
            int storageID = (int)cbxStorage.SelectedValue;

            filters.Add(new FilterDescriptor("StorageID", FilterOperator.IsEqualTo, cbxStorage.SelectedValue));
            filters.Add(new FilterDescriptor("Status", FilterOperator.IsEqualTo, false));

            var data   = ReportDataContext.AggregateStocktakeForStockUpdate(filters, out _refrenceStocktakeIDs);
            var pids   = data.Select(o => o.ProductID);
            var stocks = VMGlobal.DistributionQuery.LinqOP.Search <Stock>(o => o.StorageID == storageID && pids.Contains(o.ProductID)).ToList();
            var result = data.Select(o =>
            {
                var d = new StocktakeAggregationEntityForStockUpdate
                {
                    BrandID     = o.BrandID,
                    BrandCode   = o.BrandCode,
                    ColorCode   = o.ColorCode,
                    ProductCode = o.ProductCode,
                    ProductID   = o.ProductID,
                    Quantity    = o.Quantity,
                    SizeCode    = o.SizeCode,
                    SizeName    = o.SizeName,
                    StyleCode   = o.StyleCode
                };
                var stock       = stocks.FirstOrDefault(s => s.ProductID == o.ProductID);
                d.StockQuantity = (stock == null ? 0 : stock.Quantity);
                return(d);
            }).ToList();

            RadGridView1.ItemsSource = result;
        }