public async Task Should_Success_ReportDailyBalance_Excel()
        {
            DailyBankTransactionService service = new DailyBankTransactionService(GetServiceProvider().Object, _dbContext(GetCurrentMethod()));
            DailyBankTransactionModel   model   = _dataUtil(service).GetNewData();

            model.Status     = "OUT";
            model.SourceType = "Pendanaan";
            await service.CreateInOutTransactionAsync(model);

            var data = service.GenerateExcelDailyBalance(model.AccountBankId, DateTime.Now.AddDays(-7), DateTime.Now.AddDays(7), 0);

            Assert.NotNull(data);
        }
        public async Task Should_Success_Delete_By_ReferenceNo()
        {
            DailyBankTransactionService service = new DailyBankTransactionService(GetServiceProvider().Object, _dbContext(GetCurrentMethod()));
            DailyBankTransactionModel   model   = _dataUtil(service).GetNewData();

            model.Date   = new DateTime(2018, 1, 1);
            model.Status = "IN";
            var modelResponse = await service.CreateAsync(model);

            var Response = await service.DeleteByReferenceNoAsync(model.ReferenceNo);

            Assert.NotEqual(0, Response);
        }
        public async Task Should_Success_Delete_Data()
        {
            DailyBankTransactionService service = new DailyBankTransactionService(GetServiceProvider().Object, _dbContext(GetCurrentMethod()));
            DailyBankTransactionModel   model   = await _dataUtil(service).GetTestDataNotPosted();

            var newModel = await service.ReadByIdAsync(model.Id);

            newModel.FinancingSourceReferenceId = 1;

            var Response = await service.DeleteAsync(newModel.Id);

            Assert.NotEqual(0, Response);
        }
        public async Task <int> CreateAsync(DailyBankTransactionModel model)
        {
            do
            {
                model.Code = CodeGenerator.Generate();
            }while (_DbSet.Any(d => d.Code.Equals(model.Code)));

            model.Date = model.Date.AddHours(_IdentityService.TimezoneOffset);
            UpdateRemainingBalance(model);

            EntityExtension.FlagForCreate(model, _IdentityService.Username, _UserAgent);

            _DbSet.Add(model);
            return(await _DbContext.SaveChangesAsync());
        }
Пример #5
0
        public async Task Should_Success_CreateInOut_Data()
        {
            DailyBankTransactionService service = new DailyBankTransactionService(GetServiceProvider().Object, _dbContext(GetCurrentMethod()));
            DailyBankTransactionModel   model   = _dataUtil(service).GetNewData();

            model.Status     = "OUT";
            model.SourceType = "Pendanaan";
            var Response = await service.CreateInOutTransactionAsync(model);

            Assert.NotEqual(0, Response);
            var vm = _dataUtil(service).GetDataToValidate();

            vm.Status     = "OUT";
            vm.SourceType = "Pendanaan";
            Assert.True(vm.Validate(null).Count() > 0);
        }
Пример #6
0
        public async Task Should_Success_Create_December()
        {
            DailyBankTransactionService service = new DailyBankTransactionService(GetServiceProvider().Object, _dbContext(GetCurrentMethod()));
            DailyBankTransactionModel   model   = _dataUtil(service).GetNewData();

            model.Date = new DateTime(2018, 1, 1);
            var modelResponse = await service.CreateAsync(model);

            DailyBankTransactionModel previousMonthModel = _dataUtil(service).GetNewData();

            previousMonthModel.Date = new DateTime(2017, 12, 1);

            var Response = await service.CreateAsync(previousMonthModel);

            Assert.NotEqual(0, Response);
        }
        public async Task <int> CreateInOutTransactionAsync(DailyBankTransactionModel model)
        {
            int result     = 0;
            var inputModel = model.Clone();

            inputModel.AccountBankAccountName    = model.DestinationBankAccountName;
            inputModel.AccountBankAccountNumber  = model.DestinationBankAccountNumber;
            inputModel.AccountBankCode           = model.DestinationBankCode;
            inputModel.AccountBankCurrencyCode   = model.DestinationBankCurrencyCode;
            inputModel.AccountBankCurrencyId     = model.DestinationBankCurrencyId;
            inputModel.AccountBankCurrencySymbol = model.DestinationBankCurrencySymbol;
            inputModel.AccountBankId             = model.DestinationBankId;
            inputModel.AccountBankName           = model.DestinationBankName;
            inputModel.Status = "IN";
            inputModel.DestinationBankAccountName    = "";
            inputModel.DestinationBankAccountNumber  = "";
            inputModel.DestinationBankCode           = "";
            inputModel.DestinationBankCurrencyCode   = "";
            inputModel.DestinationBankCurrencyId     = 0;
            inputModel.DestinationBankCurrencySymbol = "";
            inputModel.DestinationBankId             = 0;
            inputModel.DestinationBankName           = "";
            inputModel.Nominal      = model.TransactionNominal;
            inputModel.NominalValas = model.NominalValas;
            inputModel.CurrencyRate = model.CurrencyRate;

            model.Remark      = FormatOutRemark(model);
            inputModel.Remark = FormatInRemark(inputModel, model);

            using (var transaction = _DbContext.Database.BeginTransaction())
            {
                try
                {
                    result += await CreateAsync(model);

                    result += await CreateAsync(inputModel);

                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
            }
            return(result);
        }
        public DailyBankTransactionModel GetNewData()
        {
            DailyBankTransactionModel TestData = new DailyBankTransactionModel()
            {
                AccountBankAccountName    = "AccountName",
                AccountBankAccountNumber  = "AccountNumber",
                AccountBankCode           = "BankCode",
                AccountBankCurrencyCode   = "CurrencyCode",
                AccountBankCurrencyId     = 1,
                AccountBankCurrencySymbol = "CurrencySymbol",
                AccountBankId             = 1,
                AccountBankName           = "BankName",
                AfterNominal  = 0,
                BeforeNominal = 0,
                BuyerCode     = "BuyerCode",
                BuyerId       = 1,
                BuyerName     = "BuyerName",
                Date          = DateTimeOffset.UtcNow,
                Nominal       = 1000,
                ReferenceNo   = "",
                ReferenceType = "ReferenceType",
                Remark        = "Remark",
                SourceType    = "Operasional",
                Status        = "IN",
                SupplierCode  = "SupplierCode",
                SupplierName  = "SupplierName",
                SupplierId    = 1,
                DestinationBankAccountName    = "AccountName",
                DestinationBankAccountNumber  = "AccountNumber",
                DestinationBankCode           = "BankCode",
                DestinationBankCurrencyCode   = "CurrencyCode",
                DestinationBankCurrencyId     = 1,
                DestinationBankCurrencySymbol = "CurrencySymbol",
                DestinationBankId             = 1,
                DestinationBankName           = "BankName",
                IsPosted           = true,
                AfterNominalValas  = 1,
                BeforeNominalValas = 1,
                TransactionNominal = 1,
                NominalValas       = 1,
                Receiver           = "Receiver",
            };

            return(TestData);
        }
Пример #9
0
        public async Task Should_Succes_When_Create_New_Data_With_Non_Exist_Next_Month_Or_Previous_Month_Balance()
        {
            DailyBankTransactionService service = new DailyBankTransactionService(GetServiceProvider().Object, _dbContext(GetCurrentMethod()));
            DailyBankTransactionModel   model   = _dataUtil(service).GetNewData();

            if (DateTime.Now.Month < 7)
            {
                model.Date = new DateTime(DateTime.Now.Year - 1, 8, 1);
            }
            else
            {
                model.Date = model.Date.AddMonths(-6);
            }

            var Response = await service.CreateAsync(model);

            Assert.NotEqual(0, Response);
        }
        public async Task Should_Success_Update_Data()
        {
            DailyBankTransactionService service = new DailyBankTransactionService(GetServiceProvider().Object, _dbContext(GetCurrentMethod()));
            DailyBankTransactionModel   model   = await _dataUtil(service).GetTestDataNotPosted();

            var newModel = await service.ReadByIdAsync(model.Id);

            newModel.ReferenceNo = "";
            newModel.SourceType  = "Pendanaan";
            var Response = await service.UpdateAsync(newModel.Id, newModel);

            Assert.NotEqual(0, Response);

            newModel.ReferenceNo = "";
            newModel.Status      = "IN";
            var Response2 = await service.UpdateAsync(newModel.Id, newModel);

            Assert.NotEqual(0, Response2);
        }
        public async Task <int> AutoCreateFromClearenceVB(List <int> vbRealizationIds, AccountBankViewModel accountBank)
        {
            var realizations = _dbContext.VBRealizationDocuments.Where(entity => vbRealizationIds.Contains(entity.Id) && entity.Type == VBRequestDocument.VBType.WithPO).ToList();

            var result = 0;

            foreach (var realization in realizations)
            {
                var realizationItems          = _dbContext.VBRealizationDocumentUnitCostsItems.Where(entity => entity.VBRealizationDocumentId == realization.Id).ToList();
                var dailyBankTransactionModel = new DailyBankTransactionModel()
                {
                    AccountBankAccountName    = accountBank.AccountName,
                    AccountBankAccountNumber  = accountBank.AccountNumber,
                    AccountBankCode           = accountBank.BankCode,
                    AccountBankCurrencyCode   = accountBank.Currency.Code,
                    AccountBankCurrencyId     = (int)accountBank.Currency.Id,
                    AccountBankCurrencySymbol = accountBank.Currency.Symbol,
                    AccountBankId             = accountBank.Id,
                    AccountBankName           = accountBank.BankName,
                    Date          = realization.Date,
                    Nominal       = realizationItems.Sum(item => item.Amount),
                    CurrencyRate  = (decimal)realization.CurrencyRate,
                    ReferenceNo   = realization.DocumentNo,
                    ReferenceType = "Clearence VB",
                    Remark        = $"{realization.Remark}\n\nPembayaran atas {accountBank.Currency.Code} dengan nominal {string.Format("{0:n}", realizationItems.Sum(item => item.Amount))}",
                    SourceType    = "OPERASIONAL",
                    Status        = "OUT",
                    IsPosted      = true
                };

                if (accountBank.Currency.Code != "IDR")
                {
                    dailyBankTransactionModel.NominalValas = realizationItems.Sum(item => item.Amount) * (decimal)realization.CurrencyRate;
                }

                result += await _dailyBankTransactionService.CreateAsync(dailyBankTransactionModel);
            }


            return(result);
        }
Пример #12
0
        public Task <int> AutoCreateFromPaymentDisposition(PaymentDispositionNoteModel model)
        {
            var nominal = model.Items.Sum(item => Math.Round((decimal)item.SupplierPayment, 2));
            var dailyBankTransactionModel = new DailyBankTransactionModel()
            {
                AccountBankAccountName    = model.BankAccountName,
                AccountBankAccountNumber  = model.BankAccountNumber,
                AccountBankCode           = model.BankCode,
                AccountBankCurrencyCode   = model.BankCurrencyCode,
                AccountBankCurrencyId     = model.BankCurrencyId,
                AccountBankCurrencySymbol = model.BankCurrencyCode,
                AccountBankId             = model.BankId,
                AccountBankName           = model.BankName,
                Date          = model.PaymentDate,
                Nominal       = nominal,
                CurrencyRate  = (decimal)model.CurrencyRate,
                ReferenceNo   = model.PaymentDispositionNo,
                ReferenceType = "Pembayaran Disposisi",
                Remark        = model.CurrencyCode != "IDR" ? $"Pembayaran atas {model.BankCurrencyCode} dengan nominal {string.Format("{0:n}", nominal)} dan kurs {model.CurrencyCode}" : "",
                SourceType    = model.TransactionType,
                SupplierCode  = model.SupplierCode,
                SupplierId    = model.SupplierId,
                SupplierName  = model.SupplierName,
                Status        = "OUT",
                IsPosted      = true
            };

            if (model.BankCurrencyCode != "IDR")
            {
                dailyBankTransactionModel.Nominal      = Math.Round(nominal * (decimal)model.CurrencyRate, 2);
                dailyBankTransactionModel.NominalValas = nominal;
            }
            else if (model.CurrencyCode != "IDR")
            {
                dailyBankTransactionModel.Nominal = Math.Round(nominal * (decimal)model.CurrencyRate, 2);
            }

            return(_dailyBankTransactionService.CreateAsync(dailyBankTransactionModel));
        }
Пример #13
0
        public async Task <int> AutoCreateFromGarmentBankExpenditureDPPVAT(DPPVATBankExpenditureNoteModel model)
        {
            var accountBank = await GetAccountBank(model.BankAccountId);

            var dailyBankTransactionModel = new DailyBankTransactionModel()
            {
                AccountBankAccountName    = accountBank.AccountName,
                AccountBankAccountNumber  = accountBank.AccountNumber,
                AccountBankCode           = accountBank.BankCode,
                AccountBankCurrencyCode   = accountBank.Currency.Code,
                AccountBankCurrencyId     = accountBank.Currency.Id,
                AccountBankCurrencySymbol = accountBank.Currency.Symbol,
                AccountBankId             = accountBank.Id,
                AccountBankName           = accountBank.BankName,
                Date        = model.Date,
                Nominal     = (decimal)model.Amount,
                ReferenceNo = model.DocumentNo,
                Remark      = "Pembayaran Lain - lain",
                SourceType  = "OPERASIONAL",
                Status      = "IN"
            };

            return(await _dailyBankTransactionService.CreateAsync(dailyBankTransactionModel));
        }
        public async Task <int> AutoRevertFromOthersExpenditureProofDocument(OthersExpenditureProofDocumentModel model, List <OthersExpenditureProofDocumentItemModel> itemModels)
        {
            var accountBank = await GetAccountBank(model.AccountBankId);

            var dailyBankTransactionModel = new DailyBankTransactionModel()
            {
                AccountBankAccountName    = accountBank.AccountName,
                AccountBankAccountNumber  = accountBank.AccountNumber,
                AccountBankCode           = accountBank.BankCode,
                AccountBankCurrencyCode   = accountBank.Currency.Code,
                AccountBankCurrencyId     = accountBank.Currency.Id,
                AccountBankCurrencySymbol = accountBank.Currency.Symbol,
                AccountBankId             = accountBank.Id,
                AccountBankName           = accountBank.BankName,
                Date        = model.Date,
                Nominal     = itemModels.Sum(item => item.Debit),
                ReferenceNo = model.DocumentNo,
                Remark      = "Pembayaran Lain - lain",
                SourceType  = model.Type,
                Status      = "IN"
            };

            return(await _dailyBankTransactionService.CreateAsync(dailyBankTransactionModel));
        }
Пример #15
0
        public async Task <int> AutoCreateFromOthersExpenditureProofDocument(OthersExpenditureProofDocumentModel model, List <OthersExpenditureProofDocumentItemModel> itemModels)
        {
            var accountBank = await GetAccountBank(model.AccountBankId);

            var total = itemModels.Sum(element => element.Debit);

            var dailyBankTransactionModel = new DailyBankTransactionModel()
            {
                AccountBankAccountName    = accountBank.AccountName,
                AccountBankAccountNumber  = accountBank.AccountNumber,
                AccountBankCode           = accountBank.BankCode,
                AccountBankCurrencyCode   = accountBank.Currency.Code,
                AccountBankCurrencyId     = accountBank.Currency.Id,
                AccountBankCurrencySymbol = accountBank.Currency.Symbol,
                AccountBankId             = accountBank.Id,
                AccountBankName           = accountBank.BankName,
                Date          = model.Date,
                Nominal       = itemModels.Sum(item => item.Debit),
                CurrencyRate  = (decimal)model.CurrencyRate,
                ReferenceNo   = model.DocumentNo,
                ReferenceType = "Pengeluaran Bank Lain-lain",
                Remark        = $"{model.Remark}\n\nPembayaran atas {accountBank.Currency.Code} dengan nominal {string.Format("{0:n}", total)}",
                SourceType    = model.Type,
                Status        = "OUT",
                IsPosted      = true
            };

            if (accountBank.Currency.Code != "IDR")
            {
                dailyBankTransactionModel.Nominal      = itemModels.Sum(item => item.Debit) * (decimal)model.CurrencyRate;
                dailyBankTransactionModel.NominalValas = itemModels.Sum(item => item.Debit);
            }
            ;

            return(await _dailyBankTransactionService.CreateAsync(dailyBankTransactionModel));
        }
        private void SetNewActualBalanceByMonth(int month, int year, DailyBankTransactionModel model, decimal nominal)
        {
            var PreviousMonthBalance = GetPreviousMonthBalance(month, year);
            var NextMonthBalance     = GetNextMonthBalance(month, year);
            var NewMonthBalance      = new BankTransactionMonthlyBalanceModel
            {
                Month            = month,
                Year             = year,
                InitialBalance   = PreviousMonthBalance != null ? PreviousMonthBalance.RemainingBalance : 0,
                RemainingBalance = PreviousMonthBalance != null ? PreviousMonthBalance.RemainingBalance + (double)nominal : (double)nominal,
                AccountBankId    = model.AccountBankId
            };

            EntityExtension.FlagForCreate(NewMonthBalance, _IdentityService.Username, _UserAgent);
            _DbMonthlyBalanceSet.Add(NewMonthBalance);

            if (NextMonthBalance != null)
            {
                NextMonthBalance.InitialBalance    = NewMonthBalance.RemainingBalance;
                NextMonthBalance.RemainingBalance += (double)nominal;
                EntityExtension.FlagForUpdate(NextMonthBalance, _IdentityService.Username, _UserAgent);
                _DbMonthlyBalanceSet.Update(NextMonthBalance);
            }
        }
 private string FormatOutRemark(DailyBankTransactionModel model)
 {
     return(!string.IsNullOrWhiteSpace(model.Remark) ? $"{model.Remark}\n\nPendanaan untuk {model.DestinationBankAccountName} - {model.DestinationBankName} - {model.DestinationBankAccountNumber} - {model.DestinationBankCurrencyCode}\nSenilai {string.Format("{0:0,0.0}", model.TransactionNominal)} {model.DestinationBankCurrencyCode}" : $"Pendanaan untuk {model.DestinationBankAccountName} - {model.DestinationBankName} - {model.DestinationBankAccountNumber} - {model.DestinationBankCurrencyCode}\nSenilai {string.Format("{0:0,0.0}", model.TransactionNominal)} {model.DestinationBankCurrencyCode}");
 }
        public async Task Should_Success_AutoJournalFromDailyBankTransaction()
        {
            //Setup
            var dbContext           = GetDbContext(GetCurrentMethod());
            var serviceProviderMock = GetServiceProvider();

            serviceProviderMock.Setup(s => s.GetService(typeof(FinanceDbContext))).Returns(dbContext);
            serviceProviderMock
            .Setup(x => x.GetService(typeof(IHttpClientService)))
            .Returns(new JournalHttpClientTestService());

            Mock <IJournalTransactionService> journalTransactionServiceMock = new Mock <IJournalTransactionService>();

            journalTransactionServiceMock.Setup(s => s.CreateAsync(It.IsAny <JournalTransactionModel>())).ReturnsAsync(1);

            serviceProviderMock
            .Setup(x => x.GetService(typeof(IJournalTransactionService)))
            .Returns(journalTransactionServiceMock.Object);

            var masterCOAServiceMock = new MasterCOAService(serviceProviderMock.Object);

            serviceProviderMock
            .Setup(x => x.GetService(typeof(IMasterCOAService)))
            .Returns(masterCOAServiceMock);

            var httpClientService       = new Mock <IHttpClientService>();
            HttpResponseMessage message = new HttpResponseMessage(System.Net.HttpStatusCode.OK);

            message.Content = new StringContent("{\"data\":{\"Id\":7,\"Code\":\"BB\",\"Rate\":13700.0,\"Date\":\"2018/10/20\"}}");

            httpClientService
            .Setup(x => x.GetAsync(It.IsAny <string>()))
            .ReturnsAsync(message);

            serviceProviderMock
            .Setup(x => x.GetService(typeof(IHttpClientService)))
            .Returns(httpClientService.Object);
            var service = new AutoJournalService(dbContext, serviceProviderMock.Object);

            AccountBank acc1 = new AccountBank()
            {
                AccountCOA    = "AccountCOA",
                AccountName   = "AccountName",
                AccountNumber = "AccountNumber",
                BankCode      = "BankCode",
                BankName      = "BankName",
                Currency      = new Currency()
                {
                    Code   = "Rp",
                    Symbol = "IDR"
                },
            };
            AccountBank acc2 = new AccountBank()
            {
                AccountCOA    = "AccountCOA",
                AccountName   = "AccountName",
                AccountNumber = "AccountNumber",
                BankCode      = "BankCode",
                BankName      = "BankName",
                Currency      = new Currency()
                {
                    Code   = "dolar",
                    Symbol = "USD"
                },
            };

            DailyBankTransactionModel dailyModel = new DailyBankTransactionModel()
            {
                AccountBankAccountName    = "AccountName",
                AccountBankAccountNumber  = "AccountNumber",
                AccountBankCode           = "BankCode",
                AccountBankCurrencyCode   = "CurrencyCode",
                AccountBankCurrencyId     = 1,
                AccountBankCurrencySymbol = "CurrencySymbol",
                AccountBankId             = 1,
                AccountBankName           = "BankName",
                AfterNominal                  = 0,
                BeforeNominal                 = 0,
                BuyerCode                     = "BuyerCode",
                BuyerId                       = 1,
                BuyerName                     = "BuyerName",
                Date                          = DateTimeOffset.UtcNow,
                Nominal                       = 1000,
                ReferenceNo                   = "",
                ReferenceType                 = "ReferenceType",
                Remark                        = "Remark",
                SourceType                    = "Pendanaan",
                SourceFundingType             = "Internal",
                Status                        = "IN",
                SupplierCode                  = "SupplierCode",
                SupplierName                  = "SupplierName",
                SupplierId                    = 1,
                DestinationBankAccountName    = "AccountName",
                DestinationBankAccountNumber  = "AccountNumber",
                DestinationBankCode           = "BankCode",
                DestinationBankCurrencyCode   = "CurrencyCode",
                DestinationBankCurrencyId     = 1,
                DestinationBankCurrencySymbol = "CurrencySymbol",
                DestinationBankId             = 1,
                DestinationBankName           = "BankName",
                IsPosted                      = true,
                AfterNominalValas             = 1,
                BeforeNominalValas            = 1,
                TransactionNominal            = 1,
                NominalValas                  = 1,
                Receiver                      = "Receiver",
                CurrencyRate                  = 10
            };

            //Act
            var result = await service.AutoJournalFromDailyBankTransaction(dailyModel, acc1, acc2);

            //Assert
            Assert.NotEqual(0, result);

            dailyModel.BankCharges = 100;
            var resultwithBankCharges = await service.AutoJournalFromDailyBankTransaction(dailyModel, acc1, acc2);

            Assert.NotEqual(0, resultwithBankCharges);

            dailyModel.DestinationBankCurrencyCode = "IDR";
            dailyModel.BankCharges = 100;
            dailyModel.Rates       = 100;
            var resultDiffCurrencyToIDR = await service.AutoJournalFromDailyBankTransaction(dailyModel, acc1, acc2);

            Assert.NotEqual(0, resultDiffCurrencyToIDR);

            dailyModel.DestinationBankCurrencyCode = "IDR";
            dailyModel.BankCharges = 0;
            dailyModel.Rates       = 100;
            var resultDiffCurrencyToIDRNoCharges = await service.AutoJournalFromDailyBankTransaction(dailyModel, acc1, acc2);

            Assert.NotEqual(0, resultDiffCurrencyToIDR);

            dailyModel.AccountBankCurrencyCode     = "IDR";
            dailyModel.DestinationBankCurrencyCode = "USD";
            dailyModel.BankCharges = 0;
            dailyModel.Rates       = 100;
            var resultDiffCurrencyNoCharges = await service.AutoJournalFromDailyBankTransaction(dailyModel, acc1, acc2);

            Assert.NotEqual(0, resultDiffCurrencyNoCharges);

            dailyModel.AccountBankCurrencyCode     = "IDR";
            dailyModel.DestinationBankCurrencyCode = "USD";
            dailyModel.BankCharges = 100;
            dailyModel.Rates       = 100;
            var resultDiffCurrency = await service.AutoJournalFromDailyBankTransaction(dailyModel, acc1, acc2);

            Assert.NotEqual(0, resultDiffCurrency);
        }
 private string FormatInRemark(DailyBankTransactionModel inputModel, DailyBankTransactionModel model)
 {
     return(!string.IsNullOrWhiteSpace(inputModel.Remark) ? $"{inputModel.Remark}\n\nPendanaan dari {model.AccountBankAccountName} - {model.AccountBankName} - {model.AccountBankAccountNumber} - {model.AccountBankCurrencyCode}\nSenilai {string.Format("{0:0,0.0}", model.Nominal)} {model.AccountBankCurrencyCode}" : $"Pendanaan dari {model.AccountBankAccountName} - {model.AccountBankName} - {model.AccountBankAccountNumber} - {model.AccountBankCurrencyCode}\nSenilai {string.Format("{0:0,0.0}", model.Nominal)} {model.AccountBankCurrencyCode}");
 }
 public Task <int> UpdateAsync(int id, DailyBankTransactionModel model)
 {
     throw new NotImplementedException();
 }
 public Task <int> CreateInOutTransactionAsync(DailyBankTransactionModel model)
 {
     throw new NotImplementedException();
 }
 public Task <int> CreateAsync(DailyBankTransactionModel model)
 {
     return(Task.FromResult(1));
 }
Пример #23
0
        public async Task <int> AutoJournalFromDailyBankTransaction(DailyBankTransactionModel model, AccountBank accountBank, AccountBank accountBankDestination)
        {
            await Task.Delay(1000);

            return(await Task.FromResult(1));
        }
Пример #24
0
        public async Task <int> AutoCreateFromClearenceVB(List <int> vbRealizationIds, AccountBankViewModel accountBank, string referenceNo)
        {
            var realizations = _dbContext.VBRealizationDocuments.Where(entity => vbRealizationIds.Contains(entity.Id) /*&& entity.Type == VBRequestDocument.VBType.WithPO*/).ToList();

            var result = 0;

            foreach (var realization in realizations)
            {
                var realizationItems = _dbContext.VBRealizationDocumentUnitCostsItems.Where(entity => entity.VBRealizationDocumentId == realization.Id).ToList();
                var BICurrency       = await GetBICurrency(realization.CurrencyCode, realization.Date);

                var dailyBankTransactionModel = new DailyBankTransactionModel()
                {
                    AccountBankAccountName    = accountBank.AccountName,
                    AccountBankAccountNumber  = accountBank.AccountNumber,
                    AccountBankCode           = accountBank.BankCode,
                    AccountBankCurrencyCode   = accountBank.Currency.Code,
                    AccountBankCurrencyId     = (int)accountBank.Currency.Id,
                    AccountBankCurrencySymbol = accountBank.Currency.Symbol,
                    AccountBankId             = accountBank.Id,
                    AccountBankName           = accountBank.BankName,
                    Date         = realization.CompletedDate == null ? realization.Date : realization.CompletedDate.GetValueOrDefault(),
                    Nominal      = realizationItems.Sum(item => item.Amount),
                    CurrencyRate = (decimal)BICurrency.Rate,
                    ReferenceNo  = realization.ReferenceNo,
                    //ReferenceType = "Clearence VB",
                    Remark = $"Pembayaran atas {accountBank.Currency.Code} untuk:\nPermohonan VB {realization.VBRequestDocumentNo}\nRealisasi VB {realization.DocumentNo}",
                    //Remark = $"{realization.Remark}\n\nPembayaran atas {accountBank.Currency.Code} dengan nominal {string.Format("{0:n}", realizationItems.Sum(item => item.Amount))}",k
                    SourceType = "OPERASIONAL",
                    Status     = "OUT",
                    IsPosted   = true
                };

                if (realization.IsInklaring)
                {
                    dailyBankTransactionModel.ReferenceType = "Clearence VB Inklaring";
                }
                else if (realization.Type == VBType.NonPO)
                {
                    dailyBankTransactionModel.ReferenceType = "Clearence VB Non PO";
                }
                else
                {
                    dailyBankTransactionModel.ReferenceType = "Clearence VB With PO";
                }

                if (realization.CurrencyCode != "IDR")
                {
                    dailyBankTransactionModel.Nominal      = realizationItems.Sum(item => item.Amount) * (decimal)BICurrency.Rate;
                    dailyBankTransactionModel.NominalValas = realizationItems.Sum(item => item.Amount);
                }

                //if (accountBank.Currency.Code != "IDR")
                //    dailyBankTransactionModel.NominalValas = realizationItems.Sum(item => item.Amount) * (decimal)realization.CurrencyRate;

                result += await _dailyBankTransactionService.CreateAsync(dailyBankTransactionModel);
            }


            return(result);
        }