diff --git a/.gitignore b/.gitignore index 8501d18f..bd9488ed 100644 --- a/.gitignore +++ b/.gitignore @@ -1,35 +1,6 @@ -# Compiled class file -*.class - -# Log file -*.log - -# BlueJ files -*.ctxt - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# Package Files # -*.jar -*.war -*.ear -*.zip -*.tar.gz -*.rar - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* -/.idea -/.settings -/target +.idea/ +/target/ .classpath .project -fintech.iml -.DS_Store -/projectFilesBackup/ -/fintech.ipr -/fintech.iws -/.gradle/ -/logs/ -/tomcat.8080/ +/.settings/ +bank-master.iml diff --git a/README.txt b/README.txt index 5d360966..642b9fd1 100644 --- a/README.txt +++ b/README.txt @@ -1,3 +1,18 @@ -mvn -Dtest=FixedCreatePageUITest test +mvn clean install \ + -Ddb.tenant.name=bank \ + -Ddb.tenant.url=jdbc:mysql://192.168.1.6:3306/bank?useSSL=true \ + -Ddb.tenant.user=bank \ + -Ddb.tenant.password=password \ + -Ddb.tenant.driver=com.mysql.cj.jdbc.Driver \ + -Ddb.name=bank_infrastructure \ + -Ddb.url=jdbc:mysql://192.168.1.6:3306/bank_infrastructure?useSSL=true \ + -Ddb.user=bank \ + -Ddb.password=password \ + -Ddb.driver=com.mysql.cj.jdbc.Driver -?baseApiUrl=http://172.16.1.101:8080&tenantIdentifier=default \ No newline at end of file +mvn flyway:migrate + -Ddb.tenant.name=bank \ + -Ddb.tenant.url=jdbc:mysql://192.168.1.6:3306/bank?useSSL=true \ + -Ddb.tenant.user=bank \ + -Ddb.tenant.password=password \ + -Ddb.tenant.driver=com.mysql.cj.jdbc.Driver diff --git a/bank-api/pom.xml b/bank-api/pom.xml new file mode 100644 index 00000000..a1885dab --- /dev/null +++ b/bank-api/pom.xml @@ -0,0 +1,277 @@ + + + + 4.0.0 + + + org.springframework.boot + spring-boot-starter-parent + 2.3.3.RELEASE + + + + com.angkorteam.bank + bank-api + 1.0 + war + + bank-api + + + + 29.0-jre + UTF-8 + UTF-8 + 1.8 + 2.5.3 + 3.8.1 + 2.10 + 2.0 + 8.9.0 + 3.1.0 + 2.8.6 + 3.11 + 2.6 + 1.3 + 4.5.12 + 1.66 + 1.9.3 + 1.4.7 + 2.10.6 + 2.7.0 + 8.0.21 + 3.13.4 + 0.9.12 + 1.8 + 1.6 + + yyyy-MM-dd'T'HH:mm:ssZZ + 1.7.25 + + 5.0.5.RELEASE + 1.10 + 3.12.0 + 2.5.03 + 0.9.12 + 4.1.2 + 1.16.1 + 4.12 + + + + + + com.angkorteam.webui + common + 1.0.0 + + + + org.apache.poi + poi + 4.1.2 + + + + org.apache.metamodel + MetaModel-full + 5.3.2 + + + org.json + json + + + + + + com.oracle.database.jdbc + ojdbc8 + 12.2.0.1 + + + + org.apache.poi + poi-ooxml + 4.1.2 + + + + io.github.openunirest + unirest-java + ${unirest-java.version} + + + org.json + json + + + + + + commons-net + commons-net + 3.6 + + + + org.apache.commons + commons-exec + ${commons-exec.version} + + + + commons-validator + commons-validator + ${commons-validator.version} + + + + org.reflections + reflections + ${reflections.version} + + + + org.apache.commons + commons-text + ${commons-text.version} + + + + org.jooq + jooq + ${jooq.version} + + + + org.jasypt + jasypt + ${jasypt.version} + + + + javax.mail + mail + ${mail.version} + + + + joda-time + joda-time + ${joda-time.version} + + + + mysql + mysql-connector-java + ${mysql.version} + + + + org.apache.commons + commons-dbcp2 + ${commons-dbcp2.version} + + + + commons-io + commons-io + ${commons-io.version} + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + + org.apache.httpcomponents + httpclient + ${httpclient.version} + + + + com.google.guava + guava + ${guava.version} + + + + com.google.code.gson + gson + ${gson.version} + + + + org.springframework + spring-context-support + + + + org.springframework + spring-jdbc + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + ROOT + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${java.version} + ${java.version} + ${project.build.sourceEncoding} + true + true + + + + + org.apache.maven.plugins + maven-eclipse-plugin + ${maven-eclipse-plugin.version} + + true + ${wtp.version} + + + .settings/org.eclipse.core.resources.prefs + + =${project.build.sourceEncoding}${line.separator}]]> + + + + + + + + + + diff --git a/bank-base-dao/.gitignore b/bank-base-dao/.gitignore new file mode 100644 index 00000000..e505ce23 --- /dev/null +++ b/bank-base-dao/.gitignore @@ -0,0 +1,6 @@ +.idea/ +/target/ +.classpath +.project +/.settings/ +bank-base-dao.iml diff --git a/bank-base-dao/README.txt b/bank-base-dao/README.txt new file mode 100644 index 00000000..0afa4ec9 --- /dev/null +++ b/bank-base-dao/README.txt @@ -0,0 +1,13 @@ +mvn clean install flyway:migrate \ + -Ddb.tenant.name=bank \ + -Ddb.tenant.url=jdbc:mysql://192.168.1.6:3306/bank?useSSL=true \ + -Ddb.tenant.user=bank \ + -Ddb.tenant.password=password \ + -Ddb.tenant.driver=com.mysql.cj.jdbc.Driver + +mvn flyway:migrate \ + -Ddb.tenant.name=bank \ + -Ddb.tenant.url=jdbc:mysql://192.168.1.6:3306/bank?useSSL=true \ + -Ddb.tenant.user=bank \ + -Ddb.tenant.password=password \ + -Ddb.tenant.driver=com.mysql.cj.jdbc.Driver diff --git a/bank-base-dao/pom.xml b/bank-base-dao/pom.xml new file mode 100644 index 00000000..beb7015e --- /dev/null +++ b/bank-base-dao/pom.xml @@ -0,0 +1,132 @@ + + + + 4.0.0 + + com.angkorteam.bank + bank-base-dao + 1.0 + jar + + + 2.10 + 3.8.1 + 11 + UTF-8 + 2.0 + 5.3.2 + 7.3.2 + 4.2.2 + 2.8.0 + 30.1-jre + 8.0.22 + + + + + + com.angkorteam.webui + metamodel + 1.0.0 + + + + com.angkorteam.webui + jdbc-query + 1.0.0 + + + + mysql + mysql-connector-java + ${mysql.version} + + + + + + + db-ddl + + + + org.flywaydb + flyway-maven-plugin + ${flyway.version} + + + + mysql + mysql-connector-java + ${mysql.version} + + + + + + compile + + migrate + + + + + + ${db.tenant.name} + ${db.tenant.url} + ${db.tenant.user} + ${db.tenant.driver} + ${db.tenant.password} + + classpath:com/angkorteam/bank/dao/base/flyway + + false + true + + + + + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${java.version} + ${java.version} + ${project.build.sourceEncoding} + true + true + + + + + org.apache.maven.plugins + maven-eclipse-plugin + ${maven-eclipse-plugin.version} + + true + ${wtp.version} + + + .settings/org.eclipse.core.resources.prefs + + =${project.build.sourceEncoding}${line.separator}]]> + + + + + + + + + + diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/Checksum.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/Checksum.java new file mode 100644 index 00000000..b5a4fa79 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/Checksum.java @@ -0,0 +1,115 @@ +package com.angkorteam.bank.dao.base; + +public interface Checksum { + + int V1__MifosPlatformCoreDdlLatest = 1178384595; + int V2__MifosXBaseReferenceDataUTF8 = 1270510311; + int V3__MifosXPermissionsAndAuthorisationUTF8 = 1530020039; + int V4__MifosXCoreReportsUTF8 = 268196435; + int V5__UpdateSavingsProductAndAccountTables = 209782227; + int V6__AddMinMaxPrincipalColumnToLoan = 36604314; + int V7__RemoveReadMakerCheckerPermission = 471043294; + int V8__DepositTransactionPermissionsIfTheyExist = 1517877982; + int V9__AddMinMaxConstraintColumnToLoanLoanProduct = 419829884; + int V10__InterestPostingFieldsForSavings = 2109667027; + int V11__AddPaymentDetails = 355074200; + int V12__AddExternalIdToCoupleOfTables = 893767518; + int V13__AddGroupAndClientPendingConfiguration = 1478696579; + int V14__RenameStatusIdToEnum = 407674042; + int V15__CenterPermissions = 1676553793; + int V16__DropMinMaxColumnOnLoanTable = 315591551; + int V17__UpdateStretchyReportingDdl = 664134537; + int V18__UpdateStretchyReportingReportSql = 82976474; + int V19__ReportMaintenancePermissions = 531876709; + int V20__ReportMaintPermsReallyConfiguration = 485873187; + int V21__ActivationPermissionsForClients = 1618554889; + int V22__AlterGroupForConsistencyAddPermissions = 532986823; + int V23__RemoveEnableDisableConfigurationForClientGroupStatus = 1340151887; + int V24__AddGroupClientForeignKeyConstraintInLoanTable = 1243998985; + int V25__UpdateClientReportsForStatusAndActivationChange = 1408734171; + int V26__AddSupportForWithdrawalFeesOnSavings = 1529381430; + int V27__AddLoanTypeColumnToLoanTable = 2032348715; + int V28__AccountingAbstractionsAndAutoposting = 1598868673; + int V29__AddSupportForAnnualFeesOnSavings = 616826595; + int V30__AddReferenceNumberToAccGlJournalEntry = 1080168519; + int V31__DropAutoPostings = 1745764408; + int V32__AssociateDisassociateClientsFromGroupPermissions = 1697656268; + int V33__DropUniqueCheckOnStretchyReportParameter = 779168981; + int V34__AddUniqueCheckOnStretchyReportParameter = 1991877701; + int V35__AddHierarchyColumnForAccGlAccount = 1403640190; + int V36__AddTagIdColumnForAccGlAccount = 2053853879; + int V37__AddCenterGroupCollectionSheetPermissions = 1150302133; + int V38__AddGroupSummaryDetailsReport = 1054783677; + int V39__PaymentChannelsUpdates = 41110997; + int V40__AddPermissionsForAccountingRule = 230162757; + int V41__GroupSummaryReports = 289092253; + int V42__AddDefaultValueForIdForAccAccountingRule = 1197567870; + int V43__AccountingForSavings = 1402240759; + int V44__DocumentIncreaseSizeOfColumnType = 2009147271; + int V45__CreateAccRuleTagsTable = 1430977673; + int V46__ExtendDatatablesApi = 190544444; + int V47__StaffHierarchyLinkToUsers = 1771126711; + int V48__AddingS3Support = 1848845355; + int V49__TrackLoanChargePaymentTransactions = 294965482; + int V50__AddGraceSettingsToLoanProduct = 2065560333; + int V51__TrackAdditionalDetailsRelatedToInstallmentPerformance = 951302364; + int V52__AddBooleanSupportColsToAccAccountingRule = 1327774408; + int V53__TrackAdvanceAndLatePaymentsOnInstallment = 1844751348; + int V54__ChargeToIncomeAccountMappings = 277253019; + int V55__AddAdditionalTransactionProcessingStrategies = 1883439644; + int V56__TrackOverpaidAmountOnLoans = 1267194211; + int V57__AddDefaultValuesToDebitAndCreditAccountsAccAccountingRule = 1121723230; + int V58__CreateHolidayTablesChanged = 1849797421; + int V59__AddGroupRolesSchemaAndPermissions = 305736156; + int V60__QuipoDashboardReports = 589622437; + int V61__TxnRunningBalanceExample = 432583677; + int V62__AddStaffIdToMClientChanged = 418318071; + int V63__AddSyncDisbursementWithMeetingColumnToLoan = 2103846587; + int V64__AddPermissionForAssignStaff = 1710948687; + int V65__FixRupeeSymbolIssues = 539596704; + int V66__ClientCloseFunctionality = 1492778071; + int V67__LoansInAdvanceTable = 557184514; + int V68__QuipoDashboardReportsUpdated = 124732843; + int V69__LoansInAdvanceInitialise = 1477727365; + int V70__QuipoProgramDetailQueryFix = 637016132; + int V71__InsertRescheduleRepaymentToConfiguration = 1381377277; + int V72__AddMLoanCounterChanges = 1178135111; + int V73__AddRepaymentsRescheduledToAndProcessedColumnToHoliday = 1537786378; + int V74__AlterMLoanCounterTableAddGroup = 2135724009; + int V75__AddRescheduleRepaymentsOnHolidaysToConfiguration = 527706026; + int V76__RenamePermissionGrouping = 1211931705; + int V77__AlterMProductLoanChanges = 1142554817; + int V78__BreakdownPortfolioGrouping = 2114167814; + int V79__ScheduleJobsTables = 961110935; + int V80__ScheduleJobsTablesUpdates = 1298953047; + int V81__SavingsRelatedChanges = 1596129705; + int V82__ScheduleJobsTablesUpdatesForRunningStatus = 1689343717; + int V83__NonWorkingDaysTable = 224916605; + int V84__UndoSavingsTransactionPermission = 299641208; + int V85__ProductMixRelatedChanges = 799045495; + int V86__UpdateWorkingDays = 1743637694; + int V87__AddPermissionForScheduler = 1415995226; + int V88__AddedUpdateConstrainForSchedulerJobs = 999662796; + int V89__AddedSchedulerGroup = 681263383; + int V90__ClientPerformanceHistoryReports = 1191375535; + int V91_1__ApplyAnnualFeesPermission = 474150186; + int V91_2__ConfigurationSettingsForHolidayAndNonWorkingday = 1038020404; + int V92__GroupCenterAssignStaffPermission = 412525573; + int V93__LoanTransactionExternalId = 304750870; + int V94__AddedSavingsAccontType = 230191469; + int V95__BatchJobPostInterest = 1864394640; + int V96__SavingsAccountsTransfersTable = 197096771; + int V97__AddPermissionForAdjustSavingsTransaction = 1224630933; + int V98__AddedCurrencyRoundOfForMultipleOf = 1888468535; + int V100__GroupSavingSummaryReport = 1221236984; + int V101__AddMulitplesOfToAccountTransfersTable = 697998990; + int V102__ClientAttendanceTables = 1455273187; + int V103__ClusterSupportForBatchJobs = 1970673459; + int V104__PermissionsForTransfers = 176080358; + int V105__TrackLoanTransactionAgainstOffice = 1786384468; + int V106__MorePermissionsForTransfers = 2026915254; + int V107__DatatableCodeMappings = 945286699; + int V108__ClientHasTransferOffice = 939937454; + int V109__AccountTransferWithdrawalFeeConfiguration = 1661616198; + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/ChecksumProgram.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/ChecksumProgram.java new file mode 100644 index 00000000..982ce44d --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/ChecksumProgram.java @@ -0,0 +1,13 @@ +package com.angkorteam.bank.dao.base; + +import com.angkorteam.metamodel.utility.ChecksumUtility; + +import java.io.File; +import java.io.IOException; + +public class ChecksumProgram { + public static void main(String[] args) throws IOException { + File folder = new File("bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway"); + ChecksumUtility.process(folder); + } +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/RepairProgram.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/RepairProgram.java new file mode 100644 index 00000000..8e9156ca --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/RepairProgram.java @@ -0,0 +1,16 @@ +package com.angkorteam.bank.dao.base; + +import com.angkorteam.metamodel.utility.LiquibaseUtility; +import org.xml.sax.SAXException; + +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.TransformerException; +import java.io.File; +import java.io.IOException; + +public class RepairProgram { + public static void main(String[] args) throws IOException, SAXException, ParserConfigurationException, TransformerException { + File folder = new File("bank-base-dao/src/main/resources"); + LiquibaseUtility.process(folder); + } +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V100__GroupSavingSummaryReport.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V100__GroupSavingSummaryReport.java new file mode 100644 index 00000000..72b042cc --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V100__GroupSavingSummaryReport.java @@ -0,0 +1,39 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V100__GroupSavingSummaryReport extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V100__GroupSavingSummaryReport; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + Table stretchy_report = dataContext.getDefaultSchema().getTableByName("stretchy_report"); + insert_stretchy_report(named, stretchy_report, "GroupSavingSummary", "Table", null, null, "select ifnull(cur.display_symbol, sa.currency_code) as currency,\ncount(sa.id) as totalSavingAccounts, ifnull(sum(sa.account_balance_derived),0) as totalSavings\nfrom m_group topgroup\njoin m_office o on o.id = topgroup.office_id and o.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\njoin m_group g on g.hierarchy like concat(topgroup.hierarchy, \'%\')\njoin m_savings_account sa on sa.group_id = g.id\nleft join m_currency cur on cur.code = sa.currency_code\nwhere topgroup.id = ${groupId}\nand sa.activatedon_date is not null\ngroup by sa.currency_code", "Utility query for getting group or center saving summary details for a group_id", 1, 0); + } + + protected void insert_stretchy_report(NamedParameterJdbcTemplate named, Table table, String report_name, String report_type, String report_subtype, String report_category, String report_sql, String description, long core_report, long use_report) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("report_name").getName(), report_name); + insertQuery.addValue(table.getColumnByName("report_type").getName(), report_type); + insertQuery.addValue(table.getColumnByName("report_subtype").getName(), report_subtype); + insertQuery.addValue(table.getColumnByName("use_report").getName(), use_report); + insertQuery.addValue(table.getColumnByName("report_sql").getName(), report_sql); + insertQuery.addValue(table.getColumnByName("report_category").getName(), report_category); + insertQuery.addValue(table.getColumnByName("core_report").getName(), core_report); + insertQuery.addValue(table.getColumnByName("description").getName(), description); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V101__AddMulitplesOfToAccountTransfersTable.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V101__AddMulitplesOfToAccountTransfersTable.java new file mode 100644 index 00000000..3cd89917 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V101__AddMulitplesOfToAccountTransfersTable.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V101__AddMulitplesOfToAccountTransfersTable extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V101__AddMulitplesOfToAccountTransfersTable + getInternalChecksum("V98__added_currency_roundof_for_multipleof.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V98__added_currency_roundof_for_multipleof.xml"); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V102__ClientAttendanceTables.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V102__ClientAttendanceTables.java new file mode 100644 index 00000000..bc094e4e --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V102__ClientAttendanceTables.java @@ -0,0 +1,40 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V102__ClientAttendanceTables extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V102__ClientAttendanceTables + getInternalChecksum("V102__client_attendance_tables.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V102__client_attendance_tables.xml"); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "portfolio", "CREATE_MEETING", "MEETING", "CREATE", 0); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_MEETING", "MEETING", "UPDATE", 0); + insert_m_permission(named, m_permission, "portfolio", "DELETE_MEETING", "MEETING", "DELETE", 0); + insert_m_permission(named, m_permission, "portfolio", "SAVEORUPDATEATTENDANCE_MEETING", "MEETING", "SAVEORUPDATEATTENDANCE", 0); + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V103__ClusterSupportForBatchJobs.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V103__ClusterSupportForBatchJobs.java new file mode 100644 index 00000000..d27ecd34 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V103__ClusterSupportForBatchJobs.java @@ -0,0 +1,35 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V103__ClusterSupportForBatchJobs extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V103__ClusterSupportForBatchJobs + getInternalChecksum("V103__cluster_support_for_batch_jobs.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V103__cluster_support_for_batch_jobs.xml"); + Table scheduler_detail = dataContext.getDefaultSchema().getTableByName("scheduler_detail"); + insert_scheduler_detail(named, scheduler_detail, false, true, true); + } + + protected void insert_scheduler_detail(NamedParameterJdbcTemplate named, Table table, boolean is_suspended, boolean execute_misfired_jobs, boolean reset_scheduler_on_bootup) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("is_suspended").getName(), is_suspended); + insertQuery.addValue(table.getColumnByName("execute_misfired_jobs").getName(), execute_misfired_jobs); + insertQuery.addValue(table.getColumnByName("reset_scheduler_on_bootup").getName(), reset_scheduler_on_bootup); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V104__PermissionsForTransfers.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V104__PermissionsForTransfers.java new file mode 100644 index 00000000..4a4c3cd7 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V104__PermissionsForTransfers.java @@ -0,0 +1,39 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V104__PermissionsForTransfers extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V104__PermissionsForTransfers; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "portfolio_group", "TRANSFERCLIENTS_GROUP", "GROUP", "TRANSFERCLIENTS", 0); + insert_m_permission(named, m_permission, "portfolio_group", "TRANSFERCLIENTS_GROUP_CHECKER", "GROUP", "TRANSFERCLIENTS", 0); + insert_m_permission(named, m_permission, "portfolio", "TRANSFER_CLIENT", "CLIENT", "TRANSFER", 0); + insert_m_permission(named, m_permission, "portfolio", "TRANSFER_CLIENT_CHECKER", "CLIENT", "TRANSFER", 0); + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V105__TrackLoanTransactionAgainstOffice.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V105__TrackLoanTransactionAgainstOffice.java new file mode 100644 index 00000000..246f646f --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V105__TrackLoanTransactionAgainstOffice.java @@ -0,0 +1,47 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; +import java.util.Collections; + +public class V105__TrackLoanTransactionAgainstOffice extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V105__TrackLoanTransactionAgainstOffice + + getInternalChecksum("V105_1__track_loan_transaction_against_office.xml", + "V105_2__track_loan_transaction_against_office.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V105_1__track_loan_transaction_against_office.xml"); + + dataContext.refreshSchemas(); + Table m_loan_transaction = dataContext.getDefaultSchema().getTableByName("m_loan_transaction"); + Table m_client = dataContext.getDefaultSchema().getTableByName("m_client"); + Table m_group = dataContext.getDefaultSchema().getTableByName("m_group"); + Table m_loan = dataContext.getDefaultSchema().getTableByName("m_loan"); + + { + String s = "SELECT " + m_loan_transaction.getColumnByName("office_id").getQualifiedLabel() + " FROM " + m_loan.getName() + " JOIN " + m_client.getName() + " ON " + m_loan.getColumnByName("client_id").getQualifiedLabel() + " = " + m_client.getColumnByName("id").getQualifiedLabel() + " WHERE " + m_loan.getColumnByName("id").getQualifiedLabel() + " = " + m_loan_transaction.getColumnByName("loan_id").getQualifiedLabel(); + String s1 = "SELECT " + m_loan.getColumnByName("id").getQualifiedLabel() + " FROM " + m_loan.getName() + " WHERE " + m_loan.getColumnByName("client_id").getQualifiedLabel() + " IS NOT NULL"; + named.update("UPDATE " + m_loan_transaction.getName() + " SET " + m_loan_transaction.getColumnByName("office_id").getQualifiedLabel() + " = (" + s + ") WHERE " + m_loan_transaction.getColumnByName("loan_id").getQualifiedLabel() + " NOT IN (" + s1 + ")", Collections.emptyMap()); + } + + { + String s = "SELECT " + m_loan_transaction.getColumnByName("office_id").getQualifiedLabel() + " FROM " + m_loan.getName() + " JOIN " + m_group.getName() + " ON " + m_loan.getColumnByName("group_id").getQualifiedLabel() + " = " + m_group.getColumnByName("id").getQualifiedLabel() + " WHERE " + m_loan.getColumnByName("id").getQualifiedLabel() + " = " + m_loan_transaction.getColumnByName("loan_id").getQualifiedLabel(); + String s1 = "SELECT " + m_loan.getColumnByName("id").getQualifiedLabel() + " FROM " + m_loan.getName() + " WHERE " + m_loan.getColumnByName("group_id").getQualifiedLabel() + " IS NOT NULL"; + named.update("UPDATE " + m_loan_transaction.getName() + " SET " + m_loan_transaction.getColumnByName("office_id").getQualifiedLabel() + " = (" + s + ") WHERE " + m_loan_transaction.getColumnByName("loan_id").getQualifiedLabel() + " NOT IN (" + s1 + ")", Collections.emptyMap()); + } + + updateLiquibase("V105_2__track_loan_transaction_against_office.xml"); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V106__MorePermissionsForTransfers.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V106__MorePermissionsForTransfers.java new file mode 100644 index 00000000..8f8dc20e --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V106__MorePermissionsForTransfers.java @@ -0,0 +1,102 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.DeleteQuery; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V106__MorePermissionsForTransfers extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V106__MorePermissionsForTransfers; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + + DeleteQuery deleteQuery = null; + + deleteQuery = new DeleteQuery(m_permission.getName()); + deleteQuery.addWhere(m_permission.getColumnByName("code").getName() + " = :code", "TRANSFER_CLIENT"); + named.update(deleteQuery.toSQL(), deleteQuery.toParam()); + + deleteQuery = new DeleteQuery(m_permission.getName()); + deleteQuery.addWhere(m_permission.getColumnByName("code").getName() + " = :code", "TRANSFER_CLIENT_CHECKER"); + named.update(deleteQuery.toSQL(), deleteQuery.toParam()); + + InsertQuery insertQuery = null; + + insertQuery = new InsertQuery(m_permission.getName()); + insertQuery.addValue(m_permission.getColumnByName("grouping").getName() + " = :grouping", "portfolio"); + insertQuery.addValue(m_permission.getColumnByName("code").getName() + " = :code", "PROPOSETRANSFER_CLIENT"); + insertQuery.addValue(m_permission.getColumnByName("entity_name").getName() + " = :entity_name", "CLIENT"); + insertQuery.addValue(m_permission.getColumnByName("action_name").getName() + " = :action_name", "PROPOSETRANSFER"); + insertQuery.addValue(m_permission.getColumnByName("can_maker_checker").getName() + " = :can_maker_checker", 0); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + + insertQuery = new InsertQuery(m_permission.getName()); + insertQuery.addValue(m_permission.getColumnByName("grouping").getName() + " = :grouping", "portfolio"); + insertQuery.addValue(m_permission.getColumnByName("code").getName() + " = :code", "PROPOSETRANSFER_CLIENT_CHECKER"); + insertQuery.addValue(m_permission.getColumnByName("entity_name").getName() + " = :entity_name", "CLIENT"); + insertQuery.addValue(m_permission.getColumnByName("action_name").getName() + " = :action_name", "PROPOSETRANSFER"); + insertQuery.addValue(m_permission.getColumnByName("can_maker_checker").getName() + " = :can_maker_checker", 0); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + + insertQuery = new InsertQuery(m_permission.getName()); + insertQuery.addValue(m_permission.getColumnByName("grouping").getName() + " = :grouping", "portfolio"); + insertQuery.addValue(m_permission.getColumnByName("code").getName() + " = :code", "ACCEPTTRANSFER_CLIENT"); + insertQuery.addValue(m_permission.getColumnByName("entity_name").getName() + " = :entity_name", "CLIENT"); + insertQuery.addValue(m_permission.getColumnByName("action_name").getName() + " = :action_name", "ACCEPTTRANSFER"); + insertQuery.addValue(m_permission.getColumnByName("can_maker_checker").getName() + " = :can_maker_checker", 0); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + + insertQuery = new InsertQuery(m_permission.getName()); + insertQuery.addValue(m_permission.getColumnByName("grouping").getName() + " = :grouping", "portfolio"); + insertQuery.addValue(m_permission.getColumnByName("code").getName() + " = :code", "ACCEPTTRANSFER_CLIENT_CHECKER"); + insertQuery.addValue(m_permission.getColumnByName("entity_name").getName() + " = :entity_name", "CLIENT"); + insertQuery.addValue(m_permission.getColumnByName("action_name").getName() + " = :action_name", "ACCEPTTRANSFER"); + insertQuery.addValue(m_permission.getColumnByName("can_maker_checker").getName() + " = :can_maker_checker", 0); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + + insertQuery = new InsertQuery(m_permission.getName()); + insertQuery.addValue(m_permission.getColumnByName("grouping").getName() + " = :grouping", "portfolio"); + insertQuery.addValue(m_permission.getColumnByName("code").getName() + " = :code", "REJECTTRANSFER_CLIENT"); + insertQuery.addValue(m_permission.getColumnByName("entity_name").getName() + " = :entity_name", "CLIENT"); + insertQuery.addValue(m_permission.getColumnByName("action_name").getName() + " = :action_name", "REJECTTRANSFER"); + insertQuery.addValue(m_permission.getColumnByName("can_maker_checker").getName() + " = :can_maker_checker", 0); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + + insertQuery = new InsertQuery(m_permission.getName()); + insertQuery.addValue(m_permission.getColumnByName("grouping").getName() + " = :grouping", "portfolio"); + insertQuery.addValue(m_permission.getColumnByName("code").getName() + " = :code", "REJECTTRANSFER_CLIENT_CHECKER"); + insertQuery.addValue(m_permission.getColumnByName("entity_name").getName() + " = :entity_name", "CLIENT"); + insertQuery.addValue(m_permission.getColumnByName("action_name").getName() + " = :action_name", "REJECTTRANSFER"); + insertQuery.addValue(m_permission.getColumnByName("can_maker_checker").getName() + " = :can_maker_checker", 0); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + + insertQuery = new InsertQuery(m_permission.getName()); + insertQuery.addValue(m_permission.getColumnByName("grouping").getName() + " = :grouping", "portfolio"); + insertQuery.addValue(m_permission.getColumnByName("code").getName() + " = :code", "WITHDRAWTRANSFER_CLIENT"); + insertQuery.addValue(m_permission.getColumnByName("entity_name").getName() + " = :entity_name", "CLIENT"); + insertQuery.addValue(m_permission.getColumnByName("action_name").getName() + " = :action_name", "WITHDRAWTRANSFER"); + insertQuery.addValue(m_permission.getColumnByName("can_maker_checker").getName() + " = :can_maker_checker", 0); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + + insertQuery = new InsertQuery(m_permission.getName()); + insertQuery.addValue(m_permission.getColumnByName("grouping").getName() + " = :grouping", "portfolio"); + insertQuery.addValue(m_permission.getColumnByName("code").getName() + " = :code", "WITHDRAWTRANSFER_CLIENT_CHECKER"); + insertQuery.addValue(m_permission.getColumnByName("entity_name").getName() + " = :entity_name", "CLIENT"); + insertQuery.addValue(m_permission.getColumnByName("action_name").getName() + " = :action_name", "WITHDRAWTRANSFER"); + insertQuery.addValue(m_permission.getColumnByName("can_maker_checker").getName() + " = :can_maker_checker", 0); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V107__DatatableCodeMappings.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V107__DatatableCodeMappings.java new file mode 100644 index 00000000..3dff4cec --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V107__DatatableCodeMappings.java @@ -0,0 +1,33 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V107__DatatableCodeMappings extends LiquibaseJavaMigration { + + @Override + protected Integer getInternalChecksum(String... names) { + return Checksum.V107__DatatableCodeMappings + getInternalChecksum("V107__datatable_code_mappings.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + // changeset 001 + updateLiquibase("V107__datatable_code_mappings.xml"); + + // changeset 002 + dataContext.refreshSchemas(); + Table c_configuration = dataContext.getDefaultSchema().getTableByName("c_configuration"); + InsertQuery insertQuery = new InsertQuery(c_configuration.getName()); + insertQuery.addValue(c_configuration.getColumnByName("name").getName() + " = :name", "constraint_approach_for_datatables"); + insertQuery.addValue(c_configuration.getColumnByName("enabled").getName() + " = :enabled", 1); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V108__ClientHasTransferOffice.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V108__ClientHasTransferOffice.java new file mode 100644 index 00000000..c1e3bf0e --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V108__ClientHasTransferOffice.java @@ -0,0 +1,28 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; +import java.util.Collections; + +public class V108__ClientHasTransferOffice extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V108__ClientHasTransferOffice + getInternalChecksum("V108__client_has_transfer_office.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate namedParameterJdbcTemplate, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V108__client_has_transfer_office.xml"); + + dataContext.refreshSchemas(); + Table m_client = dataContext.getDefaultSchema().getTableByName("m_client"); + namedParameterJdbcTemplate.update("UPDATE " + m_client.getName() + " SET " + m_client.getColumnByName("office_joining_date").getName() + " = " + m_client.getColumnByName("activation_date").getName(), Collections.emptyMap()); + } +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V109__AccountTransferWithdrawalFeeConfiguration.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V109__AccountTransferWithdrawalFeeConfiguration.java new file mode 100644 index 00000000..2d753c76 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V109__AccountTransferWithdrawalFeeConfiguration.java @@ -0,0 +1,22 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V109__AccountTransferWithdrawalFeeConfiguration extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V109__AccountTransferWithdrawalFeeConfiguration + getInternalChecksum("V109__account_transfer_withdrawal_fee_configuration.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate namedParameterJdbcTemplate, JdbcDataContext jdbcDataContext) throws Exception { + updateLiquibase("V109__account_transfer_withdrawal_fee_configuration.xml"); + } +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V10__InterestPostingFieldsForSavings.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V10__InterestPostingFieldsForSavings.java new file mode 100644 index 00000000..d59d314c --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V10__InterestPostingFieldsForSavings.java @@ -0,0 +1,46 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V10__InterestPostingFieldsForSavings extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V10__InterestPostingFieldsForSavings + getInternalChecksum("V10__interest-posting-fields-for-savings-002.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + { + // sub change 001 + dataContext.refreshSchemas(); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "transaction_savings", "POSTINTEREST_SAVINGSACCOUNT", "SAVINGSACCOUNT", "POSTINTEREST", 1); + insert_m_permission(named, m_permission, "transaction_savings", "POSTINTEREST_SAVINGSACCOUNT_CHECKER", "SAVINGSACCOUNT", "POSTINTEREST", 0); + } + + { + // sub change 002 + updateLiquibase("V10__interest-posting-fields-for-savings-002.xml"); + } + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V11__AddPaymentDetails.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V11__AddPaymentDetails.java new file mode 100644 index 00000000..b9ed7e33 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V11__AddPaymentDetails.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V11__AddPaymentDetails extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V11__AddPaymentDetails + getInternalChecksum("V11__add-payment-details.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V11__add-payment-details.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V12__AddExternalIdToCoupleOfTables.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V12__AddExternalIdToCoupleOfTables.java new file mode 100644 index 00000000..d8a233f6 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V12__AddExternalIdToCoupleOfTables.java @@ -0,0 +1,22 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V12__AddExternalIdToCoupleOfTables extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V12__AddExternalIdToCoupleOfTables + getInternalChecksum("V12__add_external_id_to_couple_of_tables.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V12__add_external_id_to_couple_of_tables.xml"); + } +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V13__AddGroupAndClientPendingConfiguration.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V13__AddGroupAndClientPendingConfiguration.java new file mode 100644 index 00000000..7170222c --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V13__AddGroupAndClientPendingConfiguration.java @@ -0,0 +1,55 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V13__AddGroupAndClientPendingConfiguration extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V13__AddGroupAndClientPendingConfiguration; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + { + dataContext.refreshSchemas(); + Table c_configuration = dataContext.getDefaultSchema().getTableByName("c_configuration"); + insert_c_configuration(named, c_configuration, "allow-pending-client-status", 0); + insert_c_configuration(named, c_configuration, "allow-pending-group-status", 0); + } + { + dataContext.refreshSchemas(); + Table r_enum_value = dataContext.getDefaultSchema().getTableByName("r_enum_value"); + insert_r_enum_value(named, r_enum_value, "status_id", 0, "Invalid", "Invalid"); + insert_r_enum_value(named, r_enum_value, "status_id", 100, "Pending", "Pending"); + insert_r_enum_value(named, r_enum_value, "status_id", 300, "Active", "Active"); + insert_r_enum_value(named, r_enum_value, "status_id", 600, "Closed", "Closed"); + insert_r_enum_value(named, r_enum_value, "loan_status_id", 0, "Invalid", "Invalid"); + } + } + + protected void insert_c_configuration(NamedParameterJdbcTemplate named, Table table, String name, long enabled) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("name").getName(), name); + insertQuery.addValue(table.getColumnByName("enabled").getName(), enabled); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_r_enum_value(NamedParameterJdbcTemplate named, Table table, String enum_name, long enum_id, String enum_message_property, String enum_value) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("enum_name").getName(), enum_name); + insertQuery.addValue(table.getColumnByName("enum_id").getName(), enum_id); + insertQuery.addValue(table.getColumnByName("enum_message_property").getName(), enum_message_property); + insertQuery.addValue(table.getColumnByName("enum_value").getName(), enum_value); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V14__RenameStatusIdToEnum.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V14__RenameStatusIdToEnum.java new file mode 100644 index 00000000..e265a6f6 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V14__RenameStatusIdToEnum.java @@ -0,0 +1,35 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.UpdateQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V14__RenameStatusIdToEnum extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V14__RenameStatusIdToEnum + getInternalChecksum("V14__rename_status_id_to_enum-001.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + { + updateLiquibase("V14__rename_status_id_to_enum-001.xml"); + } + { + dataContext.refreshSchemas(); + Table r_enum_value = dataContext.getDefaultSchema().getTableByName("r_enum_value"); + UpdateQuery updateQuery = new UpdateQuery(r_enum_value.getName()); + updateQuery.addValue(r_enum_value.getColumnByName("enum_name").getName(), "status_enum"); + updateQuery.addWhere(r_enum_value.getColumnByName("enum_name").getName() + " = :enum_name", "status_id"); + named.update(updateQuery.toSQL(), updateQuery.toParam()); + } + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V15__CenterPermissions.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V15__CenterPermissions.java new file mode 100644 index 00000000..015fd616 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V15__CenterPermissions.java @@ -0,0 +1,45 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V15__CenterPermissions extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V15__CenterPermissions; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + { + dataContext.refreshSchemas(); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "portfolio", "READ_CENTER", "CENTER", "READ", 0); + insert_m_permission(named, m_permission, "portfolio", "CREATE_CENTER", "CENTER", "CREATE", 0); + insert_m_permission(named, m_permission, "portfolio", "CREATE_CENTER_CHECKER", "CENTER", "CREATE", 0); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_CENTER", "CENTER", "UPDATE", 0); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_CENTER_CHECKER", "CENTER", "UPDATE", 0); + insert_m_permission(named, m_permission, "portfolio", "DELETE_CENTER", "CENTER", "DELETE", 0); + insert_m_permission(named, m_permission, "portfolio", "DELETE_CENTER_CHECKER", "CENTER", "DELETE", 0); + } + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V16__DropMinMaxColumnOnLoanTable.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V16__DropMinMaxColumnOnLoanTable.java new file mode 100644 index 00000000..b9eab68d --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V16__DropMinMaxColumnOnLoanTable.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V16__DropMinMaxColumnOnLoanTable extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V16__DropMinMaxColumnOnLoanTable + getInternalChecksum("V16__drop_min_max_column_on_loan_table.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V16__drop_min_max_column_on_loan_table.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V17__UpdateStretchyReportingDdl.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V17__UpdateStretchyReportingDdl.java new file mode 100644 index 00000000..982815b6 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V17__UpdateStretchyReportingDdl.java @@ -0,0 +1,139 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.jdbc.query.SelectQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; +import java.util.Map; + +public class V17__UpdateStretchyReportingDdl extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V17__UpdateStretchyReportingDdl + getInternalChecksum( + "V17__update_stretchy_reporting_ddl-001.xml", + "V17__update_stretchy_reporting_ddl-003.xml", + "V17__update_stretchy_reporting_ddl-005.xml", + "V17__update_stretchy_reporting_ddl-007.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + SelectQuery selectQuery = null; + { + // sub change 001 + updateLiquibase("V17__update_stretchy_reporting_ddl-001.xml"); + } + { + // sub change 002 + dataContext.refreshSchemas(); + Table stretchy_report = dataContext.getDefaultSchema().getTableByName("stretchy_report"); + Table stretchy_report_tmp = dataContext.getDefaultSchema().getTableByName("stretchy_report_tmp"); + selectQuery = new SelectQuery(stretchy_report.getName()); + for (Map record : named.queryForList(selectQuery.toSQL(), selectQuery.toParam())) { + Integer report_id = (Integer) record.get(stretchy_report.getColumnByName("report_id").getName()); + String report_name = (String) record.get(stretchy_report.getColumnByName("report_name").getName()); + String report_type = (String) record.get(stretchy_report.getColumnByName("report_type").getName()); + String report_subtype = (String) record.get(stretchy_report.getColumnByName("report_subtype").getName()); + String report_category = (String) record.get(stretchy_report.getColumnByName("report_category").getName()); + String report_sql = (String) record.get(stretchy_report.getColumnByName("report_sql").getName()); + String description = (String) record.get(stretchy_report.getColumnByName("description").getName()); + Integer core_report = (Integer) record.get(stretchy_report.getColumnByName("core_report").getName()); + Integer use_report = (Integer) record.get(stretchy_report.getColumnByName("use_report").getName()); + insert_stretchy_report_tmp(named, stretchy_report_tmp, report_id, report_name, report_type, report_subtype, report_category, report_sql, description, core_report, use_report); + } + } + { + // sub change 003 + updateLiquibase("V17__update_stretchy_reporting_ddl-003.xml"); + } + { + // sub change 004 + dataContext.refreshSchemas(); + Table stretchy_parameter = dataContext.getDefaultSchema().getTableByName("stretchy_parameter"); + Table stretchy_parameter_tmp = dataContext.getDefaultSchema().getTableByName("stretchy_parameter_tmp"); + selectQuery = new SelectQuery(stretchy_parameter.getName()); + for (Map record : named.queryForList(selectQuery.toSQL(), selectQuery.toParam())) { + Integer parameter_id = (Integer) record.get("parameter_id"); + String parameter_name = (String) record.get("parameter_name"); + String parameter_variable = (String) record.get("parameter_variable"); + String parameter_label = (String) record.get("parameter_label"); + String parameter_displayType = (String) record.get("parameter_displayType"); + String parameter_FormatType = (String) record.get("parameter_FormatType"); + String parameter_default = (String) record.get("parameter_default"); + String special = (String) record.get("special"); + String selectOne = (String) record.get("selectOne"); + String selectAll = (String) record.get("selectAll"); + String parameter_sql = (String) record.get("parameter_sql"); + Integer parent_parameter_id = (Integer) record.get("parent_parameter_id"); + insert_stretchy_parameter_tmp(named, stretchy_parameter_tmp, parameter_id, parameter_name, parameter_variable, parameter_label, parameter_displayType, parameter_FormatType, parameter_default, special, selectOne, selectAll, parameter_sql, parent_parameter_id); + } + } + { + // sub change 005 + updateLiquibase("V17__update_stretchy_reporting_ddl-005.xml"); + } + { + // sub change 006 + dataContext.refreshSchemas(); + Table stretchy_report_parameter = dataContext.getDefaultSchema().getTableByName("stretchy_report_parameter"); + Table stretchy_report_parameter_tmp = dataContext.getDefaultSchema().getTableByName("stretchy_report_parameter_tmp"); + selectQuery = new SelectQuery(stretchy_report_parameter.getName()); + for (Map record : named.queryForList(selectQuery.toSQL(), selectQuery.toParam())) { + Integer report_id = (Integer) record.get(stretchy_report_parameter.getColumnByName("report_id").getName()); + Integer parameter_id = (Integer) record.get(stretchy_report_parameter.getColumnByName("parameter_id").getName()); + String report_parameter_name = (String) record.get(stretchy_report_parameter.getColumnByName("report_parameter_name").getName()); + insert_stretchy_report_parameter_tmp(named, stretchy_report_parameter_tmp, report_id, parameter_id, report_parameter_name); + } + } + { + // sub change 007 + updateLiquibase("V17__update_stretchy_reporting_ddl-007.xml"); + } + } + + protected void insert_stretchy_parameter_tmp(NamedParameterJdbcTemplate named, Table table, Integer id, String parameter_name, String parameter_variable, String parameter_label, String parameter_displayType, String parameter_FormatType, String parameter_default, String special, String selectOne, String selectAll, String parameter_sql, Integer parent_id) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("id").getName(), id); + insertQuery.addValue(table.getColumnByName("parameter_name").getName(), parameter_name); + insertQuery.addValue(table.getColumnByName("parameter_variable").getName(), parameter_variable); + insertQuery.addValue(table.getColumnByName("parameter_label").getName(), parameter_label); + insertQuery.addValue(table.getColumnByName("parameter_displayType").getName(), parameter_displayType); + insertQuery.addValue(table.getColumnByName("parameter_FormatType").getName(), parameter_FormatType); + insertQuery.addValue(table.getColumnByName("parameter_default").getName(), parameter_default); + insertQuery.addValue(table.getColumnByName("special").getName(), special); + insertQuery.addValue(table.getColumnByName("selectOne").getName(), selectOne); + insertQuery.addValue(table.getColumnByName("selectAll").getName(), selectAll); + insertQuery.addValue(table.getColumnByName("parameter_sql").getName(), parameter_sql); + insertQuery.addValue(table.getColumnByName("parent_id").getName(), parent_id); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_stretchy_report_tmp(NamedParameterJdbcTemplate named, Table table, Integer id, String report_name, String report_type, String report_subtype, String report_category, String report_sql, String description, Integer core_report, Integer use_report) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("id").getName(), id); + insertQuery.addValue(table.getColumnByName("report_name").getName(), report_name); + insertQuery.addValue(table.getColumnByName("report_type").getName(), report_type); + insertQuery.addValue(table.getColumnByName("report_subtype").getName(), report_subtype); + insertQuery.addValue(table.getColumnByName("report_category").getName(), report_category); + insertQuery.addValue(table.getColumnByName("report_sql").getName(), report_sql); + insertQuery.addValue(table.getColumnByName("description").getName(), description); + insertQuery.addValue(table.getColumnByName("core_report").getName(), core_report); + insertQuery.addValue(table.getColumnByName("use_report").getName(), use_report); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_stretchy_report_parameter_tmp(NamedParameterJdbcTemplate named, Table table, Integer report_id, Integer parameter_id, String report_parameter_name) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("report_id").getName(), report_id); + insertQuery.addValue(table.getColumnByName("parameter_id").getName(), parameter_id); + insertQuery.addValue(table.getColumnByName("report_parameter_name").getName(), report_parameter_name); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V18__UpdateStretchyReportingReportSql.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V18__UpdateStretchyReportingReportSql.java new file mode 100644 index 00000000..5e9bd27e --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V18__UpdateStretchyReportingReportSql.java @@ -0,0 +1,43 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.UpdateQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V18__UpdateStretchyReportingReportSql extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V18__UpdateStretchyReportingReportSql; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + UpdateQuery updateQuery = null; + { + dataContext.refreshSchemas(); + Table stretchy_parameter = dataContext.getDefaultSchema().getTableByName("stretchy_parameter"); + updateQuery = new UpdateQuery(stretchy_parameter.getName()); + updateQuery.addValue(stretchy_parameter.getColumnByName("parameter_sql").getName(), "select sp.parameter_name, sp.parameter_variable, sp.parameter_label, sp.parameter_displayType, \n sp.parameter_FormatType, sp.parameter_default, sp.selectOne, sp.selectAll, spp.parameter_name as parentParameterName\n from stretchy_parameter sp\n left join stretchy_parameter spp on spp.id = sp.parent_id\n where sp.special is null\n and exists \n \t(select 'f' \n \tfrom stretchy_report sr\n \tjoin stretchy_report_parameter srp on srp.report_id = sr.id\n \twhere sr.report_name in(${reportListing})\n \tand srp.parameter_id = sp.id\n \t)\n order by sp.id"); + updateQuery.addWhere(stretchy_parameter.getColumnByName("id").getName() + " = :id", 1002); + named.update(updateQuery.toSQL(), updateQuery.toParam()); + + updateQuery = new UpdateQuery(stretchy_parameter.getName()); + updateQuery.addValue(stretchy_parameter.getColumnByName("parameter_sql").getName(), "select r.id as report_id, r.report_name, r.report_type, r.report_subtype, r.report_category,\nrp.id as parameter_id, rp.report_parameter_name, p.parameter_name\n from stretchy_report r\n left join stretchy_report_parameter rp on rp.report_id = r.id \n left join stretchy_parameter p on p.id = rp.parameter_id\n where r.use_report is true\n and exists\n ( select 'f'\n from m_appuser_role ur \n join m_role r on r.id = ur.role_id\n join m_role_permission rp on rp.role_id = r.id\n join m_permission p on p.id = rp.permission_id\n where ur.appuser_id = ${currentUserId}\n and (p.code in ('ALL_FUNCTIONS_READ', 'ALL_FUNCTIONS') or p.code = concat(\"READ_\", r.report_name)) )\n order by r.report_category, r.report_name, rp.id"); + updateQuery.addWhere(stretchy_parameter.getColumnByName("id").getName() + " = :id", 1001); + named.update(updateQuery.toSQL(), updateQuery.toParam()); + + updateQuery = new UpdateQuery(stretchy_parameter.getName()); + updateQuery.addValue(stretchy_parameter.getColumnByName("parameter_sql").getName(), "select r.id as report_id, r.report_name, r.report_type, r.report_subtype, r.report_category,\n rp.id as parameter_id, rp.report_parameter_name, p.parameter_name\n from stretchy_report r\n left join stretchy_report_parameter rp on rp.report_id = r.id\n left join stretchy_parameter p on p.id = rp.parameter_id\n where r.report_category = '${reportCategory}'\n and r.use_report is true\n and exists\n (select 'f'\n from m_appuser_role ur \n join m_role r on r.id = ur.role_id\n join m_role_permission rp on rp.role_id = r.id\n join m_permission p on p.id = rp.permission_id\n where ur.appuser_id = ${currentUserId}\n and (p.code in ('ALL_FUNCTIONS_READ', 'ALL_FUNCTIONS') or p.code = concat(\"READ_\", r.report_name)) )\n order by r.report_category, r.report_name, rp.id"); + updateQuery.addWhere(stretchy_parameter.getColumnByName("id").getName() + " = :id", 1003); + named.update(updateQuery.toSQL(), updateQuery.toParam()); + } + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V19__ReportMaintenancePermissions.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V19__ReportMaintenancePermissions.java new file mode 100644 index 00000000..17141a5d --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V19__ReportMaintenancePermissions.java @@ -0,0 +1,45 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V19__ReportMaintenancePermissions extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V19__ReportMaintenancePermissions; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + { + dataContext.refreshSchemas(); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "report", "READ_REPORT", "REPORT", "READ", 0); + insert_m_permission(named, m_permission, "report", "CREATE_REPORT", "REPORT", "CREATE", 0); + insert_m_permission(named, m_permission, "report", "CREATE_REPORT_CHECKER", "REPORT", "CREATE", 0); + insert_m_permission(named, m_permission, "report", "UPDATE_REPORT", "REPORT", "UPDATE", 0); + insert_m_permission(named, m_permission, "report", "UPDATE_REPORT_CHECKER", "REPORT", "UPDATE", 0); + insert_m_permission(named, m_permission, "report", "DELETE_REPORT", "REPORT", "UPDATE", 0); + insert_m_permission(named, m_permission, "report", "DELETE_REPORT_CHECKER", "REPORT", "UPDATE", 0); + } + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V1__MifosPlatformCoreDdlLatest.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V1__MifosPlatformCoreDdlLatest.java new file mode 100644 index 00000000..2ed9c7bf --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V1__MifosPlatformCoreDdlLatest.java @@ -0,0 +1,37 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; +import java.util.ArrayList; +import java.util.List; + +public class V1__MifosPlatformCoreDdlLatest extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V1__MifosPlatformCoreDdlLatest + getInternalChecksum("V1__mifosplatform-core-ddl-latest-002.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + // sub change 001 + List tables = new ArrayList<>(); + tables.addAll(dataContext.getDefaultSchema().getTableNames()); + for (String table : tables) { + if (!"DATABASECHANGELOG".equals(table) && !"DATABASECHANGELOGLOCK".equals(table) && !"flyway_schema_history".equals(table)) { + dataContext.executeUpdate(callback -> { + callback.dropTable(table); + }); + } + } + + // sub change 002 + updateLiquibase("V1__mifosplatform-core-ddl-latest-002.xml"); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V20__ReportMaintPermsReallyConfiguration.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V20__ReportMaintPermsReallyConfiguration.java new file mode 100644 index 00000000..9b4b9c56 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V20__ReportMaintPermsReallyConfiguration.java @@ -0,0 +1,32 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.UpdateQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V20__ReportMaintPermsReallyConfiguration extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V20__ReportMaintPermsReallyConfiguration; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + { + dataContext.refreshSchemas(); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + UpdateQuery updateQuery = new UpdateQuery(m_permission.getName()); + updateQuery.addValue(m_permission.getColumnByName("grouping").getQualifiedLabel(), "configuration"); + updateQuery.addWhere(m_permission.getColumnByName("entity_name").getName() + " = :entity_name", "report"); + named.update(updateQuery.toSQL(), updateQuery.toParam()); + } + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V21__ActivationPermissionsForClients.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V21__ActivationPermissionsForClients.java new file mode 100644 index 00000000..c4a4c26b --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V21__ActivationPermissionsForClients.java @@ -0,0 +1,45 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V21__ActivationPermissionsForClients extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V21__ActivationPermissionsForClients + getInternalChecksum("V21__activation-permissions-for-clients-002.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + { + // sub change 001 + dataContext.refreshSchemas(); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "portfolio", "ACTIVATE_CLIENT", "CLIENT", "ACTIVATE", 1); + insert_m_permission(named, m_permission, "portfolio", "ACTIVATE_CLIENT_CHECKER", "CLIENT", "ACTIVATE", 0); + } + { + // sub change 002 + updateLiquibase("V21__activation-permissions-for-clients-002.xml"); + } + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V22__AlterGroupForConsistencyAddPermissions.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V22__AlterGroupForConsistencyAddPermissions.java new file mode 100644 index 00000000..f8a37848 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V22__AlterGroupForConsistencyAddPermissions.java @@ -0,0 +1,48 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V22__AlterGroupForConsistencyAddPermissions extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V22__AlterGroupForConsistencyAddPermissions + getInternalChecksum("V22__alter-group-for-consistency-add-permissions-002.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + { + // sub change 001 + dataContext.refreshSchemas(); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "portfolio", "ACTIVATE_CENTER", "CENTER", "ACTIVATE", 1); + insert_m_permission(named, m_permission, "portfolio", "ACTIVATE_CENTER_CHECKER", "CENTER", "ACTIVATE", 0); + + insert_m_permission(named, m_permission, "portfolio", "ACTIVATE_GROUP", "GROUP", "ACTIVATE", 1); + insert_m_permission(named, m_permission, "portfolio", "ACTIVATE_GROUP_CHECKER", "GROUP", "ACTIVATE", 0); + } + { + // sub change 002 + updateLiquibase("V22__alter-group-for-consistency-add-permissions-002.xml"); + } + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V23__RemoveEnableDisableConfigurationForClientGroupStatus.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V23__RemoveEnableDisableConfigurationForClientGroupStatus.java new file mode 100644 index 00000000..f12c6a22 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V23__RemoveEnableDisableConfigurationForClientGroupStatus.java @@ -0,0 +1,41 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.DeleteQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V23__RemoveEnableDisableConfigurationForClientGroupStatus extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V23__RemoveEnableDisableConfigurationForClientGroupStatus + getInternalChecksum("V23__remove-enable-disable-configuration-for-client-group-status-002.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + DeleteQuery deleteQuery = null; + { + // sub change 001 + dataContext.refreshSchemas(); + Table c_configuration = dataContext.getDefaultSchema().getTableByName("c_configuration"); + deleteQuery = new DeleteQuery(c_configuration.getName()); + deleteQuery.addWhere(c_configuration.getColumnByName("name").getName() + " = :name", "allow-pending-client-status"); + named.update(deleteQuery.toSQL(), deleteQuery.toParam()); + + deleteQuery = new DeleteQuery(c_configuration.getName()); + deleteQuery.addWhere(c_configuration.getColumnByName("name").getName() + " = :name", "allow-pending-group-status"); + named.update(deleteQuery.toSQL(), deleteQuery.toParam()); + } + { + // sub change 002 + updateLiquibase("V23__remove-enable-disable-configuration-for-client-group-status-002.xml"); + } + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V24__AddGroupClientForeignKeyConstraintInLoanTable.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V24__AddGroupClientForeignKeyConstraintInLoanTable.java new file mode 100644 index 00000000..970a2311 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V24__AddGroupClientForeignKeyConstraintInLoanTable.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V24__AddGroupClientForeignKeyConstraintInLoanTable extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V24__AddGroupClientForeignKeyConstraintInLoanTable + getInternalChecksum("V24__add-group-client-foreign-key-constraint-in-loan-table.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V24__add-group-client-foreign-key-constraint-in-loan-table.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V25__UpdateClientReportsForStatusAndActivationChange.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V25__UpdateClientReportsForStatusAndActivationChange.java new file mode 100644 index 00000000..ce073960 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V25__UpdateClientReportsForStatusAndActivationChange.java @@ -0,0 +1,38 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.UpdateQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V25__UpdateClientReportsForStatusAndActivationChange extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V25__UpdateClientReportsForStatusAndActivationChange; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + UpdateQuery updateQuery = null; + { + dataContext.refreshSchemas(); + Table stretchy_report = dataContext.getDefaultSchema().getTableByName("stretchy_report"); + updateQuery = new UpdateQuery(stretchy_report.getName()); + updateQuery.addValue(stretchy_report.getColumnByName("report_sql").getName(), "select\nconcat(repeat(\"..\",\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, '.', '')) - 1))), ounder.`name`) as \"Office/Branch\",\n c.account_no as \"Client Account No.\",\nc.display_name as \"Name\",\nr.enum_message_property as \"Status\",\nc.activation_date as \"Activation\", c.external_id as \"External Id\"\nfrom m_office o\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, '%')\nand ounder.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_client c on c.office_id = ounder.id\nleft join r_enum_value r on r.enum_name = 'status_enum' and r.enum_id = c.status_enum\nwhere o.id = ${officeId}\norder by ounder.hierarchy, c.account_no"); + updateQuery.addWhere(stretchy_report.getColumnByName("report_name").getName() + " = :report_name", "Client Listing"); + named.update(updateQuery.toSQL(), updateQuery.toParam()); + + updateQuery = new UpdateQuery(stretchy_report.getName()); + updateQuery.addValue(stretchy_report.getColumnByName("report_sql").getName(), "select\nconcat(repeat(\"..\",\n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, '.', '')) - 1))), ounder.`name`) as \"Office/Branch\", c.account_no as \"Client Account No.\",\nc.display_name as \"Name\",\nr.enum_message_property as \"Client Status\",\nlo.display_name as \"Loan Officer\", l.account_no as \"Loan Account No.\", l.external_id as \"External Id\", p.name as Loan, st.enum_message_property as \"Status\",\nf.`name` as Fund, purp.code_value as \"Loan Purpose\",\nifnull(cur.display_symbol, l.currency_code) as Currency,\nl.principal_amount, l.arrearstolerance_amount as \"Arrears Tolerance Amount\",\nl.number_of_repayments as \"Expected No. Repayments\",\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\",\nl.nominal_interest_rate_per_period as \"Nominal Interest Rate Per Period\",\nipf.enum_message_property as \"Interest Rate Frequency\",\nim.enum_message_property as \"Interest Method\",\nicp.enum_message_property as \"Interest Calculated in Period\",\nl.term_frequency as \"Term Frequency\",\ntf.enum_message_property as \"Term Frequency Period\",\nl.repay_every as \"Repayment Frequency\",\nrf.enum_message_property as \"Repayment Frequency Period\",\nam.enum_message_property as \"Amortization\",\nl.total_charges_due_at_disbursement_derived as \"Total Charges Due At Disbursement\",\ndate(l.submittedon_date) as Submitted, date(l.approvedon_date) Approved, l.expected_disbursedon_date As \"Expected Disbursal\",\ndate(l.expected_firstrepaymenton_date) as \"Expected First Repayment\",\ndate(l.interest_calculated_from_date) as \"Interest Calculated From\" ,\ndate(l.disbursedon_date) as Disbursed,\ndate(l.expected_maturedon_date) \"Expected Maturity\",\ndate(l.maturedon_date) as \"Matured On\", date(l.closedon_date) as Closed,\ndate(l.rejectedon_date) as Rejected, date(l.rescheduledon_date) as Rescheduled,\ndate(l.withdrawnon_date) as Withdrawn, date(l.writtenoffon_date) \"Written Off\"\nfrom m_office o\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, '%')\nand ounder.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_client c on c.office_id = ounder.id\nleft join r_enum_value r on r.enum_name = 'status_enum'\n and r.enum_id = c.status_enum\nleft join m_loan l on l.client_id = c.id\nleft join m_staff lo on lo.id = l.loan_officer_id\nleft join m_product_loan p on p.id = l.product_id\nleft join m_fund f on f.id = l.fund_id\nleft join r_enum_value st on st.enum_name = \"loan_status_id\" and st.enum_id = l.loan_status_id\nleft join r_enum_value ipf on ipf.enum_name = \"interest_period_frequency_enum\"\n and ipf.enum_id = l.interest_period_frequency_enum\nleft join r_enum_value im on im.enum_name = \"interest_method_enum\"\n and im.enum_id = l.interest_method_enum\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\"\n and tf.enum_id = l.term_period_frequency_enum\nleft join r_enum_value icp on icp.enum_name = \"interest_calculated_in_period_enum\"\n and icp.enum_id = l.interest_calculated_in_period_enum\nleft join r_enum_value rf on rf.enum_name = \"repayment_period_frequency_enum\"\n and rf.enum_id = l.repayment_period_frequency_enum\nleft join r_enum_value am on am.enum_name = \"amortization_method_enum\"\n and am.enum_id = l.amortization_method_enum\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\nleft join m_currency cur on cur.code = l.currency_code\nwhere o.id = ${officeId}\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\norder by ounder.hierarchy, 2 , l.id"); + updateQuery.addWhere(stretchy_report.getColumnByName("report_name").getName() + " = :report_name", "Client Loans Listing"); + named.update(updateQuery.toSQL(), updateQuery.toParam()); + } + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V26__AddSupportForWithdrawalFeesOnSavings.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V26__AddSupportForWithdrawalFeesOnSavings.java new file mode 100644 index 00000000..23abbdb2 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V26__AddSupportForWithdrawalFeesOnSavings.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V26__AddSupportForWithdrawalFeesOnSavings extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V26__AddSupportForWithdrawalFeesOnSavings + getInternalChecksum("V26__add-support-for-withdrawal-fees-on-savings.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V26__add-support-for-withdrawal-fees-on-savings.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V27__AddLoanTypeColumnToLoanTable.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V27__AddLoanTypeColumnToLoanTable.java new file mode 100644 index 00000000..e361cf6b --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V27__AddLoanTypeColumnToLoanTable.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V27__AddLoanTypeColumnToLoanTable extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V27__AddLoanTypeColumnToLoanTable + getInternalChecksum("V27__add-loan-type-column-to-loan-table.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V27__add-loan-type-column-to-loan-table.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V28__AccountingAbstractionsAndAutoposting.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V28__AccountingAbstractionsAndAutoposting.java new file mode 100644 index 00000000..a1b09e51 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V28__AccountingAbstractionsAndAutoposting.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V28__AccountingAbstractionsAndAutoposting extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V28__AccountingAbstractionsAndAutoposting + getInternalChecksum("V28__accounting-abstractions-and-autoposting.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V28__accounting-abstractions-and-autoposting.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V29__AddSupportForAnnualFeesOnSavings.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V29__AddSupportForAnnualFeesOnSavings.java new file mode 100644 index 00000000..90e9de69 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V29__AddSupportForAnnualFeesOnSavings.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V29__AddSupportForAnnualFeesOnSavings extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V29__AddSupportForAnnualFeesOnSavings + getInternalChecksum("V29__add-support-for-annual-fees-on-savings.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V29__add-support-for-annual-fees-on-savings.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V2__MifosXBaseReferenceDataUTF8.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V2__MifosXBaseReferenceDataUTF8.java new file mode 100644 index 00000000..2d9e8401 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V2__MifosXBaseReferenceDataUTF8.java @@ -0,0 +1,400 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.jdbc.query.SelectQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V2__MifosXBaseReferenceDataUTF8 extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V2__MifosXBaseReferenceDataUTF8; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + { + dataContext.refreshSchemas(); + Table ref_loan_transaction_processing_strategy = dataContext.getDefaultSchema().getTableByName("ref_loan_transaction_processing_strategy"); + insert_ref_loan_transaction_processing_strategy(named, ref_loan_transaction_processing_strategy, 1, "mifos-standard-strategy", "Mifos style"); + insert_ref_loan_transaction_processing_strategy(named, ref_loan_transaction_processing_strategy, 2, "heavensfamily-strategy", "Heavensfamily"); + insert_ref_loan_transaction_processing_strategy(named, ref_loan_transaction_processing_strategy, 3, "creocore-strategy", "Creocore"); + insert_ref_loan_transaction_processing_strategy(named, ref_loan_transaction_processing_strategy, 4, "rbi-india-strategy", "RBI (India)"); + } + { + dataContext.refreshSchemas(); + Table c_configuration = dataContext.getDefaultSchema().getTableByName("c_configuration"); + insert_c_configuration(named, c_configuration, "maker-checker", 0); + } + { + dataContext.refreshSchemas(); + Table r_enum_value = dataContext.getDefaultSchema().getTableByName("r_enum_value"); + insert_r_enum_value(named, r_enum_value, "amortization_method_enum", 0, "Equal principle payments", "Equal principle payments"); + insert_r_enum_value(named, r_enum_value, "amortization_method_enum", 1, "Equal installments", "Equal installments"); + + insert_r_enum_value(named, r_enum_value, "interest_calculated_in_period_enum", 0, "Daily", "Daily"); + insert_r_enum_value(named, r_enum_value, "interest_calculated_in_period_enum", 1, "Same as repayment period", "Same as repayment period"); + + insert_r_enum_value(named, r_enum_value, "interest_method_enum", 0, "Declining Balance", "Declining Balance"); + insert_r_enum_value(named, r_enum_value, "interest_method_enum", 1, "Flat", "Flat"); + + insert_r_enum_value(named, r_enum_value, "interest_period_frequency_enum", 2, "Per month", "Per month"); + insert_r_enum_value(named, r_enum_value, "interest_period_frequency_enum", 3, "Per year", "Per year"); + + insert_r_enum_value(named, r_enum_value, "loan_status_id", 100, "Submitted and awaiting approval", "Submitted and awaiting approval"); + insert_r_enum_value(named, r_enum_value, "loan_status_id", 200, "Approved", "Approved"); + insert_r_enum_value(named, r_enum_value, "loan_status_id", 300, "Active", "Active"); + insert_r_enum_value(named, r_enum_value, "loan_status_id", 400, "Withdrawn by client", "Withdrawn by client"); + insert_r_enum_value(named, r_enum_value, "loan_status_id", 500, "Rejected", "Rejected"); + insert_r_enum_value(named, r_enum_value, "loan_status_id", 600, "Closed", "Closed"); + insert_r_enum_value(named, r_enum_value, "loan_status_id", 601, "Written-Off", "Written-Off"); + insert_r_enum_value(named, r_enum_value, "loan_status_id", 602, "Rescheduled", "Rescheduled"); + insert_r_enum_value(named, r_enum_value, "loan_status_id", 700, "Overpaid", "Overpaid"); + + insert_r_enum_value(named, r_enum_value, "loan_transaction_strategy_id", 1, "mifos-standard-strategy", "Mifos style"); + insert_r_enum_value(named, r_enum_value, "loan_transaction_strategy_id", 2, "heavensfamily-strategy", "Heavensfamily"); + insert_r_enum_value(named, r_enum_value, "loan_transaction_strategy_id", 3, "creocore-strategy", "Creocore"); + insert_r_enum_value(named, r_enum_value, "loan_transaction_strategy_id", 4, "rbi-india-strategy", "RBI (India)"); + + insert_r_enum_value(named, r_enum_value, "processing_result_enum", 0, "invalid", "Invalid"); + insert_r_enum_value(named, r_enum_value, "processing_result_enum", 1, "processed", "Processed"); + insert_r_enum_value(named, r_enum_value, "processing_result_enum", 2, "awaiting.approval", "Awaiting Approval"); + insert_r_enum_value(named, r_enum_value, "processing_result_enum", 3, "rejected", "Rejected"); + + insert_r_enum_value(named, r_enum_value, "repayment_period_frequency_enum", 0, "Days", "Days"); + insert_r_enum_value(named, r_enum_value, "repayment_period_frequency_enum", 1, "Weeks", "Weeks"); + insert_r_enum_value(named, r_enum_value, "repayment_period_frequency_enum", 2, "Months", "Months"); + + insert_r_enum_value(named, r_enum_value, "term_period_frequency_enum", 0, "Days", "Days"); + insert_r_enum_value(named, r_enum_value, "term_period_frequency_enum", 1, "Weeks", "Weeks"); + insert_r_enum_value(named, r_enum_value, "term_period_frequency_enum", 2, "Months", "Months"); + insert_r_enum_value(named, r_enum_value, "term_period_frequency_enum", 3, "Years", "Year"); + + insert_r_enum_value(named, r_enum_value, "transaction_type_enum", 1, "Disbursement", "Disbursement"); + insert_r_enum_value(named, r_enum_value, "transaction_type_enum", 2, "Repayment", "Repayment"); + insert_r_enum_value(named, r_enum_value, "transaction_type_enum", 3, "Contra", "Contra"); + insert_r_enum_value(named, r_enum_value, "transaction_type_enum", 4, "Waive Interest", "Waive Interest"); + insert_r_enum_value(named, r_enum_value, "transaction_type_enum", 5, "Repayment At Disbursement", "Repayment At Disbursement"); + insert_r_enum_value(named, r_enum_value, "transaction_type_enum", 6, "Write-Off", "Write-Off"); + insert_r_enum_value(named, r_enum_value, "transaction_type_enum", 7, "Marked for Rescheduling", "Marked for Rescheduling"); + insert_r_enum_value(named, r_enum_value, "transaction_type_enum", 8, "Recovery Repayment", "Recovery Repayment"); + insert_r_enum_value(named, r_enum_value, "transaction_type_enum", 9, "Waive Charges", "Waive Charges"); + insert_r_enum_value(named, r_enum_value, "transaction_type_enum", 10, "Apply Charges", "Apply Charges"); + insert_r_enum_value(named, r_enum_value, "transaction_type_enum", 11, "Apply Interest", "Apply Interest"); + } + { + dataContext.refreshSchemas(); + Table m_currency = dataContext.getDefaultSchema().getTableByName("m_currency"); + insert_m_currency(named, m_currency, 1, "AED", 2, null, "UAE Dirham", "currency.AED"); + insert_m_currency(named, m_currency, 2, "AFN", 2, null, "Afghanistan Afghani", "currency.AFN"); + insert_m_currency(named, m_currency, 3, "ALL", 2, null, "Albanian Lek", "currency.ALL"); + insert_m_currency(named, m_currency, 4, "AMD", 2, null, "Armenian Dram", "currency.AMD"); + insert_m_currency(named, m_currency, 5, "ANG", 2, null, "Netherlands Antillian Guilder", "currency.ANG"); + insert_m_currency(named, m_currency, 6, "AOA", 2, null, "Angolan Kwanza", "currency.AOA"); + insert_m_currency(named, m_currency, 7, "ARS", 2, "$", "Argentine Peso", "currency.ARS"); + insert_m_currency(named, m_currency, 8, "AUD", 2, "A$", "Australian Dollar", "currency.AUD"); + insert_m_currency(named, m_currency, 9, "AWG", 2, null, "Aruban Guilder", "currency.AWG"); + insert_m_currency(named, m_currency, 10, "AZM", 2, null, "Azerbaijanian Manat", "currency.AZM"); + insert_m_currency(named, m_currency, 11, "BAM", 2, null, "Bosnia and Herzegovina Convertible Marks", "currency.BAM"); + insert_m_currency(named, m_currency, 12, "BBD", 2, null, "Barbados Dollar", "currency.BBD"); + insert_m_currency(named, m_currency, 13, "BDT", 2, null, "Bangladesh Taka", "currency.BDT"); + insert_m_currency(named, m_currency, 14, "BGN", 2, null, "Bulgarian Lev", "currency.BGN"); + insert_m_currency(named, m_currency, 15, "BHD", 3, null, "Bahraini Dinar", "currency.BHD"); + insert_m_currency(named, m_currency, 16, "BIF", 0, null, "Burundi Franc", "currency.BIF"); + insert_m_currency(named, m_currency, 17, "BMD", 2, null, "Bermudian Dollar", "currency.BMD"); + insert_m_currency(named, m_currency, 18, "BND", 2, "B$", "Brunei Dollar", "currency.BND"); + insert_m_currency(named, m_currency, 19, "BOB", 2, "Bs.", "Bolivian Boliviano", "currency.BOB"); + insert_m_currency(named, m_currency, 20, "BRL", 2, "R$", "Brazilian Real", "currency.BRL"); + insert_m_currency(named, m_currency, 21, "BSD", 2, null, "Bahamian Dollar", "currency.BSD"); + insert_m_currency(named, m_currency, 22, "BTN", 2, null, "Bhutan Ngultrum", "currency.BTN"); + insert_m_currency(named, m_currency, 23, "BWP", 2, null, "Botswana Pula", "currency.BWP"); + insert_m_currency(named, m_currency, 24, "BYR", 0, null, "Belarussian Ruble", "currency.BYR"); + insert_m_currency(named, m_currency, 25, "BZD", 2, "BZ$", "Belize Dollar", "currency.BZD"); + insert_m_currency(named, m_currency, 26, "CAD", 2, null, "Canadian Dollar", "currency.CAD"); + insert_m_currency(named, m_currency, 27, "CDF", 2, null, "Franc Congolais", "currency.CDF"); + insert_m_currency(named, m_currency, 28, "CHF", 2, null, "Swiss Franc", "currency.CHF"); + insert_m_currency(named, m_currency, 29, "CLP", 0, "$", "Chilean Peso", "currency.CLP"); + insert_m_currency(named, m_currency, 30, "CNY", 2, null, "Chinese Yuan Renminbi", "currency.CNY"); + insert_m_currency(named, m_currency, 31, "COP", 2, "$", "Colombian Peso", "currency.COP"); + insert_m_currency(named, m_currency, 32, "CRC", 2, "₡", "Costa Rican Colon", "currency.CRC"); + insert_m_currency(named, m_currency, 33, "CSD", 2, null, "Serbian Dinar", "currency.CSD"); + insert_m_currency(named, m_currency, 34, "CUP", 2, "$MN", "Cuban Peso", "currency.CUP"); + insert_m_currency(named, m_currency, 35, "CVE", 2, null, "Cape Verde Escudo", "currency.CVE"); + insert_m_currency(named, m_currency, 36, "CYP", 2, null, "Cyprus Pound", "currency.CYP"); + insert_m_currency(named, m_currency, 37, "CZK", 2, null, "Czech Koruna", "currency.CZK"); + insert_m_currency(named, m_currency, 38, "DJF", 0, null, "Djibouti Franc", "currency.DJF"); + insert_m_currency(named, m_currency, 39, "DKK", 2, null, "Danish Krone", "currency.DKK"); + insert_m_currency(named, m_currency, 40, "DOP", 2, "RD$", "Dominican Peso", "currency.DOP"); + insert_m_currency(named, m_currency, 41, "DZD", 2, null, "Algerian Dinar", "currency.DZD"); + insert_m_currency(named, m_currency, 42, "EEK", 2, null, "Estonian Kroon", "currency.EEK"); + insert_m_currency(named, m_currency, 43, "EGP", 2, null, "Egyptian Pound", "currency.EGP"); + insert_m_currency(named, m_currency, 44, "ERN", 2, null, "Eritrea Nafka", "currency.ERN"); + insert_m_currency(named, m_currency, 45, "ETB", 2, null, "Ethiopian Birr", "currency.ETB"); + insert_m_currency(named, m_currency, 46, "EUR", 2, "€", "Euro", "currency.EUR"); + insert_m_currency(named, m_currency, 47, "FJD", 2, null, "Fiji Dollar", "currency.FJD"); + insert_m_currency(named, m_currency, 48, "FKP", 2, null, "Falkland Islands Pound", "currency.FKP"); + insert_m_currency(named, m_currency, 49, "GBP", 2, null, "Pound Sterling", "currency.GBP"); + insert_m_currency(named, m_currency, 50, "GEL", 2, null, "Georgian Lari", "currency.GEL"); + insert_m_currency(named, m_currency, 51, "GHC", 2, "GHc", "Ghana Cedi", "currency.GHC"); + insert_m_currency(named, m_currency, 52, "GIP", 2, null, "Gibraltar Pound", "currency.GIP"); + insert_m_currency(named, m_currency, 53, "GMD", 2, null, "Gambian Dalasi", "currency.GMD"); + insert_m_currency(named, m_currency, 54, "GNF", 0, null, "Guinea Franc", "currency.GNF"); + insert_m_currency(named, m_currency, 55, "GTQ", 2, "Q", "Guatemala Quetzal", "currency.GTQ"); + insert_m_currency(named, m_currency, 56, "GYD", 2, null, "Guyana Dollar", "currency.GYD"); + insert_m_currency(named, m_currency, 57, "HKD", 2, null, "Hong Kong Dollar", "currency.HKD"); + insert_m_currency(named, m_currency, 58, "HNL", 2, "L", "Honduras Lempira", "currency.HNL"); + insert_m_currency(named, m_currency, 59, "HRK", 2, null, "Croatian Kuna", "currency.HRK"); + insert_m_currency(named, m_currency, 60, "HTG", 2, "G", "Haiti Gourde", "currency.HTG"); + insert_m_currency(named, m_currency, 61, "HUF", 2, null, "Hungarian Forint", "currency.HUF"); + insert_m_currency(named, m_currency, 62, "IDR", 2, null, "Indonesian Rupiah", "currency.IDR"); + insert_m_currency(named, m_currency, 63, "ILS", 2, null, "New Israeli Shekel", "currency.ILS"); + insert_m_currency(named, m_currency, 64, "INR", 2, "₹", "Indian Rupee", "currency.INR"); + insert_m_currency(named, m_currency, 65, "IQD", 3, null, "Iraqi Dinar", "currency.IQD"); + insert_m_currency(named, m_currency, 66, "IRR", 2, null, "Iranian Rial", "currency.IRR"); + insert_m_currency(named, m_currency, 67, "ISK", 0, null, "Iceland Krona", "currency.ISK"); + insert_m_currency(named, m_currency, 68, "JMD", 2, null, "Jamaican Dollar", "currency.JMD"); + insert_m_currency(named, m_currency, 69, "JOD", 3, null, "Jordanian Dinar", "currency.JOD"); + insert_m_currency(named, m_currency, 70, "JPY", 0, null, "Japanese Yen", "currency.JPY"); + insert_m_currency(named, m_currency, 71, "KES", 2, "KSh", "Kenyan Shilling", "currency.KES"); + insert_m_currency(named, m_currency, 72, "KGS", 2, null, "Kyrgyzstan Som", "currency.KGS"); + insert_m_currency(named, m_currency, 73, "KHR", 2, null, "Cambodia Riel", "currency.KHR"); + insert_m_currency(named, m_currency, 74, "KMF", 0, null, "Comoro Franc", "currency.KMF"); + insert_m_currency(named, m_currency, 75, "KPW", 2, null, "North Korean Won", "currency.KPW"); + insert_m_currency(named, m_currency, 76, "KRW", 0, null, "Korean Won", "currency.KRW"); + insert_m_currency(named, m_currency, 77, "KWD", 3, null, "Kuwaiti Dinar", "currency.KWD"); + insert_m_currency(named, m_currency, 78, "KYD", 2, null, "Cayman Islands Dollar", "currency.KYD"); + insert_m_currency(named, m_currency, 79, "KZT", 2, null, "Kazakhstan Tenge", "currency.KZT"); + insert_m_currency(named, m_currency, 80, "LAK", 2, null, "Lao Kip", "currency.LAK"); + insert_m_currency(named, m_currency, 81, "LBP", 2, "L£", "Lebanese Pound", "currency.LBP"); + insert_m_currency(named, m_currency, 82, "LKR", 2, null, "Sri Lanka Rupee", "currency.LKR"); + insert_m_currency(named, m_currency, 83, "LRD", 2, null, "Liberian Dollar", "currency.LRD"); + insert_m_currency(named, m_currency, 84, "LSL", 2, null, "Lesotho Loti", "currency.LSL"); + insert_m_currency(named, m_currency, 85, "LTL", 2, null, "Lithuanian Litas", "currency.LTL"); + insert_m_currency(named, m_currency, 86, "LVL", 2, null, "Latvian Lats", "currency.LVL"); + insert_m_currency(named, m_currency, 87, "LYD", 3, null, "Libyan Dinar", "currency.LYD"); + insert_m_currency(named, m_currency, 88, "MAD", 2, null, "Moroccan Dirham", "currency.MAD"); + insert_m_currency(named, m_currency, 89, "MDL", 2, null, "Moldovan Leu", "currency.MDL"); + insert_m_currency(named, m_currency, 90, "MGA", 2, null, "Malagasy Ariary", "currency.MGA"); + insert_m_currency(named, m_currency, 91, "MKD", 2, null, "Macedonian Denar", "currency.MKD"); + insert_m_currency(named, m_currency, 92, "MMK", 2, "K", "Myanmar Kyat", "currency.MMK"); + insert_m_currency(named, m_currency, 93, "MNT", 2, null, "Mongolian Tugrik", "currency.MNT"); + insert_m_currency(named, m_currency, 94, "MOP", 2, null, "Macau Pataca", "currency.MOP"); + insert_m_currency(named, m_currency, 95, "MRO", 2, null, "Mauritania Ouguiya", "currency.MRO"); + insert_m_currency(named, m_currency, 96, "MTL", 2, null, "Maltese Lira", "currency.MTL"); + insert_m_currency(named, m_currency, 97, "MUR", 2, null, "Mauritius Rupee", "currency.MUR"); + insert_m_currency(named, m_currency, 98, "MVR", 2, null, "Maldives Rufiyaa", "currency.MVR"); + insert_m_currency(named, m_currency, 99, "MWK", 2, null, "Malawi Kwacha", "currency.MWK"); + insert_m_currency(named, m_currency, 100, "MXN", 2, "$", "Mexican Peso", "currency.MXN"); + insert_m_currency(named, m_currency, 101, "MYR", 2, null, "Malaysian Ringgit", "currency.MYR"); + insert_m_currency(named, m_currency, 102, "MZM", 2, null, "Mozambique Metical", "currency.MZM"); + insert_m_currency(named, m_currency, 103, "NAD", 2, null, "Namibia Dollar", "currency.NAD"); + insert_m_currency(named, m_currency, 104, "NGN", 2, null, "Nigerian Naira", "currency.NGN"); + insert_m_currency(named, m_currency, 105, "NIO", 2, "C$", "Nicaragua Cordoba Oro", "currency.NIO"); + insert_m_currency(named, m_currency, 106, "NOK", 2, null, "Norwegian Krone", "currency.NOK"); + insert_m_currency(named, m_currency, 107, "NPR", 2, null, "Nepalese Rupee", "currency.NPR"); + insert_m_currency(named, m_currency, 108, "NZD", 2, null, "New Zealand Dollar", "currency.NZD"); + insert_m_currency(named, m_currency, 109, "OMR", 3, null, "Rial Omani", "currency.OMR"); + insert_m_currency(named, m_currency, 110, "PAB", 2, "B/.", "Panama Balboa", "currency.PAB"); + insert_m_currency(named, m_currency, 111, "PEN", 2, "S/.", "Peruvian Nuevo Sol", "currency.PEN"); + insert_m_currency(named, m_currency, 112, "PGK", 2, null, "Papua New Guinea Kina", "currency.PGK"); + insert_m_currency(named, m_currency, 113, "PHP", 2, null, "Philippine Peso", "currency.PHP"); + insert_m_currency(named, m_currency, 114, "PKR", 2, null, "Pakistan Rupee", "currency.PKR"); + insert_m_currency(named, m_currency, 115, "PLN", 2, null, "Polish Zloty", "currency.PLN"); + insert_m_currency(named, m_currency, 116, "PYG", 0, "₲", "Paraguayan Guarani", "currency.PYG"); + insert_m_currency(named, m_currency, 117, "QAR", 2, null, "Qatari Rial", "currency.QAR"); + insert_m_currency(named, m_currency, 118, "RON", 2, null, "Romanian Leu", "currency.RON"); + insert_m_currency(named, m_currency, 119, "RUB", 2, null, "Russian Ruble", "currency.RUB"); + insert_m_currency(named, m_currency, 120, "RWF", 0, null, "Rwanda Franc", "currency.RWF"); + insert_m_currency(named, m_currency, 121, "SAR", 2, null, "Saudi Riyal", "currency.SAR"); + insert_m_currency(named, m_currency, 122, "SBD", 2, null, "Solomon Islands Dollar", "currency.SBD"); + insert_m_currency(named, m_currency, 123, "SCR", 2, null, "Seychelles Rupee", "currency.SCR"); + insert_m_currency(named, m_currency, 124, "SDD", 2, null, "Sudanese Dinar", "currency.SDD"); + insert_m_currency(named, m_currency, 125, "SEK", 2, null, "Swedish Krona", "currency.SEK"); + insert_m_currency(named, m_currency, 126, "SGD", 2, null, "Singapore Dollar", "currency.SGD"); + insert_m_currency(named, m_currency, 127, "SHP", 2, null, "St Helena Pound", "currency.SHP"); + insert_m_currency(named, m_currency, 128, "SIT", 2, null, "Slovenian Tolar", "currency.SIT"); + insert_m_currency(named, m_currency, 129, "SKK", 2, null, "Slovak Koruna", "currency.SKK"); + insert_m_currency(named, m_currency, 130, "SLL", 2, null, "Sierra Leone Leone", "currency.SLL"); + insert_m_currency(named, m_currency, 131, "SOS", 2, null, "Somali Shilling", "currency.SOS"); + insert_m_currency(named, m_currency, 132, "SRD", 2, null, "Surinam Dollar", "currency.SRD"); + insert_m_currency(named, m_currency, 133, "STD", 2, null, "Sao Tome and Principe Dobra", "currency.STD"); + insert_m_currency(named, m_currency, 134, "SVC", 2, null, "El Salvador Colon", "currency.SVC"); + insert_m_currency(named, m_currency, 135, "SYP", 2, null, "Syrian Pound", "currency.SYP"); + insert_m_currency(named, m_currency, 136, "SZL", 2, null, "Swaziland Lilangeni", "currency.SZL"); + insert_m_currency(named, m_currency, 137, "THB", 2, null, "Thai Baht", "currency.THB"); + insert_m_currency(named, m_currency, 138, "TJS", 2, null, "Tajik Somoni", "currency.TJS"); + insert_m_currency(named, m_currency, 139, "TMM", 2, null, "Turkmenistan Manat", "currency.TMM"); + insert_m_currency(named, m_currency, 140, "TND", 3, "DT", "Tunisian Dinar", "currency.TND"); + insert_m_currency(named, m_currency, 141, "TOP", 2, null, "Tonga Pa'anga", "currency.TOP"); + insert_m_currency(named, m_currency, 142, "TRY", 2, null, "Turkish Lira", "currency.TRY"); + insert_m_currency(named, m_currency, 143, "TTD", 2, null, "Trinidad and Tobago Dollar", "currency.TTD"); + insert_m_currency(named, m_currency, 144, "TWD", 2, null, "New Taiwan Dollar", "currency.TWD"); + insert_m_currency(named, m_currency, 145, "TZS", 2, null, "Tanzanian Shilling", "currency.TZS"); + insert_m_currency(named, m_currency, 146, "UAH", 2, null, "Ukraine Hryvnia", "currency.UAH"); + insert_m_currency(named, m_currency, 147, "UGX", 2, "USh", "Uganda Shilling", "currency.UGX"); + insert_m_currency(named, m_currency, 148, "USD", 2, "$", "US Dollar", "currency.USD"); + insert_m_currency(named, m_currency, 149, "UYU", 2, "$U", "Peso Uruguayo", "currency.UYU"); + insert_m_currency(named, m_currency, 150, "UZS", 2, null, "Uzbekistan Sum", "currency.UZS"); + insert_m_currency(named, m_currency, 151, "VEB", 2, "Bs.F.", "Venezuelan Bolivar", "currency.VEB"); + insert_m_currency(named, m_currency, 152, "VND", 2, null, "Vietnamese Dong", "currency.VND"); + insert_m_currency(named, m_currency, 153, "VUV", 0, null, "Vanuatu Vatu", "currency.VUV"); + insert_m_currency(named, m_currency, 154, "WST", 2, null, "Samoa Tala", "currency.WST"); + insert_m_currency(named, m_currency, 155, "XAF", 0, null, "CFA Franc BEAC", "currency.XAF"); + insert_m_currency(named, m_currency, 156, "XCD", 2, null, "East Caribbean Dollar", "currency.XCD"); + insert_m_currency(named, m_currency, 157, "XDR", 5, null, "SDR (Special Drawing Rights)", "currency.XDR"); + insert_m_currency(named, m_currency, 158, "XOF", 0, "CFA", "CFA Franc BCEAO", "currency.XOF"); + insert_m_currency(named, m_currency, 159, "XPF", 0, null, "CFP Franc", "currency.XPF"); + insert_m_currency(named, m_currency, 160, "YER", 2, null, "Yemeni Rial", "currency.YER"); + insert_m_currency(named, m_currency, 161, "ZAR", 2, "R", "South African Rand", "currency.ZAR"); + insert_m_currency(named, m_currency, 162, "ZMK", 2, null, "Zambian Kwacha", "currency.ZMK"); + insert_m_currency(named, m_currency, 163, "ZWD", 2, null, "Zimbabwe Dollar", "currency.ZWD"); + } + { + dataContext.refreshSchemas(); + Table m_organisation_currency = dataContext.getDefaultSchema().getTableByName("m_organisation_currency"); + insert_m_organisation_currency(named, m_organisation_currency, 21, "USD", 2, "US Dollar", "$", "currency.USD"); + } + { + dataContext.refreshSchemas(); + Table m_office = dataContext.getDefaultSchema().getTableByName("m_office"); + insert_m_office(named, m_office, 1, null, ".", "1", "Head Office", "2009-01-01"); + } + { + dataContext.refreshSchemas(); + Table m_group_level = dataContext.getDefaultSchema().getTableByName("m_group_level"); + insert_m_group_level(named, m_group_level, 1, null, 1, "Center", 1, 0); + insert_m_group_level(named, m_group_level, 2, "1", 0, "Group", 0, 1); + } + { + dataContext.refreshSchemas(); + Table m_code = dataContext.getDefaultSchema().getTableByName("m_code"); + insert_m_code(named, m_code, "Customer Identifier", 1); + insert_m_code(named, m_code, "LoanCollateral", 1); + insert_m_code(named, m_code, "LoanPurpose", 1); + insert_m_code(named, m_code, "Gender", 1); + insert_m_code(named, m_code, "YesNo", 1); + insert_m_code(named, m_code, "GuarantorRelationship", 1); + } + { + dataContext.refreshSchemas(); + Table m_code_value = dataContext.getDefaultSchema().getTableByName("m_code_value"); + { + long order_position = 0; + long code_id = lookup_m_code(named, dataContext, "Customer Identifier"); + insert_m_code_value(named, m_code_value, code_id, "Passport", order_position++); + insert_m_code_value(named, m_code_value, code_id, "Id", order_position++); + insert_m_code_value(named, m_code_value, code_id, "Drivers License", order_position++); + insert_m_code_value(named, m_code_value, code_id, "Any Other Id Type", order_position++); + } + { + long order_position = 0; + long code_id = lookup_m_code(named, dataContext, "GuarantorRelationship"); + insert_m_code_value(named, m_code_value, code_id, "Spouse", order_position++); + insert_m_code_value(named, m_code_value, code_id, "Parent", order_position++); + insert_m_code_value(named, m_code_value, code_id, "Sibling", order_position++); + insert_m_code_value(named, m_code_value, code_id, "Business Associate", order_position++); + insert_m_code_value(named, m_code_value, code_id, "Other", order_position++); + } + } + } + + protected void insert_m_code_value(NamedParameterJdbcTemplate named, Table table, long code_id, String code_value, long order_position) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("code_id").getName(), code_id); + insertQuery.addValue(table.getColumnByName("code_value").getName(), code_value); + insertQuery.addValue(table.getColumnByName("order_position").getName(), order_position); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_m_group_level(NamedParameterJdbcTemplate named, Table table, long id, String parent_id, long super_parent, String level_name, long recursable, long can_have_clients) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("id").getName(), id); + insertQuery.addValue(table.getColumnByName("parent_id").getName(), parent_id); + insertQuery.addValue(table.getColumnByName("super_parent").getName(), super_parent); + insertQuery.addValue(table.getColumnByName("level_name").getName(), level_name); + insertQuery.addValue(table.getColumnByName("recursable").getName(), recursable); + insertQuery.addValue(table.getColumnByName("can_have_clients").getName(), can_have_clients); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_m_office(NamedParameterJdbcTemplate named, Table table, long id, String parent_id, String hierarchy, String external_id, String name, String opening_date) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("id").getName(), id); + insertQuery.addValue(table.getColumnByName("parent_id").getName(), parent_id); + insertQuery.addValue(table.getColumnByName("hierarchy").getName(), hierarchy); + insertQuery.addValue(table.getColumnByName("external_id").getName(), external_id); + insertQuery.addValue(table.getColumnByName("name").getName(), name); + insertQuery.addValue(table.getColumnByName("opening_date").getName(), opening_date); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_m_organisation_currency(NamedParameterJdbcTemplate named, Table table, long id, String code, int decimal_places, String name, String display_symbol, String internationalized_name_code) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("id").getName(), id); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("decimal_places").getName(), decimal_places); + insertQuery.addValue(table.getColumnByName("display_symbol").getName(), display_symbol); + insertQuery.addValue(table.getColumnByName("name").getName(), name); + insertQuery.addValue(table.getColumnByName("internationalized_name_code").getName(), internationalized_name_code); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_m_currency(NamedParameterJdbcTemplate named, Table table, long id, String code, int decimal_places, String display_symbol, String name, String internationalized_name_code) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("id").getName(), id); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("decimal_places").getName(), decimal_places); + insertQuery.addValue(table.getColumnByName("display_symbol").getName(), display_symbol); + insertQuery.addValue(table.getColumnByName("name").getName(), name); + insertQuery.addValue(table.getColumnByName("internationalized_name_code").getName(), internationalized_name_code); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_r_enum_value(NamedParameterJdbcTemplate named, Table table, String enum_name, long enum_id, String enum_message_property, String enum_value) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("enum_name").getName(), enum_name); + insertQuery.addValue(table.getColumnByName("enum_id").getName(), enum_id); + insertQuery.addValue(table.getColumnByName("enum_message_property").getName(), enum_message_property); + insertQuery.addValue(table.getColumnByName("enum_value").getName(), enum_value); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_c_configuration(NamedParameterJdbcTemplate named, Table table, String name, long enabled) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("name").getName(), name); + insertQuery.addValue(table.getColumnByName("enabled").getName(), enabled); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_ref_loan_transaction_processing_strategy(NamedParameterJdbcTemplate named, Table table, long id, String code, String name) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("id").getName(), id); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("name").getName(), name); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_m_code(NamedParameterJdbcTemplate named, Table table, String code_name, long is_system_defined) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("code_name").getName(), code_name); + insertQuery.addValue(table.getColumnByName("is_system_defined").getName(), is_system_defined); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected int lookup_m_code(NamedParameterJdbcTemplate named, DataContext dataContext, String code_name) { + Table table = dataContext.getDefaultSchema().getTableByName("m_code"); + SelectQuery selectQuery = new SelectQuery(table.getName()); + selectQuery.addField(table.getColumnByName("id").getName()); + selectQuery.addWhere(table.getColumnByName("code_name").getName() + " = :code_name", code_name); + Integer id = named.queryForObject(selectQuery.toSQL(), selectQuery.toParam(), int.class); + return id == null ? 0 : id; + } +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V30__AddReferenceNumberToAccGlJournalEntry.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V30__AddReferenceNumberToAccGlJournalEntry.java new file mode 100644 index 00000000..a6314aea --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V30__AddReferenceNumberToAccGlJournalEntry.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V30__AddReferenceNumberToAccGlJournalEntry extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V30__AddReferenceNumberToAccGlJournalEntry + getInternalChecksum("V30__add-referenceNumber-to-acc_gl_journal_entry.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V30__add-referenceNumber-to-acc_gl_journal_entry.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V31__DropAutoPostings.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V31__DropAutoPostings.java new file mode 100644 index 00000000..c4f82f72 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V31__DropAutoPostings.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V31__DropAutoPostings extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V31__DropAutoPostings + getInternalChecksum("V31__drop-autopostings.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V31__drop-autopostings.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V32__AssociateDisassociateClientsFromGroupPermissions.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V32__AssociateDisassociateClientsFromGroupPermissions.java new file mode 100644 index 00000000..b4c79b24 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V32__AssociateDisassociateClientsFromGroupPermissions.java @@ -0,0 +1,40 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V32__AssociateDisassociateClientsFromGroupPermissions extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V32__AssociateDisassociateClientsFromGroupPermissions; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + { + dataContext.refreshSchemas(); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "portfolio", "ASSOCIATECLIENTS_GROUP", "GROUP", "ASSOCIATECLIENTS", 0); + insert_m_permission(named, m_permission, "portfolio", "DISASSOCIATECLIENTS_GROUP", "GROUP", "DISASSOCIATECLIENTS", 0); + } + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V33__DropUniqueCheckOnStretchyReportParameter.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V33__DropUniqueCheckOnStretchyReportParameter.java new file mode 100644 index 00000000..4d03122b --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V33__DropUniqueCheckOnStretchyReportParameter.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V33__DropUniqueCheckOnStretchyReportParameter extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V33__DropUniqueCheckOnStretchyReportParameter + getInternalChecksum("V33__drop_unique_check_on_stretchy_report_parameter.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V33__drop_unique_check_on_stretchy_report_parameter.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V34__AddUniqueCheckOnStretchyReportParameter.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V34__AddUniqueCheckOnStretchyReportParameter.java new file mode 100644 index 00000000..3f43c5c8 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V34__AddUniqueCheckOnStretchyReportParameter.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V34__AddUniqueCheckOnStretchyReportParameter extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V34__AddUniqueCheckOnStretchyReportParameter + getInternalChecksum("V34__add_unique_check_on_stretchy_report_parameter.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V34__add_unique_check_on_stretchy_report_parameter.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V35__AddHierarchyColumnForAccGlAccount.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V35__AddHierarchyColumnForAccGlAccount.java new file mode 100644 index 00000000..aebaae56 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V35__AddHierarchyColumnForAccGlAccount.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V35__AddHierarchyColumnForAccGlAccount extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V35__AddHierarchyColumnForAccGlAccount + getInternalChecksum("V35__add_hierarchy_column_for_acc_gl_account.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V35__add_hierarchy_column_for_acc_gl_account.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V36__AddTagIdColumnForAccGlAccount.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V36__AddTagIdColumnForAccGlAccount.java new file mode 100644 index 00000000..e9493869 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V36__AddTagIdColumnForAccGlAccount.java @@ -0,0 +1,43 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V36__AddTagIdColumnForAccGlAccount extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V36__AddTagIdColumnForAccGlAccount + getInternalChecksum("V36__add_tag_id_column_for_acc_gl_account-001.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + { + updateLiquibase("V36__add_tag_id_column_for_acc_gl_account-001.xml"); + } + { + dataContext.refreshSchemas(); + Table m_code = dataContext.getDefaultSchema().getTableByName("m_code"); + insert_m_code(named, m_code, "AssetAccountTags", 1); + insert_m_code(named, m_code, "LiabilityAccountTags", 1); + insert_m_code(named, m_code, "EquityAccountTags", 1); + insert_m_code(named, m_code, "IncomeAccountTags", 1); + insert_m_code(named, m_code, "ExpenseAccountTags", 1); + } + } + + protected void insert_m_code(NamedParameterJdbcTemplate named, Table table, String code_name, long is_system_defined) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("code_name").getName(), code_name); + insertQuery.addValue(table.getColumnByName("is_system_defined").getName(), is_system_defined); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V37__AddCenterGroupCollectionSheetPermissions.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V37__AddCenterGroupCollectionSheetPermissions.java new file mode 100644 index 00000000..fcaa30af --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V37__AddCenterGroupCollectionSheetPermissions.java @@ -0,0 +1,40 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V37__AddCenterGroupCollectionSheetPermissions extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V37__AddCenterGroupCollectionSheetPermissions; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + { + dataContext.refreshSchemas(); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "portfolio", "SAVECOLLECTIONSHEET_GROUP", "GROUP", "SAVECOLLECTIONSHEET", 0); + insert_m_permission(named, m_permission, "portfolio", "SAVECOLLECTIONSHEET_CENTER", "CENTER", "SAVECOLLECTIONSHEET", 0); + } + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V38__AddGroupSummaryDetailsReport.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V38__AddGroupSummaryDetailsReport.java new file mode 100644 index 00000000..ce3e780f --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V38__AddGroupSummaryDetailsReport.java @@ -0,0 +1,55 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V38__AddGroupSummaryDetailsReport extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V38__AddGroupSummaryDetailsReport; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + { + dataContext.refreshSchemas(); + Table stretchy_report = dataContext.getDefaultSchema().getTableByName("stretchy_report"); + insert_stretchy_report(named, stretchy_report, "GroupSummaryDetails", "Table", 1, 0, "Utility query for getting group summary details for a group_id", "/*\nActive Client is a client linked to the 'group' via m_group_client\nand with an active status_enum (not sure what it means if the group is inactive)\n\nActive Borrowers - Borrow may be a client or a 'group'\n\nCurrency is an outstanding issue\n\nCouldn't set up group savings for a client\n(as opposed to opening a individual clients savings account)\n*/\nselect x.*\nfrom m_office o,\nm_group g,\n\n(select a.activeClients,\n(b.activeClientLoans + c.activeGroupLoans) as activeLoans,\nb.activeClientLoans, c.activeGroupLoans,\n(b.activeClientBorrowers + c.activeGroupBorrowers) as activeBorrowers,\nb.activeClientBorrowers, c.activeGroupBorrowers, d.*,\n0 as activeSavings, 0 as totalSavingsAmount\nfrom\n(select count(*) as activeClients\nfrom m_group topgroup\njoin m_group g on g.hierarchy like concat(topgroup.hierarchy, '%')\njoin m_group_client gc on gc.group_id = g.id\njoin m_client c on c.id = gc.client_id\nwhere topgroup.id = ${groupId}\nand c.status_enum = 300) a,\n\n(select count(*) as activeClientLoans,\ncount(distinct(l.client_id)) as activeClientBorrowers\nfrom m_group topgroup\njoin m_group g on g.hierarchy like concat(topgroup.hierarchy, '%')\njoin m_loan l on l.group_id = g.id and l.client_id is not null\nwhere topgroup.id = ${groupId}\nand l.loan_status_id = 300) b,\n\n(select count(*) as activeGroupLoans,\ncount(distinct(l.group_id)) as activeGroupBorrowers\nfrom m_group topgroup\njoin m_group g on g.hierarchy like concat(topgroup.hierarchy, '%')\njoin m_loan l on l.group_id = g.id and l.client_id is null\nwhere topgroup.id = ${groupId}\nand l.loan_status_id = 300) c,\n\n(select ifnull(sum(l.principal_disbursed_derived),0) as totalDisbursedAmount,\nifnull(sum(l.principal_outstanding_derived),0) as totalLoanOutstandingAmount,\ncount(laa.loan_id) as overdueLoans, ifnull(sum(laa.total_overdue_derived), 0) as totalLoanOverdueAmount\nfrom m_group topgroup\njoin m_group g on g.hierarchy like concat(topgroup.hierarchy, '%')\njoin m_loan l on l.group_id = g.id\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\nwhere topgroup.id = ${groupId}\nand l.disbursedon_date is not null) d) x\n\nwhere g.id = ${groupId}\nand o.id = g.office_id\nand o.hierarchy like concat('${currentUserHierarchy}', '%')"); + } + { + dataContext.refreshSchemas(); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "report", "READ_GroupSummaryDetails", "GroupSummaryDetails", "READ", 0); + } + } + + protected void insert_stretchy_report(NamedParameterJdbcTemplate named, Table table, String report_name, String report_type, long core_report, long use_report, String description, String report_sql) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("report_name").getName(), report_name); + insertQuery.addValue(table.getColumnByName("report_type").getName(), report_type); + insertQuery.addValue(table.getColumnByName("core_report").getName(), core_report); + insertQuery.addValue(table.getColumnByName("use_report").getName(), use_report); + insertQuery.addValue(table.getColumnByName("description").getName(), description); + insertQuery.addValue(table.getColumnByName("report_sql").getName(), report_sql); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V39__PaymentChannelsUpdates.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V39__PaymentChannelsUpdates.java new file mode 100644 index 00000000..7ba88023 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V39__PaymentChannelsUpdates.java @@ -0,0 +1,62 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.DeleteQuery; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.jdbc.query.UpdateQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V39__PaymentChannelsUpdates extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V39__PaymentChannelsUpdates + getInternalChecksum("V39__payment-channels-updates-002.xml", "V39__payment-channels-updates-004.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + UpdateQuery updateQuery = null; + DeleteQuery deleteQuery = null; + { + // sub change 001 + dataContext.refreshSchemas(); + Table m_code = dataContext.getDefaultSchema().getTableByName("m_code"); + insert_m_code(named, m_code, "PaymentType", 1); + + dataContext.refreshSchemas(); + Table m_loan_transaction = dataContext.getDefaultSchema().getTableByName("m_loan_transaction"); + updateQuery = new UpdateQuery(m_loan_transaction.getName()); + updateQuery.addValue(m_loan_transaction.getColumnByName("payment_detail_id").getName() + " = NULL"); + named.update(updateQuery.toSQL(), updateQuery.toParam()); + } + { + // sub change 002 + updateLiquibase("V39__payment-channels-updates-002.xml"); + } + { + // sub change 003 + dataContext.refreshSchemas(); + Table m_payment_detail = dataContext.getDefaultSchema().getTableByName("m_payment_detail"); + deleteQuery = new DeleteQuery(m_payment_detail.getName()); + named.update(deleteQuery.toSQL(), deleteQuery.toParam()); + } + { + // sub change 004 + updateLiquibase("V39__payment-channels-updates-004.xml"); + } + } + + protected void insert_m_code(NamedParameterJdbcTemplate named, Table table, String code_name, long is_system_defined) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("code_name").getName(), code_name); + insertQuery.addValue(table.getColumnByName("is_system_defined").getName(), is_system_defined); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V3__MifosXPermissionsAndAuthorisationUTF8.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V3__MifosXPermissionsAndAuthorisationUTF8.java new file mode 100644 index 00000000..7022e394 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V3__MifosXPermissionsAndAuthorisationUTF8.java @@ -0,0 +1,427 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.jdbc.query.SelectQuery; +import com.angkorteam.jdbc.query.UpdateQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; +import java.util.Map; + +public class V3__MifosXPermissionsAndAuthorisationUTF8 extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V3__MifosXPermissionsAndAuthorisationUTF8; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + { + dataContext.refreshSchemas(); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "special", "ALL_FUNCTIONS", null, null, 0); + insert_m_permission(named, m_permission, "special", "ALL_FUNCTIONS_READ", null, null, 0); + insert_m_permission(named, m_permission, "special", "CHECKER_SUPER_USER", null, null, 0); + insert_m_permission(named, m_permission, "special", "REPORTING_SUPER_USER", null, null, 0); + insert_m_permission(named, m_permission, "authorisation", "READ_PERMISSION", "PERMISSION", "READ", 0); + insert_m_permission(named, m_permission, "authorisation", "PERMISSIONS_ROLE", "ROLE", "PERMISSIONS", 1); + insert_m_permission(named, m_permission, "authorisation", "CREATE_ROLE", "ROLE", "CREATE", 1); + insert_m_permission(named, m_permission, "authorisation", "CREATE_ROLE_CHECKER", "ROLE", "CREATE", 0); + insert_m_permission(named, m_permission, "authorisation", "READ_ROLE", "ROLE", "READ", 0); + insert_m_permission(named, m_permission, "authorisation", "UPDATE_ROLE", "ROLE", "UPDATE", 1); + insert_m_permission(named, m_permission, "authorisation", "UPDATE_ROLE_CHECKER", "ROLE", "UPDATE", 0); + insert_m_permission(named, m_permission, "authorisation", "DELETE_ROLE", "ROLE", "DELETE", 1); + insert_m_permission(named, m_permission, "authorisation", "DELETE_ROLE_CHECKER", "ROLE", "DELETE", 0); + insert_m_permission(named, m_permission, "authorisation", "CREATE_USER", "USER", "CREATE", 1); + insert_m_permission(named, m_permission, "authorisation", "CREATE_USER_CHECKER", "USER", "CREATE", 0); + insert_m_permission(named, m_permission, "authorisation", "READ_USER", "USER", "READ", 0); + insert_m_permission(named, m_permission, "authorisation", "UPDATE_USER", "USER", "UPDATE", 1); + insert_m_permission(named, m_permission, "authorisation", "UPDATE_USER_CHECKER", "USER", "UPDATE", 0); + insert_m_permission(named, m_permission, "authorisation", "DELETE_USER", "USER", "DELETE", 1); + insert_m_permission(named, m_permission, "authorisation", "DELETE_USER_CHECKER", "USER", "DELETE", 0); + insert_m_permission(named, m_permission, "configuration", "READ_CONFIGURATION", "CONFIGURATION", "READ", 1); + insert_m_permission(named, m_permission, "configuration", "UPDATE_CONFIGURATION", "CONFIGURATION", "UPDATE", 1); + insert_m_permission(named, m_permission, "configuration", "UPDATE_CONFIGURATION_CHECKER", "CONFIGURATION", "UPDATE", 0); + insert_m_permission(named, m_permission, "configuration", "READ_CODE", "CODE", "READ", 0); + insert_m_permission(named, m_permission, "configuration", "CREATE_CODE", "CODE", "CREATE", 1); + insert_m_permission(named, m_permission, "configuration", "CREATE_CODE_CHECKER", "CODE", "CREATE", 0); + insert_m_permission(named, m_permission, "configuration", "UPDATE_CODE", "CODE", "UPDATE", 1); + insert_m_permission(named, m_permission, "configuration", "UPDATE_CODE_CHECKER", "CODE", "UPDATE", 0); + insert_m_permission(named, m_permission, "configuration", "DELETE_CODE", "CODE", "DELETE", 1); + insert_m_permission(named, m_permission, "configuration", "DELETE_CODE_CHECKER", "CODE", "DELETE", 0); + insert_m_permission(named, m_permission, "configuration", "READ_CODEVALUE", "CODEVALUE", "READ", 0); + insert_m_permission(named, m_permission, "configuration", "CREATE_CODEVALUE", "CODEVALUE", "CREATE", 1); + insert_m_permission(named, m_permission, "configuration", "CREATE_CODEVALUE_CHECKER", "CODEVALUE", "CREATE", 0); + insert_m_permission(named, m_permission, "configuration", "UPDATE_CODEVALUE", "CODEVALUE", "UPDATE", 1); + insert_m_permission(named, m_permission, "configuration", "UPDATE_CODEVALUE_CHECKER", "CODEVALUE", "UPDATE", 0); + insert_m_permission(named, m_permission, "configuration", "DELETE_CODEVALUE", "CODEVALUE", "DELETE", 1); + insert_m_permission(named, m_permission, "configuration", "DELETE_CODEVALUE_CHECKER", "CODEVALUE", "DELETE", 0); + insert_m_permission(named, m_permission, "configuration", "READ_CURRENCY", "CURRENCY", "READ", 0); + insert_m_permission(named, m_permission, "configuration", "UPDATE_CURRENCY", "CURRENCY", "UPDATE", 1); + insert_m_permission(named, m_permission, "configuration", "UPDATE_CURRENCY_CHECKER", "CURRENCY", "UPDATE", 0); + insert_m_permission(named, m_permission, "configuration", "UPDATE_PERMISSION", "PERMISSION", "UPDATE", 1); + insert_m_permission(named, m_permission, "configuration", "UPDATE_PERMISSION_CHECKER", "PERMISSION", "UPDATE", 0); + insert_m_permission(named, m_permission, "configuration", "READ_DATATABLE", "DATATABLE", "READ", 0); + insert_m_permission(named, m_permission, "configuration", "REGISTER_DATATABLE", "DATATABLE", "REGISTER", 1); + insert_m_permission(named, m_permission, "configuration", "REGISTER_DATATABLE_CHECKER", "DATATABLE", "REGISTER", 0); + insert_m_permission(named, m_permission, "configuration", "DEREGISTER_DATATABLE", "DATATABLE", "DEREGISTER", 1); + insert_m_permission(named, m_permission, "configuration", "DEREGISTER_DATATABLE_CHECKER", "DATATABLE", "DEREGISTER", 0); + insert_m_permission(named, m_permission, "configuration", "READ_AUDIT", "AUDIT", "READ", 0); + insert_m_permission(named, m_permission, "configuration", "CREATE_CALENDAR", "CALENDAR", "CREATE", 0); + insert_m_permission(named, m_permission, "configuration", "READ_CALENDAR", "CALENDAR", "READ", 0); + insert_m_permission(named, m_permission, "configuration", "UPDATE_CALENDAR", "CALENDAR", "UPDATE", 0); + insert_m_permission(named, m_permission, "configuration", "DELETE_CALENDAR", "CALENDAR", "DELETE", 0); + insert_m_permission(named, m_permission, "configuration", "CREATE_CALENDAR_CHECKER", "CALENDAR", "CREATE", 0); + insert_m_permission(named, m_permission, "configuration", "UPDATE_CALENDAR_CHECKER", "CALENDAR", "UPDATE", 0); + insert_m_permission(named, m_permission, "configuration", "DELETE_CALENDAR_CHECKER", "CALENDAR", "DELETE", 0); + insert_m_permission(named, m_permission, "organisation", "READ_MAKERCHECKER", "MAKERCHECKER", "READ", 0); + insert_m_permission(named, m_permission, "organisation", "READ_CHARGE", "CHARGE", "READ", 0); + insert_m_permission(named, m_permission, "organisation", "CREATE_CHARGE", "CHARGE", "CREATE", 1); + insert_m_permission(named, m_permission, "organisation", "CREATE_CHARGE_CHECKER", "CHARGE", "CREATE", 0); + insert_m_permission(named, m_permission, "organisation", "UPDATE_CHARGE", "CHARGE", "UPDATE", 1); + insert_m_permission(named, m_permission, "organisation", "UPDATE_CHARGE_CHECKER", "CHARGE", "UPDATE", 0); + insert_m_permission(named, m_permission, "organisation", "DELETE_CHARGE", "CHARGE", "DELETE", 1); + insert_m_permission(named, m_permission, "organisation", "DELETE_CHARGE_CHECKER", "CHARGE", "DELETE", 0); + insert_m_permission(named, m_permission, "organisation", "READ_FUND", "FUND", "READ", 0); + insert_m_permission(named, m_permission, "organisation", "CREATE_FUND", "FUND", "CREATE", 1); + insert_m_permission(named, m_permission, "organisation", "CREATE_FUND_CHECKER", "FUND", "CREATE", 0); + insert_m_permission(named, m_permission, "organisation", "UPDATE_FUND", "FUND", "UPDATE", 1); + insert_m_permission(named, m_permission, "organisation", "UPDATE_FUND_CHECKER", "FUND", "UPDATE", 0); + insert_m_permission(named, m_permission, "organisation", "DELETE_FUND", "FUND", "DELETE", 1); + insert_m_permission(named, m_permission, "organisation", "DELETE_FUND_CHECKER", "FUND", "DELETE", 0); + insert_m_permission(named, m_permission, "organisation", "READ_LOANPRODUCT", "LOANPRODUCT", "READ", 0); + insert_m_permission(named, m_permission, "organisation", "CREATE_LOANPRODUCT", "LOANPRODUCT", "CREATE", 1); + insert_m_permission(named, m_permission, "organisation", "CREATE_LOANPRODUCT_CHECKER", "LOANPRODUCT", "CREATE", 0); + insert_m_permission(named, m_permission, "organisation", "UPDATE_LOANPRODUCT", "LOANPRODUCT", "UPDATE", 1); + insert_m_permission(named, m_permission, "organisation", "UPDATE_LOANPRODUCT_CHECKER", "LOANPRODUCT", "UPDATE", 0); + insert_m_permission(named, m_permission, "organisation", "DELETE_LOANPRODUCT", "LOANPRODUCT", "DELETE", 1); + insert_m_permission(named, m_permission, "organisation", "DELETE_LOANPRODUCT_CHECKER", "LOANPRODUCT", "DELETE", 0); + insert_m_permission(named, m_permission, "organisation", "READ_OFFICE", "OFFICE", "READ", 0); + insert_m_permission(named, m_permission, "organisation", "CREATE_OFFICE", "OFFICE", "CREATE", 1); + insert_m_permission(named, m_permission, "organisation", "CREATE_OFFICE_CHECKER", "OFFICE", "CREATE", 0); + insert_m_permission(named, m_permission, "organisation", "UPDATE_OFFICE", "OFFICE", "UPDATE", 1); + insert_m_permission(named, m_permission, "organisation", "UPDATE_OFFICE_CHECKER", "OFFICE", "UPDATE", 0); + insert_m_permission(named, m_permission, "organisation", "READ_OFFICETRANSACTION", "OFFICETRANSACTION", "READ", 0); + insert_m_permission(named, m_permission, "organisation", "DELETE_OFFICE_CHECKER", "OFFICE", "DELETE", 0); + insert_m_permission(named, m_permission, "organisation", "CREATE_OFFICETRANSACTION", "OFFICETRANSACTION", "CREATE", 1); + insert_m_permission(named, m_permission, "organisation", "CREATE_OFFICETRANSACTION_CHECKER", "OFFICETRANSACTION", "CREATE", 0); + insert_m_permission(named, m_permission, "organisation", "DELETE_OFFICETRANSACTION", "OFFICETRANSACTION", "DELETE", 1); + insert_m_permission(named, m_permission, "organisation", "DELETE_OFFICETRANSACTION_CHECKER", "OFFICETRANSACTION", "DELETE", 0); + insert_m_permission(named, m_permission, "organisation", "READ_STAFF", "STAFF", "READ", 0); + insert_m_permission(named, m_permission, "organisation", "CREATE_STAFF", "STAFF", "CREATE", 1); + insert_m_permission(named, m_permission, "organisation", "CREATE_STAFF_CHECKER", "STAFF", "CREATE", 0); + insert_m_permission(named, m_permission, "organisation", "UPDATE_STAFF", "STAFF", "UPDATE", 1); + insert_m_permission(named, m_permission, "organisation", "UPDATE_STAFF_CHECKER", "STAFF", "UPDATE", 0); + insert_m_permission(named, m_permission, "organisation", "DELETE_STAFF", "STAFF", "DELETE", 1); + insert_m_permission(named, m_permission, "organisation", "DELETE_STAFF_CHECKER", "STAFF", "DELETE", 0); + insert_m_permission(named, m_permission, "organisation", "READ_SAVINGSPRODUCT", "SAVINGSPRODUCT", "READ", 0); + insert_m_permission(named, m_permission, "organisation", "CREATE_SAVINGSPRODUCT", "SAVINGSPRODUCT", "CREATE", 1); + insert_m_permission(named, m_permission, "organisation", "CREATE_SAVINGSPRODUCT_CHECKER", "SAVINGSPRODUCT", "CREATE", 0); + insert_m_permission(named, m_permission, "organisation", "UPDATE_SAVINGSPRODUCT", "SAVINGSPRODUCT", "UPDATE", 1); + insert_m_permission(named, m_permission, "organisation", "UPDATE_SAVINGSPRODUCT_CHECKER", "SAVINGSPRODUCT", "UPDATE", 0); + insert_m_permission(named, m_permission, "organisation", "DELETE_SAVINGSPRODUCT", "SAVINGSPRODUCT", "DELETE", 1); + insert_m_permission(named, m_permission, "organisation", "DELETE_SAVINGSPRODUCT_CHECKER", "SAVINGSPRODUCT", "DELETE", 0); + insert_m_permission(named, m_permission, "portfolio", "READ_LOAN", "LOAN", "READ", 0); + insert_m_permission(named, m_permission, "portfolio", "CREATE_LOAN", "LOAN", "CREATE", 1); + insert_m_permission(named, m_permission, "portfolio", "CREATE_LOAN_CHECKER", "LOAN", "CREATE", 0); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_LOAN", "LOAN", "UPDATE", 1); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_LOAN_CHECKER", "LOAN", "UPDATE", 0); + insert_m_permission(named, m_permission, "portfolio", "DELETE_LOAN", "LOAN", "DELETE", 1); + insert_m_permission(named, m_permission, "portfolio", "DELETE_LOAN_CHECKER", "LOAN", "DELETE", 0); + insert_m_permission(named, m_permission, "portfolio", "READ_CLIENT", "CLIENT", "READ", 0); + insert_m_permission(named, m_permission, "portfolio", "CREATE_CLIENT", "CLIENT", "CREATE", 1); + insert_m_permission(named, m_permission, "portfolio", "CREATE_CLIENT_CHECKER", "CLIENT", "CREATE", 0); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_CLIENT", "CLIENT", "UPDATE", 1); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_CLIENT_CHECKER", "CLIENT", "UPDATE", 0); + insert_m_permission(named, m_permission, "portfolio", "DELETE_CLIENT", "CLIENT", "DELETE", 1); + insert_m_permission(named, m_permission, "portfolio", "DELETE_CLIENT_CHECKER", "CLIENT", "DELETE", 0); + insert_m_permission(named, m_permission, "portfolio", "READ_CLIENTIMAGE", "CLIENTIMAGE", "READ", 0); + insert_m_permission(named, m_permission, "portfolio", "CREATE_CLIENTIMAGE", "CLIENTIMAGE", "CREATE", 1); + insert_m_permission(named, m_permission, "portfolio", "CREATE_CLIENTIMAGE_CHECKER", "CLIENTIMAGE", "CREATE", 0); + insert_m_permission(named, m_permission, "portfolio", "DELETE_CLIENTIMAGE", "CLIENTIMAGE", "DELETE", 1); + insert_m_permission(named, m_permission, "portfolio", "DELETE_CLIENTIMAGE_CHECKER", "CLIENTIMAGE", "DELETE", 0); + insert_m_permission(named, m_permission, "portfolio", "READ_CLIENTNOTE", "CLIENTNOTE", "READ", 0); + insert_m_permission(named, m_permission, "portfolio", "CREATE_CLIENTNOTE", "CLIENTNOTE", "CREATE", 1); + insert_m_permission(named, m_permission, "portfolio", "CREATE_CLIENTNOTE_CHECKER", "CLIENTNOTE", "CREATE", 0); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_CLIENTNOTE", "CLIENTNOTE", "UPDATE", 1); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_CLIENTNOTE_CHECKER", "CLIENTNOTE", "UPDATE", 0); + insert_m_permission(named, m_permission, "portfolio", "DELETE_CLIENTNOTE", "CLIENTNOTE", "DELETE", 1); + insert_m_permission(named, m_permission, "portfolio", "DELETE_CLIENTNOTE_CHECKER", "CLIENTNOTE", "DELETE", 0); + insert_m_permission(named, m_permission, "portfolio", "READ_GROUPNOTE", "GROUPNOTE", "READ", 0); + insert_m_permission(named, m_permission, "portfolio", "CREATE_GROUPNOTE", "GROUPNOTE", "CREATE", 1); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_GROUPNOTE", "GROUPNOTE", "UPDATE", 1); + insert_m_permission(named, m_permission, "portfolio", "DELETE_GROUPNOTE", "GROUPNOTE", "DELETE", 1); + insert_m_permission(named, m_permission, "portfolio", "CREATE_GROUPNOTE_CHECKER", "GROUPNOTE", "CREATE", 0); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_GROUPNOTE_CHECKER", "GROUPNOTE", "UPDATE", 0); + insert_m_permission(named, m_permission, "portfolio", "DELETE_GROUPNOTE_CHECKER", "GROUPNOTE", "DELETE", 0); + insert_m_permission(named, m_permission, "portfolio", "READ_LOANNOTE", "LOANNOTE", "READ", 0); + insert_m_permission(named, m_permission, "portfolio", "CREATE_LOANNOTE", "LOANNOTE", "CREATE", 1); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_LOANNOTE", "LOANNOTE", "UPDATE", 1); + insert_m_permission(named, m_permission, "portfolio", "DELETE_LOANNOTE", "LOANNOTE", "DELETE", 1); + insert_m_permission(named, m_permission, "portfolio", "CREATE_LOANNOTE_CHECKER", "LOANNOTE", "CREATE", 0); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_LOANNOTE_CHECKER", "LOANNOTE", "UPDATE", 0); + insert_m_permission(named, m_permission, "portfolio", "DELETE_LOANNOTE_CHECKER", "LOANNOTE", "DELETE", 0); + insert_m_permission(named, m_permission, "portfolio", "READ_LOANTRANSACTIONNOTE", "LOANTRANSACTIONNOTE", "READ", 0); + insert_m_permission(named, m_permission, "portfolio", "CREATE_LOANTRANSACTIONNOTE", "LOANTRANSACTIONNOTE", "CREATE", 1); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_LOANTRANSACTIONNOTE", "LOANTRANSACTIONNOTE", "UPDATE", 1); + insert_m_permission(named, m_permission, "portfolio", "DELETE_LOANTRANSACTIONNOTE", "LOANTRANSACTIONNOTE", "DELETE", 1); + insert_m_permission(named, m_permission, "portfolio", "CREATE_LOANTRANSACTIONNOTE_CHECKER", "LOANTRANSACTIONNOTE", "CREATE", 0); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_LOANTRANSACTIONNOTE_CHECKER", "LOANTRANSACTIONNOTE", "UPDATE", 0); + insert_m_permission(named, m_permission, "portfolio", "DELETE_LOANTRANSACTIONNOTE_CHECKER", "LOANTRANSACTIONNOTE", "DELETE", 0); + insert_m_permission(named, m_permission, "portfolio", "READ_SAVINGNOTE", "SAVINGNOTE", "READ", 0); + insert_m_permission(named, m_permission, "portfolio", "CREATE_SAVINGNOTE", "SAVINGNOTE", "CREATE", 1); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_SAVINGNOTE", "SAVINGNOTE", "UPDATE", 1); + insert_m_permission(named, m_permission, "portfolio", "DELETE_SAVINGNOTE", "SAVINGNOTE", "DELETE", 1); + insert_m_permission(named, m_permission, "portfolio", "CREATE_SAVINGNOTE_CHECKER", "SAVINGNOTE", "CREATE", 0); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_SAVINGNOTE_CHECKER", "SAVINGNOTE", "UPDATE", 0); + insert_m_permission(named, m_permission, "portfolio", "DELETE_SAVINGNOTE_CHECKER", "SAVINGNOTE", "DELETE", 0); + insert_m_permission(named, m_permission, "portfolio", "READ_CLIENTIDENTIFIER", "CLIENTIDENTIFIER", "READ", 0); + insert_m_permission(named, m_permission, "portfolio", "CREATE_CLIENTIDENTIFIER", "CLIENTIDENTIFIER", "CREATE", 1); + insert_m_permission(named, m_permission, "portfolio", "CREATE_CLIENTIDENTIFIER_CHECKER", "CLIENTIDENTIFIER", "CREATE", 0); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_CLIENTIDENTIFIER", "CLIENTIDENTIFIER", "UPDATE", 1); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_CLIENTIDENTIFIER_CHECKER", "CLIENTIDENTIFIER", "UPDATE", 0); + insert_m_permission(named, m_permission, "portfolio", "DELETE_CLIENTIDENTIFIER", "CLIENTIDENTIFIER", "DELETE", 1); + insert_m_permission(named, m_permission, "portfolio", "DELETE_CLIENTIDENTIFIER_CHECKER", "CLIENTIDENTIFIER", "DELETE", 0); + insert_m_permission(named, m_permission, "portfolio", "READ_DOCUMENT", "DOCUMENT", "READ", 0); + insert_m_permission(named, m_permission, "portfolio", "CREATE_DOCUMENT", "DOCUMENT", "CREATE", 1); + insert_m_permission(named, m_permission, "portfolio", "CREATE_DOCUMENT_CHECKER", "DOCUMENT", "CREATE", 0); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_DOCUMENT", "DOCUMENT", "UPDATE", 1); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_DOCUMENT_CHECKER", "DOCUMENT", "UPDATE", 0); + insert_m_permission(named, m_permission, "portfolio", "DELETE_DOCUMENT", "DOCUMENT", "DELETE", 1); + insert_m_permission(named, m_permission, "portfolio", "DELETE_DOCUMENT_CHECKER", "DOCUMENT", "DELETE", 0); + insert_m_permission(named, m_permission, "portfolio", "READ_GROUP", "GROUP", "READ", 0); + insert_m_permission(named, m_permission, "portfolio", "CREATE_GROUP", "GROUP", "CREATE", 1); + insert_m_permission(named, m_permission, "portfolio", "CREATE_GROUP_CHECKER", "GROUP", "CREATE", 0); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_GROUP", "GROUP", "UPDATE", 1); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_GROUP_CHECKER", "GROUP", "UPDATE", 0); + insert_m_permission(named, m_permission, "portfolio", "DELETE_GROUP", "GROUP", "DELETE", 1); + insert_m_permission(named, m_permission, "portfolio", "DELETE_GROUP_CHECKER", "GROUP", "DELETE", 0); + insert_m_permission(named, m_permission, "portfolio", "UNASSIGNSTAFF_GROUP", "GROUP", "UNASSIGNSTAFF", 1); + insert_m_permission(named, m_permission, "portfolio", "UNASSIGNSTAFF_GROUP_CHECKER", "GROUP", "UNASSIGNSTAFF", 0); + insert_m_permission(named, m_permission, "portfolio", "CREATE_LOANCHARGE", "LOANCHARGE", "CREATE", 1); + insert_m_permission(named, m_permission, "portfolio", "CREATE_LOANCHARGE_CHECKER", "LOANCHARGE", "CREATE", 0); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_LOANCHARGE", "LOANCHARGE", "UPDATE", 1); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_LOANCHARGE_CHECKER", "LOANCHARGE", "UPDATE", 0); + insert_m_permission(named, m_permission, "portfolio", "DELETE_LOANCHARGE", "LOANCHARGE", "DELETE", 1); + insert_m_permission(named, m_permission, "portfolio", "DELETE_LOANCHARGE_CHECKER", "LOANCHARGE", "DELETE", 0); + insert_m_permission(named, m_permission, "portfolio", "WAIVE_LOANCHARGE", "LOANCHARGE", "WAIVE", 1); + insert_m_permission(named, m_permission, "portfolio", "WAIVE_LOANCHARGE_CHECKER", "LOANCHARGE", "WAIVE", 0); + insert_m_permission(named, m_permission, "portfolio", "READ_SAVINGSACCOUNT", "SAVINGSACCOUNT", "READ", 0); + insert_m_permission(named, m_permission, "portfolio", "CREATE_SAVINGSACCOUNT", "SAVINGSACCOUNT", "CREATE", 1); + insert_m_permission(named, m_permission, "portfolio", "CREATE_SAVINGSACCOUNT_CHECKER", "SAVINGSACCOUNT", "CREATE", 0); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_SAVINGSACCOUNT", "SAVINGSACCOUNT", "UPDATE", 1); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_SAVINGSACCOUNT_CHECKER", "SAVINGSACCOUNT", "UPDATE", 0); + insert_m_permission(named, m_permission, "portfolio", "DELETE_SAVINGSACCOUNT", "SAVINGSACCOUNT", "DELETE", 1); + insert_m_permission(named, m_permission, "portfolio", "DELETE_SAVINGSACCOUNT_CHECKER", "SAVINGSACCOUNT", "DELETE", 0); + insert_m_permission(named, m_permission, "portfolio", "READ_GUARANTOR", "GUARANTOR", "READ", 0); + insert_m_permission(named, m_permission, "portfolio", "CREATE_GUARANTOR", "GUARANTOR", "CREATE", 1); + insert_m_permission(named, m_permission, "portfolio", "CREATE_GUARANTOR_CHECKER", "GUARANTOR", "CREATE", 0); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_GUARANTOR", "GUARANTOR", "UPDATE", 1); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_GUARANTOR_CHECKER", "GUARANTOR", "UPDATE", 0); + insert_m_permission(named, m_permission, "portfolio", "DELETE_GUARANTOR", "GUARANTOR", "DELETE", 1); + insert_m_permission(named, m_permission, "portfolio", "DELETE_GUARANTOR_CHECKER", "GUARANTOR", "DELETE", 0); + insert_m_permission(named, m_permission, "portfolio", "READ_COLLATERAL", "COLLATERAL", "READ", 0); + insert_m_permission(named, m_permission, "portfolio", "CREATE_COLLATERAL", "COLLATERAL", "CREATE", 1); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_COLLATERAL", "COLLATERAL", "UPDATE", 1); + insert_m_permission(named, m_permission, "portfolio", "DELETE_COLLATERAL", "COLLATERAL", "DELETE", 1); + insert_m_permission(named, m_permission, "portfolio", "CREATE_COLLATERAL_CHECKER", "COLLATERAL", "CREATE", 0); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_COLLATERAL_CHECKER", "COLLATERAL", "UPDATE", 0); + insert_m_permission(named, m_permission, "portfolio", "DELETE_COLLATERAL_CHECKER", "COLLATERAL", "DELETE", 0); + insert_m_permission(named, m_permission, "transaction_loan", "APPROVE_LOAN", "LOAN", "APPROVE", 1); + insert_m_permission(named, m_permission, "transaction_loan", "APPROVEINPAST_LOAN", "LOAN", "APPROVEINPAST", 1); + insert_m_permission(named, m_permission, "transaction_loan", "REJECT_LOAN", "LOAN", "REJECT", 1); + insert_m_permission(named, m_permission, "transaction_loan", "REJECTINPAST_LOAN", "LOAN", "REJECTINPAST", 1); + insert_m_permission(named, m_permission, "transaction_loan", "WITHDRAW_LOAN", "LOAN", "WITHDRAW", 1); + insert_m_permission(named, m_permission, "transaction_loan", "WITHDRAWINPAST_LOAN", "LOAN", "WITHDRAWINPAST", 1); + insert_m_permission(named, m_permission, "transaction_loan", "APPROVALUNDO_LOAN", "LOAN", "APPROVALUNDO", 1); + insert_m_permission(named, m_permission, "transaction_loan", "DISBURSE_LOAN", "LOAN", "DISBURSE", 1); + insert_m_permission(named, m_permission, "transaction_loan", "DISBURSEINPAST_LOAN", "LOAN", "DISBURSEINPAST", 1); + insert_m_permission(named, m_permission, "transaction_loan", "DISBURSALUNDO_LOAN", "LOAN", "DISBURSALUNDO", 1); + insert_m_permission(named, m_permission, "transaction_loan", "REPAYMENT_LOAN", "LOAN", "REPAYMENT", 1); + insert_m_permission(named, m_permission, "transaction_loan", "REPAYMENTINPAST_LOAN", "LOAN", "REPAYMENTINPAST", 1); + insert_m_permission(named, m_permission, "transaction_loan", "ADJUST_LOAN", "LOAN", "ADJUST", 1); + insert_m_permission(named, m_permission, "transaction_loan", "WAIVEINTERESTPORTION_LOAN", "LOAN", "WAIVEINTERESTPORTION", 1); + insert_m_permission(named, m_permission, "transaction_loan", "WRITEOFF_LOAN", "LOAN", "WRITEOFF", 1); + insert_m_permission(named, m_permission, "transaction_loan", "CLOSE_LOAN", "LOAN", "CLOSE", 1); + insert_m_permission(named, m_permission, "transaction_loan", "CLOSEASRESCHEDULED_LOAN", "LOAN", "CLOSEASRESCHEDULED", 1); + insert_m_permission(named, m_permission, "transaction_loan", "UPDATELOANOFFICER_LOAN", "LOAN", "UPDATELOANOFFICER", 1); + insert_m_permission(named, m_permission, "transaction_loan", "UPDATELOANOFFICER_LOAN_CHECKER", "LOAN", "UPDATELOANOFFICER", 0); + insert_m_permission(named, m_permission, "transaction_loan", "REMOVELOANOFFICER_LOAN", "LOAN", "REMOVELOANOFFICER", 1); + insert_m_permission(named, m_permission, "transaction_loan", "REMOVELOANOFFICER_LOAN_CHECKER", "LOAN", "REMOVELOANOFFICER", 0); + insert_m_permission(named, m_permission, "transaction_loan", "BULKREASSIGN_LOAN", "LOAN", "BULKREASSIGN", 1); + insert_m_permission(named, m_permission, "transaction_loan", "BULKREASSIGN_LOAN_CHECKER", "LOAN", "BULKREASSIGN", 0); + insert_m_permission(named, m_permission, "transaction_loan", "APPROVE_LOAN_CHECKER", "LOAN", "APPROVE", 0); + insert_m_permission(named, m_permission, "transaction_loan", "APPROVEINPAST_LOAN_CHECKER", "LOAN", "APPROVEINPAST", 0); + insert_m_permission(named, m_permission, "transaction_loan", "REJECT_LOAN_CHECKER", "LOAN", "REJECT", 0); + insert_m_permission(named, m_permission, "transaction_loan", "REJECTINPAST_LOAN_CHECKER", "LOAN", "REJECTINPAST", 0); + insert_m_permission(named, m_permission, "transaction_loan", "WITHDRAW_LOAN_CHECKER", "LOAN", "WITHDRAW", 0); + insert_m_permission(named, m_permission, "transaction_loan", "WITHDRAWINPAST_LOAN_CHECKER", "LOAN", "WITHDRAWINPAST", 0); + insert_m_permission(named, m_permission, "transaction_loan", "APPROVALUNDO_LOAN_CHECKER", "LOAN", "APPROVALUNDO", 0); + insert_m_permission(named, m_permission, "transaction_loan", "DISBURSE_LOAN_CHECKER", "LOAN", "DISBURSE", 0); + insert_m_permission(named, m_permission, "transaction_loan", "DISBURSEINPAST_LOAN_CHECKER", "LOAN", "DISBURSEINPAST", 0); + insert_m_permission(named, m_permission, "transaction_loan", "DISBURSALUNDO_LOAN_CHECKER", "LOAN", "DISBURSALUNDO", 0); + insert_m_permission(named, m_permission, "transaction_loan", "REPAYMENT_LOAN_CHECKER", "LOAN", "REPAYMENT", 0); + insert_m_permission(named, m_permission, "transaction_loan", "REPAYMENTINPAST_LOAN_CHECKER", "LOAN", "REPAYMENTINPAST", 0); + insert_m_permission(named, m_permission, "transaction_loan", "ADJUST_LOAN_CHECKER", "LOAN", "ADJUST", 0); + insert_m_permission(named, m_permission, "transaction_loan", "WAIVEINTERESTPORTION_LOAN_CHECKER", "LOAN", "WAIVEINTERESTPORTION", 0); + insert_m_permission(named, m_permission, "transaction_loan", "WRITEOFF_LOAN_CHECKER", "LOAN", "WRITEOFF", 0); + insert_m_permission(named, m_permission, "transaction_loan", "CLOSE_LOAN_CHECKER", "LOAN", "CLOSE", 0); + insert_m_permission(named, m_permission, "transaction_loan", "CLOSEASRESCHEDULED_LOAN_CHECKER", "LOAN", "CLOSEASRESCHEDULED", 0); + insert_m_permission(named, m_permission, "transaction_savings", "DEPOSIT_SAVINGSACCOUNT", "SAVINGSACCOUNT", "DEPOSIT", 1); + insert_m_permission(named, m_permission, "transaction_savings", "DEPOSIT_SAVINGSACCOUNT_CHECKER", "SAVINGSACCOUNT", "DEPOSIT", 0); + insert_m_permission(named, m_permission, "transaction_savings", "WITHDRAWAL_SAVINGSACCOUNT", "SAVINGSACCOUNT", "WITHDRAWAL", 1); + insert_m_permission(named, m_permission, "transaction_savings", "WITHDRAWAL_SAVINGSACCOUNT_CHECKER", "SAVINGSACCOUNT", "WITHDRAWAL", 0); + insert_m_permission(named, m_permission, "transaction_savings", "ACTIVATE_SAVINGSACCOUNT", "SAVINGSACCOUNT", "ACTIVATE", 1); + insert_m_permission(named, m_permission, "transaction_savings", "ACTIVATE_SAVINGSACCOUNT_CHECKER", "SAVINGSACCOUNT", "ACTIVATE", 0); + insert_m_permission(named, m_permission, "transaction_savings", "CALCULATEINTEREST_SAVINGSACCOUNT", "SAVINGSACCOUNT", "CALCULATEINTEREST", 1); + insert_m_permission(named, m_permission, "transaction_savings", "CALCULATEINTEREST_SAVINGSACCOUNT_CHECKER", "SAVINGSACCOUNT", "CALCULATEINTEREST", 0); + insert_m_permission(named, m_permission, "accounting", "CREATE_GLACCOUNT", "GLACCOUNT", "CREATE", 1); + insert_m_permission(named, m_permission, "accounting", "UPDATE_GLACCOUNT", "GLACCOUNT", "UPDATE", 1); + insert_m_permission(named, m_permission, "accounting", "DELETE_GLACCOUNT", "GLACCOUNT", "DELETE", 1); + insert_m_permission(named, m_permission, "accounting", "CREATE_GLCLOSURE", "GLCLOSURE", "CREATE", 1); + insert_m_permission(named, m_permission, "accounting", "UPDATE_GLCLOSURE", "GLCLOSURE", "UPDATE", 1); + insert_m_permission(named, m_permission, "accounting", "DELETE_GLCLOSURE", "GLCLOSURE", "DELETE", 1); + insert_m_permission(named, m_permission, "accounting", "CREATE_JOURNALENTRY", "JOURNALENTRY", "CREATE", 1); + insert_m_permission(named, m_permission, "accounting", "REVERSE_JOURNALENTRY", "JOURNALENTRY", "REVERSE", 1); + } + { + Table m_role = dataContext.getDefaultSchema().getTableByName("m_role"); + insert_m_role(named, m_role, 1, "Super user", "This role provides all application permissions."); + } + { + Table m_role_permission = dataContext.getDefaultSchema().getTableByName("m_role_permission"); + long role_id = lookup_m_role(named, dataContext, "Super user"); + long permission_id = lookup_m_permission(named, dataContext, "ALL_FUNCTIONS"); + insert_m_role_permission(named, m_role_permission, role_id, permission_id); + } + { + Table m_appuser = dataContext.getDefaultSchema().getTableByName("m_appuser"); + long office_id = lookup_m_office(named, dataContext, "Head Office"); + insert_m_appuser(named, m_appuser, 1, office_id, "mifos", "App", "Administrator", "5787039480429368bf94732aacc771cd0a3ea02bcf504ffe1185ab94213bc63a", "demomfi@mifos.org", 0, false, false, false, false); + } + { + Table m_appuser_role = dataContext.getDefaultSchema().getTableByName("m_appuser_role"); + long appuser_id = lookup_m_appuser(named, dataContext, "mifos"); + long role_id = lookup_m_role(named, dataContext, "Super user"); + insert_m_appuser_role(named, m_appuser_role, appuser_id, role_id); + } + { + Table x_registered_table = dataContext.getDefaultSchema().getTableByName("x_registered_table"); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + SelectQuery selectQuery = new SelectQuery(x_registered_table.getName()); + for (Map record : named.queryForList(selectQuery.toSQL(), selectQuery.toParam())) { + insert_m_permission(named, m_permission, "datatable", "CREATE_" + record.get(x_registered_table.getColumnByName("registered_table_name").getName()), (String) record.get(x_registered_table.getColumnByName("registered_table_name").getName()), "CREATE"); + insert_m_permission(named, m_permission, "datatable", "READ_" + record.get(x_registered_table.getColumnByName("registered_table_name").getName()), (String) record.get(x_registered_table.getColumnByName("registered_table_name").getName()), "READ"); + insert_m_permission(named, m_permission, "datatable", "UPDATE_" + record.get(x_registered_table.getColumnByName("registered_table_name").getName()), (String) record.get(x_registered_table.getColumnByName("registered_table_name").getName()), "UPDATE"); + insert_m_permission(named, m_permission, "datatable", "DELETE_" + record.get(x_registered_table.getColumnByName("registered_table_name").getName()), (String) record.get(x_registered_table.getColumnByName("registered_table_name").getName()), "DELETE"); + } + } + { + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + UpdateQuery updateQuery = new UpdateQuery(m_permission.getName()); + updateQuery.addValue(m_permission.getColumnByName("can_maker_checker").getName(), false); + named.update(updateQuery.toSQL(), updateQuery.toParam()); + } + } + + protected long lookup_m_appuser(NamedParameterJdbcTemplate named, DataContext dataContext, String username) { + Table table = dataContext.getDefaultSchema().getTableByName("m_appuser"); + SelectQuery selectQuery = new SelectQuery(table.getName()); + selectQuery.addField(table.getColumnByName("id").getName()); + selectQuery.addWhere(table.getColumnByName("username").getName() + " = :username", username); + Long id = named.queryForObject(selectQuery.toSQL(), selectQuery.toParam(), long.class); + return id == null ? 0 : id; + } + + protected void insert_m_appuser_role(NamedParameterJdbcTemplate named, Table table, long appuser_id, long role_id) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("appuser_id").getName(), appuser_id); + insertQuery.addValue(table.getColumnByName("role_id").getName(), role_id); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_m_appuser(NamedParameterJdbcTemplate named, Table table, long id, long office_id, String username, String firstname, String lastname, String password, String email, long firsttime_login_remaining, boolean nonexpired, boolean nonlocked, boolean nonexpired_credentials, boolean enabled) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("id").getName(), id); + insertQuery.addValue(table.getColumnByName("office_id").getName(), office_id); + insertQuery.addValue(table.getColumnByName("username").getName(), username); + insertQuery.addValue(table.getColumnByName("firstname").getName(), firstname); + insertQuery.addValue(table.getColumnByName("lastname").getName(), lastname); + insertQuery.addValue(table.getColumnByName("password").getName(), password); + insertQuery.addValue(table.getColumnByName("email").getName(), email); + insertQuery.addValue(table.getColumnByName("firsttime_login_remaining").getName(), firsttime_login_remaining); + insertQuery.addValue(table.getColumnByName("nonexpired").getName(), nonexpired); + insertQuery.addValue(table.getColumnByName("nonlocked").getName(), nonlocked); + insertQuery.addValue(table.getColumnByName("nonexpired_credentials").getName(), nonexpired_credentials); + insertQuery.addValue(table.getColumnByName("enabled").getName(), enabled); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_m_role_permission(NamedParameterJdbcTemplate named, Table table, long role_id, long permission_id) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("role_id").getName(), role_id); + insertQuery.addValue(table.getColumnByName("permission_id").getName(), permission_id); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected long lookup_m_office(NamedParameterJdbcTemplate named, DataContext dataContext, String name) { + Table table = dataContext.getDefaultSchema().getTableByName("m_office"); + SelectQuery selectQuery = new SelectQuery(table.getName()); + selectQuery.addField(table.getColumnByName("id").getName()); + selectQuery.addWhere(table.getColumnByName("name").getName() + " = :name", name); + Long id = named.queryForObject(selectQuery.toSQL(), selectQuery.toParam(), long.class); + return id == null ? 0 : id; + } + + protected long lookup_m_permission(NamedParameterJdbcTemplate named, DataContext dataContext, String code) { + Table table = dataContext.getDefaultSchema().getTableByName("m_permission"); + SelectQuery selectQuery = new SelectQuery(table.getName()); + selectQuery.addField(table.getColumnByName("id").getName()); + selectQuery.addWhere(table.getColumnByName("code").getName() + " = :code", code); + Long id = named.queryForObject(selectQuery.toSQL(), selectQuery.toParam(), long.class); + return id == null ? 0 : id; + } + + protected long lookup_m_role(NamedParameterJdbcTemplate named, DataContext dataContext, String name) { + Table table = dataContext.getDefaultSchema().getTableByName("m_role"); + SelectQuery selectQuery = new SelectQuery(table.getName()); + selectQuery.addField(table.getColumnByName("id").getName()); + selectQuery.addWhere(table.getColumnByName("name").getName() + " = :name", name); + Long id = named.queryForObject(selectQuery.toSQL(), selectQuery.toParam(), long.class); + return id == null ? 0 : id; + } + + protected void insert_m_role(NamedParameterJdbcTemplate named, Table table, long id, String name, String description) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("id").getName(), id); + insertQuery.addValue(table.getColumnByName("name").getName(), name); + insertQuery.addValue(table.getColumnByName("description").getName(), description); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V40__AddPermissionsForAccountingRule.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V40__AddPermissionsForAccountingRule.java new file mode 100644 index 00000000..a19c56ef --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V40__AddPermissionsForAccountingRule.java @@ -0,0 +1,39 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V40__AddPermissionsForAccountingRule extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V40__AddPermissionsForAccountingRule; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + dataContext.refreshSchemas(); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "organistion", "DELETE_ACCOUNTINGRULE", "ACCOUNTINGRULE", "DELETE", 0); + insert_m_permission(named, m_permission, "organistion", "CREATE_ACCOUNTINGRULE", "ACCOUNTINGRULE", "CREATE", 0); + insert_m_permission(named, m_permission, "organistion", "UPDATE_ACCOUNTINGRULE", "ACCOUNTINGRULE", "UPDATE", 0); + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V41__GroupSummaryReports.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V41__GroupSummaryReports.java new file mode 100644 index 00000000..08c0c291 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V41__GroupSummaryReports.java @@ -0,0 +1,66 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.DeleteQuery; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V41__GroupSummaryReports extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V41__GroupSummaryReports; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + DeleteQuery deleteQuery = null; + { + dataContext.refreshSchemas(); + Table stretchy_report = dataContext.getDefaultSchema().getTableByName("stretchy_report"); + deleteQuery = new DeleteQuery(stretchy_report.getName()); + deleteQuery.addWhere(stretchy_report.getColumnByName("report_name").getName() + " = :report_name", "GroupSummaryDetails"); + named.update(deleteQuery.toSQL(), deleteQuery.toParam()); + + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + deleteQuery = new DeleteQuery(m_permission.getName()); + deleteQuery.addWhere(m_permission.getColumnByName("entity_name").getName() + " = :entity_name", "GroupSummaryDetails"); + + insert_stretchy_report(named, stretchy_report, "GroupSummaryCounts", "Table", 1, 0, "Utility query for getting group summary count details for a group_id", "\n/*\nActive Client is a client linked to the 'group' via m_group_client\nand with an active 'status_enum'.)\nActive Borrowers - Borrower may be a client or a 'group'\n*/\nselect x.*\nfrom m_office o,\nm_group g,\n\n(select a.activeClients,\n(b.activeClientLoans + c.activeGroupLoans) as activeLoans,\nb.activeClientLoans, c.activeGroupLoans,\n(b.activeClientBorrowers + c.activeGroupBorrowers) as activeBorrowers,\nb.activeClientBorrowers, c.activeGroupBorrowers,\n(b.overdueClientLoans + c.overdueGroupLoans) as overdueLoans,\nb.overdueClientLoans, c.overdueGroupLoans\nfrom\n(select count(*) as activeClients\nfrom m_group topgroup\njoin m_group g on g.hierarchy like concat(topgroup.hierarchy, '%')\njoin m_group_client gc on gc.group_id = g.id\njoin m_client c on c.id = gc.client_id\nwhere topgroup.id = ${groupId}\nand c.status_enum = 300) a,\n\n(select count(*) as activeClientLoans,\ncount(distinct(l.client_id)) as activeClientBorrowers,\nifnull(sum(if(laa.loan_id is not null, 1, 0)), 0) as overdueClientLoans\nfrom m_group topgroup\njoin m_group g on g.hierarchy like concat(topgroup.hierarchy, '%')\njoin m_loan l on l.group_id = g.id and l.client_id is not null\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\nwhere topgroup.id = ${groupId}\nand l.loan_status_id = 300) b,\n\n(select count(*) as activeGroupLoans,\ncount(distinct(l.group_id)) as activeGroupBorrowers,\nifnull(sum(if(laa.loan_id is not null, 1, 0)), 0) as overdueGroupLoans\nfrom m_group topgroup\njoin m_group g on g.hierarchy like concat(topgroup.hierarchy, '%')\njoin m_loan l on l.group_id = g.id and l.client_id is null\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\nwhere topgroup.id = ${groupId}\nand l.loan_status_id = 300) c\n) x\n\nwhere g.id = ${groupId}\nand o.id = g.office_id\nand o.hierarchy like concat('${currentUserHierarchy}', '%')\n"); + + insert_m_permission(named, m_permission, "report", "READ_GroupSummaryCounts", "GroupSummaryCounts", "READ", 0); + + insert_stretchy_report(named, stretchy_report, "GroupSummaryAmounts", "Table", 1, 0, "Utility query for getting group summary currency amount details for a group_id", "\nselect ifnull(cur.display_symbol, l.currency_code) as currency,\nifnull(sum(l.principal_disbursed_derived),0) as totalDisbursedAmount,\nifnull(sum(l.principal_outstanding_derived),0) as totalLoanOutstandingAmount,\ncount(laa.loan_id) as overdueLoans, ifnull(sum(laa.total_overdue_derived), 0) as totalLoanOverdueAmount\nfrom m_group topgroup\njoin m_office o on o.id = topgroup.office_id and o.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_group g on g.hierarchy like concat(topgroup.hierarchy, '%')\njoin m_loan l on l.group_id = g.id\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\nleft join m_currency cur on cur.code = l.currency_code\nwhere topgroup.id = ${groupId}\nand l.disbursedon_date is not null\ngroup by l.currency_code\n"); + + insert_m_permission(named, m_permission, "report", "READ_GroupSummaryAmounts", "GroupSummaryAmounts", "READ", 0); + } + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_stretchy_report(NamedParameterJdbcTemplate named, Table table, String report_name, String report_type, long core_report, long use_report, String description, String report_sql) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("report_name").getName(), report_name); + insertQuery.addValue(table.getColumnByName("report_type").getName(), report_type); + insertQuery.addValue(table.getColumnByName("core_report").getName(), core_report); + insertQuery.addValue(table.getColumnByName("use_report").getName(), use_report); + insertQuery.addValue(table.getColumnByName("description").getName(), description); + insertQuery.addValue(table.getColumnByName("report_sql").getName(), report_sql); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V42__AddDefaultValueForIdForAccAccountingRule.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V42__AddDefaultValueForIdForAccAccountingRule.java new file mode 100644 index 00000000..d164c8ff --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V42__AddDefaultValueForIdForAccAccountingRule.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V42__AddDefaultValueForIdForAccAccountingRule extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V42__AddDefaultValueForIdForAccAccountingRule + getInternalChecksum("V42__Add_default_value_for_id_for_acc_accounting_rule.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V42__Add_default_value_for_id_for_acc_accounting_rule.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V43__AccountingForSavings.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V43__AccountingForSavings.java new file mode 100644 index 00000000..82c1fa07 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V43__AccountingForSavings.java @@ -0,0 +1,37 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.UpdateQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V43__AccountingForSavings extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V43__AccountingForSavings + getInternalChecksum("V43_1__accounting-for-savings.xml", "V43_2__accounting-for-savings.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + UpdateQuery updateQuery = null; + { + updateLiquibase("V43_1__accounting-for-savings.xml"); + } + { + Table m_savings_product = dataContext.getDefaultSchema().getTableByName("m_savings_product"); + updateQuery = new UpdateQuery(m_savings_product.getName()); + updateQuery.addValue(m_savings_product.getColumnByName("accounting_type").getName(), 1); + named.update(updateQuery.toSQL(), updateQuery.toParam()); + } + { + updateLiquibase("V43_2__accounting-for-savings.xml"); + } + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V44__DocumentIncreaseSizeOfColumnType.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V44__DocumentIncreaseSizeOfColumnType.java new file mode 100644 index 00000000..570d7d01 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V44__DocumentIncreaseSizeOfColumnType.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V44__DocumentIncreaseSizeOfColumnType extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V44__DocumentIncreaseSizeOfColumnType + getInternalChecksum("V44__document-increase-size-of-column-type.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V44__document-increase-size-of-column-type.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V45__CreateAccRuleTagsTable.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V45__CreateAccRuleTagsTable.java new file mode 100644 index 00000000..331c740e --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V45__CreateAccRuleTagsTable.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V45__CreateAccRuleTagsTable extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V45__CreateAccRuleTagsTable + getInternalChecksum("V45__create_acc_rule_tags_table.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V45__create_acc_rule_tags_table.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V46__ExtendDatatablesApi.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V46__ExtendDatatablesApi.java new file mode 100644 index 00000000..dcebb713 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V46__ExtendDatatablesApi.java @@ -0,0 +1,44 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V46__ExtendDatatablesApi extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V46__ExtendDatatablesApi; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + { + dataContext.refreshSchemas(); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "configuration", "CREATE_DATATABLE", "DATATABLE", "CREATE", 0); + insert_m_permission(named, m_permission, "configuration", "CREATE_DATATABLE_CHECKER", "DATATABLE", "CREATE", 0); + insert_m_permission(named, m_permission, "configuration", "UPDATE_DATATABLE", "DATATABLE", "UPDATE", 0); + insert_m_permission(named, m_permission, "configuration", "UPDATE_DATATABLE_CHECKER", "DATATABLE", "UPDATE", 0); + insert_m_permission(named, m_permission, "configuration", "DELETE_DATATABLE", "DATATABLE", "DELETE", 0); + insert_m_permission(named, m_permission, "configuration", "DELETE_DATATABLE_CHECKER", "DATATABLE", "DELETE", 0); + } + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V47__StaffHierarchyLinkToUsers.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V47__StaffHierarchyLinkToUsers.java new file mode 100644 index 00000000..90eb6737 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V47__StaffHierarchyLinkToUsers.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V47__StaffHierarchyLinkToUsers extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V47__StaffHierarchyLinkToUsers + getInternalChecksum("V47__staff-hierarchy-link-to-users.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V47__staff-hierarchy-link-to-users.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V48__AddingS3Support.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V48__AddingS3Support.java new file mode 100644 index 00000000..4b0ff788 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V48__AddingS3Support.java @@ -0,0 +1,118 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.DeleteQuery; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.jdbc.query.SelectQuery; +import com.angkorteam.jdbc.query.UpdateQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.dao.EmptyResultDataAccessException; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; +import java.util.Map; + +public class V48__AddingS3Support extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V48__AddingS3Support + getInternalChecksum("V48_1__adding-S3-Support.xml", "V48_2__adding-S3-Support.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + SelectQuery selectQuery = null; + { + dataContext.refreshSchemas(); + Table c_configuration = dataContext.getDefaultSchema().getTableByName("c_configuration"); + insert_c_configuration(named, c_configuration, "amazon-S3", 0); + } + { + dataContext.refreshSchemas(); + updateLiquibase("V48_1__adding-S3-Support.xml"); + } + { + dataContext.refreshSchemas(); + Table c_external_service = dataContext.getDefaultSchema().getTableByName("c_external_service"); + insert_c_external_service(named, c_external_service, "s3_bucket_name"); + insert_c_external_service(named, c_external_service, "s3_access_key"); + insert_c_external_service(named, c_external_service, "s3_secret_key"); + } + { + dataContext.refreshSchemas(); + if (dataContext.getDefaultSchema().getTableByName("m_image") == null) { + updateLiquibase("V48_2__adding-S3-Support.xml"); + } + dataContext.refreshSchemas(); + updateLiquibase("V48_3__adding-S3-Support.xml"); + } + { + dataContext.refreshSchemas(); + Table m_client = dataContext.getDefaultSchema().getTableByName("m_client"); + Table m_image = dataContext.getDefaultSchema().getTableByName("m_image"); + long curr_image = 0; + long prev_image = 0; + selectQuery = new SelectQuery(m_client.getName()); + selectQuery.addField("COUNT(" + m_client.getColumnByName("id").getName() + ")"); + Long temp = named.queryForObject(selectQuery.toSQL(), selectQuery.toParam(), long.class); + long num_of_clients = temp == null ? 0 : temp; + long curr_client = 0; + for (int v_counter = 0; v_counter < num_of_clients; v_counter++) { + selectQuery = new SelectQuery(m_client.getName()); + selectQuery.addWhere("image_key IS NULL"); + selectQuery.setLimit(0L, 1L); + Map record = null; + try { + record = named.queryForMap(selectQuery.toSQL(), selectQuery.toParam()); + } catch (EmptyResultDataAccessException e) { + } + if (record != null) { + InsertQuery insertQuery = new InsertQuery(m_image.getName()); + insertQuery.addValue(m_image.getColumnByName("location").getName(), (String) record.get(m_client.getColumnByName("image_key").getName())); + insertQuery.addValue(m_image.getColumnByName("storage_type_enum").getName(), 1); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + selectQuery = new SelectQuery(m_image.getName()); + selectQuery.addField("MAX(" + m_image.getColumnByName("id").getName() + ")"); + temp = named.queryForObject(selectQuery.toSQL(), selectQuery.toParam(), long.class); + curr_image = temp == null ? 0 : temp; + + selectQuery = new SelectQuery(m_client.getName()); + selectQuery.addField(m_client.getColumnByName("id").getName()); + selectQuery.addWhere(m_client.getColumnByName("image_key").getName() + " IS NULL"); + selectQuery.setLimit(0L, 1L); + temp = named.queryForObject(selectQuery.toSQL(), selectQuery.toParam(), long.class); + curr_client = temp == null ? 0 : temp; + + if (prev_image != curr_image) { + UpdateQuery updateQuery = new UpdateQuery(m_client.getName()); + updateQuery.addValue(m_client.getColumnByName("image_id").getName(), curr_image); + updateQuery.addWhere(m_client.getColumnByName("id").getName() + " = :id", curr_client); + named.update(updateQuery.toSQL(), updateQuery.toParam()); + } + prev_image = curr_image; + } + DeleteQuery deleteQuery = new DeleteQuery(m_image.getName()); + deleteQuery.addWhere(m_image.getColumnByName("location").getName() + " IS NULL"); + named.update(deleteQuery.toSQL(), deleteQuery.toParam()); + } + } + + protected void insert_c_external_service(NamedParameterJdbcTemplate named, Table table, String name) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("name").getName(), name); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_c_configuration(NamedParameterJdbcTemplate named, Table table, String name, long enabled) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("name").getName(), name); + insertQuery.addValue(table.getColumnByName("enabled").getName(), enabled); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V49__TrackLoanChargePaymentTransactions.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V49__TrackLoanChargePaymentTransactions.java new file mode 100644 index 00000000..1fe35316 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V49__TrackLoanChargePaymentTransactions.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V49__TrackLoanChargePaymentTransactions extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V49__TrackLoanChargePaymentTransactions + getInternalChecksum("V49__track-loan-charge-payment-transactions.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V49__track-loan-charge-payment-transactions.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V4__MifosXCoreReportsUTF8.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V4__MifosXCoreReportsUTF8.java new file mode 100644 index 00000000..d22b42df --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V4__MifosXCoreReportsUTF8.java @@ -0,0 +1,291 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.jdbc.query.SelectQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; +import java.util.Map; + +public class V4__MifosXCoreReportsUTF8 extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V4__MifosXCoreReportsUTF8; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + { + dataContext.refreshSchemas(); + Table stretchy_report = dataContext.getDefaultSchema().getTableByName("stretchy_report"); + insert_stretchy_report(named, stretchy_report, 1, "Client Listing", "Table", null, "Client", "select \nconcat(repeat(\"..\", \n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, '.', '')) - 1))), ounder.`name`) as \"Office/Branch\",\n c.account_no as \"Client Account No.\", \nc.display_name as \"Name\", \n\nc.joined_date as \"Joined\", c.external_id as \"External Id\"\nfrom m_office o \njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, '%')\nand \n\nounder.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_client c on c.office_id = ounder.id\nwhere o.id = ${officeId}\nand c.is_deleted=0\n\n\norder by ounder.hierarchy, c.account_no", "Individual Client Report\n\nLists the small number of defined fields on the client table. Would expect to copy this \n\nreport and add any 'one to one' additional data for specific tenant needs.\n\nCan be run for any size MFI but you'd expect it only to be run within a branch for \n\nlarger ones. Depending on how many columns are displayed, there is probably is a limit of about 20/50k clients returned for html display (export to excel doesn't \n\nhave that client browser/memory impact).", 1, 1); + insert_stretchy_report(named, stretchy_report, 2, "Client Loans Listing", "Table", null, "Client", "select \nconcat(repeat(\"..\", \n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, '.', '')) - 1))), ounder.`name`) as \"Office/Branch\",\nc.account_no as \"Client \n\nAccount No.\", \nc.display_name as \"Name\", \nlo.display_name as \"Loan Officer\", l.account_no as \"Loan Account No.\", l.external_id as \"External Id\", \n\n\np.name as Loan, st.enum_message_property as \"Status\", \nf.`name` as Fund, purp.code_value as \"Loan Purpose\",\nifnull(cur.display_symbol, l.currency_code) as Currency, \nl.principal_amount,\n\n\nl.arrearstolerance_amount as \"Arrears Tolerance Amount\",\nl.number_of_repayments as \"Expected No. Repayments\",\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \nl.nominal_interest_rate_per_period as \"Nominal Interest Rate Per Period\",\n\nipf.enum_message_property as \"Interest Rate Frequency\n\n\",\nim.enum_message_property as \"Interest Method\",\nicp.enum_message_property as \"Interest Calculated in Period\",\nl.term_frequency as \"Term Frequency\",\n\n\ntf.enum_message_property as \"Term Frequency Period\",\nl.repay_every as \"Repayment Frequency\",\nrf.enum_message_property as \"Repayment Frequency Period\",\n\n\nam.enum_message_property as \"Amortization\",\n\nl.total_charges_due_at_disbursement_derived as \"Total Charges Due At Disbursement\",\n\ndate( \n\nl.submittedon_date) as Submitted, date(l.approvedon_date) Approved, l.expected_disbursedon_date As \"Expected Disbursal\",\ndate(l.expected_firstrepaymenton_date) as \n\n\"Expected First Repayment\", date(l.interest_calculated_from_date) as \"Interest Calculated From\" ,\ndate(l.disbursedon_date) as Disbursed, date\n\n(l.expected_maturedon_date) \"Expected Maturity\",\ndate(l.maturedon_date) as \"Matured On\", date(l.closedon_date) as Closed,\ndate(l.rejectedon_date) as \n\nRejected, date(l.rescheduledon_date) as Rescheduled, \ndate(l.withdrawnon_date) as Withdrawn, date(l.writtenoffon_date) \"Written Off\"\nfrom m_office o \njoin \n\nm_office ounder on ounder.hierarchy like concat(o.hierarchy, '%')\nand ounder.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_client c on \n\nc.office_id = ounder.id\nleft join m_loan l on l.client_id = c.id\nleft join m_staff lo on lo.id = l.loan_officer_id\nleft join m_product_loan p on p.id = \n\nl.product_id\nleft join m_fund f on f.id = l.fund_id\nleft join r_enum_value st on st.enum_name = \"loan_status_id\" and st.enum_id = l.loan_status_id\nleft join \n\nr_enum_value ipf on ipf.enum_name = \"interest_period_frequency_enum\" and ipf.enum_id = l.interest_period_frequency_enum\nleft join r_enum_value im on im.enum_name \n\n= \"interest_method_enum\" and im.enum_id = l.interest_method_enum\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = \n\nl.term_period_frequency_enum\nleft join r_enum_value icp on icp.enum_name = \"interest_calculated_in_period_enum\" and icp.enum_id = \n\nl.interest_calculated_in_period_enum\nleft join r_enum_value rf on rf.enum_name = \"repayment_period_frequency_enum\" and rf.enum_id = \n\nl.repayment_period_frequency_enum\nleft join r_enum_value am on am.enum_name = \"amortization_method_enum\" and am.enum_id = l.amortization_method_enum\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\n\nleft \n\njoin m_currency cur on cur.code = l.currency_code\nwhere o.id = ${officeId}\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\nand \n\n(l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \n\n\"${loanOfficerId}\")\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\norder by ounder.hierarchy, 2 , l.id", "Individual Client Report\n\nPretty \n\nwide report that lists the basic details of client loans. \n\nCan be run for any size MFI but you'd expect it only to be run within a branch for larger ones. \n\nThere is probably is a limit of about 20/50k clients returned for html display (export to excel doesn't have that client browser/memory impact).", 1, 1); + insert_stretchy_report(named, stretchy_report, 5, "Loans Awaiting Disbursal", "Table", null, "Loan", "SELECT \nconcat(repeat(\"..\", \n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, '.', '')) - 1))), ounder.`name`) as \"Office/Branch\",\nc.account_no as \"Client Account No\", c.display_name as \"Name\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \nf.`name` as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \nl.principal_amount as Principal, \nl.term_frequency as \"Term Frequency\",\n\n\ntf.enum_message_property as \"Term Frequency Period\",\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\",\ndate(l.approvedon_date) \"Approved\",\ndatediff(l.expected_disbursedon_date, curdate()) as \"Days to Disbursal\",\ndate(l.expected_disbursedon_date) \"Expected Disbursal\",\npurp.code_value as \"Loan Purpose\",\n lo.display_name as \"Loan Officer\"\nfrom m_office o \njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, '%')\nand ounder.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_client c on c.office_id = ounder.id\njoin m_loan l on l.client_id = c.id\njoin m_product_loan pl on pl.id = l.product_id\nleft join m_staff lo on lo.id = l.loan_officer_id\nleft join m_currency cur on cur.code = l.currency_code\nleft join m_fund f on f.id = l.fund_id\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\nwhere o.id = ${officeId}\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\nand l.loan_status_id = 200\norder by ounder.hierarchy, datediff(l.expected_disbursedon_date, curdate()), c.account_no", "Individual Client Report", 1, 1); + insert_stretchy_report(named, stretchy_report, 6, "Loans Awaiting Disbursal Summary", "Table", null, "Loan", "SELECT \nconcat(repeat(\"..\", \n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, '.', '')) - 1))), ounder.`name`) as \"Office/Branch\",\npl.`name` as \"Product\", \nifnull(cur.display_symbol, l.currency_code) as Currency, f.`name` as Fund,\nsum(l.principal_amount) as Principal\nfrom m_office o \njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, '%')\nand ounder.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_client c on c.office_id = ounder.id\njoin m_loan l on l.client_id = c.id\njoin m_product_loan pl on pl.id = l.product_id\nleft join m_staff lo on lo.id = l.loan_officer_id\nleft join m_currency cur on cur.code = l.currency_code\nleft join m_fund f on f.id = l.fund_id\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\nwhere o.id = ${officeId}\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\nand l.loan_status_id = 200\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`\norder by ounder.hierarchy, pl.`name`, l.currency_code, f.`name`", "Individual Client Report", 1, 1); + insert_stretchy_report(named, stretchy_report, 7, "Loans Awaiting Disbursal Summary by Month", "Table", null, "Loan", "SELECT \nconcat(repeat(\"..\", ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, '.', '')) - 1))), ounder.`name`) as \"Office/Branch\",\npl.`name` as \"Product\", \nifnull(cur.display_symbol, l.currency_code) as Currency, \nyear(l.expected_disbursedon_date) as \"Year\", \nmonthname(l.expected_disbursedon_date) as \"Month\",\nsum(l.principal_amount) as Principal\nfrom m_office o \njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, '%')\nand ounder.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_client c on c.office_id = ounder.id\njoin m_loan l on l.client_id = c.id\njoin m_product_loan pl on pl.id = l.product_id\nleft join m_staff lo on lo.id = l.loan_officer_id\nleft join m_currency cur on cur.code = l.currency_code\nleft join m_fund f on f.id = l.fund_id\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\nwhere o.id = ${officeId}\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\nand l.loan_status_id = 200\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)\norder by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)", "Individual Client Report", 1, 1); + insert_stretchy_report(named, stretchy_report, 8, "Loans Pending Approval", "Table", null, "Loan", "SELECT \nconcat(repeat(\"..\", \n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, '.', '')) - 1))), ounder.`name`) as \"Office/Branch\",\nc.account_no as \"Client Account No.\", c.display_name as \"Client Name\", \nifnull(cur.display_symbol, l.currency_code) as Currency, pl.`name` as \"Product\", \nl.account_no as \"Loan Account No.\", \nl.principal_amount as \"Loan Amount\", \nl.term_frequency as \"Term Frequency\",\n\n\ntf.enum_message_property as \"Term Frequency Period\",\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \ndatediff(curdate(), l.submittedon_date) \"Days Pending Approval\", \npurp.code_value as \"Loan Purpose\",\nlo.display_name as \"Loan Officer\"\nfrom m_office o \njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, '%')\nand ounder.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_client c on c.office_id = ounder.id\njoin m_loan l on l.client_id = c.id\njoin m_product_loan pl on pl.id = l.product_id\nleft join m_staff lo on lo.id = l.loan_officer_id\nleft join m_currency cur on cur.code = l.currency_code\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\nwhere o.id = ${officeId}\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\nand l.loan_status_id = 100 /*Submitted and awaiting approval */\norder by ounder.hierarchy, l.submittedon_date, l.account_no", "Individual Client Report", 1, 1); + insert_stretchy_report(named, stretchy_report, 11, "Active Loans - Summary", "Table", null, "Loan", "select concat(repeat(\"..\", \n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, '.', '')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\n x.client_count as \"No. of Clients\", x.active_loan_count as \"No. Active Loans\", x. loans_in_arrears_count as \"No. of Loans in Arrears\",\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\n\n\t(case\n\twhen ${parType} = 1 then\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\n\twhen ${parType} = 2 then\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\n\twhen ${parType} = 3 then\n cast(round(((x.principal_overdue + x.interest_overdue + x.fees_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding + x.fees_outstanding), 2) as char)\n\twhen ${parType} = 4 then\n cast(round(((x.principal_overdue + x.interest_overdue + x.fees_overdue + x.penalties_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding + x.fees_outstanding + x.penalties_overdue), 2) as char)\n\telse \"invalid PAR Type\"\n\tend) as \"Portfolio at Risk %\"\n from m_office mo\njoin \n(select ounder.id as branch,\nifnull(cur.display_symbol, l.currency_code) as currency,\ncount(distinct(c.id)) as client_count, \ncount(distinct(l.id)) as active_loan_count,\ncount(distinct(if(laa.loan_id is not null, l.id, null) )) as loans_in_arrears_count,\n\nsum(l.principal_disbursed_derived) as principal,\nsum(l.principal_repaid_derived) as principal_repaid,\nsum(l.principal_outstanding_derived) as principal_outstanding,\nsum(laa.principal_overdue_derived) as principal_overdue,\n\nsum(l.interest_charged_derived) as interest,\nsum(l.interest_repaid_derived) as interest_repaid,\nsum(l.interest_outstanding_derived) as interest_outstanding,\nsum(laa.interest_overdue_derived) as interest_overdue,\n\nsum(l.fee_charges_charged_derived) as fees,\nsum(l.fee_charges_repaid_derived) as fees_repaid,\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\nsum(laa.fee_charges_overdue_derived) as fees_overdue,\n\nsum(l.penalty_charges_charged_derived) as penalties,\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\nsum(laa.penalty_charges_overdue_derived) as penalties_overdue\n\nfrom m_office o \njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, '%')\nand ounder.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_client c on c.office_id = ounder.id\njoin m_loan l on l.client_id = c.id\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\nleft join m_currency cur on cur.code = l.currency_code\n\nwhere o.id = ${officeId}\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\nand l.loan_status_id = 300\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\norder by mo.hierarchy, x.Currency", null, 1, 1); + insert_stretchy_report(named, stretchy_report, 12, "Active Loans - Details", "Table", null, "Loan", "select concat(repeat(\"..\", \n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, '.', '')) - 1))), ounder.`name`) as \"Office/Branch\",\nifnull(cur.display_symbol, l.currency_code) as Currency,\nlo.display_name as \"Loan Officer\", \nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \nf.`name` as Fund, \nl.principal_amount as \"Loan Amount\", \nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \ndate(l.disbursedon_date) as \"Disbursed Date\", \ndate(l.expected_maturedon_date) as \"Expected Matured On\",\n\nl.principal_repaid_derived as \"Principal Repaid\",\nl.principal_outstanding_derived as \"Principal Outstanding\",\nlaa.principal_overdue_derived as \"Principal Overdue\",\n\nl.interest_repaid_derived as \"Interest Repaid\",\nl.interest_outstanding_derived as \"Interest Outstanding\",\nlaa.interest_overdue_derived as \"Interest Overdue\",\n\nl.fee_charges_repaid_derived as \"Fees Repaid\",\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\n\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\npenalty_charges_overdue_derived as \"Penalties Overdue\"\n\nfrom m_office o \njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, '%')\nand ounder.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_client c on c.office_id = ounder.id\njoin m_loan l on l.client_id = c.id\njoin m_product_loan pl on pl.id = l.product_id\nleft join m_staff lo on lo.id = l.loan_officer_id\nleft join m_currency cur on cur.code = l.currency_code\nleft join m_fund f on f.id = l.fund_id\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\nwhere o.id = ${officeId}\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\nand l.loan_status_id = 300\ngroup by l.id\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no", "Individual Client \n\nReport", 1, 1); + insert_stretchy_report(named, stretchy_report, 13, "Obligation Met Loans Details", "Table", null, "Loan", "select concat(repeat(\"..\", \n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, '.', '')) - 1))), ounder.`name`) as \"Office/Branch\",\nifnull(cur.display_symbol, l.currency_code) as Currency,\nc.account_no as \"Client Account No.\", c.display_name as \"Client\",\nl.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \nf.`name` as Fund, \nl.principal_amount as \"Loan Amount\", \nl.total_repayment_derived as \"Total Repaid\", \nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \ndate(l.disbursedon_date) as \"Disbursed\", \ndate(l.closedon_date) as \"Closed\",\n\nl.principal_repaid_derived as \"Principal Repaid\",\nl.interest_repaid_derived as \"Interest Repaid\",\nl.fee_charges_repaid_derived as \"Fees Repaid\",\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\nlo.display_name as \"Loan Officer\"\n\nfrom m_office o \njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, '%')\nand ounder.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_client c on c.office_id = ounder.id\njoin m_loan l on l.client_id = c.id\njoin m_product_loan pl on pl.id = l.product_id\nleft join m_staff lo on lo.id = l.loan_officer_id\nleft join m_currency cur on cur.code = l.currency_code\nleft join m_fund f on f.id = l.fund_id\nwhere o.id = ${officeId}\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\nand (case\n\twhen ${obligDateType} = 1 then\n l.closedon_date between '${startDate}' and '${endDate}'\n\twhen ${obligDateType} = 2 then\n l.disbursedon_date between '${startDate}' and '${endDate}'\n\telse 1 = 1\n\tend)\nand l.loan_status_id = 600\ngroup by l.id\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no", "Individual Client \n\nReport", 1, 1); + insert_stretchy_report(named, stretchy_report, 14, "Obligation Met Loans Summary", "Table", null, "Loan", "select concat(repeat(\"..\", \n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, '.', '')) - 1))), ounder.`name`) as \"Office/Branch\",\nifnull(cur.display_symbol, l.currency_code) as Currency,\ncount(distinct(c.id)) as \"No. of Clients\",\ncount(distinct(l.id)) as \"No. of Loans\",\nsum(l.principal_amount) as \"Total Loan Amount\", \nsum(l.principal_repaid_derived) as \"Total Principal Repaid\",\nsum(l.interest_repaid_derived) as \"Total Interest Repaid\",\nsum(l.fee_charges_repaid_derived) as \"Total Fees Repaid\",\nsum(l.penalty_charges_repaid_derived) as \"Total Penalties Repaid\",\nsum(l.interest_waived_derived) as \"Total Interest Waived\",\nsum(l.fee_charges_waived_derived) as \"Total Fees Waived\",\nsum(l.penalty_charges_waived_derived) as \"Total Penalties Waived\"\n\nfrom m_office o \njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, '%')\nand ounder.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_client c on c.office_id = ounder.id\njoin m_loan l on l.client_id = c.id\njoin m_product_loan pl on pl.id = l.product_id\nleft join m_staff lo on lo.id = l.loan_officer_id\nleft join m_currency cur on cur.code = l.currency_code\nleft join m_fund f on f.id = l.fund_id\nwhere o.id = ${officeId}\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\nand (case\n\twhen ${obligDateType} = 1 then\n l.closedon_date between '${startDate}' and '${endDate}'\n\twhen ${obligDateType} = 2 then\n l.disbursedon_date between '${startDate}' and '${endDate}'\n\telse 1 = 1\n\tend)\nand l.loan_status_id = 600\ngroup by ounder.hierarchy, l.currency_code\norder by ounder.hierarchy, l.currency_code", "Individual Client \n\nReport", 1, 1); + insert_stretchy_report(named, stretchy_report, 15, "Portfolio at Risk", "Table", null, "Loan", "select x.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\n\n\t(case\n\twhen ${parType} = 1 then\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\n\twhen ${parType} = 2 then\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\n\twhen ${parType} = 3 then\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue` + x.`Fees Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding` + x.`Fees Outstanding`), 2) as char)\n\twhen ${parType} = 4 then\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue` + x.`Fees Overdue` + x.`Penalties Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding` + x.`Fees Outstanding` + x.`Penalties Overdue`), 2) as char)\n\telse \"invalid PAR Type\"\n\tend) as \"Portfolio at Risk %\"\n from \n(select ifnull(cur.display_symbol, l.currency_code) as Currency, \nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\n\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\n\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\n\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\n\nfrom m_office o \njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, '%')\nand ounder.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_client c on c.office_id = ounder.id\njoin m_loan l on l.client_id = c.id\nleft join m_staff lo on lo.id = l.loan_officer_id\nleft join m_currency cur on cur.code = l.currency_code\nleft join m_fund f on f.id = l.fund_id\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\nleft join m_product_loan p on p.id = l.product_id\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\nwhere o.id = ${officeId}\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\nand l.loan_status_id = 300\ngroup by l.currency_code\norder by l.currency_code) x", "Covers all loans.\n\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)", 1, 1); + insert_stretchy_report(named, stretchy_report, 16, "Portfolio at Risk by Branch", "Table", null, "Loan", "select concat(repeat(\"..\", \n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, '.', '')) - 1))), mo.`name`) as \"Office/Branch\",\nx.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\n\n\t(case\n\twhen ${parType} = 1 then\n cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\n\twhen ${parType} = 2 then\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\n\twhen ${parType} = 3 then\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue` + x.`Fees Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding` + x.`Fees Outstanding`), 2) as char)\n\twhen ${parType} = 4 then\n cast(round(((x.`Principal Overdue` + x.`Interest Overdue` + x.`Fees Overdue` + x.`Penalties Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding` + x.`Fees Outstanding` + x.`Penalties Overdue`), 2) as char)\n\telse \"invalid PAR Type\"\n\tend) as \"Portfolio at Risk %\"\n from m_office mo\njoin \n(select ounder.id as \"branch\", ifnull(cur.display_symbol, l.currency_code) as Currency, \n\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\n\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\n\nsum(l.fee_charges_outstanding_derived) as \"Fees Outstanding\",\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\n\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\n\nfrom m_office o \njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, '%')\nand ounder.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_client c on c.office_id = ounder.id\njoin m_loan l on l.client_id = c.id\nleft join m_staff lo on lo.id = l.loan_officer_id\nleft join m_currency cur on cur.code = l.currency_code\nleft join m_fund f on f.id = l.fund_id\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\nleft join m_product_loan p on p.id = l.product_id\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\nwhere o.id = ${officeId}\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\nand l.loan_status_id = 300\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\norder by mo.hierarchy, x.Currency", "Covers all loans.\n\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)", 1, 1); + insert_stretchy_report(named, stretchy_report, 20, "Funds Disbursed Between Dates Summary", "Table", null, "Fund", "select ifnull(f.`name`, '-') as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, \nround(sum(l.principal_amount), 4) as disbursed_amount\nfrom m_office ounder \njoin m_client c on c.office_id = ounder.id\njoin m_loan l on l.client_id = c.id\njoin m_currency cur on cur.`code` = l.currency_code\nleft join m_fund f on f.id = l.fund_id\nwhere disbursedon_date between '${startDate}' and '${endDate}'\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\nand (l.currency_code = '${currencyId}' or '-1' = '${currencyId}')\nand ounder.hierarchy like concat('${currentUserHierarchy}', '%')\ngroup by ifnull(f.`name`, '-') , ifnull(cur.display_symbol, l.currency_code)\norder by ifnull(f.`name`, '-') , ifnull(cur.display_symbol, l.currency_code)", null, 1, 1); + insert_stretchy_report(named, stretchy_report, 21, "Funds Disbursed Between Dates Summary by Office", "Table", null, "Fund", "select \nconcat(repeat(\"..\", \n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, '.', '')) - 1))), ounder.`name`) as \"Office/Branch\",\n \n\nifnull(f.`name`, '-') as Fund, ifnull(cur.display_symbol, l.currency_code) as Currency, round(sum(l.principal_amount), 4) as disbursed_amount\nfrom m_office o\n\n\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, '%')\nand ounder.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_client c \n\non c.office_id = ounder.id\njoin m_loan l on l.client_id = c.id\njoin m_currency cur on cur.`code` = l.currency_code\nleft join m_fund f on f.id = l.fund_id\n\n\nwhere disbursedon_date between '${startDate}' and '${endDate}'\nand o.id = ${officeId}\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\nand \n\n(l.currency_code = '${currencyId}' or '-1' = '${currencyId}')\ngroup by ounder.`name`, ifnull(f.`name`, '-') , ifnull(cur.display_symbol, \n\nl.currency_code)\norder by ounder.`name`, ifnull(f.`name`, '-') , ifnull(cur.display_symbol, l.currency_code)", null, 1, 1); + insert_stretchy_report(named, stretchy_report, 48, "Balance Sheet", "Pentaho", null, "Accounting", null, "Balance Sheet", 1, 1); + insert_stretchy_report(named, stretchy_report, 49, "Income Statement", "Pentaho", null, "Accounting", null, "Profit and Loss Statement", 1, 1); + insert_stretchy_report(named, stretchy_report, 50, "Trial Balance", "Pentaho", null, "Accounting", null, "Trial Balance Report", 1, 1); + insert_stretchy_report(named, stretchy_report, 51, "Written-Off Loans", "Table", null, "Loan", "SELECT \nconcat(repeat(\"..\", \n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, '.', '')) - 1))), ounder.`name`) as \"Office/Branch\",\nifnull(cur.display_symbol, ml.currency_code) as Currency, \nc.account_no as \"Client Account No.\",\nc.display_name AS 'Client Name',\nml.account_no AS 'Loan Account No.',\nmpl.name AS 'Product Name',\nml.disbursedon_date AS 'Disbursed Date',\nlt.transaction_date AS 'Written Off date',\nml.principal_amount as \"Loan Amount\",\nifnull(lt.principal_portion_derived, 0) AS 'Written-Off Principal',\nifnull(lt.interest_portion_derived, 0) AS 'Written-Off Interest',\nifnull(lt.fee_charges_portion_derived,0) AS 'Written-Off Fees',\nifnull(lt.penalty_charges_portion_derived,0) AS 'Written-Off Penalties',\nn.note AS 'Reason For Write-Off',\nIFNULL(ms.display_name,'-') AS 'Loan Officer Name'\nFROM m_office o\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, '%')\nAND ounder.hierarchy like CONCAT('${currentUserHierarchy}', '%')\nJOIN m_client c ON c.office_id = ounder.id\nJOIN m_loan ml ON ml.client_id = c.id\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\nWHERE lt.transaction_type_enum = 6 /*write-off */\nAND lt.is_reversed is false \nAND ml.loan_status_id=601\nAND o.id=${officeId}\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\nAND lt.transaction_date BETWEEN '${startDate}' AND '${endDate}'\nAND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\") \nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no", "Individual Lending Report. Written Off Loans", 1, 1); + insert_stretchy_report(named, stretchy_report, 52, "Aging Detail", "Table", null, "Loan", "SELECT \nconcat(repeat(\"..\", \n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, '.', '')) - 1))), ounder.`name`) as \"Office/Branch\",\nifnull(cur.display_symbol, ml.currency_code) as Currency, \nmc.account_no as \"Client Account No.\",\n \tmc.display_name AS \"Client Name\",\n \tml.account_no AS \"Account Number\",\n \tml.principal_amount AS \"Loan Amount\",\n ml.principal_disbursed_derived AS \"Original Principal\",\n ml.interest_charged_derived AS \"Original Interest\",\n ml.principal_repaid_derived AS \"Principal Paid\",\n ml.interest_repaid_derived AS \"Interest Paid\",\n laa.principal_overdue_derived AS \"Principal Overdue\",\n laa.interest_overdue_derived AS \"Interest Overdue\",\nDATEDIFF(CURDATE(), laa.overdue_since_date_derived) as \"Days in Arrears\",\n\n \tIF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<7, '<1', \n \tIF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<8, ' 1', \n \tIF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<15, '2', \n \tIF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<22, ' 3', \n \tIF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<29, ' 4', \n \tIF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<36, ' 5', \n \tIF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<43, ' 6', \n \tIF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<50, ' 7', \n \tIF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<57, ' 8', \n \tIF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<64, ' 9', \n \tIF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<71, '10', \n \tIF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<78, '11', \n \tIF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<85, '12', '12+')))))))))))) )AS \"Weeks In Arrears Band\",\n\n\t\tIF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<31, '0 - 30', \n\t\tIF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<61, '30 - 60', \n\t\tIF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<91, '60 - 90', \n\t\tIF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<181, '90 - 180', \n\t\tIF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<361, '180 - 360', \n\t\t\t\t '> 360'))))) AS \"Days in Arrears Band\"\n\n\tFROM m_office mo \n JOIN m_office ounder ON ounder.hierarchy like concat(mo.hierarchy, '%')\n\t AND ounder.hierarchy like CONCAT('${currentUserHierarchy}', '%')\n INNER JOIN m_client mc ON mc.office_id=ounder.id\n\t INNER JOIN m_loan ml ON ml.client_id = mc.id\n\t INNER JOIN r_enum_value rev ON rev.enum_id=ml.loan_status_id\n INNER JOIN m_loan_arrears_aging laa ON laa.loan_id=ml.id\n left join m_currency cur on cur.code = ml.currency_code\n\tWHERE ml.loan_status_id=300\n AND mo.id=${officeId}\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no", "Loan arrears aging (Weeks)", 1, 1); + insert_stretchy_report(named, stretchy_report, 53, "Aging Summary (Arrears in Weeks)", "Table", null, "Loan", "SELECT \n IFNULL(periods.currencyName, periods.currency) as currency, \n periods.period_no 'Weeks In Arrears (Up To)', \n IFNULL(ars.loanId, 0) 'No Of Loans', \n IFNULL(ars.principal,0.0) 'Original Principal', \n IFNULL(ars.interest,0.0) 'Original Interest', \n IFNULL(ars.prinPaid,0.0) 'Principal Paid', \n IFNULL(ars.intPaid,0.0) 'Interest Paid', \n IFNULL(ars.prinOverdue,0.0) 'Principal Overdue', \n IFNULL(ars.intOverdue,0.0)'Interest Overdue'\nFROM \n\t/* full table of aging periods/currencies used combo to ensure each line represented */\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\n\t(SELECT 'On Schedule' period_no,1 pid UNION\n\t\tSELECT '1',2 UNION\n\t\tSELECT '2',3 UNION\n\t\tSELECT '3',4 UNION\n\t\tSELECT '4',5 UNION\n\t\tSELECT '5',6 UNION\n\t\tSELECT '6',7 UNION\n\t\tSELECT '7',8 UNION\n\t\tSELECT '8',9 UNION\n\t\tSELECT '9',10 UNION\n\t\tSELECT '10',11 UNION\n\t\tSELECT '11',12 UNION\n\t\tSELECT '12',13 UNION\n\t\tSELECT '12+',14) pers,\n\t(SELECT distinctrow moc.code, moc.name\n \tFROM m_office mo2\n \tINNER JOIN m_office ounder2 ON ounder2.hierarchy \n\t\t\t\tLIKE CONCAT(mo2.hierarchy, '%')\nAND ounder2.hierarchy like CONCAT('${currentUserHierarchy}', '%')\n \tINNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\n \tINNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\n\tINNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\n\tWHERE ml2.loan_status_id=300 /* active */\n\tAND mo2.id=${officeId}\nAND (ml2.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")) curs) periods\n\n\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\n(SELECT \n \tz.currency, z.arrPeriod, \n\tCOUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \n\tSUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \n\tSUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\nFROM\n\t/*derived table just used to get arrPeriod value (was much slower to\n\tduplicate calc of minOverdueDate in inner query)\nmight not be now with derived fields but didn’t check */\n\t(SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\n\t\tIF(DATEDIFF(CURDATE(), minOverdueDate)<1, 'On Schedule', \n\t\tIF(DATEDIFF(CURDATE(), minOverdueDate)<8, '1', \n\t\tIF(DATEDIFF(CURDATE(), minOverdueDate)<15, '2', \n\t\tIF(DATEDIFF(CURDATE(), minOverdueDate)<22, '3', \n\t\tIF(DATEDIFF(CURDATE(), minOverdueDate)<29, '4', \n\t\tIF(DATEDIFF(CURDATE(), minOverdueDate)<36, '5', \n\t\tIF(DATEDIFF(CURDATE(), minOverdueDate)<43, '6', \n\t\tIF(DATEDIFF(CURDATE(), minOverdueDate)<50, '7', \n\t\tIF(DATEDIFF(CURDATE(), minOverdueDate)<57, '8', \n\t\tIF(DATEDIFF(CURDATE(), minOverdueDate)<64, '9', \n\t\tIF(DATEDIFF(CURDATE(), minOverdueDate)<71, '10', \n\t\tIF(DATEDIFF(CURDATE(), minOverdueDate)<78, '11', \n\t\tIF(DATEDIFF(CURDATE(), minOverdueDate)<85, '12',\n\t\t\t\t '12+'))))))))))))) AS arrPeriod\n\n\tFROM /* get the individual loan details */\n\t\t(SELECT ml.id AS loanId, ml.currency_code as currency,\n \t\t\tml.principal_disbursed_derived as principal, \n\t\t\t ml.interest_charged_derived as interest, \n \t\t\tml.principal_repaid_derived as prinPaid, \n\t\t\t ml.interest_repaid_derived intPaid,\n\n\t\t\t laa.principal_overdue_derived as prinOverdue,\n\t\t\t laa.interest_overdue_derived as intOverdue,\n\n\t\t\t IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\n\t\t\t \n \t\tFROM m_office mo\n \t\tINNER JOIN m_office ounder ON ounder.hierarchy \n\t\t\t\tLIKE CONCAT(mo.hierarchy, '%')\nAND ounder.hierarchy like CONCAT('${currentUserHierarchy}', '%')\n \t\tINNER JOIN m_client mc ON mc.office_id=ounder.id\n \t\tINNER JOIN m_loan ml ON ml.client_id = mc.id\n\t\t LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\n\t\tWHERE ml.loan_status_id=300 /* active */\n \t\tAND mo.id=${officeId}\n AND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\n \t\tGROUP BY ml.id) x\n\t) z \nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\nORDER BY periods.currency, periods.pid", "Loan amount in arrears by branch", 1, 1); + insert_stretchy_report(named, stretchy_report, 54, "Rescheduled Loans", "Table", null, "Loan", "SELECT \nconcat(repeat(\"..\", \n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, '.', '')) - 1))), ounder.`name`) as \"Office/Branch\",\nifnull(cur.display_symbol, ml.currency_code) as Currency, \nc.account_no as \"Client Account No.\",\nc.display_name AS 'Client Name',\nml.account_no AS 'Loan Account No.',\nmpl.name AS 'Product Name',\nml.disbursedon_date AS 'Disbursed Date',\nlt.transaction_date AS 'Written Off date',\nml.principal_amount as \"Loan Amount\",\nifnull(lt.principal_portion_derived, 0) AS 'Rescheduled Principal',\nifnull(lt.interest_portion_derived, 0) AS 'Rescheduled Interest',\nifnull(lt.fee_charges_portion_derived,0) AS 'Rescheduled Fees',\nifnull(lt.penalty_charges_portion_derived,0) AS 'Rescheduled Penalties',\nn.note AS 'Reason For Rescheduling',\nIFNULL(ms.display_name,'-') AS 'Loan Officer Name'\nFROM m_office o\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, '%')\nAND ounder.hierarchy like CONCAT('${currentUserHierarchy}', '%')\nJOIN m_client c ON c.office_id = ounder.id\nJOIN m_loan ml ON ml.client_id = c.id\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\nWHERE lt.transaction_type_enum = 7 /*marked for rescheduling */\nAND lt.is_reversed is false \nAND ml.loan_status_id=602\nAND o.id=${officeId}\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\nAND lt.transaction_date BETWEEN '${startDate}' AND '${endDate}'\nAND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no", "Individual Lending Report. Rescheduled Loans. The ability to reschedule (or mark that you have rescheduled the loan elsewhere) is a legacy of the older Mifos product. Needed for migration.", 1, 1); + insert_stretchy_report(named, stretchy_report, 55, "Active Loans Passed Final Maturity", "Table", null, "Loan", "select concat(repeat(\"..\", \n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, '.', '')) - 1))), ounder.`name`) as \"Office/Branch\",\nifnull(cur.display_symbol, l.currency_code) as Currency,\nlo.display_name as \"Loan Officer\", \nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \nf.`name` as Fund, \nl.principal_amount as \"Loan Amount\", \nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \ndate(l.disbursedon_date) as \"Disbursed Date\", \ndate(l.expected_maturedon_date) as \"Expected Matured On\",\n\nl.principal_repaid_derived as \"Principal Repaid\",\nl.principal_outstanding_derived as \"Principal Outstanding\",\nlaa.principal_overdue_derived as \"Principal Overdue\",\n\nl.interest_repaid_derived as \"Interest Repaid\",\nl.interest_outstanding_derived as \"Interest Outstanding\",\nlaa.interest_overdue_derived as \"Interest Overdue\",\n\nl.fee_charges_repaid_derived as \"Fees Repaid\",\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\n\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\n\nfrom m_office o \njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, '%')\nand ounder.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_client c on c.office_id = ounder.id\njoin m_loan l on l.client_id = c.id\njoin m_product_loan pl on pl.id = l.product_id\nleft join m_staff lo on lo.id = l.loan_officer_id\nleft join m_currency cur on cur.code = l.currency_code\nleft join m_fund f on f.id = l.fund_id\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\nwhere o.id = ${officeId}\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\nand l.loan_status_id = 300\nand l.expected_maturedon_date < curdate()\ngroup by l.id\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no", "Individual Client \n\nReport", 1, 1); + insert_stretchy_report(named, stretchy_report, 56, "Active Loans Passed Final Maturity Summary", "Table", null, "Loan", "select concat(repeat(\"..\", \n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, '.', '')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\n x.client_count as \"No. of Clients\", x.active_loan_count as \"No. Active Loans\", x. arrears_loan_count as \"No. of Loans in Arrears\",\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\n\n\t(case\n\twhen ${parType} = 1 then\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\n\twhen ${parType} = 2 then\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\n\twhen ${parType} = 3 then\n cast(round(((x.principal_overdue + x.interest_overdue + x.fees_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding + x.fees_outstanding), 2) as char)\n\twhen ${parType} = 4 then\n cast(round(((x.principal_overdue + x.interest_overdue + x.fees_overdue + x.penalties_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding + x.fees_outstanding + x.penalties_overdue), 2) as char)\n\telse \"invalid PAR Type\"\n\tend) as \"Portfolio at Risk %\"\n from m_office mo\njoin \n(select ounder.id as branch,\nifnull(cur.display_symbol, l.currency_code) as currency,\ncount(distinct(c.id)) as client_count, \ncount(distinct(l.id)) as active_loan_count,\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\n\nsum(l.principal_disbursed_derived) as principal,\nsum(l.principal_repaid_derived) as principal_repaid,\nsum(l.principal_outstanding_derived) as principal_outstanding,\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\n\nsum(l.interest_charged_derived) as interest,\nsum(l.interest_repaid_derived) as interest_repaid,\nsum(l.interest_outstanding_derived) as interest_outstanding,\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\n\nsum(l.fee_charges_charged_derived) as fees,\nsum(l.fee_charges_repaid_derived) as fees_repaid,\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\n\nsum(l.penalty_charges_charged_derived) as penalties,\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\n\nfrom m_office o \njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, '%')\nand ounder.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_client c on c.office_id = ounder.id\njoin m_loan l on l.client_id = c.id\nleft join m_currency cur on cur.code = l.currency_code\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\n\nwhere o.id = ${officeId}\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\nand l.loan_status_id = 300\nand l.expected_maturedon_date < curdate()\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\norder by mo.hierarchy, x.Currency", null, 1, 1); + insert_stretchy_report(named, stretchy_report, 57, "Active Loans in last installment", "Table", null, "Loan", "select concat(repeat(\"..\", \n ((LENGTH(lastInstallment.`hierarchy`) - LENGTH(REPLACE(lastInstallment.`hierarchy`, '.', '')) - 1))), lastInstallment.branch) as \"Office/Branch\",\nlastInstallment.Currency,\nlastInstallment.`Loan Officer`, \nlastInstallment.`Client Account No`, lastInstallment.`Client`, \nlastInstallment.`Loan Account No`, lastInstallment.`Product`, \nlastInstallment.`Fund`, lastInstallment.`Loan Amount`, \nlastInstallment.`Annual Nominal Interest Rate`, \nlastInstallment.`Disbursed`, lastInstallment.`Expected Matured On` ,\n\nl.principal_repaid_derived as \"Principal Repaid\",\nl.principal_outstanding_derived as \"Principal Outstanding\",\nlaa.principal_overdue_derived as \"Principal Overdue\",\n\nl.interest_repaid_derived as \"Interest Repaid\",\nl.interest_outstanding_derived as \"Interest Outstanding\",\nlaa.interest_overdue_derived as \"Interest Overdue\",\n\nl.fee_charges_repaid_derived as \"Fees Repaid\",\nl.fee_charges_outstanding_derived as \"Fees Outstanding\",\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\n\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\n\nfrom \n(select l.id as loanId, l.number_of_repayments, min(r.installment), \nounder.id, ounder.hierarchy, ounder.`name` as branch, \nifnull(cur.display_symbol, l.currency_code) as Currency,\nlo.display_name as \"Loan Officer\", c.account_no as \"Client Account No\",\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\nfrom m_office o \njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, '%')\nand ounder.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_client c on c.office_id = ounder.id\njoin m_loan l on l.client_id = c.id\njoin m_product_loan pl on pl.id = l.product_id\nleft join m_staff lo on lo.id = l.loan_officer_id\nleft join m_currency cur on cur.code = l.currency_code\nleft join m_fund f on f.id = l.fund_id\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\nwhere o.id = ${officeId}\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\nand l.loan_status_id = 300\nand r.completed_derived is false\nand r.duedate >= curdate()\ngroup by l.id\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\njoin m_loan l on l.id = lastInstallment.loanId\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\norder by lastInstallment.hierarchy, lastInstallment.Currency, lastInstallment.`Client Account No`, lastInstallment.`Loan Account No`", "Individual Client \n\nReport", 1, 1); + insert_stretchy_report(named, stretchy_report, 58, "Active Loans in last installment Summary", "Table", null, "Loan", "select concat(repeat(\"..\", \n ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, '.', '')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\n x.client_count as \"No. of Clients\", x.active_loan_count as \"No. Active Loans\", x. arrears_loan_count as \"No. of Loans in Arrears\",\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\n\n\t(case\n\twhen ${parType} = 1 then\n cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\n\twhen ${parType} = 2 then\n cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\n\twhen ${parType} = 3 then\n cast(round(((x.principal_overdue + x.interest_overdue + x.fees_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding + x.fees_outstanding), 2) as char)\n\twhen ${parType} = 4 then\n cast(round(((x.principal_overdue + x.interest_overdue + x.fees_overdue + x.penalties_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding + x.fees_outstanding + x.penalties_overdue), 2) as char)\n\telse \"invalid PAR Type\"\n\tend) as \"Portfolio at Risk %\"\n from m_office mo\njoin \n(select lastInstallment.branchId as branchId,\nlastInstallment.Currency,\ncount(distinct(lastInstallment.clientId)) as client_count, \ncount(distinct(lastInstallment.loanId)) as active_loan_count,\ncount(distinct(laa.loan_id) ) as arrears_loan_count,\n\nsum(l.principal_disbursed_derived) as principal,\nsum(l.principal_repaid_derived) as principal_repaid,\nsum(l.principal_outstanding_derived) as principal_outstanding,\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\n\nsum(l.interest_charged_derived) as interest,\nsum(l.interest_repaid_derived) as interest_repaid,\nsum(l.interest_outstanding_derived) as interest_outstanding,\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\n\nsum(l.fee_charges_charged_derived) as fees,\nsum(l.fee_charges_repaid_derived) as fees_repaid,\nsum(l.fee_charges_outstanding_derived) as fees_outstanding,\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\n\nsum(l.penalty_charges_charged_derived) as penalties,\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\n\nfrom \n(select l.id as loanId, l.number_of_repayments, min(r.installment), \nounder.id as branchId, ounder.hierarchy, ounder.`name` as branch, \nifnull(cur.display_symbol, l.currency_code) as Currency,\nlo.display_name as \"Loan Officer\", c.id as clientId, c.account_no as \"Client Account No\",\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \nf.`name` as Fund, l.principal_amount as \"Loan Amount\", \nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\nfrom m_office o \njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, '%')\nand ounder.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_client c on c.office_id = ounder.id\njoin m_loan l on l.client_id = c.id\njoin m_product_loan pl on pl.id = l.product_id\nleft join m_staff lo on lo.id = l.loan_officer_id\nleft join m_currency cur on cur.code = l.currency_code\nleft join m_fund f on f.id = l.fund_id\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\nwhere o.id = ${officeId}\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\nand l.loan_status_id = 300\nand r.completed_derived is false\nand r.duedate >= curdate()\ngroup by l.id\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\njoin m_loan l on l.id = lastInstallment.loanId\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\ngroup by lastInstallment.branchId) x on x.branchId = mo.id\norder by mo.hierarchy, x.Currency", "Individual Client \n\nReport", 1, 1); + insert_stretchy_report(named, stretchy_report, 59, "Active Loans by Disbursal Period", "Table", null, "Loan", "select concat(repeat(\"..\", \n ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, '.', '')) - 1))), ounder.`name`) as \"Office/Branch\",\nifnull(cur.display_symbol, l.currency_code) as Currency,\nc.account_no as \"Client Account No\", c.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \nf.`name` as Fund, \nl.principal_amount as \"Loan Principal Amount\", \nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \ndate(l.disbursedon_date) as \"Disbursed Date\", \n\nl.total_expected_repayment_derived as \"Total Loan (P+I+F+Pen)\",\nl.total_repayment_derived as \"Total Repaid (P+I+F+Pen)\",\nlo.display_name as \"Loan Officer\"\n\nfrom m_office o \njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, '%')\nand ounder.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_client c on c.office_id = ounder.id\njoin m_loan l on l.client_id = c.id\njoin m_product_loan pl on pl.id = l.product_id\nleft join m_staff lo on lo.id = l.loan_officer_id\nleft join m_currency cur on cur.code = l.currency_code\nleft join m_fund f on f.id = l.fund_id\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\nwhere o.id = ${officeId}\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\nand l.disbursedon_date between '${startDate}' and '${endDate}'\nand l.loan_status_id = 300\ngroup by l.id\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no", "Individual Client \n\nReport", 1, 1); + insert_stretchy_report(named, stretchy_report, 61, "Aging Summary (Arrears in Months)", "Table", null, "Loan", "SELECT \n IFNULL(periods.currencyName, periods.currency) as currency, \n periods.period_no 'Days In Arrears', \n IFNULL(ars.loanId, 0) 'No Of Loans', \n IFNULL(ars.principal,0.0) 'Original Principal', \n IFNULL(ars.interest,0.0) 'Original Interest', \n IFNULL(ars.prinPaid,0.0) 'Principal Paid', \n IFNULL(ars.intPaid,0.0) 'Interest Paid', \n IFNULL(ars.prinOverdue,0.0) 'Principal Overdue', \n IFNULL(ars.intOverdue,0.0)'Interest Overdue'\nFROM \n\t/* full table of aging periods/currencies used combo to ensure each line represented */\n (SELECT curs.code as currency, curs.name as currencyName, pers.* from\n\t(SELECT 'On Schedule' period_no,1 pid UNION\n\t\tSELECT '0 - 30',2 UNION\n\t\tSELECT '30 - 60',3 UNION\n\t\tSELECT '60 - 90',4 UNION\n\t\tSELECT '90 - 180',5 UNION\n\t\tSELECT '180 - 360',6 UNION\n\t\tSELECT '> 360',7 ) pers,\n\t(SELECT distinctrow moc.code, moc.name\n \tFROM m_office mo2\n \tINNER JOIN m_office ounder2 ON ounder2.hierarchy \n\t\t\t\tLIKE CONCAT(mo2.hierarchy, '%')\nAND ounder2.hierarchy like CONCAT('${currentUserHierarchy}', '%')\n \tINNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\n \tINNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\n\tINNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\n\tWHERE ml2.loan_status_id=300 /* active */\n\tAND mo2.id=${officeId}\nAND (ml2.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")) curs) periods\n\n\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\n(SELECT \n \tz.currency, z.arrPeriod, \n\tCOUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \n\tSUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \n\tSUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\nFROM\n\t/*derived table just used to get arrPeriod value (was much slower to\n\tduplicate calc of minOverdueDate in inner query)\nmight not be now with derived fields but didn’t check */\n\t(SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\n\t\tIF(DATEDIFF(CURDATE(), minOverdueDate)<1, 'On Schedule', \n\t\tIF(DATEDIFF(CURDATE(), minOverdueDate)<31, '0 - 30', \n\t\tIF(DATEDIFF(CURDATE(), minOverdueDate)<61, '30 - 60', \n\t\tIF(DATEDIFF(CURDATE(), minOverdueDate)<91, '60 - 90', \n\t\tIF(DATEDIFF(CURDATE(), minOverdueDate)<181, '90 - 180', \n\t\tIF(DATEDIFF(CURDATE(), minOverdueDate)<361, '180 - 360', \n\t\t\t\t '> 360')))))) AS arrPeriod\n\n\tFROM /* get the individual loan details */\n\t\t(SELECT ml.id AS loanId, ml.currency_code as currency,\n \t\t\tml.principal_disbursed_derived as principal, \n\t\t\t ml.interest_charged_derived as interest, \n \t\t\tml.principal_repaid_derived as prinPaid, \n\t\t\t ml.interest_repaid_derived intPaid,\n\n\t\t\t laa.principal_overdue_derived as prinOverdue,\n\t\t\t laa.interest_overdue_derived as intOverdue,\n\n\t\t\t IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\n\t\t\t \n \t\tFROM m_office mo\n \t\tINNER JOIN m_office ounder ON ounder.hierarchy \n\t\t\t\tLIKE CONCAT(mo.hierarchy, '%')\nAND ounder.hierarchy like CONCAT('${currentUserHierarchy}', '%')\n \t\tINNER JOIN m_client mc ON mc.office_id=ounder.id\n \t\tINNER JOIN m_loan ml ON ml.client_id = mc.id\n\t\t LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\n\t\tWHERE ml.loan_status_id=300 /* active */\n \t\tAND mo.id=${officeId}\n AND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\n \t\tGROUP BY ml.id) x\n\t) z \nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\nORDER BY periods.currency, periods.pid", "Loan amount in arrears by branch", 1, 1); + insert_stretchy_report(named, stretchy_report, 91, "Loan Account Schedule", "Pentaho", null, "Loan", null, null, 1, 0); + insert_stretchy_report(named, stretchy_report, 92, "Branch Expected Cash Flow", "Pentaho", null, "Loan", null, null, 1, 1); + insert_stretchy_report(named, stretchy_report, 93, "Expected Payments By Date - Basic", "Table", null, "Loan", "SELECT \n ounder.name 'Office', \n IFNULL(ms.display_name,'-') 'Loan Officer',\n\t mc.account_no 'Client Account Number',\n\t mc.display_name 'Name',\n\t mp.name 'Product',\n\t ml.account_no 'Loan Account Number',\n\t mr.duedate 'Due Date',\n\t mr.installment 'Installment',\n\t cu.display_symbol 'Currency',\n\t mr.principal_amount- IFNULL(mr.principal_completed_derived,0) 'Principal Due',\n\t mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0) 'Interest Due', \n\t IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0) 'Fees Due', \n\t IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0) 'Penalty Due',\n (mr.principal_amount- IFNULL(mr.principal_completed_derived,0)) +\n (mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0)) + \n (IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0)) + \n (IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0)) 'Total Due', \n mlaa.total_overdue_derived 'Total Overdue'\n\t\t\t\t\t\t\t\t\t\t \n FROM m_office mo\n JOIN m_office ounder ON ounder.hierarchy LIKE CONCAT(mo.hierarchy, '%')\n \n AND ounder.hierarchy like CONCAT('${currentUserHierarchy}', '%')\n\t\n LEFT JOIN m_client mc ON mc.office_id=ounder.id\n LEFT JOIN m_loan ml ON ml.client_id=mc.id AND ml.loan_status_id=300\n LEFT JOIN m_loan_arrears_aging mlaa ON mlaa.loan_id=ml.id\n LEFT JOIN m_loan_repayment_schedule mr ON mr.loan_id=ml.id AND mr.completed_derived=0\n LEFT JOIN m_product_loan mp ON mp.id=ml.product_id\n LEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\n LEFT JOIN m_currency cu ON cu.code=ml.currency_code\n WHERE mo.id=${officeId}\n AND (IFNULL(ml.loan_officer_id, -10) = \"${loanOfficerId}\" OR \"-1\" = \"${loanOfficerId}\")\n AND mr.duedate BETWEEN '${startDate}' AND '${endDate}'\n ORDER BY ounder.id,mr.duedate,ml.account_no", "Test", 1, 1); + insert_stretchy_report(named, stretchy_report, 94, "Expected Payments By Date - Formatted", "Pentaho", null, "Loan", null, null, 1, 1); + } + { + dataContext.refreshSchemas(); + Table stretchy_parameter = dataContext.getDefaultSchema().getTableByName("stretchy_parameter"); + insert_stretchy_parameter(named, stretchy_parameter, 1, "startDateSelect", "startDate", "startDate", "date", "date", "today", null, null, null, null, null); + insert_stretchy_parameter(named, stretchy_parameter, 2, "endDateSelect", "endDate", "endDate", "date", "date", "today", null, null, null, null, null); + insert_stretchy_parameter(named, stretchy_parameter, 3, "obligDateTypeSelect", "obligDateType", "obligDateType", "select", "number", "0", null, null, null, "select * from\n(select 1 as id, \"Closed\" as `name` union all\nselect 2, \"Disbursal\" ) x\norder by x.`id`", null); + insert_stretchy_parameter(named, stretchy_parameter, 5, "OfficeIdSelectOne", "officeId", "Office", "select", "number", "0", null, "Y", null, "select id, \nconcat(substring(\"........................................\", 1, \n \n\n((LENGTH(`hierarchy`) - LENGTH(REPLACE(`hierarchy`, '.', '')) - 1) * 4)), \n `name`) as tc\nfrom m_office\nwhere hierarchy like concat\n\n('${currentUserHierarchy}', '%')\norder by hierarchy", null); + insert_stretchy_parameter(named, stretchy_parameter, 6, "loanOfficerIdSelectAll", "loanOfficerId", "Loan Officer", "select", "number", "0", null, null, "Y", "(select lo.id, lo.display_name as `Name` \nfrom m_office o \njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, '%')\njoin m_staff lo on lo.office_id = ounder.id\nwhere lo.is_loan_officer = true\nand o.id = ${officeId})\nunion all\n(select -10, '-')\norder by 2", "5"); + insert_stretchy_parameter(named, stretchy_parameter, 10, "currencyIdSelectAll", "currencyId", "Currency", "select", "number", "0", null, null, "Y", "select `code`, `name`\nfrom m_organisation_currency\norder by `code`", null); + insert_stretchy_parameter(named, stretchy_parameter, 20, "fundIdSelectAll", "fundId", "Fund", "select", "number", "0", null, null, "Y", "(select id, `name`\nfrom m_fund)\nunion all\n(select -10, '-')\norder by 2", null); + insert_stretchy_parameter(named, stretchy_parameter, 25, "loanProductIdSelectAll", "loanProductId", "Product", "select", "number", "0", null, null, "Y", "select p.id, p.`name`\nfrom m_product_loan p\nwhere p.currency_code = '${currencyId}'\norder by 2", "10"); + insert_stretchy_parameter(named, stretchy_parameter, 26, "loanPurposeIdSelectAll", "loanPurposeId", "Loan Purpose", "select", "number", "0", null, null, "Y", "select -10 as id, '-' as code_value\nunion all\nselect * from (select v.id, v.code_value\nfrom m_code c\njoin m_code_value v on v.code_id = c.id\nwhere c.code_name = \"loanPurpose\"\norder by v.order_position) x", null); + insert_stretchy_parameter(named, stretchy_parameter, 100, "parTypeSelect", "parType", "parType", "select", "number", "0", null, null, null, "select * from\n(select 1 as id, \"Principal Only\" as `name` union all\nselect 2, \"Principal + Interest\" union all\nselect 3, \"Principal + Interest + Fees\" union all\nselect 4, \"Principal + Interest + Fees + Penalties\") x\norder by x.`id`", null); + insert_stretchy_parameter(named, stretchy_parameter, 1001, "FullReportList", null, "n/a", "n/a", "n/a", "n/a", "Y", null, null, "select r.report_id, r.report_name, r.report_type, r.report_subtype, r.report_category,\n \n\nrp.parameter_id, rp.report_parameter_name, p.parameter_name\n from stretchy_report r\n left join stretchy_report_parameter rp on rp.report_id = r.report_id\n \n\nleft join stretchy_parameter p on p.parameter_id = rp.parameter_id\n where r.use_report is true\n and exists\n (\n select 'f'\n from m_appuser_role ur \n\n\n join m_role r on r.id = ur.role_id\n join m_role_permission rp on rp.role_id = r.id\n join m_permission p on p.id = rp.permission_id\n where \n\nur.appuser_id = ${currentUserId}\n and (p.code in ('ALL_FUNCTIONS_READ', 'ALL_FUNCTIONS') or p.code = concat(\"READ_\", r.report_name))\n )\n order by \n\nr.report_category, r.report_name, rp.parameter_id", null); + insert_stretchy_parameter(named, stretchy_parameter, 1002, "FullParameterList", null, "n/a", "n/a", "n/a", "n/a", "Y", null, null, "select sp.parameter_name, sp.parameter_variable, sp.parameter_label, sp.parameter_displayType, \nsp.parameter_FormatType, sp.parameter_default, sp.selectOne, sp.selectAll, spp.parameter_name as parentParameterName\nfrom stretchy_parameter sp\nleft join stretchy_parameter spp on spp.parameter_id = sp.parent_parameter_id\nwhere sp.special is null\nand exists \n\t(select 'f' \n\tfrom stretchy_report sr\n\tjoin stretchy_report_parameter srp on srp.report_id = sr.report_id\n\twhere sr.report_name in(${reportListing})\n\tand srp.parameter_id = sp.parameter_id\n\t)\norder by sp.parameter_id", null); + insert_stretchy_parameter(named, stretchy_parameter, 1003, "reportCategoryList", null, "n/a", "n/a", "n/a", "n/a", "Y", null, null, "select r.report_id, r.report_name, r.report_type, r.report_subtype, \n\nr.report_category,\n rp.parameter_id, rp.report_parameter_name, p.parameter_name\n from stretchy_report r\n left join stretchy_report_parameter rp on \n\nrp.report_id = r.report_id\n left join stretchy_parameter p on p.parameter_id = rp.parameter_id\n where r.report_category = '${reportCategory}'\n and \n\nr.use_report is true\n and exists\n (\n select 'f'\n from m_appuser_role ur \n join m_role r on r.id = ur.role_id\n join m_role_permission rp on \n\nrp.role_id = r.id\n join m_permission p on p.id = rp.permission_id\n where ur.appuser_id = ${currentUserId}\n and (p.code in ('ALL_FUNCTIONS_READ', \n\n'ALL_FUNCTIONS') or p.code = concat(\"READ_\", r.report_name))\n )\n order by r.report_category, r.report_name, rp.parameter_id", null); + } + { + Table stretchy_report_parameter = dataContext.getDefaultSchema().getTableByName("stretchy_report_parameter"); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 1, 5, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 2, 5, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 2, 6, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 2, 10, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 2, 20, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 2, 25, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 2, 26, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 5, 5, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 5, 6, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 5, 10, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 5, 20, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 5, 25, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 5, 26, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 6, 5, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 6, 6, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 6, 10, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 6, 20, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 6, 25, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 6, 26, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 7, 5, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 7, 6, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 7, 10, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 7, 20, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 7, 25, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 7, 26, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 8, 5, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 8, 6, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 8, 10, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 8, 25, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 8, 26, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 11, 5, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 11, 6, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 11, 10, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 11, 20, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 11, 25, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 11, 26, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 11, 100, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 12, 5, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 12, 6, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 12, 10, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 12, 20, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 12, 25, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 12, 26, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 13, 1, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 13, 2, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 13, 3, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 13, 5, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 13, 6, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 13, 10, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 13, 20, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 13, 25, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 13, 26, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 14, 1, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 14, 2, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 14, 3, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 14, 5, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 14, 6, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 14, 10, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 14, 20, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 14, 25, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 14, 26, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 15, 5, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 15, 6, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 15, 10, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 15, 20, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 15, 25, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 15, 26, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 15, 100, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 16, 5, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 16, 6, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 16, 10, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 16, 20, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 16, 25, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 16, 26, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 16, 100, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 20, 1, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 20, 2, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 20, 10, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 20, 20, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 21, 1, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 21, 2, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 21, 5, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 21, 10, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 21, 20, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 48, 5, "branch"); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 48, 2, "date"); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 49, 5, "branch"); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 49, 1, "fromDate"); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 49, 2, "toDate"); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 50, 5, "branch"); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 50, 1, "fromDate"); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 50, 2, "toDate"); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 51, 1, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 51, 2, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 51, 5, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 51, 10, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 51, 25, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 52, 5, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 53, 5, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 53, 10, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 54, 1, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 54, 2, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 54, 5, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 54, 10, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 54, 25, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 55, 5, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 55, 6, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 55, 10, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 55, 20, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 55, 25, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 55, 26, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 56, 5, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 56, 6, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 56, 10, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 56, 20, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 56, 25, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 56, 26, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 56, 100, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 57, 5, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 57, 6, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 57, 10, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 57, 20, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 57, 25, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 57, 26, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 58, 5, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 58, 6, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 58, 10, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 58, 20, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 58, 25, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 58, 26, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 58, 100, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 59, 1, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 59, 2, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 59, 5, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 59, 6, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 59, 10, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 59, 20, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 59, 25, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 59, 26, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 61, 5, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 61, 10, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 92, 1, "fromDate"); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 92, 5, "selectOffice"); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 92, 2, "toDate"); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 93, 1, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 93, 2, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 93, 5, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 93, 6, null); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 94, 2, "endDate"); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 94, 6, "loanOfficerId"); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 94, 5, "officeId"); + insert_stretchy_report_parameter(named, stretchy_report_parameter, 94, 1, "startDate"); + } + { + dataContext.refreshSchemas(); + Table stretchy_report = dataContext.getDefaultSchema().getTableByName("stretchy_report"); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + SelectQuery selectQuery = new SelectQuery(stretchy_report.getName()); + for (Map record : named.queryForList(selectQuery.toSQL(), selectQuery.toParam())) { + insert_m_permission(named, m_permission, "report", "READ_" + record.get(stretchy_report.getColumnByName("report_name").getName()), (String) record.get(stretchy_report.getColumnByName("report_name").getName()), "READ", 1); + } + } + } + + protected void insert_stretchy_parameter(NamedParameterJdbcTemplate named, Table table, long parameter_id, String parameter_name, String parameter_variable, String parameter_label, String parameter_displayType, String parameter_FormatType, String parameter_default, String special, String selectOne, String selectAll, String parameter_sql, String parent_parameter_id) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("parameter_id").getName(), parameter_id); + insertQuery.addValue(table.getColumnByName("parameter_name").getName(), parameter_name); + insertQuery.addValue(table.getColumnByName("parameter_variable").getName(), parameter_variable); + insertQuery.addValue(table.getColumnByName("parameter_label").getName(), parameter_label); + insertQuery.addValue(table.getColumnByName("parameter_displayType").getName(), parameter_displayType); + insertQuery.addValue(table.getColumnByName("parameter_FormatType").getName(), parameter_FormatType); + insertQuery.addValue(table.getColumnByName("parameter_default").getName(), parameter_default); + insertQuery.addValue(table.getColumnByName("special").getName(), special); + insertQuery.addValue(table.getColumnByName("selectOne").getName(), selectOne); + insertQuery.addValue(table.getColumnByName("selectAll").getName(), selectAll); + insertQuery.addValue(table.getColumnByName("parameter_sql").getName(), parameter_sql); + insertQuery.addValue(table.getColumnByName("parent_parameter_id").getName(), parent_parameter_id); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_stretchy_report(NamedParameterJdbcTemplate named, Table table, long report_id, String report_name, String report_type, String report_subtype, String report_category, String report_sql, String description, long core_report, long use_report) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("report_id").getName(), report_id); + insertQuery.addValue(table.getColumnByName("report_name").getName(), report_name); + insertQuery.addValue(table.getColumnByName("report_type").getName(), report_type); + insertQuery.addValue(table.getColumnByName("report_subtype").getName(), report_subtype); + insertQuery.addValue(table.getColumnByName("report_category").getName(), report_category); + insertQuery.addValue(table.getColumnByName("report_sql").getName(), report_sql); + insertQuery.addValue(table.getColumnByName("description").getName(), description); + insertQuery.addValue(table.getColumnByName("core_report").getName(), core_report); + insertQuery.addValue(table.getColumnByName("use_report").getName(), use_report); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_stretchy_report_parameter(NamedParameterJdbcTemplate named, Table table, long report_id, long parameter_id, String report_parameter_name) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("report_id").getName(), report_id); + insertQuery.addValue(table.getColumnByName("parameter_id").getName(), parameter_id); + insertQuery.addValue(table.getColumnByName("report_parameter_name").getName(), report_parameter_name); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V50__AddGraceSettingsToLoanProduct.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V50__AddGraceSettingsToLoanProduct.java new file mode 100644 index 00000000..f852a82f --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V50__AddGraceSettingsToLoanProduct.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V50__AddGraceSettingsToLoanProduct extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V50__AddGraceSettingsToLoanProduct + getInternalChecksum("V50__add-grace-settings-to-loan-product.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V50__add-grace-settings-to-loan-product.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V51__TrackAdditionalDetailsRelatedToInstallmentPerformance.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V51__TrackAdditionalDetailsRelatedToInstallmentPerformance.java new file mode 100644 index 00000000..6d9a0d6f --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V51__TrackAdditionalDetailsRelatedToInstallmentPerformance.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V51__TrackAdditionalDetailsRelatedToInstallmentPerformance extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V51__TrackAdditionalDetailsRelatedToInstallmentPerformance + getInternalChecksum("V51__track-additional-details-related-to-installment-performance.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V51__track-additional-details-related-to-installment-performance.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V52__AddBooleanSupportColsToAccAccountingRule.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V52__AddBooleanSupportColsToAccAccountingRule.java new file mode 100644 index 00000000..e79dfba8 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V52__AddBooleanSupportColsToAccAccountingRule.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V52__AddBooleanSupportColsToAccAccountingRule extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V52__AddBooleanSupportColsToAccAccountingRule + getInternalChecksum("V52__add_boolean_support_cols_to_acc_accounting_rule.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V52__add_boolean_support_cols_to_acc_accounting_rule.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V53__TrackAdvanceAndLatePaymentsOnInstallment.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V53__TrackAdvanceAndLatePaymentsOnInstallment.java new file mode 100644 index 00000000..b83eb065 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V53__TrackAdvanceAndLatePaymentsOnInstallment.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V53__TrackAdvanceAndLatePaymentsOnInstallment extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V53__TrackAdvanceAndLatePaymentsOnInstallment + getInternalChecksum("V53__track-advance-and-late-payments-on-installment.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V53__track-advance-and-late-payments-on-installment.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V54__ChargeToIncomeAccountMappings.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V54__ChargeToIncomeAccountMappings.java new file mode 100644 index 00000000..d57b6734 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V54__ChargeToIncomeAccountMappings.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V54__ChargeToIncomeAccountMappings extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V54__ChargeToIncomeAccountMappings + getInternalChecksum("V54__charge-to-income-account-mappings.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V54__charge-to-income-account-mappings.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V55__AddAdditionalTransactionProcessingStrategies.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V55__AddAdditionalTransactionProcessingStrategies.java new file mode 100644 index 00000000..bd63afbd --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V55__AddAdditionalTransactionProcessingStrategies.java @@ -0,0 +1,38 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V55__AddAdditionalTransactionProcessingStrategies extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V55__AddAdditionalTransactionProcessingStrategies + getInternalChecksum("V55__add-additional-transaction-processing-strategies.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V55__add-additional-transaction-processing-strategies.xml"); + + dataContext.refreshSchemas(); + Table ref_loan_transaction_processing_strategy = dataContext.getDefaultSchema().getTableByName("ref_loan_transaction_processing_strategy"); + insert_ref_loan_transaction_processing_strategy(named, ref_loan_transaction_processing_strategy, 5, "principal-interest-penalties-fees-order-strategy", "Principal Interest Penalties Fees Order"); + insert_ref_loan_transaction_processing_strategy(named, ref_loan_transaction_processing_strategy, 6, "interest-principal-penalties-fees-order-strategy", "Interest Principal Penalties Fees Order"); + } + + protected void insert_ref_loan_transaction_processing_strategy(NamedParameterJdbcTemplate named, Table table, long id, String code, String name) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("id").getName(), id); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("name").getName(), name); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V56__TrackOverpaidAmountOnLoans.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V56__TrackOverpaidAmountOnLoans.java new file mode 100644 index 00000000..af1abbcc --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V56__TrackOverpaidAmountOnLoans.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V56__TrackOverpaidAmountOnLoans extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V56__TrackOverpaidAmountOnLoans + getInternalChecksum("V56__track-overpaid-amount-on-loans.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V56__track-overpaid-amount-on-loans.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V57__AddDefaultValuesToDebitAndCreditAccountsAccAccountingRule.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V57__AddDefaultValuesToDebitAndCreditAccountsAccAccountingRule.java new file mode 100644 index 00000000..91210703 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V57__AddDefaultValuesToDebitAndCreditAccountsAccAccountingRule.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V57__AddDefaultValuesToDebitAndCreditAccountsAccAccountingRule extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V57__AddDefaultValuesToDebitAndCreditAccountsAccAccountingRule + getInternalChecksum("V57__add_default_values_to_debit_and_credit_accounts_acc_accounting_rule.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V57__add_default_values_to_debit_and_credit_accounts_acc_accounting_rule.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V58__CreateHolidayTablesChanged.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V58__CreateHolidayTablesChanged.java new file mode 100644 index 00000000..7ba6ab20 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V58__CreateHolidayTablesChanged.java @@ -0,0 +1,41 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V58__CreateHolidayTablesChanged extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V58__CreateHolidayTablesChanged + getInternalChecksum("V58__create-holiday-tables_changed.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + { + updateLiquibase("V58__create-holiday-tables_changed.xml"); + + dataContext.refreshSchemas(); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "organisation", "CREATE_HOLIDAY", "HOLIDAY", "CREATE", 0); + } + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V59__AddGroupRolesSchemaAndPermissions.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V59__AddGroupRolesSchemaAndPermissions.java new file mode 100644 index 00000000..f8739197 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V59__AddGroupRolesSchemaAndPermissions.java @@ -0,0 +1,52 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V59__AddGroupRolesSchemaAndPermissions extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V59__AddGroupRolesSchemaAndPermissions + getInternalChecksum("V59__add_group_roles_schema_and_permissions.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + dataContext.refreshSchemas(); + Table m_code = dataContext.getDefaultSchema().getTableByName("m_code"); + insert_m_code(named, m_code, "GROUPROLE", 1); + + dataContext.refreshSchemas(); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "portfolio", "ASSIGNROLE_GROUP", "GROUP", "ASSIGNROLE", 0); + insert_m_permission(named, m_permission, "portfolio", "UNASSIGNROLE_GROUP", "GROUP", "UNASSIGNROLE", 0); + insert_m_permission(named, m_permission, "portfolio", "UPDATEROLE_GROUP", "GROUP", "UPDATEROLE", 0); + + updateLiquibase("V59__add_group_roles_schema_and_permissions.xml"); + } + + protected void insert_m_code(NamedParameterJdbcTemplate named, Table table, String code_name, long is_system_defined) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("code_name").getName(), code_name); + insertQuery.addValue(table.getColumnByName("is_system_defined").getName(), is_system_defined); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V5__UpdateSavingsProductAndAccountTables.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V5__UpdateSavingsProductAndAccountTables.java new file mode 100644 index 00000000..46e0a65d --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V5__UpdateSavingsProductAndAccountTables.java @@ -0,0 +1,25 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V5__UpdateSavingsProductAndAccountTables extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V5__UpdateSavingsProductAndAccountTables + getInternalChecksum("V5__update-savings-product-and-account-tables.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + // sub change 001 + updateLiquibase("V5__update-savings-product-and-account-tables.xml"); + } + +} + diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V60__QuipoDashboardReports.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V60__QuipoDashboardReports.java new file mode 100644 index 00000000..9ba597a7 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V60__QuipoDashboardReports.java @@ -0,0 +1,80 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.DeleteQuery; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; +import java.util.Arrays; + +public class V60__QuipoDashboardReports extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V60__QuipoDashboardReports; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + DeleteQuery deleteQuery = null; + + Table stretchy_report = dataContext.getDefaultSchema().getTableByName("stretchy_report"); + deleteQuery = new DeleteQuery(stretchy_report.getName()); + deleteQuery.addWhere(stretchy_report.getColumnByName("report_name").getName() + " in (:report_name)", "report_name", String.class, + Arrays.asList("FieldAgentStats", "FieldAgentPrograms", "ProgramDetails", "ChildrenStaffList", "CoordinatorStats", "BranchManagerStats", "ProgramDirectorStats", "ProgramStats")); + named.update(deleteQuery.toSQL(), deleteQuery.toParam()); + + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + deleteQuery = new DeleteQuery(m_permission.getName()); + deleteQuery.addWhere(m_permission.getColumnByName("entity_name").getName() + " in (:entity_name)", "entity_name", String.class, + Arrays.asList("FieldAgentStats", "FieldAgentPrograms", "ProgramDetails", "ChildrenStaffList", "CoordinatorStats", "BranchManagerStats", "ProgramDirectorStats", "ProgramStats")); + + dataContext.refreshSchemas(); + insert_stretchy_report(named, stretchy_report, "FieldAgentStats", "Table", "Quipo", false, false, "Field Agent Statistics", "\nselect ifnull(cur.display_symbol, l.currency_code) as Currency,\n/*This query will return more than one entry if more than one currency is used */\ncount(distinct(c.id)) as activeClients, count(*) as activeLoans,\nsum(l.principal_disbursed_derived) as disbursedAmount,\nsum(l.principal_outstanding_derived) as loanOutstandingAmount,\nround((sum(l.principal_outstanding_derived) * 100) / sum(l.principal_disbursed_derived),2) as loanOutstandingPC,\n'???' as loanOverPaymentAmount,\nsum(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n l.principal_outstanding_derived,0)) as portfolioAtRisk,\n\nround((sum(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n l.principal_outstanding_derived,0)) * 100) / sum(l.principal_outstanding_derived), 2) as portfolioAtRiskPC,\n\ncount(distinct(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n c.id,null))) as clientsInDefault,\nround((count(distinct(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n c.id,null))) * 100) / count(distinct(c.id)),2) as clientsInDefaultPC,\n(sum(l.principal_disbursed_derived) / count(*)) as averageLoanAmount\nfrom m_staff fa\njoin m_office o on o.id = fa.office_id\n and o.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_group pgm on pgm.staff_id = fa.id\njoin m_loan l on l.group_id = pgm.id and l.client_id is not null\nleft join m_currency cur on cur.code = l.currency_code\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\njoin m_client c on c.id = l.client_id\nwhere fa.id = ${staffId}\nand l.loan_status_id = 300\ngroup by l.currency_code\n"); + insert_stretchy_report(named, stretchy_report, "FieldAgentPrograms", "Table", "Quipo", false, false, "List of Field Agent Programs", "\nselect pgm.id, pgm.display_name as `name`, sts.enum_message_property as status\n from m_group pgm\n join m_office o on o.id = pgm.office_id\n and o.hierarchy like concat('${currentUserHierarchy}', '%')\n left join r_enum_value sts on sts.enum_name = 'status_enum' and sts.enum_id = pgm.status_enum\n where pgm.staff_id = ${staffId}\n"); + insert_stretchy_report(named, stretchy_report, "ProgramDetails", "Table", "Quipo", false, false, "List of Loans in a Program", "\n select l.id as loanId, l.account_no as loanAccountNo, c.id as clientId, c.account_no as clientAccountNo,\n pgm.display_name as programName,\n\n(select count(*)\nfrom m_loan cy\nwhere cy.group_id = pgm.id and cy.client_id =c.id\nand cy.disbursedon_date <= l.disbursedon_date) as loanCycleNo,\n\nc.display_name as clientDisplayName,\n ifnull(cur.display_symbol, l.currency_code) as Currency,\nifnull(l.principal_repaid_derived,0.0) as loanRepaidAmount,\nifnull(l.principal_outstanding_derived, 0.0) as loanOutstandingAmount,\n '???' as loanInAdvanceAmount,\n\nifnull(laa.principal_overdue_derived, 0.0) as loanInArrearsAmount,\nif(ifnull(laa.principal_overdue_derived, 0.00) > 0, 'Yes', 'No') as inDefault,\n\nif(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n l.principal_outstanding_derived,0) as portfolioAtRisk\n\n from m_group pgm\n join m_office o on o.id = pgm.office_id\n and o.hierarchy like concat('${currentUserHierarchy}', '%')\n join m_loan l on l.group_id = pgm.id and l.client_id is not null\n left join m_currency cur on cur.code = l.currency_code\n join m_client c on c.id = l.client_id\n left join m_loan_arrears_aging laa on laa.loan_id = l.id\n where pgm.id = ${programId}\n and l.loan_status_id = 300\norder by c.display_name, l.account_no\n\n"); + insert_stretchy_report(named, stretchy_report, "ChildrenStaffList", "Table", "Quipo", false, false, "Get Next Level Down Staff", "\n select s.id, s.display_name,\ns.firstname, s.lastname, s.organisational_role_enum,\ns.organisational_role_parent_staff_id,\nsp.display_name as `organisational_role_parent_staff_display_name`\nfrom m_staff s\njoin m_staff sp on s.organisational_role_parent_staff_id = sp.id\nwhere s.organisational_role_parent_staff_id = ${staffId}\n"); + insert_stretchy_report(named, stretchy_report, "CoordinatorStats", "Table", "Quipo", false, false, "Coordinator Statistics", "\nselect ifnull(cur.display_symbol, l.currency_code) as Currency,\n/*This query will return more than one entry if more than one currency is used */\ncount(distinct(c.id)) as activeClients, count(*) as activeLoans,\nsum(l.principal_disbursed_derived) as disbursedAmount,\nsum(l.principal_outstanding_derived) as loanOutstandingAmount,\nround((sum(l.principal_outstanding_derived) * 100) / sum(l.principal_disbursed_derived),2) as loanOutstandingPC,\n'???' as loanOverPaymentAmount,\nsum(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n l.principal_outstanding_derived,0)) as portfolioAtRisk,\n\nround((sum(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n l.principal_outstanding_derived,0)) * 100) / sum(l.principal_outstanding_derived), 2) as portfolioAtRiskPC,\n\ncount(distinct(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n c.id,null))) as clientsInDefault,\nround((count(distinct(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n c.id,null))) * 100) / count(distinct(c.id)),2) as clientsInDefaultPC,\n(sum(l.principal_disbursed_derived) / count(*)) as averageLoanAmount\nfrom m_staff coord\njoin m_staff fa on fa.organisational_role_parent_staff_id = coord.id\njoin m_office o on o.id = fa.office_id\n and o.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_group pgm on pgm.staff_id = fa.id\njoin m_loan l on l.group_id = pgm.id and l.client_id is not null\nleft join m_currency cur on cur.code = l.currency_code\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\njoin m_client c on c.id = l.client_id\nwhere coord.id = ${staffId}\nand l.loan_status_id = 300\ngroup by l.currency_code\n"); + insert_stretchy_report(named, stretchy_report, "BranchManagerStats", "Table", "Quipo", false, false, "Branch Manager Statistics", "\nselect ifnull(cur.display_symbol, l.currency_code) as Currency,\n/*This query will return more than one entry if more than one currency is used */\ncount(distinct(c.id)) as activeClients, count(*) as activeLoans,\nsum(l.principal_disbursed_derived) as disbursedAmount,\nsum(l.principal_outstanding_derived) as loanOutstandingAmount,\nround((sum(l.principal_outstanding_derived) * 100) / sum(l.principal_disbursed_derived),2) as loanOutstandingPC,\n'???' as loanOverPaymentAmount,\nsum(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n l.principal_outstanding_derived,0)) as portfolioAtRisk,\n\nround((sum(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n l.principal_outstanding_derived,0)) * 100) / sum(l.principal_outstanding_derived), 2) as portfolioAtRiskPC,\n\ncount(distinct(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n c.id,null))) as clientsInDefault,\nround((count(distinct(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n c.id,null))) * 100) / count(distinct(c.id)),2) as clientsInDefaultPC,\n(sum(l.principal_disbursed_derived) / count(*)) as averageLoanAmount\nfrom m_staff bm\njoin m_staff coord on coord.organisational_role_parent_staff_id = bm.id\njoin m_staff fa on fa.organisational_role_parent_staff_id = coord.id\njoin m_office o on o.id = fa.office_id\n and o.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_group pgm on pgm.staff_id = fa.id\njoin m_loan l on l.group_id = pgm.id and l.client_id is not null\nleft join m_currency cur on cur.code = l.currency_code\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\njoin m_client c on c.id = l.client_id\nwhere bm.id = ${staffId}\nand l.loan_status_id = 300\ngroup by l.currency_code\n"); + insert_stretchy_report(named, stretchy_report, "ProgramDirectorStats", "Table", "Quipo", false, false, "Program DirectorStatistics", "\nselect ifnull(cur.display_symbol, l.currency_code) as Currency,\n/*This query will return more than one entry if more than one currency is used */\ncount(distinct(c.id)) as activeClients, count(*) as activeLoans,\nsum(l.principal_disbursed_derived) as disbursedAmount,\nsum(l.principal_outstanding_derived) as loanOutstandingAmount,\nround((sum(l.principal_outstanding_derived) * 100) / sum(l.principal_disbursed_derived),2) as loanOutstandingPC,\n'???' as loanOverPaymentAmount,\nsum(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n l.principal_outstanding_derived,0)) as portfolioAtRisk,\n\nround((sum(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n l.principal_outstanding_derived,0)) * 100) / sum(l.principal_outstanding_derived), 2) as portfolioAtRiskPC,\n\ncount(distinct(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n c.id,null))) as clientsInDefault,\nround((count(distinct(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n c.id,null))) * 100) / count(distinct(c.id)),2) as clientsInDefaultPC,\n(sum(l.principal_disbursed_derived) / count(*)) as averageLoanAmount\nfrom m_staff pd\njoin m_staff bm on bm.organisational_role_parent_staff_id = pd.id\njoin m_staff coord on coord.organisational_role_parent_staff_id = bm.id\njoin m_staff fa on fa.organisational_role_parent_staff_id = coord.id\njoin m_office o on o.id = fa.office_id\n and o.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_group pgm on pgm.staff_id = fa.id\njoin m_loan l on l.group_id = pgm.id and l.client_id is not null\nleft join m_currency cur on cur.code = l.currency_code\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\njoin m_client c on c.id = l.client_id\nwhere pd.id = ${staffId}\nand l.loan_status_id = 300\ngroup by l.currency_code\n"); + insert_stretchy_report(named, stretchy_report, "ProgramStats", "Table", "Quipo", false, false, "Program Statistics", "\nselect ifnull(cur.display_symbol, l.currency_code) as Currency,\n/*This query will return more than one entry if more than one currency is used */\ncount(distinct(c.id)) as activeClients, count(*) as activeLoans,\nsum(l.principal_disbursed_derived) as disbursedAmount,\nsum(l.principal_outstanding_derived) as loanOutstandingAmount,\nround((sum(l.principal_outstanding_derived) * 100) / sum(l.principal_disbursed_derived),2) as loanOutstandingPC,\n'???' as loanOverPaymentAmount,\nsum(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n l.principal_outstanding_derived,0)) as portfolioAtRisk,\n\nround((sum(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n l.principal_outstanding_derived,0)) * 100) / sum(l.principal_outstanding_derived), 2) as portfolioAtRiskPC,\n\ncount(distinct(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n c.id,null))) as clientsInDefault,\nround((count(distinct(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n c.id,null))) * 100) / count(distinct(c.id)),2) as clientsInDefaultPC,\n(sum(l.principal_disbursed_derived) / count(*)) as averageLoanAmount\nfrom m_group pgm\njoin m_office o on o.id = pgm.office_id\n and o.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_loan l on l.group_id = pgm.id and l.client_id is not null\nleft join m_currency cur on cur.code = l.currency_code\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\njoin m_client c on c.id = l.client_id\nwhere pgm.id = ${programId}\nand l.loan_status_id = 300\ngroup by l.currency_code\n"); + + dataContext.refreshSchemas(); + insert_m_permission(named, m_permission, "report", "READ_FieldAgentStats", "FieldAgentStats", "READ", 0); + insert_m_permission(named, m_permission, "report", "READ_FieldAgentPrograms", "FieldAgentPrograms", "READ", 0); + insert_m_permission(named, m_permission, "report", "READ_ProgramDetails", "ProgramDetails", "READ", 0); + insert_m_permission(named, m_permission, "report", "READ_ChildrenStaffList", "ChildrenStaffList", "READ", 0); + insert_m_permission(named, m_permission, "report", "READ_CoordinatorStats", "CoordinatorStats", "READ", 0); + insert_m_permission(named, m_permission, "report", "READ_BranchManagerStats", "BranchManagerStats", "READ", 0); + insert_m_permission(named, m_permission, "report", "READ_ProgramDirectorStats", "ProgramDirectorStats", "READ", 0); + insert_m_permission(named, m_permission, "report", "READ_ProgramStats", "ProgramStats", "READ", 0); + } + + protected void insert_stretchy_report(NamedParameterJdbcTemplate named, Table table, String report_name, String report_type, String report_category, boolean core_report, boolean use_report, String description, String report_sql) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("report_name").getName(), report_name); + insertQuery.addValue(table.getColumnByName("report_type").getName(), report_type); + insertQuery.addValue(table.getColumnByName("report_category").getName(), report_category); + insertQuery.addValue(table.getColumnByName("core_report").getName(), core_report); + insertQuery.addValue(table.getColumnByName("use_report").getName(), use_report); + insertQuery.addValue(table.getColumnByName("description").getName(), description); + insertQuery.addValue(table.getColumnByName("report_sql").getName(), report_sql); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V61__TxnRunningBalanceExample.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V61__TxnRunningBalanceExample.java new file mode 100644 index 00000000..653c3e0f --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V61__TxnRunningBalanceExample.java @@ -0,0 +1,94 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.DeleteQuery; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.jdbc.query.SelectQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.dao.EmptyResultDataAccessException; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; +import java.util.Arrays; + +public class V61__TxnRunningBalanceExample extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V61__TxnRunningBalanceExample; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + DeleteQuery deleteQuery = null; + SelectQuery selectQuery = null; + + Table stretchy_report = dataContext.getDefaultSchema().getTableByName("stretchy_report"); + Table stretchy_report_parameter = dataContext.getDefaultSchema().getTableByName("stretchy_report_parameter"); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + Table stretchy_parameter = dataContext.getDefaultSchema().getTableByName("stretchy_parameter"); + + selectQuery = new SelectQuery(stretchy_report.getName()); + selectQuery.addField(stretchy_report.getColumnByName("id").getName()); + selectQuery.addWhere(stretchy_report.getColumnByName("report_name").getName() + " = :name", "TxnRunningBalances"); + Long id = null; + try { + id = named.queryForObject(selectQuery.toSQL(), selectQuery.toParam(), Long.class); + } catch (EmptyResultDataAccessException e) { + } + if (id != null) { + deleteQuery = new DeleteQuery(stretchy_report_parameter.getName()); + deleteQuery.addWhere(stretchy_report_parameter.getColumnByName("report_id").getName() + " = :id", id); + named.update(deleteQuery.toSQL(), deleteQuery.toParam()); + } + + deleteQuery = new DeleteQuery(stretchy_report.getName()); + deleteQuery.addWhere(stretchy_report.getColumnByName("report_name").getName() + " = :name", "TxnRunningBalances"); + named.update(deleteQuery.toSQL(), deleteQuery.toParam()); + + deleteQuery = new DeleteQuery(m_permission.getName()); + deleteQuery.addWhere(m_permission.getColumnByName("entity_name").getName() + " = :entity_name", "TxnRunningBalances"); + named.update(deleteQuery.toSQL(), deleteQuery.toParam()); + + insert_stretchy_report(named, stretchy_report, "TxnRunningBalances", "Table", "Transaction", false, false, "Running Balance Txn report for Individual Lending.\nSuitable for small MFI's. Larger could use it using the branch or other parameters.\nBasically, suck it and see if its quick enough for you out-of-te box or whether it needs performance work in your situation.\n", "\nselect date('${startDate}') as 'Transaction Date', 'Opening Balance' as `Transaction Type`, null as Office,\n null as 'Loan Officer', null as `Loan Account No`, null as `Loan Product`, null as `Currency`,\n null as `Client Account No`, null as Client,\n null as Amount, null as Principal, null as Interest,\n@totalOutstandingPrincipal :=\nifnull(round(sum(\n if (txn.transaction_type_enum = 1 /* disbursement */,\n ifnull(txn.amount,0.00),\n ifnull(txn.principal_portion_derived,0.00) * -1))\n ,2),0.00) as 'Outstanding Principal',\n\n@totalInterestIncome :=\nifnull(round(sum(\n if (txn.transaction_type_enum in (2,5,8) /* repayment, repayment at disbursal, recovery repayment */,\n ifnull(txn.interest_portion_derived,0.00),\n 0))\n ,2),0.00) as 'Interest Income',\n\n@totalWriteOff :=\nifnull(round(sum(\n if (txn.transaction_type_enum = 6 /* write-off */,\n ifnull(txn.principal_portion_derived,0.00),\n 0))\n ,2),0.00) as 'Principal Write Off'\nfrom m_office o\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, '%')\n and ounder.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_client c on c.office_id = ounder.id\njoin m_loan l on l.client_id = c.id\njoin m_product_loan lp on lp.id = l.product_id\njoin m_loan_transaction txn on txn.loan_id = l.id\nleft join m_currency cur on cur.code = l.currency_code\nwhere txn.is_reversed = false\nand txn.transaction_type_enum not in (10,11)\nand o.id = ${officeId}\nand txn.transaction_date < date('${startDate}')\n\nunion all\n\nselect x.`Transaction Date`, x.`Transaction Type`, x.Office, x.`Loan Officer`, x.`Loan Account No`, x.`Loan Product`, x.`Currency`,\n x.`Client Account No`, x.Client, x.Amount, x.Principal, x.Interest,\ncast(round(\n if (x.transaction_type_enum = 1 /* disbursement */,\n @totalOutstandingPrincipal := @totalOutstandingPrincipal + x.`Amount`,\n @totalOutstandingPrincipal := @totalOutstandingPrincipal - x.`Principal`)\n ,2) as decimal(19,2)) as 'Outstanding Principal',\ncast(round(\n if (x.transaction_type_enum in (2,5,8) /* repayment, repayment at disbursal, recovery repayment */,\n @totalInterestIncome := @totalInterestIncome + x.`Interest`,\n @totalInterestIncome)\n ,2) as decimal(19,2)) as 'Interest Income',\ncast(round(\n if (x.transaction_type_enum = 6 /* write-off */,\n @totalWriteOff := @totalWriteOff + x.`Principal`,\n @totalWriteOff)\n ,2) as decimal(19,2)) as 'Principal Write Off'\nfrom\n(select txn.transaction_type_enum, txn.id as txn_id, txn.transaction_date as 'Transaction Date',\ncast(\n ifnull(re.enum_message_property, concat('Unknown Transaction Type Value: ' , txn.transaction_type_enum))\n as char) as 'Transaction Type',\nounder.`name` as Office, lo.display_name as 'Loan Officer',\nl.account_no as 'Loan Account No', lp.`name` as 'Loan Product',\nifnull(cur.display_symbol, l.currency_code) as Currency,\nc.account_no as 'Client Account No', c.display_name as 'Client',\nifnull(txn.amount,0.00) as Amount,\nifnull(txn.principal_portion_derived,0.00) as Principal,\nifnull(txn.interest_portion_derived,0.00) as Interest\nfrom m_office o\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, '%')\n and ounder.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_client c on c.office_id = ounder.id\njoin m_loan l on l.client_id = c.id\nleft join m_staff lo on lo.id = l.loan_officer_id\njoin m_product_loan lp on lp.id = l.product_id\njoin m_loan_transaction txn on txn.loan_id = l.id\nleft join m_currency cur on cur.code = l.currency_code\nleft join r_enum_value re on re.enum_name = 'transaction_type_enum'\n and re.enum_id = txn.transaction_type_enum\nwhere txn.is_reversed = false\nand txn.transaction_type_enum not in (10,11)\nand (ifnull(l.loan_officer_id, -10) = '${loanOfficerId}' or '-1' = '${loanOfficerId}')\nand o.id = ${officeId}\nand txn.transaction_date >= date('${startDate}')\nand txn.transaction_date <= date('${endDate}')\norder by txn.transaction_date, txn.id) x\n"); + + insert_m_permission(named, m_permission, "report", "READ_TxnRunningBalances", "TxnRunningBalances", "READ", 0); + + id = named.queryForObject(selectQuery.toSQL(), selectQuery.toParam(), Long.class); + selectQuery = new SelectQuery(stretchy_parameter.getName()); + selectQuery.addField(stretchy_parameter.getColumnByName("id").getName()); + selectQuery.addWhere(stretchy_parameter.getColumnByName("parameter_name").getName() + " IN (:name)", "name", String.class, Arrays.asList("startDateSelect", "endDateSelect", "OfficeIdSelectOne", "loanOfficerIdSelectAll")); + for (Long pid : named.queryForList(selectQuery.toSQL(), selectQuery.toParam(), Long.class)) { + InsertQuery insertQuery = new InsertQuery(stretchy_report_parameter.getName()); + insertQuery.addValue(stretchy_report_parameter.getColumnByName("report_id").getName(), id); + insertQuery.addValue(stretchy_report_parameter.getColumnByName("parameter_id").getName(), pid); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + } + + protected void insert_stretchy_report(NamedParameterJdbcTemplate named, Table table, String report_name, String report_type, String report_category, boolean core_report, boolean use_report, String description, String report_sql) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("report_name").getName(), report_name); + insertQuery.addValue(table.getColumnByName("report_type").getName(), report_type); + insertQuery.addValue(table.getColumnByName("report_category").getName(), report_category); + insertQuery.addValue(table.getColumnByName("core_report").getName(), core_report); + insertQuery.addValue(table.getColumnByName("use_report").getName(), use_report); + insertQuery.addValue(table.getColumnByName("description").getName(), description); + insertQuery.addValue(table.getColumnByName("report_sql").getName(), report_sql); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V62__AddStaffIdToMClientChanged.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V62__AddStaffIdToMClientChanged.java new file mode 100644 index 00000000..c6b740fc --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V62__AddStaffIdToMClientChanged.java @@ -0,0 +1,38 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V62__AddStaffIdToMClientChanged extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V62__AddStaffIdToMClientChanged + getInternalChecksum("V62__add_staff_id_to_m_client_changed.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "portfolio", "UNASSIGNSTAFF_CLIENT", "CLIENT", "UNASSIGNSTAFF", 0); + + updateLiquibase("V62__add_staff_id_to_m_client_changed.xml"); + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V63__AddSyncDisbursementWithMeetingColumnToLoan.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V63__AddSyncDisbursementWithMeetingColumnToLoan.java new file mode 100644 index 00000000..06f8833f --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V63__AddSyncDisbursementWithMeetingColumnToLoan.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V63__AddSyncDisbursementWithMeetingColumnToLoan extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V63__AddSyncDisbursementWithMeetingColumnToLoan + getInternalChecksum("V63__add_sync_disbursement_with_meeting_column_to_loan.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V63__add_sync_disbursement_with_meeting_column_to_loan.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V64__AddPermissionForAssignStaff.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V64__AddPermissionForAssignStaff.java new file mode 100644 index 00000000..6ad17338 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V64__AddPermissionForAssignStaff.java @@ -0,0 +1,36 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V64__AddPermissionForAssignStaff extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V64__AddPermissionForAssignStaff; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "portfolio", "ASSIGNSTAFF_CLIENT", "CLIENT", "ASSIGNSTAFF", 0); + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V65__FixRupeeSymbolIssues.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V65__FixRupeeSymbolIssues.java new file mode 100644 index 00000000..80722548 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V65__FixRupeeSymbolIssues.java @@ -0,0 +1,48 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.jdbc.query.UpdateQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V65__FixRupeeSymbolIssues extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V65__FixRupeeSymbolIssues; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + UpdateQuery updateQuery = null; + + Table m_currency = dataContext.getDefaultSchema().getTableByName("m_currency"); + updateQuery = new UpdateQuery(m_currency.getName()); + updateQuery.addValue(m_currency.getColumnByName("display_symbol").getName(), "₹"); + updateQuery.addWhere(m_currency.getColumnByName("id").getName() + " = :id", 64); + named.update(updateQuery.toSQL(), updateQuery.toParam()); + + Table m_organisation_currency = dataContext.getDefaultSchema().getTableByName("m_organisation_currency"); + updateQuery = new UpdateQuery(m_organisation_currency.getName()); + updateQuery.addValue(m_organisation_currency.getColumnByName("display_symbol").getName(), "₹"); + updateQuery.addWhere(m_organisation_currency.getColumnByName("code").getName() + " = :code", "INR"); + named.update(updateQuery.toSQL(), updateQuery.toParam()); + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V66__ClientCloseFunctionality.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V66__ClientCloseFunctionality.java new file mode 100644 index 00000000..10ec74c7 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V66__ClientCloseFunctionality.java @@ -0,0 +1,50 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V66__ClientCloseFunctionality extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V66__ClientCloseFunctionality + getInternalChecksum("V66__client_close_functionality.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + dataContext.refreshSchemas(); + Table m_code = dataContext.getDefaultSchema().getTableByName("m_code"); + insert_m_code(named, m_code, "ClientClosureReason", 1); + + dataContext.refreshSchemas(); + updateLiquibase("V66__client_close_functionality.xml"); + + dataContext.refreshSchemas(); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "portfolio", "CLOSE_CLIENT", "CLIENT", "CLOSE"); + } + + protected void insert_m_code(NamedParameterJdbcTemplate named, Table table, String code_name, long is_system_defined) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("code_name").getName(), code_name); + insertQuery.addValue(table.getColumnByName("is_system_defined").getName(), is_system_defined); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V67__LoansInAdvanceTable.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V67__LoansInAdvanceTable.java new file mode 100644 index 00000000..15cae2bf --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V67__LoansInAdvanceTable.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V67__LoansInAdvanceTable extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V67__LoansInAdvanceTable + getInternalChecksum("V67__loans_in_advance_table.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V67__loans_in_advance_table.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V68__QuipoDashboardReportsUpdated.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V68__QuipoDashboardReportsUpdated.java new file mode 100644 index 00000000..58525da1 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V68__QuipoDashboardReportsUpdated.java @@ -0,0 +1,99 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.DeleteQuery; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; +import java.util.Arrays; + +public class V68__QuipoDashboardReportsUpdated extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V68__QuipoDashboardReportsUpdated; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + DeleteQuery deleteQuery = null; + + Table stretchy_report = dataContext.getDefaultSchema().getTableByName("stretchy_report"); + deleteQuery = new DeleteQuery(stretchy_report.getName()); + deleteQuery.addWhere(stretchy_report.getColumnByName("report_name").getName() + " IN (:report_name)", + "report_name", + String.class, + Arrays.asList("FieldAgentStats", + "FieldAgentPrograms", + "ProgramDetails", + "ChildrenStaffList", + "CoordinatorStats", + "BranchManagerStats", + "ProgramDirectorStats", + "ProgramStats") + ); + named.update(deleteQuery.toSQL(), deleteQuery.toParam()); + + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + deleteQuery = new DeleteQuery(m_permission.getName()); + deleteQuery.addWhere(m_permission.getColumnByName("entity_name").getName() + " IN (:entity_name)", + "entity_name", + String.class, + Arrays.asList("FieldAgentStats", + "FieldAgentPrograms", + "ProgramDetails", + "ChildrenStaffList", + "CoordinatorStats", + "BranchManagerStats", + "ProgramDirectorStats", + "ProgramStats") + ); + named.update(deleteQuery.toSQL(), deleteQuery.toParam()); + + insert_stretchy_report(named, stretchy_report, "FieldAgentStats", "Table", "Quipo", false, false, "Field Agent Statistics", "\nselect ifnull(cur.display_symbol, l.currency_code) as Currency,\n/*This query will return more than one entry if more than one currency is used */\ncount(distinct(c.id)) as activeClients, count(*) as activeLoans,\nsum(l.principal_disbursed_derived) as disbursedAmount,\nsum(l.principal_outstanding_derived) as loanOutstandingAmount,\nround((sum(l.principal_outstanding_derived) * 100) / sum(l.principal_disbursed_derived),2) as loanOutstandingPC,\nsum(ifnull(lpa.principal_in_advance_derived,0.0)) as LoanPaidInAdvance,\nsum(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n l.principal_outstanding_derived,0)) as portfolioAtRisk,\n\nround((sum(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n l.principal_outstanding_derived,0)) * 100) / sum(l.principal_outstanding_derived), 2) as portfolioAtRiskPC,\n\ncount(distinct(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n c.id,null))) as clientsInDefault,\nround((count(distinct(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n c.id,null))) * 100) / count(distinct(c.id)),2) as clientsInDefaultPC,\n(sum(l.principal_disbursed_derived) / count(*)) as averageLoanAmount\nfrom m_staff fa\njoin m_office o on o.id = fa.office_id\n and o.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_group pgm on pgm.staff_id = fa.id\njoin m_loan l on l.group_id = pgm.id and l.client_id is not null\nleft join m_currency cur on cur.code = l.currency_code\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\nleft join m_loan_paid_in_advance lpa on lpa.loan_id = l.id\njoin m_client c on c.id = l.client_id\nwhere fa.id = ${staffId}\nand l.loan_status_id = 300\ngroup by l.currency_code\n"); + insert_stretchy_report(named, stretchy_report, "FieldAgentPrograms", "Table", "Quipo", false, false, "List of Field Agent Programs", "\nselect pgm.id, pgm.display_name as `name`, sts.enum_message_property as status\n from m_group pgm\n join m_office o on o.id = pgm.office_id\n and o.hierarchy like concat('${currentUserHierarchy}', '%')\n left join r_enum_value sts on sts.enum_name = 'status_enum' and sts.enum_id = pgm.status_enum\n where pgm.staff_id = ${staffId}\n"); + insert_stretchy_report(named, stretchy_report, "ProgramDetails", "Table", "Quipo", false, false, "List of Loans in a Program", "\n select l.id as loanId, l.account_no as loanAccountNo, c.id as clientId, c.account_no as clientAccountNo,\n pgm.display_name as programName,\n\n(select count(*)\nfrom m_loan cy\nwhere cy.group_id = pgm.id and cy.client_id =c.id\nand cy.disbursedon_date <= l.disbursedon_date) as loanCycleNo,\n\nc.display_name as clientDisplayName,\n ifnull(cur.display_symbol, l.currency_code) as Currency,\nifnull(l.principal_repaid_derived,0.0) as loanRepaidAmount,\nifnull(l.principal_outstanding_derived, 0.0) as loanOutstandingAmount,\nsum(ifnull(lpa.principal_in_advance_derived,0.0)) as LoanPaidInAdvance,\n\nifnull(laa.principal_overdue_derived, 0.0) as loanInArrearsAmount,\nif(ifnull(laa.principal_overdue_derived, 0.00) > 0, 'Yes', 'No') as inDefault,\n\nif(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n l.principal_outstanding_derived,0) as portfolioAtRisk\n\n from m_group pgm\n join m_office o on o.id = pgm.office_id\n and o.hierarchy like concat('${currentUserHierarchy}', '%')\n join m_loan l on l.group_id = pgm.id and l.client_id is not null\n left join m_currency cur on cur.code = l.currency_code\n join m_client c on c.id = l.client_id\n left join m_loan_arrears_aging laa on laa.loan_id = l.id\n left join m_loan_paid_in_advance lpa on lpa.loan_id = l.id\n where pgm.id = ${programId}\n and l.loan_status_id = 300\norder by c.display_name, l.account_no\n\n"); + insert_stretchy_report(named, stretchy_report, "ChildrenStaffList", "Table", "Quipo", false, false, "Get Next Level Down Staff", "\n select s.id, s.display_name,\ns.firstname, s.lastname, s.organisational_role_enum,\ns.organisational_role_parent_staff_id,\nsp.display_name as `organisational_role_parent_staff_display_name`\nfrom m_staff s\njoin m_staff sp on s.organisational_role_parent_staff_id = sp.id\nwhere s.organisational_role_parent_staff_id = ${staffId}\n"); + insert_stretchy_report(named, stretchy_report, "CoordinatorStats", "Table", "Quipo", false, false, "Coordinator Statistics", "\nselect ifnull(cur.display_symbol, l.currency_code) as Currency,\n/*This query will return more than one entry if more than one currency is used */\ncount(distinct(c.id)) as activeClients, count(*) as activeLoans,\nsum(l.principal_disbursed_derived) as disbursedAmount,\nsum(l.principal_outstanding_derived) as loanOutstandingAmount,\nround((sum(l.principal_outstanding_derived) * 100) / sum(l.principal_disbursed_derived),2) as loanOutstandingPC,\nsum(ifnull(lpa.principal_in_advance_derived,0.0)) as LoanPaidInAdvance,\nsum(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n l.principal_outstanding_derived,0)) as portfolioAtRisk,\n\nround((sum(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n l.principal_outstanding_derived,0)) * 100) / sum(l.principal_outstanding_derived), 2) as portfolioAtRiskPC,\n\ncount(distinct(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n c.id,null))) as clientsInDefault,\nround((count(distinct(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n c.id,null))) * 100) / count(distinct(c.id)),2) as clientsInDefaultPC,\n(sum(l.principal_disbursed_derived) / count(*)) as averageLoanAmount\nfrom m_staff coord\njoin m_staff fa on fa.organisational_role_parent_staff_id = coord.id\njoin m_office o on o.id = fa.office_id\n and o.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_group pgm on pgm.staff_id = fa.id\njoin m_loan l on l.group_id = pgm.id and l.client_id is not null\nleft join m_currency cur on cur.code = l.currency_code\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\nleft join m_loan_paid_in_advance lpa on lpa.loan_id = l.id\njoin m_client c on c.id = l.client_id\nwhere coord.id = ${staffId}\nand l.loan_status_id = 300\ngroup by l.currency_code\n"); + insert_stretchy_report(named, stretchy_report, "BranchManagerStats", "Table", "Quipo", false, false, "Branch Manager Statistics", "\nselect ifnull(cur.display_symbol, l.currency_code) as Currency,\n/*This query will return more than one entry if more than one currency is used */\ncount(distinct(c.id)) as activeClients, count(*) as activeLoans,\nsum(l.principal_disbursed_derived) as disbursedAmount,\nsum(l.principal_outstanding_derived) as loanOutstandingAmount,\nround((sum(l.principal_outstanding_derived) * 100) / sum(l.principal_disbursed_derived),2) as loanOutstandingPC,\nsum(ifnull(lpa.principal_in_advance_derived,0.0)) as LoanPaidInAdvance,\nsum(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n l.principal_outstanding_derived,0)) as portfolioAtRisk,\n\nround((sum(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n l.principal_outstanding_derived,0)) * 100) / sum(l.principal_outstanding_derived), 2) as portfolioAtRiskPC,\n\ncount(distinct(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n c.id,null))) as clientsInDefault,\nround((count(distinct(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n c.id,null))) * 100) / count(distinct(c.id)),2) as clientsInDefaultPC,\n(sum(l.principal_disbursed_derived) / count(*)) as averageLoanAmount\nfrom m_staff bm\njoin m_staff coord on coord.organisational_role_parent_staff_id = bm.id\njoin m_staff fa on fa.organisational_role_parent_staff_id = coord.id\njoin m_office o on o.id = fa.office_id\n and o.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_group pgm on pgm.staff_id = fa.id\njoin m_loan l on l.group_id = pgm.id and l.client_id is not null\nleft join m_currency cur on cur.code = l.currency_code\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\nleft join m_loan_paid_in_advance lpa on lpa.loan_id = l.id\njoin m_client c on c.id = l.client_id\nwhere bm.id = ${staffId}\nand l.loan_status_id = 300\ngroup by l.currency_code\n"); + insert_stretchy_report(named, stretchy_report, "ProgramDirectorStats", "Table", "Quipo", false, false, "Program DirectorStatistics", "\nselect ifnull(cur.display_symbol, l.currency_code) as Currency,\n/*This query will return more than one entry if more than one currency is used */\ncount(distinct(c.id)) as activeClients, count(*) as activeLoans,\nsum(l.principal_disbursed_derived) as disbursedAmount,\nsum(l.principal_outstanding_derived) as loanOutstandingAmount,\nround((sum(l.principal_outstanding_derived) * 100) / sum(l.principal_disbursed_derived),2) as loanOutstandingPC,\nsum(ifnull(lpa.principal_in_advance_derived,0.0)) as LoanPaidInAdvance,\nsum(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n l.principal_outstanding_derived,0)) as portfolioAtRisk,\n\nround((sum(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n l.principal_outstanding_derived,0)) * 100) / sum(l.principal_outstanding_derived), 2) as portfolioAtRiskPC,\n\ncount(distinct(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n c.id,null))) as clientsInDefault,\nround((count(distinct(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n c.id,null))) * 100) / count(distinct(c.id)),2) as clientsInDefaultPC,\n(sum(l.principal_disbursed_derived) / count(*)) as averageLoanAmount\nfrom m_staff pd\njoin m_staff bm on bm.organisational_role_parent_staff_id = pd.id\njoin m_staff coord on coord.organisational_role_parent_staff_id = bm.id\njoin m_staff fa on fa.organisational_role_parent_staff_id = coord.id\njoin m_office o on o.id = fa.office_id\n and o.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_group pgm on pgm.staff_id = fa.id\njoin m_loan l on l.group_id = pgm.id and l.client_id is not null\nleft join m_currency cur on cur.code = l.currency_code\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\nleft join m_loan_paid_in_advance lpa on lpa.loan_id = l.id\njoin m_client c on c.id = l.client_id\nwhere pd.id = ${staffId}\nand l.loan_status_id = 300\ngroup by l.currency_code\n"); + insert_stretchy_report(named, stretchy_report, "ProgramStats", "Table", "Quipo", false, false, "Program Statistics", "\nselect ifnull(cur.display_symbol, l.currency_code) as Currency,\n/*This query will return more than one entry if more than one currency is used */\ncount(distinct(c.id)) as activeClients, count(*) as activeLoans,\nsum(l.principal_disbursed_derived) as disbursedAmount,\nsum(l.principal_outstanding_derived) as loanOutstandingAmount,\nround((sum(l.principal_outstanding_derived) * 100) / sum(l.principal_disbursed_derived),2) as loanOutstandingPC,\nsum(ifnull(lpa.principal_in_advance_derived,0.0)) as LoanPaidInAdvance,\nsum(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n l.principal_outstanding_derived,0)) as portfolioAtRisk,\n\nround((sum(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n l.principal_outstanding_derived,0)) * 100) / sum(l.principal_outstanding_derived), 2) as portfolioAtRiskPC,\n\ncount(distinct(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n c.id,null))) as clientsInDefault,\nround((count(distinct(\n if(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n c.id,null))) * 100) / count(distinct(c.id)),2) as clientsInDefaultPC,\n(sum(l.principal_disbursed_derived) / count(*)) as averageLoanAmount\nfrom m_group pgm\njoin m_office o on o.id = pgm.office_id\n and o.hierarchy like concat('${currentUserHierarchy}', '%')\njoin m_loan l on l.group_id = pgm.id and l.client_id is not null\nleft join m_currency cur on cur.code = l.currency_code\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\nleft join m_loan_paid_in_advance lpa on lpa.loan_id = l.id\njoin m_client c on c.id = l.client_id\nwhere pgm.id = ${programId}\nand l.loan_status_id = 300\ngroup by l.currency_code\n"); + + insert_m_permission(named, m_permission, "report", "READ_FieldAgentStats", "FieldAgentStats", "READ", 0); + insert_m_permission(named, m_permission, "report", "READ_FieldAgentPrograms", "FieldAgentPrograms", "READ", 0); + insert_m_permission(named, m_permission, "report", "READ_ProgramDetails", "ProgramDetails", "READ", 0); + insert_m_permission(named, m_permission, "report", "READ_ChildrenStaffList", "ChildrenStaffList", "READ", 0); + insert_m_permission(named, m_permission, "report", "READ_CoordinatorStats", "CoordinatorStats", "READ", 0); + insert_m_permission(named, m_permission, "report", "READ_BranchManagerStats", "BranchManagerStats", "READ", 0); + insert_m_permission(named, m_permission, "report", "READ_ProgramDirectorStats", "ProgramDirectorStats", "READ", 0); + insert_m_permission(named, m_permission, "report", "READ_ProgramStats", "ProgramStats", "READ", 0); + } + + protected void insert_stretchy_report(NamedParameterJdbcTemplate named, Table table, String report_name, String report_type, String report_category, boolean core_report, boolean use_report, String description, String report_sql) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("report_name").getName(), report_name); + insertQuery.addValue(table.getColumnByName("report_type").getName(), report_type); + insertQuery.addValue(table.getColumnByName("report_category").getName(), report_category); + insertQuery.addValue(table.getColumnByName("core_report").getName(), core_report); + insertQuery.addValue(table.getColumnByName("use_report").getName(), use_report); + insertQuery.addValue(table.getColumnByName("description").getName(), description); + insertQuery.addValue(table.getColumnByName("report_sql").getName(), report_sql); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V69__LoansInAdvanceInitialise.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V69__LoansInAdvanceInitialise.java new file mode 100644 index 00000000..6036a2bb --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V69__LoansInAdvanceInitialise.java @@ -0,0 +1,71 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.DeleteQuery; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.jdbc.query.SelectQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +public class V69__LoansInAdvanceInitialise extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V69__LoansInAdvanceInitialise; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + DeleteQuery deleteQuery = null; + SelectQuery selectQuery = null; + + Table m_loan_paid_in_advance = dataContext.getDefaultSchema().getTableByName("m_loan_paid_in_advance"); + deleteQuery = new DeleteQuery(m_loan_paid_in_advance.getName()); + named.update(deleteQuery.toSQL(), deleteQuery.toParam()); + + Table m_loan = dataContext.getDefaultSchema().getTableByName("m_loan"); + Table m_loan_repayment_schedule = dataContext.getDefaultSchema().getTableByName("m_loan_repayment_schedule"); + + selectQuery = new SelectQuery(m_loan.getName()); + selectQuery.addJoin("INNER JOIN " + m_loan_repayment_schedule.getName() + " ON " + m_loan.getColumnByName("id").getQualifiedLabel() + " = " + m_loan_repayment_schedule.getColumnByName("loan_id").getQualifiedLabel()); + selectQuery.addWhere(m_loan.getColumnByName("loan_status_id").getQualifiedLabel() + " = :loan_status_id", 300); + selectQuery.addWhere(m_loan_repayment_schedule.getColumnByName("duedate").getQualifiedLabel() + " >= :duedate", DateFormatUtils.ISO_8601_EXTENDED_DATE_FORMAT.format(new Date())); + selectQuery.addGroupBy(m_loan.getColumnByName("id").getQualifiedLabel()); + List havings = new ArrayList<>(); + havings.add("SUM(IFNULL(" + m_loan_repayment_schedule.getColumnByName("principal_completed_derived").getQualifiedLabel() + ",0))"); + havings.add("SUM(IFNULL(" + m_loan_repayment_schedule.getColumnByName("interest_completed_derived").getQualifiedLabel() + ",0))"); + havings.add("SUM(IFNULL(" + m_loan_repayment_schedule.getColumnByName("fee_charges_completed_derived").getQualifiedLabel() + ",0))"); + havings.add("SUM(IFNULL(" + m_loan_repayment_schedule.getColumnByName("penalty_charges_completed_derived").getQualifiedLabel() + ",0))"); + selectQuery.addHaving("(" + StringUtils.join(havings, " + ") + ") > 0.0"); + selectQuery.addField(m_loan.getColumnByName("id").getQualifiedLabel() + " AS loanId"); + selectQuery.addField("SUM(IFNULL(" + m_loan_repayment_schedule.getColumnByName("principal_completed_derived").getQualifiedLabel() + ",0)) AS principal_in_advance_derived"); + selectQuery.addField("SUM(IFNULL(" + m_loan_repayment_schedule.getColumnByName("interest_completed_derived").getQualifiedLabel() + ",0)) AS interest_in_advance_derived"); + selectQuery.addField("SUM(IFNULL(" + m_loan_repayment_schedule.getColumnByName("fee_charges_completed_derived").getQualifiedLabel() + ",0)) AS fee_charges_in_advance_derived"); + selectQuery.addField("SUM(IFNULL(" + m_loan_repayment_schedule.getColumnByName("penalty_charges_completed_derived").getQualifiedLabel() + ",0)) AS penalty_charges_in_advance_derived"); + selectQuery.addField("(" + StringUtils.join(havings, " + ") + ") AS total_in_advance_derived"); + + List> records = named.queryForList(selectQuery.toSQL(), selectQuery.toParam()); + for (Map record : records) { + InsertQuery insertQuery = new InsertQuery(m_loan_paid_in_advance.getName()); + insertQuery.addValue(m_loan_paid_in_advance.getColumnByName("loan_id").getName(), (Number) record.get("loanId")); + insertQuery.addValue(m_loan_paid_in_advance.getColumnByName("principal_in_advance_derived").getName(), (Number) record.get("principal_in_advance_derived")); + insertQuery.addValue(m_loan_paid_in_advance.getColumnByName("interest_in_advance_derived").getName(), (Number) record.get("interest_in_advance_derived")); + insertQuery.addValue(m_loan_paid_in_advance.getColumnByName("fee_charges_in_advance_derived").getName(), (Number) record.get("fee_charges_in_advance_derived")); + insertQuery.addValue(m_loan_paid_in_advance.getColumnByName("penalty_charges_in_advance_derived").getName(), (Number) record.get("penalty_charges_in_advance_derived")); + insertQuery.addValue(m_loan_paid_in_advance.getColumnByName("total_in_advance_derived").getName(), (Number) record.get("total_in_advance_derived")); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V6__AddMinMaxPrincipalColumnToLoan.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V6__AddMinMaxPrincipalColumnToLoan.java new file mode 100644 index 00000000..31283a2c --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V6__AddMinMaxPrincipalColumnToLoan.java @@ -0,0 +1,25 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V6__AddMinMaxPrincipalColumnToLoan extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V6__AddMinMaxPrincipalColumnToLoan + getInternalChecksum("V6__add_min_max_principal_column_to_loan.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + // sub change 001 + updateLiquibase("V6__add_min_max_principal_column_to_loan.xml"); + } + +} + diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V70__QuipoProgramDetailQueryFix.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V70__QuipoProgramDetailQueryFix.java new file mode 100644 index 00000000..c6b255e6 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V70__QuipoProgramDetailQueryFix.java @@ -0,0 +1,30 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.UpdateQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V70__QuipoProgramDetailQueryFix extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V70__QuipoProgramDetailQueryFix; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + UpdateQuery updateQuery = null; + dataContext.refreshSchemas(); + Table stretchy_report = dataContext.getDefaultSchema().getTableByName("stretchy_report"); + updateQuery = new UpdateQuery(stretchy_report.getName()); + updateQuery.addValue(stretchy_report.getColumnByName("report_sql").getName(), "\n select l.id as loanId, l.account_no as loanAccountNo, c.id as clientId, c.account_no as clientAccountNo,\n pgm.display_name as programName,\n\n(select count(*)\nfrom m_loan cy\nwhere cy.group_id = pgm.id and cy.client_id =c.id\nand cy.disbursedon_date <= l.disbursedon_date) as loanCycleNo,\n\nc.display_name as clientDisplayName,\n ifnull(cur.display_symbol, l.currency_code) as Currency,\nifnull(l.principal_repaid_derived,0.0) as loanRepaidAmount,\nifnull(l.principal_outstanding_derived, 0.0) as loanOutstandingAmount,\nifnull(lpa.principal_in_advance_derived,0.0) as LoanPaidInAdvance,\n\nifnull(laa.principal_overdue_derived, 0.0) as loanInArrearsAmount,\nif(ifnull(laa.principal_overdue_derived, 0.00) > 0, 'Yes', 'No') as inDefault,\n\nif(date_sub(curdate(), interval 28 day) > ifnull(laa.overdue_since_date_derived, curdate()),\n l.principal_outstanding_derived,0) as portfolioAtRisk\n\n from m_group pgm\n join m_office o on o.id = pgm.office_id\n and o.hierarchy like concat('${currentUserHierarchy}', '%')\n join m_loan l on l.group_id = pgm.id and l.client_id is not null\n left join m_currency cur on cur.code = l.currency_code\n join m_client c on c.id = l.client_id\n left join m_loan_arrears_aging laa on laa.loan_id = l.id\n left join m_loan_paid_in_advance lpa on lpa.loan_id = l.id\n where pgm.id = ${programId}\n and l.loan_status_id = 300\norder by c.display_name, l.account_no\n\n"); + updateQuery.addWhere(stretchy_report.getColumnByName("report_name").getName() + " = :name", "ProgramDetails"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V71__InsertRescheduleRepaymentToConfiguration.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V71__InsertRescheduleRepaymentToConfiguration.java new file mode 100644 index 00000000..8107d254 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V71__InsertRescheduleRepaymentToConfiguration.java @@ -0,0 +1,36 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.jdbc.query.UpdateQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V71__InsertRescheduleRepaymentToConfiguration extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V71__InsertRescheduleRepaymentToConfiguration; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + UpdateQuery updateQuery = null; + dataContext.refreshSchemas(); + Table c_configuration = dataContext.getDefaultSchema().getTableByName("c_configuration"); + insert_c_configuration(named, c_configuration, "reschedule-future-repayments", 1); + } + + protected void insert_c_configuration(NamedParameterJdbcTemplate named, Table table, String name, long enabled) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("name").getName(), name); + insertQuery.addValue(table.getColumnByName("enabled").getName(), enabled); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V72__AddMLoanCounterChanges.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V72__AddMLoanCounterChanges.java new file mode 100644 index 00000000..30f241fe --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V72__AddMLoanCounterChanges.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V72__AddMLoanCounterChanges extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V72__AddMLoanCounterChanges + getInternalChecksum("V72__add_m_loan_counter_changes.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V72__add_m_loan_counter_changes.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V73__AddRepaymentsRescheduledToAndProcessedColumnToHoliday.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V73__AddRepaymentsRescheduledToAndProcessedColumnToHoliday.java new file mode 100644 index 00000000..e00f709b --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V73__AddRepaymentsRescheduledToAndProcessedColumnToHoliday.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V73__AddRepaymentsRescheduledToAndProcessedColumnToHoliday extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V73__AddRepaymentsRescheduledToAndProcessedColumnToHoliday + getInternalChecksum("V73__add_repayments_rescheduled_to_and_processed_column_to_holiday.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V73__add_repayments_rescheduled_to_and_processed_column_to_holiday.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V74__AlterMLoanCounterTableAddGroup.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V74__AlterMLoanCounterTableAddGroup.java new file mode 100644 index 00000000..5cc2fc51 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V74__AlterMLoanCounterTableAddGroup.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V74__AlterMLoanCounterTableAddGroup extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V74__AlterMLoanCounterTableAddGroup + getInternalChecksum("V74__alter_m_loan_counter_table_add_group.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V74__alter_m_loan_counter_table_add_group.xml"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V75__AddRescheduleRepaymentsOnHolidaysToConfiguration.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V75__AddRescheduleRepaymentsOnHolidaysToConfiguration.java new file mode 100644 index 00000000..78cc2b51 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V75__AddRescheduleRepaymentsOnHolidaysToConfiguration.java @@ -0,0 +1,32 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V75__AddRescheduleRepaymentsOnHolidaysToConfiguration extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V75__AddRescheduleRepaymentsOnHolidaysToConfiguration; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + Table c_configuration = dataContext.getDefaultSchema().getTableByName("c_configuration"); + insert_c_configuration(named, c_configuration, "reschedule-repayments-on-holidays"); + } + + protected void insert_c_configuration(NamedParameterJdbcTemplate named, Table table, String name) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("name").getName(), name); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V76__RenamePermissionGrouping.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V76__RenamePermissionGrouping.java new file mode 100644 index 00000000..4ae57299 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V76__RenamePermissionGrouping.java @@ -0,0 +1,39 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.UpdateQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V76__RenamePermissionGrouping extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V76__RenamePermissionGrouping; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + UpdateQuery updateQuery = null; + + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + + updateQuery = new UpdateQuery(m_permission.getName()); + updateQuery.addValue(m_permission.getColumnByName("grouping").getQualifiedLabel(), "portfolio_center"); + updateQuery.addWhere(m_permission.getColumnByName("code").getName() + " like :code", "code", "%center%"); + updateQuery.addWhere(m_permission.getColumnByName("grouping").getQualifiedLabel() + " = :g", "portfolio"); + named.update(updateQuery.toSQL(), updateQuery.toParam()); + + updateQuery = new UpdateQuery(m_permission.getName()); + updateQuery.addValue(m_permission.getColumnByName("grouping").getQualifiedLabel(), "portfolio_group"); + updateQuery.addWhere(m_permission.getColumnByName("code").getName() + " like :code", "code", "%group%"); + updateQuery.addWhere(m_permission.getColumnByName("grouping").getQualifiedLabel() + " = :g", "portfolio"); + named.update(updateQuery.toSQL(), updateQuery.toParam()); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V77__AlterMProductLoanChanges.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V77__AlterMProductLoanChanges.java new file mode 100644 index 00000000..947e3faf --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V77__AlterMProductLoanChanges.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V77__AlterMProductLoanChanges extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V77__AlterMProductLoanChanges + getInternalChecksum("V77__alter_m_product_loan_changes.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V77__alter_m_product_loan_changes.xml"); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V78__BreakdownPortfolioGrouping.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V78__BreakdownPortfolioGrouping.java new file mode 100644 index 00000000..17c92484 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V78__BreakdownPortfolioGrouping.java @@ -0,0 +1,32 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.UpdateQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V78__BreakdownPortfolioGrouping extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V78__BreakdownPortfolioGrouping; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + UpdateQuery updateQuery = null; + + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + + updateQuery = new UpdateQuery(m_permission.getName()); + updateQuery.addValue(m_permission.getColumnByName("grouping").getQualifiedLabel(), "accounting"); + updateQuery.addWhere(m_permission.getColumnByName("grouping").getQualifiedLabel() + " = :g", "organistion"); + named.update(updateQuery.toSQL(), updateQuery.toParam()); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V79__ScheduleJobsTables.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V79__ScheduleJobsTables.java new file mode 100644 index 00000000..65ca981e --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V79__ScheduleJobsTables.java @@ -0,0 +1,51 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; +import java.util.Date; + +public class V79__ScheduleJobsTables extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V79__ScheduleJobsTables + getInternalChecksum("V79__schedule_jobs_tables.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V79__schedule_jobs_tables.xml"); + + dataContext.refreshSchemas(); + + Table scheduled_jobs = dataContext.getDefaultSchema().getTableByName("scheduled_jobs"); + insert_scheduled_jobs(named, scheduled_jobs, "Update loan Summary", "Update loan Summary", "0 0 22 1/1 * ? *", new Date(), 5, null, null, null, null, null, 1); + insert_scheduled_jobs(named, scheduled_jobs, "Update Loan Arrears Ageing", "Update Loan Arrears Ageing", "0 1 0 1/1 * ? *", new Date(), 5, null, null, null, null, null, 1); + insert_scheduled_jobs(named, scheduled_jobs, "Update Loan Paid In Advance", "Update Loan Paid In Advance", "0 5 0 1/1 * ? *", new Date(), 5, null, null, null, null, null, 1); + insert_scheduled_jobs(named, scheduled_jobs, "Apply Annual Fee For Savings", "Apply Annual Fee For Savings", "0 20 22 1/1 * ? *", new Date(), 5, null, null, null, null, null, 1); + insert_scheduled_jobs(named, scheduled_jobs, "Apply Holidays To Loans", "Apply Holidays To Loans", "0 0 12 * * ?", new Date(), 5, null, null, null, null, null, 1); + } + + protected void insert_scheduled_jobs(NamedParameterJdbcTemplate named, Table table, String job_name, String job_display_name, String cron_expression, Date create_time, long task_priority, String group_name, Date previous_run_start_time, Date next_run_time, String trigger_key, String job_initializing_errorlog, long is_active) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("job_name").getName(), job_name); + insertQuery.addValue(table.getColumnByName("job_display_name").getName(), job_display_name); + insertQuery.addValue(table.getColumnByName("cron_expression").getName(), cron_expression); + insertQuery.addValue(table.getColumnByName("create_time").getName(), create_time); + insertQuery.addValue(table.getColumnByName("task_priority").getName(), task_priority); + insertQuery.addValue(table.getColumnByName("group_name").getName(), group_name); + insertQuery.addValue(table.getColumnByName("previous_run_start_time").getName(), previous_run_start_time); + insertQuery.addValue(table.getColumnByName("next_run_time").getName(), next_run_time); + insertQuery.addValue(table.getColumnByName("trigger_key").getName(), trigger_key); + insertQuery.addValue(table.getColumnByName("job_initializing_errorlog").getName(), job_initializing_errorlog); + insertQuery.addValue(table.getColumnByName("is_active").getName(), is_active); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V7__RemoveReadMakerCheckerPermission.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V7__RemoveReadMakerCheckerPermission.java new file mode 100644 index 00000000..0a878cce --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V7__RemoveReadMakerCheckerPermission.java @@ -0,0 +1,51 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.DeleteQuery; +import com.angkorteam.jdbc.query.SelectQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V7__RemoveReadMakerCheckerPermission extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V7__RemoveReadMakerCheckerPermission; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + { + dataContext.refreshSchemas(); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + Table m_role_permission = dataContext.getDefaultSchema().getTableByName("m_role_permission"); + long permission_id = lookup_m_permission(named, dataContext, "READ_MAKERCHECKER"); + DeleteQuery deleteQuery = null; + + deleteQuery = new DeleteQuery(m_role_permission.getName()); + deleteQuery.addWhere(m_role_permission.getColumnByName("permission_id").getName() + " = :permission_id", permission_id); + named.update(deleteQuery.toSQL(), deleteQuery.toParam()); + + deleteQuery = new DeleteQuery(m_permission.getName()); + deleteQuery.addWhere(m_permission.getColumnByName("id").getName() + " = :id", permission_id); + named.update(deleteQuery.toSQL(), deleteQuery.toParam()); + } + } + + protected long lookup_m_permission(NamedParameterJdbcTemplate named, DataContext dataContext, String code) { + Table table = dataContext.getDefaultSchema().getTableByName("m_permission"); + SelectQuery selectQuery = new SelectQuery(table.getName()); + selectQuery.addField(table.getColumnByName("id").getName()); + selectQuery.addWhere(table.getColumnByName("code").getName() + " = :code", code); + Long id = named.queryForObject(selectQuery.toSQL(), selectQuery.toParam(), long.class); + return id == null ? 0 : id; + } + +} + diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V80__ScheduleJobsTablesUpdates.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V80__ScheduleJobsTablesUpdates.java new file mode 100644 index 00000000..31bf5743 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V80__ScheduleJobsTablesUpdates.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V80__ScheduleJobsTablesUpdates extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V80__ScheduleJobsTablesUpdates + getInternalChecksum("V80__schedule_jobs_tables_updates.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V80__schedule_jobs_tables_updates.xml"); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V81__SavingsRelatedChanges.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V81__SavingsRelatedChanges.java new file mode 100644 index 00000000..96a290b5 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V81__SavingsRelatedChanges.java @@ -0,0 +1,59 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.DeleteQuery; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; +import java.util.Arrays; +import java.util.Collections; + +public class V81__SavingsRelatedChanges extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V81__SavingsRelatedChanges + getInternalChecksum("V81__savings_related_changes.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V81__savings_related_changes.xml"); + + dataContext.refreshSchemas(); + Table m_savings_account = dataContext.getDefaultSchema().getTableByName("m_savings_account"); + named.update("UPDATE " + m_savings_account.getName() + " SET " + m_savings_account.getColumnByName("submittedon_date").getName() + " = " + m_savings_account.getColumnByName("activatedon_date").getName() + ", " + m_savings_account.getColumnByName("approvedon_date").getName() + " = " + m_savings_account.getColumnByName("activatedon_date").getName(), Collections.emptyMap()); + + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "transaction_savings", "APPROVE_SAVINGSACCOUNT", "SAVINGSACCOUNT", "APPROVE", 1); + insert_m_permission(named, m_permission, "transaction_savings", "REJECT_SAVINGSACCOUNT", "SAVINGSACCOUNT", "REJECT", 1); + insert_m_permission(named, m_permission, "transaction_savings", "WITHDRAW_SAVINGSACCOUNT", "SAVINGSACCOUNT", "WITHDRAW", 1); + insert_m_permission(named, m_permission, "transaction_savings", "APPROVALUNDO_SAVINGSACCOUNT", "SAVINGSACCOUNT", "APPROVALUNDO", 1); + insert_m_permission(named, m_permission, "transaction_savings", "CLOSE_SAVINGSACCOUNT", "SAVINGSACCOUNT", "CLOSE", 1); + + insert_m_permission(named, m_permission, "transaction_savings", "APPROVE_SAVINGSACCOUNT_CHECKER", "SAVINGSACCOUNT", "APPROVE", 0); + insert_m_permission(named, m_permission, "transaction_savings", "REJECT_SAVINGSACCOUNT_CHECKER", "SAVINGSACCOUNT", "REJECT", 0); + insert_m_permission(named, m_permission, "transaction_savings", "WITHDRAW_SAVINGSACCOUNT_CHECKER", "SAVINGSACCOUNT", "WITHDRAW", 0); + insert_m_permission(named, m_permission, "transaction_savings", "APPROVALUNDO_SAVINGSACCOUNT_CHECKER", "SAVINGSACCOUNT", "APPROVALUNDO", 0); + insert_m_permission(named, m_permission, "transaction_savings", "CLOSE_SAVINGSACCOUNT_CHECKER", "SAVINGSACCOUNT", "CLOSE", 0); + + DeleteQuery deleteQuery = new DeleteQuery(m_permission.getName()); + deleteQuery.addWhere(m_permission.getColumnByName("id").getName() + " IN (:id)", "id", String.class, Arrays.asList("210", "212", "214", "217", "220", "233", "235", "237", "240", "243")); + named.update(deleteQuery.toSQL(), deleteQuery.toParam()); + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V82__ScheduleJobsTablesUpdatesForRunningStatus.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V82__ScheduleJobsTablesUpdatesForRunningStatus.java new file mode 100644 index 00000000..72ae65a9 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V82__ScheduleJobsTablesUpdatesForRunningStatus.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V82__ScheduleJobsTablesUpdatesForRunningStatus extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V82__ScheduleJobsTablesUpdatesForRunningStatus + getInternalChecksum("V82__schedule_jobs_tables_updates_for_running_status.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V82__schedule_jobs_tables_updates_for_running_status.xml"); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V83__NonWorkingDaysTable.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V83__NonWorkingDaysTable.java new file mode 100644 index 00000000..223a7c6a --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V83__NonWorkingDaysTable.java @@ -0,0 +1,36 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V83__NonWorkingDaysTable extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V83__NonWorkingDaysTable + getInternalChecksum("V83__non-working-days-table.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V83__non-working-days-table.xml"); + + dataContext.refreshSchemas(); + Table m_working_days = dataContext.getDefaultSchema().getTableByName("m_working_days"); + insert_m_working_days(named, m_working_days, "FREQ=WEEKLY;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR,SA", 2); + } + + protected void insert_m_working_days(NamedParameterJdbcTemplate named, Table table, String recurrence, long repayment_rescheduling_enum) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("recurrence").getName(), recurrence); + insertQuery.addValue(table.getColumnByName("repayment_rescheduling_enum").getName(), repayment_rescheduling_enum); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V84__UndoSavingsTransactionPermission.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V84__UndoSavingsTransactionPermission.java new file mode 100644 index 00000000..bc8745a2 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V84__UndoSavingsTransactionPermission.java @@ -0,0 +1,38 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V84__UndoSavingsTransactionPermission extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V84__UndoSavingsTransactionPermission; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + dataContext.refreshSchemas(); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "transaction_savings", "UNDOTRANSACTION_SAVINGSACCOUNT", "SAVINGSACCOUNT", "UNDOTRANSACTION", 1); + insert_m_permission(named, m_permission, "transaction_savings", "UNDOTRANSACTION_SAVINGSACCOUNT_CHECKER", "SAVINGSACCOUNT", "UNDOTRANSACTION", 0); + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V85__ProductMixRelatedChanges.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V85__ProductMixRelatedChanges.java new file mode 100644 index 00000000..b5c08724 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V85__ProductMixRelatedChanges.java @@ -0,0 +1,41 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V85__ProductMixRelatedChanges extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V85__ProductMixRelatedChanges + getInternalChecksum("V85__product_mix_related_changes.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V85__product_mix_related_changes.xml"); + dataContext.refreshSchemas(); + + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "portfolio", "CREATE_PRODUCTMIX", "PRODUCTMIX", "CREATE", 0); + insert_m_permission(named, m_permission, "portfolio", "UPDATE_PRODUCTMIX", "PRODUCTMIX", "UPDATE", 0); + insert_m_permission(named, m_permission, "portfolio", "DELETE_PRODUCTMIX", "PRODUCTMIX", "DELETE", 0); + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V86__UpdateWorkingDays.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V86__UpdateWorkingDays.java new file mode 100644 index 00000000..65f68c55 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V86__UpdateWorkingDays.java @@ -0,0 +1,36 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; +import java.util.Collections; + +public class V86__UpdateWorkingDays extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V86__UpdateWorkingDays; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + dataContext.refreshSchemas(); + Table m_working_days = dataContext.getDefaultSchema().getTableByName("m_working_days"); + named.update("DELETE FROM " + m_working_days.getName(), Collections.emptyMap()); + insert_m_working_days(named, m_working_days, "FREQ=WEEKLY;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR,SA,SU", 2); + } + + protected void insert_m_working_days(NamedParameterJdbcTemplate named, Table table, String recurrence, long repayment_rescheduling_enum) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("recurrence").getName(), recurrence); + insertQuery.addValue(table.getColumnByName("repayment_rescheduling_enum").getName(), repayment_rescheduling_enum); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V87__AddPermissionForScheduler.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V87__AddPermissionForScheduler.java new file mode 100644 index 00000000..bc34b9d7 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V87__AddPermissionForScheduler.java @@ -0,0 +1,37 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V87__AddPermissionForScheduler extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V87__AddPermissionForScheduler; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + dataContext.refreshSchemas(); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "jobs", "UPDATE_SCHEDULER", "SCHEDULER", "UPDATE", 0); + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V88__AddedUpdateConstrainForSchedulerJobs.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V88__AddedUpdateConstrainForSchedulerJobs.java new file mode 100644 index 00000000..3cd97a7b --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V88__AddedUpdateConstrainForSchedulerJobs.java @@ -0,0 +1,24 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V88__AddedUpdateConstrainForSchedulerJobs extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V88__AddedUpdateConstrainForSchedulerJobs + getInternalChecksum("V88__added_update_constrain_for_scheduler_jobs.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V88__added_update_constrain_for_scheduler_jobs.xml"); + } + + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V89__AddedSchedulerGroup.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V89__AddedSchedulerGroup.java new file mode 100644 index 00000000..61466cc6 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V89__AddedSchedulerGroup.java @@ -0,0 +1,24 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V89__AddedSchedulerGroup extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V89__AddedSchedulerGroup + getInternalChecksum("V89__added_scheduler_group.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V89__added_scheduler_group.xml"); + } + + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V8__DepositTransactionPermissionsIfTheyExist.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V8__DepositTransactionPermissionsIfTheyExist.java new file mode 100644 index 00000000..be08ad84 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V8__DepositTransactionPermissionsIfTheyExist.java @@ -0,0 +1,35 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.DeleteQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V8__DepositTransactionPermissionsIfTheyExist extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V8__DepositTransactionPermissionsIfTheyExist; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + { + dataContext.refreshSchemas(); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + + DeleteQuery deleteQuery = null; + + deleteQuery = new DeleteQuery(m_permission.getName()); + deleteQuery.addWhere(m_permission.getColumnByName("grouping").getQualifiedLabel() + " = :grouping", "transaction_deposit"); + named.update(deleteQuery.toSQL(), deleteQuery.toParam()); + } + } + +} + diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V90__ClientPerformanceHistoryReports.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V90__ClientPerformanceHistoryReports.java new file mode 100644 index 00000000..f0b137bb --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V90__ClientPerformanceHistoryReports.java @@ -0,0 +1,41 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V90__ClientPerformanceHistoryReports extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V90__ClientPerformanceHistoryReports; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + dataContext.refreshSchemas(); + Table stretchy_report = dataContext.getDefaultSchema().getTableByName("stretchy_report"); + insert_stretchy_report(named, stretchy_report, "ClientSummary ", "Table", null, null, "SELECT x.* FROM m_client c, m_office o, \n(\n SELECT a.loanCycle, a.activeLoans, b.lastLoanAmount, d.activeSavings, d.totalSavings FROM \n (SELECT IFNULL(MAX(l.loan_counter),0) AS loanCycle, COUNT(l.id) AS activeLoans FROM m_loan l WHERE l.loan_status_id=300 AND l.client_id=${clientId}) a, \n (SELECT count(l.id), IFNULL(l.principal_amount,0) AS 'lastLoanAmount' FROM m_loan l WHERE l.client_id=${clientId} AND l.disbursedon_date = (SELECT IFNULL(MAX(disbursedon_date),NOW()) FROM m_loan where client_id=${clientId} and loan_status_id=300) group by l.principal_amount) b, \n (SELECT COUNT(s.id) AS 'activeSavings', IFNULL(SUM(s.account_balance_derived),0) AS 'totalSavings' FROM m_savings_account s WHERE s.status_enum=300 AND s.client_id=${clientId}) d\n) x\nWHERE c.id=${clientId} AND o.id = c.office_id AND o.hierarchy LIKE CONCAT('${currentUserHierarchy}', '%')", "Utility query for getting the client summary details", 1, 0); + insert_stretchy_report(named, stretchy_report, "LoanCyclePerProduct", "Table", null, null, "SELECT lp.name AS 'productName', MAX(l.loan_product_counter) AS 'loanProductCycle' FROM m_loan l JOIN m_product_loan lp ON l.product_id=lp.id WHERE lp.include_in_borrower_cycle=1 AND l.loan_product_counter IS NOT NULL AND l.client_id=${clientId} GROUP BY l.product_id", "Utility query for getting the client loan cycle details", 1, 0); + } + + protected void insert_stretchy_report(NamedParameterJdbcTemplate named, Table table, String report_name, String report_type, String report_subtype, String report_category, String report_sql, String description, long core_report, long use_report) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("report_name").getName(), report_name); + insertQuery.addValue(table.getColumnByName("core_report").getName(), core_report); + insertQuery.addValue(table.getColumnByName("use_report").getName(), use_report); + insertQuery.addValue(table.getColumnByName("description").getName(), description); + insertQuery.addValue(table.getColumnByName("report_sql").getName(), report_sql); + insertQuery.addValue(table.getColumnByName("report_type").getName(), report_type); + insertQuery.addValue(table.getColumnByName("report_subtype").getName(), report_subtype); + insertQuery.addValue(table.getColumnByName("report_category").getName(), report_category); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V91_1__ApplyAnnualFeesPermission.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V91_1__ApplyAnnualFeesPermission.java new file mode 100644 index 00000000..06d0d7b9 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V91_1__ApplyAnnualFeesPermission.java @@ -0,0 +1,37 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V91_1__ApplyAnnualFeesPermission extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V91_1__ApplyAnnualFeesPermission; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + dataContext.refreshSchemas(); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "transaction_savings", "APPLYANNUALFEE_SAVINGSACCOUNT", "SAVINGSACCOUNT", "APPLYANNUALFEE", 1); + insert_m_permission(named, m_permission, "transaction_savings", "APPLYANNUALFEE_SAVINGSACCOUNT_CHECKER", "SAVINGSACCOUNT", "APPLYANNUALFEE", 0); + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V91_2__ConfigurationSettingsForHolidayAndNonWorkingday.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V91_2__ConfigurationSettingsForHolidayAndNonWorkingday.java new file mode 100644 index 00000000..38bc5a91 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V91_2__ConfigurationSettingsForHolidayAndNonWorkingday.java @@ -0,0 +1,34 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V91_2__ConfigurationSettingsForHolidayAndNonWorkingday extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V91_2__ConfigurationSettingsForHolidayAndNonWorkingday; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + dataContext.refreshSchemas(); + Table c_configuration = dataContext.getDefaultSchema().getTableByName("c_configuration"); + insert_c_configuration(named, c_configuration, "allow-transactions-on-holiday", 0); + insert_c_configuration(named, c_configuration, "allow-transactions-on-non_workingday", 0); + } + + protected void insert_c_configuration(NamedParameterJdbcTemplate named, Table table, String name, long enabled) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("name").getQualifiedLabel(), name); + insertQuery.addValue(table.getColumnByName("enabled").getName(), enabled); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V92__GroupCenterAssignStaffPermission.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V92__GroupCenterAssignStaffPermission.java new file mode 100644 index 00000000..5a3a5f60 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V92__GroupCenterAssignStaffPermission.java @@ -0,0 +1,36 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V92__GroupCenterAssignStaffPermission extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V92__GroupCenterAssignStaffPermission; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + dataContext.refreshSchemas(); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "portfolio_group", "ASSIGNSTAFF_GROUP", "GROUP", "ASSIGNSTAFF", 0); + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V93__LoanTransactionExternalId.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V93__LoanTransactionExternalId.java new file mode 100644 index 00000000..e5989d7f --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V93__LoanTransactionExternalId.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V93__LoanTransactionExternalId extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V93__LoanTransactionExternalId + getInternalChecksum("V93__loan_transaction_external_id.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V93__loan_transaction_external_id.xml"); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V94__AddedSavingsAccontType.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V94__AddedSavingsAccontType.java new file mode 100644 index 00000000..a970e2a4 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V94__AddedSavingsAccontType.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V94__AddedSavingsAccontType extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V94__AddedSavingsAccontType + getInternalChecksum("V94__added_savings_accont_type.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V94__added_savings_accont_type.xml"); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V95__BatchJobPostInterest.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V95__BatchJobPostInterest.java new file mode 100644 index 00000000..5e7adc96 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V95__BatchJobPostInterest.java @@ -0,0 +1,48 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; +import java.util.Date; + +public class V95__BatchJobPostInterest extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V95__BatchJobPostInterest; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + dataContext.refreshSchemas(); + Table job = dataContext.getDefaultSchema().getTableByName("job"); + insert_job(named, job, "Post Interest For Savings", "Post Interest For Savings", "0 0 0 1/1 * ? *", new Date(), 5, null, null, null, null, null, 1, 0, 1, 0); + } + + protected void insert_job(NamedParameterJdbcTemplate named, Table table, String name, String display_name, String cron_expression, Date create_time, long task_priority, String group_name, Date previous_run_start_time, Date next_run_time, String job_key, String initializing_errorlog, long is_active, long currently_running, long updates_allowed, long scheduler_group) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("name").getName(), name); + insertQuery.addValue(table.getColumnByName("display_name").getName(), display_name); + insertQuery.addValue(table.getColumnByName("cron_expression").getName(), cron_expression); + insertQuery.addValue(table.getColumnByName("create_time").getName(), create_time); + insertQuery.addValue(table.getColumnByName("task_priority").getName(), task_priority); + insertQuery.addValue(table.getColumnByName("group_name").getName(), group_name); + insertQuery.addValue(table.getColumnByName("previous_run_start_time").getName(), previous_run_start_time); + insertQuery.addValue(table.getColumnByName("next_run_time").getName(), next_run_time); + insertQuery.addValue(table.getColumnByName("job_key").getName(), job_key); + insertQuery.addValue(table.getColumnByName("initializing_errorlog").getName(), initializing_errorlog); + insertQuery.addValue(table.getColumnByName("is_active").getName(), is_active); + insertQuery.addValue(table.getColumnByName("currently_running").getName(), currently_running); + insertQuery.addValue(table.getColumnByName("updates_allowed").getName(), updates_allowed); + insertQuery.addValue(table.getColumnByName("scheduler_group").getName(), scheduler_group); + + + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V96__SavingsAccountsTransfersTable.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V96__SavingsAccountsTransfersTable.java new file mode 100644 index 00000000..f6ce739a --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V96__SavingsAccountsTransfersTable.java @@ -0,0 +1,45 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V96__SavingsAccountsTransfersTable extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V96__SavingsAccountsTransfersTable + getInternalChecksum("V96_1__savings_accounts_transfers_table.xml", "V96_2__savings_accounts_transfers_table.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + dataContext.refreshSchemas(); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "transaction_savings", "READ_ACCOUNTTRANSFER", "ACCOUNTTRANSFER", "READ", 0); + insert_m_permission(named, m_permission, "transaction_savings", "CREATE_ACCOUNTTRANSFER", "ACCOUNTTRANSFER", "CREATE", 1); + insert_m_permission(named, m_permission, "transaction_savings", "CREATE_ACCOUNTTRANSFER_CHECKER", "ACCOUNTTRANSFER", "CREATE", 0); + + Table m_savings_account_transfer = dataContext.getDefaultSchema().getTableByName("m_savings_account_transfer"); + if (m_savings_account_transfer != null) { + updateLiquibase("V96_1__savings_accounts_transfers_table.xml"); + } + + updateLiquibase("V96_2__savings_accounts_transfers_table.xml"); + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V97__AddPermissionForAdjustSavingsTransaction.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V97__AddPermissionForAdjustSavingsTransaction.java new file mode 100644 index 00000000..22136c5a --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V97__AddPermissionForAdjustSavingsTransaction.java @@ -0,0 +1,37 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V97__AddPermissionForAdjustSavingsTransaction extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V97__AddPermissionForAdjustSavingsTransaction; + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + dataContext.refreshSchemas(); + Table m_permission = dataContext.getDefaultSchema().getTableByName("m_permission"); + insert_m_permission(named, m_permission, "transaction_savings", "ADJUSTTRANSACTION_SAVINGSACCOUNT", "SAVINGSACCOUNT", "ADJUSTTRANSACTION", 0); + } + + protected void insert_m_permission(NamedParameterJdbcTemplate named, Table table, String grouping, String code, String entity_name, String action_name, long can_maker_checker) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("grouping").getQualifiedLabel(), grouping); + insertQuery.addValue(table.getColumnByName("code").getName(), code); + insertQuery.addValue(table.getColumnByName("entity_name").getName(), entity_name); + insertQuery.addValue(table.getColumnByName("action_name").getName(), action_name); + insertQuery.addValue(table.getColumnByName("can_maker_checker").getName(), can_maker_checker); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V98__AddedCurrencyRoundOfForMultipleOf.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V98__AddedCurrencyRoundOfForMultipleOf.java new file mode 100644 index 00000000..133d4d4d --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V98__AddedCurrencyRoundOfForMultipleOf.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V98__AddedCurrencyRoundOfForMultipleOf extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V98__AddedCurrencyRoundOfForMultipleOf + getInternalChecksum("V98__added_currency_roundof_for_multipleof.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V98__added_currency_roundof_for_multipleof.xml"); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V9__AddMinMaxConstraintColumnToLoanLoanProduct.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V9__AddMinMaxConstraintColumnToLoanLoanProduct.java new file mode 100644 index 00000000..174cc15b --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/flyway/V9__AddMinMaxConstraintColumnToLoanLoanProduct.java @@ -0,0 +1,24 @@ +package com.angkorteam.bank.dao.base.flyway; + +import com.angkorteam.bank.dao.base.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V9__AddMinMaxConstraintColumnToLoanLoanProduct extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V9__AddMinMaxConstraintColumnToLoanLoanProduct + getInternalChecksum("V9__add_min_max_constraint_column_to_loan_loanproduct.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V9__add_min_max_constraint_column_to_loan_loanproduct.xml"); + } + +} + diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/AccAccountingRule.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/AccAccountingRule.java new file mode 100644 index 00000000..9d6ebf8b --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/AccAccountingRule.java @@ -0,0 +1,44 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class AccAccountingRule extends AbstractTable { + + public final Column ID; + + public final Column OFFICE_ID; + + public final Column NAME; + + public final Column DEBIT_ACCOUNT_ID; + + public final Column ALLOW_MULTIPLE_DEBIT; + + public final Column CREDIT_ACCOUNT_ID; + + public final Column ALLOW_MULTIPLE_CREDIT; + + public final Column DESCRIPTION; + + public final Column SYSTEM_DEFINED; + + public static AccAccountingRule staticInitialize(DataContext dataContext) { + return new AccAccountingRule(dataContext); + } + + private AccAccountingRule(DataContext dataContext) { + super(dataContext, "acc_accounting_rule"); + this.ID = getInternalColumnByName("id"); + this.OFFICE_ID = getInternalColumnByName("office_id"); + this.NAME = getInternalColumnByName("name"); + this.DEBIT_ACCOUNT_ID = getInternalColumnByName("debit_account_id"); + this.ALLOW_MULTIPLE_DEBIT = getInternalColumnByName("allow_multiple_debits"); + this.CREDIT_ACCOUNT_ID = getInternalColumnByName("credit_account_id"); + this.ALLOW_MULTIPLE_CREDIT = getInternalColumnByName("allow_multiple_credits"); + this.DESCRIPTION = getInternalColumnByName("description"); + this.SYSTEM_DEFINED = getInternalColumnByName("system_defined"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/AccGLAccount.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/AccGLAccount.java new file mode 100644 index 00000000..85f4bd32 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/AccGLAccount.java @@ -0,0 +1,50 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class AccGLAccount extends AbstractTable { + + public final Column ID; + + public final Column NAME; + + public final Column PARENT_ID; + + public final Column HIERARCHY; + + public final Column GL_CODE; + + public final Column DISABLED; + + public final Column MANUAL_JOURNAL_ENTRIES_ALLOWED; + + public final Column ACCOUNT_USAGE; + + public final Column CLASSIFICATION_ENUM; + + public final Column TAG_ID; + + public final Column DESCRIPTION; + + public static AccGLAccount staticInitialize(DataContext dataContext) { + return new AccGLAccount(dataContext); + } + + private AccGLAccount(DataContext dataContext) { + super(dataContext, "acc_gl_account"); + this.ID = getInternalColumnByName("id"); + this.NAME = getInternalColumnByName("name"); + this.PARENT_ID = getInternalColumnByName("parent_id"); + this.HIERARCHY = getInternalColumnByName("hierarchy"); + this.GL_CODE = getInternalColumnByName("gl_code"); + this.DISABLED = getInternalColumnByName("disabled"); + this.MANUAL_JOURNAL_ENTRIES_ALLOWED = getInternalColumnByName("manual_journal_entries_allowed"); + this.ACCOUNT_USAGE = getInternalColumnByName("account_usage"); + this.CLASSIFICATION_ENUM = getInternalColumnByName("classification_enum"); + this.TAG_ID = getInternalColumnByName("tag_id"); + this.DESCRIPTION = getInternalColumnByName("description"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/AccGLClosure.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/AccGLClosure.java new file mode 100644 index 00000000..ba6cd749 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/AccGLClosure.java @@ -0,0 +1,44 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class AccGLClosure extends AbstractTable { + + public final Column ID; + + public final Column OFFICE_ID; + + public final Column CLOSING_DATE; + + public final Column DELETED; + + public final Column CREATED_BY_ID; + + public final Column LAST_MODIFIED_BY_ID; + + public final Column CREATED_DATE; + + public final Column LAST_MODIFIED_DATE; + + public final Column COMMENT; + + public static AccGLClosure staticInitialize(DataContext dataContext) { + return new AccGLClosure(dataContext); + } + + private AccGLClosure(DataContext dataContext) { + super(dataContext, "acc_gl_closure"); + this.ID = getInternalColumnByName("id"); + this.OFFICE_ID = getInternalColumnByName("office_id"); + this.CLOSING_DATE = getInternalColumnByName("closing_date"); + this.DELETED = getInternalColumnByName("is_deleted"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + this.COMMENT = getInternalColumnByName("comments"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/AccGLFinancialActivityAccount.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/AccGLFinancialActivityAccount.java new file mode 100644 index 00000000..eccf7055 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/AccGLFinancialActivityAccount.java @@ -0,0 +1,26 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class AccGLFinancialActivityAccount extends AbstractTable { + + public final Column ID; + + public final Column GL_ACCOUNT_ID; + + public final Column FINANCIAL_ACTIVITY_TYPE; + + public static AccGLFinancialActivityAccount staticInitialize(DataContext dataContext) { + return new AccGLFinancialActivityAccount(dataContext); + } + + private AccGLFinancialActivityAccount(DataContext dataContext) { + super(dataContext, "acc_gl_financial_activity_account"); + this.ID = getInternalColumnByName("id"); + this.GL_ACCOUNT_ID = getInternalColumnByName("gl_account_id"); + this.FINANCIAL_ACTIVITY_TYPE = getInternalColumnByName("financial_activity_type"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/AccGLJournalEntry.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/AccGLJournalEntry.java new file mode 100644 index 00000000..2d6b74fa --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/AccGLJournalEntry.java @@ -0,0 +1,101 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class AccGLJournalEntry extends AbstractTable { + + public final Column ID; + + public final Column ACCOUNT_ID; + + public final Column OFFICE_ID; + + public final Column REVERSAL_ID; + + public final Column CURRENCY_CODE; + + public final Column TRANSACTION_ID; + + public final Column LOAN_TRANSACTION_ID; + + public final Column SAVING_TRANSACTION_ID; + + public final Column CLIENT_TRANSACTION_ID; + + public final Column REVERSED; + + public final Column REF_NUM; + + public final Column MANUAL_ENTRY; + + public final Column ENTRY_DATE; + + public final Column TYPE_ENUM; + + public final Column AMOUNT; + + public final Column DESCRIPTION; + + public final Column ENTITY_TYPE_ENUM; + + public final Column ENTITY_ID; + + public final Column CREATED_BY_ID; + + public final Column LAST_MODIFIED_BY_ID; + + public final Column CREATED_DATE; + + public final Column LAST_MODIFIED_DATE; + + public final Column RUNNING_BALANCE_CALCULATED; + + public final Column OFFICE_RUNNING_BALANCE; + + public final Column ORGANIZATION_RUNNING_BALANCE; + + public final Column PAYMENT_DETAIL_ID; + + public final Column SHARE_TRANSACTION_ID; + + public final Column TRANSACTION_DATE; + + public static AccGLJournalEntry staticInitialize(DataContext dataContext) { + return new AccGLJournalEntry(dataContext); + } + + private AccGLJournalEntry(DataContext dataContext) { + super(dataContext, "acc_gl_journal_entry"); + this.ID = getInternalColumnByName("id"); + this.ACCOUNT_ID = getInternalColumnByName("account_id"); + this.OFFICE_ID = getInternalColumnByName("office_id"); + this.REVERSAL_ID = getInternalColumnByName("reversal_id"); + this.CURRENCY_CODE = getInternalColumnByName("currency_code"); + this.TRANSACTION_ID = getInternalColumnByName("transaction_id"); + this.LOAN_TRANSACTION_ID = getInternalColumnByName("loan_transaction_id"); + this.SAVING_TRANSACTION_ID = getInternalColumnByName("savings_transaction_id"); + this.CLIENT_TRANSACTION_ID = getInternalColumnByName("client_transaction_id"); + this.REVERSED = getInternalColumnByName("reversed"); + this.REF_NUM = getInternalColumnByName("ref_num"); + this.MANUAL_ENTRY = getInternalColumnByName("manual_entry"); + this.ENTRY_DATE = getInternalColumnByName("entry_date"); + this.TYPE_ENUM = getInternalColumnByName("type_enum"); + this.AMOUNT = getInternalColumnByName("amount"); + this.DESCRIPTION = getInternalColumnByName("description"); + this.ENTITY_TYPE_ENUM = getInternalColumnByName("entity_type_enum"); + this.ENTITY_ID = getInternalColumnByName("entity_id"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + this.RUNNING_BALANCE_CALCULATED = getInternalColumnByName("is_running_balance_calculated"); + this.OFFICE_RUNNING_BALANCE = getInternalColumnByName("office_running_balance"); + this.ORGANIZATION_RUNNING_BALANCE = getInternalColumnByName("organization_running_balance"); + this.PAYMENT_DETAIL_ID = getInternalColumnByName("payment_details_id"); + this.SHARE_TRANSACTION_ID = getInternalColumnByName("share_transaction_id"); + this.TRANSACTION_DATE = getInternalColumnByName("transaction_date"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/AccProductMapping.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/AccProductMapping.java new file mode 100644 index 00000000..1af6f542 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/AccProductMapping.java @@ -0,0 +1,38 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class AccProductMapping extends AbstractTable { + + public final Column ID; + + public final Column GL_ACCOUNT_ID; + + public final Column PRODUCT_ID; + + public final Column PRODUCT_TYPE; + + public final Column PAYMENT_TYPE; + + public final Column CHARGE_ID; + + public final Column FINANCIAL_ACCOUNT_TYPE; + + public static AccProductMapping staticInitialize(DataContext dataContext) { + return new AccProductMapping(dataContext); + } + + private AccProductMapping(DataContext dataContext) { + super(dataContext, "acc_product_mapping"); + this.ID = getInternalColumnByName("id"); + this.GL_ACCOUNT_ID = getInternalColumnByName("gl_account_id"); + this.PRODUCT_ID = getInternalColumnByName("product_id"); + this.PRODUCT_TYPE = getInternalColumnByName("product_type"); + this.PAYMENT_TYPE = getInternalColumnByName("payment_type"); + this.CHARGE_ID = getInternalColumnByName("charge_id"); + this.FINANCIAL_ACCOUNT_TYPE = getInternalColumnByName("financial_account_type"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/AccRuleTag.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/AccRuleTag.java new file mode 100644 index 00000000..855a4050 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/AccRuleTag.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class AccRuleTag extends AbstractTable { + + public final Column ID; + + public final Column ACC_RULE_ID; + + public final Column TAG_ID; + + public final Column ACC_TYPE_ENUM; + + public static AccRuleTag staticInitialize(DataContext dataContext) { + return new AccRuleTag(dataContext); + } + + private AccRuleTag(DataContext dataContext) { + super(dataContext, "acc_rule_tags"); + this.ID = getInternalColumnByName("id"); + this.ACC_RULE_ID = getInternalColumnByName("acc_rule_id"); + this.TAG_ID = getInternalColumnByName("tag_id"); + this.ACC_TYPE_ENUM = getInternalColumnByName("acc_type_enum"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/CAccountNumberFormat.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/CAccountNumberFormat.java new file mode 100644 index 00000000..8620a5a3 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/CAccountNumberFormat.java @@ -0,0 +1,26 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class CAccountNumberFormat extends AbstractTable { + + public final Column ID; + + public final Column ACCOUNT_TYPE_ENUM; + + public final Column PREFIX_TYPE_ENUM; + + public static CAccountNumberFormat staticInitialize(DataContext dataContext) { + return new CAccountNumberFormat(dataContext); + } + + private CAccountNumberFormat(DataContext dataContext) { + super(dataContext, "c_account_number_format"); + this.ID = getInternalColumnByName("id"); + this.ACCOUNT_TYPE_ENUM = getInternalColumnByName("account_type_enum"); + this.PREFIX_TYPE_ENUM = getInternalColumnByName("prefix_type_enum"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/CCache.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/CCache.java new file mode 100644 index 00000000..ae1aff0e --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/CCache.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class CCache extends AbstractTable { + + public final Column ID; + + public final Column CACHE_TYPE_ENUM; + + public static CCache staticInitialize(DataContext dataContext) { + return new CCache(dataContext); + } + + private CCache(DataContext dataContext) { + super(dataContext, "c_cache"); + this.ID = getInternalColumnByName("id"); + this.CACHE_TYPE_ENUM = getInternalColumnByName("cache_type_enum"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/CConfiguration.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/CConfiguration.java new file mode 100644 index 00000000..a817d695 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/CConfiguration.java @@ -0,0 +1,38 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class CConfiguration extends AbstractTable { + + public final Column ID; + + public final Column NAME; + + public final Column VALUE; + + public final Column DATE_VALUE; + + public final Column ENABLED; + + public final Column TRAP_DOOR; + + public final Column DESCRIPTION; + + public static CConfiguration staticInitialize(DataContext dataContext) { + return new CConfiguration(dataContext); + } + + private CConfiguration(DataContext dataContext) { + super(dataContext, "c_configuration"); + this.ID = getInternalColumnByName("id"); + this.NAME = getInternalColumnByName("name"); + this.VALUE = getInternalColumnByName("value"); + this.DATE_VALUE = getInternalColumnByName("date_value"); + this.ENABLED = getInternalColumnByName("enabled"); + this.TRAP_DOOR = getInternalColumnByName("is_trap_door"); + this.DESCRIPTION = getInternalColumnByName("description"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/CExternalService.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/CExternalService.java new file mode 100644 index 00000000..b3fbf73b --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/CExternalService.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class CExternalService extends AbstractTable { + + public final Column ID; + + public final Column NAME; + + public static CExternalService staticInitialize(DataContext dataContext) { + return new CExternalService(dataContext); + } + + private CExternalService(DataContext dataContext) { + super(dataContext, "c_external_service"); + this.ID = getInternalColumnByName("id"); + this.NAME = getInternalColumnByName("name"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/CExternalServiceProperty.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/CExternalServiceProperty.java new file mode 100644 index 00000000..e734451c --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/CExternalServiceProperty.java @@ -0,0 +1,26 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class CExternalServiceProperty extends AbstractTable { + + public final Column NAME; + + public final Column VALUE; + + public final Column EXTERNAL_SERVICE_ID; + + public static CExternalServiceProperty staticInitialize(DataContext dataContext) { + return new CExternalServiceProperty(dataContext); + } + + private CExternalServiceProperty(DataContext dataContext) { + super(dataContext, "c_external_service_properties"); + this.NAME = getInternalColumnByName("name"); + this.VALUE = getInternalColumnByName("value"); + this.EXTERNAL_SERVICE_ID = getInternalColumnByName("external_service_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/ClientDeviceRegistration.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/ClientDeviceRegistration.java new file mode 100644 index 00000000..65e5c66b --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/ClientDeviceRegistration.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class ClientDeviceRegistration extends AbstractTable { + + public final Column ID; + + public final Column CLIENT_ID; + + public final Column UPDATED_ON_DATE; + + public final Column REGISTRATION_ID; + + public static ClientDeviceRegistration staticInitialize(DataContext dataContext) { + return new ClientDeviceRegistration(dataContext); + } + + private ClientDeviceRegistration(DataContext dataContext) { + super(dataContext, "client_device_registration"); + this.ID = getInternalColumnByName("id"); + this.CLIENT_ID = getInternalColumnByName("client_id"); + this.UPDATED_ON_DATE = getInternalColumnByName("updatedon_date"); + this.REGISTRATION_ID = getInternalColumnByName("registration_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/GlimAccount.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/GlimAccount.java new file mode 100644 index 00000000..d4b2da9d --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/GlimAccount.java @@ -0,0 +1,41 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class GlimAccount extends AbstractTable { + + public final Column ID; + + public final Column GROUP_ID; + + public final Column ACCOUNT_NUMBER; + + public final Column PRINCIPAL_AMOUNT; + + public final Column CHILD_ACCOUNT_COUNT; + + public final Column ACCEPTING_CHILD; + + public final Column LOAN_STATUS_ID; + + public final Column APPLICATION_ID; + + public static GlimAccount staticInitialize(DataContext dataContext) { + return new GlimAccount(dataContext); + } + + private GlimAccount(DataContext dataContext) { + super(dataContext, "glim_accounts"); + this.ID = getInternalColumnByName("id"); + this.GROUP_ID = getInternalColumnByName("group_id"); + this.ACCOUNT_NUMBER = getInternalColumnByName("account_number"); + this.PRINCIPAL_AMOUNT = getInternalColumnByName("principal_amount"); + this.CHILD_ACCOUNT_COUNT = getInternalColumnByName("child_accounts_count"); + this.ACCEPTING_CHILD = getInternalColumnByName("accepting_child"); + this.LOAN_STATUS_ID = getInternalColumnByName("loan_status_id"); + this.APPLICATION_ID = getInternalColumnByName("application_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/GsimAccount.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/GsimAccount.java new file mode 100644 index 00000000..ba5e51f4 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/GsimAccount.java @@ -0,0 +1,41 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.*; + +public class GsimAccount extends AbstractTable { + + public final Column ID; + + public final Column GROUP_ID; + + public final Column ACCOUNT_NUMBER; + + public final Column PARENT_DEPOSIT; + + public final Column CHILD_ACCOUNT_COUNT; + + public final Column ACCEPTING_CHILD; + + public final Column SAVING_STATUS_ID; + + public final Column APPLICATION_ID; + + public static GsimAccount staticInitialize(DataContext dataContext) { + return new GsimAccount(dataContext); + } + + private GsimAccount(DataContext dataContext) { + super(dataContext, "gsim_accounts"); + this.ID = getInternalColumnByName("id"); + this.GROUP_ID = getInternalColumnByName("group_id"); + this.ACCOUNT_NUMBER = getInternalColumnByName("account_number"); + this.CHILD_ACCOUNT_COUNT = getInternalColumnByName("child_accounts_count"); + this.ACCEPTING_CHILD = getInternalColumnByName("accepting_child"); + this.APPLICATION_ID = getInternalColumnByName("application_id"); + this.PARENT_DEPOSIT = getInternalColumnByName("parent_deposit"); + this.SAVING_STATUS_ID = getInternalColumnByName("savings_status_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/InteropIdentifier.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/InteropIdentifier.java new file mode 100644 index 00000000..56d87213 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/InteropIdentifier.java @@ -0,0 +1,44 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class InteropIdentifier extends AbstractTable { + + public final Column ID; + + public final Column ACCOUNT_ID; + + public final Column TYPE; + + public final Column A_VALUE; + + public final Column SUB_VALUE_OR_TYPE; + + public final Column CREATED_BY; + + public final Column CREATED_ON; + + public final Column MODIFIED_BY; + + public final Column MODIFIED_ON; + + public static InteropIdentifier staticInitialize(DataContext dataContext) { + return new InteropIdentifier(dataContext); + } + + private InteropIdentifier(DataContext dataContext) { + super(dataContext, "interop_identifier"); + this.ID = getInternalColumnByName("id"); + this.ACCOUNT_ID = getInternalColumnByName("account_id"); + this.TYPE = getInternalColumnByName("type"); + this.A_VALUE = getInternalColumnByName("a_value"); + this.SUB_VALUE_OR_TYPE = getInternalColumnByName("sub_value_or_type"); + this.CREATED_BY = getInternalColumnByName("created_by"); + this.CREATED_ON = getInternalColumnByName("created_on"); + this.MODIFIED_BY = getInternalColumnByName("modified_by"); + this.MODIFIED_ON = getInternalColumnByName("modified_on"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/Job.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/Job.java new file mode 100644 index 00000000..e81de280 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/Job.java @@ -0,0 +1,65 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class Job extends AbstractTable { + + public final Column ID; + + public final Column NAME; + + public final Column DISPLAY_NAME; + + public final Column CRON_EXPRESSION; + + public final Column CREATE_TIME; + + public final Column TASK_PRIORITY; + + public final Column GROUP_NAME; + + public final Column PREVIOUS_RUN_START_TIME; + + public final Column NEXT_RUN_TIME; + + public final Column JOB_KEY; + + public final Column INITIALIZING_ERROR_LOG; + + public final Column ACTIVE; + + public final Column CURRENTLY_RUNNING; + + public final Column UPDATE_ALLOWED; + + public final Column SCHEDULER_GROUP; + + public final Column MISFIRED; + + public static Job staticInitialize(DataContext dataContext) { + return new Job(dataContext); + } + + private Job(DataContext dataContext) { + super(dataContext, "job"); + this.ID = getInternalColumnByName("id"); + this.NAME = getInternalColumnByName("name"); + this.DISPLAY_NAME = getInternalColumnByName("display_name"); + this.CRON_EXPRESSION = getInternalColumnByName("cron_expression"); + this.CREATE_TIME = getInternalColumnByName("create_time"); + this.TASK_PRIORITY = getInternalColumnByName("task_priority"); + this.GROUP_NAME = getInternalColumnByName("group_name"); + this.PREVIOUS_RUN_START_TIME = getInternalColumnByName("previous_run_start_time"); + this.NEXT_RUN_TIME = getInternalColumnByName("next_run_time"); + this.JOB_KEY = getInternalColumnByName("job_key"); + this.INITIALIZING_ERROR_LOG = getInternalColumnByName("initializing_errorlog"); + this.ACTIVE = getInternalColumnByName("is_active"); + this.CURRENTLY_RUNNING = getInternalColumnByName("currently_running"); + this.UPDATE_ALLOWED = getInternalColumnByName("updates_allowed"); + this.SCHEDULER_GROUP = getInternalColumnByName("scheduler_group"); + this.MISFIRED = getInternalColumnByName("is_misfired"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/JobParameter.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/JobParameter.java new file mode 100644 index 00000000..403d725e --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/JobParameter.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class JobParameter extends AbstractTable { + + public final Column ID; + + public final Column JOB_ID; + + public final Column PARAMETER_NAME; + + public final Column PARAMETER_VALUE; + + public static JobParameter staticInitialize(DataContext dataContext) { + return new JobParameter(dataContext); + } + + private JobParameter(DataContext dataContext) { + super(dataContext, "job_parameters"); + this.ID = getInternalColumnByName("id"); + this.JOB_ID = getInternalColumnByName("job_id"); + this.PARAMETER_NAME = getInternalColumnByName("parameter_name"); + this.PARAMETER_VALUE = getInternalColumnByName("parameter_value"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/JobRunHistory.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/JobRunHistory.java new file mode 100644 index 00000000..67354bd4 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/JobRunHistory.java @@ -0,0 +1,44 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class JobRunHistory extends AbstractTable { + + public final Column ID; + + public final Column JOB_ID; + + public final Column VERSION; + + public final Column START_TIME; + + public final Column END_TIME; + + public final Column STATUS; + + public final Column ERROR_MESSAGE; + + public final Column TRIGGER_TYPE; + + public final Column ERROR_LOG; + + public static JobRunHistory staticInitialize(DataContext dataContext) { + return new JobRunHistory(dataContext); + } + + private JobRunHistory(DataContext dataContext) { + super(dataContext, "job_run_history"); + this.ID = getInternalColumnByName("id"); + this.JOB_ID = getInternalColumnByName("job_id"); + this.VERSION = getInternalColumnByName("version"); + this.START_TIME = getInternalColumnByName("start_time"); + this.END_TIME = getInternalColumnByName("end_time"); + this.STATUS = getInternalColumnByName("status"); + this.ERROR_MESSAGE = getInternalColumnByName("error_message"); + this.TRIGGER_TYPE = getInternalColumnByName("trigger_type"); + this.ERROR_LOG = getInternalColumnByName("error_log"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAccountTransferDetail.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAccountTransferDetail.java new file mode 100644 index 00000000..99416f41 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAccountTransferDetail.java @@ -0,0 +1,47 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MAccountTransferDetail extends AbstractTable { + + public final Column ID; + + public final Column FROM_OFFICE_ID; + + public final Column TO_OFFICE_ID; + + public final Column FROM_CLIENT_ID; + + public final Column TO_CLIENT_ID; + + public final Column FROM_SAVING_ACCOUNT_ID; + + public final Column TO_SAVING_ACCOUNT_ID; + + public final Column FROM_LOAN_ACCOUNT_ID; + + public final Column TO_LOAN_ACCOUNT_ID; + + public final Column TRANSFER_TYPE; + + public static MAccountTransferDetail staticInitialize(DataContext dataContext) { + return new MAccountTransferDetail(dataContext); + } + + private MAccountTransferDetail(DataContext dataContext) { + super(dataContext, "m_account_transfer_details"); + this.ID = getInternalColumnByName("id"); + this.FROM_OFFICE_ID = getInternalColumnByName("from_office_id"); + this.TO_OFFICE_ID = getInternalColumnByName("to_office_id"); + this.FROM_CLIENT_ID = getInternalColumnByName("from_client_id"); + this.TO_CLIENT_ID = getInternalColumnByName("to_client_id"); + this.FROM_SAVING_ACCOUNT_ID = getInternalColumnByName("from_savings_account_id"); + this.TO_SAVING_ACCOUNT_ID = getInternalColumnByName("to_savings_account_id"); + this.FROM_LOAN_ACCOUNT_ID = getInternalColumnByName("from_loan_account_id"); + this.TO_LOAN_ACCOUNT_ID = getInternalColumnByName("to_loan_account_id"); + this.TRANSFER_TYPE = getInternalColumnByName("transfer_type"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAccountTransferStandingInstruction.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAccountTransferStandingInstruction.java new file mode 100644 index 00000000..e4261fd5 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAccountTransferStandingInstruction.java @@ -0,0 +1,62 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MAccountTransferStandingInstruction extends AbstractTable { + + public final Column ID; + + public final Column NAME; + + public final Column ACCOUNT_TRANSFER_DETAIL_ID; + + public final Column PRIORITY; + + public final Column STATUS; + + public final Column INSTRUCTION_TYPE; + + public final Column AMOUNT; + + public final Column VALID_FROM; + + public final Column VALID_TILL; + + public final Column RECURRENCE_TYPE; + + public final Column RECURRENCE_FREQUENCY; + + public final Column RECURRENCE_INTERVAL; + + public final Column RECURRENCE_ON_DAY; + + public final Column RECURRENCE_ON_MONTH; + + public final Column LAST_RUN_DATE; + + public static MAccountTransferStandingInstruction staticInitialize(DataContext dataContext) { + return new MAccountTransferStandingInstruction(dataContext); + } + + private MAccountTransferStandingInstruction(DataContext dataContext) { + super(dataContext, "m_account_transfer_standing_instructions"); + this.ID = getInternalColumnByName("id"); + this.NAME = getInternalColumnByName("name"); + this.ACCOUNT_TRANSFER_DETAIL_ID = getInternalColumnByName("account_transfer_details_id"); + this.PRIORITY = getInternalColumnByName("priority"); + this.STATUS = getInternalColumnByName("status"); + this.INSTRUCTION_TYPE = getInternalColumnByName("instruction_type"); + this.AMOUNT = getInternalColumnByName("amount"); + this.VALID_FROM = getInternalColumnByName("valid_from"); + this.VALID_TILL = getInternalColumnByName("valid_till"); + this.RECURRENCE_TYPE = getInternalColumnByName("recurrence_type"); + this.RECURRENCE_FREQUENCY = getInternalColumnByName("recurrence_frequency"); + this.RECURRENCE_INTERVAL = getInternalColumnByName("recurrence_interval"); + this.RECURRENCE_ON_DAY = getInternalColumnByName("recurrence_on_day"); + this.RECURRENCE_ON_MONTH = getInternalColumnByName("recurrence_on_month"); + this.LAST_RUN_DATE = getInternalColumnByName("last_run_date"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAccountTransferStandingInstructionHistory.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAccountTransferStandingInstructionHistory.java new file mode 100644 index 00000000..9768a5e4 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAccountTransferStandingInstructionHistory.java @@ -0,0 +1,35 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MAccountTransferStandingInstructionHistory extends AbstractTable { + + public final Column ID; + + public final Column STATUS; + + public final Column AMOUNT; + + public final Column STANDING_INSTRUCTION_ID; + + public final Column EXECUTION_TIME; + + public final Column ERROR_LOG; + + public static MAccountTransferStandingInstructionHistory staticInitialize(DataContext dataContext) { + return new MAccountTransferStandingInstructionHistory(dataContext); + } + + private MAccountTransferStandingInstructionHistory(DataContext dataContext) { + super(dataContext, "m_account_transfer_standing_instructions_history"); + this.ID = getInternalColumnByName("id"); + this.STATUS = getInternalColumnByName("status"); + this.AMOUNT = getInternalColumnByName("amount"); + this.STANDING_INSTRUCTION_ID = getInternalColumnByName("standing_instruction_id"); + this.EXECUTION_TIME = getInternalColumnByName("execution_time"); + this.ERROR_LOG = getInternalColumnByName("error_log"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAccountTransferTransaction.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAccountTransferTransaction.java new file mode 100644 index 00000000..f485d039 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAccountTransferTransaction.java @@ -0,0 +1,56 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MAccountTransferTransaction extends AbstractTable { + + public final Column ID; + + public final Column ACCOUNT_TRANSFER_DETAIL_ID; + + public final Column FROM_SAVING_TRANSACTION_ID; + + public final Column FROM_LOAN_TRANSACTION_ID; + + public final Column TO_SAVING_TRANSACTION_ID; + + public final Column TO_LOAN_TRANSACTION_ID; + + public final Column REVERSED; + + public final Column TRANSACTION_DATE; + + public final Column CURRENCY_CODE; + + public final Column CURRENCY_DIGIT; + + public final Column CURRENCY_MULTIPLE_OF; + + public final Column AMOUNT; + + public final Column DESCRIPTION; + + public static MAccountTransferTransaction staticInitialize(DataContext dataContext) { + return new MAccountTransferTransaction(dataContext); + } + + private MAccountTransferTransaction(DataContext dataContext) { + super(dataContext, "m_account_transfer_transaction"); + this.ID = getInternalColumnByName("id"); + this.ACCOUNT_TRANSFER_DETAIL_ID = getInternalColumnByName("account_transfer_details_id"); + this.FROM_SAVING_TRANSACTION_ID = getInternalColumnByName("from_savings_transaction_id"); + this.FROM_LOAN_TRANSACTION_ID = getInternalColumnByName("from_loan_transaction_id"); + this.TO_SAVING_TRANSACTION_ID = getInternalColumnByName("to_savings_transaction_id"); + this.TO_LOAN_TRANSACTION_ID = getInternalColumnByName("to_loan_transaction_id"); + this.REVERSED = getInternalColumnByName("is_reversed"); + this.TRANSACTION_DATE = getInternalColumnByName("transaction_date"); + this.CURRENCY_CODE = getInternalColumnByName("currency_code"); + this.CURRENCY_DIGIT = getInternalColumnByName("currency_digits"); + this.CURRENCY_MULTIPLE_OF = getInternalColumnByName("currency_multiplesof"); + this.AMOUNT = getInternalColumnByName("amount"); + this.DESCRIPTION = getInternalColumnByName("description"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAddress.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAddress.java new file mode 100644 index 00000000..8c4aebe8 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAddress.java @@ -0,0 +1,68 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MAddress extends AbstractTable { + + public final Column ID; + + public final Column STREET; + + public final Column ADDRESS_LINE_1; + + public final Column ADDRESS_LINE_2; + + public final Column ADDRESS_LINE_3; + + public final Column TOWN_VILLAGE; + + public final Column CITY; + + public final Column COUNTY_DISTRICT; + + public final Column STATE_PROVINCE_ID; + + public final Column COUNTRY_ID; + + public final Column POSTAL_CODE; + + public final Column LATITUDE; + + public final Column LONGITUDE; + + public final Column CREATED_BY; + + public final Column CREATED_ON; + + public final Column UPDATED_BY; + + public final Column UPDATED_ON; + + public static MAddress staticInitialize(DataContext dataContext) { + return new MAddress(dataContext); + } + + private MAddress(DataContext dataContext) { + super(dataContext, "m_address"); + this.ID = getInternalColumnByName("id"); + this.STREET = getInternalColumnByName("street"); + this.ADDRESS_LINE_1 = getInternalColumnByName("address_line_1"); + this.ADDRESS_LINE_2 = getInternalColumnByName("address_line_2"); + this.ADDRESS_LINE_3 = getInternalColumnByName("address_line_3"); + this.TOWN_VILLAGE = getInternalColumnByName("town_village"); + this.CITY = getInternalColumnByName("city"); + this.COUNTY_DISTRICT = getInternalColumnByName("county_district"); + this.STATE_PROVINCE_ID = getInternalColumnByName("state_province_id"); + this.COUNTRY_ID = getInternalColumnByName("country_id"); + this.POSTAL_CODE = getInternalColumnByName("postal_code"); + this.LATITUDE = getInternalColumnByName("latitude"); + this.LONGITUDE = getInternalColumnByName("longitude"); + this.CREATED_BY = getInternalColumnByName("created_by"); + this.CREATED_ON = getInternalColumnByName("created_on"); + this.UPDATED_BY = getInternalColumnByName("updated_by"); + this.UPDATED_ON = getInternalColumnByName("updated_on"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAdhoc.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAdhoc.java new file mode 100644 index 00000000..1dac02d9 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAdhoc.java @@ -0,0 +1,59 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MAdhoc extends AbstractTable { + + public final Column ID; + + public final Column NAME; + + public final Column QUERY; + + public final Column TABLE_NAME; + + public final Column TABLE_FIELD; + + public final Column EMAIL; + + public final Column ACTIVE; + + public final Column CREATED_DATE; + + public final Column CREATED_BY_ID; + + public final Column LAST_MODIFIED_BY_ID; + + public final Column LAST_MODIFIED_DATE; + + public final Column REPORT_RUN_FREQUENCY_CODE; + + public final Column REPORT_RUN_EVERY; + + public final Column LAST_RUN; + + public static MAdhoc staticInitialize(DataContext dataContext) { + return new MAdhoc(dataContext); + } + + private MAdhoc(DataContext dataContext) { + super(dataContext, "m_adhoc"); + this.ID = getInternalColumnByName("id"); + this.NAME = getInternalColumnByName("name"); + this.QUERY = getInternalColumnByName("query"); + this.TABLE_NAME = getInternalColumnByName("table_name"); + this.TABLE_FIELD = getInternalColumnByName("table_fields"); + this.EMAIL = getInternalColumnByName("email"); + this.ACTIVE = getInternalColumnByName("IsActive"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + this.REPORT_RUN_FREQUENCY_CODE = getInternalColumnByName("report_run_frequency_code"); + this.REPORT_RUN_EVERY = getInternalColumnByName("report_run_every"); + this.LAST_RUN = getInternalColumnByName("last_run"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAppUser.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAppUser.java new file mode 100644 index 00000000..d15ef61e --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAppUser.java @@ -0,0 +1,68 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MAppUser extends AbstractTable { + + public final Column ID; + + public final Column DELETED; + + public final Column OFFICE_ID; + + public final Column STAFF_ID; + + public final Column USERNAME; + + public final Column FIRST_NAME; + + public final Column LAST_NAME; + + public final Column PASSWORD; + + public final Column EMAIL; + + public final Column FIRST_TIME_LOGIN_REMAINING; + + public final Column NON_EXPIRED; + + public final Column NON_LOCKED; + + public final Column NON_EXPIRED_CREDENTIAL; + + public final Column ENABLED; + + public final Column LAST_TIME_PASSWORD_UPDATED; + + public final Column PASSWORD_NEVER_EXPIRED; + + public final Column SELF_SERVICE_USER; + + public static MAppUser staticInitialize(DataContext dataContext) { + return new MAppUser(dataContext); + } + + private MAppUser(DataContext dataContext) { + super(dataContext, "m_appuser"); + this.ID = getInternalColumnByName("id"); + this.DELETED = getInternalColumnByName("is_deleted"); + this.OFFICE_ID = getInternalColumnByName("office_id"); + this.STAFF_ID = getInternalColumnByName("staff_id"); + this.USERNAME = getInternalColumnByName("username"); + this.FIRST_NAME = getInternalColumnByName("firstname"); + this.LAST_NAME = getInternalColumnByName("lastname"); + this.PASSWORD = getInternalColumnByName("password"); + this.EMAIL = getInternalColumnByName("email"); + this.FIRST_TIME_LOGIN_REMAINING = getInternalColumnByName("firsttime_login_remaining"); + this.NON_EXPIRED = getInternalColumnByName("nonexpired"); + this.NON_LOCKED = getInternalColumnByName("nonlocked"); + this.NON_EXPIRED_CREDENTIAL = getInternalColumnByName("nonexpired_credentials"); + this.ENABLED = getInternalColumnByName("enabled"); + this.LAST_TIME_PASSWORD_UPDATED = getInternalColumnByName("last_time_password_updated"); + this.PASSWORD_NEVER_EXPIRED = getInternalColumnByName("password_never_expires"); + this.SELF_SERVICE_USER = getInternalColumnByName("is_self_service_user"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAppUserPreviousPassword.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAppUserPreviousPassword.java new file mode 100644 index 00000000..4bef0c78 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAppUserPreviousPassword.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MAppUserPreviousPassword extends AbstractTable { + + public final Column ID; + + public final Column USER_ID; + + public final Column PASSWORD; + + public final Column REMOVAL_DATE; + + public static MAppUserPreviousPassword staticInitialize(DataContext dataContext) { + return new MAppUserPreviousPassword(dataContext); + } + + private MAppUserPreviousPassword(DataContext dataContext) { + super(dataContext, "m_appuser_previous_password"); + this.ID = getInternalColumnByName("id"); + this.USER_ID = getInternalColumnByName("user_id"); + this.PASSWORD = getInternalColumnByName("password"); + this.REMOVAL_DATE = getInternalColumnByName("removal_date"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAppUserRole.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAppUserRole.java new file mode 100644 index 00000000..7011e007 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MAppUserRole.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.*; + +public class MAppUserRole extends AbstractTable { + + public final Column APP_USER_ID; + + public final Column ROLE_ID; + + public static MAppUserRole staticInitialize(DataContext dataContext) { + return new MAppUserRole(dataContext); + } + + private MAppUserRole(DataContext dataContext) { + super(dataContext, "m_appuser_role"); + this.APP_USER_ID = getInternalColumnByName("appuser_id"); + this.ROLE_ID = getInternalColumnByName("role_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCalendar.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCalendar.java new file mode 100644 index 00000000..d76a8dcb --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCalendar.java @@ -0,0 +1,71 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MCalendar extends AbstractTable { + + public final Column ID; + + public final Column TITLE; + + public final Column DESCRIPTION; + + public final Column LOCATION; + + public final Column START_DATE; + + public final Column END_DATE; + + public final Column DURATION; + + public final Column CALENDAR_TYPE_ENUM; + + public final Column REPEATING; + + public final Column RECURRENCE; + + public final Column REMIND_BY_ENUM; + + public final Column FIRST_REMINDER; + + public final Column SECOND_REMINDER; + + public final Column CREATED_BY_ID; + + public final Column LAST_MODIFIED_BY_ID; + + public final Column CREATED_DATE; + + public final Column LAST_MODIFIED_DATE; + + public final Column MEETING_TIME; + + public static MCalendar staticInitialize(DataContext dataContext) { + return new MCalendar(dataContext); + } + + private MCalendar(DataContext dataContext) { + super(dataContext, "m_calendar"); + this.ID = getInternalColumnByName("id"); + this.TITLE = getInternalColumnByName("title"); + this.DESCRIPTION = getInternalColumnByName("description"); + this.LOCATION = getInternalColumnByName("location"); + this.START_DATE = getInternalColumnByName("start_date"); + this.END_DATE = getInternalColumnByName("end_date"); + this.DURATION = getInternalColumnByName("duration"); + this.CALENDAR_TYPE_ENUM = getInternalColumnByName("calendar_type_enum"); + this.REPEATING = getInternalColumnByName("repeating"); + this.RECURRENCE = getInternalColumnByName("recurrence"); + this.REMIND_BY_ENUM = getInternalColumnByName("remind_by_enum"); + this.FIRST_REMINDER = getInternalColumnByName("first_reminder"); + this.SECOND_REMINDER = getInternalColumnByName("second_reminder"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + this.MEETING_TIME = getInternalColumnByName("meeting_time"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCalendarHistory.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCalendarHistory.java new file mode 100644 index 00000000..3e7c4f4f --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCalendarHistory.java @@ -0,0 +1,59 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MCalendarHistory extends AbstractTable { + + public final Column ID; + + public final Column CALENDAR_ID; + + public final Column TITLE; + + public final Column DESCRIPTION; + + public final Column LOCATION; + + public final Column START_DATE; + + public final Column END_DATE; + + public final Column DURATION; + + public final Column CALENDAR_TYPE_ENUM; + + public final Column REPEATING; + + public final Column RECURRENCE; + + public final Column REMIND_BY_ENUM; + + public final Column FIRST_REMINDER; + + public final Column SECOND_REMINDER; + + public static MCalendarHistory staticInitialize(DataContext dataContext) { + return new MCalendarHistory(dataContext); + } + + private MCalendarHistory(DataContext dataContext) { + super(dataContext, "m_calendar_history"); + this.ID = getInternalColumnByName("id"); + this.CALENDAR_ID = getInternalColumnByName("calendar_id"); + this.TITLE = getInternalColumnByName("title"); + this.DESCRIPTION = getInternalColumnByName("description"); + this.LOCATION = getInternalColumnByName("location"); + this.START_DATE = getInternalColumnByName("start_date"); + this.END_DATE = getInternalColumnByName("end_date"); + this.DURATION = getInternalColumnByName("duration"); + this.CALENDAR_TYPE_ENUM = getInternalColumnByName("calendar_type_enum"); + this.REPEATING = getInternalColumnByName("repeating"); + this.RECURRENCE = getInternalColumnByName("recurrence"); + this.REMIND_BY_ENUM = getInternalColumnByName("remind_by_enum"); + this.FIRST_REMINDER = getInternalColumnByName("first_reminder"); + this.SECOND_REMINDER = getInternalColumnByName("second_reminder"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCalendarInstance.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCalendarInstance.java new file mode 100644 index 00000000..dec9f9f6 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCalendarInstance.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MCalendarInstance extends AbstractTable { + + public final Column ID; + + public final Column CALENDAR_ID; + + public final Column ENTITY_ID; + + public final Column ENTITY_TYPE_ENUM; + + public static MCalendarInstance staticInitialize(DataContext dataContext) { + return new MCalendarInstance(dataContext); + } + + private MCalendarInstance(DataContext dataContext) { + super(dataContext, "m_calendar_instance"); + this.ID = getInternalColumnByName("id"); + this.CALENDAR_ID = getInternalColumnByName("calendar_id"); + this.ENTITY_ID = getInternalColumnByName("entity_id"); + this.ENTITY_TYPE_ENUM = getInternalColumnByName("entity_type_enum"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCashier.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCashier.java new file mode 100644 index 00000000..cf6cd723 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCashier.java @@ -0,0 +1,44 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MCashier extends AbstractTable { + + public final Column ID; + + public final Column STAFF_ID; + + public final Column TELLER_ID; + + public final Column DESCRIPTION; + + public final Column START_DATE; + + public final Column END_DATE; + + public final Column START_TIME; + + public final Column END_TIME; + + public final Column FULL_DAY; + + public static MCashier staticInitialize(DataContext dataContext) { + return new MCashier(dataContext); + } + + private MCashier(DataContext dataContext) { + super(dataContext, "m_cashiers"); + this.ID = getInternalColumnByName("id"); + this.STAFF_ID = getInternalColumnByName("staff_id"); + this.TELLER_ID = getInternalColumnByName("teller_id"); + this.DESCRIPTION = getInternalColumnByName("description"); + this.START_DATE = getInternalColumnByName("start_date"); + this.END_DATE = getInternalColumnByName("end_date"); + this.START_TIME = getInternalColumnByName("start_time"); + this.END_TIME = getInternalColumnByName("end_time"); + this.FULL_DAY = getInternalColumnByName("full_day"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCashierTransaction.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCashierTransaction.java new file mode 100644 index 00000000..98223d28 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCashierTransaction.java @@ -0,0 +1,47 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MCashierTransaction extends AbstractTable { + + public final Column ID; + + public final Column CASHIER_ID; + + public final Column TXN_TYPE; + + public final Column TXN_AMOUNT; + + public final Column TXN_DATE; + + public final Column CREATED_DATE; + + public final Column ENTITY_TYPE; + + public final Column TXN_NOTE; + + public final Column CURRENCY_CODE; + + public final Column ENTITY_ID; + + public static MCashierTransaction staticInitialize(DataContext dataContext) { + return new MCashierTransaction(dataContext); + } + + private MCashierTransaction(DataContext dataContext) { + super(dataContext, "m_cashier_transactions"); + this.ID = getInternalColumnByName("id"); + this.ENTITY_ID = getInternalColumnByName("entity_id"); + this.CASHIER_ID = getInternalColumnByName("cashier_id"); + this.TXN_TYPE = getInternalColumnByName("txn_type"); + this.TXN_AMOUNT = getInternalColumnByName("txn_amount"); + this.TXN_DATE = getInternalColumnByName("txn_date"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.ENTITY_TYPE = getInternalColumnByName("entity_type"); + this.TXN_NOTE = getInternalColumnByName("txn_note"); + this.CURRENCY_CODE = getInternalColumnByName("currency_code"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCharge.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCharge.java new file mode 100644 index 00000000..4b7625f2 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCharge.java @@ -0,0 +1,74 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MCharge extends AbstractTable { + + public final Column ID; + + public final Column NAME; + + public final Column CURRENCY_CODE; + + public final Column CHARGE_APPLY_TO_ENUM; + + public final Column CHARGE_TIME_ENUM; + + public final Column CHARGE_CALCULATION_ENUM; + + public final Column CHARGE_PAYMENT_MODE_ENUM; + + public final Column AMOUNT; + + public final Column FEE_ON_DAY; + + public final Column FEE_INTERVAL; + + public final Column FEE_ON_MONTH; + + public final Column PENALTY; + + public final Column ACTIVE; + + public final Column DELETED; + + public final Column MIN_CAP; + + public final Column MAX_CAP; + + public final Column FEE_FREQUENCY; + + public final Column INCOME_OR_LIABILITY_ACCOUNT_ID; + + public final Column TAX_GROUP_ID; + + public static MCharge staticInitialize(DataContext dataContext) { + return new MCharge(dataContext); + } + + private MCharge(DataContext dataContext) { + super(dataContext, "m_charge"); + this.ID = getInternalColumnByName("id"); + this.NAME = getInternalColumnByName("name"); + this.CURRENCY_CODE = getInternalColumnByName("currency_code"); + this.CHARGE_APPLY_TO_ENUM = getInternalColumnByName("charge_applies_to_enum"); + this.CHARGE_TIME_ENUM = getInternalColumnByName("charge_time_enum"); + this.CHARGE_CALCULATION_ENUM = getInternalColumnByName("charge_calculation_enum"); + this.CHARGE_PAYMENT_MODE_ENUM = getInternalColumnByName("charge_payment_mode_enum"); + this.AMOUNT = getInternalColumnByName("amount"); + this.FEE_ON_DAY = getInternalColumnByName("fee_on_day"); + this.FEE_INTERVAL = getInternalColumnByName("fee_interval"); + this.FEE_ON_MONTH = getInternalColumnByName("fee_on_month"); + this.PENALTY = getInternalColumnByName("is_penalty"); + this.ACTIVE = getInternalColumnByName("is_active"); + this.DELETED = getInternalColumnByName("is_deleted"); + this.MIN_CAP = getInternalColumnByName("min_cap"); + this.MAX_CAP = getInternalColumnByName("max_cap"); + this.FEE_FREQUENCY = getInternalColumnByName("fee_frequency"); + this.INCOME_OR_LIABILITY_ACCOUNT_ID = getInternalColumnByName("income_or_liability_account_id"); + this.TAX_GROUP_ID = getInternalColumnByName("tax_group_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClient.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClient.java new file mode 100644 index 00000000..33240144 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClient.java @@ -0,0 +1,152 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.*; + +public class MClient extends AbstractTable { + + public final Column ID; + + public final Column ACCOUNT_NO; + + public final Column EXTERNAL_ID; + + public final Column STATUS_ENUM; + + public final Column SUB_STATUS; + + public final Column ACTIVATION_DATE; + + public final Column OFFICE_JOINING_DATE; + + public final Column OFFICE_ID; + + public final Column TRANSFER_TO_OFFICE_ID; + + public final Column STAFF_ID; + + public final Column FIRST_NAME; + + public final Column MIDDLE_NAME; + + public final Column LAST_NAME; + + public final Column FULL_NAME; + + public final Column DISPLAY_NAME; + + public final Column MOBILE_NO; + + public final Column STAFF; + + public final Column GENDER_CV_ID; + + public final Column DATE_OF_BIRTH; + + public final Column IMAGE_ID; + + public final Column CLOSURE_REASON_CV_ID; + + public final Column CLOSED_ON_DATE; + + public final Column UPDATED_BY; + + public final Column UPDATED_ON; + + public final Column SUBMITTED_ON_DATE; + + public final Column SUBMITTED_ON_USER_ID; + + public final Column ACTIVATED_ON_USER_ID; + + public final Column CLOSED_ON_USER_ID; + + public final Column DEFAULT_SAVING_PRODUCT; + + public final Column DEFAULT_SAVING_ACCOUNT; + + public final Column CLIENT_TYPE_CV_ID; + + public final Column CLIENT_CLASSIFICATION_CV_ID; + + public final Column REJECT_REASON_CV_ID; + + public final Column REJECTED_ON_DATE; + + public final Column REJECTED_ON_USER_ID; + + public final Column WITHDRAW_REASON_CV_ID; + + public final Column WITHDRAWN_ON_DATE; + + public final Column WITHDRAW_ON_USER_ID; + + public final Column RE_ACTIVATED_ON_DATE; + + public final Column RE_ACTIVATED_ON_USER_ID; + + public final Column legal_form_enum; + + public final Column RE_OPENED_ON_DATE; + + public final Column RE_OPENED_BY_USER_ID; + + public final Column EMAIL_ADDRESS; + + public final Column PROPOSED_TRANSFER_DATE; + + public static MClient staticInitialize(DataContext dataContext) { + return new MClient(dataContext); + } + + private MClient(DataContext dataContext) { + super(dataContext, "m_client"); + this.ID = getInternalColumnByName("id"); + this.ACCOUNT_NO = getInternalColumnByName("account_no"); + this.EXTERNAL_ID = getInternalColumnByName("external_id"); + this.STATUS_ENUM = getInternalColumnByName("status_enum"); + this.SUB_STATUS = getInternalColumnByName("sub_status"); + this.ACTIVATION_DATE = getInternalColumnByName("activation_date"); + this.OFFICE_JOINING_DATE = getInternalColumnByName("office_joining_date"); + this.OFFICE_ID = getInternalColumnByName("office_id"); + this.TRANSFER_TO_OFFICE_ID = getInternalColumnByName("transfer_to_office_id"); + this.STAFF_ID = getInternalColumnByName("staff_id"); + this.FIRST_NAME = getInternalColumnByName("firstname"); + this.MIDDLE_NAME = getInternalColumnByName("middlename"); + this.LAST_NAME = getInternalColumnByName("lastname"); + this.FULL_NAME = getInternalColumnByName("fullname"); + this.DISPLAY_NAME = getInternalColumnByName("display_name"); + this.MOBILE_NO = getInternalColumnByName("mobile_no"); + this.STAFF = getInternalColumnByName("is_staff"); + this.GENDER_CV_ID = getInternalColumnByName("gender_cv_id"); + this.DATE_OF_BIRTH = getInternalColumnByName("date_of_birth"); + this.IMAGE_ID = getInternalColumnByName("image_id"); + this.CLOSURE_REASON_CV_ID = getInternalColumnByName("closure_reason_cv_id"); + this.CLOSED_ON_DATE = getInternalColumnByName("closedon_date"); + this.UPDATED_BY = getInternalColumnByName("updated_by"); + this.UPDATED_ON = getInternalColumnByName("updated_on"); + this.SUBMITTED_ON_DATE = getInternalColumnByName("submittedon_date"); + this.SUBMITTED_ON_USER_ID = getInternalColumnByName("submittedon_userid"); + this.ACTIVATED_ON_USER_ID = getInternalColumnByName("activatedon_userid"); + this.CLOSED_ON_USER_ID = getInternalColumnByName("closedon_userid"); + this.DEFAULT_SAVING_PRODUCT = getInternalColumnByName("default_savings_product"); + this.DEFAULT_SAVING_ACCOUNT = getInternalColumnByName("default_savings_account"); + this.CLIENT_TYPE_CV_ID = getInternalColumnByName("client_type_cv_id"); + this.CLIENT_CLASSIFICATION_CV_ID = getInternalColumnByName("client_classification_cv_id"); + this.REJECT_REASON_CV_ID = getInternalColumnByName("reject_reason_cv_id"); + this.REJECTED_ON_DATE = getInternalColumnByName("rejectedon_date"); + this.REJECTED_ON_USER_ID = getInternalColumnByName("rejectedon_userid"); + this.WITHDRAW_REASON_CV_ID = getInternalColumnByName("withdraw_reason_cv_id"); + this.WITHDRAWN_ON_DATE = getInternalColumnByName("withdrawn_on_date"); + this.WITHDRAW_ON_USER_ID = getInternalColumnByName("withdraw_on_userid"); + this.RE_ACTIVATED_ON_DATE = getInternalColumnByName("reactivated_on_date"); + this.RE_ACTIVATED_ON_USER_ID = getInternalColumnByName("reactivated_on_userid"); + this.legal_form_enum = getInternalColumnByName("legal_form_enum"); + this.RE_OPENED_ON_DATE = getInternalColumnByName("reopened_on_date"); + this.RE_OPENED_BY_USER_ID = getInternalColumnByName("reopened_by_userid"); + this.EMAIL_ADDRESS = getInternalColumnByName("email_address"); + this.PROPOSED_TRANSFER_DATE = getInternalColumnByName("proposed_transfer_date"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClientAddress.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClientAddress.java new file mode 100644 index 00000000..a69e1335 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClientAddress.java @@ -0,0 +1,32 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.*; + +public class MClientAddress extends AbstractTable { + + public final Column ID; + + public final Column CLIENT_ID; + + public final Column ADDRESS_ID; + + public final Column ADDRESS_TYPE_ID; + + public final Column ACTIVE; + + public static MClientAddress staticInitialize(DataContext dataContext) { + return new MClientAddress(dataContext); + } + + private MClientAddress(DataContext dataContext) { + super(dataContext, "m_client_address"); + this.ID = getInternalColumnByName("id"); + this.CLIENT_ID = getInternalColumnByName("client_id"); + this.ADDRESS_ID = getInternalColumnByName("address_id"); + this.ADDRESS_TYPE_ID = getInternalColumnByName("address_type_id"); + this.ACTIVE = getInternalColumnByName("is_active"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClientAttendance.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClientAttendance.java new file mode 100644 index 00000000..3803e3c8 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClientAttendance.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MClientAttendance extends AbstractTable { + + public final Column ID; + + public final Column CLIENT_ID; + + public final Column MEETING_ID; + + public final Column ATTENDANCE_TYPE_ENUM; + + public static MClientAttendance staticInitialize(DataContext dataContext) { + return new MClientAttendance(dataContext); + } + + private MClientAttendance(DataContext dataContext) { + super(dataContext, "m_client_attendance"); + this.ID = getInternalColumnByName("id"); + this.CLIENT_ID = getInternalColumnByName("client_id"); + this.MEETING_ID = getInternalColumnByName("meeting_id"); + this.ATTENDANCE_TYPE_ENUM = getInternalColumnByName("attendance_type_enum"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClientCharge.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClientCharge.java new file mode 100644 index 00000000..363ae475 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClientCharge.java @@ -0,0 +1,65 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MClientCharge extends AbstractTable { + + public final Column ID; + + public final Column CLIENT_ID; + + public final Column CHARGE_ID; + + public final Column PENALTY; + + public final Column CHARGE_TIME_ENUM; + + public final Column CHARGE_DUE_DATE; + + public final Column CHARGE_CALCULATION_ENUM; + + public final Column AMOUNT; + + public final Column AMOUNT_PAID_DERIVED; + + public final Column AMOUNT_WAIVED_DERIVED; + + public final Column AMOUNT_WRITTEN_OFF_DERIVED; + + public final Column AMOUNT_OUTSTANDING_DERIVED; + + public final Column PAID_DERIVED; + + public final Column WAIVED; + + public final Column ACTIVE; + + public final Column IN_ACTIVATED_ON_DATE; + + public static MClientCharge staticInitialize(DataContext dataContext) { + return new MClientCharge(dataContext); + } + + private MClientCharge(DataContext dataContext) { + super(dataContext, "m_client_charge"); + this.ID = getInternalColumnByName("id"); + this.CLIENT_ID = getInternalColumnByName("client_id"); + this.CHARGE_ID = getInternalColumnByName("charge_id"); + this.PENALTY = getInternalColumnByName("is_penalty"); + this.CHARGE_TIME_ENUM = getInternalColumnByName("charge_time_enum"); + this.CHARGE_DUE_DATE = getInternalColumnByName("charge_due_date"); + this.CHARGE_CALCULATION_ENUM = getInternalColumnByName("charge_calculation_enum"); + this.AMOUNT = getInternalColumnByName("amount"); + this.AMOUNT_PAID_DERIVED = getInternalColumnByName("amount_paid_derived"); + this.AMOUNT_WAIVED_DERIVED = getInternalColumnByName("amount_waived_derived"); + this.AMOUNT_WRITTEN_OFF_DERIVED = getInternalColumnByName("amount_writtenoff_derived"); + this.AMOUNT_OUTSTANDING_DERIVED = getInternalColumnByName("amount_outstanding_derived"); + this.PAID_DERIVED = getInternalColumnByName("is_paid_derived"); + this.WAIVED = getInternalColumnByName("waived"); + this.ACTIVE = getInternalColumnByName("is_active"); + this.IN_ACTIVATED_ON_DATE = getInternalColumnByName("inactivated_on_date"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClientChargePaidBy.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClientChargePaidBy.java new file mode 100644 index 00000000..6114ec77 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClientChargePaidBy.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MClientChargePaidBy extends AbstractTable { + + public final Column ID; + + public final Column CLIENT_TRANSACTION_ID; + + public final Column CLIENT_CHARGE_ID; + + public final Column AMOUNT; + + public static MClientChargePaidBy staticInitialize(DataContext dataContext) { + return new MClientChargePaidBy(dataContext); + } + + private MClientChargePaidBy(DataContext dataContext) { + super(dataContext, "m_client_charge_paid_by"); + this.ID = getInternalColumnByName("id"); + this.CLIENT_TRANSACTION_ID = getInternalColumnByName("client_transaction_id"); + this.CLIENT_CHARGE_ID = getInternalColumnByName("client_charge_id"); + this.AMOUNT = getInternalColumnByName("amount"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClientIdentifier.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClientIdentifier.java new file mode 100644 index 00000000..abcf76c6 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClientIdentifier.java @@ -0,0 +1,50 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MClientIdentifier extends AbstractTable { + + public final Column ID; + + public final Column CLIENT_ID; + + public final Column DOCUMENT_TYPE_ID; + + public final Column DOCUMENT_KEY; + + public final Column STATUS; + + public final Column ACTIVE; + + public final Column DESCRIPTION; + + public final Column CREATED_BY_ID; + + public final Column LAST_MODIFIED_BY_ID; + + public final Column CREATED_DATE; + + public final Column LAST_MODIFIED_DATE; + + public static MClientIdentifier staticInitialize(DataContext dataContext) { + return new MClientIdentifier(dataContext); + } + + private MClientIdentifier(DataContext dataContext) { + super(dataContext, "m_client_identifier"); + this.ID = getInternalColumnByName("id"); + this.CLIENT_ID = getInternalColumnByName("client_id"); + this.DOCUMENT_TYPE_ID = getInternalColumnByName("document_type_id"); + this.DOCUMENT_KEY = getInternalColumnByName("document_key"); + this.STATUS = getInternalColumnByName("status"); + this.ACTIVE = getInternalColumnByName("active"); + this.DESCRIPTION = getInternalColumnByName("description"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClientNonPerson.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClientNonPerson.java new file mode 100644 index 00000000..137bef85 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClientNonPerson.java @@ -0,0 +1,38 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MClientNonPerson extends AbstractTable { + + public final Column ID; + + public final Column CLIENT_ID; + + public final Column CONSTITUTION_CV_ID; + + public final Column IN_CORP_NO; + + public final Column IN_CORP_VALIDITY_TILL; + + public final Column MAIN_BUSINESS_LINE_CV_ID; + + public final Column REMARK; + + public static MClientNonPerson staticInitialize(DataContext dataContext) { + return new MClientNonPerson(dataContext); + } + + private MClientNonPerson(DataContext dataContext) { + super(dataContext, "m_client_non_person"); + this.ID = getInternalColumnByName("id"); + this.CLIENT_ID = getInternalColumnByName("client_id"); + this.CONSTITUTION_CV_ID = getInternalColumnByName("constitution_cv_id"); + this.IN_CORP_NO = getInternalColumnByName("incorp_no"); + this.IN_CORP_VALIDITY_TILL = getInternalColumnByName("incorp_validity_till"); + this.MAIN_BUSINESS_LINE_CV_ID = getInternalColumnByName("main_business_line_cv_id"); + this.REMARK = getInternalColumnByName("remarks"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClientTransaction.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClientTransaction.java new file mode 100644 index 00000000..7e6eaa71 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClientTransaction.java @@ -0,0 +1,53 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MClientTransaction extends AbstractTable { + + public final Column ID; + + public final Column CLIENT_ID; + + public final Column OFFICE_ID; + + public final Column CURRENCY_CODE; + + public final Column PAYMENT_DETAIL_ID; + + public final Column REVERSED; + + public final Column EXTERNAL_ID; + + public final Column TRANSACTION_DATE; + + public final Column TRANSACTION_TYPE_ENUM; + + public final Column AMOUNT; + + public final Column CREATED_DATE; + + public final Column APP_USER_ID; + + public static MClientTransaction staticInitialize(DataContext dataContext) { + return new MClientTransaction(dataContext); + } + + private MClientTransaction(DataContext dataContext) { + super(dataContext, "m_client_transaction"); + this.ID = getInternalColumnByName("id"); + this.CLIENT_ID = getInternalColumnByName("client_id"); + this.OFFICE_ID = getInternalColumnByName("office_id"); + this.CURRENCY_CODE = getInternalColumnByName("currency_code"); + this.PAYMENT_DETAIL_ID = getInternalColumnByName("payment_detail_id"); + this.REVERSED = getInternalColumnByName("is_reversed"); + this.EXTERNAL_ID = getInternalColumnByName("external_id"); + this.TRANSACTION_DATE = getInternalColumnByName("transaction_date"); + this.TRANSACTION_TYPE_ENUM = getInternalColumnByName("transaction_type_enum"); + this.AMOUNT = getInternalColumnByName("amount"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.APP_USER_ID = getInternalColumnByName("appuser_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClientTransferDetail.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClientTransferDetail.java new file mode 100644 index 00000000..cf368406 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MClientTransferDetail.java @@ -0,0 +1,41 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MClientTransferDetail extends AbstractTable { + + public final Column ID; + + public final Column CLIENT_ID; + + public final Column FROM_OFFICE_ID; + + public final Column TO_OFFICE_ID; + + public final Column PROPOSED_TRANSFER_DATE; + + public final Column TRANSFER_TYPE; + + public final Column SUBMITTED_ON; + + public final Column SUBMITTED_BY; + + public static MClientTransferDetail staticInitialize(DataContext dataContext) { + return new MClientTransferDetail(dataContext); + } + + private MClientTransferDetail(DataContext dataContext) { + super(dataContext, "m_client_transfer_details"); + this.ID = getInternalColumnByName("id"); + this.CLIENT_ID = getInternalColumnByName("client_id"); + this.FROM_OFFICE_ID = getInternalColumnByName("from_office_id"); + this.TO_OFFICE_ID = getInternalColumnByName("to_office_id"); + this.PROPOSED_TRANSFER_DATE = getInternalColumnByName("proposed_transfer_date"); + this.TRANSFER_TYPE = getInternalColumnByName("transfer_type"); + this.SUBMITTED_ON = getInternalColumnByName("submitted_on"); + this.SUBMITTED_BY = getInternalColumnByName("submitted_by"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCode.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCode.java new file mode 100644 index 00000000..860ae816 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCode.java @@ -0,0 +1,26 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MCode extends AbstractTable { + + public final Column ID; + + public final Column CODE_NAME; + + public final Column SYSTEM_DEFINED; + + public static MCode staticInitialize(DataContext dataContext) { + return new MCode(dataContext); + } + + private MCode(DataContext dataContext) { + super(dataContext, "m_code"); + this.ID = getInternalColumnByName("id"); + this.CODE_NAME = getInternalColumnByName("code_name"); + this.SYSTEM_DEFINED = getInternalColumnByName("is_system_defined"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCodeValue.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCodeValue.java new file mode 100644 index 00000000..57838fab --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCodeValue.java @@ -0,0 +1,41 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MCodeValue extends AbstractTable { + + public final Column ID; + + public final Column CODE_ID; + + public final Column CODE_VALUE; + + public final Column CODE_DESCRIPTION; + + public final Column ORDER_POSITION; + + public final Column CODE_SCORE; + + public final Column ACTIVE; + + public final Column MANDATORY; + + public static MCodeValue staticInitialize(DataContext dataContext) { + return new MCodeValue(dataContext); + } + + private MCodeValue(DataContext dataContext) { + super(dataContext, "m_code_value"); + this.ID = getInternalColumnByName("id"); + this.CODE_ID = getInternalColumnByName("code_id"); + this.CODE_VALUE = getInternalColumnByName("code_value"); + this.CODE_DESCRIPTION = getInternalColumnByName("code_description"); + this.ORDER_POSITION = getInternalColumnByName("order_position"); + this.CODE_SCORE = getInternalColumnByName("code_score"); + this.ACTIVE = getInternalColumnByName("is_active"); + this.MANDATORY = getInternalColumnByName("is_mandatory"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCreditBureau.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCreditBureau.java new file mode 100644 index 00000000..ca929c5b --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCreditBureau.java @@ -0,0 +1,32 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MCreditBureau extends AbstractTable { + + public final Column ID; + + public final Column NAME; + + public final Column PRODUCT; + + public final Column COUNTRY; + + public final Column IMPLEMENTATION_KEY; + + public static MCreditBureau staticInitialize(DataContext dataContext) { + return new MCreditBureau(dataContext); + } + + private MCreditBureau(DataContext dataContext) { + super(dataContext, "m_creditbureau"); + this.ID = getInternalColumnByName("id"); + this.NAME = getInternalColumnByName("name"); + this.PRODUCT = getInternalColumnByName("product"); + this.COUNTRY = getInternalColumnByName("country"); + this.IMPLEMENTATION_KEY = getInternalColumnByName("implementationKey"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCreditBureauConfiguration.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCreditBureauConfiguration.java new file mode 100644 index 00000000..bf1b8a5f --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCreditBureauConfiguration.java @@ -0,0 +1,32 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MCreditBureauConfiguration extends AbstractTable { + + public final Column ID; + + public final Column CONFIG_KEY; + + public final Column VALUE; + + public final Column ORGANISATION_CREDIT_BUREAU_ID; + + public final Column DESCRIPTION; + + public static MCreditBureauConfiguration staticInitialize(DataContext dataContext) { + return new MCreditBureauConfiguration(dataContext); + } + + private MCreditBureauConfiguration(DataContext dataContext) { + super(dataContext, "m_creditbureau_configuration"); + this.ID = getInternalColumnByName("id"); + this.CONFIG_KEY = getInternalColumnByName("configkey"); + this.VALUE = getInternalColumnByName("value"); + this.ORGANISATION_CREDIT_BUREAU_ID = getInternalColumnByName("organisation_creditbureau_id"); + this.DESCRIPTION = getInternalColumnByName("description"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCreditBureauLoanProductMapping.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCreditBureauLoanProductMapping.java new file mode 100644 index 00000000..08b81fd1 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCreditBureauLoanProductMapping.java @@ -0,0 +1,38 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MCreditBureauLoanProductMapping extends AbstractTable { + + public final Column ID; + + public final Column ORGANISATION_CREDIT_BUREAU_ID; + + public final Column LOAN_PRODUCT_ID; + + public final Column CREDIT_CHECK_MANDATORY; + + public final Column SKIP_CREDIT_CHECK_IN_FAILURE; + + public final Column STALE_PERIOD; + + public final Column ACTIVE; + + public static MCreditBureauLoanProductMapping staticInitialize(DataContext dataContext) { + return new MCreditBureauLoanProductMapping(dataContext); + } + + private MCreditBureauLoanProductMapping(DataContext dataContext) { + super(dataContext, "m_creditbureau_loanproduct_mapping"); + this.ID = getInternalColumnByName("id"); + this.ORGANISATION_CREDIT_BUREAU_ID = getInternalColumnByName("organisation_creditbureau_id"); + this.LOAN_PRODUCT_ID = getInternalColumnByName("loan_product_id"); + this.CREDIT_CHECK_MANDATORY = getInternalColumnByName("is_creditcheck_mandatory"); + this.SKIP_CREDIT_CHECK_IN_FAILURE = getInternalColumnByName("skip_creditcheck_in_failure"); + this.STALE_PERIOD = getInternalColumnByName("stale_period"); + this.ACTIVE = getInternalColumnByName("is_active"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCurrency.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCurrency.java new file mode 100644 index 00000000..009d4a4f --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MCurrency.java @@ -0,0 +1,38 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MCurrency extends AbstractTable { + + public final Column ID; + + public final Column CODE; + + public final Column DECIMAL_PLACE; + + public final Column CURRENCY_MULTIPLE_OF; + + public final Column DISPLAY_SYMBOL; + + public final Column NAME; + + public final Column INTERNATIONALIZED_NAME_CODE; + + public static MCurrency staticInitialize(DataContext dataContext) { + return new MCurrency(dataContext); + } + + private MCurrency(DataContext dataContext) { + super(dataContext, "m_currency"); + this.ID = getInternalColumnByName("id"); + this.CODE = getInternalColumnByName("code"); + this.DECIMAL_PLACE = getInternalColumnByName("decimal_places"); + this.CURRENCY_MULTIPLE_OF = getInternalColumnByName("currency_multiplesof"); + this.DISPLAY_SYMBOL = getInternalColumnByName("display_symbol"); + this.NAME = getInternalColumnByName("name"); + this.INTERNATIONALIZED_NAME_CODE = getInternalColumnByName("internationalized_name_code"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MDepositAccountOnHoldTransaction.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MDepositAccountOnHoldTransaction.java new file mode 100644 index 00000000..f6eb0494 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MDepositAccountOnHoldTransaction.java @@ -0,0 +1,38 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MDepositAccountOnHoldTransaction extends AbstractTable { + + public final Column ID; + + public final Column SAVING_ACCOUNT_ID; + + public final Column AMOUNT; + + public final Column TRANSACTION_TYPE_ENUM; + + public final Column TRANSACTION_DATE; + + public final Column REVERSED; + + public final Column CREATED_DATE; + + public static MDepositAccountOnHoldTransaction staticInitialize(DataContext dataContext) { + return new MDepositAccountOnHoldTransaction(dataContext); + } + + private MDepositAccountOnHoldTransaction(DataContext dataContext) { + super(dataContext, "m_deposit_account_on_hold_transaction"); + this.ID = getInternalColumnByName("id"); + this.SAVING_ACCOUNT_ID = getInternalColumnByName("savings_account_id"); + this.AMOUNT = getInternalColumnByName("amount"); + this.TRANSACTION_TYPE_ENUM = getInternalColumnByName("transaction_type_enum"); + this.TRANSACTION_DATE = getInternalColumnByName("transaction_date"); + this.REVERSED = getInternalColumnByName("is_reversed"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MDepositAccountRecurringDetail.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MDepositAccountRecurringDetail.java new file mode 100644 index 00000000..92df854d --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MDepositAccountRecurringDetail.java @@ -0,0 +1,44 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MDepositAccountRecurringDetail extends AbstractTable { + + public final Column ID; + + public final Column SAVING_ACCOUNT_ID; + + public final Column MANDATORY_RECOMMENDED_DEPOSIT_AMOUNT; + + public final Column MANDATORY; + + public final Column ALLOW_WITHDRAWAL; + + public final Column ADJUST_ADVANCE_TOWARD_FUTURE_PAYMENT; + + public final Column CALENDAR_INHERITED; + + public final Column TOTAL_OVERDUE_AMOUNT; + + public final Column NO_OF_OVERDUE_INSTALLMENT; + + public static MDepositAccountRecurringDetail staticInitialize(DataContext dataContext) { + return new MDepositAccountRecurringDetail(dataContext); + } + + private MDepositAccountRecurringDetail(DataContext dataContext) { + super(dataContext, "m_deposit_account_recurring_detail"); + this.ID = getInternalColumnByName("id"); + this.SAVING_ACCOUNT_ID = getInternalColumnByName("savings_account_id"); + this.MANDATORY_RECOMMENDED_DEPOSIT_AMOUNT = getInternalColumnByName("mandatory_recommended_deposit_amount"); + this.MANDATORY = getInternalColumnByName("is_mandatory"); + this.ALLOW_WITHDRAWAL = getInternalColumnByName("allow_withdrawal"); + this.ADJUST_ADVANCE_TOWARD_FUTURE_PAYMENT = getInternalColumnByName("adjust_advance_towards_future_payments"); + this.CALENDAR_INHERITED = getInternalColumnByName("is_calendar_inherited"); + this.TOTAL_OVERDUE_AMOUNT = getInternalColumnByName("total_overdue_amount"); + this.NO_OF_OVERDUE_INSTALLMENT = getInternalColumnByName("no_of_overdue_installments"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MDepositAccountTermAndPreClosure.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MDepositAccountTermAndPreClosure.java new file mode 100644 index 00000000..b47670da --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MDepositAccountTermAndPreClosure.java @@ -0,0 +1,77 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MDepositAccountTermAndPreClosure extends AbstractTable { + + public final Column ID; + + public final Column SAVING_ACCOUNT_ID; + + public final Column MIN_DEPOSIT_TERM; + + public final Column MAX_DEPOSIT_TERM; + + public final Column MIN_DEPOSIT_TERM_TYPE_ENUM; + + public final Column MAX_DEPOSIT_TERM_TYPE_ENUM; + + public final Column IN_MULTIPLE_OF_DEPOSIT_TERM; + + public final Column IN_MULTIPLE_OF_DEPOSIT_TERM_TYPE_ENUM; + + public final Column PRE_CLOSURE_PENAL_APPLICABLE; + + public final Column PRE_CLOSURE_PENAL_INTEREST; + + public final Column PRE_CLOSURE_PENAL_INTEREST_ON_ENUM; + + public final Column DEPOSIT_PERIOD; + + public final Column DEPOSIT_PERIOD_FREQUENCY_ENUM; + + public final Column DEPOSIT_AMOUNT; + + public final Column MATURITY_AMOUNT; + + public final Column MATURITY_DATE; + + public final Column ON_ACCOUNT_CLOSURE_ENUM; + + public final Column EXPECTED_FIRST_DEPOSITON_DATE; + + public final Column TRANSFER_INTEREST_TO_LINKED_ACCOUNT; + + public final Column TRANSFER_TO_SAVING_ACCOUNT_ID; + + public static MDepositAccountTermAndPreClosure staticInitialize(DataContext dataContext) { + return new MDepositAccountTermAndPreClosure(dataContext); + } + + private MDepositAccountTermAndPreClosure(DataContext dataContext) { + super(dataContext, "m_deposit_account_term_and_preclosure"); + this.ID = getInternalColumnByName("id"); + this.SAVING_ACCOUNT_ID = getInternalColumnByName("savings_account_id"); + this.MIN_DEPOSIT_TERM = getInternalColumnByName("min_deposit_term"); + this.MAX_DEPOSIT_TERM = getInternalColumnByName("max_deposit_term"); + this.MIN_DEPOSIT_TERM_TYPE_ENUM = getInternalColumnByName("min_deposit_term_type_enum"); + this.MAX_DEPOSIT_TERM_TYPE_ENUM = getInternalColumnByName("max_deposit_term_type_enum"); + this.IN_MULTIPLE_OF_DEPOSIT_TERM = getInternalColumnByName("in_multiples_of_deposit_term"); + this.IN_MULTIPLE_OF_DEPOSIT_TERM_TYPE_ENUM = getInternalColumnByName("in_multiples_of_deposit_term_type_enum"); + this.PRE_CLOSURE_PENAL_APPLICABLE = getInternalColumnByName("pre_closure_penal_applicable"); + this.PRE_CLOSURE_PENAL_INTEREST = getInternalColumnByName("pre_closure_penal_interest"); + this.PRE_CLOSURE_PENAL_INTEREST_ON_ENUM = getInternalColumnByName("pre_closure_penal_interest_on_enum"); + this.DEPOSIT_PERIOD = getInternalColumnByName("deposit_period"); + this.DEPOSIT_PERIOD_FREQUENCY_ENUM = getInternalColumnByName("deposit_period_frequency_enum"); + this.DEPOSIT_AMOUNT = getInternalColumnByName("deposit_amount"); + this.MATURITY_AMOUNT = getInternalColumnByName("maturity_amount"); + this.MATURITY_DATE = getInternalColumnByName("maturity_date"); + this.ON_ACCOUNT_CLOSURE_ENUM = getInternalColumnByName("on_account_closure_enum"); + this.EXPECTED_FIRST_DEPOSITON_DATE = getInternalColumnByName("expected_firstdepositon_date"); + this.TRANSFER_INTEREST_TO_LINKED_ACCOUNT = getInternalColumnByName("transfer_interest_to_linked_account"); + this.TRANSFER_TO_SAVING_ACCOUNT_ID = getInternalColumnByName("transfer_to_savings_account_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MDepositProductInterestRateChart.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MDepositProductInterestRateChart.java new file mode 100644 index 00000000..bd76a4f4 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MDepositProductInterestRateChart.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MDepositProductInterestRateChart extends AbstractTable { + + public final Column DEPOSIT_PRODUCT_ID; + + public final Column INTEREST_RATE_CHART_ID; + + public static MDepositProductInterestRateChart staticInitialize(DataContext dataContext) { + return new MDepositProductInterestRateChart(dataContext); + } + + private MDepositProductInterestRateChart(DataContext dataContext) { + super(dataContext, "m_deposit_product_interest_rate_chart"); + this.DEPOSIT_PRODUCT_ID = getInternalColumnByName("deposit_product_id"); + this.INTEREST_RATE_CHART_ID = getInternalColumnByName("interest_rate_chart_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MDepositProductRecurringDetail.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MDepositProductRecurringDetail.java new file mode 100644 index 00000000..feaccf11 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MDepositProductRecurringDetail.java @@ -0,0 +1,32 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MDepositProductRecurringDetail extends AbstractTable { + + public final Column ID; + + public final Column SAVING_PRODUCT_ID; + + public final Column MANDATORY; + + public final Column ALLOW_WITHDRAWAL; + + public final Column ADJUST_ADVANCE_TOWARD_FUTURE_PAYMENT; + + public static MDepositProductRecurringDetail staticInitialize(DataContext dataContext) { + return new MDepositProductRecurringDetail(dataContext); + } + + private MDepositProductRecurringDetail(DataContext dataContext) { + super(dataContext, "m_deposit_product_recurring_detail"); + this.ID = getInternalColumnByName("id"); + this.SAVING_PRODUCT_ID = getInternalColumnByName("savings_product_id"); + this.MANDATORY = getInternalColumnByName("is_mandatory"); + this.ALLOW_WITHDRAWAL = getInternalColumnByName("allow_withdrawal"); + this.ADJUST_ADVANCE_TOWARD_FUTURE_PAYMENT = getInternalColumnByName("adjust_advance_towards_future_payments"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MDepositProductTermAndPreClosure.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MDepositProductTermAndPreClosure.java new file mode 100644 index 00000000..1a98bf7f --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MDepositProductTermAndPreClosure.java @@ -0,0 +1,59 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MDepositProductTermAndPreClosure extends AbstractTable { + + public final Column ID; + + public final Column SAVING_PRODUCT_ID; + + public final Column MIN_DEPOSIT_TERM; + + public final Column MAX_DEPOSIT_TERM; + + public final Column MIN_DEPOSIT_TERM_TYPE_ENUM; + + public final Column MAX_DEPOSIT_TERM_TYPE_ENUM; + + public final Column IN_MULTIPLE_OF_DEPOSIT_TERM; + + public final Column IN_MULTIPLE_OF_DEPOSIT_TERM_TYPE_ENUM; + + public final Column PRE_CLOSURE_PENAL_APPLICABLE; + + public final Column PRE_CLOSURE_PENAL_INTEREST; + + public final Column PRE_CLOSURE_PENAL_INTEREST_ON_ENUM; + + public final Column MIN_DEPOSIT_AMOUNT; + + public final Column MAX_DEPOSIT_AMOUNT; + + public final Column DEPOSIT_AMOUNT; + + public static MDepositProductTermAndPreClosure staticInitialize(DataContext dataContext) { + return new MDepositProductTermAndPreClosure(dataContext); + } + + private MDepositProductTermAndPreClosure(DataContext dataContext) { + super(dataContext, "m_deposit_product_term_and_preclosure"); + this.ID = getInternalColumnByName("id"); + this.SAVING_PRODUCT_ID = getInternalColumnByName("savings_product_id"); + this.MIN_DEPOSIT_TERM = getInternalColumnByName("min_deposit_term"); + this.MAX_DEPOSIT_TERM = getInternalColumnByName("max_deposit_term"); + this.MIN_DEPOSIT_TERM_TYPE_ENUM = getInternalColumnByName("min_deposit_term_type_enum"); + this.MAX_DEPOSIT_TERM_TYPE_ENUM = getInternalColumnByName("max_deposit_term_type_enum"); + this.IN_MULTIPLE_OF_DEPOSIT_TERM = getInternalColumnByName("in_multiples_of_deposit_term"); + this.IN_MULTIPLE_OF_DEPOSIT_TERM_TYPE_ENUM = getInternalColumnByName("in_multiples_of_deposit_term_type_enum"); + this.PRE_CLOSURE_PENAL_APPLICABLE = getInternalColumnByName("pre_closure_penal_applicable"); + this.PRE_CLOSURE_PENAL_INTEREST = getInternalColumnByName("pre_closure_penal_interest"); + this.PRE_CLOSURE_PENAL_INTEREST_ON_ENUM = getInternalColumnByName("pre_closure_penal_interest_on_enum"); + this.MIN_DEPOSIT_AMOUNT = getInternalColumnByName("min_deposit_amount"); + this.MAX_DEPOSIT_AMOUNT = getInternalColumnByName("max_deposit_amount"); + this.DEPOSIT_AMOUNT = getInternalColumnByName("deposit_amount"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MDocument.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MDocument.java new file mode 100644 index 00000000..4f950b3d --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MDocument.java @@ -0,0 +1,47 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MDocument extends AbstractTable { + + public final Column ID; + + public final Column PARENT_ENTITY_TYPE; + + public final Column PARENT_ENTITY_ID; + + public final Column NAME; + + public final Column FILE_NAME; + + public final Column SIZE; + + public final Column TYPE; + + public final Column DESCRIPTION; + + public final Column LOCATION; + + public final Column STORAGE_TYPE_ENUM; + + public static MDocument staticInitialize(DataContext dataContext) { + return new MDocument(dataContext); + } + + private MDocument(DataContext dataContext) { + super(dataContext, "m_document"); + this.ID = getInternalColumnByName("id"); + this.PARENT_ENTITY_TYPE = getInternalColumnByName("parent_entity_type"); + this.PARENT_ENTITY_ID = getInternalColumnByName("parent_entity_id"); + this.NAME = getInternalColumnByName("name"); + this.FILE_NAME = getInternalColumnByName("file_name"); + this.SIZE = getInternalColumnByName("size"); + this.TYPE = getInternalColumnByName("type"); + this.DESCRIPTION = getInternalColumnByName("description"); + this.LOCATION = getInternalColumnByName("location"); + this.STORAGE_TYPE_ENUM = getInternalColumnByName("storage_type_enum"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MEntityDatatableCheck.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MEntityDatatableCheck.java new file mode 100644 index 00000000..e6785e41 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MEntityDatatableCheck.java @@ -0,0 +1,35 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MEntityDatatableCheck extends AbstractTable { + + public final Column ID; + + public final Column APPLICATION_TABLE_NAME; + + public final Column X_REGISTERED_TABLE_NAME; + + public final Column STATUS_ENUM; + + public final Column SYSTEM_DEFINED; + + public final Column PRODUCT_ID; + + public static MEntityDatatableCheck staticInitialize(DataContext dataContext) { + return new MEntityDatatableCheck(dataContext); + } + + private MEntityDatatableCheck(DataContext dataContext) { + super(dataContext, "m_entity_datatable_check"); + this.ID = getInternalColumnByName("id"); + this.APPLICATION_TABLE_NAME = getInternalColumnByName("application_table_name"); + this.X_REGISTERED_TABLE_NAME = getInternalColumnByName("x_registered_table_name"); + this.STATUS_ENUM = getInternalColumnByName("status_enum"); + this.SYSTEM_DEFINED = getInternalColumnByName("system_defined"); + this.PRODUCT_ID = getInternalColumnByName("product_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MEntityRelation.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MEntityRelation.java new file mode 100644 index 00000000..4949b498 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MEntityRelation.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MEntityRelation extends AbstractTable { + + public final Column ID; + + public final Column FROM_ENTITY_TYPE; + + public final Column TO_ENTITY_TYPE; + + public final Column CODE_NAME; + + public static MEntityRelation staticInitialize(DataContext dataContext) { + return new MEntityRelation(dataContext); + } + + private MEntityRelation(DataContext dataContext) { + super(dataContext, "m_entity_relation"); + this.ID = getInternalColumnByName("id"); + this.FROM_ENTITY_TYPE = getInternalColumnByName("from_entity_type"); + this.TO_ENTITY_TYPE = getInternalColumnByName("to_entity_type"); + this.CODE_NAME = getInternalColumnByName("code_name"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MEntityToEntityAccess.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MEntityToEntityAccess.java new file mode 100644 index 00000000..3338f682 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MEntityToEntityAccess.java @@ -0,0 +1,35 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MEntityToEntityAccess extends AbstractTable { + + public final Column ID; + + public final Column ENTITY_TYPE; + + public final Column ENTITY_ID; + + public final Column ACCESS_TYPE_CODE_VALUE_ID; + + public final Column SECOND_ENTITY_TYPE; + + public final Column SECOND_ENTITY_ID; + + public static MEntityToEntityAccess staticInitialize(DataContext dataContext) { + return new MEntityToEntityAccess(dataContext); + } + + private MEntityToEntityAccess(DataContext dataContext) { + super(dataContext, "m_entity_to_entity_access"); + this.ID = getInternalColumnByName("id"); + this.ENTITY_TYPE = getInternalColumnByName("entity_type"); + this.ENTITY_ID = getInternalColumnByName("entity_id"); + this.ACCESS_TYPE_CODE_VALUE_ID = getInternalColumnByName("access_type_code_value_id"); + this.SECOND_ENTITY_TYPE = getInternalColumnByName("second_entity_type"); + this.SECOND_ENTITY_ID = getInternalColumnByName("second_entity_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MEntityToEntityMapping.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MEntityToEntityMapping.java new file mode 100644 index 00000000..9618fe0b --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MEntityToEntityMapping.java @@ -0,0 +1,35 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MEntityToEntityMapping extends AbstractTable { + + public final Column ID; + + public final Column REL_ID; + + public final Column FROM_ID; + + public final Column TO_ID; + + public final Column START_DATE; + + public final Column END_DATE; + + public static MEntityToEntityMapping staticInitialize(DataContext dataContext) { + return new MEntityToEntityMapping(dataContext); + } + + private MEntityToEntityMapping(DataContext dataContext) { + super(dataContext, "m_entity_to_entity_mapping"); + this.ID = getInternalColumnByName("id"); + this.REL_ID = getInternalColumnByName("rel_id"); + this.FROM_ID = getInternalColumnByName("from_id"); + this.TO_ID = getInternalColumnByName("to_id"); + this.START_DATE = getInternalColumnByName("start_date"); + this.END_DATE = getInternalColumnByName("end_date"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MFamilyMember.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MFamilyMember.java new file mode 100644 index 00000000..dfadf225 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MFamilyMember.java @@ -0,0 +1,59 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MFamilyMember extends AbstractTable { + + public final Column ID; + + public final Column CLIENT_ID; + + public final Column FIRST_NAME; + + public final Column MIDDLE_NAME; + + public final Column LAST_NAME; + + public final Column QUALIFICATION; + + public final Column RELATIONSHIP_CV_ID; + + public final Column MARITAL_STATUS_CV_ID; + + public final Column GENDER_CV_ID; + + public final Column DATE_OF_BIRTH; + + public final Column AGE; + + public final Column PROFESSION_CV_ID; + + public final Column MOBILE_NUMBER; + + public final Column DEPENDENT; + + public static MFamilyMember staticInitialize(DataContext dataContext) { + return new MFamilyMember(dataContext); + } + + private MFamilyMember(DataContext dataContext) { + super(dataContext, "m_family_members"); + this.ID = getInternalColumnByName("id"); + this.CLIENT_ID = getInternalColumnByName("client_id"); + this.FIRST_NAME = getInternalColumnByName("firstname"); + this.MIDDLE_NAME = getInternalColumnByName("middlename"); + this.LAST_NAME = getInternalColumnByName("lastname"); + this.QUALIFICATION = getInternalColumnByName("qualification"); + this.RELATIONSHIP_CV_ID = getInternalColumnByName("relationship_cv_id"); + this.MARITAL_STATUS_CV_ID = getInternalColumnByName("marital_status_cv_id"); + this.GENDER_CV_ID = getInternalColumnByName("gender_cv_id"); + this.DATE_OF_BIRTH = getInternalColumnByName("date_of_birth"); + this.AGE = getInternalColumnByName("age"); + this.PROFESSION_CV_ID = getInternalColumnByName("profession_cv_id"); + this.MOBILE_NUMBER = getInternalColumnByName("mobile_number"); + this.DEPENDENT = getInternalColumnByName("is_dependent"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MFieldConfiguration.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MFieldConfiguration.java new file mode 100644 index 00000000..65685793 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MFieldConfiguration.java @@ -0,0 +1,38 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MFieldConfiguration extends AbstractTable { + + public final Column ID; + + public final Column ENTITY; + + public final Column SUB_ENTITY; + + public final Column FIELD; + + public final Column ENABLED; + + public final Column MANDATORY; + + public final Column VALIDATION_REGEX; + + public static MFieldConfiguration staticInitialize(DataContext dataContext) { + return new MFieldConfiguration(dataContext); + } + + private MFieldConfiguration(DataContext dataContext) { + super(dataContext, "m_field_configuration"); + this.ID = getInternalColumnByName("id"); + this.ENTITY = getInternalColumnByName("entity"); + this.SUB_ENTITY = getInternalColumnByName("subentity"); + this.FIELD = getInternalColumnByName("field"); + this.ENABLED = getInternalColumnByName("is_enabled"); + this.MANDATORY = getInternalColumnByName("is_mandatory"); + this.VALIDATION_REGEX = getInternalColumnByName("validation_regex"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MFloatingRate.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MFloatingRate.java new file mode 100644 index 00000000..87e7b5a3 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MFloatingRate.java @@ -0,0 +1,41 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MFloatingRate extends AbstractTable { + + public final Column ID; + + public final Column NAME; + + public final Column BASE_LENDING_RATE; + + public final Column ACTIVE; + + public final Column CREATED_BY_ID; + + public final Column CREATED_DATE; + + public final Column LAST_MODIFIED_BY_ID; + + public final Column LAST_MODIFIED_DATE; + + public static MFloatingRate staticInitialize(DataContext dataContext) { + return new MFloatingRate(dataContext); + } + + private MFloatingRate(DataContext dataContext) { + super(dataContext, "m_floating_rates"); + this.ID = getInternalColumnByName("id"); + this.NAME = getInternalColumnByName("name"); + this.BASE_LENDING_RATE = getInternalColumnByName("is_base_lending_rate"); + this.ACTIVE = getInternalColumnByName("is_active"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MFloatingRatePeriod.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MFloatingRatePeriod.java new file mode 100644 index 00000000..d50db472 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MFloatingRatePeriod.java @@ -0,0 +1,47 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MFloatingRatePeriod extends AbstractTable { + + public final Column ID; + + public final Column FLOATING_RATE_ID; + + public final Column FROM_DATE; + + public final Column INTEREST_RATE; + + public final Column DIFFERENTIAL_TO_BASE_LENDING_RATE; + + public final Column ACTIVE; + + public final Column CREATED_BY_ID; + + public final Column CREATED_DATE; + + public final Column LAST_MODIFIED_BY_ID; + + public final Column LAST_MODIFIED_DATE; + + public static MFloatingRatePeriod staticInitialize(DataContext dataContext) { + return new MFloatingRatePeriod(dataContext); + } + + private MFloatingRatePeriod(DataContext dataContext) { + super(dataContext, "m_floating_rates_periods"); + this.ID = getInternalColumnByName("id"); + this.FLOATING_RATE_ID = getInternalColumnByName("floating_rates_id"); + this.FROM_DATE = getInternalColumnByName("from_date"); + this.INTEREST_RATE = getInternalColumnByName("interest_rate"); + this.DIFFERENTIAL_TO_BASE_LENDING_RATE = getInternalColumnByName("is_differential_to_base_lending_rate"); + this.ACTIVE = getInternalColumnByName("is_active"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MFund.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MFund.java new file mode 100644 index 00000000..f3227869 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MFund.java @@ -0,0 +1,26 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MFund extends AbstractTable { + + public final Column ID; + + public final Column EXTERNAL_ID; + + public final Column NAME; + + public static MFund staticInitialize(DataContext dataContext) { + return new MFund(dataContext); + } + + private MFund(DataContext dataContext) { + super(dataContext, "m_fund"); + this.ID = getInternalColumnByName("id"); + this.EXTERNAL_ID = getInternalColumnByName("external_id"); + this.NAME = getInternalColumnByName("name"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MGroup.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MGroup.java new file mode 100644 index 00000000..6b6a7999 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MGroup.java @@ -0,0 +1,68 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MGroup extends AbstractTable { + + public final Column ID; + + public final Column EXTERNAL_ID; + + public final Column STATUS_ENUM; + + public final Column ACTIVATION_DATE; + + public final Column OFFICE_ID; + + public final Column STAFF_ID; + + public final Column PARENT_ID; + + public final Column LEVEL_ID; + + public final Column DISPLAY_NAME; + + public final Column HIERARCHY; + + public final Column CLOSURE_REASON_CV_ID; + + public final Column CLOSED_ON_DATE; + + public final Column ACTIVATED_ON_USER_ID; + + public final Column SUBMITTED_ON_DATE; + + public final Column SUBMITTED_ON_USER_ID; + + public final Column CLOSED_ON_USER_ID; + + public final Column ACCOUNT_NO; + + public static MGroup staticInitialize(DataContext dataContext) { + return new MGroup(dataContext); + } + + private MGroup(DataContext dataContext) { + super(dataContext, "m_group"); + this.ID = getInternalColumnByName("id"); + this.EXTERNAL_ID = getInternalColumnByName("external_id"); + this.STATUS_ENUM = getInternalColumnByName("status_enum"); + this.ACTIVATION_DATE = getInternalColumnByName("activation_date"); + this.OFFICE_ID = getInternalColumnByName("office_id"); + this.STAFF_ID = getInternalColumnByName("staff_id"); + this.PARENT_ID = getInternalColumnByName("parent_id"); + this.LEVEL_ID = getInternalColumnByName("level_id"); + this.DISPLAY_NAME = getInternalColumnByName("display_name"); + this.HIERARCHY = getInternalColumnByName("hierarchy"); + this.CLOSURE_REASON_CV_ID = getInternalColumnByName("closure_reason_cv_id"); + this.CLOSED_ON_DATE = getInternalColumnByName("closedon_date"); + this.ACTIVATED_ON_USER_ID = getInternalColumnByName("activatedon_userid"); + this.SUBMITTED_ON_DATE = getInternalColumnByName("submittedon_date"); + this.SUBMITTED_ON_USER_ID = getInternalColumnByName("submittedon_userid"); + this.CLOSED_ON_USER_ID = getInternalColumnByName("closedon_userid"); + this.ACCOUNT_NO = getInternalColumnByName("account_no"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MGroupClient.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MGroupClient.java new file mode 100644 index 00000000..56ca1a6a --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MGroupClient.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MGroupClient extends AbstractTable { + + public final Column GROUP_ID; + + public final Column CLIENT_ID; + + public static MGroupClient staticInitialize(DataContext dataContext) { + return new MGroupClient(dataContext); + } + + private MGroupClient(DataContext dataContext) { + super(dataContext, "m_group_client"); + this.GROUP_ID = getInternalColumnByName("group_id"); + this.CLIENT_ID = getInternalColumnByName("client_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MGroupLevel.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MGroupLevel.java new file mode 100644 index 00000000..39b1acd9 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MGroupLevel.java @@ -0,0 +1,35 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MGroupLevel extends AbstractTable { + + public final Column ID; + + public final Column PARENT_ID; + + public final Column SUPER_PARENT; + + public final Column LEVEL_NAME; + + public final Column RECURSABLE; + + public final Column CAN_HAVE_CLIENT; + + public static MGroupLevel staticInitialize(DataContext dataContext) { + return new MGroupLevel(dataContext); + } + + private MGroupLevel(DataContext dataContext) { + super(dataContext, "m_group_level"); + this.ID = getInternalColumnByName("id"); + this.PARENT_ID = getInternalColumnByName("parent_id"); + this.SUPER_PARENT = getInternalColumnByName("super_parent"); + this.LEVEL_NAME = getInternalColumnByName("level_name"); + this.RECURSABLE = getInternalColumnByName("recursable"); + this.CAN_HAVE_CLIENT = getInternalColumnByName("can_have_clients"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MGroupRole.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MGroupRole.java new file mode 100644 index 00000000..29da11a4 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MGroupRole.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MGroupRole extends AbstractTable { + + public final Column ID; + + public final Column CLIENT_ID; + + public final Column GROUP_ID; + + public final Column ROLE_CV_ID; + + public static MGroupRole staticInitialize(DataContext dataContext) { + return new MGroupRole(dataContext); + } + + private MGroupRole(DataContext dataContext) { + super(dataContext, "m_group_roles"); + this.ID = getInternalColumnByName("id"); + this.CLIENT_ID = getInternalColumnByName("client_id"); + this.GROUP_ID = getInternalColumnByName("group_id"); + this.ROLE_CV_ID = getInternalColumnByName("role_cv_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MGuarantor.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MGuarantor.java new file mode 100644 index 00000000..cc5c05b8 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MGuarantor.java @@ -0,0 +1,71 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MGuarantor extends AbstractTable { + + public final Column ID; + + public final Column LOAN_ID; + + public final Column CLIENT_RELN_CV_ID; + + public final Column TYPE_ENUM; + + public final Column ENTITY_ID; + + public final Column FIRST_NAME; + + public final Column LAST_NAME; + + public final Column DOB; + + public final Column ADDRESS_LINE_1; + + public final Column ADDRESS_LINE_2; + + public final Column CITY; + + public final Column STATE; + + public final Column COUNTRY; + + public final Column ZIP; + + public final Column HOUSE_PHONE_NUMBER; + + public final Column MOBILE_NUMBER; + + public final Column COMMENT; + + public final Column ACTIVE; + + public static MGuarantor staticInitialize(DataContext dataContext) { + return new MGuarantor(dataContext); + } + + private MGuarantor(DataContext dataContext) { + super(dataContext, "m_guarantor"); + this.ID = getInternalColumnByName("id"); + this.LOAN_ID = getInternalColumnByName("loan_id"); + this.CLIENT_RELN_CV_ID = getInternalColumnByName("client_reln_cv_id"); + this.TYPE_ENUM = getInternalColumnByName("type_enum"); + this.ENTITY_ID = getInternalColumnByName("entity_id"); + this.FIRST_NAME = getInternalColumnByName("firstname"); + this.LAST_NAME = getInternalColumnByName("lastname"); + this.DOB = getInternalColumnByName("dob"); + this.ADDRESS_LINE_1 = getInternalColumnByName("address_line_1"); + this.ADDRESS_LINE_2 = getInternalColumnByName("address_line_2"); + this.CITY = getInternalColumnByName("city"); + this.STATE = getInternalColumnByName("state"); + this.COUNTRY = getInternalColumnByName("country"); + this.ZIP = getInternalColumnByName("zip"); + this.HOUSE_PHONE_NUMBER = getInternalColumnByName("house_phone_number"); + this.MOBILE_NUMBER = getInternalColumnByName("mobile_number"); + this.COMMENT = getInternalColumnByName("comment"); + this.ACTIVE = getInternalColumnByName("is_active"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MGuarantorFundingDetail.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MGuarantorFundingDetail.java new file mode 100644 index 00000000..9b128977 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MGuarantorFundingDetail.java @@ -0,0 +1,41 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MGuarantorFundingDetail extends AbstractTable { + + public final Column ID; + + public final Column GUARANTOR_ID; + + public final Column ACCOUNT_ASSOCIATION_ID; + + public final Column AMOUNT; + + public final Column AMOUNT_RELEASED_DERIVED; + + public final Column AMOUNT_REMAINING_DERIVED; + + public final Column AMOUNT_TRANSFERRED_DERIVED; + + public final Column STATUS_ENUM; + + public static MGuarantorFundingDetail staticInitialize(DataContext dataContext) { + return new MGuarantorFundingDetail(dataContext); + } + + private MGuarantorFundingDetail(DataContext dataContext) { + super(dataContext, "m_guarantor_funding_details"); + this.ID = getInternalColumnByName("id"); + this.GUARANTOR_ID = getInternalColumnByName("guarantor_id"); + this.ACCOUNT_ASSOCIATION_ID = getInternalColumnByName("account_associations_id"); + this.AMOUNT = getInternalColumnByName("amount"); + this.AMOUNT_RELEASED_DERIVED = getInternalColumnByName("amount_released_derived"); + this.AMOUNT_REMAINING_DERIVED = getInternalColumnByName("amount_remaining_derived"); + this.AMOUNT_TRANSFERRED_DERIVED = getInternalColumnByName("amount_transfered_derived"); + this.STATUS_ENUM = getInternalColumnByName("status_enum"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MGuarantorTransaction.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MGuarantorTransaction.java new file mode 100644 index 00000000..1149441a --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MGuarantorTransaction.java @@ -0,0 +1,32 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MGuarantorTransaction extends AbstractTable { + + public final Column ID; + + public final Column GUARANTOR_FUND_DETAIL_ID; + + public final Column LOAN_TRANSACTION_ID; + + public final Column DEPOSIT_ON_HOLD_TRANSACTION_ID; + + public final Column REVERSED; + + public static MGuarantorTransaction staticInitialize(DataContext dataContext) { + return new MGuarantorTransaction(dataContext); + } + + private MGuarantorTransaction(DataContext dataContext) { + super(dataContext, "m_guarantor_transaction"); + this.ID = getInternalColumnByName("id"); + this.GUARANTOR_FUND_DETAIL_ID = getInternalColumnByName("guarantor_fund_detail_id"); + this.LOAN_TRANSACTION_ID = getInternalColumnByName("loan_transaction_id"); + this.DEPOSIT_ON_HOLD_TRANSACTION_ID = getInternalColumnByName("deposit_on_hold_transaction_id"); + this.REVERSED = getInternalColumnByName("is_reversed"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MHoliday.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MHoliday.java new file mode 100644 index 00000000..80d19d68 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MHoliday.java @@ -0,0 +1,44 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MHoliday extends AbstractTable { + + public final Column ID; + + public final Column NAME; + + public final Column FROM_DATE; + + public final Column TO_DATE; + + public final Column REPAYMENT_RESCHEDULED_TO; + + public final Column STATUS_ENUM; + + public final Column PROCESSED; + + public final Column DESCRIPTION; + + public final Column RESCHEDULING_TYPE; + + public static MHoliday staticInitialize(DataContext dataContext) { + return new MHoliday(dataContext); + } + + private MHoliday(DataContext dataContext) { + super(dataContext, "m_holiday"); + this.ID = getInternalColumnByName("id"); + this.NAME = getInternalColumnByName("name"); + this.FROM_DATE = getInternalColumnByName("from_date"); + this.TO_DATE = getInternalColumnByName("to_date"); + this.REPAYMENT_RESCHEDULED_TO = getInternalColumnByName("repayments_rescheduled_to"); + this.STATUS_ENUM = getInternalColumnByName("status_enum"); + this.PROCESSED = getInternalColumnByName("processed"); + this.DESCRIPTION = getInternalColumnByName("description"); + this.RESCHEDULING_TYPE = getInternalColumnByName("rescheduling_type"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MHolidayOffice.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MHolidayOffice.java new file mode 100644 index 00000000..5ddcf952 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MHolidayOffice.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MHolidayOffice extends AbstractTable { + + public final Column HOLIDAY_ID; + + public final Column OFFICE_ID; + + public static MHolidayOffice staticInitialize(DataContext dataContext) { + return new MHolidayOffice(dataContext); + } + + private MHolidayOffice(DataContext dataContext) { + super(dataContext, "m_holiday_office"); + this.HOLIDAY_ID = getInternalColumnByName("holiday_id"); + this.OFFICE_ID = getInternalColumnByName("office_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MHook.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MHook.java new file mode 100644 index 00000000..1c49d3d0 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MHook.java @@ -0,0 +1,44 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MHook extends AbstractTable { + + public final Column ID; + + public final Column TEMPLATE_ID; + + public final Column ACTIVE; + + public final Column NAME; + + public final Column CREATED_BY_ID; + + public final Column CREATED_DATE; + + public final Column LAST_MODIFIED_BY_ID; + + public final Column LAST_MODIFIED_DATE; + + public final Column UGD_TEMPLATE_ID; + + public static MHook staticInitialize(DataContext dataContext) { + return new MHook(dataContext); + } + + private MHook(DataContext dataContext) { + super(dataContext, "m_hook"); + this.ID = getInternalColumnByName("id"); + this.TEMPLATE_ID = getInternalColumnByName("template_id"); + this.ACTIVE = getInternalColumnByName("is_active"); + this.NAME = getInternalColumnByName("name"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + this.UGD_TEMPLATE_ID = getInternalColumnByName("ugd_template_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MHookConfiguration.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MHookConfiguration.java new file mode 100644 index 00000000..d118ee4f --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MHookConfiguration.java @@ -0,0 +1,32 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MHookConfiguration extends AbstractTable { + + public final Column ID; + + public final Column HOOK_ID; + + public final Column FIELD_TYPE; + + public final Column FIELD_NAME; + + public final Column FIELD_VALUE; + + public static MHookConfiguration staticInitialize(DataContext dataContext) { + return new MHookConfiguration(dataContext); + } + + private MHookConfiguration(DataContext dataContext) { + super(dataContext, "m_hook_configuration"); + this.ID = getInternalColumnByName("id"); + this.HOOK_ID = getInternalColumnByName("hook_id"); + this.FIELD_TYPE = getInternalColumnByName("field_type"); + this.FIELD_NAME = getInternalColumnByName("field_name"); + this.FIELD_VALUE = getInternalColumnByName("field_value"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MHookRegisteredEvent.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MHookRegisteredEvent.java new file mode 100644 index 00000000..32a20a45 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MHookRegisteredEvent.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MHookRegisteredEvent extends AbstractTable { + + public final Column ID; + + public final Column HOOK_ID; + + public final Column ENTITY_NAME; + + public final Column ACTION_NAME; + + public static MHookRegisteredEvent staticInitialize(DataContext dataContext) { + return new MHookRegisteredEvent(dataContext); + } + + private MHookRegisteredEvent(DataContext dataContext) { + super(dataContext, "m_hook_registered_events"); + this.ID = getInternalColumnByName("id"); + this.HOOK_ID = getInternalColumnByName("hook_id"); + this.ENTITY_NAME = getInternalColumnByName("entity_name"); + this.ACTION_NAME = getInternalColumnByName("action_name"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MHookSchema.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MHookSchema.java new file mode 100644 index 00000000..f18b799a --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MHookSchema.java @@ -0,0 +1,35 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MHookSchema extends AbstractTable { + + public final Column ID; + + public final Column HOOK_TEMPLATE_ID; + + public final Column FIELD_TYPE; + + public final Column FIELD_NAME; + + public final Column PLACEHOLDER; + + public final Column OPTIONAL; + + public static MHookSchema staticInitialize(DataContext dataContext) { + return new MHookSchema(dataContext); + } + + private MHookSchema(DataContext dataContext) { + super(dataContext, "m_hook_schema"); + this.ID = getInternalColumnByName("id"); + this.HOOK_TEMPLATE_ID = getInternalColumnByName("hook_template_id"); + this.FIELD_TYPE = getInternalColumnByName("field_type"); + this.FIELD_NAME = getInternalColumnByName("field_name"); + this.PLACEHOLDER = getInternalColumnByName("placeholder"); + this.OPTIONAL = getInternalColumnByName("optional"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MHookTemplate.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MHookTemplate.java new file mode 100644 index 00000000..dcb031c6 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MHookTemplate.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MHookTemplate extends AbstractTable { + + public final Column ID; + + public final Column NAME; + + public static MHookTemplate staticInitialize(DataContext dataContext) { + return new MHookTemplate(dataContext); + } + + private MHookTemplate(DataContext dataContext) { + super(dataContext, "m_hook_templates"); + this.ID = getInternalColumnByName("id"); + this.NAME = getInternalColumnByName("name"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MImage.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MImage.java new file mode 100644 index 00000000..fb07f4ca --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MImage.java @@ -0,0 +1,26 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MImage extends AbstractTable { + + public final Column ID; + + public final Column LOCATION; + + public final Column STORAGE_TYPE_ENUM; + + public static MImage staticInitialize(DataContext dataContext) { + return new MImage(dataContext); + } + + private MImage(DataContext dataContext) { + super(dataContext, "m_image"); + this.ID = getInternalColumnByName("id"); + this.LOCATION = getInternalColumnByName("location"); + this.STORAGE_TYPE_ENUM = getInternalColumnByName("storage_type_enum"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MImportDocument.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MImportDocument.java new file mode 100644 index 00000000..e7552819 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MImportDocument.java @@ -0,0 +1,47 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MImportDocument extends AbstractTable { + + public final Column ID; + + public final Column DOCUMENT_ID; + + public final Column IMPORT_TIME; + + public final Column END_TIME; + + public final Column ENTITY_TYPE; + + public final Column COMPLETED; + + public final Column TOTAL_RECORD; + + public final Column SUCCESS_COUNT; + + public final Column FAILURE_COUNT; + + public final Column CREATED_BY_ID; + + public static MImportDocument staticInitialize(DataContext dataContext) { + return new MImportDocument(dataContext); + } + + private MImportDocument(DataContext dataContext) { + super(dataContext, "m_import_document"); + this.ID = getInternalColumnByName("id"); + this.DOCUMENT_ID = getInternalColumnByName("document_id"); + this.IMPORT_TIME = getInternalColumnByName("import_time"); + this.END_TIME = getInternalColumnByName("end_time"); + this.ENTITY_TYPE = getInternalColumnByName("entity_type"); + this.COMPLETED = getInternalColumnByName("completed"); + this.TOTAL_RECORD = getInternalColumnByName("total_records"); + this.SUCCESS_COUNT = getInternalColumnByName("success_count"); + this.FAILURE_COUNT = getInternalColumnByName("failure_count"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MInterestIncentive.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MInterestIncentive.java new file mode 100644 index 00000000..dd35ac62 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MInterestIncentive.java @@ -0,0 +1,41 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MInterestIncentive extends AbstractTable { + + public final Column ID; + + public final Column INTEREST_RATE_SLAB_ID; + + public final Column ENTRY_TYPE; + + public final Column ATTRIBUTE_NAME; + + public final Column CONDITION_TYPE; + + public final Column ATTRIBUTE_VALUE; + + public final Column INCENTIVE_TYPE; + + public final Column AMOUNT; + + public static MInterestIncentive staticInitialize(DataContext dataContext) { + return new MInterestIncentive(dataContext); + } + + private MInterestIncentive(DataContext dataContext) { + super(dataContext, "m_interest_incentives"); + this.ID = getInternalColumnByName("id"); + this.INTEREST_RATE_SLAB_ID = getInternalColumnByName("interest_rate_slab_id"); + this.ENTRY_TYPE = getInternalColumnByName("entiry_type"); + this.ATTRIBUTE_NAME = getInternalColumnByName("attribute_name"); + this.CONDITION_TYPE = getInternalColumnByName("condition_type"); + this.ATTRIBUTE_VALUE = getInternalColumnByName("attribute_value"); + this.INCENTIVE_TYPE = getInternalColumnByName("incentive_type"); + this.AMOUNT = getInternalColumnByName("amount"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MInterestRateChart.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MInterestRateChart.java new file mode 100644 index 00000000..61402b21 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MInterestRateChart.java @@ -0,0 +1,35 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MInterestRateChart extends AbstractTable { + + public final Column ID; + + public final Column NAME; + + public final Column DESCRIPTION; + + public final Column FROM_DATE; + + public final Column END_DATE; + + public final Column PRIMARY_GROUPING_BY_AMOUNT; + + public static MInterestRateChart staticInitialize(DataContext dataContext) { + return new MInterestRateChart(dataContext); + } + + private MInterestRateChart(DataContext dataContext) { + super(dataContext, "m_interest_rate_chart"); + this.ID = getInternalColumnByName("id"); + this.NAME = getInternalColumnByName("name"); + this.DESCRIPTION = getInternalColumnByName("description"); + this.FROM_DATE = getInternalColumnByName("from_date"); + this.END_DATE = getInternalColumnByName("end_date"); + this.PRIMARY_GROUPING_BY_AMOUNT = getInternalColumnByName("is_primary_grouping_by_amount"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MInterestRateSlab.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MInterestRateSlab.java new file mode 100644 index 00000000..1c5dcc77 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MInterestRateSlab.java @@ -0,0 +1,47 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MInterestRateSlab extends AbstractTable { + + public final Column ID; + + public final Column INTEREST_RATE_CHART_ID; + + public final Column DESCRIPTION; + + public final Column PERIOD_TYPE_ENUM; + + public final Column FROM_PERIOD; + + public final Column TO_PERIOD; + + public final Column AMOUNT_RANGE_FROM; + + public final Column AMOUNT_RANGE_TO; + + public final Column ANNUAL_INTEREST_RATE; + + public final Column CURRENCY_CODE; + + public static MInterestRateSlab staticInitialize(DataContext dataContext) { + return new MInterestRateSlab(dataContext); + } + + private MInterestRateSlab(DataContext dataContext) { + super(dataContext, "m_interest_rate_slab"); + this.ID = getInternalColumnByName("id"); + this.INTEREST_RATE_CHART_ID = getInternalColumnByName("interest_rate_chart_id"); + this.DESCRIPTION = getInternalColumnByName("description"); + this.PERIOD_TYPE_ENUM = getInternalColumnByName("period_type_enum"); + this.FROM_PERIOD = getInternalColumnByName("from_period"); + this.TO_PERIOD = getInternalColumnByName("to_period"); + this.AMOUNT_RANGE_FROM = getInternalColumnByName("amount_range_from"); + this.AMOUNT_RANGE_TO = getInternalColumnByName("amount_range_to"); + this.ANNUAL_INTEREST_RATE = getInternalColumnByName("annual_interest_rate"); + this.CURRENCY_CODE = getInternalColumnByName("currency_code"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoan.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoan.java new file mode 100644 index 00000000..5ab03ee8 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoan.java @@ -0,0 +1,332 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MLoan extends AbstractTable { + + public final Column ID; + + public final Column ACCOUNT_NO; + + public final Column EXTERNAL_ID; + + public final Column CLIENT_ID; + + public final Column GROUP_ID; + + public final Column GLIM_ID; + + public final Column PRODUCT_ID; + + public final Column FUND_ID; + + public final Column LOAN_OFFICER_ID; + + public final Column LOAN_PURPOSE_CV_ID; + + public final Column LOAN_STATUS_ID; + + public final Column LOAN_TYPE_ENUM; + + public final Column CURRENCY_CODE; + + public final Column CURRENCY_DIGIT; + + public final Column CURRENCY_MULTIPLE_OF; + + public final Column PRINCIPAL_AMOUNT_PROPOSED; + + public final Column PRINCIPAL_AMOUNT; + + public final Column APPROVED_PRINCIPAL; + + public final Column ARREARSTOLERANCE_AMOUNT; + + public final Column FLOATING_INTEREST_RATE; + + public final Column INTEREST_RATE_DIFFERENTIAL; + + public final Column NOMINAL_INTEREST_RATE_PER_PERIOD; + + public final Column INTEREST_PERIOD_FREQUENCY_ENUM; + + public final Column ANNUAL_NOMINAL_INTEREST_RATE; + + public final Column INTEREST_METHOD_ENUM; + + public final Column INTEREST_CALCULATED_IN_PERIOD_ENUM; + + public final Column ALLOW_PARTIAL_PERIOD_INTEREST_CALCUALTION; + + public final Column TERM_FREQUENCY; + + public final Column TERM_PERIOD_FREQUENCY_ENUM; + + public final Column REPAY_EVERY; + + public final Column REPAYMENT_PERIOD_FREQUENCY_ENUM; + + public final Column NUMBER_OF_REPAYMENT; + + public final Column GRACE_ON_PRINCIPAL_PERIOD; + + public final Column RECURRING_MORATORIUM_PRINCIPAL_PERIOD; + + public final Column GRACE_ON_INTEREST_PERIOD; + + public final Column GRACE_INTEREST_FREE_PERIOD; + + public final Column AMORTIZATION_METHOD_ENUM; + + public final Column SUBMITTED_ON_DATE; + + public final Column SUBMITTED_ON_USER_ID; + + public final Column APPROVED_ON_DATE; + + public final Column APPROVED_ON_USER_ID; + + public final Column EXPECTED_DISBURSED_ON_DATE; + + public final Column EXPECTED_FIRST_REPAYMENT_ON_DATE; + + public final Column INTEREST_CALCULATED_FROM_DATE; + + public final Column DISBURSED_ON_USER_ID; + + public final Column EXPECTED_MATURED_ON_DATE; + + public final Column MATURED_ON_DATE; + + public final Column CLOSED_ON_DATE; + + public final Column CLOSED_ON_USER_ID; + + public final Column TOTAL_CHARGE_DUE_AT_DISBURSEMENT_DERIVED; + + public final Column PRINCIPAL_DISBURSED_DERIVED; + + public final Column PRINCIPAL_REPAID_DERIVED; + + public final Column PRINCIPAL_WRITTEN_OFF_DERIVED; + + public final Column PRINCIPAL_OUTSTANDING_DERIVED; + + public final Column INTEREST_CHARGED_DERIVED; + + public final Column INTEREST_REPAID_DERIVED; + + public final Column INTEREST_WAIVED_DERIVED; + + public final Column INTEREST_WRITTEN_OFF_DERIVED; + + public final Column INTEREST_OUTSTANDING_DERIVED; + + public final Column FEE_CHARGE_CHARGED_DERIVED; + + public final Column FEE_CHARGE_REPAID_DERIVED; + + public final Column FEE_CHARGE_WAIVED_DERIVED; + + public final Column FEE_CHARGE_WRITTEN_OFF_DERIVED; + + public final Column FEE_CHARGE_OUTSTANDING_DERIVED; + + public final Column PENALTY_CHARGE_CHARGED_DERIVED; + + public final Column PENALTY_CHARGE_REPAID_DERIVED; + + public final Column PENALTY_CHARGE_WAIVED_DERIVED; + + public final Column PENALTY_CHARGE_WRITTEN_OFF_DERIVED; + + public final Column PENALTY_CHARGE_OUTSTANDING_DERIVED; + + public final Column TOTAL_EXPECTED_REPAYMENT_DERIVED; + + public final Column TOTAL_REPAYMENT_DERIVED; + + public final Column TOTAL_EXPECTED_COST_OF_LOAN_DERIVED; + + public final Column TOTAL_COST_OF_LOAN_DERIVED; + + public final Column TOTAL_WAIVED_DERIVED; + + public final Column TOTAL_WRITTEN_OFF_DERIVED; + + public final Column TOTAL_OUTSTANDING_DERIVED; + + public final Column TOTAL_OVERPAID_DERIVED; + + public final Column REJECTED_ON_DATE; + + public final Column REJECTED_ON_USER_ID; + + public final Column RESCHEDULED_ON_DATE; + + public final Column RESCHEDULED_ON_USER_ID; + + public final Column WITHDRAWN_ON_DATE; + + public final Column WITHDRAWN_ON_USER_ID; + + public final Column WRITTEN_OFF_ON_DATE; + + public final Column LOAN_TRANSACTION_STRATEGY_ID; + + public final Column SYNC_DISBURSEMENT_WITH_MEETING; + + public final Column LOAN_COUNTER; + + public final Column LOAN_PRODUCT_COUNTER; + + public final Column FIXED_EMI_AMOUNT; + + public final Column MAX_OUTSTANDING_LOAN_BALANCE; + + public final Column GRACE_ON_ARREARS_AGEING; + + public final Column NPA; + + public final Column TOTAL_RECOVERED_DERIVED; + + public final Column ACCRUED_TILL; + + public final Column INTEREST_RECALCUALATED_ON; + + public final Column DAY_IN_MONTH_ENUM; + + public final Column DAY_IN_YEAR_ENUM; + + public final Column INTEREST_RECALCULATION_ENABLED; + + public final Column GUARANTEE_AMOUNT_DERIVED; + + public final Column CREATE_STANDING_INSTRUCTION_AT_DISBURSEMENT; + + public final Column VERSION; + + public final Column WRITE_OFF_REASON_CV_ID; + + public final Column LOAN_SUB_STATUS_ID; + + public final Column TOPUP; + + public final Column EQUAL_AMORTIZATION; + + public static MLoan staticInitialize(DataContext dataContext) { + return new MLoan(dataContext); + } + + private MLoan(DataContext dataContext) { + super(dataContext, "m_loan"); + this.ID = getInternalColumnByName("id"); + this.ACCOUNT_NO = getInternalColumnByName("account_no"); + this.EXTERNAL_ID = getInternalColumnByName("external_id"); + this.CLIENT_ID = getInternalColumnByName("client_id"); + this.GROUP_ID = getInternalColumnByName("group_id"); + this.GLIM_ID = getInternalColumnByName("glim_id"); + this.PRODUCT_ID = getInternalColumnByName("product_id"); + this.FUND_ID = getInternalColumnByName("fund_id"); + this.LOAN_OFFICER_ID = getInternalColumnByName("loan_officer_id"); + this.LOAN_PURPOSE_CV_ID = getInternalColumnByName("loanpurpose_cv_id"); + this.LOAN_STATUS_ID = getInternalColumnByName("loan_status_id"); + this.LOAN_TYPE_ENUM = getInternalColumnByName("loan_type_enum"); + this.CURRENCY_CODE = getInternalColumnByName("currency_code"); + this.CURRENCY_DIGIT = getInternalColumnByName("currency_digits"); + this.CURRENCY_MULTIPLE_OF = getInternalColumnByName("currency_multiplesof"); + this.PRINCIPAL_AMOUNT_PROPOSED = getInternalColumnByName("principal_amount_proposed"); + this.PRINCIPAL_AMOUNT = getInternalColumnByName("principal_amount"); + this.APPROVED_PRINCIPAL = getInternalColumnByName("approved_principal"); + this.ARREARSTOLERANCE_AMOUNT = getInternalColumnByName("arrearstolerance_amount"); + this.FLOATING_INTEREST_RATE = getInternalColumnByName("is_floating_interest_rate"); + this.INTEREST_RATE_DIFFERENTIAL = getInternalColumnByName("interest_rate_differential"); + this.NOMINAL_INTEREST_RATE_PER_PERIOD = getInternalColumnByName("nominal_interest_rate_per_period"); + this.INTEREST_PERIOD_FREQUENCY_ENUM = getInternalColumnByName("interest_period_frequency_enum"); + this.ANNUAL_NOMINAL_INTEREST_RATE = getInternalColumnByName("annual_nominal_interest_rate"); + this.INTEREST_METHOD_ENUM = getInternalColumnByName("interest_method_enum"); + this.INTEREST_CALCULATED_IN_PERIOD_ENUM = getInternalColumnByName("interest_calculated_in_period_enum"); + this.ALLOW_PARTIAL_PERIOD_INTEREST_CALCUALTION = getInternalColumnByName("allow_partial_period_interest_calcualtion"); + this.TERM_FREQUENCY = getInternalColumnByName("term_frequency"); + this.TERM_PERIOD_FREQUENCY_ENUM = getInternalColumnByName("term_period_frequency_enum"); + this.REPAY_EVERY = getInternalColumnByName("repay_every"); + this.REPAYMENT_PERIOD_FREQUENCY_ENUM = getInternalColumnByName("repayment_period_frequency_enum"); + this.NUMBER_OF_REPAYMENT = getInternalColumnByName("number_of_repayments"); + this.GRACE_ON_PRINCIPAL_PERIOD = getInternalColumnByName("grace_on_principal_periods"); + this.RECURRING_MORATORIUM_PRINCIPAL_PERIOD = getInternalColumnByName("recurring_moratorium_principal_periods"); + this.GRACE_ON_INTEREST_PERIOD = getInternalColumnByName("grace_on_interest_periods"); + this.GRACE_INTEREST_FREE_PERIOD = getInternalColumnByName("grace_interest_free_periods"); + this.AMORTIZATION_METHOD_ENUM = getInternalColumnByName("amortization_method_enum"); + this.SUBMITTED_ON_DATE = getInternalColumnByName("submittedon_date"); + this.SUBMITTED_ON_USER_ID = getInternalColumnByName("submittedon_userid"); + this.APPROVED_ON_DATE = getInternalColumnByName("approvedon_date"); + this.APPROVED_ON_USER_ID = getInternalColumnByName("approvedon_userid"); + this.EXPECTED_DISBURSED_ON_DATE = getInternalColumnByName("expected_disbursedon_date"); + this.EXPECTED_FIRST_REPAYMENT_ON_DATE = getInternalColumnByName("expected_firstrepaymenton_date"); + this.INTEREST_CALCULATED_FROM_DATE = getInternalColumnByName("interest_calculated_from_date"); + this.DISBURSED_ON_USER_ID = getInternalColumnByName("disbursedon_userid"); + this.EXPECTED_MATURED_ON_DATE = getInternalColumnByName("expected_maturedon_date"); + this.MATURED_ON_DATE = getInternalColumnByName("maturedon_date"); + this.CLOSED_ON_DATE = getInternalColumnByName("closedon_date"); + this.CLOSED_ON_USER_ID = getInternalColumnByName("closedon_userid"); + this.TOTAL_CHARGE_DUE_AT_DISBURSEMENT_DERIVED = getInternalColumnByName("total_charges_due_at_disbursement_derived"); + this.PRINCIPAL_DISBURSED_DERIVED = getInternalColumnByName("principal_disbursed_derived"); + this.PRINCIPAL_REPAID_DERIVED = getInternalColumnByName("principal_repaid_derived"); + this.PRINCIPAL_WRITTEN_OFF_DERIVED = getInternalColumnByName("principal_writtenoff_derived"); + this.PRINCIPAL_OUTSTANDING_DERIVED = getInternalColumnByName("principal_outstanding_derived"); + this.INTEREST_CHARGED_DERIVED = getInternalColumnByName("interest_charged_derived"); + this.INTEREST_REPAID_DERIVED = getInternalColumnByName("interest_repaid_derived"); + this.INTEREST_WAIVED_DERIVED = getInternalColumnByName("interest_waived_derived"); + this.INTEREST_WRITTEN_OFF_DERIVED = getInternalColumnByName("interest_writtenoff_derived"); + this.INTEREST_OUTSTANDING_DERIVED = getInternalColumnByName("interest_outstanding_derived"); + this.FEE_CHARGE_CHARGED_DERIVED = getInternalColumnByName("fee_charges_charged_derived"); + this.FEE_CHARGE_REPAID_DERIVED = getInternalColumnByName("fee_charges_repaid_derived"); + this.FEE_CHARGE_WAIVED_DERIVED = getInternalColumnByName("fee_charges_waived_derived"); + this.FEE_CHARGE_WRITTEN_OFF_DERIVED = getInternalColumnByName("fee_charges_writtenoff_derived"); + this.FEE_CHARGE_OUTSTANDING_DERIVED = getInternalColumnByName("fee_charges_outstanding_derived"); + this.PENALTY_CHARGE_CHARGED_DERIVED = getInternalColumnByName("penalty_charges_charged_derived"); + this.PENALTY_CHARGE_REPAID_DERIVED = getInternalColumnByName("penalty_charges_repaid_derived"); + this.PENALTY_CHARGE_WAIVED_DERIVED = getInternalColumnByName("penalty_charges_waived_derived"); + this.PENALTY_CHARGE_WRITTEN_OFF_DERIVED = getInternalColumnByName("penalty_charges_writtenoff_derived"); + this.PENALTY_CHARGE_OUTSTANDING_DERIVED = getInternalColumnByName("penalty_charges_outstanding_derived"); + this.TOTAL_EXPECTED_REPAYMENT_DERIVED = getInternalColumnByName("total_expected_repayment_derived"); + this.TOTAL_REPAYMENT_DERIVED = getInternalColumnByName("total_repayment_derived"); + this.TOTAL_EXPECTED_COST_OF_LOAN_DERIVED = getInternalColumnByName("total_expected_costofloan_derived"); + this.TOTAL_COST_OF_LOAN_DERIVED = getInternalColumnByName("total_costofloan_derived"); + this.TOTAL_WAIVED_DERIVED = getInternalColumnByName("total_waived_derived"); + this.TOTAL_WRITTEN_OFF_DERIVED = getInternalColumnByName("total_writtenoff_derived"); + this.TOTAL_OUTSTANDING_DERIVED = getInternalColumnByName("total_outstanding_derived"); + this.TOTAL_OVERPAID_DERIVED = getInternalColumnByName("total_overpaid_derived"); + this.REJECTED_ON_DATE = getInternalColumnByName("rejectedon_date"); + this.REJECTED_ON_USER_ID = getInternalColumnByName("rejectedon_userid"); + this.RESCHEDULED_ON_DATE = getInternalColumnByName("rescheduledon_date"); + this.RESCHEDULED_ON_USER_ID = getInternalColumnByName("rescheduledon_userid"); + this.WITHDRAWN_ON_DATE = getInternalColumnByName("withdrawnon_date"); + this.WITHDRAWN_ON_USER_ID = getInternalColumnByName("withdrawnon_userid"); + this.WRITTEN_OFF_ON_DATE = getInternalColumnByName("writtenoffon_date"); + this.LOAN_TRANSACTION_STRATEGY_ID = getInternalColumnByName("loan_transaction_strategy_id"); + this.SYNC_DISBURSEMENT_WITH_MEETING = getInternalColumnByName("sync_disbursement_with_meeting"); + this.LOAN_COUNTER = getInternalColumnByName("loan_counter"); + this.LOAN_PRODUCT_COUNTER = getInternalColumnByName("loan_product_counter"); + this.FIXED_EMI_AMOUNT = getInternalColumnByName("fixed_emi_amount"); + this.MAX_OUTSTANDING_LOAN_BALANCE = getInternalColumnByName("max_outstanding_loan_balance"); + this.GRACE_ON_ARREARS_AGEING = getInternalColumnByName("grace_on_arrears_ageing"); + this.NPA = getInternalColumnByName("is_npa"); + this.TOTAL_RECOVERED_DERIVED = getInternalColumnByName("total_recovered_derived"); + this.ACCRUED_TILL = getInternalColumnByName("accrued_till"); + this.INTEREST_RECALCUALATED_ON = getInternalColumnByName("interest_recalcualated_on"); + this.DAY_IN_MONTH_ENUM = getInternalColumnByName("days_in_month_enum"); + this.DAY_IN_YEAR_ENUM = getInternalColumnByName("days_in_year_enum"); + this.INTEREST_RECALCULATION_ENABLED = getInternalColumnByName("interest_recalculation_enabled"); + this.GUARANTEE_AMOUNT_DERIVED = getInternalColumnByName("guarantee_amount_derived"); + this.CREATE_STANDING_INSTRUCTION_AT_DISBURSEMENT = getInternalColumnByName("create_standing_instruction_at_disbursement"); + this.VERSION = getInternalColumnByName("version"); + this.WRITE_OFF_REASON_CV_ID = getInternalColumnByName("writeoff_reason_cv_id"); + this.LOAN_SUB_STATUS_ID = getInternalColumnByName("loan_sub_status_id"); + this.TOPUP = getInternalColumnByName("is_topup"); + this.EQUAL_AMORTIZATION = getInternalColumnByName("is_equal_amortization"); + } + +} \ No newline at end of file diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanArrearsAging.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanArrearsAging.java new file mode 100644 index 00000000..f984f983 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanArrearsAging.java @@ -0,0 +1,38 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MLoanArrearsAging extends AbstractTable { + + public final Column LOAN_ID; + + public final Column PRINCIPAL_OVERDUE_DERIVED; + + public final Column INTEREST_OVERDUE_DERIVED; + + public final Column FEE_CHARGE_OVERDUE_DERIVED; + + public final Column PENALTY_CHARGE_OVERDUE_DERIVED; + + public final Column TOTAL_OVERDUE_DERIVED; + + public final Column OVERDUE_SINCE_DATE_DERIVED; + + public static MLoanArrearsAging staticInitialize(DataContext dataContext) { + return new MLoanArrearsAging(dataContext); + } + + private MLoanArrearsAging(DataContext dataContext) { + super(dataContext, "m_loan_arrears_aging"); + this.LOAN_ID = getInternalColumnByName("loan_id"); + this.PRINCIPAL_OVERDUE_DERIVED = getInternalColumnByName("principal_overdue_derived"); + this.INTEREST_OVERDUE_DERIVED = getInternalColumnByName("interest_overdue_derived"); + this.FEE_CHARGE_OVERDUE_DERIVED = getInternalColumnByName("fee_charges_overdue_derived"); + this.PENALTY_CHARGE_OVERDUE_DERIVED = getInternalColumnByName("penalty_charges_overdue_derived"); + this.TOTAL_OVERDUE_DERIVED = getInternalColumnByName("total_overdue_derived"); + this.OVERDUE_SINCE_DATE_DERIVED = getInternalColumnByName("overdue_since_date_derived"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanCharge.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanCharge.java new file mode 100644 index 00000000..fbcdca2c --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanCharge.java @@ -0,0 +1,80 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MLoanCharge extends AbstractTable { + + public final Column ID; + + public final Column LOAN_ID; + + public final Column CHARGE_ID; + + public final Column PENALTY; + + public final Column CHARGE_TIME_ENUM; + + public final Column DUE_FOR_COLLECTION_AS_OF_DATE; + + public final Column CHARGE_CALCULATION_ENUM; + + public final Column CHARGE_PAYMENT_MODE_ENUM; + + public final Column CALCULATION_PERCENTAGE; + + public final Column CALCULATION_ON_AMOUNT; + + public final Column CHARGE_AMOUNT_OR_PERCENTAGE; + + public final Column AMOUNT; + + public final Column AMOUNT_PAID_DERIVED; + + public final Column AMOUNT_WAIVED_DERIVED; + + public final Column AMOUNT_WRITTEN_OFF_DERIVED; + + public final Column AMOUNT_OUTSTANDING_DERIVED; + + public final Column PAID_DERIVED; + + public final Column WAIVED; + + public final Column MIN_CAP; + + public final Column MAX_CAP; + + public final Column ACTIVE; + + public static MLoanCharge staticInitialize(DataContext dataContext) { + return new MLoanCharge(dataContext); + } + + private MLoanCharge(DataContext dataContext) { + super(dataContext, "m_loan_charge"); + this.ID = getInternalColumnByName("id"); + this.LOAN_ID = getInternalColumnByName("loan_id"); + this.CHARGE_ID = getInternalColumnByName("charge_id"); + this.PENALTY = getInternalColumnByName("is_penalty"); + this.CHARGE_TIME_ENUM = getInternalColumnByName("charge_time_enum"); + this.DUE_FOR_COLLECTION_AS_OF_DATE = getInternalColumnByName("due_for_collection_as_of_date"); + this.CHARGE_CALCULATION_ENUM = getInternalColumnByName("charge_calculation_enum"); + this.CHARGE_PAYMENT_MODE_ENUM = getInternalColumnByName("charge_payment_mode_enum"); + this.CALCULATION_PERCENTAGE = getInternalColumnByName("calculation_percentage"); + this.CALCULATION_ON_AMOUNT = getInternalColumnByName("calculation_on_amount"); + this.CHARGE_AMOUNT_OR_PERCENTAGE = getInternalColumnByName("charge_amount_or_percentage"); + this.AMOUNT = getInternalColumnByName("amount"); + this.AMOUNT_PAID_DERIVED = getInternalColumnByName("amount_paid_derived"); + this.AMOUNT_WAIVED_DERIVED = getInternalColumnByName("amount_waived_derived"); + this.AMOUNT_WRITTEN_OFF_DERIVED = getInternalColumnByName("amount_writtenoff_derived"); + this.AMOUNT_OUTSTANDING_DERIVED = getInternalColumnByName("amount_outstanding_derived"); + this.PAID_DERIVED = getInternalColumnByName("is_paid_derived"); + this.WAIVED = getInternalColumnByName("waived"); + this.MIN_CAP = getInternalColumnByName("min_cap"); + this.MAX_CAP = getInternalColumnByName("max_cap"); + this.ACTIVE = getInternalColumnByName("is_active"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanChargePaidBy.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanChargePaidBy.java new file mode 100644 index 00000000..4fef5cf5 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanChargePaidBy.java @@ -0,0 +1,32 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MLoanChargePaidBy extends AbstractTable { + + public final Column ID; + + public final Column LOAN_TRANSACTION_ID; + + public final Column LOAN_CHARGE_ID; + + public final Column AMOUNT; + + public final Column INSTALLMENT_NUMBER; + + public static MLoanChargePaidBy staticInitialize(DataContext dataContext) { + return new MLoanChargePaidBy(dataContext); + } + + private MLoanChargePaidBy(DataContext dataContext) { + super(dataContext, "m_loan_charge_paid_by"); + this.ID = getInternalColumnByName("id"); + this.LOAN_TRANSACTION_ID = getInternalColumnByName("loan_transaction_id"); + this.LOAN_CHARGE_ID = getInternalColumnByName("loan_charge_id"); + this.AMOUNT = getInternalColumnByName("amount"); + this.INSTALLMENT_NUMBER = getInternalColumnByName("installment_number"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanCollateral.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanCollateral.java new file mode 100644 index 00000000..ba8d61a9 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanCollateral.java @@ -0,0 +1,32 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MLoanCollateral extends AbstractTable { + + public final Column ID; + + public final Column LOAN_ID; + + public final Column TYPE_CV_ID; + + public final Column VALUE; + + public final Column DESCRIPTION; + + public static MLoanCollateral staticInitialize(DataContext dataContext) { + return new MLoanCollateral(dataContext); + } + + private MLoanCollateral(DataContext dataContext) { + super(dataContext, "m_loan_collateral"); + this.ID = getInternalColumnByName("id"); + this.LOAN_ID = getInternalColumnByName("loan_id"); + this.TYPE_CV_ID = getInternalColumnByName("type_cv_id"); + this.VALUE = getInternalColumnByName("value"); + this.DESCRIPTION = getInternalColumnByName("description"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanDisbursementDetail.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanDisbursementDetail.java new file mode 100644 index 00000000..e095573c --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanDisbursementDetail.java @@ -0,0 +1,32 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MLoanDisbursementDetail extends AbstractTable { + + public final Column ID; + + public final Column LOAN_ID; + + public final Column EXPECTED_DISBURSE_DATE; + + public final Column DISBURSED_ON_DATE; + + public final Column PRINCIPAL; + + public static MLoanDisbursementDetail staticInitialize(DataContext dataContext) { + return new MLoanDisbursementDetail(dataContext); + } + + private MLoanDisbursementDetail(DataContext dataContext) { + super(dataContext, "m_loan_disbursement_detail"); + this.ID = getInternalColumnByName("id"); + this.LOAN_ID = getInternalColumnByName("loan_id"); + this.EXPECTED_DISBURSE_DATE = getInternalColumnByName("expected_disburse_date"); + this.DISBURSED_ON_DATE = getInternalColumnByName("disbursedon_date"); + this.PRINCIPAL = getInternalColumnByName("principal"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanInstallmentCharge.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanInstallmentCharge.java new file mode 100644 index 00000000..35e7e2a6 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanInstallmentCharge.java @@ -0,0 +1,53 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MLoanInstallmentCharge extends AbstractTable { + + public final Column ID; + + public final Column LOAN_CHARGE_ID; + + public final Column LOAN_SCHEDULE_ID; + + public final Column DUE_DATE; + + public final Column AMOUNT; + + public final Column AMOUNT_PAID_DERIVED; + + public final Column AMOUNT_WAIVED_DERIVED; + + public final Column AMOUNT_WRITTEN_OFF_DERIVED; + + public final Column AMOUNT_OUTSTANDING_DERIVED; + + public final Column PAID_DERIVED; + + public final Column WAIVED; + + public final Column AMOUNT_THROUGH_CHARGE_PAYMENT; + + public static MLoanInstallmentCharge staticInitialize(DataContext dataContext) { + return new MLoanInstallmentCharge(dataContext); + } + + private MLoanInstallmentCharge(DataContext dataContext) { + super(dataContext, "m_loan_installment_charge"); + this.ID = getInternalColumnByName("id"); + this.LOAN_CHARGE_ID = getInternalColumnByName("loan_charge_id"); + this.LOAN_SCHEDULE_ID = getInternalColumnByName("loan_schedule_id"); + this.DUE_DATE = getInternalColumnByName("due_date"); + this.AMOUNT = getInternalColumnByName("amount"); + this.AMOUNT_PAID_DERIVED = getInternalColumnByName("amount_paid_derived"); + this.AMOUNT_WAIVED_DERIVED = getInternalColumnByName("amount_waived_derived"); + this.AMOUNT_WRITTEN_OFF_DERIVED = getInternalColumnByName("amount_writtenoff_derived"); + this.AMOUNT_OUTSTANDING_DERIVED = getInternalColumnByName("amount_outstanding_derived"); + this.PAID_DERIVED = getInternalColumnByName("is_paid_derived"); + this.WAIVED = getInternalColumnByName("waived"); + this.AMOUNT_THROUGH_CHARGE_PAYMENT = getInternalColumnByName("amount_through_charge_payment"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanInterestRecalculationAdditionalDetail.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanInterestRecalculationAdditionalDetail.java new file mode 100644 index 00000000..a55cbccf --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanInterestRecalculationAdditionalDetail.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MLoanInterestRecalculationAdditionalDetail extends AbstractTable { + + public final Column ID; + + public final Column LOAN_REPAYMENT_SCHEDULE_ID; + + public final Column EFFECTIVE_DATE; + + public final Column AMOUNT; + + public static MLoanInterestRecalculationAdditionalDetail staticInitialize(DataContext dataContext) { + return new MLoanInterestRecalculationAdditionalDetail(dataContext); + } + + private MLoanInterestRecalculationAdditionalDetail(DataContext dataContext) { + super(dataContext, "m_loan_interest_recalculation_additional_details"); + this.ID = getInternalColumnByName("id"); + this.AMOUNT = getInternalColumnByName("amount"); + this.EFFECTIVE_DATE = getInternalColumnByName("effective_date"); + this.LOAN_REPAYMENT_SCHEDULE_ID = getInternalColumnByName("loan_repayment_schedule_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanOfficerAssignmentHistory.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanOfficerAssignmentHistory.java new file mode 100644 index 00000000..e70399b0 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanOfficerAssignmentHistory.java @@ -0,0 +1,44 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MLoanOfficerAssignmentHistory extends AbstractTable { + + public final Column ID; + + public final Column LOAN_ID; + + public final Column LOAN_OFFICER_ID; + + public final Column START_DATE; + + public final Column END_DATE; + + public final Column CREATED_BY_ID; + + public final Column CREATED_DATE; + + public final Column LAST_MODIFIED_DATE; + + public final Column LAST_MODIFIED_BY_ID; + + public static MLoanOfficerAssignmentHistory staticInitialize(DataContext dataContext) { + return new MLoanOfficerAssignmentHistory(dataContext); + } + + private MLoanOfficerAssignmentHistory(DataContext dataContext) { + super(dataContext, "m_loan_officer_assignment_history"); + this.ID = getInternalColumnByName("id"); + this.LOAN_ID = getInternalColumnByName("loan_id"); + this.LOAN_OFFICER_ID = getInternalColumnByName("loan_officer_id"); + this.START_DATE = getInternalColumnByName("start_date"); + this.END_DATE = getInternalColumnByName("end_date"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanOverdueInstallmentCharge.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanOverdueInstallmentCharge.java new file mode 100644 index 00000000..fe871403 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanOverdueInstallmentCharge.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MLoanOverdueInstallmentCharge extends AbstractTable { + + public final Column ID; + + public final Column LOAN_CHARGE_ID; + + public final Column LOAN_SCHEDULE_ID; + + public final Column FREQUENCY_NUMBER; + + public static MLoanOverdueInstallmentCharge staticInitialize(DataContext dataContext) { + return new MLoanOverdueInstallmentCharge(dataContext); + } + + private MLoanOverdueInstallmentCharge(DataContext dataContext) { + super(dataContext, "m_loan_overdue_installment_charge"); + this.ID = getInternalColumnByName("id"); + this.LOAN_CHARGE_ID = getInternalColumnByName("loan_charge_id"); + this.LOAN_SCHEDULE_ID = getInternalColumnByName("loan_schedule_id"); + this.FREQUENCY_NUMBER = getInternalColumnByName("frequency_number"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanPaidInAdvance.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanPaidInAdvance.java new file mode 100644 index 00000000..af51c6f8 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanPaidInAdvance.java @@ -0,0 +1,35 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MLoanPaidInAdvance extends AbstractTable { + + public final Column LOAN_ID; + + public final Column PRINCIPAL_IN_ADVANCE_DERIVED; + + public final Column INTEREST_IN_ADVANCE_DERIVED; + + public final Column FEE_CHARGE_IN_ADVANCE_DERIVED; + + public final Column PENALTY_CHARGE_IN_ADVANCE_DERIVED; + + public final Column TOTAL_IN_ADVANCE_DERIVED; + + public static MLoanPaidInAdvance staticInitialize(DataContext dataContext) { + return new MLoanPaidInAdvance(dataContext); + } + + private MLoanPaidInAdvance(DataContext dataContext) { + super(dataContext, "m_loan_paid_in_advance"); + this.LOAN_ID = getInternalColumnByName("loan_id"); + this.PRINCIPAL_IN_ADVANCE_DERIVED = getInternalColumnByName("principal_in_advance_derived"); + this.INTEREST_IN_ADVANCE_DERIVED = getInternalColumnByName("interest_in_advance_derived"); + this.FEE_CHARGE_IN_ADVANCE_DERIVED = getInternalColumnByName("fee_charges_in_advance_derived"); + this.PENALTY_CHARGE_IN_ADVANCE_DERIVED = getInternalColumnByName("penalty_charges_in_advance_derived"); + this.TOTAL_IN_ADVANCE_DERIVED = getInternalColumnByName("total_in_advance_derived"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanProductProvisioningEntry.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanProductProvisioningEntry.java new file mode 100644 index 00000000..8f94953a --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanProductProvisioningEntry.java @@ -0,0 +1,50 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MLoanProductProvisioningEntry extends AbstractTable { + + public final Column ID; + + public final Column HISTORY_ID; + + public final Column CRITERIA_ID; + + public final Column CURRENCY_CODE; + + public final Column OFFICE_ID; + + public final Column PRODUCT_ID; + + public final Column CATEGORY_ID; + + public final Column OVERDUE_IN_DAY; + + public final Column RESERVE_AMOUNT; + + public final Column LIABILITY_ACCOUNT; + + public final Column EXPENSE_ACCOUNT; + + public static MLoanProductProvisioningEntry staticInitialize(DataContext dataContext) { + return new MLoanProductProvisioningEntry(dataContext); + } + + private MLoanProductProvisioningEntry(DataContext dataContext) { + super(dataContext, "m_loanproduct_provisioning_entry"); + this.ID = getInternalColumnByName("id"); + this.HISTORY_ID = getInternalColumnByName("history_id"); + this.CRITERIA_ID = getInternalColumnByName("criteria_id"); + this.CURRENCY_CODE = getInternalColumnByName("currency_code"); + this.OFFICE_ID = getInternalColumnByName("office_id"); + this.PRODUCT_ID = getInternalColumnByName("product_id"); + this.CATEGORY_ID = getInternalColumnByName("category_id"); + this.OVERDUE_IN_DAY = getInternalColumnByName("overdue_in_days"); + this.RESERVE_AMOUNT = getInternalColumnByName("reseve_amount"); + this.LIABILITY_ACCOUNT = getInternalColumnByName("liability_account"); + this.EXPENSE_ACCOUNT = getInternalColumnByName("expense_account"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanProductProvisioningMapping.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanProductProvisioningMapping.java new file mode 100644 index 00000000..4c92339f --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanProductProvisioningMapping.java @@ -0,0 +1,26 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MLoanProductProvisioningMapping extends AbstractTable { + + public final Column ID; + + public final Column PRODUCT_ID; + + public final Column CRITERIA_ID; + + public static MLoanProductProvisioningMapping staticInitialize(DataContext dataContext) { + return new MLoanProductProvisioningMapping(dataContext); + } + + private MLoanProductProvisioningMapping(DataContext dataContext) { + super(dataContext, "m_loanproduct_provisioning_mapping"); + this.ID = getInternalColumnByName("id"); + this.PRODUCT_ID = getInternalColumnByName("product_id"); + this.CRITERIA_ID = getInternalColumnByName("criteria_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanRate.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanRate.java new file mode 100644 index 00000000..6e92e48f --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanRate.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MLoanRate extends AbstractTable { + + public final Column LOAN_ID; + + public final Column RATE_ID; + + public static MLoanRate staticInitialize(DataContext dataContext) { + return new MLoanRate(dataContext); + } + + private MLoanRate(DataContext dataContext) { + super(dataContext, "m_loan_rate"); + this.LOAN_ID = getInternalColumnByName("loan_id"); + this.RATE_ID = getInternalColumnByName("rate_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanRecalculationDetail.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanRecalculationDetail.java new file mode 100644 index 00000000..29544f02 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanRecalculationDetail.java @@ -0,0 +1,65 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MLoanRecalculationDetail extends AbstractTable { + + public final Column ID; + + public final Column LOAN_ID; + + public final Column COMPOUND_TYPE_ENUM; + + public final Column RESCHEDULE_STRATEGY_ENUM; + + public final Column REST_FREQUENCY_TYPE_ENUM; + + public final Column REST_FREQUENCY_INTERVAL; + + public final Column COMPOUNDING_FREQUENCY_TYPE_ENUM; + + public final Column COMPOUNDING_FREQUENCY_INTERVAL; + + public final Column REST_FREQUENCY_NTH_DAY_ENUM; + + public final Column REST_FREQUENCY_ON_DAY; + + public final Column REST_FREQUENCY_WEEKDAY_ENUM; + + public final Column COMPOUNDING_FREQUENCY_NTH_DAY_ENUM; + + public final Column COMPOUNDING_FREQUENCY_ON_DAY; + + public final Column COMPOUNDING_TO_BE_POSTED_AS_TRANSACTION; + + public final Column COMPOUNDING_FREQUENCY_WEEKDAY_ENUM; + + public final Column ALLOW_COMPOUNDING_ON_EOD; + + public static MLoanRecalculationDetail staticInitialize(DataContext dataContext) { + return new MLoanRecalculationDetail(dataContext); + } + + private MLoanRecalculationDetail(DataContext dataContext) { + super(dataContext, "m_loan_recalculation_details"); + this.ID = getInternalColumnByName("id"); + this.LOAN_ID = getInternalColumnByName("loan_id"); + this.COMPOUND_TYPE_ENUM = getInternalColumnByName("compound_type_enum"); + this.RESCHEDULE_STRATEGY_ENUM = getInternalColumnByName("reschedule_strategy_enum"); + this.REST_FREQUENCY_TYPE_ENUM = getInternalColumnByName("rest_frequency_type_enum"); + this.REST_FREQUENCY_INTERVAL = getInternalColumnByName("rest_frequency_interval"); + this.COMPOUNDING_FREQUENCY_TYPE_ENUM = getInternalColumnByName("compounding_frequency_type_enum"); + this.COMPOUNDING_FREQUENCY_INTERVAL = getInternalColumnByName("compounding_frequency_interval"); + this.REST_FREQUENCY_NTH_DAY_ENUM = getInternalColumnByName("rest_frequency_nth_day_enum"); + this.REST_FREQUENCY_ON_DAY = getInternalColumnByName("rest_frequency_on_day"); + this.REST_FREQUENCY_WEEKDAY_ENUM = getInternalColumnByName("rest_frequency_weekday_enum"); + this.COMPOUNDING_FREQUENCY_NTH_DAY_ENUM = getInternalColumnByName("compounding_frequency_nth_day_enum"); + this.COMPOUNDING_FREQUENCY_ON_DAY = getInternalColumnByName("compounding_frequency_on_day"); + this.COMPOUNDING_TO_BE_POSTED_AS_TRANSACTION = getInternalColumnByName("is_compounding_to_be_posted_as_transaction"); + this.COMPOUNDING_FREQUENCY_WEEKDAY_ENUM = getInternalColumnByName("compounding_frequency_weekday_enum"); + this.ALLOW_COMPOUNDING_ON_EOD = getInternalColumnByName("allow_compounding_on_eod"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanRepaymentSchedule.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanRepaymentSchedule.java new file mode 100644 index 00000000..ad38f9a1 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanRepaymentSchedule.java @@ -0,0 +1,113 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MLoanRepaymentSchedule extends AbstractTable { + + public final Column ID; + + public final Column LOAN_ID; + + public final Column FROM_DATE; + + public final Column DUE_DATE; + + public final Column INSTALLMENT; + + public final Column PRINCIPAL_AMOUNT; + + public final Column PRINCIPAL_COMPLETED_DERIVED; + + public final Column PRINCIPAL_WRITTEN_OFF_DERIVED; + + public final Column INTEREST_AMOUNT; + + public final Column INTEREST_COMPLETED_DERIVED; + + public final Column INTEREST_WRITTEN_OFF_DERIVED; + + public final Column INTEREST_WAIVED_DERIVED; + + public final Column ACCRUAL_INTEREST_DERIVED; + + public final Column FEE_CHARGE_AMOUNT; + + public final Column FEE_CHARGE_COMPLETED_DERIVED; + + public final Column FEE_CHARGE_WRITTEN_OFF_DERIVED; + + public final Column FEE_CHARGE_WAIVED_DERIVED; + + public final Column ACCRUAL_FEE_CHARGE_DERIVED; + + public final Column PENALTY_CHARGE_AMOUNT; + + public final Column PENALTY_CHARGE_COMPLETED_DERIVED; + + public final Column PENALTY_CHARGE_WRITTEN_OFF_DERIVED; + + public final Column PENALTY_CHARGE_WAIVED_DERIVED; + + public final Column ACCRUAL_PENALTY_CHARGE_DERIVED; + + public final Column TOTAL_PAID_IN_ADVANCE_DERIVED; + + public final Column TOTAL_PAID_LATE_DERIVED; + + public final Column COMPLETED_DERIVED; + + public final Column OBLIGATIONS_MET_ON_DATE; + + public final Column CREATED_BY_ID; + + public final Column CREATED_DATE; + + public final Column LAST_MODIFIED_DATE; + + public final Column LAST_MODIFIED_BY_ID; + + public final Column RECALCULATED_INTEREST_COMPONENT; + + public static MLoanRepaymentSchedule staticInitialize(DataContext dataContext) { + return new MLoanRepaymentSchedule(dataContext); + } + + private MLoanRepaymentSchedule(DataContext dataContext) { + super(dataContext, "m_loan_repayment_schedule"); + this.ID = getInternalColumnByName("id"); + this.LOAN_ID = getInternalColumnByName("loan_id"); + this.FROM_DATE = getInternalColumnByName("fromdate"); + this.DUE_DATE = getInternalColumnByName("duedate"); + this.INSTALLMENT = getInternalColumnByName("installment"); + this.PRINCIPAL_AMOUNT = getInternalColumnByName("principal_amount"); + this.PRINCIPAL_COMPLETED_DERIVED = getInternalColumnByName("principal_completed_derived"); + this.PRINCIPAL_WRITTEN_OFF_DERIVED = getInternalColumnByName("principal_writtenoff_derived"); + this.INTEREST_AMOUNT = getInternalColumnByName("interest_amount"); + this.INTEREST_COMPLETED_DERIVED = getInternalColumnByName("interest_completed_derived"); + this.INTEREST_WRITTEN_OFF_DERIVED = getInternalColumnByName("interest_writtenoff_derived"); + this.INTEREST_WAIVED_DERIVED = getInternalColumnByName("interest_waived_derived"); + this.ACCRUAL_INTEREST_DERIVED = getInternalColumnByName("accrual_interest_derived"); + this.FEE_CHARGE_AMOUNT = getInternalColumnByName("fee_charges_amount"); + this.FEE_CHARGE_COMPLETED_DERIVED = getInternalColumnByName("fee_charges_completed_derived"); + this.FEE_CHARGE_WRITTEN_OFF_DERIVED = getInternalColumnByName("fee_charges_writtenoff_derived"); + this.FEE_CHARGE_WAIVED_DERIVED = getInternalColumnByName("fee_charges_waived_derived"); + this.ACCRUAL_FEE_CHARGE_DERIVED = getInternalColumnByName("accrual_fee_charges_derived"); + this.PENALTY_CHARGE_AMOUNT = getInternalColumnByName("penalty_charges_amount"); + this.PENALTY_CHARGE_COMPLETED_DERIVED = getInternalColumnByName("penalty_charges_completed_derived"); + this.PENALTY_CHARGE_WRITTEN_OFF_DERIVED = getInternalColumnByName("penalty_charges_writtenoff_derived"); + this.PENALTY_CHARGE_WAIVED_DERIVED = getInternalColumnByName("penalty_charges_waived_derived"); + this.ACCRUAL_PENALTY_CHARGE_DERIVED = getInternalColumnByName("accrual_penalty_charges_derived"); + this.TOTAL_PAID_IN_ADVANCE_DERIVED = getInternalColumnByName("total_paid_in_advance_derived"); + this.TOTAL_PAID_LATE_DERIVED = getInternalColumnByName("total_paid_late_derived"); + this.COMPLETED_DERIVED = getInternalColumnByName("completed_derived"); + this.OBLIGATIONS_MET_ON_DATE = getInternalColumnByName("obligations_met_on_date"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + this.RECALCULATED_INTEREST_COMPONENT = getInternalColumnByName("recalculated_interest_component"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanRepaymentScheduleHistory.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanRepaymentScheduleHistory.java new file mode 100644 index 00000000..dc2642ea --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanRepaymentScheduleHistory.java @@ -0,0 +1,59 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MLoanRepaymentScheduleHistory extends AbstractTable { + + public final Column ID; + + public final Column LOAN_ID; + + public final Column FROM_DATE; + + public final Column DUE_DATE; + + public final Column INSTALLMENT; + + public final Column PRINCIPAL_AMOUNT; + + public final Column INTEREST_AMOUNT; + + public final Column FEE_CHARGE_AMOUNT; + + public final Column PENALTY_CHARGE_AMOUNT; + + public final Column CREATED_BY_ID; + + public final Column CREATED_DATE; + + public final Column LAST_MODIFIED_DATE; + + public final Column LAST_MODIFIED_BY_ID; + + public final Column VERSION; + + public static MLoanRepaymentScheduleHistory staticInitialize(DataContext dataContext) { + return new MLoanRepaymentScheduleHistory(dataContext); + } + + private MLoanRepaymentScheduleHistory(DataContext dataContext) { + super(dataContext, "m_loan_repayment_schedule_history"); + this.ID = getInternalColumnByName("id"); + this.LOAN_ID = getInternalColumnByName("loan_id"); + this.FROM_DATE = getInternalColumnByName("fromdate"); + this.DUE_DATE = getInternalColumnByName("duedate"); + this.INSTALLMENT = getInternalColumnByName("installment"); + this.PRINCIPAL_AMOUNT = getInternalColumnByName("principal_amount"); + this.INTEREST_AMOUNT = getInternalColumnByName("interest_amount"); + this.FEE_CHARGE_AMOUNT = getInternalColumnByName("fee_charges_amount"); + this.PENALTY_CHARGE_AMOUNT = getInternalColumnByName("penalty_charges_amount"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + this.VERSION = getInternalColumnByName("version"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanRescheduleRequest.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanRescheduleRequest.java new file mode 100644 index 00000000..9550adf9 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanRescheduleRequest.java @@ -0,0 +1,59 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MLoanRescheduleRequest extends AbstractTable { + + public final Column ID; + + public final Column LOAN_ID; + + public final Column STATUS_ENUM; + + public final Column RESCHEDULE_FROM_INSTALLMENT; + + public final Column RESCHEDULE_FROM_DATE; + + public final Column RECALCULATE_INTEREST; + + public final Column RESCHEDULE_REASON_CV_ID; + + public final Column RESCHEDULE_REASON_COMMENT; + + public final Column SUBMITTED_ON_DATE; + + public final Column SUBMITTED_BY_USER_ID; + + public final Column APPROVED_ON_DATE; + + public final Column APPROVED_BY_USER_ID; + + public final Column REJECTED_ON_DATE; + + public final Column REJECTED_BY_USER_ID; + + public static MLoanRescheduleRequest staticInitialize(DataContext dataContext) { + return new MLoanRescheduleRequest(dataContext); + } + + private MLoanRescheduleRequest(DataContext dataContext) { + super(dataContext, "m_loan_reschedule_request"); + this.ID = getInternalColumnByName("id"); + this.LOAN_ID = getInternalColumnByName("loan_id"); + this.STATUS_ENUM = getInternalColumnByName("status_enum"); + this.RESCHEDULE_FROM_INSTALLMENT = getInternalColumnByName("reschedule_from_installment"); + this.RESCHEDULE_FROM_DATE = getInternalColumnByName("reschedule_from_date"); + this.RECALCULATE_INTEREST = getInternalColumnByName("recalculate_interest"); + this.RESCHEDULE_REASON_CV_ID = getInternalColumnByName("reschedule_reason_cv_id"); + this.RESCHEDULE_REASON_COMMENT = getInternalColumnByName("reschedule_reason_comment"); + this.SUBMITTED_ON_DATE = getInternalColumnByName("submitted_on_date"); + this.SUBMITTED_BY_USER_ID = getInternalColumnByName("submitted_by_user_id"); + this.APPROVED_ON_DATE = getInternalColumnByName("approved_on_date"); + this.APPROVED_BY_USER_ID = getInternalColumnByName("approved_by_user_id"); + this.REJECTED_ON_DATE = getInternalColumnByName("rejected_on_date"); + this.REJECTED_BY_USER_ID = getInternalColumnByName("rejected_by_user_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanRescheduleRequestTermVariationMapping.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanRescheduleRequestTermVariationMapping.java new file mode 100644 index 00000000..6b9417ae --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanRescheduleRequestTermVariationMapping.java @@ -0,0 +1,26 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MLoanRescheduleRequestTermVariationMapping extends AbstractTable { + + public final Column ID; + + public final Column LOAN_RESCHEDULE_REQUEST_ID; + + public final Column LOAN_TERM_VARIATIONS_ID; + + public static MLoanRescheduleRequestTermVariationMapping staticInitialize(DataContext dataContext) { + return new MLoanRescheduleRequestTermVariationMapping(dataContext); + } + + private MLoanRescheduleRequestTermVariationMapping(DataContext dataContext) { + super(dataContext, "m_loan_reschedule_request_term_variations_mapping"); + this.ID = getInternalColumnByName("id"); + this.LOAN_RESCHEDULE_REQUEST_ID = getInternalColumnByName("loan_reschedule_request_id"); + this.LOAN_TERM_VARIATIONS_ID = getInternalColumnByName("loan_term_variations_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanTermVariation.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanTermVariation.java new file mode 100644 index 00000000..d8253ff3 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanTermVariation.java @@ -0,0 +1,47 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MLoanTermVariation extends AbstractTable { + + public final Column ID; + + public final Column LOAN_ID; + + public final Column TERM_TYPE; + + public final Column APPLICABLE_DATE; + + public final Column DECIMAL_VALUE; + + public final Column DATE_VALUE; + + public final Column SPECIFIC_TO_INSTALLMENT; + + public final Column APPLIED_ON_LOAN_STATUS; + + public final Column ACTIVE; + + public final Column PARENT_ID; + + public static MLoanTermVariation staticInitialize(DataContext dataContext) { + return new MLoanTermVariation(dataContext); + } + + private MLoanTermVariation(DataContext dataContext) { + super(dataContext, "m_loan_term_variations"); + this.ID = getInternalColumnByName("id"); + this.LOAN_ID = getInternalColumnByName("loan_id"); + this.TERM_TYPE = getInternalColumnByName("term_type"); + this.APPLICABLE_DATE = getInternalColumnByName("applicable_date"); + this.DECIMAL_VALUE = getInternalColumnByName("decimal_value"); + this.DATE_VALUE = getInternalColumnByName("date_value"); + this.SPECIFIC_TO_INSTALLMENT = getInternalColumnByName("is_specific_to_installment"); + this.APPLIED_ON_LOAN_STATUS = getInternalColumnByName("applied_on_loan_status"); + this.ACTIVE = getInternalColumnByName("is_active"); + this.PARENT_ID = getInternalColumnByName("parent_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanTopup.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanTopup.java new file mode 100644 index 00000000..7bd3858d --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanTopup.java @@ -0,0 +1,32 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MLoanTopup extends AbstractTable { + + public final Column ID; + + public final Column LOAN_ID; + + public final Column CLOSURE_LOAN_ID; + + public final Column ACCOUNT_TRANSFER_DETAILS_ID; + + public final Column TOPUP_AMOUNT; + + public static MLoanTopup staticInitialize(DataContext dataContext) { + return new MLoanTopup(dataContext); + } + + private MLoanTopup(DataContext dataContext) { + super(dataContext, "m_loan_topup"); + this.ID = getInternalColumnByName("id"); + this.LOAN_ID = getInternalColumnByName("loan_id"); + this.CLOSURE_LOAN_ID = getInternalColumnByName("closure_loan_id"); + this.ACCOUNT_TRANSFER_DETAILS_ID = getInternalColumnByName("account_transfer_details_id"); + this.TOPUP_AMOUNT = getInternalColumnByName("topup_amount"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanTrancheCharge.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanTrancheCharge.java new file mode 100644 index 00000000..a3dcfd13 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanTrancheCharge.java @@ -0,0 +1,26 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MLoanTrancheCharge extends AbstractTable { + + public final Column ID; + + public final Column LOAN_ID; + + public final Column CHARGE_ID; + + public static MLoanTrancheCharge staticInitialize(DataContext dataContext) { + return new MLoanTrancheCharge(dataContext); + } + + private MLoanTrancheCharge(DataContext dataContext) { + super(dataContext, "m_loan_tranche_charges"); + this.ID = getInternalColumnByName("id"); + this.LOAN_ID = getInternalColumnByName("loan_id"); + this.CHARGE_ID = getInternalColumnByName("charge_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanTrancheDisbursementCharge.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanTrancheDisbursementCharge.java new file mode 100644 index 00000000..60850c0b --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanTrancheDisbursementCharge.java @@ -0,0 +1,26 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MLoanTrancheDisbursementCharge extends AbstractTable { + + public final Column ID; + + public final Column LOAN_CHARGE_ID; + + public final Column DISBURSEMENT_DETAIL_ID; + + public static MLoanTrancheDisbursementCharge staticInitialize(DataContext dataContext) { + return new MLoanTrancheDisbursementCharge(dataContext); + } + + private MLoanTrancheDisbursementCharge(DataContext dataContext) { + super(dataContext, "m_loan_tranche_disbursement_charge"); + this.ID = getInternalColumnByName("id"); + this.LOAN_CHARGE_ID = getInternalColumnByName("loan_charge_id"); + this.DISBURSEMENT_DETAIL_ID = getInternalColumnByName("disbursement_detail_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanTransaction.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanTransaction.java new file mode 100644 index 00000000..8176897d --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanTransaction.java @@ -0,0 +1,77 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MLoanTransaction extends AbstractTable { + + public final Column ID; + + public final Column LOAN_ID; + + public final Column OFFICE_ID; + + public final Column PAYMENT_DETAIL_ID; + + public final Column REVERSED; + + public final Column EXTERNAL_ID; + + public final Column TRANSACTION_TYPE_ENUM; + + public final Column TRANSACTION_DATE; + + public final Column AMOUNT; + + public final Column PRINCIPAL_PORTION_DERIVED; + + public final Column INTEREST_PORTION_DERIVED; + + public final Column FEE_CHARGE_PORTION_DERIVED; + + public final Column PENALTY_CHARGE_PORTION_DERIVED; + + public final Column OVERPAYMENT_PORTION_DERIVED; + + public final Column UNRECOGNIZED_INCOME_PORTION; + + public final Column OUTSTANDING_LOAN_BALANCE_DERIVED; + + public final Column SUBMITTED_ON_DATE; + + public final Column MANUALLY_ADJUSTED_OR_REVERSED; + + public final Column CREATED_DATE; + + public final Column APP_USER_ID; + + public static MLoanTransaction staticInitialize(DataContext dataContext) { + return new MLoanTransaction(dataContext); + } + + private MLoanTransaction(DataContext dataContext) { + super(dataContext, "m_loan_transaction"); + this.ID = getInternalColumnByName("id"); + this.LOAN_ID = getInternalColumnByName("loan_id"); + this.OFFICE_ID = getInternalColumnByName("office_id"); + this.PAYMENT_DETAIL_ID = getInternalColumnByName("payment_detail_id"); + this.REVERSED = getInternalColumnByName("is_reversed"); + this.EXTERNAL_ID = getInternalColumnByName("external_id"); + this.TRANSACTION_TYPE_ENUM = getInternalColumnByName("transaction_type_enum"); + this.TRANSACTION_DATE = getInternalColumnByName("transaction_date"); + this.AMOUNT = getInternalColumnByName("amount"); + this.PRINCIPAL_PORTION_DERIVED = getInternalColumnByName("principal_portion_derived"); + this.INTEREST_PORTION_DERIVED = getInternalColumnByName("interest_portion_derived"); + this.FEE_CHARGE_PORTION_DERIVED = getInternalColumnByName("fee_charges_portion_derived"); + this.PENALTY_CHARGE_PORTION_DERIVED = getInternalColumnByName("penalty_charges_portion_derived"); + this.OVERPAYMENT_PORTION_DERIVED = getInternalColumnByName("overpayment_portion_derived"); + this.UNRECOGNIZED_INCOME_PORTION = getInternalColumnByName("unrecognized_income_portion"); + this.OUTSTANDING_LOAN_BALANCE_DERIVED = getInternalColumnByName("outstanding_loan_balance_derived"); + this.SUBMITTED_ON_DATE = getInternalColumnByName("submitted_on_date"); + this.MANUALLY_ADJUSTED_OR_REVERSED = getInternalColumnByName("manually_adjusted_or_reversed"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.APP_USER_ID = getInternalColumnByName("appuser_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanTransactionRepaymentScheduleMapping.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanTransactionRepaymentScheduleMapping.java new file mode 100644 index 00000000..f14566c5 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MLoanTransactionRepaymentScheduleMapping.java @@ -0,0 +1,41 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MLoanTransactionRepaymentScheduleMapping extends AbstractTable { + + public final Column ID; + + public final Column LOAN_TRANSACTION_ID; + + public final Column LOAN_REPAYMENT_SCHEDULE_ID; + + public final Column AMOUNT; + + public final Column PRINCIPAL_PORTION_DERIVED; + + public final Column INTEREST_PORTION_DERIVED; + + public final Column FEE_CHARGE_PORTION_DERIVED; + + public final Column PENALTY_CHARGE_PORTION_DERIVED; + + public static MLoanTransactionRepaymentScheduleMapping staticInitialize(DataContext dataContext) { + return new MLoanTransactionRepaymentScheduleMapping(dataContext); + } + + private MLoanTransactionRepaymentScheduleMapping(DataContext dataContext) { + super(dataContext, "m_loan_transaction_repayment_schedule_mapping"); + this.ID = getInternalColumnByName("id"); + this.LOAN_TRANSACTION_ID = getInternalColumnByName("loan_transaction_id"); + this.LOAN_REPAYMENT_SCHEDULE_ID = getInternalColumnByName("loan_repayment_schedule_id"); + this.AMOUNT = getInternalColumnByName("amount"); + this.PRINCIPAL_PORTION_DERIVED = getInternalColumnByName("principal_portion_derived"); + this.INTEREST_PORTION_DERIVED = getInternalColumnByName("interest_portion_derived"); + this.FEE_CHARGE_PORTION_DERIVED = getInternalColumnByName("fee_charges_portion_derived"); + this.PENALTY_CHARGE_PORTION_DERIVED = getInternalColumnByName("penalty_charges_portion_derived"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MMandatorySavingSchedule.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MMandatorySavingSchedule.java new file mode 100644 index 00000000..bbf570db --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MMandatorySavingSchedule.java @@ -0,0 +1,62 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MMandatorySavingSchedule extends AbstractTable { + + public final Column ID; + + public final Column SAVING_ACCOUNT_ID; + + public final Column FROM_DATE; + + public final Column DUE_DATE; + + public final Column INSTALLMENT; + + public final Column DEPOSIT_AMOUNT; + + public final Column DEPOSIT_AMOUNT_COMPLETED_DERIVED; + + public final Column TOTAL_PAID_IN_ADVANCE_DERIVED; + + public final Column TOTAL_PAID_LATE_DERIVED; + + public final Column COMPLETED_DERIVED; + + public final Column OBLIGATION_MET_ON_DATE; + + public final Column CREATED_BY_ID; + + public final Column CREATED_DATE; + + public final Column LAST_MODIFIED_DATE; + + public final Column LAST_MODIFIED_BY_ID; + + public static MMandatorySavingSchedule staticInitialize(DataContext dataContext) { + return new MMandatorySavingSchedule(dataContext); + } + + private MMandatorySavingSchedule(DataContext dataContext) { + super(dataContext, "m_mandatory_savings_schedule"); + this.ID = getInternalColumnByName("id"); + this.SAVING_ACCOUNT_ID = getInternalColumnByName("savings_account_id"); + this.FROM_DATE = getInternalColumnByName("fromdate"); + this.DUE_DATE = getInternalColumnByName("duedate"); + this.INSTALLMENT = getInternalColumnByName("installment"); + this.DEPOSIT_AMOUNT = getInternalColumnByName("deposit_amount"); + this.DEPOSIT_AMOUNT_COMPLETED_DERIVED = getInternalColumnByName("deposit_amount_completed_derived"); + this.TOTAL_PAID_IN_ADVANCE_DERIVED = getInternalColumnByName("total_paid_in_advance_derived"); + this.TOTAL_PAID_LATE_DERIVED = getInternalColumnByName("total_paid_late_derived"); + this.COMPLETED_DERIVED = getInternalColumnByName("completed_derived"); + this.OBLIGATION_MET_ON_DATE = getInternalColumnByName("obligations_met_on_date"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MMeeting.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MMeeting.java new file mode 100644 index 00000000..33eed3f5 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MMeeting.java @@ -0,0 +1,26 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MMeeting extends AbstractTable { + + public final Column ID; + + public final Column CALENDAR_INSTANCE_ID; + + public final Column MEETING_DATE; + + public static MMeeting staticInitialize(DataContext dataContext) { + return new MMeeting(dataContext); + } + + private MMeeting(DataContext dataContext) { + super(dataContext, "m_meeting"); + this.ID = getInternalColumnByName("id"); + this.CALENDAR_INSTANCE_ID = getInternalColumnByName("calendar_instance_id"); + this.MEETING_DATE = getInternalColumnByName("meeting_date"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MNote.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MNote.java new file mode 100644 index 00000000..b0592abf --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MNote.java @@ -0,0 +1,59 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MNote extends AbstractTable { + + public final Column ID; + + public final Column CLIENT_ID; + + public final Column GROUP_ID; + + public final Column LOAN_ID; + + public final Column LOAN_TRANSACTION_ID; + + public final Column SAVING_ACCOUNT_ID; + + public final Column SAVING_ACCOUNT_TRANSACTION_ID; + + public final Column SHARE_ACCOUNT_ID; + + public final Column NOTE_TYPE_ENUM; + + public final Column NOTE; + + public final Column CREATED_DATE; + + public final Column CREATED_BY_ID; + + public final Column LAST_MODIFIED_DATE; + + public final Column LAST_MODIFIED_BY_ID; + + public static MNote staticInitialize(DataContext dataContext) { + return new MNote(dataContext); + } + + private MNote(DataContext dataContext) { + super(dataContext, "m_note"); + this.ID = getInternalColumnByName("id"); + this.CLIENT_ID = getInternalColumnByName("client_id"); + this.GROUP_ID = getInternalColumnByName("group_id"); + this.LOAN_ID = getInternalColumnByName("loan_id"); + this.LOAN_TRANSACTION_ID = getInternalColumnByName("loan_transaction_id"); + this.SAVING_ACCOUNT_ID = getInternalColumnByName("savings_account_id"); + this.SAVING_ACCOUNT_TRANSACTION_ID = getInternalColumnByName("savings_account_transaction_id"); + this.SHARE_ACCOUNT_ID = getInternalColumnByName("share_account_id"); + this.NOTE_TYPE_ENUM = getInternalColumnByName("note_type_enum"); + this.NOTE = getInternalColumnByName("note"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MOffice.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MOffice.java new file mode 100644 index 00000000..e6db0133 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MOffice.java @@ -0,0 +1,35 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MOffice extends AbstractTable { + + public final Column ID; + + public final Column PARENT_ID; + + public final Column HIERARCHY; + + public final Column EXTERNAL_ID; + + public final Column NAME; + + public final Column OPENING_DATE; + + public static MOffice staticInitialize(DataContext dataContext) { + return new MOffice(dataContext); + } + + private MOffice(DataContext dataContext) { + super(dataContext, "m_office"); + this.ID = getInternalColumnByName("id"); + this.PARENT_ID = getInternalColumnByName("parent_id"); + this.HIERARCHY = getInternalColumnByName("hierarchy"); + this.EXTERNAL_ID = getInternalColumnByName("external_id"); + this.NAME = getInternalColumnByName("name"); + this.OPENING_DATE = getInternalColumnByName("opening_date"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MOfficeTransaction.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MOfficeTransaction.java new file mode 100644 index 00000000..b24576e9 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MOfficeTransaction.java @@ -0,0 +1,41 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MOfficeTransaction extends AbstractTable { + + public final Column ID; + + public final Column FROM_OFFICE_ID; + + public final Column TO_OFFICE_ID; + + public final Column CURRENCY_CODE; + + public final Column CURRENCY_DIGIT; + + public final Column TRANSACTION_AMOUNT; + + public final Column TRANSACTION_DATE; + + public final Column DESCRIPTION; + + public static MOfficeTransaction staticInitialize(DataContext dataContext) { + return new MOfficeTransaction(dataContext); + } + + private MOfficeTransaction(DataContext dataContext) { + super(dataContext, "m_office_transaction"); + this.ID = getInternalColumnByName("id"); + this.FROM_OFFICE_ID = getInternalColumnByName("from_office_id"); + this.TO_OFFICE_ID = getInternalColumnByName("to_office_id"); + this.CURRENCY_CODE = getInternalColumnByName("currency_code"); + this.CURRENCY_DIGIT = getInternalColumnByName("currency_digits"); + this.TRANSACTION_AMOUNT = getInternalColumnByName("transaction_amount"); + this.TRANSACTION_DATE = getInternalColumnByName("transaction_date"); + this.DESCRIPTION = getInternalColumnByName("description"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MOrganisationCreditBureau.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MOrganisationCreditBureau.java new file mode 100644 index 00000000..b255ad31 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MOrganisationCreditBureau.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MOrganisationCreditBureau extends AbstractTable { + + public final Column ID; + + public final Column ALIAS; + + public final Column CREDIT_BUREAU_ID; + + public final Column ACTIVE; + + public static MOrganisationCreditBureau staticInitialize(DataContext dataContext) { + return new MOrganisationCreditBureau(dataContext); + } + + private MOrganisationCreditBureau(DataContext dataContext) { + super(dataContext, "m_organisation_creditbureau"); + this.ID = getInternalColumnByName("id"); + this.ALIAS = getInternalColumnByName("alias"); + this.CREDIT_BUREAU_ID = getInternalColumnByName("creditbureau_id"); + this.ACTIVE = getInternalColumnByName("is_active"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MOrganisationCurrency.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MOrganisationCurrency.java new file mode 100644 index 00000000..443fef50 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MOrganisationCurrency.java @@ -0,0 +1,38 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MOrganisationCurrency extends AbstractTable { + + public final Column ID; + + public final Column CODE; + + public final Column DECIMAL_PLACE; + + public final Column CURRENCY_MULTIPLE_OF; + + public final Column DISPLAY_SYMBOL; + + public final Column NAME; + + public final Column INTERNATIONALIZED_NAME_CODE; + + public static MOrganisationCurrency staticInitialize(DataContext dataContext) { + return new MOrganisationCurrency(dataContext); + } + + private MOrganisationCurrency(DataContext dataContext) { + super(dataContext, "m_organisation_currency"); + this.ID = getInternalColumnByName("id"); + this.CODE = getInternalColumnByName("code"); + this.DECIMAL_PLACE = getInternalColumnByName("decimal_places"); + this.CURRENCY_MULTIPLE_OF = getInternalColumnByName("currency_multiplesof"); + this.DISPLAY_SYMBOL = getInternalColumnByName("display_symbol"); + this.NAME = getInternalColumnByName("name"); + this.INTERNATIONALIZED_NAME_CODE = getInternalColumnByName("internationalized_name_code"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MPasswordValidationPolicy.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MPasswordValidationPolicy.java new file mode 100644 index 00000000..df233bec --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MPasswordValidationPolicy.java @@ -0,0 +1,32 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MPasswordValidationPolicy extends AbstractTable { + + public final Column ID; + + public final Column REGEX; + + public final Column DESCRIPTION; + + public final Column ACTIVE; + + public final Column KEY; + + public static MPasswordValidationPolicy staticInitialize(DataContext dataContext) { + return new MPasswordValidationPolicy(dataContext); + } + + private MPasswordValidationPolicy(DataContext dataContext) { + super(dataContext, "m_password_validation_policy"); + this.ID = getInternalColumnByName("id"); + this.REGEX = getInternalColumnByName("regex"); + this.DESCRIPTION = getInternalColumnByName("description"); + this.ACTIVE = getInternalColumnByName("active"); + this.KEY = getInternalColumnByName("key"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MPaymentDetail.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MPaymentDetail.java new file mode 100644 index 00000000..aa5d5b28 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MPaymentDetail.java @@ -0,0 +1,38 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MPaymentDetail extends AbstractTable { + + public final Column ID; + + public final Column PAYMENT_TYPE_ID; + + public final Column ACCOUNT_NUMBER; + + public final Column CHECK_NUMBER; + + public final Column RECEIPT_NUMBER; + + public final Column BANK_NUMBER; + + public final Column ROUTING_CODE; + + public static MPaymentDetail staticInitialize(DataContext dataContext) { + return new MPaymentDetail(dataContext); + } + + private MPaymentDetail(DataContext dataContext) { + super(dataContext, "m_payment_detail"); + this.ID = getInternalColumnByName("id"); + this.PAYMENT_TYPE_ID = getInternalColumnByName("payment_type_id"); + this.ACCOUNT_NUMBER = getInternalColumnByName("account_number"); + this.CHECK_NUMBER = getInternalColumnByName("check_number"); + this.RECEIPT_NUMBER = getInternalColumnByName("receipt_number"); + this.BANK_NUMBER = getInternalColumnByName("bank_number"); + this.ROUTING_CODE = getInternalColumnByName("routing_code"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MPaymentType.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MPaymentType.java new file mode 100644 index 00000000..ab5263ad --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MPaymentType.java @@ -0,0 +1,32 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MPaymentType extends AbstractTable { + + public final Column ID; + + public final Column VALUE; + + public final Column DESCRIPTION; + + public final Column CASH_PAYMENT; + + public final Column ORDER_POSITION; + + public static MPaymentType staticInitialize(DataContext dataContext) { + return new MPaymentType(dataContext); + } + + private MPaymentType(DataContext dataContext) { + super(dataContext, "m_payment_type"); + this.ID = getInternalColumnByName("id"); + this.VALUE = getInternalColumnByName("value"); + this.DESCRIPTION = getInternalColumnByName("description"); + this.CASH_PAYMENT = getInternalColumnByName("is_cash_payment"); + this.ORDER_POSITION = getInternalColumnByName("order_position"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MPermission.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MPermission.java new file mode 100644 index 00000000..5f46bc25 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MPermission.java @@ -0,0 +1,35 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MPermission extends AbstractTable { + + public final Column ID; + + public final Column GROUPING; + + public final Column CODE; + + public final Column ENTITY_NAME; + + public final Column ACTION_NAME; + + public final Column CAN_MAKER_CHECKER; + + public static MPermission staticInitialize(DataContext dataContext) { + return new MPermission(dataContext); + } + + private MPermission(DataContext dataContext) { + super(dataContext, "m_permission"); + this.ID = getInternalColumnByName("id"); + this.GROUPING = getInternalColumnByName("grouping"); + this.CODE = getInternalColumnByName("code"); + this.ENTITY_NAME = getInternalColumnByName("entity_name"); + this.ACTION_NAME = getInternalColumnByName("action_name"); + this.CAN_MAKER_CHECKER = getInternalColumnByName("can_maker_checker"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MPocket.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MPocket.java new file mode 100644 index 00000000..4158169b --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MPocket.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MPocket extends AbstractTable { + + public final Column ID; + + public final Column APP_USER_ID; + + public static MPocket staticInitialize(DataContext dataContext) { + return new MPocket(dataContext); + } + + private MPocket(DataContext dataContext) { + super(dataContext, "m_pocket"); + this.ID = getInternalColumnByName("id"); + this.APP_USER_ID = getInternalColumnByName("app_user_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MPocketAccountMapping.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MPocketAccountMapping.java new file mode 100644 index 00000000..694cab30 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MPocketAccountMapping.java @@ -0,0 +1,32 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MPocketAccountMapping extends AbstractTable { + + public final Column ID; + + public final Column POCKET_ID; + + public final Column ACCOUNT_ID; + + public final Column ACCOUNT_TYPE; + + public final Column ACCOUNT_NUMBER; + + public static MPocketAccountMapping staticInitialize(DataContext dataContext) { + return new MPocketAccountMapping(dataContext); + } + + private MPocketAccountMapping(DataContext dataContext) { + super(dataContext, "m_pocket_accounts_mapping"); + this.ID = getInternalColumnByName("id"); + this.POCKET_ID = getInternalColumnByName("pocket_id"); + this.ACCOUNT_ID = getInternalColumnByName("account_id"); + this.ACCOUNT_TYPE = getInternalColumnByName("account_type"); + this.ACCOUNT_NUMBER = getInternalColumnByName("account_number"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MPortfolioAccountAssociation.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MPortfolioAccountAssociation.java new file mode 100644 index 00000000..2093bbe6 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MPortfolioAccountAssociation.java @@ -0,0 +1,38 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MPortfolioAccountAssociation extends AbstractTable { + + public final Column ID; + + public final Column LOAN_ACCOUNT_ID; + + public final Column SAVING_ACCOUNT_ID; + + public final Column LINKED_LOAN_ACCOUNT_ID; + + public final Column LINKED_SAVING_ACCOUNT_ID; + + public final Column ASSOCIATION_TYPE_ENUM; + + public final Column ACTIVE; + + public static MPortfolioAccountAssociation staticInitialize(DataContext dataContext) { + return new MPortfolioAccountAssociation(dataContext); + } + + private MPortfolioAccountAssociation(DataContext dataContext) { + super(dataContext, "m_portfolio_account_associations"); + this.ID = getInternalColumnByName("id"); + this.LOAN_ACCOUNT_ID = getInternalColumnByName("loan_account_id"); + this.SAVING_ACCOUNT_ID = getInternalColumnByName("savings_account_id"); + this.LINKED_LOAN_ACCOUNT_ID = getInternalColumnByName("linked_loan_account_id"); + this.LINKED_SAVING_ACCOUNT_ID = getInternalColumnByName("linked_savings_account_id"); + this.ASSOCIATION_TYPE_ENUM = getInternalColumnByName("association_type_enum"); + this.ACTIVE = getInternalColumnByName("is_active"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MPortfolioCommandSource.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MPortfolioCommandSource.java new file mode 100644 index 00000000..123f8051 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MPortfolioCommandSource.java @@ -0,0 +1,80 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MPortfolioCommandSource extends AbstractTable { + + public final Column ID; + + public final Column ACTION_NAME; + + public final Column ENTITY_NAME; + + public final Column OFFICE_ID; + + public final Column GROUP_ID; + + public final Column CLIENT_ID; + + public final Column LOAN_ID; + + public final Column SAVING_ACCOUNT_ID; + + public final Column API_GET_URL; + + public final Column RESOURCE_ID; + + public final Column SUB_RESOURCE_ID; + + public final Column COMMAND_AS_JSON; + + public final Column MAKER_ID; + + public final Column MADE_ON_DATE; + + public final Column CHECKER_ID; + + public final Column CHECKED_ON_DATE; + + public final Column PROCESSING_RESULT_ENUM; + + public final Column PRODUCT_ID; + + public final Column TRANSACTION_ID; + + public final Column CREDIT_BUREAU_ID; + + public final Column ORGANISATION_CREDIT_BUREAU_ID; + + public static MPortfolioCommandSource staticInitialize(DataContext dataContext) { + return new MPortfolioCommandSource(dataContext); + } + + private MPortfolioCommandSource(DataContext dataContext) { + super(dataContext, "m_portfolio_command_source"); + this.ID = getInternalColumnByName("id"); + this.ACTION_NAME = getInternalColumnByName("action_name"); + this.ENTITY_NAME = getInternalColumnByName("entity_name"); + this.OFFICE_ID = getInternalColumnByName("office_id"); + this.GROUP_ID = getInternalColumnByName("group_id"); + this.CLIENT_ID = getInternalColumnByName("client_id"); + this.LOAN_ID = getInternalColumnByName("loan_id"); + this.SAVING_ACCOUNT_ID = getInternalColumnByName("savings_account_id"); + this.API_GET_URL = getInternalColumnByName("api_get_url"); + this.RESOURCE_ID = getInternalColumnByName("resource_id"); + this.SUB_RESOURCE_ID = getInternalColumnByName("subresource_id"); + this.COMMAND_AS_JSON = getInternalColumnByName("command_as_json"); + this.MAKER_ID = getInternalColumnByName("maker_id"); + this.MADE_ON_DATE = getInternalColumnByName("made_on_date"); + this.CHECKER_ID = getInternalColumnByName("checker_id"); + this.CHECKED_ON_DATE = getInternalColumnByName("checked_on_date"); + this.PROCESSING_RESULT_ENUM = getInternalColumnByName("processing_result_enum"); + this.PRODUCT_ID = getInternalColumnByName("product_id"); + this.TRANSACTION_ID = getInternalColumnByName("transaction_id"); + this.CREDIT_BUREAU_ID = getInternalColumnByName("creditbureau_id"); + this.ORGANISATION_CREDIT_BUREAU_ID = getInternalColumnByName("organisation_creditbureau_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoan.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoan.java new file mode 100644 index 00000000..ec5b5112 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoan.java @@ -0,0 +1,185 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MProductLoan extends AbstractTable { + + public final Column ID; + + public final Column SHORT_NAME; + + public final Column CURRENCY_CODE; + + public final Column CURRENCY_DIGIT; + + public final Column CURRENCY_MULTIPLE_OF; + + public final Column PRINCIPAL_AMOUNT; + + public final Column MIN_PRINCIPAL_AMOUNT; + + public final Column MAX_PRINCIPAL_AMOUNT; + + public final Column ARREARS_TOLERANCE_AMOUNT; + + public final Column NAME; + + public final Column DESCRIPTION; + + public final Column FUND_ID; + + public final Column LINKED_TO_FLOATING_INTEREST_RATE; + + public final Column ALLOW_VARIABE_INSTALLMENT; + + public final Column NOMINAL_INTEREST_RATE_PER_PERIOD; + + public final Column MIN_NOMINAL_INTEREST_RATE_PER_PERIOD; + + public final Column MAX_NOMINAL_INTEREST_RATE_PER_PERIOD; + + public final Column INTEREST_PERIOD_FREQUENCY_ENUM; + + public final Column ANNUAL_NOMINAL_INTEREST_RATE; + + public final Column INTEREST_METHOD_ENUM; + + public final Column INTEREST_CALCULATED_IN_PERIOD_ENUM; + + public final Column ALLOW_PARTIAL_PERIOD_INTEREST_CALCUALTION; + + public final Column REPAY_EVERY; + + public final Column REPAYMENT_PERIOD_FREQUENCY_ENUM; + + public final Column NUMBER_OF_REPAYMENT; + + public final Column MIN_NUMBER_OF_REPAYMENT; + + public final Column MAX_NUMBER_OF_REPAYMENT; + + public final Column GRACE_ON_PRINCIPAL_PERIOD; + + public final Column RECURRING_MORATORIUM_PRINCIPAL_PERIOD; + + public final Column GRACE_ON_INTEREST_PERIOD; + + public final Column GRACE_INTEREST_FREE_PERIOD; + + public final Column AMORTIZATION_METHOD_ENUM; + + public final Column ACCOUNTING_TYPE; + + public final Column LOAN_TRANSACTION_STRATEGY_ID; + + public final Column EXTERNAL_ID; + + public final Column INCLUDE_IN_BORROWER_CYCLE; + + public final Column USE_BORROWER_CYCLE; + + public final Column START_DATE; + + public final Column CLOSE_DATE; + + public final Column ALLOW_MULTIPLE_DISBURSAL; + + public final Column MAX_DISBURSAL; + + public final Column MAX_OUTSTANDING_LOAN_BALANCE; + + public final Column GRACE_ON_ARREARS_AGEING; + + public final Column OVERDUE_DAY_FOR_NPA; + + public final Column DAY_IN_MONTH_ENUM; + + public final Column DAY_IN_YEAR_ENUM; + + public final Column INTEREST_RECALCULATION_ENABLED; + + public final Column MIN_DAY_BETWEEN_DISBURSAL_AND_FIRST_REPAYMENT; + + public final Column HOLD_GUARANTEE_FUND; + + public final Column PRINCIPAL_THRESHOLD_FOR_LAST_INSTALLMENT; + + public final Column ACCOUNT_MOVES_OUT_OF_NPA_ONLY_ON_ARREARS_COMPLETION; + + public final Column CAN_DEFINE_FIXED_EMI_AMOUNT; + + public final Column INSTALMENT_AMOUNT_IN_MULTIPLE_OF; + + public final Column CAN_USE_FOR_TOPUP; + + public final Column SYNC_EXPECTED_WITH_DISBURSEMENT_DATE; + + public final Column EQUAL_AMORTIZATION; + + public static MProductLoan staticInitialize(DataContext dataContext) { + return new MProductLoan(dataContext); + } + + private MProductLoan(DataContext dataContext) { + super(dataContext, "m_product_loan"); + this.ID = getInternalColumnByName("id"); + this.SHORT_NAME = getInternalColumnByName("short_name"); + this.CURRENCY_CODE = getInternalColumnByName("currency_code"); + this.CURRENCY_DIGIT = getInternalColumnByName("currency_digits"); + this.CURRENCY_MULTIPLE_OF = getInternalColumnByName("currency_multiplesof"); + this.PRINCIPAL_AMOUNT = getInternalColumnByName("principal_amount"); + this.MIN_PRINCIPAL_AMOUNT = getInternalColumnByName("min_principal_amount"); + this.MAX_PRINCIPAL_AMOUNT = getInternalColumnByName("max_principal_amount"); + this.ARREARS_TOLERANCE_AMOUNT = getInternalColumnByName("arrearstolerance_amount"); + this.NAME = getInternalColumnByName("name"); + this.DESCRIPTION = getInternalColumnByName("description"); + this.FUND_ID = getInternalColumnByName("fund_id"); + this.LINKED_TO_FLOATING_INTEREST_RATE = getInternalColumnByName("is_linked_to_floating_interest_rates"); + this.ALLOW_VARIABE_INSTALLMENT = getInternalColumnByName("allow_variabe_installments"); + this.NOMINAL_INTEREST_RATE_PER_PERIOD = getInternalColumnByName("nominal_interest_rate_per_period"); + this.MIN_NOMINAL_INTEREST_RATE_PER_PERIOD = getInternalColumnByName("min_nominal_interest_rate_per_period"); + this.MAX_NOMINAL_INTEREST_RATE_PER_PERIOD = getInternalColumnByName("max_nominal_interest_rate_per_period"); + this.INTEREST_PERIOD_FREQUENCY_ENUM = getInternalColumnByName("interest_period_frequency_enum"); + this.ANNUAL_NOMINAL_INTEREST_RATE = getInternalColumnByName("annual_nominal_interest_rate"); + this.INTEREST_METHOD_ENUM = getInternalColumnByName("interest_method_enum"); + this.INTEREST_CALCULATED_IN_PERIOD_ENUM = getInternalColumnByName("interest_calculated_in_period_enum"); + this.ALLOW_PARTIAL_PERIOD_INTEREST_CALCUALTION = getInternalColumnByName("allow_partial_period_interest_calcualtion"); + this.REPAY_EVERY = getInternalColumnByName("repay_every"); + this.REPAYMENT_PERIOD_FREQUENCY_ENUM = getInternalColumnByName("repayment_period_frequency_enum"); + this.NUMBER_OF_REPAYMENT = getInternalColumnByName("number_of_repayments"); + this.MIN_NUMBER_OF_REPAYMENT = getInternalColumnByName("min_number_of_repayments"); + this.MAX_NUMBER_OF_REPAYMENT = getInternalColumnByName("max_number_of_repayments"); + this.GRACE_ON_PRINCIPAL_PERIOD = getInternalColumnByName("grace_on_principal_periods"); + this.RECURRING_MORATORIUM_PRINCIPAL_PERIOD = getInternalColumnByName("recurring_moratorium_principal_periods"); + this.GRACE_ON_INTEREST_PERIOD = getInternalColumnByName("grace_on_interest_periods"); + this.GRACE_INTEREST_FREE_PERIOD = getInternalColumnByName("grace_interest_free_periods"); + this.AMORTIZATION_METHOD_ENUM = getInternalColumnByName("amortization_method_enum"); + this.ACCOUNTING_TYPE = getInternalColumnByName("accounting_type"); + this.LOAN_TRANSACTION_STRATEGY_ID = getInternalColumnByName("loan_transaction_strategy_id"); + this.EXTERNAL_ID = getInternalColumnByName("external_id"); + this.INCLUDE_IN_BORROWER_CYCLE = getInternalColumnByName("include_in_borrower_cycle"); + this.USE_BORROWER_CYCLE = getInternalColumnByName("use_borrower_cycle"); + this.START_DATE = getInternalColumnByName("start_date"); + this.CLOSE_DATE = getInternalColumnByName("close_date"); + this.ALLOW_MULTIPLE_DISBURSAL = getInternalColumnByName("allow_multiple_disbursals"); + this.MAX_DISBURSAL = getInternalColumnByName("max_disbursals"); + this.MAX_OUTSTANDING_LOAN_BALANCE = getInternalColumnByName("max_outstanding_loan_balance"); + this.GRACE_ON_ARREARS_AGEING = getInternalColumnByName("grace_on_arrears_ageing"); + this.OVERDUE_DAY_FOR_NPA = getInternalColumnByName("overdue_days_for_npa"); + this.DAY_IN_MONTH_ENUM = getInternalColumnByName("days_in_month_enum"); + this.DAY_IN_YEAR_ENUM = getInternalColumnByName("days_in_year_enum"); + this.INTEREST_RECALCULATION_ENABLED = getInternalColumnByName("interest_recalculation_enabled"); + this.MIN_DAY_BETWEEN_DISBURSAL_AND_FIRST_REPAYMENT = getInternalColumnByName("min_days_between_disbursal_and_first_repayment"); + this.HOLD_GUARANTEE_FUND = getInternalColumnByName("hold_guarantee_funds"); + this.PRINCIPAL_THRESHOLD_FOR_LAST_INSTALLMENT = getInternalColumnByName("principal_threshold_for_last_installment"); + this.ACCOUNT_MOVES_OUT_OF_NPA_ONLY_ON_ARREARS_COMPLETION = getInternalColumnByName("account_moves_out_of_npa_only_on_arrears_completion"); + this.CAN_DEFINE_FIXED_EMI_AMOUNT = getInternalColumnByName("can_define_fixed_emi_amount"); + this.INSTALMENT_AMOUNT_IN_MULTIPLE_OF = getInternalColumnByName("instalment_amount_in_multiples_of"); + this.CAN_USE_FOR_TOPUP = getInternalColumnByName("can_use_for_topup"); + this.SYNC_EXPECTED_WITH_DISBURSEMENT_DATE = getInternalColumnByName("sync_expected_with_disbursement_date"); + this.EQUAL_AMORTIZATION = getInternalColumnByName("is_equal_amortization"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoanCharge.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoanCharge.java new file mode 100644 index 00000000..dcb067fd --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoanCharge.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MProductLoanCharge extends AbstractTable { + + public final Column PRODUCT_LOAN_ID; + + public final Column CHARGE_ID; + + public static MProductLoanCharge staticInitialize(DataContext dataContext) { + return new MProductLoanCharge(dataContext); + } + + private MProductLoanCharge(DataContext dataContext) { + super(dataContext, "m_product_loan_charge"); + this.PRODUCT_LOAN_ID = getInternalColumnByName("product_loan_id"); + this.CHARGE_ID = getInternalColumnByName("charge_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoanConfigurableAttribute.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoanConfigurableAttribute.java new file mode 100644 index 00000000..eada7fcb --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoanConfigurableAttribute.java @@ -0,0 +1,47 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MProductLoanConfigurableAttribute extends AbstractTable { + + public final Column ID; + + public final Column LOAN_PRODUCT_ID; + + public final Column AMORTIZATION_METHOD_ENUM; + + public final Column INTEREST_METHOD_ENUM; + + public final Column LOAN_TRANSACTION_STRATEGY_ID; + + public final Column INTEREST_CALCULATED_IN_PERIOD_ENUM; + + public final Column ARREARS_TOLERANCE_AMOUNT; + + public final Column REPAY_EVERY; + + public final Column MORATORIUM; + + public final Column GRACE_ON_ARREARS_AGEING; + + public static MProductLoanConfigurableAttribute staticInitialize(DataContext dataContext) { + return new MProductLoanConfigurableAttribute(dataContext); + } + + private MProductLoanConfigurableAttribute(DataContext dataContext) { + super(dataContext, "m_product_loan_configurable_attributes"); + this.ID = getInternalColumnByName("id"); + this.LOAN_PRODUCT_ID = getInternalColumnByName("loan_product_id"); + this.AMORTIZATION_METHOD_ENUM = getInternalColumnByName("amortization_method_enum"); + this.INTEREST_METHOD_ENUM = getInternalColumnByName("interest_method_enum"); + this.LOAN_TRANSACTION_STRATEGY_ID = getInternalColumnByName("loan_transaction_strategy_id"); + this.INTEREST_CALCULATED_IN_PERIOD_ENUM = getInternalColumnByName("interest_calculated_in_period_enum"); + this.ARREARS_TOLERANCE_AMOUNT = getInternalColumnByName("arrearstolerance_amount"); + this.REPAY_EVERY = getInternalColumnByName("repay_every"); + this.MORATORIUM = getInternalColumnByName("moratorium"); + this.GRACE_ON_ARREARS_AGEING = getInternalColumnByName("grace_on_arrears_ageing"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoanFloatingRate.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoanFloatingRate.java new file mode 100644 index 00000000..56a6d9ae --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoanFloatingRate.java @@ -0,0 +1,41 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MProductLoanFloatingRate extends AbstractTable { + + public final Column ID; + + public final Column LOAN_PRODUCT_ID; + + public final Column FLOATING_RATE_ID; + + public final Column INTEREST_RATE_DIFFERENTIAL; + + public final Column MIN_DIFFERENTIAL_LENDING_RATE; + + public final Column DEFAULT_DIFFERENTIAL_LENDING_RATE; + + public final Column MAX_DIFFERENTIAL_LENDING_RATE; + + public final Column FLOATING_INTEREST_RATE_CALCULATION_ALLOWED; + + public static MProductLoanFloatingRate staticInitialize(DataContext dataContext) { + return new MProductLoanFloatingRate(dataContext); + } + + private MProductLoanFloatingRate(DataContext dataContext) { + super(dataContext, "m_product_loan_floating_rates"); + this.ID = getInternalColumnByName("id"); + this.LOAN_PRODUCT_ID = getInternalColumnByName("loan_product_id"); + this.FLOATING_RATE_ID = getInternalColumnByName("floating_rates_id"); + this.INTEREST_RATE_DIFFERENTIAL = getInternalColumnByName("interest_rate_differential"); + this.MIN_DIFFERENTIAL_LENDING_RATE = getInternalColumnByName("min_differential_lending_rate"); + this.DEFAULT_DIFFERENTIAL_LENDING_RATE = getInternalColumnByName("default_differential_lending_rate"); + this.MAX_DIFFERENTIAL_LENDING_RATE = getInternalColumnByName("max_differential_lending_rate"); + this.FLOATING_INTEREST_RATE_CALCULATION_ALLOWED = getInternalColumnByName("is_floating_interest_rate_calculation_allowed"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoanGuaranteeDetail.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoanGuaranteeDetail.java new file mode 100644 index 00000000..c9eb6fd3 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoanGuaranteeDetail.java @@ -0,0 +1,32 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MProductLoanGuaranteeDetail extends AbstractTable { + + public final Column ID; + + public final Column LOAN_PRODUCT_ID; + + public final Column MANDATORY_GUARANTEE; + + public final Column MINIMUM_GUARANTEE_FROM_OWN_FUND; + + public final Column MINIMUM_GUARANTEE_FROM_GUARANTOR_FUND; + + public static MProductLoanGuaranteeDetail staticInitialize(DataContext dataContext) { + return new MProductLoanGuaranteeDetail(dataContext); + } + + private MProductLoanGuaranteeDetail(DataContext dataContext) { + super(dataContext, "m_product_loan_guarantee_details"); + this.ID = getInternalColumnByName("id"); + this.LOAN_PRODUCT_ID = getInternalColumnByName("loan_product_id"); + this.MANDATORY_GUARANTEE = getInternalColumnByName("mandatory_guarantee"); + this.MINIMUM_GUARANTEE_FROM_OWN_FUND = getInternalColumnByName("minimum_guarantee_from_own_funds"); + this.MINIMUM_GUARANTEE_FROM_GUARANTOR_FUND = getInternalColumnByName("minimum_guarantee_from_guarantor_funds"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoanRate.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoanRate.java new file mode 100644 index 00000000..53537bac --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoanRate.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MProductLoanRate extends AbstractTable { + + public final Column PRODUCT_LOAN_ID; + + public final Column RATE_ID; + + public static MProductLoanRate staticInitialize(DataContext dataContext) { + return new MProductLoanRate(dataContext); + } + + private MProductLoanRate(DataContext dataContext) { + super(dataContext, "m_product_loan_rate"); + this.PRODUCT_LOAN_ID = getInternalColumnByName("product_loan_id"); + this.RATE_ID = getInternalColumnByName("rate_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoanRecalculationDetail.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoanRecalculationDetail.java new file mode 100644 index 00000000..77a8bcb9 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoanRecalculationDetail.java @@ -0,0 +1,71 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MProductLoanRecalculationDetail extends AbstractTable { + + public final Column ID; + + public final Column PRODUCT_ID; + + public final Column COMPOUND_TYPE_ENUM; + + public final Column RESCHEDULE_STRATEGY_ENUM; + + public final Column REST_FREQUENCY_TYPE_ENUM; + + public final Column REST_FREQUENCY_INTERVAL; + + public final Column ARREARS_BASED_ON_ORIGINAL_SCHEDULE; + + public final Column PRE_CLOSE_INTEREST_CALCULATION_STRATEGY; + + public final Column COMPOUNDING_FREQUENCY_TYPE_ENUM; + + public final Column COMPOUNDING_FREQUENCY_INTERVAL; + + public final Column REST_FREQUENCY_NTH_DAY_ENUM; + + public final Column REST_FREQUENCY_ON_DAY; + + public final Column REST_FREQUENCY_WEEKDAY_ENUM; + + public final Column COMPOUNDING_FREQUENCY_NTH_DAY_ENUM; + + public final Column COMPOUNDING_FREQUENCY_ON_DAY; + + public final Column COMPOUNDING_FREQUENCY_WEEKDAY_ENUM; + + public final Column COMPOUNDING_TO_BE_POSTED_AS_TRANSACTION; + + public final Column ALLOW_COMPOUNDING_ON_EOD; + + public static MProductLoanRecalculationDetail staticInitialize(DataContext dataContext) { + return new MProductLoanRecalculationDetail(dataContext); + } + + private MProductLoanRecalculationDetail(DataContext dataContext) { + super(dataContext, "m_product_loan_recalculation_details"); + this.ID = getInternalColumnByName("id"); + this.PRODUCT_ID = getInternalColumnByName("product_id"); + this.COMPOUND_TYPE_ENUM = getInternalColumnByName("compound_type_enum"); + this.RESCHEDULE_STRATEGY_ENUM = getInternalColumnByName("reschedule_strategy_enum"); + this.REST_FREQUENCY_TYPE_ENUM = getInternalColumnByName("rest_frequency_type_enum"); + this.REST_FREQUENCY_INTERVAL = getInternalColumnByName("rest_frequency_interval"); + this.ARREARS_BASED_ON_ORIGINAL_SCHEDULE = getInternalColumnByName("arrears_based_on_original_schedule"); + this.PRE_CLOSE_INTEREST_CALCULATION_STRATEGY = getInternalColumnByName("pre_close_interest_calculation_strategy"); + this.COMPOUNDING_FREQUENCY_TYPE_ENUM = getInternalColumnByName("compounding_frequency_type_enum"); + this.COMPOUNDING_FREQUENCY_INTERVAL = getInternalColumnByName("compounding_frequency_interval"); + this.REST_FREQUENCY_NTH_DAY_ENUM = getInternalColumnByName("rest_frequency_nth_day_enum"); + this.REST_FREQUENCY_ON_DAY = getInternalColumnByName("rest_frequency_on_day"); + this.REST_FREQUENCY_WEEKDAY_ENUM = getInternalColumnByName("rest_frequency_weekday_enum"); + this.COMPOUNDING_FREQUENCY_NTH_DAY_ENUM = getInternalColumnByName("compounding_frequency_nth_day_enum"); + this.COMPOUNDING_FREQUENCY_ON_DAY = getInternalColumnByName("compounding_frequency_on_day"); + this.COMPOUNDING_FREQUENCY_WEEKDAY_ENUM = getInternalColumnByName("compounding_frequency_weekday_enum"); + this.COMPOUNDING_TO_BE_POSTED_AS_TRANSACTION = getInternalColumnByName("is_compounding_to_be_posted_as_transaction"); + this.ALLOW_COMPOUNDING_ON_EOD = getInternalColumnByName("allow_compounding_on_eod"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoanVariableInstallmentConfig.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoanVariableInstallmentConfig.java new file mode 100644 index 00000000..a407f419 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoanVariableInstallmentConfig.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MProductLoanVariableInstallmentConfig extends AbstractTable { + + public final Column ID; + + public final Column LOAN_PRODUCT_ID; + + public final Column MINIMUM_GAP; + + public final Column MAXIMUM_GAP; + + public static MProductLoanVariableInstallmentConfig staticInitialize(DataContext dataContext) { + return new MProductLoanVariableInstallmentConfig(dataContext); + } + + private MProductLoanVariableInstallmentConfig(DataContext dataContext) { + super(dataContext, "m_product_loan_variable_installment_config"); + this.ID = getInternalColumnByName("id"); + this.LOAN_PRODUCT_ID = getInternalColumnByName("loan_product_id"); + this.MINIMUM_GAP = getInternalColumnByName("minimum_gap"); + this.MAXIMUM_GAP = getInternalColumnByName("maximum_gap"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoanVariationBorrowerCycle.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoanVariationBorrowerCycle.java new file mode 100644 index 00000000..8c8176d5 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductLoanVariationBorrowerCycle.java @@ -0,0 +1,41 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MProductLoanVariationBorrowerCycle extends AbstractTable { + + public final Column ID; + + public final Column LOAN_PRODUCT_ID; + + public final Column BORROWER_CYCLE_NUMBER; + + public final Column VALUE_CONDITION; + + public final Column PARAM_TYPE; + + public final Column DEFAULT_VALUE; + + public final Column MAX_VALUE; + + public final Column MIN_VALUE; + + public static MProductLoanVariationBorrowerCycle staticInitialize(DataContext dataContext) { + return new MProductLoanVariationBorrowerCycle(dataContext); + } + + private MProductLoanVariationBorrowerCycle(DataContext dataContext) { + super(dataContext, "m_product_loan_variations_borrower_cycle"); + this.ID = getInternalColumnByName("id"); + this.LOAN_PRODUCT_ID = getInternalColumnByName("loan_product_id"); + this.BORROWER_CYCLE_NUMBER = getInternalColumnByName("borrower_cycle_number"); + this.VALUE_CONDITION = getInternalColumnByName("value_condition"); + this.PARAM_TYPE = getInternalColumnByName("param_type"); + this.DEFAULT_VALUE = getInternalColumnByName("default_value"); + this.MAX_VALUE = getInternalColumnByName("max_value"); + this.MIN_VALUE = getInternalColumnByName("min_value"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductMix.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductMix.java new file mode 100644 index 00000000..6deb3c59 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProductMix.java @@ -0,0 +1,26 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MProductMix extends AbstractTable { + + public final Column ID; + + public final Column PRODUCT_ID; + + public final Column RESTRICTED_PRODUCT_ID; + + public static MProductMix staticInitialize(DataContext dataContext) { + return new MProductMix(dataContext); + } + + private MProductMix(DataContext dataContext) { + super(dataContext, "m_product_mix"); + this.ID = getInternalColumnByName("id"); + this.PRODUCT_ID = getInternalColumnByName("product_id"); + this.RESTRICTED_PRODUCT_ID = getInternalColumnByName("restricted_product_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProvisionCategory.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProvisionCategory.java new file mode 100644 index 00000000..02fb4c5c --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProvisionCategory.java @@ -0,0 +1,26 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MProvisionCategory extends AbstractTable { + + public final Column ID; + + public final Column CATEGORY_NAME; + + public final Column DESCRIPTION; + + public static MProvisionCategory staticInitialize(DataContext dataContext) { + return new MProvisionCategory(dataContext); + } + + private MProvisionCategory(DataContext dataContext) { + super(dataContext, "m_provision_category"); + this.ID = getInternalColumnByName("id"); + this.CATEGORY_NAME = getInternalColumnByName("category_name"); + this.DESCRIPTION = getInternalColumnByName("description"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProvisioningCriteria.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProvisioningCriteria.java new file mode 100644 index 00000000..ed716122 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProvisioningCriteria.java @@ -0,0 +1,35 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MProvisioningCriteria extends AbstractTable { + + public final Column ID; + + public final Column CRITERIA_NAME; + + public final Column CREATED_BY_ID; + + public final Column CREATED_DATE; + + public final Column LAST_MODIFIED_BY_ID; + + public final Column LAST_MODIFIED_DATE; + + public static MProvisioningCriteria staticInitialize(DataContext dataContext) { + return new MProvisioningCriteria(dataContext); + } + + private MProvisioningCriteria(DataContext dataContext) { + super(dataContext, "m_provisioning_criteria"); + this.ID = getInternalColumnByName("id"); + this.CRITERIA_NAME = getInternalColumnByName("criteria_name"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProvisioningCriteriaDefinition.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProvisioningCriteriaDefinition.java new file mode 100644 index 00000000..664c0e44 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProvisioningCriteriaDefinition.java @@ -0,0 +1,41 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MProvisioningCriteriaDefinition extends AbstractTable { + + public final Column ID; + + public final Column CRITERIA_ID; + + public final Column CATEGORY_ID; + + public final Column MIN_AGE; + + public final Column MAX_AGE; + + public final Column PROVISION_PERCENTAGE; + + public final Column LIABILITY_ACCOUNT; + + public final Column EXPENSE_ACCOUNT; + + public static MProvisioningCriteriaDefinition staticInitialize(DataContext dataContext) { + return new MProvisioningCriteriaDefinition(dataContext); + } + + private MProvisioningCriteriaDefinition(DataContext dataContext) { + super(dataContext, "m_provisioning_criteria_definition"); + this.ID = getInternalColumnByName("id"); + this.CRITERIA_ID = getInternalColumnByName("criteria_id"); + this.CATEGORY_ID = getInternalColumnByName("category_id"); + this.MIN_AGE = getInternalColumnByName("min_age"); + this.MAX_AGE = getInternalColumnByName("max_age"); + this.PROVISION_PERCENTAGE = getInternalColumnByName("provision_percentage"); + this.LIABILITY_ACCOUNT = getInternalColumnByName("liability_account"); + this.EXPENSE_ACCOUNT = getInternalColumnByName("expense_account"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProvisioningHistory.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProvisioningHistory.java new file mode 100644 index 00000000..1dd34f12 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MProvisioningHistory.java @@ -0,0 +1,35 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MProvisioningHistory extends AbstractTable { + + public final Column ID; + + public final Column JOURNAL_ENTRY_CREATED; + + public final Column CREATED_BY_ID; + + public final Column CREATED_DATE; + + public final Column LAST_MODIFIED_BY_ID; + + public final Column LAST_MODIFIED_DATE; + + public static MProvisioningHistory staticInitialize(DataContext dataContext) { + return new MProvisioningHistory(dataContext); + } + + private MProvisioningHistory(DataContext dataContext) { + super(dataContext, "m_provisioning_history"); + this.ID = getInternalColumnByName("id"); + this.JOURNAL_ENTRY_CREATED = getInternalColumnByName("journal_entry_created"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MRate.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MRate.java new file mode 100644 index 00000000..deff2b76 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MRate.java @@ -0,0 +1,47 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MRate extends AbstractTable { + + public final Column ID; + + public final Column NAME; + + public final Column PERCENTAGE; + + public final Column ACTIVE; + + public final Column PRODUCT_APPLY; + + public final Column CREATED_DATE; + + public final Column CREATED_BY_ID; + + public final Column LAST_MODIFIED_BY_ID; + + public final Column LAST_MODIFIED_DATE; + + public final Column APPROVE_USER; + + public static MRate staticInitialize(DataContext dataContext) { + return new MRate(dataContext); + } + + private MRate(DataContext dataContext) { + super(dataContext, "m_rate"); + this.ID = getInternalColumnByName("id"); + this.NAME = getInternalColumnByName("name"); + this.PERCENTAGE = getInternalColumnByName("percentage"); + this.ACTIVE = getInternalColumnByName("active"); + this.PRODUCT_APPLY = getInternalColumnByName("product_apply"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + this.APPROVE_USER = getInternalColumnByName("approve_user"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MReportMailingJob.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MReportMailingJob.java new file mode 100644 index 00000000..af109823 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MReportMailingJob.java @@ -0,0 +1,89 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MReportMailingJob extends AbstractTable { + + public final Column ID; + + public final Column NAME; + + public final Column DESCRIPTION; + + public final Column START_DATETIME; + + public final Column RECURRENCE; + + public final Column CREATED_DATE; + + public final Column CREATED_BY_ID; + + public final Column LAST_MODIFIED_DATE; + + public final Column LAST_MODIFIED_BY_ID; + + public final Column EMAIL_RECIPIENT; + + public final Column EMAIL_SUBJECT; + + public final Column EMAIL_MESSAGE; + + public final Column EMAIL_ATTACHMENT_FILE_FORMAT; + + public final Column STRETCHY_REPORT_ID; + + public final Column STRETCHY_REPORT_PARAM_MAP; + + public final Column PREVIOUS_RUN_DATETIME; + + public final Column NEXT_RUN_DATETIME; + + public final Column PREVIOUS_RUN_STATUS; + + public final Column PREVIOUS_RUN_ERROR_LOG; + + public final Column PREVIOUS_RUN_ERROR_MESSAGE; + + public final Column NUMBER_OF_RUN; + + public final Column ACTIVE; + + public final Column DELETED; + + public final Column RUN_AS_USER_ID; + + public static MReportMailingJob staticInitialize(DataContext dataContext) { + return new MReportMailingJob(dataContext); + } + + private MReportMailingJob(DataContext dataContext) { + super(dataContext, "m_report_mailing_job"); + this.ID = getInternalColumnByName("id"); + this.NAME = getInternalColumnByName("name"); + this.DESCRIPTION = getInternalColumnByName("description"); + this.START_DATETIME = getInternalColumnByName("start_datetime"); + this.RECURRENCE = getInternalColumnByName("recurrence"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + this.EMAIL_RECIPIENT = getInternalColumnByName("email_recipients"); + this.EMAIL_SUBJECT = getInternalColumnByName("email_subject"); + this.EMAIL_MESSAGE = getInternalColumnByName("email_message"); + this.EMAIL_ATTACHMENT_FILE_FORMAT = getInternalColumnByName("email_attachment_file_format"); + this.STRETCHY_REPORT_ID = getInternalColumnByName("stretchy_report_id"); + this.STRETCHY_REPORT_PARAM_MAP = getInternalColumnByName("stretchy_report_param_map"); + this.PREVIOUS_RUN_DATETIME = getInternalColumnByName("previous_run_datetime"); + this.NEXT_RUN_DATETIME = getInternalColumnByName("next_run_datetime"); + this.PREVIOUS_RUN_STATUS = getInternalColumnByName("previous_run_status"); + this.PREVIOUS_RUN_ERROR_LOG = getInternalColumnByName("previous_run_error_log"); + this.PREVIOUS_RUN_ERROR_MESSAGE = getInternalColumnByName("previous_run_error_message"); + this.NUMBER_OF_RUN = getInternalColumnByName("number_of_runs"); + this.ACTIVE = getInternalColumnByName("is_active"); + this.DELETED = getInternalColumnByName("is_deleted"); + this.RUN_AS_USER_ID = getInternalColumnByName("run_as_userid"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MReportMailingJobConfiguration.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MReportMailingJobConfiguration.java new file mode 100644 index 00000000..bb0dbc70 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MReportMailingJobConfiguration.java @@ -0,0 +1,26 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MReportMailingJobConfiguration extends AbstractTable { + + public final Column ID; + + public final Column NAME; + + public final Column VALUE; + + public static MReportMailingJobConfiguration staticInitialize(DataContext dataContext) { + return new MReportMailingJobConfiguration(dataContext); + } + + private MReportMailingJobConfiguration(DataContext dataContext) { + super(dataContext, "m_report_mailing_job_configuration"); + this.ID = getInternalColumnByName("id"); + this.NAME = getInternalColumnByName("name"); + this.VALUE = getInternalColumnByName("value"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MReportMailingJobRunHistory.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MReportMailingJobRunHistory.java new file mode 100644 index 00000000..e7b9f85c --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MReportMailingJobRunHistory.java @@ -0,0 +1,38 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MReportMailingJobRunHistory extends AbstractTable { + + public final Column ID; + + public final Column JOB_ID; + + public final Column START_DATETIME; + + public final Column END_DATETIME; + + public final Column STATUS; + + public final Column ERROR_MESSAGE; + + public final Column ERROR_LOG; + + public static MReportMailingJobRunHistory staticInitialize(DataContext dataContext) { + return new MReportMailingJobRunHistory(dataContext); + } + + private MReportMailingJobRunHistory(DataContext dataContext) { + super(dataContext, "m_report_mailing_job_run_history"); + this.ID = getInternalColumnByName("id"); + this.JOB_ID = getInternalColumnByName("job_id"); + this.START_DATETIME = getInternalColumnByName("start_datetime"); + this.END_DATETIME = getInternalColumnByName("end_datetime"); + this.STATUS = getInternalColumnByName("status"); + this.ERROR_MESSAGE = getInternalColumnByName("error_message"); + this.ERROR_LOG = getInternalColumnByName("error_log"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MRole.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MRole.java new file mode 100644 index 00000000..5861a46b --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MRole.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MRole extends AbstractTable { + + public final Column ID; + + public final Column NAME; + + public final Column DESCRIPTION; + + public final Column DISABLED; + + public static MRole staticInitialize(DataContext dataContext) { + return new MRole(dataContext); + } + + private MRole(DataContext dataContext) { + super(dataContext, "m_role"); + this.ID = getInternalColumnByName("id"); + this.NAME = getInternalColumnByName("name"); + this.DESCRIPTION = getInternalColumnByName("description"); + this.DISABLED = getInternalColumnByName("is_disabled"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MRolePermission.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MRolePermission.java new file mode 100644 index 00000000..18f87949 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MRolePermission.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MRolePermission extends AbstractTable { + + public final Column ROLE_ID; + + public final Column PERMISSION_ID; + + public static MRolePermission staticInitialize(DataContext dataContext) { + return new MRolePermission(dataContext); + } + + private MRolePermission(DataContext dataContext) { + super(dataContext, "m_role_permission"); + this.ROLE_ID = getInternalColumnByName("role_id"); + this.PERMISSION_ID = getInternalColumnByName("permission_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingAccount.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingAccount.java new file mode 100644 index 00000000..53b8e2e0 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingAccount.java @@ -0,0 +1,203 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MSavingAccount extends AbstractTable { + + public final Column ID; + + public final Column ACCOUNT_NO; + + public final Column EXTERNAL_ID; + + public final Column CLIENT_ID; + + public final Column GROUP_ID; + + public final Column GSIM_ID; + + public final Column PRODUCT_ID; + + public final Column FIELD_OFFICER_ID; + + public final Column STATUS_ENUM; + + public final Column SUB_STATUS_ENUM; + + public final Column ACCOUNT_TYPE_ENUM; + + public final Column DEPOSIT_TYPE_ENUM; + + public final Column SUBMITTED_ON_DATE; + + public final Column SUBMITTED_ON_USER_ID; + + public final Column APPROVED_ON_DATE; + + public final Column APPROVED_ON_USER_ID; + + public final Column REJECTED_ON_DATE; + + public final Column REJECTED_ON_USER_ID; + + public final Column WITHDRAWN_ON_DATE; + + public final Column WITHDRAWN_ON_USER_ID; + + public final Column ACTIVATED_ON_DATE; + + public final Column ACTIVATED_ON_USER_ID; + + public final Column CLOSED_ON_DATE; + + public final Column CLOSED_ON_USER_ID; + + public final Column CURRENCY_CODE; + + public final Column CURRENCY_DIGIT; + + public final Column CURRENCY_MULTIPLE_OF; + + public final Column NOMINAL_ANNUAL_INTEREST_RATE; + + public final Column INTEREST_COMPOUNDING_PERIOD_ENUM; + + public final Column INTEREST_POSTING_PERIOD_ENUM; + + public final Column INTEREST_CALCULATION_TYPE_ENUM; + + public final Column INTEREST_CALCULATION_DAYS_IN_YEAR_TYPE_ENUM; + + public final Column MIN_REQUIRED_OPENING_BALANCE; + + public final Column LOCKIN_PERIOD_FREQUENCY; + + public final Column LOCKIN_PERIOD_FREQUENCY_ENUM; + + public final Column WITHDRAWAL_FEE_FOR_TRANSFER; + + public final Column ALLOW_OVERDRAFT; + + public final Column OVERDRAFT_LIMIT; + + public final Column NOMINAL_ANNUAL_INTEREST_RATE_OVERDRAFT; + + public final Column MIN_OVERDRAFT_FOR_INTEREST_CALCULATION; + + public final Column LOCKEDIN_UNTIL_DATE_DERIVED; + + public final Column TOTAL_DEPOSITS_DERIVED; + + public final Column TOTAL_WITHDRAWAL_DERIVED; + + public final Column TOTAL_WITHDRAWAL_FEE_DERIVED; + + public final Column TOTAL_FEE_CHARGE_DERIVED; + + public final Column TOTAL_PENALTY_CHARGE_DERIVED; + + public final Column TOTAL_ANNUAL_FEE_DERIVED; + + public final Column TOTAL_INTEREST_EARNED_DERIVED; + + public final Column TOTAL_INTEREST_POSTED_DERIVED; + + public final Column TOTAL_OVERDRAFT_INTEREST_DERIVED; + + public final Column TOTAL_WITHHOLD_TAX_DERIVED; + + public final Column ACCOUNT_BALANCE_DERIVED; + + public final Column MIN_REQUIRED_BALANCE; + + public final Column ENFORCE_MIN_REQUIRED_BALANCE; + + public final Column MIN_BALANCE_FOR_INTEREST_CALCULATION; + + public final Column START_INTEREST_CALCULATION_DATE; + + public final Column ON_HOLD_FUND_DERIVED; + + public final Column VERSION; + + public final Column WITHHOLD_TAX; + + public final Column TAX_GROUP_ID; + + public final Column LAST_INTEREST_CALCULATION_DATE; + + public final Column TOTAL_SAVING_AMOUNT_ON_HOLD; + + public static MSavingAccount staticInitialize(DataContext dataContext) { + return new MSavingAccount(dataContext); + } + + private MSavingAccount(DataContext dataContext) { + super(dataContext, "m_savings_account"); + this.ID = getInternalColumnByName("id"); + this.ACCOUNT_NO = getInternalColumnByName("account_no"); + this.EXTERNAL_ID = getInternalColumnByName("external_id"); + this.CLIENT_ID = getInternalColumnByName("client_id"); + this.GROUP_ID = getInternalColumnByName("group_id"); + this.GSIM_ID = getInternalColumnByName("gsim_id"); + this.PRODUCT_ID = getInternalColumnByName("product_id"); + this.FIELD_OFFICER_ID = getInternalColumnByName("field_officer_id"); + this.STATUS_ENUM = getInternalColumnByName("status_enum"); + this.SUB_STATUS_ENUM = getInternalColumnByName("sub_status_enum"); + this.ACCOUNT_TYPE_ENUM = getInternalColumnByName("account_type_enum"); + this.DEPOSIT_TYPE_ENUM = getInternalColumnByName("deposit_type_enum"); + this.SUBMITTED_ON_DATE = getInternalColumnByName("submittedon_date"); + this.SUBMITTED_ON_USER_ID = getInternalColumnByName("submittedon_userid"); + this.APPROVED_ON_DATE = getInternalColumnByName("approvedon_date"); + this.APPROVED_ON_USER_ID = getInternalColumnByName("approvedon_userid"); + this.REJECTED_ON_DATE = getInternalColumnByName("rejectedon_date"); + this.REJECTED_ON_USER_ID = getInternalColumnByName("rejectedon_userid"); + this.WITHDRAWN_ON_DATE = getInternalColumnByName("withdrawnon_date"); + this.WITHDRAWN_ON_USER_ID = getInternalColumnByName("withdrawnon_userid"); + this.ACTIVATED_ON_DATE = getInternalColumnByName("activatedon_date"); + this.ACTIVATED_ON_USER_ID = getInternalColumnByName("activatedon_userid"); + this.CLOSED_ON_DATE = getInternalColumnByName("closedon_date"); + this.CLOSED_ON_USER_ID = getInternalColumnByName("closedon_userid"); + this.CURRENCY_CODE = getInternalColumnByName("currency_code"); + this.CURRENCY_DIGIT = getInternalColumnByName("currency_digits"); + this.CURRENCY_MULTIPLE_OF = getInternalColumnByName("currency_multiplesof"); + this.NOMINAL_ANNUAL_INTEREST_RATE = getInternalColumnByName("nominal_annual_interest_rate"); + this.INTEREST_COMPOUNDING_PERIOD_ENUM = getInternalColumnByName("interest_compounding_period_enum"); + this.INTEREST_POSTING_PERIOD_ENUM = getInternalColumnByName("interest_posting_period_enum"); + this.INTEREST_CALCULATION_TYPE_ENUM = getInternalColumnByName("interest_calculation_type_enum"); + this.INTEREST_CALCULATION_DAYS_IN_YEAR_TYPE_ENUM = getInternalColumnByName("interest_calculation_days_in_year_type_enum"); + this.MIN_REQUIRED_OPENING_BALANCE = getInternalColumnByName("min_required_opening_balance"); + this.LOCKIN_PERIOD_FREQUENCY = getInternalColumnByName("lockin_period_frequency"); + this.LOCKIN_PERIOD_FREQUENCY_ENUM = getInternalColumnByName("lockin_period_frequency_enum"); + this.WITHDRAWAL_FEE_FOR_TRANSFER = getInternalColumnByName("withdrawal_fee_for_transfer"); + this.ALLOW_OVERDRAFT = getInternalColumnByName("allow_overdraft"); + this.OVERDRAFT_LIMIT = getInternalColumnByName("overdraft_limit"); + this.NOMINAL_ANNUAL_INTEREST_RATE_OVERDRAFT = getInternalColumnByName("nominal_annual_interest_rate_overdraft"); + this.MIN_OVERDRAFT_FOR_INTEREST_CALCULATION = getInternalColumnByName("min_overdraft_for_interest_calculation"); + this.LOCKEDIN_UNTIL_DATE_DERIVED = getInternalColumnByName("lockedin_until_date_derived"); + this.TOTAL_DEPOSITS_DERIVED = getInternalColumnByName("total_deposits_derived"); + this.TOTAL_WITHDRAWAL_DERIVED = getInternalColumnByName("total_withdrawals_derived"); + this.TOTAL_WITHDRAWAL_FEE_DERIVED = getInternalColumnByName("total_withdrawal_fees_derived"); + this.TOTAL_FEE_CHARGE_DERIVED = getInternalColumnByName("total_fees_charge_derived"); + this.TOTAL_PENALTY_CHARGE_DERIVED = getInternalColumnByName("total_penalty_charge_derived"); + this.TOTAL_ANNUAL_FEE_DERIVED = getInternalColumnByName("total_annual_fees_derived"); + this.TOTAL_INTEREST_EARNED_DERIVED = getInternalColumnByName("total_interest_earned_derived"); + this.TOTAL_INTEREST_POSTED_DERIVED = getInternalColumnByName("total_interest_posted_derived"); + this.TOTAL_OVERDRAFT_INTEREST_DERIVED = getInternalColumnByName("total_overdraft_interest_derived"); + this.TOTAL_WITHHOLD_TAX_DERIVED = getInternalColumnByName("total_withhold_tax_derived"); + this.ACCOUNT_BALANCE_DERIVED = getInternalColumnByName("account_balance_derived"); + this.MIN_REQUIRED_BALANCE = getInternalColumnByName("min_required_balance"); + this.ENFORCE_MIN_REQUIRED_BALANCE = getInternalColumnByName("enforce_min_required_balance"); + this.MIN_BALANCE_FOR_INTEREST_CALCULATION = getInternalColumnByName("min_balance_for_interest_calculation"); + this.START_INTEREST_CALCULATION_DATE = getInternalColumnByName("start_interest_calculation_date"); + this.ON_HOLD_FUND_DERIVED = getInternalColumnByName("on_hold_funds_derived"); + this.VERSION = getInternalColumnByName("version"); + this.WITHHOLD_TAX = getInternalColumnByName("withhold_tax"); + this.TAX_GROUP_ID = getInternalColumnByName("tax_group_id"); + this.LAST_INTEREST_CALCULATION_DATE = getInternalColumnByName("last_interest_calculation_date"); + this.TOTAL_SAVING_AMOUNT_ON_HOLD = getInternalColumnByName("total_savings_amount_on_hold"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingAccountCharge.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingAccountCharge.java new file mode 100644 index 00000000..549c5ba7 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingAccountCharge.java @@ -0,0 +1,80 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MSavingAccountCharge extends AbstractTable { + + public final Column ID; + + public final Column SAVING_ACCOUNT_ID; + + public final Column CHARGE_ID; + + public final Column PENALTY; + + public final Column CHARGE_TIME_ENUM; + + public final Column CHARGE_DUE_DATE; + + public final Column FEE_ON_MONTH; + + public final Column FEE_ON_DAY; + + public final Column FEE_INTERVAL; + + public final Column CHARGE_CALCULATION_ENUM; + + public final Column CALCULATION_PERCENTAGE; + + public final Column CALCULATION_ON_AMOUNT; + + public final Column AMOUNT; + + public final Column AMOUNT_PAID_DERIVED; + + public final Column AMOUNT_WAIVED_DERIVED; + + public final Column AMOUNT_WRITTEN_OFF_DERIVED; + + public final Column AMOUNT_OUTSTANDING_DERIVED; + + public final Column PAID_DERIVED; + + public final Column WAIVED; + + public final Column ACTIVE; + + public final Column INACTIVATED_ON_DATE; + + public static MSavingAccountCharge staticInitialize(DataContext dataContext) { + return new MSavingAccountCharge(dataContext); + } + + private MSavingAccountCharge(DataContext dataContext) { + super(dataContext, "m_savings_account_charge"); + this.ID = getInternalColumnByName("id"); + this.SAVING_ACCOUNT_ID = getInternalColumnByName("savings_account_id"); + this.CHARGE_ID = getInternalColumnByName("charge_id"); + this.PENALTY = getInternalColumnByName("is_penalty"); + this.CHARGE_TIME_ENUM = getInternalColumnByName("charge_time_enum"); + this.CHARGE_DUE_DATE = getInternalColumnByName("charge_due_date"); + this.FEE_ON_MONTH = getInternalColumnByName("fee_on_month"); + this.FEE_ON_DAY = getInternalColumnByName("fee_on_day"); + this.FEE_INTERVAL = getInternalColumnByName("fee_interval"); + this.CHARGE_CALCULATION_ENUM = getInternalColumnByName("charge_calculation_enum"); + this.CALCULATION_PERCENTAGE = getInternalColumnByName("calculation_percentage"); + this.CALCULATION_ON_AMOUNT = getInternalColumnByName("calculation_on_amount"); + this.AMOUNT = getInternalColumnByName("amount"); + this.AMOUNT_PAID_DERIVED = getInternalColumnByName("amount_paid_derived"); + this.AMOUNT_WAIVED_DERIVED = getInternalColumnByName("amount_waived_derived"); + this.AMOUNT_WRITTEN_OFF_DERIVED = getInternalColumnByName("amount_writtenoff_derived"); + this.AMOUNT_OUTSTANDING_DERIVED = getInternalColumnByName("amount_outstanding_derived"); + this.PAID_DERIVED = getInternalColumnByName("is_paid_derived"); + this.WAIVED = getInternalColumnByName("waived"); + this.ACTIVE = getInternalColumnByName("is_active"); + this.INACTIVATED_ON_DATE = getInternalColumnByName("inactivated_on_date"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingAccountChargePaidBy.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingAccountChargePaidBy.java new file mode 100644 index 00000000..9be50a6b --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingAccountChargePaidBy.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MSavingAccountChargePaidBy extends AbstractTable { + + public final Column ID; + + public final Column SAVING_ACCOUNT_TRANSACTION_ID; + + public final Column SAVING_ACCOUNT_CHARGE_ID; + + public final Column AMOUNT; + + public static MSavingAccountChargePaidBy staticInitialize(DataContext dataContext) { + return new MSavingAccountChargePaidBy(dataContext); + } + + private MSavingAccountChargePaidBy(DataContext dataContext) { + super(dataContext, "m_savings_account_charge_paid_by"); + this.ID = getInternalColumnByName("id"); + this.SAVING_ACCOUNT_TRANSACTION_ID = getInternalColumnByName("savings_account_transaction_id"); + this.SAVING_ACCOUNT_CHARGE_ID = getInternalColumnByName("savings_account_charge_id"); + this.AMOUNT = getInternalColumnByName("amount"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingAccountInterestRateChart.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingAccountInterestRateChart.java new file mode 100644 index 00000000..eaf8f2e8 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingAccountInterestRateChart.java @@ -0,0 +1,38 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MSavingAccountInterestRateChart extends AbstractTable { + + public final Column ID; + + public final Column SAVING_ACCOUNT_ID; + + public final Column NAME; + + public final Column DESCRIPTION; + + public final Column FROM_DATE; + + public final Column END_DATE; + + public final Column PRIMARY_GROUPING_BY_AMOUNT; + + public static MSavingAccountInterestRateChart staticInitialize(DataContext dataContext) { + return new MSavingAccountInterestRateChart(dataContext); + } + + private MSavingAccountInterestRateChart(DataContext dataContext) { + super(dataContext, "m_savings_account_interest_rate_chart"); + this.ID = getInternalColumnByName("id"); + this.SAVING_ACCOUNT_ID = getInternalColumnByName("savings_account_id"); + this.NAME = getInternalColumnByName("name"); + this.DESCRIPTION = getInternalColumnByName("description"); + this.FROM_DATE = getInternalColumnByName("from_date"); + this.END_DATE = getInternalColumnByName("end_date"); + this.PRIMARY_GROUPING_BY_AMOUNT = getInternalColumnByName("is_primary_grouping_by_amount"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingAccountInterestRateSlab.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingAccountInterestRateSlab.java new file mode 100644 index 00000000..bffd88ab --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingAccountInterestRateSlab.java @@ -0,0 +1,47 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MSavingAccountInterestRateSlab extends AbstractTable { + + public final Column ID; + + public final Column DESCRIPTION; + + public final Column SAVING_ACCOUNT_INTEREST_RATE_CHART_ID; + + public final Column PERIOD_TYPE_ENUM; + + public final Column FROM_PERIOD; + + public final Column TO_PERIOD; + + public final Column AMOUNT_RANGE_FROM; + + public final Column AMOUNT_RANGE_TO; + + public final Column ANNUAL_INTEREST_RATE; + + public final Column CURRENCY_CODE; + + public static MSavingAccountInterestRateSlab staticInitialize(DataContext dataContext) { + return new MSavingAccountInterestRateSlab(dataContext); + } + + private MSavingAccountInterestRateSlab(DataContext dataContext) { + super(dataContext, "m_savings_account_interest_rate_slab"); + this.ID = getInternalColumnByName("id"); + this.DESCRIPTION = getInternalColumnByName("description"); + this.SAVING_ACCOUNT_INTEREST_RATE_CHART_ID = getInternalColumnByName("savings_account_interest_rate_chart_id"); + this.PERIOD_TYPE_ENUM = getInternalColumnByName("period_type_enum"); + this.FROM_PERIOD = getInternalColumnByName("from_period"); + this.TO_PERIOD = getInternalColumnByName("to_period"); + this.AMOUNT_RANGE_FROM = getInternalColumnByName("amount_range_from"); + this.AMOUNT_RANGE_TO = getInternalColumnByName("amount_range_to"); + this.ANNUAL_INTEREST_RATE = getInternalColumnByName("annual_interest_rate"); + this.CURRENCY_CODE = getInternalColumnByName("currency_code"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingAccountTransaction.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingAccountTransaction.java new file mode 100644 index 00000000..b346ce0b --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingAccountTransaction.java @@ -0,0 +1,71 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MSavingAccountTransaction extends AbstractTable { + + public final Column ID; + + public final Column SAVING_ACCOUNT_ID; + + public final Column OFFICE_ID; + + public final Column PAYMENT_DETAIL_ID; + + public final Column TRANSACTION_TYPE_ENUM; + + public final Column REVERSED; + + public final Column TRANSACTION_DATE; + + public final Column AMOUNT; + + public final Column OVERDRAFT_AMOUNT_DERIVED; + + public final Column BALANCE_END_DATE_DERIVED; + + public final Column BALANCE_NUMBER_OF_DAY_DERIVED; + + public final Column RUNNING_BALANCE_DERIVED; + + public final Column CUMULATIVE_BALANCE_DERIVED; + + public final Column CREATED_DATE; + + public final Column APP_USER_ID; + + public final Column MANUAL; + + public final Column RELEASE_ID_OF_HOLD_AMOUNT; + + public final Column LOAN_DISBURSEMENT; + + public static MSavingAccountTransaction staticInitialize(DataContext dataContext) { + return new MSavingAccountTransaction(dataContext); + } + + private MSavingAccountTransaction(DataContext dataContext) { + super(dataContext, "m_savings_account_transaction"); + this.ID = getInternalColumnByName("id"); + this.SAVING_ACCOUNT_ID = getInternalColumnByName("savings_account_id"); + this.OFFICE_ID = getInternalColumnByName("office_id"); + this.PAYMENT_DETAIL_ID = getInternalColumnByName("payment_detail_id"); + this.TRANSACTION_TYPE_ENUM = getInternalColumnByName("transaction_type_enum"); + this.REVERSED = getInternalColumnByName("is_reversed"); + this.TRANSACTION_DATE = getInternalColumnByName("transaction_date"); + this.AMOUNT = getInternalColumnByName("amount"); + this.OVERDRAFT_AMOUNT_DERIVED = getInternalColumnByName("overdraft_amount_derived"); + this.BALANCE_END_DATE_DERIVED = getInternalColumnByName("balance_end_date_derived"); + this.BALANCE_NUMBER_OF_DAY_DERIVED = getInternalColumnByName("balance_number_of_days_derived"); + this.RUNNING_BALANCE_DERIVED = getInternalColumnByName("running_balance_derived"); + this.CUMULATIVE_BALANCE_DERIVED = getInternalColumnByName("cumulative_balance_derived"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.APP_USER_ID = getInternalColumnByName("appuser_id"); + this.MANUAL = getInternalColumnByName("is_manual"); + this.RELEASE_ID_OF_HOLD_AMOUNT = getInternalColumnByName("release_id_of_hold_amount"); + this.LOAN_DISBURSEMENT = getInternalColumnByName("is_loan_disbursement"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingAccountTransactionTaxDetail.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingAccountTransactionTaxDetail.java new file mode 100644 index 00000000..20c20e79 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingAccountTransactionTaxDetail.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MSavingAccountTransactionTaxDetail extends AbstractTable { + + public final Column ID; + + public final Column SAVING_TRANSACTION_ID; + + public final Column TAX_COMPONENT_ID; + + public final Column AMOUNT; + + public static MSavingAccountTransactionTaxDetail staticInitialize(DataContext dataContext) { + return new MSavingAccountTransactionTaxDetail(dataContext); + } + + private MSavingAccountTransactionTaxDetail(DataContext dataContext) { + super(dataContext, "m_savings_account_transaction_tax_details"); + this.ID = getInternalColumnByName("id"); + this.SAVING_TRANSACTION_ID = getInternalColumnByName("savings_transaction_id"); + this.TAX_COMPONENT_ID = getInternalColumnByName("tax_component_id"); + this.AMOUNT = getInternalColumnByName("amount"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingInterestIncentive.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingInterestIncentive.java new file mode 100644 index 00000000..4b8b0344 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingInterestIncentive.java @@ -0,0 +1,41 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MSavingInterestIncentive extends AbstractTable { + + public final Column ID; + + public final Column DEPOSIT_ACCOUNT_INTEREST_RATE_SLAB_ID; + + public final Column ENTRY_TYPE; + + public final Column ATTRIBUTE_NAME; + + public final Column CONDITION_TYPE; + + public final Column ATTRIBUTE_VALUE; + + public final Column INCENTIVE_TYPE; + + public final Column AMOUNT; + + public static MSavingInterestIncentive staticInitialize(DataContext dataContext) { + return new MSavingInterestIncentive(dataContext); + } + + private MSavingInterestIncentive(DataContext dataContext) { + super(dataContext, "m_savings_interest_incentives"); + this.ID = getInternalColumnByName("id"); + this.DEPOSIT_ACCOUNT_INTEREST_RATE_SLAB_ID = getInternalColumnByName("deposit_account_interest_rate_slab_id"); + this.ENTRY_TYPE = getInternalColumnByName("entiry_type"); + this.ATTRIBUTE_NAME = getInternalColumnByName("attribute_name"); + this.CONDITION_TYPE = getInternalColumnByName("condition_type"); + this.ATTRIBUTE_VALUE = getInternalColumnByName("attribute_value"); + this.INCENTIVE_TYPE = getInternalColumnByName("incentive_type"); + this.AMOUNT = getInternalColumnByName("amount"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingOfficerAssignmentHistory.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingOfficerAssignmentHistory.java new file mode 100644 index 00000000..de6f5db7 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingOfficerAssignmentHistory.java @@ -0,0 +1,44 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MSavingOfficerAssignmentHistory extends AbstractTable { + + public final Column ID; + + public final Column ACCOUNT_ID; + + public final Column SAVING_OFFICER_ID; + + public final Column START_DATE; + + public final Column END_DATE; + + public final Column CREATED_BY_ID; + + public final Column CREATED_DATE; + + public final Column LAST_MODIFIED_DATE; + + public final Column LAST_MODIFIED_BY_ID; + + public static MSavingOfficerAssignmentHistory staticInitialize(DataContext dataContext) { + return new MSavingOfficerAssignmentHistory(dataContext); + } + + private MSavingOfficerAssignmentHistory(DataContext dataContext) { + super(dataContext, "m_savings_officer_assignment_history"); + this.ID = getInternalColumnByName("id"); + this.ACCOUNT_ID = getInternalColumnByName("account_id"); + this.SAVING_OFFICER_ID = getInternalColumnByName("savings_officer_id"); + this.START_DATE = getInternalColumnByName("start_date"); + this.END_DATE = getInternalColumnByName("end_date"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingProduct.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingProduct.java new file mode 100644 index 00000000..07dacf20 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingProduct.java @@ -0,0 +1,116 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MSavingProduct extends AbstractTable { + + public final Column ID; + + public final Column NAME; + + public final Column SHORT_NAME; + + public final Column DESCRIPTION; + + public final Column DEPOSIT_TYPE_ENUM; + + public final Column CURRENCY_CODE; + + public final Column CURRENCY_DIGIT; + + public final Column CURRENCY_MULTIPLE_OF; + + public final Column NOMINAL_ANNUAL_INTEREST_RATE; + + public final Column INTEREST_COMPOUNDING_PERIOD_ENUM; + + public final Column INTEREST_POSTING_PERIOD_ENUM; + + public final Column INTEREST_CALCULATION_TYPE_ENUM; + + public final Column INTEREST_CALCULATION_DAY_IN_YEAR_TYPE_ENUM; + + public final Column MIN_REQUIRED_OPENING_BALANCE; + + public final Column LOCKIN_PERIOD_FREQUENCY; + + public final Column LOCKIN_PERIOD_FREQUENCY_ENUM; + + public final Column ACCOUNTING_TYPE; + + public final Column WITHDRAWAL_FEE_AMOUNT; + + public final Column WITHDRAWAL_FEE_TYPE_ENUM; + + public final Column WITHDRAWAL_FEE_FOR_TRANSFER; + + public final Column ALLOW_OVERDRAFT; + + public final Column OVERDRAFT_LIMIT; + + public final Column NOMINAL_ANNUAL_INTEREST_RATE_OVERDRAFT; + + public final Column MIN_OVERDRAFT_FOR_INTEREST_CALCULATION; + + public final Column MIN_REQUIRED_BALANCE; + + public final Column ENFORCE_MIN_REQUIRED_BALANCE; + + public final Column MIN_BALANCE_FOR_INTEREST_CALCULATION; + + public final Column WITHHOLD_TAX; + + public final Column TAX_GROUP_ID; + + public final Column DORMANCY_TRACKING_ACTIVE; + + public final Column DAY_TO_INACTIVE; + + public final Column DAY_TO_DORMANCY; + + public final Column DAY_TO_ESCHEAT; + + public static MSavingProduct staticInitialize(DataContext dataContext) { + return new MSavingProduct(dataContext); + } + + private MSavingProduct(DataContext dataContext) { + super(dataContext, "m_savings_product"); + this.ID = getInternalColumnByName("id"); + this.NAME = getInternalColumnByName("name"); + this.SHORT_NAME = getInternalColumnByName("short_name"); + this.DESCRIPTION = getInternalColumnByName("description"); + this.DEPOSIT_TYPE_ENUM = getInternalColumnByName("deposit_type_enum"); + this.CURRENCY_CODE = getInternalColumnByName("currency_code"); + this.CURRENCY_DIGIT = getInternalColumnByName("currency_digits"); + this.CURRENCY_MULTIPLE_OF = getInternalColumnByName("currency_multiplesof"); + this.NOMINAL_ANNUAL_INTEREST_RATE = getInternalColumnByName("nominal_annual_interest_rate"); + this.INTEREST_COMPOUNDING_PERIOD_ENUM = getInternalColumnByName("interest_compounding_period_enum"); + this.INTEREST_POSTING_PERIOD_ENUM = getInternalColumnByName("interest_posting_period_enum"); + this.INTEREST_CALCULATION_TYPE_ENUM = getInternalColumnByName("interest_calculation_type_enum"); + this.INTEREST_CALCULATION_DAY_IN_YEAR_TYPE_ENUM = getInternalColumnByName("interest_calculation_days_in_year_type_enum"); + this.MIN_REQUIRED_OPENING_BALANCE = getInternalColumnByName("min_required_opening_balance"); + this.LOCKIN_PERIOD_FREQUENCY = getInternalColumnByName("lockin_period_frequency"); + this.LOCKIN_PERIOD_FREQUENCY_ENUM = getInternalColumnByName("lockin_period_frequency_enum"); + this.ACCOUNTING_TYPE = getInternalColumnByName("accounting_type"); + this.WITHDRAWAL_FEE_AMOUNT = getInternalColumnByName("withdrawal_fee_amount"); + this.WITHDRAWAL_FEE_TYPE_ENUM = getInternalColumnByName("withdrawal_fee_type_enum"); + this.WITHDRAWAL_FEE_FOR_TRANSFER = getInternalColumnByName("withdrawal_fee_for_transfer"); + this.ALLOW_OVERDRAFT = getInternalColumnByName("allow_overdraft"); + this.OVERDRAFT_LIMIT = getInternalColumnByName("overdraft_limit"); + this.NOMINAL_ANNUAL_INTEREST_RATE_OVERDRAFT = getInternalColumnByName("nominal_annual_interest_rate_overdraft"); + this.MIN_OVERDRAFT_FOR_INTEREST_CALCULATION = getInternalColumnByName("min_overdraft_for_interest_calculation"); + this.MIN_REQUIRED_BALANCE = getInternalColumnByName("min_required_balance"); + this.ENFORCE_MIN_REQUIRED_BALANCE = getInternalColumnByName("enforce_min_required_balance"); + this.MIN_BALANCE_FOR_INTEREST_CALCULATION = getInternalColumnByName("min_balance_for_interest_calculation"); + this.WITHHOLD_TAX = getInternalColumnByName("withhold_tax"); + this.TAX_GROUP_ID = getInternalColumnByName("tax_group_id"); + this.DORMANCY_TRACKING_ACTIVE = getInternalColumnByName("is_dormancy_tracking_active"); + this.DAY_TO_INACTIVE = getInternalColumnByName("days_to_inactive"); + this.DAY_TO_DORMANCY = getInternalColumnByName("days_to_dormancy"); + this.DAY_TO_ESCHEAT = getInternalColumnByName("days_to_escheat"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingProductCharge.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingProductCharge.java new file mode 100644 index 00000000..295efc9d --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSavingProductCharge.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MSavingProductCharge extends AbstractTable { + + public final Column SAVING_PRODUCT_ID; + + public final Column CHARGE_ID; + + public static MSavingProductCharge staticInitialize(DataContext dataContext) { + return new MSavingProductCharge(dataContext); + } + + private MSavingProductCharge(DataContext dataContext) { + super(dataContext, "m_savings_product_charge"); + this.SAVING_PRODUCT_ID = getInternalColumnByName("savings_product_id"); + this.CHARGE_ID = getInternalColumnByName("charge_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSelfServiceBeneficiaryTpt.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSelfServiceBeneficiaryTpt.java new file mode 100644 index 00000000..7a0eab41 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSelfServiceBeneficiaryTpt.java @@ -0,0 +1,44 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MSelfServiceBeneficiaryTpt extends AbstractTable { + + public final Column ID; + + public final Column APP_USER_ID; + + public final Column NAME; + + public final Column OFFICE_ID; + + public final Column CLIENT_ID; + + public final Column ACCOUNT_ID; + + public final Column ACCOUNT_TYPE; + + public final Column TRANSFER_LIMIT; + + public final Column ACTIVE; + + public static MSelfServiceBeneficiaryTpt staticInitialize(DataContext dataContext) { + return new MSelfServiceBeneficiaryTpt(dataContext); + } + + private MSelfServiceBeneficiaryTpt(DataContext dataContext) { + super(dataContext, "m_selfservice_beneficiaries_tpt"); + this.ID = getInternalColumnByName("id"); + this.APP_USER_ID = getInternalColumnByName("app_user_id"); + this.NAME = getInternalColumnByName("name"); + this.OFFICE_ID = getInternalColumnByName("office_id"); + this.CLIENT_ID = getInternalColumnByName("client_id"); + this.ACCOUNT_ID = getInternalColumnByName("account_id"); + this.ACCOUNT_TYPE = getInternalColumnByName("account_type"); + this.TRANSFER_LIMIT = getInternalColumnByName("transfer_limit"); + this.ACTIVE = getInternalColumnByName("is_active"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSelfServiceUserClientMapping.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSelfServiceUserClientMapping.java new file mode 100644 index 00000000..5b0a6910 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSelfServiceUserClientMapping.java @@ -0,0 +1,26 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MSelfServiceUserClientMapping extends AbstractTable { + + public final Column ID; + + public final Column APP_USER_ID; + + public final Column CLIENT_ID; + + public static MSelfServiceUserClientMapping staticInitialize(DataContext dataContext) { + return new MSelfServiceUserClientMapping(dataContext); + } + + private MSelfServiceUserClientMapping(DataContext dataContext) { + super(dataContext, "m_selfservice_user_client_mapping"); + this.ID = getInternalColumnByName("id"); + this.APP_USER_ID = getInternalColumnByName("appuser_id"); + this.CLIENT_ID = getInternalColumnByName("client_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareAccount.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareAccount.java new file mode 100644 index 00000000..ca7ba297 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareAccount.java @@ -0,0 +1,107 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MShareAccount extends AbstractTable { + + public final Column ID; + + public final Column ACCOUNT_NO; + + public final Column PRODUCT_ID; + + public final Column CLIENT_ID; + + public final Column EXTERNAL_ID; + + public final Column STATUS_ENUM; + + public final Column TOTAL_APPROVED_SHARE; + + public final Column TOTAL_PENDING_SHARE; + + public final Column SUBMITTED_DATE; + + public final Column SUBMITTED_USER_ID; + + public final Column APPROVED_DATE; + + public final Column APPROVED_USER_ID; + + public final Column REJECTED_DATE; + + public final Column REJECTED_USER_ID; + + public final Column ACTIVATED_DATE; + + public final Column ACTIVATED_USER_ID; + + public final Column CLOSED_DATE; + + public final Column CLOSED_USER_ID; + + public final Column CURRENCY_CODE; + + public final Column CURRENCY_DIGIT; + + public final Column CURRENCY_MULTIPLE_OF; + + public final Column SAVING_ACCOUNT_ID; + + public final Column MINIMUM_ACTIVE_PERIOD_FREQUENCY; + + public final Column MINIMUM_ACTIVE_PERIOD_FREQUENCY_ENUM; + + public final Column LOCKIN_PERIOD_FREQUENCY; + + public final Column LOCKIN_PERIOD_FREQUENCY_ENUM; + + public final Column ALLOW_DIVIDENDS_INACTIVE_CLIENT; + + public final Column CREATED_DATE; + + public final Column LAST_MODIFIED_BY_ID; + + public final Column LAST_MODIFIED_DATE; + + public static MShareAccount staticInitialize(DataContext dataContext) { + return new MShareAccount(dataContext); + } + + private MShareAccount(DataContext dataContext) { + super(dataContext, "m_share_account"); + this.ID = getInternalColumnByName("id"); + this.ACCOUNT_NO = getInternalColumnByName("account_no"); + this.PRODUCT_ID = getInternalColumnByName("product_id"); + this.CLIENT_ID = getInternalColumnByName("client_id"); + this.EXTERNAL_ID = getInternalColumnByName("external_id"); + this.STATUS_ENUM = getInternalColumnByName("status_enum"); + this.TOTAL_APPROVED_SHARE = getInternalColumnByName("total_approved_shares"); + this.TOTAL_PENDING_SHARE = getInternalColumnByName("total_pending_shares"); + this.SUBMITTED_DATE = getInternalColumnByName("submitted_date"); + this.SUBMITTED_USER_ID = getInternalColumnByName("submitted_userid"); + this.APPROVED_DATE = getInternalColumnByName("approved_date"); + this.APPROVED_USER_ID = getInternalColumnByName("approved_userid"); + this.REJECTED_DATE = getInternalColumnByName("rejected_date"); + this.REJECTED_USER_ID = getInternalColumnByName("rejected_userid"); + this.ACTIVATED_DATE = getInternalColumnByName("activated_date"); + this.ACTIVATED_USER_ID = getInternalColumnByName("activated_userid"); + this.CLOSED_DATE = getInternalColumnByName("closed_date"); + this.CLOSED_USER_ID = getInternalColumnByName("closed_userid"); + this.CURRENCY_CODE = getInternalColumnByName("currency_code"); + this.CURRENCY_DIGIT = getInternalColumnByName("currency_digits"); + this.CURRENCY_MULTIPLE_OF = getInternalColumnByName("currency_multiplesof"); + this.SAVING_ACCOUNT_ID = getInternalColumnByName("savings_account_id"); + this.MINIMUM_ACTIVE_PERIOD_FREQUENCY = getInternalColumnByName("minimum_active_period_frequency"); + this.MINIMUM_ACTIVE_PERIOD_FREQUENCY_ENUM = getInternalColumnByName("minimum_active_period_frequency_enum"); + this.LOCKIN_PERIOD_FREQUENCY = getInternalColumnByName("lockin_period_frequency"); + this.LOCKIN_PERIOD_FREQUENCY_ENUM = getInternalColumnByName("lockin_period_frequency_enum"); + this.ALLOW_DIVIDENDS_INACTIVE_CLIENT = getInternalColumnByName("allow_dividends_inactive_clients"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareAccountCharge.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareAccountCharge.java new file mode 100644 index 00000000..797d29a0 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareAccountCharge.java @@ -0,0 +1,74 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MShareAccountCharge extends AbstractTable { + + public final Column ID; + + public final Column ACCOUNT_ID; + + public final Column CHARGE_ID; + + public final Column CHARGE_TIME_ENUM; + + public final Column CHARGE_CALCULATION_ENUM; + + public final Column CHARGE_PAYMENT_MODE_ENUM; + + public final Column CALCULATION_PERCENTAGE; + + public final Column CALCULATION_ON_AMOUNT; + + public final Column CHARGE_AMOUNT_OR_PERCENTAGE; + + public final Column AMOUNT; + + public final Column AMOUNT_PAID_DERIVED; + + public final Column AMOUNT_WAIVED_DERIVED; + + public final Column AMOUNT_WRITTEN_OFF_DERIVED; + + public final Column AMOUNT_OUTSTANDING_DERIVED; + + public final Column PAID_DERIVED; + + public final Column WAIVED; + + public final Column MIN_CAP; + + public final Column MAX_CAP; + + public final Column ACTIVE; + + public static MShareAccountCharge staticInitialize(DataContext dataContext) { + return new MShareAccountCharge(dataContext); + } + + private MShareAccountCharge(DataContext dataContext) { + super(dataContext, "m_share_account_charge"); + this.ID = getInternalColumnByName("id"); + this.ACCOUNT_ID = getInternalColumnByName("account_id"); + this.CHARGE_ID = getInternalColumnByName("charge_id"); + this.CHARGE_TIME_ENUM = getInternalColumnByName("charge_time_enum"); + this.CHARGE_CALCULATION_ENUM = getInternalColumnByName("charge_calculation_enum"); + this.CHARGE_PAYMENT_MODE_ENUM = getInternalColumnByName("charge_payment_mode_enum"); + this.CALCULATION_PERCENTAGE = getInternalColumnByName("calculation_percentage"); + this.CALCULATION_ON_AMOUNT = getInternalColumnByName("calculation_on_amount"); + this.CHARGE_AMOUNT_OR_PERCENTAGE = getInternalColumnByName("charge_amount_or_percentage"); + this.AMOUNT = getInternalColumnByName("amount"); + this.AMOUNT_PAID_DERIVED = getInternalColumnByName("amount_paid_derived"); + this.AMOUNT_WAIVED_DERIVED = getInternalColumnByName("amount_waived_derived"); + this.AMOUNT_WRITTEN_OFF_DERIVED = getInternalColumnByName("amount_writtenoff_derived"); + this.AMOUNT_OUTSTANDING_DERIVED = getInternalColumnByName("amount_outstanding_derived"); + this.PAID_DERIVED = getInternalColumnByName("is_paid_derived"); + this.WAIVED = getInternalColumnByName("waived"); + this.MIN_CAP = getInternalColumnByName("min_cap"); + this.MAX_CAP = getInternalColumnByName("max_cap"); + this.ACTIVE = getInternalColumnByName("is_active"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareAccountChargePaidBy.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareAccountChargePaidBy.java new file mode 100644 index 00000000..2e1b01f1 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareAccountChargePaidBy.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MShareAccountChargePaidBy extends AbstractTable { + + public final Column ID; + + public final Column SHARE_TRANSACTION_ID; + + public final Column CHARGE_TRANSACTION_ID; + + public final Column AMOUNT; + + public static MShareAccountChargePaidBy staticInitialize(DataContext dataContext) { + return new MShareAccountChargePaidBy(dataContext); + } + + private MShareAccountChargePaidBy(DataContext dataContext) { + super(dataContext, "m_share_account_charge_paid_by"); + this.ID = getInternalColumnByName("id"); + this.SHARE_TRANSACTION_ID = getInternalColumnByName("share_transaction_id"); + this.CHARGE_TRANSACTION_ID = getInternalColumnByName("charge_transaction_id"); + this.AMOUNT = getInternalColumnByName("amount"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareAccountDividendDetail.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareAccountDividendDetail.java new file mode 100644 index 00000000..4fa8dffb --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareAccountDividendDetail.java @@ -0,0 +1,35 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MShareAccountDividendDetail extends AbstractTable { + + public final Column ID; + + public final Column DIVIDEND_PAY_OUT_ID; + + public final Column ACCOUNT_ID; + + public final Column AMOUNT; + + public final Column STATUS; + + public final Column SAVING_TRANSACTION_ID; + + public static MShareAccountDividendDetail staticInitialize(DataContext dataContext) { + return new MShareAccountDividendDetail(dataContext); + } + + private MShareAccountDividendDetail(DataContext dataContext) { + super(dataContext, "m_share_account_dividend_details"); + this.ID = getInternalColumnByName("id"); + this.AMOUNT = getInternalColumnByName("amount"); + this.DIVIDEND_PAY_OUT_ID = getInternalColumnByName("dividend_pay_out_id"); + this.ACCOUNT_ID = getInternalColumnByName("account_id"); + this.STATUS = getInternalColumnByName("status"); + this.SAVING_TRANSACTION_ID = getInternalColumnByName("savings_transaction_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareAccountTransaction.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareAccountTransaction.java new file mode 100644 index 00000000..b293d466 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareAccountTransaction.java @@ -0,0 +1,50 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MShareAccountTransaction extends AbstractTable { + + public final Column ID; + + public final Column ACCOUNT_ID; + + public final Column TRANSACTION_DATE; + + public final Column TOTAL_SHARE; + + public final Column UNIT_PRICE; + + public final Column AMOUNT; + + public final Column CHARGE_AMOUNT; + + public final Column AMOUNT_PAID; + + public final Column STATUS_ENUM; + + public final Column TYPE_ENUM; + + public final Column ACTIVE; + + public static MShareAccountTransaction staticInitialize(DataContext dataContext) { + return new MShareAccountTransaction(dataContext); + } + + private MShareAccountTransaction(DataContext dataContext) { + super(dataContext, "m_share_account_transactions"); + this.ID = getInternalColumnByName("id"); + this.ACCOUNT_ID = getInternalColumnByName("account_id"); + this.TRANSACTION_DATE = getInternalColumnByName("transaction_date"); + this.TOTAL_SHARE = getInternalColumnByName("total_shares"); + this.UNIT_PRICE = getInternalColumnByName("unit_price"); + this.AMOUNT = getInternalColumnByName("amount"); + this.CHARGE_AMOUNT = getInternalColumnByName("charge_amount"); + this.AMOUNT_PAID = getInternalColumnByName("amount_paid"); + this.STATUS_ENUM = getInternalColumnByName("status_enum"); + this.TYPE_ENUM = getInternalColumnByName("type_enum"); + this.ACTIVE = getInternalColumnByName("is_active"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareProduct.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareProduct.java new file mode 100644 index 00000000..d6da0491 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareProduct.java @@ -0,0 +1,101 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MShareProduct extends AbstractTable { + + public final Column ID; + + public final Column NAME; + + public final Column SHORT_NAME; + + public final Column EXTERNAL_ID; + + public final Column DESCRIPTION; + + public final Column START_DATE; + + public final Column END_DATE; + + public final Column CURRENCY_CODE; + + public final Column CURRENCY_DIGIT; + + public final Column CURRENCY_MULTIPLE_OF; + + public final Column TOTAL_SHARE; + + public final Column ISSUED_SHARE; + + public final Column TOTAL_SUBSCRIBED_SHARE; + + public final Column UNIT_PRICE; + + public final Column CAPITAL_AMOUNT; + + public final Column MINIMUM_CLIENT_SHARE; + + public final Column NOMINAL_CLIENT_SHARE; + + public final Column MAXIMUM_CLIENT_SHARE; + + public final Column MINIMUM_ACTIVE_PERIOD_FREQUENCY; + + public final Column MINIMUM_ACTIVE_PERIOD_FREQUENCY_ENUM; + + public final Column LOCKIN_PERIOD_FREQUENCY; + + public final Column LOCKIN_PERIOD_FREQUENCY_ENUM; + + public final Column ALLOW_DIVIDEND_INACTIVE_CLIENT; + + public final Column CREATED_BY_ID; + + public final Column CREATED_DATE; + + public final Column LAST_MODIFIED_BY_ID; + + public final Column LAST_MODIFIED_DATE; + + public final Column ACCOUNTING_TYPE; + + public static MShareProduct staticInitialize(DataContext dataContext) { + return new MShareProduct(dataContext); + } + + private MShareProduct(DataContext dataContext) { + super(dataContext, "m_share_product"); + this.ID = getInternalColumnByName("id"); + this.NAME = getInternalColumnByName("name"); + this.SHORT_NAME = getInternalColumnByName("short_name"); + this.EXTERNAL_ID = getInternalColumnByName("external_id"); + this.DESCRIPTION = getInternalColumnByName("description"); + this.START_DATE = getInternalColumnByName("start_date"); + this.END_DATE = getInternalColumnByName("end_date"); + this.CURRENCY_CODE = getInternalColumnByName("currency_code"); + this.CURRENCY_DIGIT = getInternalColumnByName("currency_digits"); + this.CURRENCY_MULTIPLE_OF = getInternalColumnByName("currency_multiplesof"); + this.TOTAL_SHARE = getInternalColumnByName("total_shares"); + this.ISSUED_SHARE = getInternalColumnByName("issued_shares"); + this.TOTAL_SUBSCRIBED_SHARE = getInternalColumnByName("totalsubscribed_shares"); + this.UNIT_PRICE = getInternalColumnByName("unit_price"); + this.CAPITAL_AMOUNT = getInternalColumnByName("capital_amount"); + this.MINIMUM_CLIENT_SHARE = getInternalColumnByName("minimum_client_shares"); + this.NOMINAL_CLIENT_SHARE = getInternalColumnByName("nominal_client_shares"); + this.MAXIMUM_CLIENT_SHARE = getInternalColumnByName("maximum_client_shares"); + this.MINIMUM_ACTIVE_PERIOD_FREQUENCY = getInternalColumnByName("minimum_active_period_frequency"); + this.MINIMUM_ACTIVE_PERIOD_FREQUENCY_ENUM = getInternalColumnByName("minimum_active_period_frequency_enum"); + this.LOCKIN_PERIOD_FREQUENCY = getInternalColumnByName("lockin_period_frequency"); + this.LOCKIN_PERIOD_FREQUENCY_ENUM = getInternalColumnByName("lockin_period_frequency_enum"); + this.ALLOW_DIVIDEND_INACTIVE_CLIENT = getInternalColumnByName("allow_dividends_inactive_clients"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + this.ACCOUNTING_TYPE = getInternalColumnByName("accounting_type"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareProductCharge.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareProductCharge.java new file mode 100644 index 00000000..855a4d54 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareProductCharge.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MShareProductCharge extends AbstractTable { + + public final Column PRODUCT_ID; + + public final Column CHARGE_ID; + + public static MShareProductCharge staticInitialize(DataContext dataContext) { + return new MShareProductCharge(dataContext); + } + + private MShareProductCharge(DataContext dataContext) { + super(dataContext, "m_share_product_charge"); + this.PRODUCT_ID = getInternalColumnByName("product_id"); + this.CHARGE_ID = getInternalColumnByName("charge_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareProductDividendPayOut.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareProductDividendPayOut.java new file mode 100644 index 00000000..e1118d58 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareProductDividendPayOut.java @@ -0,0 +1,47 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MShareProductDividendPayOut extends AbstractTable { + + public final Column ID; + + public final Column PRODUCT_ID; + + public final Column AMOUNT; + + public final Column DIVIDEND_PERIOD_START_DATE; + + public final Column DIVIDEND_PERIOD_END_DATE; + + public final Column STATUS; + + public final Column CREATED_BY_ID; + + public final Column CREATED_DATE; + + public final Column LAST_MODIFIED_BY_ID; + + public final Column LAST_MODIFIED_DATE; + + public static MShareProductDividendPayOut staticInitialize(DataContext dataContext) { + return new MShareProductDividendPayOut(dataContext); + } + + private MShareProductDividendPayOut(DataContext dataContext) { + super(dataContext, "m_share_product_dividend_pay_out"); + this.ID = getInternalColumnByName("id"); + this.PRODUCT_ID = getInternalColumnByName("product_id"); + this.AMOUNT = getInternalColumnByName("amount"); + this.DIVIDEND_PERIOD_START_DATE = getInternalColumnByName("dividend_period_start_date"); + this.DIVIDEND_PERIOD_END_DATE = getInternalColumnByName("dividend_period_end_date"); + this.STATUS = getInternalColumnByName("status"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareProductMarketPrice.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareProductMarketPrice.java new file mode 100644 index 00000000..419de981 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MShareProductMarketPrice.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MShareProductMarketPrice extends AbstractTable { + + public final Column ID; + + public final Column PRODUCT_ID; + + public final Column FROM_DATE; + + public final Column SHARE_VALUE; + + public static MShareProductMarketPrice staticInitialize(DataContext dataContext) { + return new MShareProductMarketPrice(dataContext); + } + + private MShareProductMarketPrice(DataContext dataContext) { + super(dataContext, "m_share_product_market_price"); + this.ID = getInternalColumnByName("id"); + this.PRODUCT_ID = getInternalColumnByName("product_id"); + this.FROM_DATE = getInternalColumnByName("from_date"); + this.SHARE_VALUE = getInternalColumnByName("share_value"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MStaff.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MStaff.java new file mode 100644 index 00000000..f67bbeaa --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MStaff.java @@ -0,0 +1,59 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MStaff extends AbstractTable { + + public final Column ID; + + public final Column LOAN_OFFICER; + + public final Column OFFICE_ID; + + public final Column FIRST_NAME; + + public final Column LAST_NAME; + + public final Column DISPLAY_NAME; + + public final Column MOBILE_NO; + + public final Column EXTERNAL_ID; + + public final Column ORGANISATIONAL_ROLE_ENUM; + + public final Column ORGANISATIONAL_ROLE_PARENT_STAFF_ID; + + public final Column ACTIVE; + + public final Column JOINING_DATE; + + public final Column IMAGE_ID; + + public final Column EMAIL_ADDRESS; + + public static MStaff staticInitialize(DataContext dataContext) { + return new MStaff(dataContext); + } + + private MStaff(DataContext dataContext) { + super(dataContext, "m_staff"); + this.ID = getInternalColumnByName("id"); + this.LOAN_OFFICER = getInternalColumnByName("is_loan_officer"); + this.OFFICE_ID = getInternalColumnByName("office_id"); + this.FIRST_NAME = getInternalColumnByName("firstname"); + this.LAST_NAME = getInternalColumnByName("lastname"); + this.DISPLAY_NAME = getInternalColumnByName("display_name"); + this.MOBILE_NO = getInternalColumnByName("mobile_no"); + this.EXTERNAL_ID = getInternalColumnByName("external_id"); + this.ORGANISATIONAL_ROLE_ENUM = getInternalColumnByName("organisational_role_enum"); + this.ORGANISATIONAL_ROLE_PARENT_STAFF_ID = getInternalColumnByName("organisational_role_parent_staff_id"); + this.ACTIVE = getInternalColumnByName("is_active"); + this.JOINING_DATE = getInternalColumnByName("joining_date"); + this.IMAGE_ID = getInternalColumnByName("image_id"); + this.EMAIL_ADDRESS = getInternalColumnByName("email_address"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MStaffAssignmentHistory.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MStaffAssignmentHistory.java new file mode 100644 index 00000000..f7ee93e8 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MStaffAssignmentHistory.java @@ -0,0 +1,44 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MStaffAssignmentHistory extends AbstractTable { + + public final Column ID; + + public final Column CENTRE_ID; + + public final Column STAFF_ID; + + public final Column START_DATE; + + public final Column END_DATE; + + public final Column CREATED_BY_ID; + + public final Column CREATED_DATE; + + public final Column LAST_MODIFIED_DATE; + + public final Column LAST_MODIFIED_BY_ID; + + public static MStaffAssignmentHistory staticInitialize(DataContext dataContext) { + return new MStaffAssignmentHistory(dataContext); + } + + private MStaffAssignmentHistory(DataContext dataContext) { + super(dataContext, "m_staff_assignment_history"); + this.ID = getInternalColumnByName("id"); + this.CENTRE_ID = getInternalColumnByName("centre_id"); + this.STAFF_ID = getInternalColumnByName("staff_id"); + this.START_DATE = getInternalColumnByName("start_date"); + this.END_DATE = getInternalColumnByName("end_date"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSurvey.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSurvey.java new file mode 100644 index 00000000..8ec3b19f --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSurvey.java @@ -0,0 +1,38 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MSurvey extends AbstractTable { + + public final Column ID; + + public final Column A_KEY; + + public final Column A_NAME; + + public final Column DESCRIPTION; + + public final Column COUNTRY_CODE; + + public final Column VALID_FROM; + + public final Column VALID_TO; + + public static MSurvey staticInitialize(DataContext dataContext) { + return new MSurvey(dataContext); + } + + private MSurvey(DataContext dataContext) { + super(dataContext, "m_surveys"); + this.ID = getInternalColumnByName("id"); + this.A_KEY = getInternalColumnByName("a_key"); + this.A_NAME = getInternalColumnByName("a_name"); + this.DESCRIPTION = getInternalColumnByName("description"); + this.COUNTRY_CODE = getInternalColumnByName("country_code"); + this.VALID_FROM = getInternalColumnByName("valid_from"); + this.VALID_TO = getInternalColumnByName("valid_to"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSurveyComponent.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSurveyComponent.java new file mode 100644 index 00000000..b54aa36f --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSurveyComponent.java @@ -0,0 +1,35 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MSurveyComponent extends AbstractTable { + + public final Column ID; + + public final Column SURVEY_ID; + + public final Column A_KEY; + + public final Column A_TEXT; + + public final Column DESCRIPTION; + + public final Column SEQUENCE_NO; + + public static MSurveyComponent staticInitialize(DataContext dataContext) { + return new MSurveyComponent(dataContext); + } + + private MSurveyComponent(DataContext dataContext) { + super(dataContext, "m_survey_components"); + this.ID = getInternalColumnByName("id"); + this.SURVEY_ID = getInternalColumnByName("survey_id"); + this.A_KEY = getInternalColumnByName("a_key"); + this.A_TEXT = getInternalColumnByName("a_text"); + this.DESCRIPTION = getInternalColumnByName("description"); + this.SEQUENCE_NO = getInternalColumnByName("sequence_no"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSurveyLookupTable.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSurveyLookupTable.java new file mode 100644 index 00000000..a137b9e9 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSurveyLookupTable.java @@ -0,0 +1,38 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MSurveyLookupTable extends AbstractTable { + + public final Column ID; + + public final Column SURVEY_ID; + + public final Column A_KEY; + + public final Column VALUE_FROM; + + public final Column DESCRIPTION; + + public final Column VALUE_TO; + + public final Column SCORE; + + public static MSurveyLookupTable staticInitialize(DataContext dataContext) { + return new MSurveyLookupTable(dataContext); + } + + private MSurveyLookupTable(DataContext dataContext) { + super(dataContext, "m_survey_lookup_tables"); + this.ID = getInternalColumnByName("id"); + this.SURVEY_ID = getInternalColumnByName("survey_id"); + this.A_KEY = getInternalColumnByName("a_key"); + this.DESCRIPTION = getInternalColumnByName("description"); + this.VALUE_FROM = getInternalColumnByName("value_from"); + this.VALUE_TO = getInternalColumnByName("value_to"); + this.SCORE = getInternalColumnByName("score"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSurveyQuestion.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSurveyQuestion.java new file mode 100644 index 00000000..0fb09897 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSurveyQuestion.java @@ -0,0 +1,38 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MSurveyQuestion extends AbstractTable { + + public final Column ID; + + public final Column SURVEY_ID; + + public final Column A_KEY; + + public final Column DESCRIPTION; + + public final Column COMPONENT_KEY; + + public final Column A_TEXT; + + public final Column SEQUENCE_NO; + + public static MSurveyQuestion staticInitialize(DataContext dataContext) { + return new MSurveyQuestion(dataContext); + } + + private MSurveyQuestion(DataContext dataContext) { + super(dataContext, "m_survey_questions"); + this.ID = getInternalColumnByName("id"); + this.SURVEY_ID = getInternalColumnByName("survey_id"); + this.A_KEY = getInternalColumnByName("a_key"); + this.DESCRIPTION = getInternalColumnByName("description"); + this.COMPONENT_KEY = getInternalColumnByName("component_key"); + this.A_TEXT = getInternalColumnByName("a_text"); + this.SEQUENCE_NO = getInternalColumnByName("sequence_no"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSurveyResponse.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSurveyResponse.java new file mode 100644 index 00000000..78ce32a4 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSurveyResponse.java @@ -0,0 +1,32 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MSurveyResponse extends AbstractTable { + + public final Column ID; + + public final Column QUESTION_ID; + + public final Column A_VALUE; + + public final Column A_TEXT; + + public final Column SEQUENCE_NO; + + public static MSurveyResponse staticInitialize(DataContext dataContext) { + return new MSurveyResponse(dataContext); + } + + private MSurveyResponse(DataContext dataContext) { + super(dataContext, "m_survey_responses"); + this.ID = getInternalColumnByName("id"); + this.A_TEXT = getInternalColumnByName("a_text"); + this.SEQUENCE_NO = getInternalColumnByName("sequence_no"); + this.QUESTION_ID = getInternalColumnByName("question_id"); + this.A_VALUE = getInternalColumnByName("a_value"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSurveyScoreCard.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSurveyScoreCard.java new file mode 100644 index 00000000..6ed78be3 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MSurveyScoreCard.java @@ -0,0 +1,41 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MSurveyScoreCard extends AbstractTable { + + public final Column ID; + + public final Column SURVEY_ID; + + public final Column QUESTION_ID; + + public final Column RESPONSE_ID; + + public final Column USER_ID; + + public final Column CLIENT_ID; + + public final Column CREATED_ON; + + public final Column A_VALUE; + + public static MSurveyScoreCard staticInitialize(DataContext dataContext) { + return new MSurveyScoreCard(dataContext); + } + + private MSurveyScoreCard(DataContext dataContext) { + super(dataContext, "m_survey_scorecards"); + this.ID = getInternalColumnByName("id"); + this.SURVEY_ID = getInternalColumnByName("survey_id"); + this.QUESTION_ID = getInternalColumnByName("question_id"); + this.RESPONSE_ID = getInternalColumnByName("response_id"); + this.USER_ID = getInternalColumnByName("user_id"); + this.CLIENT_ID = getInternalColumnByName("client_id"); + this.CREATED_ON = getInternalColumnByName("created_on"); + this.A_VALUE = getInternalColumnByName("a_value"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTaxComponent.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTaxComponent.java new file mode 100644 index 00000000..e164c206 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTaxComponent.java @@ -0,0 +1,53 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MTaxComponent extends AbstractTable { + + public final Column ID; + + public final Column NAME; + + public final Column PERCENTAGE; + + public final Column DEBIT_ACCOUNT_TYPE_ENUM; + + public final Column DEBIT_ACCOUNT_ID; + + public final Column CREDIT_ACCOUNT_TYPE_ENUM; + + public final Column CREDIT_ACCOUNT_ID; + + public final Column START_DATE; + + public final Column CREATED_BY_ID; + + public final Column CREATED_DATE; + + public final Column LAST_MODIFIED_BY_ID; + + public final Column LAST_MODIFIED_DATE; + + public static MTaxComponent staticInitialize(DataContext dataContext) { + return new MTaxComponent(dataContext); + } + + private MTaxComponent(DataContext dataContext) { + super(dataContext, "m_tax_component"); + this.ID = getInternalColumnByName("id"); + this.NAME = getInternalColumnByName("name"); + this.PERCENTAGE = getInternalColumnByName("percentage"); + this.DEBIT_ACCOUNT_TYPE_ENUM = getInternalColumnByName("debit_account_type_enum"); + this.DEBIT_ACCOUNT_ID = getInternalColumnByName("debit_account_id"); + this.CREDIT_ACCOUNT_TYPE_ENUM = getInternalColumnByName("credit_account_type_enum"); + this.CREDIT_ACCOUNT_ID = getInternalColumnByName("credit_account_id"); + this.START_DATE = getInternalColumnByName("start_date"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTaxComponentHistory.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTaxComponentHistory.java new file mode 100644 index 00000000..b5bf8ab6 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTaxComponentHistory.java @@ -0,0 +1,44 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MTaxComponentHistory extends AbstractTable { + + public final Column ID; + + public final Column TAX_COMPONENT_ID; + + public final Column PERCENTAGE; + + public final Column START_DATE; + + public final Column END_DATE; + + public final Column CREATED_BY_ID; + + public final Column CREATED_DATE; + + public final Column LAST_MODIFIED_BY_ID; + + public final Column LAST_MODIFIED_DATE; + + public static MTaxComponentHistory staticInitialize(DataContext dataContext) { + return new MTaxComponentHistory(dataContext); + } + + private MTaxComponentHistory(DataContext dataContext) { + super(dataContext, "m_tax_component_history"); + this.ID = getInternalColumnByName("id"); + this.TAX_COMPONENT_ID = getInternalColumnByName("tax_component_id"); + this.PERCENTAGE = getInternalColumnByName("percentage"); + this.START_DATE = getInternalColumnByName("start_date"); + this.END_DATE = getInternalColumnByName("end_date"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTaxGroup.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTaxGroup.java new file mode 100644 index 00000000..8f2c6c0a --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTaxGroup.java @@ -0,0 +1,35 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MTaxGroup extends AbstractTable { + + public final Column ID; + + public final Column NAME; + + public final Column CREATED_BY_ID; + + public final Column CREATED_DATE; + + public final Column LAST_MODIFIED_BY_ID; + + public final Column LAST_MODIFIED_DATE; + + public static MTaxGroup staticInitialize(DataContext dataContext) { + return new MTaxGroup(dataContext); + } + + private MTaxGroup(DataContext dataContext) { + super(dataContext, "m_tax_group"); + this.ID = getInternalColumnByName("id"); + this.NAME = getInternalColumnByName("name"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTaxGroupMapping.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTaxGroupMapping.java new file mode 100644 index 00000000..59fd21f8 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTaxGroupMapping.java @@ -0,0 +1,44 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MTaxGroupMapping extends AbstractTable { + + public final Column ID; + + public final Column TAX_GROUP_ID; + + public final Column TAX_COMPONENT_ID; + + public final Column START_DATE; + + public final Column END_DATE; + + public final Column CREATED_BY_ID; + + public final Column CREATED_DATE; + + public final Column LAST_MODIFIED_BY_ID; + + public final Column LAST_MODIFIED_DATE; + + public static MTaxGroupMapping staticInitialize(DataContext dataContext) { + return new MTaxGroupMapping(dataContext); + } + + private MTaxGroupMapping(DataContext dataContext) { + super(dataContext, "m_tax_group_mappings"); + this.ID = getInternalColumnByName("id"); + this.TAX_GROUP_ID = getInternalColumnByName("tax_group_id"); + this.TAX_COMPONENT_ID = getInternalColumnByName("tax_component_id"); + this.START_DATE = getInternalColumnByName("start_date"); + this.END_DATE = getInternalColumnByName("end_date"); + this.CREATED_BY_ID = getInternalColumnByName("createdby_id"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.LAST_MODIFIED_BY_ID = getInternalColumnByName("lastmodifiedby_id"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTeller.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTeller.java new file mode 100644 index 00000000..37c7333e --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTeller.java @@ -0,0 +1,44 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MTeller extends AbstractTable { + + public final Column ID; + + public final Column OFFICE_ID; + + public final Column DEBIT_ACCOUNT_ID; + + public final Column CREDIT_ACCOUNT_ID; + + public final Column NAME; + + public final Column DESCRIPTION; + + public final Column VALID_FROM; + + public final Column VALID_TO; + + public final Column STATE; + + public static MTeller staticInitialize(DataContext dataContext) { + return new MTeller(dataContext); + } + + private MTeller(DataContext dataContext) { + super(dataContext, "m_tellers"); + this.ID = getInternalColumnByName("id"); + this.OFFICE_ID = getInternalColumnByName("office_id"); + this.DEBIT_ACCOUNT_ID = getInternalColumnByName("debit_account_id"); + this.CREDIT_ACCOUNT_ID = getInternalColumnByName("credit_account_id"); + this.NAME = getInternalColumnByName("name"); + this.DESCRIPTION = getInternalColumnByName("description"); + this.VALID_FROM = getInternalColumnByName("valid_from"); + this.VALID_TO = getInternalColumnByName("valid_to"); + this.STATE = getInternalColumnByName("state"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTemplate.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTemplate.java new file mode 100644 index 00000000..c8244ff0 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTemplate.java @@ -0,0 +1,32 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MTemplate extends AbstractTable { + + public final Column ID; + + public final Column NAME; + + public final Column TEXT; + + public final Column ENTITY; + + public final Column TYPE; + + public static MTemplate staticInitialize(DataContext dataContext) { + return new MTemplate(dataContext); + } + + private MTemplate(DataContext dataContext) { + super(dataContext, "m_template"); + this.ID = getInternalColumnByName("id"); + this.NAME = getInternalColumnByName("name"); + this.TEXT = getInternalColumnByName("text"); + this.ENTITY = getInternalColumnByName("entity"); + this.TYPE = getInternalColumnByName("type"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTemplateMTemplateMapper.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTemplateMTemplateMapper.java new file mode 100644 index 00000000..e8b30fa1 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTemplateMTemplateMapper.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MTemplateMTemplateMapper extends AbstractTable { + + public final Column TEMPLATE_ID; + + public final Column MAPPER_ID; + + public static MTemplateMTemplateMapper staticInitialize(DataContext dataContext) { + return new MTemplateMTemplateMapper(dataContext); + } + + private MTemplateMTemplateMapper(DataContext dataContext) { + super(dataContext, "m_template_m_templatemappers"); + this.TEMPLATE_ID = getInternalColumnByName("m_template_id"); + this.MAPPER_ID = getInternalColumnByName("mappers_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTemplateMapper.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTemplateMapper.java new file mode 100644 index 00000000..77d136d2 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTemplateMapper.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MTemplateMapper extends AbstractTable { + + public final Column ID; + + public final Column MAPPER_KEY; + + public final Column MAPPER_ORDER; + + public final Column MAPPER_VALUE; + + public static MTemplateMapper staticInitialize(DataContext dataContext) { + return new MTemplateMapper(dataContext); + } + + private MTemplateMapper(DataContext dataContext) { + super(dataContext, "m_templatemappers"); + this.ID = getInternalColumnByName("id"); + this.MAPPER_KEY = getInternalColumnByName("mapperkey"); + this.MAPPER_ORDER = getInternalColumnByName("mapperorder"); + this.MAPPER_VALUE = getInternalColumnByName("mappervalue"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTrialBalance.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTrialBalance.java new file mode 100644 index 00000000..f3af8da6 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MTrialBalance.java @@ -0,0 +1,35 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MTrialBalance extends AbstractTable { + + public final Column OFFICE_ID; + + public final Column ACCOUNT_ID; + + public final Column AMOUNT; + + public final Column ENTRY_DATE; + + public final Column CREATED_DATE; + + public final Column CLOSING_BALANCE; + + public static MTrialBalance staticInitialize(DataContext dataContext) { + return new MTrialBalance(dataContext); + } + + private MTrialBalance(DataContext dataContext) { + super(dataContext, "m_trial_balance"); + this.OFFICE_ID = getInternalColumnByName("office_id"); + this.ACCOUNT_ID = getInternalColumnByName("account_id"); + this.AMOUNT = getInternalColumnByName("amount"); + this.ENTRY_DATE = getInternalColumnByName("entry_date"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.CLOSING_BALANCE = getInternalColumnByName("closing_balance"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MWorkingDay.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MWorkingDay.java new file mode 100644 index 00000000..58a094c1 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MWorkingDay.java @@ -0,0 +1,32 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MWorkingDay extends AbstractTable { + + public final Column ID; + + public final Column RECURRENCE; + + public final Column REPAYMENT_RESCHEDULING_ENUM; + + public final Column EXTEND_TERM_DAILY_REPAYMENT; + + public final Column EXTEND_TERM_HOLIDAY_REPAYMENT; + + public static MWorkingDay staticInitialize(DataContext dataContext) { + return new MWorkingDay(dataContext); + } + + private MWorkingDay(DataContext dataContext) { + super(dataContext, "m_working_days"); + this.ID = getInternalColumnByName("id"); + this.RECURRENCE = getInternalColumnByName("recurrence"); + this.REPAYMENT_RESCHEDULING_ENUM = getInternalColumnByName("repayment_rescheduling_enum"); + this.EXTEND_TERM_DAILY_REPAYMENT = getInternalColumnByName("extend_term_daily_repayments"); + this.EXTEND_TERM_HOLIDAY_REPAYMENT = getInternalColumnByName("extend_term_holiday_repayment"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MixTaxonomy.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MixTaxonomy.java new file mode 100644 index 00000000..7fe65442 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MixTaxonomy.java @@ -0,0 +1,38 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MixTaxonomy extends AbstractTable { + + public final Column ID; + + public final Column NAME; + + public final Column NAMESPACE_ID; + + public final Column DIMENSION; + + public final Column TYPE; + + public final Column DESCRIPTION; + + public final Column NEED_MAPPING; + + public static MixTaxonomy staticInitialize(DataContext dataContext) { + return new MixTaxonomy(dataContext); + } + + private MixTaxonomy(DataContext dataContext) { + super(dataContext, "mix_taxonomy"); + this.ID = getInternalColumnByName("id"); + this.NAME = getInternalColumnByName("name"); + this.NAMESPACE_ID = getInternalColumnByName("namespace_id"); + this.DIMENSION = getInternalColumnByName("dimension"); + this.TYPE = getInternalColumnByName("type"); + this.DESCRIPTION = getInternalColumnByName("description"); + this.NEED_MAPPING = getInternalColumnByName("need_mapping"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MixTaxonomyMapping.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MixTaxonomyMapping.java new file mode 100644 index 00000000..2c8a13e1 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MixTaxonomyMapping.java @@ -0,0 +1,32 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MixTaxonomyMapping extends AbstractTable { + + public final Column ID; + + public final Column IDENTIFIER; + + public final Column CONFIG; + + public final Column LAST_UPDATE_DATE; + + public final Column CURRENCY; + + public static MixTaxonomyMapping staticInitialize(DataContext dataContext) { + return new MixTaxonomyMapping(dataContext); + } + + private MixTaxonomyMapping(DataContext dataContext) { + super(dataContext, "mix_taxonomy_mapping"); + this.ID = getInternalColumnByName("id"); + this.IDENTIFIER = getInternalColumnByName("identifier"); + this.CONFIG = getInternalColumnByName("config"); + this.LAST_UPDATE_DATE = getInternalColumnByName("last_update_date"); + this.CURRENCY = getInternalColumnByName("currency"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MixXbrlNamespace.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MixXbrlNamespace.java new file mode 100644 index 00000000..09fda2a3 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/MixXbrlNamespace.java @@ -0,0 +1,26 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class MixXbrlNamespace extends AbstractTable { + + public final Column ID; + + public final Column PREFIX; + + public final Column URL; + + public static MixXbrlNamespace staticInitialize(DataContext dataContext) { + return new MixXbrlNamespace(dataContext); + } + + private MixXbrlNamespace(DataContext dataContext) { + super(dataContext, "mix_xbrl_namespace"); + this.ID = getInternalColumnByName("id"); + this.PREFIX = getInternalColumnByName("prefix"); + this.URL = getInternalColumnByName("url"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/NotificationGenerator.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/NotificationGenerator.java new file mode 100644 index 00000000..56e74ff1 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/NotificationGenerator.java @@ -0,0 +1,41 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class NotificationGenerator extends AbstractTable { + + public final Column ID; + + public final Column OBJECT_TYPE; + + public final Column OBJECT_IDENTIFIER; + + public final Column ACTION; + + public final Column ACTOR; + + public final Column SYSTEM_GENERATED; + + public final Column NOTIFICATION_CONTENT; + + public final Column CREATED_AT; + + public static NotificationGenerator staticInitialize(DataContext dataContext) { + return new NotificationGenerator(dataContext); + } + + private NotificationGenerator(DataContext dataContext) { + super(dataContext, "notification_generator"); + this.ID = getInternalColumnByName("id"); + this.OBJECT_TYPE = getInternalColumnByName("object_type"); + this.OBJECT_IDENTIFIER = getInternalColumnByName("object_identifier"); + this.ACTION = getInternalColumnByName("action"); + this.ACTOR = getInternalColumnByName("actor"); + this.SYSTEM_GENERATED = getInternalColumnByName("is_system_generated"); + this.NOTIFICATION_CONTENT = getInternalColumnByName("notification_content"); + this.CREATED_AT = getInternalColumnByName("created_at"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/NotificationMapper.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/NotificationMapper.java new file mode 100644 index 00000000..b1ad681a --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/NotificationMapper.java @@ -0,0 +1,32 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class NotificationMapper extends AbstractTable { + + public final Column ID; + + public final Column NOTIFICATION_ID; + + public final Column USER_ID; + + public final Column READ; + + public final Column CREATED_AT; + + public static NotificationMapper staticInitialize(DataContext dataContext) { + return new NotificationMapper(dataContext); + } + + private NotificationMapper(DataContext dataContext) { + super(dataContext, "notification_mapper"); + this.ID = getInternalColumnByName("id"); + this.NOTIFICATION_ID = getInternalColumnByName("notification_id"); + this.USER_ID = getInternalColumnByName("user_id"); + this.READ = getInternalColumnByName("is_read"); + this.CREATED_AT = getInternalColumnByName("created_at"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/OauthAccessToken.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/OauthAccessToken.java new file mode 100644 index 00000000..c4d08c8f --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/OauthAccessToken.java @@ -0,0 +1,38 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class OauthAccessToken extends AbstractTable { + + public final Column TOKEN_ID; + + public final Column TOKEN; + + public final Column AUTHENTICATION_ID; + + public final Column USER_NAME; + + public final Column CLIENT_ID; + + public final Column AUTHENTICATION; + + public final Column REFRESH_TOKEN; + + public static OauthAccessToken staticInitialize(DataContext dataContext) { + return new OauthAccessToken(dataContext); + } + + private OauthAccessToken(DataContext dataContext) { + super(dataContext, "oauth_access_token"); + this.TOKEN_ID = getInternalColumnByName("token_id"); + this.TOKEN = getInternalColumnByName("token"); + this.AUTHENTICATION_ID = getInternalColumnByName("authentication_id"); + this.USER_NAME = getInternalColumnByName("user_name"); + this.CLIENT_ID = getInternalColumnByName("client_id"); + this.AUTHENTICATION = getInternalColumnByName("authentication"); + this.REFRESH_TOKEN = getInternalColumnByName("refresh_token"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/OauthClientDetail.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/OauthClientDetail.java new file mode 100644 index 00000000..64712ee4 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/OauthClientDetail.java @@ -0,0 +1,50 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class OauthClientDetail extends AbstractTable { + + public final Column CLIENT_ID; + + public final Column RESOURCE_ID; + + public final Column CLIENT_SECRET; + + public final Column SCOPE; + + public final Column AUTHORIZED_GRANT_TYPE; + + public final Column WEB_SERVER_REDIRECT_URI; + + public final Column AUTHORITY; + + public final Column ACCESS_TOKEN_VALIDITY; + + public final Column REFRESH_TOKEN_VALIDITY; + + public final Column ADDITIONAL_INFORMATION; + + public final Column AUTO_APPROVE; + + public static OauthClientDetail staticInitialize(DataContext dataContext) { + return new OauthClientDetail(dataContext); + } + + private OauthClientDetail(DataContext dataContext) { + super(dataContext, "oauth_client_details"); + this.CLIENT_ID = getInternalColumnByName("client_id"); + this.RESOURCE_ID = getInternalColumnByName("resource_ids"); + this.CLIENT_SECRET = getInternalColumnByName("client_secret"); + this.SCOPE = getInternalColumnByName("scope"); + this.AUTHORIZED_GRANT_TYPE = getInternalColumnByName("authorized_grant_types"); + this.WEB_SERVER_REDIRECT_URI = getInternalColumnByName("web_server_redirect_uri"); + this.AUTHORITY = getInternalColumnByName("authorities"); + this.ACCESS_TOKEN_VALIDITY = getInternalColumnByName("access_token_validity"); + this.REFRESH_TOKEN_VALIDITY = getInternalColumnByName("refresh_token_validity"); + this.ADDITIONAL_INFORMATION = getInternalColumnByName("additional_information"); + this.AUTO_APPROVE = getInternalColumnByName("autoapprove"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/OauthRefreshToken.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/OauthRefreshToken.java new file mode 100644 index 00000000..8b1901a7 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/OauthRefreshToken.java @@ -0,0 +1,26 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class OauthRefreshToken extends AbstractTable { + + public final Column TOKEN_ID; + + public final Column TOKEN; + + public final Column AUTHENTICATION; + + public static OauthRefreshToken staticInitialize(DataContext dataContext) { + return new OauthRefreshToken(dataContext); + } + + private OauthRefreshToken(DataContext dataContext) { + super(dataContext, "oauth_refresh_token"); + this.TOKEN_ID = getInternalColumnByName("token_id"); + this.TOKEN = getInternalColumnByName("token"); + this.AUTHENTICATION = getInternalColumnByName("authentication"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/PpiLikelihood.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/PpiLikelihood.java new file mode 100644 index 00000000..eb3e08d8 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/PpiLikelihood.java @@ -0,0 +1,26 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class PpiLikelihood extends AbstractTable { + + public final Column ID; + + public final Column CODE; + + public final Column NAME; + + public static PpiLikelihood staticInitialize(DataContext dataContext) { + return new PpiLikelihood(dataContext); + } + + private PpiLikelihood(DataContext dataContext) { + super(dataContext, "ppi_likelihoods"); + this.ID = getInternalColumnByName("id"); + this.CODE = getInternalColumnByName("code"); + this.NAME = getInternalColumnByName("name"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/PpiLikelihoodPpi.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/PpiLikelihoodPpi.java new file mode 100644 index 00000000..54af5d02 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/PpiLikelihoodPpi.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class PpiLikelihoodPpi extends AbstractTable { + + public final Column ID; + + public final Column likelihood_id; + + public final Column ppi_name; + + public final Column enabled; + + public static PpiLikelihoodPpi staticInitialize(DataContext dataContext) { + return new PpiLikelihoodPpi(dataContext); + } + + private PpiLikelihoodPpi(DataContext dataContext) { + super(dataContext, "ppi_likelihoods_ppi"); + this.ID = getInternalColumnByName("id"); + this.likelihood_id = getInternalColumnByName("likelihood_id"); + this.ppi_name = getInternalColumnByName("ppi_name"); + this.enabled = getInternalColumnByName("enabled"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/PpiScore.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/PpiScore.java new file mode 100644 index 00000000..b906c102 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/PpiScore.java @@ -0,0 +1,26 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class PpiScore extends AbstractTable { + + public final Column ID; + + public final Column SCORE_FROM; + + public final Column SCORE_TO; + + public static PpiScore staticInitialize(DataContext dataContext) { + return new PpiScore(dataContext); + } + + private PpiScore(DataContext dataContext) { + super(dataContext, "ppi_scores"); + this.ID = getInternalColumnByName("id"); + this.SCORE_FROM = getInternalColumnByName("score_from"); + this.SCORE_TO = getInternalColumnByName("score_to"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/REnumValue.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/REnumValue.java new file mode 100644 index 00000000..718daf1c --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/REnumValue.java @@ -0,0 +1,32 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class REnumValue extends AbstractTable { + + public final Column ENUM_NAME; + + public final Column ENUM_ID; + + public final Column ENUM_MESSAGE_PROPERTY; + + public final Column ENUM_VALUE; + + public final Column ENUM_TYPE; + + public static REnumValue staticInitialize(DataContext dataContext) { + return new REnumValue(dataContext); + } + + private REnumValue(DataContext dataContext) { + super(dataContext, "r_enum_value"); + this.ENUM_NAME = getInternalColumnByName("enum_name"); + this.ENUM_ID = getInternalColumnByName("enum_id"); + this.ENUM_MESSAGE_PROPERTY = getInternalColumnByName("enum_message_property"); + this.ENUM_VALUE = getInternalColumnByName("enum_value"); + this.ENUM_TYPE = getInternalColumnByName("enum_type"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/RefLoanTransactionProcessingStrategy.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/RefLoanTransactionProcessingStrategy.java new file mode 100644 index 00000000..5a472935 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/RefLoanTransactionProcessingStrategy.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class RefLoanTransactionProcessingStrategy extends AbstractTable { + + public final Column ID; + + public final Column CODE; + + public final Column NAME; + + public final Column SORT_ORDER; + + public static RefLoanTransactionProcessingStrategy staticInitialize(DataContext dataContext) { + return new RefLoanTransactionProcessingStrategy(dataContext); + } + + private RefLoanTransactionProcessingStrategy(DataContext dataContext) { + super(dataContext, "ref_loan_transaction_processing_strategy"); + this.ID = getInternalColumnByName("id"); + this.CODE = getInternalColumnByName("code"); + this.NAME = getInternalColumnByName("name"); + this.SORT_ORDER = getInternalColumnByName("sort_order"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/RequestAuditTable.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/RequestAuditTable.java new file mode 100644 index 00000000..ae82e6e9 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/RequestAuditTable.java @@ -0,0 +1,50 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class RequestAuditTable extends AbstractTable { + + public final Column ID; + + public final Column LAST_NAME; + + public final Column USERNAME; + + public final Column MOBILE_NUMBER; + + public final Column FIRST_NAME; + + public final Column AUTHENTICATION_TOKEN; + + public final Column PASSWORD; + + public final Column EMAIL; + + public final Column CLIENT_ID; + + public final Column CREATED_DATE; + + public final Column ACCOUNT_NUMBER; + + public static RequestAuditTable staticInitialize(DataContext dataContext) { + return new RequestAuditTable(dataContext); + } + + private RequestAuditTable(DataContext dataContext) { + super(dataContext, "request_audit_table"); + this.ID = getInternalColumnByName("id"); + this.LAST_NAME = getInternalColumnByName("lastname"); + this.USERNAME = getInternalColumnByName("username"); + this.MOBILE_NUMBER = getInternalColumnByName("mobile_number"); + this.FIRST_NAME = getInternalColumnByName("firstname"); + this.AUTHENTICATION_TOKEN = getInternalColumnByName("authentication_token"); + this.PASSWORD = getInternalColumnByName("password"); + this.EMAIL = getInternalColumnByName("email"); + this.CLIENT_ID = getInternalColumnByName("client_id"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.ACCOUNT_NUMBER = getInternalColumnByName("account_number"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/RptSequence.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/RptSequence.java new file mode 100644 index 00000000..99bda51a --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/RptSequence.java @@ -0,0 +1,20 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class RptSequence extends AbstractTable { + + public final Column ID; + + public static RptSequence staticInitialize(DataContext dataContext) { + return new RptSequence(dataContext); + } + + private RptSequence(DataContext dataContext) { + super(dataContext, "rpt_sequence"); + this.ID = getInternalColumnByName("id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/ScheduledEmailCampaign.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/ScheduledEmailCampaign.java new file mode 100644 index 00000000..ae9c5383 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/ScheduledEmailCampaign.java @@ -0,0 +1,92 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class ScheduledEmailCampaign extends AbstractTable { + + public final Column ID; + + public final Column CAMPAIGN_NAME; + + public final Column CAMPAIGN_TYPE; + + public final Column BUSINESS_RULE_ID; + + public final Column PARAM_VALUE; + + public final Column STATUS_ENUM; + + public final Column EMAIL_SUBJECT; + + public final Column EMAIL_MESSAGE; + + public final Column EMAIL_ATTACHMENT_FILE_FORMAT; + + public final Column STRETCHY_REPORT_ID; + + public final Column STRETCHY_REPORT_PARAM_MAP; + + public final Column CLOSED_ON_DATE; + + public final Column CLOSED_ON_USER_ID; + + public final Column SUBMITTED_ON_DATE; + + public final Column SUBMITTED_ON_USER_ID; + + public final Column APPROVED_ON_DATE; + + public final Column APPROVED_ON_USER_ID; + + public final Column RECURRENCE; + + public final Column NEXT_TRIGGER_DATE; + + public final Column LAST_TRIGGER_DATE; + + public final Column RECURRENCE_START_DATE; + + public final Column VISIBLE; + + public final Column PREVIOUS_RUN_ERROR_LOG; + + public final Column PREVIOUS_RUN_ERROR_MESSAGE; + + public final Column PREVIOUS_RUN_STATUS; + + public static ScheduledEmailCampaign staticInitialize(DataContext dataContext) { + return new ScheduledEmailCampaign(dataContext); + } + + private ScheduledEmailCampaign(DataContext dataContext) { + super(dataContext, "scheduled_email_campaign"); + this.ID = getInternalColumnByName("id"); + this.CAMPAIGN_NAME = getInternalColumnByName("campaign_name"); + this.CAMPAIGN_TYPE = getInternalColumnByName("campaign_type"); + this.BUSINESS_RULE_ID = getInternalColumnByName("businessRule_id"); + this.PARAM_VALUE = getInternalColumnByName("param_value"); + this.STATUS_ENUM = getInternalColumnByName("status_enum"); + this.EMAIL_SUBJECT = getInternalColumnByName("email_subject"); + this.EMAIL_MESSAGE = getInternalColumnByName("email_message"); + this.EMAIL_ATTACHMENT_FILE_FORMAT = getInternalColumnByName("email_attachment_file_format"); + this.STRETCHY_REPORT_ID = getInternalColumnByName("stretchy_report_id"); + this.STRETCHY_REPORT_PARAM_MAP = getInternalColumnByName("stretchy_report_param_map"); + this.CLOSED_ON_DATE = getInternalColumnByName("closedon_date"); + this.CLOSED_ON_USER_ID = getInternalColumnByName("closedon_userid"); + this.SUBMITTED_ON_DATE = getInternalColumnByName("submittedon_date"); + this.SUBMITTED_ON_USER_ID = getInternalColumnByName("submittedon_userid"); + this.APPROVED_ON_DATE = getInternalColumnByName("approvedon_date"); + this.APPROVED_ON_USER_ID = getInternalColumnByName("approvedon_userid"); + this.RECURRENCE = getInternalColumnByName("recurrence"); + this.NEXT_TRIGGER_DATE = getInternalColumnByName("next_trigger_date"); + this.LAST_TRIGGER_DATE = getInternalColumnByName("last_trigger_date"); + this.RECURRENCE_START_DATE = getInternalColumnByName("recurrence_start_date"); + this.VISIBLE = getInternalColumnByName("is_visible"); + this.PREVIOUS_RUN_ERROR_LOG = getInternalColumnByName("previous_run_error_log"); + this.PREVIOUS_RUN_ERROR_MESSAGE = getInternalColumnByName("previous_run_error_message"); + this.PREVIOUS_RUN_STATUS = getInternalColumnByName("previous_run_status"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/ScheduledEmailConfiguration.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/ScheduledEmailConfiguration.java new file mode 100644 index 00000000..f5f5824f --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/ScheduledEmailConfiguration.java @@ -0,0 +1,26 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class ScheduledEmailConfiguration extends AbstractTable { + + public final Column ID; + + public final Column NAME; + + public final Column VALUE; + + public static ScheduledEmailConfiguration staticInitialize(DataContext dataContext) { + return new ScheduledEmailConfiguration(dataContext); + } + + private ScheduledEmailConfiguration(DataContext dataContext) { + super(dataContext, "scheduled_email_configuration"); + this.ID = getInternalColumnByName("id"); + this.NAME = getInternalColumnByName("name"); + this.VALUE = getInternalColumnByName("value"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/ScheduledEmailMessageOutbound.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/ScheduledEmailMessageOutbound.java new file mode 100644 index 00000000..31c15ca4 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/ScheduledEmailMessageOutbound.java @@ -0,0 +1,53 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class ScheduledEmailMessageOutbound extends AbstractTable { + + public final Column ID; + + public final Column GROUP_ID; + + public final Column CLIENT_ID; + + public final Column STAFF_ID; + + public final Column EMAIL_CAMPAIGN_ID; + + public final Column STATUS_ENUM; + + public final Column EMAIL_ADDRESS; + + public final Column EMAIL_SUBJECT; + + public final Column MESSAGE; + + public final Column CAMPAIGN_NAME; + + public final Column SUBMITTED_ON_DATE; + + public final Column ERROR_MESSAGE; + + public static ScheduledEmailMessageOutbound staticInitialize(DataContext dataContext) { + return new ScheduledEmailMessageOutbound(dataContext); + } + + private ScheduledEmailMessageOutbound(DataContext dataContext) { + super(dataContext, "scheduled_email_messages_outbound"); + this.ID = getInternalColumnByName("id"); + this.GROUP_ID = getInternalColumnByName("group_id"); + this.CLIENT_ID = getInternalColumnByName("client_id"); + this.STAFF_ID = getInternalColumnByName("staff_id"); + this.EMAIL_CAMPAIGN_ID = getInternalColumnByName("email_campaign_id"); + this.STATUS_ENUM = getInternalColumnByName("status_enum"); + this.EMAIL_ADDRESS = getInternalColumnByName("email_address"); + this.EMAIL_SUBJECT = getInternalColumnByName("email_subject"); + this.MESSAGE = getInternalColumnByName("message"); + this.CAMPAIGN_NAME = getInternalColumnByName("campaign_name"); + this.SUBMITTED_ON_DATE = getInternalColumnByName("submittedon_date"); + this.ERROR_MESSAGE = getInternalColumnByName("error_message"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/SchedulerDetail.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/SchedulerDetail.java new file mode 100644 index 00000000..7f0a8d72 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/SchedulerDetail.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class SchedulerDetail extends AbstractTable { + + public final Column ID; + + public final Column SUSPENDED; + + public final Column EXECUTE_MISFIRED_JOB; + + public final Column RESET_SCHEDULER_ON_BOOTUP; + + public static SchedulerDetail staticInitialize(DataContext dataContext) { + return new SchedulerDetail(dataContext); + } + + private SchedulerDetail(DataContext dataContext) { + super(dataContext, "scheduler_detail"); + this.ID = getInternalColumnByName("id"); + this.SUSPENDED = getInternalColumnByName("is_suspended"); + this.EXECUTE_MISFIRED_JOB = getInternalColumnByName("execute_misfired_jobs"); + this.RESET_SCHEDULER_ON_BOOTUP = getInternalColumnByName("reset_scheduler_on_bootup"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/SmsCampaign.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/SmsCampaign.java new file mode 100644 index 00000000..8da81d85 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/SmsCampaign.java @@ -0,0 +1,80 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class SmsCampaign extends AbstractTable { + + public final Column ID; + + public final Column CAMPAIGN_NAME; + + public final Column CAMPAIGN_TYPE; + + public final Column CAMPAIGN_TRIGGER_TYPE; + + public final Column REPORT_ID; + + public final Column PROVIDER_ID; + + public final Column PARAM_VALUE; + + public final Column STATUS_ENUM; + + public final Column MESSAGE; + + public final Column SUBMITTED_ON_DATE; + + public final Column SUBMITTED_ON_USER_ID; + + public final Column APPROVED_ON_DATE; + + public final Column APPROVED_ON_USER_ID; + + public final Column CLOSED_ON_DATE; + + public final Column CLOSED_ON_USER_ID; + + public final Column RECURRENCE; + + public final Column NEXT_TRIGGER_DATE; + + public final Column LAST_TRIGGER_DATE; + + public final Column RECURRENCE_START_DATE; + + public final Column VISIBLE; + + public final Column NOTIFICATION; + + public static SmsCampaign staticInitialize(DataContext dataContext) { + return new SmsCampaign(dataContext); + } + + private SmsCampaign(DataContext dataContext) { + super(dataContext, "sms_campaign"); + this.ID = getInternalColumnByName("id"); + this.CAMPAIGN_NAME = getInternalColumnByName("campaign_name"); + this.CAMPAIGN_TYPE = getInternalColumnByName("campaign_type"); + this.CAMPAIGN_TRIGGER_TYPE = getInternalColumnByName("campaign_trigger_type"); + this.REPORT_ID = getInternalColumnByName("report_id"); + this.PROVIDER_ID = getInternalColumnByName("provider_id"); + this.PARAM_VALUE = getInternalColumnByName("param_value"); + this.STATUS_ENUM = getInternalColumnByName("status_enum"); + this.MESSAGE = getInternalColumnByName("message"); + this.SUBMITTED_ON_DATE = getInternalColumnByName("submittedon_date"); + this.SUBMITTED_ON_USER_ID = getInternalColumnByName("submittedon_userid"); + this.APPROVED_ON_DATE = getInternalColumnByName("approvedon_date"); + this.APPROVED_ON_USER_ID = getInternalColumnByName("approvedon_userid"); + this.CLOSED_ON_DATE = getInternalColumnByName("closedon_date"); + this.CLOSED_ON_USER_ID = getInternalColumnByName("closedon_userid"); + this.RECURRENCE = getInternalColumnByName("recurrence"); + this.NEXT_TRIGGER_DATE = getInternalColumnByName("next_trigger_date"); + this.LAST_TRIGGER_DATE = getInternalColumnByName("last_trigger_date"); + this.RECURRENCE_START_DATE = getInternalColumnByName("recurrence_start_date"); + this.VISIBLE = getInternalColumnByName("is_visible"); + this.NOTIFICATION = getInternalColumnByName("is_notification"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/SmsMessageOutbound.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/SmsMessageOutbound.java new file mode 100644 index 00000000..e1fb7663 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/SmsMessageOutbound.java @@ -0,0 +1,53 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class SmsMessageOutbound extends AbstractTable { + + public final Column ID; + + public final Column GROUP_ID; + + public final Column CLIENT_ID; + + public final Column STAFF_ID; + + public final Column STATUS_ENUM; + + public final Column MOBILE_NO; + + public final Column MESSAGE; + + public final Column CAMPAIGN_ID; + + public final Column EXTERNAL_ID; + + public final Column SUBMITTED_ON_DATE; + + public final Column DELIVERED_ON_DATE; + + public final Column NOTIFICATION; + + public static SmsMessageOutbound staticInitialize(DataContext dataContext) { + return new SmsMessageOutbound(dataContext); + } + + private SmsMessageOutbound(DataContext dataContext) { + super(dataContext, "sms_messages_outbound"); + this.ID = getInternalColumnByName("id"); + this.GROUP_ID = getInternalColumnByName("group_id"); + this.CLIENT_ID = getInternalColumnByName("client_id"); + this.STAFF_ID = getInternalColumnByName("staff_id"); + this.STATUS_ENUM = getInternalColumnByName("status_enum"); + this.MOBILE_NO = getInternalColumnByName("mobile_no"); + this.MESSAGE = getInternalColumnByName("message"); + this.CAMPAIGN_ID = getInternalColumnByName("campaign_id"); + this.EXTERNAL_ID = getInternalColumnByName("external_id"); + this.SUBMITTED_ON_DATE = getInternalColumnByName("submittedon_date"); + this.DELIVERED_ON_DATE = getInternalColumnByName("delivered_on_date"); + this.NOTIFICATION = getInternalColumnByName("is_notification"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/StretchyParameter.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/StretchyParameter.java new file mode 100644 index 00000000..a6261a7a --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/StretchyParameter.java @@ -0,0 +1,53 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class StretchyParameter extends AbstractTable { + + public final Column ID; + + public final Column PARAMETER_NAME; + + public final Column PARAMETER_VARIABLE; + + public final Column PARAMETER_LABEL; + + public final Column PARAMETER_DISPLAY_TYPE; + + public final Column PARAMETER_FORMAT_TYPE; + + public final Column PARAMETER_DEFAULT; + + public final Column SPECIAL; + + public final Column SELECT_ONE; + + public final Column SELECT_ALL; + + public final Column PARAMETER_SQL; + + public final Column PARENT_ID; + + public static StretchyParameter staticInitialize(DataContext dataContext) { + return new StretchyParameter(dataContext); + } + + private StretchyParameter(DataContext dataContext) { + super(dataContext, "stretchy_parameter"); + this.ID = getInternalColumnByName("id"); + this.PARAMETER_NAME = getInternalColumnByName("parameter_name"); + this.PARAMETER_VARIABLE = getInternalColumnByName("parameter_variable"); + this.PARAMETER_LABEL = getInternalColumnByName("parameter_label"); + this.PARAMETER_DISPLAY_TYPE = getInternalColumnByName("parameter_displayType"); + this.PARAMETER_FORMAT_TYPE = getInternalColumnByName("parameter_FormatType"); + this.PARAMETER_DEFAULT = getInternalColumnByName("parameter_default"); + this.SPECIAL = getInternalColumnByName("special"); + this.SELECT_ONE = getInternalColumnByName("selectOne"); + this.SELECT_ALL = getInternalColumnByName("selectAll"); + this.PARAMETER_SQL = getInternalColumnByName("parameter_sql"); + this.PARENT_ID = getInternalColumnByName("parent_id"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/StretchyReportParameter.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/StretchyReportParameter.java new file mode 100644 index 00000000..921d51c1 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/StretchyReportParameter.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class StretchyReportParameter extends AbstractTable { + + public final Column ID; + + public final Column REPORT_ID; + + public final Column PARAMETER_ID; + + public final Column REPORT_PARAMETER_NAME; + + public static StretchyReportParameter staticInitialize(DataContext dataContext) { + return new StretchyReportParameter(dataContext); + } + + private StretchyReportParameter(DataContext dataContext) { + super(dataContext, "stretchy_report_parameter"); + this.ID = getInternalColumnByName("id"); + this.REPORT_ID = getInternalColumnByName("report_id"); + this.PARAMETER_ID = getInternalColumnByName("parameter_id"); + this.REPORT_PARAMETER_NAME = getInternalColumnByName("report_parameter_name"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/Topic.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/Topic.java new file mode 100644 index 00000000..c283568d --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/Topic.java @@ -0,0 +1,35 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class Topic extends AbstractTable { + + public final Column ID; + + public final Column TITLE; + + public final Column ENABLED; + + public final Column ENTITY_ID; + + public final Column ENTITY_TYPE; + + public final Column MEMBER_TYPE; + + public static Topic staticInitialize(DataContext dataContext) { + return new Topic(dataContext); + } + + private Topic(DataContext dataContext) { + super(dataContext, "topic"); + this.ID = getInternalColumnByName("id"); + this.TITLE = getInternalColumnByName("title"); + this.ENABLED = getInternalColumnByName("enabled"); + this.ENTITY_ID = getInternalColumnByName("entity_id"); + this.ENTITY_TYPE = getInternalColumnByName("entity_type"); + this.MEMBER_TYPE = getInternalColumnByName("member_type"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/TopicSubscriber.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/TopicSubscriber.java new file mode 100644 index 00000000..d2e21da9 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/TopicSubscriber.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class TopicSubscriber extends AbstractTable { + + public final Column ID; + + public final Column TOPIC_ID; + + public final Column USER_ID; + + public final Column SUBSCRIPTION_DATE; + + public static TopicSubscriber staticInitialize(DataContext dataContext) { + return new TopicSubscriber(dataContext); + } + + private TopicSubscriber(DataContext dataContext) { + super(dataContext, "topic_subscriber"); + this.ID = getInternalColumnByName("id"); + this.TOPIC_ID = getInternalColumnByName("topic_id"); + this.USER_ID = getInternalColumnByName("user_id"); + this.SUBSCRIPTION_DATE = getInternalColumnByName("subscription_date"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/TwoFactorAccessToken.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/TwoFactorAccessToken.java new file mode 100644 index 00000000..44ae0c17 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/TwoFactorAccessToken.java @@ -0,0 +1,35 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class TwoFactorAccessToken extends AbstractTable { + + public final Column ID; + + public final Column TOKEN; + + public final Column APP_USER_ID; + + public final Column VALID_FROM; + + public final Column VALID_TO; + + public final Column ENABLED; + + public static TwoFactorAccessToken staticInitialize(DataContext dataContext) { + return new TwoFactorAccessToken(dataContext); + } + + private TwoFactorAccessToken(DataContext dataContext) { + super(dataContext, "twofactor_access_token"); + this.ID = getInternalColumnByName("id"); + this.TOKEN = getInternalColumnByName("token"); + this.APP_USER_ID = getInternalColumnByName("appuser_id"); + this.VALID_FROM = getInternalColumnByName("valid_from"); + this.VALID_TO = getInternalColumnByName("valid_to"); + this.ENABLED = getInternalColumnByName("enabled"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/TwoFactorConfiguration.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/TwoFactorConfiguration.java new file mode 100644 index 00000000..cce5e24e --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/TwoFactorConfiguration.java @@ -0,0 +1,26 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class TwoFactorConfiguration extends AbstractTable { + + public final Column ID; + + public final Column NAME; + + public final Column VALUE; + + public static TwoFactorConfiguration staticInitialize(DataContext dataContext) { + return new TwoFactorConfiguration(dataContext); + } + + private TwoFactorConfiguration(DataContext dataContext) { + super(dataContext, "twofactor_configuration"); + this.ID = getInternalColumnByName("id"); + this.NAME = getInternalColumnByName("name"); + this.VALUE = getInternalColumnByName("value"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/XRegisteredTable.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/XRegisteredTable.java new file mode 100644 index 00000000..60111e0f --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/XRegisteredTable.java @@ -0,0 +1,26 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class XRegisteredTable extends AbstractTable { + + public final Column REGISTERED_TABLE_NAME; + + public final Column APPLICATION_TABLE_NAME; + + public final Column CATEGORY; + + public static XRegisteredTable staticInitialize(DataContext dataContext) { + return new XRegisteredTable(dataContext); + } + + private XRegisteredTable(DataContext dataContext) { + super(dataContext, "x_registered_table"); + this.REGISTERED_TABLE_NAME = getInternalColumnByName("registered_table_name"); + this.APPLICATION_TABLE_NAME = getInternalColumnByName("application_table_name"); + this.CATEGORY = getInternalColumnByName("category"); + } + +} diff --git a/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/XTableColumnCodeMapping.java b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/XTableColumnCodeMapping.java new file mode 100644 index 00000000..3ec6c4e0 --- /dev/null +++ b/bank-base-dao/src/main/java/com/angkorteam/bank/dao/base/meta/XTableColumnCodeMapping.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.base.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class XTableColumnCodeMapping extends AbstractTable { + + public final Column COLUMN_ALIAS_NAME; + + public final Column CODE_ID; + + public static XTableColumnCodeMapping staticInitialize(DataContext dataContext) { + return new XTableColumnCodeMapping(dataContext); + } + + private XTableColumnCodeMapping(DataContext dataContext) { + super(dataContext, "x_table_column_code_mappings"); + this.COLUMN_ALIAS_NAME = getInternalColumnByName("column_alias_name"); + this.CODE_ID = getInternalColumnByName("code_id"); + } + +} diff --git a/bank-base-dao/src/main/resources/V101__add_mulitplesof_to_account_transfers_table.xml b/bank-base-dao/src/main/resources/V101__add_mulitplesof_to_account_transfers_table.xml new file mode 100644 index 00000000..e8cb7af9 --- /dev/null +++ b/bank-base-dao/src/main/resources/V101__add_mulitplesof_to_account_transfers_table.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V102__client_attendance_tables.xml b/bank-base-dao/src/main/resources/V102__client_attendance_tables.xml new file mode 100644 index 00000000..a4c152b8 --- /dev/null +++ b/bank-base-dao/src/main/resources/V102__client_attendance_tables.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V103__cluster_support_for_batch_jobs.xml b/bank-base-dao/src/main/resources/V103__cluster_support_for_batch_jobs.xml new file mode 100644 index 00000000..94252253 --- /dev/null +++ b/bank-base-dao/src/main/resources/V103__cluster_support_for_batch_jobs.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V105_1__track_loan_transaction_against_office.xml b/bank-base-dao/src/main/resources/V105_1__track_loan_transaction_against_office.xml new file mode 100644 index 00000000..7f72abc4 --- /dev/null +++ b/bank-base-dao/src/main/resources/V105_1__track_loan_transaction_against_office.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V105_2__track_loan_transaction_against_office.xml b/bank-base-dao/src/main/resources/V105_2__track_loan_transaction_against_office.xml new file mode 100644 index 00000000..145fa34d --- /dev/null +++ b/bank-base-dao/src/main/resources/V105_2__track_loan_transaction_against_office.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V107__datatable_code_mappings.xml b/bank-base-dao/src/main/resources/V107__datatable_code_mappings.xml new file mode 100644 index 00000000..9f17569a --- /dev/null +++ b/bank-base-dao/src/main/resources/V107__datatable_code_mappings.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V108__client_has_transfer_office.xml b/bank-base-dao/src/main/resources/V108__client_has_transfer_office.xml new file mode 100644 index 00000000..160a59fd --- /dev/null +++ b/bank-base-dao/src/main/resources/V108__client_has_transfer_office.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V109__account_transfer_withdrawal_fee_configuration.xml b/bank-base-dao/src/main/resources/V109__account_transfer_withdrawal_fee_configuration.xml new file mode 100644 index 00000000..4acd3009 --- /dev/null +++ b/bank-base-dao/src/main/resources/V109__account_transfer_withdrawal_fee_configuration.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V10__interest-posting-fields-for-savings-002.xml b/bank-base-dao/src/main/resources/V10__interest-posting-fields-for-savings-002.xml new file mode 100644 index 00000000..6981c519 --- /dev/null +++ b/bank-base-dao/src/main/resources/V10__interest-posting-fields-for-savings-002.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V11__add-payment-details.xml b/bank-base-dao/src/main/resources/V11__add-payment-details.xml new file mode 100644 index 00000000..13dd323f --- /dev/null +++ b/bank-base-dao/src/main/resources/V11__add-payment-details.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V12__add_external_id_to_couple_of_tables.xml b/bank-base-dao/src/main/resources/V12__add_external_id_to_couple_of_tables.xml new file mode 100644 index 00000000..35f95459 --- /dev/null +++ b/bank-base-dao/src/main/resources/V12__add_external_id_to_couple_of_tables.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V14__rename_status_id_to_enum-001.xml b/bank-base-dao/src/main/resources/V14__rename_status_id_to_enum-001.xml new file mode 100644 index 00000000..faf66d1a --- /dev/null +++ b/bank-base-dao/src/main/resources/V14__rename_status_id_to_enum-001.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V16__drop_min_max_column_on_loan_table.xml b/bank-base-dao/src/main/resources/V16__drop_min_max_column_on_loan_table.xml new file mode 100644 index 00000000..de936ad5 --- /dev/null +++ b/bank-base-dao/src/main/resources/V16__drop_min_max_column_on_loan_table.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V17__update_stretchy_reporting_ddl-001.xml b/bank-base-dao/src/main/resources/V17__update_stretchy_reporting_ddl-001.xml new file mode 100644 index 00000000..317499b0 --- /dev/null +++ b/bank-base-dao/src/main/resources/V17__update_stretchy_reporting_ddl-001.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V17__update_stretchy_reporting_ddl-003.xml b/bank-base-dao/src/main/resources/V17__update_stretchy_reporting_ddl-003.xml new file mode 100644 index 00000000..fd337364 --- /dev/null +++ b/bank-base-dao/src/main/resources/V17__update_stretchy_reporting_ddl-003.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V17__update_stretchy_reporting_ddl-005.xml b/bank-base-dao/src/main/resources/V17__update_stretchy_reporting_ddl-005.xml new file mode 100644 index 00000000..1d209a53 --- /dev/null +++ b/bank-base-dao/src/main/resources/V17__update_stretchy_reporting_ddl-005.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V17__update_stretchy_reporting_ddl-007.xml b/bank-base-dao/src/main/resources/V17__update_stretchy_reporting_ddl-007.xml new file mode 100644 index 00000000..382e7a77 --- /dev/null +++ b/bank-base-dao/src/main/resources/V17__update_stretchy_reporting_ddl-007.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V1__mifosplatform-core-ddl-latest-002.xml b/bank-base-dao/src/main/resources/V1__mifosplatform-core-ddl-latest-002.xml new file mode 100644 index 00000000..f34a75ba --- /dev/null +++ b/bank-base-dao/src/main/resources/V1__mifosplatform-core-ddl-latest-002.xml @@ -0,0 +1,1131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V21__activation-permissions-for-clients-002.xml b/bank-base-dao/src/main/resources/V21__activation-permissions-for-clients-002.xml new file mode 100644 index 00000000..8b28ad2f --- /dev/null +++ b/bank-base-dao/src/main/resources/V21__activation-permissions-for-clients-002.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V22__alter-group-for-consistency-add-permissions-002.xml b/bank-base-dao/src/main/resources/V22__alter-group-for-consistency-add-permissions-002.xml new file mode 100644 index 00000000..e673ba27 --- /dev/null +++ b/bank-base-dao/src/main/resources/V22__alter-group-for-consistency-add-permissions-002.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V23__remove-enable-disable-configuration-for-client-group-status-002.xml b/bank-base-dao/src/main/resources/V23__remove-enable-disable-configuration-for-client-group-status-002.xml new file mode 100644 index 00000000..75ee0cd7 --- /dev/null +++ b/bank-base-dao/src/main/resources/V23__remove-enable-disable-configuration-for-client-group-status-002.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V24__add-group-client-foreign-key-constraint-in-loan-table.xml b/bank-base-dao/src/main/resources/V24__add-group-client-foreign-key-constraint-in-loan-table.xml new file mode 100644 index 00000000..498a39f3 --- /dev/null +++ b/bank-base-dao/src/main/resources/V24__add-group-client-foreign-key-constraint-in-loan-table.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V26__add-support-for-withdrawal-fees-on-savings.xml b/bank-base-dao/src/main/resources/V26__add-support-for-withdrawal-fees-on-savings.xml new file mode 100644 index 00000000..df0e330d --- /dev/null +++ b/bank-base-dao/src/main/resources/V26__add-support-for-withdrawal-fees-on-savings.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V27__add-loan-type-column-to-loan-table.xml b/bank-base-dao/src/main/resources/V27__add-loan-type-column-to-loan-table.xml new file mode 100644 index 00000000..4f7b4426 --- /dev/null +++ b/bank-base-dao/src/main/resources/V27__add-loan-type-column-to-loan-table.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V28__accounting-abstractions-and-autoposting.xml b/bank-base-dao/src/main/resources/V28__accounting-abstractions-and-autoposting.xml new file mode 100644 index 00000000..f27f5fc0 --- /dev/null +++ b/bank-base-dao/src/main/resources/V28__accounting-abstractions-and-autoposting.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V29__add-support-for-annual-fees-on-savings.xml b/bank-base-dao/src/main/resources/V29__add-support-for-annual-fees-on-savings.xml new file mode 100644 index 00000000..fc8f3983 --- /dev/null +++ b/bank-base-dao/src/main/resources/V29__add-support-for-annual-fees-on-savings.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V30__add-referenceNumber-to-acc_gl_journal_entry.xml b/bank-base-dao/src/main/resources/V30__add-referenceNumber-to-acc_gl_journal_entry.xml new file mode 100644 index 00000000..6260000e --- /dev/null +++ b/bank-base-dao/src/main/resources/V30__add-referenceNumber-to-acc_gl_journal_entry.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V31__drop-autopostings.xml b/bank-base-dao/src/main/resources/V31__drop-autopostings.xml new file mode 100644 index 00000000..98767fc1 --- /dev/null +++ b/bank-base-dao/src/main/resources/V31__drop-autopostings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V33__drop_unique_check_on_stretchy_report_parameter.xml b/bank-base-dao/src/main/resources/V33__drop_unique_check_on_stretchy_report_parameter.xml new file mode 100644 index 00000000..58cb5d97 --- /dev/null +++ b/bank-base-dao/src/main/resources/V33__drop_unique_check_on_stretchy_report_parameter.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V34__add_unique_check_on_stretchy_report_parameter.xml b/bank-base-dao/src/main/resources/V34__add_unique_check_on_stretchy_report_parameter.xml new file mode 100644 index 00000000..c44f14fd --- /dev/null +++ b/bank-base-dao/src/main/resources/V34__add_unique_check_on_stretchy_report_parameter.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V35__add_hierarchy_column_for_acc_gl_account.xml b/bank-base-dao/src/main/resources/V35__add_hierarchy_column_for_acc_gl_account.xml new file mode 100644 index 00000000..927ee435 --- /dev/null +++ b/bank-base-dao/src/main/resources/V35__add_hierarchy_column_for_acc_gl_account.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V36__add_tag_id_column_for_acc_gl_account-001.xml b/bank-base-dao/src/main/resources/V36__add_tag_id_column_for_acc_gl_account-001.xml new file mode 100644 index 00000000..019506ac --- /dev/null +++ b/bank-base-dao/src/main/resources/V36__add_tag_id_column_for_acc_gl_account-001.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V39__payment-channels-updates-002.xml b/bank-base-dao/src/main/resources/V39__payment-channels-updates-002.xml new file mode 100644 index 00000000..e356fcd5 --- /dev/null +++ b/bank-base-dao/src/main/resources/V39__payment-channels-updates-002.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V39__payment-channels-updates-004.xml b/bank-base-dao/src/main/resources/V39__payment-channels-updates-004.xml new file mode 100644 index 00000000..5df542cf --- /dev/null +++ b/bank-base-dao/src/main/resources/V39__payment-channels-updates-004.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V42__Add_default_value_for_id_for_acc_accounting_rule.xml b/bank-base-dao/src/main/resources/V42__Add_default_value_for_id_for_acc_accounting_rule.xml new file mode 100644 index 00000000..2710cd41 --- /dev/null +++ b/bank-base-dao/src/main/resources/V42__Add_default_value_for_id_for_acc_accounting_rule.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V43_1__accounting-for-savings.xml b/bank-base-dao/src/main/resources/V43_1__accounting-for-savings.xml new file mode 100644 index 00000000..ef66a497 --- /dev/null +++ b/bank-base-dao/src/main/resources/V43_1__accounting-for-savings.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V43_2__accounting-for-savings.xml b/bank-base-dao/src/main/resources/V43_2__accounting-for-savings.xml new file mode 100644 index 00000000..550e67b9 --- /dev/null +++ b/bank-base-dao/src/main/resources/V43_2__accounting-for-savings.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V44__document-increase-size-of-column-type.xml b/bank-base-dao/src/main/resources/V44__document-increase-size-of-column-type.xml new file mode 100644 index 00000000..b5564440 --- /dev/null +++ b/bank-base-dao/src/main/resources/V44__document-increase-size-of-column-type.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V45__create_acc_rule_tags_table.xml b/bank-base-dao/src/main/resources/V45__create_acc_rule_tags_table.xml new file mode 100644 index 00000000..f916ee46 --- /dev/null +++ b/bank-base-dao/src/main/resources/V45__create_acc_rule_tags_table.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V47__staff-hierarchy-link-to-users.xml b/bank-base-dao/src/main/resources/V47__staff-hierarchy-link-to-users.xml new file mode 100644 index 00000000..fa6ef838 --- /dev/null +++ b/bank-base-dao/src/main/resources/V47__staff-hierarchy-link-to-users.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V48_1__adding-S3-Support.xml b/bank-base-dao/src/main/resources/V48_1__adding-S3-Support.xml new file mode 100644 index 00000000..6f810b1f --- /dev/null +++ b/bank-base-dao/src/main/resources/V48_1__adding-S3-Support.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V48_2__adding-S3-Support.xml b/bank-base-dao/src/main/resources/V48_2__adding-S3-Support.xml new file mode 100644 index 00000000..0a9142cd --- /dev/null +++ b/bank-base-dao/src/main/resources/V48_2__adding-S3-Support.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V48_3__adding-S3-Support.xml b/bank-base-dao/src/main/resources/V48_3__adding-S3-Support.xml new file mode 100644 index 00000000..1a258f83 --- /dev/null +++ b/bank-base-dao/src/main/resources/V48_3__adding-S3-Support.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V49__track-loan-charge-payment-transactions.xml b/bank-base-dao/src/main/resources/V49__track-loan-charge-payment-transactions.xml new file mode 100644 index 00000000..088ecb80 --- /dev/null +++ b/bank-base-dao/src/main/resources/V49__track-loan-charge-payment-transactions.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V50__add-grace-settings-to-loan-product.xml b/bank-base-dao/src/main/resources/V50__add-grace-settings-to-loan-product.xml new file mode 100644 index 00000000..29bafd11 --- /dev/null +++ b/bank-base-dao/src/main/resources/V50__add-grace-settings-to-loan-product.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V51__track-additional-details-related-to-installment-performance.xml b/bank-base-dao/src/main/resources/V51__track-additional-details-related-to-installment-performance.xml new file mode 100644 index 00000000..b4c86ab3 --- /dev/null +++ b/bank-base-dao/src/main/resources/V51__track-additional-details-related-to-installment-performance.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V52__add_boolean_support_cols_to_acc_accounting_rule.xml b/bank-base-dao/src/main/resources/V52__add_boolean_support_cols_to_acc_accounting_rule.xml new file mode 100644 index 00000000..5e4a324f --- /dev/null +++ b/bank-base-dao/src/main/resources/V52__add_boolean_support_cols_to_acc_accounting_rule.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V53__track-advance-and-late-payments-on-installment.xml b/bank-base-dao/src/main/resources/V53__track-advance-and-late-payments-on-installment.xml new file mode 100644 index 00000000..e6830b1a --- /dev/null +++ b/bank-base-dao/src/main/resources/V53__track-advance-and-late-payments-on-installment.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V54__charge-to-income-account-mappings.xml b/bank-base-dao/src/main/resources/V54__charge-to-income-account-mappings.xml new file mode 100644 index 00000000..12e79372 --- /dev/null +++ b/bank-base-dao/src/main/resources/V54__charge-to-income-account-mappings.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V55__add-additional-transaction-processing-strategies.xml b/bank-base-dao/src/main/resources/V55__add-additional-transaction-processing-strategies.xml new file mode 100644 index 00000000..ced7e969 --- /dev/null +++ b/bank-base-dao/src/main/resources/V55__add-additional-transaction-processing-strategies.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V56__track-overpaid-amount-on-loans.xml b/bank-base-dao/src/main/resources/V56__track-overpaid-amount-on-loans.xml new file mode 100644 index 00000000..96af1495 --- /dev/null +++ b/bank-base-dao/src/main/resources/V56__track-overpaid-amount-on-loans.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V57__add_default_values_to_debit_and_credit_accounts_acc_accounting_rule.xml b/bank-base-dao/src/main/resources/V57__add_default_values_to_debit_and_credit_accounts_acc_accounting_rule.xml new file mode 100644 index 00000000..64bc17fe --- /dev/null +++ b/bank-base-dao/src/main/resources/V57__add_default_values_to_debit_and_credit_accounts_acc_accounting_rule.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V58__create-holiday-tables_changed.xml b/bank-base-dao/src/main/resources/V58__create-holiday-tables_changed.xml new file mode 100644 index 00000000..cb50094c --- /dev/null +++ b/bank-base-dao/src/main/resources/V58__create-holiday-tables_changed.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V59__add_group_roles_schema_and_permissions.xml b/bank-base-dao/src/main/resources/V59__add_group_roles_schema_and_permissions.xml new file mode 100644 index 00000000..455ecb01 --- /dev/null +++ b/bank-base-dao/src/main/resources/V59__add_group_roles_schema_and_permissions.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V5__update-savings-product-and-account-tables.xml b/bank-base-dao/src/main/resources/V5__update-savings-product-and-account-tables.xml new file mode 100644 index 00000000..183e27b0 --- /dev/null +++ b/bank-base-dao/src/main/resources/V5__update-savings-product-and-account-tables.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V62__add_staff_id_to_m_client_changed.xml b/bank-base-dao/src/main/resources/V62__add_staff_id_to_m_client_changed.xml new file mode 100644 index 00000000..6471e43d --- /dev/null +++ b/bank-base-dao/src/main/resources/V62__add_staff_id_to_m_client_changed.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V63__add_sync_disbursement_with_meeting_column_to_loan.xml b/bank-base-dao/src/main/resources/V63__add_sync_disbursement_with_meeting_column_to_loan.xml new file mode 100644 index 00000000..beb32968 --- /dev/null +++ b/bank-base-dao/src/main/resources/V63__add_sync_disbursement_with_meeting_column_to_loan.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V66__client_close_functionality.xml b/bank-base-dao/src/main/resources/V66__client_close_functionality.xml new file mode 100644 index 00000000..9348af9b --- /dev/null +++ b/bank-base-dao/src/main/resources/V66__client_close_functionality.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V67__loans_in_advance_table.xml b/bank-base-dao/src/main/resources/V67__loans_in_advance_table.xml new file mode 100644 index 00000000..03815532 --- /dev/null +++ b/bank-base-dao/src/main/resources/V67__loans_in_advance_table.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V6__add_min_max_principal_column_to_loan.xml b/bank-base-dao/src/main/resources/V6__add_min_max_principal_column_to_loan.xml new file mode 100644 index 00000000..5056ab1f --- /dev/null +++ b/bank-base-dao/src/main/resources/V6__add_min_max_principal_column_to_loan.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V72__add_m_loan_counter_changes.xml b/bank-base-dao/src/main/resources/V72__add_m_loan_counter_changes.xml new file mode 100644 index 00000000..f4c3e7b3 --- /dev/null +++ b/bank-base-dao/src/main/resources/V72__add_m_loan_counter_changes.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V73__add_repayments_rescheduled_to_and_processed_column_to_holiday.xml b/bank-base-dao/src/main/resources/V73__add_repayments_rescheduled_to_and_processed_column_to_holiday.xml new file mode 100644 index 00000000..b7486b52 --- /dev/null +++ b/bank-base-dao/src/main/resources/V73__add_repayments_rescheduled_to_and_processed_column_to_holiday.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V74__alter_m_loan_counter_table_add_group.xml b/bank-base-dao/src/main/resources/V74__alter_m_loan_counter_table_add_group.xml new file mode 100644 index 00000000..374f9560 --- /dev/null +++ b/bank-base-dao/src/main/resources/V74__alter_m_loan_counter_table_add_group.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V77__alter_m_product_loan_changes.xml b/bank-base-dao/src/main/resources/V77__alter_m_product_loan_changes.xml new file mode 100644 index 00000000..53b3012d --- /dev/null +++ b/bank-base-dao/src/main/resources/V77__alter_m_product_loan_changes.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V79__schedule_jobs_tables.xml b/bank-base-dao/src/main/resources/V79__schedule_jobs_tables.xml new file mode 100644 index 00000000..ae571b3f --- /dev/null +++ b/bank-base-dao/src/main/resources/V79__schedule_jobs_tables.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V80__schedule_jobs_tables_updates.xml b/bank-base-dao/src/main/resources/V80__schedule_jobs_tables_updates.xml new file mode 100644 index 00000000..900583cf --- /dev/null +++ b/bank-base-dao/src/main/resources/V80__schedule_jobs_tables_updates.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V81__savings_related_changes.xml b/bank-base-dao/src/main/resources/V81__savings_related_changes.xml new file mode 100644 index 00000000..f1b4ad1e --- /dev/null +++ b/bank-base-dao/src/main/resources/V81__savings_related_changes.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V82__schedule_jobs_tables_updates_for_running_status.xml b/bank-base-dao/src/main/resources/V82__schedule_jobs_tables_updates_for_running_status.xml new file mode 100644 index 00000000..38e25ba8 --- /dev/null +++ b/bank-base-dao/src/main/resources/V82__schedule_jobs_tables_updates_for_running_status.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V83__non-working-days-table.xml b/bank-base-dao/src/main/resources/V83__non-working-days-table.xml new file mode 100644 index 00000000..cdcbac36 --- /dev/null +++ b/bank-base-dao/src/main/resources/V83__non-working-days-table.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V85__product_mix_related_changes.xml b/bank-base-dao/src/main/resources/V85__product_mix_related_changes.xml new file mode 100644 index 00000000..907e74b1 --- /dev/null +++ b/bank-base-dao/src/main/resources/V85__product_mix_related_changes.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V88__added_update_constrain_for_scheduler_jobs.xml b/bank-base-dao/src/main/resources/V88__added_update_constrain_for_scheduler_jobs.xml new file mode 100644 index 00000000..a82ad77f --- /dev/null +++ b/bank-base-dao/src/main/resources/V88__added_update_constrain_for_scheduler_jobs.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V89__added_scheduler_group.xml b/bank-base-dao/src/main/resources/V89__added_scheduler_group.xml new file mode 100644 index 00000000..742ed8d3 --- /dev/null +++ b/bank-base-dao/src/main/resources/V89__added_scheduler_group.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V93__loan_transaction_external_id.xml b/bank-base-dao/src/main/resources/V93__loan_transaction_external_id.xml new file mode 100644 index 00000000..66d809af --- /dev/null +++ b/bank-base-dao/src/main/resources/V93__loan_transaction_external_id.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V94__added_savings_accont_type.xml b/bank-base-dao/src/main/resources/V94__added_savings_accont_type.xml new file mode 100644 index 00000000..1fb7bc12 --- /dev/null +++ b/bank-base-dao/src/main/resources/V94__added_savings_accont_type.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V96_1__savings_accounts_transfers_table.xml b/bank-base-dao/src/main/resources/V96_1__savings_accounts_transfers_table.xml new file mode 100644 index 00000000..65e19f79 --- /dev/null +++ b/bank-base-dao/src/main/resources/V96_1__savings_accounts_transfers_table.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V96_2__savings_accounts_transfers_table.xml b/bank-base-dao/src/main/resources/V96_2__savings_accounts_transfers_table.xml new file mode 100644 index 00000000..8f91e9fc --- /dev/null +++ b/bank-base-dao/src/main/resources/V96_2__savings_accounts_transfers_table.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V98__added_currency_roundof_for_multipleof.xml b/bank-base-dao/src/main/resources/V98__added_currency_roundof_for_multipleof.xml new file mode 100644 index 00000000..86d3a9e9 --- /dev/null +++ b/bank-base-dao/src/main/resources/V98__added_currency_roundof_for_multipleof.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-base-dao/src/main/resources/V9__add_min_max_constraint_column_to_loan_loanproduct.xml b/bank-base-dao/src/main/resources/V9__add_min_max_constraint_column_to_loan_loanproduct.xml new file mode 100644 index 00000000..78b52d9a --- /dev/null +++ b/bank-base-dao/src/main/resources/V9__add_min_max_constraint_column_to_loan_loanproduct.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-tenant-dao/.gitignore b/bank-tenant-dao/.gitignore new file mode 100644 index 00000000..f51e98a8 --- /dev/null +++ b/bank-tenant-dao/.gitignore @@ -0,0 +1,6 @@ +.idea/ +/target/ +.classpath +.project +/.settings/ +bank-tenant-dao.iml diff --git a/bank-tenant-dao/README.txt b/bank-tenant-dao/README.txt new file mode 100644 index 00000000..6182be93 --- /dev/null +++ b/bank-tenant-dao/README.txt @@ -0,0 +1,14 @@ +mvn clean install \ + -Ddb.name=bank_infrastructure \ + -Ddb.url=jdbc:mysql://192.168.1.6:3306/bank_infrastructure?useSSL=true \ + -Ddb.user=bank \ + -Ddb.password=password \ + -Ddb.driver=com.mysql.cj.jdbc.Driver + +mvn flyway:migrate \ + -Ddb.name=bank_infrastructure \ + -Ddb.tenant.name=bank \ + -Ddb.url=jdbc:mysql://192.168.1.6:3306/bank_infrastructure?useSSL=true \ + -Ddb.user=bank \ + -Ddb.password=password \ + -Ddb.driver=com.mysql.cj.jdbc.Driver diff --git a/bank-tenant-dao/pom.xml b/bank-tenant-dao/pom.xml new file mode 100644 index 00000000..acf27f83 --- /dev/null +++ b/bank-tenant-dao/pom.xml @@ -0,0 +1,132 @@ + + + + 4.0.0 + + com.angkorteam.bank + bank-tenant-dao + 1.0 + jar + + + 2.10 + 3.8.1 + 11 + UTF-8 + 2.0 + 5.3.2 + 7.3.2 + 4.2.2 + 2.8.0 + 30.1-jre + 8.0.22 + + + + + + com.angkorteam.webui + metamodel + 1.0.0 + + + + com.angkorteam.webui + jdbc-query + 1.0.0 + + + + mysql + mysql-connector-java + ${mysql.version} + + + + + + + db-ddl + + + + org.flywaydb + flyway-maven-plugin + ${flyway.version} + + + + mysql + mysql-connector-java + ${mysql.version} + + + + + + compile + + migrate + + + + + + ${db.name} + ${db.url} + ${db.user} + ${db.driver} + ${db.password} + + classpath:com/angkorteam/bank/dao/tenant/flyway + + false + true + + + + + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${java.version} + ${java.version} + ${project.build.sourceEncoding} + true + true + + + + + org.apache.maven.plugins + maven-eclipse-plugin + ${maven-eclipse-plugin.version} + + true + ${wtp.version} + + + .settings/org.eclipse.core.resources.prefs + + =${project.build.sourceEncoding}${line.separator}]]> + + + + + + + + + + diff --git a/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/Checksum.java b/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/Checksum.java new file mode 100644 index 00000000..dd15fe48 --- /dev/null +++ b/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/Checksum.java @@ -0,0 +1,11 @@ +package com.angkorteam.bank.dao.tenant; + +public interface Checksum { + + int V1__MifosPlatformSharedTenants = 1680841970; + int V2__ExternalizeConnectionProperties = 748232717; + int V3__DeadlockRetryProperties = 27144946; + int V4__IntroducedOltpIdReportIdColumnsAndTenantsServerConnectionTable = 1049018599; + int V5__AddSchemaConnectionParameters = 1328789478; + +} diff --git a/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/ChecksumProgram.java b/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/ChecksumProgram.java new file mode 100644 index 00000000..4f29693e --- /dev/null +++ b/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/ChecksumProgram.java @@ -0,0 +1,13 @@ +package com.angkorteam.bank.dao.tenant; + +import com.angkorteam.metamodel.utility.ChecksumUtility; + +import java.io.File; +import java.io.IOException; + +public class ChecksumProgram { + public static void main(String[] args) throws IOException { + File folder = new File("bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/flyway"); + ChecksumUtility.process(folder); + } +} diff --git a/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/RepairProgram.java b/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/RepairProgram.java new file mode 100644 index 00000000..123dc8a9 --- /dev/null +++ b/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/RepairProgram.java @@ -0,0 +1,16 @@ +package com.angkorteam.bank.dao.tenant; + +import com.angkorteam.metamodel.utility.LiquibaseUtility; +import org.xml.sax.SAXException; + +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.TransformerException; +import java.io.File; +import java.io.IOException; + +public class RepairProgram { + public static void main(String[] args) throws IOException, SAXException, ParserConfigurationException, TransformerException { + File folder = new File("bank-tenant-dao/src/main/resources"); + LiquibaseUtility.process(folder); + } +} diff --git a/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/flyway/V1__MifosPlatformSharedTenants.java b/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/flyway/V1__MifosPlatformSharedTenants.java new file mode 100644 index 00000000..3752432a --- /dev/null +++ b/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/flyway/V1__MifosPlatformSharedTenants.java @@ -0,0 +1,505 @@ +package com.angkorteam.bank.dao.tenant.flyway; + +import com.angkorteam.bank.dao.tenant.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.flywaydb.core.internal.jdbc.DriverDataSource; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V1__MifosPlatformSharedTenants extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V1__MifosPlatformSharedTenants + getInternalChecksum("V1__mifos-platform-shared-tenants-001.xml", + "V1__mifos-platform-shared-tenants-003.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + // sub change 001 + updateLiquibase("V1__mifos-platform-shared-tenants-001.xml"); + + dataContext.refreshSchemas(); + + // sub change 002 + DriverDataSource driver = (DriverDataSource) context.getConfiguration().getDataSource(); + String schemaName = System.getProperty("db.tenant.name"); + String url = driver.getUrl(); + String schemaServer = null; + String schemaServerPort = null; + url = url.substring(url.indexOf(":") + 1); + String type = url.substring(0, url.indexOf(":")); + url = url.substring(url.indexOf(":") + 1); + if ("mysql".equals(type)) { + url = url.substring(2, url.lastIndexOf("/")); + if (url.contains(":")) { + String temp[] = url.split(":"); + schemaServer = temp[0]; + schemaServerPort = temp[1]; + } else { + schemaServer = url; + schemaServerPort = "3306"; + } + } else if ("oracle".equals(type)) { + url = url.substring(url.indexOf("@")); + schemaServer = url.substring(0, url.indexOf(":")); + url = url.substring(url.indexOf(":") + 1); + schemaServerPort = url.substring(0, url.indexOf(":")); + } + dataContext.refreshSchemas(); + Table tenants = dataContext.getDefaultSchema().getTableByName("tenants"); + insert_tenants(named, tenants, 1, "default", "Default Demo Tenant", schemaName, "Asia/Kolkata", schemaServer, schemaServerPort, driver.getUser(), driver.getPassword(), "1"); + + // sub change 003 + updateLiquibase("V1__mifos-platform-shared-tenants-003.xml"); + + // sub change 004 + dataContext.refreshSchemas(); + Table timezones = dataContext.getDefaultSchema().getTableByName("timezones"); + insert_timezones(named, timezones, 1, "AD", "Europe/Andorra", ""); + insert_timezones(named, timezones, 2, "AE", "Asia/Dubai", ""); + insert_timezones(named, timezones, 3, "AF", "Asia/Kabul", ""); + insert_timezones(named, timezones, 4, "AG", "America/Antigua", ""); + insert_timezones(named, timezones, 5, "AI", "America/Anguilla", ""); + insert_timezones(named, timezones, 6, "AL", "Europe/Tirane", ""); + insert_timezones(named, timezones, 7, "AM", "Asia/Yerevan", ""); + insert_timezones(named, timezones, 8, "AO", "Africa/Luanda", ""); + insert_timezones(named, timezones, 9, "AQ", "Antarctica/McMurdo", "McMurdo Station, Ross Island"); + insert_timezones(named, timezones, 10, "AQ", "Antarctica/South_Pole", "Amundsen-Scott Station, South Pole"); + insert_timezones(named, timezones, 11, "AQ", "Antarctica/Rothera", "Rothera Station, Adelaide Island"); + insert_timezones(named, timezones, 12, "AQ", "Antarctica/Palmer", "Palmer Station, Anvers Island"); + insert_timezones(named, timezones, 13, "AQ", "Antarctica/Mawson", "Mawson Station, Holme Bay"); + insert_timezones(named, timezones, 14, "AQ", "Antarctica/Davis", "Davis Station, Vestfold Hills"); + insert_timezones(named, timezones, 15, "AQ", "Antarctica/Casey", "Casey Station, Bailey Peninsula"); + insert_timezones(named, timezones, 16, "AQ", "Antarctica/Vostok", "Vostok Station, Lake Vostok"); + insert_timezones(named, timezones, 17, "AQ", "Antarctica/DumontDUrville", "Dumont-dUrville Station, Terre Adelie"); + insert_timezones(named, timezones, 18, "AQ", "Antarctica/Syowa", "Syowa Station, E Ongul I"); + insert_timezones(named, timezones, 19, "AQ", "Antarctica/Macquarie", "Macquarie Island Station, Macquarie Island"); + insert_timezones(named, timezones, 20, "AR", "America/Argentina/Buenos_Aires", "Buenos Aires (BA, CF)"); + insert_timezones(named, timezones, 21, "AR", "America/Argentina/Cordoba", "most locations (CB, CC, CN, ER, FM, MN, SE, SF)"); + insert_timezones(named, timezones, 22, "AR", "America/Argentina/Salta", "(SA, LP, NQ, RN)"); + insert_timezones(named, timezones, 23, "AR", "America/Argentina/Jujuy", "Jujuy (JY)"); + insert_timezones(named, timezones, 24, "AR", "America/Argentina/Tucuman", "Tucuman (TM)"); + insert_timezones(named, timezones, 25, "AR", "America/Argentina/Catamarca", "Catamarca (CT), Chubut (CH)"); + insert_timezones(named, timezones, 26, "AR", "America/Argentina/La_Rioja", "La Rioja (LR)"); + insert_timezones(named, timezones, 27, "AR", "America/Argentina/San_Juan", "San Juan (SJ)"); + insert_timezones(named, timezones, 28, "AR", "America/Argentina/Mendoza", "Mendoza (MZ)"); + insert_timezones(named, timezones, 29, "AR", "America/Argentina/San_Luis", "San Luis (SL)"); + insert_timezones(named, timezones, 30, "AR", "America/Argentina/Rio_Gallegos", "Santa Cruz (SC)"); + insert_timezones(named, timezones, 31, "AR", "America/Argentina/Ushuaia", "Tierra del Fuego (TF)"); + insert_timezones(named, timezones, 32, "AS", "Pacific/Pago_Pago", ""); + insert_timezones(named, timezones, 33, "AT", "Europe/Vienna", ""); + insert_timezones(named, timezones, 34, "AU", "Australia/Lord_Howe", "Lord Howe Island"); + insert_timezones(named, timezones, 35, "AU", "Australia/Hobart", "Tasmania - most locations"); + insert_timezones(named, timezones, 36, "AU", "Australia/Currie", "Tasmania - King Island"); + insert_timezones(named, timezones, 37, "AU", "Australia/Melbourne", "Victoria"); + insert_timezones(named, timezones, 38, "AU", "Australia/Sydney", "New South Wales - most locations"); + insert_timezones(named, timezones, 39, "AU", "Australia/Broken_Hill", "New South Wales - Yancowinna"); + insert_timezones(named, timezones, 40, "AU", "Australia/Brisbane", "Queensland - most locations"); + insert_timezones(named, timezones, 41, "AU", "Australia/Lindeman", "Queensland - Holiday Islands"); + insert_timezones(named, timezones, 42, "AU", "Australia/Adelaide", "South Australia"); + insert_timezones(named, timezones, 43, "AU", "Australia/Darwin", "Northern Territory"); + insert_timezones(named, timezones, 44, "AU", "Australia/Perth", "Western Australia - most locations"); + insert_timezones(named, timezones, 45, "AU", "Australia/Eucla", "Western Australia - Eucla area"); + insert_timezones(named, timezones, 46, "AW", "America/Aruba", ""); + insert_timezones(named, timezones, 47, "AX", "Europe/Mariehamn", ""); + insert_timezones(named, timezones, 48, "AZ", "Asia/Baku", ""); + insert_timezones(named, timezones, 49, "BA", "Europe/Sarajevo", ""); + insert_timezones(named, timezones, 50, "BB", "America/Barbados", ""); + insert_timezones(named, timezones, 51, "BD", "Asia/Dhaka", ""); + insert_timezones(named, timezones, 52, "BE", "Europe/Brussels", ""); + insert_timezones(named, timezones, 53, "BF", "Africa/Ouagadougou", ""); + insert_timezones(named, timezones, 54, "BG", "Europe/Sofia", ""); + insert_timezones(named, timezones, 55, "BH", "Asia/Bahrain", ""); + insert_timezones(named, timezones, 56, "BI", "Africa/Bujumbura", ""); + insert_timezones(named, timezones, 57, "BJ", "Africa/Porto-Novo", ""); + insert_timezones(named, timezones, 58, "BL", "America/St_Barthelemy", ""); + insert_timezones(named, timezones, 59, "BM", "Atlantic/Bermuda", ""); + insert_timezones(named, timezones, 60, "BN", "Asia/Brunei", ""); + insert_timezones(named, timezones, 61, "BO", "America/La_Paz", ""); + insert_timezones(named, timezones, 62, "BQ", "America/Kralendijk", ""); + insert_timezones(named, timezones, 63, "BR", "America/Noronha", "Atlantic islands"); + insert_timezones(named, timezones, 64, "BR", "America/Belem", "Amapa, E Para"); + insert_timezones(named, timezones, 65, "BR", "America/Fortaleza", "NE Brazil (MA, PI, CE, RN, PB)"); + insert_timezones(named, timezones, 66, "BR", "America/Recife", "Pernambuco"); + insert_timezones(named, timezones, 67, "BR", "America/Araguaina", "Tocantins"); + insert_timezones(named, timezones, 68, "BR", "America/Maceio", "Alagoas, Sergipe"); + insert_timezones(named, timezones, 69, "BR", "America/Bahia", "Bahia"); + insert_timezones(named, timezones, 70, "BR", "America/Sao_Paulo", "S & SE Brazil (GO, DF, MG, ES, RJ, SP, PR, SC, RS)"); + insert_timezones(named, timezones, 71, "BR", "America/Campo_Grande", "Mato Grosso do Sul"); + insert_timezones(named, timezones, 72, "BR", "America/Cuiaba", "Mato Grosso"); + insert_timezones(named, timezones, 73, "BR", "America/Santarem", "W Para"); + insert_timezones(named, timezones, 74, "BR", "America/Porto_Velho", "Rondonia"); + insert_timezones(named, timezones, 75, "BR", "America/Boa_Vista", "Roraima"); + insert_timezones(named, timezones, 76, "BR", "America/Manaus", "E Amazonas"); + insert_timezones(named, timezones, 77, "BR", "America/Eirunepe", "W Amazonas"); + insert_timezones(named, timezones, 78, "BR", "America/Rio_Branco", "Acre"); + insert_timezones(named, timezones, 79, "BS", "America/Nassau", ""); + insert_timezones(named, timezones, 80, "BT", "Asia/Thimphu", ""); + insert_timezones(named, timezones, 81, "BW", "Africa/Gaborone", ""); + insert_timezones(named, timezones, 82, "BY", "Europe/Minsk", ""); + insert_timezones(named, timezones, 83, "BZ", "America/Belize", ""); + insert_timezones(named, timezones, 84, "CA", "America/St_Johns", "Newfoundland Time, including SE Labrador"); + insert_timezones(named, timezones, 85, "CA", "America/Halifax", "Atlantic Time - Nova Scotia (most places), PEI"); + insert_timezones(named, timezones, 86, "CA", "America/Glace_Bay", "Atlantic Time - Nova Scotia - places that did not observe DST 1966-1971"); + insert_timezones(named, timezones, 87, "CA", "America/Moncton", "Atlantic Time - New Brunswick"); + insert_timezones(named, timezones, 88, "CA", "America/Goose_Bay", "Atlantic Time - Labrador - most locations"); + insert_timezones(named, timezones, 89, "CA", "America/Blanc-Sablon", "Atlantic Standard Time - Quebec - Lower North Shore"); + insert_timezones(named, timezones, 90, "CA", "America/Montreal", "Eastern Time - Quebec - most locations"); + insert_timezones(named, timezones, 91, "CA", "America/Toronto", "Eastern Time - Ontario - most locations"); + insert_timezones(named, timezones, 92, "CA", "America/Nipigon", "Eastern Time - Ontario & Quebec - places that did not observe DST 1967-1973"); + insert_timezones(named, timezones, 93, "CA", "America/Thunder_Bay", "Eastern Time - Thunder Bay, Ontario"); + insert_timezones(named, timezones, 94, "CA", "America/Iqaluit", "Eastern Time - east Nunavut - most locations"); + insert_timezones(named, timezones, 95, "CA", "America/Pangnirtung", "Eastern Time - Pangnirtung, Nunavut"); + insert_timezones(named, timezones, 96, "CA", "America/Resolute", "Central Standard Time - Resolute, Nunavut"); + insert_timezones(named, timezones, 97, "CA", "America/Atikokan", "Eastern Standard Time - Atikokan, Ontario and Southampton I, Nunavut"); + insert_timezones(named, timezones, 98, "CA", "America/Rankin_Inlet", "Central Time - central Nunavut"); + insert_timezones(named, timezones, 99, "CA", "America/Winnipeg", "Central Time - Manitoba & west Ontario"); + insert_timezones(named, timezones, 100, "CA", "America/Rainy_River", "Central Time - Rainy River & Fort Frances, Ontario"); + insert_timezones(named, timezones, 101, "CA", "America/Regina", "Central Standard Time - Saskatchewan - most locations"); + insert_timezones(named, timezones, 102, "CA", "America/Swift_Current", "Central Standard Time - Saskatchewan - midwest"); + insert_timezones(named, timezones, 103, "CA", "America/Edmonton", "Mountain Time - Alberta, east British Columbia & west Saskatchewan"); + insert_timezones(named, timezones, 104, "CA", "America/Cambridge_Bay", "Mountain Time - west Nunavut"); + insert_timezones(named, timezones, 105, "CA", "America/Yellowknife", "Mountain Time - central Northwest Territories"); + insert_timezones(named, timezones, 106, "CA", "America/Inuvik", "Mountain Time - west Northwest Territories"); + insert_timezones(named, timezones, 107, "CA", "America/Creston", "Mountain Standard Time - Creston, British Columbia"); + insert_timezones(named, timezones, 108, "CA", "America/Dawson_Creek", "Mountain Standard Time - Dawson Creek & Fort Saint John, British Columbia"); + insert_timezones(named, timezones, 109, "CA", "America/Vancouver", "Pacific Time - west British Columbia"); + insert_timezones(named, timezones, 110, "CA", "America/Whitehorse", "Pacific Time - south Yukon"); + insert_timezones(named, timezones, 111, "CA", "America/Dawson", "Pacific Time - north Yukon"); + insert_timezones(named, timezones, 112, "CC", "Indian/Cocos", ""); + insert_timezones(named, timezones, 113, "CD", "Africa/Kinshasa", "west Dem. Rep. of Congo"); + insert_timezones(named, timezones, 114, "CD", "Africa/Lubumbashi", "east Dem. Rep. of Congo"); + insert_timezones(named, timezones, 115, "CF", "Africa/Bangui", ""); + insert_timezones(named, timezones, 116, "CG", "Africa/Brazzaville", ""); + insert_timezones(named, timezones, 117, "CH", "Europe/Zurich", ""); + insert_timezones(named, timezones, 118, "CI", "Africa/Abidjan", ""); + insert_timezones(named, timezones, 119, "CK", "Pacific/Rarotonga", ""); + insert_timezones(named, timezones, 120, "CL", "America/Santiago", "most locations"); + insert_timezones(named, timezones, 121, "CL", "Pacific/Easter", "Easter Island & Sala y Gomez"); + insert_timezones(named, timezones, 122, "CM", "Africa/Douala", ""); + insert_timezones(named, timezones, 123, "CN", "Asia/Shanghai", "east China - Beijing, Guangdong, Shanghai, etc."); + insert_timezones(named, timezones, 124, "CN", "Asia/Harbin", "Heilongjiang (except Mohe), Jilin"); + insert_timezones(named, timezones, 125, "CN", "Asia/Chongqing", "central China - Sichuan, Yunnan, Guangxi, Shaanxi, Guizhou, etc."); + insert_timezones(named, timezones, 126, "CN", "Asia/Urumqi", "most of Tibet & Xinjiang"); + insert_timezones(named, timezones, 127, "CN", "Asia/Kashgar", "west Tibet & Xinjiang"); + insert_timezones(named, timezones, 128, "CO", "America/Bogota", ""); + insert_timezones(named, timezones, 129, "CR", "America/Costa_Rica", ""); + insert_timezones(named, timezones, 130, "CU", "America/Havana", ""); + insert_timezones(named, timezones, 131, "CV", "Atlantic/Cape_Verde", ""); + insert_timezones(named, timezones, 132, "CW", "America/Curacao", ""); + insert_timezones(named, timezones, 133, "CX", "Indian/Christmas", ""); + insert_timezones(named, timezones, 134, "CY", "Asia/Nicosia", ""); + insert_timezones(named, timezones, 135, "CZ", "Europe/Prague", ""); + insert_timezones(named, timezones, 136, "DE", "Europe/Berlin", ""); + insert_timezones(named, timezones, 137, "DJ", "Africa/Djibouti", ""); + insert_timezones(named, timezones, 138, "DK", "Europe/Copenhagen", ""); + insert_timezones(named, timezones, 139, "DM", "America/Dominica", ""); + insert_timezones(named, timezones, 140, "DO", "America/Santo_Domingo", ""); + insert_timezones(named, timezones, 141, "DZ", "Africa/Algiers", ""); + insert_timezones(named, timezones, 142, "EC", "America/Guayaquil", "mainland"); + insert_timezones(named, timezones, 143, "EC", "Pacific/Galapagos", "Galapagos Islands"); + insert_timezones(named, timezones, 144, "EE", "Europe/Tallinn", ""); + insert_timezones(named, timezones, 145, "EG", "Africa/Cairo", ""); + insert_timezones(named, timezones, 146, "EH", "Africa/El_Aaiun", ""); + insert_timezones(named, timezones, 147, "ER", "Africa/Asmara", ""); + insert_timezones(named, timezones, 148, "ES", "Europe/Madrid", "mainland"); + insert_timezones(named, timezones, 149, "ES", "Africa/Ceuta", "Ceuta & Melilla"); + insert_timezones(named, timezones, 150, "ES", "Atlantic/Canary", "Canary Islands"); + insert_timezones(named, timezones, 151, "ET", "Africa/Addis_Ababa", ""); + insert_timezones(named, timezones, 152, "FI", "Europe/Helsinki", ""); + insert_timezones(named, timezones, 153, "FJ", "Pacific/Fiji", ""); + insert_timezones(named, timezones, 154, "FK", "Atlantic/Stanley", ""); + insert_timezones(named, timezones, 155, "FM", "Pacific/Chuuk", "Chuuk (Truk) and Yap"); + insert_timezones(named, timezones, 156, "FM", "Pacific/Pohnpei", "Pohnpei (Ponape)"); + insert_timezones(named, timezones, 157, "FM", "Pacific/Kosrae", "Kosrae"); + insert_timezones(named, timezones, 158, "FO", "Atlantic/Faroe", ""); + insert_timezones(named, timezones, 159, "FR", "Europe/Paris", ""); + insert_timezones(named, timezones, 160, "GA", "Africa/Libreville", ""); + insert_timezones(named, timezones, 161, "GB", "Europe/London", ""); + insert_timezones(named, timezones, 162, "GD", "America/Grenada", ""); + insert_timezones(named, timezones, 163, "GE", "Asia/Tbilisi", ""); + insert_timezones(named, timezones, 164, "GF", "America/Cayenne", ""); + insert_timezones(named, timezones, 165, "GG", "Europe/Guernsey", ""); + insert_timezones(named, timezones, 166, "GH", "Africa/Accra", ""); + insert_timezones(named, timezones, 167, "GI", "Europe/Gibraltar", ""); + insert_timezones(named, timezones, 168, "GL", "America/Godthab", "most locations"); + insert_timezones(named, timezones, 169, "GL", "America/Danmarkshavn", "east coast, north of Scoresbysund"); + insert_timezones(named, timezones, 170, "GL", "America/Scoresbysund", "Scoresbysund / Ittoqqortoormiit"); + insert_timezones(named, timezones, 171, "GL", "America/Thule", "Thule / Pituffik"); + insert_timezones(named, timezones, 172, "GM", "Africa/Banjul", ""); + insert_timezones(named, timezones, 173, "GN", "Africa/Conakry", ""); + insert_timezones(named, timezones, 174, "GP", "America/Guadeloupe", ""); + insert_timezones(named, timezones, 175, "GQ", "Africa/Malabo", ""); + insert_timezones(named, timezones, 176, "GR", "Europe/Athens", ""); + insert_timezones(named, timezones, 177, "GS", "Atlantic/South_Georgia", ""); + insert_timezones(named, timezones, 178, "GT", "America/Guatemala", ""); + insert_timezones(named, timezones, 179, "GU", "Pacific/Guam", ""); + insert_timezones(named, timezones, 180, "GW", "Africa/Bissau", ""); + insert_timezones(named, timezones, 181, "GY", "America/Guyana", ""); + insert_timezones(named, timezones, 182, "HK", "Asia/Hong_Kong", ""); + insert_timezones(named, timezones, 183, "HN", "America/Tegucigalpa", ""); + insert_timezones(named, timezones, 184, "HR", "Europe/Zagreb", ""); + insert_timezones(named, timezones, 185, "HT", "America/Port-au-Prince", ""); + insert_timezones(named, timezones, 186, "HU", "Europe/Budapest", ""); + insert_timezones(named, timezones, 187, "ID", "Asia/Jakarta", "Java & Sumatra"); + insert_timezones(named, timezones, 188, "ID", "Asia/Pontianak", "west & central Borneo"); + insert_timezones(named, timezones, 189, "ID", "Asia/Makassar", "east & south Borneo, Sulawesi (Celebes), Bali, Nusa Tengarra, west Timor"); + insert_timezones(named, timezones, 190, "ID", "Asia/Jayapura", "west New Guinea (Irian Jaya) & Malukus (Moluccas)"); + insert_timezones(named, timezones, 191, "IE", "Europe/Dublin", ""); + insert_timezones(named, timezones, 192, "IL", "Asia/Jerusalem", ""); + insert_timezones(named, timezones, 193, "IM", "Europe/Isle_of_Man", ""); + insert_timezones(named, timezones, 194, "IN", "Asia/Kolkata", ""); + insert_timezones(named, timezones, 195, "IO", "Indian/Chagos", ""); + insert_timezones(named, timezones, 196, "IQ", "Asia/Baghdad", ""); + insert_timezones(named, timezones, 197, "IR", "Asia/Tehran", ""); + insert_timezones(named, timezones, 198, "IS", "Atlantic/Reykjavik", ""); + insert_timezones(named, timezones, 199, "IT", "Europe/Rome", ""); + insert_timezones(named, timezones, 200, "JE", "Europe/Jersey", ""); + insert_timezones(named, timezones, 201, "JM", "America/Jamaica", ""); + insert_timezones(named, timezones, 202, "JO", "Asia/Amman", ""); + insert_timezones(named, timezones, 203, "JP", "Asia/Tokyo", ""); + insert_timezones(named, timezones, 204, "KE", "Africa/Nairobi", ""); + insert_timezones(named, timezones, 205, "KG", "Asia/Bishkek", ""); + insert_timezones(named, timezones, 206, "KH", "Asia/Phnom_Penh", ""); + insert_timezones(named, timezones, 207, "KI", "Pacific/Tarawa", "Gilbert Islands"); + insert_timezones(named, timezones, 208, "KI", "Pacific/Enderbury", "Phoenix Islands"); + insert_timezones(named, timezones, 209, "KI", "Pacific/Kiritimati", "Line Islands"); + insert_timezones(named, timezones, 210, "KM", "Indian/Comoro", ""); + insert_timezones(named, timezones, 211, "KN", "America/St_Kitts", ""); + insert_timezones(named, timezones, 212, "KP", "Asia/Pyongyang", ""); + insert_timezones(named, timezones, 213, "KR", "Asia/Seoul", ""); + insert_timezones(named, timezones, 214, "KW", "Asia/Kuwait", ""); + insert_timezones(named, timezones, 215, "KY", "America/Cayman", ""); + insert_timezones(named, timezones, 216, "KZ", "Asia/Almaty", "most locations"); + insert_timezones(named, timezones, 217, "KZ", "Asia/Qyzylorda", "Qyzylorda (Kyzylorda, Kzyl-Orda)"); + insert_timezones(named, timezones, 218, "KZ", "Asia/Aqtobe", "Aqtobe (Aktobe)"); + insert_timezones(named, timezones, 219, "KZ", "Asia/Aqtau", "Atyrau (Atirau, Guryev), Mangghystau (Mankistau)"); + insert_timezones(named, timezones, 220, "KZ", "Asia/Oral", "West Kazakhstan"); + insert_timezones(named, timezones, 221, "LA", "Asia/Vientiane", ""); + insert_timezones(named, timezones, 222, "LB", "Asia/Beirut", ""); + insert_timezones(named, timezones, 223, "LC", "America/St_Lucia", ""); + insert_timezones(named, timezones, 224, "LI", "Europe/Vaduz", ""); + insert_timezones(named, timezones, 225, "LK", "Asia/Colombo", ""); + insert_timezones(named, timezones, 226, "LR", "Africa/Monrovia", ""); + insert_timezones(named, timezones, 227, "LS", "Africa/Maseru", ""); + insert_timezones(named, timezones, 228, "LT", "Europe/Vilnius", ""); + insert_timezones(named, timezones, 229, "LU", "Europe/Luxembourg", ""); + insert_timezones(named, timezones, 230, "LV", "Europe/Riga", ""); + insert_timezones(named, timezones, 231, "LY", "Africa/Tripoli", ""); + insert_timezones(named, timezones, 232, "MA", "Africa/Casablanca", ""); + insert_timezones(named, timezones, 233, "MC", "Europe/Monaco", ""); + insert_timezones(named, timezones, 234, "MD", "Europe/Chisinau", ""); + insert_timezones(named, timezones, 235, "ME", "Europe/Podgorica", ""); + insert_timezones(named, timezones, 236, "MF", "America/Marigot", ""); + insert_timezones(named, timezones, 237, "MG", "Indian/Antananarivo", ""); + insert_timezones(named, timezones, 238, "MH", "Pacific/Majuro", "most locations"); + insert_timezones(named, timezones, 239, "MH", "Pacific/Kwajalein", "Kwajalein"); + insert_timezones(named, timezones, 240, "MK", "Europe/Skopje", ""); + insert_timezones(named, timezones, 241, "ML", "Africa/Bamako", ""); + insert_timezones(named, timezones, 242, "MM", "Asia/Rangoon", ""); + insert_timezones(named, timezones, 243, "MN", "Asia/Ulaanbaatar", "most locations"); + insert_timezones(named, timezones, 244, "MN", "Asia/Hovd", "Bayan-Olgiy, Govi-Altai, Hovd, Uvs, Zavkhan"); + insert_timezones(named, timezones, 245, "MN", "Asia/Choibalsan", "Dornod, Sukhbaatar"); + insert_timezones(named, timezones, 246, "MO", "Asia/Macau", ""); + insert_timezones(named, timezones, 247, "MP", "Pacific/Saipan", ""); + insert_timezones(named, timezones, 248, "MQ", "America/Martinique", ""); + insert_timezones(named, timezones, 249, "MR", "Africa/Nouakchott", ""); + insert_timezones(named, timezones, 250, "MS", "America/Montserrat", ""); + insert_timezones(named, timezones, 251, "MT", "Europe/Malta", ""); + insert_timezones(named, timezones, 252, "MU", "Indian/Mauritius", ""); + insert_timezones(named, timezones, 253, "MV", "Indian/Maldives", ""); + insert_timezones(named, timezones, 254, "MW", "Africa/Blantyre", ""); + insert_timezones(named, timezones, 255, "MX", "America/Mexico_City", "Central Time - most locations"); + insert_timezones(named, timezones, 256, "MX", "America/Cancun", "Central Time - Quintana Roo"); + insert_timezones(named, timezones, 257, "MX", "America/Merida", "Central Time - Campeche, Yucatan"); + insert_timezones(named, timezones, 258, "MX", "America/Monterrey", "Mexican Central Time - Coahuila, Durango, Nuevo Leon, Tamaulipas away from US border"); + insert_timezones(named, timezones, 259, "MX", "America/Matamoros", "US Central Time - Coahuila, Durango, Nuevo Leon, Tamaulipas near US border"); + insert_timezones(named, timezones, 260, "MX", "America/Mazatlan", "Mountain Time - S Baja, Nayarit, Sinaloa"); + insert_timezones(named, timezones, 261, "MX", "America/Chihuahua", "Mexican Mountain Time - Chihuahua away from US border"); + insert_timezones(named, timezones, 262, "MX", "America/Ojinaga", "US Mountain Time - Chihuahua near US border"); + insert_timezones(named, timezones, 263, "MX", "America/Hermosillo", "Mountain Standard Time - Sonora"); + insert_timezones(named, timezones, 264, "MX", "America/Tijuana", "US Pacific Time - Baja California near US border"); + insert_timezones(named, timezones, 265, "MX", "America/Santa_Isabel", "Mexican Pacific Time - Baja California away from US border"); + insert_timezones(named, timezones, 266, "MX", "America/Bahia_Banderas", "Mexican Central Time - Bahia de Banderas"); + insert_timezones(named, timezones, 267, "MY", "Asia/Kuala_Lumpur", "peninsular Malaysia"); + insert_timezones(named, timezones, 268, "MY", "Asia/Kuching", "Sabah & Sarawak"); + insert_timezones(named, timezones, 269, "MZ", "Africa/Maputo", ""); + insert_timezones(named, timezones, 270, "NA", "Africa/Windhoek", ""); + insert_timezones(named, timezones, 271, "NC", "Pacific/Noumea", ""); + insert_timezones(named, timezones, 272, "NE", "Africa/Niamey", ""); + insert_timezones(named, timezones, 273, "NF", "Pacific/Norfolk", ""); + insert_timezones(named, timezones, 274, "NG", "Africa/Lagos", ""); + insert_timezones(named, timezones, 275, "NI", "America/Managua", ""); + insert_timezones(named, timezones, 276, "NL", "Europe/Amsterdam", ""); + insert_timezones(named, timezones, 277, "NO", "Europe/Oslo", ""); + insert_timezones(named, timezones, 278, "NP", "Asia/Kathmandu", ""); + insert_timezones(named, timezones, 279, "NR", "Pacific/Nauru", ""); + insert_timezones(named, timezones, 280, "NU", "Pacific/Niue", ""); + insert_timezones(named, timezones, 281, "NZ", "Pacific/Auckland", "most locations"); + insert_timezones(named, timezones, 282, "NZ", "Pacific/Chatham", "Chatham Islands"); + insert_timezones(named, timezones, 283, "OM", "Asia/Muscat", ""); + insert_timezones(named, timezones, 284, "PA", "America/Panama", ""); + insert_timezones(named, timezones, 285, "PE", "America/Lima", ""); + insert_timezones(named, timezones, 286, "PF", "Pacific/Tahiti", "Society Islands"); + insert_timezones(named, timezones, 287, "PF", "Pacific/Marquesas", "Marquesas Islands"); + insert_timezones(named, timezones, 288, "PF", "Pacific/Gambier", "Gambier Islands"); + insert_timezones(named, timezones, 289, "PG", "Pacific/Port_Moresby", ""); + insert_timezones(named, timezones, 290, "PH", "Asia/Manila", ""); + insert_timezones(named, timezones, 291, "PK", "Asia/Karachi", ""); + insert_timezones(named, timezones, 292, "PL", "Europe/Warsaw", ""); + insert_timezones(named, timezones, 293, "PM", "America/Miquelon", ""); + insert_timezones(named, timezones, 294, "PN", "Pacific/Pitcairn", ""); + insert_timezones(named, timezones, 295, "PR", "America/Puerto_Rico", ""); + insert_timezones(named, timezones, 296, "PS", "Asia/Gaza", "Gaza Strip"); + insert_timezones(named, timezones, 297, "PS", "Asia/Hebron", "West Bank"); + insert_timezones(named, timezones, 298, "PT", "Europe/Lisbon", "mainland"); + insert_timezones(named, timezones, 299, "PT", "Atlantic/Madeira", "Madeira Islands"); + insert_timezones(named, timezones, 300, "PT", "Atlantic/Azores", "Azores"); + insert_timezones(named, timezones, 301, "PW", "Pacific/Palau", ""); + insert_timezones(named, timezones, 302, "PY", "America/Asuncion", ""); + insert_timezones(named, timezones, 303, "QA", "Asia/Qatar", ""); + insert_timezones(named, timezones, 304, "RE", "Indian/Reunion", ""); + insert_timezones(named, timezones, 305, "RO", "Europe/Bucharest", ""); + insert_timezones(named, timezones, 306, "RS", "Europe/Belgrade", ""); + insert_timezones(named, timezones, 307, "RU", "Europe/Kaliningrad", "Moscow-01 - Kaliningrad"); + insert_timezones(named, timezones, 308, "RU", "Europe/Moscow", "Moscow+00 - west Russia"); + insert_timezones(named, timezones, 309, "RU", "Europe/Volgograd", "Moscow+00 - Caspian Sea"); + insert_timezones(named, timezones, 310, "RU", "Europe/Samara", "Moscow+00 - Samara, Udmurtia"); + insert_timezones(named, timezones, 311, "RU", "Asia/Yekaterinburg", "Moscow+02 - Urals"); + insert_timezones(named, timezones, 312, "RU", "Asia/Omsk", "Moscow+03 - west Siberia"); + insert_timezones(named, timezones, 313, "RU", "Asia/Novosibirsk", "Moscow+03 - Novosibirsk"); + insert_timezones(named, timezones, 314, "RU", "Asia/Novokuznetsk", "Moscow+03 - Novokuznetsk"); + insert_timezones(named, timezones, 315, "RU", "Asia/Krasnoyarsk", "Moscow+04 - Yenisei River"); + insert_timezones(named, timezones, 316, "RU", "Asia/Irkutsk", "Moscow+05 - Lake Baikal"); + insert_timezones(named, timezones, 317, "RU", "Asia/Yakutsk", "Moscow+06 - Lena River"); + insert_timezones(named, timezones, 318, "RU", "Asia/Vladivostok", "Moscow+07 - Amur River"); + insert_timezones(named, timezones, 319, "RU", "Asia/Sakhalin", "Moscow+07 - Sakhalin Island"); + insert_timezones(named, timezones, 320, "RU", "Asia/Magadan", "Moscow+08 - Magadan"); + insert_timezones(named, timezones, 321, "RU", "Asia/Kamchatka", "Moscow+08 - Kamchatka"); + insert_timezones(named, timezones, 322, "RU", "Asia/Anadyr", "Moscow+08 - Bering Sea"); + insert_timezones(named, timezones, 323, "RW", "Africa/Kigali", ""); + insert_timezones(named, timezones, 324, "SA", "Asia/Riyadh", ""); + insert_timezones(named, timezones, 325, "SB", "Pacific/Guadalcanal", ""); + insert_timezones(named, timezones, 326, "SC", "Indian/Mahe", ""); + insert_timezones(named, timezones, 327, "SD", "Africa/Khartoum", ""); + insert_timezones(named, timezones, 328, "SE", "Europe/Stockholm", ""); + insert_timezones(named, timezones, 329, "SG", "Asia/Singapore", ""); + insert_timezones(named, timezones, 330, "SH", "Atlantic/St_Helena", ""); + insert_timezones(named, timezones, 331, "SI", "Europe/Ljubljana", ""); + insert_timezones(named, timezones, 332, "SJ", "Arctic/Longyearbyen", ""); + insert_timezones(named, timezones, 333, "SK", "Europe/Bratislava", ""); + insert_timezones(named, timezones, 334, "SL", "Africa/Freetown", ""); + insert_timezones(named, timezones, 335, "SM", "Europe/San_Marino", ""); + insert_timezones(named, timezones, 336, "SN", "Africa/Dakar", ""); + insert_timezones(named, timezones, 337, "SO", "Africa/Mogadishu", ""); + insert_timezones(named, timezones, 338, "SR", "America/Paramaribo", ""); + insert_timezones(named, timezones, 339, "SS", "Africa/Juba", ""); + insert_timezones(named, timezones, 340, "ST", "Africa/Sao_Tome", ""); + insert_timezones(named, timezones, 341, "SV", "America/El_Salvador", ""); + insert_timezones(named, timezones, 342, "SX", "America/Lower_Princes", ""); + insert_timezones(named, timezones, 343, "SY", "Asia/Damascus", ""); + insert_timezones(named, timezones, 344, "SZ", "Africa/Mbabane", ""); + insert_timezones(named, timezones, 345, "TC", "America/Grand_Turk", ""); + insert_timezones(named, timezones, 346, "TD", "Africa/Ndjamena", ""); + insert_timezones(named, timezones, 347, "TF", "Indian/Kerguelen", ""); + insert_timezones(named, timezones, 348, "TG", "Africa/Lome", ""); + insert_timezones(named, timezones, 349, "TH", "Asia/Bangkok", ""); + insert_timezones(named, timezones, 350, "TJ", "Asia/Dushanbe", ""); + insert_timezones(named, timezones, 351, "TK", "Pacific/Fakaofo", ""); + insert_timezones(named, timezones, 352, "TL", "Asia/Dili", ""); + insert_timezones(named, timezones, 353, "TM", "Asia/Ashgabat", ""); + insert_timezones(named, timezones, 354, "TN", "Africa/Tunis", ""); + insert_timezones(named, timezones, 355, "TO", "Pacific/Tongatapu", ""); + insert_timezones(named, timezones, 356, "TR", "Europe/Istanbul", ""); + insert_timezones(named, timezones, 357, "TT", "America/Port_of_Spain", ""); + insert_timezones(named, timezones, 358, "TV", "Pacific/Funafuti", ""); + insert_timezones(named, timezones, 359, "TW", "Asia/Taipei", ""); + insert_timezones(named, timezones, 360, "TZ", "Africa/Dar_es_Salaam", ""); + insert_timezones(named, timezones, 361, "UA", "Europe/Kiev", "most locations"); + insert_timezones(named, timezones, 362, "UA", "Europe/Uzhgorod", "Ruthenia"); + insert_timezones(named, timezones, 363, "UA", "Europe/Zaporozhye", "Zaporozhye, E Lugansk / Zaporizhia, E Luhansk"); + insert_timezones(named, timezones, 364, "UA", "Europe/Simferopol", "central Crimea"); + insert_timezones(named, timezones, 365, "UG", "Africa/Kampala", ""); + insert_timezones(named, timezones, 366, "UM", "Pacific/Johnston", "Johnston Atoll"); + insert_timezones(named, timezones, 367, "UM", "Pacific/Midway", "Midway Islands"); + insert_timezones(named, timezones, 368, "UM", "Pacific/Wake", "Wake Island"); + insert_timezones(named, timezones, 369, "US", "America/New_York", "Eastern Time"); + insert_timezones(named, timezones, 370, "US", "America/Detroit", "Eastern Time - Michigan - most locations"); + insert_timezones(named, timezones, 371, "US", "America/Kentucky/Louisville", "Eastern Time - Kentucky - Louisville area"); + insert_timezones(named, timezones, 372, "US", "America/Kentucky/Monticello", "Eastern Time - Kentucky - Wayne County"); + insert_timezones(named, timezones, 373, "US", "America/Indiana/Indianapolis", "Eastern Time - Indiana - most locations"); + insert_timezones(named, timezones, 374, "US", "America/Indiana/Vincennes", "Eastern Time - Indiana - Daviess, Dubois, Knox & Martin Counties"); + insert_timezones(named, timezones, 375, "US", "America/Indiana/Winamac", "Eastern Time - Indiana - Pulaski County"); + insert_timezones(named, timezones, 376, "US", "America/Indiana/Marengo", "Eastern Time - Indiana - Crawford County"); + insert_timezones(named, timezones, 377, "US", "America/Indiana/Petersburg", "Eastern Time - Indiana - Pike County"); + insert_timezones(named, timezones, 378, "US", "America/Indiana/Vevay", "Eastern Time - Indiana - Switzerland County"); + insert_timezones(named, timezones, 379, "US", "America/Chicago", "Central Time"); + insert_timezones(named, timezones, 380, "US", "America/Indiana/Tell_City", "Central Time - Indiana - Perry County"); + insert_timezones(named, timezones, 381, "US", "America/Indiana/Knox", "Central Time - Indiana - Starke County"); + insert_timezones(named, timezones, 382, "US", "America/Menominee", "Central Time - Michigan - Dickinson, Gogebic, Iron & Menominee Counties"); + insert_timezones(named, timezones, 383, "US", "America/North_Dakota/Center", "Central Time - North Dakota - Oliver County"); + insert_timezones(named, timezones, 384, "US", "America/North_Dakota/New_Salem", "Central Time - North Dakota - Morton County (except Mandan area)"); + insert_timezones(named, timezones, 385, "US", "America/North_Dakota/Beulah", "Central Time - North Dakota - Mercer County"); + insert_timezones(named, timezones, 386, "US", "America/Denver", "Mountain Time"); + insert_timezones(named, timezones, 387, "US", "America/Boise", "Mountain Time - south Idaho & east Oregon"); + insert_timezones(named, timezones, 388, "US", "America/Shiprock", "Mountain Time - Navajo"); + insert_timezones(named, timezones, 389, "US", "America/Phoenix", "Mountain Standard Time - Arizona"); + insert_timezones(named, timezones, 390, "US", "America/Los_Angeles", "Pacific Time"); + insert_timezones(named, timezones, 391, "US", "America/Anchorage", "Alaska Time"); + insert_timezones(named, timezones, 392, "US", "America/Juneau", "Alaska Time - Alaska panhandle"); + insert_timezones(named, timezones, 393, "US", "America/Sitka", "Alaska Time - southeast Alaska panhandle"); + insert_timezones(named, timezones, 394, "US", "America/Yakutat", "Alaska Time - Alaska panhandle neck"); + insert_timezones(named, timezones, 395, "US", "America/Nome", "Alaska Time - west Alaska"); + insert_timezones(named, timezones, 396, "US", "America/Adak", "Aleutian Islands"); + insert_timezones(named, timezones, 397, "US", "America/Metlakatla", "Metlakatla Time - Annette Island"); + insert_timezones(named, timezones, 398, "US", "Pacific/Honolulu", "Hawaii"); + insert_timezones(named, timezones, 399, "UY", "America/Montevideo", ""); + insert_timezones(named, timezones, 400, "UZ", "Asia/Samarkand", "west Uzbekistan"); + insert_timezones(named, timezones, 401, "UZ", "Asia/Tashkent", "east Uzbekistan"); + insert_timezones(named, timezones, 402, "VA", "Europe/Vatican", ""); + insert_timezones(named, timezones, 403, "VC", "America/St_Vincent", ""); + insert_timezones(named, timezones, 404, "VE", "America/Caracas", ""); + insert_timezones(named, timezones, 405, "VG", "America/Tortola", ""); + insert_timezones(named, timezones, 406, "VI", "America/St_Thomas", ""); + insert_timezones(named, timezones, 407, "VN", "Asia/Ho_Chi_Minh", ""); + insert_timezones(named, timezones, 408, "VU", "Pacific/Efate", ""); + insert_timezones(named, timezones, 409, "WF", "Pacific/Wallis", ""); + insert_timezones(named, timezones, 410, "WS", "Pacific/Apia", ""); + insert_timezones(named, timezones, 411, "YE", "Asia/Aden", ""); + insert_timezones(named, timezones, 412, "YT", "Indian/Mayotte", ""); + insert_timezones(named, timezones, 413, "ZA", "Africa/Johannesburg", ""); + insert_timezones(named, timezones, 414, "ZM", "Africa/Lusaka", ""); + insert_timezones(named, timezones, 415, "ZW", "Africa/Harare", ""); + } + + protected static void insert_tenants(NamedParameterJdbcTemplate named, Table table, long id, String identifier, String name, String schema_name, String timezone_id, String schema_server, String schema_server_port, String schema_username, String schema_password, String auto_update) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("id").getName() + " = :id", id); + insertQuery.addValue(table.getColumnByName("identifier").getName() + " = :identifier", identifier); + insertQuery.addValue(table.getColumnByName("name").getName() + " = :name", name); + insertQuery.addValue(table.getColumnByName("schema_name").getName() + " = :schema_name", schema_name); + insertQuery.addValue(table.getColumnByName("timezone_id").getName() + " = :timezone_id", timezone_id); + insertQuery.addValue(table.getColumnByName("schema_server").getName() + " = :schema_server", schema_server); + insertQuery.addValue(table.getColumnByName("schema_server_port").getName() + " = :schema_server_port", schema_server_port); + insertQuery.addValue(table.getColumnByName("schema_username").getName() + " = :schema_username", schema_username); + insertQuery.addValue(table.getColumnByName("schema_password").getName() + " = :schema_password", schema_password); + insertQuery.addValue(table.getColumnByName("auto_update").getName() + " = :auto_update", auto_update); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected static void insert_timezones(NamedParameterJdbcTemplate named, Table table, long id, String code, String name, String comment) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("id").getName() + " = :id", id); + insertQuery.addValue(table.getColumnByName("code").getName() + " = :code", code); + insertQuery.addValue(table.getColumnByName("name").getName() + " = :name", name); + insertQuery.addValue(table.getColumnByName("comment").getName() + " = :comment", comment); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} \ No newline at end of file diff --git a/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/flyway/V2__ExternalizeConnectionProperties.java b/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/flyway/V2__ExternalizeConnectionProperties.java new file mode 100644 index 00000000..a8553b50 --- /dev/null +++ b/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/flyway/V2__ExternalizeConnectionProperties.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.tenant.flyway; + +import com.angkorteam.bank.dao.tenant.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V2__ExternalizeConnectionProperties extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V2__ExternalizeConnectionProperties + getInternalChecksum("V2__externalize-connection-properties.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate namedParameterJdbcTemplate, JdbcDataContext jdbcDataContext) throws Exception { + updateLiquibase("V2__externalize-connection-properties.xml"); + } + +} \ No newline at end of file diff --git a/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/flyway/V3__DeadlockRetryProperties.java b/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/flyway/V3__DeadlockRetryProperties.java new file mode 100644 index 00000000..a4871e05 --- /dev/null +++ b/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/flyway/V3__DeadlockRetryProperties.java @@ -0,0 +1,23 @@ +package com.angkorteam.bank.dao.tenant.flyway; + +import com.angkorteam.bank.dao.tenant.Checksum; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V3__DeadlockRetryProperties extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V3__DeadlockRetryProperties + getInternalChecksum("V3__deadlock-retry-properties.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate namedParameterJdbcTemplate, JdbcDataContext jdbcDataContext) throws Exception { + updateLiquibase("V3__deadlock-retry-properties.xml"); + } + +} \ No newline at end of file diff --git a/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/flyway/V4__IntroducedOltpIdReportIdColumnsAndTenantsServerConnectionTable.java b/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/flyway/V4__IntroducedOltpIdReportIdColumnsAndTenantsServerConnectionTable.java new file mode 100644 index 00000000..b82d66bf --- /dev/null +++ b/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/flyway/V4__IntroducedOltpIdReportIdColumnsAndTenantsServerConnectionTable.java @@ -0,0 +1,135 @@ +package com.angkorteam.bank.dao.tenant.flyway; + +import com.angkorteam.bank.dao.tenant.Checksum; +import com.angkorteam.jdbc.query.InsertQuery; +import com.angkorteam.jdbc.query.SelectQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; +import java.util.Map; + +public class V4__IntroducedOltpIdReportIdColumnsAndTenantsServerConnectionTable extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V4__IntroducedOltpIdReportIdColumnsAndTenantsServerConnectionTable + getInternalChecksum("V4__introduced_oltpId_reportId_columns_and_tenants_server_connection_table-001.xml", + "V4__introduced_oltpId_reportId_columns_and_tenants_server_connection_table-003.xml", + "V4__introduced_oltpId_reportId_columns_and_tenants_server_connection_table-005.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + SelectQuery selectQuery = null; + + // sub change 001 + updateLiquibase("V4__introduced_oltpId_reportId_columns_and_tenants_server_connection_table-001.xml"); + + // sub change 002 + { + dataContext.refreshSchemas(); + Table tenant_server_connections = dataContext.getDefaultSchema().getTableByName("tenant_server_connections"); + Table temp_tenants = dataContext.getDefaultSchema().getTableByName("temp_tenants"); + selectQuery = new SelectQuery(temp_tenants.getName()); + for (Map record : named.queryForList(selectQuery.toSQL(), selectQuery.toParam())) { + String id = (String) record.get(temp_tenants.getColumnByName("id").getName()); + String schema_name = (String) record.get(temp_tenants.getColumnByName("schema_name").getName()); + String schema_server = (String) record.get(temp_tenants.getColumnByName("schema_server").getName()); + String schema_server_port = (String) record.get(temp_tenants.getColumnByName("schema_server_port").getName()); + String schema_username = (String) record.get(temp_tenants.getColumnByName("schema_username").getName()); + String schema_password = (String) record.get(temp_tenants.getColumnByName("schema_password").getName()); + String auto_update = (String) record.get(temp_tenants.getColumnByName("auto_update").getName()); + String pool_initial_size = (String) record.get(temp_tenants.getColumnByName("pool_initial_size").getName()); + String pool_validation_interval = (String) record.get(temp_tenants.getColumnByName("pool_validation_interval").getName()); + String pool_remove_abandoned = (String) record.get(temp_tenants.getColumnByName("pool_remove_abandoned").getName()); + String pool_remove_abandoned_timeout = (String) record.get(temp_tenants.getColumnByName("pool_remove_abandoned_timeout").getName()); + String pool_log_abandoned = (String) record.get(temp_tenants.getColumnByName("pool_log_abandoned").getName()); + String pool_abandon_when_percentage_full = (String) record.get(temp_tenants.getColumnByName("pool_abandon_when_percentage_full").getName()); + String pool_test_on_borrow = (String) record.get(temp_tenants.getColumnByName("pool_test_on_borrow").getName()); + String pool_max_active = (String) record.get(temp_tenants.getColumnByName("pool_max_active").getName()); + String pool_min_idle = (String) record.get(temp_tenants.getColumnByName("pool_min_idle").getName()); + String pool_max_idle = (String) record.get(temp_tenants.getColumnByName("pool_max_idle").getName()); + String pool_suspect_timeout = (String) record.get(temp_tenants.getColumnByName("pool_suspect_timeout").getName()); + String pool_time_between_eviction_runs_millis = (String) record.get(temp_tenants.getColumnByName("pool_time_between_eviction_runs_millis").getName()); + String pool_min_evictable_idle_time_millis = (String) record.get(temp_tenants.getColumnByName("pool_min_evictable_idle_time_millis").getName()); + String deadlock_max_retries = (String) record.get(temp_tenants.getColumnByName("deadlock_max_retries").getName()); + String deadlock_max_retry_interval = (String) record.get(temp_tenants.getColumnByName("deadlock_max_retry_interval").getName()); + insert_tenant_server_connections(named, tenant_server_connections, id, schema_name, schema_server, schema_server_port, schema_username, schema_password, auto_update, pool_initial_size, pool_validation_interval, pool_remove_abandoned, pool_remove_abandoned_timeout, pool_log_abandoned, pool_abandon_when_percentage_full, pool_test_on_borrow, pool_max_active, pool_min_idle, pool_max_idle, pool_suspect_timeout, pool_time_between_eviction_runs_millis, pool_min_evictable_idle_time_millis, deadlock_max_retries, deadlock_max_retry_interval); + } + } + + // sub change 003 + updateLiquibase("V4__introduced_oltpId_reportId_columns_and_tenants_server_connection_table-003.xml"); + + + // sub change 004 + { + dataContext.refreshSchemas(); + Table tenants = dataContext.getDefaultSchema().getTableByName("tenants"); + Table temp_tenants = dataContext.getDefaultSchema().getTableByName("temp_tenants"); + selectQuery = new SelectQuery(temp_tenants.getName()); + for (Map record : named.queryForList(selectQuery.toSQL(), selectQuery.toParam())) { + String id = (String) record.get(temp_tenants.getColumnByName("id").getName()); + String identifier = (String) record.get(temp_tenants.getColumnByName("identifier").getName()); + String name = (String) record.get(temp_tenants.getColumnByName("name").getName()); + String timezone_id = (String) record.get(temp_tenants.getColumnByName("timezone_id").getName()); + String country_id = (String) record.get(temp_tenants.getColumnByName("country_id").getName()); + String joined_date = (String) record.get(temp_tenants.getColumnByName("joined_date").getName()); + String created_date = (String) record.get(temp_tenants.getColumnByName("created_date").getName()); + String lastmodified_date = (String) record.get(temp_tenants.getColumnByName("lastmodified_date").getName()); + String oltp_id = (String) record.get(temp_tenants.getColumnByName("id").getName()); + String report_id = (String) record.get(temp_tenants.getColumnByName("id").getName()); + insert_tenants(named, tenants, id, identifier, name, timezone_id, country_id, joined_date, created_date, lastmodified_date, oltp_id, report_id); + } + } + + // sub change 005 + updateLiquibase("V4__introduced_oltpId_reportId_columns_and_tenants_server_connection_table-005.xml"); + } + + protected static void insert_tenants(NamedParameterJdbcTemplate named, Table table, String id, String identifier, String name, String timezone_id, String country_id, String joined_date, String created_date, String lastmodified_date, String oltp_id, String report_id) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("id").getName() + " = :id", id); + insertQuery.addValue(table.getColumnByName("identifier").getName() + " = :identifier", identifier); + insertQuery.addValue(table.getColumnByName("name").getName() + " = :name", name); + insertQuery.addValue(table.getColumnByName("timezone_id").getName() + " = :timezone_id", timezone_id); + insertQuery.addValue(table.getColumnByName("country_id").getName() + " = :country_id", country_id); + insertQuery.addValue(table.getColumnByName("joined_date").getName() + " = :joined_date", joined_date); + insertQuery.addValue(table.getColumnByName("created_date").getName() + " = :created_date", created_date); + insertQuery.addValue(table.getColumnByName("lastmodified_date").getName() + " = :lastmodified_date", lastmodified_date); + insertQuery.addValue(table.getColumnByName("oltp_id").getName() + " = :oltp_id", oltp_id); + insertQuery.addValue(table.getColumnByName("report_id").getName() + " = :report_id", report_id); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + + protected static void insert_tenant_server_connections(NamedParameterJdbcTemplate named, Table table, String id, String schema_name, String schema_server, String schema_server_port, String schema_username, String schema_password, String auto_update, String pool_initial_size, String pool_validation_interval, String pool_remove_abandoned, String pool_remove_abandoned_timeout, String pool_log_abandoned, String pool_abandon_when_percentage_full, String pool_test_on_borrow, String pool_max_active, String pool_min_idle, String pool_max_idle, String pool_suspect_timeout, String pool_time_between_eviction_runs_millis, String pool_min_evictable_idle_time_millis, String deadlock_max_retries, String deadlock_max_retry_interval) { + InsertQuery insertQuery = new InsertQuery(table.getName()); + insertQuery.addValue(table.getColumnByName("id").getName() + " = :id", id); + insertQuery.addValue(table.getColumnByName("schema_name").getName() + " = :schema_name", schema_name); + insertQuery.addValue(table.getColumnByName("schema_server").getName() + " = :schema_server", schema_server); + insertQuery.addValue(table.getColumnByName("schema_server_port").getName() + " = :schema_server_port", schema_server_port); + insertQuery.addValue(table.getColumnByName("schema_username").getName() + " = :schema_username", schema_username); + insertQuery.addValue(table.getColumnByName("schema_password").getName() + " = :schema_password", schema_password); + insertQuery.addValue(table.getColumnByName("auto_update").getName() + " = :auto_update", auto_update); + insertQuery.addValue(table.getColumnByName("pool_initial_size").getName() + " = :pool_initial_size", pool_initial_size); + insertQuery.addValue(table.getColumnByName("pool_validation_interval").getName() + " = :pool_validation_interval", pool_validation_interval); + insertQuery.addValue(table.getColumnByName("pool_remove_abandoned").getName() + " = :pool_remove_abandoned", pool_remove_abandoned); + insertQuery.addValue(table.getColumnByName("pool_remove_abandoned_timeout").getName() + " = :pool_remove_abandoned_timeout", pool_remove_abandoned_timeout); + insertQuery.addValue(table.getColumnByName("pool_log_abandoned").getName() + " = :pool_log_abandoned", pool_log_abandoned); + insertQuery.addValue(table.getColumnByName("pool_abandon_when_percentage_full").getName() + " = :pool_abandon_when_percentage_full", pool_abandon_when_percentage_full); + insertQuery.addValue(table.getColumnByName("pool_test_on_borrow").getName() + " = :pool_test_on_borrow", pool_test_on_borrow); + insertQuery.addValue(table.getColumnByName("pool_max_active").getName() + " = :pool_max_active", pool_max_active); + insertQuery.addValue(table.getColumnByName("pool_min_idle").getName() + " = :pool_min_idle", pool_min_idle); + insertQuery.addValue(table.getColumnByName("pool_max_idle").getName() + " = :pool_max_idle", pool_max_idle); + insertQuery.addValue(table.getColumnByName("pool_suspect_timeout").getName() + " = :pool_suspect_timeout", pool_suspect_timeout); + insertQuery.addValue(table.getColumnByName("pool_time_between_eviction_runs_millis").getName() + " = :pool_time_between_eviction_runs_millis", pool_time_between_eviction_runs_millis); + insertQuery.addValue(table.getColumnByName("pool_min_evictable_idle_time_millis").getName() + " = :pool_min_evictable_idle_time_millis", pool_min_evictable_idle_time_millis); + insertQuery.addValue(table.getColumnByName("deadlock_max_retries").getName() + " = :deadlock_max_retries", deadlock_max_retries); + insertQuery.addValue(table.getColumnByName("deadlock_max_retry_interval").getName() + " = :deadlock_max_retry_interval", deadlock_max_retry_interval); + named.update(insertQuery.toSQL(), insertQuery.toParam()); + } + +} \ No newline at end of file diff --git a/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/flyway/V5__AddSchemaConnectionParameters.java b/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/flyway/V5__AddSchemaConnectionParameters.java new file mode 100644 index 00000000..42f8c8d4 --- /dev/null +++ b/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/flyway/V5__AddSchemaConnectionParameters.java @@ -0,0 +1,30 @@ +package com.angkorteam.bank.dao.tenant.flyway; + +import com.angkorteam.bank.dao.tenant.Checksum; +import com.angkorteam.jdbc.query.UpdateQuery; +import com.angkorteam.metamodel.LiquibaseJavaMigration; +import org.apache.metamodel.jdbc.JdbcDataContext; +import org.apache.metamodel.schema.Table; +import org.flywaydb.core.api.migration.Context; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; + +public class V5__AddSchemaConnectionParameters extends LiquibaseJavaMigration { + + @Override + public Integer getChecksum() { + return Checksum.V5__AddSchemaConnectionParameters + getInternalChecksum("V5__add_schema_connection_parameters.xml"); + } + + @Override + protected void doMigrate(Context context, DataSource dataSource, NamedParameterJdbcTemplate named, JdbcDataContext dataContext) throws Exception { + updateLiquibase("V5__add_schema_connection_parameters.xml"); + + dataContext.refreshSchemas(); + Table tenant_server_connections = dataContext.getDefaultSchema().getTableByName("tenant_server_connections"); + UpdateQuery updateQuery = new UpdateQuery(tenant_server_connections.getName()); + updateQuery.addValue(tenant_server_connections.getColumnByName("schema_connection_parameters").getName() + " = :schema_connection_parameters", ""); + updateQuery.addWhere(tenant_server_connections.getColumnByName("id").getName() + " = :id", 1); + } +} diff --git a/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/meta/Tenant.java b/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/meta/Tenant.java new file mode 100644 index 00000000..5f2be0a7 --- /dev/null +++ b/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/meta/Tenant.java @@ -0,0 +1,47 @@ +package com.angkorteam.bank.dao.tenant.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class Tenant extends AbstractTable { + + public final Column ID; + + public final Column IDENTIFIER; + + public final Column NAME; + + public final Column TIMEZONE_ID; + + public final Column COUNTRY_ID; + + public final Column JOINED_DATE; + + public final Column CREATED_DATE; + + public final Column LAST_MODIFIED_DATE; + + public final Column OLTP_ID; + + public final Column REPORT_ID; + + public static Tenant staticInitialize(DataContext dataContext) { + return new Tenant(dataContext); + } + + private Tenant(DataContext dataContext) { + super(dataContext, "tenants"); + this.ID = getInternalColumnByName("id"); + this.IDENTIFIER = getInternalColumnByName("identifier"); + this.NAME = getInternalColumnByName("name"); + this.TIMEZONE_ID = getInternalColumnByName("timezone_id"); + this.COUNTRY_ID = getInternalColumnByName("country_id"); + this.JOINED_DATE = getInternalColumnByName("joined_date"); + this.CREATED_DATE = getInternalColumnByName("created_date"); + this.LAST_MODIFIED_DATE = getInternalColumnByName("lastmodified_date"); + this.OLTP_ID = getInternalColumnByName("oltp_id"); + this.REPORT_ID = getInternalColumnByName("report_id"); + } + +} diff --git a/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/meta/TenantServerConnection.java b/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/meta/TenantServerConnection.java new file mode 100644 index 00000000..af136dad --- /dev/null +++ b/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/meta/TenantServerConnection.java @@ -0,0 +1,83 @@ +package com.angkorteam.bank.dao.tenant.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class TenantServerConnection extends AbstractTable { + + public final Column ID; + + public final Column SCHEMA_SERVER; + + public final Column SCHEMA_NAME; + + public final Column SCHEMA_SERVER_PORT; + + public final Column SCHEMA_USERNAME; + + public final Column SCHEMA_PASSWORD; + + public final Column AUTO_UPDATE; + + public final Column POOL_INITIAL_SIZE; + + public final Column POOL_VALIDATION_INTERVAL; + + public final Column POOL_REMOVE_ABANDONED; + + public final Column POOL_REMOVE_ABANDONED_TIMEOUT; + + public final Column POOL_LOG_ABANDONED; + + public final Column POOL_ABANDON_WHEN_PERCENTAGE_FULL; + + public final Column POOL_TEST_ON_BORROW; + + public final Column POOL_MAX_ACTIVE; + + public final Column POOL_MIN_IDLE; + + public final Column POOL_MAX_IDLE; + + public final Column POOL_SUSPECT_TIMEOUT; + + public final Column POOL_TIME_BETWEEN_EVICTION_RUNS_MILLIS; + + public final Column POOL_MIN_EVICTABLE_IDLE_TIME_MILLIS; + + public final Column DEADLOCK_MAX_RETRY; + + public final Column DEADLOCK_MAX_RETRY_INTERVAL; + + public static TenantServerConnection staticInitialize(DataContext dataContext) { + return new TenantServerConnection(dataContext); + } + + private TenantServerConnection(DataContext dataContext) { + super(dataContext, "tenant_server_connections"); + this.ID = getInternalColumnByName("id"); + this.SCHEMA_SERVER = getInternalColumnByName("schema_server"); + this.SCHEMA_NAME = getInternalColumnByName("schema_name"); + this.SCHEMA_SERVER_PORT = getInternalColumnByName("schema_server_port"); + this.SCHEMA_USERNAME = getInternalColumnByName("schema_username"); + this.SCHEMA_PASSWORD = getInternalColumnByName("schema_password"); + this.AUTO_UPDATE = getInternalColumnByName("auto_update"); + this.POOL_INITIAL_SIZE = getInternalColumnByName("pool_initial_size"); + this.POOL_VALIDATION_INTERVAL = getInternalColumnByName("pool_validation_interval"); + this.POOL_REMOVE_ABANDONED = getInternalColumnByName("pool_remove_abandoned"); + this.POOL_REMOVE_ABANDONED_TIMEOUT = getInternalColumnByName("pool_remove_abandoned_timeout"); + this.POOL_LOG_ABANDONED = getInternalColumnByName("pool_log_abandoned"); + this.POOL_ABANDON_WHEN_PERCENTAGE_FULL = getInternalColumnByName("pool_abandon_when_percentage_full"); + this.POOL_TEST_ON_BORROW = getInternalColumnByName("pool_test_on_borrow"); + this.POOL_MAX_ACTIVE = getInternalColumnByName("pool_max_active"); + this.POOL_MIN_IDLE = getInternalColumnByName("pool_min_idle"); + this.POOL_MAX_IDLE = getInternalColumnByName("pool_max_idle"); + this.POOL_SUSPECT_TIMEOUT = getInternalColumnByName("pool_suspect_timeout"); + this.POOL_TIME_BETWEEN_EVICTION_RUNS_MILLIS = getInternalColumnByName("pool_time_between_eviction_runs_millis"); + this.POOL_MIN_EVICTABLE_IDLE_TIME_MILLIS = getInternalColumnByName("pool_min_evictable_idle_time_millis"); + this.DEADLOCK_MAX_RETRY = getInternalColumnByName("deadlock_max_retries"); + this.DEADLOCK_MAX_RETRY_INTERVAL = getInternalColumnByName("deadlock_max_retry_interval"); + } + +} diff --git a/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/meta/TimeZone.java b/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/meta/TimeZone.java new file mode 100644 index 00000000..a86f62e3 --- /dev/null +++ b/bank-tenant-dao/src/main/java/com/angkorteam/bank/dao/tenant/meta/TimeZone.java @@ -0,0 +1,29 @@ +package com.angkorteam.bank.dao.tenant.meta; + +import com.angkorteam.metamodel.AbstractTable; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.schema.Column; + +public class TimeZone extends AbstractTable { + + public final Column ID; + + public final Column COUNTRY_CODE; + + public final Column TIME_ZONE_NAME; + + public final Column COMMENT; + + public static TimeZone staticInitialize(DataContext dataContext) { + return new TimeZone(dataContext); + } + + private TimeZone(DataContext dataContext) { + super(dataContext, "timezones"); + this.ID = getInternalColumnByName("id"); + this.COUNTRY_CODE = getInternalColumnByName("country_code"); + this.TIME_ZONE_NAME = getInternalColumnByName("timezonename"); + this.COMMENT = getInternalColumnByName("comments"); + } + +} diff --git a/bank-tenant-dao/src/main/resources/V1__mifos-platform-shared-tenants-001.xml b/bank-tenant-dao/src/main/resources/V1__mifos-platform-shared-tenants-001.xml new file mode 100644 index 00000000..9ecbb258 --- /dev/null +++ b/bank-tenant-dao/src/main/resources/V1__mifos-platform-shared-tenants-001.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bank-tenant-dao/src/main/resources/V1__mifos-platform-shared-tenants-003.xml b/bank-tenant-dao/src/main/resources/V1__mifos-platform-shared-tenants-003.xml new file mode 100644 index 00000000..4d13bc83 --- /dev/null +++ b/bank-tenant-dao/src/main/resources/V1__mifos-platform-shared-tenants-003.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-tenant-dao/src/main/resources/V2__externalize-connection-properties.xml b/bank-tenant-dao/src/main/resources/V2__externalize-connection-properties.xml new file mode 100644 index 00000000..b69658b2 --- /dev/null +++ b/bank-tenant-dao/src/main/resources/V2__externalize-connection-properties.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-tenant-dao/src/main/resources/V3__deadlock-retry-properties.xml b/bank-tenant-dao/src/main/resources/V3__deadlock-retry-properties.xml new file mode 100644 index 00000000..c95bc475 --- /dev/null +++ b/bank-tenant-dao/src/main/resources/V3__deadlock-retry-properties.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/bank-tenant-dao/src/main/resources/V4__introduced_oltpId_reportId_columns_and_tenants_server_connection_table-001.xml b/bank-tenant-dao/src/main/resources/V4__introduced_oltpId_reportId_columns_and_tenants_server_connection_table-001.xml new file mode 100644 index 00000000..9f8ebd3a --- /dev/null +++ b/bank-tenant-dao/src/main/resources/V4__introduced_oltpId_reportId_columns_and_tenants_server_connection_table-001.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bank-tenant-dao/src/main/resources/V4__introduced_oltpId_reportId_columns_and_tenants_server_connection_table-003.xml b/bank-tenant-dao/src/main/resources/V4__introduced_oltpId_reportId_columns_and_tenants_server_connection_table-003.xml new file mode 100644 index 00000000..779c383c --- /dev/null +++ b/bank-tenant-dao/src/main/resources/V4__introduced_oltpId_reportId_columns_and_tenants_server_connection_table-003.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bank-tenant-dao/src/main/resources/V4__introduced_oltpId_reportId_columns_and_tenants_server_connection_table-005.xml b/bank-tenant-dao/src/main/resources/V4__introduced_oltpId_reportId_columns_and_tenants_server_connection_table-005.xml new file mode 100644 index 00000000..896d4802 --- /dev/null +++ b/bank-tenant-dao/src/main/resources/V4__introduced_oltpId_reportId_columns_and_tenants_server_connection_table-005.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + diff --git a/bank-tenant-dao/src/main/resources/V5__add_schema_connection_parameters.xml b/bank-tenant-dao/src/main/resources/V5__add_schema_connection_parameters.xml new file mode 100644 index 00000000..45b73f95 --- /dev/null +++ b/bank-tenant-dao/src/main/resources/V5__add_schema_connection_parameters.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/LICENSE b/bank-web/LICENSE similarity index 100% rename from LICENSE rename to bank-web/LICENSE diff --git a/NOTE.txt b/bank-web/NOTE.txt similarity index 100% rename from NOTE.txt rename to bank-web/NOTE.txt diff --git a/README.md b/bank-web/README.md similarity index 100% rename from README.md rename to bank-web/README.md diff --git a/bank-web/README.txt b/bank-web/README.txt new file mode 100644 index 00000000..5d360966 --- /dev/null +++ b/bank-web/README.txt @@ -0,0 +1,3 @@ +mvn -Dtest=FixedCreatePageUITest test + +?baseApiUrl=http://172.16.1.101:8080&tenantIdentifier=default \ No newline at end of file diff --git a/bank-web/pom.xml b/bank-web/pom.xml new file mode 100644 index 00000000..b850d116 --- /dev/null +++ b/bank-web/pom.xml @@ -0,0 +1,277 @@ + + + + 4.0.0 + + + org.springframework.boot + spring-boot-starter-parent + 2.3.3.RELEASE + + + + com.angkorteam.fintech + fintech + 1.0 + war + + fintech + + + + 29.0-jre + UTF-8 + UTF-8 + 1.8 + 2.5.3 + 3.8.1 + 2.10 + 2.0 + 8.9.0 + 3.1.0 + 2.8.6 + 3.11 + 2.6 + 1.3 + 4.5.12 + 1.66 + 1.9.3 + 1.4.7 + 2.10.6 + 2.7.0 + 8.0.21 + 3.13.4 + 0.9.12 + 1.8 + 1.6 + + yyyy-MM-dd'T'HH:mm:ssZZ + 1.7.25 + + 5.0.5.RELEASE + 1.10 + 3.12.0 + 2.5.03 + 0.9.12 + 4.1.2 + 1.16.1 + 4.12 + + + + + + com.angkorteam.webui + common + 1.0.0 + + + + org.apache.poi + poi + 4.1.2 + + + + org.apache.metamodel + MetaModel-full + 5.3.2 + + + org.json + json + + + + + + com.oracle.database.jdbc + ojdbc8 + 12.2.0.1 + + + + org.apache.poi + poi-ooxml + 4.1.2 + + + + io.github.openunirest + unirest-java + ${unirest-java.version} + + + org.json + json + + + + + + commons-net + commons-net + 3.6 + + + + org.apache.commons + commons-exec + ${commons-exec.version} + + + + commons-validator + commons-validator + ${commons-validator.version} + + + + org.reflections + reflections + ${reflections.version} + + + + org.apache.commons + commons-text + ${commons-text.version} + + + + org.jooq + jooq + ${jooq.version} + + + + org.jasypt + jasypt + ${jasypt.version} + + + + javax.mail + mail + ${mail.version} + + + + joda-time + joda-time + ${joda-time.version} + + + + mysql + mysql-connector-java + ${mysql.version} + + + + org.apache.commons + commons-dbcp2 + ${commons-dbcp2.version} + + + + commons-io + commons-io + ${commons-io.version} + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + + org.apache.httpcomponents + httpclient + ${httpclient.version} + + + + com.google.guava + guava + ${guava.version} + + + + com.google.code.gson + gson + ${gson.version} + + + + org.springframework + spring-context-support + + + + org.springframework + spring-jdbc + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + ROOT + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${java.version} + ${java.version} + ${project.build.sourceEncoding} + true + true + + + + + org.apache.maven.plugins + maven-eclipse-plugin + ${maven-eclipse-plugin.version} + + true + ${wtp.version} + + + .settings/org.eclipse.core.resources.prefs + + =${project.build.sourceEncoding}${line.separator}]]> + + + + + + + + + + diff --git a/bank-web/src/main/java/com/angkorteam/fintech/Application.java b/bank-web/src/main/java/com/angkorteam/fintech/Application.java new file mode 100644 index 00000000..f54deb05 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/Application.java @@ -0,0 +1,89 @@ +//package com.angkorteam.fintech; +// +//import java.text.DecimalFormat; +//import java.text.NumberFormat; +//import java.util.Map; +// +//import org.apache.commons.configuration.XMLPropertiesConfiguration; +//import org.apache.wicket.Page; +//import org.apache.wicket.RuntimeConfigurationType; +//import org.apache.wicket.authroles.authentication.AbstractAuthenticatedWebSession; +//import org.apache.wicket.authroles.authentication.AuthenticatedWebApplication; +//import org.apache.wicket.core.request.mapper.CryptoMapper; +//import org.apache.wicket.markup.html.IPackageResourceGuard; +//import org.apache.wicket.markup.html.SecurePackageResourceGuard; +//import org.apache.wicket.markup.html.WebPage; +//import org.apache.wicket.request.IRequestMapper; +//import org.apache.wicket.request.resource.PackageResourceReference; +//import org.springframework.context.ApplicationContext; +//import org.springframework.web.context.support.WebApplicationContextUtils; +// +//import com.angkorteam.fintech.pages.LoginPage; +//import com.angkorteam.fintech.pages.SimulatorPage; +//import com.angkorteam.fintech.pages.client.client.ClientBrowsePage; +//import com.angkorteam.framework.ReferenceUtilities; +//import com.angkorteam.framework.ResourceScope; +//import com.angkorteam.framework.SpringBean; +//import com.google.common.collect.Maps; +// +///** +// * Created by socheatkhauv on 6/11/17. +// */ +//public class Application extends AuthenticatedWebApplication { +// +// public static Map FORMATS; +// +// static { +// FORMATS = Maps.newHashMap(); +// FORMATS.put("#,###.00", new DecimalFormat("#,###.00")); +// FORMATS.put("#.00", new DecimalFormat("#.00")); +// FORMATS.put("#,###,##0.00", new DecimalFormat("#,###,##0.00")); +// } +// +// @Override +// protected void init() { +// super.init(); +// XMLPropertiesConfiguration configuration = SpringBean.getBean(XMLPropertiesConfiguration.class); +// +// IPackageResourceGuard packageResourceGuard = this.getResourceSettings().getPackageResourceGuard(); +// if (packageResourceGuard instanceof SecurePackageResourceGuard) { +// SecurePackageResourceGuard guard = (SecurePackageResourceGuard) packageResourceGuard; +// guard.addPattern("+*.ogg"); +// guard.addPattern("+*.mp3"); +// } +// getJavaScriptLibrarySettings().setJQueryReference(new PackageResourceReference(ResourceScope.class, ReferenceUtilities.J_QUERY_JS)); +// mountPage("/simulator", SimulatorPage.class); +// +// RuntimeConfigurationType configurationType = RuntimeConfigurationType.valueOf(configuration.getString("wicket")); +// +// if (configurationType == RuntimeConfigurationType.DEPLOYMENT) { +// IRequestMapper cryptoMapper = new CryptoMapper(getRootRequestMapper(), this); +// setRootRequestMapper(cryptoMapper); +// } +// +// getMarkupSettings().setStripWicketTags(true); +// } +// +// @Override +// public Class getHomePage() { +// return ClientBrowsePage.class; +// } +// +// @Override +// public RuntimeConfigurationType getConfigurationType() { +// ApplicationContext applicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext()); +// XMLPropertiesConfiguration configuration = applicationContext.getBean(XMLPropertiesConfiguration.class); +// return RuntimeConfigurationType.valueOf(configuration.getString("wicket")); +// } +// +// @Override +// protected Class getWebSessionClass() { +// return Session.class; +// } +// +// @Override +// protected Class getSignInPageClass() { +// return LoginPage.class; +// } +// +//} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/BootApplication.java b/bank-web/src/main/java/com/angkorteam/fintech/BootApplication.java new file mode 100644 index 00000000..60015e79 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/BootApplication.java @@ -0,0 +1,132 @@ +package com.angkorteam.fintech; + +import com.angkorteam.fintech.boot.AppProperties; +import com.angkorteam.fintech.client.FineractClient; +import com.angkorteam.fintech.spring.NumberGenerator; +import com.angkorteam.fintech.spring.NumberGeneratorImpl; +import com.angkorteam.fintech.spring.StringGenerator; +import com.angkorteam.fintech.spring.StringGeneratorImpl; +import org.apache.commons.dbcp2.BasicDataSource; +import org.apache.http.ssl.SSLContextBuilder; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.factory.DataContextFactoryRegistryImpl; +import org.apache.metamodel.factory.DataContextPropertiesImpl; +import org.jasypt.util.password.PasswordEncryptor; +import org.jasypt.util.password.StrongPasswordEncryptor; +import org.jasypt.util.text.AES256TextEncryptor; +import org.jasypt.util.text.TextEncryptor; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; + +import javax.net.ssl.SSLContext; +import javax.sql.DataSource; +import java.io.IOException; +import java.security.KeyManagementException; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.CertificateException; + +@SpringBootApplication +public class BootApplication { + + public static void main(String[] args) throws Exception { + SpringApplication.run(BootApplication.class, args); + } + + @Bean("stringGenerator") + public StringGenerator createStringGenerator() { + return new StringGeneratorImpl(); + } + + @Bean("numberGenerator") + public NumberGenerator createNumberGenerator() { + return new NumberGeneratorImpl(); + } + + @Bean(name = "delegateDataSource", destroyMethod = "close") + public DataSource createDelegateDataSource(AppProperties properties, TextEncryptor textEncryptor) { + BasicDataSource dataSource = new BasicDataSource(); + dataSource.setDriverClassName(properties.getJdbcDriverClassName()); + dataSource.setUrl(properties.getJdbcUrl()); + dataSource.setUsername(properties.getJdbcUsername()); + try { + dataSource.setPassword(textEncryptor.decrypt(properties.getJdbcPassword())); + } catch (Throwable e) { + dataSource.setPassword(properties.getJdbcPassword()); + } + return dataSource; + } + + @Bean(name = "delegateDataContext") + public DataContext createDelegateDataContext(AppProperties properties, TextEncryptor textEncryptor) { + DataContextPropertiesImpl configuration = new DataContextPropertiesImpl(); + configuration.put("type", "jdbc"); + configuration.put("url", properties.getJdbcUrl()); + configuration.put("driver-class", properties.getJdbcDriverClassName()); + configuration.put("username", properties.getJdbcUsername()); + configuration.put("password", properties.getJdbcPassword()); + return DataContextFactoryRegistryImpl.getDefaultInstance().createDataContext(configuration); + } + + @Bean("mifosDataSource") + public MifosDataSourceManager createDataSource(@Qualifier("delegateDataContext") DataContext delegate, AppProperties properties) { + MifosDataSourceManager mifosDataSource = new MifosDataSourceManager(); + mifosDataSource.setMifosUrl(properties.getMifosUrl()); + mifosDataSource.setDelegate(delegate); + return mifosDataSource; + } + + @Bean("mifosDataContext") + public MifosDataContextManager createDataContext(@Qualifier("delegateDataContext") DataContext delegate, AppProperties properties) { + MifosDataContextManager mifosDataSource = new MifosDataContextManager(); + mifosDataSource.setMifosUrl(properties.getMifosUrl()); + mifosDataSource.setDelegate(delegate); + return mifosDataSource; + } + + @Bean + public ThreadPoolTaskExecutor createExecutor(AppProperties properties) { + ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + executor.setCorePoolSize(1); + executor.setMaxPoolSize(1); + executor.setQueueCapacity(500); + executor.setDaemon(true); + executor.setBeanName("executor"); + return executor; + } + + @Bean + public ThreadPoolTaskScheduler createScheduler() { + ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler(); + scheduler.setBeanName("scheduler"); + scheduler.setDaemon(true); + scheduler.setPoolSize(1); + return scheduler; + } + + @Bean("passwordEncryptor") + public PasswordEncryptor createPasswordEncryptor() { + StrongPasswordEncryptor encryptor = new StrongPasswordEncryptor(); + return encryptor; + } + + @Bean("textEncryptor") + public TextEncryptor createTextEncryptor(AppProperties properties) { + AES256TextEncryptor textEncryptor = new AES256TextEncryptor(); + textEncryptor.setPassword(properties.getSecret()); + return textEncryptor; + } + + @Bean + public FineractClient createFineractClient(AppProperties properties) throws CertificateException, NoSuchAlgorithmException, KeyStoreException, IOException, KeyManagementException { + SSLContextBuilder builder = new SSLContextBuilder(); + builder.loadTrustMaterial(properties.getCacert(), "changeit".toCharArray()); + SSLContext ssl = builder.build(); + return new FineractClient(ssl, properties.getMifosUrl()); + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/HostnameVerifier.java b/bank-web/src/main/java/com/angkorteam/fintech/HostnameVerifier.java new file mode 100644 index 00000000..dfb255d7 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/HostnameVerifier.java @@ -0,0 +1,12 @@ +package com.angkorteam.fintech; + +import javax.net.ssl.SSLSession; + +public class HostnameVerifier implements javax.net.ssl.HostnameVerifier { + + @Override + public boolean verify(String hostname, SSLSession session) { + return true; + } + +} diff --git a/src/main/java/com/angkorteam/fintech/IMifos.java b/bank-web/src/main/java/com/angkorteam/fintech/IMifos.java similarity index 92% rename from src/main/java/com/angkorteam/fintech/IMifos.java rename to bank-web/src/main/java/com/angkorteam/fintech/IMifos.java index fad58182..462139aa 100644 --- a/src/main/java/com/angkorteam/fintech/IMifos.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/IMifos.java @@ -1,9 +1,9 @@ -package com.angkorteam.fintech; - -public interface IMifos { - - String getIdentifier(); - - String getToken(); - -} +package com.angkorteam.fintech; + +public interface IMifos { + + String getIdentifier(); + + String getToken(); + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/Localizer.java b/bank-web/src/main/java/com/angkorteam/fintech/Localizer.java new file mode 100644 index 00000000..a0384064 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/Localizer.java @@ -0,0 +1,145 @@ +//package com.angkorteam.fintech; +// +//import java.util.ArrayList; +//import java.util.Date; +//import java.util.HashMap; +//import java.util.List; +//import java.util.Locale; +//import java.util.Map; +// +//import org.apache.commons.lang3.StringUtils; +//import org.apache.wicket.Component; +//import org.apache.wicket.Page; +//import org.apache.wicket.Session; +//import org.apache.wicket.model.IModel; +// +//import com.angkorteam.framework.SpringBean; +//import com.angkorteam.framework.spring.JdbcNamed; +//import com.angkorteam.framework.spring.JdbcTemplate; +// +//public class Localizer extends org.apache.wicket.Localizer { +// +// private static List SYSTEM = new ArrayList<>(); +// +// static { +// SYSTEM.add("OddEvenItem.CSS.odd"); +// SYSTEM.add("OddEvenItem.CSS.even"); +// SYSTEM.add("OrderByLink.CSS.none"); +// SYSTEM.add("OrderByLink.CSS.ascending"); +// SYSTEM.add("OrderByLink.CSS.descending"); +// SYSTEM.add("AutoLabel.CSS.required"); +// SYSTEM.add("NavigatorLabel"); +// SYSTEM.add("PagingNavigation.page"); +// SYSTEM.add("PagingNavigator.first"); +// SYSTEM.add("PagingNavigator.last"); +// SYSTEM.add("PagingNavigator.next"); +// SYSTEM.add("PagingNavigator.previous"); +// SYSTEM.add("datatable.go"); +// SYSTEM.add("datatable.clear"); +// SYSTEM.add("datatable.no-records-found"); +// } +// +// @Override +// public String getStringIgnoreSettings(String key, Component component, IModel model, Locale locale, String style, String defaultValue) { +// if (SYSTEM.contains(key)) { +// return super.getStringIgnoreSettings(key, component, model, locale, style, defaultValue); +// } +// String pageClass = null; +// if (component != null) { +// if (component instanceof org.apache.wicket.Page) { +// pageClass = component.getClass().getName(); +// } else { +// Page page = component.findParent(Page.class); +// if (page != null) { +// pageClass = page.getClass().getName(); +// } +// } +// } +// +// // Make sure locale, style and variation have the right values +// String variation = (component != null ? component.getVariation() : null); +// +// if ((locale == null) && (component != null)) { +// locale = component.getLocale(); +// } +// if (locale == null) { +// locale = org.apache.wicket.Session.exists() ? org.apache.wicket.Session.get().getLocale() : Locale.getDefault(); +// } +// +// if ((style == null) && (component != null)) { +// style = component.getStyle(); +// } +// if (style == null) { +// style = org.apache.wicket.Session.exists() ? Session.get().getStyle() : null; +// } +// +// JdbcTemplate jdbcTemplate = SpringBean.getBean(JdbcTemplate.class); +// JdbcNamed named = SpringBean.getBean(JdbcNamed.class); +// List wheres = new ArrayList<>(); +// if (pageClass == null || "".equals(pageClass)) { +// wheres.add("page_class is null"); +// } else { +// wheres.add("page_class = '" + pageClass + "'"); +// } +// if (variation == null || "".equals(variation)) { +// wheres.add("variation is null"); +// } else { +// wheres.add("variation = '" + variation + "'"); +// } +// if (locale == null || locale.getLanguage() == null || "".equals(locale.getLanguage())) { +// wheres.add("locale is null"); +// } else { +// wheres.add("locale = '" + locale.getLanguage() + "'"); +// } +// if (style == null || "".equals(style)) { +// wheres.add("style is null"); +// } else { +// wheres.add("style = '" + style + "'"); +// } +// wheres.add("message_key = '" + key + "'"); +// +// if (key.contains("genderField")) { +// System.out.println("break"); +// } +// +// Map localization = jdbcTemplate.queryForMap("select id, message, silent from m_localization where " + StringUtils.join(wheres, " and ")); +// if (localization == null) { +// String wicketValue = super.getStringIgnoreSettings(key, component, model, locale, style, defaultValue); +// Map rec = new HashMap<>(); +// String id = jdbcTemplate.queryForObject("select uuid() from dual", String.class); +// if (pageClass != null && !"".equals(pageClass)) { +// rec.put("page_class", pageClass); +// } +// if (variation != null && !"".equals(variation)) { +// rec.put("variation", variation); +// } +// if (locale != null && locale.getLanguage() != null && !"".equals(locale.getLanguage())) { +// rec.put("locale", locale.getLanguage()); +// } +// if (style != null && !"".equals(style)) { +// rec.put("style", style); +// } +// if (!"".equals(key)) { +// rec.put("message_key", key); +// } +// rec.put("silent", false); +// rec.put("version", 1); +// rec.put("demand", new Date()); +// // Repository.insert(jdbcTemplate, named, "m_localization", id, rec); +// return wicketValue; +// } else { +// if (localization.get("message") == null || "".equals(localization.get("message"))) { +// String wicketValue = super.getStringIgnoreSettings(key, component, model, locale, style, defaultValue); +// if (localization.get("silent") != null && !((Boolean) localization.get("silent"))) { +// jdbcTemplate.update("UPDATE m_localization SET demand = ? where id = ?", new Date(), localization.get("id")); +// } +// return wicketValue; +// } else { +// if (localization.get("silent") != null && !((Boolean) localization.get("silent"))) { +// jdbcTemplate.update("UPDATE m_localization SET demand = ? where id = ?", new Date(), localization.get("id")); +// } +// return (String) localization.get("message"); +// } +// } +// } +//} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/MasterPage.java b/bank-web/src/main/java/com/angkorteam/fintech/MasterPage.java new file mode 100644 index 00000000..0fcbdad7 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/MasterPage.java @@ -0,0 +1,170 @@ +package com.angkorteam.fintech; + +import com.angkorteam.fintech.factory.WebSession; +import com.angkorteam.fintech.provider.ui.MemoryFooterProvider; +import com.angkorteam.fintech.provider.ui.MemoryMainSidebarProvider; +import com.angkorteam.fintech.provider.ui.MemoryNavbarProvider; +import com.angkorteam.fintech.provider.ui.MemoryThemeProvider; +import io.github.openunirest.http.JsonNode; +import org.apache.commons.lang3.StringUtils; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.markup.html.form.FormComponent; +import org.apache.wicket.model.IModel; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.json.JSONArray; +import org.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.MissingResourceException; + +public abstract class MasterPage extends com.angkorteam.webui.frmk.wicket.layout.MasterPage { + + private static final Logger LOGGER = LoggerFactory.getLogger(MasterPage.class); + + public MasterPage() { + } + + public MasterPage(IModel model) { + super(model); + } + + public MasterPage(PageParameters parameters) { + super(parameters); + } + + @Override + protected void onInitData() { + this.themeProvider = new MemoryThemeProvider(); + this.mainSidebarProvider = new MemoryMainSidebarProvider(getSession()); + this.navbarProvider = new MemoryNavbarProvider(getSession()); + this.footerProvider = new MemoryFooterProvider(getSession()); + } + + @Override + public WebSession getSession() { + return (WebSession) super.getSession(); + } + + public boolean reportError(JsonNode node) { + if (node.getObject().has("errors")) { + JSONArray array = node.getObject().getJSONArray("errors"); + for (Object object : array) { + JSONObject o = (JSONObject) object; + String defaultUserMessage = o.getString("defaultUserMessage"); + String userMessageGlobalisationCode = o.getString("userMessageGlobalisationCode"); + if (userMessageGlobalisationCode != null && !"".equals(userMessageGlobalisationCode)) { + String fieldNames = null; + try { + fieldNames = getString(userMessageGlobalisationCode); + } catch (MissingResourceException e) { + error(userMessageGlobalisationCode + " due to this reason " + defaultUserMessage); + continue; + } + + if (fieldNames != null && !"".equals(fieldNames)) { + for (String fieldName : StringUtils.split(fieldNames, ',')) { + java.lang.reflect.Field temp = null; + try { + temp = getClass().getDeclaredField(StringUtils.trimToEmpty(fieldName)); + } catch (NoSuchFieldException | SecurityException e) { + error(userMessageGlobalisationCode + " due to this reason " + defaultUserMessage); + continue; + } + temp.setAccessible(true); + + FormComponent field = null; + try { + field = (FormComponent) temp.get(this); + } catch (IllegalArgumentException | IllegalAccessException e) { + error(userMessageGlobalisationCode + " due to this reason " + defaultUserMessage); + continue; + } + + if (o.has("parameterName")) { + String parameterName = o.getString("parameterName"); + String parameterNameField = null; + String translated = null; + try { + parameterNameField = getString(parameterName); + } catch (MissingResourceException e) { + } + if (parameterNameField != null && !"".equals(parameterNameField)) { + java.lang.reflect.Field t = null; + try { + t = getClass().getDeclaredField(parameterNameField); + } catch (NoSuchFieldException | SecurityException e) { + } + if (t != null) { + t.setAccessible(true); + FormComponent f = null; + try { + f = (FormComponent) temp.get(this); + } catch (IllegalArgumentException | IllegalAccessException e) { + } + if (f != null && f.getLabel() != null) { + translated = f.getLabel().getObject(); + } + } + if (translated != null && !"".equals(translated)) { + defaultUserMessage = StringUtils.replaceAll(defaultUserMessage, parameterName, "'" + translated + "'"); + } + } + } + + field.info(defaultUserMessage); + LOGGER.info("{} => {} => {}", userMessageGlobalisationCode, fieldName, defaultUserMessage); + } + } else { + error(userMessageGlobalisationCode + " due to this reason " + defaultUserMessage); + } + } else { + error(defaultUserMessage); + } + } + + return true; + } else { + if (node.getObject().has("exception") || node.getObject().has("error")) { + if (node.getObject().has("exception") && !node.getObject().isNull("exception")) { + error((String) node.getObject().get("exception")); + } + if (node.getObject().has("error") && !node.getObject().isNull("error")) { + error((String) node.getObject().get("error")); + } + if (node.getObject().has("message") && !node.getObject().isNull("message")) { + error((String) node.getObject().get("message").getClass().getName()); + } + return true; + } + } + return false; + } + + protected void reportError(JsonNode node, AjaxRequestTarget target) { + if (node == null) { + return; + } + if (node.getObject().has("errors")) { + JSONArray array = (JSONArray) node.getObject().get("errors"); + for (Object object : array) { + JSONObject o = (JSONObject) object; + error((String) o.get("defaultUserMessage")); + } + } else { + if (node.getObject().has("exception") || node.getObject().has("error")) { + if (node.getObject().has("exception")) { + error((String) node.getObject().get("exception")); + } + if (node.getObject().has("error")) { + error((String) node.getObject().get("error")); + } + if (node.getObject().has("message")) { + error((String) node.getObject().get("message")); + } + } + } + target.add(getMessageContainer()); + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/MifosDataContextManager.java b/bank-web/src/main/java/com/angkorteam/fintech/MifosDataContextManager.java new file mode 100644 index 00000000..b670823c --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/MifosDataContextManager.java @@ -0,0 +1,75 @@ +package com.angkorteam.fintech; + +import com.angkorteam.fintech.meta.infrastructure.TenantServerConnection; +import com.angkorteam.fintech.meta.infrastructure.Tenant; +import com.google.common.collect.Maps; +import com.mysql.cj.jdbc.Driver; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.data.DataSet; +import org.apache.metamodel.data.Row; +import org.apache.metamodel.factory.DataContextFactoryRegistryImpl; +import org.apache.metamodel.factory.DataContextPropertiesImpl; +import org.springframework.beans.factory.InitializingBean; + +import java.util.Map; + +public class MifosDataContextManager implements InitializingBean { + + private String mifosUrl; + + private Map dataSources = Maps.newHashMap(); + + private DataContext delegate; + + @Override + public void afterPropertiesSet() throws Exception { + if (this.delegate == null) { + throw new NullPointerException("delegate is null"); + } + if (this.mifosUrl == null || "".equals(this.mifosUrl)) { + throw new NullPointerException("mifos url is null or empty"); + } + } + + public String getMifosUrl() { + return mifosUrl; + } + + public void setMifosUrl(String mifosUrl) { + this.mifosUrl = mifosUrl; + } + + public void setDelegate(DataContext delegate) { + this.delegate = delegate; + } + + public DataContext getDataContext(String identifier) { + if (!this.dataSources.containsKey(identifier)) { + Tenant tenants = Tenant.staticInitialize(this.delegate); + TenantServerConnection tenantServerConnections = TenantServerConnection.staticInitialize(this.delegate); + Row tenantObject = null; + try (DataSet tenantDataSet = this.delegate.query().from(tenants).selectAll().where(tenants.IDENTIFIER).eq(identifier).execute()) { + tenantDataSet.next(); + tenantObject = tenantDataSet.getRow(); + } + + try (DataSet connectionDataSet = this.delegate.query().from(tenantServerConnections).selectAll().where(tenantServerConnections.ID).eq(tenantObject.getValue(tenants.ID)).execute()) { + connectionDataSet.next(); + Row connectionObject = connectionDataSet.getRow(); + String jdbcUrl = "jdbc:mysql://" + connectionObject.getValue(tenantServerConnections.SCHEMA_SERVER) + ":" + connectionObject.getValue(tenantServerConnections.SCHEMA_SERVER_PORT) + "/" + connectionObject.getValue(tenantServerConnections.SCHEMA_NAME) + "?createDatabaseIfNotExist=true&autoReconnect=true&useSSL=true&serverTimezone=UTC"; + + DataContextPropertiesImpl configuration = new DataContextPropertiesImpl(); + configuration.put("type", "jdbc"); + configuration.put("url", jdbcUrl); + configuration.put("driver-class", Driver.class.getName()); + configuration.put("username", (String) connectionObject.getValue(tenantServerConnections.SCHEMA_USERNAME)); + configuration.put("password", (String) connectionObject.getValue(tenantServerConnections.SCHEMA_PASSWORD)); + DataContext dataContext = DataContextFactoryRegistryImpl.getDefaultInstance().createDataContext(configuration); + + this.dataSources.put(identifier, dataContext); + } + } + return this.dataSources.get(identifier); + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/MifosDataSourceManager.java b/bank-web/src/main/java/com/angkorteam/fintech/MifosDataSourceManager.java new file mode 100644 index 00000000..71009f3f --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/MifosDataSourceManager.java @@ -0,0 +1,85 @@ +package com.angkorteam.fintech; + +import com.angkorteam.fintech.meta.infrastructure.TenantServerConnection; +import com.angkorteam.fintech.meta.infrastructure.Tenant; +import com.google.common.collect.Maps; +import com.mysql.cj.jdbc.Driver; +import org.apache.commons.dbcp2.BasicDataSource; +import org.apache.metamodel.DataContext; +import org.apache.metamodel.data.DataSet; +import org.apache.metamodel.data.Row; +import org.springframework.beans.factory.DisposableBean; +import org.springframework.beans.factory.InitializingBean; + +import javax.sql.DataSource; +import java.sql.Connection; +import java.util.Map; + +public class MifosDataSourceManager implements DisposableBean, InitializingBean { + + private String mifosUrl; + + private Map dataSources = Maps.newHashMap(); + + private DataContext delegate; + + @Override + public void afterPropertiesSet() throws Exception { + if (this.delegate == null) { + throw new NullPointerException("delegate is null"); + } + if (this.mifosUrl == null || "".equals(this.mifosUrl)) { + throw new NullPointerException("mifos url is null or empty"); + } + } + + public String getMifosUrl() { + return mifosUrl; + } + + public void setMifosUrl(String mifosUrl) { + this.mifosUrl = mifosUrl; + } + + public void setDelegate(DataContext delegate) { + this.delegate = delegate; + } + + public DataSource getDataSource(String identifier) { + if (!this.dataSources.containsKey(identifier)) { + Tenant tenants = Tenant.staticInitialize(this.delegate); + TenantServerConnection tenantServerConnections = TenantServerConnection.staticInitialize(this.delegate); + Row tenantObject = null; + try (DataSet tenantDataSet = this.delegate.query().from(tenants).selectAll().where(tenants.IDENTIFIER).eq(identifier).execute()) { + tenantDataSet.next(); + tenantObject = tenantDataSet.getRow(); + } + + try (DataSet connectionDataSet = this.delegate.query().from(tenantServerConnections).selectAll().where(tenantServerConnections.ID).eq(tenantObject.getValue(tenants.ID)).execute()) { + connectionDataSet.next(); + Row connectionObject = connectionDataSet.getRow(); + BasicDataSource dataSource = new BasicDataSource(); + dataSource.setDriverClassName(Driver.class.getName()); + dataSource.setUsername((String) connectionObject.getValue(tenantServerConnections.SCHEMA_USERNAME)); + dataSource.setPassword((String) connectionObject.getValue(tenantServerConnections.SCHEMA_PASSWORD)); + dataSource.setMaxIdle(((Number) connectionObject.getValue(tenantServerConnections.POOL_MAX_IDLE)).intValue()); + dataSource.setMinIdle(((Number) connectionObject.getValue(tenantServerConnections.POOL_MIN_IDLE)).intValue()); + dataSource.setInitialSize(((Number) connectionObject.getValue(tenantServerConnections.POOL_INITIAL_SIZE)).intValue()); + dataSource.setDefaultTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED); + dataSource.setDefaultAutoCommit(false); + String jdbcUrl = "jdbc:mysql://" + connectionObject.getValue(tenantServerConnections.SCHEMA_SERVER) + ":" + connectionObject.getValue(tenantServerConnections.SCHEMA_SERVER_PORT) + "/" + connectionObject.getValue(tenantServerConnections.SCHEMA_NAME) + "?createDatabaseIfNotExist=true&autoReconnect=true&useSSL=true&serverTimezone=UTC"; + dataSource.setUrl(jdbcUrl); + this.dataSources.put(identifier, dataSource); + } + } + return this.dataSources.get(identifier); + } + + @Override + public void destroy() throws Exception { + for (BasicDataSource dataSource : this.dataSources.values()) { + dataSource.close(); + } + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/Page.java b/bank-web/src/main/java/com/angkorteam/fintech/Page.java new file mode 100644 index 00000000..e54f44e9 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/Page.java @@ -0,0 +1,277 @@ +//package com.angkorteam.fintech; +// +//import java.util.List; +//import java.util.MissingResourceException; +// +//import org.apache.commons.lang3.StringUtils; +//import org.apache.wicket.ajax.AjaxRequestTarget; +//import org.apache.wicket.markup.head.CssHeaderItem; +//import org.apache.wicket.markup.head.IHeaderResponse; +//import org.apache.wicket.markup.html.form.FormComponent; +//import org.apache.wicket.model.IModel; +//import org.apache.wicket.model.Model; +//import org.apache.wicket.request.mapper.parameter.PageParameters; +//import org.json.JSONArray; +//import org.json.JSONObject; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +// +//import com.angkorteam.fintech.pages.AccountingPage; +//import com.angkorteam.fintech.pages.LoginPage; +//import com.angkorteam.fintech.pages.LogoutPage; +//import com.angkorteam.fintech.pages.OrganizationDashboardPage; +//import com.angkorteam.fintech.pages.ProductDashboardPage; +//import com.angkorteam.fintech.pages.SimulatorPage; +//import com.angkorteam.fintech.pages.SystemDashboardPage; +//import com.angkorteam.fintech.pages.client.center.CenterBrowsePage; +//import com.angkorteam.fintech.pages.client.client.ClientBrowsePage; +//import com.angkorteam.fintech.pages.client.group.GroupBrowsePage; +//import com.angkorteam.fintech.pages.staff.UserBrowsePage; +//import com.angkorteam.framework.Emoji; +//import com.angkorteam.framework.models.NavBarMenu; +//import com.angkorteam.framework.models.NavBarMenuItem; +//import com.angkorteam.framework.models.PageBreadcrumb; +//import com.angkorteam.framework.models.PageFooter; +//import com.angkorteam.framework.models.PageHeader; +//import com.angkorteam.framework.models.PageLogo; +//import com.angkorteam.framework.models.SideMenu; +//import com.angkorteam.framework.models.UserInfo; +//import com.angkorteam.framework.wicket.DashboardPage; +//import com.google.common.collect.Lists; +//import io.github.openunirest.http.JsonNode; +// +///** +// * Created by socheatkhauv on 6/17/17. +// */ +//public abstract class Page extends DashboardPage { +// +// private static final Logger LOGGER = LoggerFactory.getLogger(Page.class); +// +// public Page() { +// } +// +// public Page(IModel model) { +// super(model); +// } +// +// public Page(PageParameters parameters) { +// super(parameters); +// } +// +// @Override +// public void renderHead(IHeaderResponse response) { +// super.renderHead(response); +// response.render(CssHeaderItem.forCSS(".dropdown-menu { z-index: 100060 !important; }", "menu")); +// } +// +// @Override +// protected final void onInitialize() { +// initData(); +// super.onInitialize(); +// initComponent(); +// configureMetaData(); +// } +// +// protected abstract void initData(); +// +// protected abstract void initComponent(); +// +// protected abstract void configureMetaData(); +// +// public boolean reportError(JsonNode node) { +// if (node.getObject().has("errors")) { +// JSONArray array = node.getObject().getJSONArray("errors"); +// for (Object object : array) { +// JSONObject o = (JSONObject) object; +// String defaultUserMessage = o.getString("defaultUserMessage"); +// String userMessageGlobalisationCode = o.getString("userMessageGlobalisationCode"); +// if (userMessageGlobalisationCode != null && !"".equals(userMessageGlobalisationCode)) { +// String fieldNames = null; +// try { +// fieldNames = getString(userMessageGlobalisationCode); +// } catch (MissingResourceException e) { +// error(userMessageGlobalisationCode + " due to this reason " + defaultUserMessage); +// continue; +// } +// +// if (fieldNames != null && !"".equals(fieldNames)) { +// for (String fieldName : StringUtils.split(fieldNames, ',')) { +// java.lang.reflect.Field temp = null; +// try { +// temp = getClass().getDeclaredField(StringUtils.trimToEmpty(fieldName)); +// } catch (NoSuchFieldException | SecurityException e) { +// error(userMessageGlobalisationCode + " due to this reason " + defaultUserMessage); +// continue; +// } +// temp.setAccessible(true); +// +// FormComponent field = null; +// try { +// field = (FormComponent) temp.get(this); +// } catch (IllegalArgumentException | IllegalAccessException e) { +// error(userMessageGlobalisationCode + " due to this reason " + defaultUserMessage); +// continue; +// } +// +// if (o.has("parameterName")) { +// String parameterName = o.getString("parameterName"); +// String parameterNameField = null; +// String translated = null; +// try { +// parameterNameField = getString(parameterName); +// } catch (MissingResourceException e) { +// } +// if (parameterNameField != null && !"".equals(parameterNameField)) { +// java.lang.reflect.Field t = null; +// try { +// t = getClass().getDeclaredField(parameterNameField); +// } catch (NoSuchFieldException | SecurityException e) { +// } +// if (t != null) { +// t.setAccessible(true); +// FormComponent f = null; +// try { +// f = (FormComponent) temp.get(this); +// } catch (IllegalArgumentException | IllegalAccessException e) { +// } +// if (f != null && f.getLabel() != null) { +// translated = f.getLabel().getObject(); +// } +// } +// if (translated != null && !"".equals(translated)) { +// defaultUserMessage = StringUtils.replaceAll(defaultUserMessage, parameterName, "'" + translated + "'"); +// } +// } +// } +// +// field.info(defaultUserMessage); +// LOGGER.info("{} => {} => {}", userMessageGlobalisationCode, fieldName, defaultUserMessage); +// } +// } else { +// error(userMessageGlobalisationCode + " due to this reason " + defaultUserMessage); +// } +// } else { +// error(defaultUserMessage); +// } +// } +// +// return true; +// } else { +// if (node.getObject().has("exception") || node.getObject().has("error")) { +// if (node.getObject().has("exception") && !node.getObject().isNull("exception")) { +// error((String) node.getObject().get("exception")); +// } +// if (node.getObject().has("error") && !node.getObject().isNull("error")) { +// error((String) node.getObject().get("error")); +// } +// if (node.getObject().has("message") && !node.getObject().isNull("message")) { +// error((String) node.getObject().get("message").getClass().getName()); +// } +// return true; +// } +// } +// return false; +// } +// +// protected void reportError(JsonNode node, AjaxRequestTarget target) { +// if (node == null) { +// return; +// } +// if (node.getObject().has("errors")) { +// JSONArray array = (JSONArray) node.getObject().get("errors"); +// for (Object object : array) { +// JSONObject o = (JSONObject) object; +// error((String) o.get("defaultUserMessage")); +// } +// } else { +// if (node.getObject().has("exception") || node.getObject().has("error")) { +// if (node.getObject().has("exception")) { +// error((String) node.getObject().get("exception")); +// } +// if (node.getObject().has("error")) { +// error((String) node.getObject().get("error")); +// } +// if (node.getObject().has("message")) { +// error((String) node.getObject().get("message")); +// } +// } +// } +// target.add(this.feedbackPanel); +// } +// +// @Override +// public IModel> buildSideMenu() { +// List sideMenus = Lists.newArrayList(); +// sideMenus.add(new SideMenu().buildTypeHeader("MAIN NAVIGATION")); +// sideMenus.add(new SideMenu().buildTypeMenu(LoginPage.class, null, Emoji.fa_dashboard, "Navigation")); +// sideMenus.add(new SideMenu().buildTypeMenu(LoginPage.class, null, Emoji.fa_dashboard, "Checker Inbox & Tasks")); +// sideMenus.add(new SideMenu().buildTypeMenu(LoginPage.class, null, Emoji.fa_dashboard, "Collection Sheet")); +// sideMenus.add(new SideMenu().buildTypeMenu(LoginPage.class, null, Emoji.fa_dashboard, "Individual Collection Sheet")); +// sideMenus.add(new SideMenu().buildTypeMenu(LoginPage.class, null, Emoji.fa_dashboard, "Frequent Posting")); +// sideMenus.add(new SideMenu().buildTypeMenu(LoginPage.class, null, Emoji.fa_dashboard, "Add Journal Entries")); +// sideMenus.add(new SideMenu().buildTypeMenu(LoginPage.class, null, Emoji.fa_dashboard, "Closing Entries")); +// sideMenus.add(new SideMenu().buildTypeMenu(LoginPage.class, null, Emoji.fa_dashboard, "Chart of Accounts")); +// sideMenus.add(new SideMenu().buildTypeMenu(LoginPage.class, null, Emoji.fa_dashboard, "Client")); +// sideMenus.add(new SideMenu().buildTypeMenu(LoginPage.class, null, Emoji.fa_dashboard, "Group")); +// sideMenus.add(new SideMenu().buildTypeMenu(LoginPage.class, null, Emoji.fa_dashboard, "Center")); +// sideMenus.add(new SideMenu().buildTypeMenu(LoginPage.class, null, Emoji.fa_dashboard, "Help")); +// return Model.ofList(sideMenus); +// } +// +// @Override +// public IModel buildPageHeader() { +// return Model.of(new PageHeader().setTitle("FinTech").setDescription("FinTech")); +// } +// +// @Override +// public IModel> buildPageBreadcrumb() { +// return null; +// } +// +// @Override +// public IModel> buildNavBarMenu() { +// +// NavBarMenu simulatorMenu = new NavBarMenu().buildTypeIcon(SimulatorPage.class, null, Emoji.fa_dashboard, "Simulator", null); +// +// NavBarMenu clientsMenu = new NavBarMenu().buildTypeIcon(Emoji.fa_dashboard, "Clients", null, new NavBarMenuItem().buildTypeIcon(ClientBrowsePage.class, null, Emoji.fa_dashboard, "Clients"), new NavBarMenuItem().buildTypeIcon(GroupBrowsePage.class, null, Emoji.fa_dashboard, "Groups"), new NavBarMenuItem().buildTypeIcon(CenterBrowsePage.class, null, Emoji.fa_dashboard, "Centers")); +// +// NavBarMenu accountingMenu = new NavBarMenu().buildTypeIcon(AccountingPage.class, null, Emoji.fa_dashboard, "Accounting", null); +// +// NavBarMenu reportsMenu = new NavBarMenu().buildTypeIcon(Emoji.fa_dashboard, "Reports", null, new NavBarMenuItem().buildTypeIcon(LoginPage.class, null, Emoji.fa_dashboard, "All"), new NavBarMenuItem().buildTypeIcon(LoginPage.class, null, Emoji.fa_dashboard, "Clients"), new NavBarMenuItem().buildTypeIcon(LoginPage.class, null, Emoji.fa_dashboard, "Loans"), new NavBarMenuItem().buildTypeIcon(LoginPage.class, null, Emoji.fa_dashboard, "Savings"), new NavBarMenuItem().buildTypeIcon(LoginPage.class, null, Emoji.fa_dashboard, "Funds"), new NavBarMenuItem().buildTypeIcon(LoginPage.class, null, Emoji.fa_dashboard, "Accounting"), new NavBarMenuItem().buildTypeIcon(LoginPage.class, null, Emoji.fa_dashboard, "XBRL")); +// +// NavBarMenu adminMenu = new NavBarMenu().buildTypeIcon(Emoji.fa_dashboard, "Admin", null, new NavBarMenuItem().buildTypeIcon(UserBrowsePage.class, null, Emoji.fa_dashboard, "Users"), new NavBarMenuItem().buildTypeIcon(OrganizationDashboardPage.class, null, Emoji.fa_dashboard, "Organization"), new NavBarMenuItem().buildTypeIcon(SystemDashboardPage.class, null, Emoji.fa_dashboard, "System"), new NavBarMenuItem().buildTypeIcon(ProductDashboardPage.class, null, Emoji.fa_dashboard, "Products"), new NavBarMenuItem().buildTypeIcon(LoginPage.class, null, Emoji.fa_dashboard, "Templates")); +// +// NavBarMenu profileMenu = new NavBarMenu().buildTypeIcon(Emoji.fa_dashboard, "Profile", null, new NavBarMenuItem().buildTypeIcon(LogoutPage.class, null, Emoji.fa_sign_out, "Logout")); +// +// List menus = Lists.newArrayList(simulatorMenu, clientsMenu, accountingMenu, reportsMenu, adminMenu, profileMenu); +// return Model.ofList(menus); +// } +// +// @Override +// public IModel buildUserInfo() { +// return null; +// } +// +// @Override +// protected IModel buildPageLogo() { +// PageLogo pageLogo = new PageLogo("ANG", "Angkor FinTech"); +// return Model.of(pageLogo); +// } +// +// @Override +// protected IModel buildPageFooter() { +// PageFooter pageFooter = new PageFooter(); +// pageFooter.setCompany("AngkorTeam"); +// return Model.of(pageFooter); +// } +// +// @Override +// public IModel hasSearchForm() { +// return Model.of(false); +// } +// +// @Override +// public void onSearchClick(String searchValue) { +// +// } +//} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/ProxyAPI.java b/bank-web/src/main/java/com/angkorteam/fintech/ProxyAPI.java new file mode 100644 index 00000000..ddb6b01c --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/ProxyAPI.java @@ -0,0 +1,395 @@ +//package com.angkorteam.fintech; +// +//import java.io.File; +//import java.io.IOException; +//import java.io.InputStream; +//import java.util.Date; +//import java.util.Enumeration; +//import java.util.HashMap; +//import java.util.List; +//import java.util.Map; +// +//import javax.servlet.Filter; +//import javax.servlet.FilterChain; +//import javax.servlet.FilterConfig; +//import javax.servlet.ServletContext; +//import javax.servlet.ServletException; +//import javax.servlet.ServletRequest; +//import javax.servlet.ServletResponse; +//import javax.servlet.http.HttpServletRequest; +//import javax.servlet.http.HttpServletResponse; +//import javax.servlet.http.HttpSession; +//import javax.xml.parsers.DocumentBuilder; +//import javax.xml.parsers.DocumentBuilderFactory; +//import javax.xml.parsers.ParserConfigurationException; +// +//import org.apache.commons.io.FileUtils; +//import org.apache.commons.io.IOUtils; +//import org.apache.commons.lang3.StringUtils; +//import org.apache.commons.lang3.time.DateFormatUtils; +//import org.apache.wicket.WicketRuntimeException; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.context.ApplicationContext; +//import org.springframework.http.MediaType; +//import org.springframework.stereotype.Controller; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.context.support.WebApplicationContextUtils; +//import org.w3c.dom.Document; +//import org.xml.sax.SAXException; +// +//import com.angkorteam.framework.jdbc.InsertQuery; +//import com.angkorteam.framework.spring.JdbcNamed; +//import com.google.gson.Gson; +// +//import io.github.openunirest.http.HttpResponse; +//import io.github.openunirest.http.Unirest; +//import io.github.openunirest.http.exceptions.UnirestException; +// +//@Controller +//public class ProxyAPI implements Filter { +// +// private static final Logger LOGGER = LoggerFactory.getLogger(ProxyAPI.class); +// +// @RequestMapping(path = "/**") +// public void doProxy(HttpServletRequest request, HttpServletResponse response) throws IOException, UnirestException { +// HttpSession session = request.getSession(true); +// ApplicationContext applicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext()); +// String infoPath = request.getPathInfo(); +// if ("/v1/authentication".equals(infoPath)) { +// String username = request.getParameter("username"); +// String password = request.getParameter("password"); +// String identifier = request.getHeader("Fineract-Platform-TenantId"); +// if (identifier == null || "".equals(identifier)) { +// identifier = request.getParameter("tenantIdentifier"); +// } +// if (username == null || "".equals(username) || password == null || "".equals(password) || identifier == null || "".equals(identifier)) { +// response.sendError(HttpServletResponse.SC_BAD_REQUEST); +// } else { +// MifosDataSourceManager mifos = applicationContext.getBean(MifosDataSourceManager.class); +// String mifosUrl = mifos.getMifosUrl() + "/api/v1/authentication?username=" + username + "&password=" + password; +// HttpResponse resp = Unirest.post(mifosUrl).header("Fineract-Platform-TenantId", identifier).header("Content-Type", "application/json").asBinary(); +// IOUtils.copy(resp.getBody(), response.getOutputStream()); +// response.setContentType(resp.getHeaders().getFirst("Content-Type")); +// response.setStatus(resp.getStatus()); +// } +// return; +// } else { +// ServletContext servletContext = request.getServletContext(); +// String identifier = request.getHeader("Fineract-Platform-TenantId"); +// String authorization = request.getHeader("Authorization"); +// if (identifier == null || "".equals(identifier) || authorization == null || "".equals(authorization)) { +// response.sendError(HttpServletResponse.SC_FORBIDDEN); +// return; +// } +// session.setAttribute(Session.IDENTIFIER, identifier); +// MifosDataSourceManager mifos = applicationContext.getBean(MifosDataSourceManager.class); +// Gson gson = applicationContext.getBean(Gson.class); +// if (infoPath == null || "".equals(infoPath) || "/".equals(infoPath)) { +// response.setContentType(MediaType.APPLICATION_JSON_UTF8_VALUE); +// Map json = new HashMap<>(); +// json.put("server-time", DateFormatUtils.ISO_8601_EXTENDED_DATETIME_TIME_ZONE_FORMAT.format(new Date())); +// String manifest = "/META-INF/MANIFEST.MF"; +// String absoluteDiskPath = servletContext.getRealPath(manifest); +// File file = new File(absoluteDiskPath); +// if (file.exists()) { +// try { +// List lines = FileUtils.readLines(file, "UTF-8"); +// for (String line : lines) { +// if (line != null && !"".equals(line)) { +// if (line.startsWith("Version")) { +// json.put("version", StringUtils.trimToEmpty(StringUtils.substring(line, "Version:".length()))); +// } else if (line.startsWith("Build-Time")) { +// json.put("build-time", StringUtils.trimToEmpty(StringUtils.substring(line, "Build-Time:".length()))); +// } +// } +// } +// } catch (IOException e) { +// throw new WicketRuntimeException(e); +// } +// } else { +// DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); +// DocumentBuilder builder = null; +// try { +// builder = factory.newDocumentBuilder(); +// } catch (ParserConfigurationException e) { +// throw new WicketRuntimeException(e); +// } +// File popFile = new File("pom.xml"); +// Document document = null; +// try { +// document = builder.parse(popFile); +// } catch (SAXException | IOException e) { +// throw new WicketRuntimeException(e); +// } +// json.put("version", document.getDocumentElement().getElementsByTagName("version").item(0).getTextContent()); +// json.put("build-time", DateFormatUtils.ISO_8601_EXTENDED_DATETIME_TIME_ZONE_FORMAT.format(new Date())); +// } +// gson.toJson(json, response.getWriter()); +// return; +// } +// String mifosUrl = null; +// if (request.getQueryString() != null && !"".equals(request.getQueryString())) { +// mifosUrl = mifos.getMifosUrl() + "/api" + infoPath + "?" + request.getQueryString(); +// } else { +// mifosUrl = mifos.getMifosUrl() + "/api" + infoPath; +// } +// String requestContentType = StringUtils.lowerCase(request.getContentType()); +// String method = StringUtils.upperCase(request.getMethod()); +// String accept = StringUtils.lowerCase(request.getHeader("Accept")); +// +// LOGGER.info("{} => {}", String.format("%0$-6s", method), mifosUrl); +// HttpResponse resp = null; +// String responseContentType = null; +// String requestBody = null; +// +// boolean handled = true; +// +// UnirestException unirestException = null; +// +// if (method.equals("POST")) { +// if (requestContentType != null && !"".equals(requestContentType)) { +// if ("application/json".equals(requestContentType) || "application/json;charset=utf-8".equals(requestContentType)) { +// requestBody = IOUtils.toString(request.getInputStream(), "UTF-8"); +// try { +// resp = Unirest.post(mifosUrl).header("Accept", accept).header("Authorization", authorization).header("Fineract-Platform-TenantId", identifier).header("Content-Type", requestContentType).body(requestBody).asString(); +// responseContentType = StringUtils.lowerCase(resp.getHeaders().getFirst("Content-Type")); +// response.getWriter().write(resp.getBody()); +// response.setContentType(responseContentType); +// response.setStatus(resp.getStatus()); +// } catch (UnirestException e) { +// unirestException = e; +// } +// } else { +// byte[] bytes = IOUtils.toByteArray(request.getInputStream()); +// try { +// HttpResponse temp = Unirest.post(mifosUrl).header("Accept", accept).header("Authorization", authorization).header("Fineract-Platform-TenantId", identifier).header("Content-Type", requestContentType).body(bytes).asBinary(); +// IOUtils.copy(temp.getBody(), response.getOutputStream()); +// response.setContentType(temp.getHeaders().getFirst("Content-Type")); +// response.setStatus(temp.getStatus()); +// } catch (UnirestException e) { +// unirestException = e; +// } +// } +// } else { +// byte[] bytes = IOUtils.toByteArray(request.getInputStream()); +// try { +// HttpResponse temp = Unirest.post(mifosUrl).header("Accept", accept).header("Authorization", authorization).header("Fineract-Platform-TenantId", identifier).body(bytes).asBinary(); +// IOUtils.copy(temp.getBody(), response.getOutputStream()); +// response.setContentType(temp.getHeaders().getFirst("Content-Type")); +// response.setStatus(temp.getStatus()); +// } catch (UnirestException e) { +// unirestException = e; +// } +// } +// } else if (method.equals("PUT")) { +// if (requestContentType != null && !"".equals(requestContentType)) { +// if ("application/json".equals(requestContentType) || "application/json;charset=utf-8".equals(requestContentType)) { +// requestBody = IOUtils.toString(request.getInputStream(), "UTF-8"); +// try { +// resp = Unirest.put(mifosUrl).header("Accept", accept).header("Authorization", authorization).header("Fineract-Platform-TenantId", identifier).header("Content-Type", requestContentType).body(requestBody).asString(); +// responseContentType = StringUtils.lowerCase(resp.getHeaders().getFirst("Content-Type")); +// response.getWriter().write(resp.getBody()); +// response.setContentType(responseContentType); +// response.setStatus(resp.getStatus()); +// } catch (UnirestException e) { +// unirestException = e; +// } +// } else { +// byte[] bytes = IOUtils.toByteArray(request.getInputStream()); +// try { +// HttpResponse temp = Unirest.put(mifosUrl).header("Accept", accept).header("Authorization", authorization).header("Fineract-Platform-TenantId", identifier).header("Content-Type", requestContentType).body(bytes).asBinary(); +// IOUtils.copy(temp.getBody(), response.getOutputStream()); +// response.setContentType(temp.getHeaders().getFirst("Content-Type")); +// response.setStatus(temp.getStatus()); +// } catch (UnirestException e) { +// unirestException = e; +// } +// } +// } else { +// byte[] bytes = IOUtils.toByteArray(request.getInputStream()); +// try { +// HttpResponse temp = Unirest.put(mifosUrl).header("Accept", accept).header("Authorization", authorization).header("Fineract-Platform-TenantId", identifier).body(bytes).asBinary(); +// IOUtils.copy(temp.getBody(), response.getOutputStream()); +// response.setContentType(temp.getHeaders().getFirst("Content-Type")); +// response.setStatus(temp.getStatus()); +// } catch (UnirestException e) { +// unirestException = e; +// } +// } +// } else if (method.equals("DELETE")) { +// if (requestContentType != null && !"".equals(requestContentType)) { +// if ("application/json".equals(requestContentType) || "application/json;charset=utf-8".equals(requestContentType)) { +// try { +// resp = Unirest.delete(mifosUrl).header("Accept", accept).header("Authorization", authorization).header("Fineract-Platform-TenantId", identifier).header("Content-Type", requestContentType).asString(); +// responseContentType = StringUtils.lowerCase(resp.getHeaders().getFirst("Content-Type")); +// response.getWriter().write(resp.getBody()); +// response.setContentType(responseContentType); +// response.setStatus(resp.getStatus()); +// } catch (UnirestException e) { +// unirestException = e; +// } +// } else { +// try { +// HttpResponse temp = Unirest.delete(mifosUrl).header("Accept", accept).header("Authorization", authorization).header("Fineract-Platform-TenantId", identifier).header("Content-Type", requestContentType).asBinary(); +// IOUtils.copy(temp.getBody(), response.getOutputStream()); +// response.setContentType(temp.getHeaders().getFirst("Content-Type")); +// response.setStatus(temp.getStatus()); +// } catch (UnirestException e) { +// unirestException = e; +// } +// } +// } else { +// try { +// HttpResponse temp = Unirest.delete(mifosUrl).header("Accept", accept).header("Authorization", authorization).header("Fineract-Platform-TenantId", identifier).asBinary(); +// IOUtils.copy(temp.getBody(), response.getOutputStream()); +// response.setContentType(temp.getHeaders().getFirst("Content-Type")); +// response.setStatus(temp.getStatus()); +// } catch (UnirestException e) { +// unirestException = e; +// } +// } +// } else if (method.equals("GET")) { +// if (requestContentType != null && !"".equals(requestContentType)) { +// if ("application/json".equals(requestContentType) || "application/json;charset=utf-8".equals(requestContentType)) { +// try { +// resp = Unirest.get(mifosUrl).header("Accept", accept).header("Authorization", authorization).header("Fineract-Platform-TenantId", identifier).header("Content-Type", requestContentType).asString(); +// responseContentType = StringUtils.lowerCase(resp.getHeaders().getFirst("Content-Type")); +// response.getWriter().write(resp.getBody()); +// response.setContentType(responseContentType); +// response.setStatus(resp.getStatus()); +// } catch (UnirestException e) { +// unirestException = e; +// } +// } else { +// try { +// HttpResponse temp = Unirest.get(mifosUrl).header("Accept", accept).header("Authorization", authorization).header("Fineract-Platform-TenantId", identifier).header("Content-Type", requestContentType).asBinary(); +// IOUtils.copy(temp.getBody(), response.getOutputStream()); +// response.setContentType(temp.getHeaders().getFirst("Content-Type")); +// response.setStatus(temp.getStatus()); +// } catch (UnirestException e) { +// unirestException = e; +// } +// } +// } else { +// if ("application/json".equals(requestContentType) || "application/json;charset=utf-8".equals(requestContentType)) { +// try { +// resp = Unirest.get(mifosUrl).header("Accept", accept).header("Authorization", authorization).header("Fineract-Platform-TenantId", identifier).asString(); +// responseContentType = StringUtils.lowerCase(resp.getHeaders().getFirst("Content-Type")); +// response.getWriter().write(resp.getBody()); +// response.setContentType(responseContentType); +// response.setStatus(resp.getStatus()); +// } catch (UnirestException e) { +// unirestException = e; +// } +// } else { +// try { +// HttpResponse temp = Unirest.get(mifosUrl).header("Accept", accept).header("Authorization", authorization).header("Fineract-Platform-TenantId", identifier).asBinary(); +// IOUtils.copy(temp.getBody(), response.getOutputStream()); +// response.setContentType(temp.getHeaders().getFirst("Content-Type")); +// response.setStatus(temp.getStatus()); +// } catch (UnirestException e) { +// unirestException = e; +// } +// } +// } +// } else { +// handled = false; +// } +// +// if (!handled) { +// response.sendError(HttpServletResponse.SC_BAD_REQUEST); +// } else { +// +// JdbcNamed named = applicationContext.getBean(JdbcNamed.class); +// String uuid = named.queryForObject("select uuid() from dual", new HashMap<>(), String.class); +// InsertQuery insertQuery = null; +// insertQuery = new InsertQuery("tbl_proxy"); +// insertQuery.addValue("id = :id", uuid); +// insertQuery.addValue("path = :path", mifosUrl); +// insertQuery.addValue("method = :method", method); +// insertQuery.addValue("accept = :accept", accept); +// insertQuery.addValue("request_content_type = :request_content_type", requestContentType); +// if (requestBody != null) { +// insertQuery.addValue("request_body = :request_body", requestBody); +// } +// insertQuery.addValue("created_datetime = :created_datetime", new Date()); +// if (unirestException != null) { +// insertQuery.addValue("response_status = :response_status", HttpServletResponse.SC_INTERNAL_SERVER_ERROR); +// insertQuery.addValue("response_status_text = :response_status_text", unirestException.getMessage()); +// } else { +// if (resp != null) { +// insertQuery.addValue("response_body = :response_body", resp.getBody()); +// insertQuery.addValue("response_status = :response_status", resp.getStatus()); +// insertQuery.addValue("response_status_text = :response_status_text", resp.getStatusText()); +// insertQuery.addValue("response_content_type = :response_content_type", responseContentType); +// } +// } +// named.update(insertQuery.toSQL(), insertQuery.getParam()); +// +// Enumeration headers = request.getHeaderNames(); +// while (headers.hasMoreElements()) { +// insertQuery = new InsertQuery("tbl_proxy_request_header"); +// String header = headers.nextElement(); +// insertQuery.addValue("id = uuid()"); +// insertQuery.addValue("proxy_id = :proxy_id", uuid); +// insertQuery.addValue("h_name = :h_name", header); +// insertQuery.addValue("h_value = :h_value", request.getHeader(header)); +// named.update(insertQuery.toSQL(), insertQuery.getParam()); +// } +// if (resp != null) { +// for (Map.Entry> header : resp.getHeaders().entrySet()) { +// if (header.getValue() != null && !header.getValue().isEmpty()) { +// insertQuery = new InsertQuery("tbl_proxy_response_header"); +// insertQuery.addValue("id = uuid()"); +// insertQuery.addValue("proxy_id = :proxy_id", uuid); +// insertQuery.addValue("h_name = :h_name", header.getKey()); +// insertQuery.addValue("h_value = :h_value", StringUtils.join(header.getValue(), ", ")); +// named.update(insertQuery.toSQL(), insertQuery.getParam()); +// } +// } +// } +// } +// } +// } +// +// @Override +// public void init(FilterConfig filterConfig) throws ServletException { +// +// } +// +// @Override +// public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { +// HttpServletRequest req = (HttpServletRequest) request; +// HttpServletResponse resp = (HttpServletResponse) response; +// if ("OPTIONS".equalsIgnoreCase(req.getMethod())) { +// String header = req.getHeader("Access-Control-Request-Headers"); +// resp.addHeader("Allow", "OPTIONS"); +// resp.addHeader("Allow", "GET"); +// resp.addHeader("Allow", "POST"); +// resp.addHeader("Allow", "PUT"); +// resp.addHeader("Allow", "DELETE"); +// resp.addHeader("Access-Control-Allow-Origin", "*"); +// resp.addHeader("Access-Control-Allow-Methods", "GET"); +// resp.addHeader("Access-Control-Allow-Methods", "POST"); +// resp.addHeader("Access-Control-Allow-Methods", "PUT"); +// resp.addHeader("Access-Control-Allow-Methods", "DELETE"); +// resp.addHeader("Access-Control-Allow-Methods", "OPTIONS"); +// resp.addHeader("Access-Control-Allow-Headers", header); +// return; +// } else { +// resp.addHeader("Access-Control-Allow-Origin", "*"); +// resp.addHeader("Access-Control-Allow-Methods", "GET"); +// resp.addHeader("Access-Control-Allow-Methods", "POST"); +// resp.addHeader("Access-Control-Allow-Methods", "PUT"); +// resp.addHeader("Access-Control-Allow-Methods", "DELETE"); +// resp.addHeader("Access-Control-Allow-Methods", "OPTIONS"); +// chain.doFilter(request, response); +// } +// } +// +// @Override +// public void destroy() { +// +// } +//} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/SSLContextUtils.java b/bank-web/src/main/java/com/angkorteam/fintech/SSLContextUtils.java new file mode 100644 index 00000000..a99aa85d --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/SSLContextUtils.java @@ -0,0 +1,117 @@ +package com.angkorteam.fintech; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.security.KeyManagementException; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; +import java.security.UnrecoverableKeyException; +import java.security.cert.CertificateException; + +import javax.net.ssl.KeyManager; +import javax.net.ssl.KeyManagerFactory; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLServerSocketFactory; +import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.TrustManager; +import javax.net.ssl.TrustManagerFactory; +import javax.net.ssl.X509KeyManager; +import javax.net.ssl.X509TrustManager; + +public class SSLContextUtils { + + public static SSLServerSocketFactory createSSLServerSocketFactory(X509TrustManager trustManager, X509KeyManager keyManager) { + try { + SSLContext context = SSLContext.getInstance("TLS"); + context.init(new KeyManager[] { keyManager }, new TrustManager[] { trustManager }, new SecureRandom()); + return context.getServerSocketFactory(); + } catch (NoSuchAlgorithmException | KeyManagementException ex) { + return null; + } + } + + public static SSLServerSocketFactory createSSLServerSocketFactory(X509KeyManager keyManager) { + try { + SSLContext context = SSLContext.getInstance("TLS"); + context.init(new KeyManager[] { keyManager }, null, new SecureRandom()); + return context.getServerSocketFactory(); + } catch (NoSuchAlgorithmException | KeyManagementException ex) { + return null; + } + } + + public static SSLSocketFactory createSSLSocketFactory(X509TrustManager trustManager, X509KeyManager keyManager) { + try { + SSLContext context = SSLContext.getInstance("TLS"); + context.init(new KeyManager[] { keyManager }, new TrustManager[] { trustManager }, new SecureRandom()); + return context.getSocketFactory(); + } catch (NoSuchAlgorithmException | KeyManagementException ex) { + return null; + } + } + + public static SSLSocketFactory createSSLSocketFactory(X509TrustManager trustManager) { + try { + SSLContext context = SSLContext.getInstance("TLS"); + context.init(null, new TrustManager[] { trustManager }, new SecureRandom()); + return context.getSocketFactory(); + } catch (NoSuchAlgorithmException | KeyManagementException ex) { + return null; + } + } + + public static X509KeyManager createKeyManager(KeyStore keyStore, String keyPassword) { + try { + KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); + KeyManager[] keystoreManagers = null; + kmf.init(keyStore, keyPassword == null ? new char[] {} : keyPassword.toCharArray()); + keystoreManagers = kmf.getKeyManagers(); + return (X509KeyManager) keystoreManagers[0]; + } catch (NoSuchAlgorithmException | KeyStoreException | UnrecoverableKeyException e) { + return null; + } + } + + public static X509TrustManager createTrustManager(KeyStore keyStore) { + try { + TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509"); + tmf.init(keyStore); + TrustManager[] trustManagers = tmf.getTrustManagers(); + if (trustManagers.length != 1) { + throw new IllegalArgumentException("More than 1 TrustManager created."); + } + if (!(trustManagers[0] instanceof X509TrustManager)) { + throw new IllegalArgumentException("TrustManager not of type X509: " + trustManagers[0].getClass()); + } + return (X509TrustManager) trustManagers[0]; + } catch (NoSuchAlgorithmException | KeyStoreException ex) { + return null; + } + } + + public static KeyStore loadKeyStore(String p12, String password) { + try (InputStream stream = new FileInputStream(new File(p12))) { + KeyStore keyStore = KeyStore.getInstance("PKCS12"); + keyStore.load(stream, password == null ? new char[] {} : password.toCharArray()); + return keyStore; + } catch (KeyStoreException | CertificateException | NoSuchAlgorithmException | IOException e) { + return null; + } + } + + public static KeyStore loadKeyStore(byte[] p12, String password) { + try (InputStream stream = new ByteArrayInputStream(p12)) { + KeyStore keyStore = KeyStore.getInstance("PKCS12"); + keyStore.load(stream, password == null ? new char[] {} : password.toCharArray()); + return keyStore; + } catch (KeyStoreException | CertificateException | NoSuchAlgorithmException | IOException e) { + return null; + } + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/ServletInitializer.java b/bank-web/src/main/java/com/angkorteam/fintech/ServletInitializer.java new file mode 100644 index 00000000..6499282e --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/ServletInitializer.java @@ -0,0 +1,20 @@ +package com.angkorteam.fintech; + +import org.springframework.boot.builder.SpringApplicationBuilder; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; + +public class ServletInitializer extends com.angkorteam.webui.frmk.common.ServletInitializer { + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(BootApplication.class); + } + + @Override + public void onStartup(ServletContext servletContext) throws ServletException { + super.onStartup(servletContext); + } + +} \ No newline at end of file diff --git a/bank-web/src/main/java/com/angkorteam/fintech/WorkingPage.java b/bank-web/src/main/java/com/angkorteam/fintech/WorkingPage.java new file mode 100644 index 00000000..a148b029 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/WorkingPage.java @@ -0,0 +1,230 @@ +//package com.angkorteam.fintech; +// +//import java.util.List; +//import java.util.MissingResourceException; +// +//import org.apache.wicket.ajax.AjaxRequestTarget; +//import org.apache.wicket.feedback.FeedbackMessage; +//import org.apache.wicket.markup.head.CssHeaderItem; +//import org.apache.wicket.markup.head.IHeaderResponse; +//import org.apache.wicket.model.IModel; +//import org.apache.wicket.model.Model; +//import org.apache.wicket.request.mapper.parameter.PageParameters; +//import org.json.JSONArray; +//import org.json.JSONObject; +// +//import com.angkorteam.fintech.pages.AccountingPage; +//import com.angkorteam.fintech.pages.LoginPage; +//import com.angkorteam.fintech.pages.LogoutPage; +//import com.angkorteam.fintech.pages.OrganizationDashboardPage; +//import com.angkorteam.fintech.pages.ProductDashboardPage; +//import com.angkorteam.fintech.pages.SystemDashboardPage; +//import com.angkorteam.fintech.pages.client.center.CenterBrowsePage; +//import com.angkorteam.fintech.pages.client.client.ClientBrowsePage; +//import com.angkorteam.fintech.pages.client.group.GroupBrowsePage; +//import com.angkorteam.fintech.pages.staff.UserBrowsePage; +//import com.angkorteam.framework.Emoji; +//import com.angkorteam.framework.models.NavBarMenu; +//import com.angkorteam.framework.models.NavBarMenuItem; +//import com.angkorteam.framework.models.PageBreadcrumb; +//import com.angkorteam.framework.models.PageFooter; +//import com.angkorteam.framework.models.PageHeader; +//import com.angkorteam.framework.models.PageLogo; +//import com.angkorteam.framework.models.SideMenu; +//import com.angkorteam.framework.models.UserInfo; +//import com.angkorteam.framework.wicket.DashboardPage; +//import com.angkorteam.framework.wicket.markup.html.panel.FeedbackPanel; +//import com.google.common.collect.Lists; +//import io.github.openunirest.http.JsonNode; +// +///** +// * Created by socheatkhauv on 6/17/17. +// */ +//public abstract class WorkingPage extends DashboardPage { +// +// private FeedbackPanel feedbackPanel; +// +// public WorkingPage() { +// } +// +// public WorkingPage(IModel model) { +// super(model); +// } +// +// public WorkingPage(PageParameters parameters) { +// super(parameters); +// } +// +// @Override +// public void renderHead(IHeaderResponse response) { +// super.renderHead(response); +// response.render(CssHeaderItem.forCSS(".dropdown-menu { z-index: 100060 !important; }", "menu")); +// } +// +// @Override +// protected final void onInitialize() { +// super.onInitialize(); +// this.feedbackPanel = new FeedbackPanel("feedbackPanel", this::report); +// this.add(this.feedbackPanel); +// this.setOutputMarkupId(true); +// initData(); +// initComponent(); +// configureRequiredValidation(); +// configureMetaData(); +// } +// +// protected abstract void initData(); +// +// protected abstract void initComponent(); +// +// protected abstract void configureRequiredValidation(); +// +// protected abstract void configureMetaData(); +// +// private boolean report(FeedbackMessage feedbackMessage) { +// if (feedbackMessage.getReporter() instanceof org.apache.wicket.Page) { +// return true; +// } +// return false; +// } +// +// public boolean reportError(JsonNode node) { +// if (node.getObject().has("errors")) { +// JSONArray array = (JSONArray) node.getObject().get("errors"); +// for (Object object : array) { +// JSONObject o = (JSONObject) object; +// String defaultUserMessage = (String) o.get("defaultUserMessage"); +// String userMessageGlobalisationCode = (String) o.get("userMessageGlobalisationCode"); +// if (userMessageGlobalisationCode != null && !"".equals(userMessageGlobalisationCode)) { +// String message = null; +// try { +// message = getString(userMessageGlobalisationCode); +// } catch (MissingResourceException e) { +// } +// if (message == null || "".equals(message)) { +// error(defaultUserMessage + " due to this reason " + userMessageGlobalisationCode); +// } else { +// error(defaultUserMessage + " due to this reason '" + message + "'"); +// } +// } else { +// error(defaultUserMessage); +// } +// } +// return true; +// } else { +// if (node.getObject().has("exception") || node.getObject().has("error")) { +// if (node.getObject().has("exception") && !node.getObject().isNull("exception")) { +// error((String) node.getObject().get("exception")); +// } +// if (node.getObject().has("error") && !node.getObject().isNull("error")) { +// error((String) node.getObject().get("error")); +// } +// if (node.getObject().has("message") && !node.getObject().isNull("message")) { +// error((String) node.getObject().get("message").getClass().getName()); +// } +// return true; +// } +// } +// return false; +// } +// +// protected void reportError(JsonNode node, AjaxRequestTarget target) { +// if (node == null) { +// return; +// } +// if (node.getObject().has("errors")) { +// JSONArray array = (JSONArray) node.getObject().get("errors"); +// for (Object object : array) { +// JSONObject o = (JSONObject) object; +// error((String) o.get("defaultUserMessage")); +// } +// } else { +// if (node.getObject().has("exception") || node.getObject().has("error")) { +// if (node.getObject().has("exception")) { +// error((String) node.getObject().get("exception")); +// } +// if (node.getObject().has("error")) { +// error((String) node.getObject().get("error")); +// } +// if (node.getObject().has("message")) { +// error((String) node.getObject().get("message")); +// } +// } +// } +// target.add(this.feedbackPanel); +// } +// +// @Override +// public IModel> buildSideMenu() { +// List sideMenus = Lists.newArrayList(); +// sideMenus.add(new SideMenu().buildTypeHeader("MAIN NAVIGATION")); +// sideMenus.add(new SideMenu().buildTypeMenu(LoginPage.class, null, Emoji.fa_dashboard, "Navigation")); +// sideMenus.add(new SideMenu().buildTypeMenu(LoginPage.class, null, Emoji.fa_dashboard, "Checker Inbox & Tasks")); +// sideMenus.add(new SideMenu().buildTypeMenu(LoginPage.class, null, Emoji.fa_dashboard, "Collection Sheet")); +// sideMenus.add(new SideMenu().buildTypeMenu(LoginPage.class, null, Emoji.fa_dashboard, "Individual Collection Sheet")); +// sideMenus.add(new SideMenu().buildTypeMenu(LoginPage.class, null, Emoji.fa_dashboard, "Frequent Posting")); +// sideMenus.add(new SideMenu().buildTypeMenu(LoginPage.class, null, Emoji.fa_dashboard, "Add Journal Entries")); +// sideMenus.add(new SideMenu().buildTypeMenu(LoginPage.class, null, Emoji.fa_dashboard, "Closing Entries")); +// sideMenus.add(new SideMenu().buildTypeMenu(LoginPage.class, null, Emoji.fa_dashboard, "Chart of Accounts")); +// sideMenus.add(new SideMenu().buildTypeMenu(LoginPage.class, null, Emoji.fa_dashboard, "Client")); +// sideMenus.add(new SideMenu().buildTypeMenu(LoginPage.class, null, Emoji.fa_dashboard, "Group")); +// sideMenus.add(new SideMenu().buildTypeMenu(LoginPage.class, null, Emoji.fa_dashboard, "Center")); +// sideMenus.add(new SideMenu().buildTypeMenu(LoginPage.class, null, Emoji.fa_dashboard, "Help")); +// return Model.ofList(sideMenus); +// } +// +// @Override +// public IModel buildPageHeader() { +// return Model.of(new PageHeader().setTitle("FinTech").setDescription("FinTech")); +// } +// +// @Override +// public IModel> buildPageBreadcrumb() { +// return null; +// } +// +// @Override +// public IModel> buildNavBarMenu() { +// +// NavBarMenu clientsMenu = new NavBarMenu().buildTypeIcon(Emoji.fa_dashboard, "Clients", null, new NavBarMenuItem().buildTypeIcon(ClientBrowsePage.class, null, Emoji.fa_dashboard, "Clients"), new NavBarMenuItem().buildTypeIcon(GroupBrowsePage.class, null, Emoji.fa_dashboard, "Groups"), new NavBarMenuItem().buildTypeIcon(CenterBrowsePage.class, null, Emoji.fa_dashboard, "Centers")); +// +// NavBarMenu accountingMenu = new NavBarMenu().buildTypeIcon(AccountingPage.class, null, Emoji.fa_dashboard, "Accounting", null); +// +// NavBarMenu reportsMenu = new NavBarMenu().buildTypeIcon(Emoji.fa_dashboard, "Reports", null, new NavBarMenuItem().buildTypeIcon(LoginPage.class, null, Emoji.fa_dashboard, "All"), new NavBarMenuItem().buildTypeIcon(LoginPage.class, null, Emoji.fa_dashboard, "Clients"), new NavBarMenuItem().buildTypeIcon(LoginPage.class, null, Emoji.fa_dashboard, "Loans"), new NavBarMenuItem().buildTypeIcon(LoginPage.class, null, Emoji.fa_dashboard, "Savings"), new NavBarMenuItem().buildTypeIcon(LoginPage.class, null, Emoji.fa_dashboard, "Funds"), new NavBarMenuItem().buildTypeIcon(LoginPage.class, null, Emoji.fa_dashboard, "Accounting"), new NavBarMenuItem().buildTypeIcon(LoginPage.class, null, Emoji.fa_dashboard, "XBRL")); +// +// NavBarMenu adminMenu = new NavBarMenu().buildTypeIcon(Emoji.fa_dashboard, "Admin", null, new NavBarMenuItem().buildTypeIcon(UserBrowsePage.class, null, Emoji.fa_dashboard, "Users"), new NavBarMenuItem().buildTypeIcon(OrganizationDashboardPage.class, null, Emoji.fa_dashboard, "Organization"), new NavBarMenuItem().buildTypeIcon(SystemDashboardPage.class, null, Emoji.fa_dashboard, "System"), new NavBarMenuItem().buildTypeIcon(ProductDashboardPage.class, null, Emoji.fa_dashboard, "Products"), new NavBarMenuItem().buildTypeIcon(LoginPage.class, null, Emoji.fa_dashboard, "Templates")); +// +// NavBarMenu profileMenu = new NavBarMenu().buildTypeIcon(Emoji.fa_dashboard, "Profile", null, new NavBarMenuItem().buildTypeIcon(LogoutPage.class, null, Emoji.fa_sign_out, "Logout")); +// +// List menus = Lists.newArrayList(clientsMenu, accountingMenu, reportsMenu, adminMenu, profileMenu); +// return Model.ofList(menus); +// } +// +// @Override +// public IModel buildUserInfo() { +// return null; +// } +// +// @Override +// protected IModel buildPageLogo() { +// PageLogo pageLogo = new PageLogo("ANG", "Angkor FinTech"); +// return Model.of(pageLogo); +// } +// +// @Override +// protected IModel buildPageFooter() { +// PageFooter pageFooter = new PageFooter(); +// pageFooter.setCompany("AngkorTeam"); +// return Model.of(pageFooter); +// } +// +// @Override +// public IModel hasSearchForm() { +// return Model.of(false); +// } +// +// @Override +// public void onSearchClick(String searchValue) { +// +// } +//} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/boot/AppProperties.java b/bank-web/src/main/java/com/angkorteam/fintech/boot/AppProperties.java new file mode 100644 index 00000000..adbc5927 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/boot/AppProperties.java @@ -0,0 +1,251 @@ +package com.angkorteam.fintech.boot; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +import java.io.File; + +@Configuration +@ConfigurationProperties(prefix = "app", ignoreUnknownFields = true) +public class AppProperties { + + private String name; + + private int retryLimit; + + private String mailSenderHost; + private int mailSenderPort; + private String mailSenderProtocol; + private boolean mailSenderSsl; + private String mailSenderUsername; + private String mailSenderPassword; + private String mailSenderFrom; + private String mailSenderName; + + private String jdbcDriverClassName; + private String jdbcUrl; + private String jdbcUsername; + private String jdbcPassword; + + private String gsonDateFormat; + + private String secret; + + private String mifosUrl; + + private File cacert; + + private int validityPeriod; + + private boolean debug; + + private String timezoneId; + + private File workspace; + + private File certificate; + + private File openssl; + + private File keytool; + + public File getOpenssl() { + return openssl; + } + + public void setOpenssl(File openssl) { + this.openssl = openssl; + } + + public File getKeytool() { + return keytool; + } + + public void setKeytool(File keytool) { + this.keytool = keytool; + } + + public File getCertificate() { + return certificate; + } + + public void setCertificate(File certificate) { + this.certificate = certificate; + } + + public File getWorkspace() { + return workspace; + } + + public void setWorkspace(File workspace) { + this.workspace = workspace; + } + + public String getTimezoneId() { + return timezoneId; + } + + public void setTimezoneId(String timezoneId) { + this.timezoneId = timezoneId; + } + + public String getMailSenderHost() { + return mailSenderHost; + } + + public void setMailSenderHost(String mailSenderHost) { + this.mailSenderHost = mailSenderHost; + } + + public int getMailSenderPort() { + return mailSenderPort; + } + + public void setMailSenderPort(int mailSenderPort) { + this.mailSenderPort = mailSenderPort; + } + + public String getMailSenderProtocol() { + return mailSenderProtocol; + } + + public void setMailSenderProtocol(String mailSenderProtocol) { + this.mailSenderProtocol = mailSenderProtocol; + } + + public boolean isMailSenderSsl() { + return mailSenderSsl; + } + + public void setMailSenderSsl(boolean mailSenderSsl) { + this.mailSenderSsl = mailSenderSsl; + } + + public String getMailSenderUsername() { + return mailSenderUsername; + } + + public void setMailSenderUsername(String mailSenderUsername) { + this.mailSenderUsername = mailSenderUsername; + } + + public String getMailSenderPassword() { + return mailSenderPassword; + } + + public void setMailSenderPassword(String mailSenderPassword) { + this.mailSenderPassword = mailSenderPassword; + } + + public String getMailSenderFrom() { + return mailSenderFrom; + } + + public void setMailSenderFrom(String mailSenderFrom) { + this.mailSenderFrom = mailSenderFrom; + } + + public String getMailSenderName() { + return mailSenderName; + } + + public void setMailSenderName(String mailSenderName) { + this.mailSenderName = mailSenderName; + } + + public boolean isDebug() { + return debug; + } + + public void setDebug(boolean debug) { + this.debug = debug; + } + + public int getValidityPeriod() { + return validityPeriod; + } + + public void setValidityPeriod(int validityPeriod) { + this.validityPeriod = validityPeriod; + } + + public String getSecret() { + return secret; + } + + public void setSecret(String secret) { + this.secret = secret; + } + + public String getGsonDateFormat() { + return gsonDateFormat; + } + + public void setGsonDateFormat(String gsonDateFormat) { + this.gsonDateFormat = gsonDateFormat; + } + + public String getJdbcDriverClassName() { + return jdbcDriverClassName; + } + + public void setJdbcDriverClassName(String jdbcDriverClassName) { + this.jdbcDriverClassName = jdbcDriverClassName; + } + + public String getJdbcUrl() { + return jdbcUrl; + } + + public void setJdbcUrl(String jdbcUrl) { + this.jdbcUrl = jdbcUrl; + } + + public String getJdbcUsername() { + return jdbcUsername; + } + + public void setJdbcUsername(String jdbcUsername) { + this.jdbcUsername = jdbcUsername; + } + + public String getJdbcPassword() { + return jdbcPassword; + } + + public void setJdbcPassword(String jdbcPassword) { + this.jdbcPassword = jdbcPassword; + } + + public int getRetryLimit() { + return retryLimit; + } + + public void setRetryLimit(int retryLimit) { + this.retryLimit = retryLimit; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getMifosUrl() { + return mifosUrl; + } + + public void setMifosUrl(String mifosUrl) { + this.mifosUrl = mifosUrl; + } + + public File getCacert() { + return cacert; + } + + public void setCacert(File cacert) { + this.cacert = cacert; + } +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/ClientEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/ClientEnum.java new file mode 100644 index 00000000..6b3ed8e7 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/ClientEnum.java @@ -0,0 +1,7 @@ +package com.angkorteam.fintech.client; + +public enum ClientEnum { + + Client, Center, Group + +} diff --git a/src/main/java/com/angkorteam/fintech/dto/Dropdown.java b/bank-web/src/main/java/com/angkorteam/fintech/client/Dropdown.java similarity index 97% rename from src/main/java/com/angkorteam/fintech/dto/Dropdown.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/Dropdown.java index 56d16552..0e0b36f6 100644 --- a/src/main/java/com/angkorteam/fintech/dto/Dropdown.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/Dropdown.java @@ -1,4 +1,4 @@ -package com.angkorteam.fintech.dto; +package com.angkorteam.fintech.client; public interface Dropdown { diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/FineractClient.java b/bank-web/src/main/java/com/angkorteam/fintech/client/FineractClient.java new file mode 100644 index 00000000..5dfd7f59 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/FineractClient.java @@ -0,0 +1,3045 @@ +package com.angkorteam.fintech.client; + +import com.angkorteam.fintech.client.dto.*; +import com.angkorteam.fintech.client.enums.PutUserRequest; +import com.angkorteam.fintech.client.enums.TableTypeEnum; +import com.angkorteam.fintech.client.function.*; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.apache.http.HttpEntity; +import org.apache.http.client.entity.EntityBuilder; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpUriRequest; +import org.apache.http.client.methods.RequestBuilder; +import org.apache.http.entity.ContentType; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.util.EntityUtils; +import org.apache.wicket.WicketRuntimeException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.net.ssl.SSLContext; +import java.io.Closeable; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class FineractClient implements Closeable, + OrganisationApi, + AdministrationApi, + InfrastructureApi, + PortfolioApi, + AdhocApi, + BatchApi, + CommandApi, + NotificationApi, + InteroperationApi, + SpmApi, + AccountingApi { + + private static final Logger LOGGER = LoggerFactory.getLogger(FineractClient.class); + + private static final String DATE_FORMAT_KEY = "dateFormat"; + private static final String DATE_FORMAT_VALUE = "yyyy-MM-dd"; + private static final String MONTH_DAY_FORMAT_KEY = "monthDayFormat"; + private static final String MONTH_DAY_FORMAT_VALUE = "dd MMMM"; + + private static final String LOCALE_KEY = "locale"; + private static final String LOCALE_VALUE = "en"; + + private final String baseUrl; + + private final Gson gson; + + private final CloseableHttpClient client; + + public FineractClient(String baseUrl) { + this.baseUrl = baseUrl; + this.client = HttpClientBuilder.create().build(); + this.gson = new GsonBuilder().setPrettyPrinting().create(); + } + + public FineractClient(SSLContext ssl, String baseUrl) { + this.baseUrl = baseUrl; + this.client = HttpClientBuilder.create().setSSLContext(ssl).build(); + this.gson = new GsonBuilder().setPrettyPrinting().create(); + } + + protected T execute(Class classOfT, HttpUriRequest request) { + try (CloseableHttpResponse response = this.client.execute(request)) { + if (response.getEntity() != null) { + String responseText = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8); + if (response.getStatusLine().getStatusCode() >= 200 && response.getStatusLine().getStatusCode() <= 299) { + return this.gson.fromJson(responseText, classOfT); + } else { + LOGGER.info(responseText); + if (responseText.contains("developerMessage")) { + throw new AppException(responseText, this.gson.fromJson(responseText, AppError.class)); + } else { + throw new SysException(responseText, this.gson.fromJson(responseText, SysError.class)); + } + } + } else { + return null; + } + } catch (IOException e) { + throw new WicketRuntimeException(e); + } + } + + @Override + public PostAuthenticationResponse authentication(String tenant, AuthenticateRequest requestBody) { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(requestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/authentication"); + return execute(PostAuthenticationResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse officeCreate(String tenant, String token, PostOfficeRequest requestBody) throws AppException, SysException { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + internalRequestBody.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + internalRequestBody.put("externalId", requestBody.getExternalId()); + internalRequestBody.put("name", requestBody.getName()); + internalRequestBody.put("parentId", requestBody.getParentId()); + if (requestBody.getOpeningDate() != null) { + internalRequestBody.put("openingDate", DateFormatUtils.format(requestBody.getOpeningDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("openingDate", null); + } + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/offices"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse officeUpdate(String tenant, String token, long officeId, PutOfficeRequest requestBody) throws AppException, SysException { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + internalRequestBody.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + internalRequestBody.put("externalId", requestBody.getExternalId()); + internalRequestBody.put("name", requestBody.getName()); + internalRequestBody.put("parentId", requestBody.getParentId()); + if (requestBody.getOpeningDate() != null) { + internalRequestBody.put("openingDate", DateFormatUtils.format(requestBody.getOpeningDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("openingDate", null); + } + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/offices/" + officeId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse officeTransactionCreate(String tenant, String token, PostOfficeTransactionRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + internalRequestBody.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + internalRequestBody.put("fromOfficeId", requestBody.getFromOfficeId()); + internalRequestBody.put("toOfficeId", requestBody.getToOfficeId()); + internalRequestBody.put("currencyCode", requestBody.getCurrencyCode()); + internalRequestBody.put("transactionAmount", requestBody.getTransactionAmount()); + internalRequestBody.put("description", requestBody.getDescription()); + if (requestBody.getTransactionDate() != null) { + internalRequestBody.put("transactionDate", DateFormatUtils.format(requestBody.getTransactionDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("transactionDate", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/officetransactions"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse officeTransactionDelete(String tenant, String token, long transactionId) { + RequestBuilder requestBuilder = RequestBuilder.create("DELETE"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setUri(this.baseUrl + "/officetransactions/" + transactionId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse runAccrualCreate(String tenant, String token, PostRunAccrualRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + internalRequestBody.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + if (requestBody.getTillDate() != null) { + internalRequestBody.put("tillDate", DateFormatUtils.format(requestBody.getTillDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("tillDate", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/runaccruals"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse glClosureCreate(String tenant, String token, PostGLClosureRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + internalRequestBody.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + internalRequestBody.put("officeId", requestBody.getOfficeId()); + internalRequestBody.put("comments", requestBody.getComments()); + if (requestBody.getClosingDate() != null) { + internalRequestBody.put("closingDate", DateFormatUtils.format(requestBody.getClosingDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("closingDate", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/glclosures"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse glClosureUpdate(String tenant, String token, long glClosureId, PutGLClosureRequest requestBody) throws AppException, SysException { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(requestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/glclosures/" + glClosureId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse glClosureDelete(String tenant, String token, long glClosureId) { + RequestBuilder requestBuilder = RequestBuilder.create("DELETE"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setUri(this.baseUrl + "/glclosures/" + glClosureId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse passwordPreferenceUpdate(String tenant, String token, PutPasswordPreferencesTemplateRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put("validationPolicyId", Integer.valueOf(requestBody.getValidationPolicy().getLiteral())); + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/passwordpreferences"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse makerCheckerPermissionUpdate(String tenant, String token, Map requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put("permissions", requestBody); + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/permissions"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse roleCreate(String tenant, String token, RoleRequest requestBody) { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(requestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/roles"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse roleUpdate(String tenant, String token, long roleId, RoleRequest requestBody) { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(requestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/roles/" + roleId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse workingDayUpdate(String tenant, String token, PutWorkingDaysRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + internalRequestBody.put("recurrence", requestBody.getRecurrence()); + internalRequestBody.put("extendTermForDailyRepayments", requestBody.isExtendTermForDailyRepayments()); + internalRequestBody.put("extendTermForRepaymentsOnHolidays", requestBody.isExtendTermForRepaymentsOnHolidays()); + if (requestBody.getRepaymentRescheduleType() != null) { + internalRequestBody.put("repaymentRescheduleType", Long.valueOf(requestBody.getRepaymentRescheduleType().getLiteral())); + } else { + internalRequestBody.put("repaymentRescheduleType", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/workingdays"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse fundCreate(String tenant, String token, PostFundsRequest requestBody) { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(requestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/funds"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse fundUpdate(String tenant, String token, long fundId, PutFundsFundIdRequest requestBody) { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(requestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/funds/" + fundId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse codeValueCreate(String tenant, String token, long codeId, PostCodeValueRequest requestBody) { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(requestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/codes/" + codeId + "/codevalues"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse codeValueUpdate(String tenant, String token, long codeId, long codeValueId, PutCodeValueRequest requestBody) { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(requestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/codes/" + codeId + "/codevalues/" + codeValueId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse codeValueDelete(String tenant, String token, long codeId, long codeValueId) { + RequestBuilder requestBuilder = RequestBuilder.create("DELETE"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setUri(this.baseUrl + "/codes/" + codeId + "/codevalues/" + codeValueId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse currencyUpdate(String tenant, String token, PutCurrenciesRequest requestBody) { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(requestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/currencies"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse tellerCreate(String tenant, String token, PostTellersRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + internalRequestBody.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + internalRequestBody.put("officeId", requestBody.getOfficeId()); + internalRequestBody.put("description", requestBody.getDescription()); + internalRequestBody.put("name", requestBody.getName()); + if (requestBody.getStartDate() != null) { + internalRequestBody.put("startDate", DateFormatUtils.format(requestBody.getStartDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("startDate", null); + } + if (requestBody.getEndDate() != null) { + internalRequestBody.put("endDate", DateFormatUtils.format(requestBody.getEndDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("endDate", null); + } + if (requestBody.getStatus() != null) { + internalRequestBody.put("status", requestBody.getStatus().getEnumType()); + } else { + internalRequestBody.put("status", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/tellers"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse paymentTypeCreate(String tenant, String token, PostPaymentTypesRequest requestBody) { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(requestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/paymenttypes"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse paymentTypeUpdate(String tenant, String token, long paymentTypeId, PutPaymentTypesPaymentTypeIdRequest requestBody) { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(requestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/paymenttypes/" + paymentTypeId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse paymentTypeDelete(String tenant, String token, long paymentTypeId) { + RequestBuilder requestBuilder = RequestBuilder.create("DELETE"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setUri(this.baseUrl + "/paymenttypes/" + paymentTypeId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse holidayCreate(String tenant, String token, PostHolidaysRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + internalRequestBody.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + internalRequestBody.put("name", requestBody.getName()); + internalRequestBody.put("description", requestBody.getDescription()); + if (requestBody.getReschedulingType() != null) { + internalRequestBody.put("reschedulingType", requestBody.getReschedulingType().getLiteral()); + } else { + internalRequestBody.put("reschedulingType", null); + } + if (requestBody.getFromDate() != null) { + internalRequestBody.put("fromDate", DateFormatUtils.format(requestBody.getFromDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("fromDate", null); + } + if (requestBody.getToDate() != null) { + internalRequestBody.put("toDate", DateFormatUtils.format(requestBody.getToDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("toDate", null); + } + if (requestBody.getRepaymentsRescheduledTo() != null) { + internalRequestBody.put("repaymentsRescheduledTo", DateFormatUtils.format(requestBody.getRepaymentsRescheduledTo(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("repaymentsRescheduledTo", null); + } + if (requestBody.getOffices() != null && !requestBody.getOffices().isEmpty()) { + internalRequestBody.put("offices", requestBody.getOffices()); + } else { + internalRequestBody.put("offices", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/holidays"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse staffCreate(String tenant, String token, PostStaffRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + internalRequestBody.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + if (requestBody.getJoiningDate() != null) { + internalRequestBody.put("joiningDate", DateFormatUtils.format(requestBody.getJoiningDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("joiningDate", null); + } + internalRequestBody.put("externalId", requestBody.getExternalId()); + internalRequestBody.put("firstname", requestBody.getFirstName()); + internalRequestBody.put("lastname", requestBody.getLastName()); + internalRequestBody.put("mobileNo", requestBody.getMobileNo()); + internalRequestBody.put("officeId", requestBody.getOfficeId()); + internalRequestBody.put("isActive", requestBody.isActive()); + internalRequestBody.put("isLoanOfficer", requestBody.isLoanOfficer()); + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/staff"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse staffUpdate(String tenant, String token, long staffId, PutStaffRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + internalRequestBody.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + if (requestBody.getJoiningDate() != null) { + internalRequestBody.put("joiningDate", DateFormatUtils.format(requestBody.getJoiningDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("joiningDate", null); + } + internalRequestBody.put("externalId", requestBody.getExternalId()); + internalRequestBody.put("firstname", requestBody.getFirstName()); + internalRequestBody.put("lastname", requestBody.getLastName()); + internalRequestBody.put("mobileNo", requestBody.getMobileNo()); + internalRequestBody.put("officeId", requestBody.getOfficeId()); + internalRequestBody.put("isActive", requestBody.isActive()); + internalRequestBody.put("isLoanOfficer", requestBody.isLoanOfficer()); + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/staff/" + staffId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse glAccountCreate(String tenant, String token, PostGLAccountsRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put("description", requestBody.getDescription()); + internalRequestBody.put("name", requestBody.getName()); + internalRequestBody.put("glCode", requestBody.getGlCode()); + internalRequestBody.put("manualEntriesAllowed", requestBody.isManualEntriesAllowed()); + if (requestBody.getType() != null) { + internalRequestBody.put("type", Integer.valueOf(requestBody.getType().getLiteral())); + } else { + internalRequestBody.put("type", null); + } + if (requestBody.getTagId() > 0) { + internalRequestBody.put("tagId", requestBody.getTagId()); + } else { + internalRequestBody.put("tagId", null); + } + if (requestBody.getParentId() > 0) { + internalRequestBody.put("parentId", requestBody.getParentId()); + } else { + internalRequestBody.put("parentId", null); + } + if (requestBody.getUsage() != null) { + internalRequestBody.put("usage", Integer.valueOf(requestBody.getUsage().getLiteral())); + } else { + internalRequestBody.put("usage", null); + } + internalRequestBody.put("disabled", requestBody.isDisabled()); + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/glaccounts"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse accountingRuleCreate(String tenant, String token, PostAccountingRulesRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put("name", requestBody.getName()); + internalRequestBody.put("description", requestBody.getDescription()); + internalRequestBody.put("accountToCredit", requestBody.getAccountToCredit()); + internalRequestBody.put("accountToDebit", requestBody.getAccountToDebit()); + internalRequestBody.put("officeId", requestBody.getOfficeId()); + internalRequestBody.put("allowMultipleCreditEntries", requestBody.isAllowMultipleCreditEntries()); + internalRequestBody.put("allowMultipleDebitEntries", requestBody.isAllowMultipleDebitEntries()); + if (requestBody.getCreditTags() != null && !requestBody.getCreditTags().isEmpty()) { + internalRequestBody.put("creditTags", requestBody.getCreditTags()); + } else { + internalRequestBody.put("creditTags", null); + } + if (requestBody.getDebitTags() != null && !requestBody.getDebitTags().isEmpty()) { + internalRequestBody.put("debitTags", requestBody.getDebitTags()); + } else { + internalRequestBody.put("debitTags", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/accountingrules"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse taxComponentCreate(String tenant, String token, PostTaxesComponentsRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + internalRequestBody.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + internalRequestBody.put("name", requestBody.getName()); + internalRequestBody.put("percentage", requestBody.getPercentage()); + if (requestBody.getStartDate() != null) { + internalRequestBody.put("startDate", DateFormatUtils.format(requestBody.getStartDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("startDate", null); + } + if (requestBody.getCreditAccountType() != null) { + internalRequestBody.put("creditAccountType", Integer.valueOf(requestBody.getCreditAccountType().getLiteral())); + } else { + internalRequestBody.put("creditAccountType", null); + } + if (requestBody.getCreditAccountId() > 0) { + internalRequestBody.put("creditAcountId", requestBody.getCreditAccountId()); + } else { + internalRequestBody.put("creditAcountId", null); + } + if (requestBody.getDebitAccountType() != null) { + internalRequestBody.put("debitAccountType", Integer.valueOf(requestBody.getDebitAccountType().getLiteral())); + } else { + internalRequestBody.put("debitAccountType", null); + } + if (requestBody.getDebitAccountId() > 0) { + internalRequestBody.put("debitAcountId", requestBody.getDebitAccountId()); + } else { + internalRequestBody.put("debitAcountId", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/taxes/component"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse taxGroupCreate(String tenant, String token, PostTaxesGroupRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put("name", requestBody.getName()); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + internalRequestBody.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + if (requestBody.getTaxComponents() != null && !requestBody.getTaxComponents().isEmpty()) { + List> taxComponents = new ArrayList<>(); + internalRequestBody.put("taxComponents", taxComponents); + for (PostTaxesGroupRequest.TaxComponent o : requestBody.getTaxComponents()) { + Map taxComponent = new HashMap<>(); + if (o.getId() > 0) { + taxComponent.put("id", o.getId()); + } else { + taxComponent.put("id", null); + } + if (o.getStartDate() != null) { + taxComponent.put("startDate", DateFormatUtils.format(o.getStartDate(), DATE_FORMAT_VALUE)); + } else { + taxComponent.put("startDate", null); + } + if (o.getEndDate() != null) { + taxComponent.put("endDate", DateFormatUtils.format(o.getEndDate(), DATE_FORMAT_VALUE)); + } else { + taxComponent.put("endDate", null); + } + if (o.getTaxComponentId() > 0) { + taxComponent.put("taxComponentId", o.getTaxComponentId()); + } else { + taxComponent.put("taxComponentId", null); + } + taxComponents.add(taxComponent); + } + } else { + internalRequestBody.put("taxComponents", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/taxes/group"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse floatingRateCreate(String tenant, String token, PostFloatingRatesRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put("name", requestBody.getName()); + internalRequestBody.put("isBaseLendingRate", requestBody.isBaseLendingRate()); + internalRequestBody.put("isActive", requestBody.isActive()); + if (requestBody.getRatePeriods() != null && !requestBody.getRatePeriods().isEmpty()) { + List> ratePeriods = new ArrayList<>(); + internalRequestBody.put("ratePeriods", ratePeriods); + for (PostFloatingRatesRequest.RatePeriod o : requestBody.getRatePeriods()) { + Map ratePeriod = new HashMap<>(); + ratePeriod.put(LOCALE_KEY, LOCALE_VALUE); + ratePeriod.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + ratePeriod.put("interestRate", o.getInterestRate()); + if (o.getFromDate() != null) { + ratePeriod.put("fromDate", DateFormatUtils.format(o.getFromDate(), DATE_FORMAT_VALUE)); + } else { + ratePeriod.put("fromDate", null); + } + ratePeriod.put("isDifferentialToBaseLendingRate", o.isDifferentialToBaseLendingRate()); + ratePeriods.add(ratePeriod); + } + } else { + internalRequestBody.put("interestRate", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/floatingrates"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse chargeCreate(String tenant, String token, PostChargesRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + internalRequestBody.put(MONTH_DAY_FORMAT_KEY, MONTH_DAY_FORMAT_VALUE); + if (requestBody.getIncomeAccountId() > 0) { + internalRequestBody.put("incomeAccountId", requestBody.getIncomeAccountId()); + } else { + internalRequestBody.put("incomeAccountId", null); + } + if (requestBody.getTaxGroupId() > 0) { + internalRequestBody.put("taxGroupId", requestBody.getTaxGroupId()); + } else { + internalRequestBody.put("taxGroupId", null); + } + internalRequestBody.put("name", requestBody.getName()); + internalRequestBody.put("amount", requestBody.getAmount()); + internalRequestBody.put("currencyCode", requestBody.getCurrencyCode()); + if (requestBody.getChargeAppliesTo() != null) { + internalRequestBody.put("chargeAppliesTo", Integer.valueOf(requestBody.getChargeAppliesTo().getLiteral())); + } else { + internalRequestBody.put("chargeAppliesTo", null); + } + if (requestBody.getChargeTimeType() != null) { + internalRequestBody.put("chargeTimeType", Integer.valueOf(requestBody.getChargeTimeType().getLiteral())); + } else { + internalRequestBody.put("chargeTimeType", null); + } + if (requestBody.getChargeCalculationType() != null) { + internalRequestBody.put("chargeCalculationType", Integer.valueOf(requestBody.getChargeCalculationType().getLiteral())); + } else { + internalRequestBody.put("chargeCalculationType", null); + } + if (requestBody.getChargePaymentMode() != null) { + internalRequestBody.put("chargePaymentMode", Integer.valueOf(requestBody.getChargePaymentMode().getLiteral())); + } else { + internalRequestBody.put("chargePaymentMode", null); + } + internalRequestBody.put("penalty", requestBody.isPenalty()); + internalRequestBody.put("active", requestBody.isActive()); + if (requestBody.getFeeOnMonthDay() != null) { + internalRequestBody.put("feeOnMonthDay", DateFormatUtils.format(requestBody.getFeeOnMonthDay(), MONTH_DAY_FORMAT_VALUE)); + } else { + internalRequestBody.put("feeOnMonthDay", null); + } + if (requestBody.getFeeInterval() > 0) { + internalRequestBody.put("feeInterval", requestBody.getFeeInterval()); + } else { + internalRequestBody.put("feeInterval", null); + } + if (requestBody.getMinCap() > 0) { + internalRequestBody.put("minCap", requestBody.getMinCap()); + } else { + internalRequestBody.put("minCap", null); + } + if (requestBody.getMaxCap() > 0) { + internalRequestBody.put("maxCap", requestBody.getMaxCap()); + } else { + internalRequestBody.put("maxCap", null); + } + if (requestBody.getFeeFrequency() != null) { + internalRequestBody.put("feeFrequency", Integer.valueOf(requestBody.getFeeFrequency().getLiteral())); + } else { + internalRequestBody.put("feeFrequency", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/charges"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse clientCreate(String tenant, String token, PostClientRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + internalRequestBody.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + if (requestBody.getOfficeId() > 0) { + internalRequestBody.put("officeId", requestBody.getOfficeId()); + } else { + internalRequestBody.put("officeId", null); + } + internalRequestBody.put("fullname", requestBody.getFullName()); + if (requestBody.getGroupId() > 0) { + internalRequestBody.put("groupId", requestBody.getGroupId()); + } else { + internalRequestBody.put("groupId", null); + } + internalRequestBody.put("active", requestBody.isActive()); + if (requestBody.getActivationDate() != null) { + internalRequestBody.put("activationDate", DateFormatUtils.format(requestBody.getActivationDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("activationDate", null); + } + internalRequestBody.put("isStaff", requestBody.isStaff()); + if (requestBody.getStaffId() > 0) { + internalRequestBody.put("staffId", requestBody.getStaffId()); + } else { + internalRequestBody.put("staffId", null); + } + if (requestBody.getGenderId() > 0) { + internalRequestBody.put("genderId", requestBody.getGenderId()); + } else { + internalRequestBody.put("genderId", null); + } + if (requestBody.getClientTypeId() > 0) { + internalRequestBody.put("clientTypeId", requestBody.getClientTypeId()); + } + internalRequestBody.put("accountNo", requestBody.getAccountNo()); + internalRequestBody.put("externalId", requestBody.getExternalId()); + internalRequestBody.put("mobileNo", requestBody.getMobileNo()); + internalRequestBody.put("emailAddress", requestBody.getEmailAddress()); + internalRequestBody.put("firstname", requestBody.getFirstName()); + internalRequestBody.put("middlename", requestBody.getMiddleName()); + internalRequestBody.put("lastname", requestBody.getLastName()); + if (requestBody.getDateOfBirth() != null) { + internalRequestBody.put("dateOfBirth", DateFormatUtils.format(requestBody.getDateOfBirth(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("dateOfBirth", null); + } + if (requestBody.getSubmittedOnDate() != null) { + internalRequestBody.put("submittedOnDate", DateFormatUtils.format(requestBody.getSubmittedOnDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("submittedOnDate", null); + } + if (requestBody.getClientTypeId() > 0) { + internalRequestBody.put("clientTypeId", requestBody.getClientTypeId()); + } else { + internalRequestBody.put("clientTypeId", null); + } + if (requestBody.getClientClassificationId() > 0) { + internalRequestBody.put("clientClassificationId", requestBody.getClientClassificationId()); + } else { + internalRequestBody.put("clientClassificationId", null); + } + if (requestBody.getSavingProductId() > 0) { + internalRequestBody.put("savingsProductId", requestBody.getSavingProductId()); + } else { + internalRequestBody.put("savingsProductId", null); + } + if (requestBody.getLegalForm() != null) { + internalRequestBody.put("legalFormId", Integer.valueOf(requestBody.getLegalForm().getLiteral())); + } else { + internalRequestBody.put("legalFormId", null); + } + if (requestBody.getClientNonPersonDetail() != null) { + Map clientNonPersonDetail = new HashMap<>(); + internalRequestBody.put("clientNonPersonDetails", clientNonPersonDetail); + clientNonPersonDetail.put(LOCALE_KEY, LOCALE_VALUE); + clientNonPersonDetail.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + clientNonPersonDetail.put("incorpNumber", requestBody.getClientNonPersonDetail().getIncorpNumber()); + clientNonPersonDetail.put("remarks", requestBody.getClientNonPersonDetail().getRemarks()); + if (requestBody.getClientNonPersonDetail().getConstitutionId() > 0) { + clientNonPersonDetail.put("constitutionId", requestBody.getClientNonPersonDetail().getConstitutionId()); + } else { + clientNonPersonDetail.put("constitutionId", null); + } + if (requestBody.getClientNonPersonDetail().getMainBusinessLineId() > 0) { + clientNonPersonDetail.put("mainBusinessLineId", requestBody.getClientNonPersonDetail().getMainBusinessLineId()); + } else { + clientNonPersonDetail.put("mainBusinessLineId", null); + } + if (requestBody.getClientNonPersonDetail().getIncorpValidityTillDate() != null) { + clientNonPersonDetail.put("incorpValidityTillDate", DateFormatUtils.format(requestBody.getClientNonPersonDetail().getIncorpValidityTillDate(), DATE_FORMAT_VALUE)); + } else { + clientNonPersonDetail.put("incorpValidityTillDate", null); + } + } else { + internalRequestBody.put("clientNonPersonDetail", null); + } + if (requestBody.getAddress() != null && !requestBody.getAddress().isEmpty()) { + List> addresses = new ArrayList<>(); + internalRequestBody.put("address", addresses); + for (PostClientRequest.Address o : requestBody.getAddress()) { + Map address = new HashMap<>(); + addresses.add(address); + if (o.getStateProvinceId() > 0) { + address.put("stateProvinceId", o.getStateProvinceId()); + } else { + address.put("stateProvinceId", null); + } + if (o.getCountryId() > 0) { + address.put("countryId", o.getCountryId()); + } else { + address.put("countryId", null); + } + if (o.getAddressTypeId() > 0) { + address.put("addressTypeId", o.getAddressTypeId()); + } else { + address.put("addressTypeId", null); + } + address.put("isActive", o.isActive()); + address.put("street", o.getStreet()); + address.put("addressLine1", o.getAddressLine1()); + address.put("addressLine2", o.getAddressLine2()); + address.put("addressLine3", o.getAddressLine3()); + address.put("townVillage", o.getTownVillage()); + address.put("city", o.getCity()); + address.put("countyDistrict", o.getCountyDistrict()); + address.put("postalCode", o.getPostalCode()); + address.put("latitude", o.getLatitude()); + address.put("longitude", o.getLongitude()); + address.put("createdBy", o.getCreatedBy()); + address.put("updatedBy", o.getUpdatedBy()); + if (o.getCreatedOn() != null) { + address.put("createdOn", DateFormatUtils.format(o.getCreatedOn(), "yyyy-MM-dd")); + } else { + address.put("createdOn", null); + } + if (o.getUpdatedOn() != null) { + address.put("updatedOn", DateFormatUtils.format(o.getUpdatedOn(), "yyyy-MM-dd")); + } else { + address.put("updatedOn", null); + } + } + } else { + internalRequestBody.put("address", null); + } + if (requestBody.getFamilyMembers() != null && !requestBody.getFamilyMembers().isEmpty()) { + List> familyMembers = new ArrayList<>(); + internalRequestBody.put("familyMembers", familyMembers); + for (PostClientRequest.FamilyMember v : requestBody.getFamilyMembers()) { + Map familyMember = new HashMap<>(); + familyMembers.add(familyMember); + familyMember.put("firstName", v.getFirstName()); + familyMember.put("middleName", v.getMiddleName()); + familyMember.put("lastName", v.getLastName()); + familyMember.put("qualification", v.getQualification()); + familyMember.put("mobileNumber", v.getMobileNumber()); + familyMember.put("age", v.getAge()); + familyMember.put("isDependent", v.isDependent()); + familyMember.put("relationshipId", v.getRelationshipId()); + familyMember.put("maritalStatusId", v.getMaritalStatusId()); + familyMember.put("genderId", v.getGenderId()); + familyMember.put("professionId", v.getProfessionId()); + familyMember.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + familyMember.put("dateOfBirth", DateFormatUtils.format(v.getDateOfBirth(), DATE_FORMAT_VALUE)); + } + } else { + internalRequestBody.put("familyMembers", null); + } + if (requestBody.getDatatables() != null && !requestBody.getDatatables().isEmpty()) { + internalRequestBody.put("datatables", requestBody.getDatatables()); + } else { + internalRequestBody.put("datatables", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/clients"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse groupCreate(String tenant, String token, PostGroupRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + internalRequestBody.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + if (requestBody.getOfficeId() > 0) { + internalRequestBody.put("officeId", requestBody.getOfficeId()); + } else { + internalRequestBody.put("officeId", null); + } + if (requestBody.getCenterId() > 0) { + internalRequestBody.put("centerId", requestBody.getCenterId()); + } else { + internalRequestBody.put("centerId", null); + } + internalRequestBody.put("name", requestBody.getName()); + internalRequestBody.put("active", requestBody.isActive()); + internalRequestBody.put("externalId", requestBody.getExternalId()); + if (requestBody.getActivationDate() != null) { + internalRequestBody.put("activationDate", DateFormatUtils.format(requestBody.getActivationDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("activationDate", null); + } + if (requestBody.getStaffId() > 0) { + internalRequestBody.put("staffId", requestBody.getStaffId()); + } else { + internalRequestBody.put("staffId", null); + } + if (requestBody.getSubmittedOnDate() != null) { + internalRequestBody.put("submittedOnDate", DateFormatUtils.format(requestBody.getSubmittedOnDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("submittedOnDate", null); + } + if (requestBody.getClientMembers() != null && !requestBody.getClientMembers().isEmpty()) { + internalRequestBody.put("clientMembers", requestBody.getClientMembers()); + } else { + internalRequestBody.put("clientMembers", null); + } + if (requestBody.getDataTables() != null && !requestBody.getDataTables().isEmpty()) { + for (DataTable dataTable : requestBody.getDataTables()) { + dataTable.getData().put(LOCALE_KEY, LOCALE_VALUE); + dataTable.getData().put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + } + internalRequestBody.put("datatables", requestBody.getDataTables()); + } else { + internalRequestBody.put("datatables", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/groups"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse centerCreate(String tenant, String token, PostCenterRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + internalRequestBody.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + if (requestBody.getOfficeId() > 0) { + internalRequestBody.put("officeId", requestBody.getOfficeId()); + } else { + internalRequestBody.put("officeId", null); + } + internalRequestBody.put("name", requestBody.getName()); + internalRequestBody.put("active", requestBody.isActive()); + internalRequestBody.put("externalId", requestBody.getExternalId()); + if (requestBody.getActivationDate() != null) { + internalRequestBody.put("activationDate", DateFormatUtils.format(requestBody.getActivationDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("activationDate", null); + } + if (requestBody.getStaffId() > 0) { + internalRequestBody.put("staffId", requestBody.getStaffId()); + } else { + internalRequestBody.put("staffId", null); + } + if (requestBody.getSubmittedOnDate() != null) { + internalRequestBody.put("submittedOnDate", DateFormatUtils.format(requestBody.getSubmittedOnDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("submittedOnDate", null); + } + if (requestBody.getGroupMembers() != null && !requestBody.getGroupMembers().isEmpty()) { + internalRequestBody.put("groupMembers", requestBody.getGroupMembers()); + } else { + internalRequestBody.put("groupMembers", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/centers"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse financialActivityAccountCreate(String tenant, String token, PostFinancialActivityAccountsRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + if (requestBody.getGlAccountId() > 0) { + internalRequestBody.put("glAccountId", requestBody.getGlAccountId()); + } else { + internalRequestBody.put("glAccountId", null); + } + if (requestBody.getFinancialActivity() != null) { + internalRequestBody.put("financialActivityId", Integer.valueOf(requestBody.getFinancialActivity().getLiteral())); + } else { + internalRequestBody.put("financialActivityId", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/financialactivityaccounts"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse financialActivityAccountUpdate(String tenant, String token, long mappingId, PutFinancialActivityAccountsRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + if (requestBody.getGlAccountId() > 0) { + internalRequestBody.put("glAccountId", requestBody.getGlAccountId()); + } else { + internalRequestBody.put("glAccountId", null); + } + if (requestBody.getFinancialActivity() != null) { + internalRequestBody.put("financialActivityId", Integer.valueOf(requestBody.getFinancialActivity().getLiteral())); + } else { + internalRequestBody.put("financialActivityId", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/financialactivityaccounts/" + mappingId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse financialActivityAccountDelete(String tenant, String token, long mappingId) { + RequestBuilder requestBuilder = RequestBuilder.create("DELETE"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setUri(this.baseUrl + "/financialactivityaccounts/" + mappingId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse glAccountUpdate(String tenant, String token, long glAccountId, PutGLAccountsRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put("description", requestBody.getDescription()); + internalRequestBody.put("name", requestBody.getName()); + internalRequestBody.put("glCode", requestBody.getGlCode()); + internalRequestBody.put("manualEntriesAllowed", requestBody.isManualEntriesAllowed()); + if (requestBody.getType() != null) { + internalRequestBody.put("type", Integer.valueOf(requestBody.getType().getLiteral())); + } else { + internalRequestBody.put("type", null); + } + if (requestBody.getTagId() > 0) { + internalRequestBody.put("tagId", requestBody.getTagId()); + } else { + internalRequestBody.put("tagId", null); + } + if (requestBody.getParentId() > 0) { + internalRequestBody.put("parentId", requestBody.getParentId()); + } else { + internalRequestBody.put("parentId", null); + } + if (requestBody.getUsage() != null) { + internalRequestBody.put("usage", Integer.valueOf(requestBody.getUsage().getLiteral())); + } else { + internalRequestBody.put("usage", null); + } + internalRequestBody.put("disabled", requestBody.isDisabled()); + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/glaccounts/" + glAccountId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse glAccountDelete(String tenant, String token, long glAccountId) { + RequestBuilder requestBuilder = RequestBuilder.create("DELETE"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setUri(this.baseUrl + "/glaccounts/" + glAccountId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse journalEntryCreate(String tenant, String token, PostJournalEntriesRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + if (requestBody.getOfficeId() > 0) { + internalRequestBody.put("officeId", requestBody.getOfficeId()); + } else { + internalRequestBody.put("officeId", null); + } + if (requestBody.getAccountingRule() > 0) { + internalRequestBody.put("accountingRule", requestBody.getAccountingRule()); + } else { + internalRequestBody.put("accountingRule", null); + } + internalRequestBody.put("currencyCode", requestBody.getCurrencyCode()); + if (requestBody.getPaymentTypeId() > 0) { + internalRequestBody.put("paymentTypeId", requestBody.getPaymentTypeId()); + } else { + internalRequestBody.put("paymentTypeId", null); + } + if (requestBody.getTransactionDate() != null) { + internalRequestBody.put("transactionDate", DateFormatUtils.format(requestBody.getTransactionDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("transactionDate", null); + } + internalRequestBody.put("accountNumber", requestBody.getAccountNumber()); + internalRequestBody.put("checkNumber", requestBody.getCheckNumber()); + internalRequestBody.put("routingCode", requestBody.getRoutingCode()); + internalRequestBody.put("receiptNumber", requestBody.getReceiptNumber()); + internalRequestBody.put("bankNumber", requestBody.getBankNumber()); + internalRequestBody.put("referenceNumber", requestBody.getReferenceNumber()); + internalRequestBody.put("amount", requestBody.getAmount()); + internalRequestBody.put("comments", requestBody.getComment()); + if (requestBody.getDebits() != null && !requestBody.getDebits().isEmpty()) { + List> debits = new ArrayList<>(); + internalRequestBody.put("debits", debits); + for (PostJournalEntriesRequest.TransactionEntry v : requestBody.getDebits()) { + Map entry = new HashMap<>(); + entry.put("amount", v.getAmount()); + if (v.getGlAccountId() > 0) { + entry.put("glAccountId", v.getGlAccountId()); + } else { + entry.put("glAccountId", null); + } + entry.put("comments", v.getComment()); + debits.add(entry); + } + } else { + internalRequestBody.put("debits", null); + } + if (requestBody.getCredits() != null && !requestBody.getCredits().isEmpty()) { + List> credits = new ArrayList<>(); + internalRequestBody.put("credits", credits); + for (PostJournalEntriesRequest.TransactionEntry v : requestBody.getCredits()) { + Map entry = new HashMap<>(); + entry.put("amount", v.getAmount()); + if (v.getGlAccountId() > 0) { + entry.put("glAccountId", v.getGlAccountId()); + } else { + entry.put("glAccountId", null); + } + entry.put("comments", v.getComment()); + credits.add(entry); + } + } else { + internalRequestBody.put("credits", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/journalentries?command=createOpeningBalance"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse journalEntryUpdate(String tenant, String token, PostJournalEntryUpdateRequest requestBody) { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(requestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/journalentries?command=updateRunningBalance"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse journalEntryDefine(String tenant, String token, PostJournalEntriesRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + if (requestBody.getOfficeId() > 0) { + internalRequestBody.put("officeId", requestBody.getOfficeId()); + } else { + internalRequestBody.put("officeId", null); + } + if (requestBody.getAccountingRule() > 0) { + internalRequestBody.put("accountingRule", requestBody.getAccountingRule()); + } else { + internalRequestBody.put("accountingRule", null); + } + internalRequestBody.put("currencyCode", requestBody.getCurrencyCode()); + if (requestBody.getPaymentTypeId() > 0) { + internalRequestBody.put("paymentTypeId", requestBody.getPaymentTypeId()); + } else { + internalRequestBody.put("paymentTypeId", null); + } + if (requestBody.getTransactionDate() != null) { + internalRequestBody.put("transactionDate", DateFormatUtils.format(requestBody.getTransactionDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("transactionDate", null); + } + internalRequestBody.put("accountNumber", requestBody.getAccountNumber()); + internalRequestBody.put("checkNumber", requestBody.getCheckNumber()); + internalRequestBody.put("routingCode", requestBody.getRoutingCode()); + internalRequestBody.put("receiptNumber", requestBody.getReceiptNumber()); + internalRequestBody.put("bankNumber", requestBody.getBankNumber()); + internalRequestBody.put("referenceNumber", requestBody.getReferenceNumber()); + internalRequestBody.put("amount", requestBody.getAmount()); + internalRequestBody.put("comments", requestBody.getComment()); + if (requestBody.getDebits() != null && !requestBody.getDebits().isEmpty()) { + List> debits = new ArrayList<>(); + internalRequestBody.put("debits", debits); + for (PostJournalEntriesRequest.TransactionEntry v : requestBody.getDebits()) { + Map entry = new HashMap<>(); + entry.put("amount", v.getAmount()); + if (v.getGlAccountId() > 0) { + entry.put("glAccountId", v.getGlAccountId()); + } else { + entry.put("glAccountId", null); + } + entry.put("comments", v.getComment()); + debits.add(entry); + } + } else { + internalRequestBody.put("debits", null); + } + if (requestBody.getCredits() != null && !requestBody.getCredits().isEmpty()) { + List> credits = new ArrayList<>(); + internalRequestBody.put("credits", credits); + for (PostJournalEntriesRequest.TransactionEntry v : requestBody.getCredits()) { + Map entry = new HashMap<>(); + entry.put("amount", v.getAmount()); + if (v.getGlAccountId() > 0) { + entry.put("glAccountId", v.getGlAccountId()); + } else { + entry.put("glAccountId", null); + } + entry.put("comments", v.getComment()); + credits.add(entry); + } + } else { + internalRequestBody.put("credits", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/journalentries?command=defineOpeningBalance"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse journalEntryReverse(String tenant, String token, long transactionId, PostJournalEntryReverseRequest requestBody) { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(requestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/journalentries/" + transactionId + "?command=reverse"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse provisioningEntryCreate(String tenant, String token, PostProvisioningEntriesRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + if (requestBody.getDate() != null) { + internalRequestBody.put("date", DateFormatUtils.format(requestBody.getDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("date", null); + } + internalRequestBody.put("createjournalentries", requestBody.isCreateJournalEntry()); + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/provisioningentries"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse provisioningJournalEntryCreate(String tenant, String token, long entryId) { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/provisioningentries/" + entryId + "?command=createjournalentry"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse provisioningEntryReCreate(String tenant, String token, long entryId) { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/provisioningentries/" + entryId + "?command=recreateprovisioningentry"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse accountingRuleUpdate(String tenant, String token, long accountingRuleId, PutAccountingRulesRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + if (requestBody.getOfficeId() > 0) { + internalRequestBody.put("officeId", requestBody.getOfficeId()); + } else { + internalRequestBody.put("officeId", null); + } + if (requestBody.getAccountToDebit() > 0) { + internalRequestBody.put("accountToDebit", requestBody.getAccountToDebit()); + } else { + internalRequestBody.put("accountToDebit", null); + } + if (requestBody.getAccountToCredit() > 0) { + internalRequestBody.put("accountToCredit", requestBody.getAccountToCredit()); + } else { + internalRequestBody.put("accountToCredit", null); + } + if (requestBody.getDebitTags() != null && !requestBody.getDebitTags().isEmpty()) { + internalRequestBody.put("debitTags", requestBody.getDebitTags()); + } else { + internalRequestBody.put("debitTags", null); + } + if (requestBody.getCreditTags() != null && !requestBody.getCreditTags().isEmpty()) { + internalRequestBody.put("creditTags", requestBody.getCreditTags()); + } else { + internalRequestBody.put("creditTags", null); + } + internalRequestBody.put("allowMultipleCreditEntries", requestBody.isAllowMultipleCreditEntries()); + internalRequestBody.put("allowMultipleDebitEntries", requestBody.isAllowMultipleDebitEntries()); + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/accountingrules/" + accountingRuleId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse accountingRuleDelete(String tenant, String token, long accountingRuleId) { + RequestBuilder requestBuilder = RequestBuilder.create("DELETE"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setUri(this.baseUrl + "/accountingrules/" + accountingRuleId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse adhocCreate(String tenant, String token, PostAdhocRequest requestBody) { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(requestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/adhocquery"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse adhocUpdate(String tenant, String token, long adhocId, PutAdhocRequest requestBody) { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(requestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/adhocquery/" + adhocId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse adhocDelete(String tenant, String token, long adhocId) { + RequestBuilder requestBuilder = RequestBuilder.create("DELETE"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setUri(this.baseUrl + "/adhocquery/" + adhocId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse batchRequest(String tenant, String token, boolean enclosingTransaction, PostBatchesRequest requestBody) { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(requestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/batches?enclosingTransaction=" + enclosingTransaction); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse makerCheckerApprove(String tenant, String token, long auditId) { + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setUri(this.baseUrl + "/makercheckers/" + auditId + "?command=approve"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse makerCheckerReject(String tenant, String token, long auditId) { + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setUri(this.baseUrl + "/makercheckers/" + auditId + "?command=reject"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse makerCheckerDelete(String tenant, String token, long auditId) { + RequestBuilder requestBuilder = RequestBuilder.create("DELETE"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setUri(this.baseUrl + "/makercheckers/" + auditId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse accountNumberFormatCreate(String tenant, String token, PostAccountNumberFormatsRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + if (requestBody.getAccountType() != null) { + internalRequestBody.put("accountType", Integer.valueOf(requestBody.getAccountType().getLiteral())); + } else { + internalRequestBody.put("accountType", null); + } + if (requestBody.getPrefixType() != null) { + internalRequestBody.put("prefixType", Integer.valueOf(requestBody.getPrefixType().getLiteral())); + } else { + internalRequestBody.put("prefixType", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/accountnumberformats"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse accountNumberFormatUpdate(String tenant, String token, long accountNumberFormatId, PutAccountNumberFormatsRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + if (requestBody.getPrefixType() != null) { + internalRequestBody.put("prefixType", Integer.valueOf(requestBody.getPrefixType().getLiteral())); + } else { + internalRequestBody.put("prefixType", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/accountnumberformats/" + accountNumberFormatId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse accountNumberFormatDelete(String tenant, String token, long accountNumberFormatId) { + RequestBuilder requestBuilder = RequestBuilder.create("DELETE"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setUri(this.baseUrl + "/accountnumberformats/" + accountNumberFormatId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse cacheSwitch(String tenant, String token, PutCachesRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + if (requestBody.getCacheType() != null) { + internalRequestBody.put("cacheType", Integer.valueOf(requestBody.getCacheType().getLiteral())); + } else { + internalRequestBody.put("cacheType", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/caches"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse emailCreate(String tenant, String token, PostEmailRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + internalRequestBody.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + internalRequestBody.put("name", requestBody.getName()); + internalRequestBody.put("emailRecipients", requestBody.getEmailRecipients()); + if (requestBody.getStretchyReportId() > 0) { + internalRequestBody.put("stretchyReportId", requestBody.getStretchyReportId()); + } else { + internalRequestBody.put("stretchyReportId", null); + } + if (requestBody.getEmailAttachmentFileFormatId() > 0) { + internalRequestBody.put("emailAttachmentFileFormatId", requestBody.getEmailAttachmentFileFormatId()); + } else { + internalRequestBody.put("emailAttachmentFileFormatId", null); + } + if (requestBody.getStartDateTime() != null) { + internalRequestBody.put("startDateTime", DateFormatUtils.format(requestBody.getStartDateTime(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("startDateTime", null); + } + if (requestBody.getClientId() > 0) { + internalRequestBody.put("clientId", requestBody.getClientId()); + } else { + internalRequestBody.put("clientId", null); + } + if (requestBody.getGroupId() > 0) { + internalRequestBody.put("groupId", requestBody.getGroupId()); + } else { + internalRequestBody.put("groupId", null); + } + if (requestBody.getStaffId() > 0) { + internalRequestBody.put("staffId", requestBody.getStaffId()); + } else { + internalRequestBody.put("staffId", null); + } + internalRequestBody.put("emailMessage", requestBody.getEmailMessage()); + internalRequestBody.put("emailSubject", requestBody.getEmailSubject()); + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/email"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse emailUpdate(String tenant, String token, long resourceId, PutEmailRequest requestBody) { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(requestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/email/" + resourceId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse emailDelete(String tenant, String token, long resourceId) { + RequestBuilder requestBuilder = RequestBuilder.create("DELETE"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setUri(this.baseUrl + "/email/" + resourceId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse emailConfigurationUpdate(String tenant, String token, PutEmailConfigurationRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put("SMTP_USERNAME", requestBody.getSmtpUsername()); + internalRequestBody.put("SMTP_SERVER", requestBody.getSmtpServer()); + if (requestBody.getSmtpPort() > 0) { + internalRequestBody.put("SMTP_PORT", requestBody.getSmtpPort()); + } else { + internalRequestBody.put("SMTP_PORT", null); + } + internalRequestBody.put("SMTP_PASSWORD", requestBody.getSmtpPassword()); + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/email/configuration"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse emailCampaignCreate(String tenant, String token, PostEmailCampaignRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + internalRequestBody.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + if (requestBody.getBusinessRuleId() > 0) { + internalRequestBody.put("businessRuleId", requestBody.getBusinessRuleId()); + } else { + internalRequestBody.put("businessRuleId", null); + } + if (requestBody.getStretchyReportId() > 0) { + internalRequestBody.put("stretchyReportId", requestBody.getStretchyReportId()); + } else { + internalRequestBody.put("stretchyReportId", null); + } + internalRequestBody.put("campaignName", requestBody.getCampaignName()); + if (requestBody.getCampaignType() > 0) { + internalRequestBody.put("campaignType", requestBody.getCampaignType()); + } else { + internalRequestBody.put("campaignType", null); + } + internalRequestBody.put("paramValue", requestBody.getParamValue()); + internalRequestBody.put("emailSubject", requestBody.getEmailSubject()); + internalRequestBody.put("emailMessage", requestBody.getEmailMessage()); + internalRequestBody.put("stretchyReportParamMap", requestBody.getStretchyReportParamMap()); + if (requestBody.getEmailAttachmentFileFormatId() > 0) { + internalRequestBody.put("emailAttachmentFileFormatId", requestBody.getEmailAttachmentFileFormatId()); + } else { + internalRequestBody.put("emailAttachmentFileFormatId", null); + } + internalRequestBody.put("recurrence", requestBody.getRecurrence()); + if (requestBody.getSubmittedOnDate() != null) { + internalRequestBody.put("submittedOnDate", DateFormatUtils.format(requestBody.getSubmittedOnDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("submittedOnDate", null); + } + if (requestBody.getRecurrenceStartDate() != null) { + internalRequestBody.put("recurrenceStartDate", DateFormatUtils.format(requestBody.getRecurrenceStartDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("recurrenceStartDate", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/email/campaign"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse emailCampaignUpdate(String tenant, String token, long resourceId, PutEmailCampaignRequest requestBody) { + return null; + } + + @Override + public FineractResponse emailCampaignActivate(String tenant, String token, long resourceId, PostEmailCampaignActivationRequest requestBody) { + return null; + } + + @Override + public FineractResponse emailCampaignReactivate(String tenant, String token, long resourceId, PostEmailCampaignActivationRequest requestBody) { + return null; + } + + @Override + public FineractResponse emailCampaignClose(String tenant, String token, long resourceId, PostEmailCampaignCloseRequest requestBody) { + return null; + } + + @Override + public FineractResponse emailCampaignPreview(String tenant, String token) { + return null; + } + + @Override + public FineractResponse emailCampaignDelete(String tenant, String token, long resourceId) { + return null; + } + + @Override + public FineractResponse smsCampaignCreate(String tenant, String token) { + return null; + } + + @Override + public FineractResponse smsCampaignUpdate(String tenant, String token, long campaignId) { + return null; + } + + @Override + public FineractResponse smsCampaignDelete(String tenant, String token, long campaignId) { + return null; + } + + @Override + public FineractResponse smsCampaignPreview(String tenant, String token, long campaignId) { + return null; + } + + @Override + public FineractResponse smsCampaignReactivate(String tenant, String token, long campaignId) { + return null; + } + + @Override + public FineractResponse smsCampaignActivate(String tenant, String token, long campaignId) { + return null; + } + + @Override + public FineractResponse smsCampaignClose(String tenant, String token, long campaignId) { + return null; + } + + @Override + public FineractResponse codeCreate(String tenant, String token, CodeRequest requestBody) { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(requestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/codes"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse codeUpdate(String tenant, String token, long codeId, CodeRequest requestBody) { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(requestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/codes/" + codeId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse codeDelete(String tenant, String token, long codeId) { + RequestBuilder requestBuilder = RequestBuilder.create("DELETE"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setUri(this.baseUrl + "/codes/" + codeId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse externalServiceUpdate(String tenant, String token) { + return null; + } + + @Override + public FineractResponse configurationUpdate(String tenant, String token) { + return null; + } + + @Override + public FineractResponse creditBureauUpdate(String tenant, String token) { + return null; + } + + @Override + public FineractResponse creditBureauMappingUpdate(String tenant, String token) { + return null; + } + + @Override + public FineractResponse creditBureauOrganisationCreate(String tenant, String token) { + return null; + } + + @Override + public FineractResponse creditBureauProductMappingCreate(String tenant, String token) { + return null; + } + + @Override + public FineractResponse datatableCreate(String tenant, String token, PostDataTableRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + if (requestBody.getApptableName() != null) { + internalRequestBody.put("apptableName", requestBody.getApptableName().getLiteral()); + } else { + internalRequestBody.put("apptableName", null); + } + internalRequestBody.put("multiRow", requestBody.isMultiRow()); + internalRequestBody.put("datatableName", requestBody.getDatatableName()); + if (requestBody.getColumns() != null && !requestBody.getColumns().isEmpty()) { + List> columns = new ArrayList<>(); + internalRequestBody.put("columns", columns); + for (PostDataTableRequest.Column v : requestBody.getColumns()) { + Map column = new HashMap<>(); + String type = v.getType(); + column.put("type", type); + column.put("name", v.getName()); + column.put("mandatory", v.isMandatory()); + if ("String".equals(type)) { + column.put("length", v.getLength()); + } else if ("DropDown".equals(type)) { + column.put("code", v.getCode()); + } + columns.add(column); + } + } else { + internalRequestBody.put("columns", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/datatables"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse datatableUpdate(String tenant, String token, String datatableName, PutDataTableRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + if (requestBody.getApptableName() != null) { + internalRequestBody.put("apptableName", requestBody.getApptableName().getLiteral()); + } else { + internalRequestBody.put("apptableName", null); + } + + if (requestBody.getAddColumns() != null && !requestBody.getAddColumns().isEmpty()) { + List> columns = new ArrayList<>(); + internalRequestBody.put("addColumns", columns); + for (PutDataTableRequest.AddColumn v : requestBody.getAddColumns()) { + Map column = new HashMap<>(); + String type = v.getType(); + column.put("type", type); + column.put("name", v.getName()); + column.put("mandatory", v.isMandatory()); + if ("String".equals(type)) { + column.put("length", v.getLength()); + } else if ("DropDown".equals(type)) { + column.put("code", v.getCode()); + } + columns.add(column); + } + } + if (requestBody.getChangeColumns() != null && !requestBody.getChangeColumns().isEmpty()) { + List> columns = new ArrayList<>(); + internalRequestBody.put("changeColumns", columns); + for (PutDataTableRequest.ChangeColumn v : requestBody.getChangeColumns()) { + Map column = new HashMap<>(); + String type = v.getType(); + column.put("name", v.getName()); + column.put("newName", v.getNewName()); + column.put("mandatory", v.isMandatory()); + if ("String".equals(type)) { + column.put("length", v.getLength()); + } else if ("DropDown".equals(type)) { + column.put("code", v.getCode()); + column.put("newCode", v.getNewCode()); + } + columns.add(column); + } + } + if (requestBody.getDropColumns() != null && !requestBody.getDropColumns().isEmpty()) { + List> columns = new ArrayList<>(); + internalRequestBody.put("dropColumns", columns); + for (PutDataTableRequest.DropColumn v : requestBody.getDropColumns()) { + Map column = new HashMap<>(); + column.put("name", v.getName()); + columns.add(column); + } + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/datatables/" + datatableName); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse datatableDelete(String tenant, String token, String datatableName) { + RequestBuilder requestBuilder = RequestBuilder.create("DELETE"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setUri(this.baseUrl + "/datatables/" + datatableName); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse datatableRegister(String tenant, String token, String datatable, TableTypeEnum apptable, PostDataTableRegisterRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put("category", requestBody.getCategory().getLiteral()); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/datatables/register/" + datatable + "/" + apptable.getLiteral()); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse datatableDeregister(String tenant, String token, String datatable) { + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setUri(this.baseUrl + "/datatables/deregister/" + datatable); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse datatableEntryCreate(String tenant, String token, String datatable, long apptableId, Map requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.putAll(requestBody); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + internalRequestBody.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/datatables/" + datatable + "/" + apptableId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse datatableEntryOne2OneUpdate(String tenant, String token, String datatable, long apptableId, Map requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.putAll(requestBody); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + internalRequestBody.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/datatables/" + datatable + "/" + apptableId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse datatableEntryOne2ManyUpdate(String tenant, String token, String datatable, long apptableId, long datatableId, Map requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.putAll(requestBody); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + internalRequestBody.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/datatables/" + datatable + "/" + apptableId + "/" + datatableId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse datatableEntryClear(String tenant, String token, String datatable, long apptableId) { + RequestBuilder requestBuilder = RequestBuilder.create("DELETE"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setUri(this.baseUrl + "/datatables/" + datatable + "/" + apptableId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse datatableEntryDelete(String tenant, String token, String datatable, long apptableId, long datatableId) { + RequestBuilder requestBuilder = RequestBuilder.create("DELETE"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setUri(this.baseUrl + "/datatables/" + datatable + "/" + apptableId + "/" + datatableId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse datatableEntityCheckCreate(String tenant, String token, PostDatatableEntityCheckRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + internalRequestBody.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + internalRequestBody.put("datatableName", requestBody.getDatatableName()); + if (requestBody.getEntity() != null) { + internalRequestBody.put("entity", requestBody.getEntity().getLiteral()); + } else { + internalRequestBody.put("entity", null); + } + if (requestBody.getStatus() != null) { + internalRequestBody.put("status", Integer.valueOf(requestBody.getStatus().getLiteral())); + } else { + internalRequestBody.put("status", null); + } + if (requestBody.getProductId() > 0) { + internalRequestBody.put("productId", requestBody.getProductId()); + } else { + internalRequestBody.put("productId", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/entityDatatableChecks"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse datatableEntityCheckDelete(String tenant, String token, long entityDatatableCheckId) { + RequestBuilder requestBuilder = RequestBuilder.create("DELETE"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setUri(this.baseUrl + "/entityDatatableChecks/" + entityDatatableCheckId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse reportCreate(String tenant, String token) { + return null; + } + + @Override + public FineractResponse reportUpdate(String tenant, String token) { + return null; + } + + @Override + public FineractResponse reportDelete(String tenant, String token) { + return null; + } + + @Override + public FineractResponse documentCreate(String tenant, String token) { + return null; + } + + @Override + public FineractResponse documentUpdate(String tenant, String token) { + return null; + } + + @Override + public FineractResponse documentDelete(String tenant, String token) { + return null; + } + + @Override + public FineractResponse imageCreate(String tenant, String token) { + return null; + } + + @Override + public FineractResponse imageCreate(String tenant, String token, long abc) { + return null; + } + + @Override + public FineractResponse imageUpdate(String tenant, String token) { + return null; + } + + @Override + public FineractResponse imageUpdate(String tenant, String token, long abc) { + return null; + } + + @Override + public FineractResponse imageDelete(String tenant, String token) { + return null; + } + + @Override + public FineractResponse entityToEntityCreate(String tenant, String token, long relId, EntityToEntityRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + internalRequestBody.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + if (requestBody.getFromId() > 0) { + internalRequestBody.put("fromId", requestBody.getFromId()); + } else { + internalRequestBody.put("fromId", null); + } + if (requestBody.getToId() > 0) { + internalRequestBody.put("toId", requestBody.getToId()); + } else { + internalRequestBody.put("toId", null); + } + if (requestBody.getStartDate() != null) { + internalRequestBody.put("startDate", DateFormatUtils.format(requestBody.getStartDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("startDate", null); + } + if (requestBody.getEndDate() != null) { + internalRequestBody.put("endDate", DateFormatUtils.format(requestBody.getEndDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("endDate", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/entitytoentitymapping/" + relId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse entityToEntityUpdate(String tenant, String token, long mapId, EntityToEntityRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put(LOCALE_KEY, LOCALE_VALUE); + internalRequestBody.put(DATE_FORMAT_KEY, DATE_FORMAT_VALUE); + if (requestBody.getFromId() > 0) { + internalRequestBody.put("fromId", requestBody.getFromId()); + } else { + internalRequestBody.put("fromId", null); + } + if (requestBody.getToId() > 0) { + internalRequestBody.put("toId", requestBody.getToId()); + } else { + internalRequestBody.put("toId", null); + } + if (requestBody.getStartDate() != null) { + internalRequestBody.put("startDate", DateFormatUtils.format(requestBody.getStartDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("startDate", null); + } + if (requestBody.getEndDate() != null) { + internalRequestBody.put("endDate", DateFormatUtils.format(requestBody.getEndDate(), DATE_FORMAT_VALUE)); + } else { + internalRequestBody.put("endDate", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/entitytoentitymapping/" + mapId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse entityToEntityDelete(String tenant, String token, long mapId) { + RequestBuilder requestBuilder = RequestBuilder.create("DELETE"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setUri(this.baseUrl + "/entitytoentitymapping/" + mapId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse deviceRegistration(String tenant, String token) { + return null; + } + + @Override + public FineractResponse deviceUpdate(String tenant, String token) { + return null; + } + + @Override + public FineractResponse deviceDelete(String tenant, String token) { + return null; + } + + @Override + public FineractResponse hookCreate(String tenant, String token, PostHookRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put("displayName", requestBody.getDisplayName()); + internalRequestBody.put("name", requestBody.getName()); + if (requestBody.getConfig() != null && !requestBody.getConfig().isEmpty()) { + internalRequestBody.put("config", requestBody.getConfig()); + } else { + internalRequestBody.put("config", null); + } + if (requestBody.getEvents() != null && !requestBody.getEvents().isEmpty()) { + internalRequestBody.put("events", requestBody.getEvents()); + } else { + internalRequestBody.put("events", null); + } + internalRequestBody.put("isActive", requestBody.isActive()); + if (requestBody.getTemplateId() > 0) { + internalRequestBody.put("templateId", requestBody.getTemplateId()); + } else { + internalRequestBody.put("templateId", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/hooks"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse hookUpdate(String tenant, String token, long hookId, PutHookRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put("displayName", requestBody.getDisplayName()); + internalRequestBody.put("name", requestBody.getName()); + if (requestBody.getConfig() != null && !requestBody.getConfig().isEmpty()) { + internalRequestBody.put("config", requestBody.getConfig()); + } else { + internalRequestBody.put("config", null); + } + if (requestBody.getEvents() != null && !requestBody.getEvents().isEmpty()) { + internalRequestBody.put("events", requestBody.getEvents()); + } else { + internalRequestBody.put("events", null); + } + internalRequestBody.put("isActive", requestBody.isActive()); + if (requestBody.getTemplateId() > 0) { + internalRequestBody.put("templateId", requestBody.getTemplateId()); + } else { + internalRequestBody.put("templateId", null); + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/hooks/" + hookId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse hookDelete(String tenant, String token, long hookId) { + RequestBuilder requestBuilder = RequestBuilder.create("DELETE"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setUri(this.baseUrl + "/hooks/" + hookId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse jobStart(String tenant, String token) { + return null; + } + + @Override + public FineractResponse jobStop(String tenant, String token) { + return null; + } + + @Override + public FineractResponse jobExecute(String tenant, String token) { + return null; + } + + @Override + public FineractResponse jobDetailUpdate(String tenant, String token) { + return null; + } + + @Override + public FineractResponse reportMailingCreate(String tenant, String token) { + return null; + } + + @Override + public FineractResponse reportMailingUpdate(String tenant, String token) { + return null; + } + + @Override + public FineractResponse reportMailingDelete(String tenant, String token) { + return null; + } + + @Override + public PostAuthenticationResponse tokenRequest(String tenant, AuthenticateRequest requestBody) { + return null; + } + + @Override + public PostAuthenticationResponse tokenValidation(String tenant, AuthenticateRequest requestBody) { + return null; + } + + @Override + public PostAuthenticationResponse tokenUpdate(String tenant, AuthenticateRequest requestBody) { + return null; + } + + @Override + public PostAuthenticationResponse twoFactorConfigurationUpdate(String tenant, AuthenticateRequest requestBody) { + return null; + } + + @Override + public FineractResponse smsCreate(String tenant, String token) { + return null; + } + + @Override + public FineractResponse smsUpdate(String tenant, String token) { + return null; + } + + @Override + public FineractResponse smsDelete(String tenant, String token) { + return null; + } + + @Override + public FineractResponse likelihoodUpdate(String tenant, String token) { + return null; + } + + @Override + public FineractResponse interoperationTransfer(String tenant, String token, long staffId, PutStaffRequest requestBody) { + return null; + } + + @Override + public FineractResponse interoperationQuoteCreate(String tenant, String token, long staffId, PutStaffRequest requestBody) { + return null; + } + + @Override + public FineractResponse interoperationTransactionCreate(String tenant, String token, long staffId, PutStaffRequest requestBody) { + return null; + } + + @Override + public FineractResponse accountIdentifierDelete(String tenant, String token, long staffId, PutStaffRequest requestBody) { + return null; + } + + @Override + public FineractResponse accountIdentifierDelete(String tenant, String token, long staffId, PutStaffRequest requestBody, long abc) { + return null; + } + + @Override + public FineractResponse accountIdentifierRegister(String tenant, String token, long staffId, PutStaffRequest requestBody) { + return null; + } + + @Override + public FineractResponse accountIdentifierRegister(String tenant, String token, long staffId, PutStaffRequest requestBody, long abc) { + return null; + } + + @Override + public FineractResponse notificationUpdate(String tenant, String token, long auditId) { + return null; + } + + @Override + public FineractResponse userCreate(String tenant, String token, PostUserRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + if (requestBody.getOfficeId() > 0) { + internalRequestBody.put("officeId", requestBody.getOfficeId()); + } else { + internalRequestBody.put("officeId", null); + } + if (requestBody.getStaffId() > 0) { + internalRequestBody.put("staffId", requestBody.getStaffId()); + } else { + internalRequestBody.put("staffId", null); + } + if (requestBody.getRoles() != null && !requestBody.getRoles().isEmpty()) { + internalRequestBody.put("roles", requestBody.getRoles()); + } else { + internalRequestBody.put("roles", null); + } + internalRequestBody.put("isSelfServiceUser", requestBody.isSelfServiceUser()); + if (requestBody.getClients() != null && !requestBody.getClients().isEmpty()) { + internalRequestBody.put("clients", requestBody.getClients()); + } else { + internalRequestBody.put("clients", null); + } + internalRequestBody.put("sendPasswordToEmail", requestBody.isSendPasswordToEmail()); + internalRequestBody.put("username", requestBody.getUsername()); + internalRequestBody.put("password", requestBody.getPassword()); + internalRequestBody.put("repeatPassword", requestBody.getPassword()); + internalRequestBody.put("passwordNeverExpires", requestBody.isPasswordNeverExpires()); + internalRequestBody.put("email", requestBody.getEmail()); + internalRequestBody.put("firstname", requestBody.getFirstName()); + internalRequestBody.put("lastname", requestBody.getLastName()); + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/users"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse userUpdate(String tenant, String token, long userId, PutUserRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + if (requestBody.getOfficeId() > 0) { + internalRequestBody.put("officeId", requestBody.getOfficeId()); + } else { + internalRequestBody.put("officeId", null); + } + if (requestBody.getStaffId() > 0) { + internalRequestBody.put("staffId", requestBody.getStaffId()); + } else { + internalRequestBody.put("staffId", null); + } + if (requestBody.getRoles() != null && !requestBody.getRoles().isEmpty()) { + internalRequestBody.put("roles", requestBody.getRoles()); + } else { + internalRequestBody.put("roles", null); + } + internalRequestBody.put("isSelfServiceUser", requestBody.isSelfServiceUser()); + if (requestBody.getClients() != null && !requestBody.getClients().isEmpty()) { + internalRequestBody.put("clients", requestBody.getClients()); + } else { + internalRequestBody.put("clients", null); + } + internalRequestBody.put("sendPasswordToEmail", requestBody.isSendPasswordToEmail()); + internalRequestBody.put("username", requestBody.getUsername()); + internalRequestBody.put("password", requestBody.getPassword()); + internalRequestBody.put("repeatPassword", requestBody.getPassword()); + internalRequestBody.put("passwordNeverExpires", requestBody.isPasswordNeverExpires()); + internalRequestBody.put("email", requestBody.getEmail()); + internalRequestBody.put("firstname", requestBody.getFirstName()); + internalRequestBody.put("lastname", requestBody.getLastName()); + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/users/" + userId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse userDelete(String tenant, String token, long userId) { + RequestBuilder requestBuilder = RequestBuilder.create("DELETE"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setUri(this.baseUrl + "/users/" + userId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse roleDelete(String tenant, String token, long roleId) { + RequestBuilder requestBuilder = RequestBuilder.create("DELETE"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setUri(this.baseUrl + "/roles/" + roleId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse roleDisable(String tenant, String token, long roleId) { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/roles/" + roleId + "?command=disable"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse roleEnable(String tenant, String token, long roleId) { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/roles/" + roleId + "?command=enable"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse rolePermissionUpdate(String tenant, String token, long roleId, Map permissions) { + Map internalRequestBody = new HashMap<>(); + internalRequestBody.put("permissions", permissions); + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/roles/" + roleId + "/permissions"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse surveyCreate(String tenant, String token, SurveyRequest requestBody) { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(requestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/surveys"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse surveyUpdate(String tenant, String token, long surveyId, SurveyRequest requestBody) { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(requestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("PUT"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/surveys/" + surveyId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse surveyDeactivate(String tenant, String token, long surveyId) { + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setUri(this.baseUrl + "/surveys/" + surveyId + "?command=deactivate"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse surveyActivate(String tenant, String token, long surveyId) { + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setUri(this.baseUrl + "/surveys/" + surveyId + "?command=activate"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse surveyScoreCreate(String tenant, String token, long surveyId, PostScoreRequest requestBody) { + Map internalRequestBody = new HashMap<>(); + if (requestBody.getClientId() > 0) { + internalRequestBody.put("clientId", requestBody.getClientId()); + } else { + internalRequestBody.put("clientId", null); + } + internalRequestBody.put("id", requestBody.getId()); + internalRequestBody.put("surveyId", requestBody.getSurveyId()); + internalRequestBody.put("surveyName", requestBody.getSurveyName()); + internalRequestBody.put("userId", requestBody.getUserId()); + internalRequestBody.put("username", requestBody.getUsername()); + if (requestBody.getScorecardValues() != null && !requestBody.getScorecardValues().isEmpty()) { + List> scorecardValues = new ArrayList<>(); + internalRequestBody.put("scorecardValues", scorecardValues); + for (PostScoreRequest.ScorecardValue v : requestBody.getScorecardValues()) { + Map scorecardValue = new HashMap<>(); + scorecardValue.put("value", v.getValue()); + scorecardValue.put("questionId", v.getQuestionId()); + scorecardValue.put("responseId", v.getResponseId()); + scorecardValue.put("createdOn", DateFormatUtils.format(v.getCreatedOn(), "yyyy-MM-dd")); + scorecardValues.add(scorecardValue); + } + } + + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(internalRequestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/surveys/scorecards/" + surveyId); + return execute(FineractResponse.class, requestBuilder.build()); + } + + @Override + public FineractResponse surveyLookupTableCreate(String tenant, String token, long surveyId, PostLookupTableRequest requestBody) { + EntityBuilder entityBuilder = EntityBuilder.create(); + entityBuilder.setContentType(ContentType.APPLICATION_JSON); + entityBuilder.setContentEncoding(StandardCharsets.UTF_8.name()); + entityBuilder.setText(this.gson.toJson(requestBody)); + HttpEntity entity = entityBuilder.build(); + + RequestBuilder requestBuilder = RequestBuilder.create("POST"); + requestBuilder.addHeader("Fineract-Platform-TenantId", tenant); + requestBuilder.addHeader("Authorization", "Basic " + token); + requestBuilder.setEntity(entity); + requestBuilder.setUri(this.baseUrl + "/surveys/" + surveyId + "/lookuptables"); + return execute(FineractResponse.class, requestBuilder.build()); + } + + + @Override + public void close() throws IOException { + if (this.client != null) { + this.client.close(); + } + } +} \ No newline at end of file diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/Function.java b/bank-web/src/main/java/com/angkorteam/fintech/client/Function.java new file mode 100644 index 00000000..f55fb68f --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/Function.java @@ -0,0 +1,5 @@ +package com.angkorteam.fintech.client; + +public class Function { + public static final String ALL_FUNCTION = "ALL_FUNCTION"; +} diff --git a/src/main/java/com/angkorteam/fintech/dto/Language.java b/bank-web/src/main/java/com/angkorteam/fintech/client/Language.java similarity index 92% rename from src/main/java/com/angkorteam/fintech/dto/Language.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/Language.java index 94420cb0..0708bdb7 100644 --- a/src/main/java/com/angkorteam/fintech/dto/Language.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/Language.java @@ -1,8 +1,8 @@ -package com.angkorteam.fintech.dto; +package com.angkorteam.fintech.client; -import java.util.Locale; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import java.util.Locale; public enum Language { diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/AppError.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/AppError.java new file mode 100644 index 00000000..ef8b3075 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/AppError.java @@ -0,0 +1,57 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.List; + +public class AppError { + + private String developerMessage; + + private int httpStatusCode; + + private String defaultUserMessage; + + private String userMessageGlobalisationCode; + + private List errors; + + public List getErrors() { + return errors; + } + + public void setErrors(List errors) { + this.errors = errors; + } + + public String getDeveloperMessage() { + return developerMessage; + } + + public void setDeveloperMessage(String developerMessage) { + this.developerMessage = developerMessage; + } + + public int getHttpStatusCode() { + return httpStatusCode; + } + + public void setHttpStatusCode(int httpStatusCode) { + this.httpStatusCode = httpStatusCode; + } + + public String getDefaultUserMessage() { + return defaultUserMessage; + } + + public void setDefaultUserMessage(String defaultUserMessage) { + this.defaultUserMessage = defaultUserMessage; + } + + public String getUserMessageGlobalisationCode() { + return userMessageGlobalisationCode; + } + + public void setUserMessageGlobalisationCode(String userMessageGlobalisationCode) { + this.userMessageGlobalisationCode = userMessageGlobalisationCode; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/AppException.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/AppException.java new file mode 100644 index 00000000..9471bd9e --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/AppException.java @@ -0,0 +1,23 @@ +package com.angkorteam.fintech.client.dto; + + +public class AppException extends RuntimeException { + + private final String text; + + private final AppError object; + + public AppException(String text, AppError object) { + this.text = text; + this.object = object; + } + + public AppError getObject() { + return this.object; + } + + public String getText() { + return this.text; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/AuthenticateRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/AuthenticateRequest.java new file mode 100644 index 00000000..617914b8 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/AuthenticateRequest.java @@ -0,0 +1,32 @@ +package com.angkorteam.fintech.client.dto; + +public class AuthenticateRequest { + + private String username; + private String password; + + public AuthenticateRequest() { + } + + public AuthenticateRequest(String username, String password) { + this.username = username; + this.password = password; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/CodeRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/CodeRequest.java new file mode 100644 index 00000000..c3dcec76 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/CodeRequest.java @@ -0,0 +1,15 @@ +package com.angkorteam.fintech.client.dto; + +public class CodeRequest { + + private String name; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/DataTable.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/DataTable.java new file mode 100644 index 00000000..98023b17 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/DataTable.java @@ -0,0 +1,28 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.HashMap; +import java.util.Map; + +public class DataTable { + + private String registeredTableName; + + private Map data = new HashMap<>(); + + public String getRegisteredTableName() { + return registeredTableName; + } + + public void setRegisteredTableName(String registeredTableName) { + this.registeredTableName = registeredTableName; + } + + public Map getData() { + return data; + } + + public void setData(Map data) { + this.data = data; + } + +} \ No newline at end of file diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/EntityToEntityRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/EntityToEntityRequest.java new file mode 100644 index 00000000..c6f47c66 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/EntityToEntityRequest.java @@ -0,0 +1,47 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.Date; + +public class EntityToEntityRequest { + + private long fromId; + + private long toId; + + private Date startDate; + + private Date endDate; + + public long getFromId() { + return fromId; + } + + public void setFromId(long fromId) { + this.fromId = fromId; + } + + public long getToId() { + return toId; + } + + public void setToId(long toId) { + this.toId = toId; + } + + public Date getStartDate() { + return startDate; + } + + public void setStartDate(Date startDate) { + this.startDate = startDate; + } + + public Date getEndDate() { + return endDate; + } + + public void setEndDate(Date endDate) { + this.endDate = endDate; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/EnumOptionData.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/EnumOptionData.java new file mode 100644 index 00000000..456fbf8d --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/EnumOptionData.java @@ -0,0 +1,54 @@ +/** + * 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. + */ +package com.angkorteam.fintech.client.dto; + +import java.io.Serializable; +import java.util.Objects; + +public class EnumOptionData implements Serializable { + + private Long id; + private String code; + private String value; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/ErrorItem.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/ErrorItem.java new file mode 100644 index 00000000..e815452a --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/ErrorItem.java @@ -0,0 +1,67 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.List; + +public class ErrorItem { + + private String developerMessage; + + private String defaultUserMessage; + + private String userMessageGlobalisationCode; + + private String parameterName; + + private String value; + + private List args; + + public String getDeveloperMessage() { + return developerMessage; + } + + public void setDeveloperMessage(String developerMessage) { + this.developerMessage = developerMessage; + } + + public String getDefaultUserMessage() { + return defaultUserMessage; + } + + public void setDefaultUserMessage(String defaultUserMessage) { + this.defaultUserMessage = defaultUserMessage; + } + + public String getUserMessageGlobalisationCode() { + return userMessageGlobalisationCode; + } + + public void setUserMessageGlobalisationCode(String userMessageGlobalisationCode) { + this.userMessageGlobalisationCode = userMessageGlobalisationCode; + } + + public String getParameterName() { + return parameterName; + } + + public void setParameterName(String parameterName) { + this.parameterName = parameterName; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public List getArgs() { + return args; + } + + public void setArgs(List args) { + this.args = args; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/ErrorValue.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/ErrorValue.java new file mode 100644 index 00000000..45283138 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/ErrorValue.java @@ -0,0 +1,14 @@ +package com.angkorteam.fintech.client.dto; + +public class ErrorValue { + + private String value; + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/FineractResponse.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/FineractResponse.java new file mode 100644 index 00000000..962cf538 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/FineractResponse.java @@ -0,0 +1,143 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.Map; + +public class FineractResponse { + + private Long commandId; + private Long officeId; + private Long groupId; + private Long clientId; + private Long loanId; + private Long savingsId; + private Long resourceId; + private Long subResourceId; + private String transactionId; + private Map changes; + private String resourceIdentifier; + private Long productId; + private Long gsimId; + private Long glimId; + private Boolean rollbackTransaction; + + public Long getCommandId() { + return commandId; + } + + public void setCommandId(Long commandId) { + this.commandId = commandId; + } + + public Long getOfficeId() { + return officeId; + } + + public void setOfficeId(Long officeId) { + this.officeId = officeId; + } + + public Long getGroupId() { + return groupId; + } + + public void setGroupId(Long groupId) { + this.groupId = groupId; + } + + public Long getClientId() { + return clientId; + } + + public void setClientId(Long clientId) { + this.clientId = clientId; + } + + public Long getLoanId() { + return loanId; + } + + public void setLoanId(Long loanId) { + this.loanId = loanId; + } + + public Long getSavingsId() { + return savingsId; + } + + public void setSavingsId(Long savingsId) { + this.savingsId = savingsId; + } + + public Long getResourceId() { + return resourceId; + } + + public void setResourceId(Long resourceId) { + this.resourceId = resourceId; + } + + public Long getSubResourceId() { + return subResourceId; + } + + public void setSubResourceId(Long subResourceId) { + this.subResourceId = subResourceId; + } + + public String getTransactionId() { + return transactionId; + } + + public void setTransactionId(String transactionId) { + this.transactionId = transactionId; + } + + public Map getChanges() { + return changes; + } + + public void setChanges(Map changes) { + this.changes = changes; + } + + public String getResourceIdentifier() { + return resourceIdentifier; + } + + public void setResourceIdentifier(String resourceIdentifier) { + this.resourceIdentifier = resourceIdentifier; + } + + public Long getProductId() { + return productId; + } + + public void setProductId(Long productId) { + this.productId = productId; + } + + public Long getGsimId() { + return gsimId; + } + + public void setGsimId(Long gsimId) { + this.gsimId = gsimId; + } + + public Long getGlimId() { + return glimId; + } + + public void setGlimId(Long glimId) { + this.glimId = glimId; + } + + public Boolean getRollbackTransaction() { + return rollbackTransaction; + } + + public void setRollbackTransaction(Boolean rollbackTransaction) { + this.rollbackTransaction = rollbackTransaction; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostAccountNumberFormatsRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostAccountNumberFormatsRequest.java new file mode 100644 index 00000000..c30938dc --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostAccountNumberFormatsRequest.java @@ -0,0 +1,28 @@ +package com.angkorteam.fintech.client.dto; + +import com.angkorteam.fintech.client.renums.AccountNumberPrefixType; +import com.angkorteam.fintech.client.renums.EntityAccountType; + +public class PostAccountNumberFormatsRequest { + + private EntityAccountType accountType; + + private AccountNumberPrefixType prefixType; + + public EntityAccountType getAccountType() { + return accountType; + } + + public void setAccountType(EntityAccountType accountType) { + this.accountType = accountType; + } + + public AccountNumberPrefixType getPrefixType() { + return prefixType; + } + + public void setPrefixType(AccountNumberPrefixType prefixType) { + this.prefixType = prefixType; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostAccountingRulesRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostAccountingRulesRequest.java new file mode 100644 index 00000000..fa9b6d24 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostAccountingRulesRequest.java @@ -0,0 +1,98 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.ArrayList; +import java.util.List; + +public class PostAccountingRulesRequest { + + private String name; + + private long officeId; + + private long accountToDebit; + + private long accountToCredit; + + private String description; + + private List debitTags = new ArrayList<>(); + + private List creditTags = new ArrayList<>(); + + private boolean allowMultipleDebitEntries; + + private boolean allowMultipleCreditEntries; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public long getOfficeId() { + return officeId; + } + + public void setOfficeId(long officeId) { + this.officeId = officeId; + } + + public long getAccountToDebit() { + return accountToDebit; + } + + public void setAccountToDebit(long accountToDebit) { + this.accountToDebit = accountToDebit; + } + + public long getAccountToCredit() { + return accountToCredit; + } + + public void setAccountToCredit(long accountToCredit) { + this.accountToCredit = accountToCredit; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public List getDebitTags() { + return debitTags; + } + + public void setDebitTags(List debitTags) { + this.debitTags = debitTags; + } + + public List getCreditTags() { + return creditTags; + } + + public void setCreditTags(List creditTags) { + this.creditTags = creditTags; + } + + public boolean isAllowMultipleDebitEntries() { + return allowMultipleDebitEntries; + } + + public void setAllowMultipleDebitEntries(boolean allowMultipleDebitEntries) { + this.allowMultipleDebitEntries = allowMultipleDebitEntries; + } + + public boolean isAllowMultipleCreditEntries() { + return allowMultipleCreditEntries; + } + + public void setAllowMultipleCreditEntries(boolean allowMultipleCreditEntries) { + this.allowMultipleCreditEntries = allowMultipleCreditEntries; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostAdhocRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostAdhocRequest.java new file mode 100644 index 00000000..9fb3d607 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostAdhocRequest.java @@ -0,0 +1,87 @@ +package com.angkorteam.fintech.client.dto; + +import com.google.gson.annotations.SerializedName; + +public class PostAdhocRequest { + + private String name; + + private String query; + + private String tableName; + + private String tableFields; + + private String email; + + private int reportRunFrequency; + + private int reportRunEvery; + + @SerializedName("isActive") + private boolean active; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getQuery() { + return query; + } + + public void setQuery(String query) { + this.query = query; + } + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + public String getTableFields() { + return tableFields; + } + + public void setTableFields(String tableFields) { + this.tableFields = tableFields; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public int getReportRunFrequency() { + return reportRunFrequency; + } + + public void setReportRunFrequency(int reportRunFrequency) { + this.reportRunFrequency = reportRunFrequency; + } + + public int getReportRunEvery() { + return reportRunEvery; + } + + public void setReportRunEvery(int reportRunEvery) { + this.reportRunEvery = reportRunEvery; + } + + public boolean isActive() { + return active; + } + + public void setActive(boolean active) { + this.active = active; + } +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostAuthenticationResponse.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostAuthenticationResponse.java new file mode 100644 index 00000000..8bb4c0e5 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostAuthenticationResponse.java @@ -0,0 +1,117 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.List; + +public class PostAuthenticationResponse { + + private String username; + + private Long userId; + + private String base64EncodedAuthenticationKey; + + private boolean authenticated; + + private Long officeId; + + private String officeName; + + private Long staffId; + + private String staffDisplayName; + + private EnumOptionData organisationalRole; + + private List roles; + + private List permissions; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public String getBase64EncodedAuthenticationKey() { + return base64EncodedAuthenticationKey; + } + + public void setBase64EncodedAuthenticationKey(String base64EncodedAuthenticationKey) { + this.base64EncodedAuthenticationKey = base64EncodedAuthenticationKey; + } + + public boolean isAuthenticated() { + return authenticated; + } + + public void setAuthenticated(boolean authenticated) { + this.authenticated = authenticated; + } + + public Long getOfficeId() { + return officeId; + } + + public void setOfficeId(Long officeId) { + this.officeId = officeId; + } + + public String getOfficeName() { + return officeName; + } + + public void setOfficeName(String officeName) { + this.officeName = officeName; + } + + public Long getStaffId() { + return staffId; + } + + public void setStaffId(Long staffId) { + this.staffId = staffId; + } + + public String getStaffDisplayName() { + return staffDisplayName; + } + + public void setStaffDisplayName(String staffDisplayName) { + this.staffDisplayName = staffDisplayName; + } + + public EnumOptionData getOrganisationalRole() { + return organisationalRole; + } + + public void setOrganisationalRole(EnumOptionData organisationalRole) { + this.organisationalRole = organisationalRole; + } + + public List getRoles() { + return roles; + } + + public void setRoles(List roles) { + this.roles = roles; + } + + public List getPermissions() { + return permissions; + } + + public void setPermissions(List permissions) { + this.permissions = permissions; + } + +} \ No newline at end of file diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostBatchesRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostBatchesRequest.java new file mode 100644 index 00000000..e290ec6e --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostBatchesRequest.java @@ -0,0 +1,92 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.ArrayList; +import java.util.List; + +public class PostBatchesRequest { + + private long requestId; + + private String relativeUrl; + + private String method; + + private List

headers = new ArrayList<>(); + + private long reference; + + private String body; + + public long getRequestId() { + return requestId; + } + + public void setRequestId(long requestId) { + this.requestId = requestId; + } + + public String getRelativeUrl() { + return relativeUrl; + } + + public void setRelativeUrl(String relativeUrl) { + this.relativeUrl = relativeUrl; + } + + public String getMethod() { + return method; + } + + public void setMethod(String method) { + this.method = method; + } + + public List
getHeaders() { + return headers; + } + + public void setHeaders(List
headers) { + this.headers = headers; + } + + public long getReference() { + return reference; + } + + public void setReference(long reference) { + this.reference = reference; + } + + public String getBody() { + return body; + } + + public void setBody(String body) { + this.body = body; + } + + public static class Header { + + private String name; + + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostCenterRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostCenterRequest.java new file mode 100644 index 00000000..7c2770b5 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostCenterRequest.java @@ -0,0 +1,122 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class PostCenterRequest { + + + // id - no used + private long id; + + /** + * officeId - mandatory + */ + private long officeId; + + /** + * name - mandatory + */ + private String name; + + /** + * active + */ + private boolean active; + + /** + * externalId + */ + private String externalId; + + /** + * activationDate - mandatory + */ + private Date activationDate; + + /** + * staffId + */ + private long staffId; + + /** + * submittedOnDate + */ + private Date submittedOnDate; + + /** + * groupMembers + */ + private List groupMembers = new ArrayList<>(); + + /** + * datatables - no used + */ + private List dataTables = new ArrayList<>(); + + public long getOfficeId() { + return officeId; + } + + public void setOfficeId(long officeId) { + this.officeId = officeId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public boolean isActive() { + return active; + } + + public void setActive(boolean active) { + this.active = active; + } + + public String getExternalId() { + return externalId; + } + + public void setExternalId(String externalId) { + this.externalId = externalId; + } + + public Date getActivationDate() { + return activationDate; + } + + public void setActivationDate(Date activationDate) { + this.activationDate = activationDate; + } + + public long getStaffId() { + return staffId; + } + + public void setStaffId(long staffId) { + this.staffId = staffId; + } + + public Date getSubmittedOnDate() { + return submittedOnDate; + } + + public void setSubmittedOnDate(Date submittedOnDate) { + this.submittedOnDate = submittedOnDate; + } + + public List getGroupMembers() { + return groupMembers; + } + + public void setGroupMembers(List groupMembers) { + this.groupMembers = groupMembers; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostChargesRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostChargesRequest.java new file mode 100644 index 00000000..c437fd01 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostChargesRequest.java @@ -0,0 +1,168 @@ +package com.angkorteam.fintech.client.dto; + +import com.angkorteam.fintech.client.enums.*; + +import java.util.Date; + +public class PostChargesRequest { + + private long incomeAccountId; + + private long taxGroupId; + + private String name; + + private double amount; + + private String currencyCode; + + private ChargeAppliesTo chargeAppliesTo; + + private ChargeTimeType chargeTimeType; + + private ChargeCalculationType chargeCalculationType; + + private ChargePaymentMode chargePaymentMode; + + private boolean penalty; + + private boolean active; + + private Date feeOnMonthDay; + + private int feeInterval; + + private double minCap; + + private double maxCap; + + private ChargeFrequency feeFrequency; + + public long getIncomeAccountId() { + return incomeAccountId; + } + + public void setIncomeAccountId(long incomeAccountId) { + this.incomeAccountId = incomeAccountId; + } + + public long getTaxGroupId() { + return taxGroupId; + } + + public void setTaxGroupId(long taxGroupId) { + this.taxGroupId = taxGroupId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public double getAmount() { + return amount; + } + + public void setAmount(double amount) { + this.amount = amount; + } + + public String getCurrencyCode() { + return currencyCode; + } + + public void setCurrencyCode(String currencyCode) { + this.currencyCode = currencyCode; + } + + public ChargeAppliesTo getChargeAppliesTo() { + return chargeAppliesTo; + } + + public void setChargeAppliesTo(ChargeAppliesTo chargeAppliesTo) { + this.chargeAppliesTo = chargeAppliesTo; + } + + public ChargeTimeType getChargeTimeType() { + return chargeTimeType; + } + + public void setChargeTimeType(ChargeTimeType chargeTimeType) { + this.chargeTimeType = chargeTimeType; + } + + public ChargeCalculationType getChargeCalculationType() { + return chargeCalculationType; + } + + public void setChargeCalculationType(ChargeCalculationType chargeCalculationType) { + this.chargeCalculationType = chargeCalculationType; + } + + public ChargePaymentMode getChargePaymentMode() { + return chargePaymentMode; + } + + public void setChargePaymentMode(ChargePaymentMode chargePaymentMode) { + this.chargePaymentMode = chargePaymentMode; + } + + public boolean isPenalty() { + return penalty; + } + + public void setPenalty(boolean penalty) { + this.penalty = penalty; + } + + public boolean isActive() { + return active; + } + + public void setActive(boolean active) { + this.active = active; + } + + public Date getFeeOnMonthDay() { + return feeOnMonthDay; + } + + public void setFeeOnMonthDay(Date feeOnMonthDay) { + this.feeOnMonthDay = feeOnMonthDay; + } + + public int getFeeInterval() { + return feeInterval; + } + + public void setFeeInterval(int feeInterval) { + this.feeInterval = feeInterval; + } + + public double getMinCap() { + return minCap; + } + + public void setMinCap(double minCap) { + this.minCap = minCap; + } + + public double getMaxCap() { + return maxCap; + } + + public void setMaxCap(double maxCap) { + this.maxCap = maxCap; + } + + public ChargeFrequency getFeeFrequency() { + return feeFrequency; + } + + public void setFeeFrequency(ChargeFrequency feeFrequency) { + this.feeFrequency = feeFrequency; + } +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostClientRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostClientRequest.java new file mode 100644 index 00000000..64a3da4c --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostClientRequest.java @@ -0,0 +1,655 @@ +package com.angkorteam.fintech.client.dto; + +import com.angkorteam.fintech.client.enums.LegalForm; +import com.google.gson.annotations.SerializedName; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +public class PostClientRequest { + + @SerializedName("isStaff") + private boolean staff; + + private long officeId; + + private long groupId; + + private long staffId; + + private long genderId; + + private long clientTypeId; + + private long clientClassificationId; + + @SerializedName("savingsProductId") + private long savingProductId; + + @SerializedName("legalFormId") + private LegalForm legalForm; + + private String accountNo; + + private String externalId; + + private String mobileNo; + + private String emailAddress; + + @SerializedName("firstname") + private String firstName; + + @SerializedName("middlename") + private String middleName; + + @SerializedName("lastname") + private String lastName; + + @SerializedName("fullname") + private String fullName; + + private Date dateOfBirth; + + private boolean active; + + private Date activationDate; + + private Date submittedOnDate; + + @SerializedName("clientNonPersonDetails") + private ClientNonPersonDetail clientNonPersonDetail; + + @SerializedName("address") + private List
address = new ArrayList<>(); + + private List familyMembers = new ArrayList<>(); + + private List datatables = new ArrayList<>(); + + public List getFamilyMembers() { + return familyMembers; + } + + public void setFamilyMembers(List familyMembers) { + this.familyMembers = familyMembers; + } + + public List getDatatables() { + return datatables; + } + + public void setDatatables(List datatables) { + this.datatables = datatables; + } + + public String getAccountNo() { + return accountNo; + } + + public void setAccountNo(String accountNo) { + this.accountNo = accountNo; + } + + public String getExternalId() { + return externalId; + } + + public void setExternalId(String externalId) { + this.externalId = externalId; + } + + public String getMobileNo() { + return mobileNo; + } + + public void setMobileNo(String mobileNo) { + this.mobileNo = mobileNo; + } + + public String getEmailAddress() { + return emailAddress; + } + + public void setEmailAddress(String emailAddress) { + this.emailAddress = emailAddress; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getMiddleName() { + return middleName; + } + + public void setMiddleName(String middleName) { + this.middleName = middleName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public Date getDateOfBirth() { + return dateOfBirth; + } + + public void setDateOfBirth(Date dateOfBirth) { + this.dateOfBirth = dateOfBirth; + } + + public Date getSubmittedOnDate() { + return submittedOnDate; + } + + public void setSubmittedOnDate(Date submittedOnDate) { + this.submittedOnDate = submittedOnDate; + } + + public long getOfficeId() { + return officeId; + } + + public void setOfficeId(long officeId) { + this.officeId = officeId; + } + + public String getFullName() { + return fullName; + } + + public void setFullName(String fullName) { + this.fullName = fullName; + } + + public long getGroupId() { + return groupId; + } + + public void setGroupId(long groupId) { + this.groupId = groupId; + } + + public boolean isActive() { + return active; + } + + public void setActive(boolean active) { + this.active = active; + } + + public Date getActivationDate() { + return activationDate; + } + + public void setActivationDate(Date activationDate) { + this.activationDate = activationDate; + } + + public boolean isStaff() { + return staff; + } + + public void setStaff(boolean staff) { + this.staff = staff; + } + + public long getStaffId() { + return staffId; + } + + public void setStaffId(long staffId) { + this.staffId = staffId; + } + + public long getGenderId() { + return genderId; + } + + public void setGenderId(long genderId) { + this.genderId = genderId; + } + + public long getClientTypeId() { + return clientTypeId; + } + + public void setClientTypeId(long clientTypeId) { + this.clientTypeId = clientTypeId; + } + + public long getClientClassificationId() { + return clientClassificationId; + } + + public void setClientClassificationId(long clientClassificationId) { + this.clientClassificationId = clientClassificationId; + } + + public long getSavingProductId() { + return savingProductId; + } + + public void setSavingProductId(long savingProductId) { + this.savingProductId = savingProductId; + } + + public LegalForm getLegalForm() { + return legalForm; + } + + public void setLegalForm(LegalForm legalForm) { + this.legalForm = legalForm; + } + + public ClientNonPersonDetail getClientNonPersonDetail() { + return clientNonPersonDetail; + } + + public void setClientNonPersonDetail(ClientNonPersonDetail clientNonPersonDetail) { + this.clientNonPersonDetail = clientNonPersonDetail; + } + + public List
getAddress() { + return address; + } + + public void setAddress(List
address) { + this.address = address; + } + + public static class ClientNonPersonDetail { + + private String incorpNumber; + + @SerializedName("remarks") + private String remarks; + + private Date incorpValidityTillDate; + + private long constitutionId; + + private long mainBusinessLineId; + + public ClientNonPersonDetail() { + } + + public ClientNonPersonDetail(String incorpNumber, String remarks, Date incorpValidityTillDate, long constitutionId, long mainBusinessLineId) { + this.incorpNumber = incorpNumber; + this.remarks = remarks; + this.incorpValidityTillDate = incorpValidityTillDate; + this.constitutionId = constitutionId; + this.mainBusinessLineId = mainBusinessLineId; + } + + public String getIncorpNumber() { + return incorpNumber; + } + + public void setIncorpNumber(String incorpNumber) { + this.incorpNumber = incorpNumber; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public Date getIncorpValidityTillDate() { + return incorpValidityTillDate; + } + + public void setIncorpValidityTillDate(Date incorpValidityTillDate) { + this.incorpValidityTillDate = incorpValidityTillDate; + } + + public long getConstitutionId() { + return constitutionId; + } + + public void setConstitutionId(long constitutionId) { + this.constitutionId = constitutionId; + } + + public long getMainBusinessLineId() { + return mainBusinessLineId; + } + + public void setMainBusinessLineId(long mainBusinessLineId) { + this.mainBusinessLineId = mainBusinessLineId; + } + + } + + public static class Address { + + private long stateProvinceId; + + private long countryId; + + private long addressTypeId; + + @SerializedName("isActive") + private boolean active; + + private String street; + + private String addressLine1; + + private String addressLine2; + + private String addressLine3; + + private String townVillage; + + private String city; + + private String countyDistrict; + + private String postalCode; + + private double latitude; + + private double longitude; + + private String createdBy; + + /** + * yyyy-MM-dd + */ + private Date createdOn; + + private String updatedBy; + + /** + * yyyy-MM-dd + */ + private Date updatedOn; + + public long getStateProvinceId() { + return stateProvinceId; + } + + public void setStateProvinceId(long stateProvinceId) { + this.stateProvinceId = stateProvinceId; + } + + public long getCountryId() { + return countryId; + } + + public void setCountryId(long countryId) { + this.countryId = countryId; + } + + public long getAddressTypeId() { + return addressTypeId; + } + + public void setAddressTypeId(long addressTypeId) { + this.addressTypeId = addressTypeId; + } + + public boolean isActive() { + return active; + } + + public void setActive(boolean active) { + this.active = active; + } + + public String getStreet() { + return street; + } + + public void setStreet(String street) { + this.street = street; + } + + public String getAddressLine1() { + return addressLine1; + } + + public void setAddressLine1(String addressLine1) { + this.addressLine1 = addressLine1; + } + + public String getAddressLine2() { + return addressLine2; + } + + public void setAddressLine2(String addressLine2) { + this.addressLine2 = addressLine2; + } + + public String getAddressLine3() { + return addressLine3; + } + + public void setAddressLine3(String addressLine3) { + this.addressLine3 = addressLine3; + } + + public String getTownVillage() { + return townVillage; + } + + public void setTownVillage(String townVillage) { + this.townVillage = townVillage; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getCountyDistrict() { + return countyDistrict; + } + + public void setCountyDistrict(String countyDistrict) { + this.countyDistrict = countyDistrict; + } + + public String getPostalCode() { + return postalCode; + } + + public void setPostalCode(String postalCode) { + this.postalCode = postalCode; + } + + public double getLatitude() { + return latitude; + } + + public void setLatitude(double latitude) { + this.latitude = latitude; + } + + public double getLongitude() { + return longitude; + } + + public void setLongitude(double longitude) { + this.longitude = longitude; + } + + public String getCreatedBy() { + return createdBy; + } + + public void setCreatedBy(String createdBy) { + this.createdBy = createdBy; + } + + public Date getCreatedOn() { + return createdOn; + } + + public void setCreatedOn(Date createdOn) { + this.createdOn = createdOn; + } + + public String getUpdatedBy() { + return updatedBy; + } + + public void setUpdatedBy(String updatedBy) { + this.updatedBy = updatedBy; + } + + public Date getUpdatedOn() { + return updatedOn; + } + + public void setUpdatedOn(Date updatedOn) { + this.updatedOn = updatedOn; + } + + } + + public static class FamilyMember { + + private String firstName; + + private String middleName; + + private String lastName; + + private String qualification; + + private String mobileNumber; + + private long age; + + private boolean dependent; + + private long relationshipId; + + private long maritalStatusId; + + private long genderId; + + private long professionId; + + private Date dateOfBirth; + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getMiddleName() { + return middleName; + } + + public void setMiddleName(String middleName) { + this.middleName = middleName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getQualification() { + return qualification; + } + + public void setQualification(String qualification) { + this.qualification = qualification; + } + + public String getMobileNumber() { + return mobileNumber; + } + + public void setMobileNumber(String mobileNumber) { + this.mobileNumber = mobileNumber; + } + + public long getAge() { + return age; + } + + public void setAge(long age) { + this.age = age; + } + + public boolean isDependent() { + return dependent; + } + + public void setDependent(boolean dependent) { + this.dependent = dependent; + } + + public long getRelationshipId() { + return relationshipId; + } + + public void setRelationshipId(long relationshipId) { + this.relationshipId = relationshipId; + } + + public long getMaritalStatusId() { + return maritalStatusId; + } + + public void setMaritalStatusId(long maritalStatusId) { + this.maritalStatusId = maritalStatusId; + } + + public long getGenderId() { + return genderId; + } + + public void setGenderId(long genderId) { + this.genderId = genderId; + } + + public long getProfessionId() { + return professionId; + } + + public void setProfessionId(long professionId) { + this.professionId = professionId; + } + + public Date getDateOfBirth() { + return dateOfBirth; + } + + public void setDateOfBirth(Date dateOfBirth) { + this.dateOfBirth = dateOfBirth; + } + + } + + + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostCodeValueRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostCodeValueRequest.java new file mode 100644 index 00000000..9d2a4a44 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostCodeValueRequest.java @@ -0,0 +1,59 @@ +package com.angkorteam.fintech.client.dto; + +import com.google.gson.annotations.SerializedName; + +public class PostCodeValueRequest { + + private String name; + + private long position; + + private String description; + + @SerializedName("isActive") + private boolean active; + + @SerializedName("isMandatory") + private boolean mandatory; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public long getPosition() { + return position; + } + + public void setPosition(long position) { + this.position = position; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public boolean isActive() { + return active; + } + + public void setActive(boolean active) { + this.active = active; + } + + public boolean isMandatory() { + return mandatory; + } + + public void setMandatory(boolean mandatory) { + this.mandatory = mandatory; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostDataTableRegisterRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostDataTableRegisterRequest.java new file mode 100644 index 00000000..faac1549 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostDataTableRegisterRequest.java @@ -0,0 +1,17 @@ +package com.angkorteam.fintech.client.dto; + +import com.angkorteam.fintech.client.renums.DataTableCategoryEnum; + +public class PostDataTableRegisterRequest { + + private DataTableCategoryEnum category; + + public DataTableCategoryEnum getCategory() { + return category; + } + + public void setCategory(DataTableCategoryEnum category) { + this.category = category; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostDataTableRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostDataTableRequest.java new file mode 100644 index 00000000..63a38285 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostDataTableRequest.java @@ -0,0 +1,151 @@ +package com.angkorteam.fintech.client.dto; + +import com.angkorteam.fintech.client.enums.TableTypeEnum; + +import java.util.ArrayList; +import java.util.List; + +public class PostDataTableRequest { + + private String datatableName; + + private TableTypeEnum apptableName; + + private boolean multiRow; + + private List columns = new ArrayList<>(); + + public String getDatatableName() { + return datatableName; + } + + public void setDatatableName(String datatableName) { + this.datatableName = datatableName; + } + + public TableTypeEnum getApptableName() { + return apptableName; + } + + public void setApptableName(TableTypeEnum apptableName) { + this.apptableName = apptableName; + } + + public boolean isMultiRow() { + return multiRow; + } + + public void setMultiRow(boolean multiRow) { + this.multiRow = multiRow; + } + + public List getColumns() { + return columns; + } + + public void setColumns(List columns) { + this.columns = columns; + } + + public static class Column { + + private String type; + + private String name; + + private int length; + + private String code; + + private boolean mandatory; + + private Column() { + } + + public static Column string(String name, boolean mandatory, int length) { + Column column = new Column(); + column.type = "String"; + column.name = name; + column.mandatory = mandatory; + column.length = length; + return column; + } + + public static Column number(String name, boolean mandatory) { + Column column = new Column(); + column.type = "Number"; + column.name = name; + column.mandatory = mandatory; + return column; + } + + public static Column yesno(String name, boolean mandatory) { + Column column = new Column(); + column.type = "Boolean"; + column.name = name; + column.mandatory = mandatory; + return column; + } + + public static Column decimal(String name, boolean mandatory) { + Column column = new Column(); + column.type = "Decimal"; + column.name = name; + column.mandatory = mandatory; + return column; + } + + public static Column date(String name, boolean mandatory) { + Column column = new Column(); + column.type = "Date"; + column.name = name; + column.mandatory = mandatory; + return column; + } + + public static Column datetime(String name, boolean mandatory) { + Column column = new Column(); + column.type = "DateTime"; + column.name = name; + column.mandatory = mandatory; + return column; + } + + public static Column text(String name, boolean mandatory) { + Column column = new Column(); + column.type = "Text"; + column.name = name; + column.mandatory = mandatory; + return column; + } + + public static Column dropdown(String name, boolean mandatory, String code) { + Column column = new Column(); + column.type = "DropDown"; + column.name = name; + column.mandatory = mandatory; + column.code = code; + return column; + } + + public String getType() { + return type; + } + + public String getName() { + return name; + } + + public int getLength() { + return length; + } + + public String getCode() { + return code; + } + + public boolean isMandatory() { + return mandatory; + } + } +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostDatatableEntityCheckRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostDatatableEntityCheckRequest.java new file mode 100644 index 00000000..ae236104 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostDatatableEntityCheckRequest.java @@ -0,0 +1,58 @@ +package com.angkorteam.fintech.client.dto; + +import com.angkorteam.fintech.client.enums.EntityStatusEnum; +import com.angkorteam.fintech.client.enums.EntityTypeEnum; + +public class PostDatatableEntityCheckRequest { + + private String datatableName; + + private EntityTypeEnum entity; + + private long productId; + + private EntityStatusEnum status; + + private boolean systemDefined; + + public String getDatatableName() { + return datatableName; + } + + public void setDatatableName(String datatableName) { + this.datatableName = datatableName; + } + + public EntityTypeEnum getEntity() { + return entity; + } + + public void setEntity(EntityTypeEnum entity) { + this.entity = entity; + } + + public long getProductId() { + return productId; + } + + public void setProductId(long productId) { + this.productId = productId; + } + + public EntityStatusEnum getStatus() { + return status; + } + + public void setStatus(EntityStatusEnum status) { + this.status = status; + } + + public boolean isSystemDefined() { + return systemDefined; + } + + public void setSystemDefined(boolean systemDefined) { + this.systemDefined = systemDefined; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostEmailCampaignActivationRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostEmailCampaignActivationRequest.java new file mode 100644 index 00000000..03c09f2f --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostEmailCampaignActivationRequest.java @@ -0,0 +1,17 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.Date; + +public class PostEmailCampaignActivationRequest { + + private Date activationDate; + + public Date getActivationDate() { + return activationDate; + } + + public void setActivationDate(Date activationDate) { + this.activationDate = activationDate; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostEmailCampaignCloseRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostEmailCampaignCloseRequest.java new file mode 100644 index 00000000..cc3c5a82 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostEmailCampaignCloseRequest.java @@ -0,0 +1,17 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.Date; + +public class PostEmailCampaignCloseRequest { + + private Date closureDate; + + public Date getClosureDate() { + return closureDate; + } + + public void setClosureDate(Date closureDate) { + this.closureDate = closureDate; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostEmailCampaignRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostEmailCampaignRequest.java new file mode 100644 index 00000000..2276aedc --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostEmailCampaignRequest.java @@ -0,0 +1,127 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.Date; + +public class PostEmailCampaignRequest { + + private long businessRuleId; + + private long stretchyReportId; + + private String campaignName; + + private long campaignType; + + private String paramValue; + + private String emailSubject; + + private String emailMessage; + + private String stretchyReportParamMap; + + private int emailAttachmentFileFormatId; + + private Date submittedOnDate; + + private String recurrence; + + private Date recurrenceStartDate; + + public long getBusinessRuleId() { + return businessRuleId; + } + + public void setBusinessRuleId(long businessRuleId) { + this.businessRuleId = businessRuleId; + } + + public long getStretchyReportId() { + return stretchyReportId; + } + + public void setStretchyReportId(long stretchyReportId) { + this.stretchyReportId = stretchyReportId; + } + + public String getCampaignName() { + return campaignName; + } + + public void setCampaignName(String campaignName) { + this.campaignName = campaignName; + } + + public long getCampaignType() { + return campaignType; + } + + public void setCampaignType(long campaignType) { + this.campaignType = campaignType; + } + + public String getParamValue() { + return paramValue; + } + + public void setParamValue(String paramValue) { + this.paramValue = paramValue; + } + + public String getEmailSubject() { + return emailSubject; + } + + public void setEmailSubject(String emailSubject) { + this.emailSubject = emailSubject; + } + + public String getEmailMessage() { + return emailMessage; + } + + public void setEmailMessage(String emailMessage) { + this.emailMessage = emailMessage; + } + + public String getStretchyReportParamMap() { + return stretchyReportParamMap; + } + + public void setStretchyReportParamMap(String stretchyReportParamMap) { + this.stretchyReportParamMap = stretchyReportParamMap; + } + + public int getEmailAttachmentFileFormatId() { + return emailAttachmentFileFormatId; + } + + public void setEmailAttachmentFileFormatId(int emailAttachmentFileFormatId) { + this.emailAttachmentFileFormatId = emailAttachmentFileFormatId; + } + + public Date getSubmittedOnDate() { + return submittedOnDate; + } + + public void setSubmittedOnDate(Date submittedOnDate) { + this.submittedOnDate = submittedOnDate; + } + + public String getRecurrence() { + return recurrence; + } + + public void setRecurrence(String recurrence) { + this.recurrence = recurrence; + } + + public Date getRecurrenceStartDate() { + return recurrenceStartDate; + } + + public void setRecurrenceStartDate(Date recurrenceStartDate) { + this.recurrenceStartDate = recurrenceStartDate; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostEmailRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostEmailRequest.java new file mode 100644 index 00000000..f4b2f92e --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostEmailRequest.java @@ -0,0 +1,107 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.Date; + +public class PostEmailRequest { + + private String name; + + private long groupId; + + private long clientId; + + private long staffId; + + private String emailMessage; + + private String emailSubject; + + private Date startDateTime; + + private long emailAttachmentFileFormatId; + + private String emailRecipients; + + private long stretchyReportId; + + public long getStretchyReportId() { + return stretchyReportId; + } + + public void setStretchyReportId(long stretchyReportId) { + this.stretchyReportId = stretchyReportId; + } + + public String getEmailRecipients() { + return emailRecipients; + } + + public void setEmailRecipients(String emailRecipients) { + this.emailRecipients = emailRecipients; + } + + public long getEmailAttachmentFileFormatId() { + return emailAttachmentFileFormatId; + } + + public void setEmailAttachmentFileFormatId(long emailAttachmentFileFormatId) { + this.emailAttachmentFileFormatId = emailAttachmentFileFormatId; + } + + public Date getStartDateTime() { + return startDateTime; + } + + public void setStartDateTime(Date startDateTime) { + this.startDateTime = startDateTime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmailSubject() { + return emailSubject; + } + + public void setEmailSubject(String emailSubject) { + this.emailSubject = emailSubject; + } + + public long getGroupId() { + return groupId; + } + + public void setGroupId(long groupId) { + this.groupId = groupId; + } + + public long getClientId() { + return clientId; + } + + public void setClientId(long clientId) { + this.clientId = clientId; + } + + public long getStaffId() { + return staffId; + } + + public void setStaffId(long staffId) { + this.staffId = staffId; + } + + public String getEmailMessage() { + return emailMessage; + } + + public void setEmailMessage(String emailMessage) { + this.emailMessage = emailMessage; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostFinancialActivityAccountsRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostFinancialActivityAccountsRequest.java new file mode 100644 index 00000000..12ee45ea --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostFinancialActivityAccountsRequest.java @@ -0,0 +1,29 @@ +package com.angkorteam.fintech.client.dto; + +import com.angkorteam.fintech.client.renums.FinancialActivity; +import com.google.gson.annotations.SerializedName; + +public class PostFinancialActivityAccountsRequest { + + @SerializedName("financialActivityId") + private FinancialActivity financialActivity; + + private long glAccountId; + + public FinancialActivity getFinancialActivity() { + return financialActivity; + } + + public void setFinancialActivity(FinancialActivity financialActivity) { + this.financialActivity = financialActivity; + } + + public long getGlAccountId() { + return glAccountId; + } + + public void setGlAccountId(long glAccountId) { + this.glAccountId = glAccountId; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostFloatingRatesRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostFloatingRatesRequest.java new file mode 100644 index 00000000..0bb72310 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostFloatingRatesRequest.java @@ -0,0 +1,97 @@ +package com.angkorteam.fintech.client.dto; + +import com.google.gson.annotations.SerializedName; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class PostFloatingRatesRequest { + + private String name; + + @SerializedName("isBaseLendingRate") + private boolean baseLendingRate; + + @SerializedName("isActive") + private boolean active; + + private List ratePeriods = new ArrayList<>(); + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public boolean isBaseLendingRate() { + return baseLendingRate; + } + + public void setBaseLendingRate(boolean baseLendingRate) { + this.baseLendingRate = baseLendingRate; + } + + public boolean isActive() { + return active; + } + + public void setActive(boolean active) { + this.active = active; + } + + public List getRatePeriods() { + return ratePeriods; + } + + public void setRatePeriods(List ratePeriods) { + this.ratePeriods = ratePeriods; + } + + public static class RatePeriod { + + private Date fromDate; + + private double interestRate; + + @SerializedName("isDifferentialToBaseLendingRate") + private boolean differentialToBaseLendingRate; + + public RatePeriod() { + } + + public RatePeriod(Date fromDate, double interestRate, boolean differentialToBaseLendingRate) { + this.fromDate = fromDate; + this.interestRate = interestRate; + this.differentialToBaseLendingRate = differentialToBaseLendingRate; + } + + public Date getFromDate() { + return fromDate; + } + + public void setFromDate(Date fromDate) { + this.fromDate = fromDate; + } + + public double getInterestRate() { + return interestRate; + } + + public void setInterestRate(double interestRate) { + this.interestRate = interestRate; + } + + public boolean isDifferentialToBaseLendingRate() { + return differentialToBaseLendingRate; + } + + public void setDifferentialToBaseLendingRate(boolean differentialToBaseLendingRate) { + this.differentialToBaseLendingRate = differentialToBaseLendingRate; + } + + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostFundsRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostFundsRequest.java new file mode 100644 index 00000000..09ad1d4c --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostFundsRequest.java @@ -0,0 +1,25 @@ +package com.angkorteam.fintech.client.dto; + +public class PostFundsRequest { + + private String name; + + private String externalId; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getExternalId() { + return externalId; + } + + public void setExternalId(String externalId) { + this.externalId = externalId; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostGLAccountsRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostGLAccountsRequest.java new file mode 100644 index 00000000..129d762f --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostGLAccountsRequest.java @@ -0,0 +1,97 @@ +package com.angkorteam.fintech.client.dto; + +import com.angkorteam.fintech.client.enums.AccountUsage; +import com.angkorteam.fintech.client.renums.GLAccountType; + +public class PostGLAccountsRequest { + + private String name; + + private String glCode; + + private boolean manualEntriesAllowed; + + private GLAccountType type; + + private int tagId; + + private long parentId; + + private AccountUsage usage; + + private String description; + + private boolean disabled; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getGlCode() { + return glCode; + } + + public void setGlCode(String glCode) { + this.glCode = glCode; + } + + public boolean isManualEntriesAllowed() { + return manualEntriesAllowed; + } + + public void setManualEntriesAllowed(boolean manualEntriesAllowed) { + this.manualEntriesAllowed = manualEntriesAllowed; + } + + public GLAccountType getType() { + return type; + } + + public void setType(GLAccountType type) { + this.type = type; + } + + public int getTagId() { + return tagId; + } + + public void setTagId(int tagId) { + this.tagId = tagId; + } + + public long getParentId() { + return parentId; + } + + public void setParentId(long parentId) { + this.parentId = parentId; + } + + public AccountUsage getUsage() { + return usage; + } + + public void setUsage(AccountUsage usage) { + this.usage = usage; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public boolean isDisabled() { + return disabled; + } + + public void setDisabled(boolean disabled) { + this.disabled = disabled; + } +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostGLClosureRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostGLClosureRequest.java new file mode 100644 index 00000000..1395f4e0 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostGLClosureRequest.java @@ -0,0 +1,40 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.Date; + +public class PostGLClosureRequest { + + private long officeId; + + private Date closingDate; + + /** + * limit to 500 + */ + private String comments; + + public long getOfficeId() { + return officeId; + } + + public void setOfficeId(long officeId) { + this.officeId = officeId; + } + + public Date getClosingDate() { + return closingDate; + } + + public void setClosingDate(Date closingDate) { + this.closingDate = closingDate; + } + + public String getComments() { + return comments; + } + + public void setComments(String comments) { + this.comments = comments; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostGroupRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostGroupRequest.java new file mode 100644 index 00000000..3cd4014e --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostGroupRequest.java @@ -0,0 +1,149 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class PostGroupRequest { + + /** + * id - no used + */ + private long id; + + /** + * name - mandatory + */ + private String name; + + /** + * externalId + */ + private String externalId; + + /** + * centerId + */ + private long centerId; + + /** + * officeId - mandatory + */ + private long officeId; + + /** + * staffId + */ + private long staffId; + + /** + * active + */ + private boolean active; + + /** + * activationDate - mandatory + */ + private Date activationDate; + + /** + * clientMembers + */ + private List clientMembers = new ArrayList<>(); + + /** + * collectionMeetingCalendar - no used + */ + private String collectionMeetingCalendar; + + /** + * submittedOnDate + */ + private Date submittedOnDate; + + /** + * dataTables + */ + private List dataTables = new ArrayList<>(); + + public long getOfficeId() { + return officeId; + } + + public void setOfficeId(long officeId) { + this.officeId = officeId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public boolean isActive() { + return active; + } + + public void setActive(boolean active) { + this.active = active; + } + + public String getExternalId() { + return externalId; + } + + public void setExternalId(String externalId) { + this.externalId = externalId; + } + + public Date getActivationDate() { + return activationDate; + } + + public void setActivationDate(Date activationDate) { + this.activationDate = activationDate; + } + + public long getStaffId() { + return staffId; + } + + public void setStaffId(long staffId) { + this.staffId = staffId; + } + + public Date getSubmittedOnDate() { + return submittedOnDate; + } + + public void setSubmittedOnDate(Date submittedOnDate) { + this.submittedOnDate = submittedOnDate; + } + + public List getClientMembers() { + return clientMembers; + } + + public void setClientMembers(List clientMembers) { + this.clientMembers = clientMembers; + } + + public List getDataTables() { + return dataTables; + } + + public void setDataTables(List dataTables) { + this.dataTables = dataTables; + } + + public long getCenterId() { + return centerId; + } + + public void setCenterId(long centerId) { + this.centerId = centerId; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostHolidaysRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostHolidaysRequest.java new file mode 100644 index 00000000..24dab3a4 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostHolidaysRequest.java @@ -0,0 +1,95 @@ +package com.angkorteam.fintech.client.dto; + +import com.angkorteam.fintech.client.enums.ReschedulingType; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class PostHolidaysRequest { + + private String name; + + private Date fromDate; + + private Date toDate; + + private ReschedulingType reschedulingType; + + private String description; + + private Date repaymentsRescheduledTo; + + private List offices = new ArrayList<>(); + + public List getOffices() { + return offices; + } + + public void setOffices(List offices) { + this.offices = offices; + } + + public Date getRepaymentsRescheduledTo() { + return repaymentsRescheduledTo; + } + + public void setRepaymentsRescheduledTo(Date repaymentsRescheduledTo) { + this.repaymentsRescheduledTo = repaymentsRescheduledTo; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Date getFromDate() { + return fromDate; + } + + public void setFromDate(Date fromDate) { + this.fromDate = fromDate; + } + + public Date getToDate() { + return toDate; + } + + public void setToDate(Date toDate) { + this.toDate = toDate; + } + + public ReschedulingType getReschedulingType() { + return reschedulingType; + } + + public void setReschedulingType(ReschedulingType reschedulingType) { + this.reschedulingType = reschedulingType; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public static class Office { + + private final long officeId; + + public Office(long officeId) { + this.officeId = officeId; + } + + public long getOfficeId() { + return officeId; + } + + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostHookRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostHookRequest.java new file mode 100644 index 00000000..f52b5f88 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostHookRequest.java @@ -0,0 +1,101 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class PostHookRequest { + + private String name; + + private Map config = new HashMap<>(); + + private long templateId; + + private String displayName; + + private boolean active; + + private List events = new ArrayList<>(); + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Map getConfig() { + return config; + } + + public void setConfig(Map config) { + this.config = config; + } + + public long getTemplateId() { + return templateId; + } + + public void setTemplateId(long templateId) { + this.templateId = templateId; + } + + public String getDisplayName() { + return displayName; + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + + public boolean isActive() { + return active; + } + + public void setActive(boolean active) { + this.active = active; + } + + public List getEvents() { + return events; + } + + public void setEvents(List events) { + this.events = events; + } + + public static class Event { + + private String entityName; + + private String actionName; + + public Event() { + } + + public Event(String entityName, String actionName) { + this.entityName = entityName; + this.actionName = actionName; + } + + public String getEntityName() { + return entityName; + } + + public void setEntityName(String entityName) { + this.entityName = entityName; + } + + public String getActionName() { + return actionName; + } + + public void setActionName(String actionName) { + this.actionName = actionName; + } + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostJournalEntriesRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostJournalEntriesRequest.java new file mode 100644 index 00000000..d0ab2799 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostJournalEntriesRequest.java @@ -0,0 +1,206 @@ +package com.angkorteam.fintech.client.dto; + +import com.google.gson.annotations.SerializedName; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class PostJournalEntriesRequest { + + private long officeId; + + private long accountingRule; + + private String currencyCode; + + private long paymentTypeId; + + private String accountNumber; + + private String checkNumber; + + private String routingCode; + + private String receiptNumber; + + private String bankNumber; + + private String referenceNumber; + + private Date transactionDate; + + private double amount; + + private List debits = new ArrayList<>(); + + private List credits = new ArrayList<>(); + + @SerializedName("comments") + private String comment; + + public double getAmount() { + return amount; + } + + public void setAmount(double amount) { + this.amount = amount; + } + + public List getDebits() { + return debits; + } + + public void setDebits(List debits) { + this.debits = debits; + } + + public List getCredits() { + return credits; + } + + public void setCredits(List credits) { + this.credits = credits; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + public long getOfficeId() { + return officeId; + } + + public void setOfficeId(long officeId) { + this.officeId = officeId; + } + + public long getAccountingRule() { + return accountingRule; + } + + public void setAccountingRule(long accountingRule) { + this.accountingRule = accountingRule; + } + + public String getCurrencyCode() { + return currencyCode; + } + + public void setCurrencyCode(String currencyCode) { + this.currencyCode = currencyCode; + } + + public long getPaymentTypeId() { + return paymentTypeId; + } + + public void setPaymentTypeId(long paymentTypeId) { + this.paymentTypeId = paymentTypeId; + } + + public String getAccountNumber() { + return accountNumber; + } + + public void setAccountNumber(String accountNumber) { + this.accountNumber = accountNumber; + } + + public String getCheckNumber() { + return checkNumber; + } + + public void setCheckNumber(String checkNumber) { + this.checkNumber = checkNumber; + } + + public String getRoutingCode() { + return routingCode; + } + + public void setRoutingCode(String routingCode) { + this.routingCode = routingCode; + } + + public String getReceiptNumber() { + return receiptNumber; + } + + public void setReceiptNumber(String receiptNumber) { + this.receiptNumber = receiptNumber; + } + + public String getBankNumber() { + return bankNumber; + } + + public void setBankNumber(String bankNumber) { + this.bankNumber = bankNumber; + } + + public String getReferenceNumber() { + return referenceNumber; + } + + public void setReferenceNumber(String referenceNumber) { + this.referenceNumber = referenceNumber; + } + + public Date getTransactionDate() { + return transactionDate; + } + + public void setTransactionDate(Date transactionDate) { + this.transactionDate = transactionDate; + } + + public static class TransactionEntry { + + private long glAccountId; + + private double amount; + + @SerializedName("comments") + private String comment; + + public TransactionEntry() { + } + + public TransactionEntry(long glAccountId, double amount, String comment) { + this.glAccountId = glAccountId; + this.amount = amount; + this.comment = comment; + } + + public long getGlAccountId() { + return glAccountId; + } + + public void setGlAccountId(long glAccountId) { + this.glAccountId = glAccountId; + } + + public double getAmount() { + return amount; + } + + public void setAmount(double amount) { + this.amount = amount; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostJournalEntryDefineRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostJournalEntryDefineRequest.java new file mode 100644 index 00000000..937bc92e --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostJournalEntryDefineRequest.java @@ -0,0 +1,32 @@ +package com.angkorteam.fintech.client.dto; + +import com.google.gson.annotations.SerializedName; + +import java.util.Date; + +public class PostJournalEntryDefineRequest { + + private Date transactionDate; + + private long officeId; + + private String currencyCode; + + @SerializedName("comments") + private String comment; + + private String referenceNumber; + + private int accountingRule; + + private long paymentTypeId; + + private double credits; + + private double debits; + + private double amount; + + + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostJournalEntryReverseRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostJournalEntryReverseRequest.java new file mode 100644 index 00000000..bbf56532 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostJournalEntryReverseRequest.java @@ -0,0 +1,15 @@ +package com.angkorteam.fintech.client.dto; + +public class PostJournalEntryReverseRequest { + + private String comments; + + public String getComments() { + return comments; + } + + public void setComments(String comments) { + this.comments = comments; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostJournalEntryUpdateRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostJournalEntryUpdateRequest.java new file mode 100644 index 00000000..ed3e37df --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostJournalEntryUpdateRequest.java @@ -0,0 +1,15 @@ +package com.angkorteam.fintech.client.dto; + +public class PostJournalEntryUpdateRequest { + + private long officeId; + + public long getOfficeId() { + return officeId; + } + + public void setOfficeId(long officeId) { + this.officeId = officeId; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostLookupTableRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostLookupTableRequest.java new file mode 100644 index 00000000..930155b7 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostLookupTableRequest.java @@ -0,0 +1,89 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.ArrayList; +import java.util.List; + +public class PostLookupTableRequest { + + private String key; + + private long description; + + private List entries = new ArrayList<>(); + + public PostLookupTableRequest() { + } + + public PostLookupTableRequest(final String key, final long description, final List entries) { + this.key = key; + this.description = description; + this.entries = entries; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public long getDescription() { + return description; + } + + public void setDescription(long description) { + this.description = description; + } + + public List getEntries() { + return entries; + } + + public void setEntries(List entries) { + this.entries = entries; + } + + public static class LookupTableEntry { + + private int valueFrom; + + private int valueTo; + + private double score; + + public LookupTableEntry() { + } + + public LookupTableEntry(final int valueFrom, final int valueTo, final double score) { + this.valueFrom = valueFrom; + this.valueTo = valueTo; + this.score = score; + } + + public int getValueFrom() { + return valueFrom; + } + + public void setValueFrom(int valueFrom) { + this.valueFrom = valueFrom; + } + + public int getValueTo() { + return valueTo; + } + + public void setValueTo(int valueTo) { + this.valueTo = valueTo; + } + + public double getScore() { + return score; + } + + public void setScore(double score) { + this.score = score; + } + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostOfficeRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostOfficeRequest.java new file mode 100644 index 00000000..d79701ec --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostOfficeRequest.java @@ -0,0 +1,53 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.Date; + +public class PostOfficeRequest { + + /** + * limit to 100 + */ + private String name; + + private Date openingDate; + + private long parentId; + + /** + * limit to 100 + */ + private String externalId; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Date getOpeningDate() { + return openingDate; + } + + public void setOpeningDate(Date openingDate) { + this.openingDate = openingDate; + } + + public long getParentId() { + return parentId; + } + + public void setParentId(long parentId) { + this.parentId = parentId; + } + + public String getExternalId() { + return externalId; + } + + public void setExternalId(String externalId) { + this.externalId = externalId; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostOfficeTransactionRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostOfficeTransactionRequest.java new file mode 100644 index 00000000..235785e3 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostOfficeTransactionRequest.java @@ -0,0 +1,76 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.Date; + +public class PostOfficeTransactionRequest { + + private Long fromOfficeId; + + private Long toOfficeId; + + private Date transactionDate; + + /** + * limit to 3 + */ + private String currencyCode; + + /** + * greater than 0 + */ + private double transactionAmount; + + /** + * limit to 100 + */ + private String description; + + public Long getFromOfficeId() { + return fromOfficeId; + } + + public void setFromOfficeId(Long fromOfficeId) { + this.fromOfficeId = fromOfficeId; + } + + public Long getToOfficeId() { + return toOfficeId; + } + + public void setToOfficeId(Long toOfficeId) { + this.toOfficeId = toOfficeId; + } + + public Date getTransactionDate() { + return transactionDate; + } + + public void setTransactionDate(Date transactionDate) { + this.transactionDate = transactionDate; + } + + public String getCurrencyCode() { + return currencyCode; + } + + public void setCurrencyCode(String currencyCode) { + this.currencyCode = currencyCode; + } + + public double getTransactionAmount() { + return transactionAmount; + } + + public void setTransactionAmount(double transactionAmount) { + this.transactionAmount = transactionAmount; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostPaymentTypesRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostPaymentTypesRequest.java new file mode 100644 index 00000000..e129f14c --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostPaymentTypesRequest.java @@ -0,0 +1,48 @@ +package com.angkorteam.fintech.client.dto; + +import com.google.gson.annotations.SerializedName; + +public class PostPaymentTypesRequest { + + private String name; + + private String description; + + @SerializedName("isCashPayment") + private boolean cashPayment; + + private int position; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public boolean isCashPayment() { + return cashPayment; + } + + public void setCashPayment(boolean cashPayment) { + this.cashPayment = cashPayment; + } + + public int getPosition() { + return position; + } + + public void setPosition(int position) { + this.position = position; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostProvisioningEntriesRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostProvisioningEntriesRequest.java new file mode 100644 index 00000000..71b029c4 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostProvisioningEntriesRequest.java @@ -0,0 +1,30 @@ +package com.angkorteam.fintech.client.dto; + +import com.google.gson.annotations.SerializedName; + +import java.util.Date; + +public class PostProvisioningEntriesRequest { + + private Date date; + + @SerializedName("createjournalentries") + private boolean createJournalEntry; + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + public boolean isCreateJournalEntry() { + return createJournalEntry; + } + + public void setCreateJournalEntry(boolean createJournalEntry) { + this.createJournalEntry = createJournalEntry; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostRunAccrualRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostRunAccrualRequest.java new file mode 100644 index 00000000..433c73ff --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostRunAccrualRequest.java @@ -0,0 +1,20 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.Date; + +public class PostRunAccrualRequest { + + /** + * required + */ + private Date tillDate; + + public Date getTillDate() { + return tillDate; + } + + public void setTillDate(Date tillDate) { + this.tillDate = tillDate; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostScoreRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostScoreRequest.java new file mode 100644 index 00000000..163fdd4b --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostScoreRequest.java @@ -0,0 +1,160 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class PostScoreRequest { + + private long id; + + private long userId; + + private String username; + + private long clientId; + + private long surveyId; + + private String surveyName; + + private List scorecardValues = new ArrayList<>(); + + public PostScoreRequest() { + } + + private PostScoreRequest(final long id, final long userId, final String username, final long surveyId, final String surveyName, + final long clientId) { + this.id = id; + this.userId = userId; + this.clientId = clientId; + this.scorecardValues = new ArrayList<>(); + this.surveyId = surveyId; + this.surveyName = surveyName; + this.username = username; + } + + public static PostScoreRequest instance(final long id, final long userId, final String username, final long surveyId, + final String surveyName, final long clientId) { + return new PostScoreRequest(id, userId, username, surveyId, surveyName, clientId); + } + + public long getUserId() { + return userId; + } + + public long getClientId() { + return clientId; + } + + public List getScorecardValues() { + return scorecardValues; + } + + public void setScorecardValues(List scorecardValues) { + if (this.scorecardValues == null) { + this.scorecardValues = new ArrayList<>(); + } + this.scorecardValues.addAll(scorecardValues); + } + + public String getUsername() { + return this.username; + } + + public long getSurveyId() { + return this.surveyId; + } + + public String getSurveyName() { + return this.surveyName; + } + + public long getId() { + return this.id; + } + + public void setId(long id) { + this.id = id; + } + + public void setUserId(long userId) { + this.userId = userId; + } + + public void setUsername(String username) { + this.username = username; + } + + public void setClientId(long clientId) { + this.clientId = clientId; + } + + public void setSurveyId(long surveyId) { + this.surveyId = surveyId; + } + + public void setSurveyName(String surveyName) { + this.surveyName = surveyName; + } + + public static class ScorecardValue { + + private long questionId; + + private long responseId; + + private int value; + + private Date createdOn; + + public ScorecardValue() { + } + + private ScorecardValue(final long questionId, final long responseId, final int value, final Date createdOn) { + this.questionId = questionId; + this.responseId = responseId; + this.value = value; + this.createdOn = createdOn; + } + + public static ScorecardValue instance(final long questionId, final long responseId, final int value, final Date createdOn) { + return new ScorecardValue(questionId, responseId, value, createdOn); + } + + public long getQuestionId() { + return questionId; + } + + public void setQuestionId(long questionId) { + this.questionId = questionId; + } + + public long getResponseId() { + return responseId; + } + + public void setResponseId(long responseId) { + this.responseId = responseId; + } + + public int getValue() { + return value; + } + + public void setValue(int value) { + this.value = value; + } + + public Date getCreatedOn() { + return this.createdOn; + } + + public void setCreatedOn(Date createdOn) { + this.createdOn = createdOn; + } + + } + + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostStaffRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostStaffRequest.java new file mode 100644 index 00000000..0cfa9703 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostStaffRequest.java @@ -0,0 +1,93 @@ +package com.angkorteam.fintech.client.dto; + +import com.google.gson.annotations.SerializedName; + +import java.util.Date; + +public class PostStaffRequest { + + private long officeId; + + @SerializedName("firstname") + private String firstName; + + @SerializedName("lastname") + private String lastName; + + private String externalId; + + private String mobileNo; + + @SerializedName("isLoanOfficer") + private boolean loanOfficer; + + @SerializedName("isActive") + private boolean active; + + private Date joiningDate; + + public long getOfficeId() { + return officeId; + } + + public void setOfficeId(long officeId) { + this.officeId = officeId; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getExternalId() { + return externalId; + } + + public void setExternalId(String externalId) { + this.externalId = externalId; + } + + public String getMobileNo() { + return mobileNo; + } + + public void setMobileNo(String mobileNo) { + this.mobileNo = mobileNo; + } + + public boolean isLoanOfficer() { + return loanOfficer; + } + + public void setLoanOfficer(boolean loanOfficer) { + this.loanOfficer = loanOfficer; + } + + public boolean isActive() { + return active; + } + + public void setActive(boolean active) { + this.active = active; + } + + public Date getJoiningDate() { + return joiningDate; + } + + public void setJoiningDate(Date joiningDate) { + this.joiningDate = joiningDate; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostTaxesComponentsRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostTaxesComponentsRequest.java new file mode 100644 index 00000000..ff708336 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostTaxesComponentsRequest.java @@ -0,0 +1,79 @@ +package com.angkorteam.fintech.client.dto; + +import com.angkorteam.fintech.client.renums.GLAccountType; + +import java.util.Date; + +public class PostTaxesComponentsRequest { + + private String name; + + private double percentage; + + private GLAccountType creditAccountType; + + private long creditAccountId; + + private GLAccountType debitAccountType; + + private long debitAccountId; + + private Date startDate; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public double getPercentage() { + return percentage; + } + + public void setPercentage(double percentage) { + this.percentage = percentage; + } + + public GLAccountType getCreditAccountType() { + return creditAccountType; + } + + public void setCreditAccountType(GLAccountType creditAccountType) { + this.creditAccountType = creditAccountType; + } + + public long getCreditAccountId() { + return creditAccountId; + } + + public void setCreditAccountId(long creditAccountId) { + this.creditAccountId = creditAccountId; + } + + public GLAccountType getDebitAccountType() { + return debitAccountType; + } + + public void setDebitAccountType(GLAccountType debitAccountType) { + this.debitAccountType = debitAccountType; + } + + public long getDebitAccountId() { + return debitAccountId; + } + + public void setDebitAccountId(long debitAccountId) { + this.debitAccountId = debitAccountId; + } + + public Date getStartDate() { + return startDate; + } + + public void setStartDate(Date startDate) { + this.startDate = startDate; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostTaxesGroupRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostTaxesGroupRequest.java new file mode 100644 index 00000000..39e55cf7 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostTaxesGroupRequest.java @@ -0,0 +1,83 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class PostTaxesGroupRequest { + + private String name; + + private List taxComponents = new ArrayList<>(); + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List getTaxComponents() { + return taxComponents; + } + + public void setTaxComponents(List taxComponents) { + this.taxComponents = taxComponents; + } + + public static class TaxComponent { + + private long id; + + private long taxComponentId; + + private Date startDate; + + private Date endDate; + + public TaxComponent() { + } + + public TaxComponent(long id, long taxComponentId, Date startDate, Date endDate) { + this.id = id; + this.taxComponentId = taxComponentId; + this.startDate = startDate; + this.endDate = endDate; + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public long getTaxComponentId() { + return taxComponentId; + } + + public void setTaxComponentId(long taxComponentId) { + this.taxComponentId = taxComponentId; + } + + public Date getStartDate() { + return startDate; + } + + public void setStartDate(Date startDate) { + this.startDate = startDate; + } + + public Date getEndDate() { + return endDate; + } + + public void setEndDate(Date endDate) { + this.endDate = endDate; + } + + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostTellersRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostTellersRequest.java new file mode 100644 index 00000000..268e7079 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostTellersRequest.java @@ -0,0 +1,69 @@ +package com.angkorteam.fintech.client.dto; + +import com.angkorteam.fintech.client.renums.TellerStatus; + +import java.util.Date; + +public class PostTellersRequest { + + private long officeId; + + private String name; + + private String description; + + private Date startDate; + + private Date endDate; + + private TellerStatus status; + + public long getOfficeId() { + return officeId; + } + + public void setOfficeId(long officeId) { + this.officeId = officeId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Date getStartDate() { + return startDate; + } + + public void setStartDate(Date startDate) { + this.startDate = startDate; + } + + public Date getEndDate() { + return endDate; + } + + public void setEndDate(Date endDate) { + this.endDate = endDate; + } + + public TellerStatus getStatus() { + return status; + } + + public void setStatus(TellerStatus status) { + this.status = status; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostUserRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostUserRequest.java new file mode 100644 index 00000000..96282a58 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PostUserRequest.java @@ -0,0 +1,127 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.ArrayList; +import java.util.List; + +public class PostUserRequest { + + private long officeId; + + private List roles = new ArrayList<>(); + + private long staffId; + + private boolean selfServiceUser; + + private List clients = new ArrayList<>(); + + private boolean sendPasswordToEmail; + + private String username; + + private String password; + + private boolean passwordNeverExpires; + + private String email; + + private String firstName; + + private String lastName; + + public long getOfficeId() { + return officeId; + } + + public void setOfficeId(long officeId) { + this.officeId = officeId; + } + + public List getRoles() { + return roles; + } + + public void setRoles(List roles) { + this.roles = roles; + } + + public long getStaffId() { + return staffId; + } + + public void setStaffId(long staffId) { + this.staffId = staffId; + } + + public boolean isSelfServiceUser() { + return selfServiceUser; + } + + public void setSelfServiceUser(boolean selfServiceUser) { + this.selfServiceUser = selfServiceUser; + } + + public List getClients() { + return clients; + } + + public void setClients(List clients) { + this.clients = clients; + } + + public boolean isSendPasswordToEmail() { + return sendPasswordToEmail; + } + + public void setSendPasswordToEmail(boolean sendPasswordToEmail) { + this.sendPasswordToEmail = sendPasswordToEmail; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public boolean isPasswordNeverExpires() { + return passwordNeverExpires; + } + + public void setPasswordNeverExpires(boolean passwordNeverExpires) { + this.passwordNeverExpires = passwordNeverExpires; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutAccountNumberFormatsRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutAccountNumberFormatsRequest.java new file mode 100644 index 00000000..773c4026 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutAccountNumberFormatsRequest.java @@ -0,0 +1,17 @@ +package com.angkorteam.fintech.client.dto; + +import com.angkorteam.fintech.client.renums.AccountNumberPrefixType; + +public class PutAccountNumberFormatsRequest { + + private AccountNumberPrefixType prefixType; + + public AccountNumberPrefixType getPrefixType() { + return prefixType; + } + + public void setPrefixType(AccountNumberPrefixType prefixType) { + this.prefixType = prefixType; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutAccountingRulesRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutAccountingRulesRequest.java new file mode 100644 index 00000000..2483d269 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutAccountingRulesRequest.java @@ -0,0 +1,78 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.ArrayList; +import java.util.List; + +public class PutAccountingRulesRequest { + + private long officeId; + + private long accountToDebit; + + private long accountToCredit; + + private List debitTags = new ArrayList<>(); + + private List creditTags = new ArrayList<>(); + + private boolean allowMultipleCreditEntries; + + private boolean allowMultipleDebitEntries; + + public long getOfficeId() { + return officeId; + } + + public void setOfficeId(long officeId) { + this.officeId = officeId; + } + + public long getAccountToDebit() { + return accountToDebit; + } + + public void setAccountToDebit(long accountToDebit) { + this.accountToDebit = accountToDebit; + } + + public long getAccountToCredit() { + return accountToCredit; + } + + public void setAccountToCredit(long accountToCredit) { + this.accountToCredit = accountToCredit; + } + + public List getDebitTags() { + return debitTags; + } + + public void setDebitTags(List debitTags) { + this.debitTags = debitTags; + } + + public List getCreditTags() { + return creditTags; + } + + public void setCreditTags(List creditTags) { + this.creditTags = creditTags; + } + + public boolean isAllowMultipleCreditEntries() { + return allowMultipleCreditEntries; + } + + public void setAllowMultipleCreditEntries(boolean allowMultipleCreditEntries) { + this.allowMultipleCreditEntries = allowMultipleCreditEntries; + } + + public boolean isAllowMultipleDebitEntries() { + return allowMultipleDebitEntries; + } + + public void setAllowMultipleDebitEntries(boolean allowMultipleDebitEntries) { + this.allowMultipleDebitEntries = allowMultipleDebitEntries; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutAdhocRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutAdhocRequest.java new file mode 100644 index 00000000..3593f8ed --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutAdhocRequest.java @@ -0,0 +1,88 @@ +package com.angkorteam.fintech.client.dto; + +import com.google.gson.annotations.SerializedName; + +public class PutAdhocRequest { + + private String name; + + private String query; + + private String tableName; + + private String tableFields; + + private String email; + + private int reportRunFrequency; + + private int reportRunEvery; + + @SerializedName("isActive") + private boolean active; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getQuery() { + return query; + } + + public void setQuery(String query) { + this.query = query; + } + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + public String getTableFields() { + return tableFields; + } + + public void setTableFields(String tableFields) { + this.tableFields = tableFields; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public int getReportRunFrequency() { + return reportRunFrequency; + } + + public void setReportRunFrequency(int reportRunFrequency) { + this.reportRunFrequency = reportRunFrequency; + } + + public int getReportRunEvery() { + return reportRunEvery; + } + + public void setReportRunEvery(int reportRunEvery) { + this.reportRunEvery = reportRunEvery; + } + + public boolean isActive() { + return active; + } + + public void setActive(boolean active) { + this.active = active; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutCachesRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutCachesRequest.java new file mode 100644 index 00000000..3eb5895c --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutCachesRequest.java @@ -0,0 +1,17 @@ +package com.angkorteam.fintech.client.dto; + +import com.angkorteam.fintech.client.enums.CacheType; + +public class PutCachesRequest { + + private CacheType cacheType; + + public CacheType getCacheType() { + return cacheType; + } + + public void setCacheType(CacheType cacheType) { + this.cacheType = cacheType; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutCodeValueRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutCodeValueRequest.java new file mode 100644 index 00000000..287f75e8 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutCodeValueRequest.java @@ -0,0 +1,48 @@ +package com.angkorteam.fintech.client.dto; + +import com.google.gson.annotations.SerializedName; + +public class PutCodeValueRequest { + + private String name; + + private long position; + + private String description; + + @SerializedName("isActive") + private boolean active; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public long getPosition() { + return position; + } + + public void setPosition(long position) { + this.position = position; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public boolean isActive() { + return active; + } + + public void setActive(boolean active) { + this.active = active; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutCurrenciesRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutCurrenciesRequest.java new file mode 100644 index 00000000..ef3b0388 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutCurrenciesRequest.java @@ -0,0 +1,18 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.ArrayList; +import java.util.List; + +public class PutCurrenciesRequest { + + private List currencies = new ArrayList<>(); + + public List getCurrencies() { + return currencies; + } + + public void setCurrencies(List currencies) { + this.currencies = currencies; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutDataTableRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutDataTableRequest.java new file mode 100644 index 00000000..62ae49a3 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutDataTableRequest.java @@ -0,0 +1,230 @@ +package com.angkorteam.fintech.client.dto; + +import com.angkorteam.fintech.client.enums.TableTypeEnum; + +import java.util.ArrayList; +import java.util.List; + +public class PutDataTableRequest { + + private TableTypeEnum apptableName; + + private List addColumns = new ArrayList<>(); + + private List dropColumns = new ArrayList<>(); + + private List changeColumns = new ArrayList<>(); + + public TableTypeEnum getApptableName() { + return apptableName; + } + + public void setApptableName(TableTypeEnum apptableName) { + this.apptableName = apptableName; + } + + public List getAddColumns() { + return addColumns; + } + + public void setAddColumns(List addColumns) { + this.addColumns = addColumns; + } + + public List getDropColumns() { + return dropColumns; + } + + public void setDropColumns(List dropColumns) { + this.dropColumns = dropColumns; + } + + public List getChangeColumns() { + return changeColumns; + } + + public void setChangeColumns(List changeColumns) { + this.changeColumns = changeColumns; + } + + public static class DropColumn { + + private String name; + + public DropColumn() { + } + + public DropColumn(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + } + + public static class ChangeColumn { + + private String type; + + private String name; + + private String newName; + + private String code; + + private String newCode; + + private int length; + + private boolean mandatory; + + public ChangeColumn() { + } + + public ChangeColumn(String type, String name, String newName, String code, String newCode, int length, boolean mandatory) { + this.type = type; + this.name = name; + this.newName = newName; + this.code = code; + this.newCode = newCode; + this.length = length; + this.mandatory = mandatory; + } + + public String getType() { + return type; + } + + public String getName() { + return name; + } + + public int getLength() { + return length; + } + + public String getCode() { + return code; + } + + public boolean isMandatory() { + return mandatory; + } + + public String getNewName() { + return newName; + } + + public String getNewCode() { + return newCode; + } + } + + public static class AddColumn { + + private String type; + + private String name; + + private int length; + + private String code; + + private boolean mandatory; + + private AddColumn() { + } + + public static AddColumn string(String name, boolean mandatory, int length) { + AddColumn column = new AddColumn(); + column.type = "String"; + column.name = name; + column.mandatory = mandatory; + column.length = length; + return column; + } + + public static AddColumn number(String name, boolean mandatory) { + AddColumn column = new AddColumn(); + column.type = "Number"; + column.name = name; + column.mandatory = mandatory; + return column; + } + + public static AddColumn yesno(String name, boolean mandatory) { + AddColumn column = new AddColumn(); + column.type = "Boolean"; + column.name = name; + column.mandatory = mandatory; + return column; + } + + public static AddColumn decimal(String name, boolean mandatory) { + AddColumn column = new AddColumn(); + column.type = "Decimal"; + column.name = name; + column.mandatory = mandatory; + return column; + } + + public static AddColumn date(String name, boolean mandatory) { + AddColumn column = new AddColumn(); + column.type = "Date"; + column.name = name; + column.mandatory = mandatory; + return column; + } + + public static AddColumn datetime(String name, boolean mandatory) { + AddColumn column = new AddColumn(); + column.type = "DateTime"; + column.name = name; + column.mandatory = mandatory; + return column; + } + + public static AddColumn text(String name, boolean mandatory) { + AddColumn column = new AddColumn(); + column.type = "Text"; + column.name = name; + column.mandatory = mandatory; + return column; + } + + public static AddColumn dropdown(String name, boolean mandatory, String code) { + AddColumn column = new AddColumn(); + column.type = "DropDown"; + column.name = name; + column.mandatory = mandatory; + column.code = code; + return column; + } + + public String getType() { + return type; + } + + public String getName() { + return name; + } + + public int getLength() { + return length; + } + + public String getCode() { + return code; + } + + public boolean isMandatory() { + return mandatory; + } + + } +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutEmailCampaignRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutEmailCampaignRequest.java new file mode 100644 index 00000000..b4806e12 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutEmailCampaignRequest.java @@ -0,0 +1,77 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.Date; + +public class PutEmailCampaignRequest { + + private long businessRuleId; + + private String campaignName; + + private String emailMessage; + + private String paramValue; + + private int campaignType; + + private String recurrence; + + private Date recurrenceStartDate; + + public long getBusinessRuleId() { + return businessRuleId; + } + + public void setBusinessRuleId(long businessRuleId) { + this.businessRuleId = businessRuleId; + } + + public String getCampaignName() { + return campaignName; + } + + public void setCampaignName(String campaignName) { + this.campaignName = campaignName; + } + + public String getEmailMessage() { + return emailMessage; + } + + public void setEmailMessage(String emailMessage) { + this.emailMessage = emailMessage; + } + + public String getParamValue() { + return paramValue; + } + + public void setParamValue(String paramValue) { + this.paramValue = paramValue; + } + + public int getCampaignType() { + return campaignType; + } + + public void setCampaignType(int campaignType) { + this.campaignType = campaignType; + } + + public String getRecurrence() { + return recurrence; + } + + public void setRecurrence(String recurrence) { + this.recurrence = recurrence; + } + + public Date getRecurrenceStartDate() { + return recurrenceStartDate; + } + + public void setRecurrenceStartDate(Date recurrenceStartDate) { + this.recurrenceStartDate = recurrenceStartDate; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutEmailConfigurationRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutEmailConfigurationRequest.java new file mode 100644 index 00000000..6e87d95a --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutEmailConfigurationRequest.java @@ -0,0 +1,51 @@ +package com.angkorteam.fintech.client.dto; + +import com.google.gson.annotations.SerializedName; + +public class PutEmailConfigurationRequest { + + @SerializedName("SMTP_USERNAME") + private String smtpUsername; + + @SerializedName("SMTP_SERVER") + private String smtpServer; + + @SerializedName("SMTP_PORT") + private int smtpPort; + + @SerializedName("SMTP_PASSWORD") + private String smtpPassword; + + public String getSmtpUsername() { + return smtpUsername; + } + + public void setSmtpUsername(String smtpUsername) { + this.smtpUsername = smtpUsername; + } + + public String getSmtpServer() { + return smtpServer; + } + + public void setSmtpServer(String smtpServer) { + this.smtpServer = smtpServer; + } + + public int getSmtpPort() { + return smtpPort; + } + + public void setSmtpPort(int smtpPort) { + this.smtpPort = smtpPort; + } + + public String getSmtpPassword() { + return smtpPassword; + } + + public void setSmtpPassword(String smtpPassword) { + this.smtpPassword = smtpPassword; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutEmailRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutEmailRequest.java new file mode 100644 index 00000000..641b0205 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutEmailRequest.java @@ -0,0 +1,15 @@ +package com.angkorteam.fintech.client.dto; + +public class PutEmailRequest { + + private String emailMessage; + + public String getEmailMessage() { + return emailMessage; + } + + public void setEmailMessage(String emailMessage) { + this.emailMessage = emailMessage; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutFinancialActivityAccountsRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutFinancialActivityAccountsRequest.java new file mode 100644 index 00000000..27396830 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutFinancialActivityAccountsRequest.java @@ -0,0 +1,29 @@ +package com.angkorteam.fintech.client.dto; + +import com.angkorteam.fintech.client.renums.FinancialActivity; +import com.google.gson.annotations.SerializedName; + +public class PutFinancialActivityAccountsRequest { + + @SerializedName("financialActivityId") + private FinancialActivity financialActivity; + + private long glAccountId; + + public FinancialActivity getFinancialActivity() { + return financialActivity; + } + + public void setFinancialActivity(FinancialActivity financialActivity) { + this.financialActivity = financialActivity; + } + + public long getGlAccountId() { + return glAccountId; + } + + public void setGlAccountId(long glAccountId) { + this.glAccountId = glAccountId; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutFundsFundIdRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutFundsFundIdRequest.java new file mode 100644 index 00000000..7a2ddc84 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutFundsFundIdRequest.java @@ -0,0 +1,25 @@ +package com.angkorteam.fintech.client.dto; + +public class PutFundsFundIdRequest { + + private String name; + + private String externalId; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getExternalId() { + return externalId; + } + + public void setExternalId(String externalId) { + this.externalId = externalId; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutGLAccountsRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutGLAccountsRequest.java new file mode 100644 index 00000000..e3fe7d5d --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutGLAccountsRequest.java @@ -0,0 +1,97 @@ +package com.angkorteam.fintech.client.dto; + +import com.angkorteam.fintech.client.enums.AccountUsage; +import com.angkorteam.fintech.client.renums.GLAccountType; + +public class PutGLAccountsRequest { + + private String name; + + private boolean disabled; + + private long parentId; + + private long tagId; + + private AccountUsage usage; + + private GLAccountType type; + + private boolean manualEntriesAllowed; + + private String glCode; + + private String description; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public boolean isDisabled() { + return disabled; + } + + public void setDisabled(boolean disabled) { + this.disabled = disabled; + } + + public long getParentId() { + return parentId; + } + + public void setParentId(long parentId) { + this.parentId = parentId; + } + + public long getTagId() { + return tagId; + } + + public void setTagId(long tagId) { + this.tagId = tagId; + } + + public AccountUsage getUsage() { + return usage; + } + + public void setUsage(AccountUsage usage) { + this.usage = usage; + } + + public GLAccountType getType() { + return type; + } + + public void setType(GLAccountType type) { + this.type = type; + } + + public boolean isManualEntriesAllowed() { + return manualEntriesAllowed; + } + + public void setManualEntriesAllowed(boolean manualEntriesAllowed) { + this.manualEntriesAllowed = manualEntriesAllowed; + } + + public String getGlCode() { + return glCode; + } + + public void setGlCode(String glCode) { + this.glCode = glCode; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutGLClosureRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutGLClosureRequest.java new file mode 100644 index 00000000..4f1c3017 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutGLClosureRequest.java @@ -0,0 +1,18 @@ +package com.angkorteam.fintech.client.dto; + +public class PutGLClosureRequest { + + /** + * limit to 500 + */ + private String comments; + + public String getComments() { + return comments; + } + + public void setComments(String comments) { + this.comments = comments; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutHookRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutHookRequest.java new file mode 100644 index 00000000..284bdf01 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutHookRequest.java @@ -0,0 +1,101 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class PutHookRequest { + + private String name; + + private Map config = new HashMap<>(); + + private long templateId; + + private String displayName; + + private boolean active; + + private List events = new ArrayList<>(); + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Map getConfig() { + return config; + } + + public void setConfig(Map config) { + this.config = config; + } + + public long getTemplateId() { + return templateId; + } + + public void setTemplateId(long templateId) { + this.templateId = templateId; + } + + public String getDisplayName() { + return displayName; + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + + public boolean isActive() { + return active; + } + + public void setActive(boolean active) { + this.active = active; + } + + public List getEvents() { + return events; + } + + public void setEvents(List events) { + this.events = events; + } + + public static class Event { + + private String entityName; + + private String actionName; + + public Event() { + } + + public Event(String entityName, String actionName) { + this.entityName = entityName; + this.actionName = actionName; + } + + public String getEntityName() { + return entityName; + } + + public void setEntityName(String entityName) { + this.entityName = entityName; + } + + public String getActionName() { + return actionName; + } + + public void setActionName(String actionName) { + this.actionName = actionName; + } + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutOfficeRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutOfficeRequest.java new file mode 100644 index 00000000..734b9053 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutOfficeRequest.java @@ -0,0 +1,53 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.Date; + +public class PutOfficeRequest { + + /** + * limit to 100 + */ + private String name; + + private Date openingDate; + + private long parentId; + + /** + * limit to 100 + */ + private String externalId; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Date getOpeningDate() { + return openingDate; + } + + public void setOpeningDate(Date openingDate) { + this.openingDate = openingDate; + } + + public long getParentId() { + return parentId; + } + + public void setParentId(long parentId) { + this.parentId = parentId; + } + + public String getExternalId() { + return externalId; + } + + public void setExternalId(String externalId) { + this.externalId = externalId; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutPasswordPreferencesTemplateRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutPasswordPreferencesTemplateRequest.java new file mode 100644 index 00000000..cd22151a --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutPasswordPreferencesTemplateRequest.java @@ -0,0 +1,17 @@ +package com.angkorteam.fintech.client.dto; + +import com.angkorteam.fintech.client.enums.ValidationPolicy; + +public class PutPasswordPreferencesTemplateRequest { + + private ValidationPolicy validationPolicy; + + public ValidationPolicy getValidationPolicy() { + return validationPolicy; + } + + public void setValidationPolicy(ValidationPolicy validationPolicy) { + this.validationPolicy = validationPolicy; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutPaymentTypesPaymentTypeIdRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutPaymentTypesPaymentTypeIdRequest.java new file mode 100644 index 00000000..e47c3377 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutPaymentTypesPaymentTypeIdRequest.java @@ -0,0 +1,48 @@ +package com.angkorteam.fintech.client.dto; + +import com.google.gson.annotations.SerializedName; + +public class PutPaymentTypesPaymentTypeIdRequest { + + private String name; + + private String description; + + @SerializedName("isCashPayment") + private boolean cashPayment; + + private int position; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public boolean isCashPayment() { + return cashPayment; + } + + public void setCashPayment(boolean cashPayment) { + this.cashPayment = cashPayment; + } + + public int getPosition() { + return position; + } + + public void setPosition(int position) { + this.position = position; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutStaffRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutStaffRequest.java new file mode 100644 index 00000000..9ace828a --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutStaffRequest.java @@ -0,0 +1,93 @@ +package com.angkorteam.fintech.client.dto; + +import com.google.gson.annotations.SerializedName; + +import java.util.Date; + +public class PutStaffRequest { + + private long officeId; + + @SerializedName("firstname") + private String firstName; + + @SerializedName("lastname") + private String lastName; + + private String externalId; + + private String mobileNo; + + @SerializedName("isLoanOfficer") + private boolean loanOfficer; + + @SerializedName("isActive") + private boolean active; + + private Date joiningDate; + + public long getOfficeId() { + return officeId; + } + + public void setOfficeId(long officeId) { + this.officeId = officeId; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getExternalId() { + return externalId; + } + + public void setExternalId(String externalId) { + this.externalId = externalId; + } + + public String getMobileNo() { + return mobileNo; + } + + public void setMobileNo(String mobileNo) { + this.mobileNo = mobileNo; + } + + public boolean isLoanOfficer() { + return loanOfficer; + } + + public void setLoanOfficer(boolean loanOfficer) { + this.loanOfficer = loanOfficer; + } + + public boolean isActive() { + return active; + } + + public void setActive(boolean active) { + this.active = active; + } + + public Date getJoiningDate() { + return joiningDate; + } + + public void setJoiningDate(Date joiningDate) { + this.joiningDate = joiningDate; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutWorkingDaysRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutWorkingDaysRequest.java new file mode 100644 index 00000000..e9099df3 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/PutWorkingDaysRequest.java @@ -0,0 +1,49 @@ +package com.angkorteam.fintech.client.dto; + +import com.angkorteam.fintech.client.enums.RepaymentOption; + +public class PutWorkingDaysRequest { + + /** + * FREQ=WEEKLY;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR + */ + private String recurrence; + + private RepaymentOption repaymentRescheduleType; + + private boolean extendTermForDailyRepayments; + + private boolean extendTermForRepaymentsOnHolidays; + + public String getRecurrence() { + return recurrence; + } + + public void setRecurrence(String recurrence) { + this.recurrence = recurrence; + } + + public RepaymentOption getRepaymentRescheduleType() { + return repaymentRescheduleType; + } + + public void setRepaymentRescheduleType(RepaymentOption repaymentRescheduleType) { + this.repaymentRescheduleType = repaymentRescheduleType; + } + + public boolean isExtendTermForDailyRepayments() { + return extendTermForDailyRepayments; + } + + public void setExtendTermForDailyRepayments(boolean extendTermForDailyRepayments) { + this.extendTermForDailyRepayments = extendTermForDailyRepayments; + } + + public boolean isExtendTermForRepaymentsOnHolidays() { + return extendTermForRepaymentsOnHolidays; + } + + public void setExtendTermForRepaymentsOnHolidays(boolean extendTermForRepaymentsOnHolidays) { + this.extendTermForRepaymentsOnHolidays = extendTermForRepaymentsOnHolidays; + } +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/RoleData.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/RoleData.java new file mode 100644 index 00000000..6ec4cd10 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/RoleData.java @@ -0,0 +1,62 @@ +/** + * 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. + */ +package com.angkorteam.fintech.client.dto; + +import java.io.Serializable; + +public class RoleData implements Serializable { + + private Long id; + private String name; + private String description; + private Boolean disabled; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Boolean getDisabled() { + return disabled; + } + + public void setDisabled(Boolean disabled) { + this.disabled = disabled; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/RoleRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/RoleRequest.java new file mode 100644 index 00000000..59d67af0 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/RoleRequest.java @@ -0,0 +1,25 @@ +package com.angkorteam.fintech.client.dto; + +public class RoleRequest { + + private String name; + + private String description; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/SurveyRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/SurveyRequest.java new file mode 100644 index 00000000..129da61d --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/SurveyRequest.java @@ -0,0 +1,291 @@ +package com.angkorteam.fintech.client.dto; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class SurveyRequest { + + private long id; + + private List componentDatas = new ArrayList<>(); + + private List questionDatas = new ArrayList<>(); + + private String key; + + private String name; + + private String description; + + private String countryCode; + + private Date validFrom; + + private Date validTo; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public List getComponentDatas() { + return componentDatas; + } + + public void setComponentDatas(List componentDatas) { + this.componentDatas = componentDatas; + } + + public List getQuestionDatas() { + return questionDatas; + } + + public void setQuestionDatas(List questionDatas) { + this.questionDatas = questionDatas; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getCountryCode() { + return countryCode; + } + + public void setCountryCode(String countryCode) { + this.countryCode = countryCode; + } + + public Date getValidFrom() { + return validFrom; + } + + public void setValidFrom(Date validFrom) { + this.validFrom = validFrom; + } + + public Date getValidTo() { + return validTo; + } + + public void setValidTo(Date validTo) { + this.validTo = validTo; + } + + public static class ComponentData { + + private long id; + + private String key; + + private String text; + + private String description; + + private int sequenceNo; + + public ComponentData() { + } + + public ComponentData(final long id, final String key, final String text, final String description, final int sequenceNo) { + this.id = id; + this.key = key; + this.text = text; + this.description = description; + this.sequenceNo = sequenceNo; + } + + public long getId() { + return id; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getText() { + return text; + } + + public void setText(String title) { + this.text = title; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSequenceNo() { + return sequenceNo; + } + + public void setSequenceNo(int sequenceNo) { + this.sequenceNo = sequenceNo; + } + } + + public static class QuestionData { + + private long id; + + private List responseDatas = new ArrayList<>(); + + private String componentKey; + + private String key; + + private String text; + + private String description; + + private int sequenceNo; + + public QuestionData() { + } + + public QuestionData(final long id, final List responseDatas, final String componentKey, final String key, + final String text, final String description, final int sequenceNo) { + this.id = id; + this.responseDatas = responseDatas; + this.componentKey = componentKey; + this.key = key; + this.text = text; + this.description = description; + this.sequenceNo = sequenceNo; + } + + public long getId() { + return id; + } + + public List getResponseDatas() { + return responseDatas; + } + + public void setResponseDatas(List responseDatas) { + this.responseDatas = responseDatas; + } + + public String getComponentKey() { + return componentKey; + } + + public void setComponentKey(String componentKey) { + this.componentKey = componentKey; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSequenceNo() { + return sequenceNo; + } + + public void setSequenceNo(int sequenceNo) { + this.sequenceNo = sequenceNo; + } + } + + public static class ResponseData { + + private long id; + + private String text; + + private int value; + + private int sequenceNo; + + public ResponseData() { + } + + public ResponseData(final long id, final String text, final int value, final int sequenceNo) { + this.id = id; + this.text = text; + this.value = value; + this.sequenceNo = sequenceNo; + } + + public long getId() { + return id; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public int getValue() { + return value; + } + + public void setValue(int value) { + this.value = value; + } + + public int getSequenceNo() { + return sequenceNo; + } + + public void setSequenceNo(int sequenceNo) { + this.sequenceNo = sequenceNo; + } + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/SysError.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/SysError.java new file mode 100644 index 00000000..be307643 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/SysError.java @@ -0,0 +1,55 @@ +package com.angkorteam.fintech.client.dto; + +public class SysError { + + private long timestamp; + + private int status; + + private String error; + + private String message; + + private String path; + + public long getTimestamp() { + return timestamp; + } + + public void setTimestamp(long timestamp) { + this.timestamp = timestamp; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public String getError() { + return error; + } + + public void setError(String error) { + this.error = error; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/dto/SysException.java b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/SysException.java new file mode 100644 index 00000000..74f4112f --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/dto/SysException.java @@ -0,0 +1,22 @@ +package com.angkorteam.fintech.client.dto; + +public class SysException extends RuntimeException { + + private final String text; + + private final SysError object; + + public SysException(String text, SysError object) { + this.text = text; + this.object = object; + } + + public SysError getObject() { + return this.object; + } + + public String getText() { + return this.text; + } + +} diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/AccountUsage.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/AccountUsage.java similarity index 89% rename from src/main/java/com/angkorteam/fintech/dto/enums/AccountUsage.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/AccountUsage.java index dc81cd1f..46f416b5 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/AccountUsage.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/AccountUsage.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; /** * Created by socheatkhauv on 7/12/17. diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/AccountingType.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/AccountingType.java similarity index 80% rename from src/main/java/com/angkorteam/fintech/dto/enums/AccountingType.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/AccountingType.java index fb07ac7e..a2a1bae3 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/AccountingType.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/AccountingType.java @@ -1,13 +1,16 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; /** * Created by socheatkhauv on 7/12/17. */ public enum AccountingType { - None("1", "None"), Cash("2", "Cash"), Periodic("3", "Accrual Periodic"), Upfront("4", "Accrual Upfront"); + None("1", "None"), + Cash("2", "Cash"), + Periodic("3", "Accrual Periodic"), + Upfront("4", "Accrual Upfront"); private String literal; diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/ApplyPenalOn.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ApplyPenalOn.java similarity index 89% rename from src/main/java/com/angkorteam/fintech/dto/enums/ApplyPenalOn.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/ApplyPenalOn.java index df6db363..b28cbfbf 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/ApplyPenalOn.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ApplyPenalOn.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum ApplyPenalOn { diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/Attribute.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/Attribute.java similarity index 89% rename from src/main/java/com/angkorteam/fintech/dto/enums/Attribute.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/Attribute.java index bf58652a..f245f08f 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/Attribute.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/Attribute.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum Attribute { diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/enums/CacheType.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/CacheType.java new file mode 100644 index 00000000..125451fd --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/CacheType.java @@ -0,0 +1,53 @@ +package com.angkorteam.fintech.client.enums; + +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; + +/** + * Created by socheatkhauv on 7/12/17. + */ +public enum CacheType { + + Invalid("0", "Invalid"), + NoCache("1", "No Cache"), + SingleNode("2", "Single Node"), + MultiNode("3", "Multi Node"); + + private String literal; + + private String description; + + CacheType(String literal, String description) { + this.literal = literal; + this.description = description; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + + public Option toOption() { + return new Option(this.name(), this.description); + } + + public static CacheType parseLiteral(String literal) { + for (CacheType value : CacheType.values()) { + if (value.getLiteral().equals(literal)) { + return value; + } + } + return null; + } + + public static Option optionLiteral(String literal) { + CacheType value = parseLiteral(literal); + if (value == null) { + return null; + } + return value.toOption(); + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ChargeAppliesTo.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ChargeAppliesTo.java new file mode 100644 index 00000000..08c47d87 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ChargeAppliesTo.java @@ -0,0 +1,71 @@ +package com.angkorteam.fintech.client.enums; + +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; + +/** + * charge_applies_to_enum + * + * @author socheat + * + */ +public enum ChargeAppliesTo { + + Invalid("0", "Loan",null,null), + Loan("1", "Loan", new ChargeTimeType[] { ChargeTimeType.Disbursement, ChargeTimeType.SpecifiedDueDate, ChargeTimeType.InstallmentFee, ChargeTimeType.OverdraftFee, ChargeTimeType.TrancheDisbursement }, new ChargeCalculationType[] { ChargeCalculationType.Flat, ChargeCalculationType.PercentOfAmount, ChargeCalculationType.PercentOfAmountAndInterest, ChargeCalculationType.PercentOfInterest}), + SavingDeposit("2", "Savings and Deposits", new ChargeTimeType[] { ChargeTimeType.SpecifiedDueDate, ChargeTimeType.SavingActivation, ChargeTimeType.WithdrawalFee, ChargeTimeType.AnnualFee, ChargeTimeType.MonthlyFee, ChargeTimeType.WeeklyFee, ChargeTimeType.OverdraftFee, ChargeTimeType.SavingNoActivityFee }, new ChargeCalculationType[] { ChargeCalculationType.Flat, ChargeCalculationType.PercentOfAmount}), + Client("3", "Client", new ChargeTimeType[] { ChargeTimeType.SpecifiedDueDate }, new ChargeCalculationType[] { ChargeCalculationType.Flat }), + Share("4", "Shares", new ChargeTimeType[] { ChargeTimeType.ShareAccountActivate, ChargeTimeType.SharePurchase, ChargeTimeType.ShareRedeem }, new ChargeCalculationType[] { ChargeCalculationType.Flat, ChargeCalculationType.PercentOfAmount}); + + private String literal; + + private String description; + + private ChargeTimeType[] chargeTime; + + private ChargeCalculationType[] chargeCalculation; + + ChargeAppliesTo(String literal, String description, ChargeTimeType[] chargeTime, ChargeCalculationType[] chargeCalculation) { + this.literal = literal; + this.description = description; + this.chargeTime = chargeTime; + this.chargeCalculation = chargeCalculation; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + + public Option toOption() { + return new Option(this.name(), this.description); + } + + public ChargeTimeType[] getChargeTime() { + return chargeTime; + } + + public ChargeCalculationType[] getChargeCalculation() { + return chargeCalculation; + } + + public static ChargeAppliesTo parseLiteral(String literal) { + for (ChargeAppliesTo value : ChargeAppliesTo.values()) { + if (value.getLiteral().equals(literal)) { + return value; + } + } + return null; + } + + public static Option optionLiteral(String literal) { + ChargeAppliesTo value = parseLiteral(literal); + if (value == null) { + return null; + } + return value.toOption(); + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ChargeCalculationType.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ChargeCalculationType.java new file mode 100644 index 00000000..4e0fdce6 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ChargeCalculationType.java @@ -0,0 +1,58 @@ +package com.angkorteam.fintech.client.enums; + +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; + +/** + * charge_calculation_enum + * + * @author socheat + * + */ +public enum ChargeCalculationType { + + Invalid("0", "Invalid"), + Flat("1", "Flat"), + PercentOfAmount("2", "% Amount"), + PercentOfAmountAndInterest("3", "% Amount & Interest"), + PercentOfInterest("4", "% Interest"), + PercentOfDisbursementAmount("5", "% Disbursement Amount"); + + private String literal; + + private String description; + + ChargeCalculationType(String literal, String description) { + this.literal = literal; + this.description = description; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + + public Option toOption() { + return new Option(this.name(), this.description); + } + + public static ChargeCalculationType parseLiteral(String literal) { + for (ChargeCalculationType value : ChargeCalculationType.values()) { + if (value.getLiteral().equals(literal)) { + return value; + } + } + return null; + } + + public static Option optionLiteral(String literal) { + ChargeCalculationType value = parseLiteral(literal); + if (value == null) { + return null; + } + return value.toOption(); + } + +} diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/ChargeFrequency.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ChargeFrequency.java similarity index 89% rename from src/main/java/com/angkorteam/fintech/dto/enums/ChargeFrequency.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/ChargeFrequency.java index e493ba96..06415528 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/ChargeFrequency.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ChargeFrequency.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum ChargeFrequency { diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ChargePaymentMode.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ChargePaymentMode.java new file mode 100644 index 00000000..f845493f --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ChargePaymentMode.java @@ -0,0 +1,54 @@ +package com.angkorteam.fintech.client.enums; + +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; + +/** + * charge_payment_mode_enum + * + * @author socheat + * + */ +public enum ChargePaymentMode { + + Regular("0", "Regular"), + AccountTransfer("1", "Account Transfer"); + + private String literal; + + private String description; + + ChargePaymentMode(String literal, String description) { + this.literal = literal; + this.description = description; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + + public Option toOption() { + return new Option(this.name(), this.description); + } + + public static ChargePaymentMode parseLiteral(String literal) { + for (ChargePaymentMode value : ChargePaymentMode.values()) { + if (value.getLiteral().equals(literal)) { + return value; + } + } + return null; + } + + public static Option optionLiteral(String literal) { + ChargePaymentMode value = parseLiteral(literal); + if (value == null) { + return null; + } + return value.toOption(); + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ChargeTimeType.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ChargeTimeType.java new file mode 100644 index 00000000..48f070c2 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ChargeTimeType.java @@ -0,0 +1,71 @@ +package com.angkorteam.fintech.client.enums; + +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; + +/** + * charge_time_enum + * + * @author socheat + * + */ +public enum ChargeTimeType { + + Invalid("0", "Invalid"), + Disbursement("1", "Disbursement"), + SpecifiedDueDate("2", "Specified Due Date"), + SavingActivation("3", "Savings Activation"), + SavingClosure("4", "Savings Activation"), + WithdrawalFee("5", "Withdrawal Fee"), + AnnualFee("6", "Annual Fee"), + MonthlyFee("7", "Monthly Fee"), + InstallmentFee("8", "Installment Fee"), + OverdueInstallment("9", "Overdue Installment"), + OverdraftFee("10", "Overdraft Fee"), + WeeklyFee("11", "Weekly Fee"), + TrancheDisbursement("12", "Tranche Disbursement"), + + ShareAccountActivate("13", "Share Account Activate"), + SharePurchase("14", "Share Purchase"), + ShareRedeem("15", "Share Redeem"), + + SavingNoActivityFee("16", "Saving No Activity Fee"); + + private String literal; + + private String description; + + ChargeTimeType(String literal, String description) { + this.literal = literal; + this.description = description; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + + public Option toOption() { + return new Option(this.name(), this.description); + } + + public static ChargeTimeType parseLiteral(String literal) { + for (ChargeTimeType value : ChargeTimeType.values()) { + if (value.getLiteral().equals(literal)) { + return value; + } + } + return null; + } + + public static Option optionLiteral(String literal) { + ChargeTimeType value = parseLiteral(literal); + if (value == null) { + return null; + } + return value.toOption(); + } + +} diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/ColumnType.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ColumnType.java similarity index 91% rename from src/main/java/com/angkorteam/fintech/dto/enums/ColumnType.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/ColumnType.java index a38b3fca..dd5ed2db 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/ColumnType.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ColumnType.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; /** * Created by socheatkhauv on 7/13/17. diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/DayInYear.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/DayInYear.java similarity index 89% rename from src/main/java/com/angkorteam/fintech/dto/enums/DayInYear.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/DayInYear.java index 8ab7c78c..3a2eeb3b 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/DayInYear.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/DayInYear.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum DayInYear { diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/DepositType.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/DepositType.java similarity index 81% rename from src/main/java/com/angkorteam/fintech/dto/enums/DepositType.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/DepositType.java index 95c8bb2f..8ad24ff4 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/DepositType.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/DepositType.java @@ -1,10 +1,12 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum DepositType { - Recurring("300", "Recurring"), Saving("100", "Saving"), Fixed("200", "Fixed"); + Recurring("300", "Recurring"), + Saving("100", "Saving"), + Fixed("200", "Fixed"); private String literal; diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/Destination.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/Destination.java similarity index 89% rename from src/main/java/com/angkorteam/fintech/dto/enums/Destination.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/Destination.java index b7524bc7..9d07325b 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/Destination.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/Destination.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; /** * Created by socheatkhauv on 7/12/17. diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/enums/EntityStatusEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/EntityStatusEnum.java new file mode 100644 index 00000000..b1fb1281 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/EntityStatusEnum.java @@ -0,0 +1,56 @@ +package com.angkorteam.fintech.client.enums; + +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; + +/** + * Created by socheatkhauv on 7/15/17. + */ +public enum EntityStatusEnum { + + Create("100", "Create"), + Approve("200", "Approve"), + Activate("300", "Activate"), + Withdrawn("400", "Withdrawn"), + Rejected("500", "Rejected"), + Close("600", "Close"), + WriteOff("601", "Write Off"), + Disburse("800", "Disburse"); + + private String literal; + + private String description; + + EntityStatusEnum(String literal, String description) { + this.literal = literal; + this.description = description; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + + public Option toOption() { + return new Option(this.name(), this.description); + } + + public static EntityStatusEnum parseLiteral(String literal) { + for (EntityStatusEnum value : EntityStatusEnum.values()) { + if (value.getLiteral().equals(literal)) { + return value; + } + } + return null; + } + + public static Option optionLiteral(String literal) { + EntityStatusEnum value = parseLiteral(literal); + if (value == null) { + return null; + } + return value.toOption(); + } +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/enums/EntityTypeEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/EntityTypeEnum.java new file mode 100644 index 00000000..fb2a0076 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/EntityTypeEnum.java @@ -0,0 +1,60 @@ +package com.angkorteam.fintech.client.enums; + +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; + +/** + * Created by socheatkhauv on 7/15/17. + */ +public enum EntityTypeEnum { + + Client("m_client", "Client", EntityStatusEnum.Create, EntityStatusEnum.Approve, EntityStatusEnum.Close), + Group("m_group", "Group", EntityStatusEnum.Create, EntityStatusEnum.Approve, EntityStatusEnum.Close), + Loan("m_loan", "Loan", EntityStatusEnum.Create, EntityStatusEnum.Approve, EntityStatusEnum.Disburse, EntityStatusEnum.Withdrawn, EntityStatusEnum.Rejected, EntityStatusEnum.WriteOff), + SavingAccount("m_savings_account", "Saving Account", EntityStatusEnum.Create, EntityStatusEnum.Approve, EntityStatusEnum.Activate, EntityStatusEnum.Withdrawn, EntityStatusEnum.Rejected, EntityStatusEnum.Close); + + private String literal; + + private String description; + + private EntityStatusEnum[] status; + + EntityTypeEnum(String literal, String description, EntityStatusEnum... status) { + this.literal = literal; + this.description = description; + this.status = status; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + + public Option toOption() { + return new Option(this.name(), this.description); + } + + public EntityStatusEnum[] getStatus() { + return status; + } + + public static EntityTypeEnum parseLiteral(String literal) { + for (EntityTypeEnum value : EntityTypeEnum.values()) { + if (value.getLiteral().equals(literal)) { + return value; + } + } + return null; + } + + public static Option optionLiteral(String literal) { + EntityTypeEnum value = parseLiteral(literal); + if (value == null) { + return null; + } + return value.toOption(); + } + +} diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/FinancialAccountType.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/FinancialAccountType.java similarity index 93% rename from src/main/java/com/angkorteam/fintech/dto/enums/FinancialAccountType.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/FinancialAccountType.java index 85a7be9c..8ceace97 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/FinancialAccountType.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/FinancialAccountType.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum FinancialAccountType { diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/InstructionType.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/InstructionType.java similarity index 89% rename from src/main/java/com/angkorteam/fintech/dto/enums/InstructionType.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/InstructionType.java index 6112ff6f..c1890718 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/InstructionType.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/InstructionType.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; /** * Created by socheatkhauv on 7/12/17. diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/InterestCalculatedUsing.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/InterestCalculatedUsing.java similarity index 90% rename from src/main/java/com/angkorteam/fintech/dto/enums/InterestCalculatedUsing.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/InterestCalculatedUsing.java index 732cbd27..73107bb6 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/InterestCalculatedUsing.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/InterestCalculatedUsing.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum InterestCalculatedUsing { diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/InterestCompoundingPeriod.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/InterestCompoundingPeriod.java similarity index 90% rename from src/main/java/com/angkorteam/fintech/dto/enums/InterestCompoundingPeriod.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/InterestCompoundingPeriod.java index e986fd1e..7cf10f18 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/InterestCompoundingPeriod.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/InterestCompoundingPeriod.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum InterestCompoundingPeriod { diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/InterestPostingPeriod.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/InterestPostingPeriod.java similarity index 90% rename from src/main/java/com/angkorteam/fintech/dto/enums/InterestPostingPeriod.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/InterestPostingPeriod.java index bc79f19d..254da535 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/InterestPostingPeriod.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/InterestPostingPeriod.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum InterestPostingPeriod { diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/JournalEntry.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/JournalEntry.java similarity index 89% rename from src/main/java/com/angkorteam/fintech/dto/enums/JournalEntry.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/JournalEntry.java index e0bbfa6b..19bc26ca 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/JournalEntry.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/JournalEntry.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; /** * Created by socheatkhauv on 7/13/17. diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/LegalForm.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/LegalForm.java similarity index 89% rename from src/main/java/com/angkorteam/fintech/dto/enums/LegalForm.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/LegalForm.java index a6da4881..d02a11bc 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/LegalForm.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/LegalForm.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum LegalForm { diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/LoanCycle.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/LoanCycle.java similarity index 90% rename from src/main/java/com/angkorteam/fintech/dto/enums/LoanCycle.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/LoanCycle.java index de8299cf..e0791159 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/LoanCycle.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/LoanCycle.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; /** * Created by socheatkhauv on 7/15/17. diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/LockInType.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/LockInType.java similarity index 89% rename from src/main/java/com/angkorteam/fintech/dto/enums/LockInType.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/LockInType.java index 48f4ff46..73c53ca1 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/LockInType.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/LockInType.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum LockInType { diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/MinimumActivePeriod.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/MinimumActivePeriod.java similarity index 89% rename from src/main/java/com/angkorteam/fintech/dto/enums/MinimumActivePeriod.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/MinimumActivePeriod.java index f6270825..af39a76d 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/MinimumActivePeriod.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/MinimumActivePeriod.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum MinimumActivePeriod { diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/OperandType.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/OperandType.java similarity index 89% rename from src/main/java/com/angkorteam/fintech/dto/enums/OperandType.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/OperandType.java index 0a8cf6fc..dc057d5c 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/OperandType.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/OperandType.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum OperandType { diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/Operator.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/Operator.java similarity index 89% rename from src/main/java/com/angkorteam/fintech/dto/enums/Operator.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/Operator.java index 4fa82780..3a04e41e 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/Operator.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/Operator.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum Operator { diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/Priority.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/Priority.java similarity index 90% rename from src/main/java/com/angkorteam/fintech/dto/enums/Priority.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/Priority.java index a64a8d9c..87bd5fa4 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/Priority.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/Priority.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; /** * Created by socheatkhauv on 7/12/17. diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ProductPopup.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ProductPopup.java new file mode 100644 index 00000000..469e92d0 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ProductPopup.java @@ -0,0 +1,10 @@ +package com.angkorteam.fintech.client.enums; + +/** + * Created by socheatkhauv on 7/12/17. + */ +public enum ProductPopup { + + Fixed, Share, Loan, Recurring, Saving; + +} diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/ProductType.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ProductType.java similarity index 89% rename from src/main/java/com/angkorteam/fintech/dto/enums/ProductType.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/ProductType.java index cca83ddd..0d0d64cd 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/ProductType.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ProductType.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; /** * Created by socheatkhauv on 7/12/17. diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/enums/PutUserRequest.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/PutUserRequest.java new file mode 100644 index 00000000..942bbc45 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/PutUserRequest.java @@ -0,0 +1,127 @@ +package com.angkorteam.fintech.client.enums; + +import java.util.ArrayList; +import java.util.List; + +public class PutUserRequest { + + private long officeId; + + private List roles = new ArrayList<>(); + + private long staffId; + + private boolean selfServiceUser; + + private List clients = new ArrayList<>(); + + private boolean sendPasswordToEmail; + + private String username; + + private String password; + + private boolean passwordNeverExpires; + + private String email; + + private String firstName; + + private String lastName; + + public long getOfficeId() { + return officeId; + } + + public void setOfficeId(long officeId) { + this.officeId = officeId; + } + + public List getRoles() { + return roles; + } + + public void setRoles(List roles) { + this.roles = roles; + } + + public long getStaffId() { + return staffId; + } + + public void setStaffId(long staffId) { + this.staffId = staffId; + } + + public boolean isSelfServiceUser() { + return selfServiceUser; + } + + public void setSelfServiceUser(boolean selfServiceUser) { + this.selfServiceUser = selfServiceUser; + } + + public List getClients() { + return clients; + } + + public void setClients(List clients) { + this.clients = clients; + } + + public boolean isSendPasswordToEmail() { + return sendPasswordToEmail; + } + + public void setSendPasswordToEmail(boolean sendPasswordToEmail) { + this.sendPasswordToEmail = sendPasswordToEmail; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public boolean isPasswordNeverExpires() { + return passwordNeverExpires; + } + + public void setPasswordNeverExpires(boolean passwordNeverExpires) { + this.passwordNeverExpires = passwordNeverExpires; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } +} diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/RecurrenceFrequency.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/RecurrenceFrequency.java similarity index 90% rename from src/main/java/com/angkorteam/fintech/dto/enums/RecurrenceFrequency.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/RecurrenceFrequency.java index b54ebc97..09ade1e3 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/RecurrenceFrequency.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/RecurrenceFrequency.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; /** * Created by socheatkhauv on 7/12/17. diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/RecurrenceType.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/RecurrenceType.java similarity index 90% rename from src/main/java/com/angkorteam/fintech/dto/enums/RecurrenceType.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/RecurrenceType.java index edfaeb34..9dfa72b9 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/RecurrenceType.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/RecurrenceType.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; /** * Created by socheatkhauv on 7/12/17. diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/RepaymentOption.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/RepaymentOption.java similarity index 91% rename from src/main/java/com/angkorteam/fintech/dto/enums/RepaymentOption.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/RepaymentOption.java index 40fc604b..65afad5a 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/RepaymentOption.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/RepaymentOption.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; /** * Created by socheatkhauv on 7/13/17. diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ReportType.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ReportType.java new file mode 100644 index 00000000..4c4c8dca --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ReportType.java @@ -0,0 +1,7 @@ +package com.angkorteam.fintech.client.enums; + +public enum ReportType { + + Table, Pentaho, Chart + +} diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/ReschedulingType.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ReschedulingType.java similarity index 83% rename from src/main/java/com/angkorteam/fintech/dto/enums/ReschedulingType.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/ReschedulingType.java index 984526c3..bba17bfc 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/ReschedulingType.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ReschedulingType.java @@ -1,10 +1,12 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum ReschedulingType { - NextRepaymentDate("1", "Reschedule to next repayment date"), SpecifiedDate("2", "Reschedule to specified date"); + Invalid("0", "Invalid"), + NextRepaymentDate("1", "Reschedule to next repayment date"), + SpecifiedDate("2", "Reschedule to specified date"); private String literal; diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/ServiceType.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ServiceType.java similarity index 89% rename from src/main/java/com/angkorteam/fintech/dto/enums/ServiceType.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/ServiceType.java index 39b4e901..3e37645b 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/ServiceType.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ServiceType.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum ServiceType { diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/StandingInstructionAccountType.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/StandingInstructionAccountType.java similarity index 90% rename from src/main/java/com/angkorteam/fintech/dto/enums/StandingInstructionAccountType.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/StandingInstructionAccountType.java index 9fc00942..c63cd044 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/StandingInstructionAccountType.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/StandingInstructionAccountType.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; /** * Created by socheatkhauv on 7/12/17. diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/Status.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/Status.java similarity index 89% rename from src/main/java/com/angkorteam/fintech/dto/enums/Status.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/Status.java index b6207c44..d0410dfd 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/Status.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/Status.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; /** * Created by socheatkhauv on 7/12/17. diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/enums/TableTypeEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/TableTypeEnum.java new file mode 100644 index 00000000..c7d2709a --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/TableTypeEnum.java @@ -0,0 +1,54 @@ +package com.angkorteam.fintech.client.enums; + +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; + +/** + * Created by socheatkhauv on 7/12/17. + */ +public enum TableTypeEnum { + + Client("m_client", "Client"), + Group("m_group", "Group"), + SavingAccount("m_savings_account", "Saving Account"), + Loan("m_loan", "Loan"), + Center("m_center", "Center"), + Office("m_office", "Office"); + + private String literal; + + private String description; + + TableTypeEnum(String literal, String description) { + this.literal = literal; + this.description = description; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + + public Option toOption() { + return new Option(this.name(), this.description); + } + + public static TableTypeEnum parseLiteral(String literal) { + for (TableTypeEnum value : TableTypeEnum.values()) { + if (value.getLiteral().equals(literal)) { + return value; + } + } + return null; + } + + public static Option optionLiteral(String literal) { + TableTypeEnum value = parseLiteral(literal); + if (value == null) { + return null; + } + return value.toOption(); + } +} diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/TransferType.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/TransferType.java similarity index 90% rename from src/main/java/com/angkorteam/fintech/dto/enums/TransferType.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/TransferType.java index f371f812..9608c0ca 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/TransferType.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/TransferType.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums; +package com.angkorteam.fintech.client.enums; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; /** * Created by socheatkhauv on 7/12/17. diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ValidationPolicy.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ValidationPolicy.java new file mode 100644 index 00000000..ed8bcb01 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/ValidationPolicy.java @@ -0,0 +1,47 @@ +package com.angkorteam.fintech.client.enums; + +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; + +public enum ValidationPolicy { + + Simple("1", "Simple"), Secure("2", "Secure"); + + private String literal; + + private String description; + + ValidationPolicy(String literal, String description) { + this.literal = literal; + this.description = description; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + + public Option toOption() { + return new Option(this.name(), this.description); + } + + public static TransferType parseLiteral(String literal) { + for (TransferType value : TransferType.values()) { + if (value.getLiteral().equals(literal)) { + return value; + } + } + return null; + } + + public static Option optionLiteral(String literal) { + TransferType value = parseLiteral(literal); + if (value == null) { + return null; + } + return value.toOption(); + } + +} diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/loan/AdvancePaymentsAdjustmentType.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/AdvancePaymentsAdjustmentType.java similarity index 90% rename from src/main/java/com/angkorteam/fintech/dto/enums/loan/AdvancePaymentsAdjustmentType.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/AdvancePaymentsAdjustmentType.java index 6328cd4f..f662d506 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/loan/AdvancePaymentsAdjustmentType.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/AdvancePaymentsAdjustmentType.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums.loan; +package com.angkorteam.fintech.client.enums.loan; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum AdvancePaymentsAdjustmentType { diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/loan/Amortization.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/Amortization.java similarity index 89% rename from src/main/java/com/angkorteam/fintech/dto/enums/loan/Amortization.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/Amortization.java index a727df12..30c40483 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/loan/Amortization.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/Amortization.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums.loan; +package com.angkorteam.fintech.client.enums.loan; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum Amortization { diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/loan/ClosureInterestCalculationRule.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/ClosureInterestCalculationRule.java similarity index 90% rename from src/main/java/com/angkorteam/fintech/dto/enums/loan/ClosureInterestCalculationRule.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/ClosureInterestCalculationRule.java index 93164ff6..7714f0fb 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/loan/ClosureInterestCalculationRule.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/ClosureInterestCalculationRule.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums.loan; +package com.angkorteam.fintech.client.enums.loan; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum ClosureInterestCalculationRule { diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/loan/DayInMonth.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/DayInMonth.java similarity index 88% rename from src/main/java/com/angkorteam/fintech/dto/enums/loan/DayInMonth.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/DayInMonth.java index 4318b6be..ec317e2f 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/loan/DayInMonth.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/DayInMonth.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums.loan; +package com.angkorteam.fintech.client.enums.loan; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum DayInMonth { diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/loan/Frequency.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/Frequency.java similarity index 89% rename from src/main/java/com/angkorteam/fintech/dto/enums/loan/Frequency.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/Frequency.java index c3634a05..4824fd81 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/loan/Frequency.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/Frequency.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums.loan; +package com.angkorteam.fintech.client.enums.loan; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum Frequency { diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/loan/FrequencyDay.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/FrequencyDay.java similarity index 90% rename from src/main/java/com/angkorteam/fintech/dto/enums/loan/FrequencyDay.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/FrequencyDay.java index cd23dd6d..34e76649 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/loan/FrequencyDay.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/FrequencyDay.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums.loan; +package com.angkorteam.fintech.client.enums.loan; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum FrequencyDay { diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/loan/FrequencyType.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/FrequencyType.java similarity index 89% rename from src/main/java/com/angkorteam/fintech/dto/enums/loan/FrequencyType.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/FrequencyType.java index 01a531cf..cef6bcd0 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/loan/FrequencyType.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/FrequencyType.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums.loan; +package com.angkorteam.fintech.client.enums.loan; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum FrequencyType { diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/loan/InterestCalculationPeriod.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/InterestCalculationPeriod.java similarity index 89% rename from src/main/java/com/angkorteam/fintech/dto/enums/loan/InterestCalculationPeriod.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/InterestCalculationPeriod.java index 6fa49df3..2302e9e5 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/loan/InterestCalculationPeriod.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/InterestCalculationPeriod.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums.loan; +package com.angkorteam.fintech.client.enums.loan; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum InterestCalculationPeriod { diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/loan/InterestMethod.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/InterestMethod.java similarity index 89% rename from src/main/java/com/angkorteam/fintech/dto/enums/loan/InterestMethod.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/InterestMethod.java index 0d7eab51..5da814a8 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/loan/InterestMethod.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/InterestMethod.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums.loan; +package com.angkorteam.fintech.client.enums.loan; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum InterestMethod { diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/loan/InterestRecalculationCompound.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/InterestRecalculationCompound.java similarity index 90% rename from src/main/java/com/angkorteam/fintech/dto/enums/loan/InterestRecalculationCompound.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/InterestRecalculationCompound.java index 0ae8c277..103e3dac 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/loan/InterestRecalculationCompound.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/InterestRecalculationCompound.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums.loan; +package com.angkorteam.fintech.client.enums.loan; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum InterestRecalculationCompound { diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/loan/NominalInterestRateType.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/NominalInterestRateType.java similarity index 89% rename from src/main/java/com/angkorteam/fintech/dto/enums/loan/NominalInterestRateType.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/NominalInterestRateType.java index 78dc787f..0cdd8e5e 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/loan/NominalInterestRateType.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/NominalInterestRateType.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums.loan; +package com.angkorteam.fintech.client.enums.loan; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum NominalInterestRateType { diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/loan/RepaidOn.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/RepaidOn.java similarity index 89% rename from src/main/java/com/angkorteam/fintech/dto/enums/loan/RepaidOn.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/RepaidOn.java index c09b8f8c..1cc742ca 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/loan/RepaidOn.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/RepaidOn.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums.loan; +package com.angkorteam.fintech.client.enums.loan; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum RepaidOn { diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/loan/RepaymentStrategy.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/RepaymentStrategy.java similarity index 92% rename from src/main/java/com/angkorteam/fintech/dto/enums/loan/RepaymentStrategy.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/RepaymentStrategy.java index 444d317b..2fbc9a78 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/loan/RepaymentStrategy.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/RepaymentStrategy.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums.loan; +package com.angkorteam.fintech.client.enums.loan; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum RepaymentStrategy { diff --git a/src/main/java/com/angkorteam/fintech/dto/enums/loan/WhenType.java b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/WhenType.java similarity index 88% rename from src/main/java/com/angkorteam/fintech/dto/enums/loan/WhenType.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/WhenType.java index d969b828..ac3f3ab2 100644 --- a/src/main/java/com/angkorteam/fintech/dto/enums/loan/WhenType.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/enums/loan/WhenType.java @@ -1,6 +1,6 @@ -package com.angkorteam.fintech.dto.enums.loan; +package com.angkorteam.fintech.client.enums.loan; -import com.angkorteam.framework.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; public enum WhenType { diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/function/AccountingApi.java b/bank-web/src/main/java/com/angkorteam/fintech/client/function/AccountingApi.java new file mode 100644 index 00000000..9466da71 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/function/AccountingApi.java @@ -0,0 +1,55 @@ +package com.angkorteam.fintech.client.function; + +import com.angkorteam.fintech.client.dto.*; + +public interface AccountingApi { + + /** + * Executes Periodic Accrual Accounting + * + * @param tenant + * @param token + * @param requestBody + * @return + */ + FineractResponse runAccrualCreate(String tenant, String token, PostRunAccrualRequest requestBody); + + FineractResponse glClosureCreate(String tenant, String token, PostGLClosureRequest requestBody); + + FineractResponse glClosureUpdate(String tenant, String token, long glClosureId, PutGLClosureRequest requestBody); + + FineractResponse glClosureDelete(String tenant, String token, long glClosureId); + + FineractResponse accountingRuleCreate(String tenant, String token, PostAccountingRulesRequest requestBody); + + FineractResponse accountingRuleUpdate(String tenant, String token, long accountingRuleId, PutAccountingRulesRequest requestBody); + + FineractResponse accountingRuleDelete(String tenant, String token, long accountingRuleId); + + FineractResponse financialActivityAccountCreate(String tenant, String token, PostFinancialActivityAccountsRequest requestBody); + + FineractResponse financialActivityAccountUpdate(String tenant, String token, long mappingId, PutFinancialActivityAccountsRequest requestBody); + + FineractResponse financialActivityAccountDelete(String tenant, String token, long mappingId); + + FineractResponse glAccountCreate(String tenant, String token, PostGLAccountsRequest requestBody); + + FineractResponse glAccountUpdate(String tenant, String token, long glAccountId, PutGLAccountsRequest requestBody); + + FineractResponse glAccountDelete(String tenant, String token, long glAccountId); + + FineractResponse journalEntryCreate(String tenant, String token, PostJournalEntriesRequest requestBody); + + FineractResponse journalEntryUpdate(String tenant, String token, PostJournalEntryUpdateRequest requestBody); + + FineractResponse journalEntryDefine(String tenant, String token, PostJournalEntriesRequest requestBody); + + FineractResponse journalEntryReverse(String tenant, String token, long transactionId, PostJournalEntryReverseRequest requestBody); + + FineractResponse provisioningEntryCreate(String tenant, String token, PostProvisioningEntriesRequest requestBody); + + FineractResponse provisioningJournalEntryCreate(String tenant, String token, long entryId); + + FineractResponse provisioningEntryReCreate(String tenant, String token, long entryId); + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/function/AdhocApi.java b/bank-web/src/main/java/com/angkorteam/fintech/client/function/AdhocApi.java new file mode 100644 index 00000000..ab7fdcf2 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/function/AdhocApi.java @@ -0,0 +1,15 @@ +package com.angkorteam.fintech.client.function; + +import com.angkorteam.fintech.client.dto.FineractResponse; +import com.angkorteam.fintech.client.dto.PostAdhocRequest; +import com.angkorteam.fintech.client.dto.PutAdhocRequest; + +public interface AdhocApi { + + FineractResponse adhocCreate(String tenant, String token, PostAdhocRequest requestBody); + + FineractResponse adhocUpdate(String tenant, String token, long adhocId, PutAdhocRequest requestBody); + + FineractResponse adhocDelete(String tenant, String token, long adhocId); + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/function/AdministrationApi.java b/bank-web/src/main/java/com/angkorteam/fintech/client/function/AdministrationApi.java new file mode 100644 index 00000000..8dbb2985 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/function/AdministrationApi.java @@ -0,0 +1,32 @@ +package com.angkorteam.fintech.client.function; + +import com.angkorteam.fintech.client.dto.*; +import com.angkorteam.fintech.client.enums.PutUserRequest; + +import java.util.Map; + +public interface AdministrationApi { + + FineractResponse passwordPreferenceUpdate(String tenant, String token, PutPasswordPreferencesTemplateRequest requestBody); + + FineractResponse userCreate(String tenant, String token, PostUserRequest requestBody); + + FineractResponse userUpdate(String tenant, String token, long userId, PutUserRequest requestBody); + + FineractResponse userDelete(String tenant, String token, long userId); + + FineractResponse makerCheckerPermissionUpdate(String tenant, String token, Map requestBody); + + FineractResponse roleCreate(String tenant, String token, RoleRequest requestBody); + + FineractResponse roleUpdate(String tenant, String token, long roleId, RoleRequest requestBody); + + FineractResponse roleDisable(String tenant, String token, long roleId); + + FineractResponse roleEnable(String tenant, String token, long roleId); + + FineractResponse roleDelete(String tenant, String token, long roleId); + + FineractResponse rolePermissionUpdate(String tenant, String token, long roleId, Map permissions); + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/function/BatchApi.java b/bank-web/src/main/java/com/angkorteam/fintech/client/function/BatchApi.java new file mode 100644 index 00000000..23c3540e --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/function/BatchApi.java @@ -0,0 +1,10 @@ +package com.angkorteam.fintech.client.function; + +import com.angkorteam.fintech.client.dto.FineractResponse; +import com.angkorteam.fintech.client.dto.PostBatchesRequest; + +public interface BatchApi { + + FineractResponse batchRequest(String tenant, String token, boolean enclosingTransaction, PostBatchesRequest requestBody); + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/function/CommandApi.java b/bank-web/src/main/java/com/angkorteam/fintech/client/function/CommandApi.java new file mode 100644 index 00000000..a952723b --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/function/CommandApi.java @@ -0,0 +1,13 @@ +package com.angkorteam.fintech.client.function; + +import com.angkorteam.fintech.client.dto.FineractResponse; + +public interface CommandApi { + + FineractResponse makerCheckerApprove(String tenant, String token, long auditId); + + FineractResponse makerCheckerReject(String tenant, String token, long auditId); + + FineractResponse makerCheckerDelete(String tenant, String token, long auditId); + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/function/InfrastructureApi.java b/bank-web/src/main/java/com/angkorteam/fintech/client/function/InfrastructureApi.java new file mode 100644 index 00000000..5de8f5dc --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/function/InfrastructureApi.java @@ -0,0 +1,174 @@ +package com.angkorteam.fintech.client.function; + +import com.angkorteam.fintech.client.dto.*; +import com.angkorteam.fintech.client.enums.TableTypeEnum; + +import java.util.Map; + +public interface InfrastructureApi { + + FineractResponse accountNumberFormatCreate(String tenant, String token, PostAccountNumberFormatsRequest requestBody); + + FineractResponse accountNumberFormatUpdate(String tenant, String token, long accountNumberFormatId, PutAccountNumberFormatsRequest requestBody); + + FineractResponse accountNumberFormatDelete(String tenant, String token, long accountNumberFormatId); + + FineractResponse cacheSwitch(String tenant, String token, PutCachesRequest requestBody); + + FineractResponse emailCreate(String tenant, String token, PostEmailRequest requestBody); + + FineractResponse emailUpdate(String tenant, String token, long resourceId, PutEmailRequest requestBody); + + FineractResponse emailDelete(String tenant, String token, long resourceId); + + FineractResponse emailConfigurationUpdate(String tenant, String token, PutEmailConfigurationRequest requestBody); + + FineractResponse emailCampaignCreate(String tenant, String token, PostEmailCampaignRequest requestBody); + + FineractResponse emailCampaignUpdate(String tenant, String token, long resourceId, PutEmailCampaignRequest requestBody); + + FineractResponse emailCampaignActivate(String tenant, String token, long resourceId, PostEmailCampaignActivationRequest requestBody); + + FineractResponse emailCampaignReactivate(String tenant, String token, long resourceId, PostEmailCampaignActivationRequest requestBody); + + FineractResponse emailCampaignClose(String tenant, String token, long resourceId, PostEmailCampaignCloseRequest requestBody); + + FineractResponse emailCampaignPreview(String tenant, String token); + + FineractResponse emailCampaignDelete(String tenant, String token, long resourceId); + + FineractResponse smsCampaignCreate(String tenant, String token); + + FineractResponse smsCampaignUpdate(String tenant, String token, long campaignId); + + FineractResponse smsCampaignDelete(String tenant, String token, long campaignId); + + FineractResponse smsCampaignPreview(String tenant, String token, long campaignId); + + FineractResponse smsCampaignReactivate(String tenant, String token, long campaignId); + + FineractResponse smsCampaignActivate(String tenant, String token, long campaignId); + + FineractResponse smsCampaignClose(String tenant, String token, long campaignId); + + FineractResponse codeCreate(String tenant, String token, CodeRequest requestBody); + + FineractResponse codeUpdate(String tenant, String token, long codeId, CodeRequest requestBody); + + FineractResponse codeDelete(String tenant, String token, long codeId); + + FineractResponse codeValueCreate(String tenant, String token, long codeId, PostCodeValueRequest requestBody); + + FineractResponse codeValueUpdate(String tenant, String token, long codeId, long codeValueId, PutCodeValueRequest requestBody); + + FineractResponse codeValueDelete(String tenant, String token, long codeId, long codeValueId); + + FineractResponse externalServiceUpdate(String tenant, String token); + + FineractResponse configurationUpdate(String tenant, String token); + + FineractResponse creditBureauUpdate(String tenant, String token); + + FineractResponse creditBureauMappingUpdate(String tenant, String token); + + FineractResponse creditBureauOrganisationCreate(String tenant, String token); + + FineractResponse creditBureauProductMappingCreate(String tenant, String token); + + FineractResponse datatableCreate(String tenant, String token, PostDataTableRequest requestBody); + + FineractResponse datatableUpdate(String tenant, String token, String datatableName, PutDataTableRequest requestBody); + + FineractResponse datatableDelete(String tenant, String token, String datatableName); + + FineractResponse datatableRegister(String tenant, String token, String datatable, TableTypeEnum apptable, PostDataTableRegisterRequest requestBody); + + FineractResponse datatableDeregister(String tenant, String token, String datatable); + + FineractResponse datatableEntryCreate(String tenant, String token, String datatable, long apptableId, Map requestBody); + + FineractResponse datatableEntryOne2OneUpdate(String tenant, String token, String datatable, long apptableId, Map requestBody); + + FineractResponse datatableEntryOne2ManyUpdate(String tenant, String token, String datatable, long apptableId, long datatableId, Map requestBody); + + FineractResponse datatableEntryClear(String tenant, String token, String datatable, long apptableId); + + FineractResponse datatableEntryDelete(String tenant, String token, String datatable, long apptableId, long datatableId); + + FineractResponse datatableEntityCheckCreate(String tenant, String token, PostDatatableEntityCheckRequest requestBody); + + FineractResponse datatableEntityCheckDelete(String tenant, String token, long entityDatatableCheckId); + + FineractResponse reportCreate(String tenant, String token); + + FineractResponse reportUpdate(String tenant, String token); + + FineractResponse reportDelete(String tenant, String token); + + FineractResponse documentCreate(String tenant, String token); + + FineractResponse documentUpdate(String tenant, String token); + + FineractResponse documentDelete(String tenant, String token); + + FineractResponse imageCreate(String tenant, String token); + + FineractResponse imageCreate(String tenant, String token, long abc); + + FineractResponse imageUpdate(String tenant, String token); + + FineractResponse imageUpdate(String tenant, String token, long abc); + + FineractResponse imageDelete(String tenant, String token); + + FineractResponse entityToEntityCreate(String tenant, String token, long relId, EntityToEntityRequest requestBody); + + FineractResponse entityToEntityUpdate(String tenant, String token, long mapId, EntityToEntityRequest requestBody); + + FineractResponse entityToEntityDelete(String tenant, String token, long mapId); + + FineractResponse deviceRegistration(String tenant, String token); + + FineractResponse deviceUpdate(String tenant, String token); + + FineractResponse deviceDelete(String tenant, String token); + + FineractResponse hookCreate(String tenant, String token, PostHookRequest requestBody); + + FineractResponse hookUpdate(String tenant, String token, long hookId, PutHookRequest requestBody); + + FineractResponse hookDelete(String tenant, String token, long hookId); + + FineractResponse jobStart(String tenant, String token); + + FineractResponse jobStop(String tenant, String token); + + FineractResponse jobExecute(String tenant, String token); + + FineractResponse jobDetailUpdate(String tenant, String token); + + FineractResponse reportMailingCreate(String tenant, String token); + + FineractResponse reportMailingUpdate(String tenant, String token); + + FineractResponse reportMailingDelete(String tenant, String token); + + PostAuthenticationResponse authentication(String tenant, AuthenticateRequest requestBody); + + PostAuthenticationResponse tokenRequest(String tenant, AuthenticateRequest requestBody); + + PostAuthenticationResponse tokenValidation(String tenant, AuthenticateRequest requestBody); + + PostAuthenticationResponse tokenUpdate(String tenant, AuthenticateRequest requestBody); + + PostAuthenticationResponse twoFactorConfigurationUpdate(String tenant, AuthenticateRequest requestBody); + + FineractResponse smsCreate(String tenant, String token); + + FineractResponse smsUpdate(String tenant, String token); + + FineractResponse smsDelete(String tenant, String token); + + FineractResponse likelihoodUpdate(String tenant, String token); + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/function/InteroperationApi.java b/bank-web/src/main/java/com/angkorteam/fintech/client/function/InteroperationApi.java new file mode 100644 index 00000000..c73e0f3f --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/function/InteroperationApi.java @@ -0,0 +1,21 @@ +package com.angkorteam.fintech.client.function; + +import com.angkorteam.fintech.client.dto.FineractResponse; +import com.angkorteam.fintech.client.dto.PutStaffRequest; + +public interface InteroperationApi { + + FineractResponse interoperationTransfer(String tenant, String token, long staffId, PutStaffRequest requestBody); + + FineractResponse interoperationQuoteCreate(String tenant, String token, long staffId, PutStaffRequest requestBody); + + FineractResponse interoperationTransactionCreate(String tenant, String token, long staffId, PutStaffRequest requestBody); + + FineractResponse accountIdentifierDelete(String tenant, String token, long staffId, PutStaffRequest requestBody); + + FineractResponse accountIdentifierDelete(String tenant, String token, long staffId, PutStaffRequest requestBody, long abc); + + FineractResponse accountIdentifierRegister(String tenant, String token, long staffId, PutStaffRequest requestBody); + + FineractResponse accountIdentifierRegister(String tenant, String token, long staffId, PutStaffRequest requestBody, long abc); +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/function/NotificationApi.java b/bank-web/src/main/java/com/angkorteam/fintech/client/function/NotificationApi.java new file mode 100644 index 00000000..eb91fc98 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/function/NotificationApi.java @@ -0,0 +1,9 @@ +package com.angkorteam.fintech.client.function; + +import com.angkorteam.fintech.client.dto.FineractResponse; + +public interface NotificationApi { + + FineractResponse notificationUpdate(String tenant, String token, long auditId); + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/function/OrganisationApi.java b/bank-web/src/main/java/com/angkorteam/fintech/client/function/OrganisationApi.java new file mode 100644 index 00000000..c5a8e311 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/function/OrganisationApi.java @@ -0,0 +1,27 @@ +package com.angkorteam.fintech.client.function; + +import com.angkorteam.fintech.client.dto.*; + +public interface OrganisationApi { + + FineractResponse officeTransactionDelete(String tenant, String token, long transactionId); + + FineractResponse officeTransactionCreate(String tenant, String token, PostOfficeTransactionRequest requestBody); + + FineractResponse officeUpdate(String tenant, String token, long officeId, PutOfficeRequest requestBody); + + FineractResponse officeCreate(String tenant, String token, PostOfficeRequest requestBody); + + FineractResponse workingDayUpdate(String tenant, String token, PutWorkingDaysRequest requestBody); + + FineractResponse currencyUpdate(String tenant, String token, PutCurrenciesRequest requestBody); + + FineractResponse tellerCreate(String tenant, String token, PostTellersRequest requestBody); + + FineractResponse holidayCreate(String tenant, String token, PostHolidaysRequest requestBody); + + FineractResponse staffCreate(String tenant, String token, PostStaffRequest requestBody); + + FineractResponse staffUpdate(String tenant, String token, long staffId, PutStaffRequest requestBody); + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/function/PortfolioApi.java b/bank-web/src/main/java/com/angkorteam/fintech/client/function/PortfolioApi.java new file mode 100644 index 00000000..8c848bc8 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/function/PortfolioApi.java @@ -0,0 +1,31 @@ +package com.angkorteam.fintech.client.function; + +import com.angkorteam.fintech.client.dto.*; + +public interface PortfolioApi { + + FineractResponse fundCreate(String tenant, String token, PostFundsRequest requestBody); + + FineractResponse fundUpdate(String tenant, String token, long fundId, PutFundsFundIdRequest requestBody); + + FineractResponse paymentTypeCreate(String tenant, String token, PostPaymentTypesRequest requestBody); + + FineractResponse paymentTypeUpdate(String tenant, String token, long paymentTypeId, PutPaymentTypesPaymentTypeIdRequest requestBody); + + FineractResponse paymentTypeDelete(String tenant, String token, long paymentTypeId); + + FineractResponse taxComponentCreate(String tenant, String token, PostTaxesComponentsRequest requestBody); + + FineractResponse taxGroupCreate(String tenant, String token, PostTaxesGroupRequest requestBody); + + FineractResponse floatingRateCreate(String tenant, String token, PostFloatingRatesRequest requestBody); + + FineractResponse chargeCreate(String tenant, String token, PostChargesRequest requestBody); + + FineractResponse clientCreate(String tenant, String token, PostClientRequest requestBody); + + FineractResponse groupCreate(String tenant, String token, PostGroupRequest requestBody); + + FineractResponse centerCreate(String tenant, String token, PostCenterRequest requestBody); + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/function/SpmApi.java b/bank-web/src/main/java/com/angkorteam/fintech/client/function/SpmApi.java new file mode 100644 index 00000000..cfb1bfa8 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/function/SpmApi.java @@ -0,0 +1,22 @@ +package com.angkorteam.fintech.client.function; + +import com.angkorteam.fintech.client.dto.FineractResponse; +import com.angkorteam.fintech.client.dto.PostLookupTableRequest; +import com.angkorteam.fintech.client.dto.PostScoreRequest; +import com.angkorteam.fintech.client.dto.SurveyRequest; + +public interface SpmApi { + + FineractResponse surveyCreate(String tenant, String token, SurveyRequest requestBody); + + FineractResponse surveyUpdate(String tenant, String token, long surveyId, SurveyRequest requestBody); + + FineractResponse surveyDeactivate(String tenant, String token, long surveyId); + + FineractResponse surveyActivate(String tenant, String token, long surveyId); + + FineractResponse surveyScoreCreate(String tenant, String token, long surveyId, PostScoreRequest requestBody); + + FineractResponse surveyLookupTableCreate(String tenant, String token, long surveyId, PostLookupTableRequest requestBody); + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/renums/AccountNumberPrefixType.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/AccountNumberPrefixType.java new file mode 100644 index 00000000..c4b00435 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/AccountNumberPrefixType.java @@ -0,0 +1,40 @@ +package com.angkorteam.fintech.client.renums; + +public enum AccountNumberPrefixType { + + OfficeName("1", "Office Name"), + ClientType("101", "Client Type"), + LoanProductShortName("201", "Loan Product Short Name"), + SavingProductShortName("301", "Saving Product Short Name"); + + public static final String ID = ""; + + private final String literal; + + private final String description; + + private final Long enumType; + + AccountNumberPrefixType(String literal, String description) { + this(literal, description, 0l); + } + + AccountNumberPrefixType(String literal, String description, Long enumType) { + this.literal = literal; + this.description = description; + this.enumType = enumType; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + + public Long getEnumType() { + return enumType; + } + +} diff --git a/src/main/java/com/angkorteam/fintech/dto/constant/AccountTypeTypeEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/AccountTypeTypeEnum.java similarity index 81% rename from src/main/java/com/angkorteam/fintech/dto/constant/AccountTypeTypeEnum.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/renums/AccountTypeTypeEnum.java index dbce2062..f9c83be1 100644 --- a/src/main/java/com/angkorteam/fintech/dto/constant/AccountTypeTypeEnum.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/AccountTypeTypeEnum.java @@ -1,8 +1,11 @@ -package com.angkorteam.fintech.dto.constant; +package com.angkorteam.fintech.client.renums; public enum AccountTypeTypeEnum { - Invalid("0", "Invalid"), Individual("1", "Individual"), Group("2", "Group"), JLG("3", "JLG"); + Invalid("0", "Invalid"), + Individual("1", "Individual"), + Group("2", "Group"), + JLG("3", "JLG"); public static final String ID = "account_type_type_enum"; diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/renums/AccrualAccountsForLoanTypeEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/AccrualAccountsForLoanTypeEnum.java new file mode 100644 index 00000000..d3c6e730 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/AccrualAccountsForLoanTypeEnum.java @@ -0,0 +1,48 @@ +package com.angkorteam.fintech.client.renums; + +public enum AccrualAccountsForLoanTypeEnum { + + FundSource("1", "Fund Source"), + LoanPortfolio("2", "Loan Portfolio"), + InterestOnLoans("3", "Interest On Loans"), + IncomeFromFees("4", "Income From Fees"), + IncomeFromPenalties("5", "Income From Penalties"), + LossesWrittenOff("6", "Losses Written Off"), + InterestReceivable("7", "Interest Receivable"), + FeesReceivable("8", "Fees Receivable"), + PenaltiesReceivable("9", "Penalties Receivable"), + TransfersSuspense("10", "Transfers Suspense"), + OverPayment("11", "Over Payment"), + IncomeFormRecovery("12", "Income Form Recovery"); + + public static final String ID = "accrual_accounts_for_loan_type_enum"; + + private final String literal; + + private final String description; + + private final Long enumType; + + AccrualAccountsForLoanTypeEnum(String literal, String description) { + this(literal, description, 0l); + } + + AccrualAccountsForLoanTypeEnum(String literal, String description, Long enumType) { + this.literal = literal; + this.description = description; + this.enumType = enumType; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + + public Long getEnumType() { + return enumType; + } + +} diff --git a/src/main/java/com/angkorteam/fintech/dto/constant/AmortizationMethodEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/AmortizationMethodEnum.java similarity index 83% rename from src/main/java/com/angkorteam/fintech/dto/constant/AmortizationMethodEnum.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/renums/AmortizationMethodEnum.java index dbc75e96..e9ca250a 100644 --- a/src/main/java/com/angkorteam/fintech/dto/constant/AmortizationMethodEnum.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/AmortizationMethodEnum.java @@ -1,8 +1,9 @@ -package com.angkorteam.fintech.dto.constant; +package com.angkorteam.fintech.client.renums; public enum AmortizationMethodEnum { - PrinciplePayments("0", "Equal Principle Payments"), Installments("1", "Equal Installments"); + PrinciplePayments("0", "Equal Principle Payments"), + Installments("1", "Equal Installments"); public static final String ID = "amortization_method_enum"; diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/renums/CalendarTypeEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/CalendarTypeEnum.java new file mode 100644 index 00000000..a08b0505 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/CalendarTypeEnum.java @@ -0,0 +1,44 @@ +package com.angkorteam.fintech.client.renums; + +public enum CalendarTypeEnum { + + Invalid("0", "Invalid"), + Clients("1", "Clients"), + Groups("2", "Groups"), + Loans("3", "Loans"), + Centers("4", "Centers"), + Savings("5", "Savings"), + LoanRecalculationRestDetail("6", "Loan Recalculation Rest Detail"), + LoanRecalculationCompoundingDetail("7", "Loan Recalculation Compounding Detail"); + + public static final String ID = "calendar_type_enum"; + + private final String literal; + + private final String description; + + private final Long enumType; + + CalendarTypeEnum(String literal, String description) { + this(literal, description, 0l); + } + + CalendarTypeEnum(String literal, String description, Long enumType) { + this.literal = literal; + this.description = description; + this.enumType = enumType; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + + public Long getEnumType() { + return enumType; + } + +} diff --git a/src/main/java/com/angkorteam/fintech/dto/constant/CashAccountForSharesTypeEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/CashAccountForSharesTypeEnum.java similarity index 77% rename from src/main/java/com/angkorteam/fintech/dto/constant/CashAccountForSharesTypeEnum.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/renums/CashAccountForSharesTypeEnum.java index 916c6ef5..17fce562 100644 --- a/src/main/java/com/angkorteam/fintech/dto/constant/CashAccountForSharesTypeEnum.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/CashAccountForSharesTypeEnum.java @@ -1,8 +1,11 @@ -package com.angkorteam.fintech.dto.constant; +package com.angkorteam.fintech.client.renums; public enum CashAccountForSharesTypeEnum { - SharesReference("1", "Shares Reference"), SharesSuspense("2", "Shares Suspense"), IncomeFromFees("3", "Income From Fees"), SharesEquity("4", "Shares Equity"); + SharesReference("1", "Shares Reference"), + SharesSuspense("2", "Shares Suspense"), + IncomeFromFees("3", "Income From Fees"), + SharesEquity("4", "Shares Equity"); public static final String ID = "cash_account_for_shares_type_enum"; diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/renums/CashAccountsForLoanTypeEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/CashAccountsForLoanTypeEnum.java new file mode 100644 index 00000000..e88237cd --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/CashAccountsForLoanTypeEnum.java @@ -0,0 +1,44 @@ +package com.angkorteam.fintech.client.renums; + +public enum CashAccountsForLoanTypeEnum { + + FundSource("1", "Fund Source"), + LoanPortfolio("2", "Loan Portfolio"), + InterestOnLoans("3", "Interest On Loans"), + IncomeFromFees("4", "Income From Fees"), + IncomeFromPenalties("5", "Income From Penalties"), + LossesWrittenOff("6", "Losses Written Off"), + TransfersSuspense("10", "Transfers Suspense"), + OverPayment("11", "Over Payment"), + IncomeFromRecovery("12", "Income From Recovery"); + + public static final String ID = "cash_accounts_for_loan_type_enum"; + + private final String literal; + + private final String description; + + private final Long enumType; + + CashAccountsForLoanTypeEnum(String literal, String description) { + this(literal, description, 0l); + } + + CashAccountsForLoanTypeEnum(String literal, String description, Long enumType) { + this.literal = literal; + this.description = description; + this.enumType = enumType; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + + public Long getEnumType() { + return enumType; + } +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/renums/CashAccountsForSavingsTypeEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/CashAccountsForSavingsTypeEnum.java new file mode 100644 index 00000000..5ff1a537 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/CashAccountsForSavingsTypeEnum.java @@ -0,0 +1,43 @@ +package com.angkorteam.fintech.client.renums; + +public enum CashAccountsForSavingsTypeEnum { + + SavingsReference("1", "Savings Reference"), + SavingsControl("2", "Savings Control"), + InterestOnSavings("3", "Interest On Savings"), + IncomeFromFees("4", "Income From Fees"), + IncomeFromPenalties("5", "Income From Penalties"), + TransfersSuspense("10", "Transfers Suspense"), + OverdraftPortfolioControl("11", "Overdraft Portfolio Control"), + IncomeFromInterest("12", "Income From Interest"); + + public static final String ID = "cash_accounts_for_savings_type_enum"; + + private final String literal; + + private final String description; + + private final Long enumType; + + CashAccountsForSavingsTypeEnum(String literal, String description) { + this(literal, description, 0l); + } + + CashAccountsForSavingsTypeEnum(String literal, String description, Long enumType) { + this.literal = literal; + this.description = description; + this.enumType = enumType; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + + public Long getEnumType() { + return enumType; + } +} diff --git a/src/main/java/com/angkorteam/fintech/dto/constant/ClientTransactionTypeEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/ClientTransactionTypeEnum.java similarity index 86% rename from src/main/java/com/angkorteam/fintech/dto/constant/ClientTransactionTypeEnum.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/renums/ClientTransactionTypeEnum.java index 62991e17..844dd3ed 100644 --- a/src/main/java/com/angkorteam/fintech/dto/constant/ClientTransactionTypeEnum.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/ClientTransactionTypeEnum.java @@ -1,8 +1,9 @@ -package com.angkorteam.fintech.dto.constant; +package com.angkorteam.fintech.client.renums; public enum ClientTransactionTypeEnum { - PayCharge("1", "Pay Charge"), WaiveCharge("2 ", "Waive Charge"); + PayCharge("1", "Pay Charge"), + WaiveCharge("2", "Waive Charge"); public static final String ID = "client_transaction_type_enum"; diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/renums/DataTableCategoryEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/DataTableCategoryEnum.java new file mode 100644 index 00000000..82dfd811 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/DataTableCategoryEnum.java @@ -0,0 +1,25 @@ +package com.angkorteam.fintech.client.renums; + +public enum DataTableCategoryEnum { + + DEFAULT("100", "Default"), + PPI("200", "PPI"); + + private final String literal; + + private final String description; + + DataTableCategoryEnum(String literal, String description) { + this.literal = literal; + this.description = description; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/renums/EntityAccountType.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/EntityAccountType.java new file mode 100644 index 00000000..379ab44f --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/EntityAccountType.java @@ -0,0 +1,42 @@ +package com.angkorteam.fintech.client.renums; + +public enum EntityAccountType { + + Client("1", "Client"), + Loan("2", "Loan"), + Savings("3", "Savings"), + Center("4", "Center"), + Group("5", "Group"), + Shares("6", "Shares"); + + public static final String ID = "entity_account_type_enum"; + + private final String literal; + + private final String description; + + private final Long enumType; + + EntityAccountType(String literal, String description) { + this(literal, description, 0l); + } + + EntityAccountType(String literal, String description, Long enumType) { + this.literal = literal; + this.description = description; + this.enumType = enumType; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + + public Long getEnumType() { + return enumType; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/renums/EntityTypeEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/EntityTypeEnum.java new file mode 100644 index 00000000..a8fe7b7f --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/EntityTypeEnum.java @@ -0,0 +1,28 @@ +package com.angkorteam.fintech.client.renums; + +public enum EntityTypeEnum { + + Office("1", "Office"), + Loan("2", "Loan Product"), + Saving("3", "Saving Product"), + FeeCharge("4", "Fee & Charge"), + Role("5", "Role"); + + private final String literal; + + private final String description; + + EntityTypeEnum(String literal, String description) { + this.literal = literal; + this.description = description; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/renums/FinancialActivity.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/FinancialActivity.java new file mode 100644 index 00000000..580d1603 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/FinancialActivity.java @@ -0,0 +1,72 @@ +package com.angkorteam.fintech.client.renums; + +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; + +public enum FinancialActivity { + + AssetTransfer("100", "Asset Transfer", GLAccountType.Asset), + CashAtMainVault("101", "Main Cash Account or Cash at Vault", GLAccountType.Asset), + CashAtTeller("102", "Cash at Tellers/Cashiers", GLAccountType.Asset), + AssetFundSource("103", "Fund Source", GLAccountType.Asset), + LiabilityTransfer("200", "Liability Transfer", GLAccountType.Liability), + PayableDividends("201", "Payable Dividends", GLAccountType.Liability), + OpeningBalancesTransferContra("300", "Opening Balances Transfer Contra", GLAccountType.Equity); + + public static final String ID = "financial_activity_type_enum"; + + private final String literal; + + private final String description; + + private final Long enumType; + + private GLAccountType accountType; + + FinancialActivity(String literal, String description, GLAccountType accountType) { + this(literal, description, accountType, 0l); + } + + FinancialActivity(String literal, String description, GLAccountType accountType, Long enumType) { + this.literal = literal; + this.description = description; + this.enumType = enumType; + this.accountType = accountType; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + + public Long getEnumType() { + return enumType; + } + + public GLAccountType getAccountType() { + return accountType; + } + + public Option toOption() { + return new Option(this.name(), this.description); + } + + public static FinancialActivity parseLiteral(String literal) { + for (FinancialActivity value : FinancialActivity.values()) { + if (value.getLiteral().equals(literal)) { + return value; + } + } + return null; + } + + public static Option optionLiteral(String literal) { + FinancialActivity value = parseLiteral(literal); + if (value == null) { + return null; + } + return value.toOption(); + } +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/renums/GLAccountType.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/GLAccountType.java new file mode 100644 index 00000000..8de374f4 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/GLAccountType.java @@ -0,0 +1,40 @@ +package com.angkorteam.fintech.client.renums; + +public enum GLAccountType { + + Asset("1", "Asset"), + Liability("2", "Liability"), + Equity("3", "Equity"), + Income("4", "Income"), + Expense("5", "Expense"); + + public static final String ID = "glaccount_type_enum"; + + private final String literal; + + private final String description; + + private final Long enumType; + + GLAccountType(String literal, String description) { + this(literal, description, 0l); + } + + GLAccountType(String literal, String description, Long enumType) { + this.literal = literal; + this.description = description; + this.enumType = enumType; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + + public Long getEnumType() { + return enumType; + } +} diff --git a/src/main/java/com/angkorteam/fintech/dto/constant/InterestCalculatedInPeriodEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/InterestCalculatedInPeriodEnum.java similarity index 86% rename from src/main/java/com/angkorteam/fintech/dto/constant/InterestCalculatedInPeriodEnum.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/renums/InterestCalculatedInPeriodEnum.java index daac7ba0..46c2400e 100644 --- a/src/main/java/com/angkorteam/fintech/dto/constant/InterestCalculatedInPeriodEnum.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/InterestCalculatedInPeriodEnum.java @@ -1,8 +1,9 @@ -package com.angkorteam.fintech.dto.constant; +package com.angkorteam.fintech.client.renums; public enum InterestCalculatedInPeriodEnum { - Daily("0", "Daily"), Same("1", "Same as repayment period"); + Daily("0", "Daily"), + Same("1", "Same as repayment period"); public static final String ID = "interest_calculated_in_period_enum"; diff --git a/src/main/java/com/angkorteam/fintech/dto/constant/InterestMethodEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/InterestMethodEnum.java similarity index 85% rename from src/main/java/com/angkorteam/fintech/dto/constant/InterestMethodEnum.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/renums/InterestMethodEnum.java index aa9fbaf8..8d9738dd 100644 --- a/src/main/java/com/angkorteam/fintech/dto/constant/InterestMethodEnum.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/InterestMethodEnum.java @@ -1,8 +1,9 @@ -package com.angkorteam.fintech.dto.constant; +package com.angkorteam.fintech.client.renums; public enum InterestMethodEnum { - DecliningBalance("0", "Declining Balance"), Flat("1", "Flat"); + DecliningBalance("0", "Declining Balance"), + Flat("1", "Flat"); public static final String ID = "interest_method_enum"; diff --git a/src/main/java/com/angkorteam/fintech/dto/constant/InterestPeriodFrequencyEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/InterestPeriodFrequencyEnum.java similarity index 87% rename from src/main/java/com/angkorteam/fintech/dto/constant/InterestPeriodFrequencyEnum.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/renums/InterestPeriodFrequencyEnum.java index 1dd4e8bd..9a17b334 100644 --- a/src/main/java/com/angkorteam/fintech/dto/constant/InterestPeriodFrequencyEnum.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/InterestPeriodFrequencyEnum.java @@ -1,8 +1,9 @@ -package com.angkorteam.fintech.dto.constant; +package com.angkorteam.fintech.client.renums; public enum InterestPeriodFrequencyEnum { - Month("2", "Per month"), Year("3", "Per year"); + Month("2", "Per month"), + Year("3", "Per year"); public static final String ID = "interest_period_frequency_enum"; diff --git a/src/main/java/com/angkorteam/fintech/dto/constant/JournalEntryTypeTypeEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/JournalEntryTypeTypeEnum.java similarity index 88% rename from src/main/java/com/angkorteam/fintech/dto/constant/JournalEntryTypeTypeEnum.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/renums/JournalEntryTypeTypeEnum.java index df6b972e..8d026b6c 100644 --- a/src/main/java/com/angkorteam/fintech/dto/constant/JournalEntryTypeTypeEnum.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/JournalEntryTypeTypeEnum.java @@ -1,8 +1,9 @@ -package com.angkorteam.fintech.dto.constant; +package com.angkorteam.fintech.client.renums; public enum JournalEntryTypeTypeEnum { - Credit("1", "Credit"), Debit("2", "Debit"); + Credit("1", "Credit"), + Debit("2", "Debit"); public static final String ID = "journal_entry_type_type_enum"; diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/renums/LoanStatus.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/LoanStatus.java new file mode 100644 index 00000000..0d362385 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/LoanStatus.java @@ -0,0 +1,45 @@ +package com.angkorteam.fintech.client.renums; + +public enum LoanStatus { + + Invalid("0", "Invalid"), + SubmittedAndAwaitingApproval("100", "Submitted And Awaiting Approval"), + Approved("200", "Approved"), + Active("300", "Active"), + WithdrawnByClient("400", "Withdrawn By Client"), + Rejected("500", "Rejected"), + Closed("600", "Closed"), + WrittenOff("601", "Written Off"), + Rescheduled("602", "Rescheduled"), + OverPaid("700", "OverPaid"); + + public static final String ID = "loan_status_id"; + + private final String literal; + + private final String description; + + private final Long enumType; + + LoanStatus(String literal, String description) { + this(literal, description, 0l); + } + + LoanStatus(String literal, String description, Long enumType) { + this.literal = literal; + this.description = description; + this.enumType = enumType; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + + public Long getEnumType() { + return enumType; + } +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/renums/LoanTransactionStrategy.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/LoanTransactionStrategy.java new file mode 100644 index 00000000..8ef7b815 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/LoanTransactionStrategy.java @@ -0,0 +1,39 @@ +package com.angkorteam.fintech.client.renums; + +public enum LoanTransactionStrategy { + + MifosStandardStrategy("1", "Mifos Standard Strategy"), + HeavensFamilyStrategy("2", "Heavens Family Strategy"), + CreocoreStrategy("3", "Creocore Strategy"), + RbiIndiaStrategy("4", "RBI India Strategy"); + + public static final String ID = "loan_transaction_strategy_id"; + + private final String literal; + + private final String description; + + private final Long enumType; + + LoanTransactionStrategy(String literal, String description) { + this(literal, description, 0l); + } + + LoanTransactionStrategy(String literal, String description, Long enumType) { + this.literal = literal; + this.description = description; + this.enumType = enumType; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + + public Long getEnumType() { + return enumType; + } +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/renums/LoanTransactionTypeEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/LoanTransactionTypeEnum.java new file mode 100644 index 00000000..dfb1b8fd --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/LoanTransactionTypeEnum.java @@ -0,0 +1,54 @@ +package com.angkorteam.fintech.client.renums; + +public enum LoanTransactionTypeEnum { + + Invalid("0", "Invalid"), + Disbursement("1", "Disbursement"), + Repayment("2", "Repayment"), + Contra("3", "Contra"), + WaiveInterest("4", "Waive Interest"), + RepaymentAtDisbursement("5", "Repayment At Disbursement"), + WriteOff("6", "Write Off"), + MarkedForRescheduling("7", "Marked For Rescheduling"), + RecoveryRepayment("8", "Recovery Repayment"), + WaiveCharges("9", "Waive Charges"), + Accrual("10", "Accrual"), + InitiateTransfer("12", "Initiate Transfer"), + ApproveTransfer("13", "Approve Transfer"), + WithdrawTransfer("14", "Withdraw Transfer"), + RejectTransfer("15", "Reject Transfer"), + Refund("16", "Refund"), + ChargePayment("17", "Charge Payment"), + RefundForActiveLoan("18", "Refund For Active Loan"), + IncomePosting("19", "Income Posting"); + + public static final String ID = "loan_transaction_type_enum"; + + private final String literal; + + private final String description; + + private final Long enumType; + + LoanTransactionTypeEnum(String literal, String description) { + this(literal, description, 0l); + } + + LoanTransactionTypeEnum(String literal, String description, Long enumType) { + this.literal = literal; + this.description = description; + this.enumType = enumType; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + + public Long getEnumType() { + return enumType; + } +} diff --git a/src/main/java/com/angkorteam/fintech/dto/constant/LoanTypeEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/LoanTypeEnum.java similarity index 82% rename from src/main/java/com/angkorteam/fintech/dto/constant/LoanTypeEnum.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/renums/LoanTypeEnum.java index 49322c02..c07f5b65 100644 --- a/src/main/java/com/angkorteam/fintech/dto/constant/LoanTypeEnum.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/LoanTypeEnum.java @@ -1,8 +1,10 @@ -package com.angkorteam.fintech.dto.constant; +package com.angkorteam.fintech.client.renums; public enum LoanTypeEnum { - Individual("1", "Individual Loan", "Individual"), Group("2", "Group Loan", "Group"), JLG("3", "Joint Liability Group Loan", "JLG"); + Individual("1", "Individual Loan", "Individual"), + Group("2", "Group Loan", "Group"), + JLG("3", "Joint Liability Group Loan", "JLG"); public static final String ID = "loan_type_enum"; diff --git a/src/main/java/com/angkorteam/fintech/dto/constant/PortfolioAccountTypeEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/PortfolioAccountTypeEnum.java similarity index 81% rename from src/main/java/com/angkorteam/fintech/dto/constant/PortfolioAccountTypeEnum.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/renums/PortfolioAccountTypeEnum.java index ab52a575..7f732c63 100644 --- a/src/main/java/com/angkorteam/fintech/dto/constant/PortfolioAccountTypeEnum.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/PortfolioAccountTypeEnum.java @@ -1,8 +1,11 @@ -package com.angkorteam.fintech.dto.constant; +package com.angkorteam.fintech.client.renums; public enum PortfolioAccountTypeEnum { - Loan("1", "Loan"), Expense("2", "Expense"), Provisioning("3", "Provisioning"), Shares("4", "Shares"); + Loan("1", "Loan"), + Expense("2", "Expense"), + Provisioning("3", "Provisioning"), + Shares("4", "Shares"); public static final String ID = "portfolio_account_type_enum"; diff --git a/src/main/java/com/angkorteam/fintech/dto/constant/ProcessingResultEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/ProcessingResultEnum.java similarity index 79% rename from src/main/java/com/angkorteam/fintech/dto/constant/ProcessingResultEnum.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/renums/ProcessingResultEnum.java index 8476cddb..aa7e4972 100644 --- a/src/main/java/com/angkorteam/fintech/dto/constant/ProcessingResultEnum.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/ProcessingResultEnum.java @@ -1,8 +1,11 @@ -package com.angkorteam.fintech.dto.constant; +package com.angkorteam.fintech.client.renums; public enum ProcessingResultEnum { - Invalid("0", "Invalid"), Processed("1", "Processed"), AwaitingApproval("2", "Awaiting Approval"), Rejected("3", "Rejected"); + Invalid("0", "Invalid"), + Processed("1", "Processed"), + AwaitingApproval("2", "Awaiting Approval"), + Rejected("3", "Rejected"); public static final String ID = "processing_result_enum"; diff --git a/src/main/java/com/angkorteam/fintech/dto/constant/RepaymentPeriodFrequencyEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/RepaymentPeriodFrequencyEnum.java similarity index 86% rename from src/main/java/com/angkorteam/fintech/dto/constant/RepaymentPeriodFrequencyEnum.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/renums/RepaymentPeriodFrequencyEnum.java index 4599ce36..d122bd80 100644 --- a/src/main/java/com/angkorteam/fintech/dto/constant/RepaymentPeriodFrequencyEnum.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/RepaymentPeriodFrequencyEnum.java @@ -1,8 +1,10 @@ -package com.angkorteam.fintech.dto.constant; +package com.angkorteam.fintech.client.renums; public enum RepaymentPeriodFrequencyEnum { - Day("0", "Day"), Week("1", "Week"), Month("2", "Month"); + Day("0", "Day"), + Week("1", "Week"), + Month("2", "Month"); public static final String ID = "repayment_period_frequency_enum"; diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/renums/SavingsTransactionTypeEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/SavingsTransactionTypeEnum.java new file mode 100644 index 00000000..3ed94086 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/SavingsTransactionTypeEnum.java @@ -0,0 +1,52 @@ +package com.angkorteam.fintech.client.renums; + +public enum SavingsTransactionTypeEnum { + + Invalid("0", "Invalid"), + Deposit("1", "Deposit"), + Withdrawal("2", "Withdrawal", 1l), + InterestPosting("3", "Interest Posting"), + WithdrawalFee("4", "Withdrawal Fee", 1l), + AnnualFee("5", "Annual Fee", 1l), + WaiveCharge("6", "Waive Charge"), + PayCharge("7", "Pay Charge", 1l), + DividendPayout("8", "Dividend Payout"), + InitiateTransfer("12", "Initiate Transfer"), + ApproveTransfer("13", "Approve Transfer"), + WithdrawTransfer("14", "Withdraw Transfer"), + RejectTransfer("15", "Reject Transfer"), + WrittenOff("16", "Written Off"), + OverdraftInterest("17", "Overdraft Interest"), + WithHoldTax("19", "WithHold Tax"); + + public static final String ID = "savings_transaction_type_enum"; + + private final String literal; + + private final String description; + + private final Long enumType; + + SavingsTransactionTypeEnum(String literal, String description) { + this(literal, description, 0l); + } + + SavingsTransactionTypeEnum(String literal, String description, Long enumType) { + this.literal = literal; + this.description = description; + this.enumType = enumType; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + + public Long getEnumType() { + return enumType; + } + +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/renums/StatusEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/StatusEnum.java new file mode 100644 index 00000000..f6881410 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/StatusEnum.java @@ -0,0 +1,42 @@ +package com.angkorteam.fintech.client.renums; + +public enum StatusEnum { + + Invalid("0", "Invalid"), + Pending("100", "Pending"), + Approved("200", "Approved"), + Active("300", "Active"), + WithdrawnByClient("400", "Withdrawn by client"), + Rejected("500", "Rejected"), + Closed("600", "Closed"); + + public static final String ID = "status_enum"; + + private final String literal; + + private final String description; + + private final Long enumType; + + StatusEnum(String literal, String description) { + this(literal, description, 0l); + } + + StatusEnum(String literal, String description, Long enumType) { + this.literal = literal; + this.description = description; + this.enumType = enumType; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + + public Long getEnumType() { + return enumType; + } +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/renums/TellerStatus.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/TellerStatus.java new file mode 100644 index 00000000..43bc32b8 --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/TellerStatus.java @@ -0,0 +1,59 @@ +package com.angkorteam.fintech.client.renums; + +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; + +public enum TellerStatus { + + Invalid("0", "Invalid", 0L), + Pending("100", "Pending", 100L), + Active("300", "Active", 300L), + Closed("600", "Closed", 600L), + Inactive("400", "Inactive", 400L); + + public static final String ID = "teller_status"; + + private final String literal; + + private final String description; + + private final long enumType; + + TellerStatus(String literal, String description, long enumType) { + this.literal = literal; + this.description = description; + this.enumType = enumType; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + + public long getEnumType() { + return enumType; + } + + public Option toOption() { + return new Option(this.name(), this.description); + } + + public static TellerStatus parseLiteral(String literal) { + for (TellerStatus value : TellerStatus.values()) { + if (value.getLiteral().equals(literal)) { + return value; + } + } + return null; + } + + public static Option optionLiteral(String literal) { + TellerStatus value = parseLiteral(literal); + if (value == null) { + return null; + } + return value.toOption(); + } +} diff --git a/src/main/java/com/angkorteam/fintech/dto/constant/TermPeriodFrequencyEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/TermPeriodFrequencyEnum.java similarity index 84% rename from src/main/java/com/angkorteam/fintech/dto/constant/TermPeriodFrequencyEnum.java rename to bank-web/src/main/java/com/angkorteam/fintech/client/renums/TermPeriodFrequencyEnum.java index f37d483e..5dd65375 100644 --- a/src/main/java/com/angkorteam/fintech/dto/constant/TermPeriodFrequencyEnum.java +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/TermPeriodFrequencyEnum.java @@ -1,8 +1,11 @@ -package com.angkorteam.fintech.dto.constant; +package com.angkorteam.fintech.client.renums; public enum TermPeriodFrequencyEnum { - Day("0", "Day"), Week("1", "Week"), Month("2", "Month"), Year("3", "Year"); + Day("0", "Day"), + Week("1", "Week"), + Month("2", "Month"), + Year("3", "Year"); public static final String ID = "term_period_frequency_enum"; diff --git a/bank-web/src/main/java/com/angkorteam/fintech/client/renums/TransactionTypeEnum.java b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/TransactionTypeEnum.java new file mode 100644 index 00000000..b8a4e0cb --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/client/renums/TransactionTypeEnum.java @@ -0,0 +1,46 @@ +package com.angkorteam.fintech.client.renums; + +public enum TransactionTypeEnum { + + Disbursement("1", "Disbursement"), + Repayment("2", "Repayment"), + Contra("3", "Contra"), + WaiveInterest("4", "Waive Interest"), + RepaymentAtDisbursement("5", "Repayment At Disbursement"), + WriteOff("6", "Write Off"), + MarkedForRescheduling("7", "Marked For Rescheduling"), + RecoveryRepayment("8", "Recovery Repayment"), + WaiveCharges("9", "Waive Charges"), + ApplyCharges("10", "Apply Charges"), + ApplyInterest("11", "Apply Interest"); + + public static final String ID = "transaction_type_enum"; + + private final String literal; + + private final String description; + + private final Long enumType; + + TransactionTypeEnum(String literal, String description) { + this(literal, description, 0l); + } + + TransactionTypeEnum(String literal, String description, Long enumType) { + this.literal = literal; + this.description = description; + this.enumType = enumType; + } + + public String getLiteral() { + return literal; + } + + public String getDescription() { + return description; + } + + public Long getEnumType() { + return enumType; + } +} diff --git a/bank-web/src/main/java/com/angkorteam/fintech/data/MifosSingleChoiceProvider.java b/bank-web/src/main/java/com/angkorteam/fintech/data/MifosSingleChoiceProvider.java new file mode 100644 index 00000000..5bc16eeb --- /dev/null +++ b/bank-web/src/main/java/com/angkorteam/fintech/data/MifosSingleChoiceProvider.java @@ -0,0 +1,64 @@ +package com.angkorteam.fintech.data; + +import com.angkorteam.webui.frmk.common.WicketFactory; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.Option; +import com.angkorteam.webui.frmk.wicket.markup.html.form.select2.SingleChoiceProvider; +import org.springframework.context.ApplicationContext; +import org.springframework.dao.DataAccessException; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcOperations; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +import javax.sql.DataSource; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class MifosSingleChoiceProvider extends SingleChoiceProvider { + + public MifosSingleChoiceProvider(String table, String idField) { + super(table, idField); + } + + public MifosSingleChoiceProvider(String table, String idField, String queryField) { + super(table, idField, queryField); + } + + public MifosSingleChoiceProvider(String table, String idField, String queryField, String orderBy) { + super(table, idField, queryField, orderBy); + } + + public MifosSingleChoiceProvider(String table, String idField, String queryField, String orderBy, String labelField) { + super(table, idField, queryField, orderBy, labelField); + } + + @Override + protected Option queryOption(String query, Map params) { + ApplicationContext context = WicketFactory.getApplicationContext(); + DataSource dataSource = (DataSource) context.getBean("delegateDataSource"); + NamedParameterJdbcOperations named = new NamedParameterJdbcTemplate(dataSource); + Map record = null; + try { + record = named.queryForMap(query, params); + } catch (DataAccessException e) { + } + if (record == null) { + return null; + } else { + return new Option(String.valueOf(record.get("id")), (String) record.get("text")); + } + } + + @Override + protected List