//public int CreateNonPO(VBRequestDocumentNonPOFormDto form)
        public async Task <int> CreateNonPO(VBRequestDocumentNonPOFormDto form)
        {
            var internalTransaction = _dbContext.Database.CurrentTransaction == null;
            var transaction         = !internalTransaction ? _dbContext.Database.CurrentTransaction : _dbContext.Database.BeginTransaction();

            try
            {
                var existingData = _dbContext.VBRequestDocuments.Where(a => a.Date.AddHours(_identityService.TimezoneOffset).Month == form.Date.GetValueOrDefault().AddHours(_identityService.TimezoneOffset).Month).OrderByDescending(s => s.Index).FirstOrDefault();
                var documentNo   = GetDocumentNo(form, existingData);
                var model        = new VBRequestDocumentModel(
                    documentNo.Item1,
                    form.Date.GetValueOrDefault(),
                    form.RealizationEstimationDate.GetValueOrDefault(),
                    form.SuppliantUnit.Id.GetValueOrDefault(),
                    form.SuppliantUnit.Code,
                    form.SuppliantUnit.Name,
                    form.SuppliantUnit.Division.Id.GetValueOrDefault(),
                    form.SuppliantUnit.Division.Code,
                    form.SuppliantUnit.Division.Name,
                    form.Currency.Id.GetValueOrDefault(),
                    form.Currency.Code,
                    form.Currency.Symbol,
                    form.Currency.Description,
                    form.Currency.Rate.GetValueOrDefault(),
                    form.Purpose,
                    form.Amount.GetValueOrDefault(),
                    false,
                    false,
                    VBType.NonPO,
                    documentNo.Item2,
                    form.IsInklaring
                    );

                model.FlagForCreate(_identityService.Username, UserAgent);
                _dbContext.VBRequestDocuments.Add(model);
                await _dbContext.SaveChangesAsync();

                var items = AddNonPOItems(model.Id, form.Items);

                _dbContext.VBRequestDocumentItems.AddRange(items);
                await _dbContext.SaveChangesAsync();

                if (internalTransaction)
                {
                    transaction.Commit();
                }

                return(model.Id);
            }
            catch (Exception ex)
            {
                if (internalTransaction)
                {
                    transaction.Rollback();
                }
                throw ex;
            }
        }