Add CIF number, Occupation Category & Occupation fields to Client module
- Added mandatory unique CIF number (auto-generated as CIF+padded ID) - Added Occupation Category dropdown (6 categories: Salaried, Business, Professional, Agriculture, Student, Others) - Added Occupation dropdown (54 occupations mapped to categories) - Both stored in m_code/m_code_value tables (same pattern as Gender) - Visible in client create/update API and personal data view - Includes Liquibase migrations 0227 & 0228 - Added Postman collection for User Management APIs Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
ba5365d4af
commit
90c21d40c1
@@ -0,0 +1,607 @@
|
|||||||
|
{
|
||||||
|
"info": {
|
||||||
|
"_postman_id": "user-mgmt-collection",
|
||||||
|
"name": "Fineract - User Management",
|
||||||
|
"description": "Fineract User Management APIs - Login, Create, Update, Change Password, Delete Users",
|
||||||
|
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
|
||||||
|
},
|
||||||
|
"auth": {
|
||||||
|
"type": "basic",
|
||||||
|
"basic": [
|
||||||
|
{
|
||||||
|
"key": "username",
|
||||||
|
"value": "{{username}}",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "password",
|
||||||
|
"value": "{{password}}",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"variable": [
|
||||||
|
{
|
||||||
|
"key": "baseUrl",
|
||||||
|
"value": "https://localhost:8443/fineract-provider/api"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "username",
|
||||||
|
"value": "mifos"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "password",
|
||||||
|
"value": "password"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "tenantId",
|
||||||
|
"value": "default"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "userId",
|
||||||
|
"value": "1"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"item": [
|
||||||
|
{
|
||||||
|
"name": "Authentication",
|
||||||
|
"item": [
|
||||||
|
{
|
||||||
|
"name": "Login (Self-Service)",
|
||||||
|
"request": {
|
||||||
|
"method": "POST",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "Content-Type",
|
||||||
|
"value": "application/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "fineract-platform-tenantid",
|
||||||
|
"value": "{{tenantId}}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"body": {
|
||||||
|
"mode": "raw",
|
||||||
|
"raw": "{\n \"username\": \"mifos\",\n \"password\": \"password\"\n}"
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"raw": "{{baseUrl}}/v1/self/authentication?returnClientList=true",
|
||||||
|
"host": ["{{baseUrl}}"],
|
||||||
|
"path": ["v1", "self", "authentication"],
|
||||||
|
"query": [
|
||||||
|
{
|
||||||
|
"key": "returnClientList",
|
||||||
|
"value": "true"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"description": "Authenticates a user and returns auth token. Use this for self-service users."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Login (Basic Auth Test)",
|
||||||
|
"request": {
|
||||||
|
"method": "GET",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "fineract-platform-tenantid",
|
||||||
|
"value": "{{tenantId}}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"url": {
|
||||||
|
"raw": "{{baseUrl}}/v1/users/1",
|
||||||
|
"host": ["{{baseUrl}}"],
|
||||||
|
"path": ["v1", "users", "1"]
|
||||||
|
},
|
||||||
|
"description": "Test basic auth by fetching user details. If credentials are correct, you'll get a 200 response."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Users",
|
||||||
|
"item": [
|
||||||
|
{
|
||||||
|
"name": "Get All Users",
|
||||||
|
"request": {
|
||||||
|
"method": "GET",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "fineract-platform-tenantid",
|
||||||
|
"value": "{{tenantId}}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"url": {
|
||||||
|
"raw": "{{baseUrl}}/v1/users",
|
||||||
|
"host": ["{{baseUrl}}"],
|
||||||
|
"path": ["v1", "users"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Get User by ID",
|
||||||
|
"request": {
|
||||||
|
"method": "GET",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "fineract-platform-tenantid",
|
||||||
|
"value": "{{tenantId}}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"url": {
|
||||||
|
"raw": "{{baseUrl}}/v1/users/{{userId}}",
|
||||||
|
"host": ["{{baseUrl}}"],
|
||||||
|
"path": ["v1", "users", "{{userId}}"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Get User Template",
|
||||||
|
"request": {
|
||||||
|
"method": "GET",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "fineract-platform-tenantid",
|
||||||
|
"value": "{{tenantId}}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"url": {
|
||||||
|
"raw": "{{baseUrl}}/v1/users/template",
|
||||||
|
"host": ["{{baseUrl}}"],
|
||||||
|
"path": ["v1", "users", "template"]
|
||||||
|
},
|
||||||
|
"description": "Returns template data (available offices, roles) needed to create a new user."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Create User",
|
||||||
|
"request": {
|
||||||
|
"method": "POST",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "Content-Type",
|
||||||
|
"value": "application/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "fineract-platform-tenantid",
|
||||||
|
"value": "{{tenantId}}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"body": {
|
||||||
|
"mode": "raw",
|
||||||
|
"raw": "{\n \"username\": \"newuser\",\n \"firstname\": \"New\",\n \"lastname\": \"User\",\n \"email\": \"newuser@example.com\",\n \"officeId\": 1,\n \"roles\": [1],\n \"sendPasswordToEmail\": false,\n \"password\": \"Password@123\",\n \"repeatPassword\": \"Password@123\",\n \"isSelfServiceUser\": false,\n \"passwordNeverExpires\": true\n}"
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"raw": "{{baseUrl}}/v1/users",
|
||||||
|
"host": ["{{baseUrl}}"],
|
||||||
|
"path": ["v1", "users"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Update User (Change Username)",
|
||||||
|
"request": {
|
||||||
|
"method": "PUT",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "Content-Type",
|
||||||
|
"value": "application/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "fineract-platform-tenantid",
|
||||||
|
"value": "{{tenantId}}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"body": {
|
||||||
|
"mode": "raw",
|
||||||
|
"raw": "{\n \"username\": \"updatedUsername\"\n}"
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"raw": "{{baseUrl}}/v1/users/{{userId}}",
|
||||||
|
"host": ["{{baseUrl}}"],
|
||||||
|
"path": ["v1", "users", "{{userId}}"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Update User (Change Password via PUT)",
|
||||||
|
"request": {
|
||||||
|
"method": "PUT",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "Content-Type",
|
||||||
|
"value": "application/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "fineract-platform-tenantid",
|
||||||
|
"value": "{{tenantId}}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"body": {
|
||||||
|
"mode": "raw",
|
||||||
|
"raw": "{\n \"password\": \"NewPassword@123\",\n \"repeatPassword\": \"NewPassword@123\"\n}"
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"raw": "{{baseUrl}}/v1/users/{{userId}}",
|
||||||
|
"host": ["{{baseUrl}}"],
|
||||||
|
"path": ["v1", "users", "{{userId}}"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Change Password (Dedicated Endpoint)",
|
||||||
|
"request": {
|
||||||
|
"method": "POST",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "Content-Type",
|
||||||
|
"value": "application/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "fineract-platform-tenantid",
|
||||||
|
"value": "{{tenantId}}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"body": {
|
||||||
|
"mode": "raw",
|
||||||
|
"raw": "{\n \"password\": \"NewPassword@123\",\n \"repeatPassword\": \"NewPassword@123\"\n}"
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"raw": "{{baseUrl}}/v1/users/{{userId}}/pwd",
|
||||||
|
"host": ["{{baseUrl}}"],
|
||||||
|
"path": ["v1", "users", "{{userId}}", "pwd"]
|
||||||
|
},
|
||||||
|
"description": "Dedicated password change endpoint. Must provide both password and repeatPassword."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Update User (Full Update)",
|
||||||
|
"request": {
|
||||||
|
"method": "PUT",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "Content-Type",
|
||||||
|
"value": "application/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "fineract-platform-tenantid",
|
||||||
|
"value": "{{tenantId}}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"body": {
|
||||||
|
"mode": "raw",
|
||||||
|
"raw": "{\n \"username\": \"updatedUser\",\n \"firstname\": \"Updated\",\n \"lastname\": \"User\",\n \"email\": \"updated@example.com\",\n \"officeId\": 1,\n \"roles\": [1],\n \"password\": \"NewPassword@123\",\n \"repeatPassword\": \"NewPassword@123\",\n \"passwordNeverExpires\": true\n}"
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"raw": "{{baseUrl}}/v1/users/{{userId}}",
|
||||||
|
"host": ["{{baseUrl}}"],
|
||||||
|
"path": ["v1", "users", "{{userId}}"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Delete User",
|
||||||
|
"request": {
|
||||||
|
"method": "DELETE",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "fineract-platform-tenantid",
|
||||||
|
"value": "{{tenantId}}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"url": {
|
||||||
|
"raw": "{{baseUrl}}/v1/users/{{userId}}",
|
||||||
|
"host": ["{{baseUrl}}"],
|
||||||
|
"path": ["v1", "users", "{{userId}}"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Roles",
|
||||||
|
"item": [
|
||||||
|
{
|
||||||
|
"name": "Get All Roles",
|
||||||
|
"request": {
|
||||||
|
"method": "GET",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "fineract-platform-tenantid",
|
||||||
|
"value": "{{tenantId}}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"url": {
|
||||||
|
"raw": "{{baseUrl}}/v1/roles",
|
||||||
|
"host": ["{{baseUrl}}"],
|
||||||
|
"path": ["v1", "roles"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Get Role by ID",
|
||||||
|
"request": {
|
||||||
|
"method": "GET",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "fineract-platform-tenantid",
|
||||||
|
"value": "{{tenantId}}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"url": {
|
||||||
|
"raw": "{{baseUrl}}/v1/roles/1",
|
||||||
|
"host": ["{{baseUrl}}"],
|
||||||
|
"path": ["v1", "roles", "1"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Get Role Permissions",
|
||||||
|
"request": {
|
||||||
|
"method": "GET",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "fineract-platform-tenantid",
|
||||||
|
"value": "{{tenantId}}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"url": {
|
||||||
|
"raw": "{{baseUrl}}/v1/roles/1/permissions",
|
||||||
|
"host": ["{{baseUrl}}"],
|
||||||
|
"path": ["v1", "roles", "1", "permissions"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Create Role",
|
||||||
|
"request": {
|
||||||
|
"method": "POST",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "Content-Type",
|
||||||
|
"value": "application/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "fineract-platform-tenantid",
|
||||||
|
"value": "{{tenantId}}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"body": {
|
||||||
|
"mode": "raw",
|
||||||
|
"raw": "{\n \"name\": \"New Role\",\n \"description\": \"A new custom role\"\n}"
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"raw": "{{baseUrl}}/v1/roles",
|
||||||
|
"host": ["{{baseUrl}}"],
|
||||||
|
"path": ["v1", "roles"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Update Role",
|
||||||
|
"request": {
|
||||||
|
"method": "PUT",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "Content-Type",
|
||||||
|
"value": "application/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "fineract-platform-tenantid",
|
||||||
|
"value": "{{tenantId}}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"body": {
|
||||||
|
"mode": "raw",
|
||||||
|
"raw": "{\n \"name\": \"Updated Role\",\n \"description\": \"Updated description\"\n}"
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"raw": "{{baseUrl}}/v1/roles/1",
|
||||||
|
"host": ["{{baseUrl}}"],
|
||||||
|
"path": ["v1", "roles", "1"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Update Role Permissions",
|
||||||
|
"request": {
|
||||||
|
"method": "PUT",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "Content-Type",
|
||||||
|
"value": "application/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "fineract-platform-tenantid",
|
||||||
|
"value": "{{tenantId}}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"body": {
|
||||||
|
"mode": "raw",
|
||||||
|
"raw": "{\n \"permissions\": {\n \"READ_USER\": true,\n \"CREATE_USER\": true,\n \"UPDATE_USER\": true\n }\n}"
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"raw": "{{baseUrl}}/v1/roles/1/permissions",
|
||||||
|
"host": ["{{baseUrl}}"],
|
||||||
|
"path": ["v1", "roles", "1", "permissions"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Enable Role",
|
||||||
|
"request": {
|
||||||
|
"method": "POST",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "fineract-platform-tenantid",
|
||||||
|
"value": "{{tenantId}}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"url": {
|
||||||
|
"raw": "{{baseUrl}}/v1/roles/1?command=enable",
|
||||||
|
"host": ["{{baseUrl}}"],
|
||||||
|
"path": ["v1", "roles", "1"],
|
||||||
|
"query": [
|
||||||
|
{
|
||||||
|
"key": "command",
|
||||||
|
"value": "enable"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Disable Role",
|
||||||
|
"request": {
|
||||||
|
"method": "POST",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "fineract-platform-tenantid",
|
||||||
|
"value": "{{tenantId}}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"url": {
|
||||||
|
"raw": "{{baseUrl}}/v1/roles/1?command=disable",
|
||||||
|
"host": ["{{baseUrl}}"],
|
||||||
|
"path": ["v1", "roles", "1"],
|
||||||
|
"query": [
|
||||||
|
{
|
||||||
|
"key": "command",
|
||||||
|
"value": "disable"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Delete Role",
|
||||||
|
"request": {
|
||||||
|
"method": "DELETE",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "fineract-platform-tenantid",
|
||||||
|
"value": "{{tenantId}}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"url": {
|
||||||
|
"raw": "{{baseUrl}}/v1/roles/1",
|
||||||
|
"host": ["{{baseUrl}}"],
|
||||||
|
"path": ["v1", "roles", "1"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Password Preferences",
|
||||||
|
"item": [
|
||||||
|
{
|
||||||
|
"name": "Get Password Preferences",
|
||||||
|
"request": {
|
||||||
|
"method": "GET",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "fineract-platform-tenantid",
|
||||||
|
"value": "{{tenantId}}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"url": {
|
||||||
|
"raw": "{{baseUrl}}/v1/passwordpreferences",
|
||||||
|
"host": ["{{baseUrl}}"],
|
||||||
|
"path": ["v1", "passwordpreferences"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Get Password Preferences Template",
|
||||||
|
"request": {
|
||||||
|
"method": "GET",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "fineract-platform-tenantid",
|
||||||
|
"value": "{{tenantId}}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"url": {
|
||||||
|
"raw": "{{baseUrl}}/v1/passwordpreferences/template",
|
||||||
|
"host": ["{{baseUrl}}"],
|
||||||
|
"path": ["v1", "passwordpreferences", "template"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Update Password Preferences",
|
||||||
|
"request": {
|
||||||
|
"method": "PUT",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "Content-Type",
|
||||||
|
"value": "application/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "fineract-platform-tenantid",
|
||||||
|
"value": "{{tenantId}}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"body": {
|
||||||
|
"mode": "raw",
|
||||||
|
"raw": "{\n \"validationPolicyId\": 2\n}"
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"raw": "{{baseUrl}}/v1/passwordpreferences",
|
||||||
|
"host": ["{{baseUrl}}"],
|
||||||
|
"path": ["v1", "passwordpreferences"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Permissions",
|
||||||
|
"item": [
|
||||||
|
{
|
||||||
|
"name": "Get All Permissions",
|
||||||
|
"request": {
|
||||||
|
"method": "GET",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "fineract-platform-tenantid",
|
||||||
|
"value": "{{tenantId}}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"url": {
|
||||||
|
"raw": "{{baseUrl}}/v1/permissions",
|
||||||
|
"host": ["{{baseUrl}}"],
|
||||||
|
"path": ["v1", "permissions"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Update Permissions (Maker-Checker)",
|
||||||
|
"request": {
|
||||||
|
"method": "PUT",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "Content-Type",
|
||||||
|
"value": "application/json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "fineract-platform-tenantid",
|
||||||
|
"value": "{{tenantId}}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"body": {
|
||||||
|
"mode": "raw",
|
||||||
|
"raw": "{\n \"permissions\": {\n \"CREATE_USER_MAKER\": true,\n \"CREATE_USER_CHECKER\": true\n }\n}"
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"raw": "{{baseUrl}}/v1/permissions",
|
||||||
|
"host": ["{{baseUrl}}"],
|
||||||
|
"path": ["v1", "permissions"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
+10
-1
@@ -61,6 +61,9 @@ public class ClientApiConstants {
|
|||||||
public static final String CLIENT_TYPE = "ClientType";
|
public static final String CLIENT_TYPE = "ClientType";
|
||||||
public static final String CLIENT_CLASSIFICATION = "ClientClassification";
|
public static final String CLIENT_CLASSIFICATION = "ClientClassification";
|
||||||
|
|
||||||
|
public static final String OCCUPATION_CATEGORY = "OccupationCategory";
|
||||||
|
public static final String OCCUPATION = "Occupation";
|
||||||
|
|
||||||
public static final String CLIENT_NON_PERSON_CONSTITUTION = "Constitution";
|
public static final String CLIENT_NON_PERSON_CONSTITUTION = "Constitution";
|
||||||
public static final String CLIENT_NON_PERSON_MAIN_BUSINESS_LINE = "Main Business Line";
|
public static final String CLIENT_NON_PERSON_MAIN_BUSINESS_LINE = "Main Business Line";
|
||||||
|
|
||||||
@@ -78,6 +81,7 @@ public class ClientApiConstants {
|
|||||||
public static final String idParamName = "id";
|
public static final String idParamName = "id";
|
||||||
public static final String groupIdParamName = "groupId";
|
public static final String groupIdParamName = "groupId";
|
||||||
public static final String accountNoParamName = "accountNo";
|
public static final String accountNoParamName = "accountNo";
|
||||||
|
public static final String cifNumberParamName = "cifNumber";
|
||||||
public static final String externalIdParamName = "externalId";
|
public static final String externalIdParamName = "externalId";
|
||||||
public static final String mobileNoParamName = "mobileNo";
|
public static final String mobileNoParamName = "mobileNo";
|
||||||
public static final String emailAddressParamName = "emailAddress";
|
public static final String emailAddressParamName = "emailAddress";
|
||||||
@@ -112,6 +116,10 @@ public class ClientApiConstants {
|
|||||||
public static final String clientTypeParamName = "clientType";
|
public static final String clientTypeParamName = "clientType";
|
||||||
public static final String clientClassificationIdParamName = "clientClassificationId";
|
public static final String clientClassificationIdParamName = "clientClassificationId";
|
||||||
public static final String clientClassificationParamName = "clientClassification";
|
public static final String clientClassificationParamName = "clientClassification";
|
||||||
|
public static final String occupationCategoryIdParamName = "occupationCategoryId";
|
||||||
|
public static final String occupationCategoryParamName = "occupationCategory";
|
||||||
|
public static final String occupationIdParamName = "occupationId";
|
||||||
|
public static final String occupationParamName = "occupation";
|
||||||
public static final String legalFormIdParamName = "legalFormId";
|
public static final String legalFormIdParamName = "legalFormId";
|
||||||
public static final String legalFormParamName = "legalForm";
|
public static final String legalFormParamName = "legalForm";
|
||||||
// request parameters for payment details
|
// request parameters for payment details
|
||||||
@@ -193,11 +201,12 @@ public class ClientApiConstants {
|
|||||||
* parameters to match those of request parameters.
|
* parameters to match those of request parameters.
|
||||||
*/
|
*/
|
||||||
protected static final Set<String> CLIENT_RESPONSE_DATA_PARAMETERS = new HashSet<>(Arrays.asList(idParamName, accountNoParamName,
|
protected static final Set<String> CLIENT_RESPONSE_DATA_PARAMETERS = new HashSet<>(Arrays.asList(idParamName, accountNoParamName,
|
||||||
externalIdParamName, statusParamName, activeParamName, activationDateParamName, firstnameParamName, middlenameParamName,
|
cifNumberParamName, externalIdParamName, statusParamName, activeParamName, activationDateParamName, firstnameParamName, middlenameParamName,
|
||||||
lastnameParamName, fullnameParamName, displayNameParamName, mobileNoParamName, emailAddressParamName, officeIdParamName,
|
lastnameParamName, fullnameParamName, displayNameParamName, mobileNoParamName, emailAddressParamName, officeIdParamName,
|
||||||
officeNameParamName, transferToOfficeIdParamName, transferToOfficeNameParamName, hierarchyParamName, imageIdParamName,
|
officeNameParamName, transferToOfficeIdParamName, transferToOfficeNameParamName, hierarchyParamName, imageIdParamName,
|
||||||
imagePresentParamName, staffIdParamName, staffNameParamName, timelineParamName, groupsParamName, officeOptionsParamName,
|
imagePresentParamName, staffIdParamName, staffNameParamName, timelineParamName, groupsParamName, officeOptionsParamName,
|
||||||
staffOptionsParamName, dateOfBirthParamName, genderParamName, clientTypeParamName, clientClassificationParamName,
|
staffOptionsParamName, dateOfBirthParamName, genderParamName, clientTypeParamName, clientClassificationParamName,
|
||||||
|
occupationCategoryParamName, occupationParamName,
|
||||||
legalFormParamName, clientNonPersonDetailsParamName, isStaffParamName, legalFormParamName));
|
legalFormParamName, clientNonPersonDetailsParamName, isStaffParamName, legalFormParamName));
|
||||||
|
|
||||||
protected static final Set<String> CLIENT_CHARGES_RESPONSE_DATA_PARAMETERS = new HashSet<>(Arrays.asList(chargeIdParamName,
|
protected static final Set<String> CLIENT_CHARGES_RESPONSE_DATA_PARAMETERS = new HashSet<>(Arrays.asList(chargeIdParamName,
|
||||||
|
|||||||
+71
-41
@@ -51,6 +51,7 @@ public final class ClientData implements Comparable<ClientData>, Serializable {
|
|||||||
|
|
||||||
private Long id;
|
private Long id;
|
||||||
private String accountNo;
|
private String accountNo;
|
||||||
|
private String cifNumber;
|
||||||
private ExternalId externalId;
|
private ExternalId externalId;
|
||||||
|
|
||||||
private EnumOptionData status;
|
private EnumOptionData status;
|
||||||
@@ -70,6 +71,8 @@ public final class ClientData implements Comparable<ClientData>, Serializable {
|
|||||||
private CodeValueData gender;
|
private CodeValueData gender;
|
||||||
private CodeValueData clientType;
|
private CodeValueData clientType;
|
||||||
private CodeValueData clientClassification;
|
private CodeValueData clientClassification;
|
||||||
|
private CodeValueData occupationCategory;
|
||||||
|
private CodeValueData occupation;
|
||||||
private Boolean isStaff;
|
private Boolean isStaff;
|
||||||
|
|
||||||
private Long officeId;
|
private Long officeId;
|
||||||
@@ -102,6 +105,8 @@ public final class ClientData implements Comparable<ClientData>, Serializable {
|
|||||||
private Collection<CodeValueData> genderOptions;
|
private Collection<CodeValueData> genderOptions;
|
||||||
private Collection<CodeValueData> clientTypeOptions;
|
private Collection<CodeValueData> clientTypeOptions;
|
||||||
private Collection<CodeValueData> clientClassificationOptions;
|
private Collection<CodeValueData> clientClassificationOptions;
|
||||||
|
private Collection<CodeValueData> occupationCategoryOptions;
|
||||||
|
private Collection<CodeValueData> occupationOptions;
|
||||||
private Collection<CodeValueData> clientNonPersonConstitutionOptions;
|
private Collection<CodeValueData> clientNonPersonConstitutionOptions;
|
||||||
private Collection<CodeValueData> clientNonPersonMainBusinessLineOptions;
|
private Collection<CodeValueData> clientNonPersonMainBusinessLineOptions;
|
||||||
private List<EnumOptionData> clientLegalFormOptions;
|
private List<EnumOptionData> clientLegalFormOptions;
|
||||||
@@ -281,6 +286,7 @@ public final class ClientData implements Comparable<ClientData>, Serializable {
|
|||||||
final Collection<StaffData> staffOptions, final Collection<CodeValueData> narrations,
|
final Collection<StaffData> staffOptions, final Collection<CodeValueData> narrations,
|
||||||
final Collection<CodeValueData> genderOptions, final Collection<SavingsProductData> savingProductOptions,
|
final Collection<CodeValueData> genderOptions, final Collection<SavingsProductData> savingProductOptions,
|
||||||
final Collection<CodeValueData> clientTypeOptions, final Collection<CodeValueData> clientClassificationOptions,
|
final Collection<CodeValueData> clientTypeOptions, final Collection<CodeValueData> clientClassificationOptions,
|
||||||
|
final Collection<CodeValueData> occupationCategoryOptions, final Collection<CodeValueData> occupationOptions,
|
||||||
final Collection<CodeValueData> clientNonPersonConstitutionOptions,
|
final Collection<CodeValueData> clientNonPersonConstitutionOptions,
|
||||||
final Collection<CodeValueData> clientNonPersonMainBusinessLineOptions, final List<EnumOptionData> clientLegalFormOptions,
|
final Collection<CodeValueData> clientNonPersonMainBusinessLineOptions, final List<EnumOptionData> clientLegalFormOptions,
|
||||||
final ClientFamilyMembersData familyMemberOptions, final Collection<AddressData> address, final Boolean isAddressEnabled,
|
final ClientFamilyMembersData familyMemberOptions, final Collection<AddressData> address, final Boolean isAddressEnabled,
|
||||||
@@ -317,64 +323,83 @@ public final class ClientData implements Comparable<ClientData>, Serializable {
|
|||||||
final Boolean isStaff = false;
|
final Boolean isStaff = false;
|
||||||
final ClientNonPersonData clientNonPersonDetails = null;
|
final ClientNonPersonData clientNonPersonDetails = null;
|
||||||
final Set<ClientCollateralManagementData> clientCollateralManagements = null;
|
final Set<ClientCollateralManagementData> clientCollateralManagements = null;
|
||||||
return new ClientData(accountNo, status, subStatus, officeId, officeName, transferToOfficeId, transferToOfficeName, id, firstname,
|
ClientData data = new ClientData(accountNo, status, subStatus, officeId, officeName, transferToOfficeId, transferToOfficeName, id,
|
||||||
middlename, lastname, fullname, displayName, externalId, mobileNo, emailAddress, dateOfBirth, gender, joinedDate, imageId,
|
firstname, middlename, lastname, fullname, displayName, externalId, mobileNo, emailAddress, dateOfBirth, gender, joinedDate,
|
||||||
staffId, staffName, officeOptions, groups, staffOptions, narrations, genderOptions, timeline, savingProductOptions,
|
imageId, staffId, staffName, officeOptions, groups, staffOptions, narrations, genderOptions, timeline, savingProductOptions,
|
||||||
savingsProductId, savingsProductName, savingsAccountId, savingAccountOptions, clientType, clientClassification,
|
savingsProductId, savingsProductName, savingsAccountId, savingAccountOptions, clientType, clientClassification,
|
||||||
clientTypeOptions, clientClassificationOptions, clientNonPersonConstitutionOptions, clientNonPersonMainBusinessLineOptions,
|
clientTypeOptions, clientClassificationOptions, clientNonPersonConstitutionOptions, clientNonPersonMainBusinessLineOptions,
|
||||||
clientNonPersonDetails, clientLegalFormOptions, familyMemberOptions, legalForm, address, isAddressEnabled, datatables,
|
clientNonPersonDetails, clientLegalFormOptions, familyMemberOptions, legalForm, address, isAddressEnabled, datatables,
|
||||||
isStaff, clientCollateralManagements);
|
isStaff, clientCollateralManagements);
|
||||||
|
data.occupationCategoryOptions = occupationCategoryOptions;
|
||||||
|
data.occupationOptions = occupationOptions;
|
||||||
|
return data;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ClientData templateOnTop(final ClientData clientData, final ClientData templateData) {
|
public static ClientData templateOnTop(final ClientData clientData, final ClientData templateData) {
|
||||||
final Set<ClientCollateralManagementData> clientCollateralManagements = null;
|
final Set<ClientCollateralManagementData> clientCollateralManagements = null;
|
||||||
return new ClientData(clientData.accountNo, clientData.status, clientData.subStatus, clientData.officeId, clientData.officeName,
|
ClientData data = new ClientData(clientData.accountNo, clientData.status, clientData.subStatus, clientData.officeId,
|
||||||
clientData.transferToOfficeId, clientData.transferToOfficeName, clientData.id, clientData.firstname, clientData.middlename,
|
clientData.officeName, clientData.transferToOfficeId, clientData.transferToOfficeName, clientData.id, clientData.firstname,
|
||||||
clientData.lastname, clientData.fullname, clientData.displayName, clientData.externalId, clientData.mobileNo,
|
clientData.middlename, clientData.lastname, clientData.fullname, clientData.displayName, clientData.externalId,
|
||||||
clientData.emailAddress, clientData.dateOfBirth, clientData.gender, clientData.activationDate, clientData.imageId,
|
clientData.mobileNo, clientData.emailAddress, clientData.dateOfBirth, clientData.gender, clientData.activationDate,
|
||||||
clientData.staffId, clientData.staffName, templateData.officeOptions, clientData.groups, templateData.staffOptions,
|
clientData.imageId, clientData.staffId, clientData.staffName, templateData.officeOptions, clientData.groups,
|
||||||
templateData.narrations, templateData.genderOptions, clientData.timeline, templateData.savingProductOptions,
|
templateData.staffOptions, templateData.narrations, templateData.genderOptions, clientData.timeline,
|
||||||
clientData.savingsProductId, clientData.savingsProductName, clientData.savingsAccountId, clientData.savingAccountOptions,
|
templateData.savingProductOptions, clientData.savingsProductId, clientData.savingsProductName, clientData.savingsAccountId,
|
||||||
clientData.clientType, clientData.clientClassification, templateData.clientTypeOptions,
|
clientData.savingAccountOptions, clientData.clientType, clientData.clientClassification, templateData.clientTypeOptions,
|
||||||
templateData.clientClassificationOptions, templateData.clientNonPersonConstitutionOptions,
|
templateData.clientClassificationOptions, templateData.clientNonPersonConstitutionOptions,
|
||||||
templateData.clientNonPersonMainBusinessLineOptions, clientData.clientNonPersonDetails, templateData.clientLegalFormOptions,
|
templateData.clientNonPersonMainBusinessLineOptions, clientData.clientNonPersonDetails, templateData.clientLegalFormOptions,
|
||||||
templateData.familyMemberOptions, clientData.legalForm, clientData.address, clientData.isAddressEnabled, null,
|
templateData.familyMemberOptions, clientData.legalForm, clientData.address, clientData.isAddressEnabled, null,
|
||||||
clientData.isStaff, clientCollateralManagements);
|
clientData.isStaff, clientCollateralManagements);
|
||||||
|
data.cifNumber = clientData.cifNumber;
|
||||||
|
data.occupationCategory = clientData.occupationCategory;
|
||||||
|
data.occupation = clientData.occupation;
|
||||||
|
data.occupationCategoryOptions = templateData.occupationCategoryOptions;
|
||||||
|
data.occupationOptions = templateData.occupationOptions;
|
||||||
|
return data;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ClientData templateWithSavingAccountOptions(final ClientData clientData,
|
public static ClientData templateWithSavingAccountOptions(final ClientData clientData,
|
||||||
final Collection<SavingsAccountData> savingAccountOptions) {
|
final Collection<SavingsAccountData> savingAccountOptions) {
|
||||||
final Set<ClientCollateralManagementData> clientCollateralManagements = null;
|
final Set<ClientCollateralManagementData> clientCollateralManagements = null;
|
||||||
return new ClientData(clientData.accountNo, clientData.status, clientData.subStatus, clientData.officeId, clientData.officeName,
|
ClientData data = new ClientData(clientData.accountNo, clientData.status, clientData.subStatus, clientData.officeId,
|
||||||
clientData.transferToOfficeId, clientData.transferToOfficeName, clientData.id, clientData.firstname, clientData.middlename,
|
clientData.officeName, clientData.transferToOfficeId, clientData.transferToOfficeName, clientData.id, clientData.firstname,
|
||||||
clientData.lastname, clientData.fullname, clientData.displayName, clientData.externalId, clientData.mobileNo,
|
clientData.middlename, clientData.lastname, clientData.fullname, clientData.displayName, clientData.externalId,
|
||||||
clientData.emailAddress, clientData.dateOfBirth, clientData.gender, clientData.activationDate, clientData.imageId,
|
clientData.mobileNo, clientData.emailAddress, clientData.dateOfBirth, clientData.gender, clientData.activationDate,
|
||||||
clientData.staffId, clientData.staffName, clientData.officeOptions, clientData.groups, clientData.staffOptions,
|
clientData.imageId, clientData.staffId, clientData.staffName, clientData.officeOptions, clientData.groups,
|
||||||
clientData.narrations, clientData.genderOptions, clientData.timeline, clientData.savingProductOptions,
|
clientData.staffOptions, clientData.narrations, clientData.genderOptions, clientData.timeline,
|
||||||
clientData.savingsProductId, clientData.savingsProductName, clientData.savingsAccountId, savingAccountOptions,
|
clientData.savingProductOptions, clientData.savingsProductId, clientData.savingsProductName, clientData.savingsAccountId,
|
||||||
clientData.clientType, clientData.clientClassification, clientData.clientTypeOptions,
|
savingAccountOptions, clientData.clientType, clientData.clientClassification, clientData.clientTypeOptions,
|
||||||
clientData.clientClassificationOptions, clientData.clientNonPersonConstitutionOptions,
|
clientData.clientClassificationOptions, clientData.clientNonPersonConstitutionOptions,
|
||||||
clientData.clientNonPersonMainBusinessLineOptions, clientData.clientNonPersonDetails, clientData.clientLegalFormOptions,
|
clientData.clientNonPersonMainBusinessLineOptions, clientData.clientNonPersonDetails, clientData.clientLegalFormOptions,
|
||||||
clientData.familyMemberOptions, clientData.legalForm, clientData.address, clientData.isAddressEnabled, null,
|
clientData.familyMemberOptions, clientData.legalForm, clientData.address, clientData.isAddressEnabled, null,
|
||||||
clientData.isStaff, clientCollateralManagements);
|
clientData.isStaff, clientCollateralManagements);
|
||||||
|
data.cifNumber = clientData.cifNumber;
|
||||||
|
data.occupationCategory = clientData.occupationCategory;
|
||||||
|
data.occupation = clientData.occupation;
|
||||||
|
data.occupationCategoryOptions = clientData.occupationCategoryOptions;
|
||||||
|
data.occupationOptions = clientData.occupationOptions;
|
||||||
|
return data;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ClientData setParentGroups(final ClientData clientData, final Collection<GroupGeneralData> parentGroups,
|
public static ClientData setParentGroups(final ClientData clientData, final Collection<GroupGeneralData> parentGroups,
|
||||||
final Set<ClientCollateralManagementData> clientCollateralManagements) {
|
final Set<ClientCollateralManagementData> clientCollateralManagements) {
|
||||||
return new ClientData(clientData.accountNo, clientData.status, clientData.subStatus, clientData.officeId, clientData.officeName,
|
ClientData data = new ClientData(clientData.accountNo, clientData.status, clientData.subStatus, clientData.officeId,
|
||||||
clientData.transferToOfficeId, clientData.transferToOfficeName, clientData.id, clientData.firstname, clientData.middlename,
|
clientData.officeName, clientData.transferToOfficeId, clientData.transferToOfficeName, clientData.id, clientData.firstname,
|
||||||
clientData.lastname, clientData.fullname, clientData.displayName, clientData.externalId, clientData.mobileNo,
|
clientData.middlename, clientData.lastname, clientData.fullname, clientData.displayName, clientData.externalId,
|
||||||
clientData.emailAddress, clientData.dateOfBirth, clientData.gender, clientData.activationDate, clientData.imageId,
|
clientData.mobileNo, clientData.emailAddress, clientData.dateOfBirth, clientData.gender, clientData.activationDate,
|
||||||
clientData.staffId, clientData.staffName, clientData.officeOptions, parentGroups, clientData.staffOptions, null, null,
|
clientData.imageId, clientData.staffId, clientData.staffName, clientData.officeOptions, parentGroups,
|
||||||
clientData.timeline, clientData.savingProductOptions, clientData.savingsProductId, clientData.savingsProductName,
|
clientData.staffOptions, null, null, clientData.timeline, clientData.savingProductOptions, clientData.savingsProductId,
|
||||||
clientData.savingsAccountId, clientData.savingAccountOptions, clientData.clientType, clientData.clientClassification,
|
clientData.savingsProductName, clientData.savingsAccountId, clientData.savingAccountOptions, clientData.clientType,
|
||||||
clientData.clientTypeOptions, clientData.clientClassificationOptions, clientData.clientNonPersonConstitutionOptions,
|
clientData.clientClassification, clientData.clientTypeOptions, clientData.clientClassificationOptions,
|
||||||
clientData.clientNonPersonMainBusinessLineOptions, clientData.clientNonPersonDetails, clientData.clientLegalFormOptions,
|
clientData.clientNonPersonConstitutionOptions, clientData.clientNonPersonMainBusinessLineOptions,
|
||||||
clientData.familyMemberOptions, clientData.legalForm, clientData.address, clientData.isAddressEnabled, null,
|
clientData.clientNonPersonDetails, clientData.clientLegalFormOptions, clientData.familyMemberOptions, clientData.legalForm,
|
||||||
clientData.isStaff, clientCollateralManagements);
|
clientData.address, clientData.isAddressEnabled, null, clientData.isStaff, clientCollateralManagements);
|
||||||
|
data.cifNumber = clientData.cifNumber;
|
||||||
|
data.occupationCategory = clientData.occupationCategory;
|
||||||
|
data.occupation = clientData.occupation;
|
||||||
|
return data;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -484,14 +509,15 @@ public final class ClientData implements Comparable<ClientData>, Serializable {
|
|||||||
return lookup(id, displayName, officeId, officeName);
|
return lookup(id, displayName, officeId, officeName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ClientData instance(final String accountNo, final EnumOptionData status, final CodeValueData subStatus,
|
public static ClientData instance(final String accountNo, final String cifNumber, final EnumOptionData status,
|
||||||
final Long officeId, final String officeName, final Long transferToOfficeId, final String transferToOfficeName, final Long id,
|
final CodeValueData subStatus, final Long officeId, final String officeName, final Long transferToOfficeId,
|
||||||
final String firstname, final String middlename, final String lastname, final String fullname, final String displayName,
|
final String transferToOfficeName, final Long id, final String firstname, final String middlename, final String lastname,
|
||||||
final ExternalId externalId, final String mobileNo, final String emailAddress, final LocalDate dateOfBirth,
|
final String fullname, final String displayName, final ExternalId externalId, final String mobileNo,
|
||||||
final CodeValueData gender, final LocalDate activationDate, final Long imageId, final Long staffId, final String staffName,
|
final String emailAddress, final LocalDate dateOfBirth, final CodeValueData gender, final LocalDate activationDate,
|
||||||
final ClientTimelineData timeline, final Long savingsProductId, final String savingsProductName, final Long savingsAccountId,
|
final Long imageId, final Long staffId, final String staffName, final ClientTimelineData timeline,
|
||||||
final CodeValueData clientType, final CodeValueData clientClassification, final EnumOptionData legalForm,
|
final Long savingsProductId, final String savingsProductName, final Long savingsAccountId, final CodeValueData clientType,
|
||||||
final ClientNonPersonData clientNonPerson, final Boolean isStaff) {
|
final CodeValueData clientClassification, final CodeValueData occupationCategory, final CodeValueData occupation,
|
||||||
|
final EnumOptionData legalForm, final ClientNonPersonData clientNonPerson, final Boolean isStaff) {
|
||||||
|
|
||||||
final Collection<OfficeData> allowedOffices = null;
|
final Collection<OfficeData> allowedOffices = null;
|
||||||
final Collection<GroupGeneralData> groups = null;
|
final Collection<GroupGeneralData> groups = null;
|
||||||
@@ -505,12 +531,16 @@ public final class ClientData implements Comparable<ClientData>, Serializable {
|
|||||||
final Collection<CodeValueData> clientNonPersonMainBusinessLineOptions = null;
|
final Collection<CodeValueData> clientNonPersonMainBusinessLineOptions = null;
|
||||||
final List<EnumOptionData> clientLegalFormOptions = null;
|
final List<EnumOptionData> clientLegalFormOptions = null;
|
||||||
final ClientFamilyMembersData familyMemberOptions = null;
|
final ClientFamilyMembersData familyMemberOptions = null;
|
||||||
return new ClientData(accountNo, status, subStatus, officeId, officeName, transferToOfficeId, transferToOfficeName, id, firstname,
|
ClientData data = new ClientData(accountNo, status, subStatus, officeId, officeName, transferToOfficeId, transferToOfficeName, id,
|
||||||
middlename, lastname, fullname, displayName, externalId, mobileNo, emailAddress, dateOfBirth, gender, activationDate,
|
firstname, middlename, lastname, fullname, displayName, externalId, mobileNo, emailAddress, dateOfBirth, gender,
|
||||||
imageId, staffId, staffName, allowedOffices, groups, staffOptions, closureReasons, genderOptions, timeline,
|
activationDate, imageId, staffId, staffName, allowedOffices, groups, staffOptions, closureReasons, genderOptions, timeline,
|
||||||
savingProductOptions, savingsProductId, savingsProductName, savingsAccountId, null, clientType, clientClassification,
|
savingProductOptions, savingsProductId, savingsProductName, savingsAccountId, null, clientType, clientClassification,
|
||||||
clientTypeOptions, clientClassificationOptions, clientNonPersonConstitutionOptions, clientNonPersonMainBusinessLineOptions,
|
clientTypeOptions, clientClassificationOptions, clientNonPersonConstitutionOptions, clientNonPersonMainBusinessLineOptions,
|
||||||
clientNonPerson, clientLegalFormOptions, familyMemberOptions, legalForm, null, null, null, isStaff, null);
|
clientNonPerson, clientLegalFormOptions, familyMemberOptions, legalForm, null, null, null, isStaff, null);
|
||||||
|
data.cifNumber = cifNumber;
|
||||||
|
data.occupationCategory = occupationCategory;
|
||||||
|
data.occupation = occupation;
|
||||||
|
return data;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+62
-12
@@ -56,12 +56,16 @@ import org.apache.fineract.useradministration.domain.AppUser;
|
|||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@Table(name = "m_client", uniqueConstraints = { @UniqueConstraint(columnNames = { "account_no" }, name = "account_no_UNIQUE"), //
|
@Table(name = "m_client", uniqueConstraints = { @UniqueConstraint(columnNames = { "account_no" }, name = "account_no_UNIQUE"), //
|
||||||
|
@UniqueConstraint(columnNames = { "cif_number" }, name = "cif_number_UNIQUE"), //
|
||||||
@UniqueConstraint(columnNames = { "mobile_no" }, name = "mobile_no_UNIQUE") })
|
@UniqueConstraint(columnNames = { "mobile_no" }, name = "mobile_no_UNIQUE") })
|
||||||
public class Client extends AbstractAuditableWithUTCDateTimeCustom<Long> {
|
public class Client extends AbstractAuditableWithUTCDateTimeCustom<Long> {
|
||||||
|
|
||||||
@Column(name = "account_no", length = 20, unique = true, nullable = false)
|
@Column(name = "account_no", length = 20, unique = true, nullable = false)
|
||||||
private String accountNumber;
|
private String accountNumber;
|
||||||
|
|
||||||
|
@Column(name = "cif_number", length = 20, unique = true, nullable = false)
|
||||||
|
private String cifNumber;
|
||||||
|
|
||||||
@ManyToOne
|
@ManyToOne
|
||||||
@JoinColumn(name = "office_id", nullable = false)
|
@JoinColumn(name = "office_id", nullable = false)
|
||||||
private Office office;
|
private Office office;
|
||||||
@@ -189,6 +193,14 @@ public class Client extends AbstractAuditableWithUTCDateTimeCustom<Long> {
|
|||||||
@JoinColumn(name = "client_classification_cv_id")
|
@JoinColumn(name = "client_classification_cv_id")
|
||||||
private CodeValue clientClassification;
|
private CodeValue clientClassification;
|
||||||
|
|
||||||
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
|
@JoinColumn(name = "occupation_category_cv_id")
|
||||||
|
private CodeValue occupationCategory;
|
||||||
|
|
||||||
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
|
@JoinColumn(name = "occupation_cv_id")
|
||||||
|
private CodeValue occupation;
|
||||||
|
|
||||||
@Column(name = "legal_form_enum")
|
@Column(name = "legal_form_enum")
|
||||||
private Integer legalForm;
|
private Integer legalForm;
|
||||||
|
|
||||||
@@ -206,24 +218,26 @@ public class Client extends AbstractAuditableWithUTCDateTimeCustom<Long> {
|
|||||||
protected Set<ClientIdentifier> identifiers = new HashSet<>();
|
protected Set<ClientIdentifier> identifiers = new HashSet<>();
|
||||||
|
|
||||||
public static Client instance(final AppUser currentUser, final ClientStatus status, final Office office, final Group clientParentGroup,
|
public static Client instance(final AppUser currentUser, final ClientStatus status, final Office office, final Group clientParentGroup,
|
||||||
final String accountNo, final String firstname, final String middlename, final String lastname, final String fullname,
|
final String accountNo, final String cifNumber, final String firstname, final String middlename, final String lastname,
|
||||||
final LocalDate activationDate, final LocalDate officeJoiningDate, final ExternalId externalId, final String mobileNo,
|
final String fullname, final LocalDate activationDate, final LocalDate officeJoiningDate, final ExternalId externalId,
|
||||||
final String emailAddress, final Staff staff, final LocalDate submittedOnDate, final Long savingsProductId,
|
final String mobileNo, final String emailAddress, final Staff staff, final LocalDate submittedOnDate,
|
||||||
final Long savingsAccountId, final LocalDate dateOfBirth, final CodeValue gender, final CodeValue clientType,
|
final Long savingsProductId, final Long savingsAccountId, final LocalDate dateOfBirth, final CodeValue gender,
|
||||||
final CodeValue clientClassification, final Integer legalForm, final Boolean isStaff) {
|
final CodeValue clientType, final CodeValue clientClassification, final CodeValue occupationCategory,
|
||||||
return new Client(currentUser, status, office, clientParentGroup, accountNo, firstname, middlename, lastname, fullname,
|
final CodeValue occupation, final Integer legalForm, final Boolean isStaff) {
|
||||||
|
return new Client(currentUser, status, office, clientParentGroup, accountNo, cifNumber, firstname, middlename, lastname, fullname,
|
||||||
activationDate, officeJoiningDate, externalId, mobileNo, emailAddress, staff, submittedOnDate, savingsProductId,
|
activationDate, officeJoiningDate, externalId, mobileNo, emailAddress, staff, submittedOnDate, savingsProductId,
|
||||||
savingsAccountId, dateOfBirth, gender, clientType, clientClassification, legalForm, isStaff);
|
savingsAccountId, dateOfBirth, gender, clientType, clientClassification, occupationCategory, occupation, legalForm, isStaff);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Client() {}
|
protected Client() {}
|
||||||
|
|
||||||
private Client(final AppUser currentUser, final ClientStatus status, final Office office, final Group clientParentGroup,
|
private Client(final AppUser currentUser, final ClientStatus status, final Office office, final Group clientParentGroup,
|
||||||
final String accountNo, final String firstname, final String middlename, final String lastname, final String fullname,
|
final String accountNo, final String cifNumber, final String firstname, final String middlename, final String lastname,
|
||||||
final LocalDate activationDate, final LocalDate officeJoiningDate, final ExternalId externalId, final String mobileNo,
|
final String fullname, final LocalDate activationDate, final LocalDate officeJoiningDate, final ExternalId externalId,
|
||||||
final String emailAddress, final Staff staff, final LocalDate submittedOnDate, final Long savingsProductId,
|
final String mobileNo, final String emailAddress, final Staff staff, final LocalDate submittedOnDate,
|
||||||
final Long savingsAccountId, final LocalDate dateOfBirth, final CodeValue gender, final CodeValue clientType,
|
final Long savingsProductId, final Long savingsAccountId, final LocalDate dateOfBirth, final CodeValue gender,
|
||||||
final CodeValue clientClassification, final Integer legalForm, final Boolean isStaff) {
|
final CodeValue clientType, final CodeValue clientClassification, final CodeValue occupationCategory,
|
||||||
|
final CodeValue occupation, final Integer legalForm, final Boolean isStaff) {
|
||||||
|
|
||||||
if (StringUtils.isBlank(accountNo)) {
|
if (StringUtils.isBlank(accountNo)) {
|
||||||
this.accountNumber = new RandomPasswordGenerator(19).generate();
|
this.accountNumber = new RandomPasswordGenerator(19).generate();
|
||||||
@@ -231,6 +245,12 @@ public class Client extends AbstractAuditableWithUTCDateTimeCustom<Long> {
|
|||||||
this.accountNumber = accountNo;
|
this.accountNumber = accountNo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (StringUtils.isBlank(cifNumber)) {
|
||||||
|
this.cifNumber = new RandomPasswordGenerator(19).generate();
|
||||||
|
} else {
|
||||||
|
this.cifNumber = cifNumber;
|
||||||
|
}
|
||||||
|
|
||||||
this.submittedOnDate = submittedOnDate;
|
this.submittedOnDate = submittedOnDate;
|
||||||
|
|
||||||
this.status = status.getValue();
|
this.status = status.getValue();
|
||||||
@@ -285,6 +305,8 @@ public class Client extends AbstractAuditableWithUTCDateTimeCustom<Long> {
|
|||||||
|
|
||||||
this.clientType = clientType;
|
this.clientType = clientType;
|
||||||
this.clientClassification = clientClassification;
|
this.clientClassification = clientClassification;
|
||||||
|
this.occupationCategory = occupationCategory;
|
||||||
|
this.occupation = occupation;
|
||||||
this.setLegalForm(legalForm);
|
this.setLegalForm(legalForm);
|
||||||
|
|
||||||
deriveDisplayName();
|
deriveDisplayName();
|
||||||
@@ -324,6 +346,10 @@ public class Client extends AbstractAuditableWithUTCDateTimeCustom<Long> {
|
|||||||
this.accountNumber = accountIdentifier;
|
this.accountNumber = accountIdentifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void updateCifNumber(final String cifNumber) {
|
||||||
|
this.cifNumber = cifNumber;
|
||||||
|
}
|
||||||
|
|
||||||
public void activate(final AppUser currentUser, final DateTimeFormatter formatter, final LocalDate activationLocalDate) {
|
public void activate(final AppUser currentUser, final DateTimeFormatter formatter, final LocalDate activationLocalDate) {
|
||||||
|
|
||||||
if (isActive()) {
|
if (isActive()) {
|
||||||
@@ -646,6 +672,30 @@ public class Client extends AbstractAuditableWithUTCDateTimeCustom<Long> {
|
|||||||
this.clientClassification = clientClassification;
|
this.clientClassification = clientClassification;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Long occupationCategoryId() {
|
||||||
|
Long occupationCategoryId = null;
|
||||||
|
if (this.occupationCategory != null) {
|
||||||
|
occupationCategoryId = this.occupationCategory.getId();
|
||||||
|
}
|
||||||
|
return occupationCategoryId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateOccupationCategory(CodeValue occupationCategory) {
|
||||||
|
this.occupationCategory = occupationCategory;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long occupationId() {
|
||||||
|
Long occupationId = null;
|
||||||
|
if (this.occupation != null) {
|
||||||
|
occupationId = this.occupation.getId();
|
||||||
|
}
|
||||||
|
return occupationId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateOccupation(CodeValue occupation) {
|
||||||
|
this.occupation = occupation;
|
||||||
|
}
|
||||||
|
|
||||||
public void updateGender(CodeValue gender) {
|
public void updateGender(CodeValue gender) {
|
||||||
this.gender = gender;
|
this.gender = gender;
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-3
@@ -26,10 +26,11 @@ import org.apache.fineract.portfolio.client.api.ClientApiConstants;
|
|||||||
public class ClientApiCollectionConstants extends ClientApiConstants {
|
public class ClientApiCollectionConstants extends ClientApiConstants {
|
||||||
|
|
||||||
protected static final Set<String> CLIENT_CREATE_REQUEST_DATA_PARAMETERS = new HashSet<>(Arrays.asList(familyMembers, address,
|
protected static final Set<String> CLIENT_CREATE_REQUEST_DATA_PARAMETERS = new HashSet<>(Arrays.asList(familyMembers, address,
|
||||||
localeParamName, dateFormatParamName, groupIdParamName, accountNoParamName, externalIdParamName, mobileNoParamName,
|
localeParamName, dateFormatParamName, groupIdParamName, accountNoParamName, cifNumberParamName, externalIdParamName, mobileNoParamName,
|
||||||
emailAddressParamName, firstnameParamName, middlenameParamName, lastnameParamName, fullnameParamName, officeIdParamName,
|
emailAddressParamName, firstnameParamName, middlenameParamName, lastnameParamName, fullnameParamName, officeIdParamName,
|
||||||
activeParamName, activationDateParamName, staffIdParamName, submittedOnDateParamName, savingsProductIdParamName,
|
activeParamName, activationDateParamName, staffIdParamName, submittedOnDateParamName, savingsProductIdParamName,
|
||||||
dateOfBirthParamName, genderIdParamName, clientTypeIdParamName, clientClassificationIdParamName,
|
dateOfBirthParamName, genderIdParamName, clientTypeIdParamName, clientClassificationIdParamName,
|
||||||
|
occupationCategoryIdParamName, occupationIdParamName,
|
||||||
clientNonPersonDetailsParamName, displaynameParamName, legalFormIdParamName, datatables, isStaffParamName, kycParamName));
|
clientNonPersonDetailsParamName, displaynameParamName, legalFormIdParamName, datatables, isStaffParamName, kycParamName));
|
||||||
|
|
||||||
protected static final Set<String> CLIENT_NON_PERSON_CREATE_REQUEST_DATA_PARAMETERS = new HashSet<>(
|
protected static final Set<String> CLIENT_NON_PERSON_CREATE_REQUEST_DATA_PARAMETERS = new HashSet<>(
|
||||||
@@ -41,8 +42,9 @@ public class ClientApiCollectionConstants extends ClientApiConstants {
|
|||||||
middlenameParamName,
|
middlenameParamName,
|
||||||
|
|
||||||
lastnameParamName, fullnameParamName, activeParamName, activationDateParamName, staffIdParamName, savingsProductIdParamName,
|
lastnameParamName, fullnameParamName, activeParamName, activationDateParamName, staffIdParamName, savingsProductIdParamName,
|
||||||
dateOfBirthParamName, genderIdParamName, clientTypeIdParamName, clientClassificationIdParamName, submittedOnDateParamName,
|
dateOfBirthParamName, genderIdParamName, clientTypeIdParamName, clientClassificationIdParamName,
|
||||||
clientNonPersonDetailsParamName, displaynameParamName, legalFormIdParamName, isStaffParamName));
|
occupationCategoryIdParamName, occupationIdParamName,
|
||||||
|
submittedOnDateParamName, clientNonPersonDetailsParamName, displaynameParamName, legalFormIdParamName, isStaffParamName));
|
||||||
|
|
||||||
protected static final Set<String> CLIENT_NON_PERSON_UPDATE_REQUEST_DATA_PARAMETERS = new HashSet<>(
|
protected static final Set<String> CLIENT_NON_PERSON_UPDATE_REQUEST_DATA_PARAMETERS = new HashSet<>(
|
||||||
Arrays.asList(localeParamName, dateFormatParamName, incorpNumberParamName, remarksParamName, incorpValidityTillParamName,
|
Arrays.asList(localeParamName, dateFormatParamName, incorpNumberParamName, remarksParamName, incorpValidityTillParamName,
|
||||||
|
|||||||
+22
@@ -52,6 +52,10 @@ public interface ClientMapper {
|
|||||||
@Mapping(target = "savingsAccountId", source = "savingsAccountId")
|
@Mapping(target = "savingsAccountId", source = "savingsAccountId")
|
||||||
@Mapping(target = "clientType", source = "source", qualifiedByName = "clientTypeCode")
|
@Mapping(target = "clientType", source = "source", qualifiedByName = "clientTypeCode")
|
||||||
@Mapping(target = "clientClassification", source = "source", qualifiedByName = "clientClassificationCode")
|
@Mapping(target = "clientClassification", source = "source", qualifiedByName = "clientClassificationCode")
|
||||||
|
@Mapping(target = "occupationCategory", source = "source", qualifiedByName = "occupationCategoryCode")
|
||||||
|
@Mapping(target = "occupation", source = "source", qualifiedByName = "occupationCode")
|
||||||
|
@Mapping(target = "occupationCategoryOptions", ignore = true)
|
||||||
|
@Mapping(target = "occupationOptions", ignore = true)
|
||||||
@Mapping(target = "legalForm", source = "source", qualifiedByName = "clientLegalFormEnum")
|
@Mapping(target = "legalForm", source = "source", qualifiedByName = "clientLegalFormEnum")
|
||||||
@Mapping(target = "isStaff", source = "source", qualifiedByName = "clientIsStaff")
|
@Mapping(target = "isStaff", source = "source", qualifiedByName = "clientIsStaff")
|
||||||
@Mapping(target = "imagePresent", ignore = true)
|
@Mapping(target = "imagePresent", ignore = true)
|
||||||
@@ -100,6 +104,24 @@ public interface ClientMapper {
|
|||||||
return CodeValueData.instance(code.getId(), code.getLabel());
|
return CodeValueData.instance(code.getId(), code.getLabel());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Named("occupationCategoryCode")
|
||||||
|
default CodeValueData occupationCategoryCode(Client client) {
|
||||||
|
final CodeValue code = client.getOccupationCategory();
|
||||||
|
if (code == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return CodeValueData.instance(code.getId(), code.getLabel());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Named("occupationCode")
|
||||||
|
default CodeValueData occupationCode(Client client) {
|
||||||
|
final CodeValue code = client.getOccupation();
|
||||||
|
if (code == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return CodeValueData.instance(code.getId(), code.getLabel());
|
||||||
|
}
|
||||||
|
|
||||||
@Named("clientSubStatusCode")
|
@Named("clientSubStatusCode")
|
||||||
default CodeValueData clientSubStatusCode(Client client) {
|
default CodeValueData clientSubStatusCode(Client client) {
|
||||||
final CodeValue code = client.getSubStatus();
|
final CodeValue code = client.getSubStatus();
|
||||||
|
|||||||
+42
-11
@@ -296,7 +296,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
|
|||||||
final StringBuilder sqlBuilder = new StringBuilder(200);
|
final StringBuilder sqlBuilder = new StringBuilder(200);
|
||||||
|
|
||||||
sqlBuilder.append(
|
sqlBuilder.append(
|
||||||
"c.id as id, c.account_no as accountNo, c.external_id as externalId, c.status_enum as statusEnum,c.sub_status as subStatus, ");
|
"c.id as id, c.account_no as accountNo, c.cif_number as cifNumber, c.external_id as externalId, c.status_enum as statusEnum,c.sub_status as subStatus, ");
|
||||||
sqlBuilder.append(
|
sqlBuilder.append(
|
||||||
"cvSubStatus.code_value as subStatusValue,cvSubStatus.code_description as subStatusDesc,c.office_id as officeId, o.name as officeName, ");
|
"cvSubStatus.code_value as subStatusValue,cvSubStatus.code_description as subStatusDesc,c.office_id as officeId, o.name as officeName, ");
|
||||||
sqlBuilder.append("c.transfer_to_office_id as transferToOfficeId, transferToOffice.name as transferToOfficeName, ");
|
sqlBuilder.append("c.transfer_to_office_id as transferToOfficeId, transferToOffice.name as transferToOfficeName, ");
|
||||||
@@ -313,6 +313,10 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
|
|||||||
sqlBuilder.append("c.client_classification_cv_id as classificationId, ");
|
sqlBuilder.append("c.client_classification_cv_id as classificationId, ");
|
||||||
sqlBuilder.append("cvclassification.code_value as classificationValue, ");
|
sqlBuilder.append("cvclassification.code_value as classificationValue, ");
|
||||||
sqlBuilder.append("c.legal_form_enum as legalFormEnum, ");
|
sqlBuilder.append("c.legal_form_enum as legalFormEnum, ");
|
||||||
|
sqlBuilder.append("c.occupation_category_cv_id as occupationCategoryId, ");
|
||||||
|
sqlBuilder.append("cvOccupationCategory.code_value as occupationCategoryValue, ");
|
||||||
|
sqlBuilder.append("c.occupation_cv_id as occupationId, ");
|
||||||
|
sqlBuilder.append("cvOccupation.code_value as occupationValue, ");
|
||||||
sqlBuilder.append("c.activation_date as activationDate, c.image_id as imageId, ");
|
sqlBuilder.append("c.activation_date as activationDate, c.image_id as imageId, ");
|
||||||
sqlBuilder.append("c.staff_id as staffId, s.display_name as staffName,");
|
sqlBuilder.append("c.staff_id as staffId, s.display_name as staffName,");
|
||||||
sqlBuilder.append("c.default_savings_product as savingsProductId, sp.name as savingsProductName, ");
|
sqlBuilder.append("c.default_savings_product as savingsProductId, sp.name as savingsProductName, ");
|
||||||
@@ -355,6 +359,8 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
|
|||||||
sqlBuilder.append("left join m_code_value cvclienttype on cvclienttype.id = c.client_type_cv_id ");
|
sqlBuilder.append("left join m_code_value cvclienttype on cvclienttype.id = c.client_type_cv_id ");
|
||||||
sqlBuilder.append("left join m_code_value cvclassification on cvclassification.id = c.client_classification_cv_id ");
|
sqlBuilder.append("left join m_code_value cvclassification on cvclassification.id = c.client_classification_cv_id ");
|
||||||
sqlBuilder.append("left join m_code_value cvSubStatus on cvSubStatus.id = c.sub_status ");
|
sqlBuilder.append("left join m_code_value cvSubStatus on cvSubStatus.id = c.sub_status ");
|
||||||
|
sqlBuilder.append("left join m_code_value cvOccupationCategory on cvOccupationCategory.id = c.occupation_category_cv_id ");
|
||||||
|
sqlBuilder.append("left join m_code_value cvOccupation on cvOccupation.id = c.occupation_cv_id ");
|
||||||
sqlBuilder.append("left join m_code_value cvConstitution on cvConstitution.id = cnp.constitution_cv_id ");
|
sqlBuilder.append("left join m_code_value cvConstitution on cvConstitution.id = cnp.constitution_cv_id ");
|
||||||
sqlBuilder.append("left join m_code_value cvMainBusinessLine on cvMainBusinessLine.id = cnp.main_business_line_cv_id ");
|
sqlBuilder.append("left join m_code_value cvMainBusinessLine on cvMainBusinessLine.id = cnp.main_business_line_cv_id ");
|
||||||
|
|
||||||
@@ -369,6 +375,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
|
|||||||
public ClientData mapRow(final ResultSet rs, final int rowNum) throws SQLException {
|
public ClientData mapRow(final ResultSet rs, final int rowNum) throws SQLException {
|
||||||
|
|
||||||
final String accountNo = rs.getString("accountNo");
|
final String accountNo = rs.getString("accountNo");
|
||||||
|
final String cifNumber = rs.getString("cifNumber");
|
||||||
|
|
||||||
final Integer statusEnum = JdbcSupport.getInteger(rs, "statusEnum");
|
final Integer statusEnum = JdbcSupport.getInteger(rs, "statusEnum");
|
||||||
final EnumOptionData status = ClientEnumerations.status(statusEnum);
|
final EnumOptionData status = ClientEnumerations.status(statusEnum);
|
||||||
@@ -438,6 +445,14 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
|
|||||||
legalForm = ClientEnumerations.legalForm(legalFormEnum);
|
legalForm = ClientEnumerations.legalForm(legalFormEnum);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final Long occupationCategoryId = JdbcSupport.getLong(rs, "occupationCategoryId");
|
||||||
|
final String occupationCategoryValue = rs.getString("occupationCategoryValue");
|
||||||
|
final CodeValueData occupationCategory = CodeValueData.instance(occupationCategoryId, occupationCategoryValue);
|
||||||
|
|
||||||
|
final Long occupationId = JdbcSupport.getLong(rs, "occupationId");
|
||||||
|
final String occupationValue = rs.getString("occupationValue");
|
||||||
|
final CodeValueData occupation = CodeValueData.instance(occupationId, occupationValue);
|
||||||
|
|
||||||
final Long constitutionId = JdbcSupport.getLong(rs, "constitutionId");
|
final Long constitutionId = JdbcSupport.getLong(rs, "constitutionId");
|
||||||
final String constitutionValue = rs.getString("constitutionValue");
|
final String constitutionValue = rs.getString("constitutionValue");
|
||||||
final CodeValueData constitution = CodeValueData.instance(constitutionId, constitutionValue);
|
final CodeValueData constitution = CodeValueData.instance(constitutionId, constitutionValue);
|
||||||
@@ -455,10 +470,10 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
|
|||||||
submittedByLastname, activationDate, activatedByUsername, activatedByFirstname, activatedByLastname, closedOnDate,
|
submittedByLastname, activationDate, activatedByUsername, activatedByFirstname, activatedByLastname, closedOnDate,
|
||||||
closedByUsername, closedByFirstname, closedByLastname);
|
closedByUsername, closedByFirstname, closedByLastname);
|
||||||
|
|
||||||
return ClientData.instance(accountNo, status, subStatus, officeId, officeName, transferToOfficeId, transferToOfficeName, id,
|
return ClientData.instance(accountNo, cifNumber, status, subStatus, officeId, officeName, transferToOfficeId,
|
||||||
firstname, middlename, lastname, fullname, displayName, externalId, mobileNo, emailAddress, dateOfBirth, gender,
|
transferToOfficeName, id, firstname, middlename, lastname, fullname, displayName, externalId, mobileNo, emailAddress,
|
||||||
activationDate, imageId, staffId, staffName, timeline, savingsProductId, savingsProductName, savingsAccountId,
|
dateOfBirth, gender, activationDate, imageId, staffId, staffName, timeline, savingsProductId, savingsProductName,
|
||||||
clienttype, classification, legalForm, clientNonPerson, isStaff);
|
savingsAccountId, clienttype, classification, occupationCategory, occupation, legalForm, clientNonPerson, isStaff);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -577,7 +592,8 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
|
|||||||
final Collection<CodeValueData> clientNonPersonMainBusinessLineOptions = null;
|
final Collection<CodeValueData> clientNonPersonMainBusinessLineOptions = null;
|
||||||
final List<EnumOptionData> clientLegalFormOptions = null;
|
final List<EnumOptionData> clientLegalFormOptions = null;
|
||||||
return ClientData.template(null, null, null, null, narrations, null, null, clientTypeOptions, clientClassificationOptions,
|
return ClientData.template(null, null, null, null, narrations, null, null, clientTypeOptions, clientClassificationOptions,
|
||||||
clientNonPersonConstitutionOptions, clientNonPersonMainBusinessLineOptions, clientLegalFormOptions, null, null, null, null);
|
null, null, clientNonPersonConstitutionOptions, clientNonPersonMainBusinessLineOptions, clientLegalFormOptions, null, null,
|
||||||
|
null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -609,7 +625,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
|
|||||||
final StringBuilder builder = new StringBuilder(400);
|
final StringBuilder builder = new StringBuilder(400);
|
||||||
|
|
||||||
builder.append(
|
builder.append(
|
||||||
"c.id as id, c.account_no as accountNo, c.external_id as externalId, c.status_enum as statusEnum,c.sub_status as subStatus, ");
|
"c.id as id, c.account_no as accountNo, c.cif_number as cifNumber, c.external_id as externalId, c.status_enum as statusEnum,c.sub_status as subStatus, ");
|
||||||
builder.append(
|
builder.append(
|
||||||
"cvSubStatus.code_value as subStatusValue,cvSubStatus.code_description as subStatusDesc,c.office_id as officeId, o.name as officeName, ");
|
"cvSubStatus.code_value as subStatusValue,cvSubStatus.code_description as subStatusDesc,c.office_id as officeId, o.name as officeName, ");
|
||||||
builder.append("c.transfer_to_office_id as transferToOfficeId, transferToOffice.name as transferToOfficeName, ");
|
builder.append("c.transfer_to_office_id as transferToOfficeId, transferToOffice.name as transferToOfficeName, ");
|
||||||
@@ -626,6 +642,10 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
|
|||||||
builder.append("c.client_classification_cv_id as classificationId, ");
|
builder.append("c.client_classification_cv_id as classificationId, ");
|
||||||
builder.append("cvclassification.code_value as classificationValue, ");
|
builder.append("cvclassification.code_value as classificationValue, ");
|
||||||
builder.append("c.legal_form_enum as legalFormEnum, ");
|
builder.append("c.legal_form_enum as legalFormEnum, ");
|
||||||
|
builder.append("c.occupation_category_cv_id as occupationCategoryId, ");
|
||||||
|
builder.append("cvOccupationCategory.code_value as occupationCategoryValue, ");
|
||||||
|
builder.append("c.occupation_cv_id as occupationId, ");
|
||||||
|
builder.append("cvOccupation.code_value as occupationValue, ");
|
||||||
|
|
||||||
builder.append("c.submittedon_date as submittedOnDate, ");
|
builder.append("c.submittedon_date as submittedOnDate, ");
|
||||||
builder.append("sbu.username as submittedByUsername, ");
|
builder.append("sbu.username as submittedByUsername, ");
|
||||||
@@ -667,6 +687,8 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
|
|||||||
builder.append("left join m_code_value cvclienttype on cvclienttype.id = c.client_type_cv_id ");
|
builder.append("left join m_code_value cvclienttype on cvclienttype.id = c.client_type_cv_id ");
|
||||||
builder.append("left join m_code_value cvclassification on cvclassification.id = c.client_classification_cv_id ");
|
builder.append("left join m_code_value cvclassification on cvclassification.id = c.client_classification_cv_id ");
|
||||||
builder.append("left join m_code_value cvSubStatus on cvSubStatus.id = c.sub_status ");
|
builder.append("left join m_code_value cvSubStatus on cvSubStatus.id = c.sub_status ");
|
||||||
|
builder.append("left join m_code_value cvOccupationCategory on cvOccupationCategory.id = c.occupation_category_cv_id ");
|
||||||
|
builder.append("left join m_code_value cvOccupation on cvOccupation.id = c.occupation_cv_id ");
|
||||||
builder.append("left join m_code_value cvConstitution on cvConstitution.id = cnp.constitution_cv_id ");
|
builder.append("left join m_code_value cvConstitution on cvConstitution.id = cnp.constitution_cv_id ");
|
||||||
builder.append("left join m_code_value cvMainBusinessLine on cvMainBusinessLine.id = cnp.main_business_line_cv_id ");
|
builder.append("left join m_code_value cvMainBusinessLine on cvMainBusinessLine.id = cnp.main_business_line_cv_id ");
|
||||||
|
|
||||||
@@ -681,6 +703,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
|
|||||||
public ClientData mapRow(final ResultSet rs, final int rowNum) throws SQLException {
|
public ClientData mapRow(final ResultSet rs, final int rowNum) throws SQLException {
|
||||||
|
|
||||||
final String accountNo = rs.getString("accountNo");
|
final String accountNo = rs.getString("accountNo");
|
||||||
|
final String cifNumber = rs.getString("cifNumber");
|
||||||
|
|
||||||
final Integer statusEnum = JdbcSupport.getInteger(rs, "statusEnum");
|
final Integer statusEnum = JdbcSupport.getInteger(rs, "statusEnum");
|
||||||
final EnumOptionData status = ClientEnumerations.status(statusEnum);
|
final EnumOptionData status = ClientEnumerations.status(statusEnum);
|
||||||
@@ -749,6 +772,14 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
|
|||||||
legalForm = ClientEnumerations.legalForm(legalFormEnum);
|
legalForm = ClientEnumerations.legalForm(legalFormEnum);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final Long occupationCategoryId = JdbcSupport.getLong(rs, "occupationCategoryId");
|
||||||
|
final String occupationCategoryValue = rs.getString("occupationCategoryValue");
|
||||||
|
final CodeValueData occupationCategory = CodeValueData.instance(occupationCategoryId, occupationCategoryValue);
|
||||||
|
|
||||||
|
final Long occupationId = JdbcSupport.getLong(rs, "occupationId");
|
||||||
|
final String occupationValue = rs.getString("occupationValue");
|
||||||
|
final CodeValueData occupation = CodeValueData.instance(occupationId, occupationValue);
|
||||||
|
|
||||||
final Long constitutionId = JdbcSupport.getLong(rs, "constitutionId");
|
final Long constitutionId = JdbcSupport.getLong(rs, "constitutionId");
|
||||||
final String constitutionValue = rs.getString("constitutionValue");
|
final String constitutionValue = rs.getString("constitutionValue");
|
||||||
final CodeValueData constitution = CodeValueData.instance(constitutionId, constitutionValue);
|
final CodeValueData constitution = CodeValueData.instance(constitutionId, constitutionValue);
|
||||||
@@ -766,10 +797,10 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
|
|||||||
submittedByLastname, activationDate, activatedByUsername, activatedByFirstname, activatedByLastname, closedOnDate,
|
submittedByLastname, activationDate, activatedByUsername, activatedByFirstname, activatedByLastname, closedOnDate,
|
||||||
closedByUsername, closedByFirstname, closedByLastname);
|
closedByUsername, closedByFirstname, closedByLastname);
|
||||||
|
|
||||||
return ClientData.instance(accountNo, status, subStatus, officeId, officeName, transferToOfficeId, transferToOfficeName, id,
|
return ClientData.instance(accountNo, cifNumber, status, subStatus, officeId, officeName, transferToOfficeId,
|
||||||
firstname, middlename, lastname, fullname, displayName, externalId, mobileNo, emailAddress, dateOfBirth, gender,
|
transferToOfficeName, id, firstname, middlename, lastname, fullname, displayName, externalId, mobileNo, emailAddress,
|
||||||
activationDate, imageId, staffId, staffName, timeline, savingsProductId, savingsProductName, savingsAccountId,
|
dateOfBirth, gender, activationDate, imageId, staffId, staffName, timeline, savingsProductId, savingsProductName,
|
||||||
clienttype, classification, legalForm, clientNonPerson, isStaff);
|
savingsAccountId, clienttype, classification, occupationCategory, occupation, legalForm, clientNonPerson, isStaff);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-3
@@ -105,6 +105,12 @@ public class ClientTemplateReadPlatformServiceImpl implements ClientTemplateRead
|
|||||||
final List<CodeValueData> clientClassificationOptions = new ArrayList<>(
|
final List<CodeValueData> clientClassificationOptions = new ArrayList<>(
|
||||||
this.codeValueReadPlatformService.retrieveCodeValuesByCode(ClientApiConstants.CLIENT_CLASSIFICATION));
|
this.codeValueReadPlatformService.retrieveCodeValuesByCode(ClientApiConstants.CLIENT_CLASSIFICATION));
|
||||||
|
|
||||||
|
final List<CodeValueData> occupationCategoryOptions = new ArrayList<>(
|
||||||
|
this.codeValueReadPlatformService.retrieveCodeValuesByCode(ClientApiConstants.OCCUPATION_CATEGORY));
|
||||||
|
|
||||||
|
final List<CodeValueData> occupationOptions = new ArrayList<>(
|
||||||
|
this.codeValueReadPlatformService.retrieveCodeValuesByCode(ClientApiConstants.OCCUPATION));
|
||||||
|
|
||||||
final List<CodeValueData> clientNonPersonConstitutionOptions = new ArrayList<>(
|
final List<CodeValueData> clientNonPersonConstitutionOptions = new ArrayList<>(
|
||||||
this.codeValueReadPlatformService.retrieveCodeValuesByCode(ClientApiConstants.CLIENT_NON_PERSON_CONSTITUTION));
|
this.codeValueReadPlatformService.retrieveCodeValuesByCode(ClientApiConstants.CLIENT_NON_PERSON_CONSTITUTION));
|
||||||
|
|
||||||
@@ -117,9 +123,9 @@ public class ClientTemplateReadPlatformServiceImpl implements ClientTemplateRead
|
|||||||
EntityTables.CLIENT.getName(), null);
|
EntityTables.CLIENT.getName(), null);
|
||||||
|
|
||||||
return ClientData.template(defaultOfficeId, LocalDate.now(DateUtils.getDateTimeZoneOfTenant()), offices, staffOptions, null,
|
return ClientData.template(defaultOfficeId, LocalDate.now(DateUtils.getDateTimeZoneOfTenant()), offices, staffOptions, null,
|
||||||
genderOptions, savingsProductDatas, clientTypeOptions, clientClassificationOptions, clientNonPersonConstitutionOptions,
|
genderOptions, savingsProductDatas, clientTypeOptions, clientClassificationOptions, occupationCategoryOptions,
|
||||||
clientNonPersonMainBusinessLineOptions, clientLegalFormOptions, familyMemberOptions,
|
occupationOptions, clientNonPersonConstitutionOptions, clientNonPersonMainBusinessLineOptions, clientLegalFormOptions,
|
||||||
new ArrayList<AddressData>(Arrays.asList(address)), isAddressEnabled, datatableTemplates);
|
familyMemberOptions, new ArrayList<AddressData>(Arrays.asList(address)), isAddressEnabled, datatableTemplates);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Long defaultToUsersOfficeIfNull(final Long officeId) {
|
private Long defaultToUsersOfficeIfNull(final Long officeId) {
|
||||||
|
|||||||
+61
-4
@@ -171,6 +171,10 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP
|
|||||||
final String accountNo = command.stringValueOfParameterNamed("accountNo");
|
final String accountNo = command.stringValueOfParameterNamed("accountNo");
|
||||||
throw new PlatformDataIntegrityException("error.msg.client.duplicate.accountNo",
|
throw new PlatformDataIntegrityException("error.msg.client.duplicate.accountNo",
|
||||||
"Client with accountNo `" + accountNo + "` already exists", "accountNo", accountNo);
|
"Client with accountNo `" + accountNo + "` already exists", "accountNo", accountNo);
|
||||||
|
} else if (realCause.getMessage().contains("cif_number_UNIQUE") || realCause.getMessage().contains("cif_number")) {
|
||||||
|
final String cifNumber = command.stringValueOfParameterNamed("cifNumber");
|
||||||
|
throw new PlatformDataIntegrityException("error.msg.client.duplicate.cifNumber",
|
||||||
|
"Client with cifNumber `" + cifNumber + "` already exists", "cifNumber", cifNumber);
|
||||||
} else if (realCause.getMessage().contains("mobile_no")) {
|
} else if (realCause.getMessage().contains("mobile_no")) {
|
||||||
final String mobileNo = command.stringValueOfParameterNamed("mobileNo");
|
final String mobileNo = command.stringValueOfParameterNamed("mobileNo");
|
||||||
throw new PlatformDataIntegrityException("error.msg.client.duplicate.mobileNo",
|
throw new PlatformDataIntegrityException("error.msg.client.duplicate.mobileNo",
|
||||||
@@ -230,6 +234,20 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP
|
|||||||
.findOneByCodeNameAndIdWithNotFoundDetection(ClientApiConstants.CLIENT_CLASSIFICATION, clientClassificationId);
|
.findOneByCodeNameAndIdWithNotFoundDetection(ClientApiConstants.CLIENT_CLASSIFICATION, clientClassificationId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CodeValue occupationCategory = null;
|
||||||
|
final Long occupationCategoryId = command.longValueOfParameterNamed(ClientApiConstants.occupationCategoryIdParamName);
|
||||||
|
if (occupationCategoryId != null) {
|
||||||
|
occupationCategory = this.codeValueRepository
|
||||||
|
.findOneByCodeNameAndIdWithNotFoundDetection(ClientApiConstants.OCCUPATION_CATEGORY, occupationCategoryId);
|
||||||
|
}
|
||||||
|
|
||||||
|
CodeValue occupation = null;
|
||||||
|
final Long occupationId = command.longValueOfParameterNamed(ClientApiConstants.occupationIdParamName);
|
||||||
|
if (occupationId != null) {
|
||||||
|
occupation = this.codeValueRepository
|
||||||
|
.findOneByCodeNameAndIdWithNotFoundDetection(ClientApiConstants.OCCUPATION, occupationId);
|
||||||
|
}
|
||||||
|
|
||||||
final Long savingsProductId = command.longValueOfParameterNamed(ClientApiConstants.savingsProductIdParamName);
|
final Long savingsProductId = command.longValueOfParameterNamed(ClientApiConstants.savingsProductIdParamName);
|
||||||
if (savingsProductId != null) {
|
if (savingsProductId != null) {
|
||||||
this.savingsProductRepository.findById(savingsProductId)
|
this.savingsProductRepository.findById(savingsProductId)
|
||||||
@@ -250,6 +268,7 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP
|
|||||||
}
|
}
|
||||||
|
|
||||||
final String accountNo = command.stringValueOfParameterNamed(ClientApiConstants.accountNoParamName);
|
final String accountNo = command.stringValueOfParameterNamed(ClientApiConstants.accountNoParamName);
|
||||||
|
final String cifNumber = command.stringValueOfParameterNamed(ClientApiConstants.cifNumberParamName);
|
||||||
final String mobileNo = command.stringValueOfParameterNamed(ClientApiConstants.mobileNoParamName);
|
final String mobileNo = command.stringValueOfParameterNamed(ClientApiConstants.mobileNoParamName);
|
||||||
final String emailAddress = command.stringValueOfParameterNamed(ClientApiConstants.emailAddressParamName);
|
final String emailAddress = command.stringValueOfParameterNamed(ClientApiConstants.emailAddressParamName);
|
||||||
final String firstname = command.stringValueOfParameterNamed(ClientApiConstants.firstnameParamName);
|
final String firstname = command.stringValueOfParameterNamed(ClientApiConstants.firstnameParamName);
|
||||||
@@ -284,10 +303,10 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP
|
|||||||
|
|
||||||
final ExternalId externalId = externalIdFactory.createFromCommand(command, ClientApiConstants.externalIdParamName);
|
final ExternalId externalId = externalIdFactory.createFromCommand(command, ClientApiConstants.externalIdParamName);
|
||||||
|
|
||||||
final Client newClient = Client.instance(currentUser, status, clientOffice, clientParentGroup, accountNo, firstname, middlename,
|
final Client newClient = Client.instance(currentUser, status, clientOffice, clientParentGroup, accountNo, cifNumber, firstname,
|
||||||
lastname, fullname, activationDate, officeJoiningDate, externalId, mobileNo, emailAddress, staff, submittedOnDate,
|
middlename, lastname, fullname, activationDate, officeJoiningDate, externalId, mobileNo, emailAddress, staff,
|
||||||
savingsProductId, savingsAccountId, dataOfBirth, gender, clientType, clientClassification, legalForm.getValue(),
|
submittedOnDate, savingsProductId, savingsAccountId, dataOfBirth, gender, clientType, clientClassification,
|
||||||
isStaff);
|
occupationCategory, occupation, legalForm.getValue(), isStaff);
|
||||||
|
|
||||||
// Account Number generation
|
// Account Number generation
|
||||||
this.clientRepository.saveAndFlush(newClient);
|
this.clientRepository.saveAndFlush(newClient);
|
||||||
@@ -297,6 +316,13 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP
|
|||||||
this.clientRepository.saveAndFlush(newClient);
|
this.clientRepository.saveAndFlush(newClient);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CIF Number generation - auto-generate with CIF prefix if not provided
|
||||||
|
if (StringUtils.isBlank(cifNumber)) {
|
||||||
|
final String generatedCif = "CIF" + StringUtils.leftPad(newClient.getId().toString(), 10, '0');
|
||||||
|
newClient.updateCifNumber(generatedCif);
|
||||||
|
this.clientRepository.saveAndFlush(newClient);
|
||||||
|
}
|
||||||
|
|
||||||
boolean rollbackTransaction = false;
|
boolean rollbackTransaction = false;
|
||||||
if (newClient.isActive()) {
|
if (newClient.isActive()) {
|
||||||
validateParentGroupRulesBeforeClientActivation(newClient);
|
validateParentGroupRulesBeforeClientActivation(newClient);
|
||||||
@@ -508,6 +534,17 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP
|
|||||||
changes.put(ClientApiConstants.clientClassificationIdParamName, newValue);
|
changes.put(ClientApiConstants.clientClassificationIdParamName, newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (command.isChangeInLongParameterNamed(ClientApiConstants.occupationCategoryIdParamName,
|
||||||
|
clientForUpdate.occupationCategoryId())) {
|
||||||
|
final Long newValue = command.longValueOfParameterNamed(ClientApiConstants.occupationCategoryIdParamName);
|
||||||
|
changes.put(ClientApiConstants.occupationCategoryIdParamName, newValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (command.isChangeInLongParameterNamed(ClientApiConstants.occupationIdParamName, clientForUpdate.occupationId())) {
|
||||||
|
final Long newValue = command.longValueOfParameterNamed(ClientApiConstants.occupationIdParamName);
|
||||||
|
changes.put(ClientApiConstants.occupationIdParamName, newValue);
|
||||||
|
}
|
||||||
|
|
||||||
if (command.isChangeInIntegerParameterNamed(ClientApiConstants.legalFormIdParamName, clientForUpdate.getLegalForm())) {
|
if (command.isChangeInIntegerParameterNamed(ClientApiConstants.legalFormIdParamName, clientForUpdate.getLegalForm())) {
|
||||||
final Integer newValue = command.integerValueOfParameterNamed(ClientApiConstants.legalFormIdParamName);
|
final Integer newValue = command.integerValueOfParameterNamed(ClientApiConstants.legalFormIdParamName);
|
||||||
if (newValue != null) {
|
if (newValue != null) {
|
||||||
@@ -625,6 +662,26 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP
|
|||||||
clientForUpdate.updateClientClassification(newCodeVal);
|
clientForUpdate.updateClientClassification(newCodeVal);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (changes.containsKey(ClientApiConstants.occupationCategoryIdParamName)) {
|
||||||
|
final Long newValue = command.longValueOfParameterNamed(ClientApiConstants.occupationCategoryIdParamName);
|
||||||
|
CodeValue newCodeVal = null;
|
||||||
|
if (newValue != null) {
|
||||||
|
newCodeVal = this.codeValueRepository
|
||||||
|
.findOneByCodeNameAndIdWithNotFoundDetection(ClientApiConstants.OCCUPATION_CATEGORY, newValue);
|
||||||
|
}
|
||||||
|
clientForUpdate.updateOccupationCategory(newCodeVal);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (changes.containsKey(ClientApiConstants.occupationIdParamName)) {
|
||||||
|
final Long newValue = command.longValueOfParameterNamed(ClientApiConstants.occupationIdParamName);
|
||||||
|
CodeValue newCodeVal = null;
|
||||||
|
if (newValue != null) {
|
||||||
|
newCodeVal = this.codeValueRepository
|
||||||
|
.findOneByCodeNameAndIdWithNotFoundDetection(ClientApiConstants.OCCUPATION, newValue);
|
||||||
|
}
|
||||||
|
clientForUpdate.updateOccupation(newCodeVal);
|
||||||
|
}
|
||||||
|
|
||||||
if (!changes.isEmpty()) {
|
if (!changes.isEmpty()) {
|
||||||
this.clientRepository.saveAndFlush(clientForUpdate);
|
this.clientRepository.saveAndFlush(clientForUpdate);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -245,4 +245,6 @@
|
|||||||
<include file="parts/0224_add_mobile_lookup_log.xml" relativeToChangelogFile="true"/>
|
<include file="parts/0224_add_mobile_lookup_log.xml" relativeToChangelogFile="true"/>
|
||||||
<include file="parts/0225_add_current_account_support.xml" relativeToChangelogFile="true"/>
|
<include file="parts/0225_add_current_account_support.xml" relativeToChangelogFile="true"/>
|
||||||
<include file="parts/0226_add_cfcfrms_tables.xml" relativeToChangelogFile="true"/>
|
<include file="parts/0226_add_cfcfrms_tables.xml" relativeToChangelogFile="true"/>
|
||||||
|
<include file="parts/0227_add_client_cif_number.xml" relativeToChangelogFile="true"/>
|
||||||
|
<include file="parts/0228_add_occupation_fields.xml" relativeToChangelogFile="true"/>
|
||||||
</databaseChangeLog>
|
</databaseChangeLog>
|
||||||
|
|||||||
+58
@@ -0,0 +1,58 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
or more contributor license agreements. See the NOTICE file
|
||||||
|
distributed with this work for additional information
|
||||||
|
regarding copyright ownership. The ASF licenses this file
|
||||||
|
to you under the Apache License, Version 2.0 (the
|
||||||
|
"License"); you may not use this file except in compliance
|
||||||
|
with the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing,
|
||||||
|
software distributed under the License is distributed on an
|
||||||
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
KIND, either express or implied. See the License for the
|
||||||
|
specific language governing permissions and limitations
|
||||||
|
under the License.
|
||||||
|
|
||||||
|
-->
|
||||||
|
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.13.xsd">
|
||||||
|
|
||||||
|
<changeSet author="fineract" id="0227-1">
|
||||||
|
<preConditions onFail="MARK_RAN">
|
||||||
|
<not><columnExists tableName="m_client" columnName="cif_number"/></not>
|
||||||
|
</preConditions>
|
||||||
|
<addColumn tableName="m_client">
|
||||||
|
<column name="cif_number" type="VARCHAR(20)">
|
||||||
|
<constraints nullable="true" />
|
||||||
|
</column>
|
||||||
|
</addColumn>
|
||||||
|
</changeSet>
|
||||||
|
|
||||||
|
<changeSet author="fineract" id="0227-2">
|
||||||
|
<preConditions onFail="MARK_RAN">
|
||||||
|
<columnExists tableName="m_client" columnName="cif_number"/>
|
||||||
|
</preConditions>
|
||||||
|
<sql>UPDATE m_client SET cif_number = CONCAT('CIF', LPAD(CAST(id AS VARCHAR), 10, '0')) WHERE cif_number IS NULL</sql>
|
||||||
|
</changeSet>
|
||||||
|
|
||||||
|
<changeSet author="fineract" id="0227-3">
|
||||||
|
<preConditions onFail="MARK_RAN">
|
||||||
|
<columnExists tableName="m_client" columnName="cif_number"/>
|
||||||
|
</preConditions>
|
||||||
|
<addNotNullConstraint tableName="m_client" columnName="cif_number" columnDataType="VARCHAR(20)" />
|
||||||
|
</changeSet>
|
||||||
|
|
||||||
|
<changeSet author="fineract" id="0227-4">
|
||||||
|
<preConditions onFail="MARK_RAN">
|
||||||
|
<not><indexExists indexName="cif_number_UNIQUE"/></not>
|
||||||
|
</preConditions>
|
||||||
|
<addUniqueConstraint tableName="m_client" columnNames="cif_number" constraintName="cif_number_UNIQUE" />
|
||||||
|
</changeSet>
|
||||||
|
|
||||||
|
</databaseChangeLog>
|
||||||
+167
@@ -0,0 +1,167 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
or more contributor license agreements. See the NOTICE file
|
||||||
|
distributed with this work for additional information
|
||||||
|
regarding copyright ownership. The ASF licenses this file
|
||||||
|
to you under the Apache License, Version 2.0 (the
|
||||||
|
"License"); you may not use this file except in compliance
|
||||||
|
with the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing,
|
||||||
|
software distributed under the License is distributed on an
|
||||||
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
KIND, either express or implied. See the License for the
|
||||||
|
specific language governing permissions and limitations
|
||||||
|
under the License.
|
||||||
|
|
||||||
|
-->
|
||||||
|
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.13.xsd">
|
||||||
|
|
||||||
|
<!-- ==================== Add OccupationCategory code ==================== -->
|
||||||
|
<changeSet author="fineract" id="0228-1">
|
||||||
|
<preConditions onFail="MARK_RAN">
|
||||||
|
<sqlCheck expectedResult="0">SELECT COUNT(*) FROM m_code WHERE code_name = 'OccupationCategory'</sqlCheck>
|
||||||
|
</preConditions>
|
||||||
|
<insert tableName="m_code">
|
||||||
|
<column name="code_name" value="OccupationCategory"/>
|
||||||
|
<column name="is_system_defined" valueBoolean="true"/>
|
||||||
|
</insert>
|
||||||
|
</changeSet>
|
||||||
|
|
||||||
|
<changeSet author="fineract" id="0228-2">
|
||||||
|
<preConditions onFail="MARK_RAN">
|
||||||
|
<sqlCheck expectedResult="0">SELECT COUNT(*) FROM m_code_value WHERE code_id = (SELECT id FROM m_code WHERE code_name = 'OccupationCategory')</sqlCheck>
|
||||||
|
</preConditions>
|
||||||
|
<sql>
|
||||||
|
INSERT INTO m_code_value (code_id, code_value, order_position, is_active, is_mandatory)
|
||||||
|
SELECT id, val, pos, true, false FROM m_code
|
||||||
|
CROSS JOIN (VALUES
|
||||||
|
('Salaried / Service', 1),
|
||||||
|
('Business / Self Employed', 2),
|
||||||
|
('Professional', 3),
|
||||||
|
('Agriculture', 4),
|
||||||
|
('Student / Non-Earning', 5),
|
||||||
|
('Others', 6)
|
||||||
|
) AS t(val, pos)
|
||||||
|
WHERE code_name = 'OccupationCategory';
|
||||||
|
</sql>
|
||||||
|
</changeSet>
|
||||||
|
|
||||||
|
<!-- ==================== Add Occupation code ==================== -->
|
||||||
|
<changeSet author="fineract" id="0228-3">
|
||||||
|
<preConditions onFail="MARK_RAN">
|
||||||
|
<sqlCheck expectedResult="0">SELECT COUNT(*) FROM m_code WHERE code_name = 'Occupation'</sqlCheck>
|
||||||
|
</preConditions>
|
||||||
|
<insert tableName="m_code">
|
||||||
|
<column name="code_name" value="Occupation"/>
|
||||||
|
<column name="is_system_defined" valueBoolean="true"/>
|
||||||
|
</insert>
|
||||||
|
</changeSet>
|
||||||
|
|
||||||
|
<changeSet author="fineract" id="0228-4">
|
||||||
|
<preConditions onFail="MARK_RAN">
|
||||||
|
<sqlCheck expectedResult="0">SELECT COUNT(*) FROM m_code_value WHERE code_id = (SELECT id FROM m_code WHERE code_name = 'Occupation')</sqlCheck>
|
||||||
|
</preConditions>
|
||||||
|
<sql>
|
||||||
|
INSERT INTO m_code_value (code_id, code_value, order_position, is_active, is_mandatory)
|
||||||
|
SELECT id, val, pos, true, false FROM m_code
|
||||||
|
CROSS JOIN (VALUES
|
||||||
|
('Government Employee', 1),
|
||||||
|
('Public Sector Undertaking (PSU) Employee', 2),
|
||||||
|
('Private Sector Employee', 3),
|
||||||
|
('Defence / Armed Forces Personnel', 4),
|
||||||
|
('Police / Paramilitary', 5),
|
||||||
|
('Teacher / Professor', 6),
|
||||||
|
('Doctor (Salaried)', 7),
|
||||||
|
('Engineer (Salaried)', 8),
|
||||||
|
('Bank Employee', 9),
|
||||||
|
('Railway Employee', 10),
|
||||||
|
('Business Owner / Proprietor', 11),
|
||||||
|
('Trader / Merchant', 12),
|
||||||
|
('Manufacturer', 13),
|
||||||
|
('Contractor', 14),
|
||||||
|
('Real Estate / Property Dealer', 15),
|
||||||
|
('Retailer', 16),
|
||||||
|
('Wholesaler', 17),
|
||||||
|
('Importer / Exporter', 18),
|
||||||
|
('Commission Agent', 19),
|
||||||
|
('Transport / Logistics Owner', 20),
|
||||||
|
('Doctor (Private Practice)', 21),
|
||||||
|
('Lawyer / Advocate', 22),
|
||||||
|
('Chartered Accountant', 23),
|
||||||
|
('Company Secretary', 24),
|
||||||
|
('Architect', 25),
|
||||||
|
('Consultant', 26),
|
||||||
|
('Engineer (Self Employed)', 27),
|
||||||
|
('IT Professional / Freelancer', 28),
|
||||||
|
('Financial Advisor', 29),
|
||||||
|
('Auditor', 30),
|
||||||
|
('Farmer (Own Land)', 31),
|
||||||
|
('Tenant Farmer', 32),
|
||||||
|
('Agricultural Labourer', 33),
|
||||||
|
('Horticulture / Floriculture', 34),
|
||||||
|
('Dairy / Animal Husbandry', 35),
|
||||||
|
('Fisherman', 36),
|
||||||
|
('Poultry Farmer', 37),
|
||||||
|
('Agri Allied Activities', 38),
|
||||||
|
('Student', 39),
|
||||||
|
('Housewife / Homemaker', 40),
|
||||||
|
('Dependent / Minor', 41),
|
||||||
|
('Unemployed', 42),
|
||||||
|
('Retired (Pension)', 43),
|
||||||
|
('Retired (Non-Pension)', 44),
|
||||||
|
('NRI (Non-Resident Indian)', 45),
|
||||||
|
('PIO / OCI', 46),
|
||||||
|
('Politician / Elected Representative', 47),
|
||||||
|
('Religious / Trust Worker', 48),
|
||||||
|
('NGO / Social Worker', 49),
|
||||||
|
('Artisan / Craftsman', 50),
|
||||||
|
('Labourer / Daily Wage', 51),
|
||||||
|
('Domestic Worker', 52),
|
||||||
|
('Driver / Operator', 53),
|
||||||
|
('Others', 54)
|
||||||
|
) AS t(val, pos)
|
||||||
|
WHERE code_name = 'Occupation';
|
||||||
|
</sql>
|
||||||
|
</changeSet>
|
||||||
|
|
||||||
|
<!-- ==================== Add columns to m_client table ==================== -->
|
||||||
|
<changeSet author="fineract" id="0228-5">
|
||||||
|
<preConditions onFail="MARK_RAN">
|
||||||
|
<not><columnExists tableName="m_client" columnName="occupation_category_cv_id"/></not>
|
||||||
|
</preConditions>
|
||||||
|
<addColumn tableName="m_client">
|
||||||
|
<column name="occupation_category_cv_id" type="BIGINT">
|
||||||
|
<constraints nullable="true" />
|
||||||
|
</column>
|
||||||
|
<column name="occupation_cv_id" type="BIGINT">
|
||||||
|
<constraints nullable="true" />
|
||||||
|
</column>
|
||||||
|
</addColumn>
|
||||||
|
</changeSet>
|
||||||
|
|
||||||
|
<changeSet author="fineract" id="0228-6">
|
||||||
|
<preConditions onFail="MARK_RAN">
|
||||||
|
<not><foreignKeyConstraintExists foreignKeyName="FK_m_client_occupation_category_cv_id"/></not>
|
||||||
|
</preConditions>
|
||||||
|
<addForeignKeyConstraint baseTableName="m_client" baseColumnNames="occupation_category_cv_id"
|
||||||
|
referencedTableName="m_code_value" referencedColumnNames="id"
|
||||||
|
constraintName="FK_m_client_occupation_category_cv_id" />
|
||||||
|
</changeSet>
|
||||||
|
|
||||||
|
<changeSet author="fineract" id="0228-7">
|
||||||
|
<preConditions onFail="MARK_RAN">
|
||||||
|
<not><foreignKeyConstraintExists foreignKeyName="FK_m_client_occupation_cv_id"/></not>
|
||||||
|
</preConditions>
|
||||||
|
<addForeignKeyConstraint baseTableName="m_client" baseColumnNames="occupation_cv_id"
|
||||||
|
referencedTableName="m_code_value" referencedColumnNames="id"
|
||||||
|
constraintName="FK_m_client_occupation_cv_id" />
|
||||||
|
</changeSet>
|
||||||
|
|
||||||
|
</databaseChangeLog>
|
||||||
Reference in New Issue
Block a user