Add Education Level, Degree, Religion, Social Category & Income fields to Client module

- Migration 0256: EducationLevel & DegreeQualification codes with m_client FK columns
- Migration 0257: Religion & SocialCategory codes with m_client FK columns
- Migration 0258: agriculture_income & non_agriculture_income decimal columns on m_client
- Full API support: create, update, template options, and GET response for all new fields
- Postman collection for testing all new dropdowns

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Aditya
2026-04-27 16:31:55 +05:30
co-authored by Claude Opus 4.6
parent b4429d04b0
commit 9fb43ad971
12 changed files with 941 additions and 5 deletions
@@ -76,6 +76,14 @@ public class ClientApiConstants {
public static final String MARITAL_STATUS = "MaritalStatus";
public static final String maritalStatusIdParamName = "maritalStatusId";
public static final String maritalStatusParamName = "maritalStatus";
public static final String EDUCATION_LEVEL = "EducationLevel";
public static final String educationLevelIdParamName = "educationLevelId";
public static final String DEGREE_QUALIFICATION = "DegreeQualification";
public static final String degreeQualificationIdParamName = "degreeQualificationId";
public static final String RELIGION = "Religion";
public static final String religionIdParamName = "religionId";
public static final String SOCIAL_CATEGORY = "SocialCategory";
public static final String socialCategoryIdParamName = "socialCategoryId";
public static final String CLIENT_TYPE_INDIVIDUAL = "Individual";
@@ -125,8 +133,14 @@ public class ClientApiConstants {
public static final String occupationCategoryParamName = "occupationCategory";
public static final String occupationIdParamName = "occupationId";
public static final String occupationParamName = "occupation";
public static final String educationLevelParamName = "educationLevel";
public static final String degreeQualificationParamName = "degreeQualification";
public static final String religionParamName = "religion";
public static final String socialCategoryParamName = "socialCategory";
public static final String monthlyIncomeParamName = "monthlyIncome";
public static final String annualTurnoverParamName = "annualTurnover";
public static final String agricultureIncomeParamName = "agricultureIncome";
public static final String nonAgricultureIncomeParamName = "nonAgricultureIncome";
public static final String ageYearsParamName = "ageYears";
public static final String ageMonthsParamName = "ageMonths";
public static final String ageDaysParamName = "ageDays";
@@ -232,8 +246,11 @@ public class ClientApiConstants {
officeNameParamName, transferToOfficeIdParamName, transferToOfficeNameParamName, hierarchyParamName, imageIdParamName,
imagePresentParamName, staffIdParamName, staffNameParamName, timelineParamName, groupsParamName, officeOptionsParamName,
staffOptionsParamName, dateOfBirthParamName, genderParamName, clientTypeParamName, clientClassificationParamName,
salutationParamName, occupationCategoryParamName, occupationParamName, maritalStatusParamName, monthlyIncomeParamName,
annualTurnoverParamName, ageYearsParamName, ageMonthsParamName, ageDaysParamName,
salutationParamName, occupationCategoryParamName, occupationParamName, maritalStatusParamName,
educationLevelParamName, degreeQualificationParamName,
religionParamName, socialCategoryParamName, monthlyIncomeParamName,
annualTurnoverParamName, agricultureIncomeParamName, nonAgricultureIncomeParamName,
ageYearsParamName, ageMonthsParamName, ageDaysParamName,
nationalityIdParamName, isMinorParamName, guardianClientIdParamName, guardianClientDisplayNameParamName, guardianRelationParamName,
dipVerifiedParamName, dipLookupLogIdParamName, dipTimestampParamName,
alternateMobileNoParamName, alternateDipVerifiedParamName, alternateDipLookupLogIdParamName, alternateDipTimestampParamName,
@@ -77,8 +77,14 @@ public final class ClientData implements Comparable<ClientData>, Serializable {
private CodeValueData occupationCategory;
private CodeValueData occupation;
private CodeValueData maritalStatus;
private CodeValueData educationLevel;
private CodeValueData degreeQualification;
private CodeValueData religion;
private CodeValueData socialCategory;
private BigDecimal monthlyIncome;
private BigDecimal annualTurnover;
private BigDecimal agricultureIncome;
private BigDecimal nonAgricultureIncome;
private Integer ageYears;
private Integer ageMonths;
private Integer ageDays;
@@ -130,6 +136,10 @@ public final class ClientData implements Comparable<ClientData>, Serializable {
private Collection<CodeValueData> clientClassificationOptions;
private Collection<CodeValueData> occupationCategoryOptions;
private Collection<CodeValueData> occupationOptions;
private Collection<CodeValueData> educationLevelOptions;
private Collection<CodeValueData> degreeQualificationOptions;
private Collection<CodeValueData> religionOptions;
private Collection<CodeValueData> socialCategoryOptions;
private Collection<CodeValueData> clientNonPersonConstitutionOptions;
private Collection<CodeValueData> clientNonPersonMainBusinessLineOptions;
private List<EnumOptionData> clientLegalFormOptions;
@@ -357,6 +367,10 @@ public final class ClientData implements Comparable<ClientData>, Serializable {
data.salutationOptions = salutationOptions;
data.occupationCategoryOptions = occupationCategoryOptions;
data.occupationOptions = occupationOptions;
data.educationLevelOptions = null;
data.degreeQualificationOptions = null;
data.religionOptions = null;
data.socialCategoryOptions = null;
return data;
}
@@ -382,9 +396,19 @@ public final class ClientData implements Comparable<ClientData>, Serializable {
data.occupation = clientData.occupation;
data.occupationCategoryOptions = templateData.occupationCategoryOptions;
data.occupationOptions = templateData.occupationOptions;
data.educationLevelOptions = templateData.educationLevelOptions;
data.degreeQualificationOptions = templateData.degreeQualificationOptions;
data.religionOptions = templateData.religionOptions;
data.socialCategoryOptions = templateData.socialCategoryOptions;
data.maritalStatus = clientData.maritalStatus;
data.educationLevel = clientData.educationLevel;
data.degreeQualification = clientData.degreeQualification;
data.religion = clientData.religion;
data.socialCategory = clientData.socialCategory;
data.monthlyIncome = clientData.monthlyIncome;
data.annualTurnover = clientData.annualTurnover;
data.agricultureIncome = clientData.agricultureIncome;
data.nonAgricultureIncome = clientData.nonAgricultureIncome;
data.ageYears = clientData.ageYears;
data.ageMonths = clientData.ageMonths;
data.ageDays = clientData.ageDays;
@@ -428,9 +452,19 @@ public final class ClientData implements Comparable<ClientData>, Serializable {
data.occupation = clientData.occupation;
data.occupationCategoryOptions = clientData.occupationCategoryOptions;
data.occupationOptions = clientData.occupationOptions;
data.educationLevelOptions = clientData.educationLevelOptions;
data.degreeQualificationOptions = clientData.degreeQualificationOptions;
data.religionOptions = clientData.religionOptions;
data.socialCategoryOptions = clientData.socialCategoryOptions;
data.maritalStatus = clientData.maritalStatus;
data.educationLevel = clientData.educationLevel;
data.degreeQualification = clientData.degreeQualification;
data.religion = clientData.religion;
data.socialCategory = clientData.socialCategory;
data.monthlyIncome = clientData.monthlyIncome;
data.annualTurnover = clientData.annualTurnover;
data.agricultureIncome = clientData.agricultureIncome;
data.nonAgricultureIncome = clientData.nonAgricultureIncome;
data.ageYears = clientData.ageYears;
data.ageMonths = clientData.ageMonths;
data.ageDays = clientData.ageDays;
@@ -470,8 +504,14 @@ public final class ClientData implements Comparable<ClientData>, Serializable {
data.occupationCategory = clientData.occupationCategory;
data.occupation = clientData.occupation;
data.maritalStatus = clientData.maritalStatus;
data.educationLevel = clientData.educationLevel;
data.degreeQualification = clientData.degreeQualification;
data.religion = clientData.religion;
data.socialCategory = clientData.socialCategory;
data.monthlyIncome = clientData.monthlyIncome;
data.annualTurnover = clientData.annualTurnover;
data.agricultureIncome = clientData.agricultureIncome;
data.nonAgricultureIncome = clientData.nonAgricultureIncome;
data.ageYears = clientData.ageYears;
data.ageMonths = clientData.ageMonths;
data.ageDays = clientData.ageDays;
@@ -212,12 +212,34 @@ public class Client extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@JoinColumn(name = "marital_status_cv_id")
private CodeValue maritalStatus;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "education_level_cv_id")
private CodeValue educationLevel;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "degree_qualification_cv_id")
private CodeValue degreeQualification;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "religion_cv_id")
private CodeValue religion;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "social_category_cv_id")
private CodeValue socialCategory;
@Column(name = "monthly_income")
private java.math.BigDecimal monthlyIncome;
@Column(name = "annual_turnover")
private java.math.BigDecimal annualTurnover;
@Column(name = "agriculture_income")
private java.math.BigDecimal agricultureIncome;
@Column(name = "non_agriculture_income")
private java.math.BigDecimal nonAgricultureIncome;
@Column(name = "nationality", length = 100)
private String nationality;
@@ -782,6 +804,38 @@ public class Client extends AbstractAuditableWithUTCDateTimeCustom<Long> {
this.maritalStatus = maritalStatus;
}
public Long educationLevelId() {
return this.educationLevel != null ? this.educationLevel.getId() : null;
}
public void updateEducationLevel(CodeValue educationLevel) {
this.educationLevel = educationLevel;
}
public Long degreeQualificationId() {
return this.degreeQualification != null ? this.degreeQualification.getId() : null;
}
public void updateDegreeQualification(CodeValue degreeQualification) {
this.degreeQualification = degreeQualification;
}
public Long religionId() {
return this.religion != null ? this.religion.getId() : null;
}
public void updateReligion(CodeValue religion) {
this.religion = religion;
}
public Long socialCategoryId() {
return this.socialCategory != null ? this.socialCategory.getId() : null;
}
public void updateSocialCategory(CodeValue socialCategory) {
this.socialCategory = socialCategory;
}
public void updateGender(CodeValue gender) {
this.gender = gender;
}