public async Task <GarmentExpenditureGood> Handle(UpdateIsReceivedGarmentExpenditureGoodCommand request, CancellationToken cancellationToken) { var ExpenditureGood = _garmentExpenditureGoodRepository.Query.Where(o => o.Identity == request.Identity).Select(o => new GarmentExpenditureGood(o)).Single(); ExpenditureGood.SetIsReceived(request.IsReceived); ExpenditureGood.Modify(); await _garmentExpenditureGoodRepository.Update(ExpenditureGood); _storage.Save(); return(ExpenditureGood); }
public async Task <GarmentExpenditureGood> Handle(RemoveGarmentExpenditureGoodCommand request, CancellationToken cancellationToken) { var ExpenditureGood = _garmentExpenditureGoodRepository.Query.Where(o => o.Identity == request.Identity).Select(o => new GarmentExpenditureGood(o)).Single(); GarmentComodityPrice garmentComodityPrice = _garmentComodityPriceRepository.Query.Where(a => a.IsValid == true && new UnitDepartmentId(a.UnitId) == ExpenditureGood.UnitId && new GarmentComodityId(a.ComodityId) == ExpenditureGood.ComodityId).Select(s => new GarmentComodityPrice(s)).Single(); Dictionary <Guid, double> finStockToBeUpdated = new Dictionary <Guid, double>(); _garmentExpenditureGoodItemRepository.Find(o => o.ExpenditureGoodId == ExpenditureGood.Identity).ForEach(async expenditureItem => { if (finStockToBeUpdated.ContainsKey(expenditureItem.FinishedGoodStockId)) { finStockToBeUpdated[expenditureItem.FinishedGoodStockId] += expenditureItem.Quantity; } else { finStockToBeUpdated.Add(expenditureItem.FinishedGoodStockId, expenditureItem.Quantity); } GarmentFinishedGoodStockHistory garmentFinishedGoodStockHistory = _garmentFinishedGoodStockHistoryRepository.Query.Where(a => a.ExpenditureGoodItemId == expenditureItem.Identity).Select(a => new GarmentFinishedGoodStockHistory(a)).Single(); garmentFinishedGoodStockHistory.Remove(); await _garmentFinishedGoodStockHistoryRepository.Update(garmentFinishedGoodStockHistory); expenditureItem.Remove(); await _garmentExpenditureGoodItemRepository.Update(expenditureItem); }); foreach (var finStock in finStockToBeUpdated) { var garmentFinishingGoodStockItem = _garmentFinishedGoodStockRepository.Query.Where(x => x.Identity == finStock.Key).Select(s => new GarmentFinishedGoodStock(s)).Single(); var qty = garmentFinishingGoodStockItem.Quantity + finStock.Value; garmentFinishingGoodStockItem.SetQuantity(qty); garmentFinishingGoodStockItem.SetPrice((garmentFinishingGoodStockItem.BasicPrice + (double)garmentComodityPrice.Price) * (qty)); garmentFinishingGoodStockItem.Modify(); await _garmentFinishedGoodStockRepository.Update(garmentFinishingGoodStockItem); } ExpenditureGood.Remove(); await _garmentExpenditureGoodRepository.Update(ExpenditureGood); _storage.Save(); return(ExpenditureGood); }
public async Task <GarmentExpenditureGood> Handle(UpdateGarmentExpenditureGoodCommand request, CancellationToken cancellationToken) { var ExpenditureGood = _garmentExpenditureGoodRepository.Query.Where(o => o.Identity == request.Identity).Select(o => new GarmentExpenditureGood(o)).Single(); _garmentExpenditureGoodItemRepository.Find(o => o.ExpenditureGoodId == ExpenditureGood.Identity).ForEach(async expenditureItem => { await _garmentExpenditureGoodItemRepository.Update(expenditureItem); }); ExpenditureGood.SetCarton(request.Carton); ExpenditureGood.SetExpenditureDate(request.ExpenditureDate); ExpenditureGood.SetInvoice(request.Invoice); ExpenditureGood.SetIsReceived(request.IsReceived); ExpenditureGood.Modify(); await _garmentExpenditureGoodRepository.Update(ExpenditureGood); _storage.Save(); return(ExpenditureGood); }
public async Task <int> Handle(UpdateDatesGarmentExpenditureGoodCommand request, CancellationToken cancellationToken) { List <Guid> guids = new List <Guid>(); foreach (var id in request.Identities) { guids.Add(Guid.Parse(id)); } var ExGoods = _garmentExpenditureGoodRepository.Query.Where(a => guids.Contains(a.Identity)).Select(a => new GarmentExpenditureGood(a)).ToList(); foreach (var model in ExGoods) { model.SetExpenditureDate(request.Date); model.Modify(); await _garmentExpenditureGoodRepository.Update(model); } _storage.Save(); return(guids.Count()); }
public async Task <GarmentExpenditureGood> Handle(PlaceGarmentExpenditureGoodCommand request, CancellationToken cancellationToken) { request.Items = request.Items.ToList(); GarmentComodityPrice garmentComodityPrice = _garmentComodityPriceRepository.Query.Where(a => a.IsValid == true && a.UnitId == request.Unit.Id && a.ComodityId == request.Comodity.Id).Select(s => new GarmentComodityPrice(s)).Single(); GarmentExpenditureGood garmentExpenditureGood = new GarmentExpenditureGood( Guid.NewGuid(), GenerateExpenditureGoodNo(request), request.ExpenditureType, new UnitDepartmentId(request.Unit.Id), request.Unit.Code, request.Unit.Name, request.RONo, request.Article, new GarmentComodityId(request.Comodity.Id), request.Comodity.Code, request.Comodity.Name, new BuyerId(request.Buyer.Id), request.Buyer.Code, request.Buyer.Name, request.ExpenditureDate, request.Invoice, request.ContractNo, request.Carton, request.Description, request.IsReceived ); Dictionary <string, double> finStockToBeUpdated = new Dictionary <string, double>(); Dictionary <Guid, double> finstockQty = new Dictionary <Guid, double>(); foreach (var item in request.Items) { if (item.isSave) { double StockQty = 0; var garmentFinishingGoodStock = _garmentFinishedGoodStockRepository.Query.Where(x => x.SizeId == item.Size.Id && x.UomId == item.Uom.Id && x.RONo == request.RONo && x.UnitId == request.Unit.Id && x.Quantity > 0).OrderBy(a => a.CreatedDate).ToList(); double qty = item.Quantity; foreach (var finishedGood in garmentFinishingGoodStock) { if (!finstockQty.ContainsKey(finishedGood.Identity)) { finstockQty.Add(finishedGood.Identity, finishedGood.Quantity); } string key = finishedGood.Identity.ToString() + "~" + item.Description; if (qty > 0) { double remainQty = finstockQty[finishedGood.Identity] - qty; if (remainQty < 0) { qty -= finstockQty[finishedGood.Identity]; finStockToBeUpdated.Add(key, 0); finstockQty[finishedGood.Identity] = 0; } else if (remainQty == 0) { finStockToBeUpdated.Add(key, 0); finstockQty[finishedGood.Identity] = remainQty; break; } else if (remainQty > 0) { finStockToBeUpdated.Add(key, remainQty); finstockQty[finishedGood.Identity] = remainQty; break; } } } } } foreach (var finStock in finStockToBeUpdated) { var keyString = finStock.Key.Split("~"); var garmentFinishingGoodStockItem = _garmentFinishedGoodStockRepository.Query.Where(x => x.Identity == Guid.Parse(keyString[0])).Select(s => new GarmentFinishedGoodStock(s)).Single(); var item = request.Items.Where(a => new SizeId(a.Size.Id) == garmentFinishingGoodStockItem.SizeId && new UomId(a.Uom.Id) == garmentFinishingGoodStockItem.UomId && a.Description == keyString[1]).Single(); item.Price = (item.BasicPrice + ((double)garmentComodityPrice.Price * 1)) * item.Quantity; var qty = garmentFinishingGoodStockItem.Quantity - finStock.Value; GarmentExpenditureGoodItem garmentExpenditureGoodItem = new GarmentExpenditureGoodItem( Guid.NewGuid(), garmentExpenditureGood.Identity, garmentFinishingGoodStockItem.Identity, new SizeId(item.Size.Id), item.Size.Size, qty, 0, new UomId(item.Uom.Id), item.Uom.Unit, item.Description, garmentFinishingGoodStockItem.BasicPrice, (garmentFinishingGoodStockItem.BasicPrice + (double)garmentComodityPrice.Price) * qty ); await _garmentExpenditureGoodItemRepository.Update(garmentExpenditureGoodItem); GarmentFinishedGoodStockHistory garmentFinishedGoodStockHistory = new GarmentFinishedGoodStockHistory( Guid.NewGuid(), garmentFinishingGoodStockItem.Identity, Guid.Empty, Guid.Empty, garmentExpenditureGood.Identity, garmentExpenditureGoodItem.Identity, Guid.Empty, Guid.Empty, Guid.Empty, Guid.Empty, "OUT", garmentExpenditureGood.RONo, garmentExpenditureGood.Article, garmentExpenditureGood.UnitId, garmentExpenditureGood.UnitCode, garmentExpenditureGood.UnitName, garmentExpenditureGood.ComodityId, garmentExpenditureGood.ComodityCode, garmentExpenditureGood.ComodityName, garmentExpenditureGoodItem.SizeId, garmentExpenditureGoodItem.SizeName, garmentExpenditureGoodItem.UomId, garmentExpenditureGoodItem.UomUnit, garmentExpenditureGoodItem.Quantity, garmentExpenditureGoodItem.BasicPrice, garmentExpenditureGoodItem.Price ); await _garmentFinishedGoodStockHistoryRepository.Update(garmentFinishedGoodStockHistory); garmentFinishingGoodStockItem.SetQuantity(finStock.Value); garmentFinishingGoodStockItem.SetPrice((garmentFinishingGoodStockItem.BasicPrice + (double)garmentComodityPrice.Price) * (finStock.Value)); garmentFinishingGoodStockItem.Modify(); await _garmentFinishedGoodStockRepository.Update(garmentFinishingGoodStockItem); } await _garmentExpenditureGoodRepository.Update(garmentExpenditureGood); _storage.Save(); return(garmentExpenditureGood); }