public async Task <int> Update(int id, InputAvalTransformationViewModel viewModel) { int result = 0; var dbModel = await _repository.ReadByIdAsync(id); var model = new DyeingPrintingAreaInputModel(viewModel.Date, viewModel.Area, viewModel.Shift, viewModel.BonNo, viewModel.Group, viewModel.AvalType, viewModel.IsTransformedAval, viewModel.TotalQuantity, viewModel.TotalWeight, viewModel.AvalTransformationProductionOrders.Select(d => new DyeingPrintingAreaInputProductionOrderModel(viewModel.Area, d.BonNo, d.ProductionOrder.Id, d.ProductionOrder.No, d.ProductionOrder.Type, d.ProductionOrder.OrderQuantity, d.CartNo, d.Construction, d.Unit, d.Buyer, d.BuyerId, d.Color, d.Motif, d.AvalType, d.UomUnit, d.InputQuantity, d.HasOutputDocument, d.DyeingPrintingAreaInputProductionOrderId, d.Material.Id, d.Material.Name, d.MaterialConstruction.Id, d.MaterialConstruction.Name, d.MaterialWidth, d.Machine, d.ProcessType.Id, d.ProcessType.Name, d.YarnMaterial.Id, d.YarnMaterial.Name, d.ProductSKUId, d.FabricSKUId, d.ProductSKUCode, d.HasPrintingProductSKU, d.ProductPackingId, d.FabricPackingId, d.ProductPackingCode, d.HasPrintingProductPacking, d.InputQuantity, d.FinishWidth) { Id = d.Id }).ToList()); result = await _repository.UpdateAvalTransformationArea(id, model, dbModel); var diffAvalQuantity = dbModel.TotalAvalQuantity - model.TotalAvalQuantity; var diffAvalWeight = dbModel.TotalAvalWeight - model.TotalAvalWeight; var movementModel = new DyeingPrintingAreaMovementModel(viewModel.Date, viewModel.Area, DyeingPrintingArea.TRANSFORM, model.Id, model.BonNo, diffAvalQuantity * -1, diffAvalWeight * -1, model.AvalType); result += await _movementRepository.InsertAsync(movementModel); return(result); }
public async Task <int> Create(InputAvalTransformationViewModel viewModel) { int result = 0; var model = _repository.GetDbSet().AsNoTracking() .FirstOrDefault(s => s.Area == DyeingPrintingArea.GUDANGAVAL && s.Date.Date == viewModel.Date.Date & s.Shift == viewModel.Shift && s.AvalType == viewModel.AvalType && s.IsTransformedAval); viewModel.AvalTransformationProductionOrders = viewModel.AvalTransformationProductionOrders.Where(s => s.IsSave).ToList(); if (model == null) { int totalCurrentYearData = _repository.ReadAllIgnoreQueryFilter().Count(s => s.IsTransformedAval && s.Area == DyeingPrintingArea.GUDANGAVAL && s.CreatedUtc.Year == viewModel.Date.Year); string bonNo = GenerateBonNo(totalCurrentYearData + 1, viewModel.Date); model = new DyeingPrintingAreaInputModel(viewModel.Date, viewModel.Area, viewModel.Shift, bonNo, viewModel.Group, viewModel.AvalType, true, viewModel.TotalQuantity, viewModel.TotalWeight, viewModel.AvalTransformationProductionOrders.Select(d => new DyeingPrintingAreaInputProductionOrderModel(viewModel.Area, d.BonNo, d.ProductionOrder.Id, d.ProductionOrder.No, d.ProductionOrder.Type, d.ProductionOrder.OrderQuantity, d.CartNo, d.Construction, d.Unit, d.Buyer, d.BuyerId, d.Color, d.Motif, d.AvalType, d.UomUnit, d.InputQuantity, false, d.Id, d.Material.Id, d.Material.Name, d.MaterialConstruction.Id, d.MaterialConstruction.Name, d.MaterialWidth, d.Machine, d.ProcessType.Id, d.ProcessType.Name, d.YarnMaterial.Id, d.YarnMaterial.Name, d.ProductSKUId, d.FabricSKUId, d.ProductSKUCode, d.HasPrintingProductSKU, d.ProductPackingId, d.FabricPackingId, d.ProductPackingCode, d.HasPrintingProductPacking, d.InputQuantity, d.FinishWidth)).ToList()); result = await _repository.InsertAsync(model); var movementModel = new DyeingPrintingAreaMovementModel(viewModel.Date, viewModel.Area, DyeingPrintingArea.TRANSFORM, model.Id, model.BonNo, model.TotalAvalQuantity, model.TotalAvalWeight, model.AvalType); result += await _movementRepository.InsertAsync(movementModel); foreach (var item in model.DyeingPrintingAreaInputProductionOrders) { var itemVM = viewModel.AvalTransformationProductionOrders.FirstOrDefault(s => s.Id == item.DyeingPrintingAreaOutputProductionOrderId); result += await _inputProductionOrderRepository.UpdateFromOutputAsync(item.DyeingPrintingAreaOutputProductionOrderId, true); } } else { foreach (var item in viewModel.AvalTransformationProductionOrders) { var modelItem = new DyeingPrintingAreaInputProductionOrderModel(viewModel.Area, item.BonNo, item.ProductionOrder.Id, item.ProductionOrder.No, item.ProductionOrder.Type, item.ProductionOrder.OrderQuantity, item.CartNo, item.Construction, item.Unit, item.Buyer, item.BuyerId, item.Color, item.Motif, item.AvalType, item.UomUnit, item.InputQuantity, false, item.Id, item.Material.Id, item.Material.Name, item.MaterialConstruction.Id, item.MaterialConstruction.Name, item.MaterialWidth, item.Machine, item.ProcessType.Id, item.ProcessType.Name, item.YarnMaterial.Id, item.YarnMaterial.Name, item.ProductSKUId, item.FabricSKUId, item.ProductSKUCode, item.HasPrintingProductSKU, item.ProductPackingId, item.FabricPackingId, item.ProductPackingCode, item.HasPrintingProductPacking, item.InputQuantity, item.FinishWidth); modelItem.DyeingPrintingAreaInputId = model.Id; result += await _inputProductionOrderRepository.InsertAsync(modelItem); result += await _inputProductionOrderRepository.UpdateFromOutputAsync(item.Id, true); } var movementModel = new DyeingPrintingAreaMovementModel(viewModel.Date, viewModel.Area, DyeingPrintingArea.TRANSFORM, model.Id, model.BonNo, viewModel.TotalQuantity, viewModel.TotalWeight, viewModel.AvalType); result += await _movementRepository.InsertAsync(movementModel); result += await _repository.UpdateHeaderAvalTransform(model, viewModel.TotalQuantity, viewModel.TotalWeight); } return(result); }
private InputAvalTransformationViewModel MapToViewModel(DyeingPrintingAreaInputModel model) { var vm = new InputAvalTransformationViewModel() { Active = model.Active, TotalWeight = model.TotalAvalWeight, TotalQuantity = model.TotalAvalQuantity, AvalType = model.AvalType, Area = model.Area, BonNo = model.BonNo, CreatedAgent = model.CreatedAgent, CreatedBy = model.CreatedBy, CreatedUtc = model.CreatedUtc, Date = model.Date, DeletedAgent = model.DeletedAgent, DeletedBy = model.DeletedBy, DeletedUtc = model.DeletedUtc, Group = model.Group, Id = model.Id, IsDeleted = model.IsDeleted, LastModifiedAgent = model.LastModifiedAgent, LastModifiedBy = model.LastModifiedBy, LastModifiedUtc = model.LastModifiedUtc, IsTransformedAval = model.IsTransformedAval, Shift = model.Shift, AvalTransformationProductionOrders = model.DyeingPrintingAreaInputProductionOrders.Select(d => new InputAvalTransformationProductionOrderViewModel() { Active = d.Active, AvalType = d.AvalType, BonNo = d.InputAvalBonNo, Machine = d.Machine, Buyer = d.Buyer, BuyerId = d.BuyerId, CartNo = d.CartNo, Color = d.Color, Construction = d.Construction, CreatedAgent = d.CreatedAgent, CreatedBy = d.CreatedBy, CreatedUtc = d.CreatedUtc, DeletedAgent = d.DeletedAgent, DeletedBy = d.DeletedBy, DeletedUtc = d.DeletedUtc, DyeingPrintingAreaInputProductionOrderId = d.DyeingPrintingAreaOutputProductionOrderId, Id = d.Id, IsDeleted = d.IsDeleted, LastModifiedAgent = d.LastModifiedAgent, LastModifiedBy = d.LastModifiedBy, LastModifiedUtc = d.LastModifiedUtc, Motif = d.Motif, MaterialWidth = d.MaterialWidth, FinishWidth = d.FinishWidth, Material = new Material() { Id = d.MaterialId, Name = d.MaterialName }, MaterialConstruction = new MaterialConstruction() { Name = d.MaterialConstructionName, Id = d.MaterialConstructionId }, ProcessType = new CommonViewModelObjectProperties.ProcessType() { Id = d.ProcessTypeId, Name = d.ProcessTypeName }, YarnMaterial = new CommonViewModelObjectProperties.YarnMaterial() { Id = d.YarnMaterialId, Name = d.YarnMaterialName }, ProductionOrder = new ProductionOrder() { Id = d.ProductionOrderId, No = d.ProductionOrderNo, OrderQuantity = d.ProductionOrderOrderQuantity, Type = d.ProductionOrderType }, Quantity = d.Balance, InputQuantity = d.InputQuantity, Unit = d.Unit, UomUnit = d.UomUnit, HasOutputDocument = d.HasOutputDocument, ProductSKUId = d.ProductSKUId, FabricSKUId = d.FabricSKUId, ProductSKUCode = d.ProductSKUCode, HasPrintingProductSKU = d.HasPrintingProductSKU, ProductPackingId = d.ProductPackingId, FabricPackingId = d.FabricPackingId, ProductPackingCode = d.ProductPackingCode, HasPrintingProductPacking = d.HasPrintingProductPacking }).ToList() }; return(vm); }