public AjaxReturn DetailSave(Full_Member json) { Utils.Check(json.MemberTypeId > 0, "Must choose membership type"); Utils.Check(!string.IsNullOrWhiteSpace(json.Name), "Name must be filled in"); Utils.Check(json.MemberNo > 0, "Must assign a membership number"); Utils.Check(json.PaymentAmount >= 0, "Payment amount may not be negative"); if (json.idMember == null && json.PaymentAmount == 0 && json.NumberOfPayments > 0) { json.PaymentAmount = Math.Round(json.AnnualSubscription / json.NumberOfPayments); } Database.BeginTransaction(); // Record contains most of the data from the associated NameAddress record - save that first JObject nameAddress = json.ToJObject(); if (json.NameAddressId > 0) { nameAddress["idNameAddress"] = json.NameAddressId; } nameAddress["Type"] = "M"; Database.Update("NameAddress", nameAddress); json.NameAddressId = nameAddress.AsInt("idNameAddress"); AjaxReturn r = SaveRecord(json, true); if (r.error == null) { Database.Commit(); } return(r); }