public async Task <int> CreateAsync(OthersExpenditureProofDocumentCreateUpdateViewModel viewModel)
        {
            var model = viewModel.MapToModel();

            model.DocumentNo = DocumentNoGenerator(viewModel);
            EntityExtension.FlagForCreate(model, _identityService.Username, _userAgent);
            _dbSet.Add(model);
            await _dbContext.SaveChangesAsync();

            var itemModels = viewModel.MapItemToModel().Select(item =>
            {
                EntityExtension.FlagForCreate(item, _identityService.Username, _userAgent);
                item.OthersExpenditureProofDocumentId = model.Id;
                return(item);
            }).ToList();

            _itemDbSet.UpdateRange(itemModels);
            await _dbContext.SaveChangesAsync();

            await _autoJournalService.AutoJournalFromOthersExpenditureProof(viewModel, model.DocumentNo);

            await _autoDailyBankTransactionService.AutoCreateFromOthersExpenditureProofDocument(model, itemModels);

            return(_taskDone);
        }
        public async Task <string> Posting(List <int> ids)
        {
            var models     = _dbContext.OthersExpenditureProofDocuments.Where(entity => ids.Contains(entity.Id)).ToList();
            var itemModels = _dbContext.OthersExpenditureProofDocumentItems.Where(entity => ids.Contains(entity.OthersExpenditureProofDocumentId)).ToList();
            var result     = "";

            foreach (var model in models)
            {
                if (model.IsPosted)
                {
                    result += "Nomor " + model.DocumentNo + ", ";
                }
                else
                {
                    var items = itemModels.Where(element => element.OthersExpenditureProofDocumentId == model.Id).ToList();

                    await _autoJournalService.AutoJournalFromOthersExpenditureProof(model, items);

                    await _autoDailyBankTransactionService.AutoCreateFromOthersExpenditureProofDocument(model, items);

                    model.IsPosted = true;
                    EntityExtension.FlagForUpdate(model, _identityService.Username, _userAgent);

                    await _dbContext.SaveChangesAsync();
                }
            }

            return(result);
        }