public void insertStorage(UnitReceiptNote unitReceiptNote, string user, string type) { List <object> items = new List <object>(); foreach (var item in unitReceiptNote.Items) { items.Add(new { productId = item.ProductId, productcode = item.ProductCode, productname = item.ProductName, uomId = item.UomId, uom = item.Uom, quantity = item.ReceiptQuantity, remark = item.ProductRemark }); } var data = new { storageId = unitReceiptNote.StorageId, storagecode = unitReceiptNote.StorageCode, storagename = unitReceiptNote.StorageName, referenceNo = unitReceiptNote.URNNo, referenceType = "Bon Terima Unit - " + unitReceiptNote.UnitName, type = type, remark = unitReceiptNote.Remark, date = unitReceiptNote.ReceiptDate, items = items }; string inventoryUri = "inventory-documents"; IHttpClientService httpClient = (IHttpClientService)this.serviceProvider.GetService(typeof(IHttpClientService)); var response = httpClient.PostAsync($"{APIEndpoint.Inventory}{inventoryUri}", new StringContent(JsonConvert.SerializeObject(data).ToString(), Encoding.UTF8, General.JsonMediaType)).Result; response.EnsureSuccessStatusCode(); }
public async Task Should_Error_Update_Invalid_Data() { UnitReceiptNote model = await DataUtil.GetTestData("dev2"); var responseGetById = await this.Client.GetAsync($"{URI}/{model.Id}"); var json = responseGetById.Content.ReadAsStringAsync().Result; Dictionary <string, object> result = JsonConvert.DeserializeObject <Dictionary <string, object> >(json.ToString()); Assert.True(result.ContainsKey("apiVersion")); Assert.True(result.ContainsKey("message")); Assert.True(result.ContainsKey("data")); Assert.True(result["data"].GetType().Name.Equals("JObject")); UnitReceiptNoteViewModel viewModel = JsonConvert.DeserializeObject <UnitReceiptNoteViewModel>(result.GetValueOrDefault("data").ToString()); viewModel.date = DateTimeOffset.MinValue; viewModel.supplier = null; viewModel.unit = null; viewModel.items = new List <UnitReceiptNoteItemViewModel> { }; var response = await this.Client.PutAsync($"{URI}/{model.Id}", new StringContent(JsonConvert.SerializeObject(viewModel).ToString(), Encoding.UTF8, MediaType)); Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); }
public async void Should_Success_Get_Report_Data() { ExternalPurchaseOrder externalPurchaseOrder = await EPODataUtil.GetNewData("unit-test"); await EPOFacade.Create(externalPurchaseOrder, "unit-test", 7); DeliveryOrder deliveryOrder = await DODataUtil.GetNewData("unit-test"); await DOFacade.Create(deliveryOrder, "unit-test"); UnitReceiptNote urn = await DataUtil.GetNewDatas("unit-test"); await Facade.Create(urn, "unit-test"); //UnitPaymentOrder upo = await UPODataUtil.GetTestData(); //await UPOFacade.Create(upo, "unit-test", false, 7); var DateFrom = DateTime.Now; DateFrom = DateFrom.Date; var DateTo = DateTime.Now; DateTo = DateTo.Date; var Response = IPRFacade.GetReport(null, null, null, DateFrom, DateTo); Assert.NotEqual(Response.Item2, 0); }
private void SetPaid(UnitPaymentOrderItem item, bool isPaid, string username) { UnitReceiptNote unitReceiptNote = dbContext.UnitReceiptNotes.Single(m => m.Id == item.URNId); unitReceiptNote.IsPaid = isPaid; EntityExtension.FlagForUpdate(unitReceiptNote, username, USER_AGENT); }
public async void Should_Success_Update_Data() { UnitReceiptNote model = await DataUtil.GetTestData("Unit Test"); foreach (var item in model.Items) { item.ReceiptQuantity -= 1; } var Response = await Facade.Update((int)model.Id, model, "Unit Test"); Assert.NotEqual(Response, 0); UnitReceiptNoteItem oldItem = model.Items.FirstOrDefault(); UnitReceiptNoteItem newItem = model.Items.FirstOrDefault(); newItem.ProductCode = "code02"; newItem.ProductId = "code02"; newItem.ProductName = "code02"; newItem.Id = 0; model.Items.Add(newItem); var ResponseAddItem = await Facade.Update((int)model.Id, model, "Unit Test"); Assert.NotEqual(ResponseAddItem, 0); model.Items.Remove(oldItem); oldItem.Id = 0; model.Items.Add(oldItem); var ResponseRemoveItemDetail = await Facade.Update((int)model.Id, model, "Unit Test"); Assert.NotEqual(ResponseRemoveItemDetail, 0); }
public async Task <IActionResult> Put([FromRoute] int id, [FromBody] UnitReceiptNoteViewModel vm) { identityService.Token = Request.Headers["Authorization"].First().Replace("Bearer ", ""); identityService.Username = User.Claims.Single(p => p.Type.Equals("username")).Value; UnitReceiptNote m = _mapper.Map <UnitReceiptNote>(vm); IValidateService validateService = (IValidateService)_serviceProvider.GetService(typeof(IValidateService)); try { validateService.Validate(vm); int result = await _facade.Update(id, m, identityService.Username); return(NoContent()); } catch (ServiceValidationExeption e) { Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.BAD_REQUEST_STATUS_CODE, General.BAD_REQUEST_MESSAGE) .Fail(e); return(BadRequest(Result)); } catch (Exception e) { Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.INTERNAL_ERROR_STATUS_CODE, e.Message) .Fail(); return(StatusCode(General.INTERNAL_ERROR_STATUS_CODE, Result)); } }
public async void Should_Success_Get_Report_Data() { var serviceProvider = new Mock <IServiceProvider>(); ExternalPurchaseOrder externalPurchaseOrder = await EPODataUtil.GetTestData("Unit test"); DeliveryOrder deliveryOrder = await DODataUtil.GetTestData("unit-test"); UnitReceiptNote urn = await DataUtil.GetTestData3("unit-test"); UnitReceiptNoteFacade facade = new UnitReceiptNoteFacade(serviceProvider.Object, _dbContext(GetCurrentMethod())); await _dataUtil(facade, GetCurrentMethod()).GetTestData("unit-test"); //UnitPaymentOrder upo = await UPODataUtil.GetTestData(); //await UPOFacade.Create(upo, "unit-test", false, 7); var DateFrom = DateTime.Now; DateFrom = DateFrom.Date; var DateTo = DateTime.Now; DateTo = DateTo.Date; if (externalPurchaseOrder != null && deliveryOrder != null && urn != null) { var Response = Facade.GetReport(null, null, null, DateFrom, DateTo); Assert.NotEqual(Response.Item2, 0); } }
public async Task Should_Success_Get_Data_By_Id() { UnitReceiptNote model = await DataUtil.GetTestData("dev2"); var response = await this.Client.GetAsync($"{URI}/{model.Id}"); Assert.Equal(HttpStatusCode.OK, response.StatusCode); }
public async void Should_Success_Get_Report_Data_Excel_Null_Parameter() { UnitReceiptNote model = await DataUtil.GetTestData("Unit test"); var Response = Facade.GenerateExcel("", "", "", "", "", null, null, 7); Assert.IsType(typeof(System.IO.MemoryStream), Response); }
public async Task Should_Success_Get_Report_Generate_Data_Excel_Not_Found() { UnitReceiptNote model = await DataUtil.GetTestData("Unit test"); var Response = FacadeGenerateData.GenerateExcel(DateTime.MinValue, DateTime.MinValue, 7); Assert.IsType(typeof(System.IO.MemoryStream), Response); }
public async void Should_Success_Create_Data() { UnitReceiptNote model = await DataUtil.GetNewData("Unit test"); var Response = await Facade.Create(model, "Unit Test"); Assert.NotEqual(Response, 0); }
public async void Should_Success_Delete_Data() { UnitReceiptNote model = await DataUtil.GetTestData("Unit test"); var Response = Facade.Delete((int)model.Id, "Unit Test"); Assert.NotEqual(Response, 0); }
public async void Should_Success_Get_Report_Data_Null_Parameter() { UnitReceiptNote model = await DataUtil.GetTestData("Unit test"); var Response = Facade.GetReport("", "", "", "", "", null, null, 1, 25, "{}", 7); Assert.NotEqual(Response.Item2, 0); }
public async void Should_Success_Get_Data_By_Id() { UnitReceiptNote model = await DataUtil.GetTestData("Unit test"); var Response = Facade.ReadById((int)model.Id); Assert.NotNull(Response); }
public async Task <IActionResult> Post([FromBody] UnitReceiptNoteViewModel vm) { identityService.Token = Request.Headers["Authorization"].First().Replace("Bearer ", ""); identityService.Username = User.Claims.Single(p => p.Type.Equals("username")).Value; if (vm.supplier != null) { if (vm.no == "" || vm.no == null) { if (vm.supplier.import == true) { vm.no = "BPI"; } else { vm.no = "BPL"; } } } UnitReceiptNote m = _mapper.Map <UnitReceiptNote>(vm); IValidateService validateService = (IValidateService)_serviceProvider.GetService(typeof(IValidateService)); try { validateService.Validate(vm); int result = await _facade.Create(m, identityService.Username); Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.CREATED_STATUS_CODE, General.OK_MESSAGE) .Ok(); return(Created(String.Concat(Request.Path, "/", 0), Result)); } catch (ServiceValidationExeption e) { Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.BAD_REQUEST_STATUS_CODE, General.BAD_REQUEST_MESSAGE) .Fail(e); return(BadRequest(Result)); } catch (Exception e) { Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.INTERNAL_ERROR_STATUS_CODE, e.Message) .Fail(); return(StatusCode(General.INTERNAL_ERROR_STATUS_CODE, Result)); } }
public async Task Should_Success_Get_Data_PDF_By_Id() { UnitReceiptNote model = await DataUtil.GetTestData("dev2"); HttpRequestMessage requestMessage = new HttpRequestMessage() { RequestUri = new Uri($"{Client.BaseAddress}{URI}/{model.Id}"), Method = HttpMethod.Get }; requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(MediaTypePdf)); requestMessage.Headers.Add("x-timezone-offset", "0"); var response = await this.Client.SendAsync(requestMessage); Assert.Equal(HttpStatusCode.OK, response.StatusCode); }
public async void Should_Success_Get_Report_Total_Purchase_By_Units_Null_Data_Excel() { ExternalPurchaseOrder externalPurchaseOrder = await EPODataUtil.GetTestData("Unit test"); DeliveryOrder deliveryOrder = await DODataUtil.GetTestData("unit-test"); UnitReceiptNote urn = await DataUtil.GetTestData2("unit-test"); var DateFrom = DateTime.Now; DateFrom = DateFrom.Date; var DateTo = DateTime.Now; DateTo = DateTo.Date; var Response = IPRFacade.GenerateExcel(null, null, null, DateFrom, DateTo); Assert.IsType(typeof(System.IO.MemoryStream), Response); }
//public async void Should_Success_Get_Report_Data() //{ // ExternalPurchaseOrder externalPurchaseOrder = await EPODataUtil.GetNewData("unit-test"); // await EPOFacade.Create(externalPurchaseOrder, "unit-test", 7); // DeliveryOrder deliveryOrder = await DODataUtil.GetNewData("unit-test"); // await DOFacade.Create(deliveryOrder, "unit-test"); // UnitReceiptNote urn = await DataUtil.GetNewDatas("unit-test"); // await Facade.Create(urn, "unit-test"); // //UnitPaymentOrder upo = await UPODataUtil.GetTestData(); // //await UPOFacade.Create(upo, "unit-test", false, 7); // var DateFrom = DateTime.Now; // DateFrom = DateFrom.Date; // var DateTo = DateTime.Now; // DateTo = DateTo.Date; // var Response = IPRFacade.GetReport(null, null,null ,DateFrom,DateTo); // Assert.NotEqual(Response.Item2, 0); //} public async void Should_Success_Get_Report_Data() { ExternalPurchaseOrder externalPurchaseOrder = await EPODataUtil.GetTestData("Unit test"); DeliveryOrder deliveryOrder = await DODataUtil.GetTestData("unit-test"); UnitReceiptNote urn = await DataUtil.GetTestData2("unit-test"); var DateFrom = DateTime.Now; DateFrom = DateFrom.Date; var DateTo = DateTime.Now; DateTo = DateTo.Date; var Response = IPRFacade.GetReport(null, null, null, DateFrom, DateTo); Assert.NotEqual(Response.Item2, 0); }
public IActionResult Get(int id) { try { var indexAcceptPdf = Request.Headers["Accept"].ToList().IndexOf("application/pdf"); UnitReceiptNote model = _facade.ReadById(id); UnitReceiptNoteViewModel viewModel = _mapper.Map <UnitReceiptNoteViewModel>(model); if (viewModel == null) { throw new Exception("Invalid Id"); } if (indexAcceptPdf < 0) { return(Ok(new { apiVersion = ApiVersion, statusCode = General.OK_STATUS_CODE, message = General.OK_MESSAGE, data = viewModel, })); } else { UnitReceiptNotePDFTemplate PdfTemplate = new UnitReceiptNotePDFTemplate(); MemoryStream stream = PdfTemplate.GeneratePdfTemplate(viewModel); return(new FileStreamResult(stream, "application/pdf") { FileDownloadName = $"{viewModel.no}.pdf" }); } } catch (Exception e) { Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.INTERNAL_ERROR_STATUS_CODE, e.Message) .Fail(); return(StatusCode(General.INTERNAL_ERROR_STATUS_CODE, Result)); } }
async Task <string> GenerateNo(UnitReceiptNote model) { string Year = model.ReceiptDate.ToString("yy"); string Month = model.ReceiptDate.ToString("MM"); string no = $"{Year}-{Month}-{model.URNNo}-{model.UnitCode}-"; int Padding = 3; var lastNo = await this.dbSet.Where(w => w.URNNo.StartsWith(no) && !w.IsDeleted).OrderByDescending(o => o.URNNo).FirstOrDefaultAsync(); if (lastNo == null) { return(no + "1".PadLeft(Padding, '0')); } else { int lastNoNumber = Int32.Parse(lastNo.URNNo.Replace(no, "")) + 1; return(no + lastNoNumber.ToString().PadLeft(Padding, '0')); } }
public async void Should_Success_Get_Report_Data_Excel_Null_Parameter() { ExternalPurchaseOrder externalPurchaseOrder = await EPODataUtil.GetNewData("unit-test"); await EPOFacade.Create(externalPurchaseOrder, "unit-test", 7); DeliveryOrder deliveryOrder = await DODataUtil.GetNewData("unit-test"); await DOFacade.Create(deliveryOrder, "unit-test"); UnitReceiptNote urn = await DataUtil.GetNewDatas("unit-test"); await Facade.Create(urn, "unit-test"); var DateFrom = DateTime.Now; DateFrom = DateFrom.Date; var DateTo = DateTime.Now; DateTo = DateTo.Date; var Response = IPRFacade.GenerateExcel(null, null, null, DateFrom, DateTo); Assert.IsType(typeof(System.IO.MemoryStream), Response); }
private void SetPaid(UnitPaymentOrderItem item, bool isPaid, string username) { UnitReceiptNote unitReceiptNote = dbContext.UnitReceiptNotes.Include(a => a.Items).Single(m => m.Id == item.URNId); foreach (var itemURN in unitReceiptNote.Items) { var detail = item.Details.FirstOrDefault(a => a.URNItemId == itemURN.Id); if (detail != null) { itemURN.IsPaid = isPaid; } } bool flagIsPaid = true; foreach (var itemURNPaid in unitReceiptNote.Items) { if (itemURNPaid.IsPaid == false) { flagIsPaid = false; } } unitReceiptNote.IsPaid = flagIsPaid; EntityExtension.FlagForUpdate(unitReceiptNote, username, USER_AGENT); }
public async Task CreateJournalTransactionUnitReceiptNote(UnitReceiptNote model) { var items = new List <JournalTransactionItem>(); var purchasingItems = new List <JournalTransactionItem>(); var stockItems = new List <JournalTransactionItem>(); var debtItems = new List <JournalTransactionItem>(); var incomeTaxPaidItems = new List <JournalTransactionItem>(); var incomeTaxItems = new List <JournalTransactionItem>(); var productListRemark = new List <string>(); foreach (var item in model.Items) { var purchaseRequest = dbContext.PurchaseRequests.FirstOrDefault(f => f.Id.Equals(item.PRId)); var poExternalItem = dbContext.ExternalPurchaseOrderItems.FirstOrDefault(f => f.PRId.Equals(item.PRId)); var poExternal = dbContext.ExternalPurchaseOrders.FirstOrDefault(f => f.Id.Equals(poExternalItem.EPOId)); var purchasingCOACode = ""; var stockCOACode = ""; var debtCOACode = ""; var incomeTaxCOACode = ""; if (purchaseRequest != null) { purchasingCOACode = COAGenerator.GetPurchasingCOA(purchaseRequest.DivisionName, purchaseRequest.UnitCode, purchaseRequest.CategoryCode); stockCOACode = COAGenerator.GetStockCOA(purchaseRequest.DivisionName, purchaseRequest.UnitCode, purchaseRequest.CategoryCode); debtCOACode = COAGenerator.GetDebtCOA(model.SupplierIsImport, purchaseRequest.DivisionName, purchaseRequest.UnitCode); if (poExternal.UseIncomeTax && double.TryParse(poExternal.IncomeTaxRate, out double test) && double.Parse(poExternal.IncomeTaxRate) > 0) { incomeTaxCOACode = COAGenerator.GetIncomeTaxCOA(poExternal.IncomeTaxName, purchaseRequest.DivisionName, purchaseRequest.UnitCode); } } var journalPurchasingItem = new JournalTransactionItem() { COA = new COA() { Code = purchasingCOACode }, Debit = item.PricePerDealUnit * item.ReceiptQuantity, }; purchasingItems.Add(journalPurchasingItem); var journalStockItem = new JournalTransactionItem() { COA = new COA() { Code = stockCOACode }, Debit = item.PricePerDealUnit * item.ReceiptQuantity, }; stockItems.Add(journalStockItem); var journalDebtItem = new JournalTransactionItem() { COA = new COA() { Code = debtCOACode }, Credit = item.PricePerDealUnit * item.ReceiptQuantity }; debtItems.Add(journalDebtItem); if (poExternal.UseIncomeTax && double.Parse(poExternal.IncomeTaxRate) > 0) { var pphItem = new JournalTransactionItem() { COA = new COA() { Code = incomeTaxCOACode }, Credit = item.PricePerDealUnit * item.ReceiptQuantity * double.Parse(poExternal.IncomeTaxRate) / 100 }; incomeTaxItems.Add(pphItem); var incomeTaxPaid = new JournalTransactionItem() { COA = new COA() { Code = debtCOACode }, Debit = item.PricePerDealUnit * item.ReceiptQuantity * double.Parse(poExternal.IncomeTaxRate) / 100 }; incomeTaxPaidItems.Add(incomeTaxPaid); } productListRemark.Add($"- {item.ProductName}"); } purchasingItems = purchasingItems.GroupBy(g => g.COA.Code).Select(s => new JournalTransactionItem() { COA = new COA() { Code = s.First().COA.Code }, Debit = s.Sum(sum => sum.Debit), Remark = string.Join("\n", productListRemark) }).ToList(); items.AddRange(purchasingItems); debtItems = debtItems.GroupBy(g => g.COA.Code).Select(s => new JournalTransactionItem() { COA = new COA() { Code = s.First().COA.Code }, Credit = s.Sum(sum => sum.Credit) }).ToList(); items.AddRange(debtItems); incomeTaxPaidItems = incomeTaxPaidItems.GroupBy(g => g.COA.Code).Select(s => new JournalTransactionItem() { COA = new COA() { Code = s.First().COA.Code }, Debit = s.Sum(sum => sum.Debit) }).ToList(); if (incomeTaxPaidItems.Count > 0) { items.AddRange(incomeTaxPaidItems); } incomeTaxItems = incomeTaxItems.GroupBy(g => g.COA.Code).Select(s => new JournalTransactionItem() { COA = new COA() { Code = s.First().COA.Code }, Credit = s.Sum(sum => sum.Credit) }).ToList(); if (incomeTaxItems.Count > 0) { items.AddRange(incomeTaxItems); } stockItems = stockItems.GroupBy(g => g.COA.Code).Select(s => new JournalTransactionItem() { COA = new COA() { Code = s.First().COA.Code }, Debit = s.Sum(sum => sum.Debit), Remark = string.Join("\n", productListRemark) }).ToList(); items.AddRange(stockItems); var purchasingCreditItems = purchasingItems.GroupBy(g => g.COA.Code).Select(s => new JournalTransactionItem() { COA = new COA() { Code = s.First().COA.Code }, Credit = s.Sum(sum => sum.Debit) }).ToList(); items.AddRange(purchasingCreditItems); var modelToPost = new JournalTransaction() { Date = DateTimeOffset.Now, Description = "Bon Terima Unit", ReferenceNo = model.URNNo, Items = items }; string journalTransactionUri = "journal-transactions"; var httpClient = (IHttpClientService)serviceProvider.GetService(typeof(IHttpClientService)); var response = await httpClient.PostAsync($"{APIEndpoint.Finance}{journalTransactionUri}", new StringContent(JsonConvert.SerializeObject(modelToPost).ToString(), Encoding.UTF8, General.JsonMediaType)); response.EnsureSuccessStatusCode(); }
public async Task <int> Create(UnitReceiptNote m, string user) { int Created = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { EntityExtension.FlagForCreate(m, user, "Facade"); m.URNNo = await GenerateNo(m); if (m.Items != null) { foreach (var item in m.Items) { EntityExtension.FlagForCreate(item, user, "Facade"); ExternalPurchaseOrderDetail externalPurchaseOrderDetail = this.dbContext.ExternalPurchaseOrderDetails.FirstOrDefault(s => s.Id == item.EPODetailId); PurchaseRequestItem prItem = this.dbContext.PurchaseRequestItems.FirstOrDefault(s => s.Id == externalPurchaseOrderDetail.PRItemId); InternalPurchaseOrderItem poItem = this.dbContext.InternalPurchaseOrderItems.FirstOrDefault(s => s.Id == externalPurchaseOrderDetail.POItemId); DeliveryOrderDetail doDetail = dbContext.DeliveryOrderDetails.FirstOrDefault(s => s.Id == item.DODetailId); UnitPaymentOrderDetail upoDetail = dbContext.UnitPaymentOrderDetails.FirstOrDefault(s => s.IsDeleted == false && s.POItemId == poItem.Id); item.PRItemId = doDetail.PRItemId; item.PricePerDealUnit = externalPurchaseOrderDetail.PricePerDealUnit; doDetail.ReceiptQuantity += item.ReceiptQuantity; externalPurchaseOrderDetail.ReceiptQuantity += item.ReceiptQuantity; if (upoDetail == null) { if (externalPurchaseOrderDetail.DOQuantity >= externalPurchaseOrderDetail.DealQuantity) { if (externalPurchaseOrderDetail.ReceiptQuantity < externalPurchaseOrderDetail.DealQuantity) { //prItem.Status = "Barang sudah diterima Unit parsial"; poItem.Status = "Barang sudah diterima Unit parsial"; } else { //prItem.Status = "Barang sudah diterima Unit semua"; poItem.Status = "Barang sudah diterima Unit semua"; } } else { //prItem.Status = "Barang sudah diterima Unit parsial"; poItem.Status = "Barang sudah diterima Unit parsial"; } } } } if (m.IsStorage == true) { insertStorage(m, user, "IN"); } this.dbSet.Add(m); Created = await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Created); }
public async Task <int> Update(int id, UnitReceiptNote unitReceiptNote, string user) { int Updated = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { var m = this.dbSet.AsNoTracking() .Include(d => d.Items) .Single(pr => pr.Id == id && !pr.IsDeleted); if (m != null && !id.Equals(unitReceiptNote.Id)) { if (m.IsStorage == true) { insertStorage(m, user, "OUT"); } if (unitReceiptNote.IsStorage == false) { unitReceiptNote.StorageCode = null; unitReceiptNote.StorageId = null; unitReceiptNote.StorageName = null; } EntityExtension.FlagForUpdate(unitReceiptNote, user, USER_AGENT); foreach (var item in unitReceiptNote.Items) { EntityExtension.FlagForUpdate(item, user, "Facade"); } this.dbContext.Update(unitReceiptNote); #region UpdateStatus //foreach (var item in unitReceiptNote.Items) //{ // if (item.Id == 0) // { // EntityExtension.FlagForCreate(item, user, USER_AGENT); // ExternalPurchaseOrderDetail externalPurchaseOrderDetail = this.dbContext.ExternalPurchaseOrderDetails.FirstOrDefault(s => s.Id == item.EPODetailId); // PurchaseRequestItem prItem = this.dbContext.PurchaseRequestItems.FirstOrDefault(s => s.Id == externalPurchaseOrderDetail.PRItemId); // InternalPurchaseOrderItem poItem = this.dbContext.InternalPurchaseOrderItems.FirstOrDefault(s => s.Id == externalPurchaseOrderDetail.POItemId); // DeliveryOrderDetail doDetail = dbContext.DeliveryOrderDetails.FirstOrDefault(s => s.Id == item.DODetailId); // item.PRItemId = doDetail.PRItemId; // item.PricePerDealUnit = externalPurchaseOrderDetail.PricePerDealUnit; // doDetail.ReceiptQuantity += item.ReceiptQuantity; // externalPurchaseOrderDetail.ReceiptQuantity += item.ReceiptQuantity; // if (externalPurchaseOrderDetail.DOQuantity >= externalPurchaseOrderDetail.DealQuantity) // { // if (externalPurchaseOrderDetail.ReceiptQuantity < externalPurchaseOrderDetail.DealQuantity) // { // //prItem.Status = "Barang sudah diterima Unit parsial"; // poItem.Status = "Barang sudah diterima Unit parsial"; // } // else // { // //prItem.Status = "Barang sudah diterima Unit semua"; // poItem.Status = "Barang sudah diterima Unit semua"; // } // } // else // { // //prItem.Status = "Barang sudah diterima Unit parsial"; // poItem.Status = "Barang sudah diterima Unit parsial"; // } // } // EntityExtension.FlagForUpdate(item, user, USER_AGENT); //} //this.dbContext.Update(unitReceiptNote); //foreach (var itemExist in m.Items) //{ // var a = itemExist; // ExternalPurchaseOrderDetail epoDetail = this.dbContext.ExternalPurchaseOrderDetails.FirstOrDefault(s => s.Id == itemExist.EPODetailId); // //PurchaseRequestItem purchaseRequestItem = this.dbContext.PurchaseRequestItems.FirstOrDefault(s => s.Id == externalPurchaseOrderDetail.PRItemId); // InternalPurchaseOrderItem purchaseOrderItem = this.dbContext.InternalPurchaseOrderItems.FirstOrDefault(s => s.Id == epoDetail.POItemId); // DeliveryOrderDetail sjDetail = dbContext.DeliveryOrderDetails.FirstOrDefault(s => s.Id == itemExist.DODetailId); // itemExist.PRItemId = sjDetail.PRItemId; // itemExist.PricePerDealUnit = epoDetail.PricePerDealUnit; // UnitReceiptNoteItem unitReceiptNoteItem = unitReceiptNote.Items.FirstOrDefault(i => i.Id.Equals(itemExist.Id)); // if (unitReceiptNoteItem == null) // { // EntityExtension.FlagForDelete(itemExist, user, USER_AGENT); // this.dbContext.UnitReceiptNoteItems.Update(itemExist); // sjDetail.ReceiptQuantity -= itemExist.ReceiptQuantity; // epoDetail.ReceiptQuantity -= itemExist.ReceiptQuantity; // if (epoDetail.ReceiptQuantity == 0) // { // if (epoDetail.DOQuantity > 0 && epoDetail.DOQuantity >= epoDetail.DealQuantity) // { // //prItem.Status = "Barang sudah diterima Unit semua"; // purchaseOrderItem.Status = "Barang sudah datang semua"; // } // else if (epoDetail.DOQuantity > 0 && epoDetail.DOQuantity < epoDetail.DealQuantity) // { // //prItem.Status = "Barang sudah diterima Unit parsial"; // purchaseOrderItem.Status = "Barang sudah datang parsial"; // } // } // else if (epoDetail.ReceiptQuantity > 0) // { // if (epoDetail.DOQuantity >= epoDetail.DealQuantity) // { // if (epoDetail.ReceiptQuantity < epoDetail.DealQuantity) // { // //prItem.Status = "Barang sudah diterima Unit parsial"; // purchaseOrderItem.Status = "Barang sudah diterima Unit parsial"; // } // else if (epoDetail.ReceiptQuantity >= epoDetail.DealQuantity) // { // //prItem.Status = "Barang sudah diterima Unit semua"; // purchaseOrderItem.Status = "Barang sudah diterima Unit semua"; // } // else if (epoDetail.DOQuantity < epoDetail.DealQuantity) // { // purchaseOrderItem.Status = "Barang sudah diterima Unit parsial"; // } // } // } // } // else // { // EntityExtension.FlagForUpdate(itemExist, user, USER_AGENT); // sjDetail.ReceiptQuantity -= itemExist.ReceiptQuantity; // epoDetail.ReceiptQuantity -= itemExist.ReceiptQuantity; // itemExist.PRItemId = sjDetail.PRItemId; // itemExist.PricePerDealUnit = epoDetail.PricePerDealUnit; // sjDetail.ReceiptQuantity += unitReceiptNoteItem.ReceiptQuantity; // epoDetail.ReceiptQuantity += unitReceiptNoteItem.ReceiptQuantity; // if (epoDetail.ReceiptQuantity == 0) // { // if (epoDetail.DOQuantity > 0 && epoDetail.DOQuantity >= epoDetail.DealQuantity) // { // //prItem.Status = "Barang sudah diterima Unit semua"; // purchaseOrderItem.Status = "Barang sudah datang semua"; // } // else if (epoDetail.DOQuantity > 0 && epoDetail.DOQuantity < epoDetail.DealQuantity) // { // //prItem.Status = "Barang sudah diterima Unit parsial"; // purchaseOrderItem.Status = "Barang sudah datang semua"; // } // } // else if (epoDetail.ReceiptQuantity > 0) // { // if (epoDetail.DOQuantity >= epoDetail.DealQuantity) // { // if (epoDetail.ReceiptQuantity < epoDetail.DealQuantity) // { // //prItem.Status = "Barang sudah diterima Unit parsial"; // purchaseOrderItem.Status = "Barang sudah diterima Unit parsial"; // } // else if (epoDetail.ReceiptQuantity >= epoDetail.DealQuantity) // { // //prItem.Status = "Barang sudah diterima Unit semua"; // purchaseOrderItem.Status = "Barang sudah diterima Unit semua"; // } // else if (epoDetail.DOQuantity < epoDetail.DealQuantity) // { // purchaseOrderItem.Status = "Barang sudah diterima Unit parsial"; // } // } // } // } //} #endregion if (unitReceiptNote.IsStorage == true) { insertStorage(unitReceiptNote, user, "IN"); } Updated = await dbContext.SaveChangesAsync(); transaction.Commit(); } else { throw new Exception("Invalid Id"); } } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Updated); }