public void Should_Success_Build_BaseResponses()
        {
            var idCOAResult = new IdCOAResult()
            {
                COACode = "",
                Code    = "",
                Id      = 0
            };

            var bankAccountCOAResult = new BankAccountCOAResult()
            {
                AccountCOA = "",
                Id         = 0
            };

            var incomeTaxCOAResult = new IncomeTaxCOAResult()
            {
                COACodeCredit = "",
                Id            = 0
            };

            Assert.NotNull(idCOAResult);
            Assert.NotNull(bankAccountCOAResult);
            Assert.NotNull(incomeTaxCOAResult);
        }
        private async Task AutoCreateJournalTransaction(PPHBankExpenditureNote model)
        {
            var journalTransactionToPost = new JournalTransaction()
            {
                Date        = model.Date,
                Description = "Bon Terima Unit",
                ReferenceNo = model.No,
                Status      = "POSTED",
                Items       = new List <JournalTransactionItem>()
            };

            int.TryParse(model.BankId, out int bankAccountId);
            var bankAccount = BankAccounts.FirstOrDefault(entity => entity.Id == bankAccountId);

            if (bankAccount == null)
            {
                bankAccount = new BankAccountCOAResult()
                {
                    AccountCOA = "9999.00.00.00"
                };
            }

            int.TryParse(model.IncomeTaxId, out int incomeTaxId);
            var incomeTax = IncomeTaxes.FirstOrDefault(entity => entity.Id == incomeTaxId);

            if (incomeTax == null)
            {
                incomeTax = new IncomeTaxCOAResult()
                {
                    COACodeCredit = "9999.00"
                };
            }

            var journalDebitItems  = new List <JournalTransactionItem>();
            var journalCreditItems = new List <JournalTransactionItem>();

            journalCreditItems.Add(new JournalTransactionItem()
            {
                COA = new COA()
                {
                    Code = bankAccount.AccountCOA
                },
                Credit = (decimal)model.TotalIncomeTax
            });

            var purchasingDocumentExpeditionIds = model.Items.Select(item => item.PurchasingDocumentExpeditionId).ToList();
            var purchasingDocumentExpeditions   = await dbContext.PurchasingDocumentExpeditions.Include(entity => entity.Items).Where(entity => purchasingDocumentExpeditionIds.Contains(entity.Id)).ToListAsync();

            foreach (var item in model.Items)
            {
                var purchasingDocumentExpedition = purchasingDocumentExpeditions.FirstOrDefault(entity => entity.Id == item.PurchasingDocumentExpeditionId);
                var division = Divisions.FirstOrDefault(entity => entity.Code == purchasingDocumentExpedition.DivisionCode);
                if (division == null)
                {
                    division = new IdCOAResult()
                    {
                        COACode = "0"
                    };
                }

                journalDebitItems.Add(new JournalTransactionItem()
                {
                    COA = new COA()
                    {
                        Code = $"{incomeTax.COACodeCredit}.{division.COACode}.00"
                    },
                    Debit = (decimal)purchasingDocumentExpedition.IncomeTax
                });
            }

            journalDebitItems = journalDebitItems.GroupBy(grouping => grouping.COA.Code).Select(s => new JournalTransactionItem()
            {
                COA = new COA()
                {
                    Code = s.Key
                },
                Debit  = s.Sum(sum => Math.Round(sum.Debit.GetValueOrDefault(), 4)),
                Credit = 0,
                //Remark = string.Join("\n", s.Select(grouped => grouped.Remark).ToList())
            }).ToList();
            journalTransactionToPost.Items.AddRange(journalDebitItems);

            journalCreditItems = journalCreditItems.GroupBy(grouping => grouping.COA.Code).Select(s => new JournalTransactionItem()
            {
                COA = new COA()
                {
                    Code = s.Key
                },
                Debit  = 0,
                Credit = s.Sum(sum => Math.Round(sum.Credit.GetValueOrDefault(), 4)),
                //Remark = string.Join("\n", s.Select(grouped => grouped.Remark).ToList())
            }).ToList();
            journalTransactionToPost.Items.AddRange(journalCreditItems);

            if (journalTransactionToPost.Items.Any(item => item.COA.Code.Split(".").FirstOrDefault().Equals("9999")))
            {
                journalTransactionToPost.Status = "DRAFT";
            }

            string journalTransactionUri = "journal-transactions";
            var    httpClient            = (IHttpClientService)_serviceProvider.GetService(typeof(IHttpClientService));
            var    response = await httpClient.PostAsync($"{APIEndpoint.Finance}{journalTransactionUri}", new StringContent(JsonConvert.SerializeObject(journalTransactionToPost).ToString(), Encoding.UTF8, General.JsonMediaType));

            response.EnsureSuccessStatusCode();
        }
        private async Task AutoCreateJournalTransaction(UnitPaymentCorrectionNote unitPaymentCorrection)
        {
            foreach (var unitPaymentCorrectionItem in unitPaymentCorrection.Items)
            {
                var unitReceiptNote = dbContext.UnitReceiptNotes.Where(entity => entity.URNNo == unitPaymentCorrectionItem.URNNo).Include(entity => entity.Items).FirstOrDefault();

                var jsonSerializerSettings = new JsonSerializerSettings
                {
                    MissingMemberHandling = MissingMemberHandling.Ignore
                };

                var divisions   = JsonConvert.DeserializeObject <List <IdCOAResult> >(_jsonDivisions ?? "[]", jsonSerializerSettings);
                var units       = JsonConvert.DeserializeObject <List <IdCOAResult> >(_jsonUnits ?? "[]", jsonSerializerSettings);
                var categories  = JsonConvert.DeserializeObject <List <CategoryCOAResult> >(_jsonCategories ?? "[]", jsonSerializerSettings);
                var incomeTaxes = JsonConvert.DeserializeObject <List <IncomeTaxCOAResult> >(_jsonIncomeTaxes ?? "[]", jsonSerializerSettings);

                var purchaseRequestIds = unitReceiptNote.Items.Select(s => s.PRId).ToList();
                var purchaseRequests   = dbContext.PurchaseRequests.Where(w => purchaseRequestIds.Contains(w.Id)).Select(s => new { s.Id, s.CategoryCode, s.CategoryId }).ToList();

                var externalPurchaseOrderIds = unitReceiptNote.Items.Select(s => s.EPOId).ToList();
                var externalPurchaseOrders   = dbContext.ExternalPurchaseOrders.Where(w => externalPurchaseOrderIds.Contains(w.Id)).Select(s => new { s.Id, s.IncomeTaxId, s.UseIncomeTax, s.IncomeTaxName, s.IncomeTaxRate, s.CurrencyCode, s.CurrencyRate }).ToList();



                var externalPurchaseOrderDetailIds = unitReceiptNote.Items.Select(s => s.EPODetailId).ToList();
                var externalPurchaseOrderDetails   = dbContext.ExternalPurchaseOrderDetails.Where(w => externalPurchaseOrderDetailIds.Contains(w.Id)).Select(s => new { s.Id, s.ProductId, TotalPrice = s.PricePerDealUnit * s.DealQuantity, s.DealQuantity }).ToList();

                //var postMany = new List<Task<HttpResponseMessage>>();

                //var journalTransactionsToPost = new List<JournalTransaction>();

                var journalTransactionToPost = new JournalTransaction()
                {
                    Date        = unitPaymentCorrection.CorrectionDate,
                    Description = $"Nota Koreksi {unitReceiptNote.URNNo}",
                    ReferenceNo = unitPaymentCorrection.UPCNo,
                    Status      = "POSTED",
                    Items       = new List <JournalTransactionItem>()
                };

                int.TryParse(unitReceiptNote.DivisionId, out var divisionId);
                var division = divisions.FirstOrDefault(f => f.Id.Equals(divisionId));
                if (division == null)
                {
                    division = new IdCOAResult()
                    {
                        COACode = "0"
                    };
                }
                else
                {
                    if (string.IsNullOrEmpty(division.COACode))
                    {
                        division.COACode = "0";
                    }
                }


                int.TryParse(unitReceiptNote.UnitId, out var unitId);
                var unit = units.FirstOrDefault(f => f.Id.Equals(unitId));
                if (unit == null)
                {
                    unit = new IdCOAResult()
                    {
                        COACode = "00"
                    };
                }
                else
                {
                    if (string.IsNullOrEmpty(unit.COACode))
                    {
                        unit.COACode = "00";
                    }
                }


                var journalDebitItems  = new List <JournalTransactionItem>();
                var journalCreditItems = new List <JournalTransactionItem>();

                foreach (var unitReceiptNoteItem in unitReceiptNote.Items)
                {
                    var purchaseRequest        = purchaseRequests.FirstOrDefault(f => f.Id.Equals(unitReceiptNoteItem.PRId));
                    var externalPurchaseOrder  = externalPurchaseOrders.FirstOrDefault(f => f.Id.Equals(unitReceiptNoteItem.EPOId));
                    var unitPaymentOrderDetail = dbContext.UnitPaymentOrderDetails.FirstOrDefault(entity => entity.URNItemId == unitReceiptNoteItem.Id);

                    //double.TryParse(externalPurchaseOrder.IncomeTaxRate, out var incomeTaxRate);

                    //var currency = await _currencyProvider.GetCurrencyByCurrencyCode(externalPurchaseOrder.CurrencyCode);
                    //var currencyTupples = new Tuple<>
                    var currencyTuples = new List <Tuple <string, DateTimeOffset> > {
                        new Tuple <string, DateTimeOffset>(externalPurchaseOrder.CurrencyCode, unitPaymentCorrection.CorrectionDate)
                    };
                    var currency = await _currencyProvider.GetCurrencyByCurrencyCodeDateList(currencyTuples);

                    var currencyRate = currency != null && currency.FirstOrDefault() != null ? (decimal)currency.FirstOrDefault().Rate.GetValueOrDefault() : (decimal)externalPurchaseOrder.CurrencyRate;

                    //if (!externalPurchaseOrder.UseIncomeTax)
                    //    incomeTaxRate = 1;
                    //var externalPurchaseOrderDetail = externalPurchaseOrderDetails.FirstOrDefault(f => f.Id.Equals(item.EPODetailId));
                    var externalPOPriceTotal = externalPurchaseOrderDetails.Where(w => w.ProductId.Equals(unitReceiptNoteItem.ProductId) && w.Id.Equals(unitReceiptNoteItem.EPODetailId)).Sum(s => s.TotalPrice);



                    int.TryParse(purchaseRequest.CategoryId, out var categoryId);
                    var category = categories.FirstOrDefault(f => f.Id.Equals(categoryId));
                    if (category == null)
                    {
                        category = new CategoryCOAResult()
                        {
                            ImportDebtCOA = "9999.00",
                            LocalDebtCOA  = "9999.00",
                            PurchasingCOA = "9999.00",
                            StockCOA      = "9999.00"
                        };
                    }
                    else
                    {
                        if (string.IsNullOrEmpty(category.ImportDebtCOA))
                        {
                            category.ImportDebtCOA = "9999.00";
                        }
                        if (string.IsNullOrEmpty(category.LocalDebtCOA))
                        {
                            category.LocalDebtCOA = "9999.00";
                        }
                        if (string.IsNullOrEmpty(category.PurchasingCOA))
                        {
                            category.PurchasingCOA = "9999.00";
                        }
                        if (string.IsNullOrEmpty(category.StockCOA))
                        {
                            category.StockCOA = "9999.00";
                        }
                    }

                    double.TryParse(externalPurchaseOrder.IncomeTaxRate, out var incomeTaxRate);

                    var grandTotal = (decimal)0.0;
                    if (unitPaymentCorrection.CorrectionType == "Harga Total")
                    {
                        grandTotal = (decimal)((unitPaymentCorrectionItem.PriceTotalAfter - unitPaymentCorrectionItem.PriceTotalBefore) * unitPaymentCorrectionItem.Quantity);
                    }
                    else if (unitPaymentCorrection.CorrectionType == "Harga Satuan")
                    {
                        grandTotal = (decimal)(unitPaymentCorrectionItem.PricePerDealUnitAfter - unitPaymentCorrectionItem.PricePerDealUnitBefore);
                    }
                    else if (unitPaymentCorrection.CorrectionType == "Jumlah")
                    {
                        grandTotal = (decimal)(unitPaymentOrderDetail.QuantityCorrection * unitPaymentOrderDetail.PricePerDealUnit);
                    }

                    if (grandTotal != 0)
                    {
                        if (unitPaymentCorrection.useIncomeTax)
                        {
                            int.TryParse(externalPurchaseOrder.IncomeTaxId, out var incomeTaxId);
                            var incomeTax = incomeTaxes.FirstOrDefault(f => f.Id.Equals(incomeTaxId));

                            if (incomeTax == null || string.IsNullOrWhiteSpace(incomeTax.COACodeCredit))
                            {
                                incomeTax = new IncomeTaxCOAResult()
                                {
                                    COACodeCredit = "9999.00"
                                };
                            }

                            var incomeTaxTotal = (decimal)incomeTaxRate / 100 * grandTotal;

                            journalDebitItems.Add(new JournalTransactionItem()
                            {
                                COA = new COA()
                                {
                                    Code = unitReceiptNote.SupplierIsImport ? $"{category.ImportDebtCOA}.{division.COACode}.{unit.COACode}" : $"{category.LocalDebtCOA}.{division.COACode}.{unit.COACode}"
                                },
                                Debit = incomeTaxTotal
                            });

                            journalCreditItems.Add(new JournalTransactionItem()
                            {
                                COA = new COA()
                                {
                                    Code = $"{incomeTax.COACodeCredit}.{division.COACode}.{unit.COACode}"
                                },
                                Credit = incomeTaxTotal
                            });
                        }

                        if (unitPaymentCorrection.useVat)
                        {
                            var inVATCOA = "1509.00";
                            var totalVAT = (decimal)0.1 * grandTotal;
                            journalCreditItems.Add(new JournalTransactionItem()
                            {
                                COA = new COA()
                                {
                                    Code = unitReceiptNote.SupplierIsImport ? $"{category.ImportDebtCOA}.{division.COACode}.{unit.COACode}" : $"{category.LocalDebtCOA}.{division.COACode}.{unit.COACode}"
                                },
                                Credit = totalVAT
                            });

                            journalDebitItems.Add(new JournalTransactionItem()
                            {
                                COA = new COA()
                                {
                                    Code = $"{inVATCOA}.{division.COACode}.{unit.COACode}"
                                },
                                Debit  = totalVAT,
                                Remark = unitPaymentCorrection.VatTaxCorrectionNo
                            });
                        }

                        if (unitReceiptNote.SupplierIsImport && ((decimal)externalPOPriceTotal * currencyRate) > 100000000)
                        {
                            //Purchasing Journal Item
                            journalDebitItems.Add(new JournalTransactionItem()
                            {
                                COA = new COA()
                                {
                                    Code = $"{category.PurchasingCOA}.{division.COACode}.{unit.COACode}"
                                },
                                Debit  = grandTotal,
                                Remark = $"- {unitReceiptNoteItem.ProductName}"
                            });

                            //Debt Journal Item
                            journalCreditItems.Add(new JournalTransactionItem()
                            {
                                COA = new COA()
                                {
                                    Code = $"{category.ImportDebtCOA}.{division.COACode}.{unit.COACode}"
                                },
                                Credit = grandTotal,
                                Remark = $"- {unitReceiptNoteItem.ProductName}"
                            });

                            //Stock Journal Item
                            journalDebitItems.Add(new JournalTransactionItem()
                            {
                                COA = new COA()
                                {
                                    Code = $"{category.StockCOA}.{division.COACode}.{unit.COACode}"
                                },
                                Debit  = grandTotal,
                                Remark = $"- {unitReceiptNoteItem.ProductName}"
                            });

                            //Purchasing Journal Item
                            journalCreditItems.Add(new JournalTransactionItem()
                            {
                                COA = new COA()
                                {
                                    Code = $"{category.PurchasingCOA}.{division.COACode}.{unit.COACode}"
                                },
                                Credit = grandTotal,
                                Remark = $"- {unitReceiptNoteItem.ProductName}"
                            });
                        }
                        else
                        {
                            //Purchasing Journal Item
                            journalDebitItems.Add(new JournalTransactionItem()
                            {
                                COA = new COA()
                                {
                                    Code = $"{category.PurchasingCOA}.{division.COACode}.{unit.COACode}"
                                },
                                Debit  = grandTotal,
                                Remark = $"- {unitReceiptNoteItem.ProductName}"
                            });

                            if (SpecialCategoryCode.Contains(category.Code))
                            {
                                //Stock Journal Item
                                journalDebitItems.Add(new JournalTransactionItem()
                                {
                                    COA = new COA()
                                    {
                                        Code = $"{category.StockCOA}.{division.COACode}.{unit.COACode}"
                                    },
                                    Debit  = grandTotal,
                                    Remark = $"- {unitReceiptNoteItem.ProductName}"
                                });
                            }


                            //Debt Journal Item
                            journalCreditItems.Add(new JournalTransactionItem()
                            {
                                COA = new COA()
                                {
                                    Code = unitReceiptNote.SupplierIsImport ? $"{category.ImportDebtCOA}.{division.COACode}.{unit.COACode}" : $"{category.LocalDebtCOA}.{division.COACode}.{unit.COACode}"
                                },
                                Credit = grandTotal,
                                Remark = $"- {unitReceiptNoteItem.ProductName}"
                            });

                            if (SpecialCategoryCode.Contains(category.Code))
                            {
                                //Purchasing Journal Item
                                journalCreditItems.Add(new JournalTransactionItem()
                                {
                                    COA = new COA()
                                    {
                                        Code = $"{category.PurchasingCOA}.{division.COACode}.{unit.COACode}"
                                    },
                                    Credit = grandTotal,
                                    Remark = $"- {unitReceiptNoteItem.ProductName}"
                                });
                            }
                        }
                    }
                }


                journalDebitItems = journalDebitItems.GroupBy(grouping => grouping.COA.Code).Select(s => new JournalTransactionItem()
                {
                    COA = new COA()
                    {
                        Code = s.Key
                    },
                    Debit  = s.Sum(sum => Math.Round(sum.Debit.GetValueOrDefault(), 4)) > 0 ? s.Sum(sum => Math.Abs(Math.Round(sum.Debit.GetValueOrDefault(), 4))) : 0,
                    Credit = s.Sum(sum => Math.Round(sum.Debit.GetValueOrDefault(), 4)) > 0 ? 0 : s.Sum(sum => Math.Abs(Math.Round(sum.Debit.GetValueOrDefault(), 4))),
                    Remark = string.Join("\n", s.Select(grouped => grouped.Remark).ToList())
                }).ToList();
                journalTransactionToPost.Items.AddRange(journalDebitItems);

                journalCreditItems = journalCreditItems.GroupBy(grouping => grouping.COA.Code).Select(s => new JournalTransactionItem()
                {
                    COA = new COA()
                    {
                        Code = s.Key
                    },
                    Credit = s.Sum(sum => Math.Round(sum.Credit.GetValueOrDefault(), 4)) > 0 ? s.Sum(sum => Math.Abs(Math.Round(sum.Credit.GetValueOrDefault(), 4))) : 0,
                    Debit  = s.Sum(sum => Math.Round(sum.Credit.GetValueOrDefault(), 4)) > 0 ? 0 : s.Sum(sum => Math.Abs(Math.Round(sum.Credit.GetValueOrDefault(), 4))),
                    Remark = string.Join("\n", s.Select(grouped => grouped.Remark).ToList())
                }).ToList();
                journalTransactionToPost.Items.AddRange(journalCreditItems);

                if (journalTransactionToPost.Items.Any(item => item.COA.Code.Split(".").FirstOrDefault().Equals("9999")))
                {
                    journalTransactionToPost.Status = "DRAFT";
                }

                if (journalTransactionToPost.Items.Count > 0)
                {
                    var journalTransactionUri = "journal-transactions";
                    var httpClient            = (IHttpClientService)serviceProvider.GetService(typeof(IHttpClientService));
                    var response = await httpClient.PostAsync($"{APIEndpoint.Finance}{journalTransactionUri}", new StringContent(JsonConvert.SerializeObject(journalTransactionToPost).ToString(), Encoding.UTF8, General.JsonMediaType));

                    response.EnsureSuccessStatusCode();
                }
            }
        }
Пример #4
0
        public async Task <int> AutoJournalVBRequest(VBFormDto form)
        {
            var externalPurchaseOrders     = _dbContext.ExternalPurchaseOrders.Where(entity => form.EPOIds.Contains(entity.Id)).Select(entity => new { entity.Id, entity.IncomeTaxId, entity.UseIncomeTax, entity.IncomeTaxName, entity.IncomeTaxRate, entity.CurrencyCode, entity.IncomeTaxBy, entity.SupplierIsImport }).ToList();
            var externalPurchaseOrderItems = _dbContext.ExternalPurchaseOrderItems.Where(entity => form.EPOIds.Contains(entity.EPOId)).Select(entity => new { entity.Id, entity.EPOId, entity.PRId, entity.UnitId }).ToList();
            var epoItemIds = externalPurchaseOrderItems.Select(element => element.Id).ToList();
            var externalPurchaseOrderDetails = _dbContext.ExternalPurchaseOrderDetails.Where(entity => epoItemIds.Contains(entity.EPOItemId)).Select(entity => new { entity.Id, entity.EPOItemId, entity.DealQuantity, entity.PricePerDealUnit, entity.IncludePpn }).ToList();

            var purchaseRequestIds = externalPurchaseOrderItems.Select(element => element.PRId).ToList();
            var purchaseRequests   = _dbContext.PurchaseRequests.Where(w => purchaseRequestIds.Contains(w.Id)).Select(s => new { s.Id, s.CategoryCode, s.CategoryId, s.UnitId, s.DivisionId }).ToList();

            var journalTransactionToPost = new JournalTransaction()
            {
                Date        = form.Date,
                Description = "Approval VB",
                ReferenceNo = form.DocumentNo,
                Status      = "POSTED",
                Items       = new List <JournalTransactionItem>()
            };

            var journalDebitItems  = new List <JournalTransactionItem>();
            var journalCreditItems = new List <JournalTransactionItem>();

            foreach (var externalPurchaseOrderDetail in externalPurchaseOrderDetails)
            {
                var externalPurchaseOrderItem = externalPurchaseOrderItems.FirstOrDefault(element => element.Id == externalPurchaseOrderDetail.EPOItemId);
                var externalPurchaseOrder     = externalPurchaseOrders.FirstOrDefault(element => element.Id == externalPurchaseOrderItem.EPOId);
                var purchaseRequest           = purchaseRequests.FirstOrDefault(element => element.Id == externalPurchaseOrderItem.PRId);

                int.TryParse(purchaseRequest.CategoryId, out var categoryId);
                var category = Categories.FirstOrDefault(f => f._id.Equals(categoryId));
                if (category == null)
                {
                    category = new CategoryCOAResult()
                    {
                        ImportDebtCOA = "9999.00",
                        LocalDebtCOA  = "9999.00",
                        PurchasingCOA = "9999.00",
                        StockCOA      = "9999.00"
                    };
                }
                else
                {
                    if (string.IsNullOrEmpty(category.ImportDebtCOA))
                    {
                        category.ImportDebtCOA = "9999.00";
                    }
                    if (string.IsNullOrEmpty(category.LocalDebtCOA))
                    {
                        category.LocalDebtCOA = "9999.00";
                    }
                    if (string.IsNullOrEmpty(category.PurchasingCOA))
                    {
                        category.PurchasingCOA = "9999.00";
                    }
                    if (string.IsNullOrEmpty(category.StockCOA))
                    {
                        category.StockCOA = "9999.00";
                    }
                }

                int.TryParse(purchaseRequest.DivisionId, out var divisionId);
                var division = Divisions.FirstOrDefault(f => f.Id.Equals(divisionId));
                if (division == null)
                {
                    division = new IdCOAResult()
                    {
                        COACode = "0"
                    };
                }
                else
                {
                    if (string.IsNullOrEmpty(division.COACode))
                    {
                        division.COACode = "0";
                    }
                }

                int.TryParse(purchaseRequest.UnitId, out var unitId);
                var unit = Units.FirstOrDefault(f => f.Id.Equals(unitId));
                if (unit == null)
                {
                    unit = new IdCOAResult()
                    {
                        COACode = "00"
                    };
                }
                else
                {
                    if (string.IsNullOrEmpty(unit.COACode))
                    {
                        unit.COACode = "0";
                    }
                }

                int.TryParse(externalPurchaseOrder.IncomeTaxId, out var incomeTaxId);
                var incomeTax = IncomeTaxes.FirstOrDefault(f => f.Id.Equals(incomeTaxId));

                if (incomeTax == null || string.IsNullOrWhiteSpace(incomeTax.COACodeCredit))
                {
                    incomeTax = new IncomeTaxCOAResult()
                    {
                        COACodeCredit = "9999.00"
                    };
                }

                double.TryParse(externalPurchaseOrder.IncomeTaxRate, out var incomeTaxRate);

                var currency = await _currencyProvider.GetCurrencyByCurrencyCode(externalPurchaseOrder.CurrencyCode);

                var currencyRate = currency != null?currency.Rate.GetValueOrDefault() : 1;

                var basePrice  = externalPurchaseOrderDetail.PricePerDealUnit * externalPurchaseOrderDetail.DealQuantity * currencyRate;
                var totalPrice = basePrice;

                if (!externalPurchaseOrderDetail.IncludePpn)
                {
                    totalPrice += basePrice * 0.1;
                }

                if (externalPurchaseOrder.UseIncomeTax && externalPurchaseOrder.IncomeTaxBy.ToUpper() == "SUPPLIER")
                {
                    totalPrice -= basePrice * (incomeTaxRate / 100);
                }


                journalDebitItems.Add(new JournalTransactionItem()
                {
                    COA = new COA()
                    {
                        Code = externalPurchaseOrder.SupplierIsImport ? $"{category.ImportDebtCOA}.{division.COACode}.{unit.COACode}" : $"{category.LocalDebtCOA}.{division.COACode}.{unit.COACode}"
                    },
                    Debit = (decimal)totalPrice
                });



                journalCreditItems.Add(new JournalTransactionItem()
                {
                    COA = new COA()
                    {
                        Code = currency.Code.ToUpper() == "IDR" ? $"1011.00.{division.COACode}.{unit.COACode}" : $"1012.00.{division.COACode}.{unit.COACode}"
                    },
                    Credit = (decimal)totalPrice
                });
            }

            journalDebitItems = journalDebitItems.GroupBy(grouping => grouping.COA.Code).Select(s => new JournalTransactionItem()
            {
                COA = new COA()
                {
                    Code = s.Key
                },
                Debit  = s.Sum(sum => Math.Round(sum.Debit.GetValueOrDefault(), 4)),
                Credit = 0
            }).ToList();
            journalTransactionToPost.Items.AddRange(journalDebitItems);

            journalCreditItems = journalCreditItems.GroupBy(grouping => grouping.COA.Code).Select(s => new JournalTransactionItem()
            {
                COA = new COA()
                {
                    Code = s.Key
                },
                Debit  = 0,
                Credit = s.Sum(sum => Math.Round(sum.Credit.GetValueOrDefault(), 4))
            }).ToList();
            journalTransactionToPost.Items.AddRange(journalCreditItems);

            if (journalTransactionToPost.Items.Any(item => item.COA.Code.Split(".").FirstOrDefault().Equals("9999")))
            {
                journalTransactionToPost.Status = "DRAFT";
            }

            var journalTransactionUri = "journal-transactions";
            var httpClient            = _serviceProvider.GetService <IHttpClientService>();
            var response = await httpClient.PostAsync($"{APIEndpoint.Finance}{journalTransactionUri}", new StringContent(JsonConvert.SerializeObject(journalTransactionToPost).ToString(), Encoding.UTF8, General.JsonMediaType));

            return((int)response.StatusCode);
        }
        private async Task AutoCreateJournalTransaction(PPHBankExpenditureNote model)
        {
            var jsonSerializerSettings = new JsonSerializerSettings
            {
                MissingMemberHandling = MissingMemberHandling.Ignore
            };

            var divisions    = JsonConvert.DeserializeObject <List <IdCOAResult> >(_jsonDivisions ?? "[]", jsonSerializerSettings);
            var units        = JsonConvert.DeserializeObject <List <IdCOAResult> >(_jsonUnits ?? "[]", jsonSerializerSettings);
            var categories   = JsonConvert.DeserializeObject <List <CategoryCOAResult> >(_jsonCategories ?? "[]", jsonSerializerSettings);
            var incomeTaxes  = JsonConvert.DeserializeObject <List <IncomeTaxCOAResult> >(_jsonIncomeTaxes ?? "[]", jsonSerializerSettings);
            var accountBanks = JsonConvert.DeserializeObject <List <BankAccountCOAResult> >(_jsonAccountBanks ?? "[]", jsonSerializerSettings);

            var journalTransactionToPost = new JournalTransaction()
            {
                Date        = model.Date,
                Description = "Pengajuan Pembayaran PPh",
                ReferenceNo = model.No,
                Status      = "POSTED",
                Items       = new List <JournalTransactionItem>()
            };

            int.TryParse(model.BankId, out int bankAccountId);
            var bankAccount = accountBanks.FirstOrDefault(entity => entity.Id == bankAccountId);

            if (bankAccount == null)
            {
                bankAccount = new BankAccountCOAResult()
                {
                    AccountCOA = "9999.00.00.00"
                };
            }

            //int.TryParse(model.IncomeTaxId, out int incomeTaxId);
            //var incomeTax = incomeTaxes.FirstOrDefault(entity => entity.Id == incomeTaxId);
            //if (incomeTax == null)
            //{
            //    incomeTax = new IncomeTaxCOAResult()
            //    {
            //        COACodeCredit = "9999.00"
            //    };
            //}

            var journalDebitItems  = new List <JournalTransactionItem>();
            var journalCreditItems = new List <JournalTransactionItem>();

            var upoNos            = model.Items.Select(element => element.UnitPaymentOrderNo).ToList();
            var unitPaymentOrders = dbContext.UnitPaymentOrders.Where(entity => upoNos.Contains(entity.UPONo)).ToList();


            var purchasingDocumentExpeditionIds = model.Items.Select(item => item.PurchasingDocumentExpeditionId).ToList();
            var purchasingDocumentExpeditions   = await dbContext.PurchasingDocumentExpeditions.Include(entity => entity.Items).Where(entity => purchasingDocumentExpeditionIds.Contains(entity.Id)).ToListAsync();

            foreach (var item in model.Items)
            {
                var unitPaymentOrder = unitPaymentOrders.FirstOrDefault(element => element.UPONo == item.UnitPaymentOrderNo);
                if (unitPaymentOrder == null)
                {
                    unitPaymentOrder = new UnitPaymentOrder();
                }

                var purchasingDocumentExpedition = purchasingDocumentExpeditions.FirstOrDefault(entity => entity.Id == item.PurchasingDocumentExpeditionId);
                var division = divisions.FirstOrDefault(entity => entity.Code == purchasingDocumentExpedition.DivisionCode);
                if (division == null)
                {
                    division = new IdCOAResult()
                    {
                        COACode = "0"
                    };
                }

                int.TryParse(unitPaymentOrder.IncomeTaxId, out int incomeTaxId);
                var incomeTax = incomeTaxes.FirstOrDefault(entity => entity.Id == incomeTaxId);
                if (incomeTax == null)
                {
                    incomeTax = new IncomeTaxCOAResult()
                    {
                        COACodeCredit = "9999.00"
                    };
                }

                journalDebitItems.Add(new JournalTransactionItem()
                {
                    COA = new COA()
                    {
                        Code = $"{incomeTax.COACodeCredit}.{division.COACode}.00"
                    },
                    Debit = (decimal)purchasingDocumentExpedition.IncomeTax * (decimal)model.CurrencyRate.GetValueOrDefault()
                });
            }


            journalCreditItems.Add(new JournalTransactionItem()
            {
                COA = new COA()
                {
                    Code = bankAccount.AccountCOA
                },
                Credit = journalDebitItems.Sum(element => element.Debit)
            });

            journalDebitItems = journalDebitItems.GroupBy(grouping => grouping.COA.Code).Select(s => new JournalTransactionItem()
            {
                COA = new COA()
                {
                    Code = s.Key
                },
                Debit  = s.Sum(sum => Math.Round(sum.Debit.GetValueOrDefault(), 4)),
                Credit = 0,
                //Remark = string.Join("\n", s.Select(grouped => grouped.Remark).ToList())
            }).ToList();
            journalTransactionToPost.Items.AddRange(journalDebitItems);

            journalCreditItems = journalCreditItems.GroupBy(grouping => grouping.COA.Code).Select(s => new JournalTransactionItem()
            {
                COA = new COA()
                {
                    Code = s.Key
                },
                Debit  = 0,
                Credit = s.Sum(sum => Math.Round(sum.Credit.GetValueOrDefault(), 4)),
                //Remark = string.Join("\n", s.Select(grouped => grouped.Remark).ToList())
            }).ToList();
            journalTransactionToPost.Items.AddRange(journalCreditItems);

            if (journalTransactionToPost.Items.Any(item => item.COA.Code.Split(".").FirstOrDefault().Equals("9999")))
            {
                journalTransactionToPost.Status = "DRAFT";
            }

            string journalTransactionUri = "journal-transactions";
            var    httpClient            = (IHttpClientService)_serviceProvider.GetService(typeof(IHttpClientService));
            var    response = await httpClient.PostAsync($"{APIEndpoint.Finance}{journalTransactionUri}", new StringContent(JsonConvert.SerializeObject(journalTransactionToPost).ToString(), Encoding.UTF8, General.JsonMediaType));

            response.EnsureSuccessStatusCode();
        }
Пример #6
0
        public async Task <int> AutoJournalVBRequest(VBFormDto form)
        {
            var jsonSerializerSettings = new JsonSerializerSettings
            {
                MissingMemberHandling = MissingMemberHandling.Ignore
            };

            var divisions   = JsonConvert.DeserializeObject <List <IdCOAResult> >(_jsonDivisions, jsonSerializerSettings);
            var units       = JsonConvert.DeserializeObject <List <IdCOAResult> >(_jsonUnits, jsonSerializerSettings);
            var categories  = JsonConvert.DeserializeObject <List <CategoryCOAResult> >(_jsonCategories, jsonSerializerSettings);
            var incomeTaxes = JsonConvert.DeserializeObject <List <IncomeTaxCOAResult> >(_jsonIncomeTaxes, jsonSerializerSettings);

            //var unitPaymentOrderItemIds = _dbContext.UnitPaymentOrderItems.Where(entity => form.EPOIds.Contains(entity.UPOId)).Select(entity => entity.Id).ToList();
            var unitPaymentOrders      = _dbContext.UnitPaymentOrders.Where(entity => form.EPOIds.Contains(entity.Id)).ToList();
            var _unitPaymentOrderItems = _dbContext.UnitPaymentOrderItems.Where(entity => form.EPOIds.Contains(entity.UPOId)).ToList();
            var urnNos                = _unitPaymentOrderItems.Select(element => element.URNNo).ToList();
            var _unitReceiptNotes     = _dbContext.UnitReceiptNotes.Where(entity => urnNos.Contains(entity.URNNo)).ToList();
            var unitReceiptIds        = _unitReceiptNotes.Select(element => element.Id).ToList();
            var _unitReceiptNoteItems = _dbContext.UnitReceiptNoteItems.Where(entity => unitReceiptIds.Contains(entity.URNId)).ToList();
            var prIds                         = _unitReceiptNoteItems.Select(element => element.PRId).ToList();
            var _purchaseRequests             = _dbContext.PurchaseRequests.Where(entity => prIds.Contains(entity.Id)).ToList();
            var epoNos                        = _unitReceiptNoteItems.Select(element => element.EPONo).ToList();
            var _externalPurchaseOrders       = _dbContext.ExternalPurchaseOrders.Where(entity => epoNos.Contains(entity.EPONo)).ToList();
            var epoDetailIds                  = _unitReceiptNoteItems.Select(element => element.EPODetailId).ToList();
            var _externalPurchaseOrderDetails = _dbContext.ExternalPurchaseOrderDetails.Where(entity => epoDetailIds.Contains(entity.Id)).ToList();
            //var epoDetailIds = _dbContext.UnitPaymentOrderDetails.Where(entity => unitPaymentOrderItemIds.Contains(entity.UPOItemId)).Select(entity => entity.EPODetailId).ToList();

            //var externalPurchaseOrderItems = _dbContext.ExternalPurchaseOrderItems.Where(entity => form.EPOIds.Contains(entity.EPOId)).Select(entity => new { entity.Id, entity.EPOId, entity.PRId, entity.UnitId }).ToList();
            //var epoItemIds = externalPurchaseOrderItems.Select(element => element.Id).ToList();
            //var epoIds = externalPurchaseOrderItems.Select(element => element.EPOId).ToList();
            //var externalPurchaseOrders = _dbContext.ExternalPurchaseOrders.Where(entity => epoIds.Contains(entity.Id)).Select(entity => new { entity.Id, entity.IncomeTaxId, entity.UseIncomeTax, entity.IncomeTaxName, entity.IncomeTaxRate, entity.CurrencyCode, entity.IncomeTaxBy, entity.SupplierIsImport }).ToList();
            //var externalPurchaseOrderDetails = _dbContext.ExternalPurchaseOrderDetails.Where(entity => epoItemIds.Contains(entity.EPOItemId)).Select(entity => new { entity.Id, entity.EPOItemId, entity.DealQuantity, entity.PricePerDealUnit, entity.IncludePpn }).ToList();

            //var purchaseRequestIds = externalPurchaseOrderItems.Select(element => element.PRId).ToList();
            //var purchaseRequests = _dbContext.PurchaseRequests.Where(w => purchaseRequestIds.Contains(w.Id)).Select(s => new { s.Id, s.CategoryCode, s.CategoryId, s.UnitId, s.DivisionId }).ToList();

            var journalTransactionToPost = new JournalTransaction()
            {
                Date        = form.Date,
                Description = "Auto Journal Clearance VB",
                ReferenceNo = form.DocumentNo,
                Status      = "POSTED",
                Items       = new List <JournalTransactionItem>()
            };

            var journalDebitItems  = new List <JournalTransactionItem>();
            var journalCreditItems = new List <JournalTransactionItem>();

            foreach (var unitPaymentOrder in unitPaymentOrders)
            {
                var urnIds           = _unitPaymentOrderItems.Where(element => element.UPOId == unitPaymentOrder.Id).Select(element => element.URNId).ToList();
                var unitReceiptNotes = _unitReceiptNotes.Where(element => urnIds.Contains(element.Id)).ToList();

                foreach (var unitReceiptNote in unitReceiptNotes)
                {
                    var unitReceiptNoteItems = _unitReceiptNoteItems.Where(element => element.URNId == unitReceiptNote.Id).ToList();
                    foreach (var unitReceiptNoteItem in unitReceiptNoteItems)
                    {
                        var purchaseRequest             = _purchaseRequests.FirstOrDefault(element => element.Id == unitReceiptNoteItem.PRId);
                        var externalPurchaseOrder       = _externalPurchaseOrders.FirstOrDefault(element => element.Id == unitReceiptNoteItem.EPOId);
                        var externalPurchaseOrderDetail = _externalPurchaseOrderDetails.FirstOrDefault(element => element.Id == unitReceiptNoteItem.EPODetailId);

                        if (purchaseRequest != null && externalPurchaseOrder != null && externalPurchaseOrderDetail != null)
                        {
                            int.TryParse(unitReceiptNote.DivisionId, out var divisionId);
                            var division = divisions.FirstOrDefault(f => f.Id.Equals(divisionId));
                            if (division == null)
                            {
                                division = new IdCOAResult()
                                {
                                    COACode = "0"
                                };
                            }
                            else
                            {
                                if (string.IsNullOrEmpty(division.COACode))
                                {
                                    division.COACode = "0";
                                }
                            }

                            int.TryParse(unitReceiptNote.UnitId, out var unitId);
                            var unit = units.FirstOrDefault(f => f.Id.Equals(unitId));
                            if (unit == null)
                            {
                                unit = new IdCOAResult()
                                {
                                    COACode = "00"
                                };
                            }
                            else
                            {
                                if (string.IsNullOrEmpty(unit.COACode))
                                {
                                    unit.COACode = "00";
                                }
                            }

                            int.TryParse(purchaseRequest.CategoryId, out var categoryId);
                            var category = categories.FirstOrDefault(element => element.Id == categoryId);
                            if (category == null)
                            {
                                category = new CategoryCOAResult()
                                {
                                    ImportDebtCOA = "9999.00",
                                    LocalDebtCOA  = "9999.00",
                                    PurchasingCOA = "9999.00",
                                    StockCOA      = "9999.00"
                                };
                            }
                            else
                            {
                                if (string.IsNullOrEmpty(category.ImportDebtCOA))
                                {
                                    category.ImportDebtCOA = "9999.00";
                                }
                                if (string.IsNullOrEmpty(category.LocalDebtCOA))
                                {
                                    category.LocalDebtCOA = "9999.00";
                                }
                                if (string.IsNullOrEmpty(category.PurchasingCOA))
                                {
                                    category.PurchasingCOA = "9999.00";
                                }
                                if (string.IsNullOrEmpty(category.StockCOA))
                                {
                                    category.StockCOA = "9999.00";
                                }
                            }

                            var currency = await GetBICurrency(externalPurchaseOrder.CurrencyCode, unitReceiptNote.ReceiptDate);

                            var currencyRate = currency != null ? (decimal)currency.Rate.GetValueOrDefault() : (decimal)externalPurchaseOrder.CurrencyRate;

                            var externalPOPriceTotal = externalPurchaseOrderDetail.PricePerDealUnit * externalPurchaseOrderDetail.DealQuantity;
                            double.TryParse(externalPurchaseOrder.IncomeTaxRate, out var incomeTaxRate);
                            var grandTotal = Convert.ToDecimal(unitReceiptNoteItem.ReceiptQuantity * unitReceiptNoteItem.PricePerDealUnit * (double)currencyRate);

                            var incomeTaxTotal = (decimal)0;
                            var vatTotal       = (decimal)0;
                            if (externalPurchaseOrder.UseIncomeTax && externalPurchaseOrder.IncomeTaxBy.ToUpper() == "SUPPLIER")
                            {
                                int.TryParse(externalPurchaseOrder.IncomeTaxId, out var incomeTaxId);
                                var incomeTax = incomeTaxes.FirstOrDefault(f => f.Id.Equals(incomeTaxId));
                                if (incomeTax == null || string.IsNullOrWhiteSpace(incomeTax.COACodeCredit))
                                {
                                    incomeTax = new IncomeTaxCOAResult()
                                    {
                                        COACodeCredit = "9999.00"
                                    };
                                }

                                incomeTaxTotal = (decimal)incomeTaxRate / 100 * grandTotal;

                                //journalDebitItems.Add(new UAT.Data.Models.JournalTransactionItem()
                                //{
                                //    Coa = new ChartsOfAccount()
                                //    {
                                //        Code = unitReceiptNote.SupplierIsImport ? $"{category.ImportDebtCoa}.{division.Coacode}.{unit.Coacode}" : $"{category.LocalDebtCoa}.{division.Coacode}.{unit.Coacode}"
                                //    },
                                //    Debit = incomeTaxTotal
                                //});

                                //journalDebitItems.Add(new JournalTransactionItem()
                                //{
                                //    COA = new COA()
                                //    {
                                //        Code = $"{incomeTax.COACodeCredit}.{division.COACode}.{unit.COACode}"
                                //    },
                                //    Debit = incomeTaxTotal
                                //});

                                //journalCreditItems.Add(new JournalTransactionItem()
                                //{
                                //    COA = new COA()
                                //    {
                                //        Code = !string.IsNullOrWhiteSpace(form.Bank.AccountCOA) ? $"{form.Bank.AccountCOA}" : $"9999.00.{division.COACode}.{unit.COACode}"
                                //    },
                                //    Credit = incomeTaxTotal
                                //});
                            }

                            if (externalPurchaseOrder.UseVat)
                            {
                                vatTotal = grandTotal * (decimal)0.1;
                            }

                            if (unitReceiptNote.SupplierIsImport && ((decimal)externalPOPriceTotal * currencyRate) > 100000000)
                            {
                                //Purchasing Journal Item
                                //journalDebitItems.Add(new UAT.Data.Models.JournalTransactionItem()
                                //{
                                //    Coa = new ChartsOfAccount()
                                //    {
                                //        Code = $"{category.PurchasingCoa}.{division.Coacode}.{unit.Coacode}"
                                //    },
                                //    Debit = grandTotal,
                                //    Remark = $"- {unitReceiptNoteItem.ProductName}"
                                //});

                                //Debt Journal Item
                                journalDebitItems.Add(new JournalTransactionItem()
                                {
                                    COA = new COA()
                                    {
                                        Code = $"{category.ImportDebtCOA}.{division.COACode}.{unit.COACode}"
                                    },
                                    Debit  = grandTotal - incomeTaxTotal + vatTotal,
                                    Remark = $"- {unitReceiptNoteItem.ProductName}"
                                });

                                journalCreditItems.Add(new JournalTransactionItem()
                                {
                                    COA = new COA()
                                    {
                                        Code = !string.IsNullOrWhiteSpace(form.Bank.AccountCOA) ? $"{form.Bank.AccountCOA}" : $"9999.00.{division.COACode}.{unit.COACode}"
                                    },
                                    Credit = grandTotal - incomeTaxTotal + vatTotal
                                });

                                //Stock Journal Item
                                //journalDebitItems.Add(new UAT.Data.Models.JournalTransactionItem()
                                //{
                                //    Coa = new ChartsOfAccount()
                                //    {
                                //        Code = $"{category.StockCoa}.{division.Coacode}.{unit.Coacode}"
                                //    },
                                //    Debit = grandTotal,
                                //    Remark = $"- {unitReceiptNoteItem.ProductName}"
                                //});

                                //Purchasing Journal Item
                                //journalDebitItems.Add(new UAT.Data.Models.JournalTransactionItem()
                                //{
                                //    Coa = new ChartsOfAccount()
                                //    {
                                //        Code = $"{category.PurchasingCoa}.{division.Coacode}.{unit.Coacode}"
                                //    },
                                //    Debit = grandTotal,
                                //    Remark = $"- {unitReceiptNoteItem.ProductName}"
                                //});
                            }
                            else
                            {
                                //Purchasing Journal Item
                                //journalDebitItems.Add(new UAT.Data.Models.JournalTransactionItem()
                                //{
                                //    Coa = new ChartsOfAccount()
                                //    {
                                //        Code = $"{category.PurchasingCoa}.{division.Coacode}.{unit.Coacode}"
                                //    },
                                //    Debit = grandTotal,
                                //    Remark = $"- {unitReceiptNoteItem.ProductName}"
                                //});

                                if (SpecialCategoryCode.Contains(category.Code))
                                {
                                    //Stock Journal Item
                                    //journalDebitItems.Add(new UAT.Data.Models.JournalTransactionItem()
                                    //{
                                    //    Coa = new ChartsOfAccount()
                                    //    {
                                    //        Code = $"{category.StockCoa}.{division.Coacode}.{unit.Coacode}"
                                    //    },
                                    //    Debit = grandTotal,
                                    //    Remark = $"- {unitReceiptNoteItem.ProductName}"
                                    //});
                                }

                                //Debt Journal Item
                                journalDebitItems.Add(new JournalTransactionItem()
                                {
                                    COA = new COA()
                                    {
                                        Code = unitReceiptNote.SupplierIsImport ? $"{category.ImportDebtCOA}.{division.COACode}.{unit.COACode}" : $"{category.LocalDebtCOA}.{division.COACode}.{unit.COACode}"
                                    },
                                    Debit  = grandTotal - incomeTaxTotal + vatTotal,
                                    Remark = $"- {unitReceiptNoteItem.ProductName}"
                                });

                                journalCreditItems.Add(new JournalTransactionItem()
                                {
                                    COA = new COA()
                                    {
                                        Code = !string.IsNullOrWhiteSpace(form.Bank.AccountCOA) ? $"{form.Bank.AccountCOA}" : $"9999.00.{division.COACode}.{unit.COACode}"
                                    },
                                    Credit = grandTotal - incomeTaxTotal + vatTotal
                                });

                                //if (SpecialCategoryCode.Contains(category.Code))
                                //{
                                //    //Purchasing Journal Item
                                //    journalDebitItems.Add(new UAT.Data.Models.JournalTransactionItem()
                                //    {
                                //        Coa = new ChartsOfAccount()
                                //        {
                                //            Code = $"{category.PurchasingCoa}.{division.Coacode}.{unit.Coacode}"
                                //        },
                                //        Debit = grandTotal,
                                //        Remark = $"- {unitReceiptNoteItem.ProductName}"
                                //    });
                                //}
                            }
                        }
                    }
                }
            }

            journalDebitItems = journalDebitItems.GroupBy(grouping => grouping.COA.Code).Select(s => new JournalTransactionItem()
            {
                COA = new COA()
                {
                    Code = s.Key
                },
                Debit  = s.Sum(sum => Math.Round(sum.Debit.GetValueOrDefault(), 4)),
                Credit = 0
            }).ToList();
            journalTransactionToPost.Items.AddRange(journalDebitItems);

            journalCreditItems = journalCreditItems.GroupBy(grouping => grouping.COA.Code).Select(s => new JournalTransactionItem()
            {
                COA = new COA()
                {
                    Code = s.Key
                },
                Debit  = 0,
                Credit = s.Sum(sum => Math.Round(sum.Credit.GetValueOrDefault(), 4))
            }).ToList();
            journalTransactionToPost.Items.AddRange(journalCreditItems);

            if (journalTransactionToPost.Items.Any(item => item.COA.Code.Split(".").FirstOrDefault().Equals("9999")))
            {
                journalTransactionToPost.Status = "DRAFT";
            }

            var journalTransactionUri = "journal-transactions";
            var httpClient            = _serviceProvider.GetService <IHttpClientService>();
            var response = await httpClient.PostAsync($"{APIEndpoint.Finance}{journalTransactionUri}", new StringContent(JsonConvert.SerializeObject(journalTransactionToPost).ToString(), Encoding.UTF8, General.JsonMediaType));

            return((int)response.StatusCode);
        }