private async Task CreateJournalTransaction(BankExpenditureNoteModel model, IdentityService identityService) { //var unitPaymentOrderIds = model.Details.Select(detail => detail.UnitPaymentOrderId).ToList(); //var unitPaymentOrders = dbContext.UnitPaymentOrders.Where(unitPaymentOrder => unitPaymentOrderIds.Contains(unitPaymentOrder.Id)).ToList(); var items = new List <JournalTransactionItem>(); foreach (var detail in model.Details) { //var unitPaymentOrder = unitPaymentOrders.FirstOrDefault(entity => entity.Id == detail.UnitPaymentOrderId); var sumDataByUnit = detail.Items.GroupBy(g => g.UnitCode).Select(s => new { UnitCode = s.Key, Total = s.Sum(sm => sm.Price) }); foreach (var datum in sumDataByUnit) { var item = new JournalTransactionItem() { COA = new COA() { Code = COAGenerator.GetDebtCOA(model.SupplierImport, detail.DivisionName, datum.UnitCode) }, Debit = Convert.ToDecimal(datum.Total), Remark = detail.UnitPaymentOrderNo + " / " + detail.InvoiceNo }; var vatCOA = ""; if (detail.Vat > 0) { if (model.SupplierImport) { vatCOA = "1510.00." + COAGenerator.GetDivisionAndUnitCOACode(detail.DivisionName, datum.UnitCode); } else { vatCOA = "1509.00." + COAGenerator.GetDivisionAndUnitCOACode(detail.DivisionName, datum.UnitCode); } } if (string.IsNullOrWhiteSpace(vatCOA)) { var vatItem = new JournalTransactionItem() { COA = new COA() { Code = vatCOA }, Debit = Convert.ToDecimal(datum.Total * 0.1) }; items.Add(vatItem); } items.Add(item); } } //items = items.GroupBy(g => g.COA.Code).Select(s => new JournalTransactionItem() //{ // COA = s.First().COA, // Debit = s.Sum(sm => Math.Round(sm.Debit.GetValueOrDefault(), 4)) //}).ToList(); var bankJournalItem = new JournalTransactionItem() { COA = new COA() { Code = model.BankAccountCOA }, Credit = items.Sum(s => Math.Round(s.Debit.GetValueOrDefault(), 4)) }; items.Add(bankJournalItem); var modelToPost = new JournalTransaction() { Date = DateTimeOffset.Now, Description = "Bukti Pengeluaran Bank", ReferenceNo = model.DocumentNo, Items = items }; string journalTransactionUri = "journal-transactions"; //var httpClient = new HttpClientService(identityService); 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 void Should_Success_Generate_UnitAndDivision() { var result = COAGenerator.GetDivisionAndUnitCOACode("", ""); Assert.NotNull(result); }