public async Task <GarmentSewingDO> Handle(PlaceGarmentSewingDOCommand request, CancellationToken cancellationToken) { //request.Items = request.Items.Where(item => item.IsSave == true && item.Details.Count() > 0).ToList(); GarmentSewingDO garmentSewingDO = new GarmentSewingDO( Guid.NewGuid(), GenerateSewingDONo(request), request.CuttingOutId, new UnitDepartmentId(request.UnitFrom.Id), request.UnitFrom.Code, request.UnitFrom.Name, 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, request.SewingDODate.GetValueOrDefault() ); foreach (var item in request.Items) { GarmentSewingDOItem garmentSewingDOItem = new GarmentSewingDOItem( Guid.NewGuid(), garmentSewingDO.Identity, item.CuttingOutDetailId, item.CuttingOutItemId, new ProductId(item.Product.Id), item.Product.Code, item.Product.Name, item.DesignColor, new SizeId(item.Size.Id), item.Size.Size, item.Quantity, new UomId(item.Uom.Id), item.Uom.Unit, item.Color, item.RemainingQuantity, item.BasicPrice, item.Price ); await _garmentSewingDOItemRepository.Update(garmentSewingDOItem); } await _garmentSewingDORepository.Update(garmentSewingDO); _storage.Save(); return(garmentSewingDO); }
public GarmentSewingDOItemDto(GarmentSewingDOItem garmentSewingDOItem) { Id = garmentSewingDOItem.Identity; SewingDOId = garmentSewingDOItem.SewingDOId; CuttingOutDetailId = garmentSewingDOItem.CuttingOutDetailId; CuttingOutItemId = garmentSewingDOItem.CuttingOutItemId; Product = new Product(garmentSewingDOItem.ProductId.Value, garmentSewingDOItem.ProductCode, garmentSewingDOItem.ProductName); DesignColor = garmentSewingDOItem.DesignColor; Size = new SizeValueObject(garmentSewingDOItem.SizeId.Value, garmentSewingDOItem.SizeName); Quantity = garmentSewingDOItem.Quantity; Uom = new Uom(garmentSewingDOItem.UomId.Value, garmentSewingDOItem.UomUnit); Color = garmentSewingDOItem.Color; RemainingQuantity = garmentSewingDOItem.RemainingQuantity; BasicPrice = garmentSewingDOItem.BasicPrice; Price = garmentSewingDOItem.Price; }
public async Task <GarmentCuttingOut> Handle(PlaceGarmentCuttingOutCommand request, CancellationToken cancellationToken) { request.Items = request.Items.Where(item => item.IsSave == true && item.Details.Count() > 0).ToList(); GarmentCuttingOut garmentCuttingOut = new GarmentCuttingOut( Guid.NewGuid(), GenerateCutOutNo(request), request.CuttingOutType, new UnitDepartmentId(request.UnitFrom.Id), request.UnitFrom.Code, request.UnitFrom.Name, request.CuttingOutDate.GetValueOrDefault(), request.RONo, request.Article, new UnitDepartmentId(request.Unit.Id), request.Unit.Code, request.Unit.Name, new GarmentComodityId(request.Comodity.Id), request.Comodity.Code, request.Comodity.Name ); GarmentSewingDO garmentSewingDO = new GarmentSewingDO( Guid.NewGuid(), GenerateSewingDONo(request), garmentCuttingOut.Identity, new UnitDepartmentId(request.UnitFrom.Id), request.UnitFrom.Code, request.UnitFrom.Name, 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, request.CuttingOutDate.GetValueOrDefault() ); Dictionary <Guid, double> cuttingInDetailToBeUpdated = new Dictionary <Guid, double>(); foreach (var item in request.Items) { GarmentCuttingOutItem garmentCuttingOutItem = new GarmentCuttingOutItem( Guid.NewGuid(), item.CuttingInId, item.CuttingInDetailId, garmentCuttingOut.Identity, new ProductId(item.Product.Id), item.Product.Code, item.Product.Name, item.DesignColor, item.TotalCuttingOutQuantity ); foreach (var detail in item.Details) { GarmentCuttingOutDetail garmentCuttingOutDetail = new GarmentCuttingOutDetail( Guid.NewGuid(), garmentCuttingOutItem.Identity, new SizeId(detail.Size.Id), detail.Size.Size, detail.Color.ToUpper(), 0, detail.CuttingOutQuantity, new UomId(detail.CuttingOutUom.Id), detail.CuttingOutUom.Unit, detail.BasicPrice, detail.Price ); if (cuttingInDetailToBeUpdated.ContainsKey(item.CuttingInDetailId)) { cuttingInDetailToBeUpdated[item.CuttingInDetailId] += detail.CuttingOutQuantity; } else { cuttingInDetailToBeUpdated.Add(item.CuttingInDetailId, detail.CuttingOutQuantity); } await _garmentCuttingOutDetailRepository.Update(garmentCuttingOutDetail); GarmentComodityPrice garmentComodityPrice = _garmentComodityPriceRepository.Query.Where(a => a.IsValid == true && a.UnitId == request.Unit.Id && a.ComodityId == request.Comodity.Id).OrderBy(o => o.ModifiedDate).Select(s => new GarmentComodityPrice(s)).Last(); double price = (detail.BasicPrice + ((double)garmentComodityPrice.Price * 25 / 100)) * detail.CuttingOutQuantity; GarmentSewingDOItem garmentSewingDOItem = new GarmentSewingDOItem( Guid.NewGuid(), garmentSewingDO.Identity, garmentCuttingOutDetail.Identity, garmentCuttingOutItem.Identity, new ProductId(item.Product.Id), item.Product.Code, item.Product.Name, item.DesignColor, new SizeId(detail.Size.Id), detail.Size.Size, detail.CuttingOutQuantity, new UomId(detail.CuttingOutUom.Id), detail.CuttingOutUom.Unit, detail.Color.ToUpper(), detail.CuttingOutQuantity, detail.BasicPrice, price ); await _garmentSewingDOItemRepository.Update(garmentSewingDOItem); } await _garmentCuttingOutItemRepository.Update(garmentCuttingOutItem); } foreach (var cuttingInDetail in cuttingInDetailToBeUpdated) { var garmentCuttingInDetail = _garmentCuttingInDetailRepository.Query.Where(x => x.Identity == cuttingInDetail.Key).Select(s => new GarmentCuttingInDetail(s)).Single(); garmentCuttingInDetail.SetRemainingQuantity(garmentCuttingInDetail.RemainingQuantity - cuttingInDetail.Value); garmentCuttingInDetail.Modify(); await _garmentCuttingInDetailRepository.Update(garmentCuttingInDetail); } await _garmentCuttingOutRepository.Update(garmentCuttingOut); await _garmentSewingDORepository.Update(garmentSewingDO); _storage.Save(); return(garmentCuttingOut); }