public async Task <int> CreateAsync(FPReturnInvToPurchasing model)
        {
            int Created = 0;

            using (var transaction = DbContext.Database.BeginTransaction())
            {
                try
                {
                    IFpRegradingResultDocsService fpRegradingResultDocsService = ServiceProvider.GetService <IFpRegradingResultDocsService>();
                    foreach (FPReturnInvToPurchasingDetail detail in model.FPReturnInvToPurchasingDetails)
                    {
                        fpRegradingResultDocsService.UpdateIsReturnedToPurchasing(detail.FPRegradingResultDocsId, true);
                        detail.FlagForCreate(IdentityService.Username, UserAgent);
                        detail.FlagForUpdate(IdentityService.Username, UserAgent);
                    }

                    model = await this.NoGenerator(model);

                    DbSet.Add(model);
                    Created = await DbContext.SaveChangesAsync();
                    await CreateInventoryDocumentAsync(model, "OUT");

                    transaction.Commit();
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new Exception("Insert Error : " + e.Message);
                }
            }

            return(Created);
        }
        public async Task <int> DeleteAsync(int id)
        {
            int Count = 0;


            using (var Transaction = this.DbContext.Database.BeginTransaction())
            {
                try
                {
                    IFpRegradingResultDocsService fpRegradingResultDocsService = ServiceProvider.GetService <IFpRegradingResultDocsService>();
                    FPReturnInvToPurchasing       fpReturnInvToPurchasing      = await ReadByIdAsync(id);

                    fpReturnInvToPurchasing.FlagForDelete(IdentityService.Username, UserAgent);
                    foreach (var item in fpReturnInvToPurchasing.FPReturnInvToPurchasingDetails)
                    {
                        fpRegradingResultDocsService.UpdateIsReturnedToPurchasing(item.FPRegradingResultDocsId, false);
                        item.FlagForDelete(IdentityService.Username, UserAgent);
                    }
                    Count = await DbContext.SaveChangesAsync();


                    await CreateInventoryDocumentAsync(fpReturnInvToPurchasing, "IN");

                    Transaction.Commit();
                }
                catch (Exception e)
                {
                    Transaction.Rollback();
                    throw new Exception("Delete Error : " + e.Message);
                }
            }

            return(Count);
        }
        public async Task <int> Create(FPReturnInvToPurchasing model)
        {
            int Created = 0;

            using (var transaction = this.fpReturnInvToPurchasingService.DbContext.Database.BeginTransaction())
            {
                try
                {
                    foreach (FPReturnInvToPurchasingDetail detail in model.FPReturnInvToPurchasingDetails)
                    {
                        fpRegradingResultDocsService.UpdateIsReturnedToPurchasing(detail.FPRegradingResultDocsId, true);
                        this.fpReturnInvToPurchasingDetailService.OnCreating(detail);
                    }

                    model = await this.NoGenerator(model);

                    Created = await this.fpReturnInvToPurchasingService.CreateAsync(model);

                    CreateInventoryDocument(model, "OUT");

                    transaction.Commit();
                }
                catch (ServiceValidationExeption e)
                {
                    transaction.Rollback();
                    throw new ServiceValidationExeption(e.ValidationContext, e.ValidationResults);
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new Exception("Insert Error : " + e.Message);
                }
            }

            return(Created);
        }