public async Task <int> UpdateAsync(int id, GarmentLeftoverWarehouseReceiptFabric model)
        {
            using (var transaction = DbContext.Database.CurrentTransaction ?? DbContext.Database.BeginTransaction())
            {
                try
                {
                    int Updated = 0;

                    GarmentLeftoverWarehouseReceiptFabric existingModel = await DbSet.Where(w => w.Id == id).FirstOrDefaultAsync();

                    if (existingModel.ReceiptDate != model.ReceiptDate)
                    {
                        existingModel.ReceiptDate = model.ReceiptDate;
                    }
                    if (existingModel.Remark != model.Remark)
                    {
                        existingModel.Remark = model.Remark;
                    }

                    existingModel.FlagForUpdate(IdentityService.Username, UserAgent);

                    Updated = await DbContext.SaveChangesAsync();

                    transaction.Commit();

                    return(Updated);
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw e;
                }
            }
        }
        public async Task <int> CreateAsync(GarmentLeftoverWarehouseReceiptFabric model)
        {
            using (var transaction = DbContext.Database.CurrentTransaction ?? DbContext.Database.BeginTransaction())
            {
                try
                {
                    int Created = 0;

                    model.FlagForCreate(IdentityService.Username, UserAgent);
                    model.FlagForUpdate(IdentityService.Username, UserAgent);

                    model.ReceiptNoteNo = GenerateNo(model);

                    foreach (var item in model.Items)
                    {
                        item.FlagForCreate(IdentityService.Username, UserAgent);
                        item.FlagForUpdate(IdentityService.Username, UserAgent);
                    }
                    DbSet.Add(model);
                    Created = await DbContext.SaveChangesAsync();

                    foreach (var item in model.Items)
                    {
                        GarmentLeftoverWarehouseStock stock = new GarmentLeftoverWarehouseStock
                        {
                            ReferenceType = GarmentLeftoverWarehouseStockReferenceTypeEnum.FABRIC,
                            UnitId        = model.UnitFromId,
                            UnitCode      = model.UnitFromCode,
                            UnitName      = model.UnitFromName,
                            PONo          = item.POSerialNumber,
                            UomId         = item.UomId,
                            UomUnit       = item.UomUnit,
                            Quantity      = item.Quantity,
                            ProductCode   = item.ProductCode,
                            ProductId     = item.ProductId,
                            ProductName   = item.ProductName,
                            BasicPrice    = item.BasicPrice
                        };
                        await StockService.StockIn(stock, model.ReceiptNoteNo, model.Id, item.Id);
                    }

                    await UpdateUnitExpenditureNoteIsReceived(model.UENId, true);

                    transaction.Commit();

                    return(Created);
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw e;
                }
            }
        }