private static DisposalRequest Create (List <CustomsWarehouse> listOfAccounts, IGrouping <string, CustomsWarehouseDisposal> disposals, string description, string procedure, Action <DisposalRequest, PropertyChangedEventArgs> notify) { CustomsWarehouse _firstAccount = listOfAccounts.First <CustomsWarehouse>(); DisposalRequest _newRequest = CreateDisposalRequest(_firstAccount, description, procedure, notify); listOfAccounts.Sort(new Comparison <CustomsWarehouse>(CustomsWarehouse.CompareCustomsWarehouse)); List <DisposalRequestDetails> _newCollection = new List <DisposalRequestDetails>(); int _sequenceNumber = 0; List <CustomsWarehouse> _copylistOfAccounts = new List <CustomsWarehouse>(listOfAccounts); if (disposals != null) { foreach (CustomsWarehouseDisposal _cwdx in disposals) { DisposalRequestDetails _newDisposalRequestDetails = new DisposalRequestDetails(_newRequest, _cwdx, ref _sequenceNumber); _copylistOfAccounts.Remove(_cwdx.CWL_CWDisposal2CustomsWarehouseID); _newCollection.Add(_newDisposalRequestDetails); _newRequest.GetDataContext(_newDisposalRequestDetails); if (_cwdx.CustomsStatus.GetValueOrDefault(CustomsStatus.NotStarted) != CustomsStatus.NotStarted) { _newRequest.ReadOnly = true; } } } foreach (CustomsWarehouse _cwx in _copylistOfAccounts) { if (_cwx.TobaccoNotAllocated == 0) { continue; } DisposalRequestDetails _newDisposalRequestDetails = new DisposalRequestDetails(_newRequest, _cwx, ref _sequenceNumber); _newCollection.Add(_newDisposalRequestDetails); } _newRequest.RemainingOnStock = _newCollection.Sum(x => x.RemainingOnStock); _newRequest.UpdateOnInit(_newCollection); return(_newRequest); }