/// <summary>
        /// Save
        /// </summary>
        public void Save()
        {
            foreach (CategoriesAddTDS.CategoriesAddNewRow row in (CategoriesAddTDS.CategoriesAddNewDataTable)Data.Tables["CategoriesAddNew"])
            {
                // Insert category
                if ((!row.Deleted) && (!row.InDatabase))
                {
                    int? parentId = null; if (!row.IsParentIDNull()) parentId = row.ParentID;
                    InsertCategory(row.Type, row.Name, parentId, row.Deleted, row.COMPANY_ID);
                }

                // Update category
                if ((!row.Deleted) && (row.InDatabase))
                {
                    int companyId = row.COMPANY_ID;
                    CategoryGateway categoryGateway = new CategoryGateway();
                    categoryGateway.LoadByCategoryId(row.CategoryID, companyId);

                    int categoryId = row.CategoryID;
                    string originalType = categoryGateway.GetType(categoryId);
                    string originalName = categoryGateway.GetName(categoryId);
                    int? originalParentId = null; if (categoryGateway.GetParentId(categoryId).HasValue) originalParentId = (int)categoryGateway.GetParentId(categoryId);
                    bool originalDeleted = categoryGateway.GetDeleted(categoryId);

                    UpdateCategory(categoryId, originalType, originalName, originalParentId, originalDeleted, companyId, row.CategoryID, row.Type, row.Name, originalParentId, row.Deleted, companyId);
                }

                // Delete category
                if ((row.Deleted) && (row.InDatabase))
                {
                    int categoryId = row.CategoryID;
                    int? newCategoryId = null; if (!row.IsNewCategoryIDNull()) newCategoryId = row.NewCategoryID;
                    int companyId = row.COMPANY_ID;

                    UpdateUnitsAndRulesCategories(categoryId, newCategoryId, companyId);
                    DeleteCategory(categoryId, companyId);
                }
            }
        }