public async Task <int> Update(int id, InputShippingViewModel 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.ShippingType, viewModel.ShippingProductionOrders.Select(s => new DyeingPrintingAreaInputProductionOrderModel(viewModel.Area, s.DeliveryOrder.Id, s.DeliveryOrder.No, s.ProductionOrder.Id, s.ProductionOrder.No, s.ProductionOrder.Type, s.ProductionOrder.OrderQuantity, s.Buyer, s.Construction, s.PackingType, s.Color, s.Motif, s.Grade, s.InputQtyPacking, s.Packing, s.InputQuantity, s.UomUnit, s.HasOutputDocument, s.InputQuantity, s.Unit, s.BuyerId, s.DyeingPrintingAreaInputProductionOrderId, s.Material.Id, s.Material.Name, s.MaterialConstruction.Id, s.MaterialConstruction.Name, s.MaterialWidth, s.CartNo, s.Remark, s.ProcessType.Id, s.ProcessType.Name, s.YarnMaterial.Id, s.YarnMaterial.Name, s.ProductSKUId, s.FabricSKUId, s.ProductSKUCode, s.HasPrintingProductSKU, s.ProductPackingId, s.FabricPackingId, s.ProductPackingCode, s.HasPrintingProductPacking, s.PackingLength, s.InputQuantity, s.InputQtyPacking, s.DeliveryOrderRetur.Id, s.DeliveryOrderRetur.No, s.FinishWidth, s.DateIn) { Id = s.Id }).ToList()); var deletedData = dbModel.DyeingPrintingAreaInputProductionOrders.Where(s => !s.HasOutputDocument && !viewModel.ShippingProductionOrders.Any(d => d.Id == s.Id)).ToList(); if (deletedData.Any(item => !item.HasOutputDocument && item.BalanceRemains != item.Balance)) { throw new Exception("Ada SPP yang Sudah Dibuat di Pengeluaran Shipping!"); } result = await _repository.UpdateShippingArea(id, model, dbModel); foreach (var item in deletedData) { var movementModel = new DyeingPrintingAreaMovementModel(dbModel.Date, dbModel.Area, DyeingPrintingArea.IN, dbModel.Id, dbModel.BonNo, item.ProductionOrderId, item.ProductionOrderNo, item.CartNo, item.Buyer, item.Construction, item.Unit, item.Color, item.Motif, item.UomUnit, item.Balance * -1, item.Id, item.ProductionOrderType, item.Grade, null, item.PackagingType, item.InputPackagingQty * -1, item.PackagingUnit, item.PackagingLength); result += await _movementRepository.InsertAsync(movementModel); } return(result); }
private InputShippingViewModel MapToViewModel(DyeingPrintingAreaInputModel model) { var vm = new InputShippingViewModel() { Active = model.Active, Id = model.Id, Area = model.Area, BonNo = model.BonNo, CreatedAgent = model.CreatedAgent, CreatedBy = model.CreatedBy, CreatedUtc = model.CreatedUtc, Date = model.Date, DeletedAgent = model.DeletedAgent, DeletedBy = model.DeletedBy, Group = model.Group, DeletedUtc = model.DeletedUtc, IsDeleted = model.IsDeleted, LastModifiedAgent = model.LastModifiedAgent, LastModifiedBy = model.LastModifiedBy, LastModifiedUtc = model.LastModifiedUtc, Shift = model.Shift, ShippingType = model.ShippingType, ShippingProductionOrders = model.DyeingPrintingAreaInputProductionOrders.Select(s => new InputShippingProductionOrderViewModel() { Active = s.Active, LastModifiedUtc = s.LastModifiedUtc, Buyer = s.Buyer, BuyerId = s.BuyerId, CartNo = s.CartNo, Color = s.Color, Construction = s.Construction, CreatedAgent = s.CreatedAgent, CreatedBy = s.CreatedBy, CreatedUtc = s.CreatedUtc, DeletedAgent = s.DeletedAgent, DeletedBy = s.DeletedBy, DeletedUtc = s.DeletedUtc, Remark = s.Remark, PackingInstruction = s.PackingInstruction, Area = s.Area, HasOutputDocument = s.HasOutputDocument, Id = s.Id, IsDeleted = s.IsDeleted, LastModifiedAgent = s.LastModifiedAgent, LastModifiedBy = s.LastModifiedBy, Packing = s.PackagingUnit, Motif = s.Motif, Grade = s.Grade, DeliveryOrder = new DeliveryOrderSales() { Id = s.DeliveryOrderSalesId, No = s.DeliveryOrderSalesNo }, QtyPacking = s.PackagingQty, InputQtyPacking = s.InputPackagingQty, PackingType = s.PackagingType, Qty = s.Balance, InputQuantity = s.InputQuantity, ProductionOrder = new ProductionOrder() { Id = s.ProductionOrderId, No = s.ProductionOrderNo, OrderQuantity = s.ProductionOrderOrderQuantity, Type = s.ProductionOrderType }, DeliveryOrderRetur = new DeliveryOrderRetur() { Id = s.DeliveryOrderReturId, No = s.DeliveryOrderReturNo }, MaterialWidth = s.MaterialWidth, FinishWidth = s.FinishWidth, Material = new Material() { Id = s.MaterialId, Name = s.MaterialName }, MaterialConstruction = new MaterialConstruction() { Name = s.MaterialConstructionName, Id = s.MaterialConstructionId }, PackingLength = s.PackagingLength, ProcessType = new CommonViewModelObjectProperties.ProcessType() { Id = s.ProcessTypeId, Name = s.ProcessTypeName }, YarnMaterial = new CommonViewModelObjectProperties.YarnMaterial() { Id = s.YarnMaterialId, Name = s.YarnMaterialName }, Unit = s.Unit, UomUnit = s.UomUnit, ProductSKUId = s.ProductSKUId, FabricSKUId = s.FabricSKUId, ProductSKUCode = s.ProductSKUCode, HasPrintingProductSKU = s.HasPrintingProductSKU, ProductPackingId = s.ProductPackingId, FabricPackingId = s.FabricPackingId, ProductPackingCode = s.ProductPackingCode, HasPrintingProductPacking = s.HasPrintingProductPacking, DateIn = s.DateIn, DateOut = s.DateOut, }).ToList() }; return(vm); }
public async Task <int> Reject(InputShippingViewModel viewModel) { int result = 0; var groupedProductionOrders = viewModel.ShippingProductionOrders.GroupBy(s => s.Area); if (viewModel.ShippingType != DyeingPrintingArea.ZONAGUDANG) { return(result); } foreach (var item in groupedProductionOrders) { var model = _repository.GetDbSet().AsNoTracking() .FirstOrDefault(s => s.Area == item.Key && s.Date.Date == viewModel.Date.Date & s.Shift == viewModel.Shift); if (model == null) { int totalCurrentYearData = _repository.ReadAllIgnoreQueryFilter().Count(s => s.Area == item.Key && s.CreatedUtc.Year == viewModel.Date.Year); string bonNo = GenerateBonNo(totalCurrentYearData + 1, viewModel.Date, item.Key); model = new DyeingPrintingAreaInputModel(viewModel.Date, item.Key, viewModel.Shift, bonNo, viewModel.Group, item.Select(s => new DyeingPrintingAreaInputProductionOrderModel(item.Key, s.ProductionOrder.Id, s.ProductionOrder.No, s.ProductionOrder.Type, s.PackingInstruction, s.CartNo, s.Buyer, s.Construction, s.Unit, s.Color, s.Motif, s.UomUnit, s.InputQuantity, false, s.Packing, s.PackingType, s.InputQtyPacking, s.Grade, s.ProductionOrder.OrderQuantity, s.BuyerId, s.Id, s.Remark, s.InputQuantity, s.Material.Id, s.Material.Name, s.MaterialConstruction.Id, s.MaterialConstruction.Name, s.MaterialWidth, s.ProcessType.Id, s.ProcessType.Name, s.YarnMaterial.Id, s.YarnMaterial.Name, s.ProductSKUId, s.FabricSKUId, s.ProductSKUCode, s.HasPrintingProductSKU, s.ProductPackingId, s.FabricPackingId, s.ProductPackingCode, s.HasPrintingProductPacking, s.PackingLength, s.InputQuantity, s.InputQtyPacking, s.FinishWidth, s.DateIn)).ToList()); result = await _repository.InsertAsync(model); result += await _outputSPPRepository.UpdateFromInputAsync(item.Select(s => s.Id).ToList(), true, DyeingPrintingArea.TOLAK); foreach (var detail in item) { var itemModel = model.DyeingPrintingAreaInputProductionOrders.FirstOrDefault(s => s.DyeingPrintingAreaOutputProductionOrderId == detail.Id); result += await _productionOrderRepository.UpdateFromNextAreaInputAsync(detail.DyeingPrintingAreaInputProductionOrderId, detail.InputQuantity, detail.InputQtyPacking); var movementModel = new DyeingPrintingAreaMovementModel(viewModel.Date, item.Key, DyeingPrintingArea.IN, model.Id, model.BonNo, detail.ProductionOrder.Id, detail.ProductionOrder.No, detail.CartNo, detail.Buyer, detail.Construction, detail.Unit, detail.Color, detail.Motif, detail.UomUnit, detail.InputQuantity, itemModel.Id, detail.ProductionOrder.Type, detail.Grade, null, detail.PackingType, detail.InputQtyPacking, detail.Packing, detail.PackingLength); result += await _movementRepository.InsertAsync(movementModel); } } else { foreach (var detail in item) { var modelItem = new DyeingPrintingAreaInputProductionOrderModel(item.Key, detail.ProductionOrder.Id, detail.ProductionOrder.No, detail.ProductionOrder.Type, detail.PackingInstruction, detail.CartNo, detail.Buyer, detail.Construction, detail.Unit, detail.Color, detail.Motif, detail.UomUnit, detail.InputQuantity, false, detail.Packing, detail.PackingType, detail.InputQtyPacking, detail.Grade, detail.ProductionOrder.OrderQuantity, detail.BuyerId, detail.Id, detail.Remark, detail.InputQuantity, detail.Material.Id, detail.Material.Name, detail.MaterialConstruction.Id, detail.MaterialConstruction.Name, detail.MaterialWidth, detail.ProcessType.Id, detail.ProcessType.Name, detail.YarnMaterial.Id, detail.YarnMaterial.Name, detail.ProductSKUId, detail.FabricSKUId, detail.ProductSKUCode, detail.HasPrintingProductSKU, detail.ProductPackingId, detail.FabricPackingId, detail.ProductPackingCode, detail.HasPrintingProductPacking, detail.PackingLength, detail.InputQuantity, detail.InputQtyPacking, detail.FinishWidth, detail.DateIn); modelItem.DyeingPrintingAreaInputId = model.Id; result += await _productionOrderRepository.InsertAsync(modelItem); result += await _productionOrderRepository.UpdateFromNextAreaInputAsync(detail.DyeingPrintingAreaInputProductionOrderId, detail.InputQuantity, detail.InputQtyPacking); var movementModel = new DyeingPrintingAreaMovementModel(viewModel.Date, item.Key, DyeingPrintingArea.IN, model.Id, model.BonNo, detail.ProductionOrder.Id, detail.ProductionOrder.No, detail.CartNo, detail.Buyer, detail.Construction, detail.Unit, detail.Color, detail.Motif, detail.UomUnit, detail.InputQuantity, modelItem.Id, detail.ProductionOrder.Type, detail.Grade, null, detail.PackingType, detail.InputQtyPacking, detail.Packing, detail.PackingLength); result += await _movementRepository.InsertAsync(movementModel); } result += await _outputSPPRepository.UpdateFromInputAsync(item.Select(s => s.Id).ToList(), true, DyeingPrintingArea.TOLAK); } } return(result); }
public async Task <int> Create(InputShippingViewModel viewModel) { int result = 0; var model = _repository.GetDbSet().AsNoTracking() .FirstOrDefault(s => s.Area == DyeingPrintingArea.SHIPPING && s.Date.Date == viewModel.Date.Date & s.Shift == viewModel.Shift && s.ShippingType == viewModel.ShippingType); if (model == null) { int totalCurrentYearData = _repository.ReadAllIgnoreQueryFilter().Count(s => s.Area == DyeingPrintingArea.SHIPPING && s.CreatedUtc.Year == viewModel.Date.Year); string bonNo = GenerateBonNo(totalCurrentYearData + 1, viewModel.Date, viewModel.Area); model = new DyeingPrintingAreaInputModel(viewModel.Date, viewModel.Area, viewModel.Shift, bonNo, viewModel.Group, viewModel.ShippingType, viewModel.ShippingProductionOrders.Select(s => new DyeingPrintingAreaInputProductionOrderModel(viewModel.Area, s.DeliveryOrder.Id, s.DeliveryOrder.No, s.ProductionOrder.Id, s.ProductionOrder.No, s.ProductionOrder.Type, s.ProductionOrder.OrderQuantity, s.Buyer, s.Construction, s.PackingType, s.Color, s.Motif, s.Grade, s.InputQtyPacking, s.Packing, s.InputQuantity, s.UomUnit, false, s.InputQuantity, s.Unit, s.BuyerId, s.Id, s.Material.Id, s.Material.Name, s.MaterialConstruction.Id, s.MaterialConstruction.Name, s.MaterialWidth, s.CartNo, s.Remark, s.ProcessType.Id, s.ProcessType.Name, s.YarnMaterial.Id, s.YarnMaterial.Name, s.ProductSKUId, s.FabricSKUId, s.ProductSKUCode, s.HasPrintingProductSKU, s.ProductPackingId, s.FabricPackingId, s.ProductPackingCode, s.HasPrintingProductPacking, s.PackingLength, s.InputQuantity, s.InputQtyPacking, s.DeliveryOrderRetur.Id, s.DeliveryOrderRetur.No, s.FinishWidth, viewModel.Date)).ToList()); result = await _repository.InsertAsync(model); //result += await _outputRepository.UpdateFromInputAsync(viewModel.OutputId, true); if (viewModel.ShippingType == DyeingPrintingArea.ZONAGUDANG) { result += await _outputSPPRepository.UpdateFromInputAsync(viewModel.ShippingProductionOrders.Select(s => s.Id).ToList(), true, DyeingPrintingArea.TERIMA); } foreach (var item in model.DyeingPrintingAreaInputProductionOrders) { var itemVM = viewModel.ShippingProductionOrders.FirstOrDefault(s => s.Id == item.DyeingPrintingAreaOutputProductionOrderId); if (viewModel.ShippingType == DyeingPrintingArea.ZONAGUDANG) { result += await _productionOrderRepository.UpdateFromNextAreaInputAsync(itemVM.DyeingPrintingAreaInputProductionOrderId, item.InputQuantity, item.InputPackagingQty); } var movementModel = new DyeingPrintingAreaMovementModel(viewModel.Date, viewModel.Area, DyeingPrintingArea.IN, model.Id, model.BonNo, item.ProductionOrderId, item.ProductionOrderNo, item.CartNo, item.Buyer, item.Construction, item.Unit, item.Color, item.Motif, item.UomUnit, item.InputQuantity, item.Id, item.ProductionOrderType, item.Grade, null, item.PackagingType, item.InputPackagingQty, item.PackagingUnit, item.PackagingLength); result += await _movementRepository.InsertAsync(movementModel); } } else { foreach (var item in viewModel.ShippingProductionOrders) { var modelItem = new DyeingPrintingAreaInputProductionOrderModel(viewModel.Area, item.DeliveryOrder.Id, item.DeliveryOrder.No, item.ProductionOrder.Id, item.ProductionOrder.No, item.ProductionOrder.Type, item.ProductionOrder.OrderQuantity, item.Buyer, item.Construction, item.PackingType, item.Color, item.Motif, item.Grade, item.InputQtyPacking, item.Packing, item.InputQuantity, item.UomUnit, false, item.InputQuantity, item.Unit, item.BuyerId, item.Id, item.Material.Id, item.Material.Name, item.MaterialConstruction.Id, item.MaterialConstruction.Name, item.MaterialWidth, item.CartNo, item.Remark, 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.PackingLength, item.InputQuantity, item.InputQtyPacking, item.DeliveryOrderRetur.Id, item.DeliveryOrderRetur.No, item.FinishWidth, viewModel.Date); modelItem.DyeingPrintingAreaInputId = model.Id; result += await _productionOrderRepository.InsertAsync(modelItem); if (viewModel.ShippingType == DyeingPrintingArea.ZONAGUDANG) { result += await _productionOrderRepository.UpdateFromNextAreaInputAsync(item.DyeingPrintingAreaInputProductionOrderId, item.InputQuantity, item.InputQtyPacking); } var movementModel = new DyeingPrintingAreaMovementModel(viewModel.Date, viewModel.Area, DyeingPrintingArea.IN, model.Id, model.BonNo, item.ProductionOrder.Id, item.ProductionOrder.No, item.CartNo, item.Buyer, item.Construction, item.Unit, item.Color, item.Motif, item.UomUnit, item.InputQuantity, modelItem.Id, item.ProductionOrder.Type, item.Grade, null, item.PackingType, item.InputQtyPacking, item.Packing, item.PackingLength); result += await _movementRepository.InsertAsync(movementModel); } if (viewModel.ShippingType == DyeingPrintingArea.ZONAGUDANG) { result += await _outputSPPRepository.UpdateFromInputAsync(viewModel.ShippingProductionOrders.Select(s => s.Id).ToList(), true, DyeingPrintingArea.TERIMA); } } return(result); }