public async Task Should_Success_Update_Data3() { GarmentDeliveryOrderFacade facade = new GarmentDeliveryOrderFacade(GetServiceProvider().Object, _dbContext(GetCurrentMethod())); var model = await dataUtil(facade, GetCurrentMethod()).GetTestData3(); GarmentDeliveryOrderViewModel viewModel = new GarmentDeliveryOrderViewModel { Id = model.Id, supplier = new SupplierViewModel(), internNo = "test", billNo = "test", paymentBill = "test", totalAmount = 1, shipmentType = "test", shipmentNo = "test", paymentMethod = "test", paymentType = "test", docurrency = new CurrencyViewModel(), items = new List <GarmentDeliveryOrderItemViewModel> { new GarmentDeliveryOrderItemViewModel { purchaseOrderExternal = new PurchaseOrderExternal { Id = 1, no = "test" }, paymentDueDays = 1, currency = new CurrencyViewModel(), fulfillments = new List <GarmentDeliveryOrderFulfillmentViewModel> { new GarmentDeliveryOrderFulfillmentViewModel { pOId = 1, pOItemId = 1, conversion = 0, quantityCorrection = 0, pricePerDealUnit = 0, priceTotalCorrection = 0, isSave = true } } }, new GarmentDeliveryOrderItemViewModel { Id = model.Items.ElementAt(0).Id, purchaseOrderExternal = new PurchaseOrderExternal { Id = 1, no = "test" }, paymentDueDays = 1, currency = new CurrencyViewModel(), fulfillments = new List <GarmentDeliveryOrderFulfillmentViewModel> { new GarmentDeliveryOrderFulfillmentViewModel { Id = model.Items.ElementAt(0).Details.ElementAt(0).Id, pOId = 1, pOItemId = 1, conversion = 0, quantityCorrection = 0, pricePerDealUnit = 0, priceTotalCorrection = 0, isSave = true } } }, } }; List <GarmentDeliveryOrderItem> item = new List <GarmentDeliveryOrderItem>(model.Items); List <GarmentDeliveryOrderDetail> detail = new List <GarmentDeliveryOrderDetail>(item[0].Details); model.Items.Add(new GarmentDeliveryOrderItem { EPOId = 1, EPONo = "test", PaymentDueDays = 1, CurrencyCode = "test", CurrencyId = 1, Details = new List <GarmentDeliveryOrderDetail> { new GarmentDeliveryOrderDetail { POId = detail[0].POId, POItemId = detail[0].POItemId, Conversion = detail[0].Conversion, QuantityCorrection = detail[0].QuantityCorrection, PricePerDealUnit = detail[0].PricePerDealUnit, PriceTotalCorrection = detail[0].PriceTotalCorrection, DOQuantity = detail[0].DOQuantity, EPOItemId = detail[0].EPOItemId, } } }); var Response = await facade.Update((int)model.Id, viewModel, model, USERNAME); Assert.NotEqual(Response, 0); }
public void Should_Success_Validate_Data_Item() { GarmentDeliveryOrderViewModel nullViewModel = new GarmentDeliveryOrderViewModel { supplier = new SupplierViewModel { Id = 1, Code = "test", Import = true, Name = "test" } }; Assert.True(nullViewModel.Validate(null).Count() > 0); GarmentDeliveryOrderViewModel viewModel = new GarmentDeliveryOrderViewModel { supplier = new SupplierViewModel { Id = 1, Code = "test", Import = true, Name = "test" }, internNo = "test", billNo = "test", paymentBill = "test", totalAmount = 1, shipmentType = "test", shipmentNo = "test", paymentMethod = "test", paymentType = "test", docurrency = new CurrencyViewModel(), items = new List <GarmentDeliveryOrderItemViewModel> { new GarmentDeliveryOrderItemViewModel { purchaseOrderExternal = null, paymentDueDays = 1, currency = new CurrencyViewModel(), fulfillments = new List <GarmentDeliveryOrderFulfillmentViewModel> { new GarmentDeliveryOrderFulfillmentViewModel { pOId = 1, pOItemId = 1, conversion = 2, purchaseOrderUom = new UomViewModel() { Id = "1", Unit = "test" }, smallUom = new UomViewModel() { Id = "1", Unit = "test" } } } } } }; Assert.True(viewModel.Validate(null).Count() > 0); }
public void Should_Success_Validate_Data_Fulfillment_With_Conversion_0() { GarmentDeliveryOrderViewModel nullViewModel = new GarmentDeliveryOrderViewModel { supplier = new SupplierViewModel { Id = 1, Code = "test", Import = true, Name = "test" } }; Assert.True(nullViewModel.Validate(null).Count() > 0); GarmentDeliveryOrderViewModel viewModel = new GarmentDeliveryOrderViewModel { supplier = new SupplierViewModel { Id = 1, Code = "test", Import = true, Name = "test" }, internNo = "test", billNo = "test", paymentBill = "test", totalAmount = 1, shipmentType = "test", shipmentNo = "test", paymentMethod = "test", paymentType = "test", docurrency = new CurrencyViewModel(), items = new List <GarmentDeliveryOrderItemViewModel> { new GarmentDeliveryOrderItemViewModel { purchaseOrderExternal = new PurchaseOrderExternal { Id = 1, no = "test" }, paymentDueDays = 1, currency = new CurrencyViewModel(), fulfillments = new List <GarmentDeliveryOrderFulfillmentViewModel> { new GarmentDeliveryOrderFulfillmentViewModel { pOId = 1, pOItemId = 1, conversion = 0, quantityCorrection = 0, pricePerDealUnit = 0, priceTotalCorrection = 0, } } } } }; Assert.True(viewModel.Validate(null).Count() > 0); }
public async Task <int> Update(int id, GarmentDeliveryOrderViewModel vm, GarmentDeliveryOrder m, string user, int clientTimeZoneOffset = 7) { int Updated = 0; using (var transaction = dbContext.Database.BeginTransaction()) { try { var oldM = this.dbSet.AsNoTracking() .Include(d => d.Items) .ThenInclude(d => d.Details) .SingleOrDefault(pr => pr.Id == id && !pr.IsDeleted); if (oldM != null && oldM.Id == id) { EntityExtension.FlagForUpdate(m, user, USER_AGENT); foreach (var vmItem in vm.items) { foreach (var modelItem in m.Items.Where(i => i.Id == vmItem.Id)) { foreach (var item in oldM.Items.Where(i => i.EPOId == modelItem.EPOId).ToList()) { EntityExtension.FlagForUpdate(modelItem, user, USER_AGENT); CurrencyViewModel garmentCurrencyViewModel = GetCurrency(item.CurrencyCode, m.DODate); m.DOCurrencyId = garmentCurrencyViewModel.Id; m.DOCurrencyCode = garmentCurrencyViewModel.Code; m.DOCurrencyRate = garmentCurrencyViewModel.Rate; foreach (var vmDetail in vmItem.fulfillments) { foreach (var modelDetail in modelItem.Details.Where(j => j.Id == vmDetail.Id)) { foreach (var detail in item.Details.Where(j => j.EPOItemId == modelDetail.EPOItemId).ToList()) { GarmentInternalPurchaseOrder internalPurchaseOrder = this.dbContext.GarmentInternalPurchaseOrders.FirstOrDefault(s => s.Id.Equals(modelDetail.POId)); GarmentInternalPurchaseOrderItem internalPurchaseOrderItem = this.dbContext.GarmentInternalPurchaseOrderItems.FirstOrDefault(s => s.GPOId.Equals(modelDetail.POId)); GarmentExternalPurchaseOrderItem externalPurchaseOrderItem = this.dbContext.GarmentExternalPurchaseOrderItems.FirstOrDefault(s => s.Id.Equals(modelDetail.EPOItemId)); if (vmDetail.isSave == false) { externalPurchaseOrderItem.DOQuantity = externalPurchaseOrderItem.DOQuantity - detail.DOQuantity; } else { externalPurchaseOrderItem.DOQuantity = externalPurchaseOrderItem.DOQuantity - detail.DOQuantity + modelDetail.DOQuantity; modelDetail.POItemId = (int)internalPurchaseOrderItem.Id; modelDetail.PRItemId = internalPurchaseOrderItem.GPRItemId; modelDetail.UnitId = internalPurchaseOrder.UnitId; modelDetail.UnitCode = internalPurchaseOrder.UnitCode; modelDetail.QuantityCorrection = modelDetail.DOQuantity; modelDetail.PricePerDealUnitCorrection = modelDetail.PricePerDealUnit; modelDetail.PriceTotalCorrection = modelDetail.PriceTotal; } if (externalPurchaseOrderItem.ReceiptQuantity == 0) { if (externalPurchaseOrderItem.DOQuantity == 0) { GarmentPurchaseRequestItem purchaseRequestItem = this.dbContext.GarmentPurchaseRequestItems.FirstOrDefault(s => s.Id.Equals(modelDetail.PRItemId)); purchaseRequestItem.Status = "Sudah diorder ke Supplier"; internalPurchaseOrderItem.Status = "Sudah diorder ke Supplier"; } else if (externalPurchaseOrderItem.DOQuantity > 0 && externalPurchaseOrderItem.DOQuantity < externalPurchaseOrderItem.DealQuantity) { internalPurchaseOrderItem.Status = "Barang sudah datang parsial"; } else if (externalPurchaseOrderItem.DOQuantity > 0 && externalPurchaseOrderItem.DOQuantity >= externalPurchaseOrderItem.DealQuantity) { internalPurchaseOrderItem.Status = "Barang Sudah Datang Semua"; } } EntityExtension.FlagForUpdate(modelDetail, user, USER_AGENT); } } } } } } dbSet.Update(m); Updated = await dbContext.SaveChangesAsync(); transaction.Commit(); } else { throw new Exception("Invalid Id"); } } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Updated); }