public async Task Should_Success_Update_Data() { var facade = new GarmentInvoiceFacade(_dbContext(GetCurrentMethod()), ServiceProvider); var facadeDO = new GarmentDeliveryOrderFacade(ServiceProvider, _dbContext(GetCurrentMethod())); GarmentInvoice data = await dataUtil(facade, GetCurrentMethod()).GetNewDataViewModel(USERNAME); GarmentInvoiceItem item = await dataUtil(facade, GetCurrentMethod()).GetNewDataItem(USERNAME); var ResponseUpdate = await facade.Update((int)data.Id, data, USERNAME); Assert.NotEqual(ResponseUpdate, 0); List <GarmentInvoiceItem> Newitems = new List <GarmentInvoiceItem>(data.Items); Newitems.Add(item); data.Items = Newitems; var ResponseUpdate1 = await facade.Update((int)data.Id, data, USERNAME); Assert.NotEqual(ResponseUpdate1, 0); //Newitems.Remove(newItem); //data.Items = Newitems; //var ResponseUpdate2 = await facade.Update((int)data.Id, data, USERNAME); //Assert.NotEqual(ResponseUpdate2, 0); }
public async void Should_Success_Update_Data() { var facade = new GarmentInvoiceFacade(_dbContext(GetCurrentMethod()), ServiceProvider); var facadeDO = new GarmentDeliveryOrderFacade(ServiceProvider, _dbContext(GetCurrentMethod())); GarmentInvoice data = await dataUtil(facade, GetCurrentMethod()).GetNewDataViewModel(USERNAME); var ResponseUpdate = await facade.Update((int)data.Id, data, USERNAME); Assert.NotEqual(ResponseUpdate, 0); var newItem = new GarmentInvoiceItem { DeliveryOrderId = It.IsAny <int>(), DODate = DateTimeOffset.Now, DeliveryOrderNo = "donos", ArrivalDate = DateTimeOffset.Now, TotalAmount = 2000, PaymentType = "type", PaymentMethod = "method", Details = new List <GarmentInvoiceDetail> { new GarmentInvoiceDetail { EPOId = It.IsAny <int>(), EPONo = "epono", IPOId = It.IsAny <int>(), PRItemId = It.IsAny <int>(), PRNo = "prno", RONo = "12343", ProductId = It.IsAny <int>(), ProductCode = "code", ProductName = "name", UomId = It.IsAny <int>(), UomUnit = "ROLL", DOQuantity = 40, PricePerDealUnit = 5000, PaymentDueDays = 2, POSerialNumber = "PM132434" } } }; List <GarmentInvoiceItem> Newitems = new List <GarmentInvoiceItem>(data.Items); Newitems.Add(newItem); data.Items = Newitems; var ResponseUpdate1 = await facade.Update((int)data.Id, data, USERNAME); Assert.NotEqual(ResponseUpdate, 0); }
public async Task Should_Success_Update_Data2() { var dbContext = _dbContext(GetCurrentMethod()); var facade = new GarmentInvoiceFacade(dbContext, ServiceProvider); var facadeDO = new GarmentDeliveryOrderFacade(ServiceProvider, dbContext); GarmentInvoice data = await dataUtil(facade, GetCurrentMethod()).GetNewDataViewModel(USERNAME); GarmentInvoiceItem item = await dataUtil(facade, GetCurrentMethod()).GetNewDataItem(USERNAME); var ResponseUpdate = await facade.Update((int)data.Id, data, USERNAME); Assert.NotEqual(ResponseUpdate, 0); List <GarmentInvoiceItem> Newitems = new List <GarmentInvoiceItem>(data.Items); Newitems.Add(item); data.Items = Newitems; var ResponseUpdate1 = await facade.Update((int)data.Id, data, USERNAME); Assert.NotEqual(ResponseUpdate, 0); dbContext.Entry(data).State = EntityState.Detached; foreach (var items in data.Items) { dbContext.Entry(items).State = EntityState.Detached; foreach (var detail in items.Details) { dbContext.Entry(detail).State = EntityState.Detached; } } var newData = dbContext.GarmentInvoices.AsNoTracking() .Include(m => m.Items) .ThenInclude(i => i.Details) .FirstOrDefault(m => m.Id == data.Id); newData.Items = newData.Items.Take(1).ToList(); var ResponseUpdate2 = await facade.Update((int)newData.Id, newData, USERNAME); Assert.NotEqual(ResponseUpdate2, 0); }
public async Task Should_Error_Update_Data() { var facade = new GarmentInvoiceFacade(_dbContext(GetCurrentMethod()), ServiceProvider); GarmentInvoice data = await dataUtil(facade, GetCurrentMethod()).GetNewData(USERNAME); List <GarmentInvoiceItem> item = new List <GarmentInvoiceItem>(data.Items); data.Items.Add(new GarmentInvoiceItem { DeliveryOrderId = It.IsAny <int>(), DODate = DateTimeOffset.Now, DeliveryOrderNo = "donos", ArrivalDate = DateTimeOffset.Now, TotalAmount = 2000, Details = null }); var ResponseUpdate = await facade.Update((int)data.Id, data, USERNAME); Assert.NotEqual(ResponseUpdate, 0); var newItem = new GarmentInvoiceItem { DeliveryOrderId = It.IsAny <int>(), DODate = DateTimeOffset.Now, DeliveryOrderNo = "dono", ArrivalDate = DateTimeOffset.Now, TotalAmount = 2000, Details = null }; List <GarmentInvoiceItem> Newitems = new List <GarmentInvoiceItem>(data.Items); Newitems.Add(newItem); data.Items = Newitems; Exception errorNullItems = await Assert.ThrowsAsync <Exception>(async() => await facade.Update((int)data.Id, data, USERNAME)); Assert.NotNull(errorNullItems.Message); }
public async Task <int> Update(int id, GarmentInvoice model, string user, int clientTimeZoneOffset = 7) { int Updated = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { if (model.Items != null) { double total = 0; HashSet <long> detailIds = GetGarmentInvoiceId(id); foreach (var itemId in detailIds) { GarmentInvoiceItem data = model.Items.FirstOrDefault(prop => prop.Id.Equals(itemId)); if (data == null) { GarmentInvoiceItem dataItem = dbContext.GarmentInvoiceItems.FirstOrDefault(prop => prop.Id.Equals(itemId)); EntityExtension.FlagForDelete(dataItem, user, USER_AGENT); var Details = dbContext.GarmentInvoiceDetails.Where(prop => prop.InvoiceItemId.Equals(itemId)).ToList(); GarmentDeliveryOrder deliveryOrder = dbContext.GarmentDeliveryOrders.FirstOrDefault(s => s.Id.Equals(dataItem.DeliveryOrderId)); deliveryOrder.IsInvoice = false; foreach (GarmentInvoiceDetail detail in Details) { EntityExtension.FlagForDelete(detail, user, USER_AGENT); } } else { EntityExtension.FlagForUpdate(data, user, USER_AGENT); } foreach (GarmentInvoiceItem item in model.Items) { total += item.TotalAmount; if (item.Id <= 0) { GarmentDeliveryOrder garmentDeliveryOrder = dbSetDeliveryOrder.FirstOrDefault(s => s.Id == item.DeliveryOrderId); if (garmentDeliveryOrder != null) { garmentDeliveryOrder.IsInvoice = true; } EntityExtension.FlagForCreate(item, user, USER_AGENT); } else { EntityExtension.FlagForUpdate(item, user, USER_AGENT); } foreach (GarmentInvoiceDetail detail in item.Details) { if (item.Id <= 0) { EntityExtension.FlagForCreate(detail, user, USER_AGENT); } else { EntityExtension.FlagForUpdate(detail, user, USER_AGENT); } } } } } EntityExtension.FlagForUpdate(model, user, USER_AGENT); this.dbSet.Update(model); Updated = await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Updated); }
public async Task <int> Update(int id, GarmentInvoice model, string user, int clientTimeZoneOffset = 7) { int Updated = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { if (model.Items != null) { double total = 0; HashSet <long> detailIds = GetGarmentInvoiceId(id); foreach (var itemId in detailIds) { GarmentInvoiceItem data = model.Items.FirstOrDefault(prop => prop.Id.Equals(itemId)); if (data == null) { GarmentInvoiceItem dataItem = dbContext.GarmentInvoiceItems.FirstOrDefault(prop => prop.Id.Equals(itemId)); EntityExtension.FlagForDelete(dataItem, user, USER_AGENT); var Details = dbContext.GarmentInvoiceDetails.Where(prop => prop.InvoiceItemId.Equals(itemId)).ToList(); GarmentDeliveryOrder deliveryOrder = dbContext.GarmentDeliveryOrders.FirstOrDefault(s => s.Id.Equals(dataItem.DeliveryOrderId)); deliveryOrder.IsInvoice = false; foreach (GarmentInvoiceDetail detail in Details) { EntityExtension.FlagForDelete(detail, user, USER_AGENT); } await _garmentDebtBalanceService.EmptyInvoice((int)dataItem.DeliveryOrderId); } else { EntityExtension.FlagForUpdate(data, user, USER_AGENT); } foreach (GarmentInvoiceItem item in model.Items) { total += item.TotalAmount; if (item.Id <= 0) { GarmentDeliveryOrder garmentDeliveryOrder = dbSetDeliveryOrder.FirstOrDefault(s => s.Id == item.DeliveryOrderId); if (garmentDeliveryOrder != null) { garmentDeliveryOrder.IsInvoice = true; } EntityExtension.FlagForCreate(item, user, USER_AGENT); var deliveryOrder = dbSetDeliveryOrder.FirstOrDefault(s => s.Id == item.DeliveryOrderId); if (deliveryOrder != null) { var amount = 0.0; var currencyAmount = 0.0; var vatAmount = 0.0; var currencyVATAmount = 0.0; var incomeTaxAmount = 0.0; var currencyIncomeTaxAmount = 0.0; if (model.CurrencyCode == "IDR") { amount = item.TotalAmount; if (model.IsPayVat) { vatAmount = item.TotalAmount * 0.1; } if (model.IsPayTax) { incomeTaxAmount = item.TotalAmount * model.IncomeTaxRate / 100; } } else { amount = item.TotalAmount * deliveryOrder.DOCurrencyRate.GetValueOrDefault(); currencyAmount = item.TotalAmount; if (model.IsPayVat) { vatAmount = amount * 0.1; currencyVATAmount = item.TotalAmount * 0.1; } if (model.IsPayTax) { incomeTaxAmount = amount * model.IncomeTaxRate / 100; currencyIncomeTaxAmount = item.TotalAmount * model.IncomeTaxRate / 100; } } await _garmentDebtBalanceService.UpdateFromInvoice((int)deliveryOrder.Id, new InvoiceFormDto((int)model.Id, model.InvoiceDate, model.InvoiceNo, amount, currencyAmount, vatAmount, incomeTaxAmount, model.IsPayVat, model.IsPayTax, currencyVATAmount, currencyIncomeTaxAmount, model.VatNo)); } } else { EntityExtension.FlagForUpdate(item, user, USER_AGENT); } foreach (GarmentInvoiceDetail detail in item.Details) { if (item.Id <= 0) { EntityExtension.FlagForCreate(detail, user, USER_AGENT); } else { EntityExtension.FlagForUpdate(detail, user, USER_AGENT); } } } } } EntityExtension.FlagForUpdate(model, user, USER_AGENT); this.dbSet.Update(model); Updated = await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Updated); }
public ReportIndexDto(GarmentDeliveryOrder garmentDeliveryOrders, GarmentBeacukaiItem deliveryOrderCustoms, GarmentDeliveryOrderItem deliveryOrderItems, GarmentInvoiceItem deliveryOrderInvoiceItems, GarmentInvoice deliveryOrderInvoices, GarmentExternalPurchaseOrder deliveryOrderExternalPurchaseOrders, GarmentInternNoteDetail deliveryOrderInternalNoteDetails, GarmentInternNoteItem deliveryOrderInternalNoteItems, GarmentInternNote deliveryOrderInternalNotes) { if (deliveryOrderCustoms != null) { CustomsArrivalDate = deliveryOrderCustoms.ArrivalDate; } if (deliveryOrderExternalPurchaseOrders != null) { SupplierId = deliveryOrderExternalPurchaseOrders.SupplierId; SupplierName = deliveryOrderExternalPurchaseOrders.SupplierName; IsImportSupplier = deliveryOrderExternalPurchaseOrders.SupplierImport; AccountingCategoryName = deliveryOrderExternalPurchaseOrders.Category; PurchasingCategoryName = deliveryOrderExternalPurchaseOrders.Category; } var dppAmount = 0.0; if (deliveryOrderInternalNoteDetails != null) { ProductName = deliveryOrderInternalNoteDetails.ProductName; InternalNoteQuantity = deliveryOrderInternalNoteDetails.Quantity; dppAmount = deliveryOrderInternalNoteDetails.PriceTotal; Total = dppAmount; } if (garmentDeliveryOrders != null) { GarmentDeliveryOrderId = (int)garmentDeliveryOrders.Id; GarmentDeliveryOrderNo = garmentDeliveryOrders.DONo; BillNo = garmentDeliveryOrders.BillNo; PaymentBill = garmentDeliveryOrders.PaymentBill; } if (deliveryOrderInvoices != null) { InvoiceId = (int)deliveryOrderInvoices.Id; InvoiceNo = deliveryOrderInvoices.InvoiceNo; VATNo = deliveryOrderInvoices.VatNo; var vatAmount = 0.0; if (deliveryOrderInvoices.UseVat && deliveryOrderInvoices.IsPayVat) { vatAmount = dppAmount * 0.1; Total += vatAmount; } var incomeTaxAmount = 0.0; if (deliveryOrderInvoices.UseIncomeTax && deliveryOrderInvoices.IsPayTax) { incomeTaxAmount = dppAmount * deliveryOrderInvoices.IncomeTaxRate / 100; Total += incomeTaxAmount; } VATAmount = vatAmount; IncomeTaxAmount = incomeTaxAmount; } }