/// <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); }
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; }